CCNP路由实验之十二 MPLS

2020年06月10日 阅读数:184
这篇文章主要向大家介绍CCNP路由实验之十二 MPLS,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。


                                                                                       CCNP路由实验之十二 MPLShtml

路由器的工做模式是十分重要的,它直接影响数据转发的速度和系统的性能,理解它们的不一样对于咱们合理的应用有着很是重要的意义。具体分析以下   redis

  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地址等,这样大大加速了包转发速度。数据库

    基于缓存交换的缺点:缓存

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

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

    三、  因为路由抖动致使了无效缓存,促使网络不稳定。数据结构

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

  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表的好处:一、能够被硬件ASIC调用二、解决递归路由问题,直接找到下一跳三、 扩展性,应用于MPL.邻接表是由ARP实现的,将第2层地址映射到相应的第3层地址上。路由器能从路由选择更新中发现下一跳路由器,并相应的在临时表中增长表项。这个处理让路由器构建了第3层分组转发所需的下一跳重写信息。整体来说CEF的优势:一、可扩展性(Scalability):当激活了分布式CEF(Distributed CEF)模式时,CEF在每一块线卡(line card)上也提供了所有的交换能力。二、加强了性能:CEF使用CPU率较低,更多的CPU处理能力能够专一于第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的标签分配过程结合来实现的。

 

 

 

实验1、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



实验2、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

 

 

 

实验3、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里面

 

 

 

 

 

实验4、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

 

 

 

 

实验5、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等。

 


实验6、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

 

 

 

 

实验7、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 ?

 

 

 

 

实验8、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