按照先后顺序,LDP的操作主要包括以下四个阶段:
发现阶段
会话建立与维护
LSP建立与维护
会话撤销
1. 发现阶段
在这一阶段,希望建立会话的LSR向相邻LSR周期性地发送Hello消息,通知相邻节点自己的存在。通过这一过程,LSR可以自动发现它的LDP对等体,而无需进行手工配置。
LDP有两种发现机制:
基本发现机制
基本发现机制用于发现本地的LDP对等体,即通过链路层直接相连的LSR,建立本地LDP会话。
这种方式下,LSR周期性以UDP报文形式从接口发送LDP链路Hello消息(LDP Link Hello),发往标识“子网内所有路由器”的组播地址。
LDP链路Hello消息带有接口的LDP标识符及其他相关信息,如果LSR在某个接口收到了LDP链路Hello消息,则表明在该接口(链路层)存在LDP对等体。
扩展发现机制
扩展发现机制用于发现远端的LDP对等体,即不通过链路层直接相连的LSR,建立远端LDP会话。
这种方式下,LSR周期性以UDP报文形式向指定的IP地址发送LDP目标Hello消息(LDP Targeted Hello)。
LDP目标Hello消息带有LSR的LDP标识符及其他相关信息,如果LSR收到LDP目标Hello消息,则表明在网络层存在LDP对等体。
2. 会话建立与维护
发现邻居之后,LSR开始建立会话。这一过程又可分为两步:
(1) 建立传输层连接,即,在LSR之间建立TCP连接;
(2) 随后对LSR之间的会话进行初始化,协商会话中涉及的各种参数,如LDP版本、标签分发方式、定时器值、标签空间等。
会话建立后,通过不断地发送Hello消息和Keepalive消息来维护这个会话。
3. LSP建立与维护
LSP的建立过程实际就是将FEC和标签进行绑定,并将这种绑定通告LSP上相邻LSR。这个过程是通过LDP实现的,以DU模式、有序标签控制方式为例,主要步骤如下:
(1) 当网络的路由改变时,如果有一个边缘节点发现自己的路由表中出现了新的目的地址,并且这一地址不属于任何现有的FEC,则该边缘节点需要为这一目的地址建立一个新的FEC。
(2) 如果此边缘节点存在上游LSR,并且尚有可供分配的标签,则该节点为FEC分配标签,并向上游发出标签映射消息,其中包含分配的标签等信息。
(3) 收到标签映射消息的LSR记录相应的标签映射信息,若消息由对应FEC的下一跳发送,则将在其标签转发表中增加相应的条目。此LSR为它的上游LSR分配标签,并继续向上游LSR发送标签映射消息。
(4) 当入口LSR收到标签映射消息时,在标签转发表中增加相应的条目。这时,就完成了LSP的建立,接下来就可以对该FEC对应的数据分组进行标签转发了。
4. 会话撤销
LDP通过检测Hello消息来判断邻接关系;通过检测Keepalive消息来判断会话的完整性。
LDP在维持邻接关系和LDP会话时使用不同的定时器:
l Hello保持定时器:LDP对等体之间,通过周期性发送Hello消息表明自己希望继续维持这种邻接关系。如果Hello保持定时器超时仍没有收到新的Hello消息,则删除Hello邻接关系。
l Keepalive定时器:LDP对等体之间通过LDP会话连接上传送的Keepalive消息来维持LDP会话。如果会话保持定时器超时仍没有收到任何Keepalive消息,则关闭连接,结束LDP会话。
LDP环路检测
在MPLS域中建立LSP也要防止产生环路,LDP环路检测机制可以检测LSP环路的出现,并避免发生环路。
如果对MPLS域进行环路检测,则必须在所有LSR上都配置环路检测。但在建立LDP会话时,并不要求双方的环路检测配置一致。
LDP环路检测有两种方式:
1. 最大跳数
在传递标签绑定(或者标签请求)的消息中包含跳数信息,每经过一跳该值就加一。当该值达到规定的最大值时即认为出现环路,LSP建立失败。
2. 路径向量
在传递标签绑定(或者标签请求)的消息中记录路径信息,每经过一跳,相应的设备就检查自己的LSR ID是否在此记录中。在以下条件之一时认为出现环路,LSP建立失败:
l 路径向量记录表中已有本LSR的记录;
l 路径的跳数达到设置的最大值。
如果记录中没有自己的LSR ID,就会将其添加到该记录中。
LDP 标签过滤
LDP协议在缺省的情况下,从下游邻居接收到的所有FEC的标签映射(标签-FEC绑定)都将接受;并按照水平分割的原则向各个上游邻居通告FEC的标签映射。
LDP标签过滤提供了两种机制,可以有选择的接受从指定LDP下游邻居接收到的标签映射、也可以选择性地向指定LDP上游邻居通告指定地址前缀的标签映射。
1. 标签接受控制
标签接受控制(Label Acceptance Control)或入站标签过滤(Inbound Filtering),选择性地接受指定下游设备通告过来的、指定地址前缀的标签映射。
图 8 标签接受控制示意图
2. 标签通告控制
标签通告控制(Label Advertisement Control)或出站标签过滤(Outbound Filtering),选择性地向指定上游设备通告指定地址前缀的标签映射。
图 9 标签通告控制示意图
LDP GR
为了支持GR,在LDP会话建立过程中,LDP设备需要进行GR能力协商。假设LDP会话协商结果为支持GR,GR过程如下:
当Restarter发生重起后,启动转发状态保持定时器,保留所有MPLS转发表项,并标记为stale。Helper在检测到与Restarter之间的会话down后,将所有通过此会话学习到的FEC-Label绑定标记为stale,并将这些FEC-Label绑定保留一段时间(时间长度为对端通告来的reconnect time和本地配置的neighbor liveness time中较小者),如果在这段时间内,LDP会话重建失败,删除这些标记为stale的FEC-Label绑定,如果建立成功,继续保持Recovery长的一段时间,并在Recovery时间内通过和Restarter之间的标签映射消息交互,协助Restarter恢复重起前的FEC-Label绑定和清除对应转发表项的stale标记,Helper收到来自Restarter的相应FEC-Label绑定,清除保留的FEC-Label绑定的stale标记。
Restarter的转发状态保持定时器超时,删除仍旧标记为stale的转发表项。Helper的Recovery时间后,删除仍旧标记为stale的FEC-label绑定。在Restarter重起过程中,转发表项被保留,保证流量不会中断。