本章包含如下内容:
SRv6 SID采用IPv6地址形式,为128位。SRv6 SID=Locator+Function+Args,其中:
· Locator字段对应ipv6-prefix ipv6-address prefix-length参数,长度由prefix-length参数决定。Locator本身是一个IPv6网段,该网段下的所有IPv6地址都可以作为SRv6 SID被使用。
· Function字段也称为Opcode,Opcode可以分为静态Opcode和动态Opcode:
¡ 静态Opcode:通过opcode命令手工配置。静态Opcode对应的SRv6 SID称为静态SRv6 SID。静态Opcode的长度由static static-length参数决定。静态Opcode的长度决定该Locator下静态SRv6 SID的数量。
¡ 动态Opcode:通过IGP协议动态分配。动态Opcode对应的SRv6 SID称为动态SRv6 SID。IGP协议动态分配SRv6 SID时会在静态Opcode范围外申请,确保SRv6 SID不会冲突。
· Args字段包含报文的流和服务等信息,Args字段由args args-length参数决定。
其中动态Opcode长度dynamic-length=128-(prefix-length+static-length+args-length)。
静态SRv6 SID生成方式如下:静态SRv6 SID=ipv6-prefix+0+opcode+0。其中ipv6-prefix为locator命令中由ipv6-address和prefix-length指定的IPv6地址前缀,所占位数为prefix-length;0所占位数位为dynamic-length;opcode为配置的静态Opcode段,所占位数为static-length;0所占位数位为args-length。
动态SRv6 SID生成方式如下:动态SRv6 SID=ipv6-prefix+dynamic+0。其中ipv6-prefix为locator命令中由ipv6-address和prefix-length指定的IPv6地址前缀,所占位数为prefix-length;dynamic由IGP协议动态分配,所占位数位为dynamic-length;0所占位数位为static-length+args-length。
例如,配置locator test1 ipv6-prefix 100:200:DB8:ABCD:: 64 static 24 args 32时,表示:
· Locator为100:200:DB8:ABCD::,长度为64
· 静态Opcode占用24位
· Args占用32位
· 动态Opcode占用8位
由此可以计算出静态SRv6 SID范围和动态SRv6 SID范围:
· 静态SRv6 SID起始值=100:200:DB8:ABCD:0:1::
· 静态SRv6 SID结束值=100:200:DB8:ABCD:FF:FFFF::
· 动态SRv6 SID起始值=100:200:DB8:ABCD:100::
· 动态SRv6 SID结束值=100:200:DB8:ABCD:FFFF:FFFF::
不同Locator的名称不能相同。
不能为不同Locator配置相同的IPv6地址前缀和前缀长度,且不同Locator的IPv6地址前缀不能有重叠部分。
(1) 进入系统视图。
system-view
(2) 开启IPv6 SR功能,并进入SRv6视图。
segment-routing ipv6
(3) 配置Locator段,并进入SRv6 Locator视图。
locator locator-name [ ipv6-prefix ipv6-address prefix-length [ args args-length | static static-length ] * ]
(4) 配置Opcode段。
¡ 配置End SID。
opcode opcode end
¡ 配置End.X SID。
opcode opcode end-x interface interface-type interface-number nexthop nexthop-address
¡ 配置End.DT4 SID。
opcode opcode end-dt4 vpn-instance vpn-instance-name [ evpn ]
指定的VPN实例必须已经存在。不同VPN实例不能配置相同End.DT4 SID。
¡ 配置End.DT6 SID。
opcode opcode end-dt6 vpn-instance vpn-instance-name [ evpn ]
指定的VPN实例必须已经存在。不同VPN实例不能配置相同End.DT6 SID。
¡ 配置End.DX2 SID。
opcode opcode end-dx2 xconnect-group group-name connection connection-name
指定的交叉连接组和交叉连接必须已经存在。
¡ 配置End.DT2M SID。
opcode opcode end-dt2m vsi vsi-name
指定的VSI必须已经存在。不同VPN实例不能配置相同End.DT2M SID。
¡ 配置End.DT2U SID。
opcode opcode end-dt2u vsi vsi-name
指定的VSI必须已经存在。不同VPN实例不能配置相同End.DT2U SID。
¡ 配置End.OP SID。
opcode opcode end-op
通过引用Locator段,IGP协议可以通告Locator段内的SRv6 SID。
配置通过IS-IS通告SRv6 SID前,需要确保IS-IS开销值的类型为wide、compatible或wide-compatible。
(1) 进入系统视图。
system-view
(2) 进入IS-IS视图。
isis [ process-id ] [ vpn-instance vpn-instance-name ]
(3) 进入IS-IS IPv6地址族视图。
address-family ipv6 [ unicast ]
(4) 引用Locator段。
segment-routing ipv6 locator locator-name [ level-1 | level-2 ] [ auto-sid-disable ]
缺省情况下,未引用Locator段。
多次配置本功能,可以引用多个Locator段,从而通告多个SRv6 SID。
(1) 进入系统视图。
system-view
(2) 进入OSPFv3视图。
ospfv3 [ process-id | vpn-instance vpn-instance-name ] *
(3) 引用Locator段。
segment-routing ipv6 locator locator-name [ auto-sid-disable ]
缺省情况下,未引用Locator段。
多次配置本功能,可以引用多个Locator段,从而通告多个SRv6 SID。
通过引用Locator段,可以通过BGP IPv4/IPv6单播路由通告Locator段内的SRv6 SID。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 进入BGP IPv4单播地址族视图或BGP IPv6单播地址族视图。
¡ 进入BGP IPv4单播地址族视图。
address-family ipv4 [ unicast ]
¡ 进入BGP IPv6单播地址族视图。
address-family ipv6 [ unicast ]
(4) 引用Locator段。
segment-routing ipv6 locator locator-name
缺省情况下,未引用Locator段。