OVS 和 OVS-DPDK 對比

本文參考下面這篇論文,只挑取了其中關於 OVS 和 OVS-DPDK 對比的部分進行講解,更多內容,大家有興趣可以看論文:
https://networkbuilders.intel.com/docs/open-vswitch-enables-sdn-and-nfv-transformation-paper.pdf

OVS 目前有兩種比較突出的架構,一種是原生的 OVS 架構(使用 kernel 作爲 datapath),一種是基於 DPDK 的架構(使用用戶空間作爲 datapath)。

原生 OVS

原生 OVS 架構如下所示,主要包含兩個組件:

  • openvswitch.ko :在內核態負責快速路徑的數據轉發。轉發靠流表來完成,每一個流表都包含很多的匹配項(match fields)和相應的動作(actions)

    • match fields : 定義了能夠標識一個數據包的頭部字段

    • actions : 定義了能夠對這個數據包操作的動作,比如添加或去除 VLAN 標籤、修改數據包的某個頭部字段,以及控制數據包從端口的進出等等。

  • ovs-vswitchd :在用戶態負責慢速路徑的數據轉發。

    • ofproto: 實現 OpenFlow 交換機

    • netdev: 和網絡設備(包括物理的和虛擬的)交互的抽象接口層

    • dpif: 用戶空間數據轉發路徑的實現

OVS-DPDK

基於 DPDK 的 OVS 架構如下所示,其中深色部分的模塊就是引入 DPDK 相關的模塊。

  • dpif-netdev : 用戶空間中快速路徑的實現,它實現了 dpif  模塊 API,可以直接操作 netdev 設備,能夠實現數據包在用戶空間的快速處理,減少和內核空間的切換開銷。

  • ofproto-dpif : 實現了 ofproto 模塊 API,直接操作 dpif 層。

  • netdev-dpdk : 使用 DPDK 庫實現了 netdev 模塊 API,提供了多種類型的接口,如下:

    • Physical ports(PMDs) : 使用 vfio 或者 igb_uio 實現的端口

    • dpdkvhostuser and dpdkvhostcuse: 使用 librte_vhost 庫實現的端口,用戶可以基於這兩種端口類型創建 vhost-uservhost-cuse 端口來完成用戶空間的數據轉發,並且能夠實現和 VM 的快速通信,只要提供 virtio 後端驅動 vhost 即可,virtio/vhost 被證實是用於 VM 通信的一套快速、安全、標準的接口。

    • dpdkr: 使用 librte_ring 實現,用戶可以基於這種端口類型創建 dpdk-ring端口來完成用戶空間的數據轉發,它能夠實現和 VM 之間快速的零拷貝通信(使用 IVSHMEM 或者其他進程間通信方式)

兩種架構性能對比

那麼這兩種架構哪種性能更佳呢,不用說,當然是 OVS-DPDK,我們用數據說話,看下下面這份 Intel 做的性能報告(時間是 2015 年,但也具備參考性)。

首先是實驗環境參數:

然後看實驗拓撲圖,包括 physical-to-physicalphysical-to-virtual-to-physical 兩種拓撲:

最後再來看性能對比:

同樣包括 physical-to-physicalphysical-to-virtual-to-physical 兩種場景:

可以看到,P2P 的場景,OVS-DPDK 比原生 OVS 性能提高差不多 12 倍。

對於 PVP 的場景,我們增加單核和多核的實驗觀察,單核的情況,OVS-DPDK 比原生 OVS 提高 7 倍,雙核的情況提高接近 13 倍。

基於 DPDK 的 VNF 使用 OVS 作爲數據面

基於 OVS-DPDK 的 VNF 架構如下圖所示:

DPDK 在其中既加速 OVS 數據平面,又加速 VNF 應用,這種方案由於採用純軟件的形式實現,可編程靈活,DPDK 的參與也使得性能大大提高,基本可以媲美純硬件的形式。


後臺回覆“加羣”,帶你進入高手如雲交流羣

推薦閱讀:

微軟出品的最新K8S學習指南3.0下載

瞭解HTTPS工作原理,看這一篇就夠了

值得收藏的14個Linux下CPU監控工具

Linux 硬盤結構長啥樣,瞭解一下

謹慎使用的 Linux 命令

史上最硬核的Linux依賴問題解決方案

一文搞懂HTTP+TCP的長連接和短連接

正確理解CPU使用率和平均負載的關係

和面試官之間關於操作系統的一場對弈

Linux 系統 UDP 丟包問題分析思路

如何擁有一臺屬於自己的私有云!

晉升、面試中繞不開的性能優化問題
史上最全Linux面試題(2020最新版)

什麼是物聯網?這裏有你需要了解的一切

Kubernetes的架構爲什麼是這個樣的?

任何人都能看得懂的網絡協議之ARP


喜歡,就給我一個“在看”


10T 技術資源大放送!包括但不限於:雲計算、虛擬化、微服務、大數據、網絡、Linux、Docker、Kubernetes、Python、Go、C/C++、Shell、PPT 等。在公衆號內回覆「1024,即可免費獲取!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章