【重識雲原生】第四章雲網絡4.7.5節vDPA方案——virtio的半硬件虛擬化實現 5 virtio的半硬件卸載方案 參考鏈接

5 virtio的半硬件卸載方案

        Virtio作爲一種半虛擬化的解決方案,其性能一直不如設備的pass-through,即將物理設備(通常是網卡的VF)直接分配給虛擬機,其優點在於數據平面是在虛擬機與硬件之間直通的,幾乎不需要主機的干預。而virtio的發展,雖然帶來了性能的提升,可終究無法達到pass-through的I/O性能,始終需要主機(主要是軟件交換機)的干預。vDPA(vhost Data Path Acceleration)即是讓virtio數據平面不需主機干預的解決方案。該框架由Redhat提出,實現了virtio數據平面的硬件卸載。控制平面仍然採用原來的控制平面協議,當控制信息被傳遞到硬件中,硬件完成數據平面的配置之後,數據通信過程由硬件設備(智能網卡)完成,虛擬機與網卡之間直通。中斷信息也由網卡直接發送至虛擬機不需要主機的干預。這種方式,控制面比較複雜,硬件難以實現。

        在硬件vDPA架構中,通過OVS轉發的流量首包依然由主機上的OVS轉發平面處理,對應數據流的後續報文由硬件網卡直接轉發。

        從下圖中可以看到virtio的控制平面仍需要vDPA driver進行傳遞,也就是說QEMU,或者虛擬機仍然使用原先的控制平面協議作爲接口,而這些控制信息被傳遞到硬件中,硬件會通過這些信息配置好數據平面。而數據平面上,經過配置後的數據平面可以在虛擬機和網卡之間直通。

        鑑於現在後端的數據處理其實完全在硬件中,原先的前後端通知方式也可以幾乎完全規避主機的干預,以中斷爲例,原先中斷必須由主機處理,主機通過軟件交換機得知中斷的目的地之後,將虛擬中斷注入到虛擬機中,而在vDPA中,網卡可以直接將中斷髮送到虛擬機中。總體來看,vDPA的數據平面與SR-IOV設備直通的數據平面非常接近,並且在性能數據上也能達到後者的水準。更重要的是vDPA框架保有virtio這套標準的接口,使雲服務提供商在不改變virtio接口的前提下,得到更高的性能。

        需要注意的是,vDPA框架中利用到的硬件必須至少支持virtio ring的標準,否則可想而知,硬件是無法與前端進行正確通信的。另外,原先軟件交換機提供的交換功能,也轉而在硬件中實現。

        爲了解決高性能SRIOV網絡的熱遷移問題,出現了很多做法和嘗試,尚未形成統一的標準。在Redhat提出硬件vDPA架構之前,Mellanox實現了軟件vDPA(即VF Relay)。理論上講,Mellanox的軟件vDPA並不能算是vDPA,其實就是將數據在用戶空間的virtio隊列和VF的接收隊列做了一次數據Relay。Redhat提出的硬件vDPA架構,目前在DPDK和內核程序中均有實現,基本是未來的標準架構。Qemu支持兩種方式的vDPA,一種是vhost-user,配合DPDK中的vDPA運行,DPDK再調用廠商用戶態vDPA驅動;另一種方式是vhost-vdpa,通過ioctl調用到內核通用vDPA模塊,通用vDPA模塊再調用廠商硬件專有的vDPA驅動。

        1) 軟件vDPA: 軟件vDPA也叫VF relay,由於需要軟件把VF上接收的數據通過virtio轉發給虛擬機(VM),如Mellanox在OVS-DPDK實現了這個relay,OVS流表由硬件卸載加速,性能上與SR-IOV VF直通(passthrough)方式比略有降低,不過實現了虛擬機(VM)的熱遷移特性。

        2) 硬件vDPA: 硬件vDPA實際上是藉助virtio硬件加速,以實現更高性能的通信。由於控制面複雜,所以用硬件難以實現。廠商自己開發驅動,對接到用戶空間DPDK的vDPA和內核vDPA架構上,可以實現硬件vDPA。目前Mellanox mlx5和Intel IFC對應的vDPA適配程序都已經合入到DPDK和kernel社區源碼。

        在硬件vDPA場景下,通過OVS轉發的流量首包依然由主機上的OVS轉發平面處理,對應數據流的後續報文由硬件網卡直接轉發。

        後來在Bluefield-2上,由於集成了ARM核,所以NVIDIA在與UCloud的合作中,將OVS的控制面也完全卸載到網卡到ARM核上,這樣主機上就可以將OVS完全卸載到網卡上。

 參考鏈接

dpdk對虛擬化的支持調研 - allcloud - 博客園

DPDK系列之十二:基於virtio、vhost和OVS-DPDK的容器數據通道_cloudvtech的博客-CSDN博客_dpdk容器化

DPDK系列之六:qemu-kvm網絡後端的加速技術_cloudvtech的博客-CSDN博客_kvm加速

DPDK系列之十五:Virtio技術分析之一,virtio基礎架構_cloudvtech的博客-CSDN博客_virtio

從dpdk1811看virtio1.1 的實現—packed ring-lvyilong316-ChinaUnix博客

Qemu模擬IO和半虛擬化Virtio的區別以及I/O半虛擬化驅動介紹_weixin_34051201的博客-CSDN博客

virtio-net - 網絡半虛擬化 - 知乎

DPU和CPU互聯的接口之爭:Virtio還是SR-IOV? - 極術社區 - 連接開發者與智能計算生態

virtio簡介(一)—— 框架分析 - Edver - 博客園

KVM之Virtio介紹 (十五) - 程序員大本營

虛擬化之Virtio-Net基礎篇-51CTO.COM

KVM 虛擬化詳解 - 知乎

Linux Kernel Vhost 架構 - 於楊 - 博客園

virtio,vhost 和vhost-user - allcloud - 博客園

Virtio網絡的演化之路 - 雲+社區 - 騰訊雲

詳解vhost-user協議及其在OVS DPDK、QEMU和virtio-net驅動中的實現_redwingz的博客-CSDN博客_vhost協議

  

 《重識雲原生系列》專題索引: 

  1. 第一章——不謀全局不足以謀一域
  2. 第二章計算第1節——計算虛擬化技術總述
  3. 第三章雲存儲第1節——分佈式雲存儲總述
  4. 第四章雲網絡第一節——雲網絡技術發展簡述
  5. 第四章雲網絡4.2節——相關基礎知識準備
  6. 第四章雲網絡4.3節——重要網絡協議
  7. 第四章雲網絡4.3.1節——路由技術簡述
  8. 第四章雲網絡4.3.2節——VLAN技術
  9. 第四章雲網絡4.3.3節——RIP協議
  10. 第四章雲網絡4.3.4節——OSPF協議
  11. 第四章雲網絡4.3.5節——EIGRP協議
  12. 第四章雲網絡4.3.6節——IS-IS協議
  13. 第四章雲網絡4.3.7節——BGP協議
  14. 第四章雲網絡4.3.7.2節——BGP協議概述
  15. 第四章雲網絡4.3.7.3節——BGP協議實現原理
  16. 第四章雲網絡4.3.7.4節——高級特性
  17. 第四章雲網絡4.3.7.5節——實操
  18. 第四章雲網絡4.3.7.6節——MP-BGP協議
  19. 第四章雲網絡4.3.8節——策略路由
  20. 第四章雲網絡4.3.9節——Graceful Restart(平滑重啓)技術
  21. 第四章雲網絡4.3.10節——VXLAN技術
  22. 第四章雲網絡4.3.10.2節——VXLAN Overlay網絡方案設計
  23. 第四章雲網絡4.3.10.3節——VXLAN隧道機制
  24. 第四章雲網絡4.3.10.4節——VXLAN報文轉發過程
  25. 第四章雲網絡4.3.10.5節——VXlan組網架構
  26. 第四章雲網絡4.3.10.6節——VXLAN應用部署方案
  27. 第四章雲網絡4.4節——Spine-Leaf網絡架構
  28. 第四章雲網絡4.5節——大二層網絡
  29. 第四章雲網絡4.6節——Underlay 和 Overlay概念
  30. 第四章雲網絡4.7.1節——網絡虛擬化與卸載加速技術的演進簡述
  31. 第四章雲網絡4.7.2節——virtio網絡半虛擬化簡介
  32. 第四章雲網絡4.7.3節——Vhost-net方案
  33. 第四章雲網絡4.7.4節vhost-user方案——virtio的DPDK卸載方案
  34. 第四章雲網絡4.7.5節vDPA方案——virtio的半硬件虛擬化實現
  35. 第四章雲網絡4.7.6節——virtio-blk存儲虛擬化方案
  36. 第四章雲網絡4.7.8節——SR-IOV方案
  37. 第四章雲網絡4.7.9節——NFV
  38. 第四章雲網絡4.8.1節——SDN總述
  39. 第四章雲網絡4.8.2.1節——OpenFlow概述
  40. 第四章雲網絡4.8.2.2節——OpenFlow協議詳解
  41. 第四章雲網絡4.8.2.3節——OpenFlow運行機制
  42. 第四章雲網絡4.8.3.1節——Open vSwitch簡介
  43. 第四章雲網絡4.8.3.2節——Open vSwitch工作原理詳解
  44. 第四章雲網絡4.8.4節——OpenStack與SDN的集成
  45. 第四章雲網絡4.8.5節——OpenDayLight
  46. 第四章雲網絡4.8.6節——Dragonflow

本文由[mdnice](https://mdnice.com/?platform=6)多平臺發佈
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章