An IPv6 packet consists of an IPv6 header, 0 to N (N ≥ 1) extension headers, and payload. To implement Segment Routing based on the IPv6 forwarding plane, a new type of IPv6 routing header (RH), known as SRH, is added to IPv6 packets. The SRH specifies an IPv6 explicit path and stores IPv6 segment lists that are similar to SR-MPLS segment lists.
Field |
Length |
Description |
---|---|---|
Next Header |
8 bits |
Type of the header immediately following the SRH. The common types are as follows:
|
Hdr Ext Len |
8 bits |
Length of the SRH, excluding the first 8 bytes (fixed length). |
Routing Type |
8 bits |
Routing header type. SRHs have a routing type value of 4. |
Segments Left |
8 bits |
Number of explicitly listed transit nodes to be visited before traffic reaches the destination. |
Last Entry |
8 bits |
Index of the last element in a segment list. |
Flags |
8 bits |
Packet flags. |
Tag |
16 bits |
Tag indicating a packet as part of a class or group of packets. |
Segment List [0] to Segment List [n] |
128 bits |
Segment list that is encoded from the last segment of a path and expressed using the IPv6 address format.
|
Optional TLV Objects |
Variable |
Optional TLVs, such as Padding TLVs and Hash-based Message Authentication Code (HMAC) TLVs. |
According to the preceding description, segment lists in an SRv6 SRH are processed from the bottom up, which is different from SR-MPLS processing.
Another difference between SRv6 and SR-MPLS is that segments in SRv6 SRHs are not popped after being processed by nodes. This is mainly caused by three reasons. First, because the earliest IPv6 RH design was not closely related to MPLS, the segment pop option did not exist at the time. Second, in contrast to MPLS labels that are independently placed on the top of packets and therefore can be directly popped, SRv6 segments are placed in the SRH and associated with information (such as security encryption and verification information) in other extension headers. Third, because the pop operation is not performed, the SRv6 header retains path information, which can be used for path backtracking. In addition, some innovative factors regarding SRv6 segments have been taken into account to reuse the segments for new function extensions.