Skip to main content

SRv6 simple configuration example(uSID)

·1223 words·6 mins
Rory
Author
Rory
Step by step the ladder is ascended

最近测试了 SRv6,顺便记录下, SRv6 具体是什么?对比我们平常的 MPLS VPN 的网络,数据转发采用的 MPLS 标签, 那 MPLS 标签常见的可以是 LDP 或者 SR 分配的; SRv6 使用的 IPv6 的报头进行转发,在 IPv6 Header 中新增 SRH(Segment Routing Header)用来记录 128bit IPv6 地址格式的 SRv6 SID(segment ID)如下图所示:

RFC2460

上面所说的为 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#