MPLS LDP报文格式

LDP消息头部格式

为保证LDP消息的可靠发送,除了Discovery(Hello)消息使用UDP(端口646)外,LDP的Session消息、Advertisement消息和Notification消息都使用TCP(端口646)传输。

LDP协议消息头部格式如下(PDU,协议数据单元,每个LDP PDU有个LDP消息头,后面跟着一个或多个LDP消息内容)。

图1 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报文以UDP方式传输时,“Bunch of messages”只能是Hello消息的集合。
  • 当LDP报文以TCP方式传输时,“Bunch of messages”可以是除Hello消息外任意类型的LDP消息的集合。

LDP消息格式

所有LDP消息的格式如下:

图2 LDP消息格式
字段 长度 说明
U 1比特

未知的消息。

  • 如果对端收到的LDP消息中“Message type”字段为未知的LDP消息类型,且“U”字段的值为“0”,则向源端发送通知(Notification)消息。
  • 如果对端收到的LDP消息中“Message type”字段为未知的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。

通告(Notification)消息

LSR发送通告消息来通知重要事件到LDP对等体。通告消息通知致命错误或提供咨询信息,如处理LDP消息的结果或LDP会话的状态。

图3 Notification消息格式
字段 长度 说明
Message Length 16比特 LDP消息的长度,是Message ID、强制参数和可选参数的长度的总和。
Message ID 32比特 LDP消息的编号,用于唯一地标识一个LDP消息。
Status TLV 变长 标识一个事件。
Optional Parameters 变长 可选参数,包含0~n个TLV。

Hello消息

用于通告和维护网络中LSR的存在。

图4 Hello消息格式
字段 长度 说明
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。

Initialization消息

LDP的Initialization消息在LDP回家建立阶段发送,格式如下:

图5 Initialization消息格式
字段 长度 说明
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消息

Keepalive消息无Mandatory Parameters字段及后面的字段,用于维护SESSION的状态,所以这里不需要什么特别的内容,只要对方知道自己还存在就好。

图6 KeepAlive消息格式

地址(Address)消息

Address消息用于LSR发送地址消息到LDP邻居,以公告其接口地址。

图7 Address消息格式
字段 长度 说明
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 变长 指定地址族的地址列表,格式取决于地址族类型:
  • IPv4地址为4字节
  • IPv6地址为16字节
Optional Parameters 变长 可选参数,包含0~n个TLV。

地址撤销(Address Withdraw)消息

LSR发送Address Withdraw消息到LDP对等体,以撤销之前公告的接口地址。当接口地址被删除或接口down后,就会发送Address Withdraw消息。

图8 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 变长 指定地址族的地址列表,格式取决于地址族类型:
  • IPv4地址为4字节
  • IPv6地址为16字节
Optional Parameters 变长 可选参数,包含0~n个TLV。

Label Mapping消息

对于特定的FEC,下游使用Label Mapping消息为上游分配标签。

Label Mapping消息均由下游发往上游节点,Label Mapping消息的发送方式因标签分配方式或者标签控制方式的不同而不同:

图9 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的格式定义:

  • Type = 0x01: 反掩码。只在Label Withdraw和Label Release消息中使用。
  • Type = 0x02: 前缀。

    格式如下:

    图10 前缀FEC Element的格式
Label TLV 52比特

表明下游为该FEC分配了什么标签。

图11 Label TLV的格式

Label字段是个20比特的标签值。

Optional Parameters 变长 可选参数,包含0~n个TLV。

Label Request消息

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消息:

图12 Label 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的格式定义:

  • Type = 0x01: 反掩码。只在Label Withdraw和Label Release消息中使用。
  • Type = 0x02: 前缀。

    格式如下:

    图13 前缀FEC Element的格式
Optional Parameters 变长 可选参数,包含0~n个TLV。

Label Abort Request消息

上游LSR发送了Label Request消息后但还没有收到Label Mapping消息前,发现FEC对应的下一跳变化了或者其他可能的原因需要发送新的Label Request消息时,上游会向下游发送Label Abort Request消息。

图14 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的格式定义:

  • Type = 0x01: 反掩码。只在Label Withdraw和Label Release消息中使用。
  • Type = 0x02: 前缀。

    图15 前缀FEC Element的格式
Label Request Message ID TLV - 要被废弃的Label Request消息的消息ID。
Optional Parameters 变长 可选参数,包含0~n个TLV。

Label Withdraw消息

Label Withdraw消息一般由下游LSR发往上游LSR,通知上游LSR之前通告的与某FEC对应的Label不再使用,上游LSR需要解除Label和FEC的映射关系。

下列情况下会发送Label Withdraw消息:

图16 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的格式定义:

  • Type = 0x01: 反掩码。只在Label Withdraw和Label Release消息中使用。
  • Type = 0x02: 前缀。

    图17 前缀FEC Element的格式
Label TLV 52比特

表明该FEC对应的标签。

图18 Label TLV的格式
Optional Parameters 变长 可选参数,包含0~n个TLV。

Label Release消息

Label Release消息一般由上游发往下游,通知撤销Label和FEC的邦定,该消息相当于Label Request消息的逆过程。

在下列情况下会发送Label Release消息:

图19 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的格式定义:

  • Type = 0x01: 反掩码。只在Label Withdraw和Label Release消息中使用。
  • Type = 0x02: 前缀。

    图20 前缀FEC Element的格式
Label TLV 52比特
图21 Label TLV的格式
Optional Parameters 变长 可选参数,包含0~n个TLV。

LDP消息示例

图22 LDP Hello消息
图23 LDP KeepAlive消息

参考标准

标准 描述
RFC 5036 LDP Specification

本资料收集于互联网
2016 ©