サマリ
- PCEP を用いた 外部 PCE から SR OS へのパス設定に成功
この記事は Multi-AS Segment Routing 検証連載の第 19 回です。過去の記事一覧は こちら にあります。
概要
イノベーションセンターの田島です。本連載のような Segment Routing 関連の技術検証や、自動化による高度な運用を開発しています。
本記事では SR OS を Path Computation Client (PCC) として設定し、転送経路を示すパス (Label Switched Path; LSP) を外部から設定できるか検証します。 パス設定には標準プロトコルである Path Computation Element Communication Protocol (PCEP) を用いて、複数種類の Path Computation Element (PCE) が利用可能なことを確かめます。
ルーター外部からパスを設定する目的や、 PCEP に関する PCE や PCC の動作概要などの前提知識は、過去の 第 10 回の記事 に詳細がありますのでご参照ください。 過去に複数の PCE を検証した 第 11 回の記事 と同様に L3VPN の経路制御を検証します。 ただし、SR OS では Color を指定したパスの設定ができないため、 本記事では Color ごとのパス選択ではなく PE 単位でのパス設定を行います。 2023 年 11 月現在の最新 SR OS である 23.10 でも Color 指定は未対応のようです。
検証
本記事での検証は PE 間の転送経路を PCE から設定し、VPN 通信がその経路に従って転送されることを確認します。 PCE は IOS XR SR-PCE 等も利用可能ですが、今回は我々で開発している Pola PCE を使用します。なお詳細は割愛しますが IOS XR SR-PCE でも本記事と同等の機能検証が確認されました。
次の図のような検証トポロジーで実施します。
用いたコンポーネントのバージョンは下記の通りです。
- SR OS: 22.7.R1
- Pola PCE: 1.2.1
L3VPN の設定は 第 12 回の記事 で既出のため、設定済みとします。 Pola PCE の導入や起動に関しては Pola PCE のレポジトリ中の Getting Started with Pola PCE が参考になります。
検証は次の手順で進めます。
- SR OS での PCC 設定と PCEP セッション確立
- SR OS での LSP テンプレートの作成
- Pola PCE でのパス設定
- SR OS でパス確認と疎通確認
1. SR OS での PCC 設定と PCEP セッション確立
rt01 (SR OS) と Pola PCE の間で PCEP セッションを確立させます。
Pola PCE は下記の設定で起動済みとします。
user@pola:~$ cat /etc/polad/polad.yaml global: pcep: address: "10.0.255.253" port: 4189 grpc-server: address: "127.0.0.1" port: 50052 log: path: "/var/log/pola/" name: "polad.log" ted: enable: false
rt01 では下記の設定を入れ、 PCE とのセッションを有効にします。
[ro:/configure] A:admin@rt01# /info router pcep pcc { admin-state enable local-address 10.255.0.1 peer 10.0.255.253 { admin-state enable } }
PCEP セッションが確立したことを確認します。
Pola PCE 側
user@pola:~$ pola session --port=50052 sessionAddr(0): 10.255.0.1
rt01 (SR OS) 側
[ro:/configure] A:admin@rt01# /show router pcep pcc detail =============================================================================== Path Computation Element Protocol (PCEP) Path Computation Client (PCC) Info =============================================================================== Admin Status : Up Oper Status : Up Unknown Msg Limit : 10 msg/min Keepalive Interval : 30 seconds DeadTimer Interval : 120 seconds Capabilities List : stateful-delegate stateful-pce segment-rt-path rsvp- path pce-initiated-lsp p2mp p2mp-delegate p2mp- initiate association multipath Address : 10.255.0.1 Address Ipv6 : (Unspecified) Report Path Constraints: True Redelegation Interval : 90 seconds State Interval : 180 seconds State Timer Action : remove Max SR-TE PCE Init Lsps: 8191 Open Wait Timer : 60 seconds Keep Wait Timer : 60 seconds Sync Timer : 60 seconds Request Timer : 120 seconds Connection Timer : 60 seconds Allow Negotiations : False Max Sessions : 1 Max Unknown Req : 1000 ===============================================================================
これで Pola PCE と rt01 の間でパスの情報を送受信できるようになりました。
2. SR OS での LSP テンプレートの作成
SR OS では PCEP 経由で受け取った LSP を SR-TE の LSP として扱います。
機能の有効化には pce-init-lsp sr-te
フラグを設定します。
その上で PCEP にて受け取った LSP をインスタンス化するために lsp-template
を用意します。
設定をまとめると次の通りです。
[gl:/configure] A:admin@rt01# /info router mpls admin-state enable path "pce-init" { admin-state enable } lsp-template "pce-init-template" { admin-state enable type p2p-sr-te-pce-init default-path "pce-init" pce-report true template-id default max-sr-labels { additional-frr-labels 2 } } pce-init-lsp { sr-te { admin-state enable } }
これでパス設定の準備ができました。
3. Pola PCE でのパス設定
Pola PCE でパス定義を読み込み、 rt01 へ送信します。 パスの定義は下記の通りです。
user@pola:~$ cat policy.yaml srPolicy: name: PE1-PE3 pcepSessionAddr: 10.255.0.1 srcAddr: 10.255.0.1 dstAddr: 10.255.0.3 color: 100 segmentList: - sid: 16002 nai: 10.255.0.2 - sid: 16003 nai: 10.255.0.3
pola sr-policy add
コマンドを利用し policy を追加することで上記のパスが送信されます。
user@pola:~$ pola sr-policy add -f policy.yaml --no-link-state --port 50052 success!
Pola PCE 側で設定済みのパスがあることを確認できます。 こちらは PCC 側が受領した応答なので、 PCC 側で反映された情報が表示されます。 ここで前述の通り SR OS で Color は無視され 0 となっていることが確認できます。
user@pola:~$ pola sr-policy list --port 50052 Session: 10.255.0.1 PolicyName: PE1-PE3 SrcAddr: 10.255.0.1 DstAddr: 10.255.0.3 Color: 0 Preference: 0 SegmentList: 16002 -> 16003
4. SR OS でパス確認と疎通確認
rt01 では Pola PCE から受信したパスの情報を確認し、それが使用されているか確かめます。
まず SR-TE の LSP として途中経路とともに登録されているかを確認します。 送信元ルーターと、送信先ルーター、途中の経路が確認できます。
[gl:/configure router "Base" mpls] A:admin@rt01# /show router mpls sr-te-lsp =============================================================================== MPLS SR-TE LSPs (Originating) =============================================================================== LSP Name Tun Protect Adm Opr To Id Path ------------------------------------------------------------------------------- PE1-PE3 16390 N/A Up Up 10.255.0.3 ------------------------------------------------------------------------------- LSPs : 1 ===============================================================================
[ro:/configure] A:admin@rt01# /show router mpls sr-te-lsp path "PE1-PE3" detail =============================================================================== MPLS SR-TE LSP PE1-PE3 Path (Detail) =============================================================================== Legend : S - Strict L - Loose A-SID - Adjacency SID N-SID - Node SID + - Inherited =============================================================================== ------------------------------------------------------------------------------- LSP SR-TE PE1-PE3 Path pce-init ------------------------------------------------------------------------------- LSP Name : PE1-PE3 Path LSP ID : 55808 From : 10.255.0.1 To : 10.255.0.3 Admin State : Up Oper State : Up Path Name : pce-init Path Type : Primary Path Admin : Up Path Oper : Up Path Up Time : 0d 00:52:54 Path Down Time : 0d 00:00:00 Retry Limit : 0 Retry Timer : 30 sec Retry Attempt : 0 Next Retry In : 0 sec PathCompMethod : pce OperPathCompMethod: pce MetricType : N/A Oper MetricType : N/A LocalSrProt : preferred Oper LocalSrProt : preferred LabelStackRed : Disabled Oper LabelStackRed: Disabled Bandwidth : No Reservation Oper Bandwidth : 0 Mbps Hop Limit : 255 Oper HopLimit : 255 Setup Priority : 0 Oper SetupPriority: 0 Hold Priority : 0 Oper HoldPriority : 0 Inter-area : N/A PCE Updt ID : 1 PCE Updt State : Success PCE Upd Fail Code: noError PCE Report : Enabled Oper PCE Report : Enabled PCE Control : Enabled Oper PCE Control : Enabled Include Groups : Oper IncludeGroups: None None Exclude Groups : Oper ExcludeGroups: None None Last Resignal : n/a IGP/TE Metric : N/A Oper Metric : 16777215 Oper MTU : 9186 Path Trans : 1 Degraded : False Failure Code : noError Failure Node : n/a Explicit Hops : No Hops Specified Actual Hops : n/a Record Label : 16002 -> n/a Record Label : 16003 BFD Configuration and State Template : None Ping Interval : N/A Enable : False State : notApplicable ReturnPathLabel : None WaitForUpTimer : 4 sec OperWaitForUpTimer: 0 sec WaitForUpTmLeft : 0 StartFail Rsn : N/A ===============================================================================
次にこの SR-TE LSP が SR OS のトンネルとしても反映されていることを確認します。 rt03 である 10.255.0.3 向け経路で有効になっています。
[ro:/configure] A:admin@rt01# /show router fp-tunnel-table 1 =============================================================================== IPv4 Tunnel Table Display Legend: label stack is ordered from bottom-most to top-most B - FRR Backup =============================================================================== Destination Protocol Tunnel-ID Lbl/SID NextHop Intf/Tunnel Lbl/SID (backup) NextHop (backup) ------------------------------------------------------------------------------- 10.0.1.2/32 SR 524290 3 10.0.1.2 1/1/c1/1:0 10.0.2.2/32 SR 524289 3 10.0.2.2 1/1/c2/1:0 10.255.0.2/32 SR-ISIS-0 524291 3 10.0.1.2 1/1/c1/1:0 10.255.0.3/32 SR-ISIS-0 524292 3 10.0.2.2 1/1/c2/1:0 10.255.0.3/32 SR-TE 671751 16003 10.255.0.2 SR ------------------------------------------------------------------------------- Total Entries : 5 ------------------------------------------------------------------------------- ===============================================================================
最後に VPN の経路を確認することで、今回設定した LSP で指定されている経路を通って通信できていることが確認できます。
[ro:/configure] A:admin@rt01# traceroute 192.168.1.254 router-instance "100" traceroute to 192.168.1.254, 30 hops max, 40 byte packets 1 10.0.1.2 (10.0.1.2) 2.59 ms 5.80 ms 2.03 ms 2 10.0.3.1 (10.0.3.1) 3.10 ms 2.78 ms 8.03 ms
まとめ
本記事では、SR OS を PCC として使用する場合の PCEP によるパス設定の検証結果を紹介しました。 Color に対応していないため制御できる粒度は大きいですが、各 PCE でのパス設定が可能でした。
(2024/02/29 追記) 新しい記事を公開しました:[Multi-AS Segment Routing 検証連載 #20] Multi-AS の SR-MPLS + VPNv4 環境における AS 間での TE