跳到主要内容

4. Capabilities 可选参数 (Capabilities Optional Parameter, Parameter Type 2)

4. Capabilities 可选参数 (Capabilities Optional Parameter, Parameter Type 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 中, 能力集合均应以相同方式处理.