サマリ
- 様々な 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 の適用ができます。
本節の検証では、以下の図のように 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 指定において相互運用性の制限がみえました。