CCNP路由实验之十二 MPLS

2019年11月16日 阅读数:156
这篇文章主要向大家介绍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地址等。这样大大加速了包转发速度。app

    基于缓存交换的缺点:负载均衡

    一、  是流量驱动的,依赖于第一个数据包的接收以生成缓存,这个数据包是在慢速交换路线中被交换的,致使了低性能和高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系列路由器。 

  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主要应用于流量projectTETraffic 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的流量projectTETraffic 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支持流量project 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的流量project和差分服务Diff-Serv特性,在保证网络高利用率的同一时候,可以依据不一样数据流的优先级实现差异服务,从而为语音。视频数据流提供有带宽保证的低延时、低丢包率的服务。由于全网实施流量project的难度比較大,所以,在实际的组网方案中每每经过差分服务模型来实施QoS

Diff-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