[谢志伟]
现阶段云计算数据中心采用的云计算架构,具有存储、网络资源耦合、多样虚拟化设备、模块化和自动化程度较高等特点。云数据中心相比传统数据中心能将资源虚拟化,按需分配。通过对各种资源用虚拟化技术进行虚拟化,实现资源交付的灵活性。
随着虚拟化技术的大规模使用,数据中心的计算密度呈现出大幅度的增加,甚至需要在不同的物理设备上实现虚拟机不限次数的迁移。显然,传统网络已经不能满足当前云计算业务环境下的功能需求。结合OpenFlow 技术的应用,通过把控制与转发分离,达到网络的可编程目的,可以使得网络和计算资源更加紧密的联系起来并实现有效的控制。
将基于OpenFlow 的虚拟交换机应用到云计算数据中心,从而实现数据中心(IDC)网络数据的快速转发,以及在技术上解决用户隔离等网络需求。
其中主要研究内容包括:
(1)分析OpenFlow 交换机中的流表匹配方案,优化流表匹配算法。
(2)VxLAN 技术应用于OpenFlow 交换机中,以解决数据中心的用户隔离等问题。
相关报文进入到OpenFlow 交换机的端口之后,OpenFlow 交换机将对数据进行匹配,同时根据结果来执行动作。对于多级流表,处理程序类似流水线型。如图1所示。
图1 流水线处理
在转发方案的技术实现上,以硬件实现可以达到较好的性能,但是不利于后期修改与新技术的优化,开发周期也相对较长。基于OpenFlow 的交换机方案,则可以较好的规避硬件方面存在的缺点,易于操作和修改。
2.2.1 使用硬件实现转发功能
在芯片中固化转化规则和流量表,只要接收到数据包,就在系统芯片中进行直接处理,执行流表匹配流程和指令集,实现数据转发性能的提高。但是其硬件具有功能无法动态变化和调整、开发难度大等缺点。
2.2.2 优化流表匹配算法
通常使用内核态和用户态来实现交换机的转发功能,在用户态下实现交换机的核心组件,将组件与控制器进行连接,并形成规则,将流表项向内核态下发。
将匹配域分为通配匹配和精确匹配,先采取精确匹配然后通配匹配,最终取得匹配结果。这种方式区别于常用的直接将匹配域进行Hash 匹配,对匹配流程作了初步的划分,方便进一步的优化工作。
以内核态和用户态这两种空间用以流表分布,内核态流表的特点是数量大、更新速度快和匹配快,用户态流表的处理能力相比较慢,但它可以实现网络的全局配置。OpenFlow 交换机也是在用户态空间下实现核心功能。流表匹配整体流程如图2 所示。
图2 流表匹配整体流程
3.1.1 VxLAN 网络模型
报文转发过程中,若目标虚拟机并非相同,则会转发到VTIP,并对其进行封装后送至核心网络。此后,再由VxLAN 隧道转发,当对端VTEP 接收到报文后[1],也将进行报文的解封装,同时送到目的地址。
VxLAN 网络模型如图3 所示。
图3 VxLAN 网络模型
3.1.2 VxLAN 隧道的创建
VxLAN 隧道是VxLAN 网络的核心,而vtep 则是VxLAN 隧道的核心。在vtep 中实现了对VxLAN 数据包的识别、封装和解封装,从而使用vtep 实现VxLAN 隧道。VTEP 可以在虚拟机、OVS、甚至物理交换机实现。OVS 通过软件实现功能扩展,以OVS 实现VTEP 更有利于VxLAN 的实现。
3.1.3 基于控制器的ARP 报文请求集中应答
OVS 与虚拟机进行连接后,根据需求形成若干虚拟端口,随着虚拟机中的ARP 报文发送,虚拟端口便会从虚拟机中记录ARP 与相关端口的映射关系,并在MAC 映射表中进行保存。为实现对所有ARP请求作出统一的响应,需要控制器利用OpenFlow 虚拟交换机进行集中管理,以解决因ARP请求广播消息泛滥带来的网络宽带压力问题。
3.1.4 数据报文转发
ARP 请求广播到目标主机,并接收返回信息,实现了VM1 虚拟机与VM2 虚拟机地址之间的的相互学习。如在ARP 学习MAC 的时候,OVS 同样能学习到相应的远端VTEP IP。由此,VM1 和VM2 之间就互相可以实现通信。
发送端:对数据报文进行一系列处理和封装,形成成VxLAN 报文,然后发送至VxLAN 隧道。
接收端:接收从VxLAN 隧道发来的报文,并检测一致性。
在相同OVS 下的两个虚拟机,数据转发流程也是一样的。
3.2.1 控制平面的实现
虚拟机网卡与OVS 端口之间的映射关系,控制着两者之间的连接,各OVS 端口具有单独的命名,与之相对的网卡地址,也是唯一的。当构建mac 地址映射的关系时,即可响应ARP 请求的mac 地址。
3.2.2 转发平面的实现
OVS 分别与eth 物理端口以及虚拟的Vnet 端口相连,为VxLAN 封装与解封装功能实现提供条件。通过VxLAN 端口的增加,从而更好地满足VTEP 功能要求。
3.2.3 报文转发流程
发送端先对VxLAN 中的数据包进行识别后,对数据包进行封装后发出,经过VxLAN 隧道的传输传送至接收端,并在接收端进行反向操作,从而实现了两主机之间相互通信的目的。
参照云计算数据中心特点,以集群模式,采用OpenFlow 控制器,建立控制器集群测试环境。对于非性能的测试:应用iperf 打流工具进行打流,应用tcpdump工具进行监听或Wireshark 进行抓包分析。对于性能的测试主要应用Spirent TestCenter(STC) 等工具来实现。
4.2.1 匹配域字段匹配测试
测试环境包括:OpenFlow 交换机、控制器集群及虚拟机CDS。OpenFlow 交换机连接控制器集群。虚拟机S向D 进行数据包发送,与此同时,由虚拟机C 对数据发送情况进行监听,确认能否接收到前者传送的数据。
以mac 地址测试为例,从虚拟机s 向虚拟机d 发送数据包,使用tcpdump 工具在虚拟机d 和c 的端口抓取数据包,结果只接受到虚拟机d 的端口和虚拟机d 上接收到来自虚拟机s 的数据包,而虚拟机c 并没有接收到数据,这就说明交换机对mac 地址字段的匹配过程是正确的。
4.2.2 匹配域覆盖测试
在流表在用户态项向核态下发时,并非以单一流表项进行匹配,而是生成全局流表。依据图4 拓扑图测试,将清空内核态流表后,持续从虚拟机S 转发udp 及tcp 报文到虚拟机D[2],并通过数据包抓取确认数据发送到虚拟机C。从而根据全局流表生成内核态流表的方法无误。
4.3.1 基本功能测试
建立VxLAN 功能测试,如图4 所示。
图4 VxLAN 测试网络拓扑图
构建VaLAN 网络,设置虚拟机S 和虚拟机D 为主测试机。网络搭建好后,通过抓包测试结论分析知道,具有一样VNI 的虚拟机是能够互相通信的,但不一样的VNI搭接的虚拟机是相互隔离的。
4.3.2 ARP 代答测试
通过控制器集中控制的优势研究ARP 代答技术,根据抓包情况能够得知,本系统中仅需要由控制器对ARP的请求进行集中应答,而无需进行ARP 广播,与设计思路相符。经过VxLAN 基功能和ARP 的检验测试,充分证明了相同的VxLAN 能够实现互通,不同的VxLAN 之间实现有效隔离,很好地阻止了VxLAN 广播在不同网络之间的互连。
4.4.1 普通报文流表匹配性能测试
通过以下网络拓扑图进行测试普通报文的转发性能。如图5 所示。
图5 性能测试网络拓扑图
以TCP 报文为例,将数据从虚拟机S 向D 进行转发,然后在s0 和s1 的端口进行抓包,并计算每个数据包时间差得出交换机中的数据时延,再发送一千个数据包进行测试。
通过测试结果得到结论如下。
(1)用户态匹配时间大于内核态;
(2)报文大小与数据在交换机中的匹配时延没有必然关系;
(3)内核态流表匹配时延比用户态稳定;
(4)第一用户态流表匹配时延较大;第二性能不稳定。
4.4.2 VxLAN 报文转发性能测试
在报文转发优化之前,VxLAN 端口进行识别,通过虚拟机的internal 端口,对报文进行封装与解封装。在优化之后,所有报文均由VxLAN 端口直接处理,无需通过internal 端口。优化前后的VxLAN 转发带宽,如表1 所示。
表1 优化前后VxLAN 转发测试结果
采取图5 的网络拓扑对优化前、后的VxLAN 报文的转发带宽测试结果如表1 所示,OpenFlow 虚拟交换机转发报文的性能得到了较大幅度的提高,并且为交换机带宽带来了13%~20%的提升,优化效果是明显的。
结合虚拟交换机在云计算数据中心的场景应用,通过OpenFlow 流表匹配以及流表转发等技术的研究,实现了VxLAN 报文转发流程优化,大大提升了数据包转发速度,有效解决了虚拟机部署受限以及多用户隔离问题,为今后的云计算数据中心建设以及云计算、虚拟化技术的应用提供了可行性的参考依据。