4. Capabilities Optional Parameter (Capabilities 可选参数, Parameter Type 2)
4. Capabilities Optional Parameter (Parameter Type 2) (Capabilities 可选参数, 参数类型 2)
这是一种 Optional Parameter (可选参数), BGP speaker 用它向 BGP peer 传达自身所支持的能力列表. BGP Optional Parameters 的编码在 [RFC4271] 第 4.2 节规定. Capabilities Optional Parameter 的 parameter type (参数类型) 为 2.
该参数包含一个或多个三元组 <Capability Code, Capability Length, Capability Value>, 每个三元组编码如下:
+------------------------------+
| Capability Code (1 octet) |
+------------------------------+
| Capability Length (1 octet) |
+------------------------------+
| Capability Value (variable) |
~ ~
+------------------------------+
各字段的用途与含义如下:
Capability Code:
Capability Code 是一个单字节无符号二进制整数, 无歧义地标识各项能力.
Capability Length:
Capability Length 是一个单字节无符号二进制整数, 表示 Capability Value 字段的字节长度.
Capability Value:
Capability Value 是可变长字段, 按 Capability Code 字段的值解释.
BGP speaker 不应包含多个具有相同 Capability Code, Capability Length 和 Capability Value 的能力实例. 但应注意, 处理此类能力的多个实例并不需要特殊处理, 因为额外实例不会改变已通告能力的含义; 因此 BGP speaker 必须能够接受多个此类实例.
BGP speaker 可以包含多个由 Capability Code 标识的能力实例, 其 Capability Length 字段非零, 但 Capability Value 不同, Capability Length 可以相同或不同. 这些能力实例的处理方式取决于具体的 Capability Code, 必须在引入该新能力的文档中描述.
Capabilities Optional Parameter (OPEN Optional Parameter Type 2) 在 OPEN 消息中应只出现一次. 若 BGP speaker 希望在 OPEN 消息中包含多种能力, 应按上文讨论的方式操作, 即在单个 Capabilities Optional Parameter 内将所有这些能力列为 TLV. 但为向后兼容, BGP speaker 必须能够接收包含多个 Capabilities Optional Parameter 的 OPEN 消息, 每个参数内包含一个或多个 capabilities TLV. 无论能力是在单个 Capabilities Optional Parameter 中枚举, 还是分散在多个 Capabilities Optional Parameter 中, 能力集合均应以相同方式处理.