赞
踩
CCNP路由实验之十二 MPLS
路由器的工作模式是十分重要的,它直接影响数据转发的速度和系统的性能,理解它们的不同对于我们合理的应用有着非常重要的意义。具体分析如下:
Process Switching(进程交换) 这是一种最基本的交换模式,在这种模式下,一条数据流(flow)中的第一个包(packet)将被置入系统缓存(systembuffer)。其目的地址将会拿到路由表中去查询比对,路由器的处理器(CPUor Processer)同时将进行CRC校验,检查包是否正确。然后数据包的二层MAC地址将会被重写,替换为下一跳接口的MAC地址。这样的过程将会继续,对这条数据流(flow)中的第2个、第3个数据包„„相同的操作,包括查询路由表、重写MAC地址,CRC校验等。 这种方式无疑是延迟最大的,因为它要利用systembuffer以及processor去处理每个收到的包。但是仍然有机会使用这种交换方式,比如在进行基于每个包的负载分担时,或是debugip packet时。
Fash Switching (route-cacheswitching) 快速交换要优于processswitching,它采用了routecache(路由缓存)来存储关于某条数据流(flow)的特定信息,当然会包括诸如目的MAC地址,目的接口等内容。这时我们只需要对一条数据流(flow)中的第一个包做processswitching,并把信息存入cache,所有后续数据包,可以不必再中断systemprocessor去执行查询等操作,直接从cache中提取目的接口,目的MAC地址等,这样大大加速了包转发速度。
基于缓存交换的缺点:
1、 是流量驱动的,依赖于第一个数据包的接收以生成缓存,这个数据包是在慢速交换路线中被交换的,导致了低性能和高CPU消耗。
2、 缓存是基于IP地址的,条目众多,消耗大量内存。
3、 由于路由抖动导致了无效缓存,促使网络不稳定。
Optimum and Distributed Switching 这两种交换模式,从原理上来讲都与fastswitching极为相似,比如optimumswitching其实采用了一种经过优化的交换缓存(optimumedswitching cache),它的速度要较平常cache要快。 distributed switching mode需要使用VersatileInterface Card这种硬件卡,又称VIPcard.它会自已保存一份route cache,这样在查询时就不必要等待使用共享的系统缓存了(sharedsystem buffer),无论相对于fastswitching还是optimumswitching来讲,都是比较快的。 这两种模式一般只在思科高端设备上有所应用,比如7200系列路由器。或者12000系列路由器。
Netflow switching 通过一种标准的交换机制,处理了流的第一个数据包,然后就创建了网路流缓存。设计网络流交换的目的是,提供一种高效率的机制,来处理扩展或复杂的访问列表时,不必像其他的交换方式一样丧失同样多的系统性能。在网络流交换方式下,能够为每一个流收集详细的记账信息,对于新发布的IOS软件来说,网络流交换被专门用来实现该目的,而不再用来交换数据包了。在同时启用CEF和网络流交换的情况下,CEF为IP数据包提供交换路线,并生成流缓存,而网络流交换被用来向流收集器输出统计信息。这些流信息包括基于每个用户、每种协议、每个端口以及每种类型的服务统计信息。这些信息被广泛用于各种目的,例如:网络分析和规划、记账以及计费。经过统计,大致65536条数据流(flow)会耗费4MB的systembuffer
Cisco Express Forwarding 思科CEF是最为高效的一种三层协议,进程交换和基于缓存的交换都是数据驱动。CEF是拓扑驱动(topology-driven),并与路由选择表紧密相关, CEF 是由新的cisco设备使用的提供线速路由选择的技术。CEF让分组交换完全绕过路由处理器,通过专门的数据结构来完成,该数据结构通过路由处理器和交换处理器之间的一个通信过程来动态更新。通常,CEF被认为是“没有路由,一直交换”基于CEF的机制针对所有的分组,包括给定流中的第一个分组都用硬件处理的。路由选择表仍然由路由器的CPU维护,但是创建了两张额外的表:转发信息库(FIB,Forwarding Information Base)表:该表是从路由选择表中拷贝过来的转发信息,不包括任何路由选择协议信息。路由表有任何增删变化,FIB表均会随之变化;邻接表:维护一个邻近结点(如果两个节点能通过第2层一跳到达彼此则被认为是邻接)以及他们相关的第2层MAC重写或下一条信息的数据库。FIB表由一棵四层的树组成,是按照IPv4所使用的点分十进制来分层的,CEF依赖最长匹配转发算法,这意味着按照降序搜索整棵树知道“最长匹配。 FIB和邻接表都被优化提供进行转发决定所需的信息,而没有更多的其他信息,如果FIB表已满,后续表项将和现有表项比较,并以牺牲不详细表项的代价来保存更详细的表项。FIB表的好处:1、可以被硬件ASIC调用2、解决递归路由问题,直接找到下一跳3、 扩展性,应用于MPL.邻接表是由ARP实现的,将第2层地址映射到相应的第3层地址上。路由器能从路由选择更新中发现下一跳路由器,并相应的在临时表中增加表项。这个处理让路由器构建了第3层分组转发所需的下一跳重写信息。总体来讲CEF的优点:1、可扩展性(Scalability):当激活了分布式CEF(Distributed CEF)模式时,CEF在每一块线卡(line card)上也提供了全部的交换能力。2、增强了性能:CEF使用CPU率较低,更多的CPU处理能力可以专注于第3层的服务,比如动态路由协议的运行。3、弹性(Resilience):在大型动态网络中,CEF提供了更好的一致性和稳定性
ATM是以信元为基本单位进行信息传输、复用和交换的。ATM信元具有53字节的固定长度,其中前5个字节是信元头,其余48个字节是有效载荷。ATM信元头的功能有限,主要用来标识虚连接,另外也完成了一些功能有限的流量控制,拥塞控制,差错控制等功能。ATM数据传输技术屏弃了繁琐的路由查找,改为简单快速的标签交换,它适用于局域网和广域网,它具有高速数据传输率和支持许多种类型如声音、数据、传真、实时视频、CD质量音频和图像的通信。ATM有它自己的参考模型,既不同于OSI模型,也不同于TCP/IP模型。它包括三层:物理层、ATM层和ATM适配层。它想解决所有IP的问题,但由于它过于复杂的技术实现,且无法与已经广泛应用的IP融合,使atm只能做为IP链路层协议。
新一代交换式路由器基于硬件进行IP分组的转发,转发引擎可以是ASIC(专用集成电路 )或专门为IP转发而设计的网络处理器。转发过程的所有细节全部采用硬件方式来实,包括查询和控制功能。交换式路由器性能与控制功能结合起来的关键在于ASIC能够读阅每一数据包内容的多少。 ASIC能够收集到的关于每一数据包流量的信息越多,可作用于该数据包流的控制水平就越精细。
MPLS(多协议标签交换)是集成式的IPover ATM技术(即在帧中继或ATM交换上结合路由功能),数据包通过虚拟电路传送,只需在OSI第二层(数据链结层)执行硬件式交换(取代第三层(网络层)软件式选路)。它把IP选路与第二层标签交换整合为单一的系统,因此可解决Internet的路由问题,缩短数据包传送的时延,加快网络传输速度,适合于多媒体信息传送。MPLS最大的技术特色是可以指定数据包传送的先后顺序,它使用标签交换(labelswitching),网络路由器只需判别标签,即可进行传送。运作原理是为每个IP数据包提供一个标签,并由此决定数据包的路径及优先级。与MPLS兼容的路由器在把数据包转送到其路径前,仅读取数据包标签,无需读取每个数据包的IP地址及标头(网络速度会加快),然后把所传送的数据包置于帧中继或ATM的虚拟电路上,并迅速传送到终点路由器,减少数据包的时延。同时,按帧中继或ATM交换机提供的Qos,对所传送的数据包加以分级,大幅提升网络服务品质,提供多样化服务。随着ASIC技术的发展,基于硬件进行IP分组转发的路由查找速度已经不是阻碍网络发展的瓶颈。这使得MPLS在提高转发速度方面不再具备明显的优势。现在MPLS主要应用于流量工程TE(Traffic Engineering)、虚拟专用网VPN(Virtual Private Network)、服务质量QoS(Quality of Service)等应用
MPLS 独立于第二和第三层协议,诸如ATM 和IP。它提供了一种方式,将IP地址映射为简单的具有固定长度的标签,用于不同的包转发和包交换技术。它是现有路由和交换协议的接口,如IP、ATM、帧中继、资源预留协议(RSVP)、开放最短路径优先(OSPF)等等。在MPLS 中,数据传输发生在标签交换路径(LSP)上。LSP 是每一个沿着从源端到终端的路径上的结点的标签序列。现今使用着一些标签分发协议,如标签分发协议(LDP)、RSVP 或者建于路由协议之上的一些协议,如边界网关协议(BGP)及OSPF。因为固定长度标签被插入每一个包或信元的开始处,并且可被硬件用来在两个链接间快速交换包,所以使数据的快速交换成为可能。
原理
MPLS是基于标记的IP路由选择方法。这些标记可以被用来代表逐跳式或者显式路由,并指明服务质量(QoS)、虚拟专网以及影响一种特定类型的流量(或一个特殊用户的流量)在网络上的传输方式等各类信息。MPLS采用简化了的技术,来完成第三层和第二层的转换。它可以提供每个IP数据包一个标记,将之与IP数据包封装于新的MPLS数据包,由此决定IP数据包的传输路径以及优先顺序,而与MPLS兼容的路由器会在将IP数据包按相应路径转发之前仅读取该MPLS数据包的包头标记,无须再去读取每个IP数据包中的IP地址位等信息,因此数据包的交换转发速度大大加快。MPLS协议实现了第三层的路由到第二层的交换的转换。MPLS可以使用各种第二层协议。MPLS工作组到目前为止已经把在帧中继、ATM和PPP链路以及IEEE802.3局域网上使用的标记实现了标准化。MPLS在帧中继和ATM上运行的一个好处是它为这些面向连接的技术带来了IP的任意连通性。目前MPLS的主要发展方向是在ATM方面。这主要是因为ATM具有很强的流量管理功能,能提供QoS方面的服务,ATM和MPLS技术的结合能充分发挥在流量管理和QoS方面的作用。标记是用于转发数据包的报头,报头的格式则取决于网络特性。在路由器网络中,标记是单独的32位报头;在ATM中,标记置于虚电路标识符/虚通道标识符(VCI/VPI)信元报头中。对于MPLS可扩展性非常关键的一点是标记只在通信的两个设备之间有意义。在网络核心,路由器/交换机只解读标记并不去解析IP数据包。IP包进入网络核心时,边界路由器给它分配一个标记。自此,MPLS设备就会自始至终查看这些标记信息,将这些有标记的包交换至其目的地。由于路由处理减少,网络的等待时间也就随之缩短,而可伸缩性却有所增加。MPLS数据包的服务质量类型可以由MPLS边界路由器根据IP包的各种参数来确定,如IP的源地址、目的地址、端口号、TOS值等参数。另外对于到达同一目的地的IP包,可根据其TOS值的要求来建立不同的转发路径,以达到其对传输质量的要求。同时,通过对特殊路由的管理,还能有效地解决网络中的负载均衡和拥塞问题。当网络中出现拥塞时,MPLS可实时建立新的转发路由来分散流量以缓解网络拥塞。
MPLS网络结构
MPLS网络由LER(标签边缘路由器)和LSR(标签交换路由器)组成。LER位于ATM骨干网的边缘并作为MPLS的入口/出口路由器。LER执行全部的第三层功能和由运行LDP而产生的基于LIB(LabelInforinationBase)的标签绑定功能。LER连到网络内部的LSR。LSR执行基于LIB的标签交换,具有第三层转发分组和第二层交换分组的功能。同时也能运行传统IP选路协议和执行一个特殊控制协议与相邻LSR协调FEC/标签的绑定信息。LER与LSR之间的LSP是通过LDP协议建立起来的。
转发等价类: MPLS作为一种分类转发技术,将具有相同转发处理方式的分组归为一类,称为FEC(Forwarding EquivalenceClass,转发等价类)。相同FEC的分组在MPLS网络中将获得完全相同的处理。FEC的划分方式非常灵活,可以是以源地址、目的地址、源端口、目的端口、协议类型或VPN等为划分依据的任意组合。例如,在传统的采用最长匹配算法的IP转发中,到同一个目的地址的所有报文就是一个FEC。
标签 :Label是一个长度固定,仅具有本地意义的短标识符,用于唯一标识一个分组所属的FEC。一个标签只能代表一个FEC。标签长度为4个字节,如果链路层协议具有标签域,如ATM的VPI/VCI,则标签封装在这些域中叫做信元模式;否则,标签封装在链路层头和网络层数据之间的一个垫层中叫做帧模式。这样,任意链路层都能够支持标签。标签共有4个域:标签共有4个域:
标签交换路由器: LSR(Label Switching Router,标签交换路由器)是MPLS网络中的基本元素,所有LSR都支持MPLS技术。LSR由两部份组成:
控制平面(Control Plane):负责标签的分配、路由的选择、标签转发表的建立、标签交换路径的建立、拆除等工作;
转发平面(Forwarding Plane):依据标签转发表对收到的分组进行转发。对于普通的LSR,在转发平面只需要进行标签分组的转发,需要使用到LFIB(Label Forwarding Information Base,标签转发表)。对于LER,在转发平面不仅需要进行标签分组的转发,也需要进行IP分组的转发,所以既会使用到LFIB,也会使用到FIB(Forwarding Information Base,转发信息表)。
标签发布 :LDP是MPLS的控制协议,它相当于传统网络中的信令协议,负责FEC的分类、标签的分配以及LSP的建立和维护等一系列操作。MPLS可以使用多种标签发布协议。包括专为标签发布而制定的协议,例如:LDP(Label Distribution Protocol)、CR-LDP(Constraint-Routing LabelDistribution Protocol)。也包括现有协议扩展后支持标签发布的,例如:BGP(Border Gateway Protocol)、RSVP(Resource ReservationProtocol)。LDP利用路由转发表建立LSP,LDP通过逐跳方式建立LSP时,利用沿途各LSR路由转发表中的信息来确定下一跳,而路由转发表中的信息一般是通过IGP、BGP等路由协议收集的。LDP并不直接和各种路由协议关联,只是间接使用路由信息。传递标签所用的协议:
TDP---cisco专有标准,组播地址发包,使用UDP711端口,同时支持UDP和TCP,TDP发现邻居发UDP-711,源目都是,建邻居用目的端口TCP-711,源端口随机,以后发包都是TCP。TDP只能基于FIB表中的条目来打标签,实际上在MPLS中是LFIB表(标签转发信息表)
LDP---业界标准,组播地址发包,使用UDP646端口,同时支持UDP和TCP,LDP发现邻居发UDP-646,源目都是,建邻居用TCP-646,目的端口,源端口随机,以后发包都是TCP。LDP只能基于FIB表中的条目来打标签,实际上在MPLS中是LFIB表(标签转发信息表)
标签交换路径 :LSP一个转发等价类在MPLS网络中经过的路径称为LSP(Label Switched Path,标签交换路径)。LSP在功能上与ATM和Frame Relay的虚电路相同,是从入口到出口的一个单向路径。LSP中的每个节点由LSR组成,根据数据传送的方向,相邻的LSR分别称为上游LSR和下游LSR。分组被打上标签后,沿着由一系列LSR构成的标签交换路径LSP传送,其中,入节点LER被称为Ingress,出节点LER被称为Egress,中间的节点则称为Transit。标签交换路径LSP分为静态LSP和动态LSP两种。静态LSP由管理员手工配置,动态LSP则利用路由协议和标签发布协议动态产生。在MPLS的应用中,也可能需要对某些路由协议进行扩展。例如,基于MPLS的VPN应用需要对BGP进行扩展,使BGP能够传播VPN的路由信息;基于MPLS的流量工程TE(Traffic Engineering)需要对OSPF或IS-IS协议进行扩展,以携带链路状态信息。
MPLS的基本工作过程:
首先,LDP和传统路由协议(如OSPF、ISIS等)一起,在各个LSR中为有业务需求的FEC建立路由表和LIB(LabelInformation Base,标签信息表);
入口LER接收分组,完成第三层功能,判定分组所属的FEC,并给分组加上标签,形成MPLS标签分组;
接下来,在LSR构成的网络中,LSR根据分组上的标签以及LFIB(Label Forwarding Information Base,标签转发表)进行转发,不对标签分组进行任何第三层处理;
最后,在MPLS出口LER去掉分组中的标签,继续进行后面的IP转发。
由此可以看出,MPLS并不是一种业务或者应用,它实际上是一种隧道技术,也是一种将标签交换转发和网络层路由技术集于一身的路由与交换技术平台。这个平台不仅支持多种高层协议与业务,而且,在一定程度上可以保证信息传输的安全性。
LDP剖析
LDP协议规定标签分发过程中的各种消息以及相关的处理进程。通过LDP,LSR可以把网络层的路由信息直接映射到数据链路层的交换路径上,进而建立起LSP。LSP既可以建立在两个相邻的LSR之间,也可以建立在两个非直连的LSR之间,从而在网络中所有中间节点上都使用标签交换。
LDP对等体 LDP对等体是指相互之间存在LDP会话、使用LDP来交换标签/FEC映射关系的两个LSR。LDP对等体通过它们之间的LDP会话获得对方的标签映射消息。
LDP会话 LDP会话用于在LSR之间交换标签映射、释放等消息。LDP会话可以分为两种类型:
本地LDP会话(LocalLDP Session):建立会话的两个LSR之间是直连的;
远端LDP会话(RemoteLDP Session):建立会话的两个LSR之间是非直连的。
LDP消息类型 :LDP协议主要使用四类消息:为保证LDP消息的可靠发送,除了发现阶段使用UDP传输外,LDP的Session消息、Advertisement消息和Notification消息都使用TCP传输。
发现(Discovery)消息:用于通告和维护网络中LSR的存在;
会话(Session)消息:用于建立、维护和终止LDP对等体之间的会话;
通告(Advertisement)消息:用于创建、改变和删除标签—FEC绑定;
通知(Notification)消息:用于提供建议性的消息和差错通知。
标签空间与LDP标识符 :LDP对等体之间分配标签的范围称为标签空间(Label space)。可以为LSR的每个接口指定一个标签空间(per-interface label space),也可以整个LSR使用一个标签空间(per-platform label space)。LDP标识符(LDP Identifier)用于标识特定LSR的标签空间,是一个六字节的数值,格式如下:
<LSRID>:<标签空间序号>
其中,LSR ID占四字节,标签空间序号占两字节。标签空间序号取值为1时表示每个接口指定一个标签空间;取值为0时表示整个LSR使用一个标签空间。
LDP标签分发 :标签的分发过程有两种模式,主要区别在于标签映射的发布是上游请求(DoD)还是下游主动发布(DU)。具有标签分发邻接关系的上游LSR和下游LSR之间必须使用相同的标签发布方式,否则LSP无法正常建立
DoD(downstream-on-demand)模式 :上游LSR向下游LSR发送标签请求消息(Label Request Message),其中包含FEC的描述信息。下游LSR为此FEC分配标签,并将绑定的标签通过标签映射消息(Label Mapping Message)反馈给上游LSR。下游LSR何时反馈标签映射消息,取决于该LSR采用的标签分配控制方式。采用Ordered方式时,只有收到它的下游返回的标签映射消息后,才向其上游发送标签映射消息;采用Independent方式时,不管有没有收到它的下游返回的标签映射消息,都立即向其上游发送标签映射消息。上游LSR一般是根据其路由表中的信息来选择下游LSR。
DU(downstream unsolicited)模式 下游LSR在LDP会话建立成功后,主动向其上游LSR发布标签映射消息。上游LSR保存标签映射信息,并根据路由表信息来处理收到的标签映射信息。
标签分配控制方式(LabelDistribution Control Mode)分为两种:
独立标签分配控制(Independent):LSR可以在任意时间向与它连接的LSR通告标签映射。这种方式可能导致在收到下游标签之前就向上游发布了标签。
有序标签控制方式(Ordered):对于LSR上某个FEC的标签映射,只有当该LSR已经具有此FEC下一跳的标签映射消息或者该LSR就是此FEC的出口节点时,该LSR才可以向上游发送此FEC的标签映射。
标签保持方式(Label Retention Mode)是指LSR对收到的、但目前暂时用不到的标签—FEC绑定的处理方式。标签保持方式也分为两种:
自由标签保持方式(Liberal):对于从邻居LSR收到的标签映射,无论邻居LSR是不是自己的下一跳都保留。使用自由标签保持方式,LSR能够迅速适应路由变化;而使用保守标签保持方式,LSR可以分配和保存较少的标签数量。
守标签保持方式(Conservative):对于从邻居LSR收到的标签映射,只有当邻居LSR是自己的下一跳时才保留。保守标签保持方式通常与DoD方式一起,用于对于标签空间有限的LSR
标签交换中的几个基本概念
NHLFE(Next Hop LabelForwarding Entry):下一跳标签转发项。用于描述对标签执行的操作,包括入栈(Push)操作和交换(Swap)操作。
FTN(FEC to NHLFE map):在Ingress节点将转发等价类FEC映射到NHLFE的过程。
ILM(Incoming Label Map):入标签映射。对于接收的标签分组,LSR将标签映射到NHLFE的过程,包括空(Null)操作、出栈(Pop)操作。
标签交换的过程 入口LER(Ingress)将进入网络的分组划分成转发等价类FEC。属于相同FEC的分组在MPLS域中将经过相同的路径,即使用同一条LSP。LSR对到来的FEC分组分配一个标签,然后从相应的接口转发出去。标签交换的具体操作描述如下:
LSP沿途的所有LSR都先建立ILM,入标签是根据ILM表项进行映射的;
对于接收到的标签分组,LSR将标签映射到NHLFE;
LSR只需根据标签从标签信息表中找到相应的NHLFE,用新的标签替换原来的标签,然后对标签分组继续转发
标签分发与分配的注意:
标签的分配是将MPLS标签插入到数据包中;
标签的分发是将MPLS标签传递给邻居路由器
标签的分配只在本地有意义
标签的分配(allocation):决定需不需要对该路由条目分配标签,或者说给什么样的条目分发标签。对于帧模式来说,这个动作是本地路由器作出的,与其他路由器无关
标签的分发(distribution):决定将产生的标签传递给谁、如何传的过程
标签的保留:像ARP一样,在路由条目失效后一定时间内标签继续有效
帧模式的标签分配原则是:independantcontrol独立控制,即不管是否能收到邻居传递过来的标签,都会对本地前缀分配标签;
帧模式的标签分发原则是:下游自主,即不管你有没有用到我发给你的标签,只要建立了邻居关系,我都会把我本地的标签发给你。这里的上下游是指数据转发的上下游。
帧模式的标签保留原则是:自由,即谁分配的标签谁保留。
帧模式的标签保存:将邻居传递过来的标签保存在LFIB里面,同时保存在FIB里面
信元模式的标签分配原则:按序
信元模式的标签分发原则:按需,即收到请求之后才分发。
信元模式的标签保留原则:保守,即只保留下游路由器发过来的标签
F)LDP的操作主要包括以下四个阶段
发现阶段 :在这一阶段,希望建立会话的LSR向相邻LSR周期性地发送Hello消息,通知相邻节点自己的存在。通过这一过程,LSR可以自动发现它的LDP对等体,而无需进行手工配置。LDP有两种发现机制:
基本发现机制用于发现本地的LDP对等体,即通过链路层直接相连的LSR,建立本地LDP会话。这种方式下,LSR周期性以UDP报文形式从接口发送LDP链路Hello消息(LDP Link Hello),发往标识“子网内所有路由器”的组播地址。LDP链路Hello消息带有接口的LDP标识符及其他相关信息,如果LSR在某个接口收到了LDP链路Hello消息,则表明在该接口(链路层)存在LDP对等体。
扩展发现机制用于发现远端的LDP对等体,即不通过链路层直接相连的LSR,建立远端LDP会话。这种方式下,LSR周期性以UDP报文形式向指定的IP地址发送LDP目标Hello消息(LDP Targeted Hello)。LDP目标Hello消息带有LSR的LDP标识符及其他相关信息,如果LSR收到LDP目标Hello消息,则表明在网络层存在LDP对等体。
会话建立与维护 :发现邻居之后,LSR开始建立会话。这一过程又可分为两步:
建立传输层连接,即,在LSR之间建立TCP连接;
随后对LSR之间的会话进行初始化,协商会话中涉及的各种参数,如LDP版本、标签分发方式、定时器值、标签空间等。
会话建立后,通过不断地发送Hello消息和Keepalive消息来维护这个会话。
LSP建立与维护 :LSP的建立过程实际就是将FEC和标签进行绑定,并将这种绑定通告LSP上相邻LSR。这个过程是通过LDP实现的,以DU模式、有序标签控制方式为例,主要步骤如下:
当网络的路由改变时,如果有一个边缘节点发现自己的路由表中出现了新的目的地址,并且这一地址不属于任何现有的FEC,则该边缘节点需要为这一目的地址建立一个新的FEC。
如果此边缘节点存在上游LSR,并且尚有可供分配的标签,则该节点为FEC分配标签,并向上游发出标签映射消息,其中包含分配的标签等信息。
收到标签映射消息的LSR记录相应的标签映射信息,若消息由对应FEC的下一跳发送,则将在其标签转发表中增加相应的条目。此LSR为它的上游LSR分配标签,并继续向上游LSR发送标签映射消息。
当入口LSR收到标签映射消息时,在标签转发表中增加相应的条目。这时,就完成了LSP的建立,接下来就可以对该FEC对应的数据分组进行标签转发了。
会话撤销 LDP通过检测Hello消息来判断邻接关系;通过检测Keepalive消息来判断会话的完整性。LDP在维持邻接关系和LDP会话时使用不同的定时器:
Hello保持定时器:LDP对等体之间,通过周期性发送Hello消息表明自己希望继续维持这种邻接关系。如果Hello保持定时器超时仍没有收到新的Hello消息,则删除Hello邻接关系。
Keepalive定时器:LDP对等体之间通过LDP会话连接上传送的Keepalive消息来维持LDP会话。如果会话保持定时器超时仍没有收到任何Keepalive消息,则关闭连接,结束LDP会话。
G)LDP环路检测 :在MPLS域中建立LSP也要防止产生环路,LDP环路检测机制可以检测LSP环路的出现,并避免发生环路。果对MPLS域进行环路检测,则必须在所有LSR上都配置环路检测。但在建立LDP会话时,并不要求双方的环路检测配置一致。LDP环路检测有两种方式:
最大跳数 :在传递标签绑定(或者标签请求)的消息中包含跳数信息,每经过一跳该值就加一。当该值达到规定的最大值时即认为出现环路,LSP建立失败。
路径向量 :在传递标签绑定(或者标签请求)的消息中记录路径信息,每经过一跳,相应的设备就检查自己的LSR ID是否在此记录中。在以下条件之一时认为出现环路,LSP建立失败:路径向量记录表中已有本LSR的记录;路径的跳数达到设置的最大值。如果记录中没有自己的LSR ID,就会将其添加到该记录中。
H) LDP 标签过滤 LDP协议在缺省的情况下,从下游邻居接收到的所有FEC的标签映射(标签-FEC绑定)都将接受;并按照水平分割的原则向各个上游邻居通告FEC的标签映射。LDP标签过滤提供了两种机制,可以有选择的接受从指定LDP下游邻居接收到的标签映射、也可以选择性地向指定LDP上游邻居通告指定地址前缀的标签映射。
标签接受控制 标签接受控制(LabelAcceptance Control)或入站标签过滤(InboundFiltering),选择性地接受指定下游设备通告过来的、指定地址前缀的标签映射。
标签通告控制 标签通告控制(LabelAdvertisement Control)或出站标签过滤(OutboundFiltering),选择性地向指定上游设备通告指定地址前缀的标签映射。
I) LDP GR 为了支持GR,在LDP会话建立过程中,LDP设备需要进行GR能力协商。假设LDP会话协商结果为支持GR,GR过程如下:
当Restarter发生重起后,启动转发状态保持定时器,保留所有MPLS转发表项,并标记为stale。Helper在检测到与Restarter之间的会话down后,将所有通过此会话学习到的FEC-Label绑定标记为stale,并将这些FEC-Label绑定保留一段时间(时间长度为对端通告来的reconnecttime和本地配置的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重起过程中,转发表项被保留,保证流量不会中断。
倒数第二跳弹出
在MPLS网络中,核心LSR根据分组上的标签进行转发;在Egress节点(出口LER)去掉分组中的标签,继续进行IP转发。实际上,在比较简单的MPLS应用中,Egress节点只需要进行IP转发,标签已经没有使用价值。这种情况下,为了减轻Egress节点的负担,提高MPLS网络对报文的处理能力,可以利用PHP(Penultimate Hop Popping,倒数第二跳弹出)特性,在倒数第二个节点处将标签弹出,Egress节点就不再进行标签操作了。
MPLS MTU
MPLS标签栈象“垫层”一样,位于二层数据帧头和数据之间。OSI第三层网络层协议的包头是在第二层帧头之上的,也就是说在封装二层帧头的时候,是将数据内容和三层包头全部作为数据封装在里面的,对于二层来说,之前的数据最大是多少,就是由MTU来决定的,所以正常情况下MTU就是第三层数据和包头的最大尺寸,这时无需分段就能传输,如果比MTU大,就得分段后传输。但是 MPLS 的标签是在二层帧头之后的,所以二层帧头将标签的大小和三层包的内容累加到一起作为数据封装的,因为三层包的所有内容正好和MTU 一样大,在此基础上加上MPLS标签的话,就肯定比额定的MTU要大,所以这时MPLS的标签数据是会被分段后传输的,如果不想被分段,就得更新MTU 的大小。(一般 MPLS 数
据包加最多两个标签,一个标签4字节,所以只要改成比正常MTU多8字节即可。)
而改MTU还必须在MPLS网络中所有设备上进行更改,除非允许分段。
MPLS对TTL的处理
MPLS的TTL处理包括IP TTL复制和ICMP响应报文返回路径这两个方面
IP TTL复制 :MPLS标签中包含一个8位的TTL域,其含义与IP头中的TTL域相同。根据RFC 3031中的描述,LSR节点在对分组压入标签时,需要将原IP分组或下层标签中的TTL值拷贝到新增加的标签的TTL域。LSR在转发标签分组时,对栈顶标签的TTL值做减一操作。标签出栈时,再将栈顶的TTL值拷贝回IP分组或下层标签。TTL除了用于防止产生路由环路外,也用于实现tracert功能: 如果在Ingress节点使能IP TTL复制功能,报文在LSP中经过的每一跳都体现为IP TTL逐跳递减,tracert的结果将反映报文实际经过的路径; 如果不在Ingress节点使能IP TTL复制功能,则报文在LSP中经过的跳数不会导致IP TTL递减,tracert的结果不包括MPLS骨干网络中每一跳,就好像Ingress路由器与Egress路由器是直连的。
ICMP响应报文 :在MPLS VPN网络中,P路由器无法对MPLS承载的VPN报文进行路由。当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的检测。
MPLS LSP Ping是用于对LSP的有效性、可达性进行检测的工具。采取方法是通过发送一个叫做MPLS Echo Request的报文,通过LSP的数据转发,到达出口后,在MPLS域的Egress,由Egress节点的控制平面确认本LSR是否为该FEC的出口,返回一个叫做MPLSEcho Reply的报文,如果发送方收到该报文,则说明这条LSP可以正确用于数据转发。
MPLS LSP Traceroute是对LSP的错误进行定位的工具。采取方法是Echo Request数据包被发送到每一个中间LSR的控制平面,以确定本LSR是否是此路径的中间节点。
技术特点
充分采用原来的IP路由,在此基础上加以改进;保证了MPLS网络路由具有灵活性的特点
采用 ATM的高效传输交换方式,抛弃了复杂的ATM信令,无缝地将IP技术的优点融合到ATM的高效硬件转发中
MPLS网络的数据传输和路由计算分开,是一种面向连接的传输技术,能够提供有效的QOS保证
MPLS不但支持多种网络层技术,而且是一种与链路层无关的技术,它同时支持X.25 帧中继 ATM PPP SDH DWDM 等 ,保证了多种网络的互连互通,使得各种不同的网络传输技术统一在同一各MPLS平台上
MPLS支持大规模层次化的网络拓扑结构,具有良好的网络扩展性
MPLS的标签合并机制支持不同数据流的合并传输
MPLS支持流量工程 COS QOS 和大规模的虚拟专用网
(1)基于MPLS的VPN 传统的VPN一般是通过GRE(Generic RoutingEncapsulation)、L2TP(Layer 2 Tunneling Protocol)、PPTP(Point to Point TunnelingProtocol)、IPSec协议等隧道协议来实现私有网络间数据流在公网上的传送。而LSP本身就是公网上的隧道,所以用MPLS来实现VPN有天然的优势。基于MPLS的VPN就是通过LSP将私有网络的不同分支联结起来,形成一个统一的网络。基于MPLS的VPN还支持对不同VPN间的互通控制。MPLS的VPN中各设备的角色:
CE(Customer Edge)是用户边缘设备,可以是路由器,也可以是交换机或主机。
PE(Provider Edge)是服务商边缘路由器,位于骨干网络。
P(Provider),是服务提供商网络中的骨干路由器,不与CE直接相连。
基于MPLS的VPN具有以下特点:
P设备只需要具备基本MPLS转发能力,可以将其配置为M-BGP的路由反射器,不维护VPN信息。
PE负责对VPN用户进行管理、建立各PE间LSP连接、同一VPN用户各分支间路由分派。
支持不同分支间IP地址复用和不同VPN间互通。
减化了寻路步骤,提高了设备性能,加快了报文转发。
(2)基于MPLS的QoS 基于MPLS的流量工程和差分服务Diff-Serv特性,在保证网络高利用率的同时,可以根据不同数据流的优先级实现差别服务,从而为语音,视频数据流提供有带宽保证的低延时、低丢包率的服务。由于全网实施流量工程的难度比较大,因此,在实际的组网方案中往往通过差分服务模型来实施QoS。Diff-Serv的基本机制是在网络边缘,根据业务的服务质量要求将该业务映射到一定的业务类别中,利用IP分组中的DS(Differentiated Service)字段(由ToS域而来)唯一的标记该类业务;然后,骨干网络中的各节点根据该字段对各种业务采取预先设定的服务策略,保证相应的服务质量。Diff-Serv对服务质量的分类和标签机制与MPLS的标签分配十分相似,事实上,基于MPLS的Diff-Serv就是通过将DS的分配与MPLS的标签分配过程结合来实现的。
实验一、MPLS基础之认识LDP
LER1配置:
LER1#conft
LER1(config)#intlo 0
LER1(config-if)#ipadd 1.1.1.1 255.255.255.255
LER1(config-if)#exit
LER1(config)#intfa0/0
LER1(config-if)#ipadd 192.168.12.1 255.255.255.0
LER1(config-if)#mplsip //在接口下开启mpls
LER1(config-if)#mplsmtu 1600 //修改MTU值
LER1(config-if)#nosh
LER1(config-if)#exit
LER1(config)#intfa0/1
LER1(config-if)#ipadd 192.168.13.1 255.255.255.0
LER1(config-if)#mplsip
LER1(config-if)#mplsmtu 1600
LER1(config-if)#nosh
LER1(config-if)#exit
LER1(config)#routerospf 1
LER1(config-router)#network0.0.0.0 255.255.255.255 area 0
LER1(config-router)#default-informationoriginate always //发布默认路由
LER1(config-router)#exit
LER1(config)#iproute 0.0.0.0 0.0.0.0 null0 //添加一个空接口的默认路由
LER1(config)#ipcef //必须全局开启CEF
LER1(config)#mplsip //全局开启mpls,可以不用输入默认开启
LER1(config)#mplsip propagate-ttl//开启MPLSTTL复制
LER1(config)#mplsldp loop-detection //开启环路保护
LER1(config)#mplsldp maxhops 30 //设置环路检测最大跳数为30
LER1(config)#mplslabel range 110 119//设置MPLS的标签范围
LER1(config)#mplsip default-route //MPLS为发布的默认路由添加标签
LER1(config)#mplsldp router-id loopback 0 force //手动强制指定ldp中的路由ID
LER1(config)#mplsldp neighbor 4.4.4.4 targeted ldp //在非直连情况下指定LER2为邻居
LER1(config)#mplsldp neighbor 4.4.4.4 password kkfloat//使用MD5验证与LER2建立邻居关系
LER1(config)#mplsldp discovery hello holdtime 10//修改LDP的holdtime间隔为10秒
LER1(config)#mplsldp discovery hello interval 2 //修改LDP发Hello的间隔为2秒
LER1(config)#mplslabel protocol ldp //指定mpls使用ldp标签分发协议
LSR2配置:
LSR2#conft
LSR2(config)#intlo 0
LSR2(config-if)#ipadd 2.2.2.2 255.255.255.255
LSR2(config-if)#exit
LSR2(config)#intfa0/0
LSR2(config-if)#ipadd 192.168.12.2 255.255.255.0
LSR2(config-if)#mpls mtu 1600
LSR2(config-if)#mplsip
LSR2(config-if)#nosh
LSR2(config-if)#exit
LSR2(config)#intfa0/1
LSR2(config-if)#ipadd 192.168.24.2 255.255.255.0
LSR2(config-if)#mplsmtu 1600
LSR2(config-if)#mplsip
LSR2(config-if)#nosh
LSR2(config-if)#exit
LSR2(config)#routerospf 1
LSR2(config-router)#net0.0.0.0 255.255.255.255 area 0
LSR2(config-router)#exit
LSR2(config)#ipcef
LSR2(config)#mplsip
LSR2(config)#mpls ldp loop-detection
LSR2(config)#mpls ldp maxhops 30
LSR2(config)#mplslabel range 200 300
LSR2(config)#mplsip default-route
LSR2(config)#mplsldp router-id loopback 0 force
LSR2(config)#mplsldp discovery hello holdtime 10
LSR2(config)#mplsldp discovery hello interval 2
LSR2(config)#mplslabel protocol ldp
LSR3配置:
LSR3#conft
LSR3(config)#intlo 0
LSR3(config-if)#ipadd 3.3.3.3 255.255.255.255
LSR3(config-if)#exit
LSR3(config)#intfa0/0
LSR3(config-if)#ipadd 192.168.13.3 255.255.255.0
LSR3(config-if)#mplsip
LSR3(config-if)#mplsmtu 1600
LSR3(config-if)#nosh
LSR3(config-if)#exit
LSR3(config)#intfa0/1
LSR3(config-if)#ipadd 192.168.34.3 255.255.255.0
LSR3(config-if)#mplsmtu 1600
LSR3(config-if)#mplsip
LSR3(config-if)#nosh
LSR3(config-if)#exit
LSR3(config)#routerospf 1
LSR3(config-router)#network0.0.0.0 255.255.255.255 area 0
LSR3(config-router)#exit
LSR3(config)#ipcef
LSR3(config)#mplsip
LSR3(config)#mpls ldp loop-detection
LSR3(config)#mpls ldp maxhops 30
LSR3(config)#mplslabel range 300 399
LSR3(config)#mplsip default-route
LSR3(config)#mplsldp router-id loopback 0 force
LSR3(config)#mplsldp discovery hello holdtime 10
LSR3(config)#mplsldp discovery hello interval 2
LSR3(config)#mplslabel protocol ldp
LER2配置:
LER2#conft
LER2(config)#intlo 0
LER2(config-if)#ipadd 4.4.4.4 255.255.255.255
LER2(config-if)#exit
LER2(config)#intfa0/0
LER2(config-if)#ipadd 192.168.24.4 255.255.255.0
LER2(config-if)#mplsmtu 1600
LER2(config-if)#mplsip
LER2(config-if)#nosh
LER2(config-if)#exit
LER2(config)#intfa0/1
LER2(config-if)#mplsmtu 1600
LER2(config-if)#ipadd 192.168.34.4 255.255.255.0
LER2(config-if)#mplsip
LER2(config-if)#exit
LER2(config)#intfa0/1
LER2(config-if)#nosh
LER2(config-if)#exit
LER2(config)#routerospf 1
LER2(config-router)#network0.0.0.0 255.255.255.255 area 0
LER2(config-router)#exit
LER2(config)#ipcef
LER2(config)#mplsip
LER2(config)#mpls ldp loop-detection
LER2(config)#mpls ldp maxhops 30
LER2(config)#mplslabel range 400 499
LER2(config)#mplsip default-route
LER2(config)#mplsldp router-id loopback 0 force
LER2(config)#mplsldp neighbor 1.1.1.1 targeted ldp
LER2(config)#mplsldp neighbor 1.1.1.1 password kkfloat
LER2(config)#mplsldp discovery hello holdtime 10
LER2(config)#mplsldp discovery hello interval 2
LER2(config)#mplslabel protocol ldp
配置完成查看状态:
LER2#shmpls ldp neighbor //查看LDP邻居信息
Peer LDP Ident: 3.3.3.3:0; Local LDP Ident4.4.4.4:0
TCP connection: 3.3.3.3.646 -4.4.4.4.23820
State: Oper; Msgs sent/rcvd: 31/32;Downstream
Up time: 00:14:41
LDP discovery sources:
FastEthernet0/1, Src IP addr:192.168.34.3
Addresses bound to peer LDP Ident:
192.168.13.3 3.3.3.3 192.168.34.3
Peer LDP Ident: 2.2.2.2:0; Local LDP Ident4.4.4.4:0
TCP connection: 2.2.2.2.646 -4.4.4.4.39557
State: Oper; Msgs sent/rcvd: 31/31;Downstream
Up time: 00:14:41
LDP discovery sources:
FastEthernet0/0, Src IP addr:192.168.24.2
Addresses bound to peer LDP Ident:
192.168.12.2 2.2.2.2 192.168.24.2
PeerLDP Ident: 1.1.1.1:0; Local LDP Ident 4.4.4.4:0
TCP connection: 1.1.1.1.646 -4.4.4.4.46138
State: Oper; Msgs sent/rcvd: 30/29;Downstream
Up time: 00:14:19
LDP discovery sources:
Targeted Hello 4.4.4.4 -> 1.1.1.1,active, passive
Addresses bound to peer LDP Ident:
1.1.1.1 192.168.12.1 192.168.13.1
LER2#shmpls forwarding-table //查看mpls LFIB 信息
Local Outgoing Prefix Bytes tag Outgoing Next Hop
tag tag or VC or Tunnel Id switched interface
400 Pop tag 3.3.3.3/32 0 Fa0/1 192.168.34.3
401 Pop tag 2.2.2.2/32 0 Fa0/0 192.168.24.2
402 Pop tag 192.168.12.0/24 0 Fa0/0 192.168.24.2
403 Pop tag 192.168.13.0/24 0 Fa0/1 192.168.34.3
404 304 1.1.1.1/32 0 Fa0/1 192.168.34.3
204 1.1.1.1/32 0 Fa0/0 192.168.24.2
405 305 0.0.0.0/0 0 Fa0/1 192.168.34.3
205 0.0.0.0/0 0 Fa0/0 192.168.24.2
LER2#shmpls ldp bindings // 查看FIB信息
tib entry: 0.0.0.0/0, rev 20
local binding: tag: 405
remote binding: tsr: 1.1.1.1:0, tag:imp-null
remote binding: tsr: 2.2.2.2:0, tag:205
remote binding: tsr: 3.3.3.3:0, tag:305
tib entry: 1.1.1.1/32, rev 16
local binding: tag: 404
remote binding: tsr: 3.3.3.3:0, tag:304
remote binding: tsr: 2.2.2.2:0, tag:204
remote binding: tsr: 1.1.1.1:0, tag:imp-null
tib entry: 2.2.2.2/32, rev 10
local binding: tag: 401
remote binding: tsr: 3.3.3.3:0, tag:301
remote binding: tsr: 2.2.2.2:0, tag:imp-null
remote binding: tsr: 1.1.1.1:0, tag:112
tib entry: 3.3.3.3/32, rev 8
local binding: tag: 400
remote binding: tsr: 3.3.3.3:0, tag:imp-null
remote binding: tsr: 2.2.2.2:0, tag:201
remote binding: tsr: 1.1.1.1:0, tag:111
tib entry: 4.4.4.4/32, rev 4
local binding: tag: imp-null
remote binding: tsr: 3.3.3.3:0, tag:300
remote binding: tsr: 2.2.2.2:0, tag:200
remote binding: tsr: 1.1.1.1:0, tag:110
tib entry: 192.168.12.0/24, rev 12
local binding: tag: 402
remote binding: tsr: 3.3.3.3:0, tag:303
remote binding: tsr: 2.2.2.2:0, tag:imp-null
remote binding: tsr: 1.1.1.1:0, tag:imp-null
tib entry: 192.168.13.0/24, rev 14
local binding: tag: 403
remote binding: tsr: 3.3.3.3:0, tag:imp-null
remote binding: tsr: 2.2.2.2:0, tag:203
remote binding: tsr: 1.1.1.1:0, tag:imp-null
tib entry: 192.168.24.0/24, rev 5
local binding: tag: imp-null
remote binding: tsr: 3.3.3.3:0, tag:302
remote binding: tsr: 2.2.2.2:0, tag:imp-null
remote binding: tsr: 1.1.1.1:0, tag:113
tib entry: 192.168.34.0/24, rev 6
local binding: tag: imp-null
remote binding: tsr: 3.3.3.3:0, tag:imp-null
remote binding: tsr: 2.2.2.2:0, tag:202
remote binding: tsr: 1.1.1.1:0, tag:114
LER2#traceroute1.1.1.1 source 4.4.4.4 //追踪路由
Typeescape sequence to abort.
Tracingthe route to 1.1.1.1
1 192.168.34.3 [MPLS: Label 304 Exp 0] 72msec
192.168.24.2 [MPLS: Label 204 Exp 0] 96msec
192.168.34.3 [MPLS: Label 304 Exp 0] 56msec
2 192.168.12.1 76 msec
192.168.13.1 36 msec
192.168.12.1 72 msec
实验二、MPLS基础之标签过滤
LER1配置:
LER1#conft
LER1(config)#intlo 0
LER1(config-if)#ipadd 1.1.1.1 255.255.255.255
LER1(config-if)#exit
LER1(config)#intfa0/0
LER1(config-if)#ipadd 192.168.12.1 255.255.255.0
LER1(config-if)#mplsip
LER1(config-if)#nosh
LER1(config-if)#exit
LER1(config)#routerospf 1
LER1(config-router)#net0.0.0.0 255.255.255.255 area 0
LER1(config-router)#exit
LER1(config)#access-list1 deny 192.168.12.0
LER1(config)#access-list1 deny 192.168.23.0
LER1(config)#access-list1 deny 2.2.2.2
LER1(config)#access-list1 permit any
LER1(config)#ipcef
LER1(config)#mplsip
LER1(config)#mplslabel range 100 120//设置MPLS标签范围
LER1(config)#mplslabel protocol ldp //设置mpls标签分发协议ldp
LER1(config)#nompls ldp advertise-labels//清除所有通告的Tag标签
LER1(config)#mplsldp advertise-labels for 1//将ACL应用于标签通告达到过滤效果
LSR配置:
LSR#conf t
LSR(config)#intlo 0
LSR(config-if)#ipadd 2.2.2.2 255.255.255.255
LSR(config-if)#exit
LSR(config)#intfa0/0
LSR(config-if)#ipadd 192.168.12.2 255.255.255.0
LSR(config-if)#mplsip
LSR(config-if)#nosh
LSR(config-if)#exit
LSR(config)#intfa0/0
LSR(config-if)#ipadd 192.168.23.2 255.255.255.0
LSR(config-if)#mplsip
LSR(config-if)#nosh
LSR(config-if)#exit
LSR(config)#intfa0/0
LSR(config-if)#ipadd 192.168.12.2 255.255.255.0
LSR(config-if)#exit
LSR(config)#intfa0/1
LSR(config-if)#ipadd 192.168.23.2 255.255.255.0
LSR(config-if)#mplsip
LSR(config-if)#nosh
LSR(config-if)#exit
LSR(config)#routerospf 1
LSR(config-router)#net0.0.0.0 255.255.255.255 area 0
LSR(config-router)#exit
LSR(config)#access-list1 deny 192.168.12.0
LSR(config)#access-list1 deny 192.168.23.0
LSR(config)#access-list1 deny 2.2.2.2
LSR(config)#access-list1 permit any
LSR(config)#ipcef
LSR(config)#mplsip
LSR(config)#mplslabel range 200 210
LSR(config)#mplslabel protocol ldp
LSR(config)#nompls ldp advertise-labels
LSR(config)#mplsldp advertise-labels for 1
LSR2配置:
LER3#conft
LER3(config)#intlo 0
LER3(config-if)#ipadd 3.3.3.3 255.255.255.255
LER3(config-if)#exit
LER3(config)#intfa0/0
LER3(config-if)#ipadd 192.168.23.3 255.255.255.0
LER3(config-if)#mplsip
LER3(config-if)#nosh
LER3(config-if)#exit
LER3(config)#routerospf 1
LER3(config-router)#net0.0.0.0 255.255.255.255 area 0
LER3(config-router)#exit
LER3(config)#access-list1 deny 192.168.12.0
LER3(config)#access-list1 deny 192.168.23.0
LER3(config)#access-list1 deny 2.2.2.2
LER3(config)#access-list1 permit any
LER3(config)#ipcef
LER3(config)#mplsip
LER3(config)#mplslabel range 300 310
LER3(config)#mplslabel protocol ldp
LER3(config)#nompls ldp advertise-labels
LER3(config)#mplsldp advertise-labels for 1
配置完成观察效果:
LER1#sh ipcef 3.3.3.3 //转发信息库,这是开启CEF后形成的一个表,这个表结合了路由表,ARP表,它使得数据包转发的时候不需要再查询路由表,不再需要递归路由查询,直接根据FIB转发即可
3.3.3.3/32,version 9, epoch 0, cached adjacency 192.168.12.2
0 packets,0 bytes
tag information set
local tag: 100
fast tag rewrite with Fa0/0, 192.168.12.2,tags imposed: {200}
via 192.168.12.2, FastEthernet0/0, 0dependencies
next hop 192.168.12.2, FastEthernet0/0
valid cached adjacency
tag rewrite with Fa0/0, 192.168.12.2, tags imposed: {200}
LER1#shmpls forwarding-table //查看(LFIB)标签转发信息库,只在执行标签交换时被查询
Local Outgoing Prefix Bytes tag Outgoing Next Hop
tag tag or VC or Tunnel Id switched interface
100 200 3.3.3.3/32 0 Fa0/0 192.168.12.2
101 Untagged 2.2.2.2/32 0 Fa0/0 192.168.12.2
102 Untagged 192.168.23.0/24 0 Fa0/0 192.168.12.2
LER1#shmpls ldp bindings // LIB标签信息库,这张表里面保存了FEC对应的所有标签信息
tib entry: 1.1.1.1/32, rev 4
local binding: tag: imp-null
remote binding: tsr: 2.2.2.2:0, tag:201
tib entry: 2.2.2.2/32, rev 8
local binding: tag: 101
tib entry: 3.3.3.3/32, rev 6
local binding: tag: 100
remote binding: tsr: 2.2.2.2:0, tag:200
tib entry: 192.168.12.0/24, rev 3
local binding: tag: imp-null
tib entry: 192.168.23.0/24, rev 10
local binding: tag: 102
LER1#traceroute3.3.3.3 source 1.1.1.1//追踪路由
Typeescape sequence to abort.
Tracingthe route to 3.3.3.3
1 192.168.12.2 [MPLS: Label 200 Exp 0] 80msec 76 msec 40 msec
2 192.168.23.3 68 msec 40 msec 68 msec
实验三、MPLS之帧模式(Frame Mode)
R1配置:
R1#conf t
R1(config)#intlo 0
R1(config-if)#ipadd 1.1.1.1 255.255.255.255
R1(config-if)#exit
R1(config)#intfa0/0
R1(config-if)#ipadd 192.168.12.1 255.255.255.0
R1(config-if)#mplsip
R1(config-if)#nosh
R1(config-if)#exit
R1(config)#routerospf 1
R1(config-router)#net0.0.0.0 255.255.255.255 area 0
R1(config-router)#exit
R1(config)#ipcef
R1(config)#mplslabel protocol ldp
R2配置:
R2#conf t
R2(config)#intlo 0
R2(config-if)#ipadd 2.2.2.2 255.255.255.255
R2(config-if)#exit
R2(config)#intfa0/0
R2(config-if)#ipadd 192.168.12.2 255.255.255.0
R2(config-if)#mplsip
R2(config-if)#nosh
R2(config-if)#exit
R2(config)#intfa0/1
R2(config-if)#ipadd 192.168.23.2 255.255.255.0
R2(config-if)#mplsip
R2(config-if)#nosh
R2(config-if)#exit
R2(config)#routeros
R2(config)#routerospf 1
R2(config-router)#net0.0.0.0 255.255.255.255 area 0
R2(config-router)#exit
R2(config)#ipcef
R2(config)#mplsip
R2(config)#mplslabel protocol ldp
R3配置:
R3#conf t
R3(config)#intlo 0
R3(config-if)#ipadd 3.3.3.
R3(config-if)#ipadd 3.3.3.3 255.255.255.255
R3(config-if)#exit
R3(config)#intfa0/0
R3(config-if)#ipadd 192.168.23.3 255.255.255.0
R3(config-if)#mplsip
R3(config-if)#nosh
R3(config-if)#exit
R3(config)#routerospf 1
R3(config-router)#net0.0.0.0 255.255.255.255 area 0
R3(config-router)#exit
R3(config)#ipcef
R3(config)#mplsip
R3(config)#mplslabel protocol ldp
配置完成,测试网络,并查看MPLS表项:
R1#traceroute3.3.3.3 source loopback 0
Typeescape sequence to abort.
Tracing theroute to 3.3.3.3
1 192.168.12.2 [MPLS: Label 17 Exp 0] 92 msec120 msec 64 msec
2 192.168.23.3 68 msec 76 msec 56 msec
R1#sh mplsforwarding-table
Local Outgoing Prefix Bytes tag Outgoing Next Hop
tag tag or VC or Tunnel Id switched interface
16 Pop tag 2.2.2.2/32 0 Fa0/0 192.168.12.2
17 Pop tag 192.168.23.0/24 0 Fa0/0 192.168.12.2
18 17 3.3.3.3/32 0 Fa0/0 192.168.12.2
R1#sh mplsldp bindings
tib entry: 1.1.1.1/32, rev 4
local binding: tag: imp-null
remote binding: tsr: 2.2.2.2:0, tag: 16
tib entry: 2.2.2.2/32, rev 6
local binding: tag: 16
remote binding: tsr: 2.2.2.2:0, tag:imp-null
tib entry: 3.3.3.3/32, rev 10
local binding: tag: 18
remote binding: tsr: 2.2.2.2:0, tag: 17
tib entry: 192.168.12.0/24, rev 3
local binding: tag: imp-null
remote binding: tsr: 2.2.2.2:0, tag:imp-null
tib entry: 192.168.23.0/24, rev 8
local binding: tag: 17
remote binding: tsr: 2.2.2.2:0, tag:imp-null
R3#sh mplsldp bindings
tib entry: 1.1.1.1/32, rev 8
local binding: tag: 17
remote binding: tsr: 2.2.2.2:0, tag: 16
tib entry: 2.2.2.2/32, rev 6
local binding: tag: 16
remote binding: tsr: 2.2.2.2:0, tag:imp-null
tib entry: 3.3.3.3/32, rev 2
local binding: tag: imp-null
remote binding: tsr: 2.2.2.2:0, tag: 17
tib entry: 192.168.12.0/24, rev 10
local binding: tag: 18
remote binding: tsr: 2.2.2.2:0, tag:imp-null
tib entry: 192.168.23.0/24, rev 4
local binding: tag: imp-null
remote binding: tsr: 2.2.2.2:0, tag:imp-null
R3#sh mplsforwarding-table
Local Outgoing Prefix Bytes tag Outgoing Next Hop
tag tag or VC or Tunnel Id switched interface
16 Pop tag 2.2.2.2/32 0 Fa0/0 192.168.23.2
17 16 1.1.1.1/32 0 Fa0/0 192.168.23.2
18 Pop tag 192.168.12.0/24 0 Fa0/0 192.168.23.2
结论:
帧模式的标签分配原则是:independantcontrol独立控制,即不管是否能收到邻居传递过来的标签,都会对本地前缀分配标签;
帧模式的标签分发原则是:下游自主,即不管你有没有用到我发给你的标签,只要建立了邻居关系,我都会把我本地的标签发给你。这里的上下游是指数据转发的上下游。
帧模式的标签保留原则是:自由,即谁分配的标签谁保留。
帧模式的标签保存:将邻居传递过来的标签保存在LFIB里面,同时保存在FIB里面
实验四、MPLS AtoM 之一 Pseudowire Ethernet over MPLS(EoMPLS/L2VPN)
CE1配置:
CE1#conf t
CE1(config)#intfa0/0
CE1(config-if)#ipadd 192.168.0.10 255.255.255.0
CE1(config-if)#nosh
CE1(config-if)#exit
CE2配置:
CE2#conf t
CE2(config)#intfa0/0
CE2(config-if)#ipadd 192.168.0.11 255.255.255.0
CE2(config-if)#nosh
CE2(config-if)#exit
PE1配置:
PE1#conf t
PE1(config)#intlo 0
PE1(config-if)#ipadd 1.1.1.1 255.255.255.255
PE1(config-if)#exit
PE1(config)#intfa0/0
PE1(config-if)#noip address
PE1(config-if)#xconnect3.3.3.3 100 encapsulation mpls
PE1(config-if-xconn)#exit
PE1(config-if)#nosh
PE1(config)#intfa0/1
PE1(config-if)#ipadd 192.168.12.1 255.255.255.0
PE1(config-if)#mplsip
PE1(config-if)#nosh
PE1(config-if)#exit
PE1(config)#routerospf 1
PE1(config-router)#net0.0.0.0 255.255.255.255 area 0
PE1(config-router)#passive-interfacefastEthernet 0/0
PE1(config-router)#exit
PE1(config)#ipcef
PE1(config)#mplsip
PE1(config)#mplslabel protocol ldp
P配置:
P#conf t
P(config)#intlo 0
P(config-if)#ipadd 2.2.2.2 255.255.255.255
P(config-if)#exit
P(config)#intfa0/0
P(config-if)#ipadd 192.168.12.2 255.255.255.0
P(config-if)#mplsip
P(config-if)#nosh
P(config-if)#exit
P(config)#interfacefa0/1
P(config-if)#ipadd 192.168.23.2 255.255.255.0
P(config-if)#mplsip
P(config-if)#nosh
P(config-if)#exit
P(config)#routerospf 1
P(config-router)#net0.0.0.0 255.255.255.255 area 0
P(config-router)#exit
P(config)#ipcef
P(config)#mplsip
P(config)#mplslabel pro ldp
PE2配置:
PE2#conf t
PE2(config)#intlo 0
PE2(config-if)#ipadd 3.3.3.3 255.255.255.255
PE2(config-if)#exit
PE2(config)#intfa0/0
PE2(config-if)#noip address
PE2(config-if)#xconnect1.1.1.1 100 encapsulation mpls
PE2(config-if-xconn)#exit
PE2(config-if)#nosh
PE2(config)#intfa0/1
PE2(config-if)#ipadd 192.168.23.3 255.255.255.0
PE2(config-if)#mplsip
PE2(config-if)#nosh
PE2(config-if)#exit
PE2(config)#routerospf 1
PE2(config-router)#net0.0.0.0 255.255.255.255 area 0
PE2(config-router)#passive-interfacefastEthernet 0/0
PE2(config-router)#exit
PE2(config)#ipcef
PE2(config)#mplsip
PE2(config)#mplslabel protocol ldp
配置完成,检查网络
PE1#sh iprou ospf
2.0.0.0/32 is subnetted, 1 subnets
O 2.2.2.2 [110/11] via 192.168.12.2,00:07:35, FastEthernet0/1
3.0.0.0/32 is subnetted, 1 subnets
O 3.3.3.3 [110/21] via 192.168.12.2,00:07:35, FastEthernet0/1
O 192.168.23.0/24 [110/20] via 192.168.12.2,00:07:35, FastEthernet0/1
CE1#traceroute192.168.0.11
Typeescape sequence to abort.
Tracingthe route to 192.168.0.11
1192.168.0.11 156 msec 108 msec 88 msec
PE1#shmpls l2transport vc detail
Localinterface: Fa0/0 up, line protocol up, Ethernet up
Destination address: 3.3.3.3, VC ID: 100, VCstatus: up
Next hop: 192.168.12.2
Output interface: Fa0/1, imposed labelstack {18 19}
Create time: 00:04:21, last status changetime: 00:04:15
Signaling protocol: LDP, peer 3.3.3.3:0 up
MPLS VC labels: local 19, remote 19
Group ID: local 0, remote 0
MTU: local 1500, remote 1500
Remote interface description:
Sequencing: receive disabled, send disabled
VC statistics:
packet totals: receive 38, send 38
byte totals: receive 3998, send 3985
packet drops: receive 0, seq error 0, send 0
PE1#shmpls forwarding-table
Local Outgoing Prefix Bytes tag Outgoing Next Hop
tag tag or VC or Tunnel Id switched interface
16 Pop tag 2.2.2.2/32 0 Fa0/1 192.168.12.2
17 Pop tag 192.168.23.0/24 0 Fa0/1 192.168.12.2
18 18 3.3.3.3/32 0 Fa0/1 192.168.12.2
19 l2ckt(100) 5466 none point2point
实验五、MPLSAtoM 之二Pseudowire Frame-Relay over MPLS (FoMPLS/L2VPN)
CE1配置:
CE1#conf t
CE1(config)#frame-relay switching
CE1(config)#int s1/0
CE1(config-if)#clock rate 64000
CE1(config-if)#encapsulation frame-relay
CE1(config-if)#frame-relay intf-type DTE
CE1(config-if)#frame-relayinterface-dlci 102
CE1(config-fr-dlci)#exit
CE1(config-if)#ip add 12.12.12.1255.255.255.0
CE1(config-if)#no sh
CE1(config-if)#exit
CE2配置:
CE2#conf t
CE2(config)#frame-relay switching
CE2(config)#int s1/0
CE2(config-if)#clock rate 64000
CE2(config-if)#encapsulation frame-relay
CE2(config-if)#frame-relay intf-type DTE
CE2(config-if)#frame-relayinterface-dlci 201
CE2(config-fr-dlci)#exit
CE2(config-if)#ip add 12.12.12.2255.255.255.0
CE2(config-if)#no sh
CE2(config-if)#exit
PE1配置:
PE1#conf t
PE1(config)#int lo 0
PE1(config-if)#ip add 1.1.1.1255.255.255.255
PE1(config-if)#exit
PE1(config)#int fa0/0
PE1(config-if)#ip add 192.168.12.1255.255.255.0
PE1(config-if)#mpls ip
PE1(config-if)#no sh
PE1(config-if)#exit
PE1(config-if)#exit
PE1(config)#fram
PE1(config)#frame-relay switching
PE1(config)#int s1/0
PE1(config-if)#clock rate 64000
PE1(config-if)#encapsulation frame-relay
PE1(config-if)#frame-relay intf-type dce
PE1(config-if)#no shutdown
PE1(config-if)#exit
PE1(config)#router ospf 1
PE1(config-router)#net 0.0.0.0255.255.255.255 area 0
PE1(config-router)#passive-interfaces1/0
PE1(config-router)#exit
PE1(config)#connect PE1-PE2 serial 1/0102 l2transport
PE1(config-fr-pw-switching)#xconnect3.3.3.3 12 encapsulation mpls
PE1(config-xconn)#exit
PE1(config-fr-pw-switching)#exit
PE1(config)#ip cef
PE1(config)#mpls ip
PE1(config)#mpls label protocol ldp
P配置:
P#conf t
P(config)#int lo 0
P(config-if)#ip add 2.2.2.2255.255.255.255
P(config-if)#exit
P(config)#int fa0/0
P(config-if)#ip add 192.168.12.2255.255.255.0
P(config-if)#mpls ip
P(config-if)#no sh
P(config-if)#exit
P(config)#int fa0/1
P(config-if)#ip add 192.168.23.2255.255.255.0
P(config-if)#mpls ip
P(config-if)#no sh
P(config-if)#exit
P(config)#router ospf 1
P(config-router)#net 0.0.0.0255.255.255.255 area 0
P(config-router)#exit
P(config)#ip cef
P(config)#mpls ip
P(config)#mpls label protocol ldp
PE2配置:
PE2#conf t
PE2(config)#frame-relay switching
PE2(config)#int lo 0
PE2(config-if)#ip add 3.3.3.3 255.255.255.255
PE2(config-if)#exit
PE2(config)#int fa0/1
PE2(config-if)#ip add 192.168.23.3255.255.255.0
PE2(config-if)#mpls ip
PE2(config-if)#no sh
PE2(config-if)#exit
PE2(config)#router ospf 1
PE2(config-router)#net 0.0.0.0255.255.255.255 area 0
PE2(config-router)#passive-interfaces1/0
PE2(config-router)#exit
PE2(config)#int s1/0
PE2(config-if)#clock rate 64000
PE2(config-if)#encapsulation frame-relay
PE2(config-if)#frame-relay intf-type dce
PE2(config-if)#no sh
PE2(config-if)#exit
PE2(config)#connect PE2-PE1 serial 1/0201 l2transport
PE2(config-fr-pw-switching)#xconnect1.1.1.1 12 encapsulation mpls
PE2(config-xconn)#exit
PE2(config-fr-pw-switching)#exit
PE2(config)#ip cef
PE2(config)#mpls ip
PE2(config)#mpls label protocol ldp
完成配置,检查状态:
CE1#traceroute 12.12.12.2
Type escape sequence to abort.
Tracing the route to 12.12.12.2
1 12.12.12.2 152 msec 128 msec 120 msec
CE1#sh frame-relay map
Serial1/0 (up): ip 12.12.12.2 dlci102(0x66,0x1860), dynamic,
broadcast,
CISCO, status defined, active
CE1#sh frame-relay pvc
PVC Statistics for interface Serial1/0(Frame Relay DTE)
Active Inactive Deleted Static
Local 1 0 0 0
Switched 0 0 0 0
Unused 0 0 0 0
DLCI = 102, DLCI USAGE = LOCAL, PVCSTATUS = ACTIVE, INTERFACE = Serial1/0
input pkts 4 outputpkts 4 in bytes 214
out bytes 130 droppedpkts 0 in pkts dropped 0
out pkts dropped 0 out bytes dropped 0
in FECN pkts 0 in BECNpkts 0 out FECN pkts 0
out BECN pkts 0 in DEpkts 0 out DE pkts 0
out bcast pkts 1 out bcastbytes 34
5 minute input rate 0 bits/sec, 0 packets/sec
5 minute output rate 0 bits/sec, 0 packets/sec
pvc create time 00:59:02, last time pvc status changed 00:01:05
PE1#sh mpls l2transport vc detail
Local interface: Se1/0 up, line protocolup, FR DLCI 102 up
Destination address: 3.3.3.3, VC ID: 12, VC status: up
Next hop: 192.168.12.2
Output interface: Fa0/0, imposed label stack {17 19}
Create time: 00:48:54, last status change time: 00:08:33
Signaling protocol: LDP, peer 3.3.3.3:0 up
MPLS VC labels: local 19, remote 19
Group ID: local 0, remote 0
MTU: local 1500, remote 1500
Remote interface description:
Sequencing: receive disabled, send disabled
VC statistics:
packet totals: receive 4, send 4
byte totals: receive 238, send154
packet drops: receive 0, seqerror 0, send 0
PE1#sh mpls forwarding-table
Local Outgoing Prefix Bytes tag Outgoing Next Hop
tag tag or VC or Tunnel Id switched interface
16 Pop tag 2.2.2.2/32 0 Fa0/0 192.168.12.2
17 Pop tag 192.168.23.0/24 0 Fa0/0 192.168.12.2
18 17 3.3.3.3/32 0 Fa0/0 192.168.12.2
19 l2ckt(12) 238 none point2point
小结:
实验四和实验五的AToM是建设在MPLS网络的基础设施之上,在两个路由器的一对端口之间提供高速的二层透传。这种技术可以提供二层VPN(MPLS L2VPN)用来解决端到端的问题,也可以用来实现传统网络的升级。AToM主要组成部分包括:PE路由器、标记分发协议(LDP)和MPLS标记交换隧道(LSPTunnel)。
PE路由器拥有并维护与其直接相连的二层透传的链路信息。PE路由器负责将VPN客户的普通数据包打上标记和去除标记,因此PE路由器必须是一个边缘标记交换路由器。
在两个PE路由器之间实现二层透传的两个端口必须是相同的类型,例如以太网、VLAN、ATMVC、帧中继VC、HDLC或PPP。每一对这样的端口用一个唯一的虚拟链路标志(VCID)来表示。
在两个PE路由器之间要定义穿过MPLS网络的LSP隧道,LSP隧道提供了隧道标记(TunnelLabel),在两个PE路由器之间透传数据。同时在两个PE路由器之间还要定义直接的标记分发协议进程,用来传递虚拟链路的信息,其中最关键的是通过匹配VCID来分发虚拟链路标记(VCLabel)。
当二层透传的端口有数据包进入PE路由器时,PE路由器通过匹配VCID找到与之对应的隧道标记和虚拟链路标记。PE路由器会将此数据包打上两层标记,其中外层标记为隧道标记,指示从该PE路由器到目的PE路由器的路径;内层标记为虚拟链路标记,指示在目的PE路由器上属于哪个VCID对应的路由器端口。注意,PE路由器要监视各自端口上的二层协议状态,如帧中继的LMI或ATM的ILMI。当出现故障时,通过标记分发协议进程来取消虚拟链路标记,从而断开此二层透传,避免产生单向无用数据流。
这种基于MPLS的二层透传方式,改变了传统的二层链路必须通过交换网络实现的限制,它从根本上形成了“一个网多种业务”的业务模式,让运营商可以在一个MPLS网络中同时提供二层业务和三层业务。基于二层透传技术的是二层VPN。现在,二层VPN的各项标准正处于IETF起草阶段,主要包括针对点到点服务的虚拟私用线路服务(VPWS)和针对多点服务的虚拟私用局域网服务(VPLS)。这两种二层VPN都采用以AToM为基础的数据层面,在控制层面上增加自动发现和自动配置等多种功能,相对于MPLS L3VPN,MPLS L2VPN具有以下优点:
可扩展性强:MPLS L2VPN只建立二层连接关系,不引入和管理用户的路由信息。这大大减轻了PE(Provider Edge,服务提供商边缘设备)甚至整个SP(Service Provider,服务提供商)网络的负担,使服务提供商能支持更多的VPN和接入更多的用户。
可靠性和私网路由的安全性得到保证:由于不引入用户的路由信息,MPLS L2VPN不能获得和处理用户路由,保证了用户VPN路由的安全。
支持多种网络层协议:包括IP、IPX、SNA等。
实验六、MPLS L3VPN之认识VRF Routing
在基于IP的计算机网络中,虚拟路由和转发(VRF)是一种技术,同时被称为VPN路由转发表,它允许在同一台路由器上同时并存多个路由表的实例。这增加了网络路径分段的功能,而无需使用多个设备。因为流量是自动隔离,VRF也增加了网络的安全性,并且可以不再需要加密和认证。互联网服务提供商(ISP)通常采取的VRF的优势,创建单独的虚拟专用网络(VPN)客户;因而该技术也被称为VPN路由和转发。因为路由实例是独立的,相同的或重叠的IP地址可以被使用而不互相冲突。 VRF每一个路由实例拥有不同的路由表[来源请求]被称为转发信息库(FIB),它相当于一台网络设备。换句话说,在同一网络设备上可以配置多个不同的虚拟路由器实例,其中每一个实例都有其自身的FIB库,并且每个虚拟路由器实例间独立不可互相访问。此时每个路由器维护一个或多个VRF,并且同时维护一个公网的路由表(也叫全局路由表)。每一个VRF可以看作一台虚拟的路由器,该虚拟路由器包括如下元素:
一张独立的路由表/转发表,当然也包括了独立的地址空间。
一组归属于这个VRF的接口集合。
一组只用于本VRF的路由协议。
CE1配置:
CE1#conf t
CE1(config)#int fa0/0
CE1(config-if)#ip add 192.168.1.2255.255.255.0
CE1(config-if)#no sh
CE1(config-if)#exit
CE1(config)#ip route 0.0.0.0 0.0.0.0192.168.1.1
CE2配置:
CE2#conf t
CE2(config)#int fa0/0
CE2(config-if)#ip add 192.168.1.2255.255.255.0
CE2(config-if)#no sh
CE2(config-if)#exit
CE2(config)#ip route 0.0.0.0 0.0.0.0192.168.1.1
PE配置:
PE#conf t
PE(config)#ip vrf CE1//创建虚拟路由转发表CE1
PE(config-vrf)#exit
PE(config)#ip vrf CE2//创建虚拟路由转发表CE2
PE(config-vrf)#exit
PE(config)#int fa0/0
PE(config-if)#ip vrf forwarding CE1 //把接口添加到对应虚拟路由转发表
PE(config-if)#ip add 192.168.1.1255.255.255.0
PE(config-if)#no sh
PE(config-if)#exit
PE(config)#int fa0/1
PE(config-if)#ip vrf forwarding CE2//把接口添加到对应虚拟路由转发表
PE(config-if)#ip add 192.168.1.1255.255.255.0
PE(config-if)#no sh
PE(config-if)#exit
PE(config)#int fa1/0
PE(config-if)#ip vrf forwarding CE1 //
PE(config-if)#ip add 100.100.100.1255.255.255.0
PE(config-if)#no sh
PE(config-if)#exit
PE(config)#int fa2/0
PE(config-if)#ip vrf forwarding CE2
PE(config-if)#ip add 200.200.200.1255.255.255.0
PE(config-if)#no sh
PE(config-if)#exit
PE(config)#
PE(config)#router ospf 1 vrf CE1 //在CE1虚拟路由表中开启OSPF路由协议
PE(config-router)#net 0.0.0.0 255.255.255.255 area 0
PE(config-router)#passive-interfacefa0/0
PE(config-router)#exit
PE(config)#router ospf 2 vrf CE2 //在CE2虚拟路由表中开启OSPF路由协议
PE(config-router)#net 0.0.0.0255.255.255.255 area 0
PE(config-router)#passive-interfacefa0/1
PE(config-router)#exit
ISP1配置:
ISP1#conf t
ISP1(config)#int fa0/0
ISP1(config-if)#ip add 100.100.100.2255.255.255.0
ISP1(config-if)#no sh
ISP1(config-if)#exit
ISP1(config)#router ospf 1
ISP1(config-router)#exit
ISP1(config)#int lo0
ISP1(config-if)#ip add 1.1.1.1255.255.255.255
ISP1(config-if)#exit
ISP1(config)#router ospf 1
ISP1(config-router)#net 0.0.0.0255.255.255.255 area 0
ISP1(config-router)#exit
PE(config)#iproute vrf CE1 0.0.0.0 0.0.0.0 100.100.100.2
PE(config)#iproute vrf CE2 0.0.0.0 0.0.0.0 200.200.200.2
ISP2配置:
ISP2#conf t
ISP2(config)#intfa0/0
ISP2(config-if)#ipadd 200.200.200.2 255.255.255.0
ISP2(config-if)#nosh
ISP2(config-if)#exit
ISP2(config)#intlo 0
ISP2(config-if)#ipadd 2.2.2.2 255.255.255.0
ISP2(config-if)#exit
ISP2(config)#routerospf 1
ISP2(config-router)#net0.0.0.0 255.255.255.255 area 0
ISP2(config-router)#exit
ISP2(config)#
配置完成,检查测试:
CE1#ping 192.168.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to192.168.1.1, timeout is 2 seconds:
.!!!!
Success rate is 80 percent (4/5),round-trip min/avg/max = 20/37/76 ms
CE2#ping 192.168.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to192.168.1.1, timeout is 2 seconds:
.!!!!
Success rate is 80 percent (4/5),round-trip min/avg/max = 20/35/64 ms
PE#sh ip rou //全局路由表为空
Codes: C - connected, S - static, R -RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route
Gateway of last resort is not set
PE#sh ip rou vrf CE1 //查看CE1虚拟路由表
Routing Table: CE1
Codes: C - connected, S - static, R -RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route
Gateway of last resort is not set
1.0.0.0/32 is subnetted, 1 subnets
O 1.1.1.1 [110/2] via 100.100.100.2, 00:02:45, FastEthernet1/0
100.0.0.0/24 is subnetted, 1 subnets
C 100.100.100.0 is directly connected, FastEthernet1/0
C 192.168.1.0/24 is directly connected, FastEthernet0/0
S* 0.0.0.0/0 [1/0] via 100.100.100.2
PE#sh ip rou vrf CE2//查看CE2虚拟路由表
Routing Table: CE2
Codes: C - connected, S - static, R -RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloadedstatic route
Gateway of last resort is not set
C 200.200.200.0/24 is directly connected, FastEthernet2/0
2.0.0.0/32 is subnetted, 1 subnets
O 2.2.2.2 [110/2] via 200.200.200.2, 00:02:39, FastEthernet2/0
C 192.168.1.0/24 is directly connected, FastEthernet0/1
S* 0.0.0.0/0 [1/0] via 200.200.200.2
实验七、MPLSVPN(L3VPN)基本配置PE-CE运行RIP
VRF通常与MPLS VPN相联系 ,因为MPLSVPN的就是利用VRF实现路由隔离和信息隔离,在这样的网络中,MPLS封装被用来分割用户流量,每个用户维护一个独立的VRF。在VRF中有两个重要属性:
RD(Route Distinguisher)是说明路由属于哪个VPN的标志。理论上可以为每个VRF配置一个RD,通常建议为每个VPN的VRF都配置相同的RD,并且要保证这个RD全球唯一。如果两个VRF中存在相同的地址,但是由于RD不同,这两个路由在PE间发布过程中也不会混淆,因为MP BGP把RD和路由一起发送,对端PE可以根据RD确定路由所属的VPN,从而把路由安装到正确的VRF中。RD并不会影响不同VRF之间的路由选择以及VPN的形成,这些事情由RT搞定。PE从CE接收的标准的路由是IPv4路由,如果需要发布给其他的PE路由器,此时需要为这条路由附加一个RD。在IPv4地址加上RD之后,就变成VPN-IPv4地址族了。VPN-IPv4地址仅用于服务供应商网络内部。在PE发布路由时添加,在PE接收路由后放在本地路由表中,用来与后来接收到的路由进行比较。CE不知道使用的是VPN-IPv4地址。 RD具有全局唯一性,通过将8byte的RD作为IPv4地址前缀的扩展,使不唯一的IPv4地址转化为唯一的VPNv4地址
RT(RouteTargets),RT的本质是每个VRF表达自己的路由取舍及喜好的方式,主要用于控制VPN路由的发布和安装策略。在路由器中存在全局路由表、vrf 等,从全局路由表选择路由到vrf称为export导出;从vrf 中选择路由到全局路由表称为import。当从全局路由表中导出路由到vrf 时,要用Export RT对VPN路由进行标记;在往全局路由导入VPNv4 路由时,只有所带RT 标记与VRF表中任意一个Import RT相符的路由才会被导入到全局路由表中。RT使得PE路由器只包含和其直接相连的VPN的路由,而不是全网所有ipvpnv4 的路由,从而节省了PE路由器的资 源,提高了网络拓展性。在一个VRF中,在发布路由时使用RT 的export 规则。直接发送给其他的PE设备。在接收端的PE上,接收所有的路由,并根据每个VRF 配置的RT 的import 规则进行检查,如果与路由中的RT属性match,则将该路由加入到相应的VRF。Export Target: 我这个VRF 发出的路由打上什么标记;Import Target:我这个VRF 接受什么标记的路由。RT使用了BGP中扩展团体属性,用于路由信息的分发,具有全局惟一性,同一个RT只能被一个 VPN使用。注意:当本地Import RT与收到的exportRT一致时VRF才安装此路由
CE1配置:
CE1#conf t
CE1(config)#int lo 0
CE1(config-if)#ip add 1.1.1.1255.255.255.255
CE1(config-if)#exit
CE1(config)#int fa0/0
CE1(config-if)#ip add 192.168.11.1255.255.255.0
CE1(config-if)#no sh
CE1(config-if)#exit
CE1(config)#router rip
CE1(config-router)#version 2
CE1(config-router)#no auto-summary
CE1(config-router)#net 0.0.0.0
CE1(config-router)#exit
PE1配置:
PE1#conf t
PE1(config)#ip cef
PE1(config)#mpls ip
PE1(config)#mpls ldp router-id loopback0
PE1(config)#mpls label protocol ldp
PE1(config)#ip vrf vpn1
PE1(config-vrf)#rd 100:1
PE1(config-vrf)#route-target both 1:100
PE1(config-vrf)#exit
PE1(config)#int lo 0
PE1(config-if)#ip add 2.2.2.2255.255.255.255
PE1(config-if)#exit
PE1(config)#int fa0/0
PE1(config-if)#ip vrf forwarding vpn1
PE1(config-if)#ip add 192.168.11.2255.255.255.0
PE1(config-if)#no sh
PE1(config-if)#exit
PE1(config)#int fa0/1
PE1(config-if)#mpls ip
PE1(config-if)#ip add 192.168.12.2255.255.255.0
PE1(config-if)#no sh
PE1(config-if)#exit
PE1(config)#router ospf 1
PE1(config-router)#net 0.0.0.0255.255.255.255 area 0
PE1(config-router)#exit
PE1(config)#router rip
PE1(config-router)#address-family ipv4vrf vpn1
PE1(config-router-af)#version 2
PE1(config-router-af)#net 0.0.0.0
PE1(config-router-af)#no auto-summary
PE1(config-router-af)#redistribute bgp 1metric transparent
PE1(config-router-af)#exit
PE1(config-router)#exit
PE1(config)#router bgp 1
PE1(config-router)#bgp router-id 2.2.2.2
PE1(config-router)#neighbor 4.4.4.4remote-as 1
PE1(config-router)#neighbor 4.4.4.4update-source loopback 0
PE1(config-router)#address-family vpnv4
PE1(config-router-af)#neighbor 4.4.4.4activate
PE1(config-router-af)#neighbor 4.4.4.4send-community both
PE1(config-router-af)#exit
PE1(config-router)#address-family ipv4vrf vpn1
PE1(config-router-af)#redistribute rip
P配置:
P#conf t
P(config)#ip cef
P(config)#mpls ip
P(config)#mpls ldp router-id loopback 0
P(config)#mpls label protocol ldp
P(config)#int fa0/0
P(config)#int lo 0
P(config-if)#ip add 3.3.3.3255.255.255.255
P(config-if)#exit
P(config)#int fa0/0
P(config-if)#mpls ip
P(config-if)#ip add 192.168.12.3 255.255.255.0
P(config-if)#no sh
P(config-if)#exit
P(config)#int fa0/1
P(config-if)#mpls ip
P(config-if)#ip add 192.168.34.3255.255.255.0
P(config-if)#no sh
P(config-if)#exit
P(config)#router ospf 1
P(config-router)#net 0.0.0.0255.255.255.255 area 0
P(config-router)#exit
PE2配置:
PE2#conf t
PE2(config)#ip cef
PE2(config)#mpls ip
PE2(config)#mpls ldp router-id loopback0
PE2(config)#mpls label protocol ldp
PE2(config)#ip vrf vpn1
PE2(config-vrf)#rd 100:1
PE2(config-vrf)#route-target both 1:100
PE2(config-vrf)#exit
PE2(config)#int lo 0
PE2(config-if)#ip add 4.4.4.4255.255.255.255
PE2(config-if)#exit
PE2(config)#int fa0/1
PE2(config-if)#ip add 192.168.34.4255.255.255.0
PE2(config-if)#mpls ip
PE2(config-if)#no sh
PE2(config-if)#exit
PE2(config)#int fa0/0
PE2(config-if)#ip vrf forwarding vpn1
PE2(config-if)#ip add 192.168.45.4255.255.255.0
PE2(config-if)#no sh
PE2(config-if)#exit
PE2(config)#router ospf 1
PE2(config-router)#net 0.0.0.0255.255.255.255 area 0
PE2(config-router)#exit
PE2(config)#router rip
PE2(config-router)#address-family ipv4vrf vpn1
PE2(config-router-af)#version 2
PE2(config-router-af)#no auto-summary
PE2(config-router-af)#net 0.0.0.0
PE2(config-router-af)#redistribute bgp 1metric transparent
PE2(config-router-af)#exit
PE2(config-router)#exit
PE2(config)#router bgp 1
PE2(config-router)#bgp router-id 4.4.4.4
PE2(config-router)#neighbor 2.2.2.2remote-as 1
PE2(config-router)#neighbor 2.2.2.2update-source loopback 0
PE2(config-router)#address-family vpnv4
PE2(config-router-af)#neighbor 2.2.2.2activate
PE2(config-router-af)#neighbor 2.2.2.2send-community both
PE2(config-router-af)#exit
PE2(config-router)#address-family ipv4vrf vpn1
PE2(config-router-af)#redistribute rip
CE2配置:
CE2#conf t
CE2(config)#int lo 0
CE2(config-if)#ip add 5.5.5.5255.255.255.255
CE2(config-if)#exit
CE2(config)#int fa0/0
CE2(config-if)#ip add 192.168.45.5255.255.255.0
CE2(config-if)#no sh
CE2(config-if)#exit
CE2(config)#router rip
CE2(config-router)#version 2
CE2(config-router)#no auto-summary
CE2(config-router)#net 0.0.0.0
配置完成检查网络联通,并查看路由表:
CE1#traceroute 5.5.5.5 source 1.1.1.1
Type escape sequence to abort.
Tracing the route to 5.5.5.5
1 192.168.11.2 56 msec 68 msec 16 msec
2 192.168.12.3 [MPLS: Labels 16/16 Exp 0] 92 msec 88 msec 92 msec
3 192.168.45.4 [MPLS: Label 16 Exp 0] 80 msec 60 msec 60 msec
4 192.168.45.5 112 msec 100 msec 84 msec
CE1#sh ip rou
Codes: C - connected, S - static, R -RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPFNSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route
Gateway of last resort is not set
1.0.0.0/32 is subnetted, 1 subnets
C 1.1.1.1 is directly connected, Loopback0
R 192.168.45.0/24 [120/1] via 192.168.11.2, 00:00:00, FastEthernet0/0
5.0.0.0/32 is subnetted, 1 subnets
R 5.5.5.5 [120/2] via 192.168.11.2, 00:00:00, FastEthernet0/0
C 192.168.11.0/24 is directly connected, FastEthernet0/0
PE1#sh ip route vrf vpn1
Routing Table: vpn1
Codes: C - connected, S - static, R -RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route
Gateway of last resort is not set
1.0.0.0/32 is subnetted, 1 subnets
R 1.1.1.1 [120/1] via 192.168.11.1, 00:00:16, FastEthernet0/0
B 192.168.45.0/24 [200/0] via 4.4.4.4, 00:01:38
5.0.0.0/32 is subnetted, 1 subnets
B 5.5.5.5 [200/1] via 4.4.4.4, 00:01:38
C 192.168.11.0/24 is directly connected, FastEthernet0/0
PE1#sh mpls forwarding-table
Local Outgoing Prefix Bytes tag Outgoing Next Hop
tag tag or VC or Tunnel Id switched interface
16 Pop tag 3.3.3.3/32 0 Fa0/1 192.168.12.3
17 Pop tag 192.168.34.0/24 0 Fa0/1 192.168.12.3
18 Aggregate 192.168.11.0/24[V] \
0
19 Untagged 1.1.1.1/32[V] 1884 Fa0/0 192.168.11.1
20 16 4.4.4.4/32 0 Fa0/1 192.168.12.3
PE1#show ip bgp vpnv4 all
BGP table version is 15, local router IDis 2.2.2.2
Status codes: s suppressed, d damped, hhistory, * valid, > best, i - internal,
r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? -incomplete
Network Next Hop Metric LocPrf Weight Path
Route Distinguisher: 100:1 (default forvrf vpn1)
*> 1.1.1.1/32 192.168.11.1 1 32768 ?
*>i5.5.5.5/32 4.4.4.4 1 100 0 ?
*> 192.168.11.0 0.0.0.0 0 32768 ?
*>i192.168.45.0 4.4.4.4 0 100 0 ?
实验八、MPLSVPN(L3VPN)基础之PE-CE运行OSPF 并有后门链路
在传统的OSPF骨干区域里传输TYPE 3的LSA时,必须是从area 0区域的邻居传来的才接收,但是在MPLS VPN下CE端无法形成邻居,因此,提出了superbackbone的概念。超级骨干区域的引入带来的改变就是所有连接到超级骨干的区域,不管其是backbone area 还是non-backbone area ,都视为backbone area。也就是说,传统的OSPF不再需要骨干区域。只有当PE连接了同一个OSPF下的不同area 时,PE才需要运行在骨干区域。 在超级骨干,不再有adjacent关系或者flooding,只有运行sham-link时才会形成邻居。PE通过MBGP-iBGP来运载拓展属性。此时值得注意就是,OPSF中的Domain-id项,区别于传统OSPF,MPLS依赖domain-id来进行OSPF的路由传输。默认情况下domain-id就是process number,这个值在OSPF路由充分不进MP-iBGP的时候设置,对端的PE如果接收到的routes的domain-id与自己的不同,就当作LSA type-5来接收即标记为OE2(只计算系统内部的METRIC),表示来自自治系统外的路由比如把EIGRP重分发到OSPF默认就是O E2;如果domain-id相同,就当作以TYPE3的LSA传递来接收并标记为O IA,表示来自自治系统内的其他区域的路由比如区域0 学到区域1的路由就是O IA。
在MPLS VPN中,如果在两个站点的CE之间增加一条后门链路(BackdoorLink),并且直接运行OSPF交互路由,那么通过这条后门链路学习到的内部路由为O,通过PE过来的路由为OIA,无疑优选O路由。但是我们希望优选走MPLS VPN,此时就要使用Sham-Link。在PE1及PE2之间建立sham-link,它会在两台PE之间形成一条区域内链路。在每一台PE上的链路端点都是特定VRF中的一个接口(或地址),iBGP必须以VPNv4前缀的形式将这个接口的路由传递给另一台PE(也就是说我们必须在MP-BGP的ipv4 vrf地址族里宣告这个地址,以便形成VPNv4前缀并传递给对端PE)。Sham-link和其他OSPF中的链路一样,会进行最短路径优先的计算,当LSA在伪装链路中泛洪,所有的OSPF路由类型都不会改变,不会转换成LSA3或者LSA5的类型。如果sham-link断掉,就会恢复走后门链路。注意:一定要在iBGP中通告用于sham-link的端点IP,此IP不能用在核心的OSPF,否则sham-link会发生抖动。因为首先iBGP应该能够学习到sham-link端点的路由,然后才能创建sham-link。如果这时候,在核心的OSPF中又通告了端点的路由,由于OSPF的AD小于IBGP,因此它将覆盖掉iBGP路由,一旦端点路由不能通过路由表中的iBGP学到,那么伪装链路就会断开。然后再次开始重新建立,这样就导致sham-link不断抖动。用于sham-link的IP(所属的接口)必须分配给特定的VRF。
CE1配置:
CE1#conf t
CE1(config)#int lo 0
CE1(config-if)#ip add 1.1.1.1255.255.255.255
CE1(config-if)#exit
CE1(config)#int fa0/0
CE1(config-if)#ip add 172.168.12.1255.255.255.0
CE1(config-if)#no sh
CE1(config-if)#exit
CE1(config)#int s1/0
CE1(config-if)#ip add 192.168.15.1255.255.255.0
CE1(config-if)#clock rate 64000
CE1(config-if)#no sh
CE1(config-if)#exit
CE1(config)#router ospf 65501
CE1(config-router)#no net 0.0.0.0255.255.255.255 area 0
CE1(config-router)#exit
PE1配置:
PE1#conf t
PE1(config)#ip vrf vpn1
PE1(config-vrf)#rd 1:100
PE1(config-vrf)#route-target both1:100
E1(config-vrf)#exit
PE1(config)#ip cef
PE1(config)#mpls ip
PE1(config)#mpls label protocol ldp
PE1(config-vrf)#exit
PE1(config)#int lo 0
PE1(config-if)#ip add 2.2.2.2255.255.255.255
PE1(config-if)#exit
PE1(config)#int lo 1
PE1(config-if)#ip vrf forwardingvpn1
PE1(config-if)#description sham-link
PE1(config-if)#ip add 22.22.22.22255.255.255.255
PE1(config-if)#exit
PE1(config)#int fa0/0
PE1(config-if)#ip vrf forwardingvpn1
PE1(config-if)#ip add 172.168.12.2255.255.255.0
PE1(config-if)#no sh
PE1(config-if)#exit
PE1(config)#int fa0/1
PE1(config-if)#ip add 202.100.12.2255.255.255.0
PE1(config-if)#mpls ip
PE1(config-if)#no sh
PE1(config-if)#exit
PE1(config)#router ospf 1
PE1(config-router)#router-id 2.2.2.2
PE1(config-router)#net 2.2.2.20.0.0.0 area 0
PE1(config-router)#net 202.100.23.00.0.0.255 area 0
PE1(config-router)#exit
PE1(config)#router ospf 65501 vrfvpn1
PE1(config-router)#domain-id 2.2.2.2//OSPF的domain id
PE1(config-router)#net 172.168.12.00.0.0.255 area 0
PE1(config-router)#redistribute bgp1 subnets//将bgp注入到vrf的ospf中
PE1(config-router)#area 0 sham-link22.22.22.22 44.44.44.44 cost 2//建立sham-link,cost小于串口
PE1(config-router)#exit
PE1(config)#router bgp 1
PE1(config-router)#neighbor 4.4.4.4remote-as 1
PE1(config-router)#neighbor 4.4.4.4update-source loopback 0
PE1(config-router)#address-familyvpnv4
PE1(config-router-af)#neighbor4.4.4.4 activate
PE1(config-router-af)#neighbor4.4.4.4 send-community both
PE1(config-router-af)#exit
PE1(config-router)#address-familyipv4 vrf vpn1
PE1(config-router-af)#network 22.22.22.22mask 255.255.255.255
PE1(config-router-af)#redistributeospf 65501 vrf vpn1
PE1(config-router-af)#exit
P配置:
P#conf t
P(config)#ip cef
P(config)#mpls ip
P(config)#mpls label protocol ldp
P(config)#int lo 0
P(config-if)#ip add 3.3.3.3255.255.255.255
P(config-if)#exit
P(config)#int fa0/0
P(config-if)#ip add 202.100.23.3255.255.255.0
P(config-if)#mpls ip
P(config-if)#no sh
P(config-if)#exit
P(config)#int fa0/1
P(config-if)#ip add 202.100.34.3255.255.255.0
P(config-if)#mpls ip
P(config-if)#no sh
P(config-if)#exit
P(config)#router ospf 1
P(config-router)#net 0.0.0.0255.255.255.255 area 0
P(config-router)#exit
PE2配置:
PE2#conf t
PE2(config)#ip vrf vpn1
PE2(config-vrf)#rd 1:100
PE2(config-vrf)#route-target both1:100
PE2(config-vrf)#exit
PE2(config)#ip cef
PE2(config)#mpls ip
PE2(config)#mpls label protocol ldp
PE2(config)#int lo 0
PE2(config-if)#ip add 4.4.4.4 255.255.255.255
PE2(config-if)#exit
PE2(config)#int lo 1
PE2(config-if)#ip vrf forwardingvpn1
PE2(config-if)#description sham-link
PE2(config-if)#ip add 44.44.44.44255.255.255.255
PE2(config-if)#exit
PE2(config)#int fa0/1
PE2(config-if)#ip add 202.100.34.4255.255.255.0
PE2(config-if)#mpls ip
PE2(config-if)#no sh
PE2(config-if)#exit
PE2(config)#int fa0/0
PE2(config-if)#ip vrf forwardingvpn1
PE2(config-if)#ip add 172.168.45.4255.255.255.0
PE2(config-if)#no sh
PE2(config-if)#exit
PE2(config)#router ospf 1
PE2(config-router)#router-id 4.4.4.4
PE2(config-router)#net 4.4.4.40.0.0.0 area 0
PE2(config-router)#net 192.168.34.00.0.0.255 area 0
PE2(config-router)#exit
PE2(config)#router ospf 65501 vrfvpn1
PE2(config-router)#domain-id 4.4.4.4
PE2(config-router)#net 172.168.45.0255.255.255.0 area 0
PE2(config-router)#area 0 sham-link44.44.44.44 22.22.22.22 cost 2
PE2(config-router)#redistribute bgp1 subnets
PE2(config-router)#exit
PE2(config)#router bgp 1
PE2(config-router)#neighbor 2.2.2.2remote-as 1
PE2(config-router)#neighbor 2.2.2.2update-source loopback 0
PE2(config-router)#address-familyvpnv4
PE2(config-router-af)#neighbor 2.2.2.2activate
PE2(config-router-af)#neighbor 2.2.2.2send-community both
PE2(config-router-af)#exit
PE2(config-router)#address-familyipv4 vrf vpn1
PE2(config-router-af)#network44.44.44.44 mask 255.255.255.255
PE2(config-router-af)#redistributeospf 65501 vrf vpn1
PE2(config-router-af)#exit
CE2配置:
CE2#conf t
CE2(config)#int lo 0
CE2(config-if)#ip add 5.5.5.5 255.255.255.255
CE2(config-if)#exit
CE2(config)#int fa0/0
CE2(config-if)#ip add 172.168.45.5255.255.255.0
CE2(config-if)#no sh
CE2(config-if)#exit
CE2(config)#int s1/0
CE2(config-if)#clock rate 64000
CE2(config-if)#ip add 192.168.15.2255.255.255.0
CE2(config-if)#no sh
CE2(config-if)#exit
CE2(config)#router ospf 65501
CE2(config-router)#net 0.0.0.0255.255.255.255 area 0
CE2(config-router)#exit
整个过程测试与对比:
CE1#sh ip rou ospf //不配置ospf 的domain-id且两台CE的串口没有启的情况
5.0.0.0/32 is subnetted, 1 subnets
O IA 5.5.5.5 [110/21] via 172.168.12.2,00:01:41, FastEthernet0/0O IA 172.168.45.0 [110/11] via 172.168.12.2, 00:01:41, FastEthernet0/0
CE1#sh ip rou ospf //配置OPSF 的domain-id且两台CE的串口没有启的情况
5.0.0.0/32 is subnetted, 1 subnets
O E2 5.5.5.5 [110/11] via 172.168.12.2,00:04:13, FastEthernet0/0
172.168.0.0/24 is subnetted, 2 subnets
O E2 172.168.45.0 [110/1] via 172.168.12.2,00:04:13, FastEthernet0/0
CE1#ship rou //开启两台CE的串口并加入到现有的OSPF进程中,两端最优路由变成串口,破坏了MPLS VPN的路由
Codes:C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O -OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 -OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPFexternal type 2
i - IS-IS, su - IS-IS summary, L1 -IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidatedefault, U - per-user static route
o - ODR, P - periodic downloaded staticroute
Gatewayof last resort is not set
1.0.0.0/32 is subnetted, 1 subnets
C 1.1.1.1 is directly connected, Loopback0
C 192.168.15.0/24 is directly connected,Serial1/0
5.0.0.0/32 is subnetted, 1 subnets
O 5.5.5.5 [110/65] via 192.168.15.2,00:00:10, Serial1/0
172.168.0.0/24 is subnetted, 2 subnets
C 172.168.12.0 is directly connected,FastEthernet0/0
O 172.168.45.0 [110/74] via 192.168.15.2,00:00:10, Serial1/0
CE1#sh ip rou //建立sham-link关系,保持串口开启。此时最优路由为mpls vpn,串口成为备份链路
Codes: C - connected, S - static,R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O -OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 -OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPFexternal type 2
i - IS-IS, su - IS-IS summary, L1 -IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidatedefault, U - per-user static route
o - ODR, P - periodic downloaded staticroute
Gateway of last resort is not set
1.0.0.0/32 is subnetted, 1 subnets
C 1.1.1.1 is directly connected, Loopback0
C 192.168.15.0/24 is directly connected,Serial1/0
5.0.0.0/32 is subnetted, 1 subnets
O 5.5.5.5 [110/23] via 172.168.12.2,00:03:51, FastEthernet0/0
172.168.0.0/24 is subnetted, 2 subnets
C 172.168.12.0 is directly connected,FastEthernet0/0
O 172.168.45.0 [110/22] via 172.168.12.2,00:03:51, FastEthernet0/0
22.0.0.0/32 is subnetted, 1 subnets
O E2 22.22.22.22 [110/1] via 172.168.12.2,00:08:30, FastEthernet0/0
44.0.0.0/32 is subnetted, 1 subnets
O E2 44.44.44.44 [110/1] via 172.168.12.2,00:07:46, FastEthernet0/0
CE1#traceroute5.5.5.5 source 1.1.1.1//最终路由追踪效果
Typeescape sequence to abort.
Tracingthe route to 5.5.5.5
1 172.168.12.2 68 msec 64 msec 16 msec
2 202.100.23.3 [MPLS: Labels 17/19 Exp 0] 92msec 104 msec 112 msec
3 172.168.45.4 [MPLS: Label 19 Exp 0] 72 msec88 msec 64 msec
4 172.168.45.5 140 msec 104 msec 80 msec
实验九、MPLS VPN综合实验
Red1配置:
Red1#conf t
Red1(config)#int fa0/0
Red1(config-if)#ip add 172.168.1.1255.255.255.0
Red1(config-if)#no sh
Red1(config-if)#exit
Red1(config)#int lo 0
Red1(config-if)#ip add1.1.1.1 255.255.255.255
Red1(config-if)#exit
Red1(config)#router rip
Red1(config-router)#noauto-summary
Red1(config-router)#version2
Red1(config-router)#net0.0.0.0
Red1(config-router)#exit
Red2配置:
RED2#conf t
RED2(config)#int fa0/0
RED2(config-if)#ip add192.168.11.1 255.255.255.0
RED2(config-if)#no sh
RED2(config-if)#exit
RED2(config)#int lo 0
RED2(config-if)#ip add11.11.11.11 255.255.255.255
RED2(config-if)#exit
RED2(config)#router rip
RED2(config-router)#noauto-summary
RED2(config-router)#version2
RED2(config-router)#net0.0.0.0
RED2(config-router)#exit
Blue1配置:
Blue1#conf t
Blue1(config)#int lo 0
Blue1(config-if)#ip add2.2.2.2 255.255.255.255
Blue1(config-if)#exit
Blue1(config)#int fa0/0
Blue1(config-if)#ip add172.168.2.1 255.255.255.0
Blue1(config-if)#no sh
Blue1(config-if)#exit
Blue1(config)#routereigrp 65501
Blue1(config-router)#noauto-summary
Blue1(config-router)#net0.0.0.0
Blue1(config-router)#exit
Bule2-1配置:
Blue2-1#conf t
Blue2-1(config)#int lo 0
Blue2-1(config-if)#ipadd 22.22.22.22 255.255.255.255
Blue2-1(config-if)#exit
Blue2-1(config)#intfa0/0
Blue2-1(config-if)#ipadd 192.168.22.1 255.255.255.0
Blue2-1(config-if)#no sh
Blue2-1(config-if)#exit
Blue2-1(config)#intfa0/1
Blue2-1(config-if)#ipadd 12.12.12.1 255.255.255.0
Blue2-1(config-if)#no sh
Blue2-1(config-if)#exit
Blue2-1(config)#routereigrp 65501
Blue2-1(config-router)#noauto-summary
Blue2-1(config-router)#net0.0.0.0
Blue2-1(config-router)#exit
Blue2-2配置:
Blue2-2#conf t
Blue2-2(config)#int lo 0
Blue2-2(config-if)#ipadd 23.23.23.23 255.255.255.255
Blue2-2(config-if)#exit
Blue2-2(config)#intfa0/1
Blue2-2(config-if)#ipadd 12.12.12.2 255.255.255.0.
Blue2-2(config-if)#no sh
Blue2-2(config-if)#exit
Blue2-2(config)#intfa0/0
Blue2-2(config-if)#ipadd 192.168.23.1 255.255.255.0
Blue2-2(config-if)#no sh
Blue2-2(config-if)#exit
Blue2-2(config)#routereigrp 65501
Blue2-2(config-router)#noauto-summary
Blue2-2(config-router)#net0.0.0.0
Blue2-2(config-router)#exit
Gray1配置:
Gray1#conf
Gray1(config)#int lo 0
Gray1(config-if)#ip add 3.3.3.3255.255.255.255
Gray1(config-if)#exit
Gray1(config)#int fa0/0
Gray1(config-if)#ip add172.168.3.1 255.255.255.0
Gray1(config-if)#no sh
Gray1(config-if)#exit
Gray1(config)#int fa0/1
Gray1(config-if)#ip add34.34.34.3 255.255.255.0
Gray1(config-if)#no sh
Gray1(config-if)#exit
Gray1(config)#routerospf 1
Gray1(config-router)#net0.0.0.0 255.255.255.255 area 0
Gray1(config-router)#exit
Gray2配置:
Gray2#conf t
Gray2(config)#int lo 0
Gray2(config-if)#ip add33.33.33.33 255.255.255.255
Gray2(config-if)#exit
Gray2(config)#int fa0/0
Gray2(config-if)#ip add192.168.33.1 255.255.255.0
Gray2(config-if)#no sh
Gray2(config-if)#exit
Gray2(config)#int fa0/1
Gray2(config-if)#ip add34.34.34.4 255.255.255.0
Gray2(config-if)#no sh
Gray2(config-if)#exit
Gray2(config)#routerospf 1
Gray2(config-router)#net0.0.0.0 255.255.255.255 area 0
Gray2(config-router)#exit
Mail配置:
Mail#conf t
Mail(config)#int lo 0
Mail(config-if)#int lo 0
Mail(config-if)#ip add110.110.110.110 255.255.255.255
Mail(config-if)#exit
Mail(config)#int lo 1
Mail(config-if)#ip add25.25.25.25 255.255.255.255
Mail(config-if)#exit
Mail(config)#int fa0/0
Mail(config-if)#ip add172.168.110.1 255.255.255.0
Mail(config-if)#no sh
Mail(config-if)#exit
Mail(config)#router ospf110
Mail(config-router)#net0.0.0.0 255.255.255.255 area 0
Mail(config-router)#exit
Web配置:
Web#conf t
Web(config)#int lo 0
Web(config-if)#ip add80.80.80.80 255.255.255.255
Web(config-if)#exit
Web(config)#int lo 1
Web(config-if)#ip add168.168.168.168 255.255.255.0
Web(config-if)#exit
Web(config)#int fa0/0
Web(config-if)#ip add192.168.80.1 255.255.255.0
Web(config-if)#no sh
Web(config-if)#exit
Web(config)#router ospf80
Web(config-router)#net0.0.0.0 255.255.255.255 area 0
Web(config-router)#exit
PE1配置:
PE1#conf t
PE1(config)#ip cef
PE1(config)#mpls ip
E1(config)#no mpls ippropagate-ttl//隐藏公网中P路由器、及出口PE路由器(入口PE除外)PE1(config)#mpls labelprotocol ldp
PE1(config)#access-list1 permit 25.25.25.25 0.0.0.0 //抓取25.25.25.25网络
PE1(config)#route-mapselective permit 10 //创建路由图
PE1(config-route-map)#matchip add 1//设置路由图匹配25.25.25.25网段
PE1(config-route-map)#setextcommunity rt 999:999//将25.25.25.25网段设置不同RT属性,过滤掉
PE1(config-route-map)#exit
PE1(config)#route-mapselective permit 20//设置路由图对不匹配条件的不做任何操作
PE1(config-route-map)#exit
PE1(config)#ip vrf REB
PE1(config-vrf)#RD111:111
PE1(config-vrf)#route-target both 111:111
PE1(config-vrf)#route-target import 333:333 //RED可以接受Gray的路由
PE1(config-vrf)#route-targetimport 110:110 //RED可以接收Mail网络的路由
PE1(config-vrf)#route-targetimport 800:800 //RED可以接收Web网络的路由
PE1(config-vrf)#exportmap selective //将路由图应用到VFR路由表导出方向
PE1(config-vrf)#exit
PE1(config)#ip vrf BLUE
PE1(config-vrf)#RD222:222
PE1(config-vrf)#route-targetboth 222:222
PE1(config-vrf)#route-targetimport 110:110 //BLUE可以接收Mail网络的路由
PE1(config-vrf)#route-targetimport 800:800 //BLUE可以接收Web网络的路由
PE1(config-vrf)#exit
PE1(config)#ip vrf Gray
PE1(config-vrf)#RD333:333
PE1(config-vrf)#route-target both 333:333
PE1(config-vrf)#route-target import 111:111 //Gray可以接受RED的路由
PE1(config-vrf)#exit
PE1(config)#ip vrf Mail
PE1(config-vrf)#RD 110:110
PE1(config-vrf)#route-targetboth 110:110
PE1(config-vrf)#route-targetimport 111:111 //让Mail网络接收RED网络
PE1(config-vrf)#route-targetimport 222:222 //让Mail网络接收BLUE网络
PE1(config-vrf)#exit
PE1(config)#ip vrf Web//创建一个与PE2网络一样的WebVRF表
PE1(config-vrf)# rd 800:800
PE1(config-vrf)#route-target export 800:800
PE1(config-vrf)#route-target import 222:222
PE1(config-vrf)#route-target import 111:111
PE1(config-vrf)#exit
PE1(config)#int lo 0
PE1(config-if)#ipadd 100.100.100.100 255.255.255.255
PE1(config-if)#exit
PE1(config)#int fa 0/1
PE1(config-if)#ip add200.200.100.1 255.255.255.0
PE1(config-if)#mpls ip
PE1(config-if)#no sh
PE1(config-if)#exit
PE1(config)#router ospf1
PE1(config-router)#net100.100.100.100 0.0.0.0 area 0
PE1(config-router)#net200.200.100.0 0.0.0.255 area 0
PE1(config-router)#exit
PE1(config-if)#int fa1/0
PE1(config-if)#ip vrfforwarding RED
PE1(config-if)#ip add172.168.1.2 255.255.255.0
PE1(config-if)#no sh
PE1(config-if)#exit
PE1(config)#int fa2/0
PE1(config-if)#ip vrfforwarding BLUE
PE1(config-if)#ip add172.168.2.2 255.255.255.0
PE1(config-if)#no sh
PE1(config-if)#exit
PE1(config)#int fa2/0
PE1(config-if)#exit
PE1(config)#int fa3/0
PE1(config-if)#ip vrfforwarding Gray
PE1(config-if)#ip add 172.168.3.2255.255.255.0
PE1(config-if)#no sh
PE1(config-if)#exit
PE1(config)#int lo 1
PE1(config-if)#descsham-link
PE1(config-if)#ip vrfforwarding Gray
PE1(config-if)#ip add111.111.111.111 255.255.255.255
PE1(config-if)#exit
PE1(config)#int fa4/0
PE1(config-if)#ip vrfforwarding Mail
PE1(config-if)#ip add172.168.110.2 255.255.255.0
PE1(config-if)#no sh
PE1(config-if)#exit
PE1(config)#router rip
PE1(config-router)#address-familyipv4 vrf RED
PE1(config-router-af)#noauto-summary
PE1(config-router-af)#version2
PE1(config-router-af)#net172.168.1.0
PE1(config-router-af)#exit
PE1(config-router)#exit
PE1(config)#router eigrp65501
PE1(config-router)#address-familyipv4 vrf BLUE
PE1(config-router-af)#noauto
PE1(config-router-af)#net172.168.2.0
PE1(config-router-af)#autonomous-system65501
PE1(config-router-af)#exit
PE1(config-router)#exit
PE1(config)#router ospf333 vrf Gray
PE1(config-router)#net172.168.3.0 0.0.0.255 area 0
PE1(config-router)#exit
PE1(config)#router ospf110 vrf Mail
PE1(config-router)#net172.168.110.0 0.0.0.255 area 0
PE1(config-router)#redistributebgp 1 subnets
PE1(config-router)#exit
PE1(config)#router bgp 1
PE1(config-router)#neighbor200.200.200.200 remote-as 1
PE1(config-router)#neighbor200.200.200.200 update-source loopback 0
PE1(config-router)#address-familyvpnv4
PE1(config-router-af)#neighbor200.200.200.200 activate
PE1(config-router-af)#neighbor200.200.200.200 send-community both
PE1(config-router-af)#exit
PE1(config-router)#address-familyipv4 vrf RED
PE1(config-router-af)#redistributerip
PE1(config-router-af)#exit
PE1(config-router)#address-familyipv4 vrf BLUE
PE1(config-router-af)#redistributeeigrp 65501
PE1(config-router-af)#exit
PE1(config-router)#address-familyipv4 vrf Gray
PE1(config-router-af)#net111.111.111.111 mask 255.255.255.255
PE1(config-router-af)#redistributeospf 333 vrf Gray
PE1(config-router-af)#exit
PE1(config-router)#address-familyipv4 vrf Mail
PE1(config-router-af)#redistributeospf 110 vrf Mail
PE1(config-router-af)#exit
PE1(config-router)#exit
PE1(config)#router rip
PE1(config-router)#address-familyipv4 vrf RED
PE1(config-router-af)#redistributebgp 1 metric transparent
PE1(config-router-af)#exit
PE1(config-router)#exit
PE1(config)#router eigrp65501
PE1(config-router)#address-familyipv4 vrf BLUE
PE1(config-router-af)#redistributebgp 1 metric 64000 1500 1 255 1500
PE1(config-router-af)#exit
PE1(config-router)#exit
PE1(config)#router ospf333 vrf Gray
PE1(config-router)#redistributebgp 1 subnets
PE1(config-router)#area0 sham-link 111.111.111.111 222.222.222.222 cost 1
PE1(config-router)#exit
P配置:
P#conf t
P(config)#ip cef
P(config)#mpls ip
P(config)#no mpls ippropagate-ttl
P(config)#mpls labelprotocol ldp
P(config)#int fa0/0
P(config-if)#ip add200.200.100.2 255.255.255.0
P(config-if)#mpls ip
P(config-if)#no sh
P(config-if)#exit
P(config)#int fa0/1
P(config-if)#ip add202.202.200.2 255.255.255.0
P(config-if)#mpls ip
P(config-if)#no sh
P(config-if)#exit
P(config)#router ospf 1
P(config-router)#net0.0.0.0 255.255.255.255 area 0
P(config-router)#exit
PE2配置:
PE2#conf t
PE2(config)#ip cef
PE2(config)#mpls ip
PE2(config)#no mpls ippropagate-ttl
PE2(config)#mpls labelprotocol ldp
PE2(config)#ip vrf REB
PE2(config-vrf)#RD111:111
PE2(config-vrf)#route-targetboth 111:111
PE2(config-vrf)#route-targetimport 800:800
PE2(config-vrf)#exit
PE2(config)#ip vrf BLUE
PE2(config-vrf)#RD222:222
PE2(config-vrf)#route-target222:222
PE2(config-vrf)#route-targetimport 800:800
PE2(config-vrf)#exit
PE2(config)#ip vrf Gray
PE2(config-vrf)#RD333:333
PE2(config-vrf)#route-targetboth 333:333
PE2(config-vrf)#exit
PE2(config)#ip vrf Web
PE2(config-vrf)#RD800:800
PE2(config-vrf)#route-targetboth 800:800
PE2(config-vrf)#route-targetimport 222:222
PE2(config-vrf)#route-targetimport 111:111
PE2(config-vrf)#exit
PE2(config)#route-mapSoo permit 10 //设置route-map 10用于防止EIGRP多线环路
PE2(config-route-map)#setextcommunity soo 100:1
PE2(config-route-map)#exit
Router(config)#int lo 0
PE2(config-if)#ip add 200.200.200.200255.255.255.255
PE2(config-if)#exit
PE2(config)#int fa0/1
PE2(config-if)#ipadd 202.202.200.1 255.255.255.0
PE2(config-if)#mpls ip
PE2(config-if)#no sh
PE2(config-if)#exit
E2(config)#router ospf 1
PE2(config-router)#net200.200.200.200 0.0.0.0 area 0
PE2(config-router)#net202.202.200.0 0.0.0.255 area 0
PE2(config-router)#exit
PE2(config)#int fa1/0
PE2(config-if)#ip vrfforwarding RED
PE2(config-if)#ip add192.168.11.2 255.255.255.0
PE2(config-if)#no sh
PE2(config-if)#exit
PE2(config)#int fa2/0
PE2(config-if)#ip vrfforwarding BLUE
PE2(config-if)#ip vrfsitemap Soo //将EIGRP防环策略应用到接口
PE2(config-if)#ip add192.168.22.2 255.255.255.0
PE2(config-if)#no sh
PE2(config-if)#exit
PE2(config)#int fa3/0
PE2(config-if)#ip vrfforwarding BLUE
PE2(config-if)#ip vrfsitemap Soo
PE2(config-if)#ip add192.168.23.2 255.255.255.0
PE2(config-if)#no sh
PE2(config-if)#exit
PE2(config)#int fa4/0
PE2(config-if)#ip vrfforwarding Gray
PE2(config-if)#ip add192.168.33.2 255.255.255.0
PE2(config-if)#no sh
PE2(config-if)#exit
PE2(config-if)#int lo 1
PE2(config-if)#ip vrfforwarding Gray
PE2(config-if)#ip add 222.222.222.222255.255.255.255
PE2(config-if)#exit
PE2(config)#int fa0/0
PE2(config-if)#ip vrfforwarding Web
PE2(config-if)#ip add192.168.80.2 255.255.255.0
PE2(config-if)#no sh
PE2(config-if)#exit
PE2(config)#router rip
PE2(config-router)#address-familyipv4 vrf RED
PE2(config-router-af)#noauto-summary
PE2(config-router-af)#version2
PE2(config-router-af)#net192.168.11.0
PE2(config-router-af)#exit
PE2(config-router)#exit
PE2(config)#router eigrp65501
PE2(config-router)#address-familyipv4 vrf BLUE
PE2(config-router-af)#noauto
PE2(config-router-af)#autonomous-system65501
PE2(config-router-af)#net192.168.22.0
PE2(config-router-af)#net192.168.23.0
PE2(config-router-af)#exit
PE2(config-router)#exit
PE2(config)#router ospf333 vrf Gray
PE2(config-router)#net192.168.33.0 0.0.0.255 area 0
PE2(config-router)#exit
PE2(config)#router ospf80 vrf Web
PE2(config-router)#net192.168.80.0 0.0.0.255 area 0
PE2(config-router)#exit
PE2(config)#router bgp 1
PE2(config-router)#neighbor100.100.100.100 remote-as 1
PE2(config-router)#neighbor100.100.100.100 update-source loopback 0
PE2(config-router)#address-familyvpnv4
PE2(config-router-af)#neighbor100.100.100.100 activate
PE2(config-router-af)#neighbor100.100.100.100 send-community both
PE2(config-router-af)#exit
PE2(config-router)#address-familyipv4 vrf RED
PE2(config-router-af)#redistributerip
PE2(config-router-af)#exit
PE2(config-router)#exit
PE2(config-router)#address-familyipv4 vrf BLUE
PE2(config-router-af)#redistributeeigrp 65501
PE2(config-router-af)#exit
PE2(config-router)#address-familyipv4 vrf Gray
PE2(config-router-af)#redistributeospf 333 vrf Gray
PE2(config-router-af)#net222.222.222.222 mask 255.255.255.255
PE2(config-router-af)#exit
PE2(config)#router bgp 1
PE2(config-router)#address-familyipv4 vrf Web
PE2(config-router-af)#redistributeospf 800 vrf Web
PE2(config-router-af)#exit
PE2(config-router)#exit
PE2(config)#router rip
PE2(config-router)#address-familyipv4 vrf RED
PE2(config-router-af)#redistributebgp 1 metric transparent
PE2(config-router-af)#exit
PE2(config-router)#exit
PE2(config)#router eigrp65501
PE2(config-router)#address-familyipv4 vrf BLUE
PE2(config-router-af)#redistributebgp 1 metric 64000 1500 1 255 1500
PE2(config-router-af)#exit
PE2(config-router)#exit
PE2(config)#router ospf333 vrf Gray
PE2(config-router)#redistributebgp 1 subnets
PE2(config-router)#area0 sham-link 222.222.222.222 111.111.111.111 cost 1//创建Sham-link让MPLS VPN成为主线
PE2(config-router)#exit
PE2(config)#router ospf800 vrf Web
PE2(config-router)#redistributebgp 1 subnets
PE2(config-router)#exit
完成配置后;客户端的各个路由器路由表如下:
Red1#sh ip rou rip
34.0.0.0/24 is subnetted, 1 subnets
R 34.34.34.0 [120/12] via 172.168.1.2,00:00:18, FastEthernet0/0
222.222.222.0/32 is subnetted, 1 subnets
R 222.222.222.222 [120/1] via 172.168.1.2,00:00:18, FastEthernet0/0
168.168.0.0/32 is subnetted, 1 subnets
R 168.168.168.168 [120/12] via172.168.1.2, 00:00:18, FastEthernet0/0
33.0.0.0/32 is subnetted, 1 subnets
R 33.33.33.33 [120/3] via 172.168.1.2,00:00:18, FastEthernet0/0
3.0.0.0/32 is subnetted, 1 subnets
R 3.3.3.3 [120/3] via 172.168.1.2,00:00:18, FastEthernet0/0
80.0.0.0/32 is subnetted, 1 subnets
R 80.80.80.80 [120/12] via 172.168.1.2,00:00:18, FastEthernet0/0
172.168.0.0/24 is subnetted, 3 subnets
R 172.168.3.0 [120/1] via 172.168.1.2,00:00:18, FastEthernet0/0
R 172.168.110.0 [120/1] via 172.168.1.2,00:00:18, FastEthernet0/0
R 192.168.11.0/24 [120/1] via 172.168.1.2,00:00:18, FastEthernet0/0
110.0.0.0/32 is subnetted, 1 subnets
R 110.110.110.110 [120/3] via 172.168.1.2,00:00:19, FastEthernet0/0
R 192.168.80.0/24 [120/1] via 172.168.1.2,00:00:19, FastEthernet0/0
111.0.0.0/32 is subnetted, 1 subnets
R 111.111.111.111 [120/1] via 172.168.1.2,00:00:19, FastEthernet0/0
11.0.0.0/32 is subnetted, 1 subnets
R 11.11.11.11 [120/2] via 172.168.1.2,00:00:19, FastEthernet0/0
R 192.168.33.0/24 [120/1] via 172.168.1.2,00:00:20, FastEthernet0/0
RED2#sh ip rou rip
1.0.0.0/32 is subnetted, 1 subnets
R 1.1.1.1 [120/2] via 192.168.11.2,00:00:21, FastEthernet0/0
168.168.0.0/32 is subnetted, 1 subnets
R 168.168.168.168 [120/12] via192.168.11.2, 00:00:21, FastEthernet0/0
80.0.0.0/32 is subnetted, 1 subnets
R 80.80.80.80 [120/12] via 192.168.11.2,00:00:21, FastEthernet0/0
172.168.0.0/24 is subnetted, 1 subnets
R 172.168.1.0 [120/1] via 192.168.11.2,00:00:21, FastEthernet0/0
R 192.168.80.0/24 [120/1] via 192.168.11.2,00:00:21, FastEthernet0/0
Blue1#sh ip rou eigrp
168.168.0.0/32 is subnetted, 1 subnets
D EX 168.168.168.168
[170/665600] via 172.168.2.2,00:16:10, FastEthernet0/0
80.0.0.0/32 is subnetted, 1 subnets
D EX 80.80.80.80 [170/665600] via 172.168.2.2,00:16:10, FastEthernet0/0
172.168.0.0/24 is subnetted, 2 subnets
D EX 172.168.110.0 [170/665600] via 172.168.2.2,00:16:10, FastEthernet0/0
23.0.0.0/32 is subnetted, 1 subnets
D 23.23.23.23 [90/412160] via 172.168.2.2,00:16:10, FastEthernet0/0
22.0.0.0/32 is subnetted, 1 subnets
D 22.22.22.22 [90/412160] via 172.168.2.2,00:16:10, FastEthernet0/0
110.0.0.0/32 is subnetted, 1 subnets
D EX 110.110.110.110
[170/665600] via 172.168.2.2,00:16:10, FastEthernet0/0
D EX 192.168.80.0/24[170/665600] via 172.168.2.2, 00:16:10, FastEthernet0/0
D 192.168.23.0/24 [90/284160] via172.168.2.2, 00:16:10, FastEthernet0/0
D 192.168.22.0/24 [90/284160] via172.168.2.2, 00:16:10, FastEthernet0/0
12.0.0.0/24 is subnetted, 1 subnets
D 12.12.12.0[90/309760] via 172.168.2.2, 00:16:11, FastEthernet0/0
Blue2-1#sh ip rou eigrp
2.0.0.0/32 issubnetted, 1 subnets
D 2.2.2.2[90/412160] via 192.168.22.2, 00:16:51, FastEthernet0/0
168.168.0.0/32is subnetted, 1 subnets
D EX 168.168.168.168
[170/665600] via 192.168.22.2, 00:16:51, FastEthernet0/0
80.0.0.0/32 issubnetted, 1 subnets
D EX 80.80.80.80[170/665600] via 192.168.22.2, 00:16:51, FastEthernet0/0
172.168.0.0/24is subnetted, 1 subnets
D 172.168.2.0[90/284160] via 192.168.22.2, 00:16:51, FastEthernet0/0
23.0.0.0/32 issubnetted, 1 subnets
D 23.23.23.23[90/409600] via 12.12.12.2, 00:18:31, FastEthernet0/1
D EX 192.168.80.0/24 [170/665600] via 192.168.22.2,00:16:51, FastEthernet0/0
D 192.168.23.0/24 [90/284160] via 192.168.22.2, 00:18:31, FastEthernet0/0
Blue2-2#sh ip rou eigrp
2.0.0.0/32 issubnetted, 1 subnets
D 2.2.2.2[90/412160] via 192.168.23.2, 00:17:23, FastEthernet0/0
168.168.0.0/32is subnetted, 1 subnets
D EX 168.168.168.168
[170/665600] via 192.168.23.2, 00:17:23, FastEthernet0/0
80.0.0.0/32 issubnetted, 1 subnets
D EX 80.80.80.80[170/665600] via 192.168.23.2, 00:17:23, FastEthernet0/0
172.168.0.0/24is subnetted, 1 subnets
D 172.168.2.0[90/284160] via 192.168.23.2, 00:17:23, FastEthernet0/0
22.0.0.0/32 issubnetted, 1 subnets
D 22.22.22.22[90/409600] via 12.12.12.1, 00:19:04, FastEthernet0/1
D EX 192.168.80.0/24 [170/665600] via 192.168.23.2,00:17:23, FastEthernet0/0
D 192.168.22.0/24[90/284160] via 192.168.23.2, 00:19:04, FastEthernet0/0
Gray1#sh ip rou ospf
222.222.222.0/32 is subnetted, 1 subnets
O E2 222.222.222.222 [110/1] via 172.168.3.2, 00:18:26, FastEthernet0/0
1.0.0.0/32 issubnetted, 1 subnets
O E2 1.1.1.1[110/1] via 172.168.3.2, 00:18:26, FastEthernet0/0
33.0.0.0/32 issubnetted, 1 subnets
O 33.33.33.33[110/11] via 34.34.34.4, 00:19:13, FastEthernet0/1
172.168.0.0/24is subnetted, 2 subnets
O E2 172.168.1.0[110/1] via 172.168.3.2, 00:18:26, FastEthernet0/0
O E2 192.168.11.0/24 [110/1] via 172.168.3.2, 00:18:26,FastEthernet0/0
111.0.0.0/32is subnetted, 1 subnets
O E2 111.111.111.111 [110/1] via 172.168.3.2, 00:19:03, FastEthernet0/0
11.0.0.0/32 issubnetted, 1 subnets
O E2 11.11.11.11[110/1] via 172.168.3.2, 00:18:26, FastEthernet0/0
O 192.168.33.0/24 [110/12] via 172.168.3.2, 00:18:20, FastEthernet0/0
Gray2#sh ip rou ospf
222.222.222.0/32 is subnetted, 1 subnets
O E2 222.222.222.222 [110/1] via 192.168.33.2, 00:20:19, FastEthernet0/0
1.0.0.0/32 issubnetted, 1 subnets
O E2 1.1.1.1[110/1] via 192.168.33.2, 00:19:21, FastEthernet0/0
3.0.0.0/32 issubnetted, 1 subnets
O 3.3.3.3[110/11] via 34.34.34.3, 00:20:09, FastEthernet0/1
172.168.0.0/24 is subnetted, 2 subnets
O E2 172.168.1.0[110/1] via 192.168.33.2, 00:19:21, FastEthernet0/0
O 172.168.3.0[110/12] via 192.168.33.2, 00:19:21, FastEthernet0/0
O E2 192.168.11.0/24 [110/1] via 192.168.33.2, 00:19:21,FastEthernet0/0
111.0.0.0/32is subnetted, 1 subnets
O E2 111.111.111.111 [110/1] via 192.168.33.2, 00:19:29, FastEthernet0/0
11.0.0.0/32 issubnetted, 1 subnets
O E2 11.11.11.11[110/1] via 192.168.33.2, 00:19:21, FastEthernet0/0
实验十、MPLS的流量工程
目前的路由协议从本质上讲是无连接的,因此导致了整个网络容量利用率的非最佳特征。现在的路由选择只是基于目的地IP地址和最短路径进行的,忽略了网路可用链路容量和分组流本身的要求。而且使用超级聚合将导致某些链路过载或拥塞,而其它一些链路则处于利用率不足的情况;第二,目前的IP服务从本质上讲是没有服务质量,或称之为Best Effort。但是目前IP技术希望支撑广泛的业务,其中包括话音和视频。这一点对目前的IP技术而言是无能为力的,或者是力不从心。
到目前为止,在骨干网上提供流量工程都是靠的ATM技术,当然ATM是一种面向连接的交换技术。但是由于目前高层应用大部分都是采用基于TCP/IP技术的,ATM技术的流量控制机制对IP业务是间接控制方式,所以IP技术才考虑在自己的功能中增加流量控制,或称之为流量工程,显然这是要提供一种直接方式的流量控制机制。MPLS正是在这种背景下才不得不采纳ATM的思想,发动一场“技术和平演变”。 在IP网络中,流量工程讨论的问题是:解决拥塞,避免由于业务流和资源的无效映射所导致的有些网络资源过渡利用,而其它资源则利用不足的矛盾;根据网络拓扑,快速、准确、有效地动态重新分配业务流,尤其是在发生网络线路或设备故障时更应如此。MPLS的流量工程提供动态、实时的自动资源优化,采用所谓的“智能连接”实现IP网络流量工程的目标,克服了这些问题。
MPLS本身具有一些不同于IGP的特性,其中就有实现流量工程所需要的,例如:
MPLS支持显式LSP路由;
LSP较传统单个IP分组转发更便于管理和维护;
基于MPLS的流量工程的资源消耗较其它实现方式更低。
MPLS-TE不是QoS:MPLS-TE只是将流量合理的分配到现有的网络资源中,MPLS-TE本身并不提供QoS机制,如果规划的不合理,MPLS-TE也并不能合理分配流量。 MPLS TE结合了MPLS技术与流量工程,通过建立到达指定路径的LSP隧道进行资源预留,使网络流量绕开拥塞节点,达到平衡网络流量的目的。在资源紧张的情况下,MPLS TE能够抢占低优先级LSP隧道带宽资源,满足大带宽LSP或重要用户的需求。同时,当LSP隧道故障或网络的某一节点发生拥塞时,MPLS TE可以通过备份路径和FRR(Fast ReRoute,快速重路由)提供保护。使用MPLS TE,网络管理员只需要建立一些LSP和旁路拥塞节点,就可以消除网络拥塞。随着LSP数量的增长,还可以使用专门的离线工具进行业务量分析。
MPLS TE的基本概念
MPLS-TE使用的协议信令包括两种:
RSVP-TE :RSVP(资源预留协议)是网络上进行资源预留的控制协议。它不是路由协议,与路由协议协同工作,建立与路由协议计算出路由等价的动态访问列表。RSVP-TE已经在现有网络中规模应用,比较成熟。基于软状态,需要周期性更新状态信息。
CR-LDP :CR-LDP(Constrained-basedRouting LDP, 基于限制路由的标签分发协议[rfc3212])是对LDP协议的扩展,用于对流量工程进行支持。此协议比较新,目前使用较少,CR-LDP是基于硬状态的,不需要周期性的维护状态信息。
MPLS TE的实现:
静态CR-LSP(Constraint-based Routed Label Switched Paths,基于约束路由的LSP)的处理:创建和删除静态CR-LSP。这些LSP有带宽需求,需要通过手工配置。
动态CR-LSP处理:包括对三种不同类型CR-LSP的处理:基本CR-LSP、备份CR-LSP和快速重路由CR-LSP。对于动态CR-LSP,MPLS TE在实现上主要包括四个部分。
发布含TE属性的信息:MPLS TE需要了解每条链路的动态TE相关属性,这可以通过对现有的使用链路状态算法的IGP协议进行扩展来实现,比如OSPF协议和IS-IS协议的扩展。扩展后的OSPF和IS-IS协议在链路连接状态中增加了链路带宽、着色等TE相关属性,其中,链路的最大可预留带宽和每个优先级的链路未被预留带宽尤为重要。每台设备收集本区域或本级别所有设备每条链路的TE相关信息,生成TEDB(TE DataBase,流量工程数据库)。
计算路径:使用链路状态算法的路由协议通过SPF(Shortest Path First,最短路径优先)算法计算出到达网络各个节点的最短路径。MPLS TE使用CSPF(Constraint-based Shortest Path First,基于约束的最短路径优先)算法计算出到达某个节点的最短路径。CSPF算法是从SPF算法衍生来的,CSPF有两个输入条件:
需要建立的LSP的带宽、着色、抢占/保持优先级、显式路径等约束条件,这些都在LSP的入口处配置;
流量工程数据库TEDB。
注意:CSPF的计算过程就是针对LSP要求,先对TEDB中的链路进行剪切,把不满足TE属性要求的链路剪掉;再采用SPF算法,寻找一条到LSP出口的最短路径。
建立路径:支持建立LSP隧道的信令RSVP-TE。它们都能够携带LSP的带宽、部分显式路由、着色等约束参数,两者完成的功能是一样的。从内部实现来看, RSVP-TE则通过Raw IP建立LSP连接。RSVP技术经历了多年的发展,其体系结构、协议规程与对各种业务的支持机制相对比较成熟。
转发报文:使用建立的隧道转发报文。当MPLS TE隧道建立之后,如果不配置流量沿隧道转发,缺省的情况下依然会沿IP路由转发。配置流量沿隧道转发有如下三种方法:
静态路由: 使用静态路由转发流量,是最简便的方法,因为Tunnel的接口地址通常情况下不会发布到IGP中。这时候通过定义一条通过Tunnel接口到达目的网络地址的静态路由,就把流量引入到MPLS TE隧道上进行转发。
策略路由: 使用基于策略的路由(Policy-basedrouting,PBR),通过Tunnel接口的流量需要通过ACL定义策略,如果匹配该流量,将下一跳的接口指向Tunnel,在流量的入接口应用策略路由,就把流量引入到MPLS TE隧道上进行转发。
自动路由发布自动路由发布会将Tunnel的接口发布到IGP路由中,这样流量都会通过MPLS TE隧道转发。自动路由发布包括两种:IGP Shortcut与转发邻接。OSPF和IS-IS支持IGPShortcut和转发邻接特性,可以使用TE Tunnel作为出接口。在这种应用中,TE Tunnel被看做点到点链路。IGP Shortcut特性也称为自动路由宣告(AutoRoute Announce),该特性将TE Tunnel看作直接与目的地址相连的逻辑接口,计算该TE Tunnel隧道入口设备的IGP路由。IGP Shortcut和转发邻接的区别在于:在IGP Shortcut应用中,使能此特性的设备使用TE Tunnel作为出接口,但它不将这条路由发布给邻居设备,因此,其他设备不能使用此TETunnel。如果配置了转发邻接,则使能此特性的设备在使用TE Tunnel作为出接口的同时,也将这条TE Tunnel发布给邻居设备,因此,其他设备能够使用此TE Tunnel。IGP Shortcut和转发邻接包括Tunnel上的配置和IGP本身的配置两部分。Tunnel接口上的配置需要注意:
Tunnel接口的目的地址应该属于使能相应特性的区域内;
Tunnel接口的目的地址可通过区域内路由到达。
严格显式路由与松散显式路由如果约束信息是对沿途LSR的精确指定,建立的LSP称为严格的显式路由(Strict Explicit Route)如果约束信息是对选择下游LSR时的模糊限制,建立的LSP称为松散的显式路由(Loose Explicit Route)
流量参数:路径的流量参数有三个:峰值速率(peak rate)和承诺速率(committed rate),描述路径本身对带宽的约束;另外一个是服务粒度(service granularity)。
抢占:如果在建立CR-LSP的过程中,无法找到满足所需带宽要求的路径,一种解决方法是拆除另外一条已经建立的路径,占用为它分配的带宽资源,这种处理方式称为抢占(Preemption)。CR-LSP使用两个优先级属性来决定是否可以进行抢占:建立优先级(Setup Priority)和保持优先级(Holding Priority)。建立优先级和保持优先级的取值范围都是0~7,数值越小则优先级越高。抢占由RSVP-TE的Resv消息发起。当新建一条路径Path1时,如果需要与已建立的路径Path2争夺资源,只有当Path1的建立优先级高于Path2的保持优先级时,Path1才能抢占成功。因此,为保证CR-LSP能够正确建立,建立优先级不能高于保持优先级,否则可能会导致LSP间无穷尽的互相抢占,造成振荡。
路由固定(Route Pinning): CR-LSP创建成功后,不随路由变化而变化的特性叫做路由固定。当某个网络未运行IGP TE时,网络管理员不能确定网络上的哪些地方可以获得带宽,这时需要选择具有所需带宽的松散ER-hop(Explicit Route)来创建CR-LSP,但这些CR-LSP将会随路由变化而变化。当路由变化时,比如出现了一个更好的下一跳,已建立的CR-LSP也将会随之改变。如果不希望使用松散路由建立的CR-LSP随路由变化而改变,网络管理员可以在CR-LSP创建成功时把这些CR-LSP配置成永久性的,不随路由变化而变化。
管理组和和属性: MPLS TE隧道的亲和属性决定隧道使用的链路属性,亲和属性与链路管理组配合,确定隧道可以使用哪些链路。
重优化: 流量工程是系统规划网络资源使用的过程。根据用户需求可以配置流量工程,提供要求的QoS。服务提供商通常利用一定的机制去优化CR-LSP,以优化网络资源使用。一种方法是人工配置,但是需要服务提供商进行测量和对CR-LSP微调。使用MPLS TE则能够动态优化CR-LSP,从而节省人力。动态优化CR-LSP即定期重计算CR-LSP穿越的路由。如果重计算的路由优于当前路由,则创建一条新的CR-LSP,为之分配新路由,并将业务从旧的CR-LSP切换至新的CR-LSP,删除旧CR-LSP
CR-LSP备份CR-LSP备份是一种端到端的路径保护(Path Protection,end-to-end protection),对整条LSP提供保护,而FRR则是一种局部保护措施,只能保护LSP中的某条链路和某个节点。并且,FRR是一种快速响应的临时性保护措施,对于切换时间有严格要求,LSP备份则没有时间要求。同一条隧道下对主LSP进行路径备份的LSP称为备份路径。当Ingress感知到主LSP不可用时,将流量切换到备份路径上,当主LSP路径恢复后再将流量切换回来,以实现对主LSP路径的备份保护。有两种备份方法:热备份:创建主CR-LSP后随即创建备份CR-LSP。主CR-LSP失效时,通过MPLS TE直接将业务切换至备份CR-LSP。普通备份:指主CR-LSP失效后创建备份CR-LSP。
快速重路由FRR(Fast ReRoute),是MPLS- TE中实现网络局部保护的技术。FRR的切换速度可以达到50ms,能够最大程度减少网络故障时数据的丢失。对LSP配置FRR功能后,当LSP上的某条链路或某个节点失效时,流量会被切换到保护链路上,同时LSP头节点尝试建立新的LSP。介绍FRR中的几个概念
主LSP:被保护的LSP。
Bypass LSP:旁路LSP,保护主LSP的LSP。
PLR(Point of Local Repair):本地修复节点。BypassLSP的头节点,必须在主LSP的路径上,并且不能是主LSP的尾节点。
MP(Merge Point):汇聚点。Bypass LSP的尾节点,必须在主LSP的路径上,并且不能是主LSP的头节点
保护方式根据保护的对象不同,FRR分为两类:链路保护:PLR和MP之间有直接链路连接,主LSP经过这条链路。当这条链路失效时,流量可以切换到Bypass LSP上节点保护:PLR和MP之间通过一台设备连接,主LSP经过这台设备。当这台设备失效时,流量可以切换到Bypass LSP上
RSVP-TE实现
RSVP(Resource Reservation Protocol,资源预留协议)是为IntServ(Integrated Service,综合业务模型)而设计的,用于在一条路径的各节点上进行资源预留。RSVP工作在传输层,但不参与应用数据的传送,是一种Internet上的控制协议,类似于ICMP。简单来说,RSVP具有以下几个主要特点:
单向;
面向接收者,由接收者发起对资源预留的请求,并维护资源预留信息;
使用“软状态”(soft state)机制维护资源预留信息。
RSVP经扩展后可以支持MPLS标签的分发,并在传送标签绑定消息的同时携带资源预留信息,这种扩展后的RSVP称为RSVP-TE,作为一种信令协议用于在MPLS TE中建立LSP隧道。
RSVP-TE基本概念
软状态“软状态”是指在RSVP-TE中,通过消息的定时刷新来维持节点上的资源预留状态。资源预留状态包括由Path消息创建的路径状态(path state)和由Resv消息创建的预留状态(reservation state)。这两种状态分别由Path消息和Resv消息定时刷新。对于某个状态,如果连续没有收到刷新消息,这个状态将被删除。
资源预留类型使用RSVP-TE建立的LSP都具有某种资源预留类型(reservation style),在建立RSVP会话时,由接收者决定此会话使用哪种预留类型,从而决定可以使用哪些LSP。目前设备支持以下两种预留类型:
FF(Fixed-Filter style):固定过滤器类型。为每个发送者单独预留资源,不能与同一会话中其他发送者共享资源。
SE(Shared-Explicit style):共享显式类型。为同一个会话的发送者建立一个预留,可以共享资源。
make-before-break: make-before-break是指一种可以在尽可能不丢失数据,也不占用额外带宽的前提下改变MPLS TE隧道属性的机制。
RSVP-TE消息类型:
Path消息:由发送者沿数据报文传输的方向向下游发送,在沿途所有节点上保存路径状态(path state)。
Resv消息:由接收者沿数据报文传输的方向逆向发送,在沿途所有节点上进行资源预留,并创建和维护预留状态(reservationstate)。
PathTear消息:此消息产生后马上向下游发送,并立即删除沿途节点的路径状态和相关的预留状态。
ResvTear消息:此消息产生后马上向上游发送,并立即删除沿途节点的预留状态。
PathErr消息:如果在处理Path消息的过程中发生了错误,就会向上游发送PathErr消息,PathErr消息不影响沿途节点的状态,只是把错误报告给发送者。
ResvErr消息:如果在处理Resv消息的过程中发生了错误,或者由于抢占导致预留被破坏,就会向下游节点发送ResvErr消息。
ResvConf消息:该消息发往接收者,用于对预留消息进行确认。
Hello消息:在两个直连的RSVP邻居之间建立和维持链路局部的邻居关系。
RSVP的TE扩展主要是在其Path消息和Resv消息中增加新的对象,新增对象除了可以携带标签绑定信息外,还可以携带对LSR在沿途寻找路径时的限制信息,从而支持CR-LSP的功能,并支持FRR。
Path消息新增的对象包括:LABEL_REQUEST、EXPLICIT_ROUTE、RECORD_ROUTE和SESSION_ATTRIBUTE。
Resv消息新增的对象包括:LABEL和RECORD_ROUTE。LABEL_REQUEST对象包含在Path消息中,为LSP请求标签绑定,该对象也保存在路径状态块PSB(Path State Block)中。接收到该对象的节点将分配的标签通过Resv消息中的LABEL对象通知上游节点,从而完成标签的发布和传递。
Ingress LSR产生携带标签请求信息的Path消息,沿着通过CSPF计算出的路径逐跳发送给Egress LSR;
Egress LSR收到Path消息后,产生携带预留信息和标签的Resv消息,沿着Path消息发送的相反路径逐跳返回Ingress LSR,同时,Resv消息在沿途的LSR上进行资源预留;
当Ingress LSR收到Resv消息时,LSP建立成功。
采用RSVP-TE建立的LSP具有资源预留功能,沿途的LSR可以为该LSP分配一定的资源,使在此LSP上传送的业务得到保证。
RSVP刷新机制:RSVP通过Refresh消息来维护路径和预留状态,Refresh消息不仅用于在RSVP邻居节点进行状态同步,也用于恢复丢失的RSVP消息。Refresh消息并不是一种新的消息,它是以前发布过的消息的再次传送,Refresh消息中携带的主要信息和传送时使用的路径都与它要刷新的消息完全一致。只有Path消息和Resv消息才可能是Refresh消息。由于Refresh消息是定时发送的,当网络中的RSVP会话比较多时,Refresh消息会加重网络负载;而对于时延敏感的应用,当消息丢失时,等待通过Refresh消息恢复的时间可能无法接受。简单地调整刷新间隔并不能同时解决这两类问题。用于解决Refresh消息带来的上述问题。
Message_ID扩展:SVP本身使用Raw IP发送消息,RFC 2961中定义的Message_ID扩展机制增加了可以在RSVP消息中携带的对象,其中,Message_ID和Message_ID_ACK对象用于RSVP消息确认,从而提高RSVP消息发送的可靠性。在接口使能Message_ID机制后,可以配置重传功能,设定RSVP消息的重传参数。如果在重传初始时间间隔内(假设为Rf秒),没有收到应答消息ACK,经过(1+Delta)×Rf秒后,将重传此消息。
摘要刷新扩展Srefresh(Summary Refresh)可以不传送标准的Path或Resv消息,而仍能实现对RSVP的状态刷新,从而可以减少网络上的Refresh消息流量,并加快节点对这类消息的处理速度。摘要刷新扩展需要与Message_ID扩展配合使用。只有那些已经被包含Message_ID对象的Path和Resv消息发布过的状态才能使用摘要刷新扩展机制刷新。
PSB、RSB与BSB的超时:为建立LSP,发送者在Path消息中携带LABEL_REQUEST对象,接收者收到带有LABEL_REQUEST对象的Path消息后,就会分配一个标签,并将标签放在Resv消息的LABEL对象中。LABEL_REQUEST对象保存在上游节点的PSB(Path State Block,路径状态块)中,LABEL对象则保存在下游节点的RSB(ReservationState Block,预留状态块)中。当连续未收到刷新消息的次数超过PSB或RSB的超时倍数(当达到此数值时即为超时)时,PSB或RSB中相应的状态将被删除。假设有一个资源预留请求,在某些节点上没有通过准入控制,有时可能不希望立即删除这个请求的状态,但这个请求也不应该阻止其他请求使用它预留的资源。这种情况下,节点将进入阻塞状态(Blockade State),在下游节点生成BSB(Blockade State Block,阻塞状态块)。当连续未收到刷新消息的次数超过阻塞状态超时倍数时,BSB中相应的状态被删除。
RSVP-TE GR功能依赖于RSVP-TE的Hello扩展能力,通过扩展的RSVP Hello报文向邻居通告自己的GR能力和相关时间参数。设备和邻居如果都具备RSVP GR能力,那么在完成GR参数的交互后,就可以在检测到对方发生GR重启时,充当对方的GR Helper,保证在GR Restarter重启的过程中,数据转发不会中断。当GR Restarter发生重启时,GR Helper连续丢失的Hello报文次数超过了配置的值,由此判定GR Restarter发生了重启。此时GR Helper会保留与该邻居相关的软状态信息,并保持向对方周期性发送Hello报文,直到重启定时器(Restart Timer)超时。在重启定时器超时前,如果GR Helper邻居和GR Restarter重新建立了Hello会话协商,那么启动恢复定时器,并触发信令报文交互以恢复原有的软状态;否则,将删除与该邻居相关的所有RSVP软状态信息和转发表项。如果恢复定时器超时,则删除那些在GR恢复过程中没有恢复的软状态和表项信息
PC1配置:
PC1#conf t
PC1(config)#no ip routing
PC1(config)#ipdefault-gateway 192.168.0.1
PC1(config)#int fa0/0
PC1(config-if)#ip add192.168.0.2 255.255.255.0
PC1(config-if)#no sh
PC1(config-if)#exit
PC2配置:
PC2#conf t
PC2(config)#no ip routing
PC2(config)#ipdefault-gateway 192.168.1.1
PC2(config)#int fa0/0
PC2(config-if)#ip add192.168.1.2 255.255.255.0
PC2(config-if)#no sh
PC2(config-if)#exit
R1配置:
R1#conf t
R1(config)#ip cef
R1(config)#mpls ip
R1(config)#mpls label pro ldp
R1(config)#mpls traffic-engtunnels // 全局模式下开启mpls-te功能
R1(config)#in lo 0
R1(config-if)#ip add 1.1.1.1255.255.255.255
R1(config-if)#exit
R1(config)#int fa0/0
R1(config-if)#ip add192.168.0.1 255.255.255.0
R1(config-if)#no sh
R1(config-if)#exit
R1(config)#int fa1/0
R1(config-if)#mpls ip
R1(config-if)#mplstraffic-eng tunnels // 接口模式下开启mpls-te功能
R1(config-if)#ip rsvpbandwidth 10000 //配置接口的总te带宽
R1(config-if)#ip add192.168.12.1 255.255.255.0
R1(config-if)#no sh
R1(config-if)#exit
R1(config)#int fa2/0
R1(config-if)#mpls ip
R1(config-if)#mplstraffic-eng tunnels
R1(config-if)#ip rsvpbandwidth 10000
R1(config-if)#ip add192.168.13.1 255.255.255.0
R1(config-if)#no sh
R1(config-if)#exit
R1(config)#int tunnel 1//设置隧道0
R1(config-if)#ip unnumberedloopback 0 //设置MPLS TE的ID使用loopback 0
R1(config-if)#tunneldestination 4.4.4.4//隧道目的地址
R1(config-if)#tunnel modempls traffic-eng //隧道开启MPLS-TE功能
R1(config-if)#tunnel mplstraffic-eng autoroute announce //开启MPLS-TE自动路由发布
R1(config-if)#tunnel mplstraffic-eng priority 1 1 //设置隧道优先级
R1(config-if)#tunnel mplstraffic-eng bandwidth 3000 //配置该隧道的带宽
R1(config-if)#tunnel mplstraffic-eng path-option 1 dynamic //自动建立路径
R1(config-if)#tunnel mplstraffic-eng record-route//配置隧道记录标签信息
R1(config-if)#exit
R1(config)#int tunnel 2
R1(config-if)#ip unnumberedloopback 0
R1(config-if)#tunneldestination 4.4.4.4
R1(config-if)#tunnel modempls traffic-eng
R1(config-if)#tunnel mplstraffic-eng autoroute announce
R1(config-if)#tunnel mplstraffic-eng priority 2 2
R1(config-if)#tunnel mplstraffic-eng bandwidth 3000
R1(config-if)# tunnel mplstraffic-eng path-option 2 dynamic
R1(config-if)#tunnel mplstraffic-eng record-route
R1(config-if)#exit
R1(config)#router ospf 100
R1(config-router)#mplstraffic-eng router-id loopback 0 //在ospf area 0中设置mpls-te ID
R1(config-router)#mplstraffic-eng area 0//在ospf area 0中支持mpls-te
R1(config-router)#net 0.0.0.00.0.0.0 area 0
R1(config-router)#exit
R2配置:
R2#conf t
R2(config)#ip cef
R2(config)#mpls ip
R2(config)#mpls lab
R2(config)#mpls label pro ldp
R2(config)#mpls traffic-engtunnels
R2(config)#int fa0/0
R2(config-if)#mpls ip
R2(config-if)#mpls traffic-eng tunnels
R2(config-if)#ip rsvpbandwidth 10000
R2(config-if)#ip add192.168.12.2 255.255.255.0
R2(config-if)#no sh
R2(config-if)#exit
R2(config)#int fa0/1
R2(config-if)#mpls ip
R2(config-if)#mplstraffic-eng tunnels
R2(config-if)#ip rsvpbandwidth 10000
R2(config-if)#ip add192.168.24.2 255.255.255.0
R2(config-if)#no sh
R2(config-if)#exit
R2(config)#int lo 0
R2(config-if)#ip add 2.2.2.2255.255.255.255
R2(config-if)#exit
R2(config)#router ospf 100
R2(config-router)#mpls traffic-engrouter-id loopback 0
R2(config-router)#mplstraffic-eng area 0
R2(config-router)#net 0.0.0.0255.255.255.255 area 0
R2(config-router)#exit
R3配置:
R3#conf t
R3(config)#ip cef
R3(config)#mpls ip
R3(config)#mpls label pro ldp
R3(config)#mpls traffic-engtunnels
R3(config)#int fa0/0
R3(config-if)#mpls ip
R3(config-if)#mplstraffic-eng tunnels
R3(config-if)#ip rsvpbandwidth 10000
R3(config-if)#ip add192.168.13.3 255.255.255.0
R3(config-if)#no sh
R3(config-if)#exit
R3(config)#int fa0/1
R3(config-if)#mpls ip
R3(config-if)#mplstraffic-eng tunnels
R3(config-if)#ip rsvpbandwidth 10000
R3(config-if)#ip add192.168.34.3 255.255.255.0
R3(config-if)#no sh
R3(config-if)#exit
R3(config)#int lo 0
R3(config-if)#ip add 3.3.3.3255.255.255.255
R3(config-if)#exit
R3(config)#router ospf 100
R3(config-router)#mplstraffic-eng router-id loopback 0
R3(config-router)#mplstraffic-eng area 0
R3(config-router)#net 0.0.0.0255.255.255.255 area 0
R3(config-router)#exit
R4配置:
R4#conf t
R4(config)#ip cef
R4(config)#mpls ip
R4(config)#mpls label pro ldp
R4(config)#mpls traffic-engtunnels
R4(config)#int fa0/0
R4(config-if)#ip add192.168.1.1 255.255.255.0
R4(config-if)#no sh
R4(config-if)#exit
R4(config)#int fa1/0
R4(config-if)#mpls ip
R4(config-if)#mplstraffic-eng tunnels
R4(config-if)#ip rsvpbandwidth 10000
R4(config-if)#ip add192.168.24.4 255.255.255.0
R4(config-if)#no sh
R4(config-if)#exit
R4(config)#int fa2/0
R4(config-if)#mpls ip
R4(config-if)#mplstraffic-eng tunnels
R4(config-if)#ip rsvpbandwidth 10000
R4(config-if)#ip add192.168.34.4 255.255.255.0
R4(config-if)#no sh
R4(config-if)#exit
R4(config)#int lo 0
R4(config-if)#ip add 4.4.4.4255.255.255.255
R4(config-if)#exit
R4(config)#router ospf 100
R4(config-router)#mplstraffic-eng router-id loopback 0
R4(config-router)#mplstraffic-eng area 0
R4(config-router)#net 0.0.0.0255.255.255.255 area 0
R4(config-router)#exit
R4(config)#ip explicit-pathname T1 //建立T1静态路径
R4(cfg-ip-expl-path)#next-address192.168.24.2
R4(cfg-ip-expl-path)#next-address192.168.12.1
R4(cfg-ip-expl-path)#exit
R4(config)#ip explicit-pathname T2//建立T2静态路径
R4(cfg-ip-expl-path)#next-address192.168.34.3
R4(cfg-ip-expl-path)#next-address192.168.13.1
R4(cfg-ip-expl-path)#exit
R4(config)#int tunnel 1
R4(config-if)#ip unnumberedlo 1
R4(config-if)#tunneldestination 1.1.1.1
R4(config-if)#tunnel modempls traffic-eng
R4(config-if)#tunnel mplstraffic-eng priority 1 1
R4(config-if)#tunnel mplstraffic-eng bandwidth 3000
R4(config-if)#tunnel mplstraffic-eng autoroute announce
R4(config-if)#tunnel mplstraffic-eng path-option 1 explicit name T1 //使用手动建立的路径T1
R4(config-if)#tunnel mplstraffic-eng record-route
R4(config-if)#exit
R4(config)#int tunnel 2
R4(config-if)#ip unnumberedloopback 0
R4(config-if)#tunneldestination 1.1.1.1
R4(config-if)#tunnel modempls traffic-eng
R4(config-if)#tunnel mplstraffic-eng priority 1 1
R4(config-if)#tunnel mplstraffic-eng bandwidth 3000
R4(config-if)#tunnel mplstraffic-eng autoroute announce
R4(config-if)#tunnel mplstraffic-eng path-option 2 explicit name T2
R4(config-if)#tunnel mplstraffic-eng record-route
R4(config-if)#exit
完成配置,查看效果
R4#sh ip rsvp neighbor
0.0.0.0 Unknown
192.168.24.2 RSVP
192.168.34.3 RSVP
R4#sh mpls forwarding-table
Local Outgoing Prefix Bytes tag Outgoing Next Hop
tag tag or VC or Tunnel Id switched interface
16 Pop tag 3.3.3.3/32 0 Fa2/0 192.168.34.3
17 Pop tag 2.2.2.2/32 0 Fa1/0 192.168.24.2
18 Pop tag 192.168.12.0/24 0 Fa1/0 192.168.24.2
19 Pop tag 192.168.13.0/24 0 Fa2/0 192.168.34.3
20 Pop tag [T] 1.1.1.1/32 0 Tu2 point2point
Pop tag [T] 1.1.1.1/32 0 Tu1 point2point
21 Untagged[T] 192.168.0.0/24 0 Tu2 point2point
Untagged[T] 192.168.0.0/24 0 Tu1 point2point
[T] Forwarding through a TSP tunnel.
View additional tagging info with the'detail' option
R4#sh mpls traffic-engtunnels
Name: R4_t1 (Tunnel1)Destination: 1.1.1.1
Status:
Admin: up Oper: up Path: valid Signalling: connected
path option 1, type explicit T1 (Basis forSetup, path weight 11)
Config Parameters:
Bandwidth: 3000 kbps (Global) Priority: 1 1 Affinity: 0x0/0xFFFF
Metric Type: TE (default)
AutoRoute: enabled LockDown: disabled Loadshare: 3000 bw-based
auto-bw: disabled
InLabel : -
OutLabel : FastEthernet1/0, 17
RSVP Signalling Info:
Src 4.4.4.4, Dst 1.1.1.1, Tun_Id 1,Tun_Instance 11
RSVP Path Info:
My Address: 192.168.24.4
Explicit Route: 192.168.24.2 192.168.12.2192.168.12.1 1.1.1.1
Record Route:
Tspec: ave rate=3000 kbits, burst=1000bytes, peak rate=3000 kbits
RSVP Resv Info:
--More--
*Mar 1 00:20:21.323: %CDP-4-DUPLEX_MISMATCH:duplex mismatch discovered on FastEthernet2/0 (not half duplex), with R3FastEthernet0/1 (half duplex).
Record Route: 192.168.24.2 192.168.12.1
Fspec: ave rate=3000 kbits, burst=1000bytes, peak rate=3000 kbits
History:
Tunnel:
Time since created: 20 minutes, 9 seconds
Time since path change: 19 minutes, 21seconds
Current LSP:
Uptime: 19 minutes, 21 seconds
Name: R4_t2 (Tunnel2)Destination: 1.1.1.1
Status:
Admin: up Oper: up Path: valid Signalling: connected
path option 2, type explicit T2 (Basis forSetup, path weight 11)
Config Parameters:
Bandwidth: 3000 kbps (Global) Priority: 1 1 Affinity: 0x0/0xFFFF
Metric Type: TE (default)
AutoRoute: enabled LockDown: disabled Loadshare: 3000 bw-based
auto-bw: disabled
InLabel : -
OutLabel : FastEthernet2/0, 16
RSVP Signalling Info:
Src 4.4.4.4, Dst 1.1.1.1, Tun_Id 2,Tun_Instance 11
RSVP Path Info:
My Address: 192.168.34.4
Explicit Route: 192.168.34.3 192.168.13.3192.168.13.1 1.1.1.1
Record Route:
Tspec: ave rate=3000 kbits, burst=1000bytes, peak rate=3000 kbits
RSVP Resv Info:
Record Route: 192.168.34.3 192.168.13.1
Fspec: ave rate=3000 kbits, burst=1000bytes, peak rate=3000 kbits
History:
Tunnel:
Time since created: 20 minutes, 10seconds
Time since path change: 19 minutes, 21seconds
Current LSP:
Uptime: 19 minutes, 21 seconds
LSP Tunnel R1_t1 issignalled, connection is up
InLabel : FastEthernet1/0, implicit-null
OutLabel : -
RSVP Signalling Info:
Src 1.1.1.1, Dst 4.4.4.4, Tun_Id 1,Tun_Instance 8
RSVP Path Info:
My Address: 4.4.4.4
Explicit Route: NONE
Record Route: NONE
Tspec: ave rate=3000 kbits, burst=1000bytes, peak rate=3000 kbits
RSVP Resv Info:
Record Route: NONE
Fspec: ave rate=3000 kbits, burst=1000bytes, peak rate=3000 kbits
LSP Tunnel R1_t2 issignalled, connection is up
InLabel : FastEthernet2/0, implicit-null
OutLabel : -
RSVP Signalling Info:
Src 1.1.1.1, Dst 4.4.4.4, Tun_Id 2,Tun_Instance 11
RSVP Path Info:
My Address: 4.4.4.4
Explicit Route: NONE
Record Route: NONE
Tspec: ave rate=3000 kbits, burst=1000bytes, peak rate=3000 kbits
RSVP Resv Info:
Record Route: NONE
Fspec: ave rate=3000 kbits, burst=1000bytes, peak rate=3000 kbits
实验十一、MPLS Traffic Engineering for per VRF MPLSVPN
Red1配置:
Red1#conf t
Red1(config)#intlo 0
Red1(config-if)#ipadd 1.1.1.1 255.255.255.255
Red1(config-if)#exit
Red1(config)#intfa0/0
Red1(config-if)#ipadd 172.168.1.1 255.255.255.0
Red1(config-if)#nosh
Red1(config-if)#exit
Red1(config)#routerospf 65501
Red1(config-router)#net0.0.0.0 255.255.255.255 area 0
Red1(config-router)#exit
Blue1配置:
Blue1#conf t
Blue1(config)#intlo 0
Blue1(config-if)#ipadd 2.2.2.2 255.255.255.255
Blue1(config-if)#exit
Blue1(config)#intfa0/0
Blue1(config-if)#ipadd 172.168.2.1 255.255.255.0
Blue1(config-if)#nosh
Blue1(config-if)#exit
Blue1(config)#routerospf 65502
Blue1(config-router)#net0.0.0.0 255.255.255.255 area 0
Blue1(config-router)#exit
Red2配置:
Red2#conf t
Red2(config)#intlo 0
Red2(config-if)#ipadd 11.11.11.11 255.255.255.255
Red2(config-if)#exit
Red2(config)#intfa0/0
Red2(config-if)#ipadd 192.168.11.1 255.255.255.0
Red2(config-if)#nosh
Red2(config-if)#exit
Red2(config)#routerospf 65501
Red2(config-router)#net0.0.0.0 255.255.255.255 area 0
Red2(config-router)#exit
Blue2配置:
Blue2#conf t
Blue2(config)#intlo 0
Blue2(config-if)#ipadd 22.22.22.22 255.255.255.255
Blue2(config-if)#exit
Blue2(config)#intfa0/0
Blue2(config-if)#ipadd 192.168.22.1 255.255.255.0
Blue2(config-if)#nosh
Blue2(config-if)#exit
Blue2(config)#routerospf 65502
Blue2(config-router)#net0.0.0.0 255.255.255.255 area 0
Blue2(config-router)#exit
ISP1配置:
ISP1#conf t
ISP1(config)#ipcef
ISP1(config)#mplsip
ISP1(config)#mplslabel protocol ldp
ISP1(config)#mplstraffic-eng tunnels
ISP1(config)#nompls ip propagate-ttl
ISP1(config)#intfa0/0
ISP1(config-if)#mplsip
ISP1(config-if)#mplstraffic-eng tunnels
ISP1(config-if)#iprsvp bandwidth 10000
ISP1(config-if)#ipadd 202.11.11.1 255.255.255.0
ISP1(config-if)#nosh
ISP1(config-if)#exit
ISP1(config)#intfa0/1
ISP1(config-if)#mplsip
ISP1(config-if)#mplstraffic-eng tunnels
ISP1(config-if)#iprsvp bandwidth 10000
ISP1(config-if)#ipadd 202.12.12.1 255.255.255.0
ISP1(config-if)#nosh
ISP1(config-if)#exit
ISP1(config)#intlo 0
ISP1(config-if)#ipadd 111.111.111.111 255.255.255.255
ISP1(config-if)#exit
ISP1(config)#routerospf 1
ISP1(config-router)#mplstraffic-eng router-id loopback 0
ISP1(config-router)#mplstraffic-eng area 0
ISP1(config-router)#net0.0.0.0 255.255.255.255 area 0
ISP1(config-router)#exit
ISP2配置:
ISP2#conf t
ISP2(config)#ipcef
ISP2(config)#mplsip
ISP2(config)#mplslabel protocol ldp
ISP2(config)#mplstraffic-eng tunnels
ISP2(config)#nompls ip propagate-ttl
ISP2(config)#intfa0/0
ISP2(config-if)#ipadd 202.21.21.1 255.255.255.0
ISP2(config-if)#mplsip
ISP2(config-if)#mplstraffic-eng tunnels
ISP2(config-if)#iprsvp bandwidth 10000
ISP2(config-if)#nosh
ISP2(config-if)#exit
ISP2(config)#intfa0/1
ISP2(config-if)#mplsip
ISP2(config-if)#mplstraffic-eng tunnels
ISP2(config-if)#iprsvp bandwidth 10000
ISP2(config-if)#ipadd 202.22.22.1 255.255.255.0
ISP2(config-if)#nosh
ISP2(config-router)#exit
ISP2(config)#intlo 0
ISP2(config-if)#ipadd 222.222.222.222 255.255.255.255
ISP2(config-if)#exit
ISP2(config)#routerospf 1
ISP2(config-router)#mplstraffic-eng router-id lo 0
ISP2(config-router)#mplstraffic-eng area 0
ISP2(config-router)#net0.0.0.0 255.255.255.255 area 0
ISP2(config-router)#exit
PE1配置:
PE1#conf t
PE1(config)#mplsip
PE1(config)#ipcef
PE1(config)#mplslabel protocol ldp
PE1(config)#mplstraffic-eng tunnels
PE1(config)#nompls ip propagate-ttl
PE1(config)#intlo 0
PE1(config-if)#ipadd 100.100.100.100 255.255.255.255
PE1(config-if)#exit
PE1(config)#intfa1/0
PE1(config-if)#mplsip
PE1(config-if)#mplstraffic-eng tunnels
PE1(config-if)#iprsvp bandwidth 10000
PE1(config-if)#ipadd 202.11.11.2 255.255.255.0
PE1(config-if)#nosh
PE1(config-if)#exit
PE1(config)#intfa2/0
PE1(config-if)#mplsip
PE1(config-if)#mplstraffic-eng tunnels
PE1(config-if)#iprsvp bandwidth 10000
PE1(config-if)#ipadd 202.21.21.2 255.255.255.0
PE1(config-if)#nosh
PE1(config-if)#exit
PE1(config)#routerospf 1
PE1(config-router)#mplstraffic-eng router-id loopback 0
PE1(config-router)#mplstraffic-eng area 0
PE1(config-router)#net202.11.11.0 0.0.0.255 area 0
PE1(config-router)#net202.21.21.0 0.0.0.255 area 0
PE1(config-router)#net100.100.100.100 0.0.0.0 area 0
PE1(config-router)#exit
PE1(config)#ipvrf Red
PE1(config-vrf)#rd1:1
PE1(config-vrf)#route-targetboth 1:1
PE1(config)#ipvrf Blue
PE1(config-vrf)#rd2:2
PE1(config-vrf)#route-targetboth 2:2
PE1(config-vrf)#exit
PE1(config)#intfa0/0
PE1(config-if)#ipvrf forwarding Red
PE1(config-if)#ipadd 172.168.1.2 255.255.255.0
PE1(config-if)#nosh
PE1(config-if)#exit
PE1(config)#intfa0/1
PE1(config-if)#ipvrf forwarding Blue
PE1(config-if)#ipadd 172.168.2.2 255.255.255.0
PE1(config-if)#nosh
PE1(config)#routerospf 65501 vrf Red
PE1(config-router)#net172.168.1.0 0.0.0.255 area 0
PE1(config-router)#exit
PE1(config)#routerospf 65502 vrf Blue
PE1(config-router)#net172.168.2.0 0.0.0.255 area 0
PE1(config-router)#exit
PE1(config)#routerbgp 1
PE1(config-router)#nei200.200.200.200 remote-as 1
PE1(config-router)#nei200.200.200.200 update-source loopback 0
PE1(config-router)#address-familyvpnv4
PE1(config-router-af)#nei200.200.200.200 activate
PE1(config-router-af)#nei200.200.200.200 send-community both
PE1(config-router-af)#exit
PE1(config-router)#address-familyipv4 vrf Red
PE1(config-router-af)#redistributeospf 65501 vrf Red
PE1(config-router-af)#exit
PE1(config-router)#address-familyipv4 vrf Blue
PE1(config-router-af)#redistributeospf 65502 vrf Blue
PE1(config-router-af)#exit
PE1(config-router)#exit
PE1(config)#routerospf 65501 vrf Red
PE1(config-router)#redistributebgp 1 subnets
PE1(config-router)#exit
PE1(config)#routerospf 65502 vrf Blue
PE1(config-router)#redistributebgp 1 subnets
PE1(config-router)#exit
PE1(config)#interfacetunnel 1
PE1(config-if)#mplsip
PE1(config-if)#IPunnumbered loopback 0
PE1(config-if)#tunnelmode mpls traffic-eng
PE1(config-if)#tunneldestination 200.200.200.200
PE1(config-if)#tunnelmpls traffic-eng bandwidth 3000
PE1(config-if)#tunnelmpls traffic-eng path-option 1 explicit name ISP1
PE1(config-if)#tunnelmpls traffic-eng path-option 2 dynamic
PE1(config-if)#tunnelmpls traffic-eng priority 1 1
PE1(config-if)#tunnelmpls traffic-eng autoroute announce
PE1(config-if)#tunnelmpls traffic-eng record-route
PE1(config-if)#exit
PE1(config)#inttunnel 2
PE1(config-if)#mplsip
PE1(config-if)#tunnelmode mpls traffic-eng
PE1(config-if)#ipunnumbered loopback 0
PE1(config-if)#tunneldestination 200.200.200.200
PE1(config-if)#tunnelmpls traffic-eng bandwidth 2000
PE1(config-if)#tunnelmpls traffic-eng path-option 1 explicit name ISP2
PE1(config-if)#tunnelmpls traffic-eng path-option 2 dynamic
PE1(config-if)#tunnelmpls traffic-eng priority 2 2
PE1(config-if)#tunnelmpls traffic-eng autoroute announce
PE1(config-if)#tunnelmpls traffic-eng record-route
PE1(config-if)#exit
PE1(config)#ipexplicit-path name ISP1
PE1(cfg-ip-expl-path)#next-address202.11.11.1
PE1(cfg-ip-expl-path)#next-address202.12.12.2
PE1(cfg-ip-expl-path)#exit
PE1(config)#ipexplicit-path name ISP2
PE1(cfg-ip-expl-path)#next-address202.21.21.1
PE1(cfg-ip-expl-path)#next-address202.22.22.2
PE1(cfg-ip-expl-path)#exit
PE2配置:
PE2#conf t
PE2(config)#ipcef
PE2(config)#mplsip
PE2(config)#mplslabel protocol ldp
PE2(config)#mplstraffic-eng tunnels
PE2(config)#nompls ip propagate-ttl
PE2(config)#intlo 0
PE2(config-if)#ipadd 200.200.200.200 255.255.255.255
PE2(config-if)#exit
PE2(config)#intfa1/0
PE2(config-if)#mplsip
PE2(config-if)#mplstraffic-eng tunnels
PE2(config-if)#iprsvp bandwidth 10000
PE2(config-if)#ipadd 202.12.12.2 255.255.255.0
PE2(config-if)#nosh
PE2(config-if)#exit
PE2(config)#intfa2/0
PE2(config-if)#mplsip
PE2(config-if)#mplstraffic-eng tunnels
PE2(config-if)#iprsvp bandwidth 10000
PE2(config-if)#ipadd 202.22.22.2 255.255.255.0
PE2(config-if)#nosh
PE2(config-if)#exit
PE2(config)#routerospf 1
PE2(config-router)#mplstraffic-eng router-id loopback 0
PE2(config-router)#mplstraffic-eng area 0
PE2(config-router)#net202.12.12.0 0.0.0.255 area 0
PE2(config-router)#net202.22.22.0 0.0.0.255 area 0
PE2(config-router)#net200.200.200.200 0.0.0.0 area 0
PE2(config-router)#exit
PE2(config)#ipvrf Red
PE2(config-vrf)#rd1:1
PE2(config-vrf)#route-targetboth
PE2(config-vrf)#route-targetboth 1:1
PE2(config)#ip vrfBlue
PE2(config-vrf)#rd2:2
PE2(config-vrf)#route-targetboth 2:2
PE2(config-vrf)#exit
PE2(config)#intfa0/0
PE2(config-if)#ipvrf forwarding Red
PE2(config-if)#ipadd 192.168.11.2 255.255.255.0
PE2(config-if)#nosh
PE2(config-if)#exit
PE2(config)#intfa0/1
PE2(config-if)#ipvrf forwarding Blue
PE2(config-if)#ipadd 192.168.22.2 255.255.255.0
PE2(config-if)#nosh
PE2(config-if)#exit
PE2(config)#routerospf 65501 vrf Red
PE2(config-router)#net192.168.11.0 0.0.0.255 area 0
PE2(config-router)#exit
PE2(config)#routerospf 65502 vrf Blue
PE2(config-router)#net192.168.22.0 0.0.0.255 area 0
PE2(config-router)#exit
PE2(config)#routerbgp 1
PE2(config-router)#nei100.100.100.100 remote-as 1
PE2(config-router)#nei100.100.100.100 update-source loopback 0
PE2(config-router)#address-familyvpnv4
PE2(config-router-af)#nei100.100.100.100 activate
PE2(config-router-af)#nei100.100.100.100 send-community both
PE2(config-router-af)#exit
PE2(config-router)#address-familyipv4 vrf Red
PE2(config-router-af)#redistributeospf 65501 vrf Red
PE2(config-router-af)#exit
PE2(config-router)#address-familyipv4 vrf Blue
PE2(config-router-af)#redistributeospf 65502 vrf Blue
PE2(config-router-af)#exit
PE2(config)#routerospf 65501 vrf Red
PE2(config-router)#redistributebgp 1 subnets
PE2(config-router)#exit
PE2(config)#routerospf 65502 vrf Blue
PE2(config-router)#redistributebgp 1 subnets
PE2(config-router)#exit
PE2(config)#inttunnel 1
PE2(config-if)#mplsip
PE2(config-if)#ipunn loopback 0
PE2(config-if)#tunnelmode mpls traffic-eng
PE2(config-if)#tunneldestination 100.100.100.100
PE2(config-if)#tunnelmpls traffic-eng bandwidth 2000
PE2(config-if)#tunnelmpls traffic-eng path-option 1 explicit name ISP1
PE2(config-if)#tunnelmpls traffic-eng path-option 2 dynamic
PE2(config-if)#tunnelmpls traffic-eng priority 1 1
PE2(config-if)#tunnelmpls traffic-eng autoroute announce
PE2(config-if)#tunnelmpls traffic-eng record-route
PE2(config-if)#exit
PE2(config)#inttunnel 2
PE2(config-if)#mplsip
PE2(config-if)#tunnelmode mpls traffic-eng
PE2(config-if)#ipunnumbered loopback 0
PE2(config-if)#tunneldestination 100.100.100.100
PE2(config-if)#tunnelmpls traffic-eng bandwidth 2000
PE2(config-if)#tunnelmpls traffic-eng path-option 1 explicit name ISP2
PE2(config-if)#tunnelmpls traffic-eng path-option 2 dynamic
PE2(config-if)#tunnelmpls traffic-eng priority 2 2
PE2(config-if)#tunnelmpls traffic-eng autoroute announce
PE2(config-if)#tunnelmpls traffic-eng record-route
PE2(config-if)#exit
PE2(config)#ipexplicit-path name ISP1
PE2(cfg-ip-expl-path)#next-address202.12.12.1
PE2(cfg-ip-expl-path)#next-address202.11.11.2
PE2(cfg-ip-expl-path)#exit
PE2(config)#ipexplicit-path name ISP2
PE2(cfg-ip-expl-path)#next-address202.22.22.1
PE2(cfg-ip-expl-path)#next-address202.21.21.2
PE2(cfg-ip-expl-path)#exit
完成配置检查
Red1#tracerou11.11.11.11
Type escape sequenceto abort.
Tracing theroute to 11.11.11.11
1 172.168.1.2 64 msec 48 msec 24 msec
2 192.168.11.2 [MPLS: Label 21 Exp 0] 72 msec 68 msec 56 msec
3 192.168.11.1 108 msec 88 msec 80 msec
Blue1#traceroute22.22.22.22
Type escapesequence to abort.
Tracing theroute to 22.22.22.22
1 172.168.2.2 36 msec 48 msec 24 msec
2 192.168.22.2 [MPLS:Label 23 Exp 0] 68 msec 64 msec 48 msec
3 192.168.22.1 128 msec 84 msec 72 msec
PE1#sh mplsforwarding-table
Local Outgoing Prefix Bytes tag Outgoing Next Hop
tag tag or VC or Tunnel Id switched interface
16 Pop tag [T] 200.200.200.200/32 \
0 Tu1 point2point
Pop tag [T] 200.200.200.200/32 \
0 Tu2 point2point
17 Pop tag 111.111.111.111/32 \
0 Fa1/0 202.11.11.1
18 Pop tag 202.12.12.0/24 0 Fa1/0 202.11.11.1
19 Pop tag 202.22.22.0/24 0 Fa2/0 202.21.21.1
20 Pop tag 222.222.222.222/32 \
0 Fa2/0 202.21.21.1
21 Untagged 1.1.1.1/32[V] 0 Fa0/0 172.168.1.1
22 Aggregate 172.168.1.0/24[V] 2448
23 Untagged 2.2.2.2/32[V] 0 Fa0/1 172.168.2.1
24 Aggregate 172.168.2.0/24[V] 1392
[T] Forwarding through a TSP tunnel.
View additional tagging info with the'detail' option
PE1#sh ip cefvrf Red 11.11.11.11
11.11.11.11/32,version 13, epoch 0, per-destination sharing
0 packets, 0bytes
tag information set
local tag: VPN-route-head
fast tag rewrite with
Recursive rewrite via 200.200.200.200/32,tags imposed {21}
via 200.200.200.200, 0 dependencies,recursive
next hop 200.200.200.200, Tunnel1 via200.200.200.200/32
valid adjacency
tag rewrite with
Recursive rewrite via200.200.200.200/32, tags imposed {21}
Recursive load sharing using 200.200.200.200/32.
PE1#sh ip cefvrf Blue 22.22.22.22
22.22.22.22/32,version 13, epoch 0, per-destination sharing
0 packets, 0bytes
tag information set
local tag: VPN-route-head
fast tag rewrite with
Recursive rewrite via 200.200.200.200/32, tagsimposed {23}
via 200.200.200.200, 0 dependencies,recursive
next hop 200.200.200.200, Tunnel1 via200.200.200.200/32
valid adjacency
tag rewrite with
Recursive rewrite via 200.200.200.200/32,tags imposed {23}
Recursive load sharing using200.200.200.200/32.
#sh mplstraffic-eng tunnels
Name:PE1_t1 (Tunnel1) Destination: 200.200.200.200
Status:
Admin: up Oper: up Path: valid Signalling: connected
path option 2, type dynamic (Basis forSetup, path weight 11)
path option 1, type explicit ISP1
Config Parameters:
Bandwidth: 2000 kbps (Global) Priority: 1 1 Affinity: 0x0/0xFFFF
Metric Type: TE (default)
AutoRoute: enabled LockDown: disabled Loadshare: 2000 bw-based
auto-bw: disabled
InLabel : -
OutLabel : FastEthernet1/0, 22
RSVP Signalling Info:
Src 100.100.100.100, Dst200.200.200.200, Tun_Id 1, Tun_Instance 230
RSVP Path Info:
My Address: 202.11.11.2
Explicit Route: 202.11.11.1 202.12.12.1202.12.12.2 200.200.200.200
Record Route:
Tspec: ave rate=2000 kbits, burst=1000bytes, peak rate=2000 kbits
RSVP Resv Info:
Record Route: 202.11.11.1 202.12.12.2
Fspec: ave rate=2000 kbits, burst=1000bytes, peak rate=2000 kbits
History:
Tunnel:
Time since created: 1 hours, 9 minutes
Time since path change: 1 minutes, 13seconds
Current LSP:
Uptime: 1 minutes, 13 seconds
Prior LSP:
ID: path option 1 [229]
Removal Trigger: path option removed
Name:PE1_t2 (Tunnel2) Destination: 200.200.200.200
Status:
Admin: up Oper: up Path: valid Signalling: connected
path option 1, type explicit ISP2 (Basisfor Setup, path weight 11)
pathoption 2, type dynamic
Config Parameters:
Bandwidth: 2000 kbps (Global) Priority: 2 2 Affinity: 0x0/0xFFFF
Metric Type: TE (default)
AutoRoute: enabled LockDown: disabled Loadshare: 2000 bw-based
auto-bw: disabled
InLabel : -
OutLabel : FastEthernet2/0, 23
RSVP Signalling Info:
Src 100.100.100.100, Dst200.200.200.200, Tun_Id 2, Tun_Instance 251
RSVP Path Info:
My Address: 202.21.21.2
Explicit Route: 202.21.21.1 202.22.22.1202.22.22.2 200.200.200.200
Record Route:
Tspec: ave rate=2000 kbits, burst=1000bytes, peak rate=2000 kbits
RSVP Resv Info:
Record Route: 202.21.21.1 202.22.22.2
Fspec: ave rate=2000 kbits, burst=1000bytes, peak rate=2000 kbits
History:
Tunnel:
Time since created: 1 hours, 9 minutes
Time since path change: 2 minutes, 19seconds
Current LSP:
Uptime: 2 minutes, 19 seconds
Prior LSP:
ID: path option 2 [250]
Removal Trigger: path option removed
LSP TunnelPE2_t1 is signalled, connection is up
InLabel : FastEthernet1/0, implicit-null
OutLabel : -
RSVP Signalling Info:
Src 200.200.200.200, Dst100.100.100.100, Tun_Id 1, Tun_Instance 231
RSVP Path Info:
My Address: 100.100.100.100
Explicit Route: NONE
Record Route: 202.11.11.1 202.12.12.2
Tspec: ave rate=2000 kbits, burst=1000bytes, peak rate=2000 kbits
RSVP Resv Info:
Record Route:
Fspec: ave rate=2000 kbits, burst=1000bytes, peak rate=2000 kbits
LSP TunnelPE2_t2 is signalled, connection is up
InLabel : FastEthernet2/0, implicit-null
OutLabel : -
RSVP Signalling Info:
Src 200.200.200.200, Dst100.100.100.100, Tun_Id 2, Tun_Instance 235
RSVP Path Info:
My Address: 100.100.100.100
Explicit Route: NONE
Record Route: 202.21.21.1 202.22.22.2
Tspec: ave rate=2000 kbits, burst=1000bytes, peak rate=2000 kbits
RSVP Resv Info:
Record Route:
Fspec: ave rate=2000 kbits, burst=1000bytes, peak rate=2000 kbits
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。