假装网络工程师23——MPLS单域通信过程详解荐

一、背景说明

上一篇文章只是讲述了多站点穿过mpls域进行通信,本文专门从路由传输与数据传输两个维度详细讲解传输的过程,上文实验拓扑如下图所示,为了简单起见,只已客户A为例(紫色)进行描述
假装网络工程师23——MPLS单域通信过程详解荐

二、路由传输层面

  1. Rh I } g o 2 & & E5与R1之间通过os8 B y 7 e 6pf 1学习到5.5.5.5/32网络
    假装网络工程师23——MPLS单域通信过程详解荐
  2. 将5.5.5Y v Q.5/32路由导入R1上的instp z + I : i e - aance A中H G $ - 1 i P t,在bgp路由表中能看到5.5.5.5/32的起. } y + 9 9 R q e源路由器为R1,起源方式为incomplete
    假装网络工程师23——MPLS单域通信过程详解荐
  3. 由于R1和R3底层已经通过ospf建立邻居关系,bgp协议的update包可以直接通过“一跳”的方式将路由从R1传到R3

    由于Ri G ~3上也创建了VRF,所以R1将5.5.5.5/32^ : - = w l @ C传给R3时将普通% o ? B的bpg报文变成m# lp-bgp报文传送给R3,其中通过rd值来表示路由的唯一性,rt值告诉$ 8 o C @R3该路由应该放进R3上哪个Vv b s _ ; 5 RF中,rt值信息粘附在R1传给R3的bgp update报文community扩展属性中

    一并传给R3的* Y , 5 ^ & W 6 a还有R1通过mp-bgp为5.5.5.5/32分配的标签值,此处为1028
    假装网络工程师23——MPLS单域通信过程详解荐
    这一点也可以从R1上看到
    假装网络工程师23——MPLS单域通信过程详解荐
  4. 最后,R3将5.5.5.5/32由mp-bgp引入ospf1,在通过ospf1发给R7,至此路由信息传送完成
    假装网络工程师23——MPLS单域通信过程详解荐
  5. 由上述可知,在整个过程中,PE(R1,R3)设备的任务最为繁重,他需要将普$ p L通的bgp路由X H F @ c条目转换成mp-bgp的44 S _ M z路由条目,再通过lsp隧道发出,pe路由器的功能模块在此过程中如下图所示
    假装网络工程师23——MPLS单域通信过程详解荐
    可以看到BGP除了本身的
    4路由表外,还单独为每个vrf实例维护了一张路` M x %由表

    三、数据传输层面

  6. 首先数据包从R7出来,目的地址是5.5.5.5/N F X32
  7. 1 ^ ] W P U于R1,R2,R3之间还运行了ldp协议,所以当D t #数据包到达R3时,栈底先压上R1的mp-bgp为5.5.5.5/32分配W 0 ` L = 6 l Z的标签1028,外层再压上R2为1.1.1.1/32分配的标签1025传送给R2
    假装网络工程师23——MPLS单域通信过程详解荐
    之所以. M K压上R2为1.1.1.1/32分配的标签,是因为在R3的fib表中,去往5.5.5.5/| e =32走的l & L是0x3隧道
    假装网络工程师23——MPLS单域通信过程详解荐
    而在0x3隧道中目的地址变成了1.1.1.d e G1,下一跳是R2的M J v v m V 6g0/0/1接口,标签为1025
    假装网络工程师23——MPLS单域通信过程详解荐
  8. 数据包到达R2后,剥离外层标签,再发给R1
    假装网络工程师23——MPLS单域通信过程详解荐
  9. R1根据MP-BGP分配的标签值放入相应的VRF中,最后以ip报文的形式发送给R5,至此数据传输完成

    整个过程可以在R7上进行标签路径查看
    假装网络工程师23——MPLS单域通信过程详解荐

    四、RD、R[ { P ? U 7T与MP-BGP label详解

    1.RT详解

    假装网络工程师23——MPLS单域通信过程详解荐
    当R1要把路由传给R3时,由于R3上也运行了vrt : (f,所以就需要有一种判断机制来确定将路由存放到那一个vrf中,而rt的引入就是结局这个问题,他作为只对vrf感兴趣的判断依据k ! + ` $ 0 5,存放于BGP updata的扩展commuI 8 - @ 0 r U anity属性中,所以rt属于控制(路由传输)层面的参数

    2.RD详解

    关于rd值,以R1为例,很多解释说他是为了在R1上标识路由的唯一性,其实这个说法并不准确,再往深层次的挖,就算R1上instance A与instance B使用了相同的路由,但BGP updata报文中的rt值已经判断出要传输的路f * 8 Y由属于哪个vrf,所以rd值的作用并不是在此体现

还是以R1为例,假设instance A与instance B上都有5.5.5.5/32,发送给R3后,由于有rt这个c S = P R % s * o扩展属性,所以R3使能分辨出该放到哪个vrf中的,但之后如果R1给R3发的是一种撤销报文(route reserve),J A e $ o r这种报文与BGP的u7 V Q v b T jpdata不同,他不会去查看属性,所以此时的R3就不知道该撤销那个vrf中的5.5.5.5/32,rd也只是F u J S G s s r X在这种场景下发挥作用。这也是为什么rd是粘附在路由前缀之前,而rt在扩展属性中,rd与rt一样属于控制(路由传输)层面的} G / m 9 L T k参数

3.Label详解

假装网络工程师23——MPLS单域通信过程详解荐
首先要说明的是,label属于转发? | P Y M M R(数据传输)层面的参数。当R1将路由传递个R3后,R3将数据要发送给R1,此时他知道如何去往R1,但数据包送到R1的那个vrf中却无法判定,所以bgpY [ h h m , f [在通过rt值将路由发送过来时,一并附带一个label值,就是用于告诉R3将c @ 8 o h o ( m数据发u X = A X q 8 v往哪个vrf的