01-MPLS基础配置
本章节下载: 01-MPLS基础配置 (469.23 KB)
MPLS(Multiprotocol Label Switching,多协议标签交换)是目前应用比较广泛的一种骨干网技术。MPLS在无连接的IP网络上引入面向连接的标签交换概念,将第三层路由技术和第二层交换技术相结合,充分发挥了IP路由的灵活性和二层交换的简洁性。
MPLS广泛应用于大规模网络中,它具有以下优点:
· 在MPLS网络中,设备根据短而定长的标签转发报文,省去了查找IP路由表的繁琐过程,为数据在骨干网络中的传送提供了一种高速高效的方式。
· MPLS位于链路层和网络层之间,它可以建立在各种链路层协议(如以太网等)之上,为各种网络层(IPv4、IPv6、IPX等)提供面向连接的服务。
· 支持多层标签和面向连接的特点,使得MPLS具有良好的扩展性,在MPLS网络基础上可以为客户提供各种服务。目前,MPLS在VPN、流量工程、QoS等方面得到广泛应用。
FEC(Forwarding Equivalence Class,转发等价类)是MPLS中的一个重要概念。MPLS将具有相同特征(目的地相同或具有相同服务等级等)的报文归为一类,称为FEC。属于相同FEC的报文在MPLS网络中将获得完全相同的处理。
标签是一个长度固定、只具有本地意义的标识符,用于唯一标识一个报文所属的FEC。一个标签只能代表一个FEC。
如图1-1所示,标签封装在链路层帧头和网络层报文头之间,长度为4个字节,由以下四个字段组成:
· Label:标签值,长度为20bits,用来标识一个FEC。
· TC(Traffic Class,流量等级):3bits,用于QoS。该字段又称为Exp字段。
· S:标签栈底标识位,长度为1bit。MPLS支持多重标签,即在链路层帧头和网络层报文头之间可以封装多个标签,形成标签栈。靠近链路层帧头的最外层标签为栈顶标签;靠近网络层报文头的最内层标签为栈底标签。S位为1时表示为栈底标签;S位为0时表示为非栈底标签。
· TTL:8bits,和IP报文中的TTL意义相同,可以用来防止环路。
LSR(Label Switching Router,标签交换路由器)是具有标签分发能力和标签交换能力的设备,是MPLS网络中的基本元素。
属于同一个FEC的报文在MPLS网络中经过的路径称为LSP(Label Switched Path,标签交换路径)。
LSP是一条单向报文转发路径。在一条LSP上,沿数据传送的方向,相邻的LSR分别称为上游LSR和下游LSR。如图1-2所示,LSR B为LSR A的下游LSR,相应的,LSR A为LSR B的上游LSR。
与IP网络中的FIB(Forwarding Information Base,转发信息库)类似,在MPLS网络中,LSR接收到带标签的报文后,通过查找LFIB(Label Forwarding Information Base,标签转发信息库)获取对应的标签操作类型、出标签值、下一跳等,以确定如何转发该报文。
MPLS节点由两部分组成:
· 控制平面(Control Plane):负责标签的分配、FEC—标签映射的交换、标签转发表的建立、标签交换路径的建立、拆除等工作;
· 转发平面(Forwarding Plane):依据标签转发表对收到的报文进行转发。
如图1-3所示,MPLS网络的基本构成单元是LSR。MPLS网络包括以下几个组成部分:
· 入节点Ingress:报文的入口LSR,负责为进入MPLS网络的报文添加标签。
· 中间节点Transit:MPLS网络内部的LSR,根据标签沿着由一系列LSR构成的LSP将报文传送给出口LSR。
· 出节点Egress:报文的出口LSR,负责剥离报文中的标签,并转发给目的网络。
LSP的建立过程实际就是将FEC和标签进行绑定,在LSR上建立标签转发表的过程。LSP既可以通过手工配置的方式静态建立,也可以利用标签分发协议动态建立。
建立静态LSP需要用户在报文转发路径中的各个LSR上手工配置为FEC分配的标签。建立静态LSP消耗的资源比较少,但静态建立的LSP不能根据网络拓扑变化动态调整。因此,静态LSP适用于拓扑结构简单并且稳定的小型网络。
标签分发协议是MPLS的信令协议,负责划分FEC、通告FEC—标签绑定、建立维护LSP等。标签分发协议的种类较多,有专为标签分发而制定的协议,如LDP(Label Distribution Protocol,标签分发协议),也有扩展后支持标签分发的协议,如MP-BGP、RSVP-TE。
为了区分,本文中“标签分发协议”表示广义上所有用于标签分发的协议的总称;“LDP”表示RFC 5036规定的标签分发协议。
利用标签分发协议动态建立LSP的过程如图1-4所示。下游LSR根据目的地址划分FEC,为特定FEC分配标签,并将FEC—标签绑定关系通告给上游LSR;上游LSR根据该绑定关系建立标签转发表项。报文转发路径上的所有LSR都为该FEC建立对应的标签转发表项后,就成功地建立了用于转发属于该FEC报文的LSP。
图1-4 动态LSP建立过程
图1-5 MPLS转发过程示意图
如图1-5所示,MPLS网络中报文的基本转发过程为:
(1) Ingress(Device B)接收到不带标签的报文,根据报文的目的IP地址查找FIB表获取报文的出标签(40)、下一跳LSR(Device C)和出接口(Interface B1),为报文添加标签,并从相应的出接口将带有标签的报文转发给下一跳LSR。
(2) Device C根据报文上的标签(40)查找LFIB表获取报文的标签操作(交换标签)、出标签(50)、下一跳LSR(Device D)和出接口(Interface C1),用新的标签(50)替换原有标签后,从相应的出接口将带有标签的报文转发给下一跳LSR。
(3) Egress(Device D)接收到标签报文,根据报文上的标签(50)查找LFIB表获取报文的标签操作(删除标签)、下一跳LSR(Device E)和出接口(Interface D1),删除报文中的标签,从相应的出接口将不带标签的报文转发给下一跳LSR。如果LFIB表项中没有记录下一跳和出接口,则根据IP报文头查FIB表转发该报文。
MPLS网络中,Egress节点接收到带有标签的报文后,查找标签转发表,弹出报文中的标签后,再进行下一层的标签转发或IP转发。Egress节点转发报文之前要查找两次转发表:两次标签转发表,或一次标签转发表一次路由转发表。
为了减轻Egress节点的负担,提高MPLS网络对报文的处理能力,可以利用PHP(Penultimate Hop Popping,倒数第二跳弹出)功能,在倒数第二跳节点处将标签弹出,Egress节点只需查找一次转发表。
MPLS通过分配空标签实现倒数第二跳弹出。空标签分为:
· 隐式空标签:取值为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等信息后,直接弹出标签栈,进行下一层的转发处理。
与MPLS相关的协议规范有:
· RFC 3031:Multiprotocol Label Switching Architecture
· RFC 3032:MPLS Label Stack Encoding
· RFC 5462:Multiprotocol Label Switching (MPLS) Label Stack Entry: "EXP" Field Renamed to "Traffic Class" Field
如果设备上已经配置了MPLS功能,请勿再配置FCoE功能,否则可能导致FCoE功能不可用。
MPLS配置任务如下:
(1) 使能MPLS功能
(2) (可选)配置MPLS MTU
(3) (可选)配置设备作为Egress节点时为倒数第二跳分配的标签类型
(4) (可选)配置TTL复制
开启本功能后,Ingress节点会将原IP报文中的TTL值复制到MPLS标签的TTL域,借助IP tracert等工具,可以了解报文在MPLS网络中的转发路径。
(5) (可选)使能MPLS的TTL超时消息发送功能
(6) (可选)开启MPLS模块的告警功能
(7) (可选)开启MPLS模块的私有告警功能
在使能MPLS功能之前,需要配置单播静态路由或IGP协议,保证各LSR在网络层互通。
(1) 进入系统视图。
system-view
(2) 配置本节点的LSR ID。
mpls lsr-id lsr-id
缺省情况下,未配置LSR ID。
LSR ID采用点分十进制格式,与IP地址格式相同。
LSR ID在MPLS网络内必须唯一,推荐使用Loopback接口的IP地址作为LSR ID。
(3) 进入需要转发MPLS报文的接口视图。
interface interface-type interface-number
(4) 使能接口的MPLS能力。
mpls enable
缺省情况下,接口的MPLS能力处于关闭状态。
MPLS标签栈位于链路层帧头和网络层报文头之间。在MPLS转发过程中,虽然网络层报文长度小于接口的MTU,但是增加MPLS标签后,报文长度可能超过链路层允许发送的范围,从而导致报文无法正常转发。
为此,设备上定义了MPLS MTU,MPLS转发时将增加标签后的报文长度与MPLS MTU比较。报文长度大于MPLS MTU时:
· 如果允许分片,则LSR移除报文的标签栈,对IP报文进行分片(分片大小为MPLS MTU值减去标签栈的长度),分片后将被移除的标签栈添加到每个分片上,再进行转发;
· 如果不允许分片,则直接转发。
MPLS MTU会影响IP入MPLS时的流量转发。
不建议将接口MPLS MTU值设置过小,否则容易导致因IP分片影响性能,严重时甚至出现丢包现象。
配置的MPLS MTU值不能大于接口MTU,否则有可能导致数据转发失败。
如果MPLS报文内封装的是IPv6报文,则即使报文长度大于MPLS MTU,也会发送该报文,报文能否发送成功由接口的实际情况决定。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 配置接口的MPLS MTU。
mpls mtu size
缺省情况下,未配置接口的MPLS MTU值。此时如果配置了IP MTU,则根据IP MTU进行分片;如果未配置IP MTU,则根据接口的MTU值进行分片。分片的长度不包含MPLS标签栈的长度,为分片添加MPLS标签栈后MPLS报文的长度可能会大于接口MTU的值。
请根据实际情况选择Egress节点为倒数第二跳分配的标签类型:
· 如果倒数第二跳节点支持PHP(Penultimate Hop Popping,倒数第二跳弹出)功能,则建议采用隐式空标签;
· 如果在简化Egress节点转发处理的同时,希望Egress节点能够根据标签中的TC等信息决定QoS策略,则建议采用显式空标签;
· 非空标签只使用在一些比较特殊的场景,比如Egress节点上部署了OAM,只有根据标签才能对应到OAM功能实体的情况,通常情况下不建议使用非空标签。
对于LDP LSP,执行mpls label advertise命令修改Egress分配的标签类型后,已经建立的LDP LSP会被拆除,并根据新的标签类型重新建立。
对于BGP LSP,mpls label advertise命令只对新建立的BGP LSP生效,执行本命令前已经建立的BGP LSP不受影响。若要使本命令对已经建立的BGP LSP生效,则需要从BGP路由表中删除BGP LSP对应的路由,并重新引入该路由。
(1) 进入系统视图。
system-view
(2) 配置设备作为Egress节点时为倒数第二跳分配的标签类型。
mpls label advertise { explicit-null | implicit-null | non-null }
缺省情况下,Egress节点为倒数第二跳分配隐式空标签(implicit-null)。
IP报文进入MPLS网络和IP报文离开MPLS网络时,TTL的处理方式分为以下几种:
· 使能TTL复制功能:Ingress节点为IP报文压入标签时,将原IP报文中的TTL值复制到新增加的标签的TTL域。LSR转发标签报文时,对标签的TTL值做减一操作。LSR弹出报文的标签时,将标签的TTL值复制回IP报文。使用这种方式时,MPLS骨干网中的节点对用户网络的报文可见。报文沿着LSP传输的过程中,TTL逐跳递减,Tracert的结果将反映报文实际经过的路径。
图1-6 使能TTL复制功能时的处理过程
· 未使能TTL复制功能:Ingress节点为IP报文压入标签时,不会将原IP报文中的TTL值复制到新增加的标签的TTL域,标签的TTL取值为255。LSR转发标签报文时,对标签的TTL值做减一操作。LSR弹出标签时,不修改IP TTL的值。使用这种方式时,MPLS骨干网中的节点对用户网络的报文不可见。Tracert的结果不包括MPLS骨干网络中的每一跳,从而隐藏MPLS骨干网络的结构。
图1-7 未使能TTL复制功能时的处理过程
TTL复制功能对已存在的LSP不生效。对于已存在的LSP,执行mpls ttl propagate命令后,需要执行以下操作才能生效:
· 对于静态LSP,需要重新配置静态LSP;
· 对于动态建立的LSP,需要执行reset mpls ldp命令重启LDP会话。
在MPLS网络内部,MPLS报文多层标签之间的TTL值总是互相复制。本功能只决定是否将IP TTL复制到标签的TTL域、是否将标签的TTL复制到IP的TTL域。
建议在LSP经过的LSR上配置相同的TTL域处理方式。
如果配置mpls ttl propagate vpn命令使能对VPN报文的TTL复制功能,则建议在同一个VPN的所有PE上都使能此功能,以保证不同的PE上执行Tracert得到的结果一致。
(1) 进入系统视图。
system-view
(2) 使能TTL复制功能。
mpls ttl propagate { public | vpn }
缺省情况下,对于通过公网进行转发的报文,TTL复制功能处于开启状态;对于通过VPN进行转发的报文,TTL复制功能处于关闭状态。
使能MPLS的TTL超时消息发送功能后,当LSR收到TTL为1的MPLS报文时,LSR会生成ICMP的TTL超时消息。对于一层标签的MPLS报文,LSR沿着本地IP路由返回ICMP TTL超时消息;对于多层标签的MPLS报文,LSR沿着发送MPLS报文的LSP转发ICMP TTL超时消息,由Egress节点将该消息返回给发送者。
(1) 进入系统视图。
system-view
(2) 使能MPLS的TTL超时消息发送功能。
mpls ttl expiration enable
缺省情况下,MPLS的TTL超时消息发送功能处于开启状态。
LSP的MPLS标签转发是指接收到带有标签的报文后,根据报文中的入标签转发该报文。
本配置用来开启指定LSP的MPLS标签转发统计功能和统计信息收集功能,以便用户通过display mpls lsp verbose命令查看该LSP的MPLS标签转发统计信息。
在PE设备上使用mpls statistics enable命令开启指定VPN实例的MPLS标签转发统计功能会同时开启该VPN实例内所有LSP的MPLS标签转发统计功能。有关VPN实例的MPLS标签转发统计功能的详细介绍,请参见“MPLS配置指导”中的“MPLS L3VPN”。
(1) 进入系统视图。
system-view
(2) 使能指定LSP的MPLS标签转发统计功能。
mpls statistics { all | [ vpn-instance vpn-instance-name ] { ipv4 ipv4-address mask-length | ipv6 ipv6-address prefix-length } | static | te ingress-lsr-id tunnel-id }
缺省情况下,所有LSP的MPLS标签转发统计功能均处于关闭状态。
(3) 使能MPLS标签转发统计信息的收集功能,并设置统计信息收集的时间间隔。
mpls statistics interval interval
缺省情况下,MPLS标签转发统计信息收集功能处于关闭状态。
开启MPLS模块的告警功能后,该模块会生成告警信息,用于报告该模块的重要事件。生成的告警信息将发送到设备的SNMP模块,通过设置SNMP中告警信息的发送参数,来决定告警信息输出的相关属性。
有关告警信息的详细介绍,请参见“网络管理和监控配置指导”中的“SNMP”。
(1) 进入系统视图。
system-view
(2) 开启MPLS模块的告警功能。
snmp-agent trap enable mpls
缺省情况下,MPLS模块的告警功能处于关闭状态。
开启MPLS模块的私有告警功能后,当MPLS资源耗尽、MPLS标签使用率超过上限阈值或者低于下限阈值、静态LSP状态发生变化等事件发生时,会产生告警信息。这些告警信息未在RFC中规定,是Comware私有的告警信息。生成的告警信息将发送到设备的SNMP模块,通过设置SNMP中告警信息的发送参数,来决定告警信息输出的相关属性。
有关告警信息的详细介绍,请参见“网络管理和监控配置指导”中的“SNMP”。
(1) 进入系统视图。
system-view
(2) 开启MPLS模块的私有告警功能。
snmp-agent trap enable mpls-private [ entryres–exhausted | hard-resource | label-threshold | label-total | resources-exceeded | slsp-label-dup | slsp-up-down | sr-label-conflict | tunnel-to-vpn ] *
缺省情况下,MPLS模块的私有告警功能处于关闭状态。
(3) (可选)配置MPLS标签使用率的告警阈值。
mpls label-usage threshold-alarm percent { dynamic | egress | egress6 | l3vpn | srgb | srlb | static | vpls | vpws } upper-limit upper-percent lower-limit lower-percent
缺省情况下,所有类型MPLS标签的使用率告警上限阈值均为80%、下限阈值均为70%。
在完成上述配置后,在任意视图下执行display命令可以显示配置后MPLS的运行情况,用户可以通过查看显示信息验证配置的效果。
表1-1 MPLS显示和维护
操作 |
命令 |
显示ILM表项信息 |
display mpls forwarding ilm [ label ] [ slot slot-number ] |
显示NHLFE表项信息 |
display mpls forwarding nhlfe [ nid ] [ slot slot-number ] |
显示使能了MPLS能力接口的MPLS相关信息 |
display mpls interface [ interface-type interface-number ] |
显示MPLS标签的使用状态 |
display mpls label { label-value1 [ to label-value2 ] | all } |
显示LSP信息 |
display mpls lsp [ egress | in-label label-value | ingress | outgoing-interface interface-type interface-number | protocol { bgp | ldp | local | sr-te | rsvp-te [ p2mp ] | static | static-cr } | transit ] [ vpn-instance vpn-instance-name ] [ ipv4-address mask-length | ipv6 [ ipv6-address prefix-length ] ] [ verbose ] |
显示MPLS的NIB(Nexthop Information Base,下一跳信息库)信息 |
display mpls nib [ nib-id ] |
显示MPLS NHLFE表项索引的使用状态 |
display mpls nid [ nid-value1 [ to nid-value2 ] ] |
显示MPLS汇总信息 |
display mpls summary |
清除指定LSP的MPLS转发统计信息 |
reset mpls statistics { all | [ vpn-instance vpn-instance-name ] { ipv4 ipv4-address mask-length | ipv6 ipv6-address prefix-length } | static | te ingress-lsr-id tunnel-id } |
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!