最近测试了 SRv6,顺便记录下, SRv6 具体是什么?对比我们平常的 MPLS VPN 的网络,数据转发采用的 MPLS 标签, 那 MPLS 标签常见的可以是 LDP 或者 SR 分配的; SRv6 使用的 IPv6 的报头进行转发,在 IPv6 Header 中新增 SRH(Segment Routing Header)用来记录 128bit IPv6 地址格式的 SRv6 SID(segment ID)如下图所示:
上面所说的为 Base format 的 SRv6 报文, 还有一种 Micro-segment 格式的报文。两种封装的区别如下。
Micro-segment 采用的是 32bit + 16bit 的形式,所以它的 locator 是/48 位。
Base- format 的 locator 是/64 位
SRv6 Segment #
Locator #
128Bit 的 IPv6 SID 由两部分组成, 其中前 64bit/48bit 为 Locator。
Base- forma 的 tLocator 的前 40Bit 必须在 SRv6 domain 中一致;余下的 24bit 为 node-id, 用于表示 node,不能为 0 且 SRv6 域内 node-id 不能一致。
##### Base- format
segment-routing
srv6
locators
locator r7
prefix 2002:0:0:7::/64 <<<<<
##### uSID
locators
locator MAIN
micro-segment behavior unode psp-usd. <<<<<
prefix fcbb:bb00:1::/48
在 NCS55 平台中有两种 profile, 用来切换这两种封装, 每次更换封装都需要重启板卡。
hw-module profile segment-routing srv6 mode base
hw-module profile segment-routing srv6 mode micro-segment format f3216
在 771 版本引入了双模式“hw-module profile segment-routing srv6 mode base-and-micro-segment-f3216 ”
7.10.1 默认设备为双模式, 不需要添加配置。
使用 diagshell 命令可以 get 到芯片目前设置的是什么模式,
`show controllers fia diagshell 0 “config show” location 0/0/CPU0 | i srv6”`
custom_feature_srv6_enable. "3" means base mode
'5' means dual mode
ps: usid忘记是什么了, 想起来再更改。
ASR9K 只需要更改配置即可在这两个模式间切换, 不需要额外的 hw-module profile 命令
Function(uSid) #
简单记录下 Function 的一些类别:
RP/0/RP0/CPU0:r1#show segment-routing srv6 sid
Wed Apr 21 04:36:25.814 UTC
*** Locator: 'MAIN' ***
SID Behavior Context Owner State RW
-------------------------- ---------------- ------------------------------ ------------------ ----- --
fcbb:bb00:1:: uN (PSP/USD) 'default':1 sidmgr InUse Y
fcbb:bb00:1:e000:: uA (PSP/USD) [Gi0/0/0/0, Link-Local]:0 isis-1 InUse Y
fcbb:bb00:1:e001:: uA (PSP/USD) [Gi0/0/0/1, Link-Local]:0 isis-1 InUse Y
fcbb:bb00:1:e002:: uDT4 '1' bgp-1 InUse Y
fcbb:bb00:1:e003:: uDT6 '1' bgp-1 InUse Y
RP/0/RP0/CPU0:r1#show segment-routing srv6 locator MAIN detail
Wed Nov 1 11:19:33.069 UTC
Name ID Algo Prefix Status Flags
-------------------- ------- ---- ------------------------ ------- --------
MAIN 1 0 fcbb:bb00:1::/48 Up U
(U): Micro-segment (behavior: uN (PSP/USD)). <<<<<<
Interface:
Name: srv6-MAIN
IFH : 0x00000014
IPv6 address: fcbb:bb00:1::/48
Number of SIDs: 3
Created: Nov 1 11:05:24.107 (00:14:09 ago)
Topo #
Configuration #
Locator #
//R1
RP/0/RP0/CPU0:r1#show run segment-routing
Wed Apr 21 04:51:26.026 UTC
segment-routing
srv6
encapsulation
source-address 2001::1
!
locators
locator MAIN
micro-segment behavior unode psp-usd
prefix fcbb:bb00:1::/48
!
!
!
!
ISIS #
控制层面 ISIS 的意义在于将 Locator 通告出去。
RP/0/RP0/CPU0:r1#show run router isis
Wed Apr 21 04:52:23.675 UTC
router isis 1
is-type level-2-only
net 49.0000.0000.0001.00
address-family ipv6 unicast
metric-style wide
segment-routing srv6 <<<<
locator MAIN <<<<
!
!
!
interface Loopback0
address-family ipv6 unicast
!
!
interface GigabitEthernet0/0/0/0
point-to-point
address-family ipv6 unicast
!
!
interface GigabitEthernet0/0/0/1
point-to-point
address-family ipv6 unicast
!
!
!
RP/0/RP0/CPU0:r1#show route ipv6 isis
Wed Apr 21 04:47:31.557 UTC
i L2 2001::2/128
[115/20] via fe80::250:56ff:feaa:71fd, 6d11h, GigabitEthernet0/0/0/0
i L2 2001::3/128
[115/30] via fe80::250:56ff:feaa:71fd, 6d11h, GigabitEthernet0/0/0/0
i L2 2001::4/128
[115/30] via fe80::250:56ff:feaa:6632, 6d11h, GigabitEthernet0/0/0/1
i L2 2001::5/128
[115/20] via fe80::250:56ff:feaa:6632, 6d11h, GigabitEthernet0/0/0/1
i L2 2001:0:0:23::/64
[115/20] via fe80::250:56ff:feaa:71fd, 6d11h, GigabitEthernet0/0/0/0
i L2 2001:0:0:34::/64
[115/30] via fe80::250:56ff:feaa:6632, 6d11h, GigabitEthernet0/0/0/1
[115/30] via fe80::250:56ff:feaa:71fd, 6d11h, GigabitEthernet0/0/0/0
i L2 2001:0:0:45::/64
[115/20] via fe80::250:56ff:feaa:6632, 6d11h, GigabitEthernet0/0/0/1
i L2 fcbb:bb00:2::/48
[115/11] via fe80::250:56ff:feaa:71fd, 6d11h, GigabitEthernet0/0/0/0
i L2 fcbb:bb00:3::/48
[115/21] via fe80::250:56ff:feaa:71fd, 6d11h, GigabitEthernet0/0/0/0
i L2 fcbb:bb00:4::/48
[115/21] via fe80::250:56ff:feaa:6632, 6d11h, GigabitEthernet0/0/0/1
i L2 fcbb:bb00:5::/48
[115/11] via fe80::250:56ff:feaa:6632, 6d11h, GigabitEthernet0/0/0/1
BGP #
RP/0/RP0/CPU0:r1#show run router bgp
Wed Apr 21 04:54:58.113 UTC
router bgp 1
bgp router-id 1.1.1.1
address-family vpnv4 unicast
!
address-family vpnv6 unicast
!
neighbor 2001::3
remote-as 1
update-source Loopback0
address-family vpnv4 unicast
!
address-family vpnv6 unicast
!
!
vrf 1
rd 1:1
address-family ipv4 unicast <<<< SRv6 IPv4 L3VPN service , support from XR 6.6.x
segment-routing srv6
locator MAIN
alloc mode per-vrf
!
redistribute connected
!
address-family ipv6 unicast <<<<< SRv6 IPv6 L3VPN service , support from XR 7.3.1
segment-routing srv6
locator MAIN
alloc mode per-vrf
!
redistribute connected
!
neighbor 10.1.6.6
remote-as 6
address-family ipv4 unicast
route-policy PASS in
route-policy PASS out
!
!
!
!
RP/0/RP0/CPU0:r1#show cef vrf 1 7.7.7.7/32 detail
Wed Apr 21 05:18:48.299 UTC
7.7.7.7/32, version 24, SRv6 Headend, internal 0x5000001 0x30 (ptr 0xd3ab658) [1], 0x0 (0xe607840), 0x0 (0xf636408)
Updated Apr 14 17:20:16.295
Prefix Len 32, traffic index 0, precedence n/a, priority 3
gateway array (0xf7740a8) reference count 2, flags 0x10, source rib (7), 0 backups
[3 type 3 flags 0x8441 (0xe522968) ext 0x0 (0x0)]
LW-LDI[type=3, refc=1, ptr=0xe607840, sh-ldi=0xe522968]
gateway array update type-time 1 Apr 14 17:20:16.295
LDI Update time Apr 14 17:20:16.367
LW-LDI-TS Apr 14 17:20:16.367
Level 1 - Load distribution: 0
[0] via fcbb:bb00:3::/128, recursive
via fcbb:bb00:3::/128, 5 dependencies, recursive [flags 0x6000]
path-idx 0 NHID 0x0 [0xe20b890 0x0]
next hop VRF - 'default', table - 0xe0800000
next hop fcbb:bb00:3::/128 via fcbb:bb00:3::/48
SRv6 H.Encaps.Red SID-list {fcbb:bb00:3:e002::}
Load distribution: 0 (refcount 3)
Hash OK Interface Address
0 Y GigabitEthernet0/0/0/0 remote
RP/0/RP0/CPU0:r1#
RP/0/RP0/CPU0:r3#show segment-routing srv6 sid <<<< R3 sid allocate
Wed Apr 21 05:25:05.037 UTC
*** Locator: 'MAIN' ***
SID Behavior Context Owner State RW
-------------------------- ---------------- ------------------------------ ------------------ ----- --
fcbb:bb00:3:: uN (PSP/USD) 'default':3 sidmgr InUse Y
fcbb:bb00:3:e000:: uA (PSP/USD) [Gi0/0/0/0, Link-Local]:0 isis-1 InUse Y
fcbb:bb00:3:e001:: uA (PSP/USD) [Gi0/0/0/1, Link-Local]:0 isis-1 InUse Y
fcbb:bb00:3:e002:: uDT4 '1' bgp-1 InUse Y
fcbb:bb00:3:e003:: uDT6 '1' bgp-1 InUse Y
RP/0/RP0/CPU0:r3#
RP/0/RP0/CPU0:r1#show bgp vrf 1 ipv4 unicast 7.7.7.7/32 detail
Wed Apr 21 05:25:46.271 UTC
BGP routing table entry for 7.7.7.7/32, Route Distinguisher: 1:1
Versions:
Process bRIB/RIB SendTblVer
Speaker 27 27
Flags: 0x00041001+0x00000000;
Last Modified: Apr 14 17:20:16.575 for 6d12h
Paths: (1 available, best #1)
Advertised to CE peers (in unique update groups):
10.1.6.6
Path #1: Received by speaker 0
Flags: 0x2000000085060005, import: 0x9f
Advertised to CE peers (in unique update groups):
10.1.6.6
7
2001::3 (metric 30) from 2001::3 (3.3.3.3), if-handle 0x00000000
Received Label 0xe00200
Origin incomplete, metric 0, localpref 100, valid, internal, best, group-best, import-candidate, imported
Received Path ID 0, Local Path ID 1, version 27
Extended community: RT:1:1
PSID-Type:L3, SubTLV Count:1, R:0x00,
SubTLV:
T:1(Sid information), Sid:fcbb:bb00:3::, F:0x00, R2:0x00, Behavior:63, R3:0x00, SS-TLV Count:1
SubSubTLV:
T:1(Sid structure):
Length [Loc-blk,Loc-node,Func,Arg]:[32,16,16,0], Tpose-len:16, Tpose-offset:48
Source AFI: VPNv4 Unicast, Source VRF: 1, Source Route Distinguisher: 1:1
RP/0/RP0/CPU0:r1#
RP/0/RP0/CPU0:r1#show bgp vrf 1 ipv6 unicast 3333::1/128 detail
Wed Apr 21 05:26:33.662 UTC
BGP routing table entry for 3333::1/128, Route Distinguisher: 1:1
Versions:
Process bRIB/RIB SendTblVer
Speaker 8 8
Flags: 0x00041001+0x00000000;
Last Modified: Apr 14 17:24:01.575 for 6d12h
Paths: (1 available, best #1)
Not advertised to any peer
Path #1: Received by speaker 0
Flags: 0x2000000085060005, import: 0x9f
Not advertised to any peer
Local
2001::3 (metric 30) from 2001::3 (3.3.3.3), if-handle 0x00000000
Received Label 0xe00300
Origin incomplete, metric 0, localpref 100, valid, internal, best, group-best, import-candidate, imported
Received Path ID 0, Local Path ID 1, version 8
Extended community: RT:1:1
PSID-Type:L3, SubTLV Count:1, R:0x00,
SubTLV:
T:1(Sid information), Sid:fcbb:bb00:3::, F:0x00, R2:0x00, Behavior:62, R3:0x00, SS-TLV Count:1
SubSubTLV:
T:1(Sid structure):
Length [Loc-blk,Loc-node,Func,Arg]:[32,16,16,0], Tpose-len:16, Tpose-offset:48
Source AFI: VPNv6 Unicast, Source VRF: 1, Source Route Distinguisher: 1:1
RP/0/RP0/CPU0:r1#
RP/0/RP0/CPU0:r1#show cef vrf 1 ipv6 3333::1/128 detail
Wed Apr 21 05:32:37.066 UTC
3333::1/128, version 3, SRv6 Headend, internal 0x5000001 0x30 (ptr 0xe209668) [1], 0x0 (0xe3a1e28), 0x0 (0xf636498)
Updated Apr 14 17:24:01.188
Prefix Len 128, traffic index 0, precedence n/a, priority 3
gateway array (0xe20fda8) reference count 1, flags 0x10, source rib (7), 0 backups
[2 type 3 flags 0x8441 (0xe2bce38) ext 0x0 (0x0)]
LW-LDI[type=3, refc=1, ptr=0xe3a1e28, sh-ldi=0xe2bce38]
gateway array update type-time 1 Apr 14 17:24:01.189
LDI Update time Apr 14 17:24:01.190
LW-LDI-TS Apr 14 17:24:01.190
Level 1 - Load distribution: 0
[0] via fcbb:bb00:3::/128, recursive
via fcbb:bb00:3::/128, 5 dependencies, recursive [flags 0x6000]
path-idx 0 NHID 0x0 [0xe20b890 0x0]
next hop VRF - 'default', table - 0xe0800000
next hop fcbb:bb00:3::/128 via fcbb:bb00:3::/48
SRv6 H.Encaps.Red SID-list {fcbb:bb00:3:e003::}
Load distribution: 0 (refcount 2)
Hash OK Interface Address
0 Y GigabitEthernet0/0/0/0 remote
RP/0/RP0/CPU0:r1#