三分钟读懂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"。

如下图所示拓补,用户A(蓝色)和用户B(绿色)在PE-1交换机和PE-2交换机下创建了各自对应的VPN(VRF)。

用户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地址解决该瓶颈。

若在VPN-A上配置"RD"为1:1,VPN-B上配置"RD"为2:2,则实际PE-1交换机BGP路由表中存储的信息应如下:

通过在路由条目前添加"RD"前缀,确保BGP 路由表中创建了全局唯一的路由信息,以此实现BGP对等体之间合理地交换路由条目。

RD有三种编码方式。

接踵而来的问题是: 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中。

RT的编码规范与RD一致。

不得不说一句,规范是规范,具体取何值似乎也因人而异。虽然IETF一直在教人做事,但人往往又不按套路出牌!

图示拓补构建的EVPN VxLAN网络环境,Leaf交换机上与"RD""RT"相关的命令如下所示(以H3C为例)。"RD""RT"的配置存在于vsi及vpn-instance之中。

EVPN地址族是MP-BGP在L2VPN地址族下定义的新的子地址族。新增了5种路由消息。

其中最常用的Type 2 用来通告MAC地址和主机路由信息。Type 3 用来通告VTEP及其相关VXLAN信息,用以实现自动发现VTEP、自动建立VXLAN隧道和自动关联VXLAN与VXLAN隧道。Type 5 用来以IP前缀的形式通告BGP IPv4单播路由或BGP IPv6单播路由。配置中的"RD""RT"就用于控制以上类型路由的生成导出与接收导入。