locator | Function | Args |
Version | Traffic Class | Flow Label | |
Payload Length | Next Header=43 | Hop Limit | |
Source Address | |||
Destination Address | |||
Next Header | Hdr Ext Len | Routing Type=4 | Segments Left=2 |
Last Entry | Flags | Tag | |
Segment List[0](128bits IPv6 address) | |||
Segment List[1](128bits IPv6 address) | |||
Segment List[2](128bits IPv7 address) | |||
Optional TLV objects(variable) | |||
IPv6 payload |
字段名 | 长度 | 含义 |
Next Header | 8bit | 标识紧跟在SRH之后的报文头的类型 |
Hdr Ext Len | 8bit | SRH头的长度。主要是指从Segment List[0]到Segment List[n]所占用的长度。 |
Routing Type | 8bit | 标识路由头部类型,SRH Type是4. |
Segments Left | 8bit | 到达目的节点前仍然应当访问的中间节点数。 |
Last Entry | 8bit | 在段列表中包含段列表的最后一个元素的索引。 |
Flags | 8bit | 数据包的一些标识。 |
Tag | 8bit | 标识同组数据包。 |
Segments List[n] | 128*nbit | 段列表,段列表从路径的最后一段开始编码。Segment List是IPv6地址形式。 |
Optional TLV | variable | 可变长TLV部分。 |
SRv6的三层编程空间
第一部分是Segment序列。如前所述,它可以将多个Segment组合起来,形成SRv6路径。这跟MPLS标签栈比较类似。
第二部分是对SRv6 SID的128比特的运用。众所周知,MPLS标签封装主要是分成四个段,每个段都是固定长度(包括20比特的标签,8比特的TTL,3比特的Traffic Class和1比特的栈底标志)。而SRv6的每个Segment是128比特长,可以灵活分为多段,每段的长度也可以变化,由此具备灵活编程能力。
第三部分是是紧接着Segment序列之后的可选TLV(Type-Length-Value)。报文在网络中传送时,需要在转发面封装一些非规则的信息,它们可以通过SRH中TLV的灵活组合来完成。
SRv6通过三层编程空间,具备了更强大的网络编程能力,可以更好地满足不同的网络路径需求。
SRv6转发流程
上图展示了SRv6转发的一个范例。在这个范例中,结点R1要指定路径(需要通过R2-R3、R4-R5的链路转发)转发到R6,其中R1、R2、R4、R6为有SRv6能力的的设备,R3、R5为不支持SRv6的设备。
步骤一:Ingress结点处理:R1将SRv6路径信息封装在SRH扩展头,指定R2和R4的END.X SID,同时初始化SL = 2,并将SL指示的SID A2::11拷贝到外层IPv6头目的地址。R1根据外层IPv6目的地址查路由表转发到R2。
步骤二:End Point结点处理:R2收到报文以后,根据外层IPv6地址A2::11查找本地Local SID表,命中END.X SID,执行END.X SID的指令动作:SL—,并将SL指示的SID拷贝到外层IPv6头目的地址,同时根据END.X关联的下一跳转发。
步骤三:Transit结点处理:R3根据A4::13查IPv6路由表进行转发,不处理SRH扩展头。具备普通的IPv6转发能力即可。
步骤四:End Point结点处理:R4收到报文以后,根据外层IPv6地址A4::13查找本地Local SID表,命中END.X SID,执行END.X SID的指令动作:SL—,并将SL指示的SID拷贝到外层IPv6头目的地址,由于SL = 0, 弹出SRH扩展头,同时根据END.X关联的下一跳转发。
步骤5:弹出SRH扩展头以后,报文就变成普通的IPv6头,由于A6::1是1个正常的IPv6地址,遵循普通的IPv6转发到R6。
从上面的转发可以看出,对于支持SRv6转发的节点,可以通过SID指示经过特定的链路转发,对于不支持SRv6的节点,可以通过普通的IPv6路由转发穿越。这个特性使得SRv6可以很好地在IPv6网络中实现增量部署。
SRv6的标准化工作主要集中在IETF SPRING(Source Packet Routing in Networking)工作组,其报文封装格式SRH(Segment Routing Header)等标准化工作在6MAN(IPv6 Maintenance)工作组,其相关的控制协议扩展的标准化,包括IGP、BGP、PCEP、VPN等,分别在LSR、IDR、PCE、BESS等工作组进行。
截止目前,SRv6的标准化基本上分为两大部分:
第一部分是SRv6基础特性,包括SRv6网络编程框架、报文封装格式SRH以及IGP、BGP/VPN、BGP-LS、PCEP等基础协议扩展支持SRv6,主要提供VPN、TE、FRR等应用。所有SRv6基本特性文稿均由华为和思科共同引领,并有Bell Canada、SoftBank、Orange等运营商参与。目前所有文稿(除OSPFv3)均被接收为工作组文稿,标准的成熟度进入了一个新的阶段,特别是最关键的SRH封装草案已经经过IETF IESG批准,很快就会成为RFC。
IP技术发展代际
SRv6技术的出现,实际承担了解决这些关键问题的使命:
第一个是SRv6兼容IPv6路由转发,基于IP可达性实现不同网络域间的连接更加容易,无需像MPLS那样必须引入额外信令,并且还需要全网升级。
第二个是基于SRH能够支持更多种类的封装,可以很好地满足新业务的多样化需求。
第三个是SRv6对于IPv6的亲和性使得它能够将IP承载网络与支持IPv6的应用无缝融合在一起,通过网络感知应用,给运营商带来更多可能的增值。
IPv6发展的二十年的里程证明,仅仅依靠地址空间的需求不足以支撑其规模部署,SRv6技术快速发展的实践说明通过新的业务应用可以更好地促进IPv6发展应用。随着5G、物联网、云等业务的发展,更多网络设备的接入对于地址扩展的需求也在增加,SRv6和这方面的需求结合在一起,将会推动网络进入一个新的All IP时代,基于All IPv6实现智简网络。
转载,原文地址:https://blog.csdn.net/turbock/article/details/103313057,作者李振斌