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

A.1. ラベル配布イベントの処理

本セクションは, 各ラベル配布イベントに対するアルゴリズムを規定することによって LDP のラベル配布手順を定義する. LDP 実装に対する要件は, そのイベント処理がアルゴリズムによって規定された効果を持たなければならないことである. すなわち, 効果が同一である限り, 実装はアルゴリズムで規定された手順を厳密に踏む必要はない.

ラベル配布イベントを処理するためのアルゴリズムは, 共通の動作を共有する. 以下の規定は, これらの共通動作を手続き単位にまとめる. これらの共通手続きの規定は, これに続く独立したセクション「Common Label Distribution Procedures」にある.

実装は, プロトコル活動に関する情報を格納するためにデータ構造を使用するであろう. 本付録は, アルゴリズムを記述するのに十分な詳細さで格納すべき情報を規定し, 必要に応じてその情報を取得できることを前提とする. それはデータ構造の詳細は規定しない.

A.1.1. Label Request の受信​

概要:

LDP ピアから FEC のラベル要求を受信したときの LSR による応答は, 次の動作の 1 つ以上を伴いうる:

  • FEC に対するラベルマッピングを提供できない理由を示す通知メッセージを要求元 LSR へ送信すること;

  • 要求元 LSR へ FEC のラベルマッピングを送信すること;

  • FEC のネクストホップへ FEC のラベル要求を送信すること;

  • LSR による転送/スイッチングでの使用のためにラベルをインストールすること.

コンテキスト:

  • LSR. そのイベントを処理する LSR.

  • MsgSource. そのメッセージを送信した LDP ピア.

  • FEC. そのメッセージで指定された FEC.

  • RAttributes. そのメッセージとともに受信した属性, 例えば Hop Count, Path Vector.

  • SAttributes. FEC の Next Hop へ伝播される Label Request メッセージがあればそれに含める属性.

  • StoredHopCount. その FEC について以前に記録されたホップカウント (あれば).

アルゴリズム:

   LRq.1   手続き Check_Received_Attributes (MsgSource,
           LabelRequest, RAttributes) を実行する.
           Loop Detected の場合, LRq.4 へ進む.

   LRq.2   FEC に対する Next Hop は存在するか?
           存在しない場合, LRq.5 へ進む.

   LRq.3   MsgSource は Next Hop か?
           そうでない場合, LRq.6 へ進む.

   LRq.4   手続き Send_Notification (MsgSource, Loop Detected) を
           実行する.
           LRq.13 へ進む.

   LRq.5   手続き Send_Notification (MsgSource, No Route) を実行
           する.
           LRq.13 へ進む.

   LRq.6   LSR は以前に MsgSource から FEC のラベル要求を受信した
           か?
           受信していない場合, LRq.8 へ進む. (注 1 を参照.)

   LRq.7   そのラベル要求は重複要求か?
           そうである場合, LRq.13 へ進む. (注 2 を参照.)

   LRq.8   MsgSource から受信した FEC のラベル要求を記録し, それを
           pending としてマークする.

   LRq.9   LSR Label Distribution 手順を実行する:

         Downstream Unsolicited Independent Control の場合 または
         Downstream On Demand Independent Control の場合

            1. LSR は以前に Next Hop から FEC のラベルマッピングを
               受信し保持したか?
               そうである場合, Propagating を IsPropagating に
               設定する.
               そうでない場合, Propagating を NotPropagating に
               設定する.

            2. 手続き
               Prepare_Label_Mapping_Attributes(MsgSource, FEC,
               RAttributes, SAttributes, Propagating,
               StoredHopCount) を実行する.

            3. 手続き Send_Label (MsgSource, FEC, SAttributes) を
               実行する.

            4. LSR は FEC の egress か? または LSR は以前に
               Next Hop から FEC のラベルマッピングを受信し保持
               したか?
               そうである場合, LRq.11 へ進む.
               そうでない場合, LRq.10 へ進む.

            Downstream Unsolicited Ordered Control の場合 または
            Downstream On Demand Ordered Control の場合

            1. LSR は FEC の egress か? または LSR は以前に
               Next Hop から FEC のラベルマッピングを受信し保持
               したか? (注 3 を参照.)
               そうでない場合, LRq.10 へ進む.

            2. 手続き
               Prepare_Label_Mapping_Attributes(MsgSource, FEC,
               RAttributes, SAttributes, IsPropagating,
               StoredHopCount) を実行する.

            3. 手続き Send_Label (MsgSource, FEC, SAttributes) を
               実行する.
               LRq.11 へ進む.

   LRq.10  LSR Label Request 手順を実行する:

      Request Never の場合

               1. LRq.13 へ進む.

      Request When Needed の場合 または
      Request On Request の場合

            1. 手続き Prepare_Label_Request_Attributes
               (Next Hop, FEC, RAttributes, SAttributes) を実行
               する.

            2. 手続き Send_Label_Request (Next Hop, FEC,
               SAttributes) を実行する.
               LRq.13 へ進む.

   LRq.11  LSR は FEC のラベルを MsgSource へ正常に送信したか?
           そうでない場合, LRq.13 へ進む. (注 4 を参照.)

   LRq.12  LSR Label Use 手順を実行する.

           Use Immediate の場合 または Use If Loop Not Detected の
           場合

            1. MsgSource へ送信したラベル, および Next Hop からの
               ラベル (LSR が egress でない場合) を転送/スイッチ
               ングでの使用のためにインストールする.

   LRq.13  DONE.

   注:

      1. MsgSource がラベルマージを行わない LSR である場合, それは,
         自身に FEC のラベルを要求した各上流 LDP ピアに対して
         ラベル要求を送信する. LSR は, ラベルマージを行わない
         MsgSource からのそのような要求を, 重複したラベル要求と
         区別できなければならない.

         LSR は, 受信した Label Request メッセージの message ID を
         使用して重複要求を検出する. これは, LSR (上流ピア) が,
         Label Request トランザクションが完了するまで, Label
         Request に使用した message ID を再利用してはならないこと
         を意味する.

      2. LSR がピアへラベル要求を送信したとき, それはその要求を
         送信済みとして記録し, outstanding (未完了) としてマーク
         する. その要求が outstanding としてマークされている限り,
         LSR は同じラベルに対する別の要求をそのピアへ送信すべき
         ではない (SHOULD NOT). そのような 2 番目の要求は重複となる.
         以下で記述する Send_Label_Request 手続きはこの規則に従う.

         重複したラベル要求はプロトコルエラーとみなされ, 受信側
         LSR によって破棄されるべきである (SHOULD) (おそらく
         MsgSource へ適切な通知を返すことによって).

      3. LSR がマージ能力を持たない場合, このテストは失敗する.

      4. Send_Label 手続きはラベル資源の不足のために失敗することが
         あり, その場合 LSR は Label Use 手順を実行すべきではない
         (SHOULD NOT).

A.1.2. Label Mapping の受信​

概要:

LDP ピアから FEC のラベルマッピングを受信したときの LSR による応答は, 次の動作の 1 つ以上を伴いうる:

  • その FEC のラベルについての Label Release メッセージをその LDP ピアへ送信すること;

  • その FEC についての Label Mapping メッセージを 1 つ以上の LDP ピアへ送信すること;

  • LSR による転送/スイッチングでの使用のために新たに学習したラベルをインストールすること.

コンテキスト:

  • LSR. そのイベントを処理する LSR.

  • MsgSource. そのメッセージを送信した LDP ピア.

  • FEC. そのメッセージで指定された FEC.

  • Label. そのメッセージで指定されたラベル.

  • PrevAdvLabel. その FEC について, 以前に上流ピアへ広告されたラベル (あれば). 以前にラベルが広告されていないと仮定した場合, これは処理中の Label Mapping メッセージ内のラベルと同じラベルである.

  • StoredHopCount. その FEC について以前に記録されたホップカウント.

  • RAttributes. そのメッセージとともに受信した属性, 例えば Hop Count, Path Vector.

  • SAttributes. 上流ピアへ伝播される Label Mapping メッセージがあればそれに含める属性.

アルゴリズム:

   LMp.1   受信した label mapping は, 以前に MsgSource へ送信した
           FEC の未完了のラベル要求に一致するか?
           一致しない場合, LMp.3 へ進む.

   LMp.2   未完了の FEC ラベル要求の記録を削除する.

   LMp.3   手続き Check_Received_Attributes (MsgSource,
           LabelMapping, RAttributes) を実行する.
           No Loop Detected の場合, LMp.9 へ進む.

   LMp.4   LSR は, 以前に MsgSource から受信した FEC のラベル
           マッピングを持っているか? (注 1 を参照.)
           持っていない場合, LMp.8 へ進む. (注 2 を参照.)

   LMp.5   以前に MsgSource から受信したラベルは Label (すなわち,
           そのメッセージで受信したラベル) に一致するか?
           (注 3 を参照.)
           一致しない場合, LMp.8 へ進む. (注 4 を参照.)

           LMp.6   以前に MsgSource から受信した FEC の一致する
           ラベルマッピングを削除する.

   LMp.7   Label を転送/スイッチングでの使用から除去する.
           (注 5 を参照.)

   LMp.8   手続き Send_Message (MsgSource, Label Release, FEC,
           Label, Loop Detected Status code) を実行する.
           LMp.33 へ進む.

   LMp.9   LSR は, 問題の LSP について, 以前に MsgSource から
           受信した FEC のラベルマッピングを持っているか?
           (注 6 を参照.)
           持っていない場合, LMp.11 へ進む.

   LMp.10  以前に MsgSource から受信したラベルは Label (すなわち,
           そのメッセージで受信したラベル) に一致するか?
           (注 3 を参照.)
           または
           受信した label mapping は, 以前に MsgSource へ送信した
           未完了のラベル要求への応答か? (注 12 を参照.)
           そうである場合, LMp.11 へ進む.

   LMp.10a LSR は Downstream Unsolicited モードで動作しているか?
           そうである場合, 以前に MsgSource から受信したラベルの
           ラベルマッピングを削除し, それを転送/スイッチングでの
           使用から除去する.
           手続き Send_Message (MsgSource, Label Release, FEC,
           以前に MsgSource から受信したラベル) を実行する.

   LMp.11  FEC の Next Hop を決定する.

   LMp.12  MsgSource は FEC の Next Hop か?
           そうである場合, LMp.14 へ進む.

   LMp.13  LSR Label Release 手順を実行する:

                 Conservative Label retention の場合:

                    1. LMp.32 へ進む.

                 Liberal Label retention の場合:

                    1. Label および RAttributes を持つ FEC の
                       ラベルマッピングが MsgSource から受信された
                       ことを記録する.
                       LMp.33 へ進む.

   LMp.14  LSR は FEC の ingress か?
           そうでない場合, LMp.16 へ進む.

   LMp.15  Label を転送/スイッチングでの使用のためにインストール
           する.

   LMp.16  Label および RAttributes を持つ FEC のラベルマッピング
           が MsgSource から受信されたことを記録する.

   LMp.17 各 Peer について LMp.31 まで反復する. (注 7 を参照.)

   LMp.18  LSR は, 問題の LSP について, 以前に FEC のラベル
           マッピングを Peer へ送信したか? (注 8 を参照.)
           送信した場合, LMp.22 へ進む.

   LMp.19  Downstream Unsolicited Ordered Control Label
           Distribution 手順が LSR によって使用されているか?
           使用されていない場合, LMp.28 へ進む.

   LMp.20 手続き Prepare_Label_Mapping_Attributes (Peer, FEC,
           RAttributes, SAttributes, IsPropagating,
           StoredHopCount) を実行する.

   LMp.21 手続き Send_Message (Peer, Label Mapping, FEC,
           PrevAdvLabel, SAttributes) を実行する. (注 13 を参照.)
           LMp.28 へ進む.

   LMp.22 以前に Peer へ送信した FEC のラベルマッピングごとに
           LMp.27 まで反復する.

   LMp.23 受信した label mapping 内の RAttributes は, 以前に
           Peer へ送信したものと一致するか?
           一致する場合, LMp.22 からの反復を次のラベルマッピング
           について継続する. (注 9 を参照.)

   LMp.24 手続き Prepare_Label_Mapping_Attributes (Peer, FEC,
           RAttributes, SAttributes, IsPropagating,
           StoredHopCount) を実行する.

   LMp.25 手続き Send_Message (Peer, Label Mapping, FEC,
           PrevAdvLabel, SAttributes) を実行する. (注 10 を参照.)

   LMp.26 以前に Peer へ送信した FEC のラベルマッピングの記録を
           更新し, 送信した新しい属性を含める.

   LMp.27 LMp.22 からの反復を終了する.

   LMp.28 LSR は, Peer からの FEC のラベル要求であって pending
           としてマークされたものを持っているか?
           持っていない場合, LMp.30 へ進む.

   LMp.29 LSR Label Distribution 手順を実行する:

         Downstream Unsolicited Independent Control の場合 または
         Downstream Unsolicited Ordered Control の場合

            1. 手続き Prepare_Label_Mapping_Attributes (Peer, FEC,
               RAttributes, SAttributes, IsPropagating,
               UnknownHopCount) を実行する.

            2. 手続き Send_Label (Peer, FEC, SAttributes) を実行
               する.
               手続きが失敗した場合, LMp.17 の次の Peer について
               反復を継続する.

            3. Peer に対する保留中の要求が存在しない場合, LMp.30
               へ進む. (注 11 を参照.)

         Downstream On Demand Independent Control の場合 または
         Downstream On Demand Ordered Control の場合

            1. Peer からの FEC のラベル要求であって pending として
               マークされたものごとに, ステップ 5 まで反復する.

            2. 手続き Prepare_Label_Mapping_Attributes (Peer, FEC,
               RAttributes, SAttributes, IsPropagating,
               UnknownHopCount) を実行する.

            3. 手続き Send_Label (Peer, FEC, SAttributes) を実行
               する.
               手続きが失敗した場合, LMp.17 の次の Peer について
               反復を継続する.

            4. 保留中の要求の記録を削除する.

            5. ステップ 1 からの反復を終了する.

            6. LMp.30 へ進む.

   LMp.30 LSR Label Use 手順を実行する:

         Use Immediate の場合 または Use If Loop Not Detected の
         場合

            1. 以前に Peer へ送信した FEC のラベルマッピングごとに
               ステップ 3 まで反復する.

            2. 受信したラベルおよび Peer へ送信したラベルを転送/
               スイッチングでの使用のためにインストールする.

            3. ステップ 1 からの反復を終了する.

            4. LMp.31 へ進む.

   LMp.31 LMp.17 からの反復を終了する.
          LMp.33 へ進む.

   LMp.32 手続き Send_Message (MsgSource, Label Release, FEC,
          Label) を実行する.

   LMp.33 DONE.

注:

  1. LSR がマージを行う場合, 問題の LSP についてのその FEC に対する受信マッピングは最大 1 つであるはずである. マージを行わない場合, 問題の LSP についてのその FEC に対する受信マッピングは複数ありうる.

  2. LSR がループを検出しており, かつ以前に MsgSource からその FEC に対するラベルマッピングを受信していない場合, それは単にそのラベルを解放する.

  3. メッセージで受信した Label は, 前のステップ (LMp.4 または LMp.9) で識別された 1 つ以上のラベルマッピングのいずれかに一致するか.

  4. 同じピアからの異なるラベルを持つ求められていないマッピングは, マルチパスラベルスイッチングを確立しようとする試みであろうが, それはこのバージョンの LDP ではサポートされていない.

  5. Label が転送/スイッチングに使用されていない場合, LMp.7 は何の効果も持たない.

  6. 受信した label mapping メッセージが LMp.1 で未完了のラベル要求に一致した場合, (定義により) LSR は問題の LSP についてその FEC に対するラベルマッピングを以前に受信していない. LSR が問題の LSP の上流ラベルをマージしている場合, 受信マッピングは最大 1 つであるはずである. マージを行わない場合, 同じ FEC に対して複数の受信ラベルマッピングがありうる. すなわち, 結果として生じる LSP ごとに 1 つである.

  7. LMp.17 の反復は, LSR が Downstream Unsolicited Ordered Control モードで動作している場合に対処するために MsgSource を含む. 順序制御は, LSR がその FEC に対するネクストホップ (MsgSource) からラベルマッピングを受信するまで, その FEC に対するラベルを広告することを妨げる.

  8. LSR がその LSP をマージしている場合, それは以前にその FEC LSP に対するラベルマッピングを 1 つ以上のピアへ送信しているかもしれない. LSR がマージを行っていない場合, それは問題の LSP に対するラベルマッピングを最大 1 つの LSR へ送信しているかもしれない.

  9. この確認では Loop Detection Path Vector 属性が考慮される. 受信した RAttributes が Path Vector を含み, かつ以前に Peer へ Path Vector が送信されていない場合, または受信した Path Vector が以前に Peer へ送信された Path Vector と一致しない場合, 属性は一致しないものとみなされる. LSR は, マッピングメッセージで Path Vector を伝播した後に受信した Path Vector を格納することを要求されないことに注意されたい. LSR が Path Vector を格納しない場合, 新たに受信した Path Vector の一致性を確認する手段を持たない. これは, そのような LSR が Path Vector を運ぶマッピングメッセージを受信するたびに, 常にその Path Vector を伝播しなければならないことを意味する.

  10. LMp.22 から LMp.27 は, LSR が独立制御を使用しており, 上流ピアへマッピングを送信した後に下流ピアからマッピングを受信したときに生じうる状況を扱う. この状況で, LSR は, Hop Count のような変化した属性があればそれを上流へ伝播する必要がある. Loop Detection が有効に設定されている場合, 伝播される属性は Path Vector を含まなければならない.

  11. Downstream Unsolicited モードで動作する LSR は, 受信した Label Request メッセージを処理しなければならない (MUST). 保留中のラベル要求がある場合, それらの保留中の要求を満たすために, Downstream on Demand の手順に進む.

  12. ステップ LMp.1 によって判定される.

  13. 順序制御モードで動作する LSR は, この段階で, label-map メッセージを生成する原因となった広告を受信したピアをスキップすることを選択してよい. そうすることは, 実際には一種のスプリットホライズンを提供することになる.

A.1.3. Label Abort Request の受信​

概要:

LSR がピアから Label Abort Request メッセージを受信したとき, それは, 問題のラベル要求に既に応答しているかどうかを確認する. 応答している場合, それはそのメッセージを黙って無視する. 応答していない場合, それはピアへ Label Request Aborted Notification を送信する. さらに, 問題の LSP について下流ピアへの未完了のラベル要求を持っている場合, それはその LSP を中止するために下流ピアへ Label Abort Request を送信する.

コンテキスト:

  • LSR. そのイベントを処理する LSR.

  • MsgSource. そのメッセージを送信した LDP ピア.

  • FEC. そのメッセージで指定された FEC.

  • RequestMessageID. 中止される label request message の message ID.

  • Next Hop. その FEC のネクストホップ.

アルゴリズム:

   LAbR.1  そのメッセージは, 以前に MsgSource から受信した Label
Request メッセージに一致するか? (注 1 を参照.)
一致しない場合, LAbR.12 へ進む.

LAbR.2 LSR は, 以前に受信したラベル要求に応答したか?
応答した場合, LAbR.12 へ進む.

LAbR.3 手続き Send_Message (MsgSource, Notification, Label
Request Aborted, TLV) を実行する. ここで TLV は, Label
Abort Request メッセージで受信した Label Request
Message ID TLV である.

LAbR.4 LSR は FEC に対する未完了の Label Request メッセージを
持っているか?
持っている場合, LAbR.7 へ進む.

LAbR.5 LSR は FEC のラベルマッピングを持っているか?
持っていない場合, LAbR.11 へ進む.

LAbR.6 イベントを生成する: MsgSource から FEC の Label Release
メッセージを受信した. (注 2 を参照.)
LAbR.11 へ進む.

LAbR.7 LSR は FEC の LSP をマージしているか?
そうでない場合, LAbR.9 へ進む.

LAbR.8 この FEC に対する未完了のラベル要求が存在するか?
存在する場合, LAbR.11 へ進む.

LAbR.9 手続き Send_Message (Next Hop, Label Abort Request, FEC,
TLV) を実行する. ここで TLV は, 未完了の Label Request
メッセージで LSR が使用した Message ID を含む Label
Request message ID TLV である.

LAbR.10 FEC の label abort request が保留中であることを記録
する.

LAbR.11 MsgSource からの FEC のラベル要求の記録を削除する.

LAbR.12 DONE.

注:

  1. LSR は, FEC および label abort request が運ぶ Label Request Message ID TLV を使用して, 以前に MsgSource から受信したラベル要求についての自身の記録 (あれば) を特定する.

  2. LSR が NextHop からラベルマッピングを受信している場合, それは, 自身が MsgSource へラベルマッピングを広告し, MsgSource がそれを解放したかのように振る舞うべきである.

A.1.4. Label Release の受信​

概要:

LSR がピアから FEC に対する Label Release メッセージを受信したとき, それは, 他のピアがその解放されたラベルを保持しているかどうかを確認する. どのピアも保持していない場合, LSR は, まだそうしていなければそのラベルを転送/スイッチングでの使用から除去し, かつ LSR がその FEC ネクストホップからラベルマッピングを保持している場合, それはそのラベルマッピングを解放する.

コンテキスト:

  • LSR. そのイベントを処理する LSR.

  • MsgSource. そのメッセージを送信した LDP ピア.

  • Label. そのメッセージで指定されたラベル.

  • FEC. そのメッセージで指定された FEC.

アルゴリズム:

   LRl.1   FEC は既知の FEC に一致するか?
一致しない場合, LRl.14 へ進む.

LRl.2 FEC の Label を保持するピアの記録から MsgSource を除去
する. (注 1 を参照.)

LRl.3 そのメッセージは, 以前に MsgSource へ送信した FEC の
未完了の label withdraw に一致するか?
一致しない場合, LRl.5 へ進む.

LRl.4 以前に MsgSource へ送信した FEC の未完了の label
withdraw の記録を削除する.

LRl.5 LSR はこの FEC のラベルをマージしているか?
そうでない場合, LRl.7 へ進む. (注 2 を参照.)

LRl.6 LSR はこの FEC に対する未完了のラベル広告を持っている
か?
持っている場合, LRl.11 へ進む.

LRl.7 LSR はその FEC の egress か?
そうである場合, LRl.11 へ進む.

LRl.8 FEC に対する Next Hop が存在するか? かつ LSR は, 以前
に Next Hop から受信した FEC のラベルマッピングを持って
いるか?
持っていない場合, LRl.11 へ進む.

LRl.9 LSR は release を伝播するよう設定されているか?
設定されていない場合, LRl.11 へ進む. (注 3 を参照.)

LRl.10 手続き Send_Message (Next Hop, Label Release, FEC,
Next Hop からの Label) を実行する.

LRl.11 MsgSource からのトラフィックについて, Label を転送/
スイッチングでの使用から除去する.

LRl.12 その FEC の Label を依然として保持しているピアがあるか?
ある場合, LRl.14 へ進む.

LRl.13 Label を解放する.

LRl.14 DONE.

注:

  1. LSR が Downstream Unsolicited ラベル配布を使用している場合, それは MsgSource が要求するまで, FEC に対するラベルマッピングを MsgSource へ再広告すべきではない (SHOULD NOT).

  2. LRl.5 から LRl.9 は, LSR がその Label Release を下流ピアへ伝播すべきかどうか (LRl.9) を決定することを扱う.

  3. LRl.9 に到達した場合, その FEC のラベルを保持する上流 LSR は存在せず, かつ LSR は FEC Next Hop からその FEC のラベルを保持している. LSR はその Label Release を Next Hop へ伝播しうる. Label Release を伝播することにより, LSR は潜在的に希少なラベル資源を解放する. そうすることはまた, MsgSource または他の上流 LSR がその FEC に対する新しい Label Request を自身に送信した場合に, LSP を再確立するための遅延を増大させる.

    解放を伝播するかどうかはプロトコルの問題ではない. 解放が伝播されてもされなくても, ラベル配布は正しく動作する. 伝播するかどうかの決定は, 運用環境においてラベルが希少な資源であるかどうか, 必要なシグナリング量を小さく保つことによって LSP 設定遅延を低く保つことの重要性, および運用環境において LSP 設定が ingress 制御か egress 制御かといった要因を考慮すべきである.

A.1.5. Label Withdraw の受信​

概要:

LSR が LDP ピアから FEC に対する Label Withdraw メッセージを受信したとき, それは Label Release メッセージで応答し, そのラベルをあらゆる転送/スイッチングでの使用から除去する. 順序制御が使用されている場合, LSR は, その FEC に対するラベルマッピングを以前に送信した各 LDP ピアへ Label Withdraw メッセージを送信する. LSR が独立制御を伴う Downstream on Demand ラベル広告を使用している場合, それはその後, ちょうどその FEC を認識したかのように動作する.

コンテキスト:

  • LSR. そのイベントを処理する LSR.

  • MsgSource. そのメッセージを送信した LDP ピア.

  • Label. そのメッセージで指定されたラベル.

  • FEC. そのメッセージで指定された FEC.

アルゴリズム:

   LWd.1   Label を転送/スイッチングでの使用から除去する.
(注 1 を参照.)

LWd.2 手続き Send_Message (MsgSource, Label Release, FEC,
Label) を実行する.

LWd.3 LSR は, 以前に MsgSource から受信して保持した FEC の
一致するラベルマッピングを持っているか?
持っていない場合, LWd.13 へ進む.

LWd.4 以前に MsgSource から受信した FEC の一致するラベル
マッピングを削除する.

LWd.5 LSR は順序制御を使用しているか?
そうである場合, LWd.8 へ進む.

LWd.6 MsgSource は Downstream On Demand ラベル広告を使用して
いるか?
使用していない場合, LWd.13 へ進む.

LWd.7 イベントを生成する: FEC について Recognize New FEC.
LWd.13 へ進む. (注 2 を参照.)

LWd.8 MsgSource 以外の各 Peer について, LWd.12 まで反復する.

LWd.9 LSR は以前に FEC のラベルマッピングを Peer へ送信した
か?
送信していない場合, LWd.8 の次の Peer について反復を
継続する.

LWd.10 以前に Peer へ送信したラベルは, ウィズドローされる
Label に「マップ」するか?
マップしない場合, LWd.8 の次の Peer について反復を継続
する. (注 3 を参照.)

LWd.11 手続き Send_Label_Withdraw (Peer, FEC, 以前に Peer へ
送信した Label) を実行する.

LWd.12 LWd.8 からの反復を終了する.

LWd.13 DONE.

注:

  1. Label が転送/スイッチングに使用されていない場合, LWd.1 は何の効果も持たない.

  2. LWd.7 は, LSR が独立制御を伴う Downstream On Demand ラベル配布を使用している場合を扱う. この状況で, LSR は, ちょうどその FEC を認識したかのように, FEC ネクストホップへラベル要求を送信すべきである.

  3. LWd.10 は, ラベルマージ (1 つ以上の入ラベルが同じ出ラベルにマップする) とラベルマージなし (1 つのラベルが出ラベルにマップする) の両方の場合を扱う.

A.1.6. 新たな FEC の認識​

概要:

ルーティングテーブルを介して新しい FEC を学習したときの LSR による応答は, 次の動作の 1 つ以上を伴いうる:

  • その FEC に対するラベルマッピングを 1 つ以上の LDP ピアへ送信すること;

  • その FEC に対するラベル要求を FEC ネクストホップへ送信すること;

  • LSR が FEC ネクストホップからその FEC に対するラベルマッピングを受信したときに生じうる動作のいずれか.

コンテキスト:

  • LSR. そのイベントを処理する LSR.

  • FEC. 新たに認識された FEC.

  • Next Hop. その FEC のネクストホップ.

  • InitAttributes. 新しい FEC に関連付ける属性. (注 1 を参照.)

  • SAttributes. ピアへ送信される Label Mapping または Label Request メッセージがあればそれに含める属性.

  • StoredHopCount. Next Hop から以前に受信した FEC ラベルマッピングに関連するホップカウント (あれば).

アルゴリズム:

   FEC.1   LSR Label Distribution 手順を実行する:

         Downstream Unsolicited Independent Control の場合

            1. 各 Peer について 5 まで反復する.

            2. LSR は以前に Next Hop から FEC のラベルマッピングを
               受信し保持したか?
               そうである場合, Propagating を IsPropagating に
               設定する.
               そうでない場合, Propagating を NotPropagating に
               設定する.

            3. 手続き Prepare_Label_Mapping_Attributes (Peer, FEC,
               InitAttributes, SAttributes, Propagating,
               Unknown hop count(0)) を実行する.

            4. 手続き Send_Label (Peer, FEC, SAttributes) を実行
               する.

            5. 1 からの反復を終了する.
               FEC.2 へ進む.

         Downstream Unsolicited Ordered Control の場合

            1. 各 Peer について 5 まで反復する.

            2. LSR はその FEC の egress か? または LSR は以前に
               Next Hop から FEC のラベルマッピングを受信し保持
               したか?
               そうでない場合, 次の Peer について反復を継続する.

            3. 手続き Prepare_Label_Mapping_Attributes (Peer, FEC,
               InitAttributes, SAttributes, Propagating,
               StoredHopCount) を実行する.

            4. 手続き Send_Label (Peer, FEC, SAttributes) を実行
               する.

            5. 1 からの反復を終了する.
               FEC.2 へ進む.

         Downstream On Demand Independent Control の場合 または
         Downstream On Demand Ordered Control の場合

            1. FEC.2 へ進む. (注 2 を参照.)

   FEC.2   LSR は以前に Next Hop から FEC のラベルマッピングを
           受信し保持したか?
           そうである場合, FEC.5 へ進む.

   FEC.3   Next Hop は LDP ピアか?
           そうでない場合, FEC.6 へ進む.

   FEC.4   LSR Label Request 手順を実行する:

         Request Never の場合

            1. FEC.6 へ進む.

         Request When Needed の場合 または
         Request On Request の場合

            1. 手続き Prepare_Label_Request_Attributes (Next Hop,
               FEC, InitAttributes, SAttributes) を実行する.

            2. 手続き Send_Label_Request (Next Hop, FEC,
               SAttributes) を実行する.
               FEC.6 へ進む.

   FEC.5   イベントを生成する: Next Hop から Label Mapping を
           受信した. (注 3 を参照.)

   FEC.6   DONE.

注:

  1. InitAttributes の一部となりうる属性の例は, Class of Service (CoS) のような望ましい LSP 特性を指定するものである. (LDP の現在のバージョンは CoS 属性を規定していないが, LDP 拡張が規定するかもしれないことに注意されたい.)

    FEC InitAttributes があればそれをどのように指定するかという手段は LDP の範囲を超える. InitAttributes が既知の Hop Count や Path Vector を含まないことに注意されたい.

  2. Downstream On Demand ラベル配布を使用する LSR は, 以前に受信して pending としてマークしたラベル要求を持っている場合にのみラベルを送信するであろう. LSR はそのような保留中の要求を持たないであろう. なぜなら, それは未知の FEC に対するラベル要求に, 要求元 LSR へ No Route 通知を送信しそのラベル要求を破棄することによって応答するからである. LRq.3 を参照されたい.

  3. LSR が Next Hop からその FEC のラベルを持っている場合, それは, ちょうど Next Hop からそのラベルを受信したかのように振る舞うべきである. これはリベラルラベル保持モードの場合に生じる.

A.1.7. FEC ネクストホップの変化の検出​

概要:

FEC のネクストホップの変化に対する LSR の応答は, 次の動作の 1 つ以上を伴いうる:

  • FEC の旧ネクストホップから受信したラベルを転送/スイッチングでの使用から除去すること;

  • その FEC に対する label mapping メッセージを 1 つ以上の LDP ピアへ送信すること;

  • FEC の新ネクストホップへラベル要求を送信すること;

  • LSR が FEC の新ネクストホップからラベルマッピングを受信したときに生じうる動作のいずれか.

コンテキスト:

  • LSR. そのイベントを処理する LSR.

  • FEC. ネクストホップが変化した FEC.

  • New Next Hop. その FEC の現在のネクストホップ.

  • Old Next Hop. その FEC の以前のネクストホップ.

  • OldLabel. Old Next Hop から以前に受信したラベル (あれば).

  • CurAttributes. その FEC に現在関連付けられている属性 (あれば).

  • SAttributes. New Next Hop へ送信される Label Request メッセージがあればそれに含める属性.

アルゴリズム:

   NH.1   LSR は以前に Old Next Hop から FEC のラベルマッピングを
受信し保持したか?
保持していない場合, NH.6 へ進む.

NH.2 label を転送/スイッチングでの使用から除去する.
(注 1 を参照.)

NH.3 LSR は Liberal Label retention を使用しているか?
そうである場合, NH.6 へ進む.

NH.4 手続き Send_Message (Old Next Hop, Label Release,
OldLabel) を実行する.

NH.5 Old Next Hop から以前に受信した FEC のラベルマッピング
を削除する.

NH.6 LSR は Old Next Hop との間で保留中のラベル要求を持って
いるか?
持っていない場合, NH.10 へ進む.

NH.7 LSR は Conservative Label retention を使用しているか?
使用していない場合, NH.10 へ進む.

NH.8 手続き Send_Message (Old Next Hop, Label Abort Request,
FEC, TLV) を実行する. ここで TLV は, 保留中のラベル要求
の message ID を運ぶ Label Request Message ID TLV である.

NH.9 FEC について Old Next Hop との間で label abort request
が保留中であることを記録する.

NH.10 FEC に対する New Next Hop が存在するか?
存在しない場合, NH.16 へ進む.

NH.11 LSR は以前に New Next Hop から FEC のラベルマッピングを
受信し保持したか?
保持していない場合, NH.13 へ進む.

NH.12 イベントを生成する: New Next Hop から Label Mapping を
受信した.
NH.20 へ進む. (注 2 を参照.)

NH.13 LSR は Downstream on Demand 広告を使用しているか? または
Next Hop は Downstream on Demand 広告を使用しているか?
または LSR は Conservative Label retention を使用して
いるか? (注 3 を参照.)
そうである場合, NH.14 へ進む.
そうでない場合, NH.20 へ進む.

NH.14 手続き Prepare_Label_Request_Attributes (Next Hop, FEC,
CurAttributes, SAttributes) を実行する.

NH.15 手続き Send_Label_Request (New Next Hop, FEC,
SAttributes) を実行する. (注 4 を参照.)
NH.20 へ進む.

NH.16 各 Peer について NH.19 まで反復する.

NH.17 LSR は以前に FEC のラベルマッピングを Peer へ送信した
か?
送信していない場合, NH.16 の次の Peer について反復を
継続する.

NH.18 手続き Send_Label_Withdraw (Peer, FEC, 以前に Peer へ
送信した Label) を実行する.

NH.19 NH.16 からの反復を終了する.

NH.20 DONE.

注:

  1. Label が転送/スイッチングに使用されていない場合, NH.2 は何の効果も持たない.

  2. LSR が New Next Hop からその FEC のラベルを持っている場合, それは, ちょうど New Next Hop からそのラベルを受信したかのように振る舞うべきである.

  3. ラベル保持モードについての確認の目的は, Label Mapping メッセージを扱う手順のステップ LMp.12 から LMp.13 との競合を避けることである. そこでは, コンサバティブラベル保持モードで動作する LSR が, FEC ネクストホップが変化したことを検出する前に, New Next Hop から受信したラベルマッピングを解放してしまっていることがある.

  4. LSR が使用している Label Request 手順にかかわらず, それは, NH.13 の条件が成り立つ場合にはラベル要求を送信しなければならない (MUST). したがって, それは LSR Label Request 手順を実行するのではなく, Send_Label_Request 手続きを直接実行する.

A.1.8. Notification の受信 / Label Request Aborted​

概要:

LSR が LDP ピアから Label Request Aborted 通知を受信したとき, それは, 対応するラベル要求トランザクションがあればそれが完了したことを記録する.

コンテキスト:

  • LSR. そのイベントを処理する LSR.

  • FEC. ラベルが要求された FEC.

  • RequestMessageID. 中止される label request message の message ID.

  • MsgSource. その Notification メッセージを送信した LDP ピア.

アルゴリズム:

   LRqA.1  その通知は, FEC についての未完了の label request abort
に対応するか? (注 1 を参照.)
対応しない場合, LRqA.3 へ進む.

LRqA.2 FEC のラベル要求が中止されたことを記録する.

LRqA.3 DONE.

注:

  1. LSR は, FEC および RequestMessageID を使用して, 未完了の label request abort についての自身の記録 (あれば) を特定する.

A.1.9. Notification の受信 / No Label Resources​

概要:

LSR が LDP ピアから No Label Resources 通知を受信したとき, それは, そのピアから Label Resources Available Notification を受信するまで, そのピアへの label request メッセージの送信を停止する.

コンテキスト:

  • LSR. そのイベントを処理する LSR.

  • FEC. ラベルが要求された FEC.

  • MsgSource. その Notification メッセージを送信した LDP ピア.

アルゴリズム:

   NoRes.1 MsgSource へ送信した FEC の未完了のラベル要求の記録を
削除する.

NoRes.2 MsgSource からの FEC のラベルマッピングが必要であるが,
ラベル資源が利用可能でないことを記録する.

NoRes.3 MsgSource へラベル要求を送信することが OK でないことを
示すステータス記録を設定する.

NoRes.4 DONE.

A.1.10. Notification の受信 / No Route​

概要:

LSR が Label Request メッセージへの応答として LDP ピアから No Route 通知を受信したとき, 使用中の Label No Route 手順がその応答を規定する. LSR は, それ以上何も動作を行わないか, またはタイマを開始することによってラベル要求を遅延させ, 後にタイマが満了したときにそのピアへ別の Label Request メッセージを送信する.

コンテキスト:

  • LSR. そのイベントを処理する LSR.

  • FEC. ラベルが要求された FEC.

  • Attributes. そのラベル要求に関連付けられた属性.

  • MsgSource. その Notification メッセージを送信した LDP ピア.

アルゴリズム:

   NoNH.1  MsgSource へ送信した FEC の未完了のラベル要求の記録を
削除する.

NoNH.2 LSR Label No Route 手順を実行する.

Request No Retry の場合

1. NoNH.3 へ進む.

Request Retry の場合

1. MsgSource へ送信すべき FEC および Attributes の遅延
されたラベル要求を記録する.

2. タイムアウトを開始する. NoNH.3 へ進む.

NoNH.3 DONE.

A.1.11. Notification の受信 / Loop Detected​

概要:

LSR が, Label Request メッセージまたは Label Mapping メッセージへの応答として, LDP ピアから Loop Detected Status Code を受信したとき, それは, No Route 通知を受信したかのように振る舞う.

コンテキスト:

「Notification の受信 / No Route」を参照されたい.

アルゴリズム:

「Notification の受信 / No Route」を参照されたい.

注:

  1. Loop Detected 通知が Label Request メッセージへの応答である場合, それは Notification メッセージ内の Status Code TLV で届く. それが Label Mapping メッセージへの応答である場合, それは Label Release メッセージ内の Status Code TLV で届く.

A.1.12. Notification の受信 / Label Resources Available​

概要:

LSR が LDP ピアから Label Resources Available 通知を受信したとき, それはそのピアへのラベル要求の送信を再開する.

コンテキスト:

  • LSR. そのイベントを処理する LSR.

  • MsgSource. その Notification メッセージを送信した LDP ピア.

  • SAttributes. 延期された Label Request メッセージとともに格納された属性.

アルゴリズム:

   Res.1   MsgSource へラベル要求を送信することが OK であることを
示すステータス記録を設定する.

Res.2 MsgSource から必要であり, かつラベル資源が利用可能で
ない FEC ラベルマッピングの記録ごとに, Res.6 まで反復
する.

Res.3 MsgSource は FEC のネクストホップか?
そうでない場合, Res.5 へ進む.

Res.4 手続き Send_Label_Request (MsgSource, FEC,
SAttributes) を実行する. 手続きが失敗した場合, 反復を
終了する.

Res.5 MsgSource から必要とされる FEC のラベルマッピングに
ついて利用可能な資源がないという記録を削除する.

Res.6 Res.2 からの反復を終了する.

Res.7 DONE.

A.1.13. ローカルのラベル資源が利用可能になったことの検出​

概要:

LSR が LDP ピアへ No Label Resources 通知を送信した後, 後にラベル資源が利用可能になったとき, それはそのような各ピアへ Label Resources Available 通知を送信する.

コンテキスト:

  • LSR. そのイベントを処理する LSR.

  • Attributes. 延期された Label Mapping メッセージとともに格納された属性.

アルゴリズム:

   ResA.1  以前に No Label Resources 通知を送信した各 Peer につい
て, ResA.4 まで反復する.

ResA.2 手続き Send_Notification (Peer, Label Resources
Available) を実行する.

ResA.3 No Label Resources 通知が以前に Peer へ送信されたと
いう記録を削除する.

ResA.4 ResA.1 からの反復を終了する.

ResA.5 Peer のために必要であり, かつラベル資源がない FEC
ラベルマッピングの記録ごとに, ResA.8 まで反復する.
(注 1 を参照.)

ResA.6 手続き Send_Label (Peer, FEC, Attributes) を実行する.
手続きが失敗した場合, 反復を終了する.

ResA.7 Peer のために必要であり, かつラベル資源がない FEC
ラベルマッピングの記録を消去する.

ResA.8 ResA.5 からの反復を終了する.

ResA.9 DONE.

注:

  1. ResA.5 から ResA.8 の反復は, LSR が Downstream Unsolicited ラベル配布を使用しており, 以前に FEC のラベルを割り当てられなかった状況を扱う.

A.1.14. LSR が FEC をラベルスイッチングしなくなる決定​

概要:

LSR は, LDP ピアに対して FEC をラベルスイッチングしなくなることを一方的に決定してよい. そうする LSR は, その FEC に対する Label Withdraw メッセージをそのピアへ送信しなければならない (MUST).

コンテキスト:

  • Peer. そのピア.

  • FEC. その FEC.

  • PrevAdvLabel. 以前にその Peer へ広告された FEC のラベル.

アルゴリズム:

   NoLS.1  手続き Send_Label_Withdraw (Peer, FEC, PrevAdvLabel) を
実行する. (注 1 を参照.)

NoLS.2 DONE.

注:

  1. LSR は, このイベントの一部として, または label withdraw に応答してピアから届く Label Release を処理する一部として, そのラベルを転送/スイッチングでの使用から除去してよい. LSR がピアからの Label Release メッセージを待たない場合, それは Label Release を受信するまでそのラベルを再利用すべきではない (SHOULD NOT).

A.1.15. 遅延された Label Request のタイムアウト​

概要:

ラベル要求は, No Route および Loop Detected 通知に応答して遅延される. ピアに対する遅延された FEC ラベル要求がタイムアウトしたとき, LSR はそのラベル要求を送信する.

コンテキスト:

  • LSR. そのイベントを処理する LSR.

  • FEC. タイムアウトイベントに関連する FEC.

  • Peer. タイムアウトイベントに関連する LDP ピア.

  • Attributes. 遅延された Label Request メッセージとともに格納された属性.

アルゴリズム:

   TO.1    遅延されたラベル要求の記録を取り出す.

TO.2 Peer は FEC のネクストホップか?
そうでない場合, TO.4 へ進む.

TO.3 手続き Send_Label_Request (Peer, FEC) を実行する.

TO.4 DONE.