BGP中跨VRF路由透传及RD和RT
1. VRF路由透传
本节主要参考frr官方文档BGP VRF路由透传,对VRF透传概念进行翻译,加深对RD/RT概念理解,便于实现骨干网络间跨VRF的路由传递,并在下一节实践中展示配置代码。
BGP路由可能需要在基于MPLS的3层VPN下,对单播VRF路由转发表(RIB)和VPN SAFI(SubsequentialAddressFamilyIdentifier,并发地址族标识符)之间透传。单播路由也可能在VRF之间透传(包含默认BGP实例的单播路由转发表)。已有快捷命令能够将默认VPN RIB实例作为媒介,实现从一个VRF到另一个VRF的传递。
VRF到VRF路由传递的最常见应用是将一个客户私有路由域连接到网络供应商的VPN服务;通过一个独立VRF的角度进行透传:导入(import命令)从VPN透传到单播VRF路由索引,相反导出(export命令)从单播VRF表到VPN的路由索引;
1.1. 需要参数
从单播VRF到VPN RIB(路由信息表)表的路由到处必须声明两个参数:
- RD(Route Distinguisher)
- RT(Route Target List)
配置时必须指定这两个参数(最少参数),才能导出路由;
从VPN RIB(路由信息表,RouteInfoBase)表中导入路由到单播VRF时,会根据RT列表进行选择。给路由配置RTLIST属性,只要有一个RT标记符同导入(import)的RT列表一样,就能通过透传获取到路由;对这些导入的路由,RTLIST必须匹配才可以,例如都是"100:50"。
RD,本身并不携带任何语义值,主要用来标识在VPN RIB表中路由的唯一性,这样附加到供应商VPN服务中的客户和其站点中的所有路由prefix就能唯一。相应地,在整个供应商网络中,就能通过为每个客户的每个站点分配一个RD标识作全网的唯一区分。
RTLIST, 是由一组community扩展属性值组成的路由目标列表(RTList),旨在指定路由透传的策略。通常,给一个客户分配一个单播RT值,用来在所有的客户站点中导入和导出路由。这种配置实现了一个简单的拓扑,这样客户就能在整个共享网络的所有站点中就拥有一个独立的路由域。更复杂的路由拓扑可以通过额外配置RT来实现,进而通过不同方式增强不同路由集合的透传。
当使用快捷语法方式进行vrf到vrf间的路由透传,RD和RT可以自动生成。
1.2. 常用配置
对单播VRF RIB和VPN SAFI(Subsequent AddresFamily Identifier)之间透传的配置,通过在VRF的地址族中执行如下命令来实现:
rd vpn export AS:NN|IP:nn
指定路由标识符,添加到从当前单播VRF导出到VPN的路由。
rt vpn import|export|both RTLIST...
在当前的单播VRF和VPN之间导入和导出时,需在路由上附加RT列表(export),或者是指定匹配到对应的RT List的值(import);
RTLIST用空格分隔作为列表,它也是BGP的扩展属性community值。
label vpn export (0..1048575)|auto
从当前单播VRF导出到VPN时,允许MPLS标签附加到路由上。如果该值指定的为auto,则标签值将自动从zebra守护进程的维护池中指定。如果zebra没有运行或者没有配置该命令,将不会分配自动标签,也会阻塞相应的路由导出。
nexthop vpn export A.B.C.D|X:X::X:X
从当前单播VRF到VPN导出路由时,从可选的下一跳值中指定一个分配给路由;如果没有指定,下一跳将被设置为0.0.0.0或0:0::0:0(self)。
route-map vpn import|export MAP
从当前单播VRF到VPN导出路由时,指定一个route-map策略。
import|export vpn
允许在当前单播VRF和VPN中导入或导出路由。
import vrf VRFNAME
从vrf VRFNAME到当前vrf的自动路由透传快捷语法,并通过VPN RIB作为中介。RD和RT能自动获取到,并且在来源和目的VRF中不能显性指定该值。
这种快捷语法方式不能和vpn的导入导出一起使用。CLI不允许同时配置这两种非兼容的透传模式;
2. BGP中VRF路由透传实践
整体拓扑如下图所示:
本节以FRR作为工具,对bgp进行配置。核心是使用RD和RT等进行配置,然后默认vrf导入带标签的路由信息,传递给对应远端骨干节点的vrf标记;除了使用导入VPN的方式,也可直接导入vrf表中所有路由的配置方式import vrf vrfname
,其会自动根据打上携带IP的标签,例如"10.10.10.1:2";最终通过设置,实现将PE节点中VRF1中的路由导入到VRF default骨干网路由段中。
2.1. PE(ProviderEdage)的BGP配置
这里将AS100,vrf1中路由标记为100:10并导出到vpn,然后AS100默认vrf导入标记为100:10的路由;其中AA:NN中有多种表达方式, 可以采用AS_NUM:NN_NUM方式标记;即采用RD和RT的方式;
其中一个重点是,PE设备中连接CE设备的网口需要挂载到vrf1网络命令空间中,这里用netns实现。
!
vrf vrf1
netns /run/netns/vrf1
exit-vrf
!
router bgp 100
bgp router-id 192.168.1.172
neighbor 192.168.1.203 remote-as 100
!
address-family ipv4 unicast
network 172.172.172.0/24
rt vpn both 50:10
import vpn
exit-address-family
!
router bgp 100 vrf vrf1
bgp router-id 10.10.10.1
neighbor 10.10.10.2 remote-as 50
!
address-family ipv4 unicast
network 1.1.1.0/24
rd vpn export 100:10
rt vpn both 50:10
export vpn
exit-address-family
!
-
查看bgp default vrf学习到和宣告的路由,从VRF1学习到的2.2.2.0/24以及3.3.3.0/24路由;
-
查看bgp default vrf路由状态和链路选择;
-
查看路由RD以及RT等信息
2.2. CE(ClientEdge)的BGP配置
router bgp 50
bgp router-id 10.10.10.2
neighbor 10.10.10.1 remote-as 100
!
address-family ipv4 unicast
network 2.2.2.0/24
network 3.3.3.0/24
exit-address-family
2.3. RR(RouteRelector)的BGP设置
router bgp 100
bgp router-id 192.168.1.203
neighbor 192.168.1.172 remote-as 100
!
address-family ipv4 unicast
network 203.203.203.0/24
neighbor 192.168.1.172 route-reflector-client
exit-address-family
本文最新状态可查看源站链接:BGP中跨VRF路由透传及RD和RT