[Multi-AS Segment Routing 検証連載 #4] Color-Based Steering in Single-AS

サマリ

  • Single-AS で構成されるネットワークにおいて、 SR-MPLS + VPNv4 + explicit path による Traffic Engineering (TE) を実現
  • IOS XR + Junos の Multi-vendor 環境で動作検証に成功

この記事は Multi-AS Segment Routing 検証連載の第 4 回です。目次は こちら

概要

イノベーションセンターの竹中です。普段の業務では Multi-AS Segment Routing に関する技術検証や、ネットワーク運用効率化のためのコントローラー開発などを行なっています。

本記事では Single-AS において SR-MPLS を用いた TE についてご紹介します。

第 0 回の記事 でもご紹介した通り、我々は Multi-AS/Multi-domain SR-MPLS における VPN と TE の実現手法を検証しています。 第 1 回の記事第 2 回の記事第 3 回の記事を通して、 Multi-AS/Multi-domain SR-MPLS における L3VPN、L2VPN について説明、検証しました。

本記事では SR を用いた TE 手法についてご紹介する上で、まずは TE に必要となる SR Policy について説明します。 その後に 第 1 回の記事 で作成した Single-AS アンダーレイでの Color-Based Steering の手法を、サンプルトポロジーや設定例を添えながら紹介します。

Multi-AS での TE は第 5 回の記事にて紹介する予定です。

SR Policy

SR Policy とは

SR Policy 1 とは、SR で構成されたネットワークにおいて、運用者の意図に基づいたソースルーティングを行うためポリシーであり、下記の3つの要素で構成されます。

  1. SR domain の Tailend である endpoint
  2. TE 経路を指定する Segment List
  3. ポリシーと経路を紐づける識別子である color

SR Policy の適用方法はいくつか存在しますが、本記事においては MP-BGP で広告された VPN 経路に対して SR Policy を適用する流れを紹介します。

VPN 経路への SR Policy の適用方法としては、 SR Policy を適用対象の color と endpoint を指定して定義しておき、 BGP で受け取った経路のうち Color Extended Community と nexthop の組み合わせが一致する経路に適用する方法があります。 BGP の color はネットワークの運用意図の伝達として用いることができ、同じ endpoint に対して color ごとに異なる SR Policy を定義可能です。このように、経路に付加された color に応じて SR Policy を適用する TE 手法を Color-Based Steering と呼びます。

本記事においては color と endpoint を指定して SR Policy を適用しますが、color のみを指定して endpoint を動的に評価し SR Policy をインスタンス化する On-Demand Next-Hop (ODN) と呼ばれる技術も存在します。ただし、この技術は本記事の検証トポロジーでは使わないため、後続の記事にて紹介・検証します。

explicit path と dynamic path

SR Policy の持つ経路は、その生成手法によって explicit path と dynamic path に分類されます。

explicit path は、Segment List をあらかじめ設定し、静的に経路を指定します。 一方で dynamic path は制約に基づいた Segment List の計算方法を表現するもので、SR Policy の設定時やトポロジー、メトリックなどの状態変更時に Segment List を動的に計算します。

本記事においては、TE の実現方法として explcit path を用いた検証を紹介します。

dynamic path を用いた検証例は後続の記事をご参照ください。また、我々の dynamic path に関する取り組みについては NTT Tech Conference 2022ENOG74 でも発表しています。

color の仕組みと利用例

BGP で経路を export または import する際に Color Extended Community を経路に付加することで、その経路への SR Policy 適用の可否、ならびに適用する SR Policy の決定が可能です。

BGP 経路に対する Color Extended Community の付加範囲は様々です。特定のネットワークの経路に対して付加することで当該ネットワークのみ挙動を変えたり、特定の Route-Distinguisher (RD) や Route-Target (RT) を持つ経路情報に対して付加することで当該 VRF 全体の挙動を変えたりできます。

上記の図は Color-Based Steering の模式図で、Single-AS の SR-MPLS において VPN 経路ごとの TE を実装する様子を表しています。なお、TE で利用するラベルのみ図中に明記し、各顧客を示す VPN ラベルは省略しています。

SR Policy に従った TE までの手順は以下の通りです。

  1. ingress PE (PE1) にて SR Policy を設定する
  2. egress PE (PE2) で IBGP による Customer A、B の経路を IBGP で広告する
  3. 広告の際に各 VRF の RD ごとに Color Extended Community を付加する
  4. IBGP によって広告された経路を PE1 で受け取り、各 VRF table に import する
  5. import の際に経路に対して color、endpoint の一致する SR Policy を適用する
  6. SR Policy を適用した経路を参照するパケットを各 Customer から受け取った時に、SR Policy に従った Segment List を付与し SR-MPLS で構成されるコアネットワークに送出する

次章の検証例では、上記手順に沿った検証を紹介します。

検証例の紹介

下記のトポロジーを利用し、 Color-Based Steering の検証例を紹介します。

また、L3VPN 環境準備までの設定例はこちらを参照ください。

以降は Color-Based Steering にて Customer ごとに下図の TE を行うための設定と確認方法を記載します。ingress PE には SR Policy の設定、egress PE には VPN 経路に Color Extended Community を付加する設定を入れます。

Customer A の TE

Customer B の TE

SR Policy の設定と確認

まず SR Policy を設定します。explicit path を利用する場合は Segment List の設定も必要です。

PE1 (IOS XR) 側

segment-routing
 traffic-eng
  segment-list vrf-100-segment-list
   index 10 mpls label 16002
   index 20 mpls label 16004
   index 30 mpls label 16003
  !
  segment-list vrf-200-segment-list
   index 10 mpls label 16004
   index 20 mpls label 16002
   index 30 mpls label 16003
  !
  policy vrf-100-policy
   color 100 end-point ipv4 10.255.0.3
   candidate-paths
    preference 50
     explicit segment-list vrf-100-segment-list
     !
    !
   !
  !
  policy vrf-200-policy
   color 200 end-point ipv4 10.255.0.3
   candidate-paths
    preference 50
     explicit segment-list vrf-200-segment-list
     !
    !
   !
  !
 !
!

データベースに SR Policy が追加されたことを確認します。

RP/0/RP0/CPU0:PE1#show segment-routing traffic-eng policy
Tue Jul 12 11:38:51.837 JST

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

Color: 100, End-point: 10.255.0.3
  Name: srte_c_100_ep_10.255.0.3
  Status:
    Admin: up  Operational: up for 00:05:04 (since Jul 12 11:33:47.109)
  Candidate-paths:
    Preference: 50 (configuration) (active)
      Name: vrf-100-policy
      Requested BSID: dynamic
        Protection Type: protected-preferred
        Maximum SID Depth: 10
      Explicit: segment-list vrf-100-segment-list (valid)
        Weight: 1, Metric Type: TE
          16002
          16004
          16003
  Attributes:
    Binding SID: 24008
    Forward Class: Not Configured
    Steering labeled-services disabled: no
    Steering BGP disabled: no
    IPv6 caps enable: yes
    Invalidation drop enabled: no

Color: 200, End-point: 10.255.0.3
  Name: srte_c_200_ep_10.255.0.3
  Status:
    Admin: up  Operational: up for 00:00:32 (since Jul 12 11:38:19.552)
  Candidate-paths:
    Preference: 50 (configuration) (active)
      Name: vrf-200-policy
      Requested BSID: dynamic
        Protection Type: protected-preferred
        Maximum SID Depth: 10
      Explicit: segment-list vrf-200-segment-list (valid)
        Weight: 1, Metric Type: TE
          16004
          16002
          16003
  Attributes:
    Binding SID: 24011
    Forward Class: Not Configured
    Steering labeled-services disabled: no
    Steering BGP disabled: no
    IPv6 caps enable: yes
    Invalidation drop enabled: no

PE2 (Junos) 側

set protocols source-packet-routing segment-list vrf-100-segment-list P2 label 16004
set protocols source-packet-routing segment-list vrf-100-segment-list P1 label 16002
set protocols source-packet-routing segment-list vrf-100-segment-list PE1 label 16001
set protocols source-packet-routing source-routing-path vrf-100-policy to 10.255.0.1
set protocols source-packet-routing source-routing-path vrf-100-policy color 100
set protocols source-packet-routing source-routing-path vrf-100-policy primary vrf-100-segment-list

set protocols source-packet-routing segment-list vrf-200-segment-list P1 label 16002
set protocols source-packet-routing segment-list vrf-200-segment-list P2 label 16004
set protocols source-packet-routing segment-list vrf-200-segment-list PE1 label 16001
set protocols source-packet-routing source-routing-path vrf-200-policy to 10.255.0.1
set protocols source-packet-routing source-routing-path vrf-200-policy color 200
set protocols source-packet-routing source-routing-path vrf-200-policy primary vrf-200-segment-list

データベースに SR Policy が追加されたことを確認します。

user@PE2> show spring-traffic-engineering lsp name vrf-100-policy detail
Name: vrf-100-policy
  Tunnel-source: Static configuration
  Tunnel Forward Type: SRMPLS
  To: 10.255.0.1-100<c>
  State: Up
    Path: vrf-100-segment-list
    Path Status: NA
    Outgoing interface: NA
    Auto-translate status: Disabled Auto-translate result: N/A
    Compute Status:Disabled , Compute Result:N/A , Compute-Profile Name:N/A
    BFD status: N/A BFD name: N/A
    Segment ID : 128
    ERO Valid: true
      SR-ERO hop count: 3
        Hop 1 (Strict):
          NAI: None
          SID type: 20-bit label, Value: 16004
        Hop 2 (Strict):
          NAI: None
          SID type: 20-bit label, Value: 16002
        Hop 3 (Strict):
          NAI: None
          SID type: 20-bit label, Value: 16001


Total displayed LSPs: 1 (Up: 1, Down: 0)

user@PE2> show spring-traffic-engineering lsp name vrf-200-policy detail
Name: vrf-200-policy
  Tunnel-source: Static configuration
  Tunnel Forward Type: SRMPLS
  To: 10.255.0.1-200<c>
  State: Up
    Path: vrf-200-segment-list
    Path Status: NA
    Outgoing interface: NA
    Auto-translate status: Disabled Auto-translate result: N/A
    Compute Status:Disabled , Compute Result:N/A , Compute-Profile Name:N/A
    BFD status: N/A BFD name: N/A
    Segment ID : 128
    ERO Valid: true
      SR-ERO hop count: 3
        Hop 1 (Strict):
          NAI: None
          SID type: 20-bit label, Value: 16002
        Hop 2 (Strict):
          NAI: None
          SID type: 20-bit label, Value: 16004
        Hop 3 (Strict):
          NAI: None
          SID type: 20-bit label, Value: 16001


Total displayed LSPs: 1 (Up: 1, Down: 0)

BGP Color Extended Community 付加の設定と確認

BGP で広告する経路に color を付加します。

PE1 (IOS XR) 側

vrf 100
 address-family ipv4 unicast
  export route-policy add-color-100
 !
!
vrf 200
 address-family ipv4 unicast
  export route-policy add-color-200
 !
!
extcommunity-set opaque color-100
  100
end-set
!
extcommunity-set opaque color-200
  200
end-set
!
route-policy add-color-100
  set extcommunity color color-100
end-policy
!
route-policy add-color-200
  set extcommunity color color-200
end-policy

対向の PE2 にて、受け取った経路に color がついていることを確認します。

user@PE2> show route table bgp.l3vpn.0 detail

bgp.l3vpn.0: 2 destinations, 2 routes (2 active, 0 holddown, 0 hidden)
65000:100:192.168.0.0/24 (1 entry, 0 announced)
        *BGP    Preference: 170/-101
                Route Distinguisher: 65000:100
                Next hop type: Indirect, Next hop index: 0
                Address: 0x704dfc4
                Next-hop reference count: 3
                Source: 10.255.0.1
                Next hop type: Router, Next hop index: 0
                Next hop: 10.0.2.1 via ge-0/0/0.0
                Label operation: Push 24004, Push 16001(top)
                Label TTL action: prop-ttl, prop-ttl(top)
                Load balance label: Label 24004: None; Label 16001: None;
                Label element ptr: 0x780fa88
                Label parent element ptr: 0x782ea28
                Label element references: 4
                Label element child references: 0
                Label element lsp id: 0
                Session Id: 0x0
                Next hop: 10.0.3.1 via ge-0/0/1.0, selected
                Label operation: Push 24004, Push 16001(top)
                Label TTL action: prop-ttl, prop-ttl(top)
                Load balance label: Label 24004: None; Label 16001: None;
                Label element ptr: 0x780fa88
                Label parent element ptr: 0x782ea28
                Label element references: 4
                Label element child references: 0
                Label element lsp id: 0
                Session Id: 0x0
                Protocol next hop: 10.255.0.1
                Label operation: Push 24004
                Label TTL action: prop-ttl
                Load balance label: Label 24004: None;
                Indirect next hop: 0x7198904 1048576 INH Session ID: 0x144
                State: <Active Int Ext ProtectionPath ProtectionCand>
                Local AS: 65000 Peer AS: 65000
                Age: 3:58   Metric: 0   Metric2: 30
                Validation State: unverified
                ORR Generation-ID: 0
                Task: BGP_65000.10.255.0.1
                AS path: ?
                Communities: target:65000:100 color:0:100
                Import Accepted
                VPN Label: 24004
                Localpref: 100
                Router ID: 10.255.0.1
                Secondary Tables: 100.inet.0
                Thread: junos-main

65000:200:192.168.0.0/24 (1 entry, 0 announced)
        *BGP    Preference: 170/-101
                Route Distinguisher: 65000:200
                Next hop type: Indirect, Next hop index: 0
                Address: 0x704e234
                Next-hop reference count: 3
                Source: 10.255.0.1
                Next hop type: Router, Next hop index: 0
                Next hop: 10.0.2.1 via ge-0/0/0.0, selected
                Label operation: Push 24005, Push 16001(top)
                Label TTL action: prop-ttl, prop-ttl(top)
                Load balance label: Label 24005: None; Label 16001: None;
                Label element ptr: 0x780fd30
                Label parent element ptr: 0x782ea28
                Label element references: 4
                Label element child references: 0
                Label element lsp id: 0
                Session Id: 0x0
                Next hop: 10.0.3.1 via ge-0/0/1.0
                Label operation: Push 24005, Push 16001(top)
                Label TTL action: prop-ttl, prop-ttl(top)
                Load balance label: Label 24005: None; Label 16001: None;
                Label element ptr: 0x780fd30
                Label parent element ptr: 0x782ea28
                Label element references: 4
                Label element child references: 0
                Label element lsp id: 0
                Session Id: 0x0
                Protocol next hop: 10.255.0.1
                Label operation: Push 24005
                Label TTL action: prop-ttl
                Load balance label: Label 24005: None;
                Indirect next hop: 0x7198a84 1048577 INH Session ID: 0x144
                State: <Active Int Ext ProtectionPath ProtectionCand>
                Local AS: 65000 Peer AS: 65000
                Age: 2:42   Metric: 0   Metric2: 30
                Validation State: unverified
                ORR Generation-ID: 0
                Task: BGP_65000.10.255.0.1
                AS path: ?
                Communities: target:65000:200 color:0:200
                Import Accepted
                VPN Label: 24005
                Localpref: 100
                Router ID: 10.255.0.1
                Secondary Tables: 200.inet.0
                Thread: junos-main

PE2 (Junos) 側

※ Junos のポリシーは accept の後のタームが実行されないため順序にご注意ください

set policy-options community COLOR-100 members color:0:100
set policy-options community COLOR-200 members color:0:200

delete policy-options policy-statement EXPORT-POLICY-100
set policy-options policy-statement EXPORT-POLICY-100 term ROUTE-TARGET then community add VRF100-65000-RT
set policy-options policy-statement EXPORT-POLICY-100 term ADD-COLOR-100 then community add COLOR-100
set policy-options policy-statement EXPORT-POLICY-100 term REDIST-DIRECT from protocol direct
set policy-options policy-statement EXPORT-POLICY-100 term REDIST-DIRECT then accept

set routing-instances 100 vrf-export EXPORT-POLICY-100

delete policy-options policy-statement EXPORT-POLICY-200
set policy-options policy-statement EXPORT-POLICY-200 term ROUTE-TARGET then community add VRF200-65000-RT
set policy-options policy-statement EXPORT-POLICY-200 term ADD-COLOR-200 then community add COLOR-200
set policy-options policy-statement EXPORT-POLICY-200 term REDIST-DIRECT from protocol direct
set policy-options policy-statement EXPORT-POLICY-200 term REDIST-DIRECT then accept

set routing-instances 200 vrf-export EXPORT-POLICY-200

対向の PE1 にて、受け取った経路に color がついていることを確認します。

RP/0/RP0/CPU0:PE1#show bgp vpnv4 unicast vrf 100 192.168.1.0/24
Tue Jul 12 15:24:30.125 JST
BGP routing table entry for 192.168.1.0/24, Route Distinguisher: 65000:100
Versions:
  Process           bRIB/RIB  SendTblVer
  Speaker                 28          28
Last Modified: Jul 12 15:01:55.551 for 00:22:34
Paths: (1 available, best #1)
  Not advertised to any peer
  Path #1: Received by speaker 0
  Not advertised to any peer
  Local
    10.255.0.3 C:100 (bsid:24008) (metric 20) from 10.255.0.3 (10.255.0.3)
      Received Label 20
      Origin IGP, localpref 100, valid, internal, best, group-best, import-candidate, imported
      Received Path ID 0, Local Path ID 1, version 28
      Extended community: Color:100 RT:65000:100
      SR policy color 100, up, not-registered, bsid 24008

      Source AFI: VPNv4 Unicast, Source VRF: 100, Source Route Distinguisher: 65000:100


RP/0/RP0/CPU0:PE1#show bgp vpnv4 unicast vrf 200 192.168.1.0/24
Tue Jul 12 15:24:46.645 JST
BGP routing table entry for 192.168.1.0/24, Route Distinguisher: 65000:200
Versions:
  Process           bRIB/RIB  SendTblVer
  Speaker                 29          29
Last Modified: Jul 12 15:01:55.551 for 00:22:51
Paths: (1 available, best #1)
  Not advertised to any peer
  Path #1: Received by speaker 0
  Not advertised to any peer
  Local
    10.255.0.3 C:200 (bsid:24011) (metric 20) from 10.255.0.3 (10.255.0.3)
      Received Label 21
      Origin IGP, localpref 100, valid, internal, best, group-best, import-candidate, imported
      Received Path ID 0, Local Path ID 1, version 29
      Extended community: Color:200 RT:65000:200
      SR policy color 200, up, not-registered, bsid 24011

      Source AFI: VPNv4 Unicast, Source VRF: 200, Source Route Distinguisher: 65000:200

SR Policy が適用された経路の確認

まず PE1 から PE2 の経路について確認します。

PE1 にて、対向の Customer ネットワークへの経路の nexthop が SR Policy の処理へ転送するためのローカルラベルとなっていることが確認できます。

RP/0/RP0/CPU0:PE1#sho cef vrf 100
Tue Jul 12 11:14:45.051 JST

Prefix              Next Hop            Interface
------------------- ------------------- ------------------
0.0.0.0/0           drop                default handler
0.0.0.0/32          broadcast
192.168.0.0/24      attached            GigabitEthernet0/0/0/2
192.168.0.0/32      broadcast           GigabitEthernet0/0/0/2
192.168.0.254/32    receive             GigabitEthernet0/0/0/2
192.168.0.255/32    broadcast           GigabitEthernet0/0/0/2
192.168.1.0/24      24008 (via-label)   <recursive>
224.0.0.0/4         0.0.0.0/32
224.0.0.0/24        receive
255.255.255.255/32  broadcast


RP/0/RP0/CPU0:PE1#sho cef vrf 200
Tue Jul 12 11:16:24.775 JST

Prefix              Next Hop            Interface
------------------- ------------------- ------------------
0.0.0.0/0           drop                default handler
0.0.0.0/32          broadcast
192.168.0.0/24      attached            GigabitEthernet0/0/0/3
192.168.0.0/32      broadcast           GigabitEthernet0/0/0/3
192.168.0.254/32    receive             GigabitEthernet0/0/0/3
192.168.0.255/32    broadcast           GigabitEthernet0/0/0/3
192.168.1.0/24      24011 (via-label)   <recursive>
224.0.0.0/4         0.0.0.0/32
224.0.0.0/24        receive
255.255.255.255/32  broadcast

ローカルラベル処理は以下で確認できます。

RP/0/RP0/CPU0:PE1#show mpls forwarding labels 24008 detail
Tue Jul 12 11:18:35.029 JST
Local  Outgoing    Prefix             Outgoing     Next Hop        Bytes
Label  Label       or ID              Interface                    Switched
------ ----------- ------------------ ------------ --------------- ------------
24008  Pop         No ID              srte_c_100_e point2point     0
     Updated: Jul 12 07:43:42.409
     Version: 18, Priority: 2
     Label Stack (Top -> Bottom): { Unlabelled Imp-Null }
     NHID: 0x0, Encap-ID: N/A, Path idx: 0, Backup path idx: 0, Weight: 0
     MAC/Encaps: 0/0, MTU: 0
     Outgoing Interface: srte_c_100_ep_10.255.0.3 (ifhandle 0x00000014)
     Packets Switched: 0


RP/0/RP0/CPU0:PE1#show mpls forwarding labels 24011 detail
Tue Jul 12 11:17:27.943 JST
Local  Outgoing    Prefix             Outgoing     Next Hop        Bytes
Label  Label       or ID              Interface                    Switched
------ ----------- ------------------ ------------ --------------- ------------
24011  Pop         No ID              srte_c_200_e point2point     0
     Updated: Jul 12 07:43:37.156
     Version: 14, Priority: 2
     Label Stack (Top -> Bottom): { Unlabelled Imp-Null }
     NHID: 0x0, Encap-ID: N/A, Path idx: 0, Backup path idx: 0, Weight: 0
     MAC/Encaps: 0/0, MTU: 0
     Outgoing Interface: srte_c_200_ep_10.255.0.3 (ifhandle 0x0000001c)
     Packets Switched: 0

次に PE2 から PE1 の経路について確認します。

PE2 にて VRF routing table を確認したところ、SR Policy が適用された経路となっていないことが確認できます。

user@PE2> show route table 100.inet.0

100.inet.0: 3 destinations, 3 routes (3 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

192.168.0.0/24     *[BGP/170] 00:00:14, MED 0, localpref 100, from 10.255.0.1
                      AS path: ?, validation-state: unverified
                       to 10.0.2.1 via ge-0/0/0.0, Push 24012, Push 16001(top)
                    >  to 10.0.3.1 via ge-0/0/1.0, Push 24012, Push 16001(top)
192.168.1.0/24     *[Direct/0] 00:37:16
                    >  via ge-0/0/2.0
192.168.1.254/32   *[Local/0] 00:37:16
                       Local via ge-0/0/2.0

user@PE2> show route table 200.inet.0

200.inet.0: 3 destinations, 3 routes (3 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

192.168.0.0/24     *[BGP/170] 00:00:23, MED 0, localpref 100, from 10.255.0.1
                      AS path: ?, validation-state: unverified
                       to 10.0.2.1 via ge-0/0/0.0, Push 24013, Push 16001(top)
                    >  to 10.0.3.1 via ge-0/0/1.0, Push 24013, Push 16001(top)
192.168.1.0/24     *[Direct/0] 00:37:25
                    >  via ge-0/0/3.0
192.168.1.254/32   *[Local/0] 00:37:25
                       Local via ge-0/0/3.0

Junos は BGP 経路の nexthop 解決をする際にデフォルトで color を考慮しません。 次の設定を追加することで color を考慮して nexthop を解決するようになります。

set policy-options policy-statement BGP-IMPORT-POLICY term VRF-100 from community VRF100-65000-RT
set policy-options policy-statement BGP-IMPORT-POLICY term VRF-100 then accept
set policy-options policy-statement BGP-IMPORT-POLICY term VRF-100 then resolution-map map1
set policy-options policy-statement BGP-IMPORT-POLICY term VRF-200 from community VRF200-65000-RT
set policy-options policy-statement BGP-IMPORT-POLICY term VRF-200 then accept
set policy-options policy-statement BGP-IMPORT-POLICY term VRF-200 then resolution-map map1
set policy-options resolution-map map1 mode ip-color
set protocols bgp group ibgp import BGP-IMPORT-POLICY

改めて PE2 にて、 SR policy が適用された経路が採用されていることが確認できます。

user@PE2> show route table 100.inet.0

100.inet.0: 3 destinations, 3 routes (3 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

192.168.0.0/24     *[BGP/170] 02:45:08, MED 0, localpref 100, from 10.255.0.1
                      AS path: ?, validation-state: unverified
                    >  to 10.0.3.1 via ge-0/0/1.0, Push 24012, Push 16001, Push 16002(top)
192.168.1.0/24     *[Direct/0] 03:27:59
                    >  via ge-0/0/2.0
192.168.1.254/32   *[Local/0] 03:27:59
                       Local via ge-0/0/2.0

user@PE2> show route table 200.inet.0

200.inet.0: 3 destinations, 3 routes (3 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

192.168.0.0/24     *[BGP/170] 02:45:23, MED 0, localpref 100, from 10.255.0.1
                      AS path: ?, validation-state: unverified
                    >  to 10.0.2.1 via ge-0/0/0.0, Push 24013, Push 16001, Push 16004(top)
192.168.1.0/24     *[Direct/0] 03:28:14
                    >  via ge-0/0/3.0
192.168.1.254/32   *[Local/0] 03:28:14
                       Local via ge-0/0/3.0

疎通確認

PE1 と PE2 から VPN 経路の traceroute を行い、TE によって経路制御されていることを確認します。

PE1 → PE2

RP/0/RP0/CPU0:PE1#traceroute 192.168.1.254 vrf 100
Wed Jul 13 19:14:09.683 JST

Type escape sequence to abort.
Tracing the route to 192.168.1.254

 1  10.0.0.2 [MPLS: Labels 16004/16003/16 Exp 0] 17 msec  3 msec  9 msec
 2  10.0.4.2 [MPLS: Labels 16003/16 Exp 0] 3 msec  5 msec  12 msec
 3  192.168.1.254 3 msec  10 msec  4 msec

RP/0/RP0/CPU0:PE1#traceroute 192.168.1.254 vrf 200
Wed Jul 13 19:17:27.790 JST

Type escape sequence to abort.
Tracing the route to 192.168.1.254

 1  10.0.1.2 [MPLS: Labels 16002/16003/17 Exp 0] 13 msec  13 msec  5 msec
 2  10.0.4.1 [MPLS: Labels 16003/17 Exp 0] 12 msec  14 msec  5 msec
 3  192.168.1.254 11 msec  15 msec  5 msec

PE2 → PE1

user@PE2> traceroute 192.168.0.254 routing-instance 100
traceroute to 192.168.0.254 (192.168.0.254), 30 hops max, 52 byte packets
 1  10.0.3.1 (10.0.3.1)  3.025 ms  2.434 ms  39.277 ms
     MPLS Label=16002 CoS=0 TTL=1 S=0
     MPLS Label=16001 CoS=0 TTL=1 S=0
     MPLS Label=24012 CoS=0 TTL=1 S=1
 2  10.0.4.1 (10.0.4.1)  11.748 ms  2.363 ms  2.796 ms
     MPLS Label=16001 CoS=0 TTL=1 S=0
     MPLS Label=24012 CoS=0 TTL=2 S=1
 3  10.0.0.1 (10.0.0.1)  11.454 ms

user@PE2> traceroute 192.168.0.254 routing-instance 200
traceroute to 192.168.0.254 (192.168.0.254), 30 hops max, 52 byte packets
 1  10.0.2.1 (10.0.2.1)  3.372 ms  2.207 ms  2.184 ms
     MPLS Label=16004 CoS=0 TTL=1 S=0
     MPLS Label=16001 CoS=0 TTL=1 S=0
     MPLS Label=24013 CoS=0 TTL=1 S=1
 2  10.0.4.2 (10.0.4.2)  2.474 ms  2.358 ms  2.206 ms
     MPLS Label=16001 CoS=0 TTL=1 S=0
     MPLS Label=24013 CoS=0 TTL=2 S=1
 3  10.0.1.1 (10.0.1.1)  11.859 ms

このように、Single-AS SR-MPLS で構成されたネットワークでの TE が実現できました。

まとめ

本記事では、SR における TE の実現に利用される SR Policy について説明し、Multi-vendor 環境における Single-AS SR-MPLS での Color-Based Steering の検証結果を紹介しました。次回の記事では、Multi-AS における TE について紹介予定です。

(2022/08/08 追記) 公開しました:[Multi-AS Segment Routing 検証連載 #5] Traffic Engineering in Multi-AS

© NTT Communications Corporation All Rights Reserved.