网络加速特性
随着数据中心的高速发展,网络传输带宽越来越高,数据中心的CPU资源越来越多地被基础设施所占用,使服务器的业务部署和管理变得更加复杂,有效CPU资源减少。DPU将基础设施任务从CPU转移至DPU处理,释放基础设施占用的CPU资源,使更多的服务器CPU资源可用于运行业务应用,提高服务器运行效率。网络加速功能负责将OVS部分卸载到DPU上运行,并支持流表硬件卸载能力,实现高速数据转发的同时,降低服务器侧的CPU占用率。
网络加速SDK主要包含三类模块:vSwitch、libdpak_ovs加速库和设备驱动。
- vSwitch:包含OVS和DPDK组件,OVS使用标准的DPDK接口,实现网络数据包的转发。
- 网络加速使能库:主要为libdpak_ovs,将用户态网卡驱动封装成DPDK的标准驱动。
- 设备驱动:包含用户态网卡驱动和内核态网卡驱动,配合DPU的硬件引擎实现网络数据的快速转发,支持Bond硬件卸载、流表卸载、可编程等功能。
实现原理
DPU在Host侧呈现为多个VirtIO-net PF/VF,作为数据报文的转发接口。
DPU接收数据首包报文,将报文通过DPDK设备的upcall队列交由vSwitch软件处理,vSwitch执行upcall流程生成流表,并将生成的流表下发给libdpak_ovs,libdpak_ovs将软件流表通过用户态驱动卸载到硬件上。对于后续的相同报文,DPU卡可以直接根据卸载的精确流表进行转发,无需上送至vSwitch进行软件查表转发。
利用FlexDA开发编程框架,外部开发者可以基于已有的基础功能进行扩展,实现自定义的需求。
具体场景
图1 网络加速特性模块


- dpak-ovs-ctl:网络加速提供的运维命令行,将操作指令通过unix socket发送给libdpak_ovs.so,打印执行结果。
- libdpak_ovs.so:网络加速的驱动,基于SmartIO用户态驱动实现网络加速的各项功能,并遵从DPDK的驱动框架。
- OVS patch:网络加速基于开源OVS提供的补丁,作为用户使用的参考样例,用户可使用自研的vSwitch,而不是基于OVS修改。
- 用户态设备驱动:提供API接口给libdpak_ovs.so,实现网络加速的各项功能。
- 内核态设备驱动(Host侧):实现Host侧网卡硬件的管理。
- 内核态设备驱动(DPU侧):实现DPU侧网卡硬件的管理。
- OVS:开源的虚拟交换软件,实现报文转发和流表学习,用户可使用自研的vSwitch,此处以开源OVS为例。客户需要根据标准的DPDK API接口进行vSwitch开发。
- DPDK:开源的数据面转发框架,支持用户态报文转发,通过CPU独占实现更高的软件转发效率。
父主题: 关键特性