标签分发协议LDP(Label Distribution Protocol)是 MPLS 体系中的一种主要协议。在 MPLS 网络中,两个标签交换路由器(LSR)必须用在它们之间或通过它们转发流量的标签上达成一致。
概念
LDP 定义了一组程序和消息,通过它们一个 LSR 可以通知另一个 LSR 其已经形成的标签捆绑。通过网络层路由信息与数据链路层交换路径之间的直接映射,LSR 可以使用 LDP 协议通过网络来建立标签交换路径。
利用 LDP 交换标签映射信息的两个标签交换路由器(LSR)作为 LDP 对等结点,并且它们之间有一个LDP标签分发协议会话。在一个单个会话中,每一个对等结点都能获得其它的标签映射,换句话说,这个协议是双向的。
标签分发协议结构
Version ― 协议版本号,当前为1。
PDU Length ― PDU 总长,不包括版本和 PDU 长字段。
LDP Identifier ― 该字段唯一识别由 PDU 请求的发送 LSR 的标签空间。起始的4 Octet 对分配给 LSR 的 IP 地址进行编码,最后的2 Octet 表示 LSR 中的标签空间。
LDP Messages ― 所有
LDP标签分发协议信息格式
U ― U 是一个未知信息位。
Message type ― 信息类型。信息类型包括:Notification、Hello、Initialization、Keep Alive、Address、Address Withdraw、Label Request、Label Withdraw、Label Release和 Unknown Message 名称。
Message Length ― 信息 ID、命令参数和可选参数长(八位)。
Message ID ― 32位值,提供信息识别。
Parameters ― 参数包括 TLV。既有命令参数也有可选参数。有些信息没有命令参数,有些信息没有可选参数。
LDP消息LDP消息
在LDP协议中主要有4种消息:
(1)发现消息:用于通告和维护网络中LSP的存在;
(2)会话消息:用于建立、维护和终止LDP对等实体之间的会话连接;
(3)通告消息:用于创建、改编和删除FEC-标记绑定;
(4)通知消息:用于提供建议性的消息和差错通知。
LDP发现过程中,LSR通过周期性地发送HELLO消息来通告自身的存在。HELLO消息以UDP分组的形式发往“所有路由器”的组播地址。通过相互发送会话消息,l两个LSP将那能够完成初始化国曾,成为LDP对等体。两个LDP对等体之间便可以通过交换通告消息执行标记的分发、收回等操作。而对LDP协议执行过程中出现的差错以及意外事件的报告则由通知消息传递。为了保证这些操作的正确可靠,LDP使用TCP协议传送会话、通告和通知消息。
除发现消息以外的所有LDP消息都被封装在LDP协议数据单元(PDU)中,通过LDP对等体之间的TCP会话连接进行传递。LDP消息封装的方式非常灵活,既不限制一个LDP PDU中承载消息的数量,也不要求这些消息之间存在任何关联。
TLV
对于消息中所包含的信息,LDP使用“类型-长度-值”(TLV,TYPE-LENGTH-VALUE:TLV)的编码结构进行封装。顾名思义,经过TLV封装后的信息将包含3个部分:首先是用于指示消息类型的部分;之后的长度字段指示“值”字段所包含的字节数;而“值”字段则没有限制。而且“值”字段本身就可以由多个TLV组成。常见的TLV包括FEC TLV 、标记TLV、跳数TLV、状态TLV等等。
TLV格式
U
F
Type
Length
Value
TLV Format
U ― U 是未知 TLV 位。
F ― 转发未知 TLV 位。
Type ― 对 Value 字段转换进行编码。
Length ― 规定 Value 字段长(八位)。
Value ― 八位长度串,Type 字段指定的信息编码长度
有些LDP消息在被LSR接收后需要继续向其他LSR传递,对于那些包含未知TLV并且其中U比特置为1的消息,LSR将依据F比特进行转发决策。LDP中规定,只有当F比特置为1事,才能执行对此类消息的转发。
LDP会话机制
LDP 会话用于在LSP之间进行标记信息交换
(1)LDP会话的建立
在MPLS中,使用标记分发协议交换标记与FEC之间绑定信息的两个LSR称为标记分发对等体。假设由Ru发往Rd的数据流被映射为FEC_F,Ru和Rd经过协商,决定将标记L绑定给FEC_F。于是,就L与FEC_F之间的绑定关系而言,Ru和Rd称为标记分发对等体,作为数据发送方的Ru被称为上游LSR,Rd则相应地被称为下游LSR。注意,所谓标记分发对等关系以及上下游关系都是针对于特定FEC与特定标记之间的绑定而言,是一种基于标记分发协议的逻辑关系,与两个LSR在物理上是否相邻并无直接联系。
(2)LDP 会话的维护
LDP会话的简历取决于两个LSR之间是否存在相应的HELLO邻居关系以及各自的会话参数能否为对方所接受。要将新建的会话保持下去,也需要以这两个条件继续成立为前提。