首页 > 其他 > 详细

假装网络工程师20——MPLS动态LSP介绍

时间:2020-09-28 13:15:39      阅读:34      评论:0      收藏:0      [点我收藏+]
一、背景介绍

之前介绍静态LSP在小规模的场景下可以进行手动配置,当网络规模变大时,静态LSP的配置就变得复杂,他需要为每一个FEC创建label,手工配置的静态LSP就不符合当前场景。 类似于IGP的ospf,rip等协议的路由表,MPLS在控制面也需要一个协议来构建标签表,此处用到的协议就是ldp(label distribute protocol)。当控制面的标签表构建完成后,在实际转发时路由器看的是标签转发表(lfib),这点跟igp的fib表概念很相似。

二、实验介绍

本次实验拓扑如下图所示:
技术分享图片
在上图中,端口的IP地址为xx.0.0.x/24(x为路由器编号),如R1上g0/0/0接口地址为12.0.0.1/24,每个路由器的使用x.x.x.x/32(x为路由器编号)作为:

  • loopback 0地址
  • ospf router-id
  • mpls lsr-id
  • ldp通信地址

类似于BGP协议,LDP协议也需要一个地址作为通信地址,这个地址默认是lsr-id的公网地址,如果是私网地址则为接口的主IP地址,所以本例中ldp的通信地址默认为x.x.x.x/32,为了让通信地址能够正常通信,在MPLS下层需要借助IGP协议,本例采用ospf协议

三、配置信息

接口IP地址这些设置省略,本次仅演示R1上的配置,其余路由器上配置类似,不再赘述:

# 先打通底层IGP,为后续MPLS做准备
[R1]ospf 1 router-id 1.1.1.1 
[R1-ospf-1]area 0
[R1-ospf-1-area-0.0.0.0]network 12.0.0.1 0.0.0.0
[R1-ospf-1-area-0.0.0.0]network 1.1.1.1 0.0.0.0

# 全局使能MPLS,lsr-id不会自动选举,必须手动设置
[R1]mpls lsr-id 1.1.1.1   
[R1]mpls
[R1]mpls ldp 

# 在对应接口上启用mpls功能 
[R1]interface g0/0/0
[R1-GigabitEthernet0/0/0]mpls 
[R1-GigabitEthernet0/0/0]mpls ldp 

至此,配置完成,可以通过tracert来查看1.1.1.1/32去往5.5.5.5/32确实是通过标签转发进行,而没有通过IGP走IP报文

<R1>tracert -v -a 1.1.1.1 5.5.5.5

 traceroute to  5.5.5.5(5.5.5.5), max hops: 30 ,packet length: 40,press CTRL_C t
o break 

 1 12.0.0.2[MPLS Label=1026 Exp=0 S=1 TTL=1] 30 ms  30 ms  20 ms 

 2 24.0.0.4[MPLS Label=1025 Exp=0 S=1 TTL=1] 30 ms  20 ms  30 ms      #注意:此处是倒数第二跳一弹出标签,后续会详细介绍

 3 45.0.0.5 40 ms  30 ms  30 ms 

四、MPLS LDP详解

1.建立LDP邻居

当路由器的物理接口激活LDP协议后,该接口会向224.0.0.2组播发送数据报文用于发现邻居
技术分享图片
数据报文中会携带用于LDP通信的地址,默认情况下通信地址是lsr-id的公网地址,如果lsr-id不是公网地址,则会用接口的主地址作为通信地址,,后期等LDP邻居建立后,邻居之间的keepalive报文也是通过该地址通信
技术分享图片
通信地址也可以手动指定

[R1-GigabitEthernet0/0/0]mpls ldp transport-address ?
  Ethernet         Ethernet interface
  GigabitEthernet  GigabitEthernet interface
  LoopBack         LoopBack interface
  NULL             NULL interface
  interface        Specify Transport Address As One Of Interface

当接口相互之间交互过通信地址后,由地址大的一方主动发起TCP会话请求,经过三次握手后最终建立连接,至此LDP邻居关系建立完成
技术分享图片

2、LDP协议的标签分发策略

LDP协议默认会给每一个32位的FEC分配一格标签,且在MPLS中,这些标签虽然是无序分发的,但有下面3种策略

  • 主动发送/被动拉取
    主动分发:当A路由器为他的FEC分配完标签后主动通告给它的LDP邻居(默认)
    被动拉取:当A路由器为他的FEC分配完标签后,当它的LDP邻居请求时再发送给它的邻居
    [R2-GigabitEthernet0/0/1]mpls ldp advertisement ?
    dod  Downstream On Demand Advertisement Mode
    du   Downstream Unsolicited Advertisement Mode
  • 等待/非等待
    等待:对于不同路由器上相同的FEC,只有收到下游路由器通告的标签后才会将自己给这个FEC分配的标签通告给上游路由器(默认)
    非等待:路由器给FEC分配标签后直接转发给LDP邻居,不需要等待下游路由器对该FEC的通告
  • 自由/保守
    自由:由于低层IGP互通,对于一个FEC可能会有多个路由器为他分配标签,但它只会选择路由表中下一跳路由器分配的标签作为LSP路径,对于其他路由器为这个FEC分配的标签自由策略是保留(默认)
    保守:保守策略就是不保留除下一跳路由器之外,其他路由器为这个FEC分配的标签

    3、LDP的水平分割

    类似RIP协议一样,LDP协议也有水平分割,即从一个接口接收到了FEC标签,不会把本地为这个FEC分配的标签从这个接口再发出去。但水平分割这个策略默认是关闭的,同一时刻就可能有以下这种情况
    技术分享图片
    R2与R3都在向对方发送相同FEC的标签,此时LSP之所以能够不成为环路的原因就是他会选择IGP中下一跳地址通告的FEC标签作为LSP路径

    4、LDP的POP弹出标签动作

    不同于静态MPLS最后一跳弹出标签,启用LDP后它的POP动作发生在倒数第二跳
    技术分享图片
    从下面可以看出,R4再将数据报文交给R5的时候,就已经变成了纯IP报文,这么做的原因是为了减轻MPLS域边界路由器的负担,同时提升转发效率。如果弹出标签的动作发生在边界路由器上,他则要先再转发表中找到相应的隧道信息拆掉标签,再一次查询转发表进行IP报文转发。

    <R1>tracert -v -a 1.1.1.1 5.5.5.5
    
    traceroute to  5.5.5.5(5.5.5.5), max hops: 30 ,packet length: 40,press CTRL_C t
    o break 
    
    1 12.0.0.2[MPLS Label=1026 Exp=0 S=1 TTL=1] 30 ms  30 ms  20 ms 
    
    2 24.0.0.4[MPLS Label=1025 Exp=0 S=1 TTL=1] 30 ms  20 ms  30 ms      
    
    3 45.0.0.5 40 ms  30 ms  30 ms 

    那么他是如何判断哪个交换机是倒数第二个从而触发POP动作的呢?MPLS的LDP标签是从1024开始分发,他有0~15共16个保留标签,路由器默认会给本地起源的FEC标签分配为3
    技术分享图片
    当上游路由器发现下游FEC标签为3时,就触发POP动作,会弹出标签将IP报文送给边界路由器

    [R4]dis tunnel-info tunnel-id 0x1
    Tunnel ID:                    0x1
    Tunnel Token:                 1
    Type:                         lsp
    Destination:                  5.5.5.5
    Out Slot:                     0
    Instance ID:                  0
    Out Interface:                GigabitEthernet0/0/1
    Out Label:                    3
    Next Hop:                     45.0.0.5
    Lsp Index:                    4097

    这么做虽然减轻了边界路由器的负担提升了转发效率,但是也带来了一个新的问题:标签中EXP用于优化的信息丢失,通常一个优化是要求端到端的,这样就不满足端到端的要求,解决办法是用标签0代替标签3,他会保留除label外的其他字段
    技术分享图片
    这样最后边界路由器看到label 0时直接进行IP报文转发,而优先级等字段也得以保留

    五、总结

    通过上述内容,我们可以将动态LDP总结为以下几点:

    1. MPLS域中的LDP协议会依赖低层的IGP协议进行LSP路径选择与防环
    2. LDP协议默认工作在主动,等待,自由模式下
    3. LDP协议的POP动作发生在倒数第二跳

假装网络工程师20——MPLS动态LSP介绍

原文:https://blog.51cto.com/arkling/2538179

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!