1 高性能SR-IOV網(wǎng)絡(luò)(SR-IOV)
1.1 SR-IOV原理簡介
????????SR-IOV是Single Root I/O Virtualization的縮寫执庐。SR-IOV 技術(shù)是一種基于硬件的虛擬化解決方案幕垦,可提高性能和可伸縮性榕堰。SR-IOV 標準允許在虛擬機之間高效共享 PCIe(Peripheral Component Interconnect Express,快速外設(shè)組件互連)設(shè)備神妹,并且它是在硬件中實現(xiàn)的,可以獲得能夠與本機性能媲美的 I/O 性能愿吹。SR-IOV 規(guī)范定義了新的標準捺氢,根據(jù)該標準,創(chuàng)建的新設(shè)備可允許將虛擬機直接連接到 I/O 設(shè)備把曼。
????????SR-IOV 規(guī)范由 PCI-SIG 在?http://www.pcisig.com?上進行定義和維護杨帽。
????????單個 I/O 資源可由許多虛擬機共享。共享的設(shè)備將提供專用的資源嗤军,并且還使用共享的通用資源注盈。這樣,每個虛擬機都可訪問唯一的資源叙赚。因此老客,啟用了 SR-IOV 并且具有適當?shù)挠布?OS 支持的 PCIe 設(shè)備(例如以太網(wǎng)端口)可以顯示為多個單獨的物理設(shè)備,每個都具有自己的 PCIe 配置空間震叮。
SR-IOV 技術(shù)
SR-IOV 中的兩種新功能類型是:
- 物理功能 (Physical Function, PF)
????????用于支持 SR-IOV 功能的 PCI 功能胧砰,如 SR-IOV 規(guī)范中定義。PF 包含 SR-IOV 功能結(jié)構(gòu)苇瓣,用于管理 SR-IOV 功能尉间。PF 是全功能的 PCIe 功能,可以像其他任何 PCIe 設(shè)備一樣進行發(fā)現(xiàn)击罪、管理和處理哲嘲。PF 擁有完全配置資源,可以用于配置或控制 PCIe 設(shè)備媳禁。
- 虛擬功能 (Virtual Function, VF)
????????與物理功能關(guān)聯(lián)的一種功能眠副。VF 是一種輕量級 PCIe 功能,可以與物理功能以及與同一物理功能關(guān)聯(lián)的其他 VF 共享一個或多個物理資源竣稽。VF 僅允許擁有用于其自身行為的配置資源囱怕。
????????每個 SR-IOV 設(shè)備都可有一個物理功能 (Physical Function, PF)槽唾,并且每個 PF 最多可有 64,000 個與其關(guān)聯(lián)的虛擬功能 (Virtual Function, VF)。PF 可以通過寄存器創(chuàng)建 VF光涂,這些寄存器設(shè)計有專用于此目的的屬性。
????????一旦在 PF 中啟用了 SR-IOV拧烦,就可以通過 PF 的總線忘闻、設(shè)備和功能編號(路由 ID)訪問各個 VF 的 PCI 配置空間。每個 VF 都具有一個 PCI 內(nèi)存空間恋博,用于映射其寄存器集齐佳。VF 設(shè)備驅(qū)動程序?qū)拇嫫骷M行操作以啟用其功能,并且顯示為實際存在的 PCI 設(shè)備债沮。創(chuàng)建 VF 后炼吴,可以直接將其指定給 IO 來賓域或各個應(yīng)用程序(如裸機平臺上的 Oracle Solaris Zones)。此功能使得虛擬功能可以共享物理設(shè)備疫衩,并在沒有 CPU 和虛擬機管理程序軟件開銷的情況下執(zhí)行 I/O硅蹦。
1.2 SR-IOV 的優(yōu)點
????????SR-IOV 標準允許在 IO 來賓域之間高效共享 PCIe 設(shè)備。SR-IOV 設(shè)備可以具有數(shù)百個與某個物理功能 (Physical Function, PF) 關(guān)聯(lián)的虛擬功能 (Virtual Function, VF)闷煤。VF 的創(chuàng)建可由 PF 通過設(shè)計用來開啟 SR-IOV 功能的寄存器以動態(tài)方式進行控制童芹。缺省情況下,SR-IOV 功能處于禁用狀態(tài)鲤拿,PF 充當傳統(tǒng) PCIe 設(shè)備假褪。
????????具有 SR-IOV 功能的設(shè)備可以利用以下優(yōu)點:
- 高性能-從虛擬機環(huán)境直接訪問硬件梅屉。
- 成本降低-節(jié)省的資本和運營開銷包括:
- 節(jié)能
- 減少了適配器數(shù)量
- 簡化了布線
- 減少了交換機端口
1.3 SR-IOV限制
????????在SR-IOV passthrough的場景下枷颊,虛擬機(VM)可以獲得與裸金屬主機上相比擬的網(wǎng)絡(luò)性能。但是缩麸,仍然存在兩個限制:
????????(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)技術(shù),在VM上VF網(wǎng)卡初始化的時候饱须,建立了Guest虛擬地址到Host物理地址的映射表瑟由,所以這種“有狀態(tài)”的映射表在熱遷移的過程中會丟失。
????????(2)由于SR-IOV VF passthrough到VM冤寿,而SR-IOV PF直接連接到TOR上歹苦,在這種部署環(huán)境中虛擬機(VM)對外的網(wǎng)絡(luò)需要自定義,如需要像OVS-DPDK那樣自動開通網(wǎng)絡(luò)督怜,則需要將TOR加入SDN控制器的管理范疇殴瘦,由SDN控制器統(tǒng)一管控,這樣做通常會使網(wǎng)絡(luò)運營變的非常復(fù)雜号杠。
????????針對上面第二個問題蚪腋,Mellanox最早提出在其智能網(wǎng)卡上支持OVS Fastpath硬件卸載丰歌,結(jié)合SR-IOV VF passthrough到VM一起使用,提供臨近線速轉(zhuǎn)發(fā)的網(wǎng)絡(luò)能力屉凯,解決了虛擬機(VM)租戶網(wǎng)絡(luò)自動化編排開通的問題立帖。
????????在OVS Fastpath卸載后,OVS轉(zhuǎn)發(fā)報文時悠砚,數(shù)據(jù)流首包仍然做軟件轉(zhuǎn)發(fā)晓勇,在轉(zhuǎn)發(fā)過程中生成Fastpath轉(zhuǎn)發(fā)流表并配置到硬件網(wǎng)卡上,這個數(shù)據(jù)流的后續(xù)報文則通過硬件直接轉(zhuǎn)發(fā)給虛擬機(VM)灌旧。由于早期的Mellanox智能網(wǎng)卡還沒有集成通用CPU核绑咱,OVS的控制面依然在物理主機上運行。
1.4 SR-IOV內(nèi)部架構(gòu)
????????以上圖為例逐個解釋關(guān)鍵詞:
- PF就是物理網(wǎng)卡所支持的一項PCI功能枢泰,PF可以擴展出若干個VF
- VF是支持SRIOV的物理網(wǎng)卡所虛擬出的一個“網(wǎng)卡”或者說虛出來的一個實例描融,它會以一個獨立網(wǎng)卡的形式呈現(xiàn)出來,每一個VF有它自己獨享的PCI配置區(qū)域衡蚂,并且可能與其他VF共享著同一個物理資源(公用同一個物理網(wǎng)口)
- PF miniport driver即PF驅(qū)動是工作于Hyper-V虛擬化平臺父區(qū)域的窿克,并在VF之前最先加載
- VF miniport driver即VF驅(qū)動是工作于Hyper-V虛擬化平臺子區(qū)域的,即guestOS毛甲;需要注意的是让歼,VF及PF之間是隔離的,任何經(jīng)由VF驅(qū)動或所執(zhí)行的結(jié)果都不會影響到其他的VF或PF
- Network Interface Card即物理網(wǎng)卡丽啡,在啟用SRIOV之后會生成若干vport谋右,物理NIC所要做的就是轉(zhuǎn)發(fā)physical port與vport之間的流量
- physical port顧名思義就是物理網(wǎng)口,在SRIOV場景中physical port充當一個面向?qū)ν獾木W(wǎng)絡(luò)媒介
- VPort是個抽象出來的接口补箍,類似于物理網(wǎng)口改执,它們被映射給每一個VF或者PF,供parentOS或guestOS來使用
????????通過以上架構(gòu)的描述就可以看出坑雅,啟用SRIOV之后辈挂,物理NIC將通過VF與虛擬機(VF driver)進行數(shù)據(jù)交互,反之亦然裹粤。那么這樣一來即可跳過中間的虛擬化堆棧(即VMM層)终蒂,以達到近乎于純物理環(huán)境的性能;這一點也是SRIOV最大的價值所在
參考鏈接
DPU和CPU互聯(lián)的接口之爭:Virtio還是SR-IOV遥诉? - 極術(shù)社區(qū) - 連接開發(fā)者與智能計算生態(tài)
DPU應(yīng)用場景系列(一)網(wǎng)絡(luò)功能卸載 - 知乎
SR-IOV 基本原理 - 灰信網(wǎng)(軟件開發(fā)博客聚合)
虛擬化中的SR-IOV_謝睿的工作博客的技術(shù)博客_51CTO博客
網(wǎng)絡(luò)虛擬化——SR-IOV_dillanzhou的博客-CSDN博客_sr-iov
SR-IOV虛擬化簡解_來杯清咖_的博客-CSDN博客_sr-iov
SR-IOV詳解_43259260的博客-CSDN博客_sr-iov
虛擬化中的SR-IOV_謝睿的工作博客的技術(shù)博客_51CTO博客
SR-IOV 基本原理 - 灰信網(wǎng)(軟件開發(fā)博客聚合)
?《重識云原生系列》專題索引:?
- 第一章——不謀全局不足以謀一域
- 第二章計算第1節(jié)——計算虛擬化技術(shù)總述
- 第三章云存儲第1節(jié)——分布式云存儲總述
- 第四章云網(wǎng)絡(luò)第一節(jié)——云網(wǎng)絡(luò)技術(shù)發(fā)展簡述
- 第四章云網(wǎng)絡(luò)4.2節(jié)——相關(guān)基礎(chǔ)知識準備
- 第四章云網(wǎng)絡(luò)4.3節(jié)——重要網(wǎng)絡(luò)協(xié)議
- 第四章云網(wǎng)絡(luò)4.3.1節(jié)——路由技術(shù)簡述
- 第四章云網(wǎng)絡(luò)4.3.2節(jié)——VLAN技術(shù)
- 第四章云網(wǎng)絡(luò)4.3.3節(jié)——RIP協(xié)議
- 第四章云網(wǎng)絡(luò)4.3.4節(jié)——OSPF協(xié)議
- 第四章云網(wǎng)絡(luò)4.3.5節(jié)——EIGRP協(xié)議
- 第四章云網(wǎng)絡(luò)4.3.6節(jié)——IS-IS協(xié)議
- 第四章云網(wǎng)絡(luò)4.3.7節(jié)——BGP協(xié)議
- 第四章云網(wǎng)絡(luò)4.3.7.2節(jié)——BGP協(xié)議概述
- 第四章云網(wǎng)絡(luò)4.3.7.3節(jié)——BGP協(xié)議實現(xiàn)原理
- 第四章云網(wǎng)絡(luò)4.3.7.4節(jié)——高級特性
- 第四章云網(wǎng)絡(luò)4.3.7.5節(jié)——實操
- 第四章云網(wǎng)絡(luò)4.3.7.6節(jié)——MP-BGP協(xié)議
- 第四章云網(wǎng)絡(luò)4.3.8節(jié)——策略路由
- 第四章云網(wǎng)絡(luò)4.3.9節(jié)——Graceful Restart(平滑重啟)技術(shù)
- 第四章云網(wǎng)絡(luò)4.3.10節(jié)——VXLAN技術(shù)
- 第四章云網(wǎng)絡(luò)4.3.10.2節(jié)——VXLAN Overlay網(wǎng)絡(luò)方案設(shè)計
- 第四章云網(wǎng)絡(luò)4.3.10.3節(jié)——VXLAN隧道機制
- 第四章云網(wǎng)絡(luò)4.3.10.4節(jié)——VXLAN報文轉(zhuǎn)發(fā)過程
- 第四章云網(wǎng)絡(luò)4.3.10.5節(jié)——VXlan組網(wǎng)架構(gòu)
- 第四章云網(wǎng)絡(luò)4.3.10.6節(jié)——VXLAN應(yīng)用部署方案
- 第四章云網(wǎng)絡(luò)4.4節(jié)——Spine-Leaf網(wǎng)絡(luò)架構(gòu)
- 第四章云網(wǎng)絡(luò)4.5節(jié)——大二層網(wǎng)絡(luò)
- 第四章云網(wǎng)絡(luò)4.6節(jié)——Underlay 和 Overlay概念
- 第四章云網(wǎng)絡(luò)4.7.1節(jié)——網(wǎng)絡(luò)虛擬化與卸載加速技術(shù)的演進簡述
- 第四章云網(wǎng)絡(luò)4.7.2節(jié)——virtio網(wǎng)絡(luò)半虛擬化簡介
- 第四章云網(wǎng)絡(luò)4.7.3節(jié)——Vhost-net方案
- 第四章云網(wǎng)絡(luò)4.7.4節(jié)vhost-user方案——virtio的DPDK卸載方案
- 第四章云網(wǎng)絡(luò)4.7.5節(jié)vDPA方案——virtio的半硬件虛擬化實現(xiàn)
- 第四章云網(wǎng)絡(luò)4.7.6節(jié)——virtio-blk存儲虛擬化方案
- 第四章云網(wǎng)絡(luò)4.7.8節(jié)——SR-IOV方案
- 第四章云網(wǎng)絡(luò)4.7.9節(jié)——NFV
- 第四章云網(wǎng)絡(luò)4.8.1節(jié)——SDN總述
- 第四章云網(wǎng)絡(luò)4.8.2.1節(jié)——OpenFlow概述
- 第四章云網(wǎng)絡(luò)4.8.2.2節(jié)——OpenFlow協(xié)議詳解
- 第四章云網(wǎng)絡(luò)4.8.2.3節(jié)——OpenFlow運行機制
- 第四章云網(wǎng)絡(luò)4.8.3.1節(jié)——Open vSwitch簡介
- 第四章云網(wǎng)絡(luò)4.8.3.2節(jié)——Open vSwitch工作原理詳解
- 第四章云網(wǎng)絡(luò)4.8.4節(jié)——OpenStack與SDN的集成
- 第四章云網(wǎng)絡(luò)4.8.5節(jié)——OpenDayLight
- 第四章云網(wǎng)絡(luò)4.8.6節(jié)——Dragonflow