MPLS_VPN基础概念
广域网访问:
- 通过专线来实现访问,与ISP无关。
- 通过VPN(虚拟专用网络)技术,在ISP网络基础上搭建私有网络。
::: tip VPN是使用隧道将私网数据相互通信的技术,本质是数据的再次封装。 :::
MPLS VPN的设备概念:
- CE设备: 用户边缘设备(用户网络连接外网的设备)
- PE设备: ISP边缘设备
- P设备 : ISP内部设备
Site:站点。站点内的网络通信不需要ISP参与,即私有网络。 站点内可以通过配置动态路由协议相互通信。 站点内可以通过配置NAT协议来实现访问公网。
私有网络通过公共网络通信时,私有网络的路由信息不能在公共网络上传递(私网地址可重复使用,如果多个站点使用相同的私网路由,公网学习后会出现路由冲突)。
公网设备通过VRF技术,配置VPN实例,隔离私网路由和公网路由。
VRF:虚拟路由转发,在物理设备上虚拟出一台设备来装在私网路由信息
VPN实例:每一台路由器都会存在一张默认的路由表 (public)
使用VRF技术后,虚拟出一台路由器,虚拟路由器会存在路由表,路由表的名称为VPN实例的名称
VPN实例可以创建多个,来对应连接多站点用户
绑定实例的接口就是连接站点的接口,即后续站点转发发送路由都会存放在该VPN实例的路由表(私网路由表)中
做了VPN实例的设备需要和站点设备建立动态路由协议,配置路由协议时也需要绑定VPN实例,绑定实例的路由协议计算路由信息后,会将其存放在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实例
如上,不同站点进来的私网路由分配不同VPN实例进行区分。
MPLS VPN技术架构
MPLS VPN是多种技术结合的综合解决方案,主要包含下列技术:
- MP-BGP(拓展的BGP协议,可提供对多种地址族的支持):负责在PE与PE之间传递站点内的路由信息。
- LDP:负责PE与PE之间的隧道建立。
- VRF:负责PE的VPN用户管理。
- 静态路由、IGP、BGP:负责PE与CE之间的路由信息交换。
如上,站点接入段CE和PE建立路由访问,PE创建多个VPN实例保存不同CE传来的私网路由表。
私网路由在控制平面的传递
公网设备传递私网路由时,如果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路由被接收)
如上,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路由。
私网数据在转发平面的传递
配置思路
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实例建立邻居关系: CE设备上没有VPN实例,查看普通的BGP邻居: ::: ::: 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邻居关系:
私网路由传递到公网
[AR1]bgp 65001
[AR1-bgp]network 100.1.1.1 32
PE设备查看BGP的VPNv4路由表:
如上,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协议,AR3使能MPLS功能后,产生标签1024,并向4.4.4.4的邻居通告。AR4未作配置,暂时收不到该路由。 如上policy vpn-target过滤所有的VPNv4路由。
[AR4-bgp]ipv4-family vpnv4
[AR4-bgp-af-vpnv4]undo policy vpn-target
如上,AR4上只有VPNv4的路由信息,没有VPN实例的路由信息。传递过程中,将该路由的下一跳指向AR3的环回口地址。 ::: tip AR3为该路由打上私网标签1024,同时将下一跳变为自身3.3.3.3。 :::
如上,AR4收到来自AR3的出标签为1024的VPNv4路由,将路由原封不动转发给AR5。
如上,由于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隧道: 查看去往3.3.3.3的BGP路由变为最优且可用: 该路由被写入IP路由表,AR6可以学习到: 如上,AR1的地址就可以传递到AR6。
AR6通告自身地址,AR1同样可以收到AR6通告地址:
[AR6]bgp 65002
[AR6-bgp]network 100.6.6.6 32
AR1和AR6两个站点可以正常访问: ::: tip BGP访问必须带指定更新源。 :::
数据在转发平面的转发流程
AR1的100.1.1.1访问AR6的100.6.6.6。 查看AR3上VPN实例A的路由表: VPN实例A上的路由表中没有去往5.5.5.5的路由,需要从公网路由表中查询。 查看AR3上FIB: TunnelID值为非0,表示通过隧道转发。 由VPN实例路由器中可知,100.6.6.6通过BGP协议转发。 查看AR3的BGP VPNv4路由表: VPN实例A中针对该路由100.6.6.6封装私网标签1030,下一跳为5.5.5.5。 AR3上FIB表中去往5.5.5.5走公网隧道(MPLS)转发。 查看AR3上MPLS_LSP表: MPLS转发时,AR3是入节点,去往5.5.5.5的FEC打公网标签1027。从GE0/0/2口转发到AR4。 查看AR4的MPLS_LSP表,判断标签1027的转发: AR4将收到标签1027的FEC,打上特殊标签3,从GE0/0/1口发出给AR5,发出时弹出公网标签(PHP)。 AR5收到私网标签1030,在VPN实例A中剥离私网标签。 查看AR5的VPN实例A路由表: 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 + 私网标签。 :::
::: warning 如上,公网隧道必须是连续的,即如果公网存在多台P设备,都需要开启MPLS和MPLS_LDP功能。 :::