华为DCN网络之:VXLAN

VXLAN

RFC定义了VLAN扩展方案VXLAN(Virtual eXtensible Local Area Network,虚拟扩展局域网)。VXLAN采用MAC in UDP封装方式,是NVO3(Network Virtualization over Layer 3)中的一种网络虚拟化技术。
VXLAN早已被广泛应用于数据中心网络。随着园区网络的业务需求越来越灵活、园区网络虚拟化的需求及网络自动化的需求越来越强烈,VXLAN开始进入园区网络,搭配园区SDN控制器实现更多用户价值。

1. 网络虚拟化技术背景

虚拟化技术具有降低IT成本、提高业务部署灵活性和降低运维成本等优势。越来越多的企业选择在数据中心或园区IT设施使用云计算或虚拟化技术。
在企业选择虚拟化架构后,业务将以虚拟机方式部署于服务器集群中。

在这里插入图片描述

网络需求:二层扩展

虚拟化/云计算集群内允许虚拟机任意迁移,导致相同业务(相同网段)虚拟机可能运行在不同的服务器,或同一个虚拟机(一个IP)先后运行在不同的服务器(物理位置)。
物理服务器可能分布在地理位置跨度非常大的机房,因此需要使用三层进行互联。

网络需求:多租户隔离

云化场景一般支持多租户,即不同用户共享物理资源。这对网络提出两个需求,租户间隔离和租户内互访。

  • 租户间隔离:租户可能配置相同的MAC和IP地址,需要考虑物理网络承载隔离的问题,并且存在海量的用户需要进行隔离。
  • 租户内互访:租户内相同网段能够直接进行二层通信,即便处于不同物理位置的机房中。

传统网络的问题

  1. 虚拟机规模受设备表项规格限制

服务器虚拟化后,VM的数量比原有的物理机发生了巨大的增长,而接入侧二层设备的MAC地址表规格较小,无法满足快速增长的VM数量。

  1. 网络隔离能力限制

VLAN Tag只有12 bit。对于大型虚拟化云计算服务的场景而言,租户数目远大于VLAN可用个数。传统二层网络中的VLAN无法满足网络动态调整的需求。

  1. 虚拟机迁移范围受限

虚拟机迁移必须发生在一个二层网络中。传统的二层网络,将虚拟机迁移限制在了一个较小的局部范围内。

2. VXLAN的基本概念

VXLAN在本质上是一种VPN技术,能够在任意路由可达的物理网络(Underlay网络)上叠加二层虚拟网络(Overlay网络),通过VXLAN网关之间的VXLAN隧道实现VXLAN网络内部的互通,同时,也可以实现与传统的非VXLAN网络的互通。
VXLAN通过采用MAC in UDP封装来延伸二层网络,将以太报文封装在IP报文之上,通过路由在网络中传输,无需关注虚拟机的MAC地址。且三层网络无网络结构限制,具备大规模扩展能力。通过路由网络,虚拟机迁移不受网络架构限制。

在这里插入图片描述

VXLAN解决传统网络遇到的问题

  1. 虚拟机规模受网络规格限制

VXLAN将虚拟机发出的数据包封装在UDP中,并使用物理网络的IP、MAC地址作为外层头进行封装,对网络只表现为封装后的参数。
除VXLAN网络边缘设备,网络中的其他设备不需要识别虚拟机的MAC地址,减轻了设备的MAC地址学习压力,提升了设备性能。

  1. 网络隔离能力限制

VXLAN引入了类似VLAN ID的用户标识(VNI),由24 bit组成,支持多达16 M的VXLAN段的网络隔离,对用户进行隔离和标识不再受到限制,可满足海量租户。

  1. 虚拟机迁移范围受网络架构限制

对于具有同一网段IP地址的VM而言,即使其物理位置不在同一个二层网络中,但从逻辑上看,相当于处于同一个二层域。即VXLAN技术在三层网络之上,构建出了一个虚拟的大二层网络。

VXLAN在园区网中的应用

通过引入虚拟化技术,在园区网络中基于一张物理网络创建多张虚拟网络(Virtual Network,VN)。不同的虚拟网络应用于不同的业务,例如办公、视讯、安防等。

在这里插入图片描述

VXLAN的价值

技术选择Underlay网络Overlay网络配置及管理用户信息携带组网要求
VLANL2L2命令行或基于控制器设备广泛支持
MPLS VPNL3L2/L3运营商级别的技术要求需端到端支持MPLS
VXLANL2/L3L2/L3命令行或基于控制器可以隧道端节点支持VXLAN即可
  1. VXLAN可构建在任意复杂的三层网络之上。
  2. 支持三层虚拟网络。
  3. 搭配SDN控制器实现集中部署及自动化,已有成功实践。

华为设备上VXLAN的报文格式

在这里插入图片描述

VXLAN的基本概念

1.NVE-Network Virtualization Edge

是实现网络虚拟化功能的网络实体,可以是硬件交换机也可以是软件交换机。
NVE在三层网络上构建二层虚拟网络,是运行VXLAN的设备。图中SW1和SW2都是NVE。

在这里插入图片描述

2.VTEP-VXLAN Tunnel Endpoints

VTEP是VXLAN隧道端点,位于NVE中,用于VXLAN报文的封装和解封装。
VXLAN报文(其外层IP头部)中源IP地址为源端VTEP的IP地址,目的IP地址为目的端VTEP的IP地址。

在这里插入图片描述

3.VNI(VXLAN Network Identifier) and BD(Bridge Domain)

VNI

  • 类似VLAN ID,用于区分VXLAN段。不同VXLAN段的虚拟机不能直接二层相互通信。
  • 一个租户可以有一个或多个VNI,VNI长度为24 bit,支持多达16 M的租户。

BD

  • 类似传统网络中采用VLAN划分广播域,在VXLAN网络中一个BD就标识一个大二层广播域。
  • VNI以1:1方式映射到广播域BD,同一个BD内的终端可以进行二层互通。

BD是华为独有的概念,只在本地有效,主要用来替换VLAN,是为了解决VLAN ID最大只能到4096的问题

在这里插入图片描述

4.VAP-Virtual Access Point

实现VXLAN的业务接入。
VAP有两种配置方式,二层子接口方式或者VLAN绑定方式:

  • 二层子接口方式接入,例如在SW1创建二层子接口关联BD 10,则这个子接口下的特定流量会被注入到BD 10。
  • VLAN绑定方式接入,例如在SW2配置VLAN 10与广播域BD 10关联,则所有VLAN10的流量会被注入到BD 10。

在这里插入图片描述

传统网络的流量进入VXLAN网络之后,通过二层子接口或者VLAN绑定的方式,与BD进行绑定,在BD中会指定VXLAN VNI,实现从传统的VLAN网络到VXLAN网络的映射。

5. Border and Edge

Edge:VXLAN网络的边缘接入设备,传统网络的流量由此进入VXLAN网络。
Border:VXLAN网络和外部网络通信的节点,用于外部流量进入VXLAN网络或VXLAN内部流量访问外部,一般连接具有三层转发能力的设备(如Router、Firewall)。

6. L2网关和L3网关

二层(L2)网关:实现流量进入VXLAN网络,也可用于同一VXLAN网络内终端的同子网通信。
三层(L3)网关:用于VXLAN网络内终端的跨子网通信以及终端对外部网络(非VXLAN网络)的访问。

7. VBDIF

类似于传统网络中采用VLANIF实现不同广播域互通,在VXLAN中引入了VBDIF的概念。
VBDIF接口在VXLAN三层网关上配置,是基于BD创建的三层逻辑接口。
通过VBDIF接口可实现不同网段的用户通过VXLAN网络通信,及VXLAN网络和非VXLAN网络间的通信,也可实现二层网络接入三层网络。

在这里插入图片描述

8. 分布式与集中式网关

集中式网关

L3网关部署在一台设备上,所有跨子网的流量都通过该设备转发,实现流量的集中管理。

  • 优点:跨子网流量集中管理,简化网关部署和管理。
  • 缺点:转发路径并非最优。ARP表项规格瓶颈:由于采用集中式网关,网关上需要维护大量通过VXLAN接入网络的终端其ARP。

分布式网关

VTEP设备既是L2网关,又是L3网关。非网关节点对VXLAN隧道不感知,仅作为VXLAN报文的转发节点。

  • 优点:VTEP节点只学习连接在本节点下终端的ARP表项,解决了集中式三层网关带来的ARP表项瓶颈问题,网络规模扩展能力强。
  • 缺点:相对集中式部署配置、实现复杂,部署工程量大。

3. VXLAN的工作原理

3.1 隧道建立

VXLAN隧道由一对VTEP确定,报文在VTEP设备进行封装之后在VXLAN隧道中依靠路由进行传输。只要VXLAN隧道的两端VTEP是三层路由可达的,VXLAN隧道就可以建立成功。

根据VXLAN隧道的创建方式将VXLAN隧道分为以下两种:

  1. 静态隧道:通过用户手工配置本端和远端的VNI、VTEP IP地址和头端复制列表(head-end peer-list)来完成。
  2. 动态隧道:通过BGP EVPN(Ethernet VPN,以太网虚拟私有网络)方式动态建立VXLAN隧道。在VTEP之间建立BGP EVPN对等体,然后对等体之间利用BGP EVPN路由来互相传递VNI和VTEP IP地址信息,从而实现动态地建立VXLAN隧道。
静态VXLAN隧道

静态VXLAN隧道并不是一个有状态的隧道(如IPsec VPN),只是数据传输时的隧道封装,类似于GRE VPN。
头端复制列表中的地址,即进行隧道封装传输时可封装的隧道目的地址。

在这里插入图片描述

3.2 MAC表项

VXLAN实现的是在Overlay网络中进行二层转发,转发单播数据帧依赖的依旧是MAC地址表项。
VTEP接收到BD内来自本地的数据帧,将数据帧的源MAC地址添加到该BD的MAC地址表中,出接口为收到数据帧的接口。
该表项用于指导发往本VTEP下连接终端的数据帧的转发。

<S1>display mac-address bridge-domain 10
-------------------------------------------------------------------------------
MAC Address    		VLAN/VSI/BD   Learned-From    Type        		
-------------------------------------------------------------------------------
0000-0000-000a	    				 -/-/10      GE1/0/1.10       		dynamic    

<S1>display mac-address bridge-domain 20
-------------------------------------------------------------------------------
MAC Address    		VLAN/VSI/BD   Learned-From    Type        		
-------------------------------------------------------------------------------
0000-0000-000b     				-/-/20      GE1/0/1.20       		dynamic     
MAC地址学习

转发属于远端VTEP下所连接设备的数据帧,需要先学习到远端设备的MAC地址。
该过程与传统MAC地址表形成过程类似,依赖于主机之间的报文交互,一般通过ARP报文交互形成MAC地址表项。

在这里插入图片描述

PC1与PC2通信过程如下:

  1. PC1欲与PC2通信,PC1发送ARP请求广播帧,试图请求PC2的MAC地址。
  2. SW1收到该帧后,根据VAP信息判断出流量所属的BD ID、需进入的VXLAN隧道及对应的VNI;同时学习PC1的MAC地址,将其与该BD ID、接收帧的接口等绑定。
  3. SW1对ARP请求广播帧进行VXLAN封装,按头端复制列表进行转发。
  4. SW2收到VXLAN报文后,将其解封装,得到原始数据帧;同时学习PC1的MAC地址,将该地址与SW1的VTEP地址进行绑定。
  5. SW2将该ARP帧在本地广播域内泛洪。然后,PC2收到了该帧并学习到了PC1的ARP信息。
  6. PC2发送单播的ARP回应。
  7. SW2此时已经拥有PC1的MAC地址表项,因此将会单播转发,并且学习PC2的源MAC地址到MAC地址表项中。
  8. SW2为该ARP响应加上VXLAN封装,发送到远端VTEP 1.1.1.1。
  9. SW1收到VXLAN报文之后解封装,将PC2的源MAC地址记录到MAC地址表,出接口为远端VTEP。
  10. SW1将数据帧转发给PC1。

3.3 报文转发

已知单播

根据上图:

  1. PC1发送单播帧给PC2。
  2. SW1在MAC地址表中查询PC2的MAC地址,找到匹配的表项。
  3. SW1将报文进行VXLAN封装,然后增加新的IP包头,报文的目的IP地址为远端VTEP SW2的地址2.2.2.2。
  4. SW2在MAC地址表中查询PC2的MAC地址,找到匹配的表项。
  5. SW2将报文转发给PC2。
BUM流量

传输BUM(Broadcast、Unknown、Multicast)流量时,VTEP会将流量复制多份发送到头端复制列表中的对端VTEP,从而在Overlay网络中实现泛洪转发的效果。

在这里插入图片描述

跨子网

在这里插入图片描述

  1. PC1希望与PC2进行通信,本地计算发现对端与自身不在同一个子网,此时将报文发送给网关。
  2. PC1发往PC2的数据帧,目的MAC为:00AB-09FF-1111(网关MAC地址),SW1收到之后执行L2查表发现出接口为远端VTEP(即L3网关),将报文加上VXLAN头部封装(VNI =1000)之后发往SW3。
  3. SW3收到报文之后解VXLAN封装发现,内部原始数据帧其目的MAC为:00AB-09FF-1111,为自身接口VBDIF 10的MAC地址,此时需要执行L3查表转发。
  4. SW3查找路由表,发现目的IP:192.168.2.1,与本地接口VBDIF 20产生的直连路由相匹配,查找ARP表项确定报文目的MAC,再查找MAC地址表确定报文的出接口。SW3中前往192.168.2.1所对应MAC地址的出接口为远端VTEP 2.2.2.2,将报文加上VXLAN封装,送往SW2。
  5. SW2收到报文之后解VXLAN封装发现目的MAC并非自身任何接口的MAC地址,执行L2查表转发,依据MAC地址表将报文从本地接口转发出去。

4. BGP EVPN

对于静态VXLAN,该方案没有控制平面,是通过数据平面的流量泛洪进行VTEP发现和主机信息(包括IP地址、MAC地址、VNI、网关VTEP IP地址)学习的,这种方式导致VXLAN网络存在很多泛洪流量。为了解决这一问题,VXLAN引入了BGP EVPN作为控制平面,通过在VTEP之间交换BGP EVPN路由实现VTEP的自动发现、主机信息相互通告等,从而避免了不必要的数据流量泛洪。

静态方式配置VXLAN的问题:

  1. N台设备建立VXLAN隧道,手工配置方式最高达到 N*(N-1)/2 次头端列表配置。
  2. 静态VXLAN隧道只有数据转发平面。
  3. 只能通过ARP广播的方式学习远端MAC地址。

4.1 基本概念

BGP EVPN的引入,是为了作为控制面协议,具体的控制过程如下:

  • 设备使能BGP EVPN,建立BGP EVPN对等体关系。
  • 设备之间通过BGP EVPN路由通告,完成VXLAN控制面的相关工作。
  • VXLAN隧道通过BGP EVPN自动建立,转发表项通过BGP EVPN动态刷新。

BGP EVPN通过扩展BGP协议新定义了几种BGP EVPN路由(在MP_REACH_NLRI属性中新定义了几种NLRI,称作EVPN NLRI)。
这些BGP EVPN路由可以用于传递VTEP地址和主机信息,因此BGP EVPN应用于VXLAN网络中,可以使VTEP发现和主机信息学习从数据平面转移到控制平面。

  • Type 2路由(MAC/IP路由):用于主机MAC地址/ARP/IP路由通告。
  • Type 3路由(Inclusive Multicast路由):用于传递二层VNI和VTEP IP地址信息,实现VTEP的自动发现和VXLAN隧道的动态建立,实现BUM报文转发。
  • Type 5路由(IP前缀路由):用于主机ARP/IP路由通告,外部网络路由通告。
EVPN NLRI

EVPN NLRI通过路径属性MP_REACH_NLRI携带,地址族标识符(AFI)为25,代表L2VPN,子地址族标识符(SAFI)为70。

Path Attribute - MP_REACH_NLRI
Flags:Optional, Non-transitive
Type Code: MP_REACH_NLRI (14)
Length
Address family identifier (AFI): Layer-2 VPN (25)
Subsequent address family identifier (SAFI): EVPN (70)
Next hop network address (4 Byte)
Route Type (1 octet)
Length (1 octet)
Route Type specific (variable)
Extended Community

BGP EVPN与MPLS VPN类似,为了控制路由的发送、接收,BGP EVPN同样存在VPN实例的概念(EVPN实例),与传统的IP VPN实例相同,EVPN实例存在RD和RT值,传递路由时使用扩展团体属性携带EVPN实例RT值。
除了RT值之外,为了支持一些特性,BGP EVPN在扩展团体属性中增加了一些新子类型:MAC Mobility、EVPN Router’s MAC Extended Community。

Path Attribute - EXTENDED_COMMUNITIES
Flags:Optional, Transitive
Type Code: EXTENDED_COMMUNITIES(16)
Length
RT(Route Target)
MAC Mobility
EVPN Router's MAC Extended Community
EVPN instance

EVPN实例与BD进行绑定,BD下的MAC地址表项会通过BGP EVPN路由进行传递,在传递时会携带BD绑定的EVPN实例ERT值,对端收到之后对比本地EVPN实例的IRT值,将EVPN路由放入对应的EVPN实例路由表,同时解析EVPN路由表获取MAC地址表项,放入本端与该EVPN实例绑定的BD的MAC地址表中。

在这里插入图片描述

4.2 BGP EVPN路由

Type2路由

Type 2路由(MAC/IP路由):主要用于MAC地址通告、ARP信息通告以及主机IP路由通告。

Route Distinguisher(8 Byte)EVPN实例下设置的RD(Route Distinguisher)值
Ethernet Segment Identifier(10 Byte)当前设备与对端连接定义的唯一标识
Ethernet Tag ID(4 Byte)当前设备上实际配置的VLAN ID
MAC Address Length(1 Byte)此路由携带的主机MAC地址的长度
MAC Address(6 Byte)此路由携带的主机MAC地址
IP Address Length(1 Byte)此路由携带的主机IP地址的掩码长度
IP Address(0或4或16 Byte)此路由携带的主机IP地址
MPLS Label1(3 Byte)此路由携带的二层VNI
MPLS Label2(0或3 Byte)此路由携带的三层VNI

Type 2类路由描述

  1. 主机MAC地址通告
Route Distinguisher
Ethernet Segment Identifier
Ethernet Tag ID
MAC Address Length = MAC地址长度
MAC Address = MAC地址
IP Address Length
IP Address
MPLS Label1 = VNI(二层)
MPLS Label2

相同子网主机互访场景下进行主机MAC地址通告,包含主机MAC信息和二层VNI。

  1. 主机ARP通告
Route Distinguisher
Ethernet Segment Identifier
Ethernet Tag ID
MAC Address Length = MAC地址长度
MAC Address = MAC地址
IP Address Length = IP地址长度
IP Address = IP地址
MPLS Label1 = VNI(二层)
MPLS Label2

集中式网关部署场景下通告ARP类型路由,包含主机IP信息、MAC信息和二层VNI。

  1. 主机IP路由通告
Route Distinguisher
Ethernet Segment Identifier
Ethernet Tag ID
MAC Address Length = MAC地址长度
MAC Address = MAC地址
IP Address Length = IP地址长度
IP Address = IP地址
MPLS Label1 = VNI(二层)
MPLS Label2 = VNI(三层)

分布式网关部署不同子网互访场景下,进行IRB类型路由通告。它包括主机MAC信息、IP信息、二层VNI和三层VNI。

主机MAC地址通告

在这里插入图片描述

同子网主机MAC地址通告:

  1. PC1产生数据流量并发往SW1。
  2. SW1获知了PC1的MAC地址,它在MAC地址表中创建一个表项,记录该MAC地址、BD ID及入接口。
  3. SW1根据该表项生成BGP EVPN路由并发送给SW2。该路由携带本端EVPN实例的RT值(扩展团体属性)以及Type 2路由( MAC路由)。在MAC路由中,PC1的MAC地址存放在MAC Address字段中,二层VNI存放在MPLS Label1字段中。
  4. SW2收到SW1发来的BGP EVPN路由后,首先检查该路由携带的RT(类似MPLS VPN中的RT的概念),如果与本端EVPN实例的入站RT相等,则接收该路由,否则丢弃。在接收该路由后,SW2获得PC1的MAC地址、BD ID和SW1上VTEP IP地址(MP_REACH_NLRI中Next hop network address字段携带)的对应关系,并在本地的MAC表中生成MAC表项,其出接口需根据下一跳进行迭代,最终迭代结果是指向SW1的VXLAN隧道。

主机ARP通告

在这里插入图片描述

MAC/IP路由可以同时携带主机MAC地址+主机IP地址,因此该路由可以用来在VTEP之间传递主机ARP表项,实现主机ARP通告。其中,MAC Address和MAC Address Length字段为主机MAC地址,IP Address和IP Address Length字段为主机IP地址。此时的MAC/IP路由也称为ARP类型路由。主机ARP通告主要用于以下两种场景:

  1. ARP广播抑制。当三层网关学习到其子网下的主机ARP时,生成主机信息(包含主机IP地址、主机MAC地址、二层VNI、网关VTEP IP地址),然后通过传递ARP类型路由将主机信息同步到二层网关上。这样当二层网关再收到ARP请求时,先查找是否存在目的IP地址对应的主机信息,如果存在,则直接将ARP请求报文中的广播MAC地址替换为目的单播MAC地址,实现广播变单播,达到ARP广播抑制的目的。
  2. 分布式网关场景下的虚拟机迁移。当一台虚拟机从当前网关迁移到另一个网关下之后,新网关学习到该虚拟机的ARP(一般通过虚拟机发送免费ARP实现),并生成主机信息(包含主机IP地址、主机MAC地址、二层VNI、网关VTEP IP地址),然后通过传递ARP类型路由将主机信息发送给虚拟机的原网关。原网关收到后,感知到虚拟机的位置发生变化,触发ARP探测,当探测不到原位置的虚拟机时,撤销原位置虚拟机的ARP和主机路由。

主机ARP通告主要在VXLAN集中式网关+BGP EVPN场景下使用,在BGP EVPN中向对等体通告ARP路由或者IRB路由为互斥选项,只能配置其中一种路由对外发布,一般在VXLAN集中式网关+BGP EVPN场景下选择发布ARP路由,而且VXLAN分布式网关+BGP EVPN场景下选择发布IRB路由。

主机IP通告

分布式网关下的跨子网通信

分布式网关组网中VTEP设备既是L2网关,又是L3网关。在该组网下跨子网通信的实现方式并不唯一,根据接收报文的VTEP(Ingress VTEP)处理方式不同,可以划分为:非对称IRB转发(Asymmetric Integrated Routing and Bridging)、对称IRB转发(Symmetric Integrated Routing and Bridging)。

在这里插入图片描述

VLANIF实现VLAN跨子网转发细节回顾:

  • PC1通过本地IP地址、本地掩码、对端IP地址进行计算,发现目的设备PC2与自身不在同一个网段,判断该通信为三层通信,将去往PC2的流量发给网关。PC1发送的数据帧:源MAC = MAC1,目的MAC = MAC2。
  • 交换机收到PC1发送的去往PC2的报文,经解封装发现目的MAC为VLANIF 10接口的MAC地址,则认为该报文是发给交换机本身的,所以将报文交给路由模块继续处理。
  • 路由模块解析发现目的IP为192.168.20.2,非本地接口存在的IP地址,因此需要对该报文三层转发。查找路由表后,匹配中VLANIF 20产生的直连路由。
  • 因为匹配的为直连路由,说明已经到达最后一跳,所以交换机在ARP表中查找192.168.20.2,获取192.168.20.2的MAC地址,交由交换模块重新封装为数据帧。
  • 交换模块查找MAC地址表以明确报文出接口、是否需要携带VLAN Tag。最终交换模块发送的数据帧:源MAC = MAC2,目的MAC = MAC3,VLAN Tag = None。
  1. 非对称IRB转发

非对称IRB转发:Ingress VTEP同时执行L3、L2查表转发,Egress VTEP只需要进行L2查表、转发,因为Ingress、Egress所执行操作不一致,被称为非对称转发。

在这里插入图片描述

在非对称IRB转发过程中,VTEP之间不会传递主机IP路由,即VTEP1、VTEP2之间不会传递本地下连PC生成的32位主机路由(由ARP信息生成),所以在第2步中VTEP1查找路由表,只能匹配到由VBDIF 10生成的直连路由。
在第5步中,VTEP2解封装VXLAN报文,目的MAC不是该BD所对应的本地VBDIF接口MAC地址,所以此时VTEP会执行L2查表,根据报文携带的VNI查找对应的BD的MAC地址表项,之后进行L2转发。

  1. 对称IRB转发

在这里插入图片描述

对称IRB转发:Ingress VTEP、Egress VTEP都执行L3查表转发。
相比较于非对称IRB转发,新增了一个IP VPN实例以及其所绑定的L3 VNI概念(非对称IRB转发时VTEP之间传输的报文其VXLAN头部中VNI值为L2 VNI),VBDIF接口需要绑定IP VPN实例,此时该VBDIF接口的路由学习、数据转发都被限制在该IP VPN实例中,与MPLS VPN类似。

EVPN RT、IP VPN RT

新增IP VPN实例之后,BGP EVPN在传递Type 2路由时携带的RT值依旧是EVPN RT值,只是对端收到路由之后的处理行为存在区别:

  • 检查该路由携带的RT,如果与本端EVPN实例的Import RT相同,则接收该路由。EVPN实例获取到IRB类型路由后,还能提取到其中包含的ARP类型路由,用于主机ARP通告。
  • 检查该路由携带的RT,如果与本端IP VPN实例的Import RT(EVPN)相同,则接收该路由。然后,VPN实例获取到该路由携带的IRB类型路由,从中提取的主机IP地址、三层VNI,在其路由表中保存主机IP路由,并根据路由的下一跳迭代出接口,最终迭代结果是指向VTEP的VXLAN隧道。

只有当路由携带的RT值与EVPN IRT、IP VPN IRT(EVPN)都不相同时,该路由才会被丢弃。

主机IP路由通告 (IRB路由)

在这里插入图片描述

通过EVPN Router’s MAC Extended Community这一扩展团体属性子属性,BGP EVPN传递VTEP自身的Router MAC,该MAC地址为NVE接口的MAC地址。

通信过程

在这里插入图片描述

对称IRB转发时,VTEP之间会传递由ARP生成的32位主机路由,因此VTEP1在进行路由查表时会匹配中由VETP2传递过来的32位主机路由,即便VTEP1上存在VBDIF 10,存在对应的直连路由,此时根据最长匹配原则依旧会根据32位主机路由进行转发。
在第4步中,VTEP2解封装VXLAN报文,发现内层数据帧的目的MAC地址为VTEP2的Router MAC(MAC B),判断自身需要进行L3路由查表转发,根据VNI 1000找到对应IP VPN实例,在该IP VPN实例路由表中查找对应的路由,发现匹配中VBDIF 10接口的直连路由,之后查找本地MAC地址表项,将报文发送给连接在本地的PC2。

Type3路由

该类型路由在VXLAN控制平面中主要用于VTEP的自动发现和VXLAN隧道的动态建立。
作为BGP EVPN对等体的VTEP,通过Inclusive Multicast路由互相传递二层VNI和VTEP IP地址信息。
其中,Originating Router’s IP Address字段为本端VTEP IP地址,MPLS Label字段为二层VNI。

NLRI格式Route Distinguisher(8 Byte)EVPN实例下设置的RD值
Ethernet Tag ID(4 Byte)当前设备上的VLAN ID。在此路由中为全0
IP Address Length(1 Byte)此路由携带的本端VTEP IP地址的掩码长度
Originating Router's IP Address(4 or 16 Byte)此路由携带的本端VTEP IP地址
PMSI属性Flags(1 Byte)在VXLAN场景中,该字段没有实际意义
Tunnel Type(1 Byte)在VXLAN场景中,支持的类型为“6:Ingress Replication”
MPLS Label(1 Byte) = 二层VNI此路由携带的二层VNI
Tunnel Identifier(变长)在VXLAN场景中,该字段也是本端VTEP IP地址

建立VXLAN隧道

在这里插入图片描述

VTEP通过Type 3路由互相传递二层VNI和VTEP IP地址信息。如果对端VTEP IP地址是三层路由可达的,则建立一条到对端的VXLAN隧道。同时,如果对端VNI与本端相同,则创建一个头端复制列表,用于后续BUM报文转发

Type5路由

该类型路由的IP Prefix Length和IP Prefix字段既可以携带主机IP地址,也可以携带网段地址。
当携带主机IP地址时,该类型路由在VXLAN控制平面中的作用与IRB类型路由是一样的,主要用于分布式网关场景中的主机IP路由通告。
当携带网段地址时,通过传递该类型路由,可以实现VXLAN网络中的主机访问外部网络。

Route Distinguisher(8 Byte)EVPN实例下设置的RD值
Ethernet Segment Identifier(10 Byte)当前设备与对端连接定义的唯一标识
Ethernet Tag ID(4 Byte)当前设备上实际配置的VLAN ID
IP Prefix Length(1 Byte)此路由携带的IP前缀掩码长度
IP Prefix (4 or 16 Byte)此路由携带的IP前缀
GW IP Address (4 or 16 Byte)默认网关地址,在VXLAN场景中没有实际意义
MPLS Label(3 Byte)此路由携带的三层VNI

对于VXLAN外部网络,VTEP可以通过Type 5类路由将外部路由通告到整个VXLAN网络中,用于指导VXLAN内部主机访问外部网络。

在这里插入图片描述

4.3 BGP EVPN特性

ARP广播抑制

BGP EVPN的Type 2路由使得VTEP可以不依赖主机之间的通信过程完成MAC地址表的学习,但是主机间的ARP信息依旧需要在VXLAN Overlay中进行泛洪转发,这会占用大量的网络资源。
为此可以通过BGP EVPN路由实现ARP广播抑制功能,减少广播流量。

在这里插入图片描述

主机信息收集

ARP广播抑制功能的实现依赖于ARP广播抑制表,该表项的形成依赖于BGP EVPN携带的Type 2路由(IRB路由、主机ARP通告)。
默认情况下L3网关不会由本地的ARP信息生成BGP EVPN路由,需要手动使能BGP EVPN主机信息收集功能。之后VTEP会依据ARP信息生成IRB路由。

  1. 开启BGP EVPN主机信息收集,生成IRB路由。
  2. 通过BGP EVPN Type 2 IRB路由传递ARP信息。
  3. VTEP2使用IRB路由生成IRB主机信息表。
本地ARP代理

全网开启BGP EVPN主机信息收集功能之后,L3网关上将学习到全部主机的32位主机路由,这使得L3网关在转发属于同一个BD之间的流量时完全可以依赖主机路由进行三层IRB对称转发。
为此可以在L3网关的VBDIF接口上开启本地ARP代理,VBDIF接口会响应下连主机对同网段IP地址的ARP请求,之后对该同网段IP的访问可以由L3网关进行三层转发完成。

在这里插入图片描述

通过本地ARP代理机制,ARP报文的传递将会被抑制在本地VTEP之下,同时减少了VTEP之间的不必要流量交互。

分布式网关

在开启本地代理ARP的场景下,VTEP只需要维护本地的ARP表项,其他VTEP通过BGP EVPN路由传递的ARP信息在转发时并不会被用到,此时VTEP无需维护从其他VTEP学习到的ARP表项
开启分布式网关之后,VTEP只处理收到的用户侧主机发送的ARP报文,删除已经学到的网络侧的ARP表项。

一般将不同VTEP上相同编号的VBDIF的接口MAC地址配置为相同的MAC地址,开启分布式网关之后,VBDIF虽然具有相同的IP地址、MAC地址,但是并不会上报ARP冲突,并且主机、VM迁移到不同的VTEP下时,无需重新进行网关的ARP解析。

MAC Mobility

MAC Mobility扩展属性用于当一个主机/VM从一个VTEP启动到另外一个VTEP之下时,对外宣告该主机的位置移动。

  1. VTEP1学习到VM1的ARP信息,生成IRB路由对外通告。通告的BGP EVPN路由扩展团体属性:MAC Mobility的序列号为0。
  2. VM1移动到VTEP2下。
  3. VTEP2通过ARP信息感知到VM1,生成一条新的IRB路由,该路由与VTEP1传递的路由相同。
  4. VTEP2通过BGP EVPN对外通告VM1的新IRB路由,此时扩展团体属性:MAC Mobility的序列号为1。
  5. VTEP1收到BGP路由更新,通过MAC Mobility携带序列号意识到下连VM已经发生了迁移,对外发送BGP Update报文撤销之前发送的路由更新。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/760860.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【前端】从零开始学习编写HTML

目录 一、什么是前端 二、什么是HTML 三、HTML文件的基本结构 四、HTML常见标签 4.1 注释标签 4.2 标题标签 4.3 段落标签 4.4 换行标签 4.5 格式化标签 4.6 图片标签 4.7 超链接标签 4.8 表格标签 4.9 列表标签 4.10 表单标签 &#xff08;1&#xff09;form标…

介绍两个压测工具pgbench\sysbench,可视化监控工具NMON

性能评估做不好&#xff0c;开会又领导点名叼了。/(ㄒoㄒ)/~~ /(ㄒoㄒ)/~~ /(ㄒoㄒ)/~~ 挨叼了&#xff0c;也要写文章&#xff0c;记录下我的笔记。 写篇文章 对数据库、OS性能的性能评估&#xff0c;需要选择合适的压测工具&#xff0c;给找出数据库的运行瓶颈 pgbench 这是…

Redis 集群模式

一、集群模式概述 Redis 中哨兵模式虽然提高了系统的可用性&#xff0c;但是真正存储数据的还是主节点和从节点&#xff0c;并且每个节点都存储了全量的数据&#xff0c;此时&#xff0c;如果数据量过大&#xff0c;接近或超出了 主节点 / 从节点机器的物理内存&#xff0c;就…

【每日刷题】Day78

【每日刷题】Day78 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 1. 1608. 特殊数组的特征值 - 力扣&#xff08;LeetCode&#xff09; 2. 1385. 两个数组间的距离值 - …

实现胶囊神经网络,识别手写MNIST数据集,谈谈实现及理解。

&#x1f3c6;本文收录于《CSDN问答解答》专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&…

在安装HDFS过程中遇见Permission denied

HDFS Shell命令权限不足问题解决 问题 想必有同学在实战Shell的时候&#xff0c;遇到了&#xff1a; Permission denied: userroot, accessWRITE, inode"/":hadoop:supergroup:drwxr-xr-x 这种类似的问题。 问题的原因就是没有权限&#xff0c;那么为什么呢&#…

C# OpenCvSharp 实现Reinhard颜色迁移算法

C# OpenCvSharp 实现Reinhard颜色迁移算法 目录 效果 项目 代码 下载 效果 项目 Reinhard颜色迁移算法的步骤&#xff1a; 1、将参考图片和目标图片转换到LAB空间下 2、得到参考图片和目标图片的均值和标准差 3、对目标图片的每一个像素值&#xff0c;减去目标图像均值然后…

【数据结构(邓俊辉)学习笔记】二叉搜索树04——AVL树

文章目录 1.重平衡1.1 AVL BBST1.2 平衡因子1.3 适度平衡1.4 接口1.5 失衡 复衡 2. 插入2.1 单旋2.2 双旋2.3 实现 3. 删除3.1 单旋3.2 双旋3.3 实现 4. &#xff08;3 4&#xff09;-重构4.1 "34"重构4.2 "34"实现4.3 rotateAt4.4 综合评价 1.重平衡 1…

自动雪深传感器的类型

TH-XL2随着科技的飞速发展&#xff0c;气象监测技术也在不断进步。在降雪天气频发的冬季&#xff0c;雪深数据对于保障道路交通、农业生产和电力供应等具有至关重要的作用。自动雪深传感器作为气象监测的重要工具&#xff0c;其类型多样、功能各异&#xff0c;为气象数据的准确…

让GNSSRTK不再难【第17讲 RTK定位技术原理-站间单差浮点解--第1部分】

第17讲 RTK定位技术原理-站间单差浮点解 RTK技术其实就是在RTD技术的基础上增加载波观测值的使用。由于伪距的误差在分米量级&#xff0c;即使我们通过站间单差消除掉绝大部分的伪距误差&#xff0c;但受限于伪距的精度&#xff0c;我们也只能达到分米量级的定位水平。 但载波…

.NET 矩阵6月红队工具和资源集合

01外网入口打点 1.1 Sharp4WbemScripting 1.2 ASP4Eval 1.3 Sharp4Web.config 1.4 Sharp4AddScript 02安全防御绕过 2.1 Sharp4DefenderStop 03搭建代理隧道 3.1 Sharp4suo5 04混淆加密防护 4.1 Obfuscar混淆器 4.2 Sharp4BatchGuard 05安全技术文档 5.1 .NET 通过Junction Fol…

对原生textarea加上:当前输入字数/最大输入字数

源码: <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <title>Textarea Character Counter with Dragga…

OpenCV 张正友标定法(二)

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 在之前的博客OpenCV 张氏标定法中,我们没有考虑镜头畸变等因素,因此计算出的内参与外参均是理想情况下的数值,而如果我们考虑到镜头的畸变: 我们就需要考虑使用最小二乘法最小化像素坐标的重投影误差(上述所求…

Python中的数据结构

一.堆 堆的建立可以通过导入heapq库来实现 在Python中建立的是最小堆 即heap[k]<heap[2*k1]and heap[k]<heap[2*k2] 下面是一些 堆使用的方法 heapq.heappush([],加入的元素) heapq.heappop(heap)弹出最小的元素 heapq.nlargest(3,heap)返回最大的三个元素 hea…

无人机赋能自然资源调查

确权 业务挑战 由于测绘人员难以到达现场&#xff0c;确权区域大&#xff0c;传统人工测绘覆盖 不全面&#xff0c;信息不完整 传统测绘成果单一&#xff0c;现场核实难度高&#xff0c;确权采集信息不对称 无人机优势 数据采集效率是人工的10倍以上&#xff0c;可自动将…

【数学建模】 进化计算与群体智能

文章目录 进化计算与群体智能1. 遗传算法理论与实现1.1 遗传算法介绍1.2 遗传算法详细示例流程1) 初始种群2) 适应度评估3) 选择&#xff08;轮盘赌法&#xff09;4) 交叉5) 变异6) 迭代 1.3 遗传算法的实现1.4 scikit-opt 库实现遗传算法1.4.1 求解函数极值代码实现代码说明运…

智能制造 v3.13.14 发布,ERP、MES 更新

智能制造一体化管理系统 [SpringBoot2 - 快速开发平台]&#xff0c;适用于制造业、建筑业、汽车行业、互联网、教育、政府机关等机构的管理。包含文件在线操作、工作日志、多班次考勤、CRM、ERP 进销存、项目管理、EHR、拖拽式生成问卷、日程、笔记、工作计划、行政办公、薪资模…

C++20中的三向比较运算符(three-way comparison operator)

在C20中&#xff0c;引入了一个新的特性&#xff0c;即"三向比较运算符(three-way comparison operator)"&#xff0c;由于其外观&#xff0c;也被称为"宇宙飞船运算符(spaceship operator)"&#xff0c;其符号为<>。目的是简化比较对象的过程。这个…

八爪鱼现金流-032,给用户发邮件提示功能

每个月的 5 号、15 号、25 号的 17:30 工资日&#xff0c;给用户发送邮件&#xff0c;提示记账月报。 您也来记账一笔吧。 然后首页能看到趋势图。 八爪鱼现金流 八爪鱼