[Multi-AS Segment Routing 検証連載 #11] PCE 実装の検証

サマリ

  • 様々な Path Computation Element(PCE)実装を用いた Explicit Path の SR Policy 設定検証

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

概要

イノベーションセンターの竹中です。 本記事では私たちの検証環境において様々な PCE 実装を用いた SR Policy の発行方法を検証します。 4 つの PCE の検証手順を各章で記載しますが、それぞれの PCE の環境準備手順と初期設定、PCC との間で PCEP Session を確立するまでの設定は省略します。 つまり PCE と PCC 間で PCEP Session が確立した状態から、特定の経路を指定する SR Policy の発行と確認、さらに VPN 通信で当該経路が使用されていることを確認します。

なお、詳細は各章で後述しますが、 PCEP で BGP Color を扱う仕様は Internet-Draft として現在 ( 2022 年 11 月 ) も議論中です。 そのため一部 PCE においては Multi-vendor での SR Policy の発行に相互運用できない部分があったため、PCE と PCC の組み合わせは限定的になっています。 共通の検証環境を示した後、それぞれの PCE について検証します。

検証

検証構成

以下のトポロジーで検証します。

各ルーターの製品とバージョンは以下の通りです。

  • rt01: ASR9901(IOS XR 7.6.1)
  • rt02: MX204(Junos 22.1R1.10)
  • rt03: ASR9901(IOS XR 7.5.1)
  • rt04: MX204(Junos 21.4R1.12)
  • rt05: Cisco 8201(IOS XR 7.5.1)
  • rt06: PTX10001-36MR(Junos 21.2R1.15-EVO)
  • rt07: ASR9902(IOS XR 7.6.1)
  • rt08: MX204(Junos 21.4R1.12)

各 PCE は PCC である rt01、rt02 それぞれと PCEP Session を確立し、 PCC に SR Policy を追加します。rt01 と rt02 間の最短パスは直結の経路ですが、今回は rt01(IOS XR)に対しては rt01 -> rt05 -> rt06 -> rt02 となる経路を、rt02(Junos)に対しては rt02 -> rt06 -> rt05 -> rt01 となる経路を各 PCE で設定します。

なお rt04、rt08 は本検証では利用していませんが、検証環境上の都合でトポロジー図に記載しています。

また、事情により rt06 を通る経路の traceroute は当該ホップの結果で * * * と表示されています。

IOS XR SR-PCE

IOS XR は SR Policy を管理する PCE(SR-PCE)として利用可能であり、対象とする PCC や SR Policy を設定できます。

本節の検証では以下の図のように、rt03 を IOS XR SR-PCE として利用します。rt01(IOS XR)と PCEP Session を張り、SR Policy を発行します。

概要でも軽く言及しましたが、本検証に PCE として用いた IOS XR 7.5.1 は SR Policy の Color の指定を Vendor Information object 内で Cisco 社独自実装の PCEP TLV を用いて行っています。 Junos PCC では当該 TLV を解析できないため、rt02 を PCC とした検証は省略しています。

PCEP Session の確認

PCEP Session の確認は show コマンドで行います。

RP/0/RSP0/CPU0:rt03#show pce ipv4 peer
Wed Nov  2 19:28:15.630 JST

PCE's peer database:
--------------------
Peer address: 10.255.1.1
  State: Up
  Capabilities: Stateful, Segment-Routing, Update, Instantiation

SR Policy の発行

pce コマンド配下に SR Policy の定義を追加することで、PCC へ SR Policy を発行できます。

RP/0/RSP0/CPU0:rt03(config-pce-sr-te-pp-info)#show commit changes diff
Wed Nov  2 19:34:01.914 JST
Building configuration...
!! IOS XR Configuration 7.5.1
   pce
+   segment-routing
+    traffic-eng
+     segment-list name XR-PCE-PATH
+      index 1 mpls label 16005
+      index 2 mpls label 16006
+      index 3 mpls label 16002
      !
+     peer ipv4 10.255.1.1
+      policy IOSXR-SR-PCE
+       color 100 end-point ipv4 10.255.1.2
+       candidate-paths
+        preference 100
+         explicit segment-list XR-PCE-PATH
          !
         !
        !
       !
      !
     !
    !
   !
end

PCE で発行済 SR Policy の確認

PCEP Session と同様に、show コマンドで 発行済 SR Policy の簡易情報が確認できます。 SR policy が up していることを確認します。

RP/0/RSP0/CPU0:rt03#show pce segment-routing traffic-eng policy
Wed Nov  2 20:49:50.364 JST


PCE's policy database:
----------------------

PCC Address: 10.255.1.1
  Color: 100, Endpoint: 10.255.1.2
    Name: srte_c_100_ep_10.255.1.2
    Candidate-paths:
      Symbolic-name: IOSXR-SR-PCE (Active)
        PLSP-ID: 1

PCC で受けとった SR Policy の確認

PCC 側でも SR Policy を受け取っていること、また up していることを確認します。

RP/0/RSP0/CPU0:rt01#show segment-routing traffic-eng policy
Fri Nov 11 18:37:54.029 JST

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

Color: 100, End-point: 10.255.1.2
  Name: srte_c_100_ep_10.255.1.2
  Status:
    Admin: up  Operational: up for 00:00:44 (since Nov 11 18:37:10.075)
  Candidate-paths:
    Preference: 100 (PCEP) (active)
      Name: IOSXR-SR-PCE
      Requested BSID: dynamic
      PCC info:
        Symbolic name: IOSXR-SR-PCE
        PLSP-ID: 6
        Protection Type: protected-preferred
        Maximum SID Depth: 10
      Dynamic (pce 10.255.1.3) (valid)
        Metric Type: TE,   Path Accumulated Metric: 0
          16005 [Prefix-SID, 10.255.1.5]
          16006 [Prefix-SID, 10.255.1.6]
          16002 [Prefix-SID, 10.255.1.2]
  Attributes:
    Binding SID: 24018
    Forward Class: Not Configured
    Steering labeled-services disabled: no
    Steering BGP disabled: no
    IPv6 caps enable: yes
    Invalidation drop enabled: no
    Max Install Standby Candidate Paths: 0

traceroute で経路確認

rt01 の VRF 100 が持つネットワークから rt02 の VRF 100 が持つネットワークへ traceroute を行います。 発行した SR Policy に従った経路となっていることが確認できます。

RP/0/RSP0/CPU0:rt01#traceroute 192.168.1.254 vrf 100
Wed Nov  2 20:43:30.269 JST

Type escape sequence to abort.
Tracing the route to 192.168.1.254

 1  10.1.1.2 [MPLS: Labels 16006/16002/18 Exp 0] 3 msec  2 msec  4 msec
 2   *  *  *
 3  192.168.1.254 2 msec  1 msec  1 msec

Cisco Crosswork Network Controller (CNC)

CNC は Cisco 社が提供する PCE を含むソフトウェアスイートであり、GUI でトポロジーの確認や SR Policy などのパス情報の管理ができます。

本節の検証では、以下の図のように CNC を設置します。rt01(IOS XR)と PCEP Session を張り、SR Policy を発行します。

IOS XR SR-PCE と同様に、現在(2022 年 11 月)CNC は SR Policy の Color の指定を Vendor Information object 内で Cisco 社独自実装の PCEP TLV を用いて行っています。 Junos PCC では当該 TLV を解析できないため、rt02 を PCC とした検証は省略しています。

PCEP Session の確認

CNC の構成の一部として、IGP / BGP / PCEP などのプロトコルを用いてネットワーク機器と通信するための Data Gateway が存在します。PCEP Session の確認は Data Gateway へログイン後、CLI コマンドにて行います。

RP/0/RP0/CPU0:sr-pce#show pce ipv4 peer
Wed Nov  9 16:34:23.555 JST

PCE's peer database:
--------------------
Peer address: 10.255.1.1
  State: Up
  Capabilities: Stateful, Segment-Routing, Update, Instantiation

SR Policy の発行

GUI にて、以下の方法で SR Policy を追加できます。

Services & Traffic Engineering > Traffic Engineering を選択します。

Create > PCE Init を選択し、SR Policy 作成画面を開きます。

SR Policy の Headend、Endpoint、Color をそれぞれ選択します。

経由するルーターと利用する SID の組み合わせを選択し、Segment List を作成します。

Provision を選択することで、SR Policy が発行されます。

PCE で発行済 SR Policy の確認

GUI から確認できます。SID をもとにした経路表示や、IGP Shortest Path を考慮した経路の表示が可能です。

PCC で受けとった SR Policy の確認

PCC 側でも SR Policy を受け取っていること、また up していることを確認します。

RP/0/RSP0/CPU0:rt01#show segment-routing traffic-eng policy
Mon Nov 14 19:27:00.420 JST

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

Color: 100, End-point: 10.255.1.2
  Name: srte_c_100_ep_10.255.1.2
  Status:
    Admin: up  Operational: up for 00:07:11 (since Nov 14 19:19:49.551)
  Candidate-paths:
    Preference: 100 (PCEP) (active)
      Name: CNC-Cisco
      Requested BSID: dynamic
      PCC info:
        Symbolic name: CNC-Cisco
        PLSP-ID: 8
        Protection Type: protected-preferred
        Maximum SID Depth: 10
      Dynamic (pce 10.61.0.248) (valid)
        Metric Type: TE,   Path Accumulated Metric: 0
          16005 [Prefix-SID, 10.255.1.5]
          16006 [Prefix-SID, 10.255.1.6]
          16002 [Prefix-SID, 10.255.1.2]
  Attributes:
    Binding SID: 24013
    Forward Class: Not Configured
    Steering labeled-services disabled: no
    Steering BGP disabled: no
    IPv6 caps enable: yes
    Invalidation drop enabled: no
    Max Install Standby Candidate Paths: 0

traceroute で経路確認

rt01 の VRF 100 が持つネットワークから rt02 の VRF 100 が持つネットワークへ traceroute を行います。 発行した SR Policy に従った経路となっていることが確認できます。

RP/0/RSP0/CPU0:ar-rt01#traceroute 192.168.1.254 vrf 100
Wed Nov  9 17:46:10.915 JST

Type escape sequence to abort.
Tracing the route to 192.168.1.254

 1  10.1.1.2 [MPLS: Labels 16006/16002/18 Exp 0] 4 msec  4 msec  4 msec
 2   *  *  *
 3  192.168.1.254 2 msec  1 msec  1 msec

Paragon Pathfinder

Paragon Pathfinder(以下、 Pathfinder)は Juniper 社が提供する PCE であり、GUI でトポロジーの確認や SR Policy などのパス情報の管理ができます。

本節の検証では、以下の図のように Pathfinder を設置します。rt02(Junos)と PCEP Session を張り、SR Policy を発行します。 なお検証環境の都合上、本節のみ IP アドレスが変わっていることにご留意ください。

現在(2022 年 11 月)Pathfinder は SR Policy の Color の指定を Association object 内で Juniper 社独自実装の PCEP TLV を用いて行っています。 IOS XR PCC では当該 TLV を解析できないため、rt01 を PCC とした検証は省略しています。

PCEP Session の確認

画面下部の Node タブから、各ルーターの情報を確認できます。PCC である rt02 との間で PCEP Session が Up していることを確認します。

SR Policy の発行

GUI にて、以下の方法で SR Policy を追加できます。

画面下部の Tunnel タブへ切り替えた後 Add ボタンを選択し、SR Policy を発行します。

Properties タブで SR Policy の Provisioning Method(PCEP)、SR Policy 名、headend、Tailend をそれぞれ選択します。 また、Provisioning Type は SR を選択します。

Path タブを選択し、経路を選択します。 Loose Source Routing で rt06、rt05、rt01をそれぞれ指定します。

Submit を選択することで、Provision LSP 画面が閉じ、SR Policy が発行されます。

PCE で発行済 SR Policy の確認

GUI から SR Policy の状態を確認できます。

Tunnel タブに SR Policy が追加され、Op Status が Active となることを確認します。

PCC で受けとった SR Policy の確認

user@rt02> show spring-traffic-engineering lsp name Paragon-Juniper detail
Name: Paragon-Juniper
  Tunnel-source: Path computation element protocol(PCEP)
  Tunnel Forward Type: SRMPLS
  To: 10.255.2.7
  State: Up
    Path Status: Up
    Outgoing interface: et-0/0/0.0
    Auto-translate status: Disabled Auto-translate result: 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: IPv4 Adjacency ID, 10.2.11.2 -> 10.2.11.1
          SID type: 20-bit label, Value: 99
        Hop 2 (Strict):
          NAI: IPv4 Adjacency ID, 10.2.7.2 -> 10.2.7.1
          SID type: 20-bit label, Value: 65
        Hop 3 (Strict):
          NAI: IPv4 Adjacency ID, 10.2.5.1 -> 10.2.5.2
          SID type: 20-bit label, Value: 24005


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

traceroute で経路確認

rt02 の VRF 100 が持つネットワークから rt01 の VRF 100 が持つネットワークへ traceroute を行います。 発行した SR Policy に従った経路となっていることが確認できます。

user@rt02> 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  et-0-1-4.rt06 (10.2.11.1)  1.284 ms  0.929 ms  0.844 ms
     MPLS Label=65 CoS=0 TTL=1 S=0
     MPLS Label=24005 CoS=0 TTL=1 S=0
     MPLS Label=24014 CoS=0 TTL=1 S=1
 2  HundredGigE0-0-1-2.rt05 (10.2.7.1)  1.117 ms  1.127 ms  0.811 ms
     MPLS Label=24005 CoS=0 TTL=1 S=0
     MPLS Label=24014 CoS=0 TTL=2 S=1
 3  HundredGigE0-0-0-20.rt01 (10.2.5.2)  6.980 ms *  3.839 ms

Pola PCE

Pola PCE は、 私(竹中)と三島が開発し OSS として公開中の CLI ベースの SR PCE です。Pola PCE は IOS XR および Junos どちらに対しても yaml ファイルで記述した SR Policy の適用ができます。

https://nttcom.github.io/pola/

本節の検証では、以下の図のように Pola PCE 用サーバーを設置します。rt01(IOS XR)・ rt02(Junos) と PCEP Session を張り、各 PCC へ SR Policy を発行します。

PCEP Session の確認

pola コマンドを用いて確認できます。

user@pce:~$ pola session
sessionAddr(0): 10.255.1.2
sessionAddr(1): 10.255.1.1

SR Policy の発行

作成する SR Policy の情報を yaml ファイルに記載し、pola コマンドを用いて発行します。

rt01

  • SR Policy の定義
asn: 65001
srPolicy:
    pcepSessionAddr: 10.255.1.1
    name: Pola-PCE-Cisco
    srcRouterId: 0000.0aff.0101
    dstRouterId: 0000.0aff.0102
    color: 100
    type: explicit
    segmentList:
        - sid: 16005
        - sid: 16006
        - sid: 16002
  • pola コマンド
user@pce:~$ pola sr-policy add -f blog11_cisco.yaml
success!

rt02

  • SR Policy の定義
asn: 65001
srPolicy:
    pcepSessionAddr: 10.255.1.2
    name: Pola-PCE-Juniper
    srcRouterId: 0000.0aff.0102
    dstRouterId: 0000.0aff.0101
    color: 100
    type: explicit
    segmentList:
        - sid: 16006
        - sid: 16005
        - sid: 16001
  • pola コマンド
user@pce:~$ pola sr-policy add -f blog11_juniper.yaml
success!

PCE で発行済 SR Policy の確認

pola コマンドで発行済み SR Policy の情報が確認できます。

user@pce:~$ pola sr-policy list
LSP(0):
  PcepSessionAddr: 10.255.1.1
  PolicyName: Pola-PCE-Cisco
  SrcAddr: 10.255.1.1
  DstAddr: 10.255.1.2
  Color: 100
  Preference: 100
  DstAddr: 10.255.1.2
  SegmentList: 16005 -> 16006 -> 16002

LSP(1):
  PcepSessionAddr: 10.255.1.2
  PolicyName: Pola-PCE-Juniper
  SrcAddr: 10.255.1.2
  DstAddr: 10.255.1.1
  Color: 100
  Preference: 100
  DstAddr: 10.255.1.1
  SegmentList: 16006 -> 16005 -> 16001

PCC で受けとった SR Policy の確認

PCC 側でも SR Policy を受け取っていること、また up していることを確認します。

rt01

RP/0/RSP0/CPU0:rt01#show segment-routing traffic-eng policy
Fri Nov 11 20:33:37.079 JST

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

Color: 100, End-point: 10.255.1.2
  Name: srte_c_100_ep_10.255.1.2
  Status:
    Admin: up  Operational: up for 00:00:20 (since Nov 11 20:33:17.017)
  Candidate-paths:
    Preference: 100 (PCEP) (active)
      Name: Pola-PCE-Cisco
      Requested BSID: dynamic
      PCC info:
        Symbolic name: Pola-PCE-Cisco
        PLSP-ID: 7
        Protection Type: unprotected-preferred
        Maximum SID Depth: 10
      Dynamic (pce 10.99.0.254) (valid)
        Metric Type: TE,   Path Accumulated Metric: 0
          16005 [Prefix-SID, 10.255.1.5]
          16006 [Prefix-SID, 10.255.1.6]
          16002 [Prefix-SID, 10.255.1.2]
  Attributes:
    Binding SID: 24013
    Forward Class: Not Configured
    Steering labeled-services disabled: no
    Steering BGP disabled: no
    IPv6 caps enable: yes
    Invalidation drop enabled: no
    Max Install Standby Candidate Paths: 0

rt02

user@rt02> show spring-traffic-engineering lsp detail
Name: Pola-PCE-Juniper
  Tunnel-source: Path computation element protocol(PCEP)
  Tunnel Forward Type: SRMPLS
  To: 10.255.1.1-100<c>
  State: Up
    Path Status: NA
    Outgoing interface: NA
    Auto-translate status: Disabled Auto-translate result: 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: IPv4 Node ID, Node address: 10.255.1.6
          SID type: 20-bit label, Value: 16006
        Hop 2 (Strict):
          NAI: IPv4 Node ID, Node address: 10.255.1.5
          SID type: 20-bit label, Value: 16005
        Hop 3 (Strict):
          NAI: IPv4 Node ID, Node address: 10.255.1.1
          SID type: 20-bit label, Value: 16001


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

traceroute で経路確認

rt01 の VRF 100 が持つネットワークと rt02 の VRF 100 が持つネットワークで双方に traceroute を行います。 発行した SR Policy に従った経路となっていることが確認できます。

RP/0/RSP0/CPU0:rt01#traceroute 192.168.1.254 vrf 100
Wed Nov  2 20:43:30.269 JST

Type escape sequence to abort.
Tracing the route to 192.168.1.254

 1  10.1.1.2 [MPLS: Labels 16006/16002/18 Exp 0] 3 msec  2 msec  4 msec
 2   *  *  *
 3  192.168.1.254 2 msec  1 msec  1 msec


user@rt02> traceroute 192.168.0.254 routing-instance 100 no-resolve
traceroute to 192.168.0.254 (192.168.0.254), 30 hops max, 52 byte packets
 1  * * *
 2  10.1.10.1  2.602 ms  4.062 ms  1.779 ms
     MPLS Label=16001 CoS=0 TTL=1 S=0
     MPLS Label=24009 CoS=0 TTL=2 S=1
 3  * 10.1.1.1  3.826 ms *

まとめ

本記事では様々な PCE を用いて PCE から PCC へ SR Policy を発行する動作を検証しました。 特に Color 指定において相互運用性の制限がみえました。

© NTT Communications Corporation All Rights Reserved.