DPDK — OvS和 OvS-DPDK 的對比

目錄

參考文獻

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 進行加速。
    在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章