已阅读1页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Multi Protocol Label Switch( MPLS,多协议标签交换) ,MPLS属于第三代网络架构,是新一代的IP高速骨干网络交换标准,在internet早期,随着普及的情况下,当时的硬件技术限制,采用的是最长匹配算法,递归查询的方式,给当时的骨干网发展提出了一个难题,在这种情况下ATM脱颖而出,ATM采用定长的标签,并且只需要维护比路由表小的标签表,便提供更高效率的转发性能和高带宽、QOS功能。 但是由于ATM机制太过复杂,设备又非常昂贵,给调试人员带来了很大的困难。在这种情况下,许多产商开始开发研究,把IP和ATM的优势结合的技术,最早由美国一家IPSilon的小公司推出了名为IP Switching,它很好的结合了ATM和IP的优势,随之Cisco(Tag switch)、IBM(ARIS)、3COM(FashtIP)各个产生都推出了自己的技术,为了统一标准 IETF推出了标准化的定义,它就是MPLS。 随着ATM的慢慢退出,和IP的路由转发依靠硬件来完成(比如cisco的CEF),MPLS的优势越来越少,但是MPLS提供的高扩展性非常强,在ISP的发展下,VPN的需求越来越大,而MPLS 正好提供了天然的隧道,而且在流量控制、和多协议方面的支持(IP、IPV6、二层帧头等),那么就产生了MPLS VPN和各种多业务的扩展应用。被运营商大量使用提供不同需求的业务。MPLS的包结构 Label:20bit 20220-1,也就是1048575个标签,015做保留 其中0做显示空 (NULL,用于QOS 只看EXP 忽略查找LFIB) 3是隐式空(通知次莫跳执行TAG动作) 1 为路由器报警标签 14 是OAM报警 EXP:扩展应用 如果是IP包中的3bit为IP precedenceS:栈底位 0与1 1代表1层 0代表多层 (MPLS VPN为二层 MPLE TE two or more)TTL:防环机制MPLS在二层的帧头之后,和三层头部之前插入一个字段,所以也被成为2.5层协议,也正因为这样它能优于IP进行快速的转发。这时候除了插入Label字段以外,二层帧头的type字段也需要改变,比如Ether在没插入之前,type=0x0800,表示上层协议为IP,那么在插入标签以后,type会改变为0x8847(Frame-mode,也就是基于IP的) 还有一个表示为0x888(cell-mode,表示ATM的),我们常用的是frame-modeMPLS用一个短而定长的标签来封装网络层分组,交换机或路由器根据标签值转发报文。MPLS指的多协议是:可以承载在各种链路层协议上:PPP ATM FR。 FEC:(Forwarding Equivalence Class)转发等价类: FEC是在转发过程中以等价的方式处理一组数据分组。LSP:(Laber Switching Path)标签交换路径:一个FEC数据流,在不同的节点被赋予确定的标签,数据转发按照这些标签进行,这个路径就成为LSP。 LDP:(Label Distribution protocol,标签分发协议 RFC3036):用于LSR之间分配标签,建立LSP LSR: 标签交换路由 (MPLS 域内路由器)Edge LSR : IP与MPLS域之间 (负责压入与弹出标签)LDP的建立机制LDP消息类型: 1、发现消息(Discovery messages) 用于LDP邻居的发现和维持 2、会话消息(Session messages)用于LSP邻居会话的建立、维护和终止 3、通告消息(Advertisement messages) 用于LDP邻居之间的Laber、地址等信息交互 4、通知消息(Notification Messages) 用于向LDP邻居通知事件或者错误。 LDP会话的建立和维护:1、邻居建立:通过互发hello包(UDP/port:646/ip:224.0.0.2) 2、建立TCP连接:由地址大的一方主动发起。(TCP/port/:646) 3、会话初始化:由master发出初始化消息,并携带协商参数。由slave检查参数能否接受,如果能则发送初始化消息,并携带协商参数。并发送keepalive消息,master收到后检查参数匹配,匹配上发送keepalive消息互相收到后,会话建立。4、会话维护:期间收到任何错误消息,会话就断开与TCP连接。上游与下游:数据转发先到的为上游,后到达的为下游,那么标签分发与路由更新正好相反,从下游到上游。标签分配模式:DOD(downstream-on-demand,下游按需分配):只有当上游向下游请求的时候,才会为这个FEC信息分配标签 DU(downstream unsolicited,下游自动分配):只要与上游建立会话连接,主动为上游分配标签。标签控制模式:有序方式(Ordered): 只有等下游更新了标签信息给上游,上游才会跟新。独立方式(Independent):就算没有收到下游的标签信息,也会向上游发送标签信息。标签保守方式: 保守模式 (Conservative):只会保留来自最近的下一跳邻居标签信息。自由模式(Liberal):保留所有来自邻居的标签信息。现在的MPLS 都是采用DU 有序 自由模式来完成MPLS LDP使用的是UDP/TCP的端口号为646,目的地址为224.0.0.2发送hello包,只要运行LDP的路由器都会收到,在LDP的hello中Transport address 会携带在hello包中,表示想与邻居建立LDP的关系,通常情况下Transport address与LDP ID是一致的。Transport adress的作用是,当双方交换hello包以后,由Transport address地址大的一方发起LDP的连接,而小的一方永远是被动的。Transport Address选举:根据自己指定或者 自动选择 根据loopback 优先,然后物理接口。Cisco在MPLS出现之前使用的是TDP,使用TCP/UDP 711号端口,但是在IOS 12.4以后默认选择是LDP了。注意的是,虽然MPLS 理论上被认为是2.5层的协议,但是它的工作机制完全依靠IGP来完成,所以IGP的收敛决定了LDP的收敛速度。下面是关于LSR和Edge的基本工作原理,实在不会画图,所以有从PPT里面截图下来了。LSR的工作机制,假设当在一个运行IGP OSPF的MPLS Domain中,LSR路由器收到一个关于10.0.0.0/8这个网络的信息,它会用OSPF的LSA告诉其他邻居,当OSPF传递完成后,LDP开始为这条路由分配标签信息,它从左边邻居收到一个标签信息,这个标签告诉本地路由器,要想去往10.0.0.0/8这个网络打上标签17,与此同时本地也会产生一个关于这个路由条目的标签信息,这里为24,它会通告给其他LDP邻居。假设右边有台路由器要访问10.0.0.0/8这个网络,那么它只需要打上24的标签交给LSR路由器,LSR通过LFIB中的标签转换后,把24去掉,置换成17标签交给左边路由器。注意的是:LDP只为IGP分配标签,包括static、RIPv2、EIGRP、ISIS、OSPF,并且默认是打开的,只要形成了LDP邻居关系,就会为每一条路由前缀分配标签,而BGPv4只会为IPv4的unicast router分配标签,而且默认是关闭的,但是BGP可以借用关于下一跳的由LDP分配的标签信息。这个可以在下面的实验中体现出来。它也相当于后面的MPLS VPN中的P路由器,它分为control plane 和Data Plane,Control Plane首先依赖于IGP协议的收敛完成,构建成IP Routing Table(cisco CEF机制表示为FIB),然后LDP开始为每一条路由分配标签会现成一个LIB数据库,最后关联到LFIB表中,它由FIB和LIB共同完成,包含的信息包括出接口和最优标签绑定,这个为Date Plane,决定数据转发。 什么是最优标签呢,比如下面这个图,R4身后有个4.4.4.4的条目,R4会为这个条目分配一个标签,并且传递给R2,R3,R2,R3也会本地产生一个标签 传递给邻居,假设R1去往这个4.4.4.4的路径R2比R3的cost的小,那么在路由条目中,只会显示下一跳为R2,而不是R3,那么出现在LFIB表中的就是关于R2分配的关于4.4.4.4的标签信息和出接口,而R3分配的标签信息 还是会保存在本地LIB表中,当R2出现了故障以后,它会自动切换到R3上,并且把LFIB表中的标签绑定改为R3所分配的。 LFIB表中只会显示FIB里面最优路径的下一跳标签信息(根据LIB数据库中保存的label信息),如果是负载均衡的话,那么标签也会负载均衡。这时候,一个数据包过来的话,那么它只会查看LFIB表,而不去关心路由表,因为LSR属于MPLS Domain的内部路由器,所以这个数据包肯定是打了标签的,这样必须保证在单一的MPLS Domain中一定要保持标签的连续性。它在MPLS VPN中也叫PE路由器,它也分为Control Plane和Date Plane,首先也由IGP协议来完成路由的收敛,形成FIB表,然后LDP为每一条路由前缀分配标签信息,保存在LIB表中。Data Plane会引用FIB表(IP Forwaring Table),但是这个FIB表关联了标签信息,当一个纯IP数据包过来以后,它查看关于这个目的网络是否有标签信息,如果有直接压入这个标签信息交给LFIB转发。如果没有就直接由IP包转发。LFIB表(由FIB和LIB构成),它负责标签的置换、压入和弹出。 如果弹出以后变成纯IP包,交给FIB转发。Edge LSR(PE)它的Data Plane由FIB和LFIB共同完成,它决定一个纯IP数据包是否需要压入标签,和一个标签数据包是否弹出标签转发给IP域。关于MPLS的几张表项总结RTB:由IGP协议生成的路由表,会选出最优的路径。FIB:通过RTB生成的CEF表,同时会把LIB中关于这条最优路径的标签信息关联CEF表中。 当纯IP包进来 | 或者label出来的时候,会通过FIB里面对应的标签进行压入或者弹出。LFIB:(动态)进出标签与下一跳关联LIB:(静态)LDP或者TDP协议产生的本地以及邻居的标签LFIB是通过LIB与FIB关联的一张动态标签表这张表体现了MPLS TE 、MPLS VPN等Control Plane和Date Plane的形成。Penultimate hop Popping(次莫跳)当一个IP包从Eage 过来通过FIB来查询是否压入标签,通过标签表发给P节点,查看LFIB,执行转换动作,当Eage LSR收到后,执行POP后,会再查询下一跳,把IP包转发出去。 但是Eage LSR的负担和数据包转发延迟会加大,PHP解决的是,如果边界网络的话,会发出PHP的指令给次莫跳,由它来完成POP动作,自己只查询FIB表负责下一跳。 (POP动作为弹出一层标签)MPLS的TTL两种机制:1、在MPLS中会借用三层的TTL值,经过一个路由器会减一,当到次莫跳的时候,会把MPLS中的TTL还原到IP层中。 2、边界PE上关闭 TTL传播 。这样不会关注三层的TTL,此时三层TTL为1 ,直接在MPLS上附加为255,当次莫跳的时候,会还原为1,当目的收到后就变成0丢弃。 这样客户只能看到边界与目的的设备 中间的看不到,包含了ISP的网络。MPLS的标签状态。 impose:压入标签 Swap :一个标签变成另外一个label or stack POP:弹出一层标签 ,一般为只有一层,而且是邻居告知的 untagged: 不是邻居告诉我的,而是自己发现的 标签全部弹出 aggregate: 出现递归的查询,一般出现错误的配置 或者目的为自己的直连实验部分了,实验目的不是为了做通这个实验,而是分析标签的置换过程,MPLS难点就是在于这,理论部分很好理解。R1有两个loopback,一个为1.1.1.1/24,一个为11.11.11.11/24,R2-R4各有一个32位环回口。 R5也有两个loopback口,一个为5.5.5.5/24,一个为55.55.55.55/24。 IGP使用的为OSPF,这个能体现出很多问题出来。R1和R5建立IBGP邻居,最后达到的目的是,11.11.11.11能够ping通55.55.55.55在CISCO上MPLS VPN必须开启CEF,CEF唯一一种提供MPLS标签插入的转发机制。先构建底层通信,(在BGP和MPLS中底层通信依靠IGP来完成,所以后续指的底层都为IGP)R1R1(config)#int s1/0R1(config-if)#ip add 12.1.1.1 255.255.255.0R1(config-if)#no shutR1(config-if)#int lo 1R1(config-if)#ip add 11.11.11.11 255.255.255.0R1(config-if)#int lo 0R1(config-if)#ip add 1.1.1.1 255.255.255.0R2R2(config)#int s1/0R2(config-if)#ip add 12.1.1.2 255.255.255.0R2(config-if)#no shutR2(config-if)#int lo 0R2(config-if)#ip add 2.2.2.2 255.255.255.255R2(config)#int s1/1R2(config-if)#ip add 23.1.1.1 255.255.255.0R2(config-if)#no shutR3R3(config)#int s1/1R3(config-if)#ip add 23.1.1.2 255.255.255.0R3(config-if)#no shutR3(config-if)#int s1/2R3(config-if)#ip add 34.1.1.1 255.255.255.0R3(config-if)#no shutR3(config-if)#ip add 3.3.3.3 255.255.255.255R4R4(config)#int s1/2R4(config-if)#ip add 34.1.1.2 255.255.255.0R4(config-if)#no shutR4(config-if)#int s1/3R4(config-if)#ip add 45.1.1.1 255.255.255.0R4(config-if)#no shutR4(config-if)#int lo 0R4(config-if)#ip add 4.4.4.4 255.255.255.255R5R5(config)#int s1/3R5(config-if)#ip add 45.1.1.2 255.255.255.0R5(config-if)#no shutR5(config-if)#int lo 0R5(config-if)#ip add 5.5.5.5 255.255.255.0R5(config-if)#int lo 1R5(config-if)#ip add 55.55.55.55 255.255.255.0 开始IGP的构建 OSPFR1(config-if)#router ospf 1R1(config-router)#router-id 1.1.1.1R1(config-router)#network 12.1.1.1 0.0.0.0 a 0R1(config-router)#network 1.1.1.1 0.0.0.0 a 0 R2(config-if)#router ospf 1R2(config-router)#router-id 2.2.2.2R2(config-router)#network 2.2.2.2 0.0.0.0 a 0R2(config-router)#network 12.1.1.2 0.0.0.0 a 0R2(config-router)#network 23.1.1.1 0.0.0.0 a 0R3(config-if)#router ospf 1R3(config-router)#router-id 3.3.3.3R3(config-router)#network 3.3.3.3 0.0.0.0 a 0R3(config-router)#network 23.1.1.2 0.0.0.0 a 0R3(config-router)#network 34.1.1.1 0.0.0.0 a 0R4(config-if)#router ospf 1R4(config-router)#router-id 4.4.4.4R4(config-router)#network 4.4.4.4 0.0.0.0 a 0R4(config-router)#network 34.1.1.2 0.0.0.0 a 0R4(config-router)#network 45.1.1.1 0.0.0.0 a 0R5(config)#router ospf 1R5(config-router)#router-id 5.5.5.5R5(config-router)#network 5.5.5.5 0.0.0.0 a 0R5(config-router)#network 45.1.1.2 0.0.0.0 a 0在MPLS的学习中,建议要养成一个随手配置RID的习惯,无论是OSPF还是BGP,在MPLS VPN中经常用的上。还有就是配置完毕后,先测试底层的连通性,在做后续的配置。配置R1和R5的BGPR1(config)#router bgp 1R1(config-router)#bgp router-id 1.1.1.1R1(config-router)#neighbor 5.5.5.5 remote-as 1R1(config-router)#neighbor 5.5.5.5 update-source lo0R1(config-router)#network 11.11.11.0 mask 255.255.255.0 R5(config-router)#router bgp 1R5(config-router)#bgp router-id 5.5.5.5R5(config-router)#neighbor 1.1.1.1 remote-as 1R5(config-router)#neighbor 1.1.1.1 update-source lo0R5(config-router)#network 55.55.55.0 mask 255.255.255.0关于BGP正常建立了,也已经收到R1传递过来的路由,在BGP表中为最优路由表中也有关于11.11.11.0的表项,开始测试下关于去往11.11.11.11这个网段能放通信。发现通信不了,虽然两边都收到了各自的路由,因为这是传统的IP网络,它会基于路由表的查找。首先在路由表中BGP关于11.11.11.0/24的下一跳为1.1.1.1也就是R1的RID,然后继续查找路由表关于1.1.1.1怎么去,查表下一跳为45.1.1.1,这时候会以S:55.55.55.55 D:11.11.11.11 | ICMP 头部Date发送给R4,R4收到以后,会查询路由表是否有关于去往11.11.11.11的条目,发现并没有,所以把数据包给drop了,如果以IP网络的解决办法就是NP课程提到过的 full mase 或者做RR。但是这样非常麻烦,也给ISP带来了额外的投资。MPLS能够解决这个路由黑洞的问题,它能实现只需要两个边界设备之间建立IBGP邻居关系,来传递路由,内部路由器跟本不需要知道公网的路由条目信息,从而减轻内部路由器的投资和负担。 公网上40多万条路由在以前的IP网络中,必须每个路由器都有明细的路由条目,否则会产生路由的黑洞。而MPLS出现解决了这个问题,利用的就是标签的置换。在这个实验和后续的实验中,为了分析标签转换的方便,所以通过mpls label range 来限制标签的分发范围,因为标签只具有本地的意义,有可能本地产生的为16,邻居发送给我的也是16,限制标签范围这样对于刚学习这个来说,比较容易理解,到了后面领会了的话,完全没有必要使用这个命令了,这个命令在实际中是为了解决路由器负担而设计的。MPLS的配置其实很简单,难点在于标签的置换。R1(config)#mplR1(config)#mpls label range 100 199R1(config)#mpls ldp router-id lo 0R1(config)#int s1/0R1(config-if)#mpls ipR2(config)#mpls label range 200 299R2(config)#mpls ldp router-id lo 0R2(config)#int s1/0R2(config-if)#mpls ipR2(config-if)#int s1/1R2(config-if)#mplsR2(config-if)#mpls ipR3(config)#mpls label range 300 399R3(config)#mpls ldp router-id lo0 R3(config)#int s1/1R3(config-if)#mpls ipR3(config-if)#int s1/2R3(config-if)#mpls ipR4(config)#mpls label range 400 499R4(config)#mpls ldp router-id lo 0R4(config)#int s1/2R4(config-if)#mpls ipR4(config-if)#int s1/3R4(config-if)#mpls iR5(config)#mpls label range 500 599R5(config)#int s1/3R5(config-if)#mpls ipMPLS基本配置完毕了,这里我除了R5全部手工指定了LDP的RID,这样对于网络的问题和故障的排错很有用,这里R5没指定就是看下会出现什么样的错误。R5没有发现任何邻居,而R4上关于s1/3接口也就是连接R5的接口,显示no router,之前提到过LDP的RID是跟OSPF机制一样,优选选举loopback接口最大IP,然后物理口,这里55.55.55.55是BGP路由 R4并不知道,所以显示为这个。 所以在做MPLS VPN实验的时候,关于OSPF BGP LDP的RID一定要手工指定,不然容易造成网络通信不正常。修改命令。R5(config)#mpls ldp router-id lo 0 force 必须加上force这个参数 就是立即生效。这样关于标签的分发就完成了,测试下R1到R5的通信问题。开始分析它为什么能够通信。首先它是一个纯IP包过来查看是否需要压入标签,查看的是FIB表。因为show ip cef detail的信息太多了,所以只查看了关于55.55.55.55的条目,发现它标签信息为204,之前提到过LDP只会为IGP分配标签,55.55.55.55这条路由是从BGP学习过来的,它的标签怎么来的, 上面也提到过关于BGP默认不会分发标签,但是它能够借助LDP为它分配的下一跳的标签信息,从detail中看出55.55.55.55的下一跳就是5.5.5.5 也就是R5 BGP的RID,关于5.5.5.5这个路由条路是在OSPF中宣告了的,所以它有标签信息。5.5.5.5的标签信息跟55.55.55.55的是一样的。证明了BGP会借助LDP为它下一跳分配的标签信息。这个很重要,在后续的MPLS VPN中更深入,需要理解。这种表是LFIB表,发现去往5.5.5.5 打上标签204 送给出接口s1/0,其实它本地也生成了一个关于这个路由条目的标签信息 104,如果它还连接了其他MPLS路由器的话,会把这个标签传递给对方。R2-R3标签置换都没问题,R1到R2打上204的标签出去,R2关于5.5.5.5 本地204对应303从s1/1出去,R3收到以后,置换成403转发给R4,关键在于R4.之前提到过,关于PHP的机制,当一个最后一条路由器分发关于这个标签的时候,会发送一个标签3的信息给次莫跳,所以次莫跳会执行Pop动作,也就是弹出一层标签,这里5.5.5.5 在R5是为最后一条路由器,它发送给R4会发送标签3的信息,因为R4是次莫跳,但是在这个LFIB表中,R4去往R5的标签动作不是Pop而是untagged,之前说过untagged的原因是本地发现的,而不是邻居告诉我的,它的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 汽车热交换器用铝合金:微观组织、性能关联与优化策略探究
- 2025年金蝶财务软件操作考试真题及答案
- 商品房配套新风系统买卖协议
- 充电桩安装调试技师考试试卷及答案
- 车路协同路侧设备运维技师考试试卷及答案
- 2026年医务科上半年工作总结与下半年工作计划
- 2026年会计电算化考试真题及答案
- 水库工程施工质量保证措施
- 2026 高血压病人饮食的杏仁露课件
- 2025年安徽铜陵市初二学业水平地理生物会考试题题库(答案+解析)
- 药融云-甾体类药物行业产业链白皮书
- 幼儿园课程开发与教学课件
- 整本书阅读十万个为什么分享直播课
- 2023年考研考博-考博英语-中国科学技术大学考试历年真题摘选含答案解析
- 浮头式换热器课程设计说明书
- 脊柱侧弯三维矫正
- 高考地理二轮复习+高三地理答题中的时空尺度思维+课件
- 科研文献管理工具yljcqu
- GB 16357-1996工业X射线探伤放射卫生防护标准
- FZ/T 01104-2010机织印染产品取水计算办法及单耗基本定额
- PID参数调节原理和整定方法-课件
评论
0/150
提交评论