引言
传统历史阶段,数据中心的网络以三层架构(核心、汇聚、接入)为基本标准。在具体落地的过程当中,随着技术的不断发展,不同的厂家有不同的组建方式,有的厂家在核心层增加虚拟化技术,实现物理设备上的核心层和汇聚层的虚拟化分离,使得整体网络架构偏于扁平;有的厂家在汇聚层和接入层增加虚拟化技术,实现物理设备上的汇聚层和接入层的虚拟化分离。但是无论如何改变,都没有改变以太网络传输的基本原则,都是需要靠网络地址、物理地址来进行控制转发。但是随着云计算的发展,数据中心的规模多数朝着规模大、超灵活的需求方向迈进。那么随着而来的虚拟计算跨区域迁移保护的困难,集群网络隔离规模的受限,数据中心整体网络资源的受限等问题。正是在这个历史背景下,以 vxlan为代表的Overlay网络粉墨登场。
1. Overlay 网络
1.1 Overlay 网络的基本架构组成
Overlay 网络技术是指在传统网络架构之上叠加的虚拟化技术模式 。也就是说它是依托于传统网络架构的前提条件下, 实现了应用与其虚拟网络的捆绑而忽略底层物理网络的传输模式及技术。要了解 Overlay 网络架构体系,首先我们需要知道它的组成架构及元素,要了解这些东西,我们必须从它与传统物理网络架构的差异入手来详细了解, 具体如 图 1.1 所示:
图 1.1 Overlay & 传统物理网络架构
如图 1.1所示,Overlay网络架构是依托于底层物理网络层建立的一层虚拟化网络,也就是说我们把传统的物理网络经过部分调整之后,通过逻辑抽象的方式建立了一套虚拟的传输通道。那么大家可能有一个问题:“在这张虚拟网络当中,我们如何完成数据传输?”
既然建立了虚拟网络通道,那么应用传输的数据报文就必须是以虚拟网络可以识别的数据报文为基础进行数据报文的发送和传输,同时必须遵照虚拟网络当中的通道控制标准来传输。但是报文的物理传输过程我们又不得不依靠传统物理网络来实现,这样的话就涉及到报文的封装和解封、逻辑通道的维护、数据的逻辑转发和物理转发等问题。这就涉及到Overlay 网络的三类核心元素:
边缘设备:与虚拟网络直接关联的网络设备,数据报文的封装/解封场所,同时它也是形成虚拟网络的物理节点,如图中所示的物理交换机(必须是支持Overlay协议的交换机)。
控制平面:框架当中的虚拟实体,负责虚拟网络传输当中的服务发现、地址通告和映射、虚拟网络通道建立和维护等,如图中虚拟层当中的控制流。
数据平面:框架当中的虚拟实体,主要负责数据报文在虚拟层的转发,如图中虚拟层的数据流。
1.2 Overlay 网络传输的基本规则
传统网络在数据传输的时候,遵循的基本规则就是网络的七层模型。也就是说数据需要经过源的封包和目的端的解包过程,封包的时候是从应用层信息逐步封装到物理层,解包的时候是从物理层分解到应用层。在物理网络环境当中的基本寻址规则是靠 IP地址信息和MAC地址信息来进行路由转发。那么在Overlay网络当中,它也是会遵循这一基本规则,但是区别在哪里呢?
图 1. 2 Overlay & 传统物理网络架构
以VXLAN为例,我们结合图1.2来看其基本的传输规则。首先我们来看Overlay网络的边缘设备ABC三个点,这三个点是支撑Overlay虚拟网络的核心设备,我们称之为VTEP。服务器的数据包在经过这些边缘设备的时候,会对数据包进行二次封装,会把发送端VTEP和目的端VTEP的地址或标识信息封装到数据包,然后通过VTEP的控制平面将数据在两个VTEP之间完成传输,然后再目的端的VTEP上将数据包再进行解封,最终发送到目的服务器上。这里大家可能会有几个问题:
●如果是L3的传输,这么做不是多此一举么?
●如果是L2的传输,源端VTEP如何知道目的MAC、IP对应的VTEP信息?
●VTEP之间的传输不也得依赖物理网络么?它是如何从源端传递到目的端的?
首先,针对第一个问题,如果是L3的传输,这么做确实有些多此一举,所以源端VTEP会判断是否是真实的L3传输,如果是的话,那么可以抛开VTEP信息,按照传统方式传输。
接着,针对第二个问题,所有VTEP节点所辖设备的MAC信息都会在VTEP上有保留,同时其他VTEP上的MAC地址映射信息也会相互同步过来,所以一旦获取数据包中目的地址信息,VTEP就可以判断目的地属于哪一个VTEP管辖范围,然后就可以通过控制器转发。
最后,从一个VTEP到另外VTEP的传输,完全是靠着VTEP本身的IP、MAC地址信息来进行传输。
可见,无论是L2还是L3的传输,均涉及到查表转发、报文的解封装和封装操作。从转发效率和执行性能来看,都只能在物理网络设备(Overlay边缘设备)上实现,并且传统设备无法支持,必须通过新的硬件形式来实现。
1.3 Overlay 网络的技术标准
目前在 Overlay 技术领域有如下三大技术路线正在讨论:
(1).VXLAN
VXLAN是将以太网报文封装在UDP传输层上的一种隧道转发模式。为了使VXLAN充分利用承载网络路由的均衡性,VXLAN通过将原始以太网数据头(MAC、IP、四层端口号等)的HASH值作为UDP的号;采用24比特标识L2网络分段标识,称为VNI(VXLAN Network Identifier);未知目的、广播、组播等网络流量均被封装为组播转发,物理网络要求支持任意源组播(ASM)。
(2)NVGRE
NVGRE是借助通用路由封装协议进行报文封装的一种隧道转发模式。它使用GRE头部的低24位作为租户网络标识符(TNI)。为了提供描述带宽利用率粒度的流,传输网络需要使用GRE头,但是这导致NVGRE不能兼容传统负载均衡,这是NVGRE与VXLAN相比最大的区别也是最大的不足。NVGRE不需要依赖泛洪和IP组播进行学习,而是以一种更灵活的方式进行广播,但是这需要依赖硬件。NVGRE支持减小数据包MTU以减小内部虚拟网络数据包大小。
(3) STT
STT 是借助 TCP 对报文封装的一种隧道转发模式 , 它改造了TCP的传输机制,是 一种 全新定义的无状态机制,将TCP各字段意义重新定义,无需三次握手建立TCP连接, 亦 称 之 为无状态TCP 。以太网数据封装在无状态TCP;采用64比特标识 L2 网络分段;通过将原始以太网数据头(MAC、IP、 L4 端口号等)HASH值作为无状态TCP的源端口号 进行网络负载均衡 。
这三种Overlay技术, 共同的技术模式都是将以太网报文进行改造封装承载到逻辑隧道层面进行转发,差异的技术特性在于封装和构造隧道的不同,而底层均是IP转发。VXLAN和STT对于现网设备对流量均衡要求较低,即负载链路负载分担适应性好,一般的网络设备都能对L2-L4的数据内容参数进行链路聚合或等价路由的流量均衡 。而NVGRE则需要网络设备对GRE扩展头感知并对flow ID进行哈希计算 ,需要硬件支持 ;以下是三种 Overlay技术标准的具体差异描述。
表 1. 1 Overlay 技术标准对比
2. Overlay 网络解决了什么问题?
通过以上分析,我们基本认识了 Overlay网络的基本架构和其基本的传输规则。那么大家一定非常想知道这种技术为什么会在云计算这个大的技术背景之下粉墨登场?它究竟能解决我们这个特定的历史时期下的什么特定问题呢?其实总结起来有三个,都跟大规模的云数据中心应用场景有关系。
2.1 Overlay 网络如何解决L2的空间局限性
虽然很多传统行业仍然在使用物理机部署服务,但是越来越多的计算任务已经跑在虚拟机以及容器上上,Kuberentes 目前已经是容器编排领域的事实标准了。因为日常的更新维护以及突发的故障,集群中的大规模虚拟机及容器迁移是比较常见的事情。
当虚拟机所在的宿主机因为维护或者其他原因宕机时,当前实例就需要迁移到其他的宿主机上,为了保证业务不中断,我们需要保证迁移过程中的IP 地址不变,因为 Overlay 是在网络层实现L2网络,所以多个物理机之间只要网络层可达就能组建虚拟的局域网,虚拟机或者容器迁移后仍然处于同一个二层网络,也就不需要改变 IP地址,上千台物理机组成的大集群使得集群内的资源调度变得更加容易,我们可以通过虚拟机迁移来提高资源的利用率、容忍虚拟机的错误并提高节点的可移植性。
图 2 . 1 Overlay 网络架构下的虚拟机迁移
如上图所示,迁移后的虚拟机与其他的虚拟机虽然位于不同的数据中心,但是由于上述两个数据中心之间可以通过IP 协议连通,所以迁移后的虚拟机仍然可以通过 Overlay 网络与原集群的虚拟机组成L2网络,对于应用来讲,它对外发布的地址没有变化,对于虚拟机来讲,它只知道远方的主机与本地的主机是可以组成L2互通局域网的,是可以做VMotion的。但是,真正的数据迁移确在底层经历了传统网络设备的L3传输。无论底层做了什么样的传输转换,只要上层协议达到应用要求的迁移条件即可。这样跨地域的L2资源迁移就不再成为不可解决的难题了。没有这种技术的支撑,恐怕就算是裸光纤连接也解决不了这个问题,毕竟光纤的距离是受限的。
2.2 Overlay 网络如何解决网络规模受限
Kuberentes 官方支持的最大集群为 5000节点,通常每个节点上会有很多容器,所以整个集群的资源规模可以达到几万甚至几十万。当某个容器向集群中发送 ARP 请求,集群中的全部容器都会收到ARP请求,这时会带来极高的网络负载,传统网络技术是无法容忍这种规模的网络请求。在使用 VxLAN 搭建的 Overlay 网络中,网络会将发送的数据重新封装成 IP数据包,这样网络只需要知道不同 VTEP 的 MAC 地址,由此可以将 MAC 地址表项中的几十万条数据降低到几千条,ARP 请求也只会在集群中的 VTEP 之间扩散,远端的 VTEP 将数据拆包后也仅会在本地广播,不会影响其他的 VTEP,虽然这对于集群中的网络设备仍然有较高的要求,但是已经极大地降低了核心网络设备的压力。
另外, 在 L2 网络环境下,数据流均需要通过明确的网络寻址以保证准确到达目的地,因此网络设备的MAC地址表,成为决定了云计算环境下虚拟机的规模的上限,并且因为表项并非百分之百的有效性,使得可用的虚机数量进一步降低,特别是对于低成本的接入设备而言,因其表项一般规格较小,限制了整个云计算数据中心的虚拟机数量 。使用了 Overlay技术之后,这个MAC地址表的存储转移到了VTEP设备之上, 虽然核心或网关设备的MAC与ARP规格会随着虚拟机增长也面临挑战,但对于此层次设备能力而言,大规格是不可避免的业务支撑要求。减小接入设备规格压力的做法可以是分离网关能力,采用多个网关来分担虚机的终结和承载。
2.3 Overlay 网络如何解决网络隔离问题
大规模的数据中心往往都会对外提供云计算服务,同一个物理集群可能会被拆分成多个小块分配给不同的租户,因为 L2 网络的数据帧可能会进行广播,所以出于安全的考虑这些不同的租户之间需要进行网络隔离,避免租户之间的流量互相影响甚至恶意攻击。当前的主流网络隔离技术为VLAN,在大规模虚拟化环境部署会有两大限制:
首先, VLAN数量在标准定义中只有12个比特单位,即可用的数量为4000个左右,这样的数量级对于公有云或大型虚拟化云计算应用而言微不足道 。其次, VLAN技术当前为静态配置型技术(只有EVB/VEPA的802.1Qbg技术可以在接入层动态部署VLAN,但也主要是在交换机接主机的端口为常规部署,上行口依然为所有VLAN配置通过),这样使得整个数据中心的网络几乎为所有VLAN被允许通过,导致未知目的广播数据会在整网泛滥,无节制消耗网络交换能力与带宽。
如果采用了 Overlay网络技术,那么就会避免上述问题,以VXLAN为例:
首先,VxLAN 会使用 24 比特的 VNI 表示虚拟网络个数,总共可以表示 16,777,216 个虚拟网络,远远超过了VLAN的4000个,这个数量足以满足今天云计算数据中心的大规模集群要求。其次,VXLAN在L2传输的时候是在VTEP节点把数据进行封装,使得更多的L2广播在VTEP节点处转化为有目的的L3传输,从而避免了无节制的网络资源消耗。既满足了大规模集群网络隔离问题,同时也提高了这种情况下的网络传输安全性。
3. Overlay 网络技术的缺陷
任何事物都不可能是完美的, Overlay技术也是一样 。
我们从 Overlay技术的原理基本可以判断,Overlay网络与传统网络相比而言,性能可能会是它的问题所在,因为Overlay网络无论是哪一种技术标准,都会经历数据包再次封装和再次解封的问题,这个无疑会给数据传输带来性能上的延时。图3.1是我们截取到的试验结果:
图 3 . 1 VXLAN 性能对比
上述图中表示的是在 VMware环境当中,默认网络配置下的虚拟机和VXLAN配置下的虚拟机传输指标的对比情况, 从图中试验结果 判断,在VXLAN环境下,无论虚拟机如何变化,其传输的吞吐量都会低于我们正常网络配置下的指标。
在我们的企业IT环境当中,各种类型的应用都会存在,有的对网络性能要求非常高,例如金融行业的交易型数据库集群,不同集群节点之间的数据交互量从数据大小和传输频率等各方面都超乎一般的应用,尤其是锁信息、数据缓存块、心跳信息都是直接影响数据库运行的关键因素。因此我们在应用VXLAN的时候也需要考虑到它的不足之处,选择合适的应用场景。
4. 总结展望
通过本文第 1、2节的分析 , 我们了解到 Overlay网络技术的基本框架、数据传输原理以及基本的技术标准,同时也了解了Overlay网络技术流行的根本原因和必然趋势 。通过第 3节的分析,我们也了解到Overlay技术本身的一些缺陷。那么相信在应用选择的过程当中,大家可能会更准确把握。但是随着技术的发展以及企业的应用经验丰富,如何通过改进的方式或者是架构的调整,避免其必然的劣势,发挥其天然的优势是我们后续需要讨论的问题,也是我们希望看到的内容。