概要
このドキュメントでは、マルチプロトコルラベルスイッチング(MPLS)ネットワークでのインターネット制御メッセージプロトコル(ICMP)のtracerouteの動作と、LSPトレースとの迅速な比較について説明します。
背景説明
IP環境では、がパケットを受信し、Time To Live(TTL)が期限切れになると、「TTL Exceeded」というICMPエラーメッセージ(Type=11、Code=0)が生成され、パケットの送信元アドレスに送信されます。この概念は、送信元から宛先までのIPパスを、1から順にTTLを持つUDPパケットを送信することによってトレースするために利用されます。この機能の基本的な要件は次のとおりです。
- パケットの送信元アドレスは、中継ノードから到達可能です
- ICMPはパスに沿ってフィルタリングされない
MPLS環境では、中継プロバイダーLSRが送信元アドレスに常に到達できるとは限らず、MPLSドメインでのICMP処理を強化する必要があります。
MPLSネットワークでのICMPトレースルート
最上位ラベルにTTL=1のパケットを受信したLSRのデフォルト動作は、パケットをドロップしてICMPエラーメッセージをトリガーする従来のIP動作に従います。ICMPメッセージを送信元にルーティングするために、LSRは次を実行します。
- 着信パケット(TTL=1で受信されたパケット)からラベルスタックをバッファに入れます
- 送信元を自身のアドレスとし、宛先を受信パケットの送信元アドレスとするICMPエラーメッセージを生成します。
- ラベルスタックの一番下(ステップ1でバッファに入れたラベル)から、一番上のラベルを除き、TTL=255を付けてラベルを追加します。
- バッファラベルスタックから最上位のラベルを取得し、ローカルLFIBルックアップを実行して、スワップするラベルと関連するネクストホップを取得します。
- TTL=255を使用して新しいラベルをスタックの先頭に追加し、送信します。
このアプローチでは、ICMPエラーメッセージが通過してトランジットLSRから出力LERに戻り、入力LERから実際の送信元に戻ります。
PEからリモートPEにトリガーされるICMPトレース
次に、ICMPトレースが同じMPLSドメイン内のPEからリモートPEにトリガーされた場合の動作を説明する簡単な例を示します。
このトポロジでは、ICMP tracerouteがR2から10.1.4.4にトリガーされると、最初のパケットはTTLが1で送信されます。パケットを受信したR3はTTLを0に減らし、ICMP生成メカニズムをトリガーします。
R3はラベルスタックをバッファリングし、ICMPエラーメッセージを生成し、バッファからの着信ラベルスタックをICMPペイロードに含めます。さらに、ラベル付きパケットの着信インターフェイスからの送信元アドレス、ラベル付きパケットの送信元としての宛先アドレスをIPヘッダーに入力します。TTLは255に設定されています。ここで、ラベルスタックをバッファからプッシュし、LFIBテーブルで上位ラベルの転送アクションを参照します。このトポロジでは、受信したラベルスタックは17です。LFIBテーブルでルックアップを実行すると、ラベル17がラベル16とスワップされ、ネクストホップR6に転送されます。R6は先頭のラベルをポップし、R4に転送されます。
R2のtraceroute出力に示されているように、着信ラベルはパス上の各ホップによってリストされます。
CEからリモートCEにトリガーされるICMPトレース
ICMPトレースがCEからリモートCE over MPLSドメインにトリガーされた場合の動作を説明する簡単な例を次に示します。
このトポロジでは、ICMP tracerouteがR1(CE)から192.168.5.5(リモートCE)にトリガーされると、最初のパケットはTTLが1で送信されます。これは通常のIPパケットなので、R2はICMPを生成してR1に直接送信する従来動作に従従します。
R3はラベルスタックをバッファリングし、ICMPエラーメッセージを生成し、バッファからの着信ラベルスタックをICMPペイロードに含めます。さらに、ラベル付きパケットの着信インターフェイスからの送信元アドレス、ラベル付きパケットの送信元としての宛先アドレスをIPヘッダーに入力します。TTLは255に設定されています。ここで、ラベルスタックをバッファからプッシュし、LFIBテーブルで上位ラベルの転送アクションを参照します。上記のトポロジでは、受信したラベルスタックは{17, 18}です。最上位ラベルのLFIBテーブルでルックアップを実行すると、17がラベル16とスワップされ、ネクストホップR6に転送されます。R6は最上位ラベルをポップし、R4に転送します。R4はVRFラベルを使用してVRFををにに転送します。
R1のtraceroute出力に示されているように、着信ラベルスタックはパス上の各ホップによってリストされます。
MPLSネットワークでのMPLS LSP Traceroute
ICMPベースのtracerouteとは異なり、LSP tracerouteはRFC4379で定義されている機構を使用します。IP/UDPカプセル化を使用し、要求の宛先アドレスはループバックアドレス(127.0.0.0/8範囲)に設定されます。 LSP Pingが同じMPLSドメイン内でトリガーされるため、応答はイニシエータに直接送信されます。
LSRからLSP traceroute(「traceroute mpls ipv4 <FEC>」)がトリガーされると、検証されるFECの詳細が、MPLSエコー要求の「ターゲットFECスタック」としてTLVに含まれます。このメッセージは、1から順にラベルスタックのTTLとともに送信されます。パケットを受信した任意のトランジットLSRと、宛先アドレスがループバックアドレスであるため、TTLが期限切れになるとIPパケットが処理されます。MPLS OAM処理のためにCPUにパントされます。
応答側はオプションで、受信したMPLSエコー要求のラベルスタックからラベルを取得し、ターゲットFECスタックTLVからFECの詳細を取得して、ローカルのコントロールプレーン情報に対してラベルを検証します。トレースの場合、応答側は発信ラベルやダウンストリームのネイバーアドレスなどのダウンストリーム情報をダウンストリームマッピング(DSMAP)TLVとしてTLVに含めます(DSMAPはDSMAPよりも柔軟性が高いため、DDMAPでは廃止されます)。
PEからリモートPEにトリガーされるLSPトレース
このトポロジでは、LSPトレースがR2からトリガーされ、プレフィックス10.1.4.4/32へのLSPが検証されます。ラベルのTTLは1から設定されます。ラベルを受信したR3は、OAM処理のためにCPUにパントされます。
R3は、発信ラベル16を伝送するDSMAP TLVと、ダウンストリームネイバーの詳細などの追加情報を使用して、MPLSエコー応答をR2に返信します。ICMPメッセージとは異なり、MPLSエコー応答は応答側R3から発信側R2に直接転送されます。
R2のLSP traceroute出力で確認できることから、出力ラベルスタックはパスに沿った各ホップによってリストされます。これは、ICMPベースのtracerouteとは異なり、出力にリストされているラベルが着信ラベルスタックになります。
CEからリモートCEにトリガーされるLSPトレース
これは、PE-CE間でMPLSが有効になっているCSCのようなシナリオで適用されます。CEからキャリアMPLSドメインを介したリモートCEへのLSPトレースを実行する場合、次の2つの課題があります。
- LSPエコー応答がイニシエータに直接送信されます。したがって、レスポンダはイニシエータに到達可能である必要があります。上記のトポロジでは、R3はVRFにあるためR1に到達できない可能性があります。
- ラベルスタック内の各ラベルについて、検証するターゲットFECスタックに関連するFECの詳細が含まれている必要があります。イニシエータに含まれるFECは1ですが、PEは2つのラベルをプッシュします。上記のトポロジでは、R1はFEC={192.168.5.5/32}でMPLSエコー要求を送信し、スタックにラベル28を含めます。R2はラベル28を{17, 27}にスワップするため、R3はスタック内に2つのラベルを持つ要求を受信し、TLVでは1つのFECがFECを混乱させる検証を受信します。
RFC6424は、問題2に取り組むための「FECスタック変更TLV」の概念を定義しています。このTLVは、関連するFECに対する応答に含まれ、後続のエコー要求にイニシエータが含めることができます。
draft-ietf-mpls-lsp-ping-relay-replyは、レスポンダが応答をリレーするために使用できるTLV内のリレーノードアドレススタックを搬送する概念を定義します。この概念は、イニシエータに到達できない場合でも使用できます。
これらの2つの問題は現在Cisco IOS®ではサポートされていないため、CEからリモートCEへのLSPトレースでは、入力PEとリモートCEだけがリストされます。これは完全を期すためだけに含まれています。
関連情報