广域网技术——SRv6 SID讲解
SRv6中,直接ping End SID是ping不同的,由于报文中的Flag中O没有置位,End SID收到后是不会响应的,此时就需要End.OP SID,直接ping End.OP SID是可以ping通的。End.DT6 SID可以通过静态配置生成,也可以通过BGP在Locator的动态SID范围内自动分配,并通过IGP协议扩散到其他网元,全局可见,本地有效。解封装报文,并查找IPv6 VP
目录
第三部分是是紧接着Segment序列之后的可选TLV(Type-Length-Value):
SRV6基本概念
基于IPv6转发平面的段路由(SR+IPv6)
采用现有的IPV6转发技术,通过灵活的IPv6扩展头,实现网络可编程(实现网络控路)
SRv6报文封装格式
IPv6的目的地址可变
在IPv6报文中引入了SRv6扩展头(SRH,其Routing Type=4)
其中SRH最主要的就是Segment List(也就是SID)
其中Segment List又分为三大部分(最主要的就是Locator和Function)
Net Header
4 ——IPv4封装
41——IPv6封装
43——IPv6-Route(IPv6路由扩展头)
58——ICMPv6
59——Next Header为空
Segment List
Segment List就是SR6的SID(128bit),类似于SR-MPLS的标签
不过Segment List是以IPv6地址形式出现的
Segment List[0]是路径的倒数第一个Segment List
Segment List[1]是路径的倒数第二个Segment List
Segment List[n-1]是路径的第二个Segment List
Segment List[n]是路径的第一个Segment List
Segment List包含内容
Segment List就是SR6的Segment(128bit)
Locator(位置标识)
网络中分配给一个网络节点的标识,可以用于路由和转发数据包
Locator是全网唯一的(同一Anycast组内的Locator可以一致)
Function(功能)
设备分配给本地转发指令的一个ID值,不同的转发行为由不同的功能ID来表达
该值可用于表达设备收到SRv6报文时所需执行的转发动作,相当于计算机指令的操作码
Function决定了是将数据转发给节点、链路、解封装查找路由表转发,还是解封装送入实例等
例如:2001::1表示进入链路1转发,2001::2表示将报文解封装并送到某个实例转发
::1、::2就为Funcation,2001::/64就是Locator
Args(可选)
转发指令在执行的时候所需要的参数
这些参数可能包含流,服务或任何其他相关的可变信息。
路由器收到SID,先判断Locator,如果发现Locator是本机发布的,那就去处理Function指令(可以将Locator理解为前缀,在转发时使用;Funcation只有到达目的节点(到达响应Locator前缀对应的节点)之后才会查看)
注意事项
严格意义上来说Segment List并不是IPv6地址,只是以IPv6地址的形式存在
只有将Segment List拷贝到IPv6报文的Destination Address字段中的才是IPv6地址
一台设备只有一个Locator,并且全网唯一
一台设备可以有多个Function,并且只需要保证本地唯一就可以
当配置ipv6-prefix 2001:D8:ABCD:: 64 static 32时
静态SID的取值为2001:D8:ABCD::1~2001:D8:ABCD::FFFF:FFFF
SID生成方式
静态配置:手工配置Locator(Locator会通过IGP通告),Function由IGP/BGP动态分配
动态配置:手工配置Locator(Locator会通过IGP通告),手工配置Function
Segment List的类型
SRv6的SID的类型有多种(SR-MPLS的SID类型为Prefix SID,Node SID,Adj SID)
End SID(Endpoind SID)
用于标识网络中的某个节点,类似于SR-MPLS中的Node SID
对应的转发动作
如果收到的IPv6报文的目的地址是我这个设备的End SID的话,我就会处理SRH头部的信息,将Segment Left值减1,然后找到此Segment Left对应的SID将其作为目的地址继续转发
如何生成
End SID通过手工静态配置,也可以由IGP自动生成;并通过IGP协议扩散到其他网元,全局可见,本地有效
End.X SID
用于标识网络中的某条链路,类似SR-MPLS中的Adj SID
对应的转发动作
将Segment List减一,并将对应的SID作为IPv6的目的地址
然后将此报文从End.X绑定的接口转发出去
如何生成
End SID通过手工静态配置,也可以由IGP自动生成;并通过IGP协议扩散到其他网元,全局可见,本地有效
End.DT4 SID
End.DT4用于标识网络中的某个IPv4 VPN实例
对应的动作
动作是解封装报文,并查找IPv4 VPN实例路由表将报文进行转发(也可以解封转报文后直接查找IPv4路由表,不进入实例),去往实例还是非实例通过配置实现
应用场景
在L3VPNv4场景中使用,等价于IPv4VPN的标签(也就是私网标签,会优于Vpnv4分配的私网路由)
如何生成
End.DT6 SID可以通过静态配置生成,也可以通过BGP在Locator的动态SID范围内自动分配,并通过IGP协议扩散到其他网元,全局可见,本地有效
End.DT6 SID
End.DT6用于标识网络中的某个IPv6 VPN实例
对应的动作
解封装报文,并查找IPv6 VPN实例路由表转发(也可以解封转报文后直接查找IPv6路由表,不进入实例),去往实例还是非实例通过配置实现
应用场景
在L3VPNv6场景中使用,等价于IPv6VPN的标签(也就是私网标签)
如何生成
End.DT4 SID可以通过静态配置生成,也可以通过BGP在Locator的动态SID范围内自动分配,并通过IGP协议扩散到其他网元,全局可见,本地有效
End.DT4/6一般为Segment List[0]
End.DX4 SID
End.DX4用于标识网络中的某个IPv4 CE
对应的转发动作是解封装报文,并将解封装后的IPv4报文在该SID绑定的三层接口上转发
什么场景可以使用得到DX4 SID
假如有多个接口绑定相同的IPv4实例,可以通过End.DX4来决定走那个接口,将其送到VRF对应的接口
如何生成
End.DX4 SID可以通过静态配置生成,也可以通过BGP在Locator的动态SID范围内自动分配;并通过IGP协议扩散到其他网元,全局可见,本地有效
End.DX6 SID
End.DX6用于标识网络中的某个IPv6 CE
对应的转发动作是解封装报文,并将解封装后的IPv6报文在该SID绑定的三层接口上转发
什么场景可以使用得到DX6 SID
假如有多个接口绑定相同的IPv6实例,可以通过End.DX6来决定走那个接口,将其送到VRF对应的接口
如何生成
End.DX6 SID可以通过静态配置生成,也可以通过BGP在Locator的动态SID范围内自动分配;并通过IGP协议扩散到其他网元,全局可见,本地有效
End.OP SID
是一个OAM类型的SID,主要用于测试(Ping、Tracert场景)
为什么要定义End.OP SID
SRv6中,直接ping End SID是ping不同的,由于报文中的Flag中O没有置位,End SID收到后是不会响应的,此时就需要End.OP SID,直接ping End.OP SID是可以ping通的
如何生成
End.OP SID一般手动配置,并且此类SID是不会通告出去的
SRV6的三层编程空间
SRv6具有比SR-MPLS更强大的网络编程能力。可以更好地满足不同的网络路径需求。
SRv6的网络可编程性体现在SRH扩展头中。
SRH中有三层编程空间:
第一部分是Segment序列(SID)
第二部分是对SRv6 SID的128比特的运用:
第三部分是是紧接着Segment序列之后的可选TLV(Type-Length-Value):
SRV6的转发流程
SRH中的Segment List在转发时是不会弹出的(在倒数第二跳可以弹出)
如果倒数第二跳也不弹出的话,目的节点收到后可以溯源(知道经过了哪些节点)
由于Segment Lsit在转发后不会弹出,当有多个Segment List时,我们如何知道到达了那个Segment List
通过Segments Left字段来实现(类似指针,每经过一个Segment List,就会将Segments Left减一);Segment Left的初始值由Segment List的个数来(如果有3个Segment List,分别为List[0]、[1]、[2],此时Left的初始值为2)
大致的转发流程(详细的转发流程后续讲解)
- 数据包进入到节点1(源节点),节点1给数据包增加SRH,并会指定整条路径中SR节点的相关操作,外层再封装标准的IPv6报头。
- 数据包转发到节点2,由于节点2只支持常规的IPv6而不支持SRv6,节点2收到SRv6数据包时,按照IPv6 RFC的规定,当数据包目的地址不是节点自身网段地址时,此节点不处理扩展报头,直接根据IPv6报头中的目的地址进行转发;
- 节点3收到数据包时,节点3根据外层IPv6地址2001::3查找本地Local SID表,命中本地的Local SID表,执行相关指令。将SL减1操作,指针指向Segment List[1](此为活动Segment),并将Segment List[1]的地址拷贝到外层IPv6报头中的目的地址,然后根据IPv6目的地址进行转发;
- 节点4的处理过程和节点3一致
- 节点5收到数据报文时,识别到目的地址是本节点,同时Segment List为0。此时,节点5会剥离SRH和IPv6报头,读取真正的Payload,并根据SID里的相关指令完成转发。
SRV6的优点
1.简化网络协议
借助SRv6和EVPN,可以使IP承载网的协议简化、归一
SRv6基于IPv6转发,不使用MPLS技术,完全兼容现有的IPv6技术
中间节点可以不支持SRv6,按照正常路由转发含有SRH的IPv6报文
2.促进云网融合
SRv6具备Natice IPV6属性,SRv6报文和普通IPv6报文具有相同的报文头,使得SRv6紧紧依赖IPv6可达性即可实现网络节点的互通,打破运营商网络和数据中心之间的界限
3.兼容存量网络
SRv6与存量IPv6网络兼容
业务开通只需在头尾节点进行部署,缩短部署时间,提升部署效率
头部节点需要支持SRv6,中间节点只需要支持IPv6
4.提升跨域体验
5.提供高保护效率的FRR保护能力
在SRv6技术的基础上结合RLFA FRR实现高效的TI-LFA FRR算法(同SR-MPLS)
SR技术的补充
配置SRv6/SR技术时 底层IGP推荐使用IS-IS,因为ISIS 支持TE Policy扩展
SRv6部署不需要对传统网络全网进行改造
SR-TE部署不需要对传统IP网络全网进行改造
配置SR控制器算路时:
配置SRv6技术时:
边界和端点支持SRv6,然后中间节点支持IPv6就可以
更多推荐
所有评论(0)