为保证LDP消息的可靠发送,除了Discovery(Hello)消息使用UDP(端口646)外,LDP的Session消息、Advertisement消息和Notification消息都使用TCP(端口646)传输。
LDP协议消息头部格式如下(PDU,协议数据单元,每个LDP PDU有个LDP消息头,后面跟着一个或多个LDP消息内容)。
字段 | 长度 | 说明 |
---|---|---|
Version | 2字节 | 表示版本号。目前LDP的版本号始终为1。 |
PDU Length | 2字节 | 表示PDU的总长度,包括LDP ID和整组LDP消息,不包括Version和PDU Length字段。 例如某个LDP报文中包含3个Hello消息,则该报文的PDU length = 3 * Message length。 |
LSR-ID | 4字节 | LDR-ID标识一台LSR,必须全局唯一。 |
LaberSpace ID | 2字节 | 标识了LSR内的标签空间。对于平台范围标签空间,这些数值都应当为0。 |
Bunch of messages | 变长 | 是一组LDP消息的集合,可以是一个或者多个LDP消息。
|
所有LDP消息的格式如下:
字段 | 长度 | 说明 |
---|---|---|
U | 1比特 | 未知的消息。
|
Message Type | 15比特 | LDP消息的类型。 |
Message Length | 16比特 | LDP消息的长度,是Message ID、强制参数和可选参数的长度的总和。 |
Message ID | 32比特 | LDP消息的编号,用于唯一地标识一个LDP消息。 |
Mandatory Parameters | 变长 | LDP消息的强制参数。 |
Optional Parameters | 变长 | LDP消息的可选参数,包含0~n个TLV。 |
LSR发送通告消息来通知重要事件到LDP对等体。通告消息通知致命错误或提供咨询信息,如处理LDP消息的结果或LDP会话的状态。
字段 | 长度 | 说明 |
---|---|---|
Message Length | 16比特 | LDP消息的长度,是Message ID、强制参数和可选参数的长度的总和。 |
Message ID | 32比特 | LDP消息的编号,用于唯一地标识一个LDP消息。 |
Status TLV | 变长 | 标识一个事件。 |
Optional Parameters | 变长 | 可选参数,包含0~n个TLV。 |
用于通告和维护网络中LSR的存在。
字段 | 长度 | 说明 |
---|---|---|
Message Length | 16比特 | LDP消息的长度,是Message ID、强制参数和可选参数的长度的总和。 |
Message ID | 32比特 | LDP消息的编号,用于唯一地标识一个LDP消息。 |
Length | 16比特 | LDP消息是以LDP PDU中的TLV形式定义的. 每个LDP TLV有一个2字节的Type域,2字节的Length域和变长的Value域。这里的Length就表示TLV的Value域的字节数。 |
Hold Time | 16比特 | 保持时间,以秒为单位的Hello保持时间。LSR维护来自潜在同伴的Hello的记录。为0的数值意味着使用缺省值。0xffff的数值意味着无穷大。 |
T | 1比特 | T(Targeted Hello)值为1表示为远端Hello消息,值为0表示本地Hello消息。 |
R | 1比特 | R(Request Send Targeted Hellos)值为1表示请求接收者周期性发送远端Hello消息给该Hello的发送源端,值为0表示没有此需求。 |
Reserved | 14比特 | 保留字段,必须置0,接收端忽略此字段。 |
Optional Parameters | 变长 | 可选参数,包含0~n个TLV。 |
LDP的Initialization消息在LDP回家建立阶段发送,格式如下:
字段 | 长度 | 说明 |
---|---|---|
Message Length | 16比特 | LDP消息的长度,是Message ID、强制参数和可选参数的长度的总和。 |
Message ID | 32比特 | LDP消息的编号,用于唯一地标识一个LDP消息。 |
Length | 16比特 | LDP消息是以LDP PDU中的TLV形式定义的. 每个LDP TLV有一个2字节的Type域,2字节的Length域和变长的Value域。这里的Length就表示TLV的Value域的字节数。 |
Protocol Version | 16比特 | 表示协议版本号 = 1。 |
KeepAlive Time | 16比特 | TCP连接的保持时间,这个定时器的刷新并不是收到KeepAlive消息才会刷新,而是通过TCP连接收到的LDP PDU时都会刷新 |
A | 1比特 | 表明标签分配方式 ( 0 = DU ;1 = DoD) |
D | 1比特 | 表明是否使能了环路检测功能(0 = Disable ; 1 = Enable)。 |
Reserved | 6比特 | 保留字段,必须置0,接收端忽略此字段。 |
PVLim | 8比特 | PVLim (Path Vector Limit),LSP支持的最大跳数(只有在使能了Loop detection功能时有效,默认值为32)。 |
Max PDU Length | 16比特 | LDP PDU的最大长度,默认值为4096字节。 |
Receiver LDP Identifier | 6字节 | Initialization消息的接收者的LDP标识符(LDP ID)。 |
Optional Parameters | 变长 | 可选参数,包含0~n个TLV。 |
Keepalive消息无Mandatory Parameters字段及后面的字段,用于维护SESSION的状态,所以这里不需要什么特别的内容,只要对方知道自己还存在就好。
Address消息用于LSR发送地址消息到LDP邻居,以公告其接口地址。
字段 | 长度 | 说明 |
---|---|---|
Message Length | 16比特 | LDP消息的长度,是Message ID、强制参数和可选参数的长度的总和。 |
Message ID | 32比特 | LDP消息的编号,用于唯一地标识一个LDP消息。 |
Length | 16比特 | LDP消息是以LDP PDU中的TLV形式定义的. 每个LDP TLV有一个2字节的Type域,2字节的Length域和变长的Value域。这里的Length就表示TLV的Value域的字节数。 |
Address Family | 16比特 | 地址族编号。 |
Addresses | 变长 | 指定地址族的地址列表,格式取决于地址族类型:
|
Optional Parameters | 变长 | 可选参数,包含0~n个TLV。 |
LSR发送Address Withdraw消息到LDP对等体,以撤销之前公告的接口地址。当接口地址被删除或接口down后,就会发送Address Withdraw消息。
字段 | 长度 | 说明 |
---|---|---|
Message Length | 16比特 | LDP消息的长度,是Message ID、强制参数和可选参数的长度的总和。 |
Message ID | 32比特 | LDP消息的编号,用于唯一地标识一个LDP消息。 |
Length | 16比特 | LDP消息是以LDP PDU中的TLV形式定义的. 每个LDP TLV有一个2字节的Type域,2字节的Length域和变长的Value域。这里的Length就表示TLV的Value域的字节数。 |
Address Family | 16比特 | 地址族编号。 |
Addresses | 变长 | 指定地址族的地址列表,格式取决于地址族类型:
|
Optional Parameters | 变长 | 可选参数,包含0~n个TLV。 |
对于特定的FEC,下游使用Label Mapping消息为上游分配标签。
Label Mapping消息均由下游发往上游节点,Label Mapping消息的发送方式因标签分配方式或者标签控制方式的不同而不同:
字段 | 长度 | 说明 |
---|---|---|
Message Length | 16比特 | LDP消息的长度,是Message ID、强制参数和可选参数的长度的总和。 |
Message ID | 32比特 | LDP消息的编号,用于唯一地标识一个LDP消息。 |
Length | 16比特 | LDP消息是以LDP PDU中的TLV形式定义的. 每个LDP TLV有一个2字节的Type域,2字节的Length域和变长的Value域。这里的Length就表示TLV的Value域的字节数。 |
FEC Element 1 to FEC Element n | 每个Element 1字节 | 表明该标签是为哪个FEC而分配的。 FEC Element的格式定义:
|
Label TLV | 52比特 | 表明下游为该FEC分配了什么标签。 图11 Label TLV的格式
Label字段是个20比特的标签值。 |
Optional Parameters | 变长 | 可选参数,包含0~n个TLV。 |
LSR发送Label Request消息给LDP对等体请求FEC对应的标签。
Label Request消息只能由作为Ingress的LSR发起,不能由作为Transit的LSR发起(Order+dod)。下游收到Label Request消息后需要向上游返回Label Mapping消息,Label Mapping消息中携带Label Request消息中的Message ID TLV。
下列情况下,下游收到Label Request消息后不会向上游返回Label Mapping消息:
字段 | 长度 | 说明 |
---|---|---|
Message Length | 16比特 | LDP消息的长度,是Message ID、强制参数和可选参数的长度的总和。 |
Message ID | 32比特 | LDP消息的编号,用于唯一地标识一个LDP消息。 |
Length | 16比特 | LDP消息是以LDP PDU中的TLV形式定义的. 每个LDP TLV有一个2字节的Type域,2字节的Length域和变长的Value域。这里的Length就表示TLV的Value域的字节数。 |
FEC Element 1 to FEC Element n | 每个Element 1字节 | 表明该标签是为哪个FEC而分配的。 FEC Element的格式定义:
|
Optional Parameters | 变长 | 可选参数,包含0~n个TLV。 |
上游LSR发送了Label Request消息后但还没有收到Label Mapping消息前,发现FEC对应的下一跳变化了或者其他可能的原因需要发送新的Label Request消息时,上游会向下游发送Label Abort Request消息。
字段 | 长度 | 说明 |
---|---|---|
Message Length | 16比特 | LDP消息的长度,是Message ID、强制参数和可选参数的长度的总和。 |
Message ID | 32比特 | LDP消息的编号,用于唯一地标识一个LDP消息。 |
Length | 16比特 | LDP消息是以LDP PDU中的TLV形式定义的. 每个LDP TLV有一个2字节的Type域,2字节的Length域和变长的Value域。这里的Length就表示TLV的Value域的字节数。 |
FEC Element 1 to FEC Element n | 每个Element 1字节 | 表明该标签是为哪个FEC而废弃的。 FEC Element的格式定义:
|
Label Request Message ID TLV | - | 要被废弃的Label Request消息的消息ID。 |
Optional Parameters | 变长 | 可选参数,包含0~n个TLV。 |
Label Withdraw消息一般由下游LSR发往上游LSR,通知上游LSR之前通告的与某FEC对应的Label不再使用,上游LSR需要解除Label和FEC的映射关系。
下列情况下会发送Label Withdraw消息:
字段 | 长度 | 说明 |
---|---|---|
Message Length | 16比特 | LDP消息的长度,是Message ID、强制参数和可选参数的长度的总和。 |
Message ID | 32比特 | LDP消息的编号,用于唯一地标识一个LDP消息。 |
Length | 16比特 | LDP消息是以LDP PDU中的TLV形式定义的. 每个LDP TLV有一个2字节的Type域,2字节的Length域和变长的Value域。这里的Length就表示TLV的Value域的字节数。 |
FEC Element 1 to FEC Element n | 每个Element 1字节 | 表明该标签是为哪个FEC而撤销的。 FEC Element的格式定义:
|
Label TLV | 52比特 | 表明该FEC对应的标签。 图18 Label TLV的格式
|
Optional Parameters | 变长 | 可选参数,包含0~n个TLV。 |
Label Release消息一般由上游发往下游,通知撤销Label和FEC的邦定,该消息相当于Label Request消息的逆过程。
在下列情况下会发送Label Release消息:
字段 | 长度 | 说明 |
---|---|---|
Message Length | 16比特 | LDP消息的长度,是Message ID、强制参数和可选参数的长度的总和。 |
Message ID | 32比特 | LDP消息的编号,用于唯一地标识一个LDP消息。 |
Length | 16比特 | LDP消息是以LDP PDU中的TLV形式定义的. 每个LDP TLV有一个2字节的Type域,2字节的Length域和变长的Value域。这里的Length就表示TLV的Value域的字节数。 |
FEC Element 1 to FEC Element n | 每个Element 1字节 | 表明该标签对应的FEC。 FEC Element的格式定义:
|
Label TLV | 52比特 | 图21 Label TLV的格式
|
Optional Parameters | 变长 | 可选参数,包含0~n个TLV。 |
标准 | 描述 |
---|---|
RFC 5036 | LDP Specification |