Segment Routing Automated Steering – Color Only Bit

今回はAutomated SteeringのColor Extended CommunityのColor Only Bitの動作を説明します。

 

概要

Color Only Bitについて

以下のように、IPv4ネットワークとIPv6ネットワークが共有している状況で、IPv4とIPv6の両方のパケットをSR-TE Policyで処理した場合があります。
この際、Head-endとEnd-pointとなるルータが同じ場合でも、IPv4用のSR-TE PolicyとIPv6用のSR-TE Policyを個別に設定する必要があります。

 

通常、Automated Steeringでは、以下の条件を満たしているSR-TE PolicyをBGP経由で学習したルート情報に適用します。。

  • SR-TE PolicyのColorとルート情報に付加されたColorが等しい
  • SR-TE PolicyのEnd-pointのアドレスとルート情報のNext Hopアトリビュートのアドレスが等しい

 

もし、以下のように、IPv6ルートに対して、IPv4用のSR-TE PolicyのColorを付加して、BGPで広報しても、SR-TE PolicyのEnd-pointのアドレスとルート情報のNext Hopアトリビュートのアドレスが異なるため、IPv6のパケットをIPv4用のSR-TE Policyで処理できません。

 

このような状況では、Color Extended CommunityにはCO(Color Only) bitを使用することで、IPv4用のSR-TE PolicyでIPv4とIPv6の両方のパケットを処理させることが可能です。CO bitが01の場合、Head-endとなるルータはSR-TE PolicyのColorとルート情報に付加されたColorさえ一致していれば、そのルート宛のパケットをSR-TE Policyで処理できるようになります。

また、CO bitを使用して、IPv4とIPv6の両方のパケットを処理させるSR-TE Policyでは、End-pointのアドレスに0.0.0.0.を指定します。この0.0.0.0をNull End-pointと呼びます。

 

検証内容と設定

基本設定の内容

R1-R2-R3-R4間でIS-IS Araa 49.0000を構成します。
IS-ISでSR-TEを有効にし、IPv4とIPv6の両方のルート情報を交換します。

R1とR3をAS 100に所属させます。
R1とR3間でIPv4アドレスを使用したIBGPネイバーと、IPv6アドレスを使用したIBGPネイバーを構成します。
R3において、IPv4アドレスを使用したIBGPネイバー経由で10.5.5.0/24を広報します。Color 1を付加します。
R3において、IPv6アドレスを使用したIBGPネイバー経由で1005::/64を広報します。Color 1を付加します。

R1でLoopback Interfaceの1.1.1.1/32にPrefix SIDとして20101を割り当てます。
R2でLoopback Interfaceの2.2.2.2/32にPrefix SIDとして20201を割り当てます。
R3でLoopback Interfaceの3.3.3.3/32にPrefix SIDとして20301を割り当てます。
R4でLoopback Interfaceの4.4.4.4/32にPrefix SIDとして20401を割り当てます。

 

R1で以下のSR-TE Policyを設定します。

  • SR-TE Policy 1 : Color = 1 , End-point = 3.3.3.3 , SID = 20401 20301

IPv4ネットワーク

IPv6ネットワーク

初期設定


interface Loopback0
 ipv4 address 1.1.1.1 255.255.255.255
 ipv6 address 2000::1/128
!
interface GigabitEthernet0/0/0/0
 ipv4 address 10.1.1.1 255.255.255.0
 ipv6 address 1001::1/64
!
router isis 1
 is-type level-2-only
 net 49.0001.0000.0000.0001.00
 address-family ipv4 unicast
  metric-style wide
  segment-routing mpls
 !
 address-family ipv6 unicast
  metric-style wide
 !
 interface Loopback0
  address-family ipv4 unicast
   prefix-sid absolute 20101
  !
  address-family ipv6 unicast
  !
 !
 interface GigabitEthernet0/0/0/0
  point-to-point
  address-family ipv4 unicast
  !
  address-family ipv6 unicast
  !
 !
!
router bgp 100
 bgp router-id 1.1.1.1
 address-family ipv4 unicast
 !
 address-family ipv6 unicast
 !
 neighbor 2000::3
  remote-as 100
  update-source Loopback0
  address-family ipv6 unicast
  !
 !
 neighbor 3.3.3.3
  remote-as 100
  update-source Loopback0
  address-family ipv4 unicast
  !
 !
!
segment-routing
 traffic-eng
  segment-list SID_LIST
   index 10 mpls label 20401
   index 20 mpls label 20301
  !
  policy SR-TE_POLICY
   color 1 end-point ipv4 0.0.0.0
   candidate-paths
    preference 10
     explicit segment-list SID_LIST
            


interface Loopback0
 ipv4 address 2.2.2.2 255.255.255.255
 ipv6 address 2000::2/128
!
interface GigabitEthernet0/0/0/0
 ipv4 address 10.1.1.2 255.255.255.0
 ipv6 address 1001::2/64
!
interface GigabitEthernet0/0/0/1
 ipv4 address 10.2.2.2 255.255.255.0
 ipv6 address 1002::2/64
!
interface GigabitEthernet0/0/0/2
 ipv4 address 10.3.3.2 255.255.255.0
 ipv6 address 1003::2/64
!
router isis 1
 is-type level-2-only
 net 49.0001.0000.0000.0002.00
 address-family ipv4 unicast
  metric-style wide
  segment-routing mpls
 !
 address-family ipv6 unicast
  metric-style wide
 !
 interface Loopback0
  address-family ipv4 unicast
   prefix-sid absolute 20201
  !
  address-family ipv6 unicast
  !
 !
 interface GigabitEthernet0/0/0/0
  point-to-point
  address-family ipv4 unicast
  !
  address-family ipv6 unicast
  !
 !
 interface GigabitEthernet0/0/0/1
  point-to-point
  address-family ipv4 unicast
  !
  address-family ipv6 unicast
  !
 !
 interface GigabitEthernet0/0/0/2
  point-to-point
  address-family ipv4 unicast
  !
  address-family ipv6 unicast
  !
 !
!
segment-routing
 traffic-eng
            


interface Loopback0
 ipv4 address 3.3.3.3 255.255.255.255
 ipv6 address 2000::3/128
!
interface Loopback1
 ipv4 address 10.5.5.3 255.255.255.0
 ipv6 address 1005::3/64
!
interface GigabitEthernet0/0/0/0
 ipv4 address 10.2.2.3 255.255.255.0
 ipv6 address 1002::3/64
!
interface GigabitEthernet0/0/0/1
 ipv4 address 10.4.4.3 255.255.255.0
 ipv6 address 1004::3/64
!
extcommunity-set opaque COLOR_EXT_COMMUNITY_SET
  1
end-set
!
route-policy BGP_IPv4_ROUTE_POLICY
  if destination in (10.5.5.0/24) then
    set extcommunity color COLOR_EXT_COMMUNITY_SET
  endif
  pass
end-policy
!
route-policy BGP_IPv6_ROUTE_POLICY
  if destination in (1005::/64) then
    set extcommunity color COLOR_EXT_COMMUNITY_SET
  endif
  pass
end-policy
!
router isis 1
 is-type level-2-only
 net 49.0001.0000.0000.0003.00
 address-family ipv4 unicast
  metric-style wide
  segment-routing mpls
 !
 address-family ipv6 unicast
  metric-style wide
 !
 interface Loopback0
  address-family ipv4 unicast
   prefix-sid absolute 20301
  !
  address-family ipv6 unicast
  !
 !
 interface GigabitEthernet0/0/0/0
  point-to-point
  address-family ipv4 unicast
  !
  address-family ipv6 unicast
  !
 !
 interface GigabitEthernet0/0/0/1
  point-to-point
  address-family ipv4 unicast
  !
  address-family ipv6 unicast
  !
 !
!
router bgp 100
 bgp router-id 3.3.3.3
 address-family ipv4 unicast
  network 10.5.5.0/24
 !
 address-family ipv6 unicast
  network 1005::/64
 !
 neighbor 1.1.1.1
  remote-as 100
  update-source Loopback0
  address-family ipv4 unicast
   route-policy BGP_IPv4_ROUTE_POLICY out
  !
 !
 neighbor 2000::1
  remote-as 100
  update-source Loopback0
  address-family ipv6 unicast
   route-policy BGP_IPv6_ROUTE_POLICY out
  !
 !
!
segment-routing
 traffic-eng
            


interface Loopback0
 ipv4 address 4.4.4.4 255.255.255.255
 ipv6 address 2000::4/128
!
interface GigabitEthernet0/0/0/0
 ipv4 address 10.3.3.4 255.255.255.0
 ipv6 address 1003::4/64
!
interface GigabitEthernet0/0/0/1
 ipv4 address 10.4.4.4 255.255.255.0
 ipv6 address 1004::4/64
!
router isis 1
 is-type level-2-only
 net 49.0001.0000.0000.0004.00
 address-family ipv4 unicast
  metric-style wide
  segment-routing mpls
 !
 address-family ipv6 unicast
  metric-style wide
 !
 interface Loopback0
  address-family ipv4 unicast
   prefix-sid absolute 20401
  !
  address-family ipv6 unicast
  !
 !
 interface GigabitEthernet0/0/0/0
  point-to-point
  address-family ipv4 unicast
  !
  address-family ipv6 unicast
  !
 !
 interface GigabitEthernet0/0/0/1
  point-to-point
  address-family ipv4 unicast
  !
  address-family ipv6 unicast
  !
 !
!
segment-routing
 traffic-eng
            

 

設定と状態の確認

SR-TE Policyの状態確認

R1のSR-TE Policyを見ると、End-pointが0.0.0.0であることが確認できます。また、Colorが1、BSIDが24003であることが確認できます。

R1

RP/0/RP0/CPU0:R1#show segment-routing traffic-eng policy

SR-TE policy database
---------------------

Color: 1, End-point: 0.0.0.0
  Name: srte_c_1_ep_0.0.0.0
  Status:
    Admin: up  Operational: up for 00:15:13 (since Jun 29 21:43:25.554)
  Candidate-paths:
    Preference: 10 (configuration) (active)
      Name: SR-TE_POLICY
      Requested BSID: dynamic
      Explicit: segment-list SID_LIST (valid)
        Weight: 1, Metric Type: TE
          20401
          20301
  Attributes:
    Binding SID: 24003
    Forward Class: Not Configured
    Steering labeled-services disabled: no
    Steering BGP disabled: no
    IPv6 caps enable: yes
            

 

BGPとFIBの状態確認(CO bitセット前)

現在、R3はCO bitをセットせずに10.5.5.0/24を広報しています。

 

R1のBGPテーブルを見ると、10.5.5.0/24と1005::/64にはColor 1が付加されていますが、Color 1のSR-TE Policyが関連付けられていないことが確認できます。

R1

RP/0/RP0/CPU0:R1#show bgp 10.5.5.0/24
BGP routing table entry for 10.5.5.0/24
Versions:
  Process           bRIB/RIB  SendTblVer
  Speaker                  8           8
Last Modified: Jun 29 22:03:51.549 for 00:03:01
Paths: (1 available, best #1)
  Not advertised to any peer
  Path #1: Received by speaker 0
  Not advertised to any peer
  Local
    3.3.3.3 (metric 30) from 3.3.3.3 (3.3.3.3)
      Origin IGP, metric 0, localpref 100, valid, internal, best, group-best
      Received Path ID 0, Local Path ID 1, version 8
      Extended community: Color:1

RP/0/RP0/CPU0:R1#show bgp ipv6 unicast 1005::/64
BGP routing table entry for 1005::/64
Versions:
  Process           bRIB/RIB  SendTblVer
  Speaker                  7           7
Last Modified: Jun 29 22:03:51.549 for 00:03:09
Paths: (1 available, best #1)
  Not advertised to any peer
  Path #1: Received by speaker 0
  Not advertised to any peer
  Local
    2000::3 (metric 30) from 2000::3 (3.3.3.3)
      Origin IGP, metric 0, localpref 100, valid, internal, best, group-best
      Received Path ID 0, Local Path ID 1, version 7
      Extended community: Color:1
            

 

R1のFIBを見ると、10.5.5.0/24と1005::/64宛のパケットをSR-TE Policyで処理しないことが確認できます。

R1

RP/0/RP0/CPU0:R1#show cef 10.5.5.0/24
10.5.5.0/24, version 33, internal 0x5000001 0x0 (ptr 0xdef3168) [1], 0x0 (0xe0b4868), 0x0 (0x0)
 Updated Jun 29 22:03:51.521
 Prefix Len 24, traffic index 0, precedence n/a, priority 4
   via 3.3.3.3/32, 3 dependencies, recursive [flags 0x6000]
    path-idx 0 NHID 0x0 [0xdef3588 0x0]
    next hop 3.3.3.3/32 via 3.3.3.3/32

RP/0/RP0/CPU0:R1#show cef ipv6 1005::/64
1005::/64, version 22, internal 0x5000001 0x0 (ptr 0xddddcac) [1], 0x0 (0xe3415a8), 0x0 (0x0)
 Updated Jun 29 22:03:51.522
 Prefix Len 64, traffic index 0, precedence n/a, priority 4
   via 2000::3/128, 3 dependencies, recursive [flags 0x6000]
    path-idx 0 NHID 0x0 [0xddde134 0x0]
    next hop 2000::3/128 via 2000::3/128
            

 

CO bitをセット

CO bitを設定するには、OpaqueタイプのExtended Community Setで、co-flag 01オプションを指定します。

R1

extcommunity-set opaque COLOR_EXT_COMMUNITY_SET
  1 co-flag 01
end-set
            

 

BGPとFIBの状態確認(CO bitセット後)

現在、R3はCO bitに01をセットして10.5.5.0/24と1005::/64を広報しています。

 

以下はR3がR1に送信したBGP UPDATEメッセージのキャプチャになります。Color Extended CommunityのCO bitに01がセットされていることが確認できます。

 

R1のBGPテーブルを見ると、10.5.5.0/24と1005::/64のCO bitに01がセットされており、Color 1のSR-TE Policyが関連付けられていることが確認できます。

R1

RP/0/RP0/CPU0:R1#show bgp 10.5.5.0/24
BGP routing table entry for 10.5.5.0/24
Versions:
  Process           bRIB/RIB  SendTblVer
  Speaker                  9           9
Last Modified: Jun 29 22:12:44.549 for 00:02:29
Paths: (1 available, best #1)
  Not advertised to any peer
  Path #1: Received by speaker 0
  Not advertised to any peer
  Local
    3.3.3.3 C:1 (bsid:24003) (metric 30) from 3.3.3.3 (3.3.3.3)
      Origin IGP, metric 0, localpref 100, valid, internal, best, group-best
      Received Path ID 0, Local Path ID 1, version 9
      Extended community: Color[CO-Flag]:1[01]
      SR policy color 1, ipv4 null endpoint, up, not-registered, bsid 24003

RP/0/RP0/CPU0:R1#show bgp ipv6 unicast 1005::/64
BGP routing table entry for 1005::/64
Versions:
  Process           bRIB/RIB  SendTblVer
  Speaker                  8           8
Last Modified: Jun 29 22:12:44.549 for 00:02:35
Paths: (1 available, best #1)
  Not advertised to any peer
  Path #1: Received by speaker 0
  Not advertised to any peer
  Local
    2000::3 C:1 (bsid:24003) (metric 30) from 2000::3 (3.3.3.3)
      Origin IGP, metric 0, localpref 100, valid, internal, best, group-best
      Received Path ID 0, Local Path ID 1, version 8
      Extended community: Color[CO-Flag]:1[01]
      SR policy color 1, ipv4 null endpoint, up, not-registered, bsid 24003
            

 

R1のFIBを見ると、10.5.5.0/24と1005::/64宛のパケットをBSIDが24003のSR-TE Policy(Color 1)で処理することが確認できます。

R1

RP/0/RP0/CPU0:R1#show cef 10.5.5.0/24
10.5.5.0/24, version 35, internal 0x5000001 0x0 (ptr 0xdef3168) [1], 0x0 (0xe0b4868), 0x0 (0x0)
 Updated Jun 29 22:12:44.607
 Prefix Len 24, traffic index 0, precedence n/a, priority 4
   via local-label 24003, 3 dependencies, recursive [flags 0x6000]
    path-idx 0 NHID 0x0 [0xd264fb8 0x0]
    recursion-via-label
    next hop via 24003/1/21

RP/0/RP0/CPU0:R1#show cef ipv6 1005::/64
1005::/64, version 24, internal 0x5000001 0x0 (ptr 0xddddcac) [1], 0x0 (0xe3415a8), 0xa08 (0xe9a4368)
 Updated Jun 29 22:12:44.611
 Prefix Len 64, traffic index 0, precedence n/a, priority 4
   via local-label 24003, 3 dependencies, recursive [flags 0x6000]
    path-idx 0 NHID 0x0 [0xd264ee8 0x0]
    recursion-via-label
    next hop via 24003/0/21
     next hop srte_c_1_ep_ labels imposed {ImplNull ExpNullv6}
            

 

IPv4の疎通確認(CO bitセット後)

R1の1.1.1.1からR3の10.5.5.3へTracerouteを実施します。

 

R1はColor 1のSR-TE Policyを使用してパケットを転送していることが確認できます。

R1

RP/0/RP0/CPU0:R1#traceroute 10.5.5.3 source 1.1.1.1

Type escape sequence to abort.
Tracing the route to 10.5.5.3

 1  10.1.1.2 [MPLS: Labels 20401/20301 Exp 0] 52 msec  51 msec  59 msec
 2  10.3.3.4 [MPLS: Label 20301 Exp 0] 58 msec  58 msec  54 msec
 3  10.4.4.3 64 msec  *  45 msec
            

 

IPv6の疎通確認(CO bitセット後)

R1の2000::1からR3の1005::3へTracerouteを実施します。

 

R1はColor 1のSR-TE Policyを使用してパケットを転送していることが確認できます。(2はIPv6のExplicit Null用のLabelになります。)

R1

RP/0/RP0/CPU0:R1#traceroute 1005::3 source 2000::1

Type escape sequence to abort.
Tracing the route to 1005::3

 1  1001::2 [MPLS: Labels 20401/20301/2 Exp 0] 12 msec 8 msec 12 msec
 2  1003::4 [MPLS: Labels 20301/2 Exp 0] 17 msec 13 msec 8 msec
 3  1005::3 18 msec 21 msec 14 msec
            

コメント

タイトルとURLをコピーしました