[Multi-AS Segment Routing 検証連載 #14] Color-Based Steering using IOS XR, Junos and SR OS

サマリ

  • SR-MPLS + VPNv4 + explicit path による BGP Color を用いた Traffic Engineering (TE) を実現
  • IOS XR + Junos + SR OS の Multi-vendor 環境での動作検証に成功

この記事は Multi-AS Segment Routing 検証連載の第 14 回です。過去の記事一覧は こちら にあります。

概要

イノベーションセンターの田島です。本連載のような Segment Routing 関連の技術検証の指揮を執ったり、自動化による高度な運用を開発したりしています。

本記事では IOS XR + Junos + SR OS の Multi-vendor における Traffic Engineering (TE) についてご紹介します。 Segment Routing では ingress PE において転送するパスを決定し、適切な SID をパケットに付与することで TE を実現します。

本記事では TE の対象となる VPN 経路に対して BGP Color Extended Community (以下単に Color) を付与することで転送するパスを切り替える様子を示します。 第 4 回の記事 でもご紹介した通り、すでに IOS XR + Junos の Multi-vendor 環境での検証は実施済みで、 今回はそれらに Nokia SR OS を加えて検証します。

VPNv4 による L3VPN の相互接続は 第 12 回の記事 にて紹介済みですので、そちらも併せてご参照ください。

検証

本記事での検証は、L3VPN の prefix ごとに Color をつけて広告し、その Color によって転送する経路を変えるものです。 Color そのものや SR Policy に関する説明は 第 4 回の記事 を、 L3VPN に関する説明や設定は 第 12 回の記事 をご覧ください。

検証トポロジーは次のようなシンプルなものを用意します。

各 PE には VRF 100と VRF 200 が設定され、それぞれの経路に Color 100 と Color 200 を付与して広告します。 Color 100 の方は直通の最短経路で、Color 200 の方は迂回する経路での転送を実現します。

本記事では L3VPN はすでに開通しているとし、その後の設定を SR OS を中心に紹介します。 Color による TE は次の 2 ステップで設定します。

  1. Color 200 用 SR Policy の作成
  2. Color の付与と広告

なお本記事では下記のバージョンで検証しました。

  • rt01: IOS XR 7.4.1
  • rt02: Junos 21.3R1.9
  • rt03: SR OS 22.7.R1

1. Color 200 用 SR Policy の作成

Endpoint と Color を指定して SR Policy を作成します。 SR OS では SR Policy 用のラベルブロック (LB) を指定し、 BSID をそのブロックの中から手動で採番する必要があります。 rt01 向けの Segment List は、トポロジー図にあるように rt02 16002 を経由するものです。

router "Base" {
    mpls-labels {
            reserved-label-block "SR-Policy-LB" {
                start-label 52400
                end-label 52499
            }
    }
    segment-routing {
        sr-policies {
            admin-state enable
            reserved-label-block "SR-Policy-LB"
            static-policy "rt01-color200-policy" {
                admin-state enable
                color 200
                endpoint 10.255.0.1
                head-end local
                binding-sid 52410
                segment-list 1 {
                    admin-state enable
                    segment 1 {
                        mpls-label 16002
                    }
                    segment 2 {
                        mpls-label 16001
                    }
                }
            }
        }
    }
}

SR Policy の確認

設定した SR Policy が有効になっているかを表示して確認します。 Active になっていることが表示されます。

rt03 (SR OS)

A:user@rt03# /show router segment-routing sr-policies static end-point 10.255.0.1 color 200

===============================================================================
SR-Policies Path
===============================================================================
-------------------------------------------------------------------------------
Type            : srMpls
Active          : Yes                   Owner           : static
Color           : 200
Head            : 0.0.0.0               Endpoint Addr   : 10.255.0.1
RD              : 0                     Preference      : 100
BSID            : 52410
TunnelId        : 917506                Age             : 231
Origin ASN      : 0                     Origin          : 0.0.0.0
NumReEval       : 0                     ReEvalReason    : none
NumActPathChange: 0                     Last Change     : 06/27/2023 05:09:21
Maintenance Policy: N/A

Path Segment Lists:
Segment-List    : 1                     Weight          : 1
S-BFD State     : Down                  S-BFD Transitio*: 0
Num Segments    : 2                     Last Change     : 06/27/2023 01:41:02
  Seg 1 Label   : 16002                 State           : resolved-up
  Seg 2 Label   : 16001                 State           : N/A

===============================================================================

2. Color の付与と広告

MP-BGP で VPN 経路を広告するときに Color を付与します。 VRF の export policy に設定することにより実現します。 なお、 SR OS では Color を示す color:00:<10進数> という書き方と、 BGP Extended Community 一般の記法で Color を指定する ext:030b:<16進数> という書き方ができます。 今回は見やすい前者で設定します。

policy-options {
    community "color-100" {
        member "color:00:100" { }
    }
    community "target-100" {
        member "target:65000:100" { }
    }
    policy-statement "vrf-export-100" {
        entry 10 {
            action {
                action-type accept
                community {
                    add ["target-100" "color-100"]
                }
            }
        }
    }
}
service {
    vprn "100" {
        bgp-ipvpn {
            mpls {
                vrf-export {
                    policy ["vrf-export-100"]
                }
            }
        }
    }
}

経路の確認

rt03 で設定した Color は他のルーターで参照できます。 対向の rt01 では次のように Color 100 の経路と Color 200 の経路がそれぞれ認識されます。

rt01 (IOS XR)

RP/0/RP0/CPU0:rt01#show bgp vpnv4 unicast rd 65000:100 192.168.103.0/24 detail
Tue Jun 27 14:56:46.266 JST
BGP routing table entry for 192.168.103.0/24, Route Distinguisher: 65000:100
Versions:
  Process           bRIB/RIB  SendTblVer
  Speaker                 22          22
    Flags: 0x00041001+0x00000000;
Last Modified: Jun 27 14:56:00.872 for 00:00:45
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
    10.255.0.3 (metric 10) from 10.255.0.3 (10.255.0.3), if-handle 0x00000000
      Received Label 524284
      Origin IGP, localpref 100, valid, internal, best, group-best, import-candidate, imported
      Received Path ID 0, Local Path ID 1, version 22
      Extended community: Color:100 RT:65000:100
      Source AFI: VPNv4 Unicast, Source VRF: 100, Source Route Distinguisher: 65000:100
RP/0/RP0/CPU0:rt01#show bgp vpnv4 unicast rd 65000:200 192.168.203.0/24 detail
Tue Jun 27 15:38:56.569 JST
BGP routing table entry for 192.168.203.0/24, Route Distinguisher: 65000:200
Versions:
  Process           bRIB/RIB  SendTblVer
  Speaker                 31          31
    Flags: 0x00363001+0x00000000;
Last Modified: Jun 27 15:38:49.872 for 00:00:06
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
    10.255.0.3 (metric 10) from 10.255.0.3 (10.255.0.3), if-handle 0x00000000
      Received Label 524283
      Origin IGP, localpref 100, valid, internal, best, group-best, import-candidate, imported
      Received Path ID 0, Local Path ID 1, version 27
      Extended community: Color:200 RT:65000:200
      Source AFI: VPNv4 Unicast, Source VRF: 200, Source Route Distinguisher: 65000:200

一方で逆向きの、対向ルーターが広告する Color を rt03 で確認します。 それぞれの経路に Color 100 と Color 200 が付与されています。

rt03 (SR OS)

A:user@rt03# /show router bgp routes vpn-ipv4 rd 65000:100 detail
(snip)
Network        : 192.168.101.0/24
Nexthop        : 10.255.0.1
Route Dist.    : 65000:100              VPN Label      : 24004
Path Id        : None
From           : 10.255.0.1
Res. Nexthop   : n/a
Local Pref.    : 100                    Interface Name : to_rt01
Aggregator AS  : None                   Aggregator     : None
Atomic Aggr.   : Not Atomic             MED            : 0
AIGP Metric    : None                   IGP Cost       : 20
Connector      : None
Community      : color:00:100 target:65000:100
Cluster        : No Cluster Members
Originator Id  : None                   Peer Router Id : 10.255.0.1
Fwd Class      : None                   Priority       : None
Flags          : Used Valid Best Incomplete
Route Source   : Internal
AS-Path        : No As-Path
Route Tag      : 0
Neighbor-AS    : n/a
Orig Validation: N/A
Source Class   : 0                      Dest Class     : 0
Add Paths Send : Default
Last Modified  : 00h13m13s
VPRN Imported  :  100
A:user@rt03# /show router bgp routes vpn-ipv4 rd 65000:200 detail
(snip)
Network        : 192.168.201.0/24
Nexthop        : 10.255.0.1
Route Dist.    : 65000:200              VPN Label      : 24005
Path Id        : None
From           : 10.255.0.1
Res. Nexthop   : n/a
Local Pref.    : 100                    Interface Name : to_rt01
Aggregator AS  : None                   Aggregator     : None
Atomic Aggr.   : Not Atomic             MED            : 0
AIGP Metric    : None                   IGP Cost       : 20
Connector      : None
Community      : color:00:200 target:65000:200
Cluster        : No Cluster Members
Originator Id  : None                   Peer Router Id : 10.255.0.1
Fwd Class      : None                   Priority       : None
Flags          : Used Valid Best Incomplete
Route Source   : Internal
AS-Path        : No As-Path
Route Tag      : 0
Neighbor-AS    : n/a
Orig Validation: N/A
Source Class   : 0                      Dest Class     : 0
Add Paths Send : Default
Last Modified  : 00h13m46s
VPRN Imported  :  200

動作確認

Color 100 と Color 200 が付いたそれぞれの宛先に対して traceroute をすることで、直通か迂回路かを使い分けられていることが転送ホップ数から確認できます。

rt03 (SR OS)

A:user@rt03# /traceroute 192.168.101.254 router-instance 100 probe-count 1
traceroute to 192.168.101.254, 30 hops max, 40 byte packets
  1  10.0.2.1 (10.0.2.1)    3.99 ms
A:user@rt03# /traceroute 192.168.201.254 router-instance 200 probe-count 1
traceroute to 192.168.201.254, 30 hops max, 40 byte packets
  1  10.0.3.1 (10.0.3.1)    2.62 ms
  2  10.0.1.1 (10.0.1.1)    8.97 ms

経路表でも直接 IS-IS で転送先が解決される Color 100 と、 SR Policy によって転送される Color 200 が確認できます。 この tunnel-id 917506 は「SR Policy の確認」節での show 結果に出ている Policy が使用されていることを示します。

[/]
A:user@rt03# /show router service-name 100 route-table 192.168.101.0/24

===============================================================================
Route Table (Service: 100)
===============================================================================
Dest Prefix[Flags]                            Type    Proto     Age        Pref
      Next Hop[Interface Name]                                    Metric
-------------------------------------------------------------------------------
192.168.101.0/24                              Remote  BGP VPN   00h21m21s  170
       10.255.0.1 (tunneled:SR-ISIS:524298)                         20
-------------------------------------------------------------------------------
No. of Routes: 1
Flags: n = Number of times nexthop is repeated
       B = BGP backup route available
       L = LFA nexthop available
       S = Sticky ECMP requested
===============================================================================

[/]
A:user@rt03# /show router service-name 200 route-table 192.168.201.0/24

===============================================================================
Route Table (Service: 200)
===============================================================================
Dest Prefix[Flags]                            Type    Proto     Age        Pref
      Next Hop[Interface Name]                                    Metric
-------------------------------------------------------------------------------
192.168.201.0/24                              Remote  BGP VPN   00h15m31s  170
       10.255.0.1 (tunneled:SR-Policy:917506)                       0
-------------------------------------------------------------------------------
No. of Routes: 1
Flags: n = Number of times nexthop is repeated
       B = BGP backup route available
       L = LFA nexthop available
       S = Sticky ECMP requested
===============================================================================

逆向きの rt01 から rt03 宛ての経路についても同様に、直通経路と、途中に 1 ホップする経路が使い分けられています。

rt01 (IOS XR)

RP/0/RP0/CPU0:rt01#traceroute 192.168.103.254 vrf 100 probe 1
Tue Jun 27 15:32:02.036 JST

Type escape sequence to abort.
Tracing the route to 192.168.103.254

 1  192.168.103.254 2 msec
RP/0/RP0/CPU0:rt01#traceroute 192.168.203.254 vrf 200 probe 1
Tue Jun 27 15:32:03.991 JST

Type escape sequence to abort.
Tracing the route to 192.168.203.254

 1  10.0.1.2 [MPLS: Labels 16003/524283 Exp 0] 3 msec
 2  192.168.203.254 4 msec

まとめ

本記事では、SR OS を含めた Multi-vendor 環境における Color-Based TE の検証結果を紹介しました。

(2023/9/19 編集・追記) 次のエントリは予定を変更して Flex-Algo の相互運用性の記事を公開しました:[Multi-AS Segment Routing 検証連載 #15] IGP Flexible Algorithm Interoperability Updates

© NTT Communications Corporation All Rights Reserved.