DPDK — OvS和 OvS-DPDK 的对比

风格不统一 提交于 2020-08-08 07:31:52

目录

参考文献

https://networkbuilders.intel.com/docs/open-vswitch-enables-sdn-and-nfv-transformation-paper.pdf

OvS 架构

在这里插入图片描述
openvswitch.ko :在内核态负责 “快速路径” 的数据转发。转发靠流表来完成,每一个流表都包含很多的匹配项(match fields)和相应的动作(actions)。

  • match fields:定义了能够标识一个数据包的头部字段。
  • actions:定义了能够对这个数据包操作的动作,比如:添加或去除 VLAN 标签、修改数据包的某个头部字段,以及控制数据包从端口的进出等等。

ovs-vswitchd:在用户态负责 “慢速路径” 的数据转发。

  • ofproto:OpenFlow 交换机实现。
  • netdev:和网络设备(包括物理的和虚拟的)交互的抽象接口层。
  • dpif:用户空间数据转发路径的实现。

OvS-DPDK 架构

在这里插入图片描述

上图中的深色模块就是引入 DPDK 的相关模块。

  • ofproto-dpif:实现了 ofproto 模块 API,直接操作 dpif 层。
  • dpif-netdev:用户空间中 “快速路径” 的实现,它实现了 dpif 模块 API,可以直接操作 netdev 设备,能够实现数据包在用户空间的快速处理,减少和内核空间的切换开销。
  • netdev-dpdk:应用 DPDK 库实现了 netdev 模块 API,提供了多种类型的接口,如下:
    • Physical ports(PMD):使用 vfio 或者 igb_uio 实现的端口。
    • vHost(dpdkvhostuser and dpdkvhostcuse):使用 librte_vhost 库实现的端口,用户可以基于这两种端口类型创建 vhost-user 和 vhost-cuse 端口来完成用户空间的数据转发,并且能够实现和 VM 的快速通信,只要提供 virtio 后端驱动 vhost 即可,virtio/vhost 被证实是用于 VM 通信的一套快速、安全、标准的接口。
    • dpdkr:使用 librte_ring 实现,用户可以基于这种端口类型创建 dpdk-ring 端口来完成用户空间的数据转发,它能够实现和 VM 之间快速的零拷贝通信(使用 IVSHMEM 或者其他进程间通信方式)。

OvS-DPDK 在 VNF 中的应用

  1. DPDK 在宿主机中提供 OvS 数据平面,同时在 VNF 中加速网元应用。这种方案由于采用纯软件的形式实现,可编程灵活,DPDK 的参与也使得性能大大提高,基本可以媲美纯硬件的形式。

在这里插入图片描述

  1. SR-IOV pNIC 直接将 VF 直通到 VNF 中,然后在 VNF 中使用 DPDK 进行加速。
    在这里插入图片描述
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!