MPLS VPN基础概述(附图实验)

  • MPLS VPN的几个要求

  • MPLS(多协议标签交换)的标签控制方式主要包括标签分发、通告及管理方式。以下是对这几个方面的详细介绍:
  • 标签通告模式
    • 下游自主(Downstream Unsolicited):在此模式下,LSR会主动将自己为FEC捆绑的标签通告给上游邻居,而无需等待上游的请求。这种方式加快了标签信息的传播速度,提高了网络的收敛速度。
    • 下游按需(Downstream On Demand):只有当上游邻居向LSR请求标签映射时,LSR才会向上游发送标签映射消息。这种方式更加节省带宽,但可能会增加网络的延迟。
  • 标签分发控制模式
    • 独立控制(Independent Control):在独立控制模式下,LSR无需等待来自下游的标签映射,即可自主为FEC分配标签。这种方式允许LSR更加灵活地处理标签的分配,适用于需要快速响应的网络环境。
    • 有序控制(Ordered Control):在有序控制模式下,LSR必须收到FEC下一跳的标签映射消息后,或者当该LSR是此FEC的出节点时,才能为FEC分配标签。这种模式确保了标签分配的顺序性和准确性,有助于避免标签冲突和错误路由。
  • 标签保留模式
    • 自由模式(Liberal Retention):在自由模式下,LSR会从所有邻居那里接收并保留标签映射,无论这些邻居是否是其下一跳。这种模式增加了网络的冗余性,有助于快速适应网络拓扑的变化。
    • 保守模式(Conservative Retention):在保守模式下,LSR仅保留来自其最优下一跳邻居的标签映射。这种方式减少了存储需求和潜在的混淆风险,但可能在网络变化时需要更长的时间来重新建立LSP。
  • 注意:MPLS和LSP不是一个概念,在设备和接口开启MPLS功能仅仅只是开启设备/接口进行MPLS转发的能力,此时是没有LSP(通俗一点说就是没有标签)的,具体的LSP要么通过协议驱动,比如通过LDP、BGP、RSVP-TE,要么使用手工的方式配置LSP
  • 需求1:隧道自动建立
    • 在骨干网执行MPLS转发 结合LDP
    • 说白了就是在上图的AR3、AR6、AR7这个三个设备之间使用LDP协议建立LSP,最终能看到的效果就是在AR3、AR6、AR7上能看到去往对应Loopback接口的LSP,比如AR6和AR7上拥有去往AR3的Loopback接口3.3.3.3的标签
  • 需求2:PE设备收到私网路由,私网路由冲突了怎么办
    • VRF技术解决
    • 比如在上图,Site1和Site3都通过OSPF传递给AR3一条私网路由192.168.1.1/24,那么在AR3上可以使用VRF技术区分
    • 具体的命令
      • 第一步:创建VPN实例
        • ip vpn-instance Site1 //创建VPN实例
        • ipv4-family //建立IPv4地址簇
        • ip vpn-instance Site3
        • ipv4-family
      • 第二步:PE的接口和协议绑定VPN实例
        • interface GigabitEthernet0/0/0 //AR3连接Site1的接口
        • ip binding vpn-instance Site1 //一定记得重新配置IP地址,因为绑定VPN实例之后,IP地址会消失
        • ip address 172.16.23.3 255.255.255.0
        • interface GigabitEthernet0/0/1 //AR3连接Site3的接口
        • ip binding vpn-instance Site3
        • ip address 172.16.13.3 255.255.255.0
      • 第三步:PE的协议绑定VPN实例,本质上就相当于将一台PE虚拟成三台PE,一台是没有绑定VPN实例的PE,一台是绑定VPN实例Site1的PE,一台是绑定VPN实例Site3的PE。CE如果没有一虚多的需求就不需要绑定VPN实例。
        • ospf 2 vpn-instance Site1
        • area 0.0.0.0
        • network 172.16.23.3 0.0.0.0
        • #
        • ospf 3 vpn-instance Site3
        • area 0.0.0.0
        • network 172.16.13.3 0.0.0.0
      • 实验现象,使用以下命令可以看到多个路由表
        • 没有绑定VPN实例的公网路由表

        • PE上来自Site1的路由表

        • PE上来自Site3的路由表

  • 需求3:私网路由怎么在公网传递
    • 给私网路由添加上RD值,让它全局唯一
    • 私网路由在PE上可以使用VPN实例分开,那么当这条路由被传递给P设备、对端PE设备呢?此时仅仅依靠VRF就稍显力不从心。那我们可不可以将IPv4路由变化一下,让在公网上传递的IPv4路由都能带上每个Site的特点,比如来自Site1的192.168.1.1/24的路由就叫Site1-192.168.1.1。这就是RD值完成的工作
    • 配置:
      • 给来自Site1的路由打上100:1的标签(在PE上完成即可)
        • ip vpn-instance Site1
        • ipv4-family
        • route-distinguisher 100:1
      • 给来自Site3的路由打上100:3的标签
        • ip vpn-instance Site3
        • ipv4-family
        • route-distinguisher 100:3
  • 需求4:选择什么路由协议传递VPNv4路由
    • 现在的IPv4路由已经发生了本质上的变化,它不再是原本的32bit,而是被添加上了一段64bit的RD值,变成了一段96bit的VPNv4路由,所以此时不能再使用传统的路由协议去传递,需要对路由协议做出改变。因为BGP采用TLV架构,具备良好的扩展性,同时BGP传递路由不是可以跨设备传递,BGP能承载大量路由。所以选择了BGP传递VPNv4路由。
    • 配置:假设公网设备都配置过了IPv4的BGP
      • 第一步:PE和P设备之间建立BGP VPNv4的邻居
        • ipv4-family vpnv4 //进入VPNv4协议簇
        • peer 6.6.6.6 enable //将对应的邻居在VPNv4协议簇中使能
      • 第二步:将来自VPN实例中的路由引入进BGP的VPN实例当中
        • ipv4-family vpn-instance Site1
        • import-route ospf 2
        • #
        • ipv4-family vpn-instance Site3
        • import-route ospf 3
  • 需求5:PE设备收到对端路由的时候怎么知道应该放入哪个VPN实例当中
    • 对端的PE收到了VPNv4路由,这些VPNv4路由上有对应的RD值。那么本端PE应该将哪些VPNv4路由放入对应的VPN实例路由表中呢?比如接收了一条Site1-192.168.1.1的路由,那么这条路由应该放入Site2的路由表中还是放入Site3的路由表中,还是都放入进去呢?此时可以通过使能RT值来完成。
      • Export RT :路由从站点发出去的时候打上的标记
      • import RT :VPN实例希望接收哪些路由进入本实例的路由表里面
    • 配置(例如让Site1设备只接收来自Site2的路由,让Site2设备只接收来自Site1的路由)
      • 第一步:在AR3(PE)上配置Site1发出的路由打上100:1的RT值,AR3只希望接收100:2 RT值的路由
        • ip vpn-instance Site1
        • ipv4-family
        • route-distinguisher 100:1
        • vpn-target 100:1 export-extcommunity
        • vpn-target 100:2 import-extcommunity
      • 第二步:在AR7(PE)上配置Site2发出的路由打上100:2的RT值,AR7只希望接收100:1 RT值的路由
        • ip vpn-instance Site2
        • ipv4-family
        • route-distinguisher 100:2
        • vpn-target 100:2 export-extcommunity
        • vpn-target 100:1 import-extcommunity
      • 第三步:在所有的PE设备、P设备的BGP VPNv4协议簇下有这句默认命令
        • policy vpn-target
        • 这句命令的含义是开启RT值得检查,只有发给该设备的路由的RT值和自己配置的import方向的RT值一致才接收,可是在P设备上根本没有配置任何的VPN实例,如果也开启对RT值的检查带来的结果就是P设备无法转发VPNv4路由,所以在P设备上应该配置以下命令,关闭对RT值的检查。
          • ipv4-family vpnv4
          • undo policy vpn-target
  • 需求6:在进行数据包转发的时候,数据包转发无法携带RD值,所以需要在VPNv4路由传出去的时候也带上一个标签。
    • 其实就是数据转发的时候没RT值,那么假设Site2发送一个数据到达AR3(PE),AR3要将这个数据转发给VPN实例Site1还是VPN实例Site3呢?
    • 为了解决这个问题,就让BGP在传递路由的时候顺便带上一个标签发给对端PE,这样对端PE在转发数据的时候就会先打上这个标签,然后当本端PE设备(比如AR3)识别后就可以转发给对应的VPN实例。
    • 请注意,在前面的步骤我都没写到任何和MPLS有关的命令,此时你在P设备先使用display bgp vpnv4 all peer ,查看VPNv4邻居,是可以看到邻居关系的。但是使用display bgp vpnv4 all routing-table 却看不到任何和VPNv4相关的路由。这是因为此时的VPNv4路由是不完整的!此时的BGP没有使能MPLS能力,所以BGP发路由的时候不会带上这个至关重要的私网标签!!!

    • 通过命令查看AR3的VPNv4路由是不带标签的

    • 在AR3上配置MPLS和MPLS LSR-ID之后就可以看到AR3的路由是会带上标签的(仅在AR3配置MPLS LSR-ID、全局开启MPLS能力,没有配置任何其他参数。)
    • 注意:MPLS和LSP不是一个概念,在设备和接口开启MPLS功能仅仅只是开启设备/接口进行MPLS转发的能力,此时是没有LSP(通俗一点说就是没有标签)的,具体的LSP要么通过协议驱动,比如通过LDP、BGP、RSVP-TE,要么使用手工的方式配置LSP。我在这里仅仅是使能了AR3能使用MPLS的能力而已,具体的标签分配工作是BGP协议完成的。

    • AR6此时是可以看到路由的

    • 查看AR3的LSP,能看到一个BGP LSP的列表(注意此时我除了AR3配置MPLS LSR-ID和全局开启MPLS能力之外没有任何其他操作)这个BGP LSP的作用就是当AR3收到一个数据包,该数据包的标签假设带上了1024,AR3就知道应该将这个数据送往Site1这个VRF进行处理。

  • 最后一步:在AR3、AR6、AR7开启MPLS 和 MPLS LDP功能。
    • 此时再次查看LSP,会看到多出了一个LDP LSP,这里的LSP是用于AR3(PE)、AR6(P)、AR7(PE)设备之间的Loopback接口互通的。这里的LSP就是我们前面讲的MPLS隧道。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值