MPLS LDP

简介: MPLS LDP

LDP:标签分发协议  指动态分发

LDP协议

基于TLV架构

LDP负责FEC的分类、标签的分配以及LSP的建立和维护等操作。

LDP的工作过程:

  • LSR之间建立LDP的会话
  • LSR之间基于LDP会话动态交换标签与FEC的映射信息,根据信息建立LSP。

LDP会话分为:

本地LDP会话:LSR之间是直连的

远端LDP会话:LSR之间可以是直连的,也可以是非直连的

两台LSR之间交互了Hello消息之后,代表建立邻接体关系。建立了邻接体关系,并交互了LDP会话消息后,表示建立了LDP会话,两台设备之间形成LDP对等体关系。

LSR ID与LDP ID

LDP ID=LSR ID+空间标识符构成

例:

LSR ID:1.1.1.1     32bit

LDP ID:1.1.1.1:0   32bit+16bit

空间标识符的两种形态:

  • 值为0:表示基于设备的标签空间
  • 值非0:表示基于接口的标签空间

基于设备分配标签就是,一台设备使用了某个标签,就不能再继续使用了

基于接口分配标签就是,一个接口使用了某个标签,其他接口依然可以使用

例:

基于设备:R1的1号接口使用了0-1024标签,那么这些标签已经被使用了,其他接口就不能继续使用;

基于接口:R1的1号接口使用了0-1024标签,但只是这个接口使用过了,其他接口依然可以继续使用。

LDP消息

LDP消息分为四大类,发现消息、会话消息、通告消息、通知消息(错误)。

发现消息使用UDP,其他消息都使用TCP。UDP发现邻居,TCP建立邻居。

LDP会话的建立

1、LDP Hello发现邻居

使用LDP Hello报文发现邻居,使用物理接口地址向组播地址224.0.0.2发送Hello报文(源目端口都是646);

2、建立TCP连接

交互完LDP Hello报文后,进行主从选举,使用传输地址较大的一方作为主动方,发起TCP连接。(此时的源目地址都是传输地址,源端口是随机,目的端口是646)

3、协商参数

建立完TCP连接后,主动方发送LDP 初始化报文(init),协商LDP会话参数,被动方收到之后回应keepalive+init报文,主动方收到后,若接受该参数,则回复keepalive报文,此时会话建立成功。

4、标签映射

LDP对等体建立完成之后,使用标签映射报文相互通告标签映射。

建立成功之后,使用LDP Hello报文保活,每5秒发送一次,15秒没发送就down掉。

LDP标签分发

标签的发布和管理:

标签发布方式(产生标签):DU模式

下游自主方式:只要有这条路由,就可以在本地产生in方向的标签。  默认使用

下游按需方式:必须收到标签请求消息,才会产生标签。

标签分配控制方式(传输标签):

独立方式:本地LSR可以自主分配标签,发给上游,不用等待下游的标签。

有序方式:只有LSR具有下一跳的标签时,才可以向上游发送标签。默认使用

标签保持方式(保存标签):

自由方式:只要收到了标签,就会保留。  默认使用

保守方式:只有当邻居LSR是自己的下一跳发来的标签,才会保留。

PHP特性   ---次末跳弹出

隐式空标签:

在LSP的最后一跳节点,已不需要再进行标签交换。此时,可以配置倒数第二跳弹出特性PHP(Penultimate Hop Popping),在倒数第二跳节点处将标签弹出,最后一跳节点直接进行IP转发或者下一层标签转发,减少最后一跳标签交换的负担。

egress节点为本地路由分配标签的时候,会分配一个特殊标签 -3,称为隐式空标签。当LSR转发标签报文时,发现出标签为3的时候,会把标签头部弹出,只剩下了IP报文,转发给egress节点,egress节点就可以直接查询fib表转发出去了。

显式空标签:     label advertise explicit-null

由于PHP特性默认存在,如果在部署QOS的场景下,MPLS路由器还需要通过标签中的EXP位获取QOS的信息,所以引入了显式空标签(值为0),当最后一跳路由器收到带有标签0的报文后,可直接读取标签中的QOS信息,读完之后直接移除标签,然后再直接通过fib表转发。

Egress分配的标签类型决定了倒数第二跳转发带标签报文的方式:

·     如果分配的是隐式空标签,则倒数第二跳根据标签找到下一跳转发信息后,直接弹出标签。

·     如果分配的是显式空标签,则倒数第二跳将标签值替换为显式空标签。

·     如果分配的是非空标签,则倒数第二跳将标签值替换为Egress分配的标签值

隐式空标签:取值为3。当一个LSR发现下游LSR通告的标签为隐式空标签时,它并不用这个值替代栈顶原来的标签,而是直接弹出标签,并将报文转发给下游LSR(即Egress)。Egress接收到报文后,直接进行下一层的转发处理。

显式空标签:取值为0或2。0用于IPv4网络;2用于IPv6网络。在某些情况下,Egress需要根据标签栈中的TC等信息决定QoS策略,此时利用显式空标签就可以在保留标签栈信息的同时,简化Egress节点的转发处理。Egress为FEC分配显式空标签并通告给上游LSR后,上游LSR用这个值替代栈顶原来的标签,并将报文转发给下游LSR(即Egress)。Egress收到标签值为0或2的报文时,不会查找标签转发表,从标签中获取TC等信息后,直接弹出标签栈,进行下一层的转发处理。

总结:

隐式空标签:次末跳弹出默认存在,最后节点路由器给上游分配3号标签,当上游路由器转发时,发现出标签是3,就会弹出标签头部(通过swap弹出),变成IP报文,发给最后一跳路由。次末跳弹出丢失了EXP位,所以无法部署QOS;

显式空标签,最后节点路由器会向倒数第二跳分配0号标签,所以到最后一跳路由器时,可以通过该标签获取QOS信息,同时又因为是0号标签,所以不用查标签转发表,直接丢弃掉0号标签,再去查ip路由表转发。

隐式空标签在倒数第二跳就已经弹掉了标签,而显式空标签在最后一跳弹出标签。

BGP路由黑洞问题

在这张拓扑图上,R1-R2-R3底层使用OSPF打通,然后建立MPLS LDPR1-R3又互为IBGP邻居。

同时,R1有个loopback10地址:10.1.1.1/32R3有个loopback10地址:10.3.3.3/32。在R1R3上分别使用BGP进行network

由于R2没有建立BGP,在R1去访问R3时间,在R2上会出现路由黑洞,丢弃数据包。
要求如下:10.1.1.1/32去访问10.3.3.3/32时,走MPLS隧道,而不使用IGP进行宣告,同时解决了BGP的路由黑洞问题。

可以在R1和R3上分别使用route recursive-lookup tunnel该命令,可将10.1.1.1-->10.3.3.3的流量引到MPLS中,从而使流量走隧道路径。

实现原理:由于R1和R3互为IBGP邻居,所以在R1的BGP路由表中,会有10.3.3.3的路由,下一跳指向R3,在R1去访问10.3.3.3时,R1查看FIB表,隧道ID为0,从而走IP路径,但由于到达R2时,R2没有这条路由,将数据包丢弃,由此可见走IP路径失败。但是R1与R3之间是有一条隧道的,在他们的BGP路由表的下一跳又互相指向对方,所以可借助R1和R3之间的隧道,将该流量引入到MPLS隧道中,从而实现10.1.1.1-->10.3.3.3走标签路径。
缺省情况下,非标签公网BGP路由、静态路由只能迭代到出接口和下一跳,不会迭代到隧道。可以通过配置此命令使上述路由优先迭代到隧道,如果没有隧道,上述路由也可以迭代到出接口和下一跳。

相关文章
|
7月前
|
网络协议
使用MPLS LDP解决BGP路由黑洞的问题
MPLS LDP默认不为BGP路由分配标签
|
4月前
|
缓存 网络协议 网络虚拟化
读透,什么是EVPN?
读透,什么是EVPN?
|
6月前
|
网络协议 网络虚拟化
BGP EVPN(一)
BGP EVPN(一)
|
PHP
【HCIP】16.MPLS LDP
【HCIP】16.MPLS LDP
41 0
|
网络架构
ISIS路由协议(一)
ISIS路由协议
134 0
|
网络协议 数据库 网络架构
ISIS路由协议(二)
ISIS路由协议
133 0
|
网络协议 算法 数据安全/隐私保护
ISIS路由协议(三)
ISIS路由协议
208 0
|
存储 网络协议 算法
OSPF 的 LSA 类型汇总(包括 OSPFv2 和 OSPFv3)
OSPF LSALSA(Link-State Advertisement,链路状态广播)是链接状态协议使用的一个分组,它包括有关邻居和通道成本的信息。 LSAs 被路由器接收用于维护它们的 RIB(路由表)。OSPF 路由协议是链路状态型路由协议,这里的链路即设备上的接口。链路状态型路由协议基于连接源和目标设备的链路状态作出路由的决定。链路状态是接口及其与邻接网络设备的的关系的描述,接口的信息即链路的信息,也就是链路的状态(信息)。这些信息包括接口的 IPv6 前缀(prefix)、网络掩码、接口连接的网络(链路)类型、与该接口在同一网络(链路)上的路由器等信息。这些链路状态信息由不同类状态数
OSPF 的 LSA 类型汇总(包括 OSPFv2 和 OSPFv3)
|
数据安全/隐私保护 网络架构 iOS开发
Cisco-HDLP和PPP
HDLP和PPP
340 0
|
网络协议 算法 网络架构
下一篇
DataWorks