国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

云服務器|WEB服務器|FTP服務器|郵件服務器|虛擬主機|服務器安全|DNS服務器|服務器知識|Nginx|IIS|Tomcat|

服務器之家 - 服務器技術 - 服務器知識 - NFV關鍵技術:計算虛擬化之IO虛擬化

NFV關鍵技術:計算虛擬化之IO虛擬化

2021-12-21 23:00移動Labs李冰 服務器知識

現實中的外設資源是有限的,為了提高資源的利用率,滿足多個虛擬機操作系統對外部設備的訪問需求,VMM必須通過I/O虛擬化的方式來實現資源的復用,讓有限的資源能被多個虛擬機共享。

Labs 導讀

現實中的外設資源是有限的,為了提高資源的利用率,滿足多個虛擬機操作系統對外部設備的訪問需求,VMM必須通過I/O虛擬化的方式來實現資源的復用,讓有限的資源能被多個虛擬機共享。

1、IO虛擬化概述

如何將服務器上的物理設備虛擬化為多個邏輯設備,并將物理設備與邏輯設備解耦,使虛擬機可以在各個虛擬化平臺間無縫遷移,正是I/O虛擬化的目標。I/O虛擬化的基本要求主要有以下的三點:

  • 保真性,要求在虛擬化平臺下進行的I/O訪問與非虛擬化條件下的I/O訪問除了完成時間差別外,其它效果相同;
  • 安全性,要求各虛擬機操作系統只能訪問VMM分配給其的I/O資源,而各I/O設備也只能與屬于同一個虛擬機的其它資源進行交互,如存儲空間和CPU,而不能越界訪問屬于其它虛擬機的資源;
  • 性能,要求虛擬化系統下I/O訪問的性能與非虛擬化系統下的I/O訪問性能接近。

在這三個基本要求之中最為重要的就是安全性方面的要求,這是保證虛擬化環境可以正常運行的根本,只有首先滿足這一要求才能保證虛擬化I/O的保真性,對于性能的要求才會有意義。虛擬化環境下之所以會出現安全性的問題是因為虛擬機操作系統可見的地址并不是實際的機器物理地址,而是客戶物理地址,設備若無法獲知客戶物理地址和機器物理地址間的轉換關系,直接使用客戶物理地址進行內存訪問,這會導致非法地址訪問、破壞正常數據。

正是由于I/O虛擬化對于I/O空間安全隔離性方面的要求,所以對于虛擬機操作系統的I/O訪問操作一般都需要VMM的介入,而不允許虛擬機操作系統與I/O設備直接進行交互,導致虛擬機操作系統的I/O訪問會受到VMM干預,導致性能與非虛擬化環境有較大差距。而VMM介入之所以會導致性能嚴重損失的根本原因就是發生了上下文切換。

上下文切換分為兩種,虛擬機與虛擬機之間發生的上下文切換以及虛擬機與VMM之間發生的上下文切換。在I/O虛擬化中影響性能的就是虛擬機和VMM之間的上下文切換。虛擬機操作系統產生的I/O請求會被VMM截獲,VMM將I/O請求交由驅動域去處理,驅動域完成I/O請求要返回執行結果,這些過程都會造成上下文切換。虛擬機和VMM之間的上下文切換的開銷主要分為以下三個部分:

  • 直接開銷,這個部分主要由CPU的切換造成,CPU需要停滯虛擬機切換到VMM去執行,之后又要從VMM轉回虛擬機執行下一條指令。
  • 間接開銷,兩種環境的切換導致需要保存上下文環境。
  • 同步開銷,這個部分主要是VMM處理VM EXIT造成的。

因此,一旦發生大量的上下文切換,將嚴重影響I/O虛擬化的性能,尤其在I/O密集型的任務中,上下文切換導致的開銷往往是無法忍受的。為了解決性能的問題,通過DMA重映射、IOMMU等硬件輔助,實現了域間隔離和設備地址轉換,保證被分配給虛擬機的設備不會訪問不屬于該虛擬機的存儲器空間。

I/O虛擬化在具體實現上與CPU和內存虛擬化一樣,分為軟件與硬件虛擬化;在被虛擬機訪問的方式上,又分為共享模式與直接訪問模式。

2、軟件I/O虛擬化技術

軟件I/O虛擬化通過軟件模擬設備的方式,使得I/O設備資源能夠被多個虛擬機共享,該方式可使I/O設備的利用率得到極大的提高,并且可以做到物理設備與邏輯設備分離,具有良好的通用性,但由于該方式需要VMM的介入而導致多次上下文切換,使得I/O性能受到影響。其本質是VMM需要截獲虛擬機操作系統對外部設備的訪問請求,通過軟件的方式模擬出真實的物理設備的效果,這樣,虛擬機看到的實際只是一個虛擬設備,而不是真正的物理設備,這種模擬的方式就是I/O虛擬化的一種實現,下圖所示就是一個典型的虛擬機I/O模型。

NFV關鍵技術:計算虛擬化之IO虛擬化

為了達到虛擬化I/O的目的,VMM截獲客戶操作系統對設備的訪問請求,然后通過軟件的方式來模擬真實設備的效果。I/O虛擬化中的設備對軟件來說,就是一堆的寄存器(I/O端口)和I/O內存,以及中斷和DMA。而設備虛擬化的過程,就是模擬設備的這些寄存器和內存,然后截獲Guest OS里面對I/O端口和寄存器的訪問,然后通過軟件的方式來模擬真實的硬件。軟件I/O虛擬化需要解決3個問題:

設備發現: 需要控制各虛擬機能夠訪問的設備。

所謂設備發現就是VMM必須采取某種方式,使得虛擬機能夠發現虛擬設備。這樣,虛擬機才能夠加載相應的驅動程序。

在沒有虛擬化的系統中,由BIOS或者操作系統通過遍歷PCI總線上的所有設備完成設備發現過程,而在虛擬化系統中,則由VMM決定向虛擬機呈現哪些設備。具體過程要根據設備是否存在于物理總線上來進行。對于一個真實存在于物理總線的設備,如果是不可枚舉的類型,例如PS/2鍵盤,由于這類設備是硬編碼固定的,驅動程序會通過其特定的訪問方式來檢查設備是否存在,因此VMM只要在相應端口上模擬出該設備,虛擬機即可成功檢測到它;如果是可枚舉的類型,譬如PCI設備或者PCIe設備,這種設備通常定義了完整的設備發現方法,并允許BIOS或者操作系統在設備枚舉過程中通過PCI配置空間對其資源進行配置。因此VMM不僅要模擬這些設備本身的邏輯,還要模擬PCI總線的一些屬性,包括總線拓撲關系及相應設備的PCI配置空間,以便虛擬機OS在啟動時能夠發現這些設備。

VMM不僅可以模擬真實設備,還可以實際并不存在的虛擬設備。由于這類設備并沒有現實中的規范和模型與之相對應,因此完全由VMM決定它們的總線類型。這類虛擬設備可以掛載在已有PCI總線上,也可以完全自定義一套新的總線。若使用自定義的新總線,則必須在虛擬機中加載特殊的總線驅動程序,且影響虛擬機在不同虛擬化平臺的遷移性。

訪問截獲: 通過I/O端口對設備的訪問。

所謂訪問截獲就是虛擬機操作系統發現虛擬設備之后,虛擬機上的驅動程序就會按照特定接口訪問這個虛擬設備。驅動程序對于接口的調用必須能夠被VMM截獲,并能按照真實設備的行為進行模擬。

以分配到端口I/O資源的設備為例,由于CPU對于端口I/O資源的控制與指令流所處的特權級別和相關 I/O位圖有關,而在虛擬化環境中虛擬機OS又被降級到非特權級別,因此OS能否訪問設備的I/O端口就完全由I/O位圖決定。對于沒有直接分配給虛擬機的設備,VMM就可以把它的I/O端口在I/O位圖中關閉,當 虛擬機操作系統在訪問該端口時,就會拋出一個保護異常,VMM即可獲得異常原因,并進而將請求發送給底層設備模擬器進行模擬,并異常訪問處理結果返回給虛擬機;如果該設備是直接分配給虛擬機,那么VMM就可以在I/O位圖中打開它的I/O端口,這樣虛擬機驅動程序就可以直接訪問該設備。

同理,對于分配到MMIO(Memory Mapped I/ O)資源的設備,比如某些PCIe設備,由于MMIO是系統物理地址空間的一部分,物理地址空間由頁表管理,因此VMM同樣可以通過控制MMIO相應的頁表項是否有效來截獲虛擬機操作系統對于MMIO資源的訪問。

設備模擬:通過軟件的方式模擬真實的物理設備

所謂設備模擬就是模擬設備的功能,內容十分多樣且復雜。對于像PS/2鍵盤、鼠標這樣的設備,VMM需要根據設備的接口規范模擬設備的所有行為,才能夠無需修改驅動就在虛擬機上展現出設備應有的效果。而對于磁盤存儲系統,則不必受限于實際的磁盤控制器以及具體磁盤類型和型號。比如,對IDE硬盤其I/O端口虛擬化時,底層可以是一塊磁盤,可以是一個分區,也可以是不同格式的文件;然后在其上實現一個專門的塊設備抽象層;最后在塊設備上使用文件系統,并引入一些真實硬件沒有的高級特性,例如:加密、備份、增量存儲等。

上述三個環節僅是VMM處理一個虛擬 機所發出I/O請求的流程。在實際中,系統的物理設備需要同時接受來自多個虛擬 機的I/O請求。因此,VMM還要將多個虛擬機的I/O請求合并為單獨一個I/O數據流發送給底層設備驅動。當VMM收到來自底層設備驅動完成I/O請求的中斷時,VMM還要能夠將中斷響應結果轉發給正確的虛擬機,以通知其I/O操作結束。同時VMM在調度各個虛擬機發送來的I/O請求處理時,必須依據一定的算法確保虛擬機I/O的QoS與設備共享的公平性。

在實現架構上,軟件I/O虛擬化技術主要包括Hypervisor全虛架構和前端/后端的半虛架構來說實現。

2.1 全虛擬化---模擬模型

即完全使用軟件來模擬真實硬件,模擬通常硬件,例如鍵盤鼠標。該架構使用最為廣泛的I/O設備虛擬化模型,采用軟件的方式模擬設備行為,為虛擬機模擬出與底層硬件完全一致的虛擬化環境,保證虛擬機操作系統的行為與非虛擬化環境下完全一致。在模擬模型中,虛擬設備必須以某種方式讓虛擬機可以發現,導致虛擬機被“欺騙”。當虛擬機訪問虛擬設備時,訪問請求被VMM截獲,然后VMM將I/O請求交由domain0來模擬完成,最后將結果返回給虛擬機。如下圖所示是一個基于設備模擬的xen的I/O虛擬化模型。

NFV關鍵技術:計算虛擬化之IO虛擬化

這種架構最大的優點在于不需要對虛擬機操作系統內核做修改,也不需要為改寫其原生驅動程序,因此,這種架構是可移植性與兼容性最佳的一種I/O設備虛擬模型,這也是它被如此廣泛使用的主要原因,除了Xen架構的全虛模型外,VMware的Workstations和ESX都有類似的全虛模型,且是全虛模型的典型代表。

但是,全虛模型有一個很大的不足之處,即性能不夠高,主要原因有兩方面:第一、模擬方式是用軟件行為進行模擬,這種方式本身就無法得到很高的性能;第二、這種模型下I/O請求的完成需要虛擬機與VMM多次的交互,產生大量的上下文切換,造成巨大開銷。模擬IO虛擬化方式的最大開銷在于處理器模式的切換:包括從Guest OS到VMM的切換,以及從內核態的VMM到用戶態的IO模擬進程之間的切換。

在全虛擬化,由于VMM實現模式不同,采用的設備虛擬化方式也不同。比如,全虛擬化最有代表性的VMware ESX和VMWare Workstattion。

在VMware ESX中,VMM直接運行在物理硬件之上,直接操作硬件設備,而Guest OS看到的則是一組統一的虛擬IO設備。Guest OS對這些虛擬設備的每一個IO操作都會陷入VMM 中,由VMM對IO指令進行解析并映射到實際的物理設備,然后直接控制硬件完成。

而VMWare WorkStation采用了不同的方式。VMM實際上運行在一個傳統的操作系統之上,這類VMM無法獲得對硬件資源的完全控制,因此采用軟件模擬的方式來模擬IO設備。Guest OS的IO操作會被VMM捕獲,并轉發給宿主機(host OS)的一個用戶態進程,該進程通過對宿主機操作系統的系統調用來模擬設備的行為。

以下是VMware的ESX架構,VMkernel負責管理虛擬機對于網絡和存儲設備的訪問。通過設備模擬術,不同的物理設備對于虛擬機可以呈現為某種特定的虛擬設備,甚至并不存在的虛擬設備。

NFV關鍵技術:計算虛擬化之IO虛擬化

對于存儲,物理服務器上部署的可能是某種SCSI設備、磁盤陣列甚至是SAN存儲網絡,但是ESX能夠模擬出BusLogic或者LSILogic的SCSI適配器,因此對于虛擬機總是呈現為SCSI設備。而對于網絡ESX則模擬為AMD Lance適配器或者一個并不存在的自定義接口vmxnet,來幫助虛擬機對網絡的問。上圖顯示了在ESXi服務器內部經過的I/O路徑。其中,虛擬機分別使用vmxnet虛擬網絡適配器與LSI Logic虛擬SCSI適配器對網絡和存儲進行訪問,而物理服務器則使用Intel e1000網卡連接到SAN網絡的QLogic光纖HBA卡。

  • 第1步所示,虛擬機中的某個應用程序通過操作系統發起I/O訪問,比如發送一個網絡數據包或者向磁盤寫入一個文件;
  • 第2步表示操作系統對其進行處理,并調用設備驅動處理相應的I/O請求;
  • 第3步表示當設驅動試圖訪問外設時,VMM攔截到該操作并將控制權切換到Vmkernel;
  • 第4步為VMkernel獲得控制權后,I/O請求會被轉發到與設備無關的網絡或者存儲抽象層進行處理;
  • 第5步表示VMkernel還會同時接收到來自其他虛擬機的多個I/O請求,并對這些I/O請求按照特定算法進行優先級調度處理。

I/O請求最終會被轉發到具有物理設備驅動程序的硬件接口層進行處理。當I/O請求的完成中斷到達時,I/O處理過程則與上述路徑完全相反。VMkernel中設備驅動會將到達的中斷保護起來,并調用VMkernel來處理該中斷;接下來VMkernel會通知相應虛擬機的VMM進程,VMM進程會向虛擬機發起中斷,以通知I/O請求處理完畢;同時VMkernel還要確保I/O處理完畢的相關信息與其他虛擬機的數據相互隔離。

由于上述過程需要VMkernel處理I/O請求,因此從虛擬機到VMkernel上下文的切換過程會導致一定的開銷。為了降低開銷,vmxnet在收發數據包之前,會收集一組數據包再轉發給各個虛擬機或者一起發送出去。對于多個虛擬機之間的設備資源管理方面,對于網絡ESX采用了流量整形的方式限制每個虛擬機的總帶外流量;對于存儲ESX實現了比例公平的算法平衡多個虛擬機之間磁盤訪問帶寬。

2.2 半虛擬化---泛虛擬化模型

即屬于前后端驅動模型的IO虛擬化,也稱為分離驅動模型。泛虛擬化模型是被廣泛使用的另一種I/O設備虛擬化模型。相比于全虛模型而言,泛虛擬化模型在性能上有很大的提升。主要有以下兩個原因:

  • 一是該模型采用了I/O環機制(一種大塊多隊列聚合傳輸技術,支持I/O環適配功能的虛擬機操作系統,只有安裝了Tools才能使用到IO環適配功能),減少了虛擬機與VMM之間的切換;
  • 二是該模型摒棄了傳統的中斷機制,而采用事件或回調機制來實現設備與客戶機間的通信。進行中斷處理時,傳統的中斷服務程序需要進行中斷確認和上下文切換,而采用事件或回調機制,無需進行上下文切換。如下圖所示是一個基于泛虛擬化的Xen的I/O虛擬化模型。

NFV關鍵技術:計算虛擬化之IO虛擬化

前端/后端架構也稱為“Split I/O”,即將傳統的I/O驅動模型分為兩個部分,一部分是位于客戶機OS內部的設備驅動程序(前端),該驅動程序不會直接訪問設備,所有的I/O設備請求會轉發給位于一個特權虛機的驅動程序(后端),后端驅動可以直接調用物理I/O設備驅動訪問硬件。前端驅動負責接收來自其他模塊的I/O操作請求,并通過虛擬機之間的事件通道機制將I/O請求轉發給后端驅動。后端在處理完請求后會異步地通知前端。相比于全虛模型中VMM需要截獲每個I/O請求并多次上下文切換的式,這種基于請求/事務的方式能夠在很大程度上減少上下文切換的頻率,并降低開銷。但是這種I/O模型有一個很大的缺點,要修改操作系統內核以及驅動程序,因此會存在移植性和適用性方面的問題,導致其使用受限。下滿以Xen架構的模型為例說明:

NFV關鍵技術:計算虛擬化之IO虛擬化

在Xen架構的半虛擬化模型中,通過修改Guest OS的內核,將原生的設備驅動從Guest OS移出,放到一個特殊的設備虛擬機中Dom0了,其余虛擬機中的I/O請求都由設備虛擬機處理。而在Guest OS內部,為每個虛擬設備安裝一個特殊的驅動程序,由該驅動程序負責I/O請求的傳遞,設備虛擬機經過VMM授權,解析收到的請求并映射到實際物理設備,最后交給設備的原生驅動來完成IO。實際上在這種情況下,Guest OS的驅動是消息代理的作用,把I/O事件轉換為消息,發送給設備虛擬機處理。具體前后端驅動配合實現物理設備驅動功能,需要通過以下幾步實現:

Step1:如何實現設備發現?

  • 所有VM的設備信息保存在Domain0的XenStore中。
  • VM中的XenBus (為Xen開發的半虛擬化驅動)通過與Domain0的XenStore通信,獲取設備信息。
  • 加載設備對應的前端驅動程序。

Step2:如何實現設備數據截獲?

  • 前端設備驅動將數據通過VMM提供的接口全部轉發到后端驅動。
  • 后端驅動VM的數據進行分時分通道進行處理。

Step3:如何模擬使用IO設備

Domain U中虛擬機程序使用IO設備時,通過前端驅動Front-End Driver由XenBus總線訪問Domain 0中的Back-End Driver,Back-End Driver通過XenStor中記錄的IO設備信息,找到真實的設備驅動Native Driver去訪問真實IO設備。

需要注意一點:這種前后端驅動架構的瓶頸就是Domain 0,因為Domain 0通過XenBus總線采用時分復用的策略與前端多個DomainU聯動。

3、硬件I/O虛擬化技術

為了改善I/O性能,旨在簡化I/O訪問路徑的設備直通訪問方式又被提了出來。代表技術為Intel公司出 的VT-d與AMD公司的IOMMU技術。盡管這兩種技術在一定程度上提高了I/O訪問性能,但代價卻是限制了系統的可擴展性。目前PCI-SIG提出的SR-IOV與MR-IOV是平衡I/O虛擬化通用性、訪問性能與系統可擴展性的很好的解決方案。

3.1 IO透傳---設備直接分配模型,即直接分配給虛擬機物理設備

軟件實現I/O虛擬化的技術中,所有的虛擬機都共享物理平臺上的硬件設備。如果物理條件好,有足夠的硬件,就可以考慮讓每個虛擬機獨占一個物理設備,這樣無疑會提高系統的性能。把某一個設備直接分配給一個虛擬機,讓虛擬機可以直接訪問該物理設備而不需要通過VMM或被VMM截獲,這就是設備直通技術。如下圖所示為設備直接分配的I/O模型。

NFV關鍵技術:計算虛擬化之IO虛擬化

在設備直接分配模型中,虛擬機操作系統可直接擁有某一物理設備的訪問控制權限,VMM不再干涉其訪問操作。因此,該模型可以較大地改善虛擬化設備的性能,降低VMM程序的復雜性,易于實現,并且不需要修改操作系統,保證了高可用性。

設備直接分配模型雖然在性能上相比軟件方式的兩種I/O設備虛擬化模型有著很大的提升,但是該模型的使用也是有一定限制的。因為該模型將一件物理設備直接分配給了一個虛擬機,其它虛擬機是無法使用該設備的,所產生的一個問題就是如果其它虛擬機需要訪問該設備則無法滿足需求,解決辦法就是物理資源充分滿足需求或者通過硬件虛擬化技術虛擬出多個IO設備(與物理設備性能極為接近)供多個虛擬機使用(硬件必須支持)。

3.2 Intel的設備硬件虛擬化技術---VT-d

VT-d,即VT for Direct I/O,主要在芯片組中實現,允許虛擬機直接訪問I/O設備,以減少VMM和CPU的負擔,如下圖畫紅框部分。

NFV關鍵技術:計算虛擬化之IO虛擬化

Intel公司提出的VT系列技術中VT-d其目的就是讓虛擬機直接訪問物理機底層I/O設備,使虛擬機能夠使用自己的驅動直接操作I/O設備,而無需VMM的介入和干涉。通過引入DMA重映射,VT-d不僅可以使虛擬機直接訪問設備,同時還提供了一種安全隔離機制,防止其他虛擬機或者VMM訪問分配給指定虛擬機的物理內存。VT-d中DMA重映射原理如下圖所示:(在北橋也就是現在CPU封裝中實現)

NFV關鍵技術:計算虛擬化之IO虛擬化

具體來說,VT-d技術在北橋引入了DMA重映射技術,并通過兩種數據結構(Root Entry 和 Context Entry)維護了設備的I/O頁表。設備上的DMA操作都會被DMA重映射硬件截獲,并根據對應的I/O頁表對DMA中的地址進行轉換,同時也會對要訪問的地址空間進行控制。

在具體實現上,VT-d使用PCI總線中的設備描述符BDF(Bus Device Function)來標示DMA操作發起者的標示符。其次,VT-d使用兩種數據結構來描述PCI總線結構,分別是根條目(Root Entry)和上下文條目(Context Entry)。如下圖所示,其中根條目用于描述PCI總線。由于PCI總線個數可以達到256個,因此根條目的范圍是0~255,其中每個根條目的一個指針字段都指向該總線的所有PCI設備的上下文條目表指針(Context Table Pointer,CTP)。由于一個PCI總線可以包含256個設備,因此上下文條目表的范圍也是0~255 。在每個上下文條目中都包含兩個重要字段:地址空間根(Address Space Root,ASR) 指向該設備的I/O頁表;域標示符(Domain ID,DID)可以理解為唯一標示一個虛擬機的標示符。

NFV關鍵技術:計算虛擬化之IO虛擬化

基于這種方式,當某一個設備發起DMA操作及被DMA重映射硬件截獲時,通過該設備的BDF中的Bus字段,可以找到其所在的根條目。根據device和function字段,可以索引到具體設備的上下文條目。這樣就可根據上下文條目中的ASR字段找到該設備的I/O頁表,再通過DMA重映射硬件將I/O請求的GPA轉換為HPA,從而達到設備直接訪問虛擬機內存的目的。

使用VT-d將設備直接分配給虛擬機的I/O訪問性能十分接近無虛擬化環境下的I/O訪問性能,然而VT-d事實上是一種I/O設備被虛擬機獨占的方式,這種方式犧牲了虛擬化平臺中的設備共享能力,設備用率大大降低,而且系統的可擴展性受到物理平臺插槽個數的限制。比如,假定一個服務器配置4個CPU,每個CPU為8核,按照平均分配方式每個虛擬機一個核,則可以創建32個虛擬機,如果按照備 直接訪問的方式分配網卡,則需要32個物理插槽,這是不現實的。

NFV關鍵技術:計算虛擬化之IO虛擬化

VT-d還為DMA重映射提供了安全隔離的保障。上圖是沒有VT-d技術與有VT-d技術的虛擬化平臺的對比??梢钥闯?,圖(a)部分沒有VT-d虛擬化技術的平臺中,物理設備的DMA操作可以訪問整個系統內存。而圖(b)有VT-d技術的平臺中,對設備DMA操作的地址范圍進行了限制,只能訪問指定的地址空間。

除了DMA重映射外,VT-d還提供了中斷重映射功能,有興趣的可以參考Intel官網的VT技術手冊。

3.3 VMDq和VMDc技術

在集群和數據中心這類環境中,每臺主機通常同時運行大量的虛擬機。由于主機的網絡設備數目有限,多個虛擬機不得不復用同一個網絡設備,從而導致性能下降。Intel VT-c 技術可針對虛擬化進一步優化網絡性能。VT-c 包括如下兩個關鍵技術:

3.3.1 虛擬機設備隊列(Virtual Machine Device Queues,VMDq)

收到一個數據包時,VMM必須將其分類以確定應該轉發給哪個虛擬機,這占用了大量寶貴的處理器資源。如果以太網控制器支持 VMDq 技術,VMM可以為虛擬機使用不同的數據包隊列,以太網控制器自動分類數據包并投放到相應的隊列中,大大減輕VMM的負擔,提高了I/O吞吐量,如下圖所示。

NFV關鍵技術:計算虛擬化之IO虛擬化

而Intel所使用的VMDq就是通過網卡芯片內建的 Layer 2 classifier / sorter 以加速網絡數據傳送,它可以先行將不同的虛擬機所需的網絡數據包,直接在芯片里規劃好,然后再通過 receive queue直送給虛擬機。這樣就不用送過虛擬交換機轉發數據包減少網絡的負載與CPU的開銷,有VMDq和沒VMDq的對比如下:

NFV關鍵技術:計算虛擬化之IO虛擬化

3.3.2 虛擬機直接連接(Virtual Machine Direct Connect,VMDc)

這是Intel借鑒了SR-IOV技術的特點。與SR-IOV技術一樣,支持該技術的網絡設備能夠對外展現出多個虛擬功能接口VF(Virtual Function)。每個功能接口相當于一個網絡設備,VMM可將其直接分配給某個虛擬機,從而“避免”了網絡設備的復用。例如,VMM僅用單個英特爾萬兆位服務器網卡,可為10個客戶機操作系統分配獨立受保護的1Gb/秒的專用鏈路,VMM無需繼續管理這些直接通信鏈路,進一步提升I/O性能并減少主機CPU的負載 。

3.4 SR-IOV與MR-IOV:PCIe的虛擬化

如前所述,軟件設備模擬盡管實現了物理與邏輯的分離,但是性能受到影響;VT-d或者IOMMU技術則以犧牲系統擴展性為代價獲得近似于直接訪問設備的I/O性能,而且其中任何一種都不是基于現有的工業標準。因此,業界希望重新設計一種可以原生共享的設備。具有原生共享特性的設備可同時為多個虛擬機提供單獨的內存空間、工作隊列、中斷與命令處理,使得設備的資源能夠在多個虛擬機之間共享。同時,這些設備能夠從多個源端同時接收命令,并將其合并再一起發送出去。因此,原生共享設備不需要VMM模擬設備,同時也在硬件層次上使得多個虛擬機同時訪問設備,很好地兼顧了虛擬化系統的性能與可擴展性。

PCI-SIG組織提出了一個新的技術規范:SR-IOV(Single Root I/O Virtualization)。該規范定義了一個單根設備(如 一個以太網卡端口)如何呈現為多個虛擬設備。在SR-IOV中,定義了兩個功能類型:一是物理功能類型PF,負責管理SR-IOV設備的特殊驅動,其主要功能是提供設備訪問功能和全局共享資源配置的功能,虛擬機所有影響設備狀態的操作均需通過通信機制向PF發出請求完成。二是虛擬功能類型VF是輕量級的PCIe功能,包含三個方面:向虛擬機操作系統提供的接口;數據的發送、接收功能;與PF進行通信,完成全局相關操作。由于VF的資源僅是設備資源的子集,因此VF驅動能夠訪問的資源有限,對其它資源的訪問必須通過PF完成。

上圖是一個支持SR-IOV的網卡配置。其中左側三個VM是通過VF可以直接分配到的網卡資源,而該網卡的PF所具有的完整資源仍能用于最右側兩個虛擬機對模擬設備的訪問路徑。一個具備SR-IOV特性的設備通過VMM配置可以在PCI配置空間中呈現為多個VF,每個VF都配置了基地址寄存器(Base Address Register,BAR)的完整配置空間。VMM通過將一個或多個VF的配置空間映射到虛擬機的PCI配置空間中實現VF的分配。結合VT-d內存映射等技術,虛擬機可以直接訪問VF的內存空間,這就 能繞過VMM直接訪問I/ O設備。如下圖所示:

NFV關鍵技術:計算虛擬化之IO虛擬化

SR-IOV還實現了地址轉換服務(Address Translation Service,ATS)來提供更好的性能。通過緩存TLB到本地,I/O設備可以在發起PCI事務之前直接對DMA地址進行轉換,這樣就避免了在IOMMU中進行地址轉換時可能發生的缺頁情況。通過這種方式,綁 定到VF的虛擬機可 獲得與基于硬件I/O虛擬 化虛擬機接近的性能。但是與基于硬件I/O虛擬化較低的可擴展性相比,一個SR-IOV設備可以具有幾百個VF,因此SR-IOV具有更好的可擴展性。

MR-IOV(Multiple Root I/O Virtualization)擴展了SR-IOV規范。MR-IOV允許PCIe設備在多個有獨立PCI根的系統之間共享,這些系統通過基于PCIe轉換器的拓撲結構與PCIe設備或者PCIe-PCI橋相接。MR-IOV與SR-IOV相比,每個VH(Virtual Hierarchy,一個VH就是一個虛擬獨立的SR-IOV設備)擁有獨立的PCI Memory,IO,配置空間。如下圖是MR-IOV的作用,本來每個系統只有一個Host,兩個PCIe設備,但是有了MRA Switch之后,系統里面有2個Host,4個PCIe設備。

MR-IOV里有個重要概念:VH,Virtual Hirearchy:每個VH至少包含一個PCIe Switch,這個PCIe Switch是MRA Switch里面的一個虛擬組件。每個VH可以包含各種PCIe設備、MRA PCIe設備、或者PCIe-PCI橋的組合。如下圖,在MRA PCIe Switch中,可以有多個根端口Root Port,RP。

NFV關鍵技術:計算虛擬化之IO虛擬化

這樣,有了MR-IOV之后,軟件系統變成了下面這種,物理機之間也能相互通信,PCIe設備被多臺物理機共享。下圖中的SI就是虛擬機OS、VI就是虛擬機監視器VMM。

NFV關鍵技術:計算虛擬化之IO虛擬化

原文地址:https://zhuanlan.51cto.com/art/202112/696128.htm

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国内精品视频在线观看 | 色爽| 久久五月天婷婷 | 红杏首页| 欧美大片aaaa在线观看 | 鲁管视频| 亚洲欧美另类久久久精品2019 | 精品网站www | 99精品国产一区二区三区 | 欧美日本免费一区二区三区 | 久久久久国产精品免费免费搜索 | 欧美一区不卡 | 国产成人在线视频 | 日韩精品一区在线 | av免费在线观看网站 | 亚洲精品二区 | 免费成人在线观看 | 日本理论在线 | 国产精品免费久久久久久久久久中文 | 日韩精品无码一区二区三区 | 一级在线| www.久久精品| 欧美一区永久视频免费观看 | 国产综合视频在线观看 | 国产精品亚洲自拍 | 日韩欧美一区在线 | 亚洲一区二区美女 | 国产中文字幕一区 | 91久久国产综合久久91精品网站 | 亚洲国产精品一区二区第一页 | 欧美怡红院视频一区二区三区 | 国产精品一区二区在线观看 | 久久久久国产精品午夜一区 | 国产精品久久久亚洲 | 精品日韩| 国产一区 | 成人综合av | 狠狠操av | 一区二区三区亚洲 | 成人av网站在线观看 | 欧美日韩综合精品 |