原理概述
BGP/MPLS VPN有时也简称为MPLS L3 VPN,它是 MPLS最为广泛的应用之一。BGP/MPLS VPN主要部署在运营商网络中。
在BGP/MPLS VPN 网络中,路由器被分为3类:PE路由器(Provider Edge Router)、Р路由器(Provider Router)和CE路由器(Customer Edge Router)。P路由器为BGP/MPLSVPN网络内部的路由器,通常只需要运行IGP、MPLS和 LDP。PE路由器为BGP/MPLSVPN网络的边缘路由器,用于连接客户的CE设备,通常需要运行MP-BGP(Muti-ProtocolBGP)、IGP、MPLS 和 LDP,并为不同的VPN客户配置VPN实例(VPN Instance)。CE为客户的边缘设备,用于连接PE,其上仅需要配置PE-CE连通性。
传统的BGP只能维护单一路由表的路由信息,无法为地址重叠的不同客户直接提供服务,同时也难以对不同客户的数据实施隔离,所以在 BGP/MPLS VPN中使用了MP-BGP,它可以通过使用 VPNv4地址族来区分不同客户的网络层地址信息,并使用VPN实例区分不同VPN客户的路由及流量。
在BGP/MPLS VPN中,每个VPN实例为相应的VPN客户单独维护了一张路由和转发表,称为VRF (VPN Routing and Forwarding Table),不同的VPN实例间的路由是不能够互通的。在 PE上,通过将连接CE的接口绑定至VPN实例,就可以区分不同VPN客户的路由。当PE将VPN路由传递至对端PE后,对端PE将使用VPN实例的RD(Route Distinguisher)与 VPN Target属性来区分VPN路由并将其分配至对应的VPN实例。
在BGP/MPLS VPN 中,BGP扩展团体属性VPN Target用来控制VPN路由的发布和接受。对于一个VPN实例,其 Export Target 与Import Target相互对应。一般情况下,对端PE上VPN实例的Export Target应与本地Import Target相同;本地VPN实例的ExportTarget应与对端PE的 Import Target 相同。
通常,在 BGP/MPLS VPN中,Р路由器无需运行BGP,也无需知道关于VPN的任何信息。PE上的MP-BGP会为VPN路由分配相应的标签值(VPN标签),作为内层标签,LDP分配的标签会作为外层标签。当VPN流量沿LSP经过Р路由器时,Р路由器只会进行外层标签的交换。当流量抵达对端PE时,对端PE会根据内层标签判断出流量所属的VPN。
在BGP/MPLS VPN中,PE-CE连通性的方式决定了客户如何使自己的路由进入VPN实例。通常,可以使用BGP在CE与PE间建立EBGP连接来实现 PE-CE的连通,也可以使用静态路由方式或其他动态路由协议来实现这一目的。
实验目的
理解 PE、P和CE设备的作用与区别掌握MPLS/BGP VPN的基本配置方法
实验内容
本实验中,假定AS 100为运营商网络,使用OSPF作为IGP,并运行BGP/MPLS VPN。R4和R6为公司A的两个站点的CE路由器,且使用Loopback 0接口来模拟各自内部的网络,R4和R6的PE-CE连通性均使用BGP来实现。R5和 R7为公司B的两个站点的CE路由器,且使用Loopback 0接口来模拟各自内部的网络,R5的PE-CE 连通性使用了静态路由方式,R7的PE-CE连通性使用了OSPF协议来实现。网络的最终需求是:公司A和公司B分别属于不同的 VPN,同一公司内部的网络可以相互通信,不同公司的网络之间不能通信。
1、基本配置
R1:
sys
sysname R1
int loop 0
ip add 10.0.1.1 32
int g0/0/1
ip add 10.0.14.1 24
int g0/0/0
ip add 10.0.12.1 24
int g0/0/2
ip add 10.0.15.1 24
q
ospf 1 router-id 10.0.1.1
area 0.0.0.0
network 10.0.1.1 0.0.0.0
network 10.0.12.0 0.0.0.255
R2:
sys
sysname R2
int loop 0
ip add 10.0.2.2 32
int g0/0/0
ip add 10.0.12.2 24
int g0/0/1
ip add 10.0.23.2 24
q
ospf 1 router-id 10.0.2.2
area 0.0.0.0
network 10.0.2.2 0.0.0.0
network 10.0.12.0 0.0.0.255
network 10.0.23.0 0.0.0.255
R3:
sys
sysname R3
int loop 0
ip add 10.0.3.3 32
int g0/0/0
ip add 10.0.36.3 24
int g0/0/1
ip add 10.0.23.3 24
int g0/0/2
ip add 10.0.37.3 24
q
ospf 1 router-id 10.0.3.3
area 0.0.0.0
network 10.0.3.3 0.0.0.0
network 10.0.23.0 0.0.0.255
R4:
sys
sysname R4
int loop 0
ip add 10.0.4.4 32
int g0/0/0
ip add 10.0.14.4 24
q
R5:
sys
sysname R5
int loop 0
ip add 10.0.5.5 32
int g0/0/0
ip add 10.0.15.5 24
q
R6:
sys
sysname R6
int loop 0
ip add 10.0.6.6 32
int g0/0/0
ip add 10.0.36.6 24
q
R7:
sys
sysname R7
int loop 0
ip add 10.0.7.7 32
int g0/0/0
ip add 10.0.37.7 24
q
配置基本的IP地址
配置运营商网络的OSPF路由协议
在AS 100内配置OSPF协议作为IGP,各路由器均属于区域0,且使用Loopback 0接口IP地址作为Router-ID。
配置完成后,在R2上查看OSPF邻居建立情况。
在AS 100内配置MPLS协议与LDP,各路由器使用Loopback 0接口地址作为LSR-ID。
r1:
mpls lsr-id 10.0.1.1
mpls ldp
mpls
interface GigabitEthernet0/0/0
mpls
mpls ldp
r2:
mpls lsr-id 10.0.2.2
mpls ldp
mpls
interface GigabitEthernet0/0/0
mpls
mpls ldp
#
interface GigabitEthernet0/0/1
mpls
mpls ldp
r3:
mpls lsr-id 10.0.3.3
mpls ldp
mpls
interface GigabitEthernet0/0/1
mpls
mpls ldp
可以看到,LDP会话状态为Operational,会话成功建立。
可以看到,MPLS 网络已经为R1,R2和R3的Loopback接口路由建立了相应的LSP。
配置PE设备间的MP-BGP
#首先,在R1.上建立R1与R3的IBGP邻居关系。
bgp 100
peer 10.0.3.3 as-number 100
peer 10.0.3.3 connect-interface LoopBack 0
peer 10.0.3.3 next-hop-local
#然后,使用ipv4-family vpnv4命令进入VPNv4视图。
ipv4-family vpnv4
#接下来,在VPNv4视图下启用与对等体交换VPNv4路由信息的能力。
peer 10.0.3.3 enable
#最后,允许与对等体交换路由信息时携带BGP团体属性。
peer 10.0.3.3 advertise-community
#在R3.上完成同样的配置。
bgp 100
peer 10.0.1.1 as-number 100
peer 10.0.1.1 conect-interface LoopBack 0
peer 10.0.1.1 next-hop-local
ipv4 family vpnv4
peer 10.0.1.1 enable
peer 10.0.1.1 advertise-community
可以看到,R1与R3之间的 BGP 邻居状态为Established,表明BGP邻居关系已成功建立。
在PE上创建VPN实例并与接口进行绑定
首先,在R1的系统视图下使用ip vpn-instance vpna命令为公司A创建名为vpna的VPN实例,并进入实例视图。然后,在实例视图下使用ipv4-family命令启用VPN实例的IPv4地址族,并进入IPv4地址族的视图。接下来,在 IPv4地址族视图下使用route-distinguisher 300:1命令配置RD为300:1。最后,使用vpn-target 100:1 both命令配置Import与 Export方向的VPN-Target 团体属性。
r1
ip vpn-instance vpna
ipv4-family
route-distinguisher 300:1
vpn-target 100:1 both
#
ip vpn-instance vpnb
ipv4-family
route-distinguisher 300:2
vpn-target 100:2 both
interface GigabitEthernet0/0/1
ip binding vpn-instance vpna
ip address 10.0.14.1 255.255.255.0
#
interface GigabitEthernet0/0/2
ip binding vpn-instance vpnb
ip address 10.0.15.1 255.255.255.0
r3
ip vpn-instance vpna
ipv4-family
route-distinguisher 300:1
vpn-target 100:1 both
#
ip vpn-instance vpnb
ipv4-family
route-distinguisher 300:2
vpn-target 100:2 both
interface GigabitEthernet0/0/0
ip binding vpn-instance vpna
ip add 10.0.36.3 24
#
interface GigabitEthernet0/0/2
ip binding vpn-instance vpnb
ip add 10.0.37.3 24
为公司A配置基于BGP的PE-CE连通性
在公司A的CE设备R4上进行 BGP配置,建立与PE设备R1的EBGP 邻居关系。查看vpn实例 dis bgp vpnv4 vpn-instance vpna peer
r4:
bgp 10
peer 10.0.14.1 as-number 100
network 10.0.4.4 32
#在PE设备Rl的 BGP视图下使用ipv4-family vpn-instance vpna命令进入VPN实例vpna的视图,然后与R4建#立BGP邻居关系。
r1:
bgp 100
ipv4-family vpn-instance vpna
peer 10.0.14.4 as-number 10
r6:
bgp 20
peer 10.0.36.3 as-number 100
network 10.0.6.6 32
r3:
bgp 100
ipv4-family vpn-instance vpna
peer 10.0.36.6 as-number 20
可以看到,表中出现了BGP LSP的信息,FEC为10.0.4.4/32,In标签为1026,Out标签为NULL,VRF Name为vpna。In标签1026应该是由MP-BGP协议分配的内层标签,仅用于区分路由信息所属的VRF。
为公司B配置基于静态路由及OSPF协议的PE-CE连通性
根据需求,公司B的CE设备R5将使用静态路由方式实现PE-CE连通性;CE设备R7将使用OSPF协议实现PE-CE连通性.
r5
ip route-static 0.0.0.0 0 10.0.15.1
r1
ip route-static vpn-instance vpnb 10.0.5.5 32 10.0.15.5
bgp 100
ipv4-family vpn-instance vpnb
import-route static
#在R7上进行普通的OSPF配置。
ospf 2 router-id 10.0.7.7
area 0
network 10.0.37.0 0.0.0.255
network 10.0.7.7 0.0.0.0
r3
ospf 2 vpn-instance vpnb
import-route bgp
area 0.0.0.0
network 10.0.37.0 0.0.0.255
#
bgp 100
ipv4-family vpn-instance vpnb
import-route ospf 2
可以看到,R3的 BGP路由表中不但拥有10.0.5.5/32和10.0.7.7/32的路由信息,而且还拥有10.0.37.0/24的路由信息。与使用BGP协议或静态路由方式来提供PE-CE连通性不同,使用OSPF协议实现PE-CE的连通时,PE与CE之间的链路在引入路由时也会被引入进BGP。如果需要避免这种情况,需要在将OSPF 路由引入BGP时进行过滤,举例如下。
r3:
ip ip-prefix 1 deny 10.0.37.0 24
ip ip-prefix 1 permit 0.0.0.0 32
route-policy 10 permit node 10
if-match ip-prefix 1
bgp 100
ipv4-family vpn-instance vpnb
import-route ospf 2 route-policy 10
可以看到,R7仅能够与同属公司B 的10.0.5.5/32进行通信,而不能与属于公司A的10.0.4.4/32和10.0.6.6/32进行通信。
当CE-PE之间运行EBGP时,无需在PE上对客户路由和 MP-BGP协议之间进行引入配置,客户的VPNv4路由可以直接通过MPLS/MP-BGP网络传递给对端PE。而当CE-PE之间运行的是静态路由或者是IGP时,则需要进行互相引入的配置,才能使客户的VPN4的路由通过MPLS/MP-BGP网络进行传递。