專利名稱:基于硬件隊列擴展的網卡虛擬化系統及其方法
技術領域:
本發明屬于系統虛擬化中的IO虛擬化領域,具體涉及一種多核網絡處理器平臺上基于硬件隊列擴展的網卡虛擬化系統及其方法。
背景技術:
近年來,計算機硬件計算能力不斷攀升,硬件成本下降,導致廉價硬件大量增加。 與之相關的一系列現實問題成為當前產業界關注的熱點管理成本攀升,安全性低,資源的利用率低下。而虛擬化技術具有隔離性、可合并、可遷移性等特點,被認為是優化當前產業界基礎IT架構,解決上述現實問題的最好解決方案。盡管虛擬化技術存在諸多優點,在產業界的應用卻還面臨著很多制約,其中性能開銷問題成為影響虛擬化技術應用的一個重要制約因素。虛擬化技術的發展經歷了處理器虛擬化,芯片虛擬化,IO虛擬化三個階段。現階段虛擬化的性能瓶頸已從處理器虛擬化轉向IO虛擬化對于偏重于IO訪問的應用,虛擬化的性能開銷十分明顯,有時可能達不到非虛擬化環境的1/3。另外對于多核架構的虛擬化系統,IO訪問更加頻繁,這就對IO性能,可靠性方面提出了更高的要求,網卡作為重要的IO設備更是如此。在此背景下,傳統的基于軟件實現的網卡虛擬化方案已不能滿足要求。
發明內容
本發明目的在于提供一種多核網絡處理器平臺上的網卡虛擬化系統,解決多核架構的虛擬平臺上對于偏重于IO訪問的應用尤其是網絡應用普遍存在的虛擬化的性能開銷大的問題,提高虛擬系統對網卡的訪問效率。為了解決現有技術中的這些問題,本發明提供的技術方案是一種多核網絡處理器平臺上基于硬件隊列擴展的網卡虛擬化系統,包括接口管理模塊,虛擬接口驅動模塊和網卡驅動模塊,其特征在于所述虛擬接口驅動模塊中虛擬接口由獨立中斷硬件隊列構成,硬件隊列與物理網卡綁定,為分區操作系統提供虛擬接口,所述接口管理模塊,虛擬接口驅動模塊和網卡驅動模塊通過域間通信機制進行控制交互,完成網絡通信。優選的,所述虛擬接口驅動模塊根據運行時狀態由所述接口管理模塊使能,使分區操作系統獲得訪問虛擬接口的權限,并為分區操作系統提供與虛擬接口交互的接口。優選的,所述接口管理模塊位于虛擬機監控器中,提供輕量級API管理虛擬接口并實時更新虛擬接口狀態信息,使用mailbox核間通信機制與驅動域進行控制交互。優選的,所述網卡驅動模塊位于宿主操作系統上,負責虛擬接口與物理網卡的數據及控制交互,當驅動域接收到mailbox中斷后,所述網卡驅動模塊調用相應中斷處理函數從相應虛擬接口獲得數據包,調用物理網卡驅動的發送函數,當物理網卡收到數據包后, 所述網卡驅動模塊根據所述接口管理模塊傳來的接口狀態信息數據發送至虛擬接口接收隊列。
本發明的另一目的在于提供一種多核網絡處理器平臺上基于硬件隊列擴展的網卡虛擬化方法,其特征在于所述方法包括以下步驟(I)所述虛擬接口驅動模塊通過加載參數在啟動分區操作系統時被加載;(2)所述接口管理模塊根通過mailbox中斷控制使能所述虛擬接口驅動模塊接 Π ;(3)所述網卡驅動模塊接受的中斷信號處理數據包,與物理網卡驅動交互完成網絡訪問。優選的,所述方法中所述分區操作系統是由虛擬機監控器加載,虛擬機監控器與分區是物理上平行,邏輯上主從的結構,虛擬機監控器處于主控地位,利用全局內存管理模塊控制分區加載。優選的,所述方法中所述全局內存管理模塊通過全局鏈表管理各操作系統可見資源,根據加載申請分配資源。本發明人經長期研究,采用了自虛擬化的方法,對物理網卡進行擴展。本發明將多核網絡處理器平臺上的具有獨立中斷的硬件隊列與物理網卡綁定,為每個客戶操作系統提供有硬件隊列封裝的虛擬接口,通過硬件保證了 IO隔離性。用硬件擴展功能和高效的核間中斷機制代替了傳統IO虛擬化的超級調用和中斷截獲來完成虛擬IO訪問,減少了虛擬機上下文轉移的次數,從而避免了 TLB失效率增加帶來的額外虛擬化開銷,有效地提高了虛擬化性能。網卡虛擬化系統進行網絡訪問的具體工作步驟如下虛擬機監控器為客戶虛擬機配置加載虛擬接口驅動;客戶虛擬機發出網絡IO訪問請求;將IO請求映射到物理網卡物理接口 ;物理網卡接口接受網絡報文,正確地分派給各個客戶虛擬機的虛擬接口,完成網絡通信。上述步驟主要包含兩個映射從虛擬機到物理網卡的映射以及從物理網卡接口到虛擬機的映射,本發明的主要目的在于實現一個可靠,安全,低虛擬化開銷的虛擬網卡系統,而其中地虛擬化開銷目標關鍵在于減少這兩個映射過程中虛擬化性能損耗,為了實現這一目的,本發明人遇到以下亟需解決的難題首先是實現物理網卡接口與虛擬接口擴展硬件隊列實時綁定問題有別于軟件虛擬化的中斷截獲和設備模擬,本發明中需要由屬主虛擬機判斷物理網卡接口的網絡報文屬于哪個虛擬機,即判斷物理網卡接受隊列應該綁定哪個擴展隊列,從而完成網絡報文的分配。其次是域間通信策略選擇問題所述網卡虛擬化系統中各個模塊分別位于不同的域上, 選擇一種高效的通信機制可以更有效地完成各個模塊之間的控制交互,大大提升網卡虛擬化系統的性能。本發明人經長期研究,找出上述問題的解決方法,具體方案如下(I)物理網卡接口與虛擬接口擴展硬件隊列實時綁定虛擬接口共同維護一個16位的中斷標識。每個虛擬接口用其所在核心ID來標示, 將網絡數據包封裝成異步消息隊列,每個消息中含有虛擬接口的ID信息。異步消息隊列由一組Work-Queue-Entry(WQE)結構體填充,WQE結構體中封裝了指向數據包首地址的指針。(2)域間通信策略選擇
所述網卡虛擬化系統在設計中,各個模塊間的通信并沒有涉及到網絡報文的傳輸,而僅僅作為一種控制傳遞的方式。本發明人經過實驗采用了基于mailbox的核間通信機制。Mailbox是多核處理器平臺上常見的一組核間中斷寄存器,一般為4個字節或8個字節,可以儲存命令號或數據,命令號指的是接收中斷方響應哪種動作,即通過傳遞過來的動作調用相應的中斷處理函數,動作傳遞可以被安全地用于中斷服務例程中。對于小塊數據傳遞或是命令傳遞,Mailbox中斷是非常高效的且不受處理器數量的限制。每個中斷僅需要總線上一個單一地址,每一位可被單獨地設置或清零。任意核可直接通過mailbox對其它核發出中斷。相對于現有技術中的方案,本發明的優點是本發明由硬件保證了 IO隔離,確保了系統的可靠性,與軟件IO虛擬化相比,本發明中虛擬機監控器僅負責虛擬接口的配置,不參與網絡IO通信過程,此外本發明利用硬件隊列的獨立中斷代替基于軟件實現方案中的中斷截獲和模擬過程,使得系統在多虛擬接口的環境下,有良好的性能。
下面結合附圖及實施例對本發明作進一步描述圖I為網卡虛擬化系統模塊框架圖;圖2為驅動域間的控制交互;圖3為虛擬化環境與非虛擬化環境下往返時延對比;圖4為虛擬機個數對硬件擴展虛擬網卡性能的影響。
具體實施例方式以下結合具體實施例對上述方案做進一步說明。應理解,這些實施例是用于說明本發明而不限于限制本發明的范圍。實施例中采用的實施條件可以根據具體廠家的條件做進一步調整,未注明的實施條件通常為常規實驗中的條件。實施例基于硬件隊列擴展的網卡虛擬化的實踐及試驗本實施例基于MIPS架構的多核網絡處理器目標開發板及PC機,開發板具體配置如下多核網絡處理器,擁有12個核,最高主頻為800MHz,基于MIPS指令集。測試網口 百兆網口(SGMII 接口)。PC 機配置處理器 Intel(R)Pentium(R)D CPU 3.00GHz,內存
2.OOGB。在本實施例中,網卡虛擬化系統模塊框架如圖I所示,處理器基于MIPS架構,支持在每個物理核上加載一個嵌入式linux,多核網絡處理器平臺上維護了 15個有獨立中斷的硬件隊列。本實驗例為每個虛擬接口維護一個授權表項,其中綁定了硬件隊列ID和核心ID, 客戶操作系統要發起一次IO訪問,首先發送請求給虛擬機監控器中的虛擬接口管理模塊, 虛擬機監控器查詢授權表,如果合法,則根據核心ID找到相應硬件隊列ID,注冊中斷,使能虛擬接口,將硬件隊列ID號反饋給客戶操作系統,并將更新的接口狀態信息傳給驅動域。 為vMM定義了一組輕量級API用來管理虛擬接口,如下所示
權利要求
1.一種基于硬件隊列擴展的網卡虛擬化系統,用于多核網絡處理器平臺,包括接口管理模塊、虛擬接口驅動模塊和網卡驅動模塊,其特征在于所述虛擬接口驅動模塊中虛擬接口由獨立中斷硬件隊列構成,硬件隊列與物理網卡綁定,為分區操作系統提供虛擬接口,所述接口管理模塊,虛擬接口驅動模塊和網卡驅動模塊通過域間通信機制進行控制交互。
2.根據權利要求I所述的基于硬件隊列擴展的網卡虛擬化系統,其特征在于所述虛擬接口驅動模塊根據運行時狀態由所述接口管理模塊使能,使分區操作系統獲得訪問虛擬接口的權限,并為分區操作系統提供與虛擬接口交互的接口。
3.根據權利要求I所述的基于硬件隊列擴展的網卡虛擬化系統,其特征在于所述接口管理模塊位于虛擬機監控器中,提供輕量級API管理虛擬接口并實時更新虛擬接口狀態信息,使用mailbox核間通信機制與驅動域進行控制交互。
4.根據權利要求I所述的基于硬件隊列擴展的網卡虛擬化系統,其特征在于所述網卡驅動模塊位于宿主操作系統上,負責虛擬接口與物理網卡的數據及控制交互,當驅動域接收到mailbox中斷后,所述網卡驅動模塊調用相應中斷處理函數從相應虛擬接口獲得數據包,調用物理網卡驅動的發送函數,當物理網卡收到數據包后,所述網卡驅動模塊根據所述接口管理模塊傳來的接口狀態信息數據發送至虛擬接口接收隊列。
5.一種多核網絡處理器平臺上基于硬件隊列擴展的網卡虛擬化方法,其特征在于所述方法包括以下步驟(1)所述虛擬接口驅動模塊通過加載參數在啟動分區操作系統時被加載;(2)所述接口管理模塊根通過mailbox中斷控制使能所述虛擬接口驅動模塊接口;(3)所述網卡驅動模塊接受的中斷信號處理數據包,與物理網卡驅動交互完成網絡訪問。
6.根據權利要求5所述的方法,其特征在于所述方法中所述分區操作系統是由虛擬機監控器加載,虛擬機監控器與分區是物理上平行,邏輯上主從的結構,虛擬機監控器處于主控地位,利用全局內存管理模塊控制分區加載。
7.根據權利要求6所述的方法,其特征在于所述方法中所述全局內存管理模塊通過全局鏈表管理各操作系統可見資源,根據加載申請分配資源。
全文摘要
本發明公開了一種基于硬件隊列擴展的網卡虛擬化系統,用于多核網絡處理器平臺,包括接口管理模塊、虛擬接口驅動模塊和網卡驅動模塊,其特征在于所述虛擬接口驅動模塊中虛擬接口由獨立中斷硬件隊列構成,硬件隊列與物理網卡綁定,為分區操作系統提供虛擬接口,所述接口管理模塊,虛擬接口驅動模塊和網卡驅動模塊通過域間通信機制進行控制交互。該系統利用硬件隊列的獨立中斷代替基于軟件實現方案中的中斷截獲和模擬過程,使得系統在多虛擬接口的環境下,有良好的性能。
文檔編號G06F9/455GK102609298SQ20121000692
公開日2012年7月25日 申請日期2012年1月11日 優先權日2012年1月11日
發明者吳俊敏, 朱小東, 朱峪, 趙小雨 申請人:中國科學技術大學蘇州研究院