用于安全地處理與物理功能驅動器的虛擬功能驅動器通信的方法、系統(tǒng)和裝置制造方法
【專利摘要】在輸入/輸出虛擬化使能計算環(huán)境中,一種用于安全地處理與計算裝置的物理功能驅動器的虛擬功能驅動器通信的裝置、方法和系統(tǒng)包括:保持虛擬功能驅動器的通信簡檔;以及將通信簡檔應用于從虛擬功能驅動器到物理功能驅動器的通信,以確定通信是否呈現(xiàn)安全和/或性能條件。如果檢測到安全和/或性能條件,則所述裝置、方法和系統(tǒng)可禁用虛擬功能驅動器。
【專利說明】用于安全地處理與物理功能驅動器的虛擬功能驅動器通信的方法、系統(tǒng)和裝置
【背景技術】
[0001]虛擬化表示使用計算機軟件(例如,“虛擬機”或“系統(tǒng)鏡像”)來模擬或以其它方式實現(xiàn)物理計算裝置的功能或特征,以使得物理計算資源能夠被共享。例如,多個虛擬機(VM)能夠同時在相同物理計算系統(tǒng)上運行。在輸入輸出(I/O)裝置的情況下,虛擬化技術能夠被用于允許多個虛擬機共享相同的I/O硬件資源。
[0002]“云”計算經(jīng)常表示通常由許多計算機服務器對作為服務的計算資源的提供,所述許多計算機服務器在距向其請求服務的位置遙遠的(一個或多個)位置處被聯(lián)網(wǎng)在一起。可使用虛擬化來分配云服務器或其資源的各部分。在云環(huán)境中,多個系統(tǒng)鏡像(SI)可在獨立聯(lián)網(wǎng)服務器的不同處理部件上執(zhí)行。
[0003]從安全或性能角度,虛擬化環(huán)境(諸如,VM和系統(tǒng)鏡像(SI))能夠被利用惡意軟件破壞或以其它方式受到損害。隨著VM或SI的數(shù)量增加,安全漏洞的風險、拒絕服務(DOS)攻擊和其它安全和/或性能相關問題也可能增加。
【專利附圖】
【附圖說明】
[0004]在附圖中作為例子而非作為限制圖示在本公開中描述的概念。為了說明的簡單和清楚,圖中圖示的元件未必按照比例繪制。例如,為了清楚,一些元件的尺寸可相對于其它元件被夸大。另外,在認為合適的情況下,參考標簽已在各圖之中被重復以指示對應或類似的元件。
[0005]圖1是用于在虛擬化計算裝置處理虛擬功能驅動器通信的系統(tǒng)的至少一個實施例的簡化方框圖;
圖2是圖1的計算裝置的虛擬化執(zhí)行環(huán)境的至少一個實施例的簡化方框圖;和圖3是用于分析來自圖1的系統(tǒng)中的虛擬功能驅動器的通信并且確定是否禁止虛擬功能驅動器的方法的至少一個實施例的簡化流程圖。
【具體實施方式】
[0006]盡管本公開的概念容許各種修改和替代形式,但已在附圖中作為例子示出了其特定實施例并且將會在這里詳細地描述該特定實施例。然而,應該理解,并不意圖將本公開的概念限制于公開的特定形式,而是相反地,意圖是覆蓋符合本公開和所附權利要求的所有修改、等同物和替代物。
[0007]在下面的描述中,闡述了許多特定細節(jié)(諸如,邏輯實現(xiàn)方式、操作碼、用于指定操作數(shù)的方式、資源分割/共享/復制實現(xiàn)方式、系統(tǒng)部件的類型和相互關系以及邏輯分割/集成選擇)以便提供對本公開的更徹底的理解。然而,本領域技術人員將會理解,可在沒有這種特定細節(jié)的情況下實踐本公開的實施例。在其它實例中,控制結構、門級電路和完全軟件指令序列未被詳細示出以免模糊這里描述的概念的描述。利用所包括的描述,本領域普通技術人員將會能夠在沒有過度實驗的情況下實現(xiàn)合適的功能。
[0008]在說明書中對“ 一個實施例”、“實施例”、“示例性實施例”等的提及指示所描述的實施例可包括特定特征、結構或特性,但每個實施例可不必包括所述特定特征、結構或特性。此外,這種短語未必表示相同實施例。另外,當結合實施例描述特定特征、結構或特性時,無論是否明確地描述,均認為結合其它實施例實現(xiàn)這種特征、結構或特性在本領域技術人員的知識范圍內(nèi)。
[0009]這里描述的概念的實施例可被實現(xiàn)于硬件、固件、軟件或其任何組合中。實現(xiàn)在計算機系統(tǒng)中的實施例可包括部件之間的一個或多個點對點或基于總線的互連。這里描述的概念的實施例還可被實現(xiàn)為由一個或多個機器可讀或計算機可讀存儲介質攜帶或存儲在所述一個或多個機器可讀或計算機可讀存儲介質上的指令,所述指令可由一個或多個處理器讀取并且執(zhí)行。機器可讀或計算機可讀存儲介質可被體現(xiàn)為用于以機器(例如,計算裝置)可讀的形式存儲或傳送信息的任何裝置、機構或物理結構。例如,機器可讀或計算機可讀存儲介質可被體現(xiàn)為(一個或多個)只讀存儲器(ROM)裝置;(一個或多個)隨機存取存儲器(RAM)裝置;磁盤存儲介質;光學存儲介質;閃存裝置;迷你或微型SD卡、存儲棒等。
[0010]在附圖中,為了容易描述,可示出示意性元件(諸如,表示裝置、模塊、指令塊和數(shù)據(jù)元素的元件)的特定布置或排序。然而,本領域技術人員應該理解,附圖中的示意性元件的特定排序或布置并不意圖暗示需要處理的特定次序或順序或者過程的分離。另外,在附圖中包括示意性元件不意圖暗示:在所有實施例中需要這種元件,或者由這種元件表示的特征不可被包括在一些實施例中或在一些實施例中與其它元件組合。
[0011]通常,可使用任何合適形式的機器可讀指令(諸如,軟件或固件應用、程序、函數(shù)、模塊、例程、過程、進程、插件、小應用程序、窗口小部件、代碼片段和/或其它)實現(xiàn)用于表示指令塊的示意性元件,并且可使用任何合適的編程語言、庫、應用編程接口(API)和/或其它軟件開發(fā)工具實現(xiàn)每個這種指令。例如,可使用Java、C++和/或其它編程語言實現(xiàn)一些實施例。類似地,可使用任何合適的電子布置或結構(諸如,寄存器、數(shù)據(jù)存儲、表、記錄、陣列、索引、散列、映射、樹、列表、圖形、文件(任何文件類型)、文件夾、目錄、數(shù)據(jù)庫和/或其它)實現(xiàn)用于表示數(shù)據(jù)或信息的示意性元件。
[0012]另外,在附圖中,在連接元件(諸如,實線或虛線或箭頭)被用于圖示兩個或更多的其它示意性元件之間或之中的連接、關系或關聯(lián)的情況下,不存在任何這種連接元件并不意圖暗示不能夠存在連接、關系或關聯(lián)。換句話說,元件之間的一些連接、關系或關聯(lián)可能未被示出在附圖中以免模糊本公開。另外,為了容易圖示,單個連接元件可被用于表示元件之間的多個連接、關系或關聯(lián)。例如,在連接元件表示信號、數(shù)據(jù)或指令的通信的情況下,本領域技術人員應該理解,根據(jù)可能需要的,這種元件可表示用于實現(xiàn)通信的一個或多個信號路徑(例如,總線)。
[0013]在一些I/O虛擬化技術中,能夠使用映射到I/O裝置的物理功能(PF)的虛擬功能(VF)共享I/O裝置的物理資源。這種物理“功能”的一個例子是I/O裝置的個體通信端口(例如,以太網(wǎng)端口)。虛擬化I/O系統(tǒng)中的每個VF和PF具有使應用軟件能夠與該功能通信或實現(xiàn)該功能的關聯(lián)裝置驅動器,例如系統(tǒng)軟件。例如,在一些實施例(例如,外圍部件互連(PCI)和/或PCI Express裝置)中,每個VF驅動器能夠支持用于I/O相關功能的唯一和/或分離的數(shù)據(jù)路徑。這能夠允許單個I/O端口的帶寬被分割為更小的“片”,所述更小的片可被分配給特定VM、SI或“訪客”。為了容易討論,在這里使用術語“VM”,但術語“VM”意圖作為簡寫來表示VM、S1、訪客或無論是在單根(single-root)配置還是在多根(multiple-root)配置中實現(xiàn)虛擬化計算環(huán)境的其它類型的過程或機制。通過虛擬化實現(xiàn)的I/O資源的共享能夠增加I/O裝置的總利用率,并且由此減少虛擬系統(tǒng)的成本。
[0014]I/O虛擬化使能裝置能夠被配置為支持多個VF,以使得I/O裝置的每個物理功能能夠看起來像是多個分離的物理裝置。由可被稱為虛擬機管理器(VMM)或管理程序的軟件將每個VF分派給VM。在一些實施例中,多個VF能夠被分派給每個VM。物理功能驅動器(PF驅動器)管理I/O虛擬化能力裝置的物理功能,并且響應于它從多個虛擬功能驅動器(VF驅動器)接收的對資源的請求。
[0015]外圍部件互連(PCI)特別興趣小組已開發(fā)了用于以標準方式解決I/O裝置的共享的規(guī)范。一個這種規(guī)范是單根I/o虛擬化(SR-1OV)規(guī)范。SR-1OV規(guī)范的一些版本描述一種機制,通過該機制,VF驅動器能夠在受限情況下直接與I/O硬件通信,但對于將會具有超出VF驅動器的特定VM的影響的任何通信,必須經(jīng)過PF驅動器。如此,如果VF驅動器或它的關聯(lián)VM受到損害(例如,從安全和/或性能角度),則它發(fā)送給PF驅動器的通信能夠影響整個虛擬化I/O裝置。
[0016]現(xiàn)在參照圖1,用于檢測安全和/或性能損害VF驅動器的說明性系統(tǒng)100被體現(xiàn)在主機計算裝置I1的PF驅動器132中。如以下更詳細解釋的,PF驅動器132包括VF請求分析器134,VF請求分析器134監(jiān)測由PF驅動器132從虛擬化系統(tǒng)中的各種VF驅動器接收的通信。VF請求分析器134保持每個VM的簡檔,該簡檔包括在VM中運行的每個VF驅動器的安全和/或性能相關屬性。當PF驅動器132從特定VF驅動器接收通信時,VF請求分析器134使用關聯(lián)的VM簡檔來確定該通信是否有效。VF請求分析器134隨著時間監(jiān)測由特定VF驅動器發(fā)出的有效和/或無效通信的數(shù)量以確定VF驅動器是否可能受到損害。如果VF請求分析器134確定特定VF驅動器可能受到損害,則它能夠在不影響虛擬化系統(tǒng)的其它方面的情況下禁用該VF驅動器。通過識別和跟蹤可疑VF驅動器通信,系統(tǒng)100能夠將可疑VF驅動器的影響在其關聯(lián)VM中隔離,并且防止可疑VF驅動器不利地影響更大的虛擬化I/O系統(tǒng)。
[0017]說明性主機計算裝置110包括至少一個處理器112、存儲器116、輸入/輸出(I/O)子系統(tǒng)118、數(shù)據(jù)存儲裝置128和一個或多個外圍裝置136。主機計算裝置110可被體現(xiàn)為能夠執(zhí)行可由主機計算裝置110或任何其部件執(zhí)行的這里描述的功能和特征的任何合適類型的服務器計算機或其它計算裝置。例如,主機計算裝置110可被體現(xiàn)為計算機,個人計算機(PC)、桌上型計算機、膝上型計算機、筆記本計算機、手持式計算機、服務器,服務器陣列或服務器農(nóng)場、web服務器、網(wǎng)絡服務器、企業(yè)服務器、互聯(lián)網(wǎng)服務器、工作站、迷你計算機、大型計算機、超級計算機、網(wǎng)絡器具、web器具、分布式計算系統(tǒng)、多處理器系統(tǒng)、基于處理器的系統(tǒng)、或任何前述各項的組合和/或其它。
[0018]說明性處理器112包括至少一個處理器核114(例如,微處理器、微控制器、數(shù)字信號處理器和/或其它)。除了一定量的高速緩存之外,處理器112包括存儲器116,或者另外以通信方式耦合到存儲器116。存儲器116可被體現(xiàn)為任何類型的合適的存儲器裝置,諸如動態(tài)隨機存取存儲器裝置(DRAM)、同步動態(tài)隨機存取存儲器裝置(SDRAM)、雙倍數(shù)據(jù)速率動態(tài)隨機存取存儲器裝置(DDR SDRAM)和/或其它易失性存儲器裝置。
[0019]處理器112還以通信方式耦合到I/O子系統(tǒng)118。說明性I/O子系統(tǒng)118包括存儲器管理器120、一個或多個通信接口 124和一個或多個通信端口 126。說明性存儲器管理器120可包括存儲器控制器(例如,存儲器控制器子系統(tǒng)或北橋)。在說明性實施例中,存儲器管理器120包括促進或以其它方式輔助主機計算裝置110的物理功能的虛擬化(并且特別地,I/O子系統(tǒng)118的物理功能的虛擬化)的硬件和/或固件部件。例如,說明性存儲器管理器120通過在主機計算裝置110上運行的軟件過程來管理和促進虛擬存儲器的使用。
[0020]說明性通信接口 124可被體現(xiàn)為網(wǎng)絡接口控制器(NIC)、網(wǎng)卡或適配器、以太網(wǎng)控制器和/或其它。通常,通信接口 124包括使主機計算裝置110能夠與一個或多個有線或無線網(wǎng)絡138通信以允許主機計算裝置110與一個或多個遠程計算裝置(I)…(N)(其中N是正整數(shù))140、160通信的電子電路(例如,以太網(wǎng)、快速以太網(wǎng)、千兆比特以太網(wǎng)和/或其它)。通信接口 124可包括一個或多個有線和/或無線網(wǎng)絡接口以促進通過網(wǎng)絡138的有線和/或無線部分的通信。通信接口 124可與主機計算裝置110的母板是一體的,或者可被體現(xiàn)為經(jīng)總線(諸如,PCI或PC1-Express連接器)連接到母板的擴展卡。
[0021]說明性通信端口 126包括相應通信接口 124的特定輸入/輸出端口,通過這些輸入/輸出端口,實現(xiàn)與網(wǎng)絡138的通信。在說明性實施例中,通信端口 126被體現(xiàn)為能夠使用I/O虛擬化技術共享的硬件資源。
[0022]盡管未具體地不出,但I/O子系統(tǒng)118可包括輸入/輸出控制器(例如,輸入/輸出控制器子系統(tǒng)或南橋)和固件裝置。在其它實施例中,可使用具有其它配置的I/O子系統(tǒng)。例如,在一些實施例中,I/O子系統(tǒng)118可形成片上系統(tǒng)(SoC)的部分,并且與處理器112和主機計算裝置110的其它部件一起被合并在單個集成電路芯片上。如此,將會理解,在一些實施例中,I/O子系統(tǒng)118的每個部件可位于共同集成電路芯片上。
[0023]I/O子系統(tǒng)118以通信方式耦合到數(shù)據(jù)存儲裝置128。數(shù)據(jù)存儲裝置128的各部分可被體現(xiàn)為用于存儲數(shù)據(jù)和/或計算機指令的任何合適的裝置,諸如盤存儲裝置(例如,硬盤)、物理和/或邏輯存儲裝置的網(wǎng)絡和/或其它。在圖1中示出的“靜態(tài)”計算環(huán)境中,說明性數(shù)據(jù)存儲裝置存儲操作系統(tǒng)130的至少部分。說明性操作系統(tǒng)130包括PF驅動器132,PF驅動器132包括VF請求分析器134。說明性操作系統(tǒng)130、PF驅動器132和VF請求分析器134被體現(xiàn)為一個或多個計算機化程序、邏輯和/或指令(例如,軟件和/或固件函數(shù)、例程、庫和/或其它)。為了更快處理或其它原因,操作系統(tǒng)130、PF驅動器132和/或VF請求分析器134的各部分可在操作期間被拷貝到存儲器116。
[0024]在一些實施例中,根據(jù)例如主機計算裝置110的預期使用,I/O子系統(tǒng)118可按照通信方式耦合到一個或多個外圍裝置136,諸如顯示器、觸摸板、小鍵盤、麥克風、揚聲器和/或其它。另外,應該理解,為了描述的清楚,主機計算裝置110可包括圖1中未圖示的其它部件、子部件和裝置。
[0025]網(wǎng)絡138可被體現(xiàn)為任何類型的有線和/或無線電信網(wǎng)絡。例如,網(wǎng)絡138可被體現(xiàn)為或以其它方式包括一個或多個公共或私人蜂窩網(wǎng)絡、電話、數(shù)字訂戶線路(DSL)或線纜網(wǎng)絡、局域網(wǎng)或廣域網(wǎng)、公開可用全球網(wǎng)絡(例如,互聯(lián)網(wǎng))或其任何組合。例如,在一些實施例中,網(wǎng)絡138可被體現(xiàn)為或以其它方式包括全球移動通信系統(tǒng)(GSM)蜂窩網(wǎng)絡。另外,網(wǎng)絡138可根據(jù)促進主機計算裝置110和/或遠程計算裝置140、160 (諸如,路由器、交換機、中間計算機和/或其它)之間或之中的通信的需要而包括任何數(shù)量的另外的裝置。根據(jù)例如網(wǎng)絡138的特定類型或配置,任何合適的通信協(xié)議(例如,TCP/IP)可被用于通過網(wǎng)絡138實現(xiàn)通信。
[0026]遠程計算裝置140、160可被體現(xiàn)為任何合適類型的計算機或其它電子裝置。例如,遠程計算裝置140、160中的每一個或任何一個可被體現(xiàn)為以上在主機計算裝置110和/或其它的描述中提及的計算裝置的類型的任何一種。通常,遠程計算裝置140、160包括與以上關于主機計算裝置110描述的硬件部件相似或類似的硬件部件(例如,處理器、存儲器、I/O子系統(tǒng)、數(shù)據(jù)存儲裝置、通信電路)。說明性遠程計算裝置140、160各自包括至少一個處理器142、162。說明性處理器142、162包括至少一個處理器核144、164。除了一定量的高速緩存之外,處理器142、162各自包括存儲器146、166,或者另外以通信方式耦合到存儲器146、166。處理器142、162還以通信方式分別耦合到I/O子系統(tǒng)148、168。說明性I/O子系統(tǒng)148、168各自包括通信接口 150、170,并且以通信方式耦合到數(shù)據(jù)存儲裝置152、172。在一些實施例中,I/O子系統(tǒng)148、168可按照通信方式耦合到一個或多個外圍裝置154,174ο
[0027]通常,主機計算裝置110和遠程計算裝置140、160的相應部件如圖1中所示那樣通過一個或多個信號路徑以通信方式耦合。這種信號路徑可被體現(xiàn)為能夠促進相應裝置之間的通信的任何類型的有線或無線信號路徑。例如,信號路徑可被體現(xiàn)為任何數(shù)量的導線、印刷電路板軌跡、過孔、總線、點對點互連、中間裝置和/或其它。而且,一般而言,上面描述的計算裝置的部件中的一些可被合并在母板上,而其它部件可經(jīng)例如外圍端口按照通信方式耦合到母板。
[0028]現(xiàn)在參照圖2,說明性虛擬化軟件執(zhí)行環(huán)境200被建立在主機計算裝置110上以執(zhí)行I/O虛擬化。軟件執(zhí)行環(huán)境200包括虛擬機監(jiān)視器(VMM)或管理程序232,VMM或管理程序232是特權軟件部件,該特權軟件部件促進和管理I/O子系統(tǒng)硬件242 (例如,通信端口126或通信接口 124的其它物理資源)的虛擬化并且可另外促進和管理主機計算裝置110的其它物理資源(例如,存儲器和/或處理器資源)的虛擬化。在說明性單根實施例中,VMM或管理程序232允許多個訪客操作系統(tǒng)(I)…(L)(其中L是正整數(shù))216,226和/或其它訪客應用在分離的虛擬機VM(I)…(L)中在主機計算裝置110上同時或逐次執(zhí)行。在多根實施例中,VMM或管理程序232允許和管理在不同計算資源(例如,多個服務器)上同時或逐次執(zhí)行的多個訪客(例如,SI)。在說明性實施例中,VMM或管理程序232由操作系統(tǒng)130在主機計算裝置110的高特權或“根”模式中執(zhí)行。如此,VMM或管理程序232和它的子部件(例如,PF驅動器132和/或它的任何子模塊)可具有對I/O子系統(tǒng)硬件資源242和/或主機計算裝置110的其它硬件資源的基本上完全的控制。
[0029]虛擬機210、220作為訪客在VMM 232上執(zhí)行。也就是說,由VMM 232在低特權、非特權或非根模式中執(zhí)行VM 210、220。因此,與較高特權操作系統(tǒng)130相比,訪客操作系統(tǒng)216、226是較小特權操作系統(tǒng)。由VM 210、220中的每一個執(zhí)行的操作系統(tǒng)可以相同或不同。在一些實施例中,操作系統(tǒng)130、216、226中的任何一個或多個可被體現(xiàn)為可從華盛頓的雷德蒙的微軟公司商購獲得的WINDOWS操作系統(tǒng)、可從許多銷售商(諸如,北卡羅來納的Raleigh的Red Hat)商購獲得的LINUX操作系統(tǒng)、和/或其它。
[0030]操作系統(tǒng)216、226中的每一個可執(zhí)行許多(J,K)虛擬功能(VF)驅動器212、214、222、224,并且基于相應的操作系統(tǒng)216、226、相應VM 210、220的預期使用和/或其它準則,VF驅動器212、214、222、224中的每一個或任何一個可以相似或不同。
[0031]VMM 232翻譯每個操作系統(tǒng)216、226的操作以在每個操作系統(tǒng)216、226和I/O子系統(tǒng)硬件242和/或主機計算裝置110的其它硬件(例如,存儲器、處理器等)之間提供抽象等級。在說明性實施例中,VMM 232為每個操作系統(tǒng)216、226提供主機計算裝置110的一些或全部硬件部件的硬件抽象218、228。
[0032]關于I/O虛擬化,說明性VMM 232提供物理I/O裝置功能244 (例如,以太網(wǎng)端口)的硬件抽象作為共享I/o資源250或使物理I/O裝置功能244 “虛擬化”為共享I/O資源250。在一些實施例中,I/O裝置功能能夠被抽象為兩個功能類型:物理功能(PF)和虛擬功能(VF),可根據(jù)SR-1OV規(guī)范配置這兩個功能類型。例如,PF可以是全網(wǎng)絡通信(例如,PC1-Express)功能,該功能包括某些擴展能力以配置和管理I/O虛擬化功能,而VF可以是“輕型”或更受限的網(wǎng)絡通信功能,該功能包含用于數(shù)據(jù)傳遞的必要資源但具有最小化的配置資源組。如上所提到的,PF 244具有對應PF驅動器132,并且每個VF (I)...(M) 246,248具有對應 VF 驅動器 212、214、222、224。VF 驅動器 212、214、222、224 實現(xiàn)相應 VM 210,220和PF驅動器132之間的通信(例如,數(shù)據(jù)的發(fā)送和接收)。
[0033]VF 246、248中的一個或多個由其中包括PF驅動器132 (還可被稱為“主驅動器”)的VMM 232分派給每個VM 210、220。VMM 232的配置管理器或與VMM 232關聯(lián)的配置管理器配置并且管理VF 246、248和它們關聯(lián)的存儲器資源。VMM 232也實現(xiàn)VF驅動器212、214、222、224和PF驅動器132之間的通信(例如,使用共享虛擬存儲器頁)。使VF驅動器212、214、222、224能夠與PF驅動器132通信的一個或多個通信信道230能夠是硬件和/或軟件通信信道。例如,在一些實施例中,(一個或多個)通信信道230可包括PC1-Express裝置和/或基于軟件的地址翻譯技術。
[0034]說明性PF驅動器132管理I/O子系統(tǒng)硬件242的全局功能并且配置共享資源250。PF驅動器132在VMM 232中執(zhí)行,并且因此在比VF驅動器212、214、222、224操作的環(huán)境更有特權的環(huán)境中操作。PF驅動器132允許VMM 232訪問共享I/O資源250并且能夠執(zhí)行影響整個I/O裝置的操作。因此,PF驅動器132在持久的環(huán)境中執(zhí)行,在任何VF驅動器之前被加載,并且在所有VF驅動器已被卸載之后被卸載。
[0035]配置說明性虛擬化I/O環(huán)境,以使得全局地影響所有VM 210,220的VF驅動器通信應該必須經(jīng)過PF驅動器132,而低風險操作可被直接從VF驅動器212、214、222、224傳送到I/O子系統(tǒng)硬件242。I/O子系統(tǒng)硬件242和虛擬化I/O環(huán)境之間的通信發(fā)生在一個或多個通信信道240上,在說明性實施例中,所述一個或多個通信信道240是硬件通信信道。
[0036]如上所提及的,PF驅動器132包括VF請求分析器子模塊134。繼而,說明性VF請求分析器子模塊134包括VM剖析器(profiler)子模塊234和VF禁用器子模塊236。說明性VF請求分析器134、VM剖析器234和VF禁用器236被體現(xiàn)為計算機化模塊、例程、過程等(例如,軟件)。如以下參考圖3進一步所述的,VM剖析器234創(chuàng)建并且保持每個VM 210、220的簡檔238,簡檔238包括與在相應的VM 210,220中運行的每個VF驅動器212、214、222,224關聯(lián)的安全和/或性能屬性。在操作中,當PF驅動器132從各個VF驅動器212、214、222、224接收通信(例如,對共享I/O資源250的請求)時,VF請求分析器134基于VM簡檔238的對應屬性來分析通信并且根據(jù)簡檔屬性確定通信有效還是無效。如果VF請求分析器134例如基于有效或無效通信的數(shù)量、頻率或組合確定VF驅動器212、214、222、224可能例如從安全和/或性能角度受到損害,則VF禁用器236能夠禁用受到損害的VF驅動器 212、214、222、224。
[0037]說明性VM簡檔238被實現(xiàn)為VF請求分析器134可在虛擬化環(huán)境200中訪問的一個或多個數(shù)據(jù)存儲。例如,在一些實施例中,VM簡檔238被體現(xiàn)為包括整數(shù)數(shù)組的軟件數(shù)據(jù)結構,其中數(shù)組中的每個整數(shù)對應于PF驅動器132能夠從特定VM或VF驅動器接收的某個類型的通信的允許的數(shù)量。簡檔238能夠最初由系統(tǒng)管理員設置(例如,使用配置工具,諸如ethtool),或者“默認”簡檔238能夠由軟件設計者提供并且后來由系統(tǒng)管理員或由PF驅動器132修改。替代地或者附加地,VM簡檔238能夠由PF驅動器132在運行時間動態(tài)地修改。例如,如果隨著時間VF請求分析器134注意到來自特定VM的通信的某個模式,則該特定VM的VM簡檔238可在運行時間被修改。
[0038]在一些實施例中,與VM簡檔238關聯(lián)的屬性指定與不同請求類型關聯(lián)的限制。在許多情況中,來自VF驅動器212、214、222、224的通信是訪問或使用共享I/O資源250中的一個或多個的請求。不同類型的通信可具有不同的預先指定格式,并且VF請求分析器134能夠被配置為基于通信是否符合預期格式來確定通信是否有效。PF驅動器可從VF驅動器接收的通信消息的類型的一些說明性例子包括:訪問虛擬通信信道(或其它資源)的請求、PF驅動器為指定通信端口(例如,虛擬站接口或VSI)添加一個或多個單播或多播地址過濾器的請求、PF驅動器為指定通信端口(例如,VSI)去除一個或多個單播或多播過濾器的請求、PF驅動器為指定通信端口(例如,VSI)添加一個或多個虛擬局域網(wǎng)(VLAN)標記過濾器的請求、和PF驅動器為指定通信端口(例如,VSI)去除一個或多個VLAN標記濾波器的請求、和/或其它。
[0039]可被包含在VM簡檔238中的屬性類型的一些說明性例子包括:對硬件資源請求的數(shù)量(總數(shù)和/或一定時間段上的數(shù)量)的限制、訪問控制列表(例如,VM或VF驅動器被允許發(fā)送給PF驅動器的消息類型的列表,存儲在計算機存儲器中)、消息速度限制(例如,VM或VF驅動器能夠在一定時間段上發(fā)送給PF驅動器的消息的最大數(shù)量)、對VM或VF驅動器能夠發(fā)送給PF驅動器的“無特權”消息的數(shù)量(總數(shù)和/或一定時間段上的數(shù)量)的限制(其中“無特權”可指示特定消息或消息類型不在訪問控制列表上)、對VM或VF驅動器能夠發(fā)送給PF驅動器的有效但“錯誤形式”的消息的數(shù)量(總數(shù)和/或一定時間段上的數(shù)量)的限制(其中“錯誤形式”意味著消息不符合預期消息格式)、對有效但請求訪問未分配資源的請求的數(shù)量的限制、和特定VM或VF驅動器被允許請求由PF驅動器添加或去除的過濾器(例如,媒體訪問控制或MAC過濾器、VLAN過濾器和/或其它)的列表??杀话ㄔ赩M簡檔238中的其它類型的屬性包括:對通信類型的特定組合的限制、對通信(有效通信或無效通信)的總數(shù)的限制和對VM或VF驅動器能夠發(fā)送給PF驅動器的有效通信的總數(shù)(總數(shù)和/或一定時間段上的數(shù)量)的限制。能夠針對給定VM中的所有VF驅動器定義屬性,或者針對VM中的每個VF驅動器分別定義屬性。替代地,能夠針對所有VM以相同方式定義屬性或者針對不同VM不同地定義屬性。
[0040]現(xiàn)在參照圖3,示出了可由VF請求分析器134的各種模塊作為計算機化邏輯和/或指令執(zhí)行的說明性方法300。在塊310,方法300分析來自VF驅動器212、214、222、224的輸入通信(例如,數(shù)據(jù)包和/或訪問或使用共享資源250的請求),確定通信類型(例如,請求的類型),并且將通信與對應VM簡檔238的相關屬性進行比較。
[0041]在塊312,方法300基于為該特定通信類型指定的限制來確定輸入通信是否有效。例如,如果消息格式不與預期格式對應,或者如果消息類型不在適用的訪問控制列表上,或者消息請求未分配的資源或未允許的過濾器,則只要這種請求的數(shù)量未超過預定限制,通信就可以被確定為有效,或者通信可被確定為無效。
[0042]如果通信被確定為有效,則在塊314,有效通信的數(shù)量的計數(shù)增加。類似地,如果通信被確定為無效,則在塊316,該特定消息類型的無效消息的數(shù)量的計數(shù)增加。換句話說,能夠針對不同類型的無效消息分別保持無效消息的計數(shù)。在示例性塊318、320和322,方法300執(zhí)行各種測試以確定發(fā)出通信的VF驅動器是否可能受到損害(例如,從安全和/或性能角度)并且因此應該被禁用。在塊318,方法300確定計數(shù)是否超過在對應VM簡檔238中為該特定通信類型指定的限制。例如,如果通信在塊312被確定為錯誤形式請求,則在塊316,錯誤形式請求的計數(shù)增加,并且在塊318,將錯誤形式請求計數(shù)的當前值與錯誤形式請求限制(或錯誤形式請求的最大數(shù)量)進行比較。
[0043]如果通信類型的計數(shù)的當前值超過指定限制,則該方法前進至塊324。如果在塊318,通信類型的計數(shù)的當前值未超過指定限制,則在塊320,方法300確定計數(shù)是否超過指定時間段的指定限制。換句話說,塊320評估PF驅動器從VF驅動器接收通信的速率是否太高(例如,以便可能防止拒絕服務攻擊)。如果通信速率超過指定限制,則該方法前進至塊324。如果在塊320通信速率未超過指定限制,則在塊322,該方法確定已由PF驅動器從VF驅動器接收的不同通信類型的組合是否指示VF驅動器可能受到損害(例如,基于一個或多個其它通信類型的計數(shù)以及當前接收的通信類型的計數(shù)的當前值)。本領域技術人員應該理解,由塊318、320、322圖示的測試是示例性的,并且可由方法300相似地執(zhí)行其它測試以確定是否禁用VF驅動器。此外,應該理解,顯示塊318、320、322的特定次序是說明性的,并且不一定所有實施例都需要該特定次序。替代地,根據(jù)方法300的特定設計或實現(xiàn)方式的要求,可按照任何合適的次序執(zhí)行由方法300執(zhí)行以確定特定VM或VF驅動器是否可能受到損害的測試。
[0044]在塊324,作為塊318、320或322 (在其它實施例中,或者其任何組合或者其它測試)的結果,方法300禁用已被確定為可能(或實際上)受到損害的VF驅動器。為了禁用VF驅動器,方法300 (或者更具體地講,PF驅動器132)重新配置受到損害的VF驅動器,以使得在PF驅動器未重新使能受到損害的VF驅動器的訪問的情況下,受到損害的VF驅動器不能與(一個或多個)網(wǎng)絡138或與I/O子系統(tǒng)硬件242交互。當被禁用時,受到損害的VF驅動器不能向PF驅動器132發(fā)送任何通信,并且因此不能影響其它VM和VF驅動器的I/O操作。然而,如果通信不滿足禁用傳送VF驅動器的任何條件,則在塊326,方法300滿足由VF驅動器發(fā)出的通信請求。為了滿足VF驅動器的請求,PF驅動器132分配在經(jīng)分析的通信中由VF驅動器請求的共享資源250。
[0045]例子
以下提供這里公開的裝置、系統(tǒng)和方法的說明性例子。裝置、系統(tǒng)和方法的實施例可包括以下描述的例子中的任何一個或多個和任何組合。
[0046]在例子中,一種輸入/輸出虛擬化使能計算裝置包括:請求分析器,用于確定來自多個虛擬功能驅動器的通信是否呈現(xiàn)安全和/或性能條件,并且基于來自被確定為呈現(xiàn)安全和/或性能條件的虛擬功能驅動器的通信的計數(shù)數(shù)量確定是否禁用虛擬功能驅動器。
[0047]在例子中,所述計算裝置可包括:虛擬功能剖析器,用于保持至少一個通信簡檔,所述至少一個通信簡檔包括與從虛擬化使能計算裝置的虛擬功能驅動器到物理功能驅動器的通信相關的數(shù)據(jù)。在例子中,所述通信簡檔可識別虛擬功能驅動器被允許發(fā)送給物理功能驅動器的通信的一個或多個類型。在例子中,所述通信簡檔可包括與虛擬功能驅動器可發(fā)送給物理功能驅動器的通信的類型相關的至少一個限制。在例子中,所述通信簡檔可包括與在一定時間段期間虛擬功能驅動器被允許發(fā)送給物理功能驅動器的任何類型的通信的數(shù)量相關的限制。在例子中,所述通信簡檔可包括與虛擬功能驅動器被允許發(fā)送給物理功能驅動器的對一個或多個對物理資源的請求相關的數(shù)據(jù)。在例子中,所述計算裝置可包括至少一個計算機可訪問存儲介質,并且虛擬功能剖析器可在所述至少一個計算機可訪問存儲介質中被體現(xiàn)為軟件模塊。在例子中,所述計算裝置可包括:虛擬功能禁用器,用于響應于確定來自虛擬功能驅動器的通信的計數(shù)數(shù)量呈現(xiàn)安全和/或性能條件而禁用虛擬功能驅動器。在例子中,所述虛擬功能禁用器可確定:由物理功能驅動器從虛擬功能驅動器接收的、呈現(xiàn)安全和/或性能條件的通信的計數(shù)數(shù)量是否超過呈現(xiàn)安全和/或性能條件的通信的允許數(shù)量。在例子中,所述虛擬功能禁用器可響應于確定由物理功能驅動器接收的、呈現(xiàn)安全和/或性能條件的通信的計數(shù)數(shù)量超過呈現(xiàn)安全和/或性能條件的通信的允許數(shù)量而禁用虛擬功能驅動器。在例子中,所述計算裝置可包括至少一個計算機可訪問存儲介質,并且虛擬功能禁用器可在所述至少一個計算機可訪問存儲介質中被體現(xiàn)為軟件模塊。
[0048]在例子中,所述計算裝置可包括至少一個計算機可訪問存儲介質,并且物理功能驅動器可在所述至少一個計算機可訪問存儲介質中被體現(xiàn)為軟件模塊。在例子中,所述計算裝置可包括用于保持虛擬功能驅動器的簡檔的虛擬功能剖析器和用于基于簡檔禁用虛擬功能驅動器的虛擬功能禁用器,并且虛擬功能剖析器和虛擬功能禁用器可被體現(xiàn)為物理功能驅動器的軟件子模塊。在例子中,所述請求分析器可在計算裝置的較高特權執(zhí)行環(huán)境中運行,并且虛擬功能驅動器各自在計算裝置的較低特權環(huán)境中運行。在例子中,所述計算裝置可包括用于從虛擬功能驅動器接收通信的通信通道,并且通信通道可包括軟件通信通道和硬件通信通道中的至少一個。
[0049]在另一例子中,一種用于處理從輸入/輸出虛擬化使能計算裝置的多個虛擬功能驅動器到物理功能驅動器的通信的方法包括:在計算裝置處,保持多個通信簡檔,每個通信簡檔包括和虛擬功能驅動器與物理功能驅動器的通信相關的數(shù)據(jù);基于與虛擬功能驅動器對應的通信簡檔的至少部分來確定從虛擬功能驅動器到物理功能驅動器的通信是否呈現(xiàn)安全和/或性能條件;對從虛擬功能驅動器到物理功能驅動器的通信進行計數(shù);以及基于所計數(shù)的從虛擬功能驅動器到物理功能驅動器的通信確定是否禁用虛擬功能驅動器。
[0050]在例子中,所述方法可包括:對呈現(xiàn)安全和/或性能條件的、從虛擬功能驅動器到物理功能驅動器的通信進行計數(shù)。在例子中,所述方法可包括:基于所計數(shù)的呈現(xiàn)安全和/或性能條件的通信確定是否禁用虛擬功能驅動器。在例子中,所述通信簡檔中的至少一個可包括與錯誤形式通信的允許數(shù)量相關的數(shù)據(jù)。在例子中,所述通信簡檔中的至少一個可包括與通信是否被列出在訪問控制列表上相關的數(shù)據(jù)。在例子中,所述通信簡檔中的至少一個可包括與通信是否請求訪問計算裝置的未分配資源相關的數(shù)據(jù)。在例子中,所述通信簡檔中的至少一個可包括與被允許由通信設置的過濾器相關的數(shù)據(jù)。
[0051]在例子中,所述方法可包括:基于從虛擬功能驅動器發(fā)送給物理功能驅動器的某個類型的通信的數(shù)量禁用虛擬功能驅動器。在例子中,所述方法可包括:對從虛擬功能驅動器到物理功能驅動器的第一類型的通信進行計數(shù),對從虛擬功能驅動器到物理功能驅動器的第二類型的通信進行計數(shù),并且基于所計數(shù)的第一類型的通信和所計數(shù)的第二類型的通信來確定是否禁用虛擬功能驅動器。在例子中,所述方法可包括:對從虛擬功能驅動器到物理功能驅動器的所允許的通信進行計數(shù),并且基于所計數(shù)的從虛擬功能驅動器到物理功能驅動器的所允許的通信確定是否禁用虛擬功能驅動器。在例子中,一種計算裝置可包括:至少一個處理器;和計算機電路,耦合到所述至少一個處理器,并且計算機電路可被布置為使所述至少一個處理器執(zhí)行任何前面的方法。在例子中,至少一個計算機可訪問存儲介質可包括多個指令,響應于執(zhí)行所述多個指令,所述多個指令導致計算裝置執(zhí)行任何前面的方法。
[0052]在例子中,至少一個計算機可訪問存儲介質包括多個指令,響應于執(zhí)行所述多個指令,所述多個指令導致計算裝置:保持多個通信簡檔,其中每個通信簡檔包括和虛擬功能驅動器與物理功能驅動器的通信相關的數(shù)據(jù);基于與虛擬功能驅動器對應的通信簡檔的至少部分來確定從虛擬功能驅動器到物理功能驅動器的通信是否呈現(xiàn)安全和/或性能條件;對從虛擬功能驅動器到物理功能驅動器的通信進行計數(shù);以及基于所計數(shù)的從虛擬功能驅動器到物理功能驅動器的通信的數(shù)量,確定是否禁用虛擬功能驅動器。
[0053]在例子中,所述通信簡檔中的一個或多個可包括與下面各項中的至少一個相關的數(shù)據(jù):錯誤形式通信的允許數(shù)量、通信是否被列出在訪問控制列表上、通信是否請求訪問計算裝置的未分配資源、以及被允許由通信設置的過濾器。在例子中,所述指令可導致計算裝置:基于所計數(shù)的從虛擬功能驅動器發(fā)送給物理功能驅動器的某個類型的通信禁用虛擬功能驅動器。在例子中,所述指令可導致計算裝置:對從虛擬功能驅動器到物理功能驅動器的第一類型的通信進行計數(shù),對從虛擬功能驅動器到物理功能驅動器的第二類型的通信進行計數(shù),以及基于所計數(shù)的第一類型的通信和所計數(shù)的第二類型的通信確定是否禁用虛擬功能驅動器。在例子中,所述指令可導致計算裝置:對從虛擬功能驅動器到物理功能驅動器的所允許的通信進行計數(shù),并且基于所計數(shù)的從虛擬功能驅動器到物理功能驅動器的所允許的通信確定是否禁用虛擬功能驅動器。
[0054]盡管已在附圖和前面的描述中詳細地圖示和描述了本公開的概念,但這種圖示和描述在本質上要被視為是示例性的而非限制性的,應該理解,僅示出和描述了說明性實施例,并且希望保護符合本公開和敘述的權利要求的所有改變和修改。例如,可在SR-1OV規(guī)范或其它相似規(guī)范的情況下實現(xiàn)本公開的各方面,但不受此限制。進一步地,可在任何I/O虛擬化情況(包括單根和多根環(huán)境)中應用本公開的各方面,其中希望保護更大的虛擬化環(huán)境免于其受到損害的個體部件。
【權利要求】
1.一種輸入/輸出虛擬化使能計算裝置,包括: 請求分析器,用于確定來自多個虛擬功能驅動器的通信是否呈現(xiàn)安全和/或性能條件,并且基于來自被確定為呈現(xiàn)安全和/或性能條件的虛擬功能驅動器的通信的數(shù)量確定是否禁用虛擬功能驅動器。
2.如權利要求1所述的計算裝置,包括:虛擬功能剖析器,用于保持至少一個通信簡檔,所述至少一個通信簡檔包括與從所述虛擬化使能計算裝置的虛擬功能驅動器到物理功能驅動器的通信相關的數(shù)據(jù)。
3.如權利要求2所述的計算裝置,其中所述通信簡檔識別虛擬功能驅動器被允許發(fā)送給物理功能驅動器的通信的一個或多個類型。
4.如權利要求2或權利要求3所述的計算裝置,其中所述通信簡檔包括與虛擬功能驅動器可發(fā)送給物理功能驅動器的通信的類型相關的至少一個限制。
5.如權利要求2-4中任何一項所述的計算裝置,其中所述通信簡檔包括與在一定時間段期間虛擬功能驅動器被允許發(fā)送給物理功能驅動器的任何類型的通信的數(shù)量相關的限制。
6.如權利要求2-5中任何一項所述的計算裝置,其中所述通信簡檔包括與虛擬功能驅動器被允許發(fā)送給物理功能驅動器的一個或多個對物理資源的請求相關的數(shù)據(jù)。
7.如權利要求2-6中任何一項所述的計算裝置,包括:至少一個計算機可訪問存儲介質,其中所述虛擬功能剖析器在所述至少一個計算機可訪問存儲介質中被體現(xiàn)為軟件模塊。
8.如任一前面權利要求所述的計算裝置,包括:虛擬功能禁用器,用于響應于確定來自虛擬功能驅動器的通信的數(shù)量呈現(xiàn)安全和/或性能條件而禁用虛擬功能驅動器。
9.如權利要求8所述的計算裝置,其中所述虛擬功能禁用器確定:由物理功能驅動器從虛擬功能驅動器接收的、呈現(xiàn)安全和/或性能條件的通信的數(shù)量是否超過呈現(xiàn)安全和/或性能條件的通信的允許數(shù)量。
10.如權利要求9所述的計算裝置,其中所述虛擬功能禁用器響應于確定由物理功能驅動器接收的、呈現(xiàn)安全和/或性能條件的通信的數(shù)量超過呈現(xiàn)安全和/或性能條件的通信的允許數(shù)量而禁用虛擬功能驅動器。
11.如權利要求8-10中任何一項所述的計算裝置,包括:至少一個計算機可訪問存儲介質,其中所述虛擬功能禁用器在所述至少一個計算機可訪問存儲介質中被體現(xiàn)為軟件模塊。
12.如任一前面權利要求所述的計算裝置,包括:至少一個計算機可訪問存儲介質,其中所述物理功能驅動器在所述至少一個計算機可訪問存儲介質中被體現(xiàn)為軟件模塊。
13.如權利要求12所述的計算裝置,包括:用于保持虛擬功能驅動器的簡檔的虛擬功能剖析器和用于基于所述簡檔而禁用虛擬功能驅動器的虛擬功能禁用器,其中所述虛擬功能剖析器和虛擬功能禁用器被體現(xiàn)為物理功能驅動器的軟件子模塊。
14.如任一前面權利要求所述的計算裝置,其中所述請求分析器在計算裝置的較高特權執(zhí)行環(huán)境中運行,并且虛擬功能驅動器各自在計算裝置的較低特權環(huán)境中運行。
15.如任一前面權利要求所述的計算裝置,包括:通信通道,用于從虛擬功能驅動器接收通信,其中所述通信通道包括軟件通信通道和硬件通信通道中的至少一個。
16.一種用于處理從輸入/輸出虛擬化使能計算裝置的多個虛擬功能驅動器到物理功能驅動器的通信的方法,所述方法包括,在計算裝置處: 保持多個通信簡檔,每個通信簡檔包括和虛擬功能驅動器與物理功能驅動器的通信相關的數(shù)據(jù); 基于與虛擬功能驅動器對應的通信簡檔的至少部分來確定從虛擬功能驅動器到物理功能驅動器的通信是否呈現(xiàn)安全和/或性能條件; 對從虛擬功能驅動器到物理功能驅動器的通信的數(shù)量進行計數(shù);以及 基于所計數(shù)的從虛擬功能驅動器到物理功能驅動器的通信的數(shù)量,確定是否禁用虛擬功能驅動器。
17.如權利要求16所述的方法,包括:對呈現(xiàn)安全和/或性能條件的、從虛擬功能驅動器到物理功能驅動器的通信的數(shù)量進行計數(shù)。
18.如權利要求17所述的方法,包括:基于呈現(xiàn)安全和/或性能條件的通信的數(shù)量,確定是否禁用虛擬功能驅動器。
19.如權利要求16-18中任何一項所述的方法,其中所述通信簡檔中的至少一個包括與錯誤形式通信的允許數(shù)量相關的數(shù)據(jù)。
20.如權利要求16-19中任何一項所述的方法,其中所述通信簡檔中的至少一個包括與通信是否被列出在訪問控制列表上相關的數(shù)據(jù)。
21.如權利要求16-20中任何一項所述的方法,其中所述通信簡檔中的至少一個包括與通信是否請求訪問計算裝置的未分配資源相關的數(shù)據(jù)。
22.如權利要求16-21中任何一項所述的方法,其中所述通信簡檔中的至少一個包括與被允許由通信設置的過濾器相關的數(shù)據(jù)。
23.如權利要求16-22中任何一項所述的方法,包括:基于從虛擬功能驅動器發(fā)送給物理功能驅動器的某個類型的通信的數(shù)量來禁用虛擬功能驅動器。
24.如權利要求16-23中任何一項所述的方法,包括:對從虛擬功能驅動器到物理功能驅動器的第一類型的通信的數(shù)量進行計數(shù),對從虛擬功能驅動器到物理功能驅動器的第二類型的通信的數(shù)量進行計數(shù),以及基于第一類型的通信的數(shù)量和第二類型的通信的數(shù)量確定是否禁用虛擬功能驅動器。
25.如權利要求16-24中任何一項所述的方法,包括:對從虛擬功能驅動器到物理功能驅動器的所允許的通信的數(shù)量進行計數(shù),并且基于從虛擬功能驅動器到物理功能驅動器的所允許的通信的數(shù)量確定是否禁用虛擬功能驅動器。
26.一種計算裝置,包括: 至少一個處理器;和 計算機電路,耦合到所述至少一個處理器,所述計算機電路被布置為使所述至少一個處理器執(zhí)行如權利要求16-25中任何一項所述的方法。
27.至少一個計算機可訪問存儲介質,包括多個指令,響應于執(zhí)行所述多個指令,所述多個指令導致計算裝置執(zhí)行如權利要求16-25中任何一項所述的方法。
【文檔編號】G06F9/455GK104321781SQ201380027883
【公開日】2015年1月28日 申請日期:2013年6月24日 優(yōu)先權日:2012年6月29日
【發(fā)明者】N.R.賈尼, S.L.納爾遜, G.D.卡明斯 申請人:英特爾公司