十一 09 2009

MPLS初步介绍 for NP

Posted by admin in CISCO, juniper, 电脑网络, 资料

标签:一个短而定长且物理连续的标识符,用于标识一组共享相同目的地的网络,一般仅在本地有意义。
标签栈:一个有序的附加在数据包头的标签集,栈中的所有标签都相互独立。
标签交换:基本的转发操作,包括查找入标签,确定出标签、封装方式、端口以及其他数据处理信息。
标签交换跳(LSH,Label-Switched Hop):位于两个MPLS节点间的路由跳,在这些跳上使用标签进行转发。
标签交换路径(LSP):特定FEC中的数据包在分层结构中同1层次所经历的一个或多个LSR路径。
标签经换路由器(LSR):能够转发带有标签的数据包的MPLS节点。
MPLS域:一个执行MPLS路由和转发操作的连续节点集,通常位于同一个路由或管理域。
MPLS边缘节点:与MPLS域外的邻居节点进行互联的MPLS节点。
MPLS出节点:负责处理离开MPLS域的流量的节点。
MPLS入节点:负责处理进入MPLS域的流量的节点。
MPLS标签:携带在数据包头中表示数据包FEC的标签。
MPLS节点:运行MPLS的节点。MPLS节点能够理解MPLS控制协议,运行一种或多种3层路由协议,能够根据标签转发数据包。作为可选项,MPLS节点还可以转发纯3层的数据包。
MPLS的基本路由选择原理与其他路由协议完全一样
FEC:Forwarding Equivalent Class
FEC是一组按相同方式、经相同路径、每跳转发处理行为均一致的IP包。
所有被分配到同一个FEC的数据包在转发决定上无任何区别,同一个FEC中的所有数据包(而不是某个数据包)都必须遵循与该FEC相关联的路径。
在MPLS中,数据包的检查以及FEC的分配都只发生一次,均由MPLS入节点来完成。FEC被编码为一个短而定长的值,称为标签,即数据包在被转发前就打上了标签。
从交换进程的角度看,MPLS网络中只有边缘LSR才进行路由表的查寻操作。
Cisco IOS软件中用于MPLS交换的底层机制由CEF来提供。
路由器交换机制
进程交换(Process Switching):独立处理每个数据包,在转发数据包之前需要查找整个路由表,这是最慢、也是最耗费资源的一种包转发方法。
高速缓存驱动型交换(Cache-driven Switching):也叫快速交换(FastSwitching),使用存储在内存中的包目的地来转发数据包。对特定的目的地来说,第一个数据包仍采取进程交换方式,但处理完之后会在路由表内存中以快速交换缓存的方式增加一个表项,这样一来,以后碰到去往相同目的地的数据包时就无需再查找路由表了。也称为“一次路由,多次交换“。
拓扑驱动型交换(Topology-driven Switching):也叫CEF交换,通过预定的FIB来实现高速的3层交换功能。
快速交换缓存中的条目有效时间为60秒。
CEF是一种使用FIB的拓扑驱动型交换技术,FIB是IP路由表的一种镜像映像,当拓扑结构发生变化时,FIB就会随着IP路由表的更新而更新。CEF FIB的更新不是数据包触发更新,而是变化触发更新,随着IP路由表的收敛,CEFFIB也随之更新。更新机制依赖于路由协议用以更新维护信息所用的算法(无论路由协议是链路状态协议还是距离矢量协议),但又与其相分离。
与快速交换缓存机制不同,FIB中无出接口以及相应的2层封装信息。为此,CEF维护了一张邻接表,其中,任何无法通过单条2层连接进行联系的节点都被称为邻接(adjacent)节点。邻接关系建立在2层之上,并被链接到FIB中的条目,
因而无需ARP请求操作。一旦发现了邻接关系,那么邻接表就会与相应邻接设备的相关信息一起被更新。
MPLS将传统的路由选择机制划分为两部分:控制平面和数据平面。
控制平面负责处理复杂的路由选择机制,包括OSPF、EIGRP、IS-IS、BGP和LDP等。
数据平面的唯一功能是根据路由协议或LDP提供的信息来转发流量,会创建一个存储标签信息的LFIB(LabelForwarding InformationBase),以便为转发引擎将数据包转发到目的地提供信息。创建LFIB的信息主要来自于LDP、BGP或RSVP(也可以是它们的组合)。
RSVP:Resource Reservation Protocol 资源预留协议
SLA:Service Level Agreement 服务等级协定
CE:Custom Edge
PE:Provider Edge
CPE:Custom Premise Equipment
通常情况下,CE路由器都会配置一条到达PE路由器的帧中继本地环路,帧中继连接在PE处被终结,CE与PE之间为3层交换,帧中继在这里仅起2层传输的作用。入口PE与出口PE之间的整个路径被称为LSP
标签的结构:
20 bit    标签
3    bit    实验CoS
1    bit    栈底指示符
8     bit    TTL
MPLS标签示意:

1.jpg (9.28 KB)

2009-8-5 13:23

MPLS标签被插在2层和3层帧头部之间。
标签字段取值范围0~1048575,0~15保留。
栈底指示符S用在需要为某个数据包使用多个标签时的情况,取值0或1,1代表该标签为最后一个标签。如果为0说明前面还有其他标签。
标签栈机制有点类似GRE隧道在承载IP流时在IP中进行的IP封装。
标签常见的应用有:MPLS VPN,MPLS TE,MPLS VPN with MPLS TE。
MPLS VPN——利用MP-BGP(Multiprotocol BGP)来传递附加在数据包上用于标识特定VPN的第二个标签的相关标签信息。第二个标签与第一个MPLS标签被同时打在数据包上。
MPLS TE——MPLS Traffic Engineering使用RSVP来建立LSP隧道,由RSVP负责传递用来标识LSP隧道的标签的相关标签信息。这类标签位于标签栈中原始MPLS标签的顶部。
MPLS VPN with MPLS TE——需要在帧上附加3个或多个标签,包括原始MPLS标签、VPN标签和LSP标签。
标签栈示意:

2.jpg (10.49 KB)

2009-8-5 13:23

帧头部中的PID(Protocol Identifier)用来标识所用的3层协议,MPLS会改变PID。如由0×0800(IP)变为0×8847(MPLS-IP)。
标签的处理过程总是基于栈顶标签,可以认为标签栈具有一定的深度。
分两种MPLS模式:frame mode , cell mode(ATM)
Frame Mode MPLS:帧模式MPLS表示的是在以太网封装或其他基于帧封装的接口上使用的MPLS,但不包括ATM接口。由于ATM缺乏灵活的成帧结构,因而ATM使用的是信元模式MPLS,并有一些特殊的要求。
当PE路由器收到数据包后,它需要做出转发决定。如果出接口是启用了MPLS的接口,那么路由器就必须给该数据包打上标签,并以相应的2层成帧结构封装该数据包。同时,路由器还要更改帧头中的EtherType字段,以指定正确的3层协议,之后,路由器就将该数据包转发到路由表中规定的下一跳地址。
如果接收到数据包的路由器是位于网络核心的LSR,那么其工作就是简单地处理数据包的入站和出栈标签。非PE路由器无需处理任何路由选择问题,这是因为FIB已经建立,而且目的地已经存在于相应的FIB中了。
LSR必须能同时工作于控制平面和数据平面,虽然每台LSR都保持着一个完整的收敛后的路由表,但它们并不参与常规的路由选择操作。LSR维护路由表的作用仅仅是为了确保FIB随时保持在最新状态,从而确保能正确地分配标签,并正确地处理数据包。
标签的分发工作由标签分发协议(如LDP)来完成,LDP在数据平面内发布LFIB,以维护标签交换信息。
边缘LSR不仅要转发数据包,而且还要增加或移除标签,但这不是说在任何情况下PE路由器都需要这么做,边缘LSR在确定转发行为时可能存在多种情况:
1.基于目的IP地址来转发所接收到的标准IP包,此时出站接口未启用MPLS;
2.基于目的IP地址来转发所接收到的带有MPLS标签的数据包,此时出站接口启用了MPLS;
3.完全基于标签来转发所接收到的数据包,此时需要检查入站标签,并根据LFIB来交换标签,从而将数据包正确地转发到下一跳MPLS节点;
4.虽然基于标签来转发所接收到的数据包,但由于LFIB显示该边缘LSR为出站MPLS边缘设备,因而需要弹出标签,并进行传统的路由选择操作。
如果接收到的数据包被丢弃,那么就表示无对应的LFIB表项,即使路由表中存在该目的地。与此类似,如果路由表中没有所接收到的数据包的路由表项,那么即使LFIB中存在该目的地的表项,该数据包仍然将被丢弃。
LIB、LFIB和FIB,它们既相互关联,又相互独立。
MPLS需要依赖底层的路由协议来收集构建LFIB所需的信息,从本质上来说,LFIB是一个标签路由表。虽然标签是通过分发协议来共享的,但标签信息却是基于IP路由表信息来建立的。如果IP网出现路由收敛问题或其他不稳定情况,MPLS网络也将受到相似的影响。
一旦构建完路由表且路由收敛过程也完成,那么每台LSR都要为路由表中的每个目的地分配标签,这些标签都只在本地有意义,并被存储在LIB中。接着,LSR会向其邻接对等体宣告其已分配的标签情况,之后,其邻接对等体将下一跳标签信息与网络目的地关联在一起,这些信息都存储在FIB中。每台LSR都根据接收到的标签信息构建自己的LIB、LFIB和FIB。
LIB是控制平面的一部分,为LDP进行标签分发提供相应的数据库。在数据库中,IP前缀与其从下游对等体学到的本地标签和下一跳标签关联在一起,LIB就负责维护IP前缀与已分配的标签和正在分配的标签之间的映射关系。
LFIB是数据平面的一部分,为转发带标签的数据包提供相应的数据库。IGP被用来在整个网络中的所有MPLS路由器之间传播路由表信息,路由器基于IGP路由更新中所共享的信息,就可以确定去往每个网络目的地度量值最佳的路径。
FIB也是数据平面的一部分,为转发不带标签的IP包提供相应的数据库。从本质上来说,FIB与IP路由表相同,如果到达下一跳目的地需要经过一个不支持MPLS的输出接口,那么就需要用到FIB信息,而忽略了LIB和LFIB信息。
标签交换和传统的路由选择非常相似,两者最大的区别在于标签交换和标签分发无需分析网络层信息。
标签分发的基本方式有两种:下游自主标签分发方式下游按需标签分发方式
入站数据包的转发方式多种多样,包括有标签转发方式无标签转发方式
有标签的输入数据包通过LFIB进行转发,并且以有标签数据包的形式发送出去。无论是否实现了PHP机制,远端边缘LSR都会将标签弹出。边缘LSR可以为无标签数据包打上标签并转发出去,但是当网络处于收敛期或导致目的地信息不完整的状态下会出现例外,此时将采取临时包传播方式。
临时包传播:当数据包到达特定LSR时,如果该LSR知道所需FEC相关联的标签可以将数据包转发出去时,就会利用存储在FIB中的信息转发该数据包,该数据包也就理所当然地被转发到FIB所列出的下一跳路由器。收到该数据包的下游路由器会进行查找以确认是否有标签与所需的FEC相关联。如果有,该接收数据包的下游路由器就会给数据包更换标签并按照标签规定的方式转发该数据包;如果没有,将重复该过程。有理由相信(虽然不太可能)网络中沿途的路由器可能都采取CEF交换方式。该功能的起因是允许网络处于收敛期或其他导致MPLS路由器中无特定FEC的标签时,可以继续转发数据包。
PHP是一种相对简单的提高效率的功能特性。对出口边缘LSR来说,需要在入站带标签的数据包上执行查找操作,如果目的网络是一个直连网络(即此路由器为最后一跳),那么就没有为该目的地定义标签,此时就需要弹出标签,并发起FIB表查找过程,因而这种两次查找操作的效率较低。PHP机制允许边缘LSR前的那个LSR(倒数第二跳)就将标签弹出,因而称为倒数第二跳弹出(Penultimate HopPopping)。
TDP: 1~15 label are reversed. label 3 is a null/pop label.
LDP: 1~9 label are reversed. label 1 is a null/pop label.
当下游路由器意识到它自己是LSP中的倒数第二个节点时,就可以向上游路由器分发标签值3。当上游路由器看见标签值为3时就会移除标签并按照正常方式转发数据包,上游路由器中的LIB将会视为imp-null(不会显示为3)。
TDP:Tag Distribution Protocol
LDPabel Distribution Protocol
接口上启用MPLS的三个步骤:
1.配置CEF——启用MPLS的前提条件是首先启用CEF。
2.在帧模式接口上配置MPLS——MPLS骨干接口必须启用MPLS。
3.根据需要配置MTU大小——为了防止帧的MTU超过接口的允许大小,应手工调整MPLS接口的MTU值。
CEF是一种高级的3层交换技术,优化了大规模、动态流量模型网络的性能和稳定性。与进程交换或快速交换相比,CEF交换对CPU的占用要少得多。CEF可以运行于集中模式或分布模式。FIB和邻接表为CEF提供了运行库,CEF利用FIB来确定IP目的地的交换方式,邻接表提供了一个2层信息库,包括2层下一跳信息。CEF利用邻接表来确定输出流量的2层信息,从而无需运行ARP或其他2层/3层解析进程。
常用命令
为了在路由器上启用MPLS,需要在全局模式下使用命令mpls ip,之后再在运行MPLS的接口上重复该命令。
SW(config)#mpls ip
SW(config-if)#mpls ip
SW(config-if)#tag-switching ip (老式命令,使用之后在show run中会显示为mpls ip)
SW(config-if)#mpls label protocol ?
both Use LDP or TDP (Adapt to peer on multiaccess interface)
ldp    Use LDP (default)
tdp    Use TDP
配置MPLS必须要启用CEF
SW(config)#ip cef (全局启用CEF)
SW(config)#ip cef distributed (启用dCEF)
SW(config-if)#ip route-cache cef (在特定接口上启用CEF)
SW#show ip cef
SW#show ip cef detail
SW#clear adjanceny
SW#clear ip cef inconsistency
SW#clear cef interface
SW#debug ip cef
SW#debug ip cef events
CEF配置中还提供了以下可选功能
CEF负载均衡——可以实现基于目的地或基于数据包的负载均衡。
CEF网络计费——可以收集各种流量统计信息。
CEF分布式隧道交换——该功能随CEF自动启动且不可配置,可以实现GRE等隧道的交换功能。
建议在非MPLS接口上应用访问控制列表,以阻塞TDP或/和LDP流量。TDP使用TCP端口711,LDP使用UDP端口646,这样做的目的是加强说明该接口不属于MPLS架构范围。
当数据包仅有一个标签,那么MTU为1504字节就可以了。当部署MPLS-TE或MPLS-VPN时,就需要再增大MTU大小,在同时配置MPLS-TE和MPLS-VPN的情况下(MPLS-VPN with MPLS-TE),MTU应该为1512字节。
配置MTU大小:
SW(config-if)#mpls mtu ?
<64-65535> MTU (bytes)
SW#show mpls ldp neighbor
SW#debug mpls ldp bindings

收藏与分享

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

:arrow: :) :-| :evil: more »