2020全球开源基础设施技术峰会分享 | 自研软硬一体化加速方案
2020年全球开源基础设施技术峰会及PTG讨论,以线上的形式于10月19-30日举行。
本次线上峰会议程包括100多个主题演讲和讨论环节,参会人员来自100多个国家的30多个开源社区。涉及的开源项目包括Airship、Ansible、Ceph、Docker、Kata Containers、Kubernetes、ONAP、OpenStack、Open vSwitch、OPNFV、StarlingX和Zuul。
中国移动云能力中心计算产品组杨亚军、戎胤、陶云祥携弹性裸金属软硬件协同方案《Enhancement and Optimization of computing, storage and network for bare metal with hardware offloading》亮相此次线上峰会,分别从弹性裸金属总体介绍、OVS全卸载方案、QoS硬件卸载实践三个角度向大会分享云能力中心在弹性裸金属和硬件网络卸载方面的经验和思考
目录
一、概述
弹性裸金属,是由自研的磐石服务器和HyperCard智能网卡组成,配合深度改造的大云系列软件,构建成为中国移动云能力中心自主设计研发的软硬一体化计算架构。在此架构中,裸金属服务器与虚拟机以及容器的关系将更加紧密,裸金属服务器的灵活性以及虚拟机和容器的性能会得到大幅提升。
二、弹性裸金属
弹性裸金属的总体研发路线对齐当前通用的虚拟化方案,其中磐石服务器是用于计算服务承载,提供“裸“级别的CPU/RAM能力服务。HyperCard智能网卡是实现一个硬化Hypervisor,用于补充裸金属场景下Hypervisor缺失的不足。
图1 弹性裸金属结构图
HyperCard主要作用是为用户模拟虚拟设备,与Qemu定义类似,用于承担IO设备虚拟化工作。在裸金属层面,HyperCard承担网络和存储设备的虚拟化。通过将HyperCard的虚拟化能力进行功能封装,使其中的管理能力暴露为标准API,做到类似Libvirt的对外控制接口开放。
HyperCard由一个FPGA卡和一个SoC组成,FPGA用于卸载功能实现,SoC用于慢路径和管理软件的实现,并解决传统裸金属场景下管理服务放置问题。
图2 HyperCard逻辑架构图
如上逻辑图所示,所有涉及到对接功能卸载的慢路径软件都运行在SoC中,以此方式,裸金属Host OS中不需要运行任何的云平台功能软件,便可以做到租户所见即所得的标准。
三、OVS全卸载方案
运行于SoC上的OVS-DPDK进程可以通过DPDK 提供的rte_flow作为卸载接口实现Datapath flow的卸载。完整的flow卸载流程如图3所示:
图3 慢路径封包处理/卸载流程
- 1. 租户的业务网络通讯包经过HyperCard;
- 2. HyperCard FPGA查找硬件表项,若无匹配的流规则,FPGA会将封包发送至SoC中,由SlowPath处理,并下发流规则;
- 3. 租户通讯包上送到SoC以及流表卸载的通道都由DPDK处理,这个过程全在通用处理器上处理;
- 4. 后续从网卡收进来同样的通讯包,就会匹配已卸载的FPGA流规则,并执行相应修改或转发动作。
四、QoS硬件卸载的实践
基于OVS的限速可以分为配置限速和OpenFlow限速。OVS本身并不具备QoS功能,其通过配置Linux kernel TC或者DPDK实现QoS,分别在interface表和port表设置出入方向的QoS规则。OpenFlow限速一般是指OVS借助datapath中的meter 表完成限速。
以OpenFlow形式限速的优点是功能强大,可以支持各种按需定制的匹配要求,缺点是性能和精度都较差。我们的硬件卸载加速方案,利用meter表属性,通过配置meter表,并将配置内容以OpenFlow/datapath flow的形式下发给硬件,实现硬件级的QoS性能,弥补OpenFlow限速的性能不足。
结语
通过此次线上大会分享,中国移动云能力中心将自研的软硬一体化架构最新成果作了一个总体的展示,分别从弹性裸金属、OVS全卸载方案、QoS硬件卸载实践三个维度向开源社区分享了我们在新技术的产品化实践过程中的一些想法和方向选择。未来,我们将基于此架构实现对产品基础设施架构的全面升级,将技术力量转换为优质产品,与此同时也会为开源社区贡献更多更好的实践案例和技术分享。
推荐阅读
《ARM SMMU原理与IOMMU技术(“VT-d” DMA、I/O虚拟化、内存虚拟化)》
《Linux虚拟化KVM-Qemu分析(二)之ARMv8虚拟化》
《Linux虚拟化KVM-Qemu分析(三)之KVM源码(1)》
《Linux虚拟化KVM-Qemu分析(四)之CPU虚拟化(2)》
《在CentOS上进行虚拟化:QEMU、Xen、KVM、LibVirt、oVirt》
《ARM SMMU原理与IOMMU技术(“VT-d” DMA、I/O虚拟化、内存虚拟化)》
《KVM Virtio: An I/O virtualization framework for Linux(Linux虚拟IO框架)》
《提升KVM异构虚拟机启动效率:透传(pass-through)、DMA映射(VFIO、PCI、IOMMU)、virtio-balloon、异步DMA映射、预处理》