三分钟读懂BGP中RD与RT 转载
Route-Distinguisher(后简称"RD"), Route-Target(后简称"RT")经常出现在EVPN、MPLS VPN中,但它们是完全不同的两个概念,初学者往往难以区分两者的差异。学霸题:区分"RT""RD";有妙招:阅读RFC。两者相关的信息参杂在rfc4364,rfc4760,rfc6074,rfc4761,rfc4271,rfc7432等诸多标准之中。本文将结合具体的示例,简化RFC内容,让你3分钟秒懂"RT""RD"。
RD
如下图所示拓补,用户A(蓝色)和用户B(绿色)在PE-1交换机和PE-2交换机下创建了各自对应的VPN(VRF)。
![](https://upload-images.jianshu.io/upload_images/26746788-becddfdb5ac042c8.png?imageMogr2/auto-orient/strip|imageView2/2/w/1005/format/webp)
用户A在PE-1交换机下连的网段是192.168.1.0/24。用户B在交换机PE-1下连网段同样为192.168.1.0/24。在交换机内部,可以通过VPN(VRF)隔离两个路由域,保证即使不同用户创建了重叠的网段,也不会发生网络冲突。
在传统的BGP-4中并没有字段可以存储路由所处的VPN信息。这对在当前场景下如何存储、传递不同租户的拥有相同IP网段的路由信息,如何保证路由信息的唯一性带来了瓶颈。扩展的MP-BGP协议则引入了"RD",与IPv4地址共同构成VPN-IPv4地址解决该瓶颈。
![](https://upload-images.jianshu.io/upload_images/26746788-15e0b46187804441.png?imageMogr2/auto-orient/strip|imageView2/2/w/1200/format/webp)
若在VPN-A上配置"RD"为1:1,VPN-B上配置"RD"为2:2,则实际PE-1交换机BGP路由表中存储的信息应如下:
1:1:192.168.1.0/24
2:2:192.168.1.0/24
通过在路由条目前添加"RD"前缀,确保BGP 路由表中创建了全局唯一的路由信息,以此实现BGP对等体之间合理地交换路由条目。
RD的编码规范
RD有三种编码方式。
- 类型一:2字节ASN与4字节自定义数值。若使用的是公开的ASN,建议该ASN已获得授权许可,且自定义的数值应由该ASN的拥有方分配。使用的是私有的ASN,则无特殊限制。
- 类型二:4字节IP与4字节自定义数值。若使用的是公网IP,建议该IP已获得授权许可,且自定义的数值应由该IP的拥有方分配。若使用的是私网IP,则无特殊限制。
- 类型三:4字节ASN与2字节自定义数值。限制同类型一。
![](https://upload-images.jianshu.io/upload_images/26746788-70f913cd163f43f1.png?imageMogr2/auto-orient/strip|imageView2/2/w/947/format/webp)
RT
接踵而来的问题是: PE-2如何知道哪些路由条目属于用户A,哪些路由条目属于用户B?通过设置RD,仅仅确保了路由条目在BGP VPN-IPv4表中的唯一性。当前BGP表中存在的2条路由,看上去仅仅就是前缀信息。解决之道是:使用RT。RT近似于在路由条目上添加的标签。PE-1 为用户A的VPN-A设置 export RT 100:100;PE-2 为用户A的VPN-A设置 import RT 100:100。当PE-1更新VPN-A的路由信息是,输出的条目便添加RT 100:100标签,当 PE-2检视接收到的BGP VPN-IPv4信息条目时,挑出拥有100:100标签的路由条目,写入用户A的VPN中。
![](https://upload-images.jianshu.io/upload_images/26746788-1b52797da48ff571.png?imageMogr2/auto-orient/strip|imageView2/2/w/1019/format/webp)
RT的编码规范
RT的编码规范与RD一致。
不得不说一句,规范是规范,具体取何值似乎也因人而异。虽然IETF一直在教人做事,但人往往又不按套路出牌!
![](https://upload-images.jianshu.io/upload_images/26746788-376bdf140da41e9d.png?imageMogr2/auto-orient/strip|imageView2/2/w/1051/format/webp)
小结
- RD值用于确保路由条目的唯一性。
- RT值用于决定路由条目的归属,分发路由。
- 实际使用中,可以设置多个export RT和多个import RT,以实现灵活地路由导出导入的场景。
EVPN下的RD和3类RT值
图示拓补构建的EVPN VxLAN网络环境,Leaf交换机上与"RD""RT"相关的命令如下所示(以H3C为例)。"RD""RT"的配置存在于vsi及vpn-instance之中。
![](https://upload-images.jianshu.io/upload_images/26746788-aacd98723c03121f.png?imageMogr2/auto-orient/strip|imageView2/2/w/831/format/webp)
vsi VSI-A
vxlan 10
evpn encapsulation vxlan
route-distinguisher auto
vpn-target auto export-extcommunity
vpn-target auto import-extcommunity
ip vpn-instance VPN_A
route-distinguisher 1000:100
#
address-family ipv4
vpn-target 1000:100 import-extcommunity
vpn-target 1000:100 export-extcommunity
#
address-family evpn
vpn-target 1000:100 import-extcommunity
vpn-target 1000:100 export-extcommunity
EVPN地址族是MP-BGP在L2VPN地址族下定义的新的子地址族。新增了5种路由消息。
- Type 1 Ethernet Auto-discovery Route:以太网自动发现路由
- Type 2 MAC/IP Advertisement Route:MAC/IP发布路由
- Type 3 Inclusive Multicast Ethernet Tag Route:IMET路由
- Type 4 Ethernet Segment Route:以太网段路由
- Type 5 IP Prefix advertisement route:IP前缀路由
其中最常用的Type 2 用来通告MAC地址和主机路由信息。Type 3 用来通告VTEP及其相关VXLAN信息,用以实现自动发现VTEP、自动建立VXLAN隧道和自动关联VXLAN与VXLAN隧道。Type 5 用来以IP前缀的形式通告BGP IPv4单播路由或BGP IPv6单播路由。配置中的"RD""RT"就用于控制以上类型路由的生成导出与接收导入。
-
第一个RT:VXLAN RT,VSI视图下的配置,一般使用auto自动生成,由2类和3类路由消息携带用于形成基于VXLAN的MAC地址表、ARP表、ARP抑制表项及隧道建立。Auto填充规则:自动生成的RT取值为“BGP AS:VXLAN ID”;如果是EBGP的话,使用3类消息建隧道需要注意该RT的值要手动配置。
-
第二个RT:VPN IPv4 RT,VPN下的IPv4地址族RT,用于形成VPN的IPv4路由表,5类路由携带,一般网段路由和外部引入的路由或者向外部引出路由时进行控制。
-
第三个RT:VPN EVPN RT,由TYPE2路由携带,用于将32位主机路由导入VPN,形成主机路由,在纯二层环境中TYPE2路由中只携带第一类RT,当配置了L3-VNI,TYPE2路由中会同时携带第一个和第三个这两个RT,两个RT均通过import才能学习路由形成主机路由。