SRv6新增SRH用于携带Segment List来控制报文转发,SRH格式如图1所示,字段说明参见表1。
IPv6报文头中的“Next Header”字段取值为43时,表示下层头为路由扩展头(Routing Extension Header),当路由扩展头中的“Routing Type”为4时表示该扩展头类型为SRH 。
| 字段名 | 长度 | 含义 |
|---|---|---|
Next Header |
8比特 |
标识SRH头后面的协议类型,可以是IPv4、IPv6、TCP、UDP等。 |
Hdr Ext Len |
8比特 |
SRH头的长度,不包括第一个8字节,以8字节为单位。 |
Routing Type |
8比特 |
表示该路由扩展头的类型,4表示SRH。 |
Segment Left |
8比特 |
表示SRH中没有访问的Segment个数。 |
Last Entry |
8比特 |
Segment List中最后一个Segment的索引,从0开始。 |
Flags |
8比特 |
SRH的一些特殊标记。 |
tag |
16比特 |
数据报文的组或类别标识。 |
Segment List[n] |
128比特 |
IPv6地址形式的Segment列表。 |
携带SRH的IPv6报文可以用如下形式描述(SA,SID1)(SID3,SID2,SID1,SL=2),其中:
(SA,SID1)中的SA表示报文源地址,SID1表示报文目的地址。
SRv6中报文每到达一个Segment节点后,进行SL字段减1,再取Segment List[SL]作为报文目的地,用新的目的地查路由转发报文,从而实现报文按照Segment List指示的路径进行转发。
SRH转发过程如图2所示。
入口节点封装SRH,SRH包括转发路径的SID列表,采用逆序方式存放,即先使用的SID存放在后面的位置。
IPv6报文中SRH段列表格式为(Segment ID [0], Segment ID [1], ..., Segment ID [n-1], Segment ID [n], SL=n),类似于SR-MPLS中的MPLS标签栈信息。
Segment ID [n]是SRv6路径上第一个需要被处理的Segment;Segment ID [n-1]是第二个;Segment ID [1]是倒数第二个;Segment ID [0]是倒数第一个。
SL表示SRH中剩余的Segment个数。
每个SRv6节点终结本节点的SID,即每经过一个SRv6节点,Segments Left(SL)字段减1,IPv6 DA信息变换一次。Segments Left和Segment ID字段共同决定IPv6 DA信息。