A.2. 共通のラベル配布手続き
本セクションは, ラベル配布イベントを処理するアルゴリズムによって使用されるユーティリティ手続きを規定する.
A.2.1. Send_Label
概要:
Send_Label 手続きは, 可能であれば LDP ピアに対する FEC のラベルを割り当て, その FEC に対するラベルマッピングをそのピアへ送信する. LSR がそのラベルを割り当てられない場合, かつそのピアからの保留中のラベル要求を持っている場合, それはその LDP ピアへ No Label Resources 通知を送信する.
パラメータ:
-
Peer. ラベルマッピングを送信すべき LDP ピア.
-
FEC. ラベルマッピングを送信すべき FEC.
-
Attributes. ラベルマッピングに含める属性.
追加のコンテキスト:
-
LSR. その手続きを実行する LSR.
-
Label. 割り当てられ, Peer へ送信されるラベル.
アルゴリズム:
SL.1 LSR に割り当てるラベルがあるか?
ない場合, SL.9 へ進む.
SL.2 Label を割り当て, それを FEC にバインドする.
SL.3 Label を転送/スイッチングでの使用のためにインストールする.
SL.4 手続き Send_Message (Peer, Label Mapping, FEC, Label,
Attributes) を実行する.
SL.5 Label および Attributes を持つ FEC のラベルマッピングが
Peer へ送信されたことを記録する.
SL.6 LSR は, Peer からの FEC のラベル要求の記録であって
pending としてマークされたものを持っているか?
持っていない場合, SL.8 へ進む.
SL.7 Peer からの FEC の保留中のラベル要求の記録を削除する.
SL.8 成功を返す.
SL.9 LSR は, Peer からの FEC のラベル要求であって pending
としてマークされたものを持っているか?
持っていない場合, SL.13 へ進む.
SL.10 手続き Send_Notification (Peer, No Label Resources) を
実行する.
SL.11 Peer からの FEC の保留中のラベル要求の記録を削除する.
SL.12 No Label Resources 通知が Peer へ送信されたことを記録
する.
SL.14 へ進む.
SL.13 Peer に対する FEC および Attributes のラベルマッピング
が必要であるが, ラベル資源がないことを記録する.
(注 1 を参照.)
SL.14 失敗を返す.
注:
- SL.13 は, LSR が Peer へ送信する FEC のラベルを割り当てられない場合の Downstream Unsolicited ラベル配布の場合を扱う.
A.2.2. Send_Label_Request
概要:
LSR は, 現在そうすることが許されている場合に, Send_Label_Request 手続きを使用して FEC のラベルの要求を LDP ピアへ送信する.
パラメータ:
-
Peer. ラベル要求を送信すべき LDP ピア.
-
FEC. ラベル要求を送信すべき FEC.
-
Attributes. ラベル要求に含める属性, 例えば Hop Count, Path Vector.
追加のコンテキスト:
- LSR. その手続きを実行する LSR.
アルゴリズム:
SLRq.1 FEC のラベル要求が以前に Peer へ送信されており, それが
outstanding としてマークされているか?
そうである場合, 成功を返す. (注 1 を参照.)
SLRq.2 Peer へラベル要求を送信してよいことを示すステータス記録
が設定されているか?
設定されていない場合, SLRq.6 へ進む.
SLRq.3 手続き Send_Message (Peer, Label Request, FEC,
Attributes) を実行する.
SLRq.4 FEC のラベル要求が Peer へ送信されたことを記録し, それ
を outstanding としてマークする.
SLRq.5 成功を返す.
SLRq.6 Peer からの FEC および Attributes のラベルマッピングが
必要であるが, ラベル資源が利用可能でないことを記録する
ことによって, ラベル要求を延期する.
SLRq.7 失敗を返す.
注:
- LSR がマージを行わない LSR である場合, それは, 異なる上流 LDP ピアによって引き起こされた FEC のラベル要求の送信の試みと, 重複要求とを区別しなければならない. この手続きは重複したラベル要求を送信しない.
A.2.3. Send_Label_Withdraw
概要:
LSR は, Send_Label_Withdraw 手続きを使用して LDP ピアから FEC のラベルをウィズドローする. これを行うため, LSR はそのピアへ Label Withdraw メッセージを送信する.
パラメータ:
-
Peer. ラベルウィズドローを送信すべき LDP ピア.
-
FEC. ラベルがウィズドローされつつある FEC.
-
Label. ウィズドローされつつあるラベル.
追加のコンテキスト:
- LSR. その手続きを実行する LSR.
アルゴリズム:
SWd.1 手続き Send_Message (Peer, Label Withdraw, FEC, Label)
を実行する.
SWd.2 FEC の label withdraw が Peer へ送信されたことを記録し,
それを outstanding としてマークする.
A.2.4. Send_Notification
概要:
LSR は, Send_Notification 手続きを使用して LDP ピアへ Notification メッセージを送信する.
パラメータ:
-
Peer. Notification メッセージを送信すべき LDP ピア.
-
Status. Notification メッセージに含めるステータスコード.
追加のコンテキスト:
なし.
アルゴリズム:
SNt.1 手続き Send_Message (Peer, Notification, Status) を実行
する.
A.2.5. Send_Message
概要:
LSR は, Send_Message 手続きを使用して LDP ピアへ LDP メッセージを送信する.
パラメータ:
-
Peer. メッセージを送信すべき LDP ピア.
-
Message Type. 送信すべきメッセージのタイプ.
-
Additional message contents . . . .
追加のコンテキスト:
なし.
アルゴリズム:
この手続きは, LSR が指定されたタイプの LDP メッセージを指定された LDP ピアへ送信する手段である.
A.2.6. Check_Received_Attributes
概要:
Label Mapping または Label Request メッセージで受信した属性を確認する. その属性が Hop Count または Path Vector を含む場合, Loop Detection の確認を行う. ループが検出された場合, Loop Detected Notification メッセージを MsgSource へ送信させる.
パラメータ:
-
MsgSource. そのメッセージを送信した LDP ピア.
-
MsgType. 受信したメッセージのタイプ.
-
RAttributes. そのメッセージ内の属性.
追加のコンテキスト:
-
LSR Id. この LSR の一意な LSR Id.
-
Hop Count. 受信した属性内の Hop Count (あれば).
-
Path Vector. 受信した属性内の Path Vector (あれば).
アルゴリズム:
CRa.1 RAttributes は Hop Count を含むか?
含まない場合, CRa.5 へ進む.
CRa.2 Hop Count は Max allowable hop count を超えているか?
超えている場合, CRa.6 へ進む.
CRa.3 RAttributes は Path Vector を含むか?
含まない場合, CRa.5 へ進む.
CRa.4 Path Vector は LSR Id を含むか? または Path Vector の
長さが Max allowable length を超えているか?
そうである場合, CRa.6 へ進む.
CRa.5 No Loop Detected を返す.
CRa.6 MsgType は LabelMapping か?
そうである場合, CRa.8 へ進む. (注 1 を参照.)
CRa.7 手続き Send_Notification (MsgSource, Loop Detected) を
実行する.
CRa.8 Loop Detected を返す.
CRa.9 DONE.
注:
- 確認される属性が Label Mapping メッセージで受信されたものである場合, LSR は Loop Detected 通知を Label Release メッセージ内の Status Code TLV で送信する. (セクション「Receive Label Mapping」を参照.)
A.2.7. Prepare_Label_Request_Attributes
概要:
この手続きは, Label Request を Peer へ送信すべきときはいつでも, そのメッセージに含める Hop Count および Path Vector があればそれを計算するために使用される.
パラメータ:
-
Peer. メッセージを送信すべき LDP ピア.
-
FEC. ラベル要求を送信すべき FEC.
-
RAttributes. この LSR が FEC に対する LSP に関連付ける属性.
-
SAttributes. Label Request メッセージに含める属性.
追加のコンテキスト:
- LSR Id. この LSR の一意な LSR Id.
アルゴリズム:
PRqA.1 この Peer に対して Hop Count が必要か? (注 1 を参照.)
または RAttributes は Hop Count を含むか? または
Loop Detection は LSR で設定されているか?
そうでない場合, PRqA.14 へ進む.
PRqA.2 LSR は FEC の ingress か?
そうでない場合, PRqA.6 へ進む.
PRqA.3 SAttributes にホップカウント 1 を含める.
PRqA.4 Loop Detection は LSR で設定されているか?
そうでない場合, PRqA.14 へ進む.
PRqA.5 LSR はマージ可能か?
そうである場合, PRqA.14 へ進む.
そうでない場合, PRqA.13 へ進む.
PRqA.6 RAttributes は Hop Count を含むか?
含まない場合, PRqA.8 へ進む.
PRqA.7 RAttributes の Hop Count をインクリメントし, その結果
の Hop Count を SAttributes にコピーする.
(注 2 を参照.)
PRqA.9 へ進む.
PRqA.8 SAttributes に未知 (0) のホップカウントを含める.
PRqA.9 Loop Detection は LSR で設定されているか?
そうでない場合, PRqA.14 へ進む.
PRqA.10 RAttributes は Path Vector を持つか?
持つ場合, PRqA.12 へ進む.
PRqA.11 LSR はマージ可能か?
そうである場合, PRqA.14 へ進む.
そうでない場合, PRqA.13 へ進む.
PRqA.12 RAttributes からの Path Vector の先頭に LSR Id を追加
し, その結果の Path Vector を SAttributes にコピーする.
PRqA.14 へ進む.
PRqA.13 SAttributes に, LSR Id を含む長さ 1 の Path Vector を
含める.
PRqA.14 DONE.
注:
-
Peer とのリンクが, Hop Count を Label Request メッセージに含めることを要求することがある. 例えば, [RFC3035] および [RFC3034] を参照されたい.
-
ホップカウントの算術では, unknown + 1 = unknown である.
A.2.8. Prepare_Label_Mapping_Attributes
概要:
この手続きは, Label Mapping を Peer へ送信すべきときはいつでも, そのメッセージに含める Hop Count および Path Vector があればそれを計算するために使用される.
パラメータ:
-
Peer. メッセージを送信すべき LDP ピア.
-
FEC. ラベル要求を送信すべき FEC.
-
RAttributes. この LSR が FEC に対する LSP に関連付ける属性.
-
SAttributes. Label Mapping メッセージに含める属性.
-
IsPropagating. LSR が, FEC ネクストホップから受信した Label Mapping メッセージを伝播するために送信していること.
-
PrevHopCount. この LSR がその FEC に対する LSP に関連付ける Hop Count (あれば).
追加のコンテキスト:
- LSR Id. この LSR の一意な LSR Id.
アルゴリズム:
PMpA.1 RAttributes は未知の TLV を含むか?
含まない場合, PMpA.4 へ進む.
PMpA.2 U-bit および F-bit の設定はこれらの TLV の転送を要求
しているか?
要求していない場合, PMpA.4 へ進む.
PMpA.3 未知の TLV を SAttributes にコピーする.
PMpA.4 この Peer に対して Hop Count が必要か? (注 1 を参照.)
または RAttributes は Hop Count を含むか? または
Loop Detection は LSR で設定されているか?
そうでない場合, PMpA.24 へ進む.
PMpA.5 LSR は FEC の egress か?
そうでない場合, PMpA.7 へ進む.
PMpA.6 SAttributes にホップカウント 1 を含める.
PMpA.24 へ進む.
PMpA.7 RAttributes は Hop Count を持つか?
持たない場合, PMpA.11 へ進む.
PMpA.8 LSR が, その LSR 群が TTL decrement を行わない LSR
ドメインのエッジ集合のメンバーであり, かつ Peer がその
ドメイン内にあるか? (注 2 を参照.)
そうでない場合, PMpA.10 へ進む.
PMpA.9 SAttributes にホップカウント 1 を含める.
PMpA.12 へ進む.
PMpA.10 RAttributes の Hop Count をインクリメントし, その結果
の Hop Count を SAttributes にコピーする.
(注 2 を参照.) PMpA.12 へ進む.
PMpA.11 SAttributes に未知 (0) のホップカウントを含める.
PMpA.12 Loop Detection は LSR で設定されているか?
そうでない場合, PMpA.24 へ進む.
PMpA.13 RAttributes は Path Vector を持つか?
持つ場合, PMpA.22 へ進む.
PMpA.14 LSR は受信した Label Mapping を伝播しているか?
そうでない場合, PMpA.23 へ進む.
PMpA.15 LSR はマージをサポートするか?
サポートしない場合, PMpA.17 へ進む.
PMpA.16 LSR は以前に FEC の Label Mapping を Peer へ送信した
か?
送信していない場合, PMpA.23 へ進む.
PMpA.17 RAttributes は Hop Count を含むか?
含まない場合, PMpA.24 へ進む.
PMpA.18 RAttributes 内の Hop Count は未知 (0) か?
そうである場合, PMpA.23 へ進む.
PMpA.19 LSR は以前に FEC の Label Mapping を Peer へ送信した
か?
送信していない場合, PMpA.24 へ進む.
PMpA.20 RAttributes 内の Hop Count は PrevHopCount と異なるか?
異ならない場合, PMpA.24 へ進む.
PMpA.21 RAttributes 内の Hop Count > PrevHopCount か? または
PrevHopCount は未知 (0) か?
そうでない場合, PMpA.24 へ進む.
PMpA.22 RAttributes からの Path Vector の先頭に LSR Id を追加
し, その結果の Path Vector を SAttributes にコピーする.
PMpA.24 へ進む.
PMpA.23 SAttributes に, LSR Id を含む長さ 1 の Path Vector を
含める.
PMpA.24 DONE.
注:
-
Peer とのリンクが, Hop Count を Label Mapping メッセージに含めることを要求することがある. 例えば, [RFC3035] および [RFC3034] を参照されたい.
-
LSR が, TTL-decrement を行わない LSR の雲 (cloud) のエッジにあり, かつ Label Mapping メッセージをその雲の中へ上流に向けて伝播している場合, それは, 雲を横断する Hop Count が正しく計算されるように, Hop Count を 1 に設定する. これは, 雲を通過する LSP の部分を横断して転送されるパケットのための適切な TTL 管理を保証する.
-
ホップカウントの算術では, unknown + 1 = unknown である.