跳到主要内容

3.5.3. 初始化消息

LDP 初始化 (Initialization) 消息作为 LDP 会话建立过程的一部分进行交换; 见 "LDP Session Establishment" 一节。

初始化消息的编码为:

 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| Initialization (0x0200) | Message Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Message ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Common Session Parameters TLV |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Optional Parameters |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Message ID

用于标识本消息的 32 位值。

Common Session Parameters TLV

规定发送方 LSR 为每个 LDP 会话都必须协商的参数所提议的取值。

Common Session 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 Sess Parms (0x0500)| Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Protocol Version | KeepAlive Time |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|A|D| Reserved | PVLim | Max PDU Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Receiver LDP Identifier |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-++

Protocol Version

包含协议版本号的两字节无符号整数。本版本规范规定 LDP 协议版本为 1。

KeepAlive Time

两字节无符号非零整数, 指示发送方 LSR 为 KeepAlive Time 的值所提议的秒数。接收方 LSR 必须 (MUST) 使用其自身提议的 KeepAlive Time 与 PDU 中收到的 KeepAlive Time 中的较小者来计算 KeepAlive Timer 的值。

所选的 KeepAlive Time 值指示在会话 TCP 连接上连续收到来自 LDP 对等体的 PDU 之间可能经过的最大秒数。KeepAlive Timer 在每次有 PDU 到达时被重置。

A, Label Advertisement Discipline

指示标签通告的类型。取值为 0 表示下游主动 (Downstream Unsolicited) 通告; 取值为 1 表示下游按需 (Downstream On Demand)。

如果一方 LSR 提议下游主动而另一方提议下游按需, 解决这一差异的规则是:

  • 如果该会话用于标签控制的 ATM 链路或标签控制的帧中继链路, 则 必须 (MUST) 使用下游按需。

  • 否则, 必须 (MUST) 使用下游主动。

    如果以此方式确定的标签通告方式对某个 LSR 不可接受, 它 必须 (MUST) 响应初始化消息发送一条 Session Rejected/Parameters Advertisement Mode 通知消息, 并且不建立该会话。

D, Loop Detection

指示是否启用基于 Path Vector 的环路检测。取值为 0 表示禁用环路检测; 取值为 1 表示启用环路检测。

PVLim, Path Vector Limit

所配置的最大 Path Vector 长度。如果禁用了环路检测 (D = 0), 必须 (MUST) 为 0。如果环路检测过程要求该 LSR 发送超出该限制的 Path Vector, 该 LSR 将表现得如同已为相关 FEC 检测到环路一样。

当网络的一部分启用了环路检测时, 建议该部分网络中的所有 LSR 都配置相同的 Path Vector 限制。尽管获知对等体的 Path Vector 限制不会改变 LSR 的行为, 但它确实使该 LSR 能够提醒操作员可能存在错误配置。

Reserved

该字段保留。发送时必须置为零, 接收时忽略。

Max PDU Length

两字节无符号整数, 提议该会话 LDP PDU 的最大允许长度。取值为 255 或更小表示默认最大长度 4096 个八位组。

接收方 LSR 必须 (MUST) 使用其自身与其对等体对 Max PDU Length 的提议中的较小者来计算该会话的最大 PDU 长度。在会话初始化完成之前, 适用默认最大 PDU 长度。

如果以此方式确定的最大 PDU 长度对某个 LSR 不可接受, 它 必须 (MUST) 响应初始化消息发送一条 Session Rejected/Parameters Max PDU Length 通知消息, 并且不建立该会话。

Receiver LDP Identifier

标识接收方的标签空间。该 LDP Identifier 与 PDU 头部中发送方的 LDP Identifier 一起, 使接收方能够将该初始化消息与其某个 Hello 邻接匹配起来; 见 "Hello Message Procedures" 一节。

如果没有匹配的 Hello 邻接, 该 LSR 必须 (MUST) 响应初始化消息发送一条 Session Rejected/No Hello 通知消息, 并且不建立该会话。

Optional Parameters

该可变长度字段包含 0 个或多个参数, 每个参数编码为一个 TLV。可选参数为:

   Optional Parameter       Type     Length  Value

ATM Session Parameters 0x0501 var See below
Frame Relay Session 0x0502 var See below
Parameters

ATM Session Parameters

当某个 LDP 会话管理 ATM 链路的标签交换时, 用它来规定 ATM 特有的会话参数。

    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| ATM Sess Parms (0x0501) | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| M | N |D| Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ATM Label Range Component 1 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
~ ~
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ATM Label Range Component N |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

M, ATM Merge Capabilities

规定 ATM 交换机的合并能力。本版本规范支持以下取值:

            Value          Meaning

0 Merge not supported
1 VP Merge supported
2 VC Merge supported
3 VP & VC Merge supported

如果各 LSR 的合并能力不同, 则:

  • 非合并与 VC 合并的 LSR 可以自由互操作。

  • 支持 VP 合并的交换机与不支持 VP 合并的交换机的互操作性属于未来研究的课题。当各 LSR 在是否使用 VP 合并上不一致时, 会话仍然建立, 但不使用 VP 合并。

请注意, 如果使用 VP 合并, 则由入口节点负责确保所选的 VCI 在该 LSR 域内唯一。

N, Number of label range components

规定该 TLV 中包含的 ATM Label Range Component 的数目。

D, VC Directionality

取值为 0 表示双向 VC 能力, 意味着该 LSR 可以 (在给定的 VPI 内) 独立地为链路两个方向将某个给定的 VCI 用作标签。取值为 1 表示单向 VC 能力, 意味着 (在给定的 VPI 内) 某个给定的 VCI 只能出现在链路一个方向的标签映射中。当两个对等体中的任一或双方规定了单向 VC 能力时, 两个 LSR 按如下方式为该链路使用单向 VC 标签分配: 各 LSR 将其 LDP Identifier 作为无符号整数进行比较。LDP Identifier 较大的 LSR 只能在该 VPI/VCI 范围内分配奇数编号的 VCI 作为标签。LDP Identifier 较小的系统只能在该 VPI/VCI 范围内分配偶数编号的 VCI 作为标签。

Reserved

该字段保留。发送时必须置为零, 接收时忽略。

一个或多个 ATM Label Range Component

ATM Label Range Component 的列表, 它们共同规定发送方 LSR 所支持的标签范围。

接收方 LSR 必须 (MUST) 计算所收到的范围与其自身所支持标签范围的交集。该交集就是该 LSR 可以分配和接受标签的范围。对于范围交集为 NULL 的邻居, LSR 不得 (MUST NOT) 与其建立会话。在这种情况下, 该 LSR 必须 (MUST) 响应初始化消息发送一条 Session Rejected/Parameters Label Range 通知消息, 并且不建立该会话。

ATM Label Range Component 的编码为:

    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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Res | Minimum VPI | Minimum VCI |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Res | Maximum VPI | Maximum VCI |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Res

该字段保留。发送时必须置为零, 接收时必须忽略。

Minimum VPI (12 bits)

该 12 位字段规定发起方交换机所支持的虚路径标识符块的下界。如果 VPI 少于 12 位, 它 应当 (SHOULD) 在该字段中右对齐, 且前面的比特 应当 (SHOULD) 置为 0。

Minimum VCI (16 bits)

该 16 位字段规定发起方交换机所支持的虚通道标识符块的下界。如果 VCI 少于 16 位, 它 应当 (SHOULD) 在该字段中右对齐, 且前面的比特 应当 (SHOULD) 置为 0。

Maximum VPI (12 bits)

该 12 位字段规定发起方交换机所支持的虚路径标识符块的上界。如果 VPI 少于 12 位, 它 应当 (SHOULD) 在该字段中右对齐, 且前面的比特 应当 (SHOULD) 置为 0。

Maximum VCI (16 bits)

该 16 位字段规定发起方交换机所支持的虚连接标识符块的上界。如果 VCI 少于 16 位, 它 应当 (SHOULD) 在该字段中右对齐, 且前面的比特 应当 (SHOULD) 置为 0。

当对等 LSR 通过 ATM VP 间接相连时, 发送方 LSR 应当 (SHOULD) 将 Minimum 和 Maximum VPI 字段置为 0, 而接收方 LSR 必须 (MUST) 忽略 Minimum 和 Maximum VPI 字段。

Frame Relay Session Parameters

当某个 LDP 会话管理帧中继链路的标签交换时, 用它来规定帧中继特有的会话参数。

    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| FR Sess Parms (0x0502) | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| M | N |D| Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Frame Relay Label Range Component 1 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
~ ~
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Frame Relay Label Range Component N |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

M, Frame Relay Merge Capabilities

规定帧中继交换机的合并能力。本版本规范支持以下取值:

            Value          Meaning

0 Merge not supported
1 Merge supported

非合并与合并的帧中继 LSR 可以自由互操作。

N, Number of label range components

规定该 TLV 中包含的 Frame Relay Label Range Component 的数目。

D, VC Directionality

取值为 0 表示双向 VC 能力, 意味着该 LSR 可以独立地为链路两个方向将某个给定的 DLCI 用作标签。取值为 1 表示单向 VC 能力, 意味着某个给定的 DLCI 只能出现在链路一个方向的标签映射中。当两个对等体中的任一或双方规定了单向 VC 能力时, 两个 LSR 按如下方式为该链路使用单向 VC 标签分配: 各 LSR 将其 LDP Identifier 作为无符号整数进行比较。LDP Identifier 较大的 LSR 只能在该范围内分配奇数编号的 DLCI 作为标签。LDP Identifier 较小的系统只能在该范围内分配偶数编号的 DLCI 作为标签。

Reserved

该字段保留。发送时必须置为零, 接收时忽略。

一个或多个 Frame Relay Label Range Component

Frame Relay Label Range Component 的列表, 它们共同规定发送方 LSR 所支持的标签范围。

接收方 LSR 必须 (MUST) 计算所收到的范围与其自身所支持标签范围的交集。该交集就是该 LSR 可以分配和接受标签的范围。对于范围交集为 NULL 的邻居, LSR 不得 (MUST NOT) 与其建立会话。在这种情况下, 该 LSR 必须 (MUST) 响应初始化消息发送一条 Session Rejected/Parameters Label Range 通知消息, 并且不建立该会话。

Frame Relay Label Range Component 的编码为:

    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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Reserved |Len| Minimum DLCI |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Reserved | Maximum DLCI |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Reserved

该字段保留。发送时必须置为零, 接收时忽略。

Len

该字段规定 DLCI 的比特数。支持以下取值:

            Len    DLCI Bits

0 10
2 23

Len 取值 1 和 3 保留。

Minimum DLCI

该 23 位字段规定发起方交换机所支持的数据链路连接标识符 (Data Link Connection Identifier, DLCI) 块的下界。DLCI 应当 (SHOULD) 在该字段中右对齐, 未使用的比特 应当 (SHOULD) 置为 0。

Maximum DLCI

该 23 位字段规定发起方交换机所支持的 DLCI 块的上界。DLCI 应当 (SHOULD) 在该字段中右对齐, 未使用的比特 应当 (SHOULD) 置为 0。

请注意, 对于通告 Generic Label 的会话, 没有 Generic Session Parameters TLV。

3.5.3.1. 初始化消息过程​

处理初始化消息的一般过程见 "LDP Session Establishment" 一节, 特别是其中的 "Session Initialization" 一节。