3.6. 用于可扩展性的消息与 TLV
对 LDP 可扩展性的支持包括关于 U 位和 F 位的规则, 它们规定 LSR 如何处理未知 TLV 和未知消息。
本节规定供厂商私有和实验性使用的 TLV 与消息。
3.6.1. LDP 厂商私有扩展
厂商私有 TLV 和消息用于在 LSR 之间传递厂商私有信息。
3.6.1.1. LDP 厂商私有 TLV
Type 范围 0x3E00 到 0x3EFF 保留给厂商私有 TLV。
厂商私有 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|U|F| Type (0x3E00-0x3EFF) | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Vendor ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| Data.... |
~ ~
| |
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
U-bit
未知 TLV 位。收到未知 TLV 时, 如果 U 为 0, 则必须向消息发起方返回一个通知, 并且必须忽略整条消息; 如果 U 为 1, 则静默忽略该未知 TLV, 并像该未知 TLV 不存在一样处理消息的其余部分。
判定一条厂商私有消息是否被理解, 依据的是 Type 和必需的 Vendor ID 字段。
支持厂商私有 TLV 的实现必须支持一个用户可访问的配置接口, 使得所有发送的厂商私有 TLV 都置位 U 位; 该要求可以通过一个用户可访问的、阻止发送所有 U 位为 0 的厂商私有 TLV 的配置接口来满足。
F-bit
转发未知 TLV 位。该位仅在 U 位被置位, 且包含该未知 TLV 的 LDP 消息需要被转发时适用。如果 F 为 0, 则该未知 TLV 不随包含它的消息一起转发; 如果 F 为 1, 则该未知 TLV 随包含它的消息一起转发。
Type
取值范围为 0x3E00 到 0x3EFF 的 Type 值。Type 与 Vendor ID 字段共同规定 Data 字段应如何解释。
Length
规定 Vendor ID 和 Data 字段的累计长度 (以八位组为单位)。
Vendor ID
由 IEEE 分配的 802 Vendor ID。
Data
Value 字段中 Vendor ID 之后的其余八位组为可选的、依赖于厂商的数据。
3.6.1.2. LDP 厂商私有消息
Message Type 范围 0x3E00 到 0x3EFF 保留给厂商私有消息。
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|U| Msg Type (0x3E00-0x3EFF) | Message Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Message ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Vendor ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ +
| Remaining Mandatory Parameters |
+ +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ +
| Optional Parameters |
+ +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
U-bit
未知消息位。收到未知消息时, 如果 U 为 0, 则向消息发起方返回一个通知; 如果 U 为 1, 则静默忽略该未知消息。
判定一条厂商私有消息是否被理解, 依据的是 Msg Type 和 Vendor ID 参数。
支持厂商私有消息的实现必须支持一个用户可访问的配置接口, 使得所有发送的厂商私有消息都置位 U 位; 该要求可以通过一个用户可访问的、阻止发送所有 U 位为 0 的厂商私有消息的配置接口来满足。
Msg Type
取值范围为 0x3E00 到 0x3EFF 的 Message Type 值。Msg Type 与 Vendor ID 共同规定该消息应如何解释。
Message Length
规定 Message ID、Vendor ID、Remaining Mandatory Parameters 和 Optional Parameters 的累计长度 (以八位组为单位)。
Message ID
用于标识本消息的 32 位整数。发送方 LSR 用它来便于识别可能适用于本消息的通知消息。响应本消息而发送通知消息的 LSR 将在该通知消息中包含本 Message ID; 见 "Notification Message" 一节。
Vendor ID
由 IEEE 分配的 802 Vendor ID。
Remaining Mandatory Parameters
其余必需消息参数的可变长度集合。
Optional Parameters
可选消息参数的可变长度集合。
3.6.2. LDP 实验性扩展
LDP 对实验的支持与对厂商私有扩展的支持类似, 但有如下差异:
-
Type 范围 0x3F00 到 0x3FFF 保留给实验性 TLV。
-
Message Type 范围 0x3F00 到 0x3FFF 保留给实验性消息。
-
实验性 TLV 和消息的编码与厂商私有编码类似, 但有如下差异。
实验性 TLV 和消息使用 Experiment ID 字段代替 Vendor ID 字段。Experiment ID 字段与 Type 或 Message Type 字段一起规定该实验性 TLV 或消息的解释。
Experiment ID 的管理由各实验者负责。