网络需求每年都在增长。现代网络预期能够提供高速、低延迟和高可扩展性。另一个常见需求是对网络段进行安全隔离。数据中心中的虚拟化也增加了对物理网络基础设施的需求,传统网络在潜在的网络问题下变得不合理。
网络虚拟化用于从底层物理网络中抽象出来并创建可扩展和逻辑网络。它的工作原理类似于对计算资源(如处理器、内存和存储)进行虚拟化,这使得可以在一个抽象层上使用这些资源。
什么是VXLAN?
虚拟可扩展局域网(VXLAN)是一种覆盖网络技术。它是一种封装协议,可以在底层的第3层网络上进行第2层(L2)连接的隧道传输(下面您可以找到一个包含七个OSI层的表)。覆盖网络是在任何现有网络之上创建的网络。底层网络是用于构建覆盖网络的现有网络的物理基础设施。
底层物理网络的组件包括物理硬件、电缆和网络协议。边界网关协议(BGP)和开放最短路径优先(OSPF)是用于第3层路由的广泛使用的协议。覆盖网络的常见示例包括不同类型的虚拟专用网络(VPN)、IPSec隧道和点对点网络。
VXLAN规范
VXLAN是由互联网工程任务组(IETF)的RFC 7348标准定义的。VXLAN协议的标准化规范是由思科、VMware和Arista共同开发的,尽管该标准不是特定厂商锁定的。VXLAN受到诸如VMware的虚拟化软件和各种厂商的路由器等硬件设备的支持。
理解VXLAN
VXLAN允许您创建具有多租户广播域和跨物理网络边界的高度可扩展的逻辑网络。这些逻辑网络是叠加网络。当您将虚拟网络与物理网络解耦时,尽管初始配置复杂,但可以简化大型网络的管理。使用VXLAN时,您可以重新设计叠加网络,而无需重新配置基础(物理)网络。可以使用两个或多个基础L3网络来部署虚拟叠加L2网络域。叶脉网络拓扑是在大型数据中心配置VXLAN叠加网络的良好解决方案。
VXLAN可以用在哪些地方?
VXLAN 最常见的用途是在部署软件定义数据中心时,在现有的物理和逻辑网络基础设施上创建虚拟网络。在软件定义数据中心(SDDC)中,对底层物理基础设施的抽象是为了虚拟化。VXLAN 和 VMware 虚拟化解决方案使您能够配置一个完全虚拟化的数据中心,其中网络和计算资源都是虚拟化的。为此目的有两个软件产品,分别是 VMware vSphere 和 VMware NSX。VMware 网络虚拟化解决方案有两个版本:NSX-V 和 NSX-T。
使用 VXLAN,运行在 VMware vSphere 中的虚拟机(VMs)可以连接到所需的逻辑网络,并且即使它们位于不同的 ESXi 主机、不同的集群甚至不同的数据中心,它们也可以相互通信。VXLAN 逻辑网络是从底层物理网络中抽象出来的,而 VMs 是从底层硬件中抽象出来的。
没有VXLAN,数据中心中运行虚拟机并连接到网络的情况下,对物理网络设备上的媒体访问控制(MAC)地址的操作需求更高。许多现代数据中心(包括具有虚拟化服务器的数据中心)使用叶脊网络拓扑和顶部交换机(ToR)连接方案。当虚拟机使用物理网络时,即使在第二层网络段进行虚拟网络(VLAN)隔离,ToR交换机(连接到机架服务器的交换机)也必须操作物理网络设备和虚拟机网络适配器的MAC地址以提供L2连接(而不是每个链路学习一个MAC地址)。MAC地址表变得过大,导致交换机超载,并且与非虚拟化环境相比,MAC地址表的容量需求显著增加。当表溢出时,交换机无法学习新的MAC地址,从而导致网络问题。
传统的VLAN、生成树协议(STP)和等成本多路径(ECMP)无法完全解决虚拟化数据中心中的所有网络问题。使用VXLAN的覆盖网络有助于解决此问题。VM的MAC地址仅在虚拟覆盖网络(VXLAN网络)中运行,并且不会发送到底层网络的物理交换机。此外,用于L2域的网络隔离和多租户环境中使用的VLAN提供了比VLAN更高的限制。让我们比较VXLAN与VLAN,看看两者之间的主要区别。
VXLAN vs VLAN比较
这些网络协议的主要区别在于VLAN使用第二层底层网络进行帧封装,而VXLAN则使用第三层进行此操作。覆盖网络的最大数量对于VXLAN更高。
VLAN已在IEEE 802.1Q标准中记录。由于12位段ID,支持的最大VLAN数量为4094:2^12=4096,VLAN ID为0-4095,有2个保留的VLAN ID(0和4095被保留)。如今,4094对于大型云服务提供商来说已经不够用了。使用VLAN标记时,以太网帧的大小从1518增加到1522字节。使用VLAN时,通过使用802.1Q标记,在L2上逻辑上将网络隔离开来。对物理网络设备的配置是为了进行网络分段。
VXLAN是VLAN的扩展模拟。VLAN和VXLAN之间的一些主要区别包括:
- VXLAN支持的虚拟网络的最大数量超过1600万(2^24=16,777,216),因为网络标识符的长度为24位。
- VXLAN和VLAN使用不同的封装技术。与VLAN不同,VXLAN不需要干线,并且不需要STP。当使用VXLAN网络标识符时,不需要使用VLAN标记。
- 不需要重新配置物理网络设备来进行VXLAN配置。
- 管理大型 L2 网络在大型分布式物理基础设施中变得困难。管理 L3 网络更加方便。VXLAN 叠加网络在现有 L3 网络上运行,使管理员能够避免传统 L2 网络的通常缺点,当 L2 网络通过使用 VXLAN 虚拟化并且不依赖于真实网络的物理边界时。
让我们回顾一下 7 层 OSI 模型,并在本博客文章的下一部分探讨 VXLAN 网络的工作原理。
7 层开放式系统互联模型 (OSI):
层 | 协议数据单元 | 协议示例 | |
7 | 应用层 | 数据 | HTTP,FTP,SSH,DNS |
6 | 表示层 | 数据 | SSL,IMAP |
5 | 会话层 | 数据 | 各种API,套接字 |
4 | 传输层 | 段,数据报 | TCP,UDP |
3 | 网络层 | 数据包 | IP,IPSec,ICMP,IGMP |
2 | 数据链路层 | 帧 | Ethernet,PPP,FDDI |
1 | 物理层 | 位 | 电线,光纤,无线 |
空间
VXLAN的工作原理?
VXLAN通过使用UDP数据报将内部的L2以太网帧封装到L3 IP数据包中,并将它们传输到现有的IP网络上。VXLAN封装类型被称为MAC-in-UDP,这是该技术的更精确的术语。
为什么使用UDP?为什么不直接将VXLAN帧封装到外部IP数据包中?L3网络对管理很方便,正如我们之前提到的,L3网络是VXLAN网络的底层网络(即覆盖网络)
VXLAN头部的长度为8字节,添加到原始以太网帧(内部帧)中。需要此VXLAN头部以允许另一侧的交换机识别该帧所属的VXLAN网络标识符(VNI)。大多数人可能希望将原始帧与VXLAN头部打包到IP数据包中,类似于通用路由封装(GRE)协议,它是L3隧道协议。
IP头部中有一个协议字段(见下图),用于定义打包到当前IP数据包中的更高层协议的数据(见上面的OSI模型表)。 GRE使用协议号47,该协议号定义在外部IP数据包的协议字段中。 VXLAN没有任何关联的协议号,直接将其打包到外部IP数据包中会导致问题。因此,VXLAN使用UDP进行打包,然后封装到IP数据包中。GPRS隧道协议(GTP)采用了类似的方法。 VXLAN的UDP端口号是4789。默认情况下应使用此VXLAN端口号作为目标UDP端口。
你可能在想:TCP 更可靠。为什么使用 UDP,而不是 TCP?TCP 有一个检查数据是否成功接收和传输的机制,而且如果数据丢失,数据会被重新发送。UDP 没有这些机制。如果数据由于连接问题丢失,这些数据就永远不会被重新发送。UDP 不像 TCP 那样使用会话和超时。
如果我们在 TCP 上使用 TCP,并且在底层会话中丢失了数据包,那么在覆盖层会话中也会丢失。在底层和覆盖层的 TCP 会话中启动数据包重传,这会导致网络性能下降。UDP 不启动点对点(P2P)会话这一事实在 VXLAN 封装的情况下是一个优势。请注意,TCP 连接不支持点对多点(P2MP)会话。
VNI 或 VNID 是 VXLAN 网络标识符。使用 24 位 VXLAN 网络标识符(也称为段标识符),它定义了支持的最大 VXLAN 网络数量。
VXLAN 隧道端点(VTEP) 是负责 L2 帧封装和解封的对象。VTEP 相当于服务聚合节点的提供者边缘(PE)路由器。VTEP 可以作为硬件网关或类似 VMware NSX(软件 VTEP)的虚拟化解决方案来实现。VXLAN 隧道在 VXLAN 隧道端点上开始和结束。
VM连接到相同的VXLAN段可以彼此通信。如果主机1(VM1)位于VTEP A后面,而主机2(VM2)位于VTEP B后面,则两个主机(VM)必须具有连接到相同VNI的网络接口(类似于主机在使用VLAN时必须使用相同的VLAN ID在其网络配置中)。现在是时候详细探讨VXLAN帧封装的结构了。在下面的图像中,您可以看到VXLAN封装帧的结构。显示了VXLAN网络中使用的外部以太网头部、外部IP头部、UDP头部、VXLAN头部和内部以太网帧。
VXLAN帧封装
现在是时候详细探讨VXLAN帧封装的结构了。在下面的图像中,您可以看到VXLAN封装帧的结构。显示了VXLAN网络中使用的外部以太网头部、外部IP头部、UDP头部、VXLAN头部和内部以太网帧。
外部以太网(MAC)头部
- 外部目的MAC是最近路由器附近的目标VTEP的MAC地址,或者如果VTEP位于路由器后面,则是路由器的MAC地址。
- 外部源MAC是源VTEP的MAC地址。
- VLAN类型(可选)是可选字段。 0x8100指示帧带有VLAN标记。
- 外部802.1 VLAN标记是可选字段,用于定义VLAN标记(在VXLAN网络中不需要)。
- 以太类型定义由此帧携带的数据包类型。 0x800指IPv4数据包。
外部IP头部
- IP头部其他数据包含版本、头部长度、服务类型和其他数据。
- IP协议。此字段用于定义IP数据包携带数据的底层网络协议。 0x11定义了UDP。
- 头部校验和用于仅确保IP头的数据完整性。
- 外部源IP是源VTEP的IP地址。
- 外部目标IP是目标VTEP的IP地址。
UDP头
- UDP源端口是由传输数据的VTEP设置的端口。
- UDP目标端口是由VXLAN IANA(4789)分配的端口。
- UDP长度是UDP头加上UDP数据的长度。
- UDP校验和应设置为0x0000以用于VXLAN。在这种情况下,接收VTEP避免校验和验证并避免在校验和不正确的情况下丢弃帧(如果丢弃帧,则封装的数据不会解封)。
VXLAN头
- VXLAN标志是不同的标志。I标志设置为1。其他7位现在被保留并必须设置为0。
- 保留字段 – 尚未使用且设置为0的保留字段。
- VNI是定义VNI的24位字段。
- 帧校验序列(FCS)是检测和控制错误的4字节字段。
VXLAN开销
- 让我们计算使用VXLAN时的开销:
8字节(VXLAN头)+ 8字节(UDP头)+ 20字节(IPv4头)+ 14字节(外部L2头)= 50字节(如果未在封装的内部帧中使用VLAN标记)。如果客户端使用VLAN标记,必须添加4字节,结果为54字节。
- 计算物理网络外框架的整体大小:
1514(内框架)+ 4(内VLAN标记)+ 50(VXLAN)+ 4(VXLAN传输VLAN标记)= 1572字节
- 如果使用IPv6,则IP头部大小增加20字节:
1514(内框架)+ 4(内VLAN标记)+ 70(IPv6 VXLAN)+ 4(VXLAN传输VLAN标记)= 1592字节
- IPv6可选择额外添加8字节。在这种情况下,外框架大小为1600字节。
- 您可以相应地更改交换机配置中的最大传输单元(MTU)值(例如增加50、54、70或74字节)。在这种情况下,需要支持巨型帧(大小超过标准1518字节的帧)。
建议在实际网络中使用虚拟VXLAN网络时增加帧大小。VMware建议在分布式虚拟交换上将MTU设置为1600字节或更高。
注意:以太网帧大小和MTU是帧的重要特征。 MTU指的是封装到以太网帧中的有效载荷的最大大小(IP数据包大小,在不使用巨型帧时的默认值为1500字节)。 以太网帧大小由有效载荷大小、以太网头部大小和FCS组成。
VXLAN数据传输示例
让我们考虑一个使用VMware VXLAN进行数据传输的网络示例,以更好地了解VXLAN的配置和工作原理。
在VMware vSphere环境中配置了VMware NSX的两个ESXi主机。VM1运行在第一个ESXi主机上,VM2运行在第二个ESXi主机上。两个VM的虚拟网络适配器连接到相同VNI为121的VXLAN网络。ESXi主机连接到物理网络的不同子网。
阶段1
VM1想要向VM2发送数据包。让我们探讨一下这种情况下会发生什么。
- VM1发送ARP数据包以请求IP地址为192.168.5.22的主机的MAC地址。
- 位于第一个ESXi主机上的VTEP1将ARP数据包封装到与VNI 121关联的虚拟网络的多播数据包中。
- 其他接收到多播数据包的VTEP将关联VTEP1-VM1添加到它们的VXLAN表中。
- VTEP2接收数据包,解封装该数据包,并在与VNI 121和适当的VXLAN网络关联的虚拟交换机端口组上进行广播。
- 位于其中一个端口组上的VM2接收ARP数据包并用自己的MAC地址(VM2的MAC地址)发送回复。
- 位于第二个ESXi主机上的VTEP2创建一个单播数据包,将VM2的ARP回复封装到此数据包中,并通过IP路由发送回VTEP1。
- VTEP1解封接收到的数据包并将解封的数据传递给VM1。
空格
阶段2
现在VM1知道了VM2的MAC地址,并且可以像上图所示进行VM之间的通信。
- VM1从其IP地址(192.168.5.21)发送IP数据包到VM2的IP地址(192.168.5.22)。
- VTEP1封装此数据包并添加以下标头:
- 具有VNI=121的VXLAN标头
- 带有VXLAN端口(UDP 4789)的标准UDP标头
- 包含VTEP目标IP地址和0x011值以定义用于封装的UDP协议的标准IP标头
- 具有下一个L2设备(下一跳)的MAC地址的标准MAC标头。在此示例中,这是具有MAC地址00:10:11:AE:33:A1的路由器接口。此路由器执行路由以将数据包从VTEP1传输到VTEP2。
- VTEP2接收数据包,因为VTEP2的MAC地址被定义为目标地址。
- VTEP2对数据包进行解封装,并检测到有VXLAN数据(VTEP2识别UDP端口4789,然后识别携带的VXLAN标头)。
- VTEP验证VM2是否被允许从VNI 121接收帧,并且连接到正确的端口组。
- 解封后,内部IP数据包被传输到与VNI 121端口组连接的VM2的虚拟网卡。
- VM2接收内部数据包,并将此数据包处理为任何常规IP数据包。
- 数据包以相同的方式从VM2传输到VM1。
多播支持
VXLAN覆盖网络在网络中支持单播、广播和组播通信模式。
- 单播通信用于在网络中两台主机之间传输数据。远程VTEPs通常是静态定义的。
- 广播通信是一种模式,其中一台主机向网络中所有主机发送数据。
- 组播通信是另一种一对多的通信类型。数据被发送到网络中选定的主机,而不是所有主机。使用组播的常见示例是在线视频流。Internet组管理协议(IGMP)用于组播通信。必须启用L2交换机上的IGMP监听和路由器(L3)上的IGMP查询器。
请注意,使用VXLAN进行组播流量的能力是由MAC-in-UDP封装方法(如上所述)导致的,它允许建立P2MP连接。在组播模式下,远程VTEPs可以自动找到,无需手动定义所有邻居。您可以定义与VNI关联的组播组,然后VTEP开始监听此组。其他VTEPs的行为类似,如果VNIs设置正确,它们也开始监听该组。
VMware VXLAN组件
VMware vSphere,配备ESXi主机、vCenter和NSX,是配置网络虚拟化并支持VXLAN所需的软件套件。让我们解释VMware VXLAN组件及其在部署VXLAN网络中的作用。
NSX-V是使用VMware vSphere在数据中心构建虚拟网络的解决方案。
在 VMware vSphere 中与 VMware NSX-V 一起使用分布式虚拟交换机(分布式 vSwitches 或 DVS),采用 VXLAN 进行网络抽象。不建议使用标准 vSwitch。
在虚拟机的虚拟接口控制器(NIC)和分布式 vSwitch 的逻辑端口之间执行 VXLAN 封装,为底层 L3 网络和虚拟机提供透明性。
NSX Edge 服务网关设备 充当 VXLAN 主机(虚拟机)和非-VXLAN 主机之间的网关。非-VXLAN 主机的示例包括互联网路由器、连接到物理网络的物理服务器等。边缘网关可以将 VXLAN 网络段的 VXLAN ID 转换,以允许非-VXLAN 主机与 VXLAN 网络中的主机或虚拟机进行通信。
NSX控制器,被称为中央控制平面,是一个分布式状态管理系统,用于控制覆盖传输隧道和虚拟网络,提供路由和逻辑交换功能。配置VXLAN网络必须使用NSX控制器,并且必须部署为一组高可用性的虚拟设备集群。VXLAN VIB软件包必须安装在ESXi主机上,以支持包括VTEP功能在内的VXLAN功能。
vmknic虚拟适配器承载控制流量,响应DHCP请求、ARP请求和组播加入请求。每个ESXi主机上的VTEP使用唯一的IP地址来承载创建的主机到主机隧道中的VXLAN流量。
虚拟交换机上的VXLAN端口组用于定义通过VTEP和ESXi主机的物理网络适配器传输输入和输出VXLAN流量的方式。
每个ESXi主机上的VTEP配置由vCloud网络和安全管理器管理,这是管理虚拟网络的中央位置。
虚拟交换机上的VXLAN端口组被配置为定义输入和输出VXLAN流量如何通过VTEP和ESXi主机的物理网络适配器传输。
每个ESXi主机上的VTEP配置是在<vCloud网络和安全管理器中管理的,这是管理虚拟网络的中心位置。
建议在部署带有VMware VXLAN支持的VMware NSX时,在VMware vSphere中的分布式虚拟交换机上规划NIC团队政策、故障转移设置和负载平衡。
VXLAN优缺点总结
通过覆盖VXLAN配置和VMware VXLAN实现的工作原理,让我们来看看VXLAN的优缺点。
VXLAN优点:
- 高度可扩展的网络:可以在多个数据中心之间延伸高数量的L2域。
- 支持组播、多租户和网络分割。
- 灵活性:不需要STP。L3网络用作底层网络。
- 第二层物理网络不会过载。连接VM到网络时,避免物理交换机上的MAC表溢出。
- 集中式网络管理。部署和配置后方便管理。
VXLAN缺点:
- 部署和初始VXLAN配置复杂。
- 用于管理覆盖网络的集中式控制器可能难以扩展。
- 由于封装技术的存在,头部存在开销。
- 底层网络必须支持多播以用于广播、未知单播和多播(BUM)流量。
结论
VXLAN是一种网络封装协议,适用于需要将大量虚拟机连接到网络的虚拟化环境。VXLAN允许您通过使用MAC-in-UDP封装技术,在现有的L3物理网络上构建虚拟L2网络。VXLAN网络虚拟化是在计算资源虚拟化之后部署软件定义数据中心的下一步。VMware NSX VXLAN支持VMware网络虚拟化,结合VMware vSphere是实现此目的的正确解决方案。这种组合被云服务提供商广泛使用,尤其是在大型数据中心中。
如果您在服务器房间或数据中心中使用VMware vSphere虚拟机,请选择像NAKIVO Backup & Replication这样全面的VMware ESX备份解决方案。NAKIVO的解决方案提供强大的功能,包括增量备份和应用程序感知备份。
NAKIVO Backup & Replication可以以多租户模式安装,提供备份服务和灾难恢复服务。MSP客户可以安全地备份其数据,而不会影响其他客户。
立即下载NAKIVO Backup & Replication的免费版本并尝试这个解决方案!