LDP的工作原理和配置
- LDP的基本概念和工作机制
- MPLS标签分发模式
- LDP的基础配置
一、LDP的基本概念和工作机制
首先MPLS是一种根据标签报文中携带的标签来转发数据的技术。
MPLS的一个基本概念就是两台LSR必须对在它们之间转发的数据的标签使用上“达成共识”。LSR之间可以运行标签分发协议(Label Distribution Protocol,LDP)来告知其他LSR本设备上的标签绑定信息,从而实现标签报文的正确转发。
LDP协议:LDP是MPLS的一种控制协议,相当于传统网络中的信令协议,负责FEC的分类、标签的分配以及LSP的建立和维护等操作。
LDP的功能:负责FEC的分类,标签的分配以及LSP的建立和维护等操作,LDP规定了标签分发过程中的各种消息以及相关处理过程。
LDP的工作过程:
1、LSR之间建立LDP会话
2、LSR之间基于LDP会话动态交换标签与FEC的映射信息,并根据标签信息建立LSP。
LDP会话
1、LSR之间交互标签信息之前必须建立LDP会话。
2、LDP会话分为本地LDP会话和远程LDP会话,两者的区别是远程LDP会话可以不需要直连,但是都要保证两端路由可达的条件。
3、LDP邻接体: 两台LSP交互Hello消息后,即建立LDP邻接体关系。
4、LDP对等体: 在邻接体基础上,两台LSR之间交互LDP会话信息,建立LDP会话,两台设备之间形成LDP对等体关系。
LDP ID 和LSR ID
1、LSR ID
是运行LSR的路由器的唯一标识ID号。
LSR ID一般和设备的回环地址关联一致,如1.1.1.1
2、LDP ID
每一台运行LDP的LSR必须拥有LDP ID
LDP长度48bit,由LSR ID + 16位的标签空间标识符组成。
LDP ID存在形式: LSR ID : 标签空间标识。 如: 1.1.1.1 :0
标签空间标识存在两种形态:
一种是 值为0,表示基于设备或者平台的标签空间。每个接口的标签并不唯一。
一种是 值非0,表示基于接口的标签空间 ,每个接口的标签唯一。
LDP 消息类型:
1、发现消息 Discovery , 使用UDP 646,进行宣告本LSR并发现邻居。
2、会话 session 建立 维护和终止 LDP之间的会话
3、通告 advertisement 生成,改变删除FEC的标签映射
4、通知 notification 告警和错误
除了发现消息使用UDP646端口,其它消息都使用TCP646端口
这些消息发送是用UDP/TCP 646端口发送的,组播地址是224.0.0.2 ,其中hello 5s,hold 15s。
LDP会话建立流程:
1、发现阶段: 设备通过周期性地发送LDP链路Hello报文( LDPLink Hello),实现LDP基本发现机制。LDP链路Hello报文使用UDP报文,目的地址是组播地址224.0.0.2。如果LSR在特定接口接收到LDP链路Hello报文,表明该接口存在LDP邻接体。
2、TCP建立阶段: Hello报文中携带传输地址,双方后续将使用传输地址建立LDP会话。传输地址较大的一方作为主动方,主动发起建立TCP连接。经过TCP三次握手之后,两者建立起TCP连接。
3、会话建立和保持,双方使用keepalive来对初始化报文进行确认,然后使用keepalive来协商参数后,完成会话的建立和保持。达到邻居状态、
注意:当接收方接收到对方的初始化报文后,认为没问题,则会将自己的初始化报文和keepalive报文同时发给对方,接收到对方的keepalive报文后建立邻居。
LDP双方的会话状态:
1、no-existen 最初始状态,选举主动方
2、init : 主动发发送 init
3、opensent : 等待对方发送的 init 和 keppalive
4、openreceive : 等待对方的 keepalive
5、operational LDP会话建立成功。
使用 display mpls ldp session 查看LDP的会话信息
如 LDP的会话状态 : Status 状态为 Operational 表示LDP邻居成功
如 LAM 标签发布模式 : 发布模式有 DU 和DoD(下游按需)模式,默认是DU(下游自主)模式
如 LSR在LDP会话中的角色 : 有Active 和 Passive 角色,其中 Active表示是主动方,Passive表示被动方。
二、标签分发模式
标签的发布和管理
在MPLS网络中,下游LSR决定标签和FEC的绑定关系,并将这种绑定关系发布给上游LSR。
LDP通过发送标签请求和标签映射消息,在LDP对等体之间通告FEC和标签的绑定关系来建立LSP
标签的发布和管理由标签发布方式、标签分配控制方式和标签保持方式来决定。
标签发布方式有两种: 下游自主DU和下游按需DoD
默认是下游自主发布,即对于一个特定的FEC,LSR无需从上游获得标签请求消息即进行标签分配与分发。
下游按需是: 对于一个特定的FEC,LSR获得标签请求消息之后才进行标签分配与分发。
注意这里的上游和下游是根据FEC传递的方向,假如是发送方就是上游,最后一站就是下游。
标签分配控制方式(distribution)有两种
1、有序模式(Order): 华为默认模式 : LSR 具有此FEC的下一跳的标签映射 或者 是 LSR就是 此 FEC 出节点 ,才会 向上游发送 FEC 标签映射
2、独立模式(indepened) : 本地LSR可以自主地分配一个标签绑定到某个FEC,并通告给上游LSR,而无需等待下游的标签。但是通告给上游的LSR可能不知道FEC的出站口 ,因此可能 导致数据 发送错误
标签的保留模式
1、自由模式(Liberal):默认模式 : LSR收到的标签映射可能来自下一跳,也可能来自非下一跳。对于从邻居LSR收到的标签映射,无论邻居LSR是不是自己的下一跳都保留。
缺点:需要存储次优路由FEC,优点:当最优FEC故障时候,切换到次优路径 速度很快
2、保守模式(Conservative):对于从邻居LSR收到的标签映射,只有当邻居LSR是自己的下一跳时才保留。
占用资源少,但是当最优路径故障时候寻找其它路径需要时间
注意: 32位的主机IP路由由LDP触发,假如你的是非32位,则需要命令 lsp-trigger all
PHP (Penultimate Hop Popping,次末跳弹出),也叫做倒数第二跳弹出
目的是为了减轻 Engress的查表,提高效率。默认情况是隐式空标签,可以用命令修改。
默认是隐式空标签 字段值是3
1、如果激活了PHP特性,那么egress节点在为本地路由分配标签的时候,会分配一个特殊标签3,该标签被称为隐式空标签(Implicit NULL Label)。
2、当LSR转发一个标签报文时,如果发现对应的出标签值为3,则LSR会将栈顶标签弹出,并将里面所封装的数据转发给下游LSR。Qos信息里面的优先级会丢失
显式空标签 字段值是 0:
1、 由于隐式空 标签使用的时候,弹出标签头部,会将Qos信息也会弹出,优先级保留
2、显式空标签:若出标签封装为0,则不会将标签头部弹出,标签头部中的QoS信息得以保存。R4在收到带0标签的报文的时候,直接弹出标签,不用去查找ILM表项。
LDP工作过程详解
所有LSR均采用DU + Independent +Liberal方式。
标签分发
1、作为Engress路由器 : 将主动为到达该网段的路由分配标签,如1041,并主动通过LDP协议报文将标签映射通告给LDP对等体R2和R3。即Transit
2、作为Transit路由器 : 它从Engress收到关于192.168.4.0/24的标签映射通告时,由于该通告来自下游LDP邻居,因此这将触发它自己为该路由分配标签1021,并将标签映射通告给LDP邻居即Ingress.
3、作为Ingress路由器 : Ingress收到LDP邻居Transit1及Transit2通告过来的关于192.168.4.0/24路由的标签映射后,将这两个标签都存储起来,但是由于在自己的路由表中,到达192.168.4.0/24的下一跳是Transit1,因此当前它只会使用Transit1所通告的标签1021。
标签转发
1、作为Ingress LSR,需要对接收的IP报文执行Push操作压入标签,并进行标签转发。
2、作为Transit LSR,需要对接收的IP报文执行Swap操作交换标签,并进行标签转发。
3、作为Egress LSR,需要对接收的IP报文执行Pop操作交换标签,并进行IP转发。
在MPLS中,运行LDP协议的LSR的操作小结
1、LSR首先通过运行IGP协议(例如OSPF、IS-IS等)来构建路由表、FIB表;
2、LDP根据相应的模式,为路由表中的路由前缀(FEC)分配标签;
3、LDP根据相应的模式,将自己为路由前缀分配的标签,通过LDP标签映射报文通告给LDP邻居;
4、LSR将自己为路由前缀分配的标签,以及LDP邻居为该路由前缀通告的标签存储起来,并与出接口、下一跳地址等信息形成关联(标签转发表项);
5、当LSR转发到达目的网络的标签报文时,所使用的出站标签总是下游LDP邻居所通告的标签,此处所指的下游邻居,是设备的路由表中到达该目的网络的下一跳设备。
三、基本配置
1、使能LDP
全局使能和接口使能
在 全局模式和接口模式下,使用 mpls ldp 进行使能
2.配置LDP远端会话
mpls ldp remote-peer 远端对等体名字
remote-ip IP地址
类似BGP的远端配置
3.配置触发LSP的策略
配置 触发LSP的策略:
lsp-trigger all/host/ip-prefix
默认触发是只会触发掩码是32的IP路由,
可以使用all 来触发所有地址的LSP,但不推介,因为会产生LSP数量多,消耗资源
4、配置LDP标签发布模式(LDP的保留模式不能修改,默认是自由模式)
配置LDP标签发布模式:
接口下: mpls ldp advertisement dod/du
5.配置LDP标签分配控制方式
label distribution control-mode independent/ordered
默认情况是 优秀标签分配控制 ordered
6、配置PHP特性
[Huawei-mpls] label advertise { explicit-null | implicit-null | non-null }
缺省情况下,出节点向倒数第二跳分配隐式空标签(implicit-null)。
explicit-null:出节点向倒数第二跳分配显式空标签。
implicit-null:出节点向倒数第二跳分配隐式空标签。
non-null:出节点向倒数第二跳正常分配标签。