CCNP路由实验之十二 MPLS

来源:互联网 发布:星摩小妖妖淘宝 编辑:程序博客网 时间:2024/05/15 10:35


                                                                                       CCNP路由实验之十二 MPLS

路由器的工作模式是十分重要的,它直接影响数据转发的速度和系统的性能,理解它们的不同对于我们合理的应用有着非常重要的意义。具体分析如下  

  1. Process Switching(进程交换) 这是一种最基本的交换模式,在这种模式下,一条数据流(flow)中的第一个包(packet)将被置入系统缓存(systembuffer)。其目的地址将会拿到路由表中去查询比对,路由器的处理器(CPUor Processer)同时将进行CRC校验,检查包是否正确。然后数据包的二层MAC地址将会被重写,替换为下一跳接口的MAC地址。这样的过程将会继续,对这条数据流(flow)中的第2个、第3个数据包„„相同的操作,包括查询路由表、重写MAC地址,CRC校验等。 这种方式无疑是延迟最大的,因为它要利用systembuffer以及processor去处理每个收到的包。但是仍然有机会使用这种交换方式,比如在进行基于每个包的负载分担时,或是debugip packet时。

  2. Fash Switching route-cacheswitching 快速交换要优于processswitching,它采用了routecache(路由缓存)来存储关于某条数据流(flow)的特定信息,当然会包括诸如目的MAC地址,目的接口等内容。这时我们只需要对一条数据流(flow)中的第一个包做processswitching,并把信息存入cache,所有后续数据包,可以不必再中断systemprocessor去执行查询等操作,直接从cache中提取目的接口,目的MAC地址等,这样大大加速了包转发速度。

    基于缓存交换的缺点:

    1、  是流量驱动的,依赖于第一个数据包的接收以生成缓存,这个数据包是在慢速交换路线中被交换的,导致了低性能和高CPU消耗。

    2、  缓存是基于IP地址的,条目众多,消耗大量内存。

    3、  由于路由抖动导致了无效缓存,促使网络不稳定。

  3. Optimum and Distributed Switching  这两种交换模式,从原理上来讲都与fastswitching极为相似,比如optimumswitching其实采用了一种经过优化的交换缓存(optimumedswitching cache),它的速度要较平常cache要快。  distributed switching mode需要使用VersatileInterface Card这种硬件卡,又称VIPcard.它会自已保存一份route cache,这样在查询时就不必要等待使用共享的系统缓存了(sharedsystem buffer),无论相对于fastswitching还是optimumswitching来讲,都是比较快的。 这两种模式一般只在思科高端设备上有所应用,比如7200系列路由器。或者12000系列路由器。 

  4. Netflow switching 通过一种标准的交换机制,处理了流的第一个数据包,然后就创建了网路流缓存。设计网络流交换的目的是,提供一种高效率的机制,来处理扩展或复杂的访问列表时,不必像其他的交换方式一样丧失同样多的系统性能。在网络流交换方式下,能够为每一个流收集详细的记账信息,对于新发布的IOS软件来说,网络流交换被专门用来实现该目的,而不再用来交换数据包了。在同时启用CEF和网络流交换的情况下,CEF为IP数据包提供交换路线,并生成流缓存,而网络流交换被用来向流收集器输出统计信息。这些流信息包括基于每个用户、每种协议、每个端口以及每种类型的服务统计信息。这些信息被广泛用于各种目的,例如:网络分析和规划、记账以及计费。经过统计,大致65536条数据流(flow)会耗费4MBsystembuffer

  5. 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提供了更好的一致性和稳定性

  6. ATM是以信元为基本单位进行信息传输、复用和交换的。ATM信元具有53字节的固定长度,其中前5个字节是信元头,其余48个字节是有效载荷。ATM信元头的功能有限,主要用来标识虚连接,另外也完成了一些功能有限的流量控制,拥塞控制,差错控制等功能。ATM数据传输技术屏弃了繁琐的路由查找,改为简单快速的标签交换,它适用于局域网广域网,它具有高速数据传输率和支持许多种类型如声音、数据、传真、实时视频、CD质量音频和图像的通信。ATM有它自己的参考模型,既不同于OSI模型,也不同于TCP/IP模型。它包括三层:物理层ATM层和ATM适配层。它想解决所有IP的问题,但由于它过于复杂的技术实现,且无法与已经广泛应用的IP融合,使atm只能做为IP链路层协议。

  7. 新一代交换式路由器基于硬件进行IP分组的转发,转发引擎可以是ASIC(专用集成电路 )专门为IP转发而设计的网络处理器。转发过程的所有细节全部采用硬件方式来实,包括查询和控制功能。交换式路由器性能与控制功能结合起来的关键在于ASIC能够读阅每一数据包内容的多少。 ASIC能够收集到的关于每一数据包流量的信息越多,可作用于该数据包流的控制水平就越精细。

  8. MPLS(多协议标签交换)是集成式的IPover ATM技术(即在帧中继或ATM交换上结合路由功能),数据包通过虚拟电路传送,只需在OSI第二层(数据链结层)执行硬件式交换(取代第三层(网络层)软件式选路)。它把IP选路与第二层标签交换整合为单一的系统,因此可解决Internet的路由问题,缩短数据包传送的时延,加快网络传输速度,适合于多媒体信息传送。MPLS最大的技术特色是可以指定数据包传送的先后顺序,它使用标签交换(labelswitching),网络路由器只需判别标签,即可进行传送。运作原理是为每个IP数据包提供一个标签,并由此决定数据包的路径及优先级。与MPLS兼容的路由器在把数据包转送到其路径前,仅读取数据包标签,无需读取每个数据包的IP地址及标头(网络速度会加快),然后把所传送的数据包置于帧中继或ATM的虚拟电路上,并迅速传送到终点路由器,减少数据包的时延。同时,按帧中继或ATM交换机提供的Qos,对所传送的数据包加以分级,大幅提升网络服务品质,提供多样化服务。随着ASIC技术的发展,基于硬件进行IP分组转发的路由查找速度已经不是阻碍网络发展的瓶颈。这使得MPLS在提高转发速度方面不再具备明显的优势。现在MPLS主要应用于流量工程TETraffic Engineering)、虚拟专用网VPNVirtual Private Network)、服务质量QoSQuality of Service)等应用

 

MPLS 独立于第二和第三层协议,诸如ATM IP。它提供了一种方式,将IP地址映射为简单的具有固定长度的标签,用于不同的包转发和包交换技术。它是现有路由和交换协议的接口,如IPATM帧中继资源预留协议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工作组到目前为止已经把在帧中继、ATMPPP链路以及IEEE802.3局域网上使用的标记实现了标准化。MPLS在帧中继和ATM上运行的一个好处是它为这些面向连接的技术带来了IP的任意连通性。目前MPLS的主要发展方向是在ATM方面。这主要是因为ATM具有很强的流量管理功能,能提供QoS方面的服务,ATMMPLS技术的结合能充分发挥在流量管理和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而产生的基于LIBLabelInforinationBase)的标签绑定功能。LER连到网络内部的LSRLSR执行基于LIB的标签交换,具有第三层转发分组和第二层交换分组的功能。同时也能运行传统IP选路协议和执行一个特殊控制协议与相邻LSR协调FEC/标签的绑定信息。LERLSR之间的LSP是通过LDP协议建立起来的。

  1. 转发等价类: MPLS作为一种分类转发技术,将具有相同转发处理方式的分组归为一类,称为FECForwarding EquivalenceClass,转发等价类)。相同FEC的分组在MPLS网络中将获得完全相同的处理。FEC的划分方式非常灵活,可以是以源地址、目的地址、源端口、目的端口、协议类型或VPN等为划分依据的任意组合。例如,在传统的采用最长匹配算法的IP转发中,到同一个目的地址的所有报文就是一个FEC

  2. 标签 :Label是一个长度固定,仅具有本地意义的短标识符,用于唯一标识一个分组所属的FEC。一个标签只能代表一个FEC。标签长度为4个字节,如果链路层协议具有标签域,如ATMVPI/VCI,则标签封装在这些域中叫做信元模式;否则,标签封装在链路层头和网络层数据之间的一个垫层中叫做帧模式。这样,任意链路层都能够支持标签。标签共有4个域:标签共有4个域:

    • Label:标签值字段,长度为20bits,用来标识一个FEC

    • Exp3bits,保留,协议中没有明确规定,通常用作CoS

    • S1bitMPLS支持多重标签。值为1时表示为最底层标签。

    • TTL8bits,和IP分组中的TTL意义相同,可以用来防止环路。 

  3. 标签交换路由器: LSRLabel Switching Router,标签交换路由器)是MPLS网络中的基本元素,所有LSR都支持MPLS技术。LSR由两部份组成:

  • 控制平面(Control Plane):负责标签的分配、路由的选择、标签转发表的建立、标签交换路径的建立、拆除等工作;

  • 转发平面(Forwarding Plane):依据标签转发表对收到的分组进行转发。对于普通的LSR,在转发平面只需要进行标签分组的转发,需要使用到LFIBLabel Forwarding Information Base,标签转发表)。对于LER,在转发平面不仅需要进行标签分组的转发,也需要进行IP分组的转发,所以既会使用到LFIB,也会使用到FIBForwarding Information Base,转发信息表)。

  1. 标签发布 :LDPMPLS的控制协议,它相当于传统网络中的信令协议,负责FEC的分类、标签的分配以及LSP的建立和维护等一系列操作。MPLS可以使用多种标签发布协议。包括专为标签发布而制定的协议,例如:LDPLabel Distribution Protocol)、CR-LDPConstraint-Routing LabelDistribution Protocol)。也包括现有协议扩展后支持标签发布的,例如:BGPBorder Gateway Protocol)、RSVPResource ReservationProtocol)。LDP利用路由转发表建立LSPLDP通过逐跳方式建立LSP时,利用沿途各LSR路由转发表中的信息来确定下一跳,而路由转发表中的信息一般是通过IGPBGP路由协议收集的。LDP并不直接和各种路由协议关联,只是间接使用路由信息。传递标签所用的协议:

  1. TDP---cisco专有标准,组播地址发包,使用UDP711端口,同时支持UDPTCPTDP发现邻居发UDP-711,源目都是,建邻居用目的端口TCP-711,源端口随机,以后发包都是TCPTDP只能基于FIB表中的条目来打标签,实际上在MPLS中是LFIB表(标签转发信息表)

  2. LDP---业界标准,组播地址发包,使用UDP646端口,同时支持UDPTCPLDP发现邻居发UDP-646,源目都是,建邻居用TCP-646,目的端口,源端口随机,以后发包都是TCPLDP只能基于FIB表中的条目来打标签,实际上在MPLS中是LFIB表(标签转发信息表)

  1. 标签交换路径 :LSP一个转发等价类在MPLS网络中经过的路径称为LSPLabel Switched Path,标签交换路径)。LSP在功能上与ATMFrame Relay的虚电路相同,是从入口到出口的一个单向路径。LSP中的每个节点LSR组成,根据数据传送的方向,相邻的LSR分别称为上游LSR和下游LSR。分组被打上标签后,沿着由一系列LSR构成的标签交换路径LSP传送,其中,入节点LER被称为Ingress,出节点LER被称为Egress,中间的节点则称为Transit标签交换路径LSP分为静态LSP和动态LSP两种。静态LSP由管理员手工配置,动态LSP则利用路由协议和标签发布协议动态产生。在MPLS的应用中,也可能需要对某些路由协议进行扩展。例如,基于MPLSVPN应用需要对BGP进行扩展,使BGP能够传播VPN路由信息;基于MPLS的流量工程TETraffic Engineering)需要对OSPFIS-IS协议进行扩展,以携带链路状态信息。

MPLS的基本工作过程:

  1. 首先,LDP和传统路由协议(如OSPFISIS等)一起,在各个LSR中为有业务需求的FEC建立路由表和LIBLabelInformation Base,标签信息表);

  2. 入口LER接收分组,完成第三层功能,判定分组所属的FEC,并给分组加上标签,形成MPLS标签分组;

  3. 接下来,在LSR构成的网络中,LSR根据分组上的标签以及LFIBLabel Forwarding Information Base,标签转发表)进行转发,不对标签分组进行任何第三层处理;

  4. 最后,在MPLS出口LER去掉分组中的标签,继续进行后面的IP转发。

由此可以看出,MPLS并不是一种业务或者应用,它实际上是一种隧道技术,也是一种将标签交换转发和网络层路由技术集于一身的路由与交换技术平台。这个平台不仅支持多种高层协议与业务,而且,在一定程度上可以保证信息传输的安全性。

LDP剖析

LDP协议规定标签分发过程中的各种消息以及相关的处理进程。通过LDPLSR可以把网络层的路由信息直接映射到数据链路层的交换路径上,进而建立起LSPLSP既可以建立在两个相邻的LSR之间,也可以建立在两个非直连的LSR之间,从而在网络中所有中间节点上都使用标签交换。

  1. LDP对等体 LDP对等体是指相互之间存在LDP会话、使用LDP来交换标签/FEC映射关系的两个LSRLDP对等体通过它们之间的LDP会话获得对方的标签映射消息。

  2. LDP会话  LDP会话用于在LSR之间交换标签映射、释放等消息。LDP会话可以分为两种类型:

    1. 本地LDP会话(LocalLDP Session):建立会话的两个LSR之间是直连的;

    2. 远端LDP会话(RemoteLDP Session):建立会话的两个LSR之间是非直连的。

  1.  LDP消息类型 :LDP协议主要使用四类消息:为保证LDP消息的可靠发送,除了发现阶段使用UDP传输外,LDPSession消息、Advertisement消息和Notification消息都使用TCP传输。

    1. 发现(Discovery)消息:用于通告和维护网络中LSR的存在;

    2. 会话(Session)消息:用于建立、维护和终止LDP对等体之间的会话;

    3. 通告(Advertisement)消息:用于创建、改变和删除标签—FEC绑定;

    4. 通知(Notification)消息:用于提供建议性的消息和差错通知。

  1. 标签空间与LDP标识符 :LDP对等体之间分配标签的范围称为标签空间(Label space)。可以为LSR的每个接口指定一个标签空间(per-interface label space),也可以整个LSR使用一个标签空间(per-platform label space)。LDP标识符(LDP Identifier)用于标识特定LSR的标签空间,是一个六字节的数值,格式如下:

    <LSRID><标签空间序号>

    其中,LSR ID占四字节,标签空间序号占两字节。标签空间序号取值为1时表示每个接口指定一个标签空间;取值为0时表示整个LSR使用一个标签空间。

  2. LDP标签分发 :标签的分发过程有两种模式,主要区别在于标签映射的发布是上游请求(DoD)还是下游主动发布(DU)。具有标签分发邻接关系的上游LSR和下游LSR之间必须使用相同的标签发布方式,否则LSP无法正常建立

  1. DoDdownstream-on-demand)模式 :上游LSR向下游LSR发送标签请求消息(Label Request Message),其中包含FEC的描述信息。下游LSR为此FEC分配标签,并将绑定的标签通过标签映射消息(Label Mapping Message)反馈给上游LSR。下游LSR何时反馈标签映射消息,取决于该LSR采用的标签分配控制方式。采用Ordered方式时,只有收到它的下游返回的标签映射消息后,才向其上游发送标签映射消息;采用Independent方式时,不管有没有收到它的下游返回的标签映射消息,都立即向其上游发送标签映射消息。上游LSR一般是根据其路由表中的信息来选择下游LSR

  2. DUdownstream unsolicited)模式 下游LSRLDP会话建立成功后,主动向其上游LSR发布标签映射消息。上游LSR保存标签映射信息,并根据路由表信息来处理收到的标签映射信息。

标签分配控制方式(LabelDistribution Control Mode分为两种:

    1. 独立标签分配控制(Independent):LSR可以在任意时间向与它连接的LSR通告标签映射。这种方式可能导致在收到下游标签之前就向上游发布了标签。

    2. 有序标签控制方式(Ordered):对于LSR上某个FEC的标签映射,只有当该LSR已经具有此FEC下一跳的标签映射消息或者该LSR就是此FEC的出口节点时,该LSR才可以向上游发送此FEC的标签映射。

 标签保持方式(Label Retention Mode是指LSR对收到的、但目前暂时用不到的标签—FEC绑定的处理方式。标签保持方式也分为两种:

  1. 自由标签保持方式(Liberal):对于从邻居LSR收到的标签映射,无论邻居LSR是不是自己的下一跳都保留。使用自由标签保持方式,LSR能够迅速适应路由变化;而使用保守标签保持方式,LSR可以分配和保存较少的标签数量。

  2. 守标签保持方式(Conservative):对于从邻居LSR收到的标签映射,只有当邻居LSR是自己的下一跳时才保留。保守标签保持方式通常与DoD方式一起,用于对于标签空间有限的LSR

 标签交换中的几个基本概念

  1. NHLFENext Hop LabelForwarding Entry):下一跳标签转发项。用于描述对标签执行的操作,包括入栈(Push)操作和交换(Swap)操作。

  2. FTNFEC to NHLFE map):在Ingress节点将转发等价类FEC映射到NHLFE的过程。

  3. ILMIncoming Label Map):入标签映射。对于接收的标签分组,LSR将标签映射到NHLFE的过程,包括空(Null)操作、出栈(Pop)操作。

 标签交换的过程 入口LERIngress)将进入网络的分组划分成转发等价类FEC。属于相同FEC的分组在MPLS域中将经过相同的路径,即使用同一条LSPLSR对到来的FEC分组分配一个标签,然后从相应的接口转发出去。标签交换的具体操作描述如下:

  1. LSP沿途的所有LSR都先建立ILM,入标签是根据ILM表项进行映射的;

  2. 对于接收到的标签分组,LSR将标签映射到NHLFE

  3. LSR只需根据标签从标签信息表中找到相应的NHLFE,用新的标签替换原来的标签,然后对标签分组继续转发

  标签分发与分配的注意:

  1. 标签的分配是将MPLS标签插入到数据包中;

  2. 标签的分发是将MPLS标签传递给邻居路由器

  3. 标签的分配只在本地有意义 

  4. 标签的分配(allocation):决定需不需要对该路由条目分配标签,或者说给什么样的条目分发标签。对于帧模式来说,这个动作是本地路由器作出的,与其他路由器无关

  5. 标签的分发(distribution):决定将产生的标签传递给谁、如何传的过程

  6. 标签的保留:像ARP一样,在路由条目失效后一定时间内标签继续有效

  7. 帧模式的标签分配原则是:independantcontrol独立控制,即不管是否能收到邻居传递过来的标签,都会对本地前缀分配标签;

  8. 帧模式的标签分发原则是:下游自主,即不管你有没有用到我发给你的标签,只要建立了邻居关系,我都会把我本地的标签发给你。这里的上下游是指数据转发的上下游。

  9. 帧模式的标签保留原则是:自由,即谁分配的标签谁保留。

  10. 帧模式的标签保存:将邻居传递过来的标签保存在LFIB里面,同时保存在FIB里面

  11. 信元模式的标签分配原则:按序

  12. 信元模式的标签分发原则:按需,即收到请求之后才分发。

  13. 信元模式的标签保留原则:保守,即只保留下游路由器发过来的标签

 FLDP的操作主要包括以下四个阶段

  1. 发现阶段 :在这一阶段,希望建立会话的LSR向相邻LSR周期性地发送Hello消息,通知相邻节点自己的存在。通过这一过程,LSR可以自动发现它的LDP对等体,而无需进行手工配置。LDP有两种发现机制:

  1. 基本发现机制用于发现本地的LDP对等体,即通过链路层直接相连的LSR,建立本地LDP会话。这种方式下,LSR周期性以UDP报文形式从接口发送LDP链路Hello消息(LDP Link Hello),发往标识“子网内所有路由器”的组播地址。LDP链路Hello消息带有接口的LDP标识符及其他相关信息,如果LSR在某个接口收到了LDP链路Hello消息,则表明在该接口(链路层)存在LDP对等体。

  2. 扩展发现机制用于发现远端的LDP对等体,即不通过链路层直接相连的LSR,建立远端LDP会话。这种方式下,LSR周期性以UDP报文形式向指定的IP地址发送LDP目标Hello消息(LDP Targeted Hello)。LDP目标Hello消息带有LSRLDP标识符及其他相关信息,如果LSR收到LDP目标Hello消息,则表明在网络层存在LDP对等体。

  1. 会话建立与维护 :发现邻居之后,LSR开始建立会话。这一过程又可分为两步:

  1. 建立传输层连接,即,在LSR之间建立TCP连接;

  2. 随后对LSR之间的会话进行初始化,协商会话中涉及的各种参数,如LDP版本、标签分发方式、定时器值、标签空间等。

   会话建立后,通过不断地发送Hello消息和Keepalive消息来维护这个会话。

  1. LSP建立与维护 :LSP的建立过程实际就是将FEC和标签进行绑定,并将这种绑定通告LSP上相邻LSR。这个过程是通过LDP实现的,以DU模式、有序标签控制方式为例,主要步骤如下:

  1. 当网络的路由改变时,如果有一个边缘节点发现自己的路由表中出现了新的目的地址,并且这一地址不属于任何现有的FEC,则该边缘节点需要为这一目的地址建立一个新的FEC

  2. 如果此边缘节点存在上游LSR,并且尚有可供分配的标签,则该节点为FEC分配标签,并向上游发出标签映射消息,其中包含分配的标签等信息。

  3. 收到标签映射消息的LSR记录相应的标签映射信息,若消息由对应FEC的下一跳发送,则将在其标签转发表中增加相应的条目。此LSR为它的上游LSR分配标签,并继续向上游LSR发送标签映射消息。

  4. 当入口LSR收到标签映射消息时,在标签转发表中增加相应的条目。这时,就完成了LSP的建立,接下来就可以对该FEC对应的数据分组进行标签转发了。

  1.  会话撤销 LDP通过检测Hello消息来判断邻接关系;通过检测Keepalive消息来判断会话的完整性。LDP在维持邻接关系和LDP会话时使用不同的定时器:

    1. Hello保持定时器:LDP对等体之间,通过周期性发送Hello消息表明自己希望继续维持这种邻接关系。如果Hello保持定时器超时仍没有收到新的Hello消息,则删除Hello邻接关系。

    2. Keepalive定时器:LDP对等体之间通过LDP会话连接上传送的Keepalive消息来维持LDP会话。如果会话保持定时器超时仍没有收到任何Keepalive消息,则关闭连接,结束LDP会话。

G)LDP环路检测 :MPLS域中建立LSP也要防止产生环路,LDP环路检测机制可以检测LSP环路的出现,并避免发生环路。果对MPLS域进行环路检测,则必须在所有LSR上都配置环路检测。但在建立LDP会话时,并不要求双方的环路检测配置一致。LDP环路检测有两种方式:

  1. 最大跳数 :在传递标签绑定(或者标签请求)的消息中包含跳数信息,每经过一跳该值就加一。当该值达到规定的最大值时即认为出现环路,LSP建立失败。

  2. 路径向量 :在传递标签绑定(或者标签请求)的消息中记录路径信息,每经过一跳,相应的设备就检查自己的LSR ID是否在此记录中。在以下条件之一时认为出现环路,LSP建立失败:路径向量记录表中已有本LSR的记录;路径的跳数达到设置的最大值。如果记录中没有自己的LSR ID,就会将其添加到该记录中。

 H) LDP 标签过滤 LDP协议在缺省的情况下,从下游邻居接收到的所有FEC的标签映射(标签-FEC绑定)都将接受;并按照水平分割的原则向各个上游邻居通告FEC的标签映射。LDP标签过滤提供了两种机制,可以有选择的接受从指定LDP下游邻居接收到的标签映射、也可以选择性地向指定LDP上游邻居通告指定地址前缀的标签映射。

  1. 标签接受控制 标签接受控制(LabelAcceptance Control)或入站标签过滤(InboundFiltering),选择性地接受指定下游设备通告过来的、指定地址前缀的标签映射。 

  2. 标签通告控制 标签通告控制(LabelAdvertisement Control)或出站标签过滤(OutboundFiltering),选择性地向指定上游设备通告指定地址前缀的标签映射。 

  I) LDP GR 为了支持GR,在LDP会话建立过程中,LDP设备需要进行GR能力协商。假设LDP会话协商结果为支持GRGR过程如下:

Restarter发生重起后,启动转发状态保持定时器,保留所有MPLS转发表项,并标记为staleHelper在检测到与Restarter之间的会话down后,将所有通过此会话学习到的FEC-Label绑定标记为stale,并将这些FEC-Label绑定保留一段时间(时间长度为对端通告来的reconnecttime和本地配置的neighbor liveness time中较小者),如果在这段时间内,LDP会话重建失败,删除这些标记为staleFEC-Label绑定,如果建立成功,继续保持Recovery长的一段时间,并在Recovery时间内通过和Restarter之间的标签映射消息交互,协助Restarter恢复重起前的FEC-Label绑定和清除对应转发表项的stale标记,Helper收到来自Restarter的相应FEC-Label绑定,清除保留的FEC-Label绑定的stale标记。Restarter的转发状态保持定时器超时,删除仍旧标记为stale的转发表项。HelperRecovery时间后,删除仍旧标记为staleFEC-label绑定。在Restarter重起过程中,转发表项被保留,保证流量不会中断。

倒数第二跳弹出 

  MPLS网络中,核心LSR根据分组上的标签进行转发;在Egress节点(出口LER)去掉分组中的标签,继续进行IP转发。实际上,在比较简单的MPLS应用中,Egress节点只需要进行IP转发,标签已经没有使用价值。这种情况下,为了减轻Egress节点的负担,提高MPLS网络对报文的处理能力,可以利用PHPPenultimate Hop Popping,倒数第二跳弹出)特性,在倒数第二个节点处将标签弹出,Egress节点就不再进行标签操作了。

MPLS MTU

MPLS标签栈象“垫层”一样,位于二层数据帧头和数据之间。OSI第三层网络层协议的包头是在第二层帧头之上的,也就是说在封装二层帧头的时候,是将数据内容和三层包头全部作为数据封装在里面的,对于二层来说,之前的数据最大是多少,就是由MTU来决定的,所以正常情况下MTU就是第三层数据和包头的最大尺寸,这时无需分段就能传输,如果比MTU大,就得分段后传输。但是 MPLS 的标签是在二层帧头之后的,所以二层帧头将标签的大小和三层包的内容累加到一起作为数据封装的,因为三层包的所有内容正好和MTU 一样大,在此基础上加上MPLS标签的话,就肯定比额定的MTU要大,所以这时MPLS的标签数据是会被分段后传输的,如果不想被分段,就得更新MTU 的大小。(一般 MPLS
据包加最多两个标签,一个标签4字节,所以只要改成比正常MTU8字节即可。)
而改MTU还必须在MPLS网络中所有设备上进行更改,除非允许分段。

 

MPLSTTL的处理

MPLSTTL处理包括IP TTL复制和ICMP响应报文返回路径这两个方面

  1. 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路由器是直连的。

  2. ICMP响应报文 :MPLS VPN网络中,P路由器无法对MPLS承载的VPN报文进行路由。当MPLS报文的TTL超时时,ICMP响应报文将按照LSP继续传送,到达LSP终点路由器后,再根据IP路由转发ICMP响应报文。这种处理方式增加了网络流量和报文转发时延。对于仅有一层标签的MPLS报文,当TTL超时时,直接使用IP路由返回ICMP响应报文

检测MPLS LSP

 在MPLS中,如果LSP转发数据失败,负责建立LSPMPLS控制平面将无法检测到这种错误,这会给网络维护带来困难。MPLS LSP Ping/Traceroute为用户提供了发现LSP错误、并及时定位失效节点的机制。类似于普通IPPing/TracerouteMPLS LSP Ping/Traceroute使用MPLS Echo Request报文和MPLS Echo Reply报文检测LSP的可用性。MPLS Echo Request中携带需要检测的FEC信息,和其他属于此FEC的报文一样沿LSP发送,从而实现对LSP的检测。

    1. MPLS LSP Ping是用于对LSP的有效性、可达性进行检测的工具。采取方法是通过发送一个叫做MPLS Echo Request的报文,通过LSP的数据转发,到达出口后,在MPLS域的Egress,由Egress节点的控制平面确认本LSR是否为该FEC的出口,返回一个叫做MPLSEcho Reply的报文,如果发送方收到该报文,则说明这条LSP可以正确用于数据转发。

    2. MPLS LSP Traceroute是对LSP的错误进行定位的工具。采取方法是Echo Request数据包被发送到每一个中间LSR的控制平面,以确定本LSR是否是此路径的中间节点。

技术特点

    1. 充分采用原来的IP路由,在此基础上加以改进;保证了MPLS网络路由具有灵活性的特点

    2. 采用 ATM的高效传输交换方式,抛弃了复杂的ATM信令,无缝地将IP技术的优点融合到ATM的高效硬件转发中

    3. MPLS网络的数据传输和路由计算分开,是一种面向连接的传输技术,能够提供有效的QOS保证

    4. MPLS不但支持多种网络层技术,而且是一种与链路层无关的技术,它同时支持X.25 帧中继 ATM PPP SDH DWDM ,保证了多种网络的互连互通,使得各种不同的网络传输技术统一在同一各MPLS平台上

    5. MPLS支持大规模层次化的网络拓扑结构,具有良好的网络扩展性

    6. MPLS的标签合并机制支持不同数据流的合并传输

    7. MPLS支持流量工程 COS QOS 和大规模的虚拟专用网

应用

1)基于MPLSVPN  传统的VPN一般是通过GREGeneric RoutingEncapsulation)、L2TPLayer 2 Tunneling Protocol)、PPTPPoint to Point TunnelingProtocol)、IPSec协议等隧道协议来实现私有网络间数据流在公网上的传送。而LSP本身就是公网上的隧道,所以用MPLS来实现VPN有天然的优势。基于MPLSVPN就是通过LSP将私有网络的不同分支联结起来,形成一个统一的网络。基于MPLSVPN还支持对不同VPN间的互通控制。MPLSVPN中各设备的角色:

CECustomer Edge)是用户边缘设备,可以是路由器,也可以是交换机或主机。

PEProvider Edge)是服务商边缘路由器,位于骨干网络。

PProvider),是服务提供商网络中的骨干路由器,不与CE直接相连。

基于MPLSVPN具有以下特点:

  1. P设备只需要具备基本MPLS转发能力,可以将其配置为M-BGP路由反射器,不维护VPN信息。

  2. PE负责对VPN用户进行管理、建立各PELSP连接、同一VPN用户各分支间路由分派。

  3. PE间的路由分派通常是用LDP或扩展的BGP协议实现。

  4. 支持不同分支间IP地址复用和不同VPN间互通。

  5. 减化了寻路步骤,提高了设备性能,加快了报文转发。

2)基于MPLSQoS  基于MPLS的流量工程和差分服务Diff-Serv特性,在保证网络高利用率的同时,可以根据不同数据流的优先级实现差别服务,从而为语音,视频数据流提供有带宽保证的低延时、低丢包率的服务。由于全网实施流量工程的难度比较大,因此,在实际的组网方案中往往通过差分服务模型来实施QoSDiff-Serv的基本机制是在网络边缘,根据业务的服务质量要求将该业务映射到一定的业务类别中,利用IP分组中的DSDifferentiated Service)字段(由ToS域而来)唯一的标记该类业务;然后,骨干网络中的各节点根据该字段对各种业务采取预先设定的服务策略,保证相应的服务质量。Diff-Serv对服务质量的分类和标签机制与MPLS的标签分配十分相似,事实上,基于MPLSDiff-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//修改LDPholdtime间隔为10

LER1(config)#mplsldp discovery hello interval 2 //修改LDPHello的间隔为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

 

结论:

  1. 帧模式的标签分配原则是:independantcontrol独立控制,即不管是否能收到邻居传递过来的标签,都会对本地前缀分配标签;

  2. 帧模式的标签分发原则是:下游自主,即不管你有没有用到我发给你的标签,只要建立了邻居关系,我都会把我本地的标签发给你。这里的上下游是指数据转发的上下游。

  3. 帧模式的标签保留原则是:自由,即谁分配的标签谁保留。

  4. 帧模式的标签保存:将邻居传递过来的标签保存在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网络的基础设施之上,在两个路由器的一对端口之间提供高速的二层透传。这种技术可以提供二层VPNMPLS L2VPN)用来解决端到端的问题,也可以用来实现传统网络的升级。AToM主要组成部分包括:PE路由器、标记分发协议(LDP)和MPLS标记交换隧道(LSPTunnel)。

PE路由器拥有并维护与其直接相连的二层透传的链路信息。PE路由器负责将VPN客户的普通数据包打上标记和去除标记,因此PE路由器必须是一个边缘标记交换路由器。

在两个PE路由器之间实现二层透传的两个端口必须是相同的类型,例如以太网、VLANATMVC、帧中继VCHDLCPPP。每一对这样的端口用一个唯一的虚拟链路标志(VCID)来表示。

在两个PE路由器之间要定义穿过MPLS网络的LSP隧道,LSP隧道提供了隧道标记(TunnelLabel),在两个PE路由器之间透传数据。同时在两个PE路由器之间还要定义直接的标记分发协议进程,用来传递虚拟链路的信息,其中最关键的是通过匹配VCID来分发虚拟链路标记(VCLabel)。

当二层透传的端口有数据包进入PE路由器时,PE路由器通过匹配VCID找到与之对应的隧道标记和虚拟链路标记。PE路由器会将此数据包打上两层标记,其中外层标记为隧道标记,指示从该PE路由器到目的PE路由器的路径;内层标记为虚拟链路标记,指示在目的PE路由器上属于哪个VCID对应的路由器端口。注意,PE路由器要监视各自端口上的二层协议状态,如帧中继的LMIATMILMI。当出现故障时,通过标记分发协议进程来取消虚拟链路标记,从而断开此二层透传,避免产生单向无用数据流。

这种基于MPLS的二层透传方式,改变了传统的二层链路必须通过交换网络实现的限制,它从根本上形成了“一个网多种业务”的业务模式,让运营商可以在一个MPLS网络中同时提供二层业务和三层业务。基于二层透传技术的是二层VPN。现在,二层VPN的各项标准正处于IETF起草阶段,主要包括针对点到点服务的虚拟私用线路服务(VPWS)和针对多点服务的虚拟私用局域网服务(VPLS)。这两种二层VPN都采用以AToM为基础的数据层面,在控制层面上增加自动发现和自动配置等多种功能,相对于MPLS L3VPNMPLS L2VPN具有以下优点:

    1. 可扩展性强:MPLS L2VPN只建立二层连接关系,不引入和管理用户的路由信息。这大大减轻了PEProvider Edge,服务提供商边缘设备)甚至整个SPService Provider,服务提供商)网络的负担,使服务提供商能支持更多的VPN和接入更多的用户。

    2. 可靠性和私网路由的安全性得到保证:由于不引入用户的路由信息,MPLS L2VPN不能获得和处理用户路由,保证了用户VPN路由的安全。

    3. 支持多种网络层协议:包括IPIPXSNA等。

 


实验六、MPLS L3VPN之认识VRF Routing

在基于IP的计算机网络中,虚拟路由和转发(VRF)是一种技术,同时被称为VPN路由转发表它允许在同一台路由器上同时并存多个路由表的实例。这增加了网络路径分段的功能,而无需使用多个设备。因为流量是自动隔离,VRF也增加了网络的安全性,并且可以不再需要加密和认证。互联网服务提供商(ISP)通常采取的VRF的优势,创建单独的虚拟专用网络(VPN)客户;因而该技术也被称为VPN路由和转发。因为路由实例是独立的,相同的或重叠的IP地址可以被使用而不互相冲突。 VRF每一个路由实例拥有不同的路由表[来源请求]被称为转发信息库(FIB),它相当于一台网络设备。换句话说,在同一网络设备上可以配置多个不同的虚拟路由器实例,其中每一个实例都有其自身的FIB库,并且每个虚拟路由器实例间独立不可互相访问。此时每个路由器维护一个或多个VRF,并且同时维护一个公网的路由表(也叫全局路由表)。每一个VRF可以看作一台虚拟的路由器,该虚拟路由器包括如下元素:

  1. 一张独立的路由表/转发表,当然也包括了独立的地址空间。

  2. 一组归属于这个VRF的接口集合。

  3. 一组只用于本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

 

 

 

 

实验七、MPLSVPNL3VPN)基本配置PE-CE运行RIP

VRF通常与MPLS VPN相联系 ,因为MPLSVPN的就是利用VRF实现路由隔离和信息隔离,在这样的网络中,MPLS封装被用来分割用户流量,每个用户维护一个独立的VRF。在VRF中有两个重要属性:

  1. RD(Route Distinguisher)是说明路由属于哪个VPN的标志。理论上可以为每个VRF配置一个RD,通常建议为每个VPNVRF都配置相同的RD,并且要保证这个RD全球唯一。如果两个VRF中存在相同的地址,但是由于RD不同,这两个路由在PE间发布过程中也不会混淆,因为MP BGPRD和路由一起发送,对端PE可以根据RD确定路由所属的VPN,从而把路由安装到正确的VRF中。RD并不会影响不同VRF之间的路由选择以及VPN的形成,这些事情由RT搞定。PECE接收的标准的路由是IPv4路由,如果需要发布给其他的PE路由器,此时需要为这条路由附加一个RD。在IPv4地址加上RD之后,就变成VPN-IPv4地址族了。VPN-IPv4地址仅用于服务供应商网络内部。在PE发布路由时添加,在PE接收路由后放在本地路由表中,用来与后来接收到的路由进行比较。CE不知道使用的是VPN-IPv4地址。 RD具有全局唯一性,通过将8byteRD作为IPv4地址前缀的扩展,使不唯一的IPv4地址转化为唯一的VPNv4地址

  2. RTRouteTargets),RT的本质是每个VRF表达自己的路由取舍及喜好的方式,主要用于控制VPN路由的发布和安装策略。在路由器中存在全局路由表、vrf 等,从全局路由表选择路由到vrf称为export导出;从vrf 中选择路由到全局路由表称为import。当从全局路由表中导出路由到vrf 时,要用Export RTVPN路由进行标记;在往全局路由导入VPNv4 路由时,只有所带RT 标记与VRF表中任意一个Import RT相符的路由才会被导入到全局路由表中。RT使得PE路由器只包含和其直接相连的VPN的路由,而不是全网所有ipvpnv4 的路由,从而节省了PE路由器的资 源,提高了网络拓展性。在一个VRF中,在发布路由时使用RT export 规则。直接发送给其他的PE设备。在接收端的PE上,接收所有的路由,并根据每个VRF 配置的RT import 规则进行检查,如果与路由中的RT属性match,则将该路由加入到相应的VRFExport 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 ?

 

 

 

 

实验八、MPLSVPNL3VPN)基础之PE-CE运行OSPF 并有后门链路

在传统的OSPF骨干区域里传输TYPE 3LSA时,必须是从area 0区域的邻居传来的才接收,但是在MPLS VPNCE端无法形成邻居,因此,提出了superbackbone的概念。超级骨干区域的引入带来的改变就是所有连接到超级骨干的区域,不管其是backbone area 还是non-backbone area ,都视为backbone area。也就是说,传统的OSPF不再需要骨干区域。只有当PE连接了同一个OSPF下的不同area 时,PE才需要运行在骨干区域。 在超级骨干,不再有adjacent关系或者flooding,只有运行sham-link时才会形成邻居。PE通过MBGP-iBGP来运载拓展属性。此时值得注意就是,OPSF中的Domain-id项,区别于传统OSPFMPLS依赖domain-id来进行OSPF的路由传输。默认情况下domain-id就是process number,这个值在OSPF路由充分不进MP-iBGP的时候设置,对端的PE如果接收到的routesdomain-id与自己的不同,就当作LSA type-5来接收即标记为OE2(只计算系统内部的METRIC),表示来自自治系统外的路由比如把EIGRP重分发到OSPF默认就是O E2;如果domain-id相同,就当作以TYPE3LSA传递来接收并标记为O IA,表示来自自治系统内的其他区域的路由比如区域0 学到区域1的路由就是O IA

 MPLS VPN中,如果在两个站点的CE之间增加一条后门链路(BackdoorLink),并且直接运行OSPF交互路由,那么通过这条后门链路学习到的内部路由为O,通过PE过来的路由为OIA,无疑优选O路由。但是我们希望优选走MPLS VPN,此时就要使用Sham-Link。在PE1PE2之间建立sham-link,它会在两台PE之间形成一条区域内链路。在每一台PE上的链路端点都是特定VRF中的一个接口(或地址),iBGP必须以VPNv4前缀的形式将这个接口的路由传递给另一台PE(也就是说我们必须在MP-BGPipv4 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中又通告了端点的路由,由于OSPFAD小于IBGP,因此它将覆盖掉iBGP路由,一旦端点路由不能通过路由表中的iBGP学到,那么伪装链路就会断开。然后再次开始重新建立,这样就导致sham-link不断抖动。用于sham-linkIP(所属的接口)必须分配给特定的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//OSPFdomain id

PE1(config-router)#net 172.168.12.00.0.0.255 area 0

PE1(config-router)#redistribute bgp1 subnets//bgp注入到vrfospf

PE1(config-router)#area 0 sham-link22.22.22.22 44.44.44.44 cost 2//建立sham-linkcost小于串口

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 111111 //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-linkMPLS 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的特性,其中就有实现流量工程所需要的,例如:

    1. MPLS支持显式LSP路由;

    2. LSP较传统单个IP分组转发更便于管理和维护;

    3. 基于MPLS的流量工程的资源消耗较其它实现方式更低。

MPLS-TE不是QoSMPLS-TE只是将流量合理的分配到现有的网络资源中,MPLS-TE本身并不提供QoS机制,如果规划的不合理,MPLS-TE也并不能合理分配流量。 MPLS TE结合了MPLS技术与流量工程,通过建立到达指定路径的LSP隧道进行资源预留,使网络流量绕开拥塞节点,达到平衡网络流量的目的。在资源紧张的情况下,MPLS TE能够抢占低优先级LSP隧道带宽资源,满足大带宽LSP或重要用户的需求。同时,当LSP隧道故障或网络的某一节点发生拥塞时,MPLS TE可以通过备份路径和FRRFast ReRoute,快速重路由)提供保护。使用MPLS TE,网络管理员只需要建立一些LSP和旁路拥塞节点,就可以消除网络拥塞。随着LSP数量的增长,还可以使用专门的离线工具进行业务量分析。

MPLS TE的基本概念

        1. LSP隧道:对于一条LSP,一旦在Ingress节点为报文分配了标签,流量的转发就完全由标签决定了。流量对LSP的中间节点是透明的,从这个意义上来说,一条LSP可以看作是一条LSP隧道。

        2.  MPLS TE隧道,在部署重路由(Reroute)或需要将流量通过多条路径传输时,可能需要用到多条LSP隧道。在TE中,这样的一组LSP隧道称为TE隧道(Traffic Engineered Tunnel)。

MPLS-TE使用的协议信令包括两种:

  1. RSVP-TE :RSVP(资源预留协议)是网络上进行资源预留的控制协议。它不是路由协议,与路由协议协同工作,建立与路由协议计算出路由等价的动态访问列表。RSVP-TE已经在现有网络中规模应用,比较成熟。基于软状态,需要周期性更新状态信息。

  2. CR-LDP :CR-LDPConstrained-basedRouting LDP 基于限制路由的标签分发协议[rfc3212])是对LDP协议的扩展,用于对流量工程进行支持。此协议比较新,目前使用较少,CR-LDP是基于硬状态的,不需要周期性的维护状态信息。

MPLS TE的实现:

    1. 静态CR-LSPConstraint-based Routed Label Switched Paths,基于约束路由的LSP)的处理:创建和删除静态CR-LSP。这些LSP有带宽需求,需要通过手工配置。

    2. 动态CR-LSP处理:包括对三种不同类型CR-LSP的处理:基本CR-LSP、备份CR-LSP和快速重路由CR-LSP。对于动态CR-LSPMPLS TE在实现上主要包括四个部分。

  1. 发布含TE属性的信息:MPLS TE需要了解每条链路的动态TE相关属性,这可以通过对现有的使用链路状态算法的IGP协议进行扩展来实现,比如OSPF协议和IS-IS协议的扩展。扩展后的OSPFIS-IS协议在链路连接状态中增加了链路带宽、着色等TE相关属性,其中,链路的最大可预留带宽和每个优先级的链路未被预留带宽尤为重要。每台设备收集本区域或本级别所有设备每条链路的TE相关信息,生成TEDBTE DataBase,流量工程数据库)。

  2. 计算路径:使用链路状态算法的路由协议通过SPFShortest Path First,最短路径优先)算法计算出到达网络各个节点的最短路径。MPLS TE使用CSPFConstraint-based Shortest Path First,基于约束的最短路径优先)算法计算出到达某个节点的最短路径。CSPF算法是从SPF算法衍生来的,CSPF有两个输入条件:

    1. 需要建立的LSP的带宽、着色、抢占/保持优先级、显式路径等约束条件,这些都在LSP的入口处配置;

    2. 流量工程数据库TEDB

    3. 注意:CSPF的计算过程就是针对LSP要求,先对TEDB中的链路进行剪切,把不满足TE属性要求的链路剪掉;再采用SPF算法,寻找一条到LSP出口的最短路径。

    1. 建立路径:支持建立LSP隧道的信令RSVP-TE。它们都能够携带LSP的带宽、部分显式路由、着色等约束参数,两者完成的功能是一样的。从内部实现来看, RSVP-TE则通过Raw IP建立LSP连接。RSVP技术经历了多年的发展,其体系结构、协议规程与对各种业务的支持机制相对比较成熟。

    2. 转发报文:使用建立的隧道转发报文。MPLS TE隧道建立之后,如果不配置流量沿隧道转发,缺省的情况下依然会沿IP路由转发。配置流量沿隧道转发有如下三种方法:

  1. 静态路由: 使用静态路由转发流量,是最简便的方法,因为Tunnel的接口地址通常情况下不会发布到IGP中。这时候通过定义一条通过Tunnel接口到达目的网络地址的静态路由,就把流量引入到MPLS TE隧道上进行转发。

  2. 策略路由: 使用基于策略的路由(Policy-basedroutingPBR),通过Tunnel接口的流量需要通过ACL定义策略,如果匹配该流量,将下一跳的接口指向Tunnel,在流量的入接口应用策略路由,就把流量引入到MPLS TE隧道上进行转发。

  3. 自动路由发布自动路由发布会将Tunnel的接口发布到IGP路由中,这样流量都会通过MPLS TE隧道转发。自动路由发布包括两种:IGP Shortcut与转发邻接。OSPFIS-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 TunnelIGP Shortcut和转发邻接包括Tunnel上的配置和IGP本身的配置两部分。Tunnel接口上的配置需要注意:

  1. Tunnel接口的目的地址应该属于使能相应特性的区域内;

  2. Tunnel接口的目的地址可通过区域内路由到达。

    1. CR-LSP:基于一定约束条件建立的LSP称为CR-LSP,与普通LSP不同,CR-LSP的建立不仅依赖路由信息,还需要满足其他一些条件,比如指定的带宽、选定的路径或QoS参数。建立和管理约束条件的机制称为CRConstraint-based Routing,基于约束的路由)。下面对CR的主要内容进行简单介绍

  1. 严格显式路由与松散显式路由如果约束信息是对沿途LSR的精确指定,建立的LSP称为严格的显式路由(Strict Explicit Route)如果约束信息是对选择下游LSR时的模糊限制,建立的LSP称为松散的显式路由(Loose Explicit Route

  2. 流量参数:路径的流量参数有三个:峰值速率(peak rate)和承诺速率(committed rate),描述路径本身对带宽的约束;另外一个是服务粒度(service granularity)。

  3. 抢占:如果在建立CR-LSP的过程中,无法找到满足所需带宽要求的路径,一种解决方法是拆除另外一条已经建立的路径,占用为它分配的带宽资源,这种处理方式称为抢占(Preemption)。CR-LSP使用两个优先级属性来决定是否可以进行抢占:建立优先级(Setup Priority)和保持优先级(Holding Priority)。建立优先级和保持优先级的取值范围都是07,数值越小则优先级越高。抢占由RSVP-TEResv消息发起。当新建一条路径Path1时,如果需要与已建立的路径Path2争夺资源,只有当Path1的建立优先级高于Path2的保持优先级时,Path1才能抢占成功。因此,为保证CR-LSP能够正确建立,建立优先级不能高于保持优先级,否则可能会导致LSP间无穷尽的互相抢占,造成振荡。

  4. 路由固定(Route Pinning: CR-LSP创建成功后,不随路由变化而变化的特性叫做路由固定。当某个网络未运行IGP TE时,网络管理员不能确定网络上的哪些地方可以获得带宽,这时需要选择具有所需带宽的松散ER-hopExplicit Route)来创建CR-LSP,但这些CR-LSP将会随路由变化而变化。当路由变化时,比如出现了一个更好的下一跳,已建立的CR-LSP也将会随之改变。如果不希望使用松散路由建立的CR-LSP随路由变化而改变,网络管理员可以在CR-LSP创建成功时把这些CR-LSP配置成永久性的,不随路由变化而变化。

  5. 管理组和和属性: MPLS TE隧道的亲和属性决定隧道使用的链路属性,亲和属性与链路管理组配合,确定隧道可以使用哪些链路。

  6.  重优化: 流量工程是系统规划网络资源使用的过程。根据用户需求可以配置流量工程,提供要求的QoS。服务提供商通常利用一定的机制去优化CR-LSP,以优化网络资源使用。一种方法是人工配置,但是需要服务提供商进行测量和对CR-LSP微调。使用MPLS TE则能够动态优化CR-LSP,从而节省人力。动态优化CR-LSP即定期重计算CR-LSP穿越的路由。如果重计算的路由优于当前路由,则创建一条新的CR-LSP,为之分配新路由,并将业务从旧的CR-LSP切换至新的CR-LSP,删除旧CR-LSP

  7. CR-LSP备份CR-LSP备份是一种端到端的路径保护(Path Protectionend-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

  8. 快速重路由FRRFast ReRoute),是MPLS- TE中实现网络局部保护的技术。FRR的切换速度可以达到50ms,能够最大程度减少网络故障时数据的丢失。对LSP配置FRR功能后,当LSP上的某条链路或某个节点失效时,流量会被切换到保护链路上,同时LSP头节点尝试建立新的LSP。介绍FRR中的几个概念

            1. LSP:被保护的LSP

            2. Bypass LSP:旁路LSP,保护主LSPLSP

            3. PLRPoint of Local Repair):本地修复节点。BypassLSP的头节点,必须在主LSP的路径上,并且不能是主LSP的尾节点。

            4. MPMerge Point):汇聚点。Bypass LSP的尾节点,必须在主LSP的路径上,并且不能是主LSP的头节点

            5. 保护方式根据保护的对象不同,FRR分为两类:链路保护:PLRMP之间有直接链路连接,主LSP经过这条链路。当这条链路失效时,流量可以切换到Bypass LSP节点保护:PLRMP之间通过一台设备连接,主LSP经过这台设备。当这台设备失效时,流量可以切换到Bypass LSP

RSVP-TE实现

   RSVPResource Reservation Protocol,资源预留协议)是为IntServIntegrated Service,综合业务模型)而设计的,用于在一条路径的各节点上进行资源预留。RSVP工作在传输层,但不参与应用数据的传送,是一种Internet上的控制协议,类似于ICMP。简单来说,RSVP具有以下几个主要特点:

    1. 单向;

    2. 面向接收者,由接收者发起对资源预留的请求,并维护资源预留信息;

    3. 使用“软状态”(soft state)机制维护资源预留信息。

      RSVP经扩展后可以支持MPLS标签的分发,并在传送标签绑定消息的同时携带资源预留信息,这种扩展后的RSVP称为RSVP-TE,作为一种信令协议用于在MPLS TE中建立LSP隧道。

       

       RSVP-TE基本概念

  1. 软状态“软状态”是指在RSVP-TE中,通过消息的定时刷新来维持节点上的资源预留状态。资源预留状态包括由Path消息创建的路径状态(path state)和由Resv消息创建的预留状态(reservation state)。这两种状态分别由Path消息和Resv消息定时刷新。对于某个状态,如果连续没有收到刷新消息,这个状态将被删除。

  2.   资源预留类型使用RSVP-TE建立的LSP都具有某种资源预留类型(reservation style),在建立RSVP会话时,由接收者决定此会话使用哪种预留类型,从而决定可以使用哪些LSP。目前设备支持以下两种预留类型:

    1. FFFixed-Filter style):固定过滤器类型。为每个发送者单独预留资源,不能与同一会话中其他发送者共享资源。

    2. SEShared-Explicit style):共享显式类型。为同一个会话的发送者建立一个预留,可以共享资源。

  1. make-before-break make-before-break是指一种可以在尽可能不丢失数据,也不占用额外带宽的前提下改变MPLS TE隧道属性的机制。

  2. RSVP-TE消息类型

  1. Path消息:由发送者沿数据报文传输的方向向下游发送,在沿途所有节点上保存路径状态(path state)。

  2. Resv消息:由接收者沿数据报文传输的方向逆向发送,在沿途所有节点上进行资源预留,并创建和维护预留状态(reservationstate)。

  3. PathTear消息:此消息产生后马上向下游发送,并立即删除沿途节点的路径状态和相关的预留状态。

  4. ResvTear消息:此消息产生后马上向上游发送,并立即删除沿途节点的预留状态。

  5. PathErr消息:如果在处理Path消息的过程中发生了错误,就会向上游发送PathErr消息,PathErr消息不影响沿途节点的状态,只是把错误报告给发送者。

  6. ResvErr消息:如果在处理Resv消息的过程中发生了错误,或者由于抢占导致预留被破坏,就会向下游节点发送ResvErr消息。

  7. ResvConf消息:该消息发往接收者,用于对预留消息进行确认。

  8. Hello消息:在两个直连的RSVP邻居之间建立和维持链路局部的邻居关系。

  9. RSVPTE扩展主要是在其Path消息和Resv消息中增加新的对象,新增对象除了可以携带标签绑定信息外,还可以携带对LSR在沿途寻找路径时的限制信息,从而支持CR-LSP的功能,并支持FRR

  10.  Path消息新增的对象包括:LABEL_REQUESTEXPLICIT_ROUTERECORD_ROUTESESSION_ATTRIBUTE

  11. Resv消息新增的对象包括:LABELRECORD_ROUTELABEL_REQUEST对象包含在Path消息中,为LSP请求标签绑定,该对象也保存在路径状态块PSBPath State Block)中。接收到该对象的节点将分配的标签通过Resv消息中的LABEL对象通知上游节点,从而完成标签的发布和传递。

  1. 建立LSP隧道 

  1. Ingress LSR产生携带标签请求信息的Path消息,沿着通过CSPF计算出的路径逐跳发送给Egress LSR

  2. Egress LSR收到Path消息后,产生携带预留信息和标签的Resv消息,沿着Path消息发送的相反路径逐跳返回Ingress LSR,同时,Resv消息在沿途的LSR上进行资源预留;

  3. Ingress LSR收到Resv消息时,LSP建立成功。

  4. 采用RSVP-TE建立的LSP具有资源预留功能,沿途的LSR可以为该LSP分配一定的资源,使在此LSP上传送的业务得到保证。

    RSVP刷新机制:RSVP通过Refresh消息来维护路径和预留状态,Refresh消息不仅用于在RSVP邻居节点进行状态同步,也用于恢复丢失的RSVP消息。Refresh消息并不是一种新的消息,它是以前发布过的消息的再次传送,Refresh消息中携带的主要信息和传送时使用的路径都与它要刷新的消息完全一致。只有Path消息和Resv消息才可能是Refresh消息。由于Refresh消息是定时发送的,当网络中的RSVP会话比较多时,Refresh消息会加重网络负载;而对于时延敏感的应用,当消息丢失时,等待通过Refresh消息恢复的时间可能无法接受。简单地调整刷新间隔并不能同时解决这两类问题。用于解决Refresh消息带来的上述问题。

  1. Message_ID扩展:SVP本身使用Raw IP发送消息,RFC 2961中定义的Message_ID扩展机制增加了可以在RSVP消息中携带的对象,其中,Message_IDMessage_ID_ACK对象用于RSVP消息确认,从而提高RSVP消息发送的可靠性。在接口使能Message_ID机制后,可以配置重传功能,设定RSVP消息的重传参数。如果在重传初始时间间隔内(假设为Rf秒),没有收到应答消息ACK,经过(1Delta)×Rf秒后,将重传此消息。

  2. 摘要刷新扩展SrefreshSummary Refresh)可以不传送标准的PathResv消息,而仍能实现对RSVP的状态刷新,从而可以减少网络上的Refresh消息流量,并加快节点对这类消息的处理速度。摘要刷新扩展需要与Message_ID扩展配合使用。只有那些已经被包含Message_ID对象的PathResv消息发布过的状态才能使用摘要刷新扩展机制刷新。

  1. PSBRSBBSB的超时为建立LSP,发送者在Path消息中携带LABEL_REQUEST对象,接收者收到带有LABEL_REQUEST对象的Path消息后,就会分配一个标签,并将标签放在Resv消息的LABEL对象中。LABEL_REQUEST对象保存在上游节点的PSBPath State Block,路径状态块)中,LABEL对象则保存在下游节点的RSBReservationState Block,预留状态块)中。当连续未收到刷新消息的次数超过PSBRSB的超时倍数(当达到此数值时即为超时)时,PSBRSB中相应的状态将被删除。假设有一个资源预留请求,在某些节点上没有通过准入控制,有时可能不希望立即删除这个请求的状态,但这个请求也不应该阻止其他请求使用它预留的资源。这种情况下,节点将进入阻塞状态(Blockade State),在下游节点生成BSBBlockade State Block,阻塞状态块)。当连续未收到刷新消息的次数超过阻塞状态超时倍数时,BSB中相应的状态被删除。

  2. RSVP-TE GR功能依赖于RSVP-TEHello扩展能力,通过扩展的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 TEID使用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


1 0
原创粉丝点击