MPLS简介
MPLS(Multiprotocol Label Switching,多协议标签交换)起源于IPv4(Internet Protocol version 4,因特网协议版本4),最初是为了提高转发速度而提出的,其核心技术可扩展到多种网络协议,包括IPv6(Internet Protocol version 6,因特网协议版本6)、IPX(Internet Packet Exchange,网际报文交换)和CLNP(Connectionless Network Protocol,无连接网络协议)等。MPLS中的“M”指的就是支持多种网络协议。
MPLS技术集二层的快速交换和三层的路由转发于一体,可以满足各种新应用对网络的要求。
MPLS网络的原理:
透传业务报文;控制平面(control plane)和数据平面(data plane)的分离。
MPLS TP-OAM报文作为MPLS网内的管理报文进行网内故障管理。
MPLS结构的详细介绍可参考RFC 3031(Multiprotocol Label Switching Architecture)。
MPLS基本概念
1. 转发等价类
MPLS作为一种分类转发技术,将具有相同转发处理方式的分组归为一类,称为FEC(Forwarding Equivalence Class,转发等价类)。相同FEC的分组在MPLS网络中将获得完全相同的处理。
FEC的划分方式非常灵活,可以是以源地址、目的地址、源端口、目的端口、协议类型或v*n等为划分依据的任意组合。例如,在传统的采用最长匹配算法的IP转发中,到同一个目的地址的所有报文就是一个FEC。
2. 标签
标签是一个长度固定,仅具有本地意义的短标识符,用于唯一标识一个分组所属的FEC。一个标签只能代表一个FEC。
标签长度为4个字节,其结构如图1所示。标签共有4个域:
标签共有4个域:
l Label:标签值字段,长度为20bits,用来标识一个FEC。
l Exp:3bits,保留,协议中没有明确规定,通常用作CoS。
l S:1bit,MPLS支持多重标签。值为1时表示为最底层标签。
l TTL:8bits,和IP分组中的TTL意义相同,可以用来防止环路。
如图 2所示,如果链路层协议具有标签域,如ATM的VPI/VCI,则标签封装在这些域中;否则,标签封装在链路层头和网络层数据之间的一个垫层中。这样,任意链路层都能够支持标签。
Label:标签,Frame mode:帧模式,Cell mode:信元模式 |
3. 标签交换路由器
LSR(Label Switching Router,标签交换路由器)是MPLS网络中的基本元素,所有LSR都支持MPLS技术。
4. 标签交换路径
一个转发等价类在MPLS网络中经过的路径称为LSP(Label Switched Path,标签交换路径)。在一条LSP上,沿数据传送的方向,相邻的LSR分别称为上游LSR和下游LSR。如图 3中,R2为R1的下游LSR,相应的,R1为R2的上游LSR。
LSP在功能上与ATM和帧中继(Frame Relay)的虚电路相同,是从MPLS网络的入口到出口的一个单向路径。LSP中的每个节点由LSR组成。
5. 标签分发协议
LDP(Label Distribution Protocol,标签分发协议)是MPLS的控制协议,它相当于传统网络中的信令协议,负责FEC的分类、标签的分配以及LSP的建立和维护等一系列操作。
MPLS可以使用多种标签发布协议,包括专为标签发布而制定的协议,例如:LDP、CR-LDP(Constraint-Based Routing using LDP,基于约束路由的LDP);也包括现有协议扩展后支持标签发布的,例如:BGP(Border Gateway Protocol,边界网关协议)、RSVP(Resource Reservation Protocol,资源预留协议)。同时,还可以手工配置静态LSP。
6. LSP隧道技术
MPLS支持LSP隧道技术。
一条LSP的上游LSR和下游LSR,尽管它们之间的路径可能并不在路由协议所提供的路径上,但是MPLS允许在它们之间建立一条新的LSP,这样,上游LSR和下游LSR分别就是这条LSP的起点和终点。这时,上游LSR和下游LSR间的LSP就是LSP隧道,它避免了采用传统的网络层封装隧道。如4. 图 3中LSP<R2→R21→R22→R3>就是R2、R3间的一条隧道。
如果隧道经由的路由与逐跳从路由协议中取得的路由一致,这种隧道就称为逐跳路由隧道(Hop-by-Hop Routed Tunnel);否则称为显式路由隧道(Explicitly Routed Tunnel)。
7. 多层标签栈
如果分组在超过一层的LSP隧道中传送,就会有多层标签,形成标签栈(Label Stack)。在每一隧道的入口和出口处,进行标签的入栈(PUSH)和出栈(POP)操作。
标签栈按照“后进先出”(Last-In-First-Out)方式组织标签,MPLS从栈顶开始处理标签。
MPLS对标签栈的深度没有限制。若一个分组的标签栈深度为m,则位于栈底的标签为1级标签,位于栈顶的标签为m级标签。未压入标签的分组可看作标签栈为空(即标签栈深度为零)的分组。
MPLS体系结构
如图 4所示,MPLS网络的基本构成单元是LSR,由LSR构成的网络称为MPLS域。
位于MPLS域边缘、连接其它用户网络的LSR称为LER(Label Edge Router,边缘LSR),区域内部的LSR称为核心LSR。核心LSR可以是支持MPLS的路由器,也可以是由ATM交换机等升级而成的ATM-LSR。域内部的LSR之间使用MPLS通信,MPLS域的边缘由LER与传统IP技术进行适配。
分组在入口LER被压入标签后,沿着由一系列LSR构成的LSP传送,其中,入口LER被称为Ingress,出口LER被称为Egress,中间的节点则称为Transit。
图 4 MPLS网络结构
结合上图简要介绍MPLS的基本工作过程:
(1) 首先,LDP和传统路由协议(如OSPF、ISIS等)一起,在各个LSR中为有业务需求的FEC建立路由表和LIB(Label Information Base,标签信息表);
(2) 入口LER接收分组,完成第三层功能,判定分组所属的FEC,并给分组加上标签,形成MPLS标签分组;
(3) 接下来,在LSR构成的网络中,LSR根据分组上的标签以及LFIB(Label Forwarding Information Base,标签转发表)进行转发,不对标签分组进行任何第三层处理;
(4) 最后,在MPLS出口LER去掉分组中的标签,继续进行后面的IP转发。
由此可以看出,MPLS并不是一种业务或者应用,它实际上是一种隧道技术,也是一种将标签交换转发和网络层路由技术集于一身的路由与交换技术平台。这个平台不仅支持多种高层协议与业务,而且,在一定程度上可以保证信息传输的安全性。
2. MPLS节点结构
图 5 MPLS节点结构示意图
如图 5所示,MPLS节点由两部分组成:
l 控制平面(Control Plane):负责标签的分配、路由的选择、标签转发表的建立、标签交换路径的建立、拆除等工作;
l 转发平面(Forwarding Plane):依据标签转发表对收到的分组进行转发。
对于普通的LSR,在转发平面只需要进行标签分组的转发,需要使用到LFIB(Label Forwarding Information Base,标签转发表)。对于LER,在转发平面不仅需要进行标签分组的转发,也需要进行IP分组的转发,所以既会使用到LFIB,也会使用到FIB(Forwarding Information Base,转发信息表)。
MPLS与路由协议
LDP通过逐跳方式建立LSP时,利用沿途各LSR路由转发表中的信息来确定下一跳,而路由转发表中的信息一般是通过IGP、BGP等路由协议收集的。LDP并不直接和各种路由协议关联,只是间接使用路由信息。另一方面,通过对BGP、RSVP等已有协议进行扩展,也可以支持标签的分发。
在MPLS的应用中,也可能需要对某些路由协议进行扩展。例如,基于MPLS的v*n应用需要对BGP进行扩展,使BGP能够传播v*n(Virtual Private Network,虚拟专用网)的路由信息;基于MPLS的TE(Traffic Engineering,流量工程)需要对OSPF或IS-IS协议进行扩展,以携带链路状态信息。
MPLS的应用
最初,MPLS技术结合了二层交换技术和三层路由技术,提高了路由查找速度。但是,随着ASIC(Application-Specific Integrated Circuit,专用集成电路)技术的发展,路由查找速度已经不成为阻碍网络发展的瓶颈。这使得MPLS在提高转发速度方面不具备明显的优势。
但由于MPLS结合了IP网络强大的三层路由功能和传统二层网络高效的转发机制,在转发平面采用面向连接方式,与现有二层网络转发方式非常相似,这些特点使得MPLS能够很容易地实现IP与ATM、帧中继等二层网络的无缝融合,并为QoS(Quality of Service,服务质量)、TE、v*n等应用提供更好的解决方案。
传统的v*n一般是通过GRE、L2TP、PPTP等隧道协议来实现私有网络间数据流在公网上的传送,LSP本身就是公网上的隧道,因此,用MPLS来实现v*n有天然的优势。
基于MPLS的v*n就是通过LSP将私有网络的不同分支连接起来,形成一个统一的网络。基于MPLS的v*n还支持对不同v*n间的互通控制。
图 6 基于MPLS的v*n
图 6是基于MPLS的v*n的基本结构:CE(Customer Edge,用户边缘设备)可以是路由器,也可以是交换机或主机;PE(Provider Edge,服务商边缘路由器)位于骨干网络。
PE负责对v*n用户进行管理、建立各PE间LSP连接、同一v*n用户各分支间路由分派。PE间的路由分派通常是用LDP或扩展的BGP协议实现。
基于MPLS的v*n支持不同分支间IP地址复用,并支持不同v*n间互通。与传统的路由相比,v*n路由中需要增加分支和v*n的标识信息,这就需要对BGP协议进行扩展,以携带v*n路由信息。
2. 基于MPLS的流量工程
基于MPLS的TE和差分服务Diff-serv特性,在保证网络高利用率的同时,可以根据不同数据流的优先级实现差别服务,从而为语音、视频等数据流提供有带宽保证的低延时、低丢包率的服务。
由于全网实施流量工程的难度比较大,因此,在实际的组网方案中往往通过差分服务模型来实施QoS。
Diff-Serv的基本机制是在网络边缘,根据业务的服务质量要求将该业务映射到一定的业务类别中,利用IP分组中的DS字段(由ToS域而来)唯一的标记该类业务,然后,骨干网络中的各节点根据该字段对各种业务采取预先设定的服务策略,保证相应的服务质量。
Diff-Serv的这种对服务质量的分类和MPLS的标签分配机制十分相似,事实上,基于MPLS的Diff-Serv就是通过将DS的分配与MPLS的标签分配过程结合来实现的。
MPLS基本配置简介
标签的发布和管理
在MPLS体系中,由下游LSR决定将标签分配给特定FEC,再通知上游LSR。即,标签由下游指定,标签的分配按从下游到上游的方向。
1. 标签发布方式(Label Advertisement Mode)
标签发布方式分为两种:
l 下游按需方式DoD(Downstream On Demand):对于一个特定的FEC,LSR从上游获得标签请求消息之后才进行标签分配与分发;
l 下游自主方式DU(Downstream Unsolicited):对于一个特定的FEC,LSR无须从上游获得标签请求消息即进行标签分配与分发。
具有标签分发邻接关系的上游LSR和下游LSR之间必须使用相同的标签发布方式,否则LSP无法正常建立。
2. 标签分配控制方式(Label Distribution Control Mode)
标签分配控制方式分为两种:
l 独立标签分配控制(Independent):LSR可以在任意时间向与它连接的LSR通告标签映射。这种方式可能导致在收到下游标签之前就向上游发布了标签。
l 有序标签控制方式(Ordered):对于LSR上某个FEC的标签映射,只有当该LSR已经具有此FEC下一跳的标签映射消息或者该LSR就是此FEC的出口节点时,该LSR才可以向上游发送此FEC的标签映射。
3. 标签保持方式(Label Retention Mode)
标签保持方式是指LSR对收到的、但目前暂时用不到的标签—FEC绑定的处理方式。
标签保持方式也分为两种:
l *标签保持方式(Liberal):对于从邻居LSR收到的标签映射,无论邻居LSR是不是自己的下一跳都保留。
l 保守标签保持方式(Conservative):对于从邻居LSR收到的标签映射,只有当邻居LSR是自己的下一跳时才保留。
使用*标签保持方式,LSR能够迅速适应路由变化;而使用保守标签保持方式,LSR可以分配和保存较少的标签数量。
保守标签保持方式通常与DoD方式一起,用于对于标签空间有限的LSR。
4. 标签交换中的几个基本概念
l NHLFE(Next Hop Label Forwarding Entry):下一跳标签转发项。用于描述对标签执行的操作,包括入栈(Push)操作和交换(Swap)操作。
l FTN(FEC to NHLFE map):在Ingress节点将转发等价类FEC映射到NHLFE的过程。
l ILM(Incoming Label Map):入标签映射。对于接收的标签分组,LSR将标签映射到NHLFE的过程,包括空(Null)操作、出栈(Pop)操作。
5. 标签交换的过程
入口LER(Ingress)将进入网络的分组划分成转发等价类FEC。属于相同FEC的分组在MPLS域中将经过相同的路径,即使用同一条LSP。LSR对到来的FEC分组分配一个标签,然后从相应的接口转发出去。
标签交换的具体操作描述如下:
(1) LSP沿途的所有LSR都先建立ILM,入标签是根据ILM表项进行映射的;
(2) 对于接收到的标签分组,LSR将标签映射到NHLFE;
(3) LSR只需根据标签从标签信息表中找到相应的NHLFE,用新的标签替换原来的标签,然后对标签分组继续转发。
倒数第二跳弹出
在介绍MPLS的基本工作过程时提到:在MPLS网络中,核心LSR根据分组上的标签进行转发;在Egress节点(出口LER)去掉分组中的标签,继续进行IP转发。
实际上,在比较简单的MPLS应用中,Egress节点只需要进行IP转发,标签已经没有使用价值。这种情况下,为了减轻Egress节点的负担,提高MPLS网络对报文的处理能力,可以利用PHP(Penultimate Hop Popping,倒数第二跳弹出)特性,在倒数第二个节点处将标签弹出,Egress节点就不再进行标签操作了。
MPLS MTU
MPLS标签栈象“垫层”一样,位于二层数据帧头和数据之间。在MPLS转发过程中,虽然网络层报文长度小于接口的MTU,但是增加MPLS标签后,报文长度可能超过链路层允许发送的范围,从而导致报文无法正常转发。为此,设备上定义了MPLS MTU,MPLS转发时将增加标签后的报文长度与MPLS MTU比较。报文长度大于MPLS MTU时,如果允许分片,则将报文分片后再进行转发;如果不允许分片,则直接丢弃。
MPLS对TTL的处理
MPLS的TTL处理包括IP TTL复制和ICMP响应报文返回路径这两个方面。
1. IP TTL复制
MPLS标签中包含一个8位的TTL域,其含义与IP头中的TTL域相同。
根据RFC 3031中的描述,LSR节点在对分组压入标签时,需要将原IP分组或下层标签中的TTL值拷贝到新增加的标签的TTL域。LSR在转发标签分组时,对栈顶标签的TTL值做减一操作。标签出栈时,再将栈顶的TTL值拷贝回IP分组或下层标签。
TTL除了用于防止产生路由环路外,也用于实现tracert功能:
l 如果在Ingress节点使能IP TTL复制功能,报文在LSP中经过的每一跳都体现为IP TTL逐跳递减,tracert的结果将反映报文实际经过的路径;
l 如果不在Ingress节点使能IP TTL复制功能,则报文在LSP中经过的跳数不会导致IP TTL递减,tracert的结果不包括MPLS骨干网络中每一跳,就好像Ingress路由器与Egress路由器是直连的。
在MPLS v*n应用中,出于网络安全的考虑,需要隐藏MPLS骨干网络的结构,这种情况下,对于私网报文,Ingress节点上不能使用TTL的复制功能。
2. ICMP响应报文
在MPLS v*n网络中,P路由器无法对MPLS承载的v*n报文进行路由。当MPLS报文的TTL超时时,ICMP响应报文将按照LSP继续传送,到达LSP终点路由器后,再根据IP路由转发ICMP响应报文。这种处理方式增加了网络流量和报文转发时延。
对于仅有一层标签的MPLS报文,当TTL超时时,直接使用IP路由返回ICMP响应报文。
检测MPLS LSP
在MPLS中,如果LSP转发数据失败,负责建立LSP的MPLS控制平面将无法检测到这种错误,这会给网络维护带来困难。
MPLS LSP Ping/Traceroute为用户提供了发现LSP错误、并及时定位失效节点的机制。类似于普通IP的Ping/Traceroute,MPLS LSP Ping/Traceroute使用MPLS Echo Request报文和MPLS Echo Reply报文检测LSP的可用性。MPLS Echo Request中携带需要检测的FEC信息,和其他属于此FEC的报文一样沿LSP发送,从而实现对LSP的检测。
l MPLS LSP Ping是用于对LSP的有效性、可达性进行检测的工具。采取方法是通过发送一个叫做MPLS Echo Request的报文,通过LSP的数据转发,到达出口后,在MPLS域的Egress,由Egress节点的控制平面确认本LSR是否为该FEC的出口,返回一个叫做MPLS Echo Reply的报文,如果发送方收到该报文,则说明这条LSP可以正确用于数据转发。
l MPLS LSP Traceroute是对LSP的错误进行定位的工具。采取方法是Echo Request数据包被发送到每一个中间LSR的控制平面,以确定本LSR是否是此路径的中间节点。
LDP协议简介
LDP基本概念
LDP协议规定标签分发过程中的各种消息以及相关的处理进程。
通过LDP,LSR可以把网络层的路由信息直接映射到数据链路层的交换路径上,进而建立起LSP。LSP既可以建立在两个相邻的LSR之间,也可以建立在两个非直连的LSR之间,从而在网络中所有中间节点上都使用标签交换。
1. LDP对等体
LDP对等体是指相互之间存在LDP会话、使用LDP来交换标签/FEC映射关系的两个LSR。LDP对等体通过它们之间的LDP会话获得对方的标签映射消息。
2. LDP会话
LDP会话用于在LSR之间交换标签映射、释放等消息。LDP会话可以分为两种类型:
l 本地LDP会话(Local LDP Session):建立会话的两个LSR之间是直连的;
l 远端LDP会话(Remote LDP Session):建立会话的两个LSR之间是非直连的。
3. LDP消息类型
LDP协议主要使用四类消息:
l 发现(Discovery)消息:用于通告和维护网络中LSR的存在;
l 会话(Session)消息:用于建立、维护和终止LDP对等体之间的会话;
l 通告(Advertisement)消息:用于创建、改变和删除标签—FEC绑定;
l 通知(Notification)消息:用于提供建议性的消息和差错通知。
为保证LDP消息的可靠发送,除了发现阶段使用UDP传输外,LDP的Session消息、Advertisement消息和Notification消息都使用TCP传输。
4. 标签空间与LDP标识符
LDP对等体之间分配标签的范围称为标签空间(Label space)。可以为LSR的每个接口指定一个标签空间(per-interface label space),也可以整个LSR使用一个标签空间(per-platform label space)。
LDP标识符(LDP Identifier)用于标识特定LSR的标签空间,是一个六字节的数值,格式如下:
<LSR ID>:<标签空间序号>
其中,LSR ID占四字节,标签空间序号占两字节。标签空间序号取值为1时表示每个接口指定一个标签空间;取值为0时表示整个LSR使用一个标签空间。
LDP标签分发
图 7为LDP标签分发示意图。
例如,图 7中的LSP1上,LSR B为LSR C的上游LSR。
本章前面提到,标签的分发过程有两种模式,主要区别在于标签映射的发布是上游请求(DoD)还是下游主动发布(DU)。
下面分别详细描述这两种模式的标签分发过程:
2. DoD(downstream-on-demand)模式
上游LSR向下游LSR发送标签请求消息(Label Request Message),其中包含FEC的描述信息。下游LSR为此FEC分配标签,并将绑定的标签通过标签映射消息(Label Mapping Message)反馈给上游LSR。
下游LSR何时反馈标签映射消息,取决于该LSR采用的标签分配控制方式。
l 采用Ordered方式时,只有收到它的下游返回的标签映射消息后,才向其上游发送标签映射消息;
l 采用Independent方式时,不管有没有收到它的下游返回的标签映射消息,都立即向其上游发送标签映射消息。
上游LSR一般是根据其路由表中的信息来选择下游LSR。在图 7中,LSP1沿途的LSR都采用Ordered方式,LSP2上的LSR F则采用Independent方式。
3. DU(downstream unsolicited)模式
下游LSR在LDP会话建立成功后,主动向其上游LSR发布标签映射消息。上游LSR保存标签映射信息,并根据路由表信息来处理收到的标签映射信息。
LDP基本操作
按照先后顺序,LDP的操作主要包括以下四个阶段:
l 发现阶段
l 会话建立与维护
l LSP建立与维护
l 会话撤销
1. 发现阶段
在这一阶段,希望建立会话的LSR向相邻LSR周期性地发送Hello消息,通知相邻节点自己的存在。通过这一过程,LSR可以自动发现它的LDP对等体,而无需进行手工配置。
LDP有两种发现机制:
l 基本发现机制
基本发现机制用于发现本地的LDP对等体,即通过链路层直接相连的LSR,建立本地LDP会话。
这种方式下,LSR周期性以UDP报文形式从接口发送LDP链路Hello消息(LDP Link Hello),发往标识“子网内所有路由器”的组播地址。
LDP链路Hello消息带有接口的LDP标识符及其他相关信息,如果LSR在某个接口收到了LDP链路Hello消息,则表明在该接口(链路层)存在LDP对等体。
l 扩展发现机制
扩展发现机制用于发现远端的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重起过程中,转发表项被保留,保证流量不会中断。