LDP消息,也称LDP报文,下文中“消息”和“报文”两词混用,不再区分。LDP消息按其具体功能可分为4大类,每个大类包含一种或者多种消息

Discovery Message:即发现消息,用于通告和维护网络中LSR的存在,包括Hello Message

Hello Message:即Hello消息,用于发现和维护LDP邻居关系

Session Message:即会话消息,用来建立,维护和结束LDP对等体之间的会话连接,包括Initialization Message和Keepalive Message

Initialization Message:即初始化消息,用于协商LDP邻居参数,包括标签分发方式、Keepalive超时时间、标签空间及环路检测等
	Keepalive Message:即保活消息,用于TCP会话的建立和维护

Advertisement Message:即通告消息,用来创建、改变和删除特定FEC-标签绑定,包括Address Message、Address Withdraw Message、Label Request Message、Label Mapping Message、Label Withdraw Message、Label Release Message、Label abort Request Message等

Address Message:即地址通告消息,LSR使用该消息向邻居通告自己所有的接口IP
	Address Withdraw Message:即地址撤销消息
	Label Request Message:地址请求消息
	Label Mapping Message:即标签通告消息,用于通告FEC---标签的映射关系
	Label Withdraw Message:标签撤销消息
	Label Release Message:标签释放消息
	Label Abort Request Message:标签终止请求消息

Notification Message:即通知消息,用于提供消息通告和差错通知

Notification Message:即错误通知消息

总结如下

MPLStp标签的封装结构_udp


LDP报文是基于TCP协议的(其中,Hello报文基于UDP协议,使用端口号646),端口号为646,并且报文格式是基于TLV的方式来封装的,LDP报文分为头部和报文内容两部分,LDP报头格式如下图所示

MPLStp标签的封装结构_MPLStp标签的封装结构_02

对其中的字段解释如下:
Version:版本号,2字节,无符号整数值,标识LDP版本号,目前使用的版本号为1
PDU Length:PDU的总长度,2字节,整数值,不包括版本号和PDU长度字段。PDU最大长度在会话初始时协商确定,默认最大长度为4096字节
LSR ID:始发路由器的LSR-ID,在MPLS于中唯一标识一台路由器,全局唯一
Label Space ID:标识LSR内的标签空间,对于平台范围标签空间,这些数值都应为0;基于接口的会有区分


下面具体分析LDP各报文的内容及作用

Hello消息:用于邻居的发现及邻居关系的维护,基于UDP,源目端口号皆为646,使用组播发送,目的IP地址为224.0.0.2,默认发送周期为5s。Hello报文的格式如图所示

MPLStp标签的封装结构_网络协议_03

Hello报文参数解释如下:
U bit:即Unknown,未知消息位
Message Type:消息类型,表示消息类型,Hello消息中该值为0x100
Message Length:消息长度,其长度等于Message ID、强制参数和可选参数的长度的总和
Message ID:消息标识符,用于唯一标识一条LDP消息
Common Hello Parameters TLV:属于Hello消息范围内的TLV,有如下重要字段

TLV Unknown bits:未知TLV位,置0时,返回通知;置1时,则忽略该消息
Hold Time:邻居失效时间,默认为三倍的Hello时间,即邻居失效时间为15s
Targeted Hello:置1时代表远端hello,置0时代表本地hello

IPv4 Transport Address TLV:用于建立TCP连接的地址

IPv4 Transport Address:是建立TCP连接的地址,默认是LSR-ID,两台LDP设备要保证LSR-ID可达

Initialization Message:即初始化消息,用来协商会话参数,使用TCP,单播发送,源端口号随机,目的端口号为646,重要字段如下

MPLStp标签的封装结构_MPLStp标签的封装结构_04


U bit:即Unknown,未知消息位

Message Type:消息类型,表示消息类型,Initialization消息中该值为0x200

Message Length:消息长度,其长度等于Message ID、强制参数和可选参数的长度的总和

Message ID:消息标识符,用于唯一标识一条LDP消息

Common Session Parameters :属于Hello消息范围内的TLV

Parameters:参数

Session Protocol Version:会话协议版本1
Session KeepAlive Time:TCP连接的保持时间,通过TCP连接收到的LDP PDU时刷新
Session Label Advertisement:标识标签分配方式,置0时表示DU ;置1时表示DoD
Session Loop Detection:是否开启了环路检测功能,置0时Disabled,置1时Enable
Session Path Vector Limit:LSP支持的最大跳数,开启了Loop Detection(环路检测)才有效,默认32
Session Max PDU Length:LDP PDU的最大长度,默认值为4096字节。
Session Receiver LDP Identifier:初始化消息的接受者,即LSR-ID
Session Receiver Label Space ID:接受者的Label Space ID。基于平台的分发都是0

Keepalive Message:即保活消息,用来维持TCP连接,发送周期为15s,若两端不一致取较小

MPLStp标签的封装结构_系统架构_05


U bit:即Unknown,未知消息位

Message Type:消息类型,表示消息类型,Keepalive消息中该值为0x201

Message Length:消息长度,其长度等于Message ID、强制参数和可选参数的长度的总和

Message ID:消息标识符,用于唯一标识一条LDP消息


Address Message:即地址宣告消息,用于向邻居宣告自己的接口IP地址

MPLStp标签的封装结构_udp_06


Label Mapping Message:标签通告消息,为邻居发布FEC和标签的绑定关系

MPLStp标签的封装结构_网络_07