[Multi-AS Segment Routing 検証連載 #19] SR OS での PCE を用いた LSP Provisioning

サマリ

  • 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 が参考になります。

検証は次の手順で進めます。

  1. SR OS での PCC 設定と PCEP セッション確立
  2. SR OS での LSP テンプレートの作成
  3. Pola PCE でのパス設定
  4. 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

© NTT Communications Corporation 2014