MPLS セグメント ルーティング OAM の設定

この章では、マルチプロトコル ラベル スイッチング(MPLS)セグメント ルーティング OAM 機能について説明します。

MPLS セグメント ルーティング OAM について

MPLS セグメント ルーティング(SR)は、Cisco Nexus 9000 シリーズ スイッチに展開されています。MPLS セグメント ルーティング(SR)の展開に伴い、セグメント ルーティング ネットワークの設定ミスや障害を解決するために、いくつかの診断ツールが必要になります。セグメント ルーティング保守運用管理(OAM)は、ネットワークの障害検出とトラブルシューティングに役立ちます。これを使用することで、サービス プロバイダーはラベル スイッチド パス(LSP)をモニタしてフォワーディングの問題を迅速に特定できます。

MPLS SR OAM は、診断目的で 2 つの主要な機能を提供します。

  1. MPLS ping

  2. MPLS Traceroute

セグメント ルーティング OAM 機能は、次の FEC タイプをサポートします。

  • SR-IGP IS-IS IPv4 プレフィックスへの ping およびトレースルート。これにより、IS-IS SR アンダーレイで配布されるプレフィックス SID の検証が可能になります。

  • BGP IPv4 プレフィックスへの ping およびトレースルート。これにより、BGP SR アンダーレイで配布されるプレフィックス SID の検証が可能になります。

  • 汎用 IPv4 プレフィックスへの ping およびトレースルート。これにより、配布を実行したプロトコルに依存しない SR アンダーレイで配布されたプレフィックス SID の検証が可能になります。検証は、ユニキャスト ルーティング情報ベース(URIB)とユニキャスト ラベル情報ベース(ULIB)をチェックすることによって実行されます。

  • Nil FEC プレフィックスへの ping およびトレースルート。これにより、ping またはトレースルートが通過するパスをより詳細に制御して、MPLS SR プレフィックスに対応する部分に限ったデータ プレーンのみの検証が可能になります。パスは、SR-TE ポリシー名または SR-TE ポリシーのカラーとエンドポイントを使用して指定できます。

Cisco Nexus 9000 シリーズ スイッチで MPLS OAM を有効にするには、feature mpls oam CLI コマンドを使用します。Cisco Nexus 9000 シリーズ スイッチで MPLS OAM を無効にするには、no feature mpls oam CLI コマンドを使用します。

セグメント ルーティング Ping

IP ping が IP ホストへの接続を検証するのと同様に、MPLS ping は、MPLS ラベル スイッチド パス (LSP) に沿った単方向の連続性を検証するために使用されます。検証される LSP を表す FEC を提供することにより、MPLS ping は次のことを実行します。

  • FEC のエコー要求が LSP のエンドポイントに到達することを確認します。Nil FEC を除き、他のすべての FEC タイプについては、エンドポイントがその FEC の正しい出力先であることを確認します。

  • 低密度ラウンド トリップ時間を測定します。

  • 低密度ラウンド トリップ遅延を測定します。

MPLS LSP ping 機能を使用して、LSP に沿った入力ラベル スイッチ ルータ(LSR)と出力 LSR 間の接続を確認します。MPLS LSP ping は、Internet Control Message Protocol(ICMP)のエコー要求メッセージと応答メッセージと同様に、LSP の検証に MPLS エコーの要求メッセージと応答メッセージを使用します。MPLS エコー要求パケットの宛先 IP アドレスは、ラベル スタックの選択に使用されるアドレスとは異なります。宛先 IP アドレスは 127.x.y.z/8 アドレスとして定義され、LSP が壊れている場合は IP パケットがそれ自体の宛先へ IP を切り替えないようにします。

セグメント ルーティング Traceroute

MPLS traceroute は、LSP の各ホップでフォワーディング プレーンおよびコントロール プレーンを検証して、障害を切り分けます。traceroute は、TTL 1 から始まり単調増加する存続可能時間(TTL)で MPLS エコー要求を送信します。TTL の有効期限が過ぎると、中継ノードはソフトウェアで要求を処理し、ターゲット FEC と目的の中継ノードへの LSP があるかどうかを確認します。中継ノードは、検証が成功した場合、ネクストホップに到達するための上記の検証とラベルスタックの結果を指定するリターンコードと、宛先に向かうネクストホップの ID を含むエコー応答を送信します。発信元は、TTL + 1 を含む次のエコー要求をビルドするためにエコー応答を処理します。宛先が FEC に対する出力であると応答するまで、プロセスが繰り返されます。

MPLS LSP のトレースルート機能を使用して、LSP の障害ポイントを隔離します。これはホップバイホップ エラーのローカリゼーションとパス トレースに使用されます。MPLS LSP traceroute 機能は、エコー要求を伝送するパケットの存続可能時間(TTL)値の期限切れに依存します。MPLS エコー要求メッセージが中継ノードを見つけると TTL 値をチェックし、期限が切れている場合はコントロール プレーンにパケットが渡されます。それ以外の場合は、メッセージが転送されます。エコー メッセージがコントロール プレーンに渡されると、要求メッセージの内容に基づいて応答メッセージが生成されます。

MPLS SR OAM に関する注意事項と制限事項

MPLS OAM Nil FEC に関する注意事項と制限事項は次のとおりです。

  • MPLS OAM Nil FEC は、Nexus 9300-FX プラットフォーム スイッチでサポートされています。

  • MPLS OAM Nil FEC は、-R ライン カード搭載の Cisco Nexus 9500 プラットフォーム スイッチではサポートされていません。

  • Cisco NX-OS リリース 9.3(1) でサポートされるすべての新しい FEC タイプでは、1 つのラベル スタックのみがサポートされます。FEC スタック変更 TLV サポートおよび関連する検証はサポートされていません。この制限は、Nil FEC には適用されません。

  • Cisco NX-OS リリース 9.3(1) では、RFC 8287 で記述されている SR-IGP の「任意の」プレフィックス タイプおよび隣接関係 SID はサポートされていません。

  • OSPF ping とトレースルートは、Cisco NX-OSリリース 9.3(1) ではサポートされていません。

  • Cisco NX-OS リリース 9.3(3) 以降、MPLS OAM Nil FEC は Cisco Nexus 9300-GX プラットフォーム スイッチでサポートされます。

  • ping mpls nil-fec コマンドおよび traceroute mpls nil-fec コマンドには、最大 4 つのラベルを指定できます。この値は、プラットフォームを照会することによって適用されるもので、現在、Cisco Nexus 9000 シリーズ スイッチはラベル スタックを 5 に制限しています。これは、Nil FEC エコー リクエストの場合、内部的に余分な明示的ヌルが追加されるため、指定できるラベルが最大 4 つであることを意味します。

  • ping およびトレースルート コマンドで指定されるネクストホップは、発信元で接続されたネクストホップでなければならず、再帰的ネクストホップであってはなりません。

  • ツリートレースはサポートされていません。

  • NIl FEC は、意図されたターゲットを特定するための情報を一切保持しません。パケットは正しくないノードで誤転送されることがありますが、非ヌル ラベルをポップした後にパケットがノードに到達した場合、検証が成功を返す可能性があります。

  • Nil FEC は、情報を転送するだけで動作します。定義上、コントロール プレーンと転送プレーン間の不整合を検出することはできません。

  • Nil FEC ping およびトレースルートは、デアグリゲータ(VRF ごと)ラベルではサポートされていません。これには、BGP EVPN レイヤー 3 のデアグリゲータ ラベルが含まれます。

  • Broadcom チップセットを使用する Cisco Nexus 9000 シリーズ スイッチでは、ソフトウェアがクエリを送信して、パケットがどの ECMP を使用するかを判断できるようにするサポートはありません。このことは、次の例に示すように、これらのスイッチの 1 つを通過する MPLS トレースルートでは、複数の ECMP がある場合、次のホップでエラーが表示される可能性があることを意味します。

    D 2 6.0.0.2 MRU 1496 [Labels: 2003/explicit-null Exp: 0/0] 4 ms
  • OAM を使用して BGP EPE LSP をテストする場合(たとえば、ping/トレースルート ラベル スタックの最後のラベルが EPE ラベルである場合)、OAM は、最終ルータで OAM が有効になっていて、着信インターフェイスで MPLS が有効になっている場合にのみ、成功を返します。

    たとえば、A---B---C のようにセットアップされていて、A と B が SR ネットワーク内にあり、B が PE のように動作し、C が CE のように動作する場合、B は C を BGP EPE ピア(B で出力エンジニアリングを使用)として設定します。この場合、C は着信インターフェイスで OAM および MPLS 転送を有効にする必要があります。

Nil FEC の MPLS ping とトレースルート

Nil-FEC LSP ping およびトレースルートの操作は、通常の MPLS ping およびトレースルートの拡張機能です。Nil FEC LSP ping およびトレースルート機能は、セグメント ルーティングと MPLS スタティックをサポートしています。また、他のすべての LSP タイプに対する追加の診断ツールとしても機能します。

他の FEC タイプとは異なり、Nil FEC はコントロール プレーンの検証を提供しません。FEC ping またはトレースルート プローブは、MPLS OAM 機能が有効になっているすべてのスイッチに到達できます。

この機能は、オペレータに以下を指定することを許可することで、オペレータがラベル スタックを自由にテストできるようにします。

  • ラベル スタック

  • Outgoing interface

  • ネクストホップ アドレス

セグメント ルーティングの場合、ルーティング パスに沿った各セグメント ノード ラベルおよび隣接関係ラベルは、イニシエータのラベル スイッチ ルータ(LSR)からのエコー要求メッセージのラベル スタックに入れられます。MPLS データ プレーンは、このパケットをラベル スタック ターゲットに転送し、ラベル スタック ターゲットはエコー メッセージを送り返します。

[ping|traceroute] mpls nil-fec labels comma-separated-labels [output {interface tx-interface} [nexthop nexthop-ip-addr]] CLI コマンドを使用して、ping またはトレースルートを実行します。

SR-TE ポリシー名またはカラーとエンドポイントを設定した場合は、次の CLI コマンドを使用して ping またはトレースルートを実行し、既存の SR-TE ポリシー情報を使用できます。

[ping|traceroute] mpls nil-fec [policy name name] [endpoint nexthop-ip-addr] [on-demand color color-num ] CLI コマンドで、ping またはトレースルートを実行します。

BGP および IGP プレフィックス SID 用の MPLS ping および トレースルート

プレフィックス SID 用の MPLS ping およびトレースルートの操作は、次のような BGP および IGP シナリオでサポートされています。

  • IS-IS レベル内

  • IS-IS レベル間

  • BGP SR アンダーレイ

これらの FEC タイプは、追加のコントロール プレーン チェックを実行して、パケットが誤ってルーティングされないようにします。この検証により、ping された FEC タイプがスイッチに接続され、他のノードに配布されることが保証されます。Nil FEC はこの検証を提供しません。

MPLS エコー要求パケットは、ターゲット FEC スタック サブ TLV を伝送します。ターゲット FEC サブ TLV は、レスポンダによって FEC 検証のために使用されます。IGP/BGP IPv4 プレフィックス サブ TLV がターゲット FEC スタック サブ TLV に追加されました。IGP/BGP IPv4 プレフィックス サブ TLV には、プレフィックス SID、プレフィックス長、およびプロトコル(IS-IS)が含まれています。

トレースルートを実行するには、ping|traceroute sr-mpls A.B.C.D/LEN fec-type [bgp | igp {isis} | generic] CLI コマンドを使用します。

セグメント ルーティング OAM の確認

このセクションでは、セグメント ルーティング OAM 機能を確認するために使用できる CLI コマンドについて説明します。

セグメント ルーティング OAM IS-IS の確認

次の ping コマンドは、基盤となるネットワークが IS-IS の場合の SR OAM を表示するために使用されます。

switch# ping sr-mpls 11.1.1.3/32 fec-type igp isis

Sending 5, 100-byte MPLS Echos to IGP Prefix SID(IS-IS) FEC 11.1.1.3/32,
     timeout is 2 seconds, send interval is 0 msec:

Codes: '!' - success, 'Q' - request not sent, '.' - timeout,
  'L' - labeled output interface, 'B' - unlabeled output interface,
  'D' - DS Map mismatch, 'F' - no FEC mapping, 'f' - FEC mismatch,
  'M' - malformed request, 'm' - unsupported tlvs, 'N' - no label entry,
  'P' - no rx intf label prot, 'p' - premature termination of LSP,
  'R' - transit router, 'I' - unknown upstream index,
  'X' - unknown return code, 'x' - return code 0

Type Ctrl-C to abort.
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 2/2/3 ms
 Total Time Elapsed 18 ms
switch# traceroute sr-mpls 11.1.1.3/32 fec-type igp isis


Codes: '!' - success, 'Q' - request not sent, '.' - timeout,
  'L' - labeled output interface, 'B' - unlabeled output interface,
  'D' - DS Map mismatch, 'F' - no FEC mapping, 'f' - FEC mismatch,
  'M' - malformed request, 'm' - unsupported tlvs, 'N' - no label entry,
  'P' - no rx intf label prot, 'p' - premature termination of LSP,
  'R' - transit router, 'I' - unknown upstream index,
  'X' - unknown return code, 'x' - return code 0

Type Ctrl-C to abort.
  0 172.18.1.2 MRU 1500 [Labels: 16103 Exp: 0]
L 1 172.18.1.1 MRU 1504 [Labels: implicit-null Exp: 0] 4 ms
! 2 172.18.1.10 3 ms
switch# ping sr-mpls 11.1.1.3/32 fec-type igp isis verbose

Sending 5, 100-byte MPLS Echos to IGP Prefix SID(IS-IS) FEC 11.1.1.3/32,
     timeout is 2 seconds, send interval is 0 msec:

Codes: '!' - success, 'Q' - request not sent, '.' - timeout,
  'L' - labeled output interface, 'B' - unlabeled output interface,
  'D' - DS Map mismatch, 'F' - no FEC mapping, 'f' - FEC mismatch,
  'M' - malformed request, 'm' - unsupported tlvs, 'N' - no label entry,
  'P' - no rx intf label prot, 'p' - premature termination of LSP,
  'R' - transit router, 'I' - unknown upstream index,
  'X' - unknown return code, 'x' - return code 0

Type Ctrl-C to abort.
!    size 100, reply addr 172.18.1.10, return code 3
!    size 100, reply addr 172.18.1.10, return code 3
!    size 100, reply addr 172.18.1.10, return code 3
!    size 100, reply addr 172.18.1.10, return code 3
!    size 100, reply addr 172.18.1.10, return code 3

Success rate is 100 percent (5/5), round-trip min/avg/max = 2/2/3 ms
 Total Time Elapsed 17 ms
switch# ping sr-mpls 11.1.1.3/32 fec-type igp isis destination 127.0.0.1 127.0.0.2 repeat 1 verbose

Sending 1, 100-byte MPLS Echos to IGP Prefix SID(IS-IS) FEC 11.1.1.3/32,
     timeout is 2 seconds, send interval is 0 msec:

Codes: '!' - success, 'Q' - request not sent, '.' - timeout,
  'L' - labeled output interface, 'B' - unlabeled output interface,
  'D' - DS Map mismatch, 'F' - no FEC mapping, 'f' - FEC mismatch,
  'M' - malformed request, 'm' - unsupported tlvs, 'N' - no label entry,
  'P' - no rx intf label prot, 'p' - premature termination of LSP,
  'R' - transit router, 'I' - unknown upstream index,
  'X' - unknown return code, 'x' - return code 0

Type Ctrl-C to abort.
Destination address 127.0.0.1
!    size 100, reply addr 172.18.1.10, return code 3

Destination address 127.0.0.2
!    size 100, reply addr 172.18.1.22, return code 3

Success rate is 100 percent (2/2), round-trip min/avg/max = 3/3/3 ms
 Total Time Elapsed 8 ms

Ping およびトレースルート CLI コマンドの使用例

IGP または BGP SR ping およびトレースルートの例

CLI を使用して、明示的な発信情報で Ping を実行する

fec CLI コマンドを使用して IS-IS SR ping を実行し、fec CLI コマンドを使用して BGP ping を実行します。 ping sr-mpls fec-type igp isis ping sr-mpls fec-type bgp

switch# ping sr-mpls 11.1.1.3/32 fec-type igp isis

Sending 5, 100-byte MPLS Echos to IGP Prefix SID(IS-IS) FEC 11.1.1.3/32,
     timeout is 2 seconds, send interval is 0 msec:

Codes: '!' - success, 'Q' - request not sent, '.' - timeout,
  'L' - labeled output interface, 'B' - unlabeled output interface,
  'D' - DS Map mismatch, 'F' - no FEC mapping, 'f' - FEC mismatch,
  'M' - malformed request, 'm' - unsupported tlvs, 'N' - no label entry,
  'P' - no rx intf label prot, 'p' - premature termination of LSP,
  'R' - transit router, 'I' - unknown upstream index,
  'X' - unknown return code, 'x' - return code 0

Type Ctrl-C to abort.
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 2/2/3 ms
 Total Time Elapsed 18 ms
switch# ping sr-mpls 11.1.1.3/32 fec-type igp isis verbose

Sending 5, 100-byte MPLS Echos to IGP Prefix SID(IS-IS) FEC 11.1.1.3/32,
     timeout is 2 seconds, send interval is 0 msec:

Codes: '!' - success, 'Q' - request not sent, '.' - timeout,
  'L' - labeled output interface, 'B' - unlabeled output interface,
  'D' - DS Map mismatch, 'F' - no FEC mapping, 'f' - FEC mismatch,
  'M' - malformed request, 'm' - unsupported tlvs, 'N' - no label entry,
  'P' - no rx intf label prot, 'p' - premature termination of LSP,
  'R' - transit router, 'I' - unknown upstream index,
  'X' - unknown return code, 'x' - return code 0

Type Ctrl-C to abort.
!    size 100, reply addr 172.18.1.10, return code 3
!    size 100, reply addr 172.18.1.10, return code 3
!    size 100, reply addr 172.18.1.10, return code 3
!    size 100, reply addr 172.18.1.10, return code 3
!    size 100, reply addr 172.18.1.10, return code 3

Success rate is 100 percent (5/5), round-trip min/avg/max = 2/2/3 ms
 Total Time Elapsed 17 ms

Nil FEC ping およびトレースルートの例

CLI を使用して、明示的な発信情報で Ping を実行する

ping を実行するには、ping sr-mpls nil-fec labels comma-separated-labels [output {interface tx-interface} [nexthop nexthop-ip-addr]] CLI コマンドを使用します。

たとえば、次のコマンドは、 ラベル スタック内の最も外側の 2 つのラベル(2001 と 2000 )を持つ MPLS パケットを、ネクストホップ IP アドレスが 4.0.0.2 のインターフェイス イーサネット 1/1 から送信します。

switch# ping mpls nil-fec labels 2001,2000 output interface e1/1 nexthop 4.0.0.2 

ネクストホップは接続されたネクストホップであることが必須です。再帰的には解決されません。

上記の CLI 形式は簡易版です。[output {interface tx-interface} [nexthop nexthop-ip-addr]] は、VSH サーバー内に存在することが必須です。例:

switch# ping mpls nil-fec labels 1,2 ?
output Output options
switch# ping mpls nil-fec labels1,2
^
% Invalid command at '^' marker.

CLI を使用して SRTE ポリシーからの発信情報で ping を実行する

次の CLI コマンドを使用して、ping を実行します。

switch# ping mpls nil-fec policy name policy1
switch# ping mpls nil-fec policy endpoint 2.0.0.1 color 16 

CLI を使用した明示的な発信情報でのトレースルートの実行

次の CLI コマンドを使用して、トレースルートを実行します。

switch# ping mpls nil-fec labels 2001,2000 output interface e1/1 nexthop 4.0.0.2

CLI を使用して SRTE ポリシーからの発信情報で traceroute を実行する

次の CLI コマンドを使用して、トレースルートを実行します。

switch# traceroute mpls nil-fec policy name policy1
switch# traceroute mpls nil-fec policy endpoint 2.0.0.1 color 16 

統計情報の表示

次のコマンドを使用して、ローカル MPLS OAM サービスによって送信されたエコー要求に関する統計情報を表示します。
show mpls oam echo statistics