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內部架構
以上圖爲例逐個解釋關鍵詞:
- PF就是物理網卡所支持的一項PCI功能,PF可以擴展出若干個VF
- VF是支持SRIOV的物理網卡所虛擬出的一個“網卡”或者說虛出來的一個實例,它會以一個獨立網卡的形式呈現出來,每一個VF有它自己獨享的PCI配置區域,並且可能與其他VF共享着同一個物理資源(公用同一個物理網口)
- PF miniport driver即PF驅動是工作於Hyper-V虛擬化平臺父區域的,並在VF之前最先加載
- VF miniport driver即VF驅動是工作於Hyper-V虛擬化平臺子區域的,即guestOS;需要注意的是,VF及PF之間是隔離的,任何經由VF驅動或所執行的結果都不會影響到其他的VF或PF
- Network Interface Card即物理網卡,在啓用SRIOV之後會生成若干vport,物理NIC所要做的就是轉發physical port與vport之間的流量
- physical port顧名思義就是物理網口,在SRIOV場景中physical port充當一個面向對外的網絡媒介
- VPort是個抽象出來的接口,類似於物理網口,它們被映射給每一個VF或者PF,供parentOS或guestOS來使用
通過以上架構的描述就可以看出,啓用SRIOV之後,物理NIC將通過VF與虛擬機(VF driver)進行數據交互,反之亦然。那麼這樣一來即可跳過中間的虛擬化堆棧(即VMM層),以達到近乎於純物理環境的性能;這一點也是SRIOV最大的價值所在
參考鏈接
DPU和CPU互聯的接口之爭:Virtio還是SR-IOV? - 極術社區 - 連接開發者與智能計算生態
虛擬化中的SR-IOV_謝睿的工作博客的技術博客_51CTO博客
網絡虛擬化——SR-IOV_dillanzhou的博客-CSDN博客_sr-iov
SR-IOV虛擬化簡解_來杯清咖_的博客-CSDN博客_sr-iov
SR-IOV詳解_43259260的博客-CSDN博客_sr-iov
虛擬化中的SR-IOV_謝睿的工作博客的技術博客_51CTO博客
《重識雲原生系列》專題索引:
- 第一章——不謀全局不足以謀一域
- 第二章計算第1節——計算虛擬化技術總述
- 第三章雲存儲第1節——分佈式雲存儲總述
- 第四章雲網絡第一節——雲網絡技術發展簡述
- 第四章雲網絡4.2節——相關基礎知識準備
- 第四章雲網絡4.3節——重要網絡協議
- 第四章雲網絡4.3.1節——路由技術簡述
- 第四章雲網絡4.3.2節——VLAN技術
- 第四章雲網絡4.3.3節——RIP協議
- 第四章雲網絡4.3.4節——OSPF協議
- 第四章雲網絡4.3.5節——EIGRP協議
- 第四章雲網絡4.3.6節——IS-IS協議
- 第四章雲網絡4.3.7節——BGP協議
- 第四章雲網絡4.3.7.2節——BGP協議概述
- 第四章雲網絡4.3.7.3節——BGP協議實現原理
- 第四章雲網絡4.3.7.4節——高級特性
- 第四章雲網絡4.3.7.5節——實操
- 第四章雲網絡4.3.7.6節——MP-BGP協議
- 第四章雲網絡4.3.8節——策略路由
- 第四章雲網絡4.3.9節——Graceful Restart(平滑重啓)技術
- 第四章雲網絡4.3.10節——VXLAN技術
- 第四章雲網絡4.3.10.2節——VXLAN Overlay網絡方案設計
- 第四章雲網絡4.3.10.3節——VXLAN隧道機制
- 第四章雲網絡4.3.10.4節——VXLAN報文轉發過程
- 第四章雲網絡4.3.10.5節——VXlan組網架構
- 第四章雲網絡4.3.10.6節——VXLAN應用部署方案
- 第四章雲網絡4.4節——Spine-Leaf網絡架構
- 第四章雲網絡4.5節——大二層網絡
- 第四章雲網絡4.6節——Underlay 和 Overlay概念
- 第四章雲網絡4.7.1節——網絡虛擬化與卸載加速技術的演進簡述
- 第四章雲網絡4.7.2節——virtio網絡半虛擬化簡介
- 第四章雲網絡4.7.3節——Vhost-net方案
- 第四章雲網絡4.7.4節vhost-user方案——virtio的DPDK卸載方案
- 第四章雲網絡4.7.5節vDPA方案——virtio的半硬件虛擬化實現
- 第四章雲網絡4.7.6節——virtio-blk存儲虛擬化方案
- 第四章雲網絡4.7.8節——SR-IOV方案
- 第四章雲網絡4.7.9節——NFV
- 第四章雲網絡4.8.1節——SDN總述
- 第四章雲網絡4.8.2.1節——OpenFlow概述
- 第四章雲網絡4.8.2.2節——OpenFlow協議詳解
- 第四章雲網絡4.8.2.3節——OpenFlow運行機制
- 第四章雲網絡4.8.3.1節——Open vSwitch簡介
- 第四章雲網絡4.8.3.2節——Open vSwitch工作原理詳解
- 第四章雲網絡4.8.4節——OpenStack與SDN的集成
- 第四章雲網絡4.8.5節——OpenDayLight
- 第四章雲網絡4.8.6節——Dragonflow