【重識雲原生】第四章雲網絡4.7.8節——SR-IOV方案 1 高性能SR-IOV網絡(SR-IOV) 參考鏈接

1 高性能SR-IOV網絡(SR-IOV)

1.1 SR-IOV原理簡介

        SR-IOV是Single Root I/O Virtualization的縮寫。SR-IOV 技術是一種基於硬件的虛擬化解決方案,可提高性能和可伸縮性。SR-IOV 標準允許在虛擬機之間高效共享 PCIe(Peripheral Component Interconnect Express,快速外設組件互連)設備,並且它是在硬件中實現的,可以獲得能夠與本機性能媲美的 I/O 性能。SR-IOV 規範定義了新的標準,根據該標準,創建的新設備可允許將虛擬機直接連接到 I/O 設備。

        SR-IOV 規範由 PCI-SIG 在 http://www.pcisig.com 上進行定義和維護。

        單個 I/O 資源可由許多虛擬機共享。共享的設備將提供專用的資源,並且還使用共享的通用資源。這樣,每個虛擬機都可訪問唯一的資源。因此,啓用了 SR-IOV 並且具有適當的硬件和 OS 支持的 PCIe 設備(例如以太網端口)可以顯示爲多個單獨的物理設備,每個都具有自己的 PCIe 配置空間。

SR-IOV 技術

SR-IOV 中的兩種新功能類型是:

  • 物理功能 (Physical Function, PF)

        用於支持 SR-IOV 功能的 PCI 功能,如 SR-IOV 規範中定義。PF 包含 SR-IOV 功能結構,用於管理 SR-IOV 功能。PF 是全功能的 PCIe 功能,可以像其他任何 PCIe 設備一樣進行發現、管理和處理。PF 擁有完全配置資源,可以用於配置或控制 PCIe 設備。

  • 虛擬功能 (Virtual Function, VF)

        與物理功能關聯的一種功能。VF 是一種輕量級 PCIe 功能,可以與物理功能以及與同一物理功能關聯的其他 VF 共享一個或多個物理資源。VF 僅允許擁有用於其自身行爲的配置資源。

        每個 SR-IOV 設備都可有一個物理功能 (Physical Function, PF),並且每個 PF 最多可有 64,000 個與其關聯的虛擬功能 (Virtual Function, VF)。PF 可以通過寄存器創建 VF,這些寄存器設計有專用於此目的的屬性。

        一旦在 PF 中啓用了 SR-IOV,就可以通過 PF 的總線、設備和功能編號(路由 ID)訪問各個 VF 的 PCI 配置空間。每個 VF 都具有一個 PCI 內存空間,用於映射其寄存器集。VF 設備驅動程序對寄存器集進行操作以啓用其功能,並且顯示爲實際存在的 PCI 設備。創建 VF 後,可以直接將其指定給 IO 來賓域或各個應用程序(如裸機平臺上的 Oracle Solaris Zones)。此功能使得虛擬功能可以共享物理設備,並在沒有 CPU 和虛擬機管理程序軟件開銷的情況下執行 I/O。

1.2 SR-IOV 的優點

        SR-IOV 標準允許在 IO 來賓域之間高效共享 PCIe 設備。SR-IOV 設備可以具有數百個與某個物理功能 (Physical Function, PF) 關聯的虛擬功能 (Virtual Function, VF)。VF 的創建可由 PF 通過設計用來開啓 SR-IOV 功能的寄存器以動態方式進行控制。缺省情況下,SR-IOV 功能處於禁用狀態,PF 充當傳統 PCIe 設備。

        具有 SR-IOV 功能的設備可以利用以下優點:

  • 高性能-從虛擬機環境直接訪問硬件。
  • 成本降低-節省的資本和運營開銷包括:
    • 節能
    • 減少了適配器數量
    • 簡化了佈線
    • 減少了交換機端口

1.3 SR-IOV限制

        在SR-IOV passthrough的場景下,虛擬機(VM)可以獲得與裸金屬主機上相比擬的網絡性能。但是,仍然存在兩個限制:

        (1)SR-IOV VF passthrough到VM後,VM的遷移性會受限,主要原因在於SR-IOV這種passthrough I/O藉助了Intel CPU VT-d(Virtualization Technology for Directed I/O)或AMD的IOMMU(I/O Memory Management Unit)技術,在VM上VF網卡初始化的時候,建立了Guest虛擬地址到Host物理地址的映射表,所以這種“有狀態”的映射表在熱遷移的過程中會丟失。

        (2)由於SR-IOV VF passthrough到VM,而SR-IOV PF直接連接到TOR上,在這種部署環境中虛擬機(VM)對外的網絡需要自定義,如需要像OVS-DPDK那樣自動開通網絡,則需要將TOR加入SDN控制器的管理範疇,由SDN控制器統一管控,這樣做通常會使網絡運營變的非常複雜。

        針對上面第二個問題,Mellanox最早提出在其智能網卡上支持OVS Fastpath硬件卸載,結合SR-IOV VF passthrough到VM一起使用,提供臨近線速轉發的網絡能力,解決了虛擬機(VM)租戶網絡自動化編排開通的問題。

        在OVS Fastpath卸載後,OVS轉發報文時,數據流首包仍然做軟件轉發,在轉發過程中生成Fastpath轉發流表並配置到硬件網卡上,這個數據流的後續報文則通過硬件直接轉發給虛擬機(VM)。由於早期的Mellanox智能網卡還沒有集成通用CPU核,OVS的控制面依然在物理主機上運行。

1.4 SR-IOV內部架構

        以上圖爲例逐個解釋關鍵詞:

  1. PF就是物理網卡所支持的一項PCI功能,PF可以擴展出若干個VF
  2. VF是支持SRIOV的物理網卡所虛擬出的一個“網卡”或者說虛出來的一個實例,它會以一個獨立網卡的形式呈現出來,每一個VF有它自己獨享的PCI配置區域,並且可能與其他VF共享着同一個物理資源(公用同一個物理網口)
  3. PF miniport driver即PF驅動是工作於Hyper-V虛擬化平臺父區域的,並在VF之前最先加載
  4. VF miniport driver即VF驅動是工作於Hyper-V虛擬化平臺子區域的,即guestOS;需要注意的是,VF及PF之間是隔離的,任何經由VF驅動或所執行的結果都不會影響到其他的VF或PF
  5. Network Interface Card即物理網卡,在啓用SRIOV之後會生成若干vport,物理NIC所要做的就是轉發physical port與vport之間的流量
  6. physical port顧名思義就是物理網口,在SRIOV場景中physical port充當一個面向對外的網絡媒介
  7. VPort是個抽象出來的接口,類似於物理網口,它們被映射給每一個VF或者PF,供parentOS或guestOS來使用

        通過以上架構的描述就可以看出,啓用SRIOV之後,物理NIC將通過VF與虛擬機(VF driver)進行數據交互,反之亦然。那麼這樣一來即可跳過中間的虛擬化堆棧(即VMM層),以達到近乎於純物理環境的性能;這一點也是SRIOV最大的價值所在

參考鏈接

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

KVM 虛擬化詳解 - 知乎

DPU應用場景系列(一)網絡功能卸載 - 知乎

SR-IOV 基本原理 - 灰信網(軟件開發博客聚合)

虛擬化中的SR-IOV_謝睿的工作博客的技術博客_51CTO博客

網絡虛擬化——SR-IOV_dillanzhou的博客-CSDN博客_sr-iov

SR-IOV虛擬化簡解_來杯清咖_的博客-CSDN博客_sr-iov

SR-IOV 簡介 - 編寫設備驅動程序

SR-IOV是什麼?性能能好到什麼程度? - 知乎

SR-IOV_百度百科

SR-IOV 簡介 - 編寫設備驅動程序

IO虛擬化——SR-IOV 原理

SR-IOV詳解_43259260的博客-CSDN博客_sr-iov

虛擬化中的SR-IOV_謝睿的工作博客的技術博客_51CTO博客

SR-IOV 基本原理 - 灰信網(軟件開發博客聚合)

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

  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)多平臺發佈
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章