实验六:MPLS

MPLS

实验拓扑图

在这里插入图片描述

Requirment
  1. 设计一个网络,满足MPLS解决BGP路由黑洞的问题
  2. 分析该网络,通过查看命令分析数据是详细通信过程
实验步骤
  • 首先按照实验需求把实验拓扑图搭建起来:

    在这里插入图片描述

  • 然后按照实验需求配置好相关的IP地址,并且每个路由器上面都要创建一个回环口用来建立BGP邻居,然后在AR1和AR6上面再创建一个回环口用来作为路由信息在BGP里面宣告。这里需要特别注意一下,用来建立BGP邻居的回环口路由信息不能在BGP里面宣告

配置BGP路由协议
  • 首先是AR1和AR2,我们用相应的回环口loop1来建立EBGP的邻居关系,具体步骤不在详细描述

  • 然后是AR2和AR5,也用相应的回环口loop1来建立IBGP的邻居关系,具体步骤不在详细描述

  • 最后是AR5和AR6,我们也用相应的回环口loop1来建立EBGP的邻居关系,具体步骤不在详细描述

  • 最后我们查看AR1的BGP邻居表:

    在这里插入图片描述

    1. 和AR2EBGP邻居关系建立完成
  • 我们在查看AR2的邻居表:

    在这里插入图片描述

    1. 和AR5的IBGP邻居关系已经建立好了
  • 我们在查看AR5的邻居表:

    在这里插入图片描述

    1. 和AR6的EBGP邻居关系建立成功了
  • 然后我们在AR1和AR6上面,分别在BGP进程里面宣告11.11.11.11 /32 和66.66.66.66 /32路由信息,命令如下:

    1. [AR1-bgp]network 11.11.11.11 255.255.255.255
    2. [AR6-bgp]network 66.66.66.66 255.255.255.255
  • 然后我们在AR1上用回环口loop2来pingAR2上面的回环口loop2,命令如下:

    在这里插入图片描述

    1. 我们可以发现,不能ping通,这是为什么了?我们先在AR2上面查看一下路由表:

      在这里插入图片描述

      • 我们可以发现到66.66.66.66 /32的路由信息下一跳是5.5.5.5,我们再看,到5.5.5.5 /32的下一跳是11.1.1.2,而11.1.1.2是AR3,所以我们在到AR3上面去查看路由表:

        在这里插入图片描述

        • 可以发现,AR3上面根本没有到66.66.66.66 /32的路由条目,因为在BGP进程里面宣告的路由信息,只能在BGP邻居之间传递,所以AR3和AR4上面都没有相应的路由条目,我们把这种现象称为路由黑洞,解决这个问题的方法就是采用MPLS(多协议标签交换技术),接下来我们重点分析该技术
MPLS(多协议标签交换技术)具体工作原理
  • 要解决路由黑洞问题,我们这里采用MPLS技术,在AR2和AR5之间的所有路由器配置MPLS协议,在具体讲解MPLS这个协议之前,我们先来说明一下路由器当中存在的三张表

    1. 路由表:这个是传统的IP数据包传递时需要匹配的表
    2. FIB表:传统的IP传递实质上匹配的是这张表,直接把路由表镜像过来一份
    3. LFIB表:标签转发信息库,每个路由器上面,到相应的节点的相应的标签信息
  • 这里我主要通过FIB表和LFIB表来详细说明MPLS的转发原理

  • 首先我们先看一下配置命令:

    1. 在AR2上面:

      • mpls lsr-id 2.2.2.2
      • mpls //启动MPLS协议
        • mpls ldp //全局使能LDP协议
      • int g0/0/1
        • mpls //在接口g0/0/1里面使能,mpls协议
        • mpls ldp //把接口g0/0/1加入到mpls协议以及ldp协议
      • route recursive-lookup tunnel //把IP环境和MPLS环境连接起来,在两个LER上面配置,默认LER是不会做打标签的动作的
    2. 在AR3上面:

      • mpls lsr-id 3.3.3.3
      • mpls //启动MPLS协议
        • mpls ldp //全局使能LDP协议
      • int g0/0/1
        • mpls //在接口g0/0/1里面使能,mpls协议
        • mpls ldp //把接口g0/0/1加入到mpls协议以及ldp协议中
      • int g0/0/0
        • mpls //在接口g0/0/0里面使能,mpls协议
        • mpls ldp //把接口g0/0/0加入到mpls协议以及ldp协议中
    3. 在AR4上面:

      • mpls lsr-id 4.4.4.4
      • mpls //启动MPLS协议
        • mpls ldp //全局使能LDP协议
      • int g0/0/1
        • mpls //在接口g0/0/1里面使能,mpls协议
        • mpls ldp //把接口g0/0/1加入到mpls协议以及ldp协议中
      • int g0/0/0
        • mpls //在接口g0/0/0里面使能,mpls协议
        • mpls ldp //把接口g0/0/0加入到mpls协议以及ldp协议中
    4. 在AR5上面:

      • mpls lsr-id 5.5.5.5
      • mpls //启动MPLS协议
        • mpls ldp //全局使能LDP协议
      • int g0/0/0
        • mpls //在接口g0/0/0里面使能,mpls协议
        • mpls ldp //把接口g0/0/0加入到mpls协议以及ldp协议中
      • route recursive-lookup tunnel //把IP环境和MPLS环境连接起来,在两个LER上面配置,默认LER是不会做拆标签的动作的
    5. 最后需要注意一点,mpls lsr-id id号,这里的id号一定要是可以ping通的哈,然后AR2~AR5等所有路由器都开启了mpls和LDP协议,这样就可以通过MPLS技术来转发相应的数据包,就可以解决AR3和AR4上面没有通过BGP协议获取来的路由条目而导致路有黑洞的问题了,如下图:

      在这里插入图片描述

  • 这里我需要说明一下:AR2和AR5是LER路由器,用来PUSH和POP标签,AR3和AR4是LSR路由器,用来SWAP标签,具体理解下面会说。

  • 工作原理:

    1. 在配置完所有命令之后,每个路由器(AR2~AR5)通过MPLS协议会为自己的**/32的回环口对应的IP地址打上一个标签,并把标签信息(对应Out列)和IP地址(对应FEC列)的对应关系存储在LFIB表中,然后通过LDP协议向自己LDP邻居发送自己LFIB表信息,而LDP邻居在接收到邻居发送的LFIB表信息之后,会为LFIB表中/32的带有标签(Out列不为空)的目标IP地址**打上一个属于自己的标签,并且作为一个新的条目存储起来。说了这么多,还是看图分析吧,因为这里最重要的是AR5和AR2上面的两条回环口路由条目,所以我们就主要分析2.2.2.2 /32 和5.5.5.5 /32这两个目标地址

    2. 首先我们分析5.5.5.5 /32这个目标地址,在AR5上面查看LFIB表:

      在这里插入图片描述

      • In:表示路由器本身给通往该目标地址的打上的一个标签,这里AR5给5.5.5.5/32打的标签是3
    3. 然后我们在AR4上面查看LFIB表:

      在这里插入图片描述

      • Out:表示邻居分配的标签
      • 我们在查看这个5.5.5.5/32这个目标地址,在AR4上面它的In变成了1024,Out变成了3,3是AR5给目标地址5.5.5.5/32分配的标签。在LFIB表中我们还可以发现一个条目,就是In为NULL,Out为3的目标地址为5.5.5.5 /32的条目,其实是当AR5把自己的LFIB表发送给AR4的时候,AR4检查到In为NULL,Out为3的目标地址为5.5.5.5 /32的条目符合打标签的规则,然后自己就在In那个位置打上了自己的1024标签,然后再把LFIB表传递给自己的邻居AR5(针对5.5.5.5 /32这个目标地址,其实AR5不会对它产生任何作用,但是对于其它的地址AR5会根据情况打上相应的规范标签)和AR3
    4. 然后我们在AR3上面查看LFIB表:

      在这里插入图片描述

      • 这个时候对目标地址5.5.5.5/32的这个条目,IN变成了1025(AR3自己打的),Out变成了1024(AR4打的标签)
    5. 我们再来查看AR2的LFIB表:

      在这里插入图片描述

      • 这个时候对目标地址5.5.5.5/32的这个条目,IN变成了1025(AR2打的),Out变成了1025(AR3打的标签),只是AR2和AR3打的标签一样罢了
    6. 所以在AR2上面发出一个目标地址为5.5.5.5 /32的IP数据包,它就会查看LFIB表中对应的条目,打上(PUSH)上Out对应的标签值,从对应的接口出去,在AR3和AR4上面交换标签,最终到达AR5,因为AR5上面对应的条目Out为NULL,所以通过MPLS网络转发该数据包的任务就结束了

    7. 说了这么多,产生路由黑洞的原因,是因为AR3和AR4上面没有11.11.11.11 /32和66.66.66.66 /32的路由条目,而且我们目前,用AR1pingAR6的目标IP是66.66.66.66 /32,并不是5.5.5.5/32,LFIB表中也没有66.66.66.66 /32,为什么还是可以ping通了,所以说了半天感觉没有什么用?当然有用,我们在AR2上面查看一下FIB表:

      在这里插入图片描述

      • 我们可以发现目标为66.66.66.66的路由条目,它的BGP下一跳是5.5.5.5,这里有一个机制,MPLS不会给BGP条目分配标签值,会借用BGP下一跳地址的标签值,我们在看一幅图:

      在这里插入图片描述

      • 这里BGP下一跳是5.5.5.5 /32,它的标签值是1025,说白了可以理解为目标为66.66.66.66/32的IP数据包它匹配LFIB表中的对应5.5.5.5 /32的条目,在MPLS网络中转发,被转发到AR5之后,撤掉(POP)标签,然后就又通过IP网络的方式进行数据转发了,所以可以理解为5.5.5.5 /32是目标地址66.66.66.66/32的IP数据包的传输地址
    8. 最后,AR6pingAR1的话,我们可以在AR5上面查看FIB表:

      在这里插入图片描述

      • 目标为11.11.11.11 32的数据包的BGP下一跳为2.2.2.2,那么2.2.2.2 /32是目标地址11.11.11.11/32的IP数据包的传输地址了,关于AR6pingAR1的具体过程我不在说明,和AR1pingAR6是一样的原理

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值