LDP---标签分发协议---主要应用在MPLS的控制层面
MPLS控制层面需要完成的工作主要就是分配标签和传递标签。分配标签的前提是本地路由表中得先存在标签,传递标签的前提也是得先具备路由基础。所以,LDP想要正常工作,则需要IGP基础。
1、分配标签
分配标签并不是所有设备都针对自己本地路由表中所有的路由条目分配标签,而是在判定自己是到达某网段出站LSR时,才会主动分配标签。
当然,在构成到达目标网段的LSP过程中,所有中间的LSR都需要给对应的FEC分配标签才行。则其他设备只有在收到标签和目标网段的映射关系后,才会被动的分配标签。分配标签之前需要完成检查动作,主要检查目标网段本地路由表是否可达,以及下一跳和通告者是否相同。检查通过则可以分配标签,不通过则不能分配标 签。
LDP的标签分配方式:
1、有序方式---华为设备默认选择的是有序方式分配标签
2、独立方式---不需要确认自己是出站LSR,也可以主动给路由表中路由条目分配标签。
2、传递标签
出战LSR分配标签之后,需要传递给其他的LSR设备,传递的前提条件是彼此之间得先是LDP对等体关系。而LDP对等体关系建立的前提条件是需要先建立LDP会话。
本地LDP会话----直连的两个设备之间建立LDP会话
远程LDP会话---非直连设备之间,可以通过手工指定的方式来创建远程的LDP会话。
LDP协议在建立本地的LDP会话时,不需要手动指定邻居的IP地址,可以自动的发现邻居关系。主要因为LDP首先会总过组播(224.0.0.2)的形式周期性发送hellp包来发现邻居。hello包使用UDP 646端口来完成。
本地LDP会话的建立过程:
1、在LSR上激活LDP之后,首先周期性的发送hello包来完成对等体的发现工作。
在HELLO包中需要携带一些参数,其中包含传输地址和LDP ID。
传输地址:这个地址主要是后面建立TCP会话时需要用到的地址,默认情况下,我们将使用该设备的LSR ID来作为这个地址。所以要求,LSR ID 必须是可用且可达的IP地址。
LDP ID:所有激活LDP协议的LSR设备都要求必须具有一个LDP ID,这个ID 是由48位二进制构成,表达方式位32位:16位,前32位使用是LSR ID,后16位用0来表示。这个和标签空间有管,所有基于设备的标签空间,其值都为0。
hello包的发送周期默认为5s,保活时间为3倍hello时间,即默认15秒
2、双方在交互完hello包之后,将获取到对方传输地址,则将根据这个传输地址来建立TCP会话
在建立TCP会话之间,LDP也存在检查动作,需要先确认收到的传输地址,在本地路由表中是否可达,可达则可以正常建立TCP会话。
如果双方都建立TCP会话,则将创建两条双向通道,造成资源浪费。则在收到对端hello包中的传输地址后,将和本地的传输地址进行对比,传输地址大的一方,我们称为主动方,主动方则可以主动建立TCP会话,而被动方则不建立。
3,完成TCP会话建立之后,传递地址大的一方将优先使用初始化报文,里面包含一些协商的参数发给被动方。对方如果确认里面的参数,则将回复keeplive报文进行确认,同时发送自己本地的初始化报文,携带自己的参数。主动方收到后也将对参数进行确认,如果没问题则也将发送keeplive报文。双方都收到keeplive报文,则代表参数协商成功,LDP会话建立成功。
之后,也需要周期性的发送keeplive报文进行保活,发送周期默认为15s,保活时间为3倍的周期发送时间,则默认为45秒。
上下游关系---由数据层流量流动方向来决定,数据发送方为上游,接受方为下游。从控制层的角度来看,则标签传递的方向应该是从下游发送到上游。之后上游设备会去收集下游的标签。
标签传递方式---DU模式----下游自主模式---华为设备默认采用这种模式,所有LSR在分配好标签之后,可以主动的将标签传递给其他LSR
---如果选择的是下游自主模式,则设备在传递标签时,无法判断上下游关系的,则会将标签发给所有的对等体关系。当设备收到标签之后,则将可以基于路由表判断上下游关系。华为设备,只有上游设备会记录下游设备发送的标签,而上游设备发送的标签将不保存。(还有一种标签的保存模
式是上下游标签都保存。)
DOD模式---下游按需模式---只有下游设备在收到上游设备通知之后,才会给上游设备发送标签。
数据层面流动过程:
在数据层面流量通过的过程当中,入站LSR设备和出战LSR设备都需要查询两张表,一张FIB表,一张LFIB包才能完成转发过程,导致效率降低,需要优化。