学习了SRv6----报文转发流程后,下一步学习SRv6的控制平面及SID是如何在SRv6网内传递学习的。
首先回顾一下回顾一下链路状态路由协议,基于Dijkstra SPF(Shortest Path First,最短路径优先)算法计算到达指定地址的最短路径。链路状态路由协议的工作原理是相邻节点通过发送Hello报文建立邻居关系,并在全网扩散本地链路状态信息,生成全网一致的LSDB(Link State Database,链路状态数据库),每个节点基于LSDB运行SPF算法计算出路由。
再回顾一下SID格式:
Locator是网络拓扑中一个网络节点的标识,用于路由和转发报文到该节点。
Function用来表达该指令要执行的转发动作,相当于计算机指令的Opcode。
Arguments(Args)字段是一个可选字段。它是指令在执行时对应的参数,这些参数可能包含流、服务或任何其他相关的信息。
以IS-IS协议为例,需要发布两类SRv6信息:Locator信息与SID信息。Locator信息用于帮助网络中的其他节点定位到发布SID的节点;SID信息用于完整描述SID的功能,如Function。
IS-IS协议通过两个TLV来发布Locator的路由信息:SRv6 Locator TLV和IPv6 Prefix Reachability TLV,这两个TLV具有不同的作用。
SRv6 Locator TLV 包含Locator的前缀和掩码,通过该TLV,网络中其他SRv6节点能学习到Locator的路由;SRv6 Locator TLV除了携带用于指导路由的信息外,IS-IS协议发布的SID如果不关联IS-IS邻居,则都在SRv6 End SID Sub-TLV中发布。
网络节点收到SRv6 Locator TLV后,生成对应的Locator路由。这个Locator下分配的所有SID通过最长掩码匹配原则就能匹配到该Locator路由。
IPv6 Prefix Reachability TLV与SRv6 Locator TLV拥有相同的前缀和掩码。普通IPv6节点(不支持SRv6的节点)也能处理该TLV。进而支持与SRv6节点共同组网。
如果Locator里Algorithm取值为0,则Locator必须通过IPv6 Prefix Reachability TLV 236/237发布,以便不支持SRv6的设备能够下发转发表项,指导转发Algorithm取值为0的SRv6流量。如果设备同时收到IPv6 Prefix Reachability TLV和SRv6 Locator TLV,则优先安装IPv6 Prefix ReachabilityTLV。
如图,IS-IS协议通过两个TLV来发布Locator的路由信息,Locator具有唯一性,除Anycast 等场景。
IS-IS协议的另一个功能就是将SRv6 SID信息和SID对应的SRv6 Endpoint节点行为信息通过IS-IS协议的各类SID Sub-TLV扩散出去,用于路径/业务编程单元对网络进行编程。
命名规则和常见指令可以查看SRv6----指令集
IS-IS协议针对SRv6的TLV扩展表