[转帖]三分钟读懂BGP中RD与RT

三分钟,读懂,bgp,rd,rt · 浏览次数 : 0

小编点评

**RD值用于确保路由条目的唯一性,RT值用于决定路由条目的归属。** **RD值:** * 类型一:2字节ASN与4字节自定义数值 * 类型二:4字节IP与4字节自定义数值 * 类型三:4字节ASN与2字节自定义数值 **RT值:** * 与RD值一致

正文

https://www.jianshu.com/p/4da7997d1f90

 

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)。

 

用户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路由表中存储的信息应如下:

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字节自定义数值。限制同类型一。
 

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中。


 

RT的编码规范

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


 

小结

  • RD值用于确保路由条目的唯一性。
  • RT值用于决定路由条目的归属,分发路由。
  • 实际使用中,可以设置多个export RT和多个import RT,以实现灵活地路由导出导入的场景。

EVPN下的RD和3类RT值

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

 
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才能学习路由形成主机路由。

与[转帖]三分钟读懂BGP中RD与RT相似的内容:

[转帖]三分钟读懂BGP中RD与RT

https://www.jianshu.com/p/4da7997d1f90 Route-Distinguisher(后简称"RD"), Route-Target(后简称"RT")经常出现在EVPN、MPLS VPN中,但它们是完全不同的两个概念,初学者往往难以区分两者的差异。学霸题:区分"RT""

[转帖]PostgreSQL(三) 内存参数优化和原理(work_mem)内存表 pgfincore插件使用方法

1.常用内存参数 1.1 shared_buffers shared_buffers是PostgreSQL用于共享缓冲区的内存,是由8kb大小的块所形成的数组。PostgreSQL在进行更新、查询等操作时,首先从磁盘把数据读取到内存,之后进行更新,最后将数据写回磁盘。shared_buffers可以

[转帖]给你的SpringBoot做埋点监控--JVM应用度量框架Micrometer

https://www.cnblogs.com/yunlongn/p/11343848.html 这世上有三样东西是别人抢不走的:一是吃进胃里的食物,二是藏在心中的梦想,三是读进大脑的书 JVM应用度量框架Micrometer实战 前提 spring-actuator做度量统计收集,使用Promet

[转帖]Linux文本处理三剑客sed详解(正则匹配、命令示例)

https://developer.aliyun.com/article/885609?spm=a2c6h.24874632.expert-profile.312.7c46cfe9h5DxWK 简介: sed读一行放到模式空间进行处理 sed是一种在线的、非交互式的编辑器,它一次处理一行内容,处理时

[转帖]Linux文本处理三剑客之awk学习笔记05:getline用法详解

https://www.cnblogs.com/alongdidi/archive/2021/01/19/awkGetline.html getline用法详解 在默认情况下,awk支持从文件或者STDIN中读取数据。我们也可以使用getline来灵活读取数据,例如在main代码块执行过程中读取某个

[转帖]Linux文本处理三剑客之awk学习笔记05:getline用法详解

https://www.cnblogs.com/alongdidi/p/awkGetline.html getline用法详解 在默认情况下,awk支持从文件或者STDIN中读取数据。我们也可以使用getline来灵活读取数据,例如在main代码块执行过程中读取某个非待处理文件的数据,或者从某个读取

[转帖]Linux AWK工作原理

https://www.cnblogs.com/yeyuzhuanjia/p/13967513.html 本篇文章我们主要为大家介绍 AWK 是如何工作的。 AWK 工作流程可分为三个部分:1.读输入文件之前执行的代码段(由BEGIN关键字标识)。2.主循环执行输入文件的代码段。3. 读输入文件之后

【转帖】磁盘IOPS的计算

计算磁盘IOPS的三个因素: 1、RAID类型的读写比 不同RAID类型的IOPS计算公式: RAID类型 公式 RAID5、RAID3 Drive IOPS=Read IOPS + 4*Write IOPS RAID6 Drive IOPS=Read IOPS + 6*Write IOPS RAI

[转帖]Linux下用dd命令测试硬盘的读写速度

一、测试写速度: time dd if=/dev/zero of=/tmp/test bs=8k count=1000000 测试结果:565 MB/s 二、测试读速度: time dd if=/tmp/test of=/dev/null bs=8k 测试结果:4.7GB/s 三、测试读写速度: t

[转帖]DRAM刷新refresh相关知识归类-基础小知识(三)

https://www.likecs.com/show-204642182.html#sc=1621 文章目录 一、背景小知识 1.1 DRAM的层次结构 1.2 刷新要求 1.3 DRAM存储芯片的读写时序 1.4 刷新方式分类 参考文献 RAM每一位数据都是通过芯片内的一个小电容充电(或低电平)