介绍

VXLAN(Virtual eXtensible Local Area Network)采用MAC in UDP(User Datagram Protocol)封装方式,是NVO3(Network Virtualizaiton over Layer 3)中的一种网络虚拟化技术。它是云计算的核心技术之一,服务器虚拟化凭借其大幅降低IT成本、提高业务部署灵活性、降低运维成本等优势已经得到越来越多的认可和部署。

本文章介绍了其基本概念和接入方式

本文章是针对华为系列网络设备的学习笔记。

实际应用环境

VXLAN在数据中心的应用

  • 在数据中心中采用Spine-Leaf两层物理架构,结合VXLAN应用。
  • Spine节点执行路由转发,转发时不感知VXLAN。Leaf节点负责资源接入,完成VXLAN封装及解封装。
  • 数据中心的业务均由VXLAN承载。

Spine-Leaf说明:

  • Spine-Leaf架构是一种数据中心网络拓扑,它由两个交换层组成——脊柱和叶子。叶层由接入交换机组成,它们汇聚来自服务器的流量并直接连接到脊柱或网络核心。脊柱交换机以全网状拓扑相互连接所有叶子交换机1。
  • 这种架构与传统的网络设计不同,它提供了更好的可扩展性和性能。随着现代数据中心中云和容器化基础设施的普及,东西流量不断增加。东西流量从服务器到服务器横向移动。这种转变主要是由于现代应用程序的组件分布在更多的服务器或虚拟机上。对于东西流量,具有低延迟、优化的流量流是性能的关键,特别是对于时间敏感或数据密集型的应用程序。Spine-Leaf架构通过确保流量始终与下一个目的地相同数量的跳数,从而降低延迟并使其可预测来帮助实现这一点。

在园区网络中使用VXLAN实现“一网多用”

  • 通过引入虚拟化技术,在园区网络中基于一张物理网络创建多张虚拟网络(Virtual Network,VN)。不同的虚拟网络应用于不同的业务,例如办公、视讯、安防等。这样可以实现端点灵活性,将底层网络(物理拓扑)与叠加网络(虚拟拓扑)分离。您可以使用叠加,在园区与数据中心的端点之间提供第2层和第3层连接,同时保持一致的底层架构1。

运营商网络使用VXLAN实现二层VPN隧道

  • 可替代现有的二层VPN技术,如MPLS VPWS VPLS,VLAN等。
  • 基于MAC in UDP的VXLAN隧道,BGP做控制平面,对传输网络要求宽松;
  • 具备独立控制平面,采用BGP路由传递二层表项学习,可以减少各种不必要的二层泛洪传递及原生的表项更新机制;
  • 可通过ECMP提高链路利用率。

VXLAN报文格式

以上为标准VXLAN报文格式,华为CloudEngine S系列交换机的报文格式与其存在区别,针对其中的保留字段做了自定义。

VXLAN报文的封装格式为:在原始二层数据帧外添加8字节VXLAN头、8字节UDP头和20字节IP头。其中,UDP头的目的端口号为VXLAN UDP端口号(缺省为4789)

具体来说,原始报文在封装过程中先被添加一个VXLAN帧头,再被封装在UDP报头中,并使用承载网络的IP、MAC地址作为外层头进行封装。VXLAN帧头中包括VXLAN Flags(标记位,8比特,取值为00001000)、Group ID(用户组ID,16比特)、VNI(VXLAN网络标识,用于区分VXLAN段,由24比特组成,支持多达16M的租户)和Reserved(保留未用,分别由8比特和8比特组成,设置为0)等字段。

基本概念:NVE

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

基本概念:VTEP

VTEP(VXLAN Tunnel Endpoints,VXLAN隧道端点):

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

一对VTEP地址就对应着一条VXLAN隧道。

在源端封装报文后通过隧道向目的端VTEP发送封装报文,目的端VTEP对接收到的封装报文进行解封装。

通常情况下使用设备的Loopback接口地址作为VTEP地址。

两者区别

NVE(Network Virtualization Edge)是网络虚拟边缘节点,实现网络虚拟化功能的网络实体。它负责封装和解封装VXLAN报文。设备和服务器上的虚拟交换机VSwitch都可以作为NVE。

VTEP(VXLAN Tunnel Endpoints)是VXLAN隧道端点,封装在NVE中,用于VXLAN报文的封装和解封装。VTEP与物理网络相连,分配有物理网络的IP地址,该地址与虚拟网络无关。VXLAN报文中源IP地址为本节点的VTEP地址,VXLAN报文中目的IP地址为对端节点的VTEP地址,一对VTEP地址就对应着一个VXLAN隧道。

简单来说,NVE是一个更广泛的概念,它指实现网络虚拟化功能的网络实体。而VTEP是NVE中的一个组件,负责封装和解封装VXLAN报文。

基本概念:VNI与BD

VNI(VXLAN Network Identifier,VXLAN网络标识):

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

BD(Bridge Domain,桥域):

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

1
2
3
4
5
6
7
8
9
10
11
bridge-domain 10

vxlan vni 10 子网1

bridge-domain 20

vxlan vni 20 子网2


# BD绑定VNI

基本概念:VAP (虚拟接入点)

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网络的映射。

VLAN接入方式

将VLAN绑定到广播域BD后,加入该VLAN的接口即为VXLAN业务接入点,进入接口的报文由VXLAN隧道处理。

1
2
3
4
5
6
7
8
bridge-domain 10
vxlan vni 21
l2 binding vlan 30


# BD、VNI、VLAN之间的ID并不一定要相同,互相不绑定。但为了方便理解可以设置为一样。
# 华为交换机默认BD为0-4095,开启大规模模式后支持16000.

子接口接入方式(更好)

在二层子接口上,可以根据需要定义不同的流封装类型(类似于传统网络中不同的接口类型)。CloudEngine系列交换机目前支持的流封装类型有dot1q、untag、qinq和default四种类型:

  • dot1q:对于带有一层VLAN Tag的报文,该类型接口只接收与指定VLAN Tag匹配的报文;对于带有两层VLAN Tag的报文,该类型接口只接收外层VLAN Tag与指定VLAN Tag匹配的报文。
  • untag:该类型接口只接收不带VLAN Tag的报文。
  • qinq:该类型接口只接收带有指定两层VLAN Tag的报文。
  • default:允许接口接收所有报文,不区分报文中是否带VLAN Tag。不论是对原始报文进行VXLAN封装,还是解封装VXLAN报文,该类型接口都不会对原始报文进行任何VLAN Tag处理,包括添加、替换或剥离。

VXLAN隧道两端二层子接口的配置并不一定是完全对等的。正因为这样,才可能实现属于同一网段但是不同VLAN的两个VM通过VXLAN隧道进行通信。

说明:子接口的dot1q配置的VLAN ID与交换机本身的VLAN无关,也与其他BD无关。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
dot1qinterface 10GE1/0/1.1 mode l2   //创建二层子接口10GE1/0/1.1
encapsulation dot1q vid 10 //只允许携带VLAN Tag 10的报文进入VXLAN隧道
bridge-domain 10 //指定报文进入的是BD 10
#
interface 10GE1/0/1.2 mode l2 //创建二层子接口10GE1/0/1.2
encapsulation untag //只允许不携带VLAN Tag的报文进入VXLAN隧道
bridge-domain 20 //指定报文进入的是BD 20
#
interface 10GE1/0/1.2 mode l2 //创建二层子接口10GE1/0/1.2
encapsulation default //允许接口接收所有报文,透明转发。
bridge-domain 30 //指定报文进入的是BD 30

#

流封装和解封装

流封装类型 允许进入VXLAN隧道的报文类型 对VXLAN报文进行封装处理 对VXLAN报文进行解封装处理
dot1q 只允许携带指定的一层VLAN Tag的报文进入VXLAN隧道。 进行VXLAN封装时,会剥离原始报文的VLAN Tag。 进行VXLAN解封装后:若内层原始报文带有VLAN Tag,则先将该VLAN Tag替换为指定的VLAN Tag,再转发;若内层原始报文不带VLAN Tag,则先将其添加指定的VLAN Tag,再转发。
untag 只允许不携带VLAN Tag的报文进入VXLAN隧道。 进行VXLAN封装时,不对原始报文做处理,即不添加任何VLAN Tag。 进行VXLAN解封装后,若内层原始报文带有vlan tag,则先将该vlan tag 剥掉,再转发;若内层原始报文不带vlan tag,则直接转发
default 允许所有报文进入VXLAN隧道,不论报文是否携带VLAN Tag。 进行VXLAN封装时,不对原始报文做处理,包括添加、替换或剥离。 进行VXLAN解封装后,不对报文做处理,包括VLAN Tag的添加、替换或剥离。
qinq 只允许带有指定的两层VLAN Tag的报文进入VXLAN隧道。 进行VXLAN封装时,会剥离原始报文的所有VLAN Tag。 进行VXLAN解封装后:S5720HI:根据子接口上QinQ终结配置的ce-vid和pe-vid为报文添加两层VLAN Tag,再转发。其他形态:若报文不带VLAN Tag,则先根据子接口上QinQ终结配置的ce-vid和pe-vid为报文添加两层VLAN Tag,再转发;若报文带VLAN Tag,则先剥掉外层VLAN Tag再根据子接口上QinQ终结配置的ce-vid和pe-vid为报文添加两层VLAN Tag,再转发。

基本概念:Border、Edge

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

基本概念:VXLAN二层网关、三层网关

二层网关

  • 二层(L2)网关:实现流量进入VXLAN网络,也可用于同一VXLAN网络内终端的同子网通信。

三层网关

  • 三层(L3)网关:用于VXLAN网络内终端的跨子网通信以及终端对外部网络(非VXLAN网络)的访问。
  • 也用于跨VXLAN VNI访问

基本概念:VBDIF

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

基本概念:分布式与集中式网关

集中式网关

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

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

基本概念:分布式网关

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

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

参考

https://www.ruijie.com.cn/jszl/85104/

https://www.arubanetworks.com/faq/what-is-spine-leaf-architecture/

https://support.huawei.com/enterprise/zh/doc/EDOC1100087027#ZH-CN_TOPIC_0254803606