一、使用MPLS解决BGP的路由黑洞
前提条件:IBGP内部全网可达,并配置了MPLS。
MPLS协议并不会为通过BGP协议学习的路由条目分配标签号;
而是在访问这些BGP路由目标网段时,在流量中压入到达这些网段的BGP下一跳设备地址的标签号;
例:R2从BGP邻居5.5.5.5 学习到6.6.6.0 网段的路由;R2在访问6.6.6.0 时,将在数据包中压入到达5.5.5.5IP地址的标签号,来穿越中间没有运行BGP协议的设备;实现打破路由黑洞;
注:华为设备默认不为BGP协议执行下一跳标签机制,cisco默认执行;
华为设备需要开启,路由基于隧道进行递归查找,开启命令如下:
route recursive-lookup tunnel
二、使用MPLS实现VPN技术
1、CE将私有路由传递到PE端
2、PE端在收到不同CE发送过来的相同网段路由时,使用RD值进行区分---格式X:X 32位
3、PE端将附上RD的私有路由不能直接装载于本地公有路由表中,需要放置到对应的VRF(虚拟路由转发)空间内;之后再路由付RT值,用于传递到对端PE设备,对端区分信息;
VPNV4路由=普通IPV4路由+RD+RT
4、VPNV4路由需要MP-BGP来进行传递;对端基于RT值,将路由装载到对应的VRF空间内,再共享给对应的CE;
5、控制层面工作完成后,数据层面需要基于MPLS来工作,由于数据层面不能携带RD/RT值;故mpls将在数据包中压入两层标签,外层标签用于超越中间设备,打破BGP路由黑洞;内层标签用于对应VRF空间;
三、MPLS-VPN技术配置
1、配置MPLS VPN
#创建名为a的vrf空间
[r2]ip vpn-instance a
# 进入IPV4的配置模式下
[r2-vpn-instance-a]ipv4-family
#RD值
[r2-vpn-instance-a-af-ipv4]route-distinguisher 1:1
#RT值 必须对端的PE端一致
[r2-vpn-instance-a-af-ipv4]vpn-target 1:1
#进入链接CE端的接口
[r2]interface GigabitEthernet 0/0/0
#关联(绑定)到vrf空间
[r2-GigabitEthernet0/0/0]ip binding vpn-instance a
#配置私有ip地址
[r2-GigabitEthernet0/0/0]ip address 192.168.2.2 24
注:在关联到vrf空间前不能配置接口ip,否则该地址的直连路由将进入公有路由表;
2、查看空间内的私有路由表
[r2]display ip routing-table vpn-instance a
正常测试将在公有路由表中查询记录;该命令为基于VRF空间a进行路由查询,不进入空间a是无法ping通的。
[r2]ping -vpn-instance a 192.168.2.1
3、PE与PE间建立MP-BPG邻居关系
#创建BGP 2
[r2]bgp 2
[r2-bgp]router-id 2.2.2.2
#先和对端建立正常BGP邻居关系,可用于传递正常的公网路由
[r2-bgp]pe 4.4.4.4 as-number 2
[r2-bgp]pe 4.4.4.4 connect-interface LoopBack 0
[r2-bgp]pe 4.4.4.4 next-hop-local
#同时还需要再在IPV4的家族模式中,与对端建立一个VPNV4的关系,用于传递VPNV4路由
[r2-bgp]ipv4-family vpnv4
[r2-bgp-af-vpnv4]peer 4.4.4.4 enable
[r2-bgp]display bgp vpnv4 all peer 查看mp-bgp邻居关系
4、CE端与PE端交互路由
1) 静态
CE端直接编写静态路由即可;
PE端编写到VRF空间内的静态路由
[r2]ip route-static vpn-instance a 目标网段 掩码 下一跳
eg:[r2]ip route-static vpn-instance a 192.168.1.0 24 192.168.2.1
将本地vrf空间内的静态和直连路由重发布到BGP协议传递到对端的PE
[r2]bgp 2
[r2-bgp]ipv4 vpn-instance a #先进入空间a
[r2-bgp-a]import-route direct #重发布直连路由
[r2-bgp-a]import-route static #重发布静态路由
<r4>display bgp vpnv4 vpn-instance a routing-table #查看mp-bpg的BGP表
2) 动态路由--OSPF
CE端正常启动OSPF即可
PE端,启动VPNV4专用的ospf协议
[r4]ospf 2 vpn-instance a #需要带上空间a
[r4-ospf-2]area 0
[r4-ospf-2-area-0.0.0.0]network 192.168.3.1 0.0.0.0
之后使用双向重发布,实现路由共享
[r4]bgp 2
#重发布OSPF需要进入空间a
[r4-bgp]ipv4-family vpn-instance a
[r4-bgp-a]import-route ospf 2
#重发布BGP需要进入空间a
[r4]ospf 2 vpn-instance a
[r4-ospf-2]import-route bgp
查看双层标记的内层标签号
[r4]display mpls lsp vpn-instance a