配置 MPLS VPN(MP-BGP).note

noteId: WEBba2c6f65d9fd6abede23313d6f7999d2 · 原始路径:/ALL/网络 - C模块/VRF/MPLS VPN/配置 MPLS VPN(MP-BGP).note · 图片:5 · 附件待处理:0

 
 
·什么是 MPLS VPN:
虽然名字带有VPN,但是却不是常规的那种 隧道、IPSec VPN,而是通过打标签、根据标签转发到相应的区域来进行通信
 
 
1、配置 MPLS VPN:
 
·原理:
1、为客户端网段配置vrf进行路由隔离
2、中间网络使用ospf(或其他路由协议)进行互通
3、在 PE 路由器之间配置 MP-BGP VPNv4,把 VRF 中的客户路由发布给远端 PE
4、在 MPLS 骨干链路上开启 MPLS/LDP,让中间 P 路由器可以根据标签转发。注意,P 路由器不需要知道 VRF,也不需要知道客户网段。
 
(1)vrf:
虚拟路由表,用于隔离客户端网段
 
(2)RD(Route Distinguisher):
把普通IPv4路由变成VPNv4路由,例如一条客户端路由:192.168.10.0/24,加了RD后变成:65000:10:192.168.10.0/24。作用:防止两个不同的客户端使用相同网段时冲突。RD的作用是让路由变得唯一
 
(3)RT(Router Target):
RT才是决定VPN路由能不能互相导入的关键,它实际上就是BGP的扩展community,专门用于控制VPN路由导出导入的。
假设两个客户端网段:
R1:
route-target export 65000:10
route-target import 65000:20
R5也:
route-target export 65000:20
route-target import 65000:10
因为R1发出的客户端路由带有RT 65000:10,R5有 import 65000:10,于是R5会把R1的路由导入自己的VRF
R5发出的客户端路由带有RT 65000:20,R1也有 import 65000:20,所以R1也会导入R5的路由到vrf中
换成这样也能通:
R1:
route-target export 65000:10
route-target import 65000:10
R5也:
route-target export 65000:10
route-target import 65000:10
 
(4)MP-BGP VPNv4:
普通BGP只能传IPv4流量
而MPLS VPN要传递的是VPNv4路由,也就是:RD + IPv4网段 + RT + VPN Label
所以需要配置:
address-family vpnv4
 neighbor 50.50.50.50 activate
 neighbor 50.50.50.50 send-community extended
这里的vpnv4就是专门传 MPLS VPN客户端路由的地址簇
在R1和R5之间使用 MP-BGP传递路由
 
(5)MPLS LDP:
底层OSPF(动态路由)只解决接口IP可达性,例如互相访问Loopback接口
但是MPLS转发需要标签,所以配置:
mpls ip
mpls label protocol ldp
mpls ldp router-id Loopback0 force
LDP 负责告诉路由器,去往 Loopback0用什么标签
标签由路由器自动协商分配,并且LDP会自动发现邻居、交换标签,只要两边接口都配置了 mpls ip,他们就会在这条链路上发送LDP Hello
 
(6)数据包流量走向:
R1 vrf 向 R5 vrf 通信:
1、PC1发送数据包给默认网关
2、网关查VRF路由表(因为PC1属于vrf,所以直接查询vrf路由表),能够查看到一条由 MP-BGP学习到的对端R5 vrf的路由
3、打入两个MPLS标签:
外层标签:到达 R5 Loopback 50.50.50.50 的 LDP 标签
内层标签:R5 通过 MP-BGP 分配的 VPN 标签
最里面:原始IP报文
4、经过中间的R2、R3、R4路由器,他们只看外层标签,通过外层标签来将数据包转发给R5
5、R5打开外层标签后,通过内层VPN标签,将该数据包转发给自己的vrf客户端
 
# MPLS 的几种设备类型:
(1)C(Customer):客户端。属于VRF网络
(2)CE(Customer Edge):客户端边界路由器(VRF客户端网关)。属于VRF网络,一般不运行MPLS,一般就是客户端 和 PE 之间的路由器
(3)PE(Provider Edge):运营商边界路由器,作用:
1. 连接客户侧网络
2. 创建 VRF
3. 把客户接口加入 VRF
4. 学习客户路由
5. 通过 MP-BGP VPNv4 和其他 PE 交换客户路由
6. 给数据包压入 MPLS 标签
7. 收到远端 MPLS VPN 流量后,根据 VPN 标签还原到对应 VRF
 
(4)P(Provider):运营商核心路由器。不连接客户端,不运行 MP-BGP,只负责ldp标签转发
(5)LSR(Label Switching Router):标签交换路由器(是一个泛称),只要这台设备参与MPLS标签转发,就可以叫LSR,P 是LSR,PE 也是LSR
(6)LER(Label Edge Router):标签边缘路由器,LER通常就是PE
(7)RR(Route Reflector):路由反射器,用于大型MPLS,假设有很多台PE,例如100台PE,如果每台都相互建立BGP邻居,就会很繁琐复杂,所以就会用到RR,所有PE只需要和RR建立MP-BGP VPNv4邻居,RR复制吧VPNv4路由反射给其他PE
 
 
 
拓扑:
 
这个 route-target 导出的标签,可以和本地的rd不一致,但是如果题目没有要求,最好还是和本地rd一致
# R1:
vrf definition CUST-A
 rd 65000:1
 route-target export 65000:10    //定义RT,所有发出去的VPN路由,都携带 65000:10标签
 route-target import 65000:10    //导入 65000:10 标签的路由到vrf中
 address-family ipv4
 
interface Loopback0
 ip address 10.10.10.10 255.255.255.255
 
interface GigabitEthernet0/0
 ip address 1.1.1.1 255.255.255.0
 mpls ip    //开启MPLS标签转发和ldp邻居发现
 
interface GigabitEthernet0/3
 vrf forwarding CUST-A
 ip address 192.168.10.254 255.255.255.0
 
ip cef    //默认就有,排错时记得查看,不要被关闭了
mpls ip    //全局启用mpls功能(默认就有,排错时记得查看,不要被关闭了)
mpls label protocol ldp    //指定MPLS标签转发使用LDP协议
 
mpls ldp router-id Loopback0 force    //指定LDP的Router-ID使用Loopback0的地址,force表示立即强制使用这个Router-ID
 
router ospf 2026
 network 1.1.1.0 0.0.0.255 area 0
 network 10.10.10.10 0.0.0.0 area 0
 
router bgp 65000
 neighbor 50.50.50.50 remote-as 65000
 neighbor 50.50.50.50 update-source Loopback0
 address-family vpnv4    //进入BGP的VPNv4地址簇
  neighbor 50.50.50.50 activate
  neighbor 50.50.50.50 send-community extended    //向邻居发送扩展community(RT)
 
 address-family ipv4 vrf CUST-A    //进入VRF的IPv4地址簇
  redistribute connected    //将VRF直连路由重分发进BGP
 
# R2
interface Loopback0
 ip address 20.20.20.20 255.255.255.255
 
interface GigabitEthernet0/0
 ip address 1.1.1.2 255.255.255.0
 mpls ip
 
interface GigabitEthernet0/2
 ip address 2.2.2.2 255.255.255.0
 mpls ip
 
ip cef
mpls ip
mpls label protocol ldp
 
mpls ldp router-id Loopback0 force
 
router ospf 2026
 network 1.1.1.0 0.0.0.255 area 0
 network 2.2.2.0 0.0.0.255 area 0
 network 20.20.20.20 0.0.0.0 area 0
 
# R3:
ip cef
mpls label protocol ldp
mpls ip
 
interface Loopback0
 ip address 30.30.30.30 255.255.255.255
 
interface GigabitEthernet0/2
 ip address 2.2.2.1 255.255.255.0
 mpls ip
  
interface GigabitEthernet0/3
 ip address 3.3.3.1 255.255.255.0
 mpls ip
 
mpls ldp router-id Loopback0 force
 
router ospf 2026
 network 2.2.2.0 0.0.0.255 area 0
 network 3.3.3.0 0.0.0.255 area 0
 network 30.30.30.30 0.0.0.0 area 0
 
# R4:
ip cef
mpls label protocol ldp
mpls ip
 
interface Loopback0
 ip address 40.40.40.40 255.255.255.255
 
interface GigabitEthernet0/3
 ip address 3.3.3.2 255.255.255.0
 mpls ip
 
interface GigabitEthernet0/4
 ip address 4.4.4.2 255.255.255.0
 mpls ip
 
mpls ldp router-id Loopback0 force
 
router ospf 2026
 network 3.3.3.0 0.0.0.255 area 0
 network 4.4.4.0 0.0.0.255 area 0
 network 40.40.40.40 0.0.0.0 area 
 
# R5:
vrf definition CUST-B
 rd 65000:2
 route-target export 65000:10
 route-target import 65000:10
 address-family ipv4
 
ip cef
mpls label protocol ldp
mpls ip
 
interface Loopback0
 ip address 50.50.50.50 255.255.255.255
 
interface GigabitEthernet0/4
 ip address 4.4.4.1 255.255.255.0
 mpls ip
 
interface GigabitEthernet0/0
 vrf forwarding CUST-B
 ip address 172.16.10.254 255.255.255.0
 
mpls ldp router-id Loopback0 force
 
router ospf 2026
 network 4.4.4.0 0.0.0.255 area 0
 network 50.50.50.50 0.0.0.0 area 0
 
router bgp 65000
 bgp log-neighbor-changes
 neighbor 10.10.10.10 remote-as 65000
 neighbor 10.10.10.10 update-source Loopback0
 address-family vpnv4
  neighbor 10.10.10.10 activate
  neighbor 10.10.10.10 send-community extended
 
 address-family ipv4 vrf CUST-B
  redistribute connected
 
2、MPLS VPN反射器场景(RR):
# RR:
路由反射器,用于大型MPLS,假设有很多台PE,例如100台PE,如果每台都相互建立BGP邻居,就会很繁琐复杂,所以就会用到RR,所有PE只需要和RR建立MP-BGP VPNv4邻居,RR复制吧VPNv4路由反射给其他PE
 
拓扑:
# 角色:
R1:PE、RR
R2:P
R3:PE
R4:PE
 
·关键命令:
# 在 RR 上配置:
address-family vpnv4
 neighbor 30.30.30.30 activate
 neighbor 30.30.30.30 send-community extended
 neighbor 30.30.30.30 route-reflector-client
 
 
并且 VRF 还要 import想要通信的路由的RD,不能只import RR 的RD
1)配置 RR 场景 MPLS:
反射器场景下所有MP-BGP只需要与 RR建立BGP邻居即可,相互之间不需要建立邻居
 
# R1:
ip cef
mpls ip
mpls label protocol ldp
 
vrf definition VRF1
 rd 100:100
 route-target export 65000:100
 route-target import 65000:200
 route-target import 65000:300
 address-family ipv4
 
interface Loopback0
 ip address 10.10.10.10 255.255.255.255
 
interface GigabitEthernet0/3
 vrf forwarding VRF1
 ip address 192.168.10.254 255.255.255.0
 
interface GigabitEthernet0/0
 ip address 1.1.1.1 255.255.255.0
 mpls ip
 
mpls ldp router-id Loopback0 force
 
router eigrp 1
 network 1.1.1.0 0.0.0.255
 network 10.10.10.10 0.0.0.0
 
router bgp 65000
 bgp log-neighbor-changes
 neighbor 30.30.30.30 remote-as 65000
 neighbor 30.30.30.30 update-source Loopback0
 neighbor 40.40.40.40 remote-as 65000
 neighbor 40.40.40.40 update-source Loopback0
 
 address-family vpnv4
  neighbor 30.30.30.30 activate
  neighbor 30.30.30.30 send-community extended
  neighbor 30.30.30.30 route-reflector-client
  
  neighbor 40.40.40.40 activate
  neighbor 40.40.40.40 send-community extended
  neighbor 40.40.40.40 route-reflector-client
 
 address-family ipv4 vrf VRF1
  redistribute connected
 
# R2:
ip cef
mpls ip
mpls label protocol ldp
 
interface Loopback0
 ip address 20.20.20.20 255.255.255.255
 
interface GigabitEthernet0/0
 ip address 1.1.1.2 255.255.255.0
 mpls ip
 
interface GigabitEthernet0/1
 ip address 2.2.2.2 255.255.255.0
 mpls ip
 
interface GigabitEthernet0/2
 ip address 3.3.3.2 255.255.255.0
 mpls ip
 
mpls ldp router-id Loopback0 force
 
router eigrp 1
 network 1.1.1.0 0.0.0.255
 network 2.2.2.0 0.0.0.255
 network 3.3.3.0 0.0.0.255
 network 20.20.20.20 0.0.0.0
 
 
# R3:
ip cef
mpls ip
mpls label protocol ldp
 
vrf definition VRF2
 rd 100:200
 route-target export 65000:200
 route-target import 65000:100
 route-target import 65000:300
 address-family ipv4
 
interface Loopback0
 ip address 30.30.30.30 255.255.255.255
 
interface GigabitEthernet0/3
 vrf forwarding VRF2
 ip address 192.168.20.254 255.255.255.0
 
interface GigabitEthernet0/1
 ip address 2.2.2.1 255.255.255.0
 mpls ip
 
mpls ldp router-id Loopback0 force
 
router eigrp 1
 network 2.2.2.0 0.0.0.255
 network 30.30.30.30 0.0.0.0
 
router bgp 65000
 bgp log-neighbor-changes
 neighbor 10.10.10.10 remote-as 65000
 neighbor 10.10.10.10 update-source Loopback0
 
 address-family vpnv4
  neighbor 10.10.10.10 activate
  neighbor 10.10.10.10 send-community extended
 
 address-family ipv4 vrf VRF2
  redistribute connected
 
 
# R4:
ip cef
mpls ip
mpls label protocol ldp
 
vrf definition VRF3
 rd 100:300
 route-target export 65000:300
 route-target import 65000:100
 route-target import 65000:200
 address-family ipv4
 
interface Loopback0
 ip address 40.40.40.40 255.255.255.255
 
interface GigabitEthernet0/3
 vrf forwarding VRF3
 ip address 192.168.30.254 255.255.255.0
 
interface GigabitEthernet0/2
 ip address 3.3.3.1 255.255.255.0
 mpls ip
 
mpls ldp router-id Loopback0 force
 
router eigrp 1
 network 3.3.3.0 0.0.0.255
 network 30.30.30.30 0.0.0.0
 
router bgp 65000
 bgp log-neighbor-changes
 neighbor 10.10.10.10 remote-as 65000
 neighbor 10.10.10.10 update-source Loopback0
 
 address-family vpnv4
  neighbor 10.10.10.10 activate
  neighbor 10.10.10.10 send-community extended
 
 address-family ipv4 vrf VRF3
  redistribute connected
 
 
·测试:
VRF 1 ping VRF2、3:
 
 
VRF 2 ping VRF 3: