As you know, Segment Routing can be applied to the IPv6 data plane by using routing extension headers. SRH is a new type of IPv6 Routing Extension Header which includes one or more SRv6 SID inside. These SRv6 SIDs have locator and function fields and they used for traffic engineering, vpn services, service function chaining etc.
When you start to Segment Routing with IPv6 data plane there are 3 types of nodes which are, Source SR Node, Transit Node and SR Endpoint node. Also from the capability point of view we can say, there are 2 types of nodes; SR-Capable and Non-SR-Capable.
Source SR Node
A Source SR Node is any node that originates an IPv6 packet with a segment in the destination address of the IPv6 header. It may or may not contain SRH in the header. (There are some cases which you can use SRv6 address as the IPv6 destination address and deploy a service, most probably with a best effort path.) When need SRH is created as follow by the Source SR Node;
- Next Header field is set according to implementation.
- Routing Type field is set to 4 (as of today it is 4 but not certain yet)
- IPv6 destination address of the packet is set to first SRv6 SID in the SRH.
- Segment Left field is decreasedby 1.
- HMAC TLV may be set if used
(Let’s assume we have service created between A1 and A6. A1 is Soure Node, A6 is End Node. They need to understand SRH but A2 and A4 are transit nodes. They may or may not be SR capable.)
Transit Node
A transit node is where the destination address of that packet packet is not a local SID or local interface ip address. Transit node just need to be able to forward IPv6 packet. No SRH inspection or update will be done on this node. Transit nodes doesn’t need to be a SR-capable node. Only requirements is it should be able to do ipv6 routing.
Actually if you are using best effort paths, the only nodes need to understand SRH are source and destination nodes. Transit node may be any node who is able to route ipv6 packets. As an example, if you have a internet service provider who routes ipv6 addresses, you can create any kind of services between your sites over the internet. You just a CE devices who can understand SRv6. Transit node will be your service provider nodes and they will just route packets according to their routing table.
SR Endpoint Node
A SR segment endpoint node is any node receiving an IPv6 packet where the destination address of that packet is Local SID or local interface ip address. Without TLV usage, Segment Left should be 0 at the endpoint. And according to Next header field packet should be processed. As an example if the next header value is “4” it means the next header is IPv4 header which is used with End.DT4 function. (End.DT4 function is used for VPNv4 services over SRv6)
Here is an example for all nodes;
Here are configuration assumptions first;
- Node A6 is configured with locator 2981:40:A6:: /64 and locator information is distributed by the IGP
- Node A4 is configured with locator 2981:40:A4:: /64 and locator information is distributed by the IGP
- There is End function on Node A4.
- End.DT4 function for VPN Service is in the local sid table of Node A6.
- NodeA1 is configured to insert SRH for the traffic going towards to VRF-1 with traffic engineered path and this traffic engineered path is following the Node A4.
- In this example A1 is SR Source Node, responsible for creating and inserting SRH
- A2 is just a transit node. It is enough for A2 to have ipv6 routing table.
- A4 is an endpoint. It is not an service endpoint but endpoint for the SRH. ::1 is defined as an End function. (End function simply, decrements Segment Left by one, updates the destination address of ipv6 header with a next segment and forwards packets to the destination.)
- A6 is another endpoint which is service and SRv6 endpoint. It has the function definition for services. (End.DT4 function simply, decapsulates the IPv6 header, does table lookup for the related VRF and forwards packets according to VRF routing table)