HCIE知识点MPLS自学基础知识总结(MPLS)

导读:

      因为暑假专业布置了一个路由交换的项目实训,其中一道题目就是自学MPLS、MPLS_VPN等知识,自己搭建一个拓扑提交并进行答辩。因为之前没有接触过相关知识点,利用了两天接近三天的时间对这一系列的知识点串了一遍,在此总结出基础知识供大家一起交流学习

一、MPLS技术

          1.1 MPLS起源

          1.2 MPLS原理

                        1.2.1 MPLS定义的数据转发机制

                        1.2.2 MPLS体系架构

                        1.2.3 MPLS标签

                        1.2.4 标签是怎么加到报文上的?

          1.3 MPLS特点

                        1.3.1 基本特点

                       1.3.2  倒数第二跳标签弹出:

                       1.3.3  MPLS的上下游是基于数据层面的

         1.4 主要应用场景

一、MPLS技术

1.1 MPLS起源

上世纪90年代中期,当时路由器技术的发展远远滞后于网络的发展速度与规模,主要表现在转发效率低下、无法提供QoS保证。原因是:当时路由查找算法使用最长匹配原则,必须使用软件查找。众所周知,使用cpu资源转发报文称为软交换,使用ASIC芯片转发报文称为硬交换。

在MPLS诞生之前,ATM (异步传输机制)非常的火,早期被开发出来时是一个协议栈,既可用于广域网又可用于局域网,目的就是为了解决三层设备转发性能极低的问题。

ATM的一大优势就是当时的50M带宽,但是ATM太过注重QoS,如果想要生产支持ATM的设备,需要很高的精度,但是当时各大厂商并没有能够生产完全兼容ATM协议栈的设备,唯一只有一家思科能够生产(由于其价格十分昂贵,仅有某些超级企业能够使用得起其设备,比如运营商、一些大型跨国企业)。在ATM降价的过程中,由于100M带宽的出现,其50M的带宽优势慢慢荡然无存,慢慢被淘汰掉(以太网交换机才多少钱,ATM交换机则非常昂贵)

   使用ATM的设备有两点是可以确定的:

  ① 无论转发是基于二层还是三层,都可支持调用ASIC芯片调用,无延迟

  ② 用ATM设备转发数据,无论是带宽还是QoS、延迟都能得到保证,且均不消耗cpu资源

ATM虽然被淘汰了,但是那个时代三层设备转发数据的劣势还是没有被解决,MPLS被开发出来只有一个目的:解决三层网络设备的转发性能(增强三层网络设备对三层报文的转发)。

但是MPLS这个优势到今天也已经荡然无存了,当前的一些主流及高端的路由器硬件已经非常的发达了,并且每个厂商都会涉及一些私有的转发机制(例如CISCO就有一个CEF,使用这样的转发机制时路由表仍然会被ASIC芯片所调用,那也就是说带不带标签转发对现在的转发速率而言已经起不到太多的提升作用)

1.2 原理

MPLS(Multi protocol label Switching)多协议标签交换:由思科提出,在国际各大厂商的推动下发展起来,是一个可以在多种第二层媒质上进行标签交换的网络技术。这一技术结合了第二层的交换和第三层路由的特点,将第二层的基础设施和第三层的路由有机的结合起来,第三层的路由在网络的边缘实施,而在MPLS的网络核心采用第二层交换。

1.2.1 MPLS定义的数据转发机制

    MPLS为进入网络的IP数据包分配标签,并通过对标签的交换来实现IP数据包的转发。标签作为IP包头在网络中的代替品而存在,在网络内部MPLS在数据包所经过的路径通过交换标记(而不是看IP包头)来实现转发,当数据包要退出MPLS网络时,数据包被解开封装,继续按照IP包的路由方式到达目的地。当路由器收到一个带标签的路由报文,使用一张基于标签转发的表来转发这个报文(标签取值范围20byte,0-2的20次方),这张表非常类似于交换机的CAM表,使用此表转发带有标签的报文时,属于精确查找,并且此标签只具有本地意义(基于这点来描述,为了维护标签不需要所有的路由器拥有相同的标签,这样做就极大程度的节约路由器在转发路由时的cpu开销),这样就实现了带有标签的报文在转发时是没有延迟的。

思科三层设备转发机制:

  ① 进程交换机制(最古老的,优点是支持两种三层的负载均衡机制)

      不管收到的大量报文是否去向同一个网段,都会对没一个报文进行三层表查询和二层表查询(大量消耗cpu资源,增加网络延迟)

     基于三层的负载均衡:

      a、基于每个数据包的负载均衡

        (不同的数据报文选择不同的路径进行转发)

      b、基于每个目的地的负载均衡

        (不同目的网络的报文使用不同的路径,去向同一目的网络的报文只使用同一条路径)

  ② 快速转发机制

路由器收到报文之后,内部默认已经生成256个流的类,第一件事就是要归类,归完类对报文进行一个先后排序,路由器就对这个类的第一个报文进行三层路由表查询、二层ARP或帧中继表查询,得出转发这个报文的所有信息之后,路由器会将这些三层、二层的参数做一个整合,整合之后形成一个cache,然后将这个cache装入ASIC芯片,对于这个流类中的后边所有报文直接使用ASIC芯片中的cache进行转发(这种机制称为一次路由,多次交换或者叫一次查表,多次转发)

  ( 如果cache指定的出栈路径断了,cache就不能工作了,也不能更改,       所以说 快速转发机制是不基于拓扑的 )

  ( 快速转发仅触发类中的第一个报文,所以也仅支持三层设备负载均衡       中的基于目的地的负载均衡 )

  ③ 私有CEF协议( cisco目前的主流,转发调用ASIC芯片,不使用cpu )

        当路由器开启CEF之后,会立即生成两张表,一张是FIB,一张是Adjacency table。

 

   普通路由表不支持标签插入,路由器分发标签永远基于FIB

        FIB表:  ( 思科唯一一种支持标签嵌入的表项 )

路由器开启CEF之后,它会将路由表中的所有条目进行优化,并下载到FIB(Forwarding Information Base 转发信息库),FIB就可以理解为一张优化的路由表

   1、  FIB是从路由表项下载下来的,当路由表改变之后,FIB中的相应表项也会随之改变,所以FIB是基于拓扑的。

   2、 FIB解决了递归表查询,就是说路由表中的原始条目在转发时无论要怎样递归,这些条目只要到达FIB,路由器在查找FIB的表项的时候,一条就足以转发报文

        Adjacency table( 邻接关系表 ):

            Adjacency table表中的内容就是ARP表、帧中继表中帧中继映射的内容,但是这张表可以调用ASIC芯片。

1.2.2 MPLS体系架构:  ( 早期叫Tag-Switching标记交换,只是思科私有,标准化组织请求思科将其公开,思科同意了 )

    MPLS仅仅是一个数据层面的转发机制,它不能分发标签

    MPLS体系架构是一个非常鲜明的  数据层面  +  控制层面 架构

    数据层面:  研究什么时候加标记,加完标记的帧收到怎么转发

   

MPLS早期还叫Tag-Switching的时候,LDP的名字是私有协议TDP(Tag Distribution Protocol),后来官方重新描述为公有协议LDP(Label Distribution Protocol)

TDP协议:

既支持TCP又支持UDP封装,且端口都是711,建完邻居传递标签的时候不支持认证

LDP协议:

同样既支持TCP又支持UDP封装,但是端口号是646,建完邻居传递标签的时候支持认证

  ( TDP与LDP的唯一区别 : 是否支持认证)

控制层面:  分发标签  ( 需要使用LDP、BGP、RSVP协议)

第一步: 路由器只要启用了TDP或者LDP,LSR路由器就会给路由条目分发标签

第二步: 分发标签只是一个本地行为,分发了标签之后有必要告诉邻居对于路由条目分发了怎样的标签

( 只有向邻居分发了标签,邻居在转发报文时才知道你认识什么样的标签 )

   ( 路由器之间互相发送各自产生的标签,所以就需要使用一张表LIB来存储这些标签 )

LIB表: ( Label Information Base)

保存所有TDP或者LDP邻居分发的所有标签,以及保存本地基于每条路由条目产生的本地标签

LFIB表:  ( Label Forwarding Information Base 标签转发信息库)

从LIB来的。

BGP协议:

一样能够帮我们分发标签。BGP分发标签与TDP/LDP不太一样( 区别在不会基于BGP路由的前缀来分发标签),BGP只能在数据层面基于BGP路由的下一跳所对应的IGP路由在传输报文的时候添加标签。

RSVP协议:(Resource Reservation Protocol 资源预留协议 )QoS,这个协议不但能做资源预留,还能够为MPLS分发标签,一般用于MPLS_TE。

数据层面就是: 转发带有标签的报文、打上标签、去除标签。

控制层面就是: 分发标签、形成具有相应标签的表项

根据以上描述,在运营商部署MPLS对于IGP有什么要求?

      答:现有了路由条目才能分发标签,因为标签就是基于路由条目分发的,所以启用MPLS的前提条件不但是启用CEF(其他厂商启用相关技术),并且IGP路由还得收敛(所有路由器均含有此条路由)

1.2.3 MPLS标签:

    1、MPLS技术能在哪里使用?

        不管1层是什么介质,不管2层是什么协议都可以使用MPLS

    2、MPLS根据启用场合不同分为

      ① frame mode MPLS(帧模式MPLS):

          2层协议可以是以太网协议,可以是帧中继,可以是PPP等(只要不是ATM协议)

       ② cell  mode MPLS(信源模式MPLS):

          2层协议使用ATM协议( ATM发送的不是数据帧了,而是数据信源,在信源上添加标签的传输单元就叫做带有标签的信源 )

 MPLS标签分为四个部分:

        第1部分: 使用32位,前20位就是标签,标签范围为0-2的20次方,但[0-15]为被保留标签,真正可以使用的标签为16-2的20次方

              △ 标签0显式空标签

              △ 标签3隐式空标签

              △ 标签1路由器报警标签

              △ 标签14 OAM报警标签

        第2部分:

        EXP(Experimental field 实验位),3位,简单提一下用来做QoS

        第3部分:

        S(栈底标识,描述数据帧能打几层标签)1位,标识最早打的第一个标签

        第4部分:

        TTL,8位,为防止带标签的报文在域内出现环路

★★ 一个数据帧可以打若干标签:

        纯MPLS应用,1层标签就够

        MPLS_VPN,2层标签

        MPLS_TE,一般3层标签

★★ 在一台路由器上,不能为不同的路由条目分发相同的标签,每条路由条目对应本地唯一的标签。例外是0-15标签,如果给路由条目分发的标签取值在0-15之间,此时多条路由可以对应相同的保留标签

★★ MPLS标签打在报文的哪个位置?

    答:打在2层和3层报头之间,因为MP即为Multi Protocol多协议,路由收到一个带标签的帧根本不看3层报头直接根据标签转发,代表这个标签字段肯定在3层报头之前,又因为2层设备交换机不能识别标签,2层交换机收到带标签的数据帧还会以为它是一个原始的帧,所以只有在3层设备收到报文的时候才能发现到标签的存在,并且标签的读取过程一定要先于3层报头,所以标签应该打在2层帧头和3层数据包头之间。

★★ 标签打的越早,距离3层报头越近

    LSR: Label Switch Routers 标签交换路由器,也就是运行MPLS的路由器

        在MPLS域内,标签交换路由器分为两类:

        1、 LSR(Label Switch Routers):如果路由器所有接口都启用MPLS,就是一个LSR;或如果一个路由器存在于运营商的内部,没有和任何客户端路由器连接,也相当于前面说的Provider路由器,也就是一个LSR

        2、 Edge LSR边缘标签交换路由器:如果某些接口启用MPLS,某些接口启用传统的IPv4,那就是Edge LSR;或如果既连接了运营商内部路由器,又连接了客户端路由器,那就是边缘LSR,也就是前面说的PE路由器

入标签、出标签:

    对于一台路由器来说,入标签只能是本地能识别的标签,出标签只能是该下一跳邻居分发的标签

       

Edge LSR职责:

      1、 当某个IPv4数据包到达边缘LSR的时候,边缘LSR首先会查询FIB(转发数据库),由于FIB可以存储标签等信息,基于FIB的查询就可以得出需要那个接口转发,并且转发之前需要加上哪个标签,这个添加标签的行为就是边缘LSR的第一大工作职责,impose label 压入标签。

      2、 当标签报文到达出边缘LSR的时候,首先查询LFIB,然后弹出标签pop label ,然后通过查询FIB并找到没有启用MPLS的接口将报文转发走.

 

LSR职责:

      1、 当收到来自边缘LSR的报文时,查询LFIB表,将标签转换为另一个标签,即交换标签swap label

 

★★ MPLS域转发报文时,LSR只执行标签交换,所以只查询LFIB表;Edge LSR既有可能压入标签,又有可能弹出标签,所以极有可能查询FIB表,又有可能查询LFIB表。

 

Component Architecture of LSR: ( LSR的体系架构组件 )

    首先运行动态路由协议,邻居之间交互路由条目形成完整路由表,基于路由表形成FIB表并运行LDP\TDP,为FIB表路由条目分发标签,分发完标签之后交互给所有的LDP\TDP邻居,交互完之后形成LFIB,再实现接收带有标签的帧,使用LFIB进行标签交换之后把带标签的帧转发出去。

 

Component   Architecture of Edge LSR:  

( Edge LSR的体系架构组件 )

    Edge LSR控制层流程与LSR控制层流程一致,都是先运行动态路由协议,互相交互路由条目形成路由表,将完整的路由表下载成为FIB表,运行LDP\TDP为FIB表的路由条目分发标签。但是在数据层面就与LSR有所不同了。、

   如果收到纯IPv4包,查FIB表,确定出站接口,确定要打入的标签,进行标签压入之后转发入MPLS域(发送的就是一个带标签的包);如果收到的是带标签的数据包,先查询LFIB表,查过之后发现要通过一个非MPLS接口发送出MPLS域,接下来为了转发还要查询一次FIB表,将帧标签弹出(pop label),转发出去一个IPv4报文。

 

★★ 基于以上Edge LSR转发数据包的过程描述,请问入MPLS域的边缘LSR和出MPLS域的边缘LSR哪个更浪费资源?

     答:肯定是出MPLS域的边缘LSR更浪费资源,因为入的路由器仅需查询一张FIB表,而出的路由器却需要先查询LFIB表,其次在查询FIB表,相比之下多查询了一张表。

 

那么怎么优化这一浪费资源的行为呢?

     答: PHP倒数第二跳标签弹出

★★  MPLS的一个原则:  只要转发的数据包带有标签,就一定要查询LFIB表

 

1.2.4 标签是怎么加到报文上的?(谁加的?什么时候加的?怎么加上的?)

答:PC发送报文不会带标签,报文在转发的过程中也不会加上标签。

    1、( 标签无非由终端设备加上或者中间设备加上。终端设备即PC,中间设备即路由器。由运营商端的路由器加上。所以肯定是路由器给加上的,因为PC不具有这种功能。路由器又分运营商路由器和客户端

        一般情况下由运营商路由器添加标签

    2 FEC转发等价类,简单理解逻辑的分类,包含具有相同属性的报文,一般情况下一个FEC中所有的报文可能具有以下这几种相同属性:

          (ISP中)

          --3层VPN目的地址

          --2层地址(dlci、mac)

          --相同的出接口

          --相同的QoS

          --相同的源地址

          (MP中,一个FEC内所有报文具有的相同属性就是他们要去往相同的目的网段,接收方路由器接受到若干报文的时候可以根据一条路由条目发送一个FEC内的所有报文)

   所以,一个FEC就是路由表中的一个条目

★★ FEC与标签的关系?

     路由器在收到若干报文的时候,先进行分类,将他们分入不同的FEC,这样一个FEC内的所有报文都能对应一个路由器本地唯一的标签 一个FEC对应MP中一个唯一的路由条目,一个FEC对应ISP路由器中唯一的标签。标签的分发就是基于路由表中的路由条目,路由器会为路由表中的每条路由条目分发一个标签,这样只要能被转发的报文再被转发前都会加上和路由条目对应的标签。

(一个FEC对应一个路由条目,一个路由条目对应一个标签,就说明一个FEC对应一个标签)

 

( 标签转发信息库 )运营商内部对接收到带标签的报文不在查询路由表,直接查询标签转发数据库

 

  运营商内网不可能无穷大,报文从一个边缘进来,肯定要从另一个边缘出去。

    (运营商外网设备不能识别带标签报文,所以运营商的另一个边缘的路由器会把报文携带的标签给去除掉,还原成最初的IP报文)

          PE(Provider Edge)运营商边缘路由器,P(provider)运营商内网路由器(没有连接任何客户端,会对报文进行标签交换)

 

1.3 特点

1.3.1 基本特点

这一技术结合了第二层的交换和第三层的路由有机地结合起来,第三层的路由在网络的边缘实施,而在MPLS的网络核心采用第二层交换。

控制层面分发标签的具体原则:

    1、分发标签时控制层的具体流程:

       1.1  运行路由协议,交互路由条目,形成完整路由表

 

    1.2  LSR路由器只会通过TDP\LDP向FIB表(由本地路由表下载而来)中的直连路由、静态路由、IGP(内部网关协议)路由分发标签,而不会为BGP路由分发标签。

      ( 只要启用了TDP\LDP,LSR路由器就会给以上所述的路由条目分发标签 )

     ( BGP只能在数据层面基于BGP路由的下一跳所对应的IGP路由在传输报文的时候添加标签( BGP只能在数据层面为路由条目的下一跳添加标签 )

 

   1.3 每个LSR向邻居LSR分发标签

       分发采用异步,谁先获得完整FIB表,谁先开始分发

 

★★  为什么要向邻居分发标签呢?

        答:  因为通过IGP通告了一条路由,这条路由条目整个AS内都有,虽然大家路由条目都一致,但是通过TDP\LDP分发的标签只具有本地意义,且路由器收到的标签只有是自己分发的才能够被识别,所以这时候就需要一种机制使所有LSR都互相认得邻居的标签,那这种机制就是互相转发标签。

    ( 也就是说,A向邻居分发过标签之后邻居向自身发送带标签的报文时就会把标签转换为A自身能识别的标签)

 

1.3.2  倒数第二跳标签弹出:

 MPLS的默认优化机制,无需自动配置(基于路由条目确定是否到达目的网络的最后一跳)

      1、  边缘LSR默认行为既需要查询FIB表,又需要查询LFIB表,浪费资源

      2、 当边缘LSR是一条路由条目的最后一跳路由器时,此边缘LSR关于路由条目的标签就不再是16以上的标签了,而是3号隐式空标签。即如果一台路由器已经是路由条目的最后一跳时,则此路由器会为这些路由条目分发的标签就是3号隐式空标签。3标签可以同时分发给多个路由条目。(向外分发的标签即为3号标签)

      3、 该边缘LSR分发3号标签给倒数第二跳路由器,倒数第二跳路由器将本地标签(例如18)与3号标签绑定形成映射关系(即出标签变成3号标签),此时倒数第二跳路由器转发带有本地标签(18)的报文时查询LFIB表,因为3标签是不能添加的,所以会把这个标签弹出,发送给边缘LSR(事实上这个标签弹出动作相当于一个标签交换操作)

1.3.3  MPLS的上下游是基于数据层面的

常规三层交换机、路由器在数据层面收到报文应该怎么转发?

        答:通过一个接口接受进来,去掉二层帧和帧尾,露出三层IP报头,提取目的IP地址,在路由表中进行最长匹配路由查询

        路由表中条目一般是主网路由和超网路由,也就是说路由器收到的路由条目通常情况下不能被完完整整的精确匹配,我们对路由表查询通常定义为模糊查询,这个模糊查询是基于路由器的一个内置组件--TCAM(TCAM放在专用硬件当中)(三重CAM表,这个三重CAM表跟交换机的纯CAM表不太一样),交换机在数据层面转发报文就是使用CAM表,这个CAM表就是在收到一个数据帧提取目的MAC地址,然后再CAM表中查找是否拥有可以转发这个报文的MAC地址表(交换机的这个查表称为精确查找,原因是CAM表中的一条MAC地址就相当于是去往一个主机的路由,而交换机收到的数据帧的MAC地址肯定是能被某条mac地址表精确匹配)

 

★★ CAM表是交换机中的一张MAC地址与端口的对应关系映射表,表中有MAC地址,对应的端口号,端口所属的VLAN

★★ CAM表与MAC表区别:

     两张表所其作用的环境不同,MAC表是全局表,一般通过全局CPU进程转发需要查看MAC表,但是,现在基本都是硬件快速转发,那么这个时候就生成了CAM表,它其实是从MAC表衍生出来的,每个接口都可以有CAM以便快速转发。

    ( 简而言之,CAM从MAC转变而来,并用于基于硬件的快速转发 )

        速度:  精确查找   >>  模糊查找

          ( 1、匹配机制的差异  2、ASIC芯片 )

★★ 交换机转发流量为什么延迟小?

原因就是交换机进行CAM表查询的时候是完全基于ASIC芯片的

1.4 主要应用场景

随着ASIC技术的发展,路由查找速度已经不成为阻碍网络发展的瓶颈。这使得MPLS在提高转发速度方面不具备明显的优势。

但由于MPLS结合了IP网络强大的三层路由功能和传统二层网络高效的转发机制,在转发平面采用面向连接方式,与现有二层网络转发方式非常相似,这些特点使得MPLS能够很容易地实现IP与ATM、帧中继等二层网络的无缝融合,并为服务质量(QoS,Quality of Service)、流量工程(TE,Traffic Engineering)、虚拟专用网(VPN,Virtual Private Network)等应用提供更好的解决方案。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值