服务器虚拟化 - 从感性上认识VXLAN(一)
任何技术的产生,都有其特定的时代背景与实际需求。自从云计算这个概念提出来以后,云计算凭借其系统利用率高,人力、管理成本低,灵活性和可扩展性强的方面已经表现出了优势。所以,越来越多的企业开始部署云桌面,云服务器了。而要部署云服务,就必须大量地部署虚拟机。简单来理解,云计算的基本技术模式就是虚拟化。
而服务器虚拟化的广泛部署,又极大增加了数据中心的计算密度。由于虚拟机是要基于物理设备上运行的,有时候虚拟机需要从一台物理设备迁移到另一台物理设备。虚拟机的迁移必须要满足这迁移前和迁移后的物理服务器在同一个网段,也就是同一个二层网络中。所以,为了让虚拟机能够在网络中不受限迁移,二层网络也必须做得足够大。但是有网络基础的人都知道,二层网络大了,不仅MAC地址的数量空前增加,而且二层环路带来的风险也会变大。于是,这又为数据中心网络带来了新的挑战:一个二层网络,必须支持上千台服务器和网络交换机稳定高效的运行。
Trill技术,只是一个基本的二层网络的基本技术,但是要解决MAC地址空间巨大、传统VLAN隔离能力有限的问题,VXLAN技术才应运而生。那么,VXLAN到底是什么东西?VXLAN和传统VLAN有什么联系和区别?VXLAN和SDN之间又有什么关系?我们在剩下的章节里面慢慢地说。
本文核心知识点
VXLAN的概念和封装格式;
VTEP、EV.P.N的概念;
集中式网关VXLAN和分布式网关VXLAN的规划设计
一、VXLAN是什么?
1.1
因为虚拟化引发的问题
要了解VXLAN是什么,首先就要简单理解一下“虚拟化”的概念。作为云计算的核心技术之一,虚拟化虚拟化凭借其大幅降低IT成本、提高业务部署灵活性、降低运维成本等优势已经得到越来越多的认可和部署。虚拟化技术,简单的理解,就是在一台服务器上,使用虚拟机软件(VMWare Workstation、VSPhere、Hyper-V等),可以运行多个逻辑上相互独立的操作系统。一台服务器上可以创建多个虚拟机(Virtual Machine,简称VM),而每个虚拟机都相当于是一台“独立”的服务器。
而虚拟机的大规模使用,给传统的网络带来的以下几个挑战:
A、虚拟规模受到网络设备表项规格限制
对于同网段主机的通信而言,报文通过查询MAC表进行二层转发。服务器虚拟化后,数据中心中VM的数量比原有的物理机发生了数量级的增长,伴随而来的便是虚拟机网卡MAC地址数量的空前增加。于是,交换机Hold不住了。
B、传统二层隔离的能力有限
VLAN作为二层隔离技术,在标准定义中VLAN ID的定义为12bit。也就是说可用的VLAN最多只有4094个。对于目前高度集中化的数据中心,尤其是公有云或其它大型虚拟化云计算服务,租户动辄上万,传统的VLAN已经力不从心。当然,可以选择增加汇聚层设备来划分更多的业务区域,但那也需要增加额外的设备的成本嘛。
C、虚拟机迁移只能在同网段进行
虚拟机迁移,顾名思义,就是将虚拟机从一个物理机迁移到另一个物理机,但是要求在迁移过程中业务不能中断。要做到这一点,需要保证虚拟机迁移前后,其IP地址、MAC地址等参数维持不变。这就决定了,虚拟机迁移必须发生在一个二层域中。只有在一个二层域中,才能是同网段通信嘛。
在数据中心内,虚拟机的迁移已经成了一种常态化操作,所以这也要求虚拟机在迁移的时候必须尽可能的不受限制,于是虚拟机都被要求划分到一个网段内。但是虚拟机的数量一多,对这个同网段二层域的规模就只能是越扩越大,于是,广播风暴的风险也越来越大。
通过堆叠、SVF、TRILL等技术构建物理上的大二层网络,可以将虚拟机迁移的范围扩大。但是,构建物理上的大二层,难免需要对原来的网络做大的改动,并且大二层网络的范围依然会受到种种条件的限制。
1.2
VXLAN的概念
同时要考虑到二层网络规模大,且有足够的表项和隔离技术,VXLAN在这种情况下就应运而生了。
VXLAN(Virtual eXtensible Local Area Network,虚拟扩展局域网)是IETF定义的NVO3标准技术之一,采用L2 Over L4(MAC-in-UDP)的报文封装模式,将二层报文用三层协议进行封装,可以实现二层网络在三层范围内(跨网段)进行扩展。VXLAN的功能是同时满足数据中心大二层迁移和多租户的需求。
了解一下VXLAN的网络模型及相关组件:
A、VTEP(VXLAN Tunnel Endpoint,VXLAN隧道端点)
VXLAN你可以简单理解在是在三层网络上覆盖的二层的“隧道”,那么这个VXLAN的隧道就肯定有端点或者说“边缘”。VXLAN网络的边缘就叫做VTEP,VTEP是一台设备,可以是独立的网络设备,也可以是虚拟机所在的服务器。
B、VNI(VXLAN Network Identifier,VXLAN网络标识符)
VNI类似于传统网络的VLAN ID,一个VNI代表一个租户。和VLAN ID一样,不同VNI的虚拟机之间不能相互通信。VXLAN报文封装时,给VNI分配了2的24次方-1个值,所以它完全可以支持海量租户的隔离。
C、VXLAN隧道
用来传输经过VXLAN封装的报文的,它是建立在两个VTEP之间的一条虚拟通道。
下图展示了VXLAN网络中,各个组件的模型:
1.3
VXLAN如何解决传统网络二层的问题的
前面说过,传统的网络,如果二层做得过大,广播风暴的风险是一个方面(可以用设备堆叠来根除,但是堆叠毕竟扩展性不太好),另外是大量的虚拟机在一个网段通信,会造成MAC地址表项暴增,还有就是传统VLAN ID只有4094个,隔离能力有限。那么,VXLAN网络又是用什么招数来解决这些问题的呢?
A、解决MAC地址表项暴增的问题
还记得前面说VXLAN是(MAC-in-UDP)吗?那就是,VTEP会将虚拟机VM发出的原始报文封装成一个新的UDP报文,并使用物理网络的IP和MAC地址作为外层头,对网络中的网络设备只表现为封装后的参数,网络中其他设备看不见VM发送的原始报文。
如果是服务器作为VTEP,则接入层设备不需要学习VM的MAC地址它只需要根据外层封装的报文头负责基本的三层转发就可以了。因此,虚拟机规模就不会受网络设备表项规格的限制了。当然,如果网络设备作为VTEP,它还是需要学习VM的MAC地址。但是,从对报文进行封装的角度来说,网络设备的性能还是要比服务器强很多。
B、VNI扩容和NOV3
VXLAN引入了类似VLAN ID的VNI,属于不同VNI的虚拟机之间不能直接进行二层通信。VNI一共有2的24次方-1个(16777215),这个数值比较大,可以满足云计算中海量租户隔离的问题。
而为了保证VM虚拟机迁移时业务不中断,所以VM迁移就必须保证迁移前和迁移后都是一个网段(在同一个二层域内通信),而这个二层域实际上是“凌驾于”三层IP网络的。也就是说,底层的网络还是按照三层或者堆叠来破坏掉路由环路,而实际上二层域是VTEP之间建立二层的VXLAN隧道。这就是在三层网络之上构建出一个二层网络,只要底层网络IP地址可达,这个虚拟的二层网络想做多大就做多大,这就是NOV3技术。
在IP网络中,对于底层的网络设备,看到的数据包是跨域三层网络的UDP报文,实际上这个UDP报文内部就包含了两个跨越VXLAN的虚拟机的报文。
1.4
VXLAN报文解析
在上一个小节中,我们已经给大家简单的看了一下VXLAN报文的格式:
VXLAN头部(VXLAN Header),总长度8字节(64位)包含字段如下:
UDP头(上图中红色标记,UDP Header),总长度8字节(64位),VXLAN头和原始以太帧一起作为UDP的数据。
外层IP包头(Outer IP Header,总长度20字节),这个包头的接口和普通IP包头就是一样的。只是在这个外层IP包头中,源IP地址( Outer Src. IP)为源VM所属VTEP的IP地址,目的IP地址( Outer Dst. IP)为目的VM所属VTEP的IP地址。
封装外层以太网MAC头(Outer MAC Header),和普通的以太网MAC头一致,源MAC地址( Src. MAC Addr.)为源VM所属VTEP的MAC地址,目的MAC地址( Dst. MAC Addr.)为到达目的VTEP的路径上下一跳设备的MAC地址。