作者:中国移动云能力中心——曾宏宽
概要:探讨云计算网络主流开源虚拟交换机的濱进,存在的问题、网络加速实践等
在云数据中心中,物理服务器虚拟化通过hypervisor虚拟为多台逻辑计算机对外提供服务,这些逻辑计算机又被称为虚拟机(VM),虚拟机在物理服务器上的二三层网络转发逻辑一般由软件交换机实现。开源云计算管理平台OpenStack中对虚拟网络的管理通过Neutron组件实现,对外提供云计算的网络虚拟化技术,为OpenStack其他服务提供网络连接服务。Neutron组件ML2 driver支持最常用的两种开源虚拟化交换机Linux Bridge、OpenvSwitch。
Linux Bridge
Linux Bridge 是工作在内核态的软件化二层交换机,基于网络报文入端口+网络报文源MAC学习机制构建二层转发表项。在网络报文在Bridge转发过程中根据目的MAC查询转发表项,命中转发表项则通过转发表项相应的端口将网络报文发出,否则在除网络报文入端口外的其它端口洪泛转发网络报文。
在物理服务器虚拟化早期,Linux通过Bridge及虚拟网络设备技术,实现虚机虚拟网卡二层转发功能,经过十几年的发展成熟稳定。Neutron组件ML2 driver默认采用Linux Bridge, 依赖Linux ebtables+iptables netfilter包过滤框架实现虚拟防火墙、SNAT/DNAT、虚拟机安全组功能。但存在一定的局限性难以做到类似OpenvSwitch基于SDN控制器/Openflow流表对网络报文转发灵活编程可控。
OpenvSwitch
2006年,SDN诞生于美国GENI项目资助的斯坦福大学Clean Slate课题,斯坦福大学Nick McKeown教授为首的研究团队提出了Openflow的概念用于校园网络的试验创新,后续基于Openflow给网络带来可编程的特性,SDN的概念应运而生。而Martin Casado被称为软件定义网络之父,OpenFlow的发明人、Nicira的创始人、硅谷最炙手可热的“40 under 40”之一,他提交的虚拟交换机OpenvSwitch的第一个Commit揭开软件定义网络时代。
OpenvSwitch是一个高质量的、多层虚拟交换机,使用开源Apache2.0许可协议,由 Nicira Networks开发,主要实现代码为可移植的C代码。它的目的是让大规模网络自动化可以通过编程扩展, 使庞大的网络自动化(配置、管理、维护),同时支持标准的管理接口和协议。OpenvSwitch支持多种Linux 虚拟化技术,包括Xen/XenServer, KVM和VirtualBox。
OpenFlow 是 SDN(Software Defined Network,软件定义网络)架构中定义的一个控制平面与数据平面之间的通信标准,是SDN/OpenvSwitch控制、转发网络报文的基础。Openflow基于match+action实现的流表/流表规则在OpenvSwitch中的网络报文处理示意。
Openflow Switch
OpenvSwitch网络报文处理
OpenvSwitch数据面转发支持两种形态:kernel datapath、 DPDK datapath
1)kernel datapath
通过Linux/FreeBSD内核网络驱动、软硬件中断通知机制实现网络报文收发,并移交至内核OpenvSwitch模块处理。整个网络报文接收过程涉及一系列的软硬件中断抢占处理、内存拷贝、系统调用(用户态/内核上下文切换)、应用程序进程切换等CPU处理资源开销,对OVS网络处理能力/时延有一定影响。
2) DPDK datapath
DPDK采用Kernel Bypass方式实现, 在用户空间实现了一套数据平面进行网络报文的收发与处理。OVS-DPDK基于大页内存、独占CPU核绑定、用户态轮询机制的机制实现网络报文收发,从而避免转发面操作系统内核/用户态的网络报文拷贝、线程调度、系统调用、中断等CPU处理资源损耗,以达到极大提升OVS网络转发性能目的。
硬件VDPA OVS网络加速
云上业务丰富多样,新型应用对网络吞吐/时延/转发效率又有新的要求,虚拟化计算节点完全依赖软件OVS转发网络流量暴露出来的问题尤其明显。为满足高带宽、低时延的业务部署需求,软硬件结合的智能网卡网络加速技术将逐渐成为主流。
软件OVS两种datapath形态:kernel/DPDK OVS
软件OVS数据面存在的问题
1)软件OVS网络转发效率较低,OVS网络报文流表查询、VXLAN拆封/解封效率受限于虚拟化服务器CPU指令运行速度。
2)基于内核态的软件OVS网络报文转发存在多次用户态/内核态上下文切换、内存拷贝问题,影响网络吞性能。
3)基于DPDK的软件OVS转发面需独占虚拟化服务器处理器资源,整机转发性能受占用的CPU处理器资源影响且虚拟化服务器CPU处理器资源利用率较低。
4)网络丢包、延时、抖动受软件OVS所能支持的并发流表规格数影响,难以满足低延时、高带宽的网络性能要求。
智能网卡硬件VDPA OVS网络加速
针对软件OVS转发面存在的问题,网络产品团队通过优化基于内核态 datapath转发的OVS与智能网卡硬件VDPA(VHOST DATA PATH ACCELERATION)相结合的方式实现OVS网络转发性能加速,OVS datapath流表卸载通过Linux 社区成熟的TC(Traffic Control)Flower接口下发至智能网卡。
OVS流表未卸载至智能网卡前,网络报文经内核态datapath转发面转至位于用户态的SDN/OVS控制面查询 openflow流表处理转发网络报文,在生成卸载流表后通过TC Flower接口下发至智能网卡内部。
OVS流表卸载至智能网卡后,后续网络报文命中智能网卡内部流表转发规则,直接由智能网卡处理,实现网络转发性能加速。
智能网卡硬件VDPA支持
1)虚机热迁移,实现上层应用无感知。
2)VXLAN封装/解封装、CT等高级功能卸载,提高网络转发效率。
3)并发流表/复杂规则情况下对己卸载网络流量,转发性能无影响。
4)释放DPDK-OVS占用虚拟化服务器CPU处理器资源,提升虚拟化服务器CPU资源利用率。
5)硬件VDPA提供virtio数据通道加速,避免用户态/内核态上下文切换与内存拷贝,极大提升网络转发性能。
三种形态kernel/DPDK/VDPA OVS性能对比
基于智能网卡硬件VDPA OVS网络加速的云主机己在移动云上线, 同时移动云网络产品团队将持续优化改进网络转发性能,不断提升网络服务质量,改善用户体验,以满足不同业务系统网络性能要求。
【作者介绍】
曾宏宽,中国移动苏州研发中心工程师,负责SDN/智能网卡相关研发工作,专注虚拟化网元相关网络性能优化。
参考说明
《OpenStack设计与实现》
《openflow-spec-v1.3.1》
《The Design and Implementation of Open vSwitch》
云计算技术背后的天才程序员:Martin Casado
云计算技术背后的天才程序员:Martin Casado-云计算-火龙果软件工程
OpenVSwitch 硬件加速浅谈
OpenVSwitch 硬件加速浅谈 | SDNLAB | 专注网络创新技术
virtio技术的演进和发展
https://blog.csdn.net/21cnbao/article/details/117094698
Openstack Neutron:二层技术和实现 - 叶伟 - 博客园
Openvswitch工作原理
openvswitch的原理和常用命令 - wanstack - 博客园
Open vSwitch系列
Open vSwitch系列之一 Open vSwitch诞生 - 金色旭光 - 博客园
版权声明 (原创):本文内容由移动云用户自发贡献,版权归原作者所有,移动云开发者社区不拥有其著作权,亦不承担相应法律责任。如果您发现本社区有涉嫌抄袭的内容,可填写举报信息,一经查实,本社区将立刻删除涉嫌侵权内容。