4. Capabilities Optional Parameter (Capabilities オプションパラメータ, Parameter Type 2)
4. Capabilities Optional Parameter (Parameter Type 2) (Capabilities オプションパラメータ, パラメータ型 2)
これは BGP speaker が BGP peer に対し自身がサポートする capability の一覧を伝えるために用いる Optional Parameter である. BGP Optional Parameter の符号化は [RFC4271] のセクション 4.2 に規定される. Capabilities Optional Parameter の parameter type は 2 である.
当該パラメータは 1 つ以上の <Capability Code, Capability Length, Capability Value> の triple (三つ組) を含み, 各 triple は次のように符号化される:
+------------------------------+
| Capability Code (1 octet) |
+------------------------------+
| Capability Length (1 octet) |
+------------------------------+
| Capability Value (variable) |
~ ~
+------------------------------+
これらのフィールドの用法と意味は次のとおりである:
Capability Code:
Capability Code は, 個々の capability を曖昧さなく識別する 1 オクテットの符号なし 2 進整数である.
Capability Length:
Capability Length は, Capability Value フィールドの長さをオクテット単位で示す 1 オクテットの符号なし 2 進整数である.
Capability Value:
Capability Value は, Capability Code フィールドの値に従って解釈される可変長フィールドである.
BGP speaker は, 同一の Capability Code, Capability Length, Capability Value を持つ capability を複数含めるべきではない. ただし, そのような capability の複数インスタンスの処理に特別な取扱いは不要である. 追加のインスタンスはアドバタイズされた capability の意味を変えないからである. したがって BGP speaker は, そのような複数インスタンスを受け入れる準備ができていなければならない.
BGP speaker は, Capability Code で識別される capability について, Capability Length フィールドが非ゼロで Capability Value が異なり, Capability Length が同一でも異なってもよい複数インスタンスを含めてもよい. これらのインスタンスの処理は Capability Code 固有であり, 新 capability を導入する文書に記述されなければならない.
Capabilities Optional Parameter (OPEN Optional Parameter Type 2) は OPEN メッセージに 1 回だけ含めるべきである. BGP speaker が OPEN メッセージに複数の capability を含めたい場合, 上記のとおり, 単一の Capabilities Optional Parameter 内にそれらすべてを TLV として列挙するべきである. ただし後方互換のため, BGP speaker は, それぞれが 1 つ以上の capabilities TLV を含む複数の Capabilities Optional Parameter を含む OPEN メッセージを受信する準備ができていなければならない. capability の集合は, OPEN メッセージの単一の Capabilities Optional Parameter 内に列挙されている場合も, 複数の Capabilities Optional Parameter に分割されている場合も, 同じ方法で処理されるべきである.