02-MPLS基本配置
本章节下载: 02-MPLS基本配置 (789.84 KB)
目 录
本系列交换机中S5500-28SC-HI和S5500-52SC-HI不支持MPLS功能。
MPLS(Multiprotocol Label Switching,多协议标签交换)是一种新兴的IP骨干网技术。MPLS在无连接的IP网络上引入面向连接的标签交换概念,将第三层路由技术和第二层交换技术相结合,充分发挥了IP路由的灵活性和二层交换的简捷性。
MPLS广泛应用于大规模网络中,它具有以下优点:
· 在MPLS网络中,设备根据短而定长的标签转发报文,省去了通过软件查找IP路由的繁琐过程,为数据在骨干网络中的传输提供了一种高速高效的方式。
· MPLS位于链路层和网络层之间,它可以建立在各种链路层协议(如PPP、ATM、帧中继、以太网等)之上,为各种网络层(IPv4、IPv6)提供面向连接的服务,兼容现有各种主流网络技术。
· 支持多层标签和面向连接的特点,使得MPLS在VPN、流量工程、QoS等方面得到广泛应用。
· 具有良好的扩展性,在MPLS网络基础上可以为客户提供各种服务。
FEC(Forwarding Equivalence Class,转发等价类)是MPLS中的一个重要概念。MPLS是一种分类转发技术,它将具有相同特征(目的地相同或具有相同服务等级等)的报文归为一类,称为FEC。属于相同FEC的报文在MPLS网络中将获得完全相同的处理。目前设备只支持根据报文的网络层目的地址划分FEC。
标签是一个长度固定、只具有本地意义的标识符,用于唯一标识一个报文所属的FEC。一个标签只能代表一个FEC。
如图1-1所示,标签封装在链路层报头和网络层报头之间的一个垫层中。标签长度为4个字节,由以下四个字段组成:
· Label:标签值,长度为20bits,用来标识一个FEC。
· Exp:3bits,保留,协议中没有明确规定,通常用作服务等级。
· S:1bit,MPLS支持多重标签。值为1时表示为最底层标签。
· TTL:8bits,和IP报文中的TTL意义相同,可以用来防止环路。
Exp称为MPLS报文服务等级,可影响报文的优先调度。有关报文调度的详细信息,请参见“ACL和QoS配置指导”中的“QoS”。
LSR(Label Switching Router,标签交换路由器)是具有标签分发能力和标签交换能力的设备,是MPLS网络中的基本元素。
位于MPLS网络边缘、连接其他网络的LSR称为LER(Label Edge Router,标签边缘路由器)。
属于同一个FEC的报文在MPLS网络中经过的路径称为LSP(Label Switched Path,标签交换路径)。
LSP是从MPLS网络的入口到出口的一条单向路径。在一条LSP上,沿数据传送的方向,相邻的LSR分别称为上游LSR和下游LSR。如图1-2所示,LSR B为LSR A的下游LSR,相应的,LSR A为LSR B的上游LSR。
与IP网络中的FIB(Forwarding Information Base,转发信息表)类似,在MPLS网络中,报文通过查找标签转发表确定转发路径。
MPLS节点由两部分组成:
· 控制平面(Control Plane):负责标签的分配、路由的选择、标签转发表的建立、标签交换路径的建立、拆除等工作。
· 转发平面(Forwarding Plane):依据标签转发表对收到的分组进行转发。
如图1-3所示,MPLS网络的基本构成单元是LSR,由LSR构成的网络称为MPLS域。MPLS网络包括以下几个组成部分:
· 入节点Ingress:报文的入口LER,负责为进入MPLS域的报文添加标签。
· 中间节点Transit:MPLS域内部的LSR,根据标签沿着由一系列LSR构成的LSP将报文传送给出口LER。
· 出节点Egress:报文的出口LER,负责剥离报文中的标签,并转发给目的网络。
Transit根据报文上附加的标签进行MPLS转发,Ingress和Egress负责MPLS与IP技术的转换。
LSP的建立过程实际就是将FEC和标签进行绑定,并将这种绑定通告相邻LSR,以便在LSR上建立标签转发表的过程。LSP既可以通过手工配置的方式静态建立,也可以利用标签分发协议动态建立。
(1) 手工配置的方式静态建立LSP
建立静态LSP需要用户在报文转发路径中的各个LSR上手工配置为FEC分配的标签。建立静态LSP消耗的资源比较少,但静态建立的LSP不能根据网络拓扑变化动态调整。因此,静态LSP适用于拓扑结构简单并且稳定的小型网络。
(2) 利用标签发布协议动态建立LSP
标签发布协议是MPLS的信令协议,负责划分FEC、发布标签、建立维护LSP等。标签发布协议的种类较多,有专为标签发布而制定的协议,如LDP(Label Distribution Protocol,标签分发协议),也有扩展后支持标签发布的协议,如BGP、RSVP-TE。本文只介绍LDP协议。
利用标签发布协议动态建立LSP的过程如图1-4所示。下游LSR根据目的地址划分FEC,为特定FEC分配标签,并将标签和FEC的绑定关系通告给上游LSR;上游LSR根据该绑定关系建立标签转发表项。报文传输路径上的所有LSR都为该FEC建立对应的标签转发表项后,就成功地建立了用于转发属于该FEC报文的LSP。
图1-4 动态LSP建立过程
如果在LSR上存在等价路由,则MPLS会根据等价路由建立等价LSP,MPLS报文在这些等价LSP之间进行负载分担。
标签发布就是将为FEC分配的标签通告给其他LSR。根据标签发布条件、标签发布顺序的不同,LSR通告标签的方式分为DU(Downstream Unsolicited,下游自主方式)和DoD(Downstream On Demand,下游按需方式)、独立标签控制方式(Independent)和有序标签控制方式(Ordered)几种。
标签管理,即标签保持方式,是指LSR对收到的、但目前暂时用不到的FEC和标签绑定的处理方式,分为自由标签保持方式(Liberal)和保守标签保持方式(Conservative)两种。
(1) 标签发布方式(Label Advertisement Mode)
如图1-5所示,标签发布方式分为:
· DU:对于一个特定的FEC,下游LSR自动为该FEC分配标签,并主动将标签分发给上游LSR。
· DoD:对于一个特定的FEC,上游LSR请求下游LSR为该FEC分配标签,下游LSR收到请求后,为该FEC分配标签并向上游LSR通告该标签。
· 目前,设备只支持DU标签发布方式。
· 具有标签分发邻接关系的上游LSR和下游LSR之间必须使用相同的标签发布方式,否则LSP无法正常建立。
(2) 标签分配控制方式(Label Distribution Control Mode)
标签分配控制方式分为:
· 独立标签控制方式:LSR可以在任意时间向与它连接的LSR通告标签映射。使用这种方式时,LSR可能会在收到下游LSR的标签之前就向上游通告了标签。如图1-6所示,如果标签发布方式是DU,则即使没有获得下游的标签,也会直接为上游分配标签;如果标签发布方式是DoD,则接收到标签请求的LSR直接为它的上游LSR分配标签,不必等待来自它的下游的标签。
· 有序标签控制方式:LSR只有收到它的下游LSR为某个FEC分配的标签,或该LSR是此FEC的出口节点时,才会向它的上游LSR通告此FEC的标签映射。图1-5中的标签发布过程采用了有序标签控制方式:如果标签发布模式为DU,则LSR只有收到下游LSR分配的标签后,才会向自己的上游LSR分配标签;如果标签发布模式为DoD,则下游LSR(Transit)收到上游LSR(Ingress)的标签请求后,继续向它的下游LSR(Egress)发送标签请求,Transit收到Egress分配的标签后,才会为Ingress分配标签。
(3) 标签保持方式(Label Retention Mode)
LSR接收到标签映射后,保留标签的方式分为:
· 自由标签保持方式:对于从邻居LSR收到的标签映射,无论邻居LSR是不是指定FEC的下一跳都保留。这种方式的优点是LSR能够迅速适应网络拓扑变化,但是浪费标签,所有不能生成LSP的标签都需要保留。
· 保守标签保持方式:对于从邻居LSR收到的标签映射,只有当邻居LSR是指定FEC的下一跳时才保留。这种方式的优点是节省标签,但是对拓扑变化的响应较慢。
目前只支持自由标签保持方式。
标签转发表由以下三部分构成:
· NHLFE(Next Hop Label Forwarding Entry,下一跳标签转发项):描述对标签执行的操作,用于指导MPLS报文的转发。
· FTN(FEC to NHLFE map,FEC到NHLFE表项的映射):用于在Ingress节点将FEC映射到NHLFE表项。LSR接收到不带标签的报文后,查找对应的FIB表项。如果FIB表项的Token值不是Invalid,则该报文需要进行MPLS转发。LSR根据Token值找到对应的NHLFE表项,以便确定需要执行的标签操作。
· ILM(Incoming Label Map,入标签映射):用于将入标签映射到NHLFE表项。LSR接收到带有标签的报文后,查找对应的ILM表项。如果ILM表项的Token值非空,则找到Token值对应的NHLFE表项,以便确定需要执行的标签操作。
FTN、ILM通过Token与NHLFE关联。
图1-7 MPLS转发过程示意图
如图1-7所示,MPLS网络中报文的转发过程为:
(1) Ingress(Router B)接收到不带标签的报文,根据目的地址判断该报文所属的FEC,查找FIB表,获取Token值。Token值不是Invalid,则找到Token值对应的NHLFE表项。根据NHLFE表项为报文添加标签(40),并从相应的出接口(GigabitEthernet1/0/2)将带有标签的报文转发给下一跳LSR(Router C)。
(2) Router C接收到带有标签的报文,根据报文上的标签(40)查找ILM表项,获取Token值。Token值非空,则找到Token值对应的NHLFE表项。根据NHLFE表项,用新的标签(50)替换原有标签,并从相应的出接口将带有标签的报文转发给下一跳LSR(Router D)。
(3) Egress(Router D)接收到带有标签的报文,根据报文上的标签(50)查找ILM表项,获取Token值。Token值为空,则删除报文中的标签。如果ILM表项中记录了出接口,则通过该出接口转发报文;否则,根据IP报头转发报文。
MPLS网络中,Egress节点接收到带有标签的报文后,查找标签转发表,弹出报文中的标签后,再进行下一层的标签转发或IP转发。Egress节点转发报文之前要查找两次转发表:两次标签转发表,或一次标签转发表一次路由转发表。
为了减轻Egress节点的负担,提高MPLS网络对报文的处理能力,可以利用PHP(Penultimate Hop Popping,倒数第二跳弹出)功能,在倒数第二跳节点处将标签弹出,Egress节点只需查找一次转发表。
PHP在Egress节点上配置。支持PHP的Egress节点分配给倒数第二跳节点的标签有以下两种:
· 标签值为0表示IPv4显示空标签(Explicit-null)。Egress为FEC分配IPv4显式空标签,并通告给上游LSR后,上游LSR用这个值替代栈顶原来的标签,并将报文转发给Egress。Egress收到标签值为0的报文时,不会查找标签转发表,直接弹出标签栈,进行IPv4转发。
· 标签值3表示隐式空标签(Implicit-null),这个值不会出现在标签栈中。当一个LSR发现下游LSR通告的标签为隐式空标签时,它并不用这个值替代栈顶原来的标签,而是直接弹出标签,并将报文转发给下游LSR(即Egress)。Egress接收到报文后,直接进行下一层的转发处理。
当网络中报文流量过大时,易造成网络拥塞。队列调度是在网络发生拥塞时指定一个资源的调度策略,以决定报文转发的处理次序。
在MPLS组网环境中,如果需要使用报文优先级进行优先级映射并对报文进行队列调度,需将使能MPLS功能的设备上转发报文的端口配置为信任802.1p优先级或DSCP优先级。有关队列调度和优先级映射的详细信息,请参见“ACL和QoS配置指导”中的“QoS”。
在MPLS L2VPN、VPLS和MPLS L3VPN组网环境中,还需在CE设备上转发报文的端口配置为信任802.1p优先级或DSCP优先级,有关CE设备的详细介绍请参见“MPLS配置指导”中的“MPLS L3VPN”。
LDP是标签发布协议的一种,用来动态建立LSP。通过LDP,LSR可以把网络层的路由信息映射到数据链路层的交换路径上。
· LDP会话
LDP会话建立在TCP连接之上,用于在LSR之间交换标签映射、标签释放、差错通知等消息。
· LDP对等体
LDP对等体是指相互之间存在LDP会话,并通过LDP会话交换标签-FEC映射关系的两个LSR。
LDP协议主要使用四类消息:
· 发现(Discovery)消息:用于通告和维护网络中LSR的存在;
· 会话(Session)消息:用于建立、维护和终止LDP对等体之间的会话;
· 通告(Advertisement)消息:用于创建、改变和删除“标签—FEC”映射关系;
· 通知(Notification)消息:用于提供建议性的消息和差错通知。
为保证LDP消息的可靠发送,除了发现消息使用UDP传输外,LDP的会话消息、通告消息和通知消息都使用TCP传输。
(1) 发现阶段
所有希望建立LDP会话的LSR都周期性地发送Hello消息,通告自己的存在。通过Hello消息,LSR可以自动发现它的LDP对等体。
LDP对等体发现机制分为两种:
· 基本发现机制:用于发现本地的LDP对等体,即通过链路层直接相连的LSR,并与其建立Link hello邻接关系。这种方式下,LSR周期性地向“子网内所有路由器”的组播地址224.0.0.2发送LDP链路Hello消息,以便链路层直接相连的LSR发现此LDP对等体。
· 扩展发现机制:用于发现远端的LDP对等体,即不通过链路层直接相连的LSR,并与其建立Targeted hello邻接关系。这种方式下,LSR周期性地向指定的IP地址发送LDP目标Hello消息,以便指定IP地址对应的LSR发现此LDP对等体。
两个LSR为基本发现机制和扩展发现机制配置的传输地址(用来建立TCP连接的源IP地址)相同时,这两个LSR之间可以同时建立Link hello邻接关系和Targeted hello邻接关系,并且Link hello邻接关系和Targeted hello邻接关系关联到同一个会话。在LDP对等体之间存在直连(只有一跳)和非直连(多于一跳)多条路径的组网环境中,同时建立Link hello邻接关系和Targeted hello邻接关系可以实现利用扩展发现机制来保护与对等体的会话。当直连链路出现故障时,Link hello邻接关系将被删除。如果此时非直连链路正常工作,则Targeted hello邻接关系依然存在,因此,LDP会话不会被删除,基于该会话的FEC—标签绑定等信息也不会删除。直连链路恢复后,不需要重新建立LDP会话、重新学习FEC—标签绑定等信息,从而加快了LDP收敛速度。
两个LSR为基本发现机制和扩展发现机制配置的传输地址不同时,如果在这两个LSR之间已经建立了一种邻接关系,则无法再建立另一种邻接关系。
(2) 会话建立与维护
发现LDP对等体后,LSR开始建立会话。这一过程又可分为两步:
· 建立传输层连接,即在LSR之间建立TCP连接;
· 对LSR之间的会话进行初始化,协商会话中涉及的各种参数,如LDP版本、标签发布方式、Keepalive定时器值等。
会话建立后,LDP对等体之间通过不断地发送Hello消息和Keepalive消息来维护这个会话。
(3) LSP建立与维护
LDP通过发送标签请求和标签映射消息,在LDP对等体之间通告FEC和标签的绑定关系,从而建立LSP。
LSP的建立过程,请参见“1.1.3 LSP建立与标签的发布和管理”。
(4) 会话撤销
在以下情况下,LSR将撤销LDP会话:
· LSR通过周期性发送Hello消息表明自己希望与邻居LSR继续维持这种邻接关系。如果Hello保持定时器超时仍没有收到新的Hello消息,则删除Hello邻接关系。一个LDP会话上可能存在多个Hello邻接关系。当LDP会话上的最后一个Hello邻接关系被删除后,LSR将发送通知消息,结束该LDP会话。
· LSR通过LDP会话上传送的LDP PDU(LDP PDU中携带一个或多个LDP消息)来判断LDP会话的连通性。如果在会话保持定时器(Keepalive定时器)超时前,LDP对等体之间没有需要交互的信息,LSR将发送Keepalive消息给LDP对等体,以便维持LDP会话。如果会话保持定时器超时,没有收到任何LDP PDU,LSR将关闭TCP连接,结束LDP会话。
· LSR还可以发送Shutdown消息,通知它的LDP对等体结束LDP会话。因此,LSR收到LDP对等体发送的Shutdown消息后,将结束与该LDP对等体的会话。
与MPLS相关的协议规范有:
· RFC 3031:Multiprotocol Label Switching Architecture
· RFC 3032:MPLS Label Stack Encoding
· RFC 5036:LDP Specification
配置任务 |
说明 |
详细配置 |
||||
使能MPLS功能 |
必选 |
|||||
建立静态LSP |
必选 |
两种建立LSP的方式,必选其一 |
||||
利用LDP建立动态LSP |
配置MPLS LDP能力 |
必选 |
||||
配置LDP本地会话的参数 |
可选 |
|||||
配置LDP远端会话的参数 |
可选 |
|||||
配置PHP特性 |
可选 |
|||||
配置LSP触发策略 |
可选 |
|||||
配置LDP标签分配控制方式 |
可选 |
|||||
配置LDP环路检测 |
可选 |
|||||
配置LDP MD5认证 |
可选 |
|||||
配置LDP标签过滤 |
可选 |
|||||
配置发送的LDP报文的DSCP优先级 |
可选 |
|||||
维护LDP会话 |
配置MPLS LDP与BFD联动 |
可选 |
||||
重启LDP会话 |
可选 |
|||||
管理及优化MPLS转发功能 |
配置Ingress节点对TTL的处理方式 |
可选 |
||||
配置MPLS的TTL超时消息发送功能 |
可选 |
|||||
配置LDP GR |
可选 |
|||||
配置MPLS统计功能 |
使能MPLS统计功能 |
可选 |
||||
检测LSP |
MPLS LSP Ping功能 |
可选 |
||||
MPLS LSP Tracert功能 |
可选 |
|||||
配置BFD检测LSP功能 |
可选 |
|||||
配置周期性LSP Tracert功能 |
可选 |
|||||
MPLS的Trap功能 |
可选 |
|||||
目前支持MPLS能力的接口类型为三层以太网接口、三层聚合接口和VLAN接口(Vlan-interface)。三层以太网接口是指工作模式被配置成三层模式的以太网端口,有关以太网端口工作模式切换的操作,请参见“二层技术-以太网交换配置指导”中的“以太网端口配置”部分。
MPLS域中参与MPLS转发的路由器上,必须先使能MPLS功能,才能进行MPLS其它特性的配置。
在使能MPLS功能之前,需要完成以下任务:
· 配置链路层协议,保证链路层通信正常。
· 配置接口的网络层地址,使各相邻节点网络层可达。
· 配置单播静态路由或IGP协议,保证各LSR在网络层互通。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置本节点的LSR ID |
mpls lsr-id lsr-id |
必选 缺省情况下,未配置LSR ID |
使能本节点的MPLS能力,并进入MPLS视图 |
mpls |
必选 缺省情况下,未使能本节点的MPLS能力 |
退回系统视图 |
quit |
- |
进入需要转发MPLS报文的接口视图 |
interface interface-type interface-number |
- |
使能接口的MPLS能力 |
mpls |
必选 缺省情况下,未使能接口的MPLS能力 |
LSR ID使用IP地址格式,在MPLS域内唯一。推荐使用Loopback接口的IP地址作为LSR ID。
建立静态LSP需要遵循的原则是:上游LSR出标签的值就是下游LSR入标签的值。
在配置静态LSP之前,需完成以下任务:
· 确定静态LSP的入节点、中间节点和出节点。
· 在各节点上使能MPLS功能。
· 在入节点上建立静态LSP时,需确保该节点上存在FEC目的地址对应的路由。中间节点和出节点上不需要存在FEC目的地址对应的路由。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
为Ingress节点配置静态LSP |
static-lsp ingress lsp-name destination dest-addr mask | mask-length } { nexthop next-hop-addr | out-label out-label |
必选 |
为Transit节点配置静态LSP |
static-lsp transit lsp-name incoming-interface interface-type interface-number in-label in-label nexthop next-hop-addr out-label out-label |
必选 |
为Egress节点配置静态LSP |
static-lsp egress lsp-name incoming-interface interface-type interface-number in-label in-label |
必选 |
· 在Ingress节点上配置静态LSP时,指定的下一跳必须与路由表中最优下一跳保持一致。如果是通过静态路由配置路由信息,则静态路由必须与静态LSP指定的下一跳一致。
· 配置Ingress和Transit时,本地设备上接口的公网地址不能作为下一跳地址。
· 有关IP静态路由的介绍请参见“三层技术-IP路由配置指导”中的“静态路由”。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
使能本节点的LDP能力,并进入MPLS-LDP视图 |
mpls ldp |
必选 缺省情况下,未使能LDP能力 |
配置LDP的LSR ID |
lsr-id lsr-id |
可选 缺省情况下,LDP的LSR ID与MPLS LSR ID相同 |
退回系统视图 |
quit |
- |
进入建立LDP会话的接口视图 |
interface interface-type interface-number |
- |
使能接口的LDP能力 |
mpls ldp |
必选 缺省情况下,在接口上未使能LDP能力 |
· 取消接口的LDP能力将会导致接口下的所有LDP会话中断,基于这些会话的所有LSP也将被删除。
· 通常情况下LDP使用缺省的MPLS LSR ID即可,在某些使用VPN实例(例如MPLS L3VPN)的组网方案中,如果VPN与公网地址空间重叠,则需要为LDP另外配置LSR ID,以保证TCP连接能够正常建立。
本地LDP对等体之间建立的LDP会话,称为本地会话。建立LDP本地会话前:
· 需要先确认对端的LDP传输地址,并保证两端的LDP传输地址是相互可达的,这样才能建立TCP连接。
· 如果LSR之间的LDP会话数较多或CPU利用率较高时,需要对定时器进行调节确保LDP会话的稳定性。
表1-5 配置LDP本地会话的参数
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入建立LDP会话的接口视图 |
interface interface-type interface-number |
- |
配置链路Hello保持定时器的值 |
mpls ldp timer hello-hold value |
可选 缺省情况下,链路Hello保持定时器的值为15秒 |
配置链路Keepalive保持定时器的值 |
mpls ldp timer keepalive-hold value |
可选 缺省情况下,链路Keepalive保持定时器的值为45秒 |
配置LDP传输地址 |
mpls ldp transport-address { ip-address | interface } |
可选 缺省情况下,传输地址是本LSR的LSR ID |
选择指定IP地址作为LDP传输地址时,配置的IP地址应为设备接口的IP地址,否则LDP会话将无法建立。
远端LDP对等体之间建立的LDP会话,称为远端会话。LDP远端会话主要应用于Martini方式的MPLS L2VPN和Martini方式的VPLS,详细介绍请参见“MPLS配置指导”的“MPLS L2VPN”和“VPLS”。
建立远端LDP会话前:
· 需要先确认对端的LDP传输地址,并保证两端的LDP传输地址是相互可达的,这样才能建立TCP连接。
· 如果LSR之间的LDP会话数较多或CPU利用率较高时,需要对定时器进行调节确保LDP会话的稳定性。
表1-6 配置LDP远端会话的参数
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建远端对等体实体并进入MPLS-LDP远端对等体视图 |
mpls ldp remote-peer remote-peer-name |
必选 |
指定LDP远端对等体的IP地址 |
remote-ip ip-address |
必选 |
配置通过远端会话通告基于地址前缀的标签 |
prefix-label advertise |
可选 缺省情况下,不会通过远端会话通告基于地址前缀的标签 |
配置目标Hello保持定时器的值 |
mpls ldp timer hello-hold value |
可选 缺省情况下,目标Hello保持定时器的值为45秒 |
配置目标Keepalive保持定时器的值 |
mpls ldp timer keepalive-hold value |
可选 缺省情况下,目标Keepalive保持定时器的值为45秒 |
配置LDP传输地址 |
mpls ldp transport-address ip-address |
可选 缺省情况下,传输地址是本LSR的LSR ID |
· 配置的LDP传输地址应为设备接口的IP地址,否则LDP会话将无法建立。
· 即将配置的远端对等体的IP地址不能与已经存在的远端对等体IP地址重复。
· 如果对等体与指定的远端对等体之间已经存在本地邻接关系,则远程邻接关系将不能建立。如果已经存在远程邻接关系,又为远端对等体创建了本地邻接关系,则在本地对等体和远端对等体的LDP传输地址、Keepalive保持时间配置一致时,将建立本地邻接关系,远端对等体将被删除;本地对等体和远端对等体的LDP传输地址或Keepalive保持时间配置不一致时,将无法建立本地邻接关系,继续保持远程邻接关系。即两个LSR之间只能存在一个远端会话或一个本地会话,并且本地会话的优先级高于远端会话。
缺省情况下,LDP不会通过远端会话通告基于地址前缀的标签映射消息,远端会话只用来为L2VPN传送消息。有关远端会话的应用请参见“MPLS配置指导”中的“MPLS L2VPN”中的“配置Martini方式MPLS L2VPN”部分。
表1-7 配置PHP特性
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MPLS视图 |
mpls |
- |
配置Egress节点向倒数第二跳分配的标签值 |
label advertise { explicit-null | implicit-null | non-null } |
可选 缺省情况下,Egress节点向倒数第二跳分配隐式空标签(implicit-null) |
· 选择哪种标签值需要根据倒数第二跳节点对PHP特性的支持情况而定。如果倒数第二跳节点支持PHP特性,则可以为其分配显式或隐式空标签;如果倒数第二跳节点不支持PHP特性,则为其正常分配标签。
· 设备作为倒数第二跳时,支持PHP特性。
· 会话建立后,需使用reset mpls ldp命令重启LDP会话,本命令的配置才能生效。
在LSR上通过配置LSP触发策略,可以限制只有通过策略过滤的路由信息才能触发LSP的建立,从而控制LSP的数量,避免LSP数量过多导致设备运行不稳定。
LSP触发策略包括以下两种:
· 所有路由项都会触发LDP建立LSP。
· 利用IP地址前缀列表对路由项进行过滤,被IP地址前缀列表拒绝的静态路由和IGP路由项不能触发建立LSP。采用这种LSP触发策略时,需要创建IP地址前缀列表,创建方法请参见“三层技术-IP路由配置指导”中的“路由策略”。
表1-8 配置LSP触发策略
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MPLS视图 |
mpls |
- |
配置LSP的触发策略 |
lsp-trigger [ vpn-instance vpn-instance-name ] { all | ip-prefix prefix-name } |
可选 缺省情况下,只有32位掩码的主机路由能够触发LDP建立LSP |
· 建立LSP需要LSR上存在精确匹配的路由项。例如,要使用32位掩码的Loopback接口地址建立LSP,则LSR上必须存在精确匹配的主机路由才能触发建立LSP。
· 如果指定vpn-instance vpn-instance-name参数,则配置指定VPN的LSP触发策略;如果未指定vpn-instance vpn-instance-name参数,则配置公网路由的LSP触发策略。
使能标签重发布功能后,LSR会周期性地查找尚未分配标签的FEC,为其分配标签,并将标签和FEC绑定通告给其他的LSR。同时,用户可以根据需要控制重发布标签的时间间隔。
表1-9 配置LDP标签分配控制方式
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MPLS-LDP视图 |
mpls ldp |
- |
配置标签分配控制方式 |
label-distribution { independent | ordered } |
可选 缺省情况下,标签分配控制方式为有序方式(ordered) 会话建立后,需重启LDP会话本命令的配置才能生效 |
使能DU模式下标签重发布功能 |
du-readvertise |
可选 缺省情况下,DU模式下已使能标签重发布功能 |
配置DU模式下定期重发布标签的时间间隔 |
du-readvertise timer value |
可选 缺省情况下,DU模式下定期重发布标签的时间间隔为30秒 |
在MPLS域中建立LSP也要防止产生环路,LDP环路检测机制可以检测LSP环路的出现,并避免发生环路。
LDP环路检测有两种方式:
(1) 最大跳数
在传递标签映射(或者标签请求)的消息中包含跳数信息,每经过一跳该值就加一。当该值达到规定的最大值时即认为出现环路,终止LSP的建立过程。
(2) 路径向量
在传递标签映射(或者标签请求)的消息中记录路径信息,每经过一跳,相应的设备就检查自己的LSR ID是否在此记录中。如果记录中没有自身的LSR ID,就会将自身的LSR ID添加到该记录中;如果记录中已有本LSR的记录,则认为出现环路,终止LSP的建立过程。
采用路径向量方式进行环路检测时,也需要规定LSP路径的最大跳数,当路径的跳数达到配置的最大值时,也会认为出现环路,终止LSP的建立过程。
表1-10 配置LDP环路检测
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MPLS-LDP视图 |
mpls ldp |
- |
开启环路检测功能 |
loop-detect |
必选 缺省情况下,环路检测功能处于关闭状态 |
配置环路检测的最大跳数 |
hops-count hop-number |
可选 缺省情况下,环路检测最大跳数为32 |
配置路径向量方式下LSP的最大跳数 |
path-vectors pv-number |
可选 缺省情况下,路径向量方式下LSP的最大跳数为32 |
· LDP对等体上的环路检测配置必须一致,否则无法建立LDP会话。
· 如果对MPLS域进行环路检测,则必须在MPLS域内所有LSR上都开启环路检测功能。
· 环路检测功能需要在所有接口使能LDP之前进行配置。
· 所有环路检测的配置,只对修改后建立的LSP有效,修改环路检测配置不影响已经建立的LSP。可以通过在用户视图下执行reset mpls ldp命令的方法,使环路检测配置对已经建立的LSP生效。
· 使能LDP环路检测功能,可能会导致LSP重新更新,产生冗余消息,消耗过多的系统资源,推荐使用路由协议的环路预防功能。
LDP会话建立在TCP连接之上。为了提高LDP会话的安全性,可以配置在建立LDP会话使用的TCP连接时进行MD5认证,保证只有对端与本端配置了相同的认证密码时,才会与其建立TCP连接。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MPLS-LDP视图 |
mpls ldp |
- |
使能LDP的MD5认证功能 |
md5-password { cipher | plain } peer-lsr-id password |
必选 缺省情况下,未使能LDP的MD5认证功能 |
要想在LDP对等体之间成功建立LDP会话,必须保证LDP对等体上的LDP MD5认证配置一致。
LDP标签过滤提供了标签接受控制和标签通告控制两种机制,用来实现对接收标签和通告标签的过滤。在复杂的MPLS网络环境中,通过LDP标签过滤可以规划动态建立的LSP,并避免设备接收和通告大量的标签映射。
(1) 标签接受控制
标签接受控制用来实现对接收的标签映射进行过滤,即上游LSR对指定的下游LSR通告的标签映射进行过滤,只接受指定地址前缀的标签映射。如图1-8,上游设备LSR A对下游设备LSR B通告的标签进行过滤,只有FEC的目的地址通过指定地址前缀列表过滤后,才会接受该FEC对应的标签映射;对下游设备LSR C通告的标签不进行过滤。
(2) 标签通告控制
标签通告控制用来实现对通告的标签映射进行过滤,即下游LSR只将指定地址前缀的标签映射通告给指定的上游设备。如图1-9,下游设备LSR A将FEC目的地址通过地址前缀列表B过滤的标签映射通告给上游设备LSR B;将FEC目的地址通过地址前缀列表C过滤的标签映射通告给上游设备LSR C。
在配置LDP标签过滤之前,需要先创建IP地址前缀列表,创建方法请参见“三层技术-IP路由配置指导”中的“路由策略”。
表1-12 配置LDP标签过滤
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MPLS-LDP视图 |
mpls ldp |
- |
配置标签接受控制策略 |
accept-label peer peer-id ip-prefix ip-prefix-name |
可选 缺省情况下,接受LDP对等体通告的所有标签映射 |
配置标签通告控制策略 |
advertise-label ip-prefix ip-prefix-name [ peer peer-ip-prefix-name ] |
必选 缺省情况下,不对通告的标签映射进行过滤 |
在下游LSR上配置标签通告控制策略与在上游LSR上配置标签接受控制策略具有相同的效果,推荐使用前者,以减轻网络负担。
在IPv4报文头中,包含一个8bit的ToS字段,用于标识IP报文的服务类型。RFC 2474对这8个bit进行了定义,将前6个bit定义为DSCP优先级,最后2个bit作为保留位。在报文传输的过程中,DSCP优先级可以被网络设备识别,并作为报文传输优先程度的参考。
用户可以对本设备发送的LDP报文的DSCP优先级进行配置。
表1-13 配置发送的LDP报文的DSCP优先级
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MPLS-LDP视图 |
mpls ldp |
- |
配置发送的LDP报文的DSCP优先级 |
dscp dscp-value |
必选 缺省情况下,发送的LDP报文的DSCP优先级为48 |
MPLS本身无法快速检测到邻居(或链路)的故障。LDP远端对等体之间的通信发生故障时,将导致LDP会话down,MPLS报文转发失败。MPLS LDP与BFD联动功能能够快速检测到LDP远端对等体之间的通信故障,提升现有MPLS网络的性能。
· 有关BFD的介绍及配置方法,请参见“可靠性配置指导”中的“BFD”。
· 一条LSP只能与一个BFD会话绑定。
表1-14 配置MPLS LDP与BFD联动
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MPLS-LDP远端对等体视图 |
mpls ldp remote-peer remote-peer-name |
- |
为LDP远端对等体开启BFD链路检测功能 |
remote-ip bfd |
必选 缺省情况下,LDP远端对等体的BFD链路检测功能处于关闭状态 |
MPLS LDP与BFD联动只能用来检测远端LDP对等体之间的通信是否存在故障,相关配置举例请参见“MPLS配置指导”中的“VPLS”。
LDP会话状态为up后,修改LDP会话的任何参数,都会引起LDP会话不能正常进行。此时,需要重启LDP会话,重新协商各种参数,建立LDP会话。
在用户视图下执行reset mpls ldp命令可以重启LDP会话。
表1-15 重启LDP会话
操作 |
命令 |
重启LDP会话 |
reset mpls ldp [ all | [ vpn-instance vpn-instance-name ] [ fec mask | peer peer-id ] ] |
Ingress节点对TTL域的处理方式分为以下两种:
· 使能IP TTL复制功能:Ingress节点为报文压入标签时,将原IP报文中的TTL值复制到新增加的标签的TTL域。LSR转发标签报文时,对栈顶标签的TTL值做减一操作。标签出栈时,再将栈顶标签的TTL值复制回IP报文。使用这种方式时,报文沿着LSP传输的过程中,TTL逐跳递减,Tracert的结果将反映报文实际经过的路径。
图1-10 使能IP TTL复制功能时的处理过程
· 未使能IP TTL复制功能:Ingress节点为报文压入标签时,不会将原IP报文中的TTL值复制到新增加的标签的TTL域,标签的TTL取值为255。LSR转发标签报文时,对栈顶标签的TTL值做减一操作。标签出栈时,LSR将IP TTL和标签TTL中的较小者,作为IP TTL的值。使用这种方式时,Tracert的结果不包括MPLS骨干网络中的每一跳,就好像Ingress路由器与Egress路由器是直连的,从而隐藏MPLS骨干网络的结构。
图1-11 未使能IP TTL复制功能时的处理过程
表1-16 配置MPLS的IP TTL复制功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MPLS视图 |
mpls |
- |
使能MPLS的IP TTL复制功能 |
ttl propagate { public | vpn } |
可选 缺省情况下,只对公网报文使能IP TTL复制功能 |
· 在MPLS域内部,MPLS报文多层标签之间的TTL值总是互相复制,ttl propagate命令只能决定是否将IP TTL复制到标签的TTL域,因此只有在Ingress上执行本命令才会生效。
· MPLS的IP TTL复制功能对本地发送报文没有影响,本地发送报文都将进行IP TTL复制,从而保证本地管理员能够使用Tracert检测网络。
· 如果配置ttl propagate vpn命令使能对VPN报文的IP TTL复制功能,则建议在所有相关PE(Provider Edge,运营商边缘)设备上都使能此功能,以保证不同的PE上执行Tracert得到的结果一致。PE的详细介绍请参见“MPLS配置指导”中的“MPLS L3VPN”。
使能MPLS的TTL超时消息发送功能后,当LSR收到TTL为1的含有标签的MPLS报文时,LSR会生成ICMP的TTL超时消息。
LSR将TTL超时消息回应给报文发送者的方式有两种:
· 如果LSR上存在到达报文发送者的路由,则可以通过IP路由,直接向发送者回应TTL超时消息。
· 如果LSR上不存在到达报文发送者的路由,则需要沿着发送MPLS报文的LSP转发TTL超时消息,由Egress节点将该消息返回给发送者。
通常情况下,收到的MPLS报文只带一层标签时,LSR采用第一种方式回应TTL超时消息;收到的MPLS报文包含多层标签时,LSR采用第二种方式回应TTL超时消息。
但是,在MPLS VPN中,ASBR(Autonomous System Boundary Router,自治系统边界路由器)、HoVPN组网应用中的SPE(Superstratum PE or Sevice Provider-end PE,上层PE或运营商侧PE)和嵌套VPN应用中的运营商骨干网PE,接收到的承载VPN报文的MPLS报文可能只有一层标签,此时,这些设备上并不存在到达报文发送者的路由,无法采用第一种方法回应TTL超时消息。通过配置undo ttl expiration pop命令,可以保证只带一层标签的MPLS报文TTL超时时,使用LSP路径转发TTL超时消息,由Egress节点将该消息返回给发送者。
有关HoVPN和嵌套VPN的详细介绍请参见“MPLS配置指导”中的“MPLS L3VPN”。
表1-17 配置MPLS的TTL超时消息发送功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MPLS视图 |
mpls |
- |
使能MPLS的TTL超时消息发送功能 |
ttl expiration enable |
可选 缺省情况下,MPLS的TTL超时消息发送功能处于开启状态 |
配置仅有一层标签的MPLS报文TTL超时时,沿本地IP路由返回ICMP报文 |
ttl expiration pop |
可选 缺省情况下,对于一层标签的MPLS报文,TTL超时时沿本地IP路由返回ICMP差错报文 多层标签MPLS报文不受该命令控制,当MPLS报文的TTL超时时,始终沿LSP路径转发ICMP差错报文 |
LDP GR(Graceful Restart,平滑重启)利用MPLS转发平面与控制平面分离的特点,在信令协议或控制平面出现异常时,保留标签转发表项,LSR依然根据该表项转发报文,从而保证数据传输不会中断。
参与LDP GR过程的设备分为以下两种:
· GR restarter:GR重启路由器,指由管理员手工或设备故障触发而重启协议的设备,它必须具备GR能力。
· GR helper:GR restarter的邻居,与重启的GR restarter保持邻居关系,并协助其恢复重启前的转发状态,它也必须具备GR能力。
如图1-12所示,LDP对等体在建立LDP会话时协商GR能力,只有双方都支持LDP GR时,建立的LDP会话才支持LDP GR。
LDP GR的工作过程如下:
(1) GR restarter发生重启后,GR restarter启动转发状态保持定时器,保留所有MPLS转发表项,并将其标记为stale。
(2) GR helper检测到与GR restarter之间的会话down后,将所有通过此会话学习到的FEC-Label绑定标记为stale,并在FT重连时间内保留这些FEC-Label绑定。FT重连时间的取值为对端GR restarter通告的重连时间和本地配置的LDP邻居存活定时器中的较小者。
(3) 如果在FT重连时间内,LDP会话重建失败,则Helper删除这些标签为stale的FEC-Label绑定。
(4) 如果LDP会话建立成功,则GR restarter和GR helper在LDP恢复时间内,通过新建立的LDP会话交互标签映射,更新标签转发表,清除转发表项的stale标签。LDP恢复时间的取值为本地配置的LDP恢复时间和对端GR restarter设备配置的LDP恢复时间中的较小者
(5) LDP恢复定时器超时后,GR helper删除标记仍为stale的FEC-标签映射。
(6) MPLS转发状态保持定时器超时后,GR restarter删除标记仍为stale的标签转发表项。
在配置LDP GR之前,需完成以下任务:
作为GR restarter的设备上和GR helper的设备均配置MPLS LDP能力。
设备既可以作为GR restarter,又可以作为GR helper,设备的角色由该设备在LDP GR过程中的作用决定。
表1-18 配置LDP GR
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MPLS-LDP视图 |
mpls ldp |
- |
使能MPLS LDP协议的GR能力 |
graceful-restart |
必选 缺省情况下,MPLS LDP协议的GR能力处于关闭状态 |
配置FT重连定时器的值 |
graceful-restart timer reconnect timer |
可选 缺省情况下,FT重连定时器的值为300秒 |
配置LDP邻居存活定时器的值 |
graceful-restart timer neighbor-liveness timer |
可选 缺省情况下,LDP邻居存活定时器的值为120秒 |
配置LDP恢复定时器的值 |
graceful-restart timer recovery timer |
可选 缺省情况下,LDP恢复定时器的值为300秒 |
(2) 平滑重启MPLS LDP
通过平滑重启MPLS LDP功能,可以测试LDP GR功能是否生效,即测试在LDP协议重启过程中报文转发路径是否改变,是否可以不间断地转发数据。
表1-19 平滑重启MPLS LDP
操作 |
命令 |
说明 |
平滑重启MPLS LDP |
graceful-restart mpls ldp |
必选 请在用户视图下执行此命令 |
graceful-restart mpls ldp命令用来在不发生主备倒换的情况下测试MPLS LDP GR功能。其他情况下,请不要使用此命令。
本配置任务用来开启MPLS统计功能,以便用户通过显示命令查看MPLS的统计信息。
只有配置获取LSP统计数据的时间间隔后,用户才能通过显示命令查看MPLS的统计信息。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MPLS视图 |
mpls |
- |
配置获取LSP统计数据的时间间隔 |
statistics interval interval-time |
必选 缺省情况下,获取LSP统计数据的时间间隔为0秒,即不获取统计信息 |
在MPLS中,LSP转发数据失败时,负责建立LSP的MPLS控制平面无法检测或不能及时发现这种错误,这会给网络维护带来困难。为了及时发现LSP错误,并定位失效节点,设备上提供了如下几种机制:
· MPLS LSP Ping功能
· MPLS LSP Tracert功能
· BFD检测LSP功能
· 周期性LSP Tracert功能
MPLS LSP Ping功能用来对LSP的可达性进行检测。采取方法是:在Ingress节点为MPLS Echo Request报文压入待检测FEC对应的标签;经过LSP将该报文转发到Egress节点;Egress节点处理该报文后,回应MPLS Echo Reply报文;如果Ingress节点接收到表示成功的MPLS Echo Reply报文,则说明该LSP可以用于数据转发;如果Ingress节点接收到带有错误码的MPLS Echo Reply报文,则说明该LSP存在故障。
在Ingress节点和Egress节点间存在等价LSP的环境中,不能使用MPLS LSP Ping功能来检测路径可达性。
表1-21 MPLS LSP Ping功能
操作 |
命令 |
说明 |
通过MPLS LSP Ping检测MPLS LSP的可达性 |
ping lsp [ -a source-ip | -c count | -exp exp-value | -h ttl-value | -m wait-time | -r reply-mode | -s packet-size | -t time-out | -v ] * ipv4 dest-addr mask-length [ destination-ip-addr-header ] |
必选 可在任意视图下执行本命令 |
MPLS LSP Tracert用来对LSP的错误进行定位。MPLS LSP Tracert通过沿着LSP连续发送TTL从1到某个值的MPLS Echo Request报文,让LSP路径上的每一跳收到该报文后,返回TTL超时的MPLS Echo Reply报文。这样,Ingress节点可以收集到LSP路径上每一跳的信息,从而定位出故障节点。同时,MPLS LSP Tracert还可用于收集整条LSP上每个节点的重要信息,如分配的标签等。
在Ingress节点和Egress节点间存在等价LSP的环境中,不能使用MPLS LSP Tracert功能来定位路径中的节点。
· 需要在中间设备(源端与目的端之间的设备)上开启ICMP超时报文发送功能。
· 需要在目的端开启ICMP目的不可达报文发送功能。
· 如果在Tracert过程中需要显示MPLS信息,需要在源端和中间设备上使能ICMP携带扩展信息功能。
有关ICMP超时报文发送功能、ICMP目的不可达报文发送功能、ICMP携带扩展信息功能的详细介绍请参见“三层技术-IP业务配置指导”中的“IP性能优化”。
表1-22 MPLS LSP Tracert功能
操作 |
命令 |
说明 |
通过MPLS LSP Tracert对MPLS LSP的错误进行定位 |
tracert lsp [ -a source-ip | -exp exp-value | -h ttl-value | -r reply-mode |-t time-out ] * ipv4 dest-addr mask-length [ destination-ip-addr-header ] |
必选 可在任意视图下执行本命令 |
BFD检测LSP功能通过在LSP的Ingress节点和Egress节点之间建立BFD会话,利用BFD快速检测LSP的连通性。在Ingress节点为BFD控制报文压入FEC对应的标签,沿着LSP转发BFD控制报文,并根据收到的Egress节点的BFD控制报文来判断LSP的状态。当BFD检测到LSP故障后,还可以触发LSP进行流量切换。
可以通过两种方式建立检测LSP的BFD会话:
· 静态方式:如果执行bfd enable命令时通过discriminator参数指定了本地和远端的鉴别值,则根据指定的鉴别值建立BFD会话。该方式用来检测两台设备间从本地到远端和从远端到本地的一对LSP隧道。
· 动态方式:如果执行bfd enable命令时没有通过discriminator参数指定本地和远端的鉴别值,则自动运行MPLS LSP Ping来协商鉴别值,并根据协商好的鉴别值建立BFD会话。该方式用来检测两台设备间从本地到远端的一条单向LSP隧道。
· BFD会话参数为MPLS LSR-ID对应的Loopback接口下配置的BFD参数,BFD报文的源地址为MPLS LSR-ID。因此,配置BFD检测LSP功能前,需要在Loopback接口下配置IP地址,并将LSR-ID配置为Loopback接口的IP地址,还可以根据需要在Loopback接口下配置BFD会话参数。BFD的详细介绍,请参见“可靠性配置指导”中的“BFD”。
· 使用静态方式建立检测LSP的BFD会话前,需要确保已经建立从本地到远端和从远端到本地的两条LSP。
表1-23 配置BFD检测LSP功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
使能LSP验证功能,并进入MPLS-LSPV视图 |
mpls lspv |
必选 缺省情况下,未使能LSP验证功能 |
配置使用BFD检测指定FEC对应LSP的连通性 |
bfd enable destination-address mask-length [ nexthop nexthop-address [ discriminator local local-id remote remote-id ] ] |
必选 缺省情况下,未使用BFD检测FEC对应LSP的连通性 |
· 不能同时使用静态方式和动态方式建立检测同一个LSP的BFD会话。
· 使用静态方式建立检测LSP的BFD会话后,不允许修改BFD会话的鉴别值。
· 协议中规定:用于检测LSP的BFD会话中,Ingress节点工作在主动(Active)模式,Egress节点工作在被动(Passive)模式。在Ingress节点和Egress节点上执行bfd session init-mode命令不会改变节点的工作模式,即使Ingress节点和Egress节点均配置为被动模式,BFD会话仍然可以正常建立。
· MPLS LDP与BFD联动功能用来检测LDP远端对等体之间的IP连通性,而BFD检测LSP功能用来检测LSP的连通性。
周期性LSP Tracert功能,即周期性地对LSP进行Tracert检测,该功能用来对LSP的错误进行定位,对转发平面和控制平面一致性进行检测,并通过日志记录检测结果。管理员可以通过查看日志信息,了解LSP是否出现故障。
如果同时配置了BFD检测LSP功能和周期性LSP Tracert功能,则周期性LSP Tracert检测到转发平面故障或转发平面与控制平面不一致时,会触发删除原有BFD会话,并基于控制平面重新建立BFD会话。
· 需要在中间设备(源端与目的端之间的设备)上开启ICMP超时报文发送功能。
· 需要在目的端开启ICMP目的不可达报文发送功能。
· 如果在Tracert过程中需要显示MPLS信息,需要在源端和中间设备上使能ICMP携带扩展信息功能。
有关ICMP超时报文发送功能、ICMP目的不可达报文发送功能、ICMP携带扩展信息功能的详细介绍请参见“三层技术-IP业务配置指导”中的“IP性能优化”。
表1-24 配置周期性LSP Tracert功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
使能LSP检测功能,并进入MPLS-LSPV视图 |
mpls lspv |
必选 缺省情况下,未使能LSP检测功能 |
使能指定FEC的周期性LSP Tracert功能 |
periodic-tracert destination-address mask-length [ -a source-ip | -exp exp-value | -h ttl-value | -m wait-time | -t time-out | -u retry-attempt ] * |
必选 缺省情况下,未使能指定FEC的周期性LSP Tracert功能 |
开启MPLS模块的Trap功能后,该模块会生成级别为notifications的Trap报文,用于报告该模块的重要事件。生成的Trap报文将被发送到设备的信息中心,通过设置信息中心的参数,最终决定Trap报文的输出规则(即是否允许输出以及输出方向)。有关信息中心参数的配置请参见“网络管理和监控配置指导”中的“信息中心”。
表1-25 开启MPLS的Trap功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
开启MPLS的Trap功能 |
snmp-agent trap enable mpls |
必选 缺省情况下,MPLS的Trap功能处于关闭状态 |
snmp-agent trap enable mpls命令的详细介绍请参见“网络管理和监控命令参考/SNMP”中的snmp-agent trap enable命令。
在完成上述配置后,在任意视图下执行display命令可以显示配置后MPLS的运行情况,用户可以通过查看显示信息验证配置的效果。
表1-26 MPLS运行状态显示
操作 |
命令 |
显示使能了MPLS能力接口的MPLS相关信息 |
display mpls interface [ interface-type interface-number ] [ verbose ] [ | { begin | exclude | include } regular-expression ] |
显示ILM表项信息 |
display mpls ilm [ label ] [ verbose ] [ slot slot-number ] [ include text | { | { begin | exclude | include } regular-expression } ] |
显示MPLS标签的使用状态 |
display mpls label { label-value1 [ to label-value2 ] | all } [ | { begin | exclude | include } regular-expression ] |
显示LSP信息 |
display mpls lsp [ incoming-interface interface-type interface-number ] [ outgoing-interface interface-type interface-number ] [ in-label in-label-value ] [ out-label out-label-value ] [ asbr | [ vpn-instance vpn-instance-name ] [ protocol { bgp | bgp-ipv6 | crldp | ldp | rsvp-te | static | static-cr } ] ] [ egress | ingress | transit ] [ { exclude | include } dest-addr mask-length ] [ verbose ] [ | { begin | exclude | include } regular-expression ] |
显示LSP统计信息 |
display mpls lsp statistics [ | { begin | exclude | include } regular-expression ] |
显示BFD对LSP隧道的检测信息 |
display mpls lsp bfd [ ipv4 destination-address mask-length ] [ | { begin | exclude | include } regular-expression ] |
显示NHLFE表的信息 |
display mpls nhlfe [ token ] [ verbose ] [ slot slot-number ] [ include text | { | { begin | exclude | include } regular-expression } ] |
显示NHLFE表项的使用情况 |
display mpls nhlfe reflist token [ slot slot-number ] [ include text | { | { begin | exclude | include } regular-expression } ] |
显示静态LSP信息 |
display mpls static-lsp [ lsp-name lsp-name ] [ { exclude | include } dest-addr mask-length ] [ verbose ] [ | { begin | exclude | include } regular-expression ] |
显示路由的LSP相关信息 |
display mpls route-state [ vpn-instance vpn-instance-name ] [ dest-addr mask-length ] [ | { begin | exclude | include } regular-expression ] |
根据LSP显示MPLS统计信息 |
display mpls statistics lsp { index | all | name lsp-name } [ | { begin | exclude | include } regular-expression ] |
根据使能MPLS能力的接口显示MPLS统计信息 |
display mpls statistics interface { interface-type interface-number | all } [ | { begin | exclude | include } regular-expression ] |
根据LSP的入标签显示LSP统计信息 |
display mpls statistics lsp [ in-label in-label ] [ | { begin | exclude | include } regular-expression ] |
在完成上述配置后,在任意视图下执行display命令可以显示配置后MPLS LDP的运行情况,用户可以通过查看显示信息验证配置的效果。
表1-27 显示MPLS LDP运行状态
操作 |
命令 |
显示LDP信息 |
display mpls ldp [ all [ verbose ] [ | { begin | exclude | include } regular-expression ] ] |
显示指定FEC的标签通告信息 |
display mpls ldp fec [ vpn-instance vpn-instance-name ] dest-addr mask-length [ | { begin | exclude | include } regular-expression ] |
显示使能了LDP能力接口的LDP相关信息 |
display mpls ldp interface [ all [ verbose ] | [ vpn-instance vpn-instance-name ] [ interface-type interface-number | verbose ] ] [ | { begin | exclude | include } regular-expression ] |
显示对等体的信息 |
display mpls ldp peer [ all [ verbose ] | [ vpn-instance vpn-instance-name ] [ peer-id | verbose ] ] [ | { begin | exclude | include } regular-expression ] |
显示远端对等体信息 |
display mpls ldp remote-peer [ remote-name remote-peer-name ] [ | { begin | exclude | include } regular-expression ] |
显示对等体间会话信息 |
display mpls ldp session [ all [ verbose ] | [ vpn-instance vpn-instance-name ] [ peer-id | verbose ] ] [ | { begin | exclude | include } regular-expression ] |
显示所有LDP会话的统计信息 |
display mpls ldp session all statistics [ | { begin | exclude | include } regular-expression ] |
显示LDP创建的LSP相关信息 |
display mpls ldp lsp [ all | [ vpn-instance vpn-instance-name ] [ dest-addr mask-length ] ] [ | { begin | exclude | include } regular-expression ] |
以上显示命令中的vpn-instance vpn-instance-name参数用来显示指定LDP实例的信息。关于LDP实例的详细介绍请参见“MPLS配置指导”中的“MPLS L3VPN”。
在完成上述配置后,在用户视图下执行reset命令可以清除MPLS的相关信息。
表1-28 清除MPLS相关信息
操作 |
命令 |
清除MPLS接口统计信息 |
reset mpls statistics interface { interface-type interface-number | all } |
清除LSP统计信息 |
reset mpls statistics lsp { index | all | name lsp-name } |
· Switch A、Switch B和Switch C均支持MPLS。
· 在Switch A和Switch C之间建立静态LSP,使11.1.1.0/24和21.1.1.0/24这两个网段中互访的报文能够通过MPLS进行传输。
· 检测Switch A和Switch C之间静态LSP的可达性。
· 手工指定静态LSP的标签时,需要遵循以下原则:一条LSP上,上游LSR出标签的值与下游LSR入标签的值相同。
· LSP是一条单向路径,因此需要在数据传输的两个方向上分别配置一条静态LSP。
· 配置静态LSP时,只要求在Ingress节点上存在到达FEC目的地址的路由,Transit节点和Egress节点上不需要存在到达FEC目的地址的路由。因此,无需配置路由协议保证交换机之间路由可达,只需在Ingress节点上配置到达FEC目的地址的静态路由即可。
(1) 配置各接口的IP地址
按照图1-13配置各接口的IP地址和掩码,包括Loopback接口,具体配置过程略。
(2) 在Ingress上配置到达FEC目的地址的静态路由
# 在Switch A上配置到达21.1.1.0/24网段的静态路由。
<SwitchA> system-view
[SwitchA] ip route-static 21.1.1.0 24 10.1.1.2
# 在Switch C上配置到达11.1.1.0/24网段的静态路由。
<SwitchC> system-view
[SwitchC] ip route-static 11.1.1.0 255.255.255.0 20.1.1.1
(3) 使能MPLS功能
# 配置Switch A。
[SwitchA] mpls lsr-id 1.1.1.9
[SwitchA] mpls
[SwitchA-mpls] quit
[SwitchA] interface vlan-interface 2
[SwitchA-Vlan-interface2] mpls
[SwitchA-Vlan-interface2] quit
# 配置Switch B。
[SwitchB] mpls lsr-id 2.2.2.9
[SwitchB] mpls
[SwitchB-mpls] quit
[SwitchB] interface vlan-interface 2
[SwitchB-Vlan-interface2] mpls
[SwitchB-Vlan-interface2] quit
[SwitchB] interface vlan-interface 3
[SwitchB-Vlan-interface3] mpls
[SwitchB-Vlan-interface3] quit
# 配置Switch C。
[SwitchC] mpls lsr-id 3.3.3.9
[SwitchC] mpls
[SwitchC-mpls] quit
[SwitchC] interface vlan-interface 3
[SwitchC-Vlan-interface3] mpls
[SwitchC-Vlan-interface3] quit
(4) 创建从Switch A到Switch C的静态LSP
# 配置Ingress Switch A。
[SwitchA] static-lsp ingress AtoC destination 21.1.1.0 24 nexthop 10.1.1.2 out-label 30
# 配置Transit Switch B
[SwitchB] static-lsp transit AtoC incoming-interface vlan-interface 2 in-label 30 nexthop 20.1.1.2 out-label 50
# 配置Egress Switch C。
[SwitchC] static-lsp egress AtoC incoming-interface vlan-interface 3 in-label 50
(5) 创建从Switch C到Switch A的静态LSP
# 配置Ingress Switch C。
[SwitchC] static-lsp ingress CtoA destination 11.1.1.0 24 nexthop 20.1.1.1 out-label 40
# 配置Transit Switch B。
[SwitchB] static-lsp transit CtoA incoming-interface vlan-interface 3 in-label 40 nexthop 10.1.1.1 out-label 70
# 配置Egress Switch A。
[SwitchA] static-lsp egress CtoA incoming-interface vlan-interface 2 in-label 70
(6) 检查配置结果
# 配置完成后,可以在各交换机上通过display mpls static-lsp命令查看静态LSP的信息。以Switch A的显示信息为例:
[SwitchA] display mpls static-lsp
total statics-lsp : 2
Name FEC I/O Label I/O If State
AtoC 21.1.1.0/24 NULL/30 -/Vlan2 Up
CtoA -/- 70/NULL Vlan2/- Up
# 在Switch A上检测Switch A到Switch C静态LSP的可达性。
[SwitchA] ping lsp -a 11.1.1.1 ipv4 21.1.1.0 24
LSP Ping FEC: IPV4 PREFIX 21.1.1.0/24 : 100 data bytes, press CTRL_C to break
Reply from 20.1.1.2: bytes=100 Sequence=1 time = 2 ms
Reply from 20.1.1.2: bytes=100 Sequence=2 time = 2 ms
Reply from 20.1.1.2: bytes=100 Sequence=3 time = 1 ms
Reply from 20.1.1.2: bytes=100 Sequence=4 time = 2 ms
Reply from 20.1.1.2: bytes=100 Sequence=5 time = 2 ms
--- FEC: IPV4 PREFIX 21.1.1.0/24 ping statistics ---
5 packet(s) transmitted
5 packet(s) received
0.00% packet loss
round-trip min/avg/max = 1/1/2 ms
# 在Switch C上检测Switch C到Switch A静态LSP的可达性。
[SwitchC] ping lsp -a 21.1.1.1 ipv4 11.1.1.0 24
LSP Ping FEC: IPV4 PREFIX 11.1.1.0/24 : 100 data bytes, press CTRL_C to break
Reply from 10.1.1.1: bytes=100 Sequence=1 time = 3 ms
Reply from 10.1.1.1: bytes=100 Sequence=2 time = 2 ms
Reply from 10.1.1.1: bytes=100 Sequence=3 time = 2 ms
Reply from 10.1.1.1: bytes=100 Sequence=4 time = 2 ms
Reply from 10.1.1.1: bytes=100 Sequence=5 time = 2 ms
--- FEC: IPV4 PREFIX 11.1.1.0/24 ping statistics ---
5 packet(s) transmitted
5 packet(s) received
0.00% packet loss
round-trip min/avg/max = 2/2/3 ms
· Switch A、Switch B和Switch C均支持MPLS。
· 在Switch A和Switch C之间使用LDP动态建立LSP,使11.1.1.0/24和21.1.1.0/24这两个网段中互访的报文能够通过MPLS进行传输。
· 检测Switch A和Switch C之间LSP的可达性。
· 利用LDP动态建立LSP时,不需要手工为LSP指定标签,只要在LSR上启动LDP协议,即可动态分配标签并建立LSP。
· LDP根据路由信息动态分配标签,因此,利用LDP动态建立LSP时,需要配置路由协议,使得各交换机之间路由可达。本例中,采用的路由协议为OSPF。
(1) 配置各接口的IP地址
按照图1-14配置各接口IP地址和掩码,包括VLAN接口和Loopback接口,具体配置过程略。
(2) 配置OSPF,以保证各交换机之间路由可达
# 配置Switch A。
<Sysname> system-view
[Sysname] sysname SwitchA
[SwitchA] ospf
[SwitchA-ospf-1] area 0
[SwitchA-ospf-1-area-0.0.0.0] network 1.1.1.9 0.0.0.0
[SwitchA-ospf-1-area-0.0.0.0] network 10.1.1.0 0.0.0.255
[SwitchA-ospf-1-area-0.0.0.0] network 11.1.1.0 0.0.0.255
[SwitchA-ospf-1-area-0.0.0.0] quit
[SwitchA-ospf-1] quit
# 配置Switch B。
<Sysname> system-view
[Sysname] sysname SwitchB
[SwitchB] ospf
[SwitchB-ospf-1] area 0
[SwitchB-ospf-1-area-0.0.0.0] network 2.2.2.9 0.0.0.0
[SwitchB-ospf-1-area-0.0.0.0] network 10.1.1.0 0.0.0.255
[SwitchB-ospf-1-area-0.0.0.0] network 20.1.1.0 0.0.0.255
[SwitchB-ospf-1-area-0.0.0.0] quit
[SwitchB-ospf-1] quit
# 配置Switch C。
<Sysname> system-view
[Sysname] sysname SwitchC
[SwitchC] ospf
[SwitchC-ospf-1] area 0
[SwitchC-ospf-1-area-0.0.0.0] network 3.3.3.9 0.0.0.0
[SwitchC-ospf-1-area-0.0.0.0] network 20.1.1.0 0.0.0.255
[SwitchC-ospf-1-area-0.0.0.0] network 21.1.1.0 0.0.0.255
[SwitchC-ospf-1-area-0.0.0.0] quit
[SwitchC-ospf-1] quit
# 配置完成后,在各交换机上执行display ip routing-table命令,可以看到相互之间都学到了到对方的主机路由。以Switch A为例:
[SwitchA] display ip routing-table
Routing Tables: Public
Destinations : 11 Routes : 11
Destination/Mask Proto Pre Cost NextHop Interface
1.1.1.9/32 Direct 0 0 127.0.0.1 InLoop0
2.2.2.9/32 OSPF 10 1 10.1.1.2 Vlan2
3.3.3.9/32 OSPF 10 2 10.1.1.2 Vlan2
10.1.1.0/24 Direct 0 0 10.1.1.1 Vlan2
10.1.1.1/32 Direct 0 0 127.0.0.1 InLoop0
11.1.1.0/24 Direct 0 0 11.1.1.1 Vlan4
11.1.1.1/32 Direct 0 0 127.0.0.1 InLoop0
20.1.1.0/24 OSPF 10 2 10.1.1.2 Vlan2
21.1.1.0/24 OSPF 10 3 10.1.1.2 Vlan2
127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0
127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0
(3) 使能MPLS和MPLS LDP功能
# 配置Switch A。
[SwitchA] mpls lsr-id 1.1.1.9
[SwitchA] mpls
[SwitchA-mpls] quit
[SwitchA] mpls ldp
[SwitchA-mpls-ldp] quit
[SwitchA] interface vlan-interface 2
[SwitchA-Vlan-interface2] mpls
[SwitchA-Vlan-interface2] mpls ldp
[SwitchA-Vlan-interface2] quit
# 配置Switch B。
[SwitchB] mpls lsr-id 2.2.2.9
[SwitchB] mpls
[SwitchB-mpls] quit
[SwitchB] mpls ldp
[SwitchB-mpls-ldp] quit
[SwitchB] interface vlan-interface 2
[SwitchB-Vlan-interface2] mpls
[SwitchB-Vlan-interface2] mpls ldp
[SwitchB-Vlan-interface2] quit
[SwitchB] interface vlan-interface 3
[SwitchB-Vlan-interface3] mpls
[SwitchB-Vlan-interface3] mpls ldp
[SwitchB-Vlan-interface3] quit
# 配置Switch C。
[SwitchC] mpls lsr-id 3.3.3.9
[SwitchC] mpls
[SwitchC-mpls] quit
[SwitchC] mpls ldp
[SwitchC-mpls-ldp] quit
[SwitchC] interface vlan-interface 3
[SwitchC-Vlan-interface3] mpls
[SwitchC-Vlan-interface3] mpls ldp
[SwitchC-Vlan-interface3] quit
# 完成上述配置后,Switch A和Switch B、Switch B和Switch C之间的本地LDP会话建立成功。在各交换机上执行display mpls ldp session命令,可以看到LDP会话的建立情况;执行display mpls ldp peer命令,可以看到LDP的对等体情况。以Switch A为例:
[SwitchA] display mpls ldp session
LDP Session(s) in Public Network
Total number of sessions: 1
----------------------------------------------------------------
Peer-ID Status LAM SsnRole FT MD5 KA-Sent/Rcv
----------------------------------------------------------------
2.2.2.9:0 Operational DU Passive Off Off 5/5
----------------------------------------------------------------
LAM : Label Advertisement Mode FT : Fault Tolerance
[SwitchA] display mpls ldp peer
LDP Peer Information in Public network
Total number of peers: 1
-----------------------------------------------------------------
Peer-ID Transport-Address Discovery-Source
----------------------------------------------------------------
2.2.2.9:0 2.2.2.9 Vlan-interface2
----------------------------------------------------------------
(4) 配置LSP的触发建立策略为所有静态路由和IGP路由项都触发LDP建立LSP
# 配置Switch A。
[SwitchA] mpls
[SwitchA-mpls] lsp-trigger all
[SwitchA-mpls] return
# 配置Switch B。
[SwitchB] mpls
[SwitchB-mpls] lsp-trigger all
[SwitchB-mpls] quit
# 配置Switch C。
[SwitchC] mpls
[SwitchC-mpls] lsp-trigger all
[SwitchC-mpls] quit
(5) 检查配置结果
# 配置完成后,在各交换机上执行display mpls ldp lsp命令,可以看到LDP LSP的建立情况。以Switch A为例。
<SwitchA> display mpls ldp lsp
LDP LSP Information
-------------------------------------------------------------------
SN DestAddress/Mask In/OutLabel Next-Hop In/Out-Interface
------------------------------------------------------------------
1 1.1.1.9/32 3/NULL 127.0.0.1 -------/InLoop0
2 2.2.2.9/32 NULL/3 10.1.1.2 -------/Vlan2
3 3.3.3.9/32 NULL/1024 10.1.1.2 -------/Vlan2
4 11.1.1.0/24 3/NULL 0.0.0.0 -------/Vlan4
5 20.1.1.0/24 NULL/3 10.1.1.2 -------/Vlan2
6 21.1.1.0/24 NULL/1027 10.1.1.2 -------/Vlan2
-------------------------------------------------------------------
A '*' before an LSP means the LSP is not established
A '*' before a Label means the USCB or DSCB is stale
# 在Switch A上检测到达21.1.1.0/24网段的LDP LSP的可达性。
[SwitchA] ping lsp ipv4 21.1.1.0 24
LSP Ping FEC: IPV4 PREFIX 21.1.1.0/24 : 100 data bytes, press CTRL_C to break
Reply from 20.1.1.2: bytes=100 Sequence=1 time = 3 ms
Reply from 20.1.1.2: bytes=100 Sequence=2 time = 2 ms
Reply from 20.1.1.2: bytes=100 Sequence=3 time = 1 ms
Reply from 20.1.1.2: bytes=100 Sequence=4 time = 1 ms
Reply from 20.1.1.2: bytes=100 Sequence=5 time = 3 ms
--- FEC: IPV4 PREFIX 21.1.1.0/24 ping statistics ---
5 packet(s) transmitted
5 packet(s) received
0.00% packet loss
round-trip min/avg/max = 1/2/3 ms
# 在Switch C上检测到达11.1.1.0/24网段的LDP LSP的可达性。
[SwitchC] ping lsp ipv4 11.1.1.0 24
LSP Ping FEC: IPV4 PREFIX 11.1.1.0/24 : 100 data bytes, press CTRL_C to break
Reply from 10.1.1.1: bytes=100 Sequence=1 time = 2 ms
Reply from 10.1.1.1: bytes=100 Sequence=2 time = 2 ms
Reply from 10.1.1.1: bytes=100 Sequence=3 time = 2 ms
Reply from 10.1.1.1: bytes=100 Sequence=4 time = 3 ms
Reply from 10.1.1.1: bytes=100 Sequence=5 time = 2 ms
--- FEC: IPV4 PREFIX 11.1.1.0/24 ping statistics ---
5 packet(s) transmitted
5 packet(s) received
0.00% packet loss
round-trip min/avg/max = 2/2/3 ms
在图1-14的网络中,利用LDP建立11.1.1.0/24到21.1.1.0/24、21.1.1.0/24到11.1.1.0/24两条LSP后,使用BFD检测LSP隧道的连通性。
参见图1-14。
(1) 配置LDP会话,具体配置过程请参见“1.12.2 配置利用LDP动态建立LSP”
(2) 配置BFD检测LSP
# 配置Switch A。
<SwitchA> system-view
[SwitchA] mpls lspv
[SwitchA -mpls-lspv] bfd enable 21.1.1.0 24
[SwitchA -mpls-lspv] quit
# 配置Switch C。
<SwitchC> system-view
[SwitchC] mpls lspv
[SwitchC-mpls-lspv] bfd enable 11.1.1.0 24
[SwitchC-mpls-lspv] quit
(3) 检查配置结果
# 配置完成后,在设备SwitchA和SwitchC上执行display mpls lsp bfd命令,可以看到BFD检测LSP的BFD会话的建立情况。以Switch A为例。
[SwitchA] display mpls lsp bfd
MPLS BFD Session(s) Information
-----------------------------------------------------------------------------
FEC : 11.1.1.0/24 Type : LSP
Local Discr : 130 Remote Discr : 130
Tunnel ID : --- NextHop : ---
Session State : Up Source IP : 3.3.3.9
Session Role : Passive
FEC : 21.1.1.0/24 Type : LSP
Local Discr : 129 Remote Discr : 129
Tunnel ID : 0x6040000 NextHop : 10.1.1.2
Session State : Up Source IP : 1.1.1.9
Session Role : Active
Total Session Num: 2
以上显示信息表示,Switch A和Switch C之间建立了两个BFD会话,分别用来检测11.1.1.0/24到21.1.1.0/24、21.1.1.0/24到11.1.1.0/24两条LSP。
[SwitchA] display bfd session verbose
Total session number: 2 Up session number: 2 Init mode: Active
IPv4 session working under Ctrl mode:
Local Discr: 129 Remote Discr: 129
Source IP: 1.1.1.9 Destination IP: 127.0.0.1
Session State: Up Interface: LoopBack0
Min Trans Inter: 400ms Act Trans Inter: 400ms
Min Recv Inter: 400ms Act Detect Inter: 2000ms
Running Up for: 00:15:52 Auth mode: None
Connect Type: Indirect Board Num: 6
Protocol: MFW/LSPV
Diag Info: No Diagnostic
Local Discr: 130 Remote Discr: 130
Source IP: 1.1.1.9 Destination IP: 3.3.3.9
Session State: Up Interface: LoopBack0
Min Trans Inter: 400ms Act Trans Inter: 400ms
Min Recv Inter: 400ms Act Detect Inter: 2000ms
Running Up for: 00:15:44 Auth mode: None
Connect Type: Indirect Board Num: 7
Protocol: MFW/LSPV
Diag Info: No Diagnostic
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!