简介

VxLAN(Virtual eXtensible Local Area Network,虚拟可扩展局域网),是一种虚拟化隧道通信技术。它是一种 Overlay技术。

  • 隧道技术:类似于之前写过的GRE隧道技术,VxLAN也是一种隧道技术。相当于在底层物理网络上,借助UDP层构建逻辑网络
  • Overlay技术:覆盖网络技术,VxLAN是数据中心三大Overlay技术之一

Overlay技术简介

Overlay技术是一种网络架构上叠加的虚拟化技术模式,其大体框架是对基础网络不进行大规模修改的条件下,实现应用在网络上的承载,并能与其它网络业务分离,并且以基于IP的基础网络技术为主。Overlay技术是在现有的物理网络之上构建一个虚拟网络,上层应用只与虚拟网络相关。

在虚拟化云计算的场景下,一种普遍存在的需求是:虚拟机在数据中心任意网络位置之间都可以无感知迁移。但是由于物理方面的限制,这种前移在不借助一些技术的前提下是难以完成的。
容易理解的来说,Overlay技术是通过点到多点的隧道封装协议,完全忽略中间网络的结构和细节,把整个中间网络虚拟成一台“巨大无比的二层交换机”,常被称为所谓的“大二层”。从而,可以构建出自己的逻辑网络。

VxLAN

背景和需求

随着云上网络的发展,传统的物理意义上的网络会产生以下的问题:

  1. 虚拟机规模受MAC表大小限制。随着云上虚拟机数量的增多,MAC地址也呈现爆炸式的增长,但是交换机的内存总是有限的,无法无限扩展MAC表。
  2. 虚拟机需要能够进行迁移,且在迁移的过程中保证业务不中断。这就要求虚拟机迁移前后的IP地址、MAC地址、运行状态等状态不变。这就决定了虚拟机迁移必须发生在一个二层域中。例如在使用VLAN的传统网络拓扑中,如果要在VLAN 100部署虚拟机,那只能在支持VLAN 100的物理设备上部署。这就大大限制了迁移,例如无法在跨可用区或者跨Region的迁移。
  3. 传统网络的隔离能力有限,VLANID采用12比特进行区分,最多支持4000多个VLAN

VxLAN网络模型

vyos支持vxlan vxlan和overlay_网络协议


主要有以下几个成员:

  • VETP(VxLAN Tunnel Endpoints,VxLAN 隧道端点)
    VETP是VxLAN 网络的边缘设备,用来进行 VxLAN 报文的处理(封包和解包)。VTEP 可以是网络设备(比如交换机),也可以是一台机器(比如虚拟化集群中的宿主机)。
  • VNI(VxLAN Network Identifier,VxLAN 网络标识符)
    VNI 是每个VXLAN 段的标识,24位,也就是一千多万。也就是说使用 VxLAN 搭建的公有云可以理论上可以支撑千万级别的租户。
  • Tunnel(VxLAN 隧道)
    是建立的逻辑上的信道

上图可以看出,创建在原来的 IP 网络上,只要是能够通过 IP 相互通信,就能部署 VxLAN。在 VxLAN 网络的每个端点都有一个 VTEP 设备,负责 VxLAN 协议报文的解包和封包,也就是在虚拟报文上封装 VTEP 通信的报文头部。
这样在物理网络上就可以创建多个VxLAN网络,不同节点的虚拟机能够通过隧道直连,通过VNI对隧道进行标识。

报文结构

vyos支持vxlan vxlan和overlay_IP_02


图源:VXLAN 基础教程:VXLAN 协议原理介绍

内容

含义

Origin Frame

原始报文/内层报文

VxLAN Header

8 字节,其中最主要的是 VNID,占用 3 个字节(即 24 bit)

UDP Header

在 VXLAN 和原始二层帧的前面使用 8 字节 UDP 头部进行封装(MAC IN UDP),目的端口号缺省使用 4789,源端口按流随机分配(通过 MAC,IP,四层端口号进行 hash 操作)

Outer IP Header

宿主机的IP头部,20字节

Outer MAC Header

宿主机的MAC头部,14字节

VTEP

VTEP有自己的转发表,转发表通过泛洪和学习机制来维护,对于目标MAC地址在转发表中不存在的未知单播,广播流量,都会被泛洪给除源VTEP外所有的VTEP。
目标VTEP响应数据包后,源VTEP会从数据包中学习到MAC,VNI和VTEP的映射关系,并添加到转发表中,后续当再有数据包转发到这个MAC地址时,VTEP会从转发表中直接获取到目标VTEP地址,从而发送单播数据到目标VTEP。
一个VxLAN报文需要确定两个地址信息:目的虚拟机的 MAC 地址和目的VTEP的 IP 地址,如果VNI也是动态感知的,那么VTEP就需要一个三元组:

根据实现的不同,一般分为两种方式:

  • 多播:同一个VxLAN网络的VTEP加入同一个多播网络
  • 控制中心:一个集中式的组件控制所有上述信息

需求解决

  1. 虚拟机规模受MAC表大小限制
    既然无法无限扩展MAC表,就可以把大量VM的MAC地址隐藏起来。VTEP会将VM发出的原始报文封装成一个新的UDP报文,并使用物理网络的IP和MAC地址作为外层头,对网络中的其他设备只表现为封装后的参数。也就是说,网络中的其他设备看不到VM发送的原始报文。同样,VETP也不需要学习VM的MAC地址。
  2. 虚拟机需要能够进行迁移,且在迁移的过程中保证业务不中断
    为了保证业务不中断,VM的迁移就必须发生在同一个二层域内。而VxLAN正是在三层网络上,构建一个无限大的二层网络。只要IP可达,这个大二层网络想做多大做多大。
  3. 传统网络的隔离能力有限
    VNI由24位构成,理论上可以支撑千万租户

参考

深度好文:vxlan介绍VXLAN 基础教程:VXLAN 协议原理介绍vxlan 协议原理简介简析数据中心三大Overlay技术