---
title: 网络加速特性
description: "随着数据中心的高速发展，网络传输带宽越来越高，数据中心的CPU资源越来越多地被基础设施所占用，使服务器的业务部署和管理变得更加复杂，有效CPU资源减少。DPU将基础设施任务从CPU转移至DPU处理，释放基础设施占用的CPU资源，使更多的服务器CPU资源可用于运行业务应用，提高服务器运行效率。网络加速功能负责将 OVS 部分卸载到DPU上运行，并支持流表硬件卸载能力，实现高速数据转发的同时，降低服务器侧的CPU占用率。"
url: https://www.hikunpeng.com/document/detail/zh/flexda/devguide/dpak_dev0004.html
sourcePath: /source/zh/flexda/devguide/dpak_dev0004.html
indexId: 6d5799e284a93fc7a9dd5d075be1f2a615758393855f7213fdd0afd58c60e77a44
---
# 网络加速特性

随着数据中心的高速发展，网络传输带宽越来越高，数据中心的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修改。
- hydra_info.h：用户自定义key、action结构体及枚举定义头文件。
- configinfo：用户自定义多表规模、表类型、表容量等配置文件。
- 用户态设备驱动：提供API接口给libdpak_ovs.so，实现网络加速的各项功能。
- 内核态设备驱动（Host侧）：实现Host侧网卡硬件的管理。
- 内核态设备驱动（DPU侧）：实现DPU侧网卡硬件的管理。
- bin：用户通过编程框架生成的固件，可自定义数据面pipeline，包括解析报文逻辑、匹配key、执行action逻辑。
- OVS：开源的虚拟交换软件，实现报文转发和流表学习，用户可使用自研的vSwitch，此处以开源OVS为例。用户需要根据标准的DPDK API接口进行vSwitch开发。
- DPDK：开源的数据面转发框架，支持用户态报文转发，通过CPU独占实现更高的软件转发效率。
