MPLS_VPN

似梦清欢
• 阅读 128

MPLS_VPN基础概念

广域网访问:

  • 通过专线来实现访问,与ISP无关。
  • 通过VPN(虚拟专用网络)技术,在ISP网络基础上搭建私有网络。

::: tip VPN是使用隧道将私网数据相互通信的技术,本质是数据的再次封装。 :::

MPLS VPN的设备概念:

  1. CE设备: 用户边缘设备(用户网络连接外网的设备)
  2. PE设备: ISP边缘设备
  3. P设备 : ISP内部设备

Site:站点。站点内的网络通信不需要ISP参与,即私有网络。 站点内可以通过配置动态路由协议相互通信。 站点内可以通过配置NAT协议来实现访问公网。

私有网络通过公共网络通信时,私有网络的路由信息不能在公共网络上传递(私网地址可重复使用,如果多个站点使用相同的私网路由,公网学习后会出现路由冲突)。

公网设备通过VRF技术,配置VPN实例,隔离私网路由和公网路由。

VRF:虚拟路由转发,在物理设备上虚拟出一台设备来装在私网路由信息
VPN实例:每一台路由器都会存在一张默认的路由表 (public)
       使用VRF技术后,虚拟出一台路由器,虚拟路由器会存在路由表,路由表的名称为VPN实例的名称

VPN实例可以创建多个,来对应连接多站点用户
绑定实例的接口就是连接站点的接口,即后续站点转发发送路由都会存放在该VPN实例的路由表(私网路由表)中
做了VPN实例的设备需要和站点设备建立动态路由协议,配置路由协议时也需要绑定VPN实例,绑定实例的路由协议计算路由信息后,会将其存放在VPN实例的路由表(私网路由表)中

公共路由表: MPLS_VPN

[AR]ip vpn-instance A      创建了一台虚拟路由器,虚拟路由器的路由表名称为A
[AR-vpn-instance-A]ipv4-family
[AR]int lo 0
[AR-LoopBack0]ip ad 10.1.1.1 24
[AR-LoopBack0]ip binding vpn-instance A     接口绑定VPN实例

MPLS_VPN 如上,不同站点进来的私网路由分配不同VPN实例进行区分。


MPLS VPN技术架构

MPLS VPN是多种技术结合的综合解决方案,主要包含下列技术:

  • MP-BGP(拓展的BGP协议,可提供对多种地址族的支持):负责在PE与PE之间传递站点内的路由信息。
  • LDP:负责PE与PE之间的隧道建立。
  • VRF:负责PE的VPN用户管理。
  • 静态路由、IGP、BGP:负责PE与CE之间的路由信息交换。

MPLS_VPN 如上,站点接入段CE和PE建立路由访问,PE创建多个VPN实例保存不同CE传来的私网路由表。


私网路由在控制平面的传递

MPLS_VPN

公网设备传递私网路由时,如果P设备可以正常接收私网路由,P设备应如何区分不同的私网路由?
   因为VPN实例连接用户站点(CE),所以VPN实例一般出现PE设备上。公网设备P不存在VPN实例
   在PE设备发送私网路由时,不发出相同的私网路由,以便P设备区分

PE设备如何发送不同的私网路由?
   PE设备发送私网路由时,根据规则设定发送的是VPNv4路由

VPNv4路由由RD + 私网路由构成,64bit RD值 + 32 bit私网路由 = VPNv4路由
        (RD:路由区分符。表示形式:32bit :32bit)

VPN实例视图下配置RD,将不同站点的私网路由和指定RD绑定,形成唯一的VPNv4路由。

[AR-vpn-instance-A]route-distinguisher 1:1      VPN实例A视图下为该站点配置RD值1:1

::: tip RD的作用是帮助设备P区分不同站点的路由信息。 :::

对于PE设备如何接收P设备传递来的VPNv4路由?(PE设备如何判断VPNv4路由被哪一个站点接收?)
    PE设备通过在VPN实例下规定了RT值进行VPNv4路由的接收
    (RT:路由目标。表示形式:32bit :32bit)

两种不同的RT值:
    IRT:入方向RT(只具备本地意义,不能随VPNv4发出,作用:用于匹配VPNv4路由携带的ERT,如果值相等则接收该VPNv4路由)
    ERT:出方向RT(具备全局意义,随VPNv4发出,作用:等待IRT的匹配,如果匹配则该VPNv4路由被接收)

MPLS_VPN 如上,P设备AR4发送到PE设备AR5时,ERT和PE设备上VPN实例的IRT对应后,即可实现指定站点数据包转发到对应站点。

设备配置RT值
[AR-vpn-instance-A]vpn-target 1:1 
 IVT Assignment result: 
Info: VPN-Target assignment is successful.
 EVT Assignment result: 
Info: VPN-Target assignment is successful.

[AR-vpn-instance-A]vpn-target 1:1 ?
  STRING<3-21>         X.X.X.X:number<0-65535> or                               
                       number<0-65535>:number<0-4294967295> or                  
                       number<0-65535>.number<0-65535>:number<0-65535> or       
                       <65536-4294967295>:<0-65535> but not support 0:0 and     
                       0.0:0
  both                 Set export VPN-Target and import VPN-Target
  export-extcommunity  Set export VPN-Target         设置ERT
  import-extcommunity  Set import VPN-Target         设置IRT
  <cr>                 Please press ENTER to execute command 

::: tip IRT和ERT在VPN实例下可以配置多个。 需要相互接收的站点,要将本地的IRT和对端的ERT配置相等值。 :::

设备间通过MP-BGP建立VPNv4的BGP邻居关系,传递VPNv4路由。


私网数据在转发平面的传递

MPLS_VPN

配置思路
1.公网地址连通,IGP配置
2.进行公网MPLS_LDP的配置
   配置MPLS目的是传递携带标签的私网路由和数据在转发时的标签处理     
   配置LDP(标签分发协议)目的是建立一条公网MPLS隧道
3.配置站点信息
  1.PE配置VPN实例,绑定站点接口
  2.PE和CE之间配置动态路由协议(BGP)
4.在公网PE与RR之间建立MP-IBGP邻居关系
   指定MP-IBGP邻居就是VPNv4的邻居关系
   配置MP-BGP目的是传递私网路由,建立私网标签隧道
5.将私网路由传递到公网
  1.站点协议BGP,BGP之间直接传递的
  2.站点协议OSPF、ISIS,需要在PE上与BGP相互引入
公网ISIS配置
[AR3]isis 
[AR3-isis-1]network-entity 49.0001.0000.0000.0003.00
[AR3-isis-1]is-level level-2
[AR3-isis-1]cost-style wide

[AR4]isis 
[AR4-isis-1]network-entity 49.0001.0000.0000.0004.00
[AR4-isis-1]is-level level-2
[AR4-isis-1]cost-style wide

[AR5]isis 
[AR5-isis-1]network-entity 49.0001.0000.0000.0005.00
[AR5-isis-1]is-level level-2
[AR5-isis-1]cost-style wide


私网BGP配置
(IP v4可以不配置route id,由接口充当,IP v6需要配置route id)
[AR1]bgp 65001
[AR1-bgp]peer 10.1.13.3 as-number 100

[AR6]bgp 65002
[AR6-bgp]peer 10.1.56.5 as-number 100

后续进行公网MPLS_LDP配置。

PE设备做VPN实例
[AR3]ip vpn-instance A
[AR3-vpn-instance-A]route-distinguisher 100:1    
[AR3-vpn-instance-A-af-ipv4]vpn-target 1:1 import-extcommunity 
[AR3-vpn-instance-A-af-ipv4]vpn-target 1:2 export-extcommunity 
[AR3-GigabitEthernet0/0/0]ip binding vpn-instance A
Info: All IPv4 related configurations on this interface are removed!
Info: All IPv6 related configurations on this interface are removed!
[AR3-GigabitEthernet0/0/0]ip ad 10.1.13.3 24       如上提示,配置了接口绑定VPN实例后,接口IP信息会被删除,需要重新配置

[AR5]ip vpn-instance A
[AR5-vpn-instance-A]route-distinguisher 300:1    
[AR5-vpn-instance-A-af-ipv4]vpn-target 1:2 import-extcommunity     
[AR5-vpn-instance-A-af-ipv4]vpn-target 1:1 export-extcommunity 
[AR5-GigabitEthernet0/0/1]ip binding vpn-instance A
[AR5-GigabitEthernet0/0/1]ip ad 10.1.56.5 24

PE设备和CE设备建立BGP连接
[AR3]bgp 100
[AR3-bgp]ipv4-family vpn-instance A     
[AR3-bgp-A]peer 10.1.13.1 as-number 65001   

[AR5]bgp 100    
[AR5-bgp]ipv4-family vpn-instance
[AR5-bgp-A]peer 10.1.56.6 as-number 65002

::: warning PE设备直接指定CE设备地址作为BGP邻居无法建立连接,原因是PE设备公网路由表中不存在CE设备的IP网段。

[AR3-bgp]peer 10.1.13.1 as-number 65001       (×)

IP v4地址族下VPN实例A的路由表中找到该地址建立EBGP邻居:
[AR3-bgp]ipv4-family vpn-instance A     
[AR3-bgp-A]peer 10.1.13.1 as-number 65001       

PE设备查看VPN实例建立邻居关系: MPLS_VPN CE设备上没有VPN实例,查看普通的BGP邻居: MPLS_VPN ::: ::: tip BGP公网之间,AR3-AR5需要建立MP-IBGP邻居。只建立IP v4的IBGP邻居后,由于私网传来的路由是VPNv4路由,由AR3发送后,不能经过IP v4邻居传递。 :::

公网设备间建立VPNv4邻居关系
[AR3]bgp 100
[AR3-bgp]ipv4-family vpnv4
[AR3-bgp-af-vpnv4]peer 4.4.4.4 as 100      该邻居会配置在IP v4视图下,该视图下没有as-number命令,直接使用as代替,该命令回车后会回到bgp视图下
[AR3-bgp]peer 4.4.4.4 connect-interface LoopBack 0     指定更新源
[AR3-bgp]undo peer 4.4.4.4 enable       取消在IP v4地址族下的使能
[AR3-bgp]ipv4-family vpnv4    
[AR3-bgp-af-vpnv4]peer 4.4.4.4 enable

[AR4]bgp 100
[AR4-bgp]peer 3.3.3.3 as-number 100    
[AR4-bgp]peer 3.3.3.3 connect-interface LoopBack 0
[AR4-bgp]undo peer 3.3.3.3 enable
[AR4-bgp]ipv4-family vpnv4    
[AR4-bgp-af-vpnv4]peer 3.3.3.3 enable 
[AR4-bgp]peer 5.5.5.5 as-number 100    
[AR4-bgp]peer 5.5.5.5 connect-interface LoopBack 0
[AR4-bgp]undo peer 5.5.5.5 enable
[AR4-bgp]ipv4-family vpnv4    
[AR4-bgp-af-vpnv4]peer 5.5.5.5 enable 
VPNv4地址族下指定反射器客户端
[AR4-bgp-af-vpnv4]peer 3.3.3.3 reflect-client
[AR4-bgp-af-vpnv4]peer 5.5.5.5 reflect-client 

[AR5]bgp 100
[AR5-bgp]peer 4.4.4.4 as-number 100        
[AR5-bgp]peer 4.4.4.4 connect-interface LoopBack 0
[AR5-bgp]undo peer 4.4.4.4 enable
[AR5-bgp]ipv4-family vpnv4
[AR5-bgp-af-vpnv4]peer 4.4.4.4 enable 

::: warning 配置BGP要先做会话,然后在不同的地址族使能BGP会话(华为设备会默认在IP v4地址族中使能)。

(VPN实例绑定的接口地址不在IP v4的公网路由表中,需要进入到VPN实例的路由表中指定会话。) ::: 查看VPNv4邻居关系: MPLS_VPN

私网路由传递到公网
[AR1]bgp 65001
[AR1-bgp]network 100.1.1.1 32

PE设备查看BGP的VPNv4路由表: MPLS_VPN

MPLS_VPN MPLS_VPN 如上,VPNv4路由使用扩展的团体属性携带ERT值(对照规划判断),同时分配一个私网标签给该路由。(私网标签作用:对端PE访问数据时,封装私网标签;本端PE收到私网标签后,根据标签信息判断那个实例做数据接收。) 上图中PE设备收到私网发来的路由后,不通告给邻居,原因是未配置MPLS_LDP。

::: tip MP-BGP可以分配标签给私网路由使用,即MP-BGP可以分配私网标签,帮助数据进入私网隧道。私网隧道需要使用公网隧道进行封装,即需要公网标签(MPLS_LDP)。 :::

公网配置MPLS_LDP
[AR3]mpls lsr-id 3.3.3.3
[AR3]mpls
[AR3]mpls ldp
[AR3-GigabitEthernet0/0/2]mpls 
[AR3-GigabitEthernet0/0/2]mpls ldp

::: tip CE设备将VPNv4路由传递到PE设备AR3,先进入VPN实例路由表,再转换成VPNv4路由表(携带RD值就是VPNv4路由表)。 AR3再将VPNv4路由传递到AR5,先通过VPNv4路由表接收,再转换为VPN实例路由表。 ::: MPLS_VPN MPLS_VPN 如上,标签转发都是通过MPLS协议,AR3使能MPLS功能后,产生标签1024,并向4.4.4.4的邻居通告。AR4未作配置,暂时收不到该路由。 MPLS_VPN 如上policy vpn-target过滤所有的VPNv4路由。

[AR4-bgp]ipv4-family vpnv4
[AR4-bgp-af-vpnv4]undo policy vpn-target

MPLS_VPN 如上,AR4上只有VPNv4的路由信息,没有VPN实例的路由信息。传递过程中,将该路由的下一跳指向AR3的环回口地址。 ::: tip AR3为该路由打上私网标签1024,同时将下一跳变为自身3.3.3.3。 :::

MPLS_VPN 如上,AR4收到来自AR3的出标签为1024的VPNv4路由,将路由原封不动转发给AR5。

MPLS_VPN MPLS_VPN

MPLS_VPN 如上,由于BGP只传递最优且可用的路由(BGP路由表中的 * 表示有效,> 表示最优),所以AR5不会将该路由通告出去。 ::: danger 数据封装私网路由源目IP(二层)后进入公网,在PE设备AR3上打上私网标签(2.5层)进入私网隧道,还需要封装公网IP(二层)迭代到实际公网链路上,封装流程出错。 应该在私网标签上封装公网标签,才可以实现通信转发。 ::: 如上,当AR6数据去往AR1时,在PE设备AR5上,不能直接按照下一跳3.3.3.3封装,所以该BGP路由不是最优且可用的,即不能写入IP路由表。当有公网标签去往3.3.3.3,才可以完成封装实现转发。(MPLS LSP表中有去往3.3.3.3的标签信息)

公网配置MPLS_LDP
[AR4]mpls lsr-id 4.4.4.4
[AR4]mpls
[AR4]mpls ldp
[AR4-GigabitEthernet0/0/0]mpls 
[AR4-GigabitEthernet0/0/0]mpls ldp 
[AR4-GigabitEthernet0/0/1]mpls     
[AR4-GigabitEthernet0/0/1]mpls ldp 
[AR5]mpls lsr-id 5.5.5.5
[AR5]mpls
[AR5]mpls ldp
[AR5-GigabitEthernet0/0/0]mpls 
[AR5-GigabitEthernet0/0/0]mpls ldp 

配置MPLS_LDP后,AR5上有了去往3.3.3.3的公网LSP隧道: MPLS_VPN 查看去往3.3.3.3的BGP路由变为最优且可用: MPLS_VPN 该路由被写入IP路由表,AR6可以学习到: MPLS_VPN 如上,AR1的地址就可以传递到AR6。

AR6通告自身地址,AR1同样可以收到AR6通告地址:

[AR6]bgp 65002    
[AR6-bgp]network 100.6.6.6 32

MPLS_VPN AR1和AR6两个站点可以正常访问: MPLS_VPN ::: tip BGP访问必须带指定更新源。 :::


数据在转发平面的转发流程

AR1的100.1.1.1访问AR6的100.6.6.6。 查看AR3上VPN实例A的路由表: MPLS_VPN VPN实例A上的路由表中没有去往5.5.5.5的路由,需要从公网路由表中查询。 查看AR3上FIB: MPLS_VPN TunnelID值为非0,表示通过隧道转发。 由VPN实例路由器中可知,100.6.6.6通过BGP协议转发。 查看AR3的BGP VPNv4路由表: MPLS_VPN VPN实例A中针对该路由100.6.6.6封装私网标签1030,下一跳为5.5.5.5。 AR3上FIB表中去往5.5.5.5走公网隧道(MPLS)转发。 查看AR3上MPLS_LSP表: MPLS_VPN MPLS转发时,AR3是入节点,去往5.5.5.5的FEC打公网标签1027。从GE0/0/2口转发到AR4。 查看AR4的MPLS_LSP表,判断标签1027的转发: MPLS_VPN AR4将收到标签1027的FEC,打上特殊标签3,从GE0/0/1口发出给AR5,发出时弹出公网标签(PHP)。 MPLS_VPN AR5收到私网标签1030,在VPN实例A中剥离私网标签。 查看AR5的VPN实例A路由表: MPLS_VPN AR5到100.6.6.6的路由下一跳10.1.56.56,同时有直连路由10.1.56.0网段对应,从GE0/0/1口发给AR6(路由递归)。

::: tip VPNv4路由表和VPNv4实例路由表区别:

VPNv4实例表中的路由就是私网路由信息。 VPNv4路由表中路由是VPNv4路由(私网路由添加RD)+ ERT + 私网标签。 :::

MPLS_VPN ::: warning 如上,公网隧道必须是连续的,即如果公网存在多台P设备,都需要开启MPLS和MPLS_LDP功能。 :::

点赞
收藏
评论区
推荐文章

暂无数据

似梦清欢
似梦清欢
Lv1
学海无涯
文章
17
粉丝
17
获赞
1