メインコンテンツまでスキップ

1. LDP の概要

MPLS アーキテクチャ [RFC3031] は, ラベル配布プロトコル (label distribution protocol) を, あるラベルスイッチングルータ (Label Switched Router, LSR) が別の LSR に対して, 両者間および両者を通過するトラフィックの転送に用いられるラベルの意味を通知するための一連の手順として定義している.

MPLS アーキテクチャは単一のラベル配布プロトコルを前提としていない. 実際, 多数の異なるラベル配布プロトコルが標準化されつつある. 既存のプロトコルは, ラベル配布をそれらに相乗りさせることができるように拡張されてきた. ラベルを配布するという明示的な目的のために新たなプロトコルも定義されている. MPLS アーキテクチャは, トラフィックエンジニアリング [RFC2702] のような特定の MPLS アプリケーションで用いるラベル配布プロトコルを選択する際の考慮事項のいくつかについて論じている.

ラベル配布プロトコル (Label Distribution Protocol, LDP) は, ラベルを配布するために定義されたプロトコルである. これは元々 2001 年 1 月に RFC 3036 として公開された. これは IETF の MPLS ワーキンググループによって作成され, Loa Andersson, Paul Doolan, Nancy Feldman, Andre Fredette, および Bob Thomas によって共同執筆された.

LDP はラベルを配布するために定義されたプロトコルである. これは, ラベルスイッチングルータ (LSR) が, ネットワーク層のルーティング情報をデータリンク層のスイッチドパスに直接マッピングすることによって, ネットワークを介してラベルスイッチドパス (Label Switched Path, LSP) を確立するための一連の手順およびメッセージである. これらの LSP は, 直接接続された隣接ノードに終端点を持ってもよく (IP のホップバイホップ転送に相当する), またはネットワークの出口ノードに終端点を持ってもよく, その場合すべての中間ノードを経由したスイッチングが可能になる.

LDP は, それが作成する各 LSP に転送等価クラス (Forwarding Equivalence Class, FEC) [RFC3031] を対応付ける. LSP に対応付けられた FEC は, どのパケットがその LSP に「マッピング」されるかを指定する. LSP は, 各 LSR が或る FEC に対する入ラベルを, その FEC に対するネクストホップに割り当てられた出ラベルに「スプライス」するにつれて, ネットワークを通じて延伸される.

LDP の適用可能性に関する詳細な情報は [RFC3037] にある.

本文書は, MPLS アーキテクチャ [RFC3031] への習熟を前提としている (ただし要求はしない). [RFC3031] には, ingress, label switched path などといった MPLS 用語の用語集が含まれていることに注意されたい.

1.1. LDP ピア​

ラベル/FEC マッピング情報を交換するために LDP を使用する 2 台の LSR は, その情報に関して「LDP ピア (LDP Peers)」として知られ, 両者の間には「LDP セッション (LDP Session)」が存在すると言う. 単一の LDP セッションにより, 各ピアは相手のラベルマッピングを学習できる. すなわち, このプロトコルは双方向である.

1.2. LDP メッセージ交換​

LDP メッセージには 4 つのカテゴリがある:

  1. Discovery メッセージ: ネットワーク内における LSR の存在を告知し維持するために使用される.

  2. Session メッセージ: LDP ピア間のセッションを確立し, 維持し, 終了するために使用される.

  3. Advertisement メッセージ: FEC に対するラベルマッピングを作成し, 変更し, 削除するために使用される.

  4. Notification メッセージ: 勧告的な情報を提供し, エラー情報を通知するために使用される.

Discovery メッセージは, LSR が Hello メッセージを定期的に送信することによってネットワーク内での自身の存在を示す仕組みを提供する. これは, 'all routers on this subnet' グループマルチキャストアドレスの LDP ポート宛ての UDP パケットとして送信される. LSR が, Hello メッセージによって学習した別の LSR とのセッションを確立することを選択した場合, それは TCP トランスポート上で LDP 初期化手順 (LDP initialization procedure) を使用する. 初期化手順が正常に完了すると, その 2 台の LSR は LDP ピアとなり, Advertisement メッセージを交換できる.

いつラベルを要求するか, またはいつピアにラベルマッピングを広告するかは, 主として LSR が行うローカルな決定である. 一般に, LSR は必要になったときに隣接 LSR にラベルマッピングを要求し, 隣接 LSR にラベルを使用してほしいときにその隣接 LSR にラベルマッピングを広告する.

LDP の正しい動作には, メッセージの信頼性のある順序どおりの配送が必要である. これらの要件を満たすため, LDP は Session, Advertisement, および Notification メッセージに対して, すなわち UDP ベースの発見メカニズム以外のすべてに対して, TCP トランスポートを使用する.

1.3. LDP メッセージ構造​

すべての LDP メッセージは, タイプ・レングス・バリュー (Type-Length-Value, TLV) 符号化方式を用いる共通の構造を持つ. セクション「Type-Length-Value Encoding」を参照されたい. TLV 符号化されたオブジェクト (略して TLV) の Value 部分は, それ自体が 1 つ以上の TLV を含むことができる.

1.4. LDP エラー処理​

LDP のエラーおよびその他の関心のあるイベントは, Notification メッセージによって LDP ピアに通知される.

LDP Notification メッセージには 2 種類ある:

  1. Error Notification: 致命的なエラーを通知するために使用される. LSR が LDP セッションに関する Error Notification をピアから受信した場合, そのセッションの TCP トランスポート接続を閉じ, そのセッションを介して学習したすべてのラベルマッピングを破棄することによって, LDP セッションを終了する.

  2. Advisory Notification: LDP セッションに関する情報, またはピアから受信した何らかの以前のメッセージの状態を LSR に伝えるために使用される.

1.5. LDP の拡張性と将来の互換性​

機能は将来 LDP に追加される可能性がある. 将来の機能は新しいメッセージおよびオブジェクトタイプ (TLV) を利用する可能性が高い. そのような新しいメッセージおよび TLV を認識しない旧い実装を使用するネットワーク内で, それらを利用したいことがあるかもしれない. すべての将来の拡張を後方互換にすることは不可能であるが, 事前の計画によって新しいケイパビリティの導入を容易にできる. 本仕様はこの目的のために, 未知のメッセージタイプおよび未知の TLV を扱うための規則を定義する.

1.6. 仕様の言語​

本文書におけるキーワード "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", および "OPTIONAL" は, [RFC2119] に記述されているとおりに解釈されるものとする.