目录
关键词
MP-BGP,LDP,RR,ASBR,PE
优点
ASBR只需要维护公网IPv4路由信息,不再需要维护虚拟私有网信息;转发时也不需要交换底层标签,只需要交换公网标签即可,大幅降低ASBR在控制层面和转发层面的性能消耗。
关键技术
控制层面
控制层面主要涉及路由与标签分发的问题。
- 在AS内部,所有路由器通过IGP交换公网路由信息,并通过LDP相互分发公网标签;若使用RR,则PE与RR之间通过iBGP建立VPNv4地址簇的连接关系,并通过携带扩展团体属性(extend community)交换私网路由信息,iBGP同时承担私网标签的分发。
- 在AS之间,ASBR之间通过eBGP交换公网路由信息,并通过LDP交换公网标签;与此同时,ASBR需要把获取对端PE/RR的3层可达信息并传递给本AS的PE/RR,使得本AS内的PE/RR到对端PE/RR可达,本方式使用静态路由+重分发IGP的方式实现。本端PE/RR与对端PE/RR之间通过eBGP建立VPNv4地址簇的连接关系,并通过携带扩展团体属性(extend community)交换私网路由信息。eBGP同时跨AS承担私网标签的分发。
转发层面(标签交换)
转发层面主要涉及LSP上的标签交换。标签交换主要分为从CE到PE,从PE/RR到PE/RR,从PE到CE三段LSP。
- PE从CE收到指向目的VPN的数据包后,检查FIB和LFIB,贴上私网标签(如果AS内有RR则由RR分发,没有则由对端AS的RR/PE分发)和公网标签,转发给下一条。(如果PE与RR直连,则实际上只有一个私网标签,因为PHP(倒数第二跳弹出))。
- RR收到后检查FIB和LFIB,把私网标签换成中转PE/RR的MP-BGP分发的标签,公网标签换成由下游分发的指向对端AS PE/RR的标签。往后一直到对端PE/RR之前,途中LSR均只交换头标签,出标签均指向对端PE/RR。最终到达目的PE,并在倒数第二跳弹出顶层公网标签,只留下底层私网标签。
- 目的PE接到保留私网标签的数据包,检查LFIB知道目的地属于其中一个VRF实例,且不再使能mpls,因此弹出标签,将数据包转发至该出口并恢复路由转发。
详细介绍
Option C也称为Multihop EBGP redistribution of labeled VPN-IPv4 routes。与Option B相比,要求PE/RR之间直接建立域间VPNv4地址簇的eBGP邻居关系(需要支持eBGP多跳)。ASBR不再需要创建VRF,也不再传递VPN私网路由。
PE/RR的BGP从VRF实例提取IPv4路由,添加RD形成VPNv4 NLRI,由eBGP通告给对端PE/RR。RD通过NLRI里的扩展团体属性(extend community)携带。由于PE/RR的可达性信息只有在本AS内,对端AS无法获取该路由。有两种方式可以使对端PE/RR能够获得本地PE/RR的可达性路由信息:
方式一、本端ASBR通过其它路由协议(本实验中通过静态路由指定)获得对端AS中的PE/RR update-source,将其重分发到IGP中(本实验为OSPF),使本端PE/RR以Global Route的方式获得该路由。这时生成的LSP(标签交换路径)最多有2层标签:
- 内层为目的VPN的私网标签
- 外层为对端PE/RR的公网标签
方式二、本端ASBR通过eBGP IPv4实例获取对端AS中的PE/RR update-source,并通过iBGP传递给PE/RR。由于BGP默认不为ipv4路由绑定和分发标签,需要手动使能。这时生成的LSP最多有3层标签:
- 内层为目的VPN的私网标签
- 中层为对端PE/RR的公网标签
- 外层为本地ASBR的公网标签
实验
上图中,AS100中的172.168.1.0/24要与AS300中的192.168.1.0/24通信。假设该VPN命名为VRF_1,其ID统一分配为1。则AS100中的VRF RD为100:1,AS200中的VRF RD为200:1,AS300中的VRF RD为300:1。R1、R9分别作为AS100和AS300的PE;R2、R5、R8分别作为各自AS的RR;R3、R4、R6、R7分别作为各自AS的ASBR。为简化配置,PE接口直连终端,不再需要把MP-BGP所传送的VRF路由重分发到PE中。
邻接关系
本地PE与本地RR之间建立iBGP关系,交换VPNv4地址簇路由信息;不同AS的PE/RR相互间建立eBGP关系,交换VPNv4地址簇路由信息;本地ASBR与对端ASBR之间建立eBGP关系,交换IPv4路由。
配置
R1:
hostname AS100-R1 ! ip vrf VRF_1 rd 100:1 route-target export 100:1 route-target import 300:1 ! interface Loopback0 ip address 1.1.1.1 255.255.255.255 interface Ethernet0/0 ip vrf forwarding VRF_1 ip address 172.16.1.1 255.255.255.0 interface Ethernet0/1 ip address 12.0.0.1 255.255.255.0 mpls ip ! router ospf 100 router-id 1.1.1.1 passive-interface Loopback0 network 1.1.1.1 0.0.0.0 area 0 network 12.0.0.1 0.0.0.0 area 0 ! router bgp 100 bgp router-id 1.1.1.1 no bgp default ipv4-unicast neighbor 2.2.2.2 remote-as 100 neighbor 2.2.2.2 update-source Loopback0 address-family ipv4 neighbor 2.2.2.2 activate address-family vpnv4 neighbor 2.2.2.2 activate neighbor 2.2.2.2 send-community extended address-family ipv4 vrf VRF_1 redistribute connected exit-address-family ! mpls ldp router-id Loopback0 force end
R2:
hostname AS100-R2 ! ip vrf VRF_1 rd 100:1 route-target export 100:1 route-target export 300:1 route-target import 100:1 route-target import 300:1 ! interface Loopback0 ip address 2.2.2.2 255.255.255.255 interface Ethernet0/0 ip address 12.0.0.2 255.255.255.0 mpls ip interface Ethernet0/1 ip address 23.0.0.2 255.255.255.0 mpls ip ! router ospf 100 router-id 2.2.2.2 passive-interface Loopback0 network 2.2.2.2 0.0.0.0 area 0 network 12.0.0.2 0.0.0.0 area 0 network 23.0.0.2 0.0.0.0 area 0 ! router bgp 100 bgp router-id 2.2.2.2 no bgp default ipv4-unicast neighbor 1.1.1.1 remote-as 100 neighbor 1.1.1.1 update-source Loopback0 neighbor 3.3.3.3 remote-as 100 neighbor 3.3.3.3 update-source Loopback0 neighbor 5.5.5.5 remote-as 200 neighbor 5.5.5.5 ebgp-multihop 255 neighbor 5.5.5.5 update-source Loopback0 address-family ipv4 neighbor 1.1.1.1 activate neighbor 1.1.1.1 route-reflector-client neighbor 3.3.3.3 activate neighbor 3.3.3.3 route-reflector-client neighbor 5.5.5.5 activate address-family vpnv4 neighbor 1.1.1.