VXLAN网络中的RD、RT是什么?如何配置RD、RT?

2023-03-13 18:58:49 浏览数 (3)

VXLAN网络中的RD、RT是什么?

VPN

VPN(Virtual Private Network):也称VRF(Virtual Route Forwarding,虚拟路由及转发) ,目的是解决不同企业私网地址段相同,为了防止冲突,采用将相同私网地址放到不同的VRF表中。

一台设备由于可能同时连接了多个用户,这些用户(的路由)彼此之间需要相互隔离,那么这时候就用到了VRF,设备上每一个用户都对应一个VRF。设备除了维护全局IP路由表之外,还为每个VRF维护一张独立的IP路由表,这张路由表称为VRF路由表。要注意的是全局IP路由表,以及每一个VRF路由表都是相互独立或者说相互隔离的。

对于每一个VRF表,都具有路由区分符(Route Distinguisher:RD)和路由目标(Route Target:RT)两大属性。

RD

RD(Route-Distinguisher,路由区分符):RD用来区分本地VRF,该属性仅本地有效。8个字节的RD 4个字节的IPv4地址组成96位VPNv4路由,使不唯一的IPv4地址转化为唯一的VPN-IPv4地址,该VPNv4路由在ISP域内传递(区分),RD给某VRF里面的路由打上标签,进而实现地址的复用而不产生冲突。

RT

RT(Route Tagert):是BGP的扩展团体属性,它分成Import RT和Export RT,分别用于路由的导入、导出策略。

通过配置import和export RT,来控制收发路由。

  1. 当从VRF表中导出路由时,要用export RT对VRF路由进行标记。
  2. 当往VRF表中导入路由时,只有所带RT标记与该VRF表中任意一个import RT相符的路由才会被导入到VRF表中。

EVPN

EVPN(Ethernet Virtual Private Network)是一种用于二层网络互联的VPN技术,在VXLAN网络中引入EVPN作为VXLAN的控制平面。对于每一个EVPN,都具有路由区分符(Route Distinguisher:RD)和路由目标(Route Target:RT)两大属性,这些属性用于控制在VTEP之间发送或接收EVPN路由。

相同网段互通场景下,如何配置RD、RT?

组网需求

如下图所示,某企业在不同的数据中心中都拥有自己的VM,服务器1上的VM1属于VLAN 30,服务器2上的VM1属于VLAN 20,服务器1和服务器2位于相同网段。现需要配置通过VXLAN实现相同网段用户通信。

配置通过VXLAN实现相同网段用户通信组网图

配置关键点分析

1、关于VNI,配置有哪些要求?

相同网段用户通信时,EVPN需要发布Type2和Type3路由,并只使用二层VNI,本端和对端的二层VNI需要一致。

(1)VTEP之间通过发布Type3路由,用于在VTEP之间相互通告二层VNI、VTEP IP信息,通过建立头端复制列表,实现VTEP设备的自动发现和VXLAN隧道的动态建立。

(2)VTEP之间通过发布Type2路由,实现两端VTEP相互学习主机MAC。

2、 关于EVPN实例的RD和RT值,配置有哪些要求?

RD值,只在本地有效,不同的EVPN实例使用不同的RD值,在本地不能冲突。

相同网段用户通信时,发布EVPN路由时,发送端VTEP会携带本地EVPN实例出方向VPN-Target属性列表中的所有VPN-Target属性。当接收端VTEP收到的EVPN路由携带的VPN-Target属性,与自己在EVPN实例的入方向VPN-Target属性列表有相同条目时,才允许接收该EVPN路由。所以本地EVPN实例出方向VPN-Target属性值(ERT)需要与对端的EVPN实例入方向VPN-Target属性值(IRT)有相同的值。

总体配置关键配置步骤及要求

如下仅描述在VXLAN的Overlay网络中的关键配置要求以及NVE设备的具体配置样例:

Overlay网络中关键配置要求及举例

定义广播域BD为20,BD作为VXLAN网络的实体,通过BD转发流量。相同网段用户通信时,对端的BD需要与本端一致。

Device1的配置文件:

代码语言:javascript复制
#
bridge-domain 20

Device3的配置文件:

代码语言:javascript复制
#
bridge-domain 20

定义二层VNI为5020,VNI将以1:1方式映射到广播域BD 20。相同网段用户通信时,本端和对端的二层VNI需要一致。

Device1的配置文件:

代码语言:javascript复制
vxlan vni 5020

Device3的配置文件:

代码语言:javascript复制
vxlan vni 5020

在BD下创建EVPN实例,并配置该EVPN实例的RD值、本地EVPN实例出方向和入方向的VPN-Target属性。相同网段用户通信时,本端设备会发送携带MAC信息的Type2路由至对端,该Type2路由会携带BD下的ERT,对端相同BD需要接收该Type2路由中的MAC信息才能进行二层互通,所以本地EVPN实例出方向VPN-Target属性值需要与对端的EVPN实例入方向VPN-Target属性值相同。

Device1的配置文件:

代码语言:javascript复制
evpn
  route-distinguisher 10:1
  vpn-target 100:5010 export-extcommunity
  vpn-target 100:5020 import-extcommunity

Device3的配置文件:

代码语言:javascript复制
evpn
  route-distinguisher 10:3
  vpn-target 100:5020 export-extcommunity
  vpn-target 100:5010 import-extcommunity

配置服务器接入到VXLAN网络,需要配置接入侧接口工作在二层。

VM1所属的VLAN ID为VLAN 30,所以设置允许通过的VLAN为VLAN 30,并以1:1方式映射到广播域BD 20。

VM2所属的VLAN ID为VLAN 20,所以设置允许通过的VLAN为VLAN 20,并以1:1方式映射到广播域BD 20。

Device1的配置文件:

代码语言:javascript复制
#
interface 10GE1/0/2.1 mode l2
 encapsulation dot1q vid 30
 bridge-domain 20

Device3的配置文件:

代码语言:javascript复制
#
interface 10GE1/0/2.1 mode l2
 encapsulation dot1q vid 20
 bridge-domain 20

创建环回口地址,该地址将作为NVE设备的IP地址。

Device1的配置文件:

代码语言:javascript复制
#
interface LoopBack1
 ip address 2.2.2.2 255.255.255.255

Device3的配置文件:

代码语言:javascript复制
#
interface LoopBack1
 ip address 4.4.4.4 255.255.255.255

创建VTEP IP并配置VNI(即二层VNI)的头端复制列表。

Device1的配置文件:

代码语言:javascript复制
#
interface Nve1
 source 2.2.2.2
 vni 5020 head-end peer-list protocol bgp

Device3的配置文件:

代码语言:javascript复制
#
interface Nve1
 source 4.4.4.4
 vni 5020 head-end peer-list protocol bgp

跨网段互通场景下,如何配置RD、RT?

组网需求

如下图所示,某用户在不同的数据中心NVE设备下都拥有自己的VM,其中服务器1上的VM1属于VLAN 10,服务器2上的VM1属于VLAN 20,且位于不同网段;服务器1通过Device2接入VXLAN网络,服务器2通过Device3接入VXLAN网络。现需要通过VXLAN分布式网关实现不同网段中VM的互通。

配置通过VXLAN实现跨网段用户通信组网图

配置关键点分析

1、关于VNI,配置有哪些要求?

跨网段用户通信,需要发布Type2(或者Type5)路由。通过Type2发布主机路由时,需要用到二层VNI和三层VNI。通过Type5发布网段路由时,只需要用到三层VNI。

  • VTEP之间通过发布Type2的主机路由,实现分布式网关场景下跨网段主机之间的互通。在分布式VXLAN网络中,一般使用Type2路由通告主机路由和主机ARP,此时也可选择配置ARP广播报文抑制功能,并能支持虚拟机迁移。
  • VTEP之间通过发布Type5的网段路由,实现分布式网关场景下跨网段主机之间的互通,减少主机路由的发布。

使用Type5路由时,有如下限制:

(1)网关设备下连接的网段在整个网络中唯一。

(2)在配置发布IP前缀类型的路由之后,需执行arp direct-route enable命令将主机IP地址发布为直连路由,此时虚拟机的迁移会受到限制。

2、关于EVPN实例的RD和RT值,配置有哪些要求?

RD值,只在本地有效,不同的EVPN实例使用不同的RD,在本地不能冲突。

RT值的配置需要满足如下要求:

  • 跨网段用户通信,发送端发布Type2的路由时,会携带本地EVPN实例出方向VPN-Target属性列表中的所有VPN-Target属性(ERT)。当该EVPN路由与接收端中对应的L3VPN实例(L3VPN实例由L3 VNI确定)中的入方向VPN-Target属性列表中的条目相同时,才允许EVPN路由交叉到L3VPN实例路由表。所以发送端EVPN实例出方向VPN-Target属性值(ERT)需要与接收端的L3VPN实例入方向VPN-Target属性值(eIRT)有相同的值。
  • 跨网段用户通信,发送端发布Type5的网段路由时,会携带L3VPN实例出方向VPN-Target属性列表中的所有VPN-Target属性(ERT)。当该EVPN路由与接收端中对应的L3VPN实例(L3VPN实例由L3 VNI确定)中的入方向VPN-Target属性列表中的条目相同时,才允许EVPN路由交叉到L3VPN实例路由表。所以发送端L3VPN实例出方向VPN-Target属性值(ERT)需要与接收端的L3VPN实例入方向VPN-Target属性值(eIRT)有相同的值。
3、关于L3VPN实例的RD和RT值,配置有哪些要求?

RD值,只在本地有效,不同的L3VPN实例使用不同的RD,在本地不能冲突。

RT值的配置需要满足如下要求:

  • 跨网段用户通信,发送端发布Type2路由时,L3VPN实例中的VPN-Target属性如上所示,不再赘述。
  • 跨网段用户通信,发送端发布Type5的网段路由时,会携带发送端L3VPN实例出方向VPN-Target属性列表中的所有VPN-Target属性(eERT)。当该EVPN路由与接收端相同的L3VPN实例的入方向VPN-Target属性列表有相同条目时,才允许该网段路由交叉到L3VPN实例路由表。所以发送端L3VPN实例出方向VPN-Target属性值(eERT)需要与接收端的L3VPN实例入方向VPN-Target属性值(eIRT)有相同的值。

总体配置关键配置步骤及要求

如下仅描述在VXLAN的Overlay网络中的关键配置要求以及NVE设备的具体配置样例:

Overlay网络中关键配置要求及举例(以发布Type2路由为例)

分别定义广播域BD,BD作为VXLAN网络的实体,通过BD转发流量。跨网段用户通信时,对端的BD与本端不一致。

Device2的配置文件:

代码语言:javascript复制
#
bridge-domain 10

Device3的配置文件:

代码语言:javascript复制
#
bridge-domain 20

分别定义二层VNI,VNI将以1:1方式映射到广播域BD。跨网段用户通信时,对端的二层VNI与本端不一致。

Device2的配置文件:

代码语言:javascript复制
vxlan vni 10

Device3的配置文件:

代码语言:javascript复制
vxlan vni 20

在BD下创建EVPN实例,并配置该EVPN实例的RD值、本地EVPN实例出方向VPN-Target属性 。

跨网段用户通信发布Type2路由时,因为需要对端的L3VPN路由表学到本地的主机路由,又由于本地的Type2路由会携带本端BD下的ERT,所以本地EVPN实例出方向VPN-Target属性值需要与对端的L3VPN实例入方向VPN-Target属性值有相同的值。

Device2的配置文件:

代码语言:javascript复制
evpn
  route-distinguisher 10:2
  vpn-target 100:5020 export-extcommunity

Device3的配置文件:

代码语言:javascript复制
evpn
  route-distinguisher 10:3
  vpn-target 100:5030 export-extcommunity

创建用户的L3VPN实例,如vpn1。

Device2的配置文件:

代码语言:javascript复制
#
ip vpn-instance vpn1

Device3的配置文件:

代码语言:javascript复制
#
ip vpn-instance vpn1

在vpn1下定义RD值、用于EVPN的出方向和入方向的VPN-Target属性。

跨网段用户通信发布Type2路由时,本地L3VPN实例入方向VPN-Target属性值(eIRT)需要与对端的EVPN实例出方向VPN-Target属性值(ERT)有相同的值。

Device2的配置文件:

代码语言:javascript复制
ipv4-family
  route-distinguisher 20:2
  vpn-target 100:5030 import-extcommunity evpn

Device3的配置文件:

代码语言:javascript复制
ipv4-family
  route-distinguisher 20:2
  vpn-target 100:5020 import-extcommunity evpn

在vpn1中定义三层VNI5010,三层VNI用来标识L3VPN,因为与对端在同一个VPN中,对端的三层VNI与本端一致。

Device2的配置文件:

代码语言:javascript复制
vxlan vni 5010

Device3的配置文件:

代码语言:javascript复制
vxlan vni 5010

跨网段用户通信,所以创建Vbdif接口。

使能该接口为VXLAN分布式网关。并将该接口加入到vpn1中。

Device2的配置文件:

代码语言:javascript复制
#
interface Vbdif10
 ip binding vpn-instance vpn1
 ip address 10.1.1.1 255.255.255.0
 mac-address 0000-5e00-0102
 vxlan anycast-gateway enable
 arp collect host enable

Device3的配置文件:

代码语言:javascript复制
#
interface Vbdif20
 ip binding vpn-instance vpn1
 ip address 20.1.1.1 255.255.255.0
 vxlan anycast-gateway enable
 arp collect host enable

配置服务器接入到VXLAN网络,需要配置接入侧接口工作在二层。VM1所属的VLAN ID为VLAN 10,所以设置允许通过的VLAN为VLAN 10,将以1:1方式映射到广播域BD 10,同理配置VM2 的接入。

Device2的配置文件:

代码语言:javascript复制
#
interface 10GE1/0/2.1 mode l2
 encapsulation dot1q vid 10
 bridge-domain 10

Device3的配置文件:

代码语言:javascript复制
#
interface 10GE1/0/2.1 mode l2
 encapsulation dot1q vid 20
 bridge-domain 20

创建环回口地址,该地址将作为NVE设备的IP地址。

Device2的配置文件:

代码语言:javascript复制
#
interface LoopBack1
 ip address 2.2.2.210 255.255.255.255

Device3的配置文件:

代码语言:javascript复制
#
interface LoopBack0
 ip address 3.3.3.3 255.255.255.255

创建VTEP IP并配置VNI(即二层VNI)的头端复制列表。

Device2的配置文件:

代码语言:javascript复制
#
interface Nve1
 source 2.2.2.210
 vni 10 head-end peer-list protocol bgp

Device3的配置文件:

代码语言:javascript复制
#
interface Nve1
 source 3.3.3.3
 vni 20 head-end peer-list protocol bgp

配置BGP EVPN邻居,并将EVPN的发布路由类型设置为Type2(即irb)。

Device2的配置文件:

代码语言:javascript复制
#
bgp 100 instance evpn1
 peer 1.1.1.1 as-number 100
 peer 1.1.1.1 connect-interface LoopBack0
#
 ipv4-family vpn-instance vpn1
  import-route direct
  advertise l2vpn evpn
#
 l2vpn-family evpn
  policy vpn-target
  peer 1.1.1.1 enable
  peer 1.1.1.1 advertise irb

Device3的配置文件:

代码语言:javascript复制
#
bgp 100 instance evpn1
 peer 1.1.1.1 as-number 100
 peer 1.1.1.1 connect-interface LoopBack0
#
 ipv4-family vpn-instance vpn1
  import-route direct
  advertise l2vpn evpn
#
 l2vpn-family evpn
  policy vpn-target
  peer 1.1.1.1 enable
  peer 1.1.1.1 advertise irb

1 人点赞