Zero-Copy Optimization for DPDK vhost-user Receiving

This tutorial will introduce the solution that offloads the vSwitch function into smart NICs and discuss the data transformation issue between vendor-specific interface and virtio-net. To fix the issue, a light-weight application based on DPDK is introduced to perform simple packet forwarding. To ensure high-performance and low latency, a zero-copy receiving approach is developed. NIC DMA packets received from the network are transmitted into guest memory directly. Th approach re-constructs the memory pool to make the zero-copy process transparent to both NIC and virtio-net drivers without modifying any NIC or virtio-net driver.
展开查看详情

1. 基于智能网卡的 vhost-user优化接收 方法 阿里云 言枢

2.议程 l 为什么需要智能网卡 l 智能网卡解决方案 l 接收端的数据通路 l 零拷贝优化方案 l 零拷贝的优势

3.议程 l 为什么需要智能网卡 l 智能网卡解决方案 l 接收端的数据通路 l 零拷贝优化方案 l 零拷贝的优势

4.为什么上智能网卡? 虚拟机 应用程序 virtio驱动 Guest virtio Host vHost-user vSwitch NIC-PMD 优点 • 接口通用 • 热迁移方便 缺点 • 性能不够好 • 占用主机资源多 (CPU/内存等)

5.为什么上智能网卡? 虚拟机 虚拟机 应用程序 应用程序 virtio驱动 VF驱动 Guest Guest virtio Host Host 透传 vHost-user SRIOV VF vSwitch HW NIC-PMD 网卡 优点 优点 • 接口通用 • 性能好 • 热迁移方便 • 不占用主机资源 缺点 缺点 • 性能不够好 • vSwitch不容易部署 • 占用主机资源多 • 厂商提供接口,没 (CPU/内存等) 有统一规范 • 很难做热迁移

6.为什么上智能网卡? 虚拟机 虚拟机 虚拟机 应用程序 应用程序 应用程序 virtio驱动 VF驱动 virtio驱动 Guest Guest Guest virtio Host Host 透传 Host 透传 vHost-user SRIOV VF SRIOV VF vSwitch HW HW NIC-PMD 网卡 vSwitch 智能网卡 优点 优点 优点 • 接口通用 • 性能好 • 性能好 • 热迁移方便 • 不占用主机资源 • 不占用主机资源 • 接口通用 缺点 缺点 • 热迁移方便 • 性能不够好 • vSwitch不容易部署 • 占用主机资源多 • 厂商提供接口,没 (CPU/内存等) 有统一规范 • 很难做热迁移

7.议程 l 为什么需要智能网卡 l 智能网卡解决方案 l 接收端的数据通路 l 零拷贝优化方案 l 零拷贝的优势

8.智能网卡解决方案 VM VM VM 应用程序 应用程序 应用程序 virtio驱动 virtio驱动 virtio驱动 virtio-net virtio-net virtio-net Guest Host 软转发程序 HW SRIOV SRIOV SRIOV VF VF VF ASIC NPU 智 PHY 能 快速路径 慢速路径 网 卡

9.议程 l 为什么需要智能网卡 l 智能网卡解决方案 l 接收端的数据通路 l 零拷贝优化方案 l 零拷贝的优势

10. 网卡接收队列 – DPDK初始化过程 l 内存中创建一个接收队 列和硬件交互 Memory Buffer ptr Pkt_type data_len desc desc desc desc …… Err_flags stat_flags RX ring 交换状态、 控制信息 Host PCIE device HW NIC

11. 网卡接收队列 – DPDK初始化过程 HPA : Host Physical Address Struct mbuf: a data structure l 内存中创建一个接收队 in DPDK to manage packet 列和硬件交互 Memory buffer, similar to skb in kernel l 内存中创建一个内存池 用于存储接收到的报文 Data buffer Struct mbuf HPA Data buffer Struct mbuf HPA Struct mbuf HPA Struct mbuf HPA Data buffer Struct mbuf HPA Data buffer Memory pool Buffer ptr Pkt_type data_len desc desc desc desc …… Err_flags stat_flags RX ring 交换状态、 控制信息 Host PCIE device HW NIC

12. 网卡接收队列 – DPDK初始化过程 HPA : Host Physical Address Struct mbuf: a data structure l 内存中创建一个接收队 in DPDK to manage packet 列和硬件交互 Memory buffer, similar to skb in kernel l 内存中创建一个内存池 用于存储接收到的报文 Data buffer l 初始化接受队列,从内 Struct mbuf Struct mbuf HPA HPA Data buffer 存池获取缓冲区,填充 Struct mbuf Struct mbuf HPA HPA Data buffer 到描述符 Struct mbuf HPA Data buffer Memory pool Buffer ptr dequeue Pkt_type data_len desc desc desc desc …… Err_flags stat_flags RX ring 交换状态、 控制信息 Host PCIE device HW NIC

13.VM接收报文流程 VM Data buffer Data buffer Memory VM VM VM Data buffer Guest virtio 应用程序 应用程序 应用程序 rx ring desc desc desc virtio驱动 virtio驱动 virtio驱动 virtio-net virtio-net virtio-net virtio-net Data buffer Data buffer Memory Data buffer 转发程序 Host VF desc desc desc rx ring VF VF VF VF 0 1 n n+1 HW PHY 智能网卡 vSwitch z

14.VM接收报文流程 VM Data buffer Data buffer Memory VM VM VM Data buffer Guest virtio 应用程序 应用程序 应用程序 rx ring desc desc desc virtio驱动 virtio驱动 virtio驱动 virtio-net virtio-net virtio-net virtio-net Data buffer Data buffer Memory Data buffer 转发程序 Host VF desc desc desc rx ring VF VF VF VF 0 1 n n+1 HW PHY 1. 网络收到报文 packet 智能网卡 vSwitch z

15.VM接收报文流程 VM Data buffer Data buffer Memory VM VM VM Data buffer Guest virtio 应用程序 应用程序 应用程序 rx ring desc desc desc virtio驱动 virtio驱动 virtio驱动 virtio-net virtio-net virtio-net virtio-net Data buffer Data buffer Memory Data buffer 转发程序 Host VF desc desc desc rx ring VF VF VF VF 0 1 n n+1 2. 完成软转发逻辑, HW PHY 1. 网络收到报文 packet 判断是发给VF0设备 智能网卡 vSwitch z

16.VM接收报文流程 VM Data buffer Data buffer Memory VM VM VM Data buffer Guest virtio 应用程序 应用程序 应用程序 rx ring desc desc desc virtio驱动 virtio驱动 virtio驱动 virtio-net virtio-net virtio-net virtio-net Data buffer Data buffer Memory packet 转发程序 Host VF desc desc desc rx ring 3. DMA到host 指定的内存 VF VF VF VF 0 1 n n+1 2. 完成软转发逻辑, HW PHY 1. 网络收到报文 packet 判断是发给VF0设备 智能网卡 vSwitch z

17.VM接收报文流程 VM Data buffer Data buffer Memory VM VM VM packet Guest 4. 从VF ring取出报文, virtio 应用程序 应用程序 应用程序 交给vhost-user,拷 rx ring desc desc desc virtio驱动 virtio驱动 virtio驱动 贝到前端RX ring指定 的内存 virtio-net virtio-net virtio-net virtio-net Data buffer Data buffer Memory packet 转发程序 Host VF desc desc desc rx ring 3. DMA到host 指定的内存 VF VF VF VF 0 1 n n+1 2. 完成软转发逻辑, HW PHY 1. 网络收到报文 packet 判断是发给VF0设备 智能网卡 vSwitch z

18.议程 l 为什么需要智能网卡 l 智能网卡解决方案 l 接收端的数据通路 l 零拷贝优化方案 l 零拷贝的优势

19. Ring同步模块 l 监控Guest ring和host ring的描述 符更新 Data buffer Guest OS l 同步Guest ring和Host ring描述符 Data buffer Data buffer l 使Host ring的描述符的数据缓冲 ……… 区指针指向Guest memory virtio l GPA to HPA转换 rx ring desc desc desc Host OS VF Addr=HPA1 Addr=HPA2 Addr=HPA3 RX ring desc desc desc

20.VM接收报文流程 – 零拷贝模式 VM Data buffer Data buffer Memory VM VM VM Data buffer Guest virtio Network app Network app Network app rx ring desc desc desc virtio-net driver virtio-net driver virtio-net driver virtio-net virtio-net virtio-net virtio-net Memory 转发程序 Host VF desc desc desc rx ring VF VF VF VF 0 1 n n+1 2. 完成软转发逻辑, HW 1. 网络收到报文 packet 判断是发给VF0设 备 vSwitch z

21.VM接收报文流程 – 零拷贝模式 VM Data buffer Data buffer Memory VM VM VM packet Guest virtio Network app Network app Network app rx ring desc desc desc virtio-net driver virtio-net driver virtio-net driver virtio-net virtio-net virtio-net virtio-net Memory 转发程序 Host VF desc desc desc rx ring 3. DMA到host 指定的内存 VF VF VF VF 0 1 n n+1 2. 完成软转发逻辑, HW 1. 网络收到报文 packet 判断是发给VF0设 备 vSwitch z

22.VM接收报文流程 – 零拷贝模式 VM Data buffer Data buffer Memory VM VM VM packet Guest virtio Network app Network app Network app rx ring desc desc desc virtio-net driver virtio-net driver virtio-net driver virtio-net virtio-net virtio-net virtio-net 4. ring同步模块更新 host描述符信息至 guest queue Memory 转发程序 Host VF desc desc desc rx ring 3. DMA到host 指定的内存 VF VF VF VF 0 1 n n+1 2. 完成软转发逻辑, HW 1. 网络收到报文 packet 判断是发给VF0设 备 vSwitch z

23.议程 l 为什么需要智能网卡 l 智能网卡解决方案 l 接收端的数据通路 l 零拷贝优化方案 l 零拷贝的优势

24.优势 l 性能 l 接收端减少了内存拷贝 l Footprint减少,避免cache-coherency l 总体性能提高了40% l 时延 l 减少拷贝带来的时间开销

25.