3.5.2. Hello メッセージ
LDP Hello メッセージは LDP Discovery メカニズムの一部として交換される. セクション「LDP Discovery」を参照されたい.
Hello メッセージの符号化は次のとおり:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|0| Hello (0x0100) | Message Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Message ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Common Hello Parameters TLV |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Optional Parameters |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Message ID このメッセージを識別するために使用される 32 ビット値.
Common Hello Parameters TLV すべての Hello メッセージに共通のパラメータを指定する. Common Hello Parameters TLV の符号化は次のとおり:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|0|0| Common Hello Parms(0x0400)| Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Hold Time |T|R| Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Hold Time Hello の保持時間 (秒). LSR は, 潜在的なピアから受信した Hello の記録を維持する (セクション「Hello Message Procedures」を参照). Hello Hold Time は, 送信側 LSR が, 別の Hello を受信することなく, 受信側 LSR からの Hello の記録を維持する時間を指定する.
一対の LSR は, 互いからの Hello に対して使用する保持時間をネゴシエートする. 各々が保持時間を提案する. 使用される保持時間は, それぞれの Hello で提案された保持時間の最小値である.
値 0 はデフォルトを使用することを意味し, これは Link Hello では 15 秒, Targeted Hello では 45 秒である. 値 0xffff は無限を意味する.
T, Targeted Hello 値 1 は, この Hello が Targeted Hello であることを指定する. 値 0 は, この Hello が Link Hello であることを指定する.
R, Request Send Targeted Hellos 値 1 は, この Hello の送信元に対して定期的な Targeted Hello を送信することを受信側に要求する. 値 0 は何も要求しない.
Extended Discovery を開始する LSR は R を 1 に設定する. R が 1 の場合, 受信側 LSR は, この要求を持つ Hello に応答して, Hello 送信元へ Targeted Hello を送信するよう設定されているかどうかを確認する. 設定されていない場合, それはその要求を無視する. 設定されている場合, それは Hello 送信元への Targeted Hello の定期的送信を開始する.
Reserved このフィールドは予約されている. 送信時にはゼロに設定されなければならず (MUST), 受信時には無視されなければならない (MUST).
Optional Parameters Hello メッセージのこの可変長フィールドは 0 個以上のパラメータを含み, 各パラメータは TLV として符号化される. このバージョンのプロトコルで定義される任意パラメータは次のとおり:
Optional Parameter Type Length Value
IPv4 Transport Address 0x0401 4 See below
Configuration 0x0402 4 See below
Sequence Number
IPv6 Transport Address 0x0403 16 See below
IPv4 Transport Address LDP セッションの TCP 接続を開く際に送信側 LSR が使用すべき IPv4 アドレスを指定する. この任意 TLV が存在しない場合, Hello を運ぶ UDP パケットの IPv4 送信元アドレスが使用されることが望ましい (SHOULD).
Configuration Sequence Number 送信側 LSR の設定状態を識別する, 4 オクテットの符号なし設定シーケンス番号を指定する. 受信側 LSR が, 送信側 LSR における設定変更を検出するために使用する.
IPv6 Transport Address LDP セッションの TCP 接続を開く際に送信側 LSR が使用すべき IPv6 アドレスを指定する. この任意 TLV が存在しない場合, Hello を運ぶ UDP パケットの IPv6 送信元アドレスが使用されることが望ましい (SHOULD).
3.5.2.1. Hello メッセージの手順
別の LSR から Hello を受信する LSR は, その Hello に対応する Hello 隣接を維持する. LSR はその Hello 隣接に対して保持タイマを維持し, Hello 隣接に一致する Hello を受信するたびにそれを再起動する. Hello 隣接の保持タイマが満了した場合, LSR はその Hello 隣接を破棄する. セクション「Maintaining Hello Adjacencies」および「Maintaining LDP Sessions」を参照されたい.
Hello の送信間隔は, Hello 保持時間の最大 3 分の 1 とすることを推奨する.
LSR は, 受信した LDP Hello を次のように処理する:
-
LSR は, その Hello が受け入れ可能かどうかを確認する. Hello が受け入れ可能かどうかを判定するための基準は実装依存である (基準の例については以下を参照).
-
Hello が受け入れ可能でない場合, LSR はそれを無視する.
-
Hello が受け入れ可能である場合, LSR は, Hello 送信元に対する Hello 隣接を持っているかどうかを確認する. 持っている場合, その Hello 隣接の保持タイマを再起動する. 持っていない場合, Hello 送信元に対する Hello 隣接を作成し, その保持タイマを開始する.
-
Hello が任意の TLV を運んでいる場合, LSR はそれらを処理する (以下を参照).
-
最後に, LSR が, その Hello の PDU ヘッダ内の LDP Identifier で指定されるラベル空間に対する LDP セッションを持っていない場合, それはセクション「LDP Session Establishment」の手順に従う.
以下は, Link Hello および Targeted Hello の受け入れ可能性基準の例である:
Link Hello は, それが受信されたインタフェースがラベルスイッチング用に設定されている場合に受け入れ可能である.
送信元アドレス A からの Targeted Hello は, 次のいずれかである場合に受け入れ可能である:
-
LSR が Targeted Hello を受け入れるよう設定されている, または
-
LSR が A へ Targeted Hello を送信するよう設定されている.
以下は, LSR が Hello の任意 TLV をどのように処理するかを記述する:
Transport Address LSR は, 指定されたトランスポートアドレスをその Hello 隣接に関連付ける.
Configuration Sequence Number Configuration Sequence Number 任意パラメータは, 送信側 LSR が設定変更を受信側 LSR に通知するために使用する. LDP セッション確立においてアクティブな役割を果たす受信側 LSR が, 送信側 LSR の設定における変更を検出した場合, それは送信側 LSR に関連付けられたセッション設定制御バックオフ遅延がもしあればそれをクリアしてよい (セクション「Session Initialization」を参照).
この任意パラメータを使用する送信側 LSR は, Hello メッセージで送信する設定シーケンス番号を維持する責任を負う. 送信側 LSR で設定変更があるたびに, それはその設定シーケンス番号をインクリメントする.