本申請涉及計算機領(lǐng)域,尤其涉及一種網(wǎng)絡(luò)虛擬化方法及設(shè)備。
背景技術(shù):
::一般來說,虛擬機與物理機在生產(chǎn)環(huán)境下處于完全的網(wǎng)絡(luò)隔離狀態(tài),要么在2層(以太網(wǎng)級協(xié)議或TCP協(xié)議)隔離開,要么在3層(IP協(xié)議)上隔離開。這使得虛擬化環(huán)境下的生產(chǎn)系統(tǒng)網(wǎng)絡(luò)配置極為復(fù)雜。其實對于一般應(yīng)用來說,網(wǎng)絡(luò)隔離性的要求性并不高。例如典型場景是在虛擬機內(nèi)運行“要求物理機網(wǎng)絡(luò)環(huán)境”的第三方應(yīng)用程序,對于這種應(yīng)用,有時甚至沒有源代碼。這種情況下,網(wǎng)絡(luò)子系統(tǒng)的隔離性更多指的是物理機網(wǎng)絡(luò)資源在命名空間上的隔離,稱這種隔離性為“輕量級網(wǎng)絡(luò)隔離”。在虛擬化環(huán)境下,虛擬機與物理機運行的是各自獨立的操作系統(tǒng),它們的協(xié)議棧是完全獨立運行的。兩套協(xié)議棧在資源的命名上完全沒有交互,這導(dǎo)致了兩者完全無法實現(xiàn)網(wǎng)絡(luò)地址資源的良性共享,也就無法在虛擬機內(nèi)安全運行“要求物理機網(wǎng)絡(luò)環(huán)境”下的應(yīng)用程序了。現(xiàn)有技術(shù)中,有如下三種常規(guī)的網(wǎng)絡(luò)虛擬化技術(shù)方案:1.NAT技術(shù),即在物理機上通過NAT地址變換將流量導(dǎo)入導(dǎo)出到虛擬網(wǎng)絡(luò)上;2.橋接技術(shù),即在物理機上通過2層轉(zhuǎn)發(fā)技術(shù)將流量導(dǎo)入導(dǎo)出到虛擬網(wǎng)絡(luò)上;3.將虛擬機的網(wǎng)絡(luò)在3層以上徹底虛擬化,由虛擬網(wǎng)絡(luò)中的某個網(wǎng)關(guān)把流量轉(zhuǎn)發(fā)到物理網(wǎng)絡(luò)環(huán)境中。以上三種現(xiàn)有方案都可以做到完全隔離的目的,但對于輕量級網(wǎng)絡(luò)隔離場景過于笨重,甚至還有功能限制:1.NAT技術(shù),物理機操作系統(tǒng)必須維護復(fù)雜的地址轉(zhuǎn)換狀態(tài)機,在網(wǎng)絡(luò)轉(zhuǎn)發(fā)的核心路徑上還需要執(zhí)行昂貴的地址轉(zhuǎn)換操作,這種方法也難于實現(xiàn)在虛擬機中提供接受被動連接請求的網(wǎng)絡(luò)服務(wù);2.橋接技術(shù),物理機操作系統(tǒng)必須維護復(fù)雜的地址轉(zhuǎn)換狀態(tài)機和執(zhí)行地址轉(zhuǎn)換,代價雖然比NAT方法低,但在2層進行網(wǎng)絡(luò)虛擬化的缺點在于我們需要事先確定好虛擬2層網(wǎng)絡(luò)的配置、2層地址轉(zhuǎn)換等問題,維護整個環(huán)境的綜合成本甚至大于NAT技術(shù)的成本。3.將虛擬機的網(wǎng)絡(luò)在3層以上徹底虛擬化,這種方法比橋接更進一步。虛擬網(wǎng)絡(luò)與物理網(wǎng)絡(luò)的邊界可能位于另一臺機器上,這其間的配置管理代價和運行開銷都非常大,很難獲得與物理機協(xié)議棧上相妨的性能指標(biāo)。技術(shù)實現(xiàn)要素:本申請的一個目的是提供一種網(wǎng)絡(luò)虛擬化方法及設(shè)備,能夠解決輕量級網(wǎng)絡(luò)隔離場景中隔離方案過于笨重的問題。根據(jù)本申請的一個方面,提供了一種網(wǎng)絡(luò)虛擬化方法,該方法包括:將物理機的網(wǎng)絡(luò)配置鏡像到虛擬機上;對虛擬機上的網(wǎng)絡(luò)協(xié)議棧加以端口使用限制;由所述物理機為所述虛擬機分配僅供其使用的端口;其中,所述端口使用限制包括禁止傳輸層通信協(xié)議連接的目標(biāo)地址使用物理機上的傳輸層通信協(xié)議端口,以及禁用原始套接字接口。進一步地,上述方法中,將物理機的網(wǎng)絡(luò)配置鏡像到虛擬機上包括:將所述物理機上的網(wǎng)卡的配置鏡像到虛擬機上;關(guān)閉所述虛擬機上的網(wǎng)卡的地址解析協(xié)議;將所述物理機上的網(wǎng)卡的網(wǎng)際互連的協(xié)議地址鏡像到所述虛擬機上,但將所述虛擬機上的網(wǎng)絡(luò)掩碼設(shè)置為32;將所述物理機上的默認(rèn)路由器設(shè)為所述虛擬機的默認(rèn)路由器,并將虛 擬機的默認(rèn)路由器的物理地址設(shè)置成虛構(gòu)的地址;將所述物理機上的地址解析協(xié)議信息包過濾系統(tǒng)的規(guī)則鏡像到對應(yīng)的虛擬機。進一步地,上述方法中,將物理機的網(wǎng)絡(luò)配置鏡像到虛擬機上,還包括:將所述物理機上的多隊列和中斷配置鏡像到虛擬機上。進一步地,上述方法中,將物理機的網(wǎng)絡(luò)配置鏡像到虛擬機上,還包括:將所述物理機上的域名系統(tǒng)配置鏡像到虛擬機上。進一步地,上述方法中,所述端口使用限制還包括:除了傳輸層通信協(xié)議,只允許預(yù)設(shè)協(xié)議的流量進出所述虛擬機,所述預(yù)設(shè)協(xié)議的流量包括地址解析協(xié)議請求和響應(yīng)的流量及預(yù)設(shè)類型的網(wǎng)際控制報文協(xié)議的流量。進一步地,上述方法中,由所述物理機為所述虛擬機分配僅供其使用的端口,包括:所述物理機根據(jù)所述虛擬機的鏡像端口的分配請求,建立一個傳輸控制協(xié)議套接字;所述物理機檢查所述虛擬機的鏡像端口的分配請求的類型,若是綁定系統(tǒng)調(diào)用,則執(zhí)行綁定系統(tǒng)調(diào)用,在傳輸控制協(xié)議綁定哈希表中占據(jù)一個鏡像端口,若是連接系統(tǒng)調(diào)用,則執(zhí)行連接系統(tǒng)調(diào)用,在傳輸控制協(xié)議已經(jīng)建立的哈希表中占據(jù)一個鏡像端口,若占據(jù)成功,則在所述傳輸控制協(xié)議套接字中保存對應(yīng)的虛擬機標(biāo)識,并標(biāo)識該傳輸控制協(xié)議套接字為鏡像套接字,所述鏡像套接字中包括所述占據(jù)的鏡像端口,并向虛擬機返回分配功能的響應(yīng);若占據(jù)不成功,則關(guān)閉所述傳輸控制協(xié)議套接字,并向虛擬機返回分配失敗的響應(yīng)。進一步地,上述方法中,由所述物理機為所述虛擬機分配僅供其使用的端口之后,還包括:虛擬機將經(jīng)過其傳輸控制協(xié)議套接字層、傳輸控制協(xié)議棧和網(wǎng)絡(luò)之間 互連的協(xié)議層后,輸出的傳輸控制協(xié)議及網(wǎng)絡(luò)之間互連的協(xié)議的報文不通過其網(wǎng)卡,直接傳遞到所述物理機的操作系統(tǒng)中,其中,所述報文為依次封裝好目標(biāo)4、3、2層地址的報文;所述物理機上的地址解析協(xié)議層替換掉所述報文中目標(biāo)2層地址后,將該報文通過其網(wǎng)卡發(fā)送出去。進一步地,上述方法中,由所述物理機為所述虛擬機分配僅供其使用的端口之后,還包括:物理機判斷接收到的報文是否為傳輸控制協(xié)議及網(wǎng)絡(luò)之間互連的協(xié)議的報文,若是,在所述傳輸控制協(xié)議已經(jīng)建立的哈希表中查找是否有對應(yīng)于該報文的傳輸控制協(xié)議套接字,若查找到,判斷該傳輸控制協(xié)議套接字是否為鏡像套接字,若是鏡像套接字,則物理機將進行其內(nèi)核的報文進行4層之前的除類型接收裝卸、填充套接字和網(wǎng)絡(luò)輪循接口操作之外的所有操作后,將所述報文送入虛擬機的傳輸控制協(xié)議層,若不是鏡像套接字,則將所述報文轉(zhuǎn)到常規(guī)協(xié)議棧進行處理;若未查找到,則將所述報文轉(zhuǎn)到常規(guī)協(xié)議棧進行處理;若否,則將所述報文轉(zhuǎn)到常規(guī)協(xié)議棧進行處理。根據(jù)本申請的另一個方面,還提供一種網(wǎng)絡(luò)虛擬化設(shè)備,該設(shè)備包括:鏡像裝置,用于將物理機的網(wǎng)絡(luò)配置鏡像到虛擬機上;協(xié)議棧限制裝置,用于對虛擬機上的網(wǎng)絡(luò)協(xié)議棧加以端口使用限制;物理機,用于由所述物理機為所述虛擬機分配僅供其使用的端口;其中,所述端口使用限制包括禁止傳輸層通信協(xié)議連接的目標(biāo)地址使用物理機上的傳輸層通信協(xié)議端口,以及禁用原始套接字接口。進一步地,上述設(shè)備中,所述鏡像裝置,用于將所述物理機上的網(wǎng)卡 的配置鏡像到虛擬機上;關(guān)閉所述虛擬機上的網(wǎng)卡的地址解析協(xié)議;將所述物理機上的網(wǎng)卡的網(wǎng)際互連的協(xié)議地址鏡像到所述虛擬機上,但將所述虛擬機上的網(wǎng)絡(luò)掩碼設(shè)置為32;將所述物理機上的默認(rèn)路由器設(shè)為所述虛擬機的默認(rèn)路由器,并將虛擬機的默認(rèn)路由器的物理地址設(shè)置成虛構(gòu)的地址;將所述物理機上的地址解析協(xié)議信息包過濾系統(tǒng)的規(guī)則鏡像到對應(yīng)的虛擬機。進一步地,上述設(shè)備中,所述鏡像裝置,還用于將所述物理機上的多隊列和中斷配置鏡像到虛擬機上。進一步地,上述設(shè)備中,所述鏡像裝置,還用于將所述物理機上的域名系統(tǒng)配置鏡像到虛擬機上。進一步地,上述設(shè)備中,所述端口使用限制還包括:除了傳輸層通信協(xié)議,只允許預(yù)設(shè)協(xié)議的流量進出所述虛擬機,所述預(yù)設(shè)協(xié)議的流量包括地址解析協(xié)議請求和響應(yīng)的流量及預(yù)設(shè)類型的網(wǎng)際控制報文協(xié)議的流量。進一步地,上述設(shè)備中,所述物理機,用于根據(jù)所述虛擬機的鏡像端口的分配請求,建立一個傳輸控制協(xié)議套接字;檢查所述虛擬機的鏡像端口的分配請求的類型,若是綁定系統(tǒng)調(diào)用,則執(zhí)行綁定系統(tǒng)調(diào)用,在傳輸控制協(xié)議綁定哈希表中占據(jù)一個鏡像端口,若是連接系統(tǒng)調(diào)用,則執(zhí)行連接系統(tǒng)調(diào)用,在傳輸控制協(xié)議已經(jīng)建立的哈希表中占據(jù)一個鏡像端口,若占據(jù)成功,則在所述傳輸控制協(xié)議套接字中保存對應(yīng)的虛擬機標(biāo)識,并標(biāo)識該傳輸控制協(xié)議套接字為鏡像套接字,所述鏡像套接字中包括所述占據(jù)的鏡像端口,并向虛擬機返回分配功能的響應(yīng);若占據(jù)不成功,則關(guān)閉所述傳輸控制協(xié)議套接字,并向虛擬機返回分配失敗的響應(yīng)。進一步地,上述設(shè)備中,所述設(shè)備還包括虛擬機,用于將經(jīng)過其傳輸控制協(xié)議套接字層、傳輸控制協(xié)議棧和網(wǎng)絡(luò)之間互連的協(xié)議層后,輸出的傳輸控制協(xié)議及網(wǎng)絡(luò)之間互連的協(xié)議的報文不通過其網(wǎng)卡,直接傳遞到所 述物理機的操作系統(tǒng)中,其中,所述報文為依次封裝好目標(biāo)4、3、2層地址的報文;所述物理機,還用于將其上的地址解析協(xié)議層替換掉所述報文中目標(biāo)2層地址后,將該報文通過其網(wǎng)卡發(fā)送出去。進一步地,上述設(shè)備中,所述物理機,還用于判斷接收到的報文是否為傳輸控制協(xié)議及網(wǎng)絡(luò)之間互連的協(xié)議的報文,若是,在所述傳輸控制協(xié)議已經(jīng)建立的哈希表中查找是否有對應(yīng)于該報文的傳輸控制協(xié)議套接字,若查找到,判斷該傳輸控制協(xié)議套接字是否為鏡像套接字,若是鏡像套接字,則物理機將進行其內(nèi)核的報文進行4層之前的除類型接收裝卸、填充套接字和網(wǎng)絡(luò)輪循接口操作之外的所有操作后,將所述報文送入虛擬機的傳輸控制協(xié)議層,若不是鏡像套接字,則將所述報文轉(zhuǎn)到常規(guī)協(xié)議棧進行處理;若未查找到,則將所述報文轉(zhuǎn)到常規(guī)協(xié)議棧進行處理;若否,則將所述報文轉(zhuǎn)到常規(guī)協(xié)議棧進行處理。與現(xiàn)有技術(shù)相比,本申請通過將物理機的網(wǎng)絡(luò)配置鏡像到虛擬機上,實現(xiàn)模擬物理機網(wǎng)絡(luò)環(huán)境的目的,一方面,對應(yīng)用進程造成了“直接運行物理網(wǎng)絡(luò)”的假象,同時因為虛擬機和物理機操作系統(tǒng)內(nèi)核的獨立性自然滿足了輕量級網(wǎng)絡(luò)隔離性的要求,另一方面,對于虛擬機和物理機操作系統(tǒng)內(nèi)核來說,隔離后的網(wǎng)絡(luò)配置也與常規(guī)情況下幾無區(qū)別,也不需要進行任何的全局網(wǎng)絡(luò)配置修改,所以從協(xié)議棧上來說也沒有復(fù)雜修改,整個系統(tǒng)的維護成本也很低。另外,如果允許虛擬機內(nèi)的進程的任意綁定端口,就可以出現(xiàn)在不同虛擬機之間,或者虛擬機和物理機之間創(chuàng)建出端口沖突的TCP連接。因此,虛擬機在分配TCP協(xié)議的端口資源時必須與物理機操作系統(tǒng)協(xié)商,本申請通過由所述物理機為所述虛擬機分配僅供其使用的端口,以避免端口沖突的問題。此外,本申請在網(wǎng)絡(luò)隔離性上在傳統(tǒng)的網(wǎng)絡(luò)虛擬化和容器環(huán)境下的網(wǎng)絡(luò)子系統(tǒng)尋找到了一個微妙的平衡,它以TCP/IP網(wǎng)絡(luò)協(xié)議中的3層為界,3層 及以下的絕大多數(shù)配置虛擬機從物理機上鏡像,4層以上的配置由物理機操作系統(tǒng)與虛擬機操作系統(tǒng)配合管理,以保證物理機網(wǎng)絡(luò)環(huán)境通信機制的一致性,解決輕量級網(wǎng)絡(luò)隔離場景中隔離方案過于笨重的問題。附圖說明通過閱讀參照以下附圖所作的對非限制性實施例所作的詳細(xì)描述,本申請的其它特征、目的和優(yōu)點將會變得更明顯:圖1示出根據(jù)本申請一個方面的一種網(wǎng)絡(luò)虛擬化方法的流程圖;圖2示出本申請一優(yōu)選實施例的網(wǎng)絡(luò)虛擬化方法的流程圖;圖3示出本申請另一優(yōu)選實施例的網(wǎng)絡(luò)虛擬化方法的流程圖;圖4示出本申請又一優(yōu)選實施例的網(wǎng)絡(luò)虛擬化方法的流程圖;圖5示出根據(jù)本申請另一個方面的一種網(wǎng)絡(luò)虛擬化設(shè)備的模塊圖。附圖中相同或相似的附圖標(biāo)記代表相同或相似的部件。具體實施方式下面結(jié)合附圖對本申請作進一步詳細(xì)描述。在本申請一個典型的配置中,終端、服務(wù)網(wǎng)絡(luò)的設(shè)備和可信方均包括一個或多個處理器(CPU)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。內(nèi)存可能包括計算機可讀介質(zhì)中的非永久性存儲器,隨機存取存儲器(RAM)和/或非易失性內(nèi)存等形式,如只讀存儲器(ROM)或閃存(flashRAM)。內(nèi)存是計算機可讀介質(zhì)的示例。計算機可讀介質(zhì)包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術(shù)來實現(xiàn)信息存儲。信息可以是計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計算機的存儲介質(zhì)的例子包括,但不限于相變內(nèi)存(PRAM)、靜態(tài)隨機存取存儲器(SRAM)、動態(tài)隨機存取存儲器(DRAM)、其他類型的隨機存取存儲器(RAM)、只讀存儲器(ROM)、電可擦 除可編程只讀存儲器(EEPROM)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲器(CD-ROM)、數(shù)字多功能光盤(DVD)或其他光學(xué)存儲、磁盒式磁帶,磁帶磁盤存儲或其他磁性存儲設(shè)備或任何其他非傳輸介質(zhì),可用于存儲可以被計算設(shè)備訪問的信息。按照本文中的界定,計算機可讀介質(zhì)不包括非暫存電腦可讀媒體(transitorymedia),如調(diào)制的數(shù)據(jù)信號和載波。如圖1所示,根據(jù)本申請的一個方面,提供一種網(wǎng)絡(luò)虛擬化方法,其中,該方法包括:步驟S1,將物理機的網(wǎng)絡(luò)配置鏡像到虛擬機上;步驟S2,對虛擬機上的網(wǎng)絡(luò)協(xié)議棧加以端口使用限制;步驟S3,由所述物理機為所述虛擬機分配僅供其使用的端口;其中,所述端口使用限制包括禁止傳輸層通信協(xié)議連接的目標(biāo)地址使用物理機上的傳輸層通信協(xié)議端口,以及禁用原始套接字接口。本實施例通過將物理機的網(wǎng)絡(luò)配置鏡像到虛擬機上達到在虛擬機上,實現(xiàn)模擬物理機網(wǎng)絡(luò)環(huán)境的目的,一方面,對應(yīng)用進程造成了“直接運行物理網(wǎng)絡(luò)”的假象,同時因為虛擬機和物理機操作系統(tǒng)內(nèi)核的獨立性自然滿足了輕量級網(wǎng)絡(luò)隔離性的要求,另一方面,對于虛擬機和物理機操作系統(tǒng)內(nèi)核來說,隔離后的網(wǎng)絡(luò)配置也與常規(guī)情況下幾無區(qū)別,也不需要進行任何的全局網(wǎng)絡(luò)配置修改,所以從協(xié)議棧上來說也沒有復(fù)雜修改,整個系統(tǒng)的維護成本也很低。另外,如果允許虛擬機內(nèi)的進程的任意綁定端口,就可以出現(xiàn)在不同虛擬機之間,或者虛擬機和物理機之間創(chuàng)建出端口沖突的TCP連接。因此,虛擬機在分配TCP協(xié)議的端口資源時必須與物理機操作系統(tǒng)協(xié)商,由所述物理機為所述虛擬機分配僅供其使用的端口,以避免端口沖突的問題。本申請原則上可以在任意操作系統(tǒng)和任意傳輸層協(xié)議上實現(xiàn),下文以Linux操作系統(tǒng)上TCP協(xié)議為例。本申請網(wǎng)絡(luò)虛擬化方法一優(yōu)選的實施例中,步驟S1,將物理機的網(wǎng)絡(luò) 配置鏡像到虛擬機上,包括:將所述物理機上的網(wǎng)卡(NIC,NetworkInterfaceCard)的配置鏡像到虛擬機上,實現(xiàn)虛擬機上的應(yīng)用程序看到的是物理機一樣的兩層網(wǎng)絡(luò),在此,物理機上的網(wǎng)卡的配置包括VLANID、MAC地址;關(guān)閉所述虛擬機上的網(wǎng)卡的地址解析(ARP,AddressResolutionProtocol)協(xié)議,實現(xiàn)虛擬機網(wǎng)絡(luò)構(gòu)成為只有一臺主機的網(wǎng)絡(luò)的假象;將所述物理機上的網(wǎng)卡(NIC)的網(wǎng)際互連的協(xié)議(IP)地址鏡像到所述虛擬機上,但將所述虛擬機上的網(wǎng)絡(luò)掩碼設(shè)置為32,實現(xiàn)虛擬機網(wǎng)絡(luò)構(gòu)成為只有一臺主機的網(wǎng)絡(luò)的假象;將所述物理機上的默認(rèn)路由器設(shè)為所述虛擬機的默認(rèn)路由器,并將虛擬機的默認(rèn)路由器的物理地址(MAC,MediaAccessControl)設(shè)置成虛構(gòu)的地址(FakedMAC),實現(xiàn)隱藏物理網(wǎng)絡(luò)細(xì)節(jié),以達到更好的物理網(wǎng)絡(luò)隔離性;將所述物理機上的地址解析協(xié)議信息包過濾系統(tǒng)(iptables)的規(guī)則鏡像到對應(yīng)的虛擬機,從而出于正確性的考慮,保證虛擬機內(nèi)運行的程序與在物理機上運行的效果一樣。本申請網(wǎng)絡(luò)虛擬化方法一優(yōu)選的實施例中,步驟S1,將物理機的網(wǎng)絡(luò)配置鏡像到虛擬機上,還包括:將所述物理機上的多隊列和中斷配置鏡像到虛擬機上,從而使虛擬機的協(xié)議棧性能更高。本申請網(wǎng)絡(luò)虛擬化方法一優(yōu)選的實施例中,步驟S1,將物理機的網(wǎng)絡(luò)配置鏡像到虛擬機上,還包括:將所述物理機上的域名系統(tǒng)(DNS,DomainNameSyste)配置鏡像到虛擬機上,從而實現(xiàn)通過過濾或者劫持虛擬機對外的DNS請求,限制虛擬機訪問的目標(biāo)網(wǎng)絡(luò)服務(wù)??稍谔摂M機啟動時鏡像以上配置,當(dāng)物理機以上配置修改時也需要及時 更新鏡像的配置,但這種是很少見的情況,因為以上配置的變化也會導(dǎo)致物理機網(wǎng)絡(luò)通信暫時中斷。本申請網(wǎng)絡(luò)虛擬化方法一優(yōu)選的實施例中,步驟S2,對虛擬機上的網(wǎng)絡(luò)協(xié)議棧加以端口使用限制,其中,所述端口使用限制包括:不允許傳輸層通信協(xié)議(TCP)連接的目標(biāo)地址是物理機上的傳輸層通信協(xié)議(TCP)端口,在此,出于隔離性考慮,不允許虛擬機訪問物理機端口;不允許使用原始套接字接口(rawsocket),從而保證隔離性要求。優(yōu)選地,該端口使用限制還包括:除了傳輸層通信協(xié)議,只允許預(yù)設(shè)協(xié)議的流量進出所述虛擬機,所述預(yù)設(shè)協(xié)議的流量包括地址解析協(xié)議(ARP)請求和響應(yīng)的流量及預(yù)設(shè)類型的網(wǎng)際控制報文協(xié)議(ICMP,InternetControlMessageProtocol)的流量,從而保證正確性要求,其中,預(yù)設(shè)類型的網(wǎng)際控制報文協(xié)議,例如端口/主機不可達等(不支持ECHO)。如圖2所示,本申請網(wǎng)絡(luò)虛擬化方法一優(yōu)選的實施例中,步驟S3,由所述物理機為所述虛擬機分配僅供其使用的端口,即在物理機操作系統(tǒng)中分配鏡像端口(mirroredports)的過程,包括:步驟S21,所述物理機根據(jù)所述虛擬機的鏡像端口的分配請求,建立一個傳輸控制協(xié)議套接字(TCPSocket);步驟S22,所述物理機檢查所述虛擬機的鏡像端口(mirroredport)的分配請求的類型,若是綁定(bind())系統(tǒng)調(diào)用,則步驟S23,執(zhí)行綁定系統(tǒng)調(diào)用,在傳輸控制協(xié)議綁定哈希表(TCPbindhash)中占據(jù)一個鏡像端口(mirroredports),若是連接系統(tǒng)(connect())調(diào)用,則步驟S24,執(zhí)行連接系統(tǒng)調(diào)用,在傳輸控制協(xié)議(TCP)已經(jīng)建立的哈希表(establishedhash)中占據(jù)一個鏡像端口(mirroredports),若占據(jù)成功,則步驟S25,在所述傳輸控制協(xié)議套接字中保存對應(yīng)的虛擬機標(biāo)識,并標(biāo)識該傳輸控制協(xié)議套接字為鏡像套接字,所述鏡像套接字中包括所述占據(jù)的鏡像端口,并步驟S26,向虛擬機返回分配功能的響應(yīng);若占據(jù)不成功,則步驟S27,關(guān)閉所述傳輸控制協(xié)議套接字,并步驟S28,向虛擬機返回分配失敗的響應(yīng)。具體的,以虛擬機內(nèi)的某個進程主動建立TCP連接為例。如果允許虛擬機內(nèi)的進程的任意綁定端口,就可以出現(xiàn)在不同虛擬機之間,或者虛擬機和物理機之間創(chuàng)建出端口沖突的TCP連接。因此,需要限制虛擬機能夠創(chuàng)建的TCP連接的4元組的取值范圍。這樣,虛擬機在分配TCP協(xié)議的端口資源時必須與物理機操作系統(tǒng)協(xié)商,將這種需要協(xié)商的端口稱為“mirroredports”,分配mirroredports的入口有:1.bind()系統(tǒng)調(diào)用。需要無條件向物理機操作系統(tǒng)申請mirroredports;2.connect()系統(tǒng)調(diào)用。但是如果目標(biāo)地址是一個本虛擬機(loopback)地址,則不必要申請mirroredports。如圖3所示,本申請網(wǎng)絡(luò)虛擬化方法一優(yōu)選的實施例中,步驟S3,由所述物理機為所述虛擬機分配僅供其使用的端口之后,還包括虛擬機上發(fā)送TCP報文的流程:步驟S31,虛擬機將經(jīng)過其傳輸控制協(xié)議套接字(TCPsocket)層、傳輸控制(TCP)協(xié)議棧和網(wǎng)絡(luò)之間互連的協(xié)議(IP)層后,輸出的傳輸控制協(xié)議及網(wǎng)絡(luò)之間互連的協(xié)議的報文,步驟S32,不通過其網(wǎng)卡,直接傳遞到所述物理機的操作系統(tǒng)中,其中,所述報文為依次封裝好目標(biāo)4、3、2層地址的報文,具體的,所述2層如以太網(wǎng)層,所述3層如IP層,所述4層如TCP層、UDP層,虛擬機的發(fā)包流程與原操作系統(tǒng)的發(fā)包流程完全相同,TCP報文從虛擬機的系統(tǒng)調(diào)用接口進入內(nèi)術(shù),經(jīng)過傳輸控制協(xié)議套接字(TCPsocket)層、傳輸控制(TCP)協(xié)議棧和網(wǎng)絡(luò)之間互連的協(xié)議(IP)層后,輸出的依次封裝好4、3、2層報頭的傳輸控制協(xié)議及網(wǎng)絡(luò)之間互連的協(xié)議的報文;步驟S33,所述物理機上的地址解析協(xié)議層替換掉所述報文中目標(biāo)2層地址后,步驟S34,將該報文通過其網(wǎng)卡發(fā)送出去。由于經(jīng)過鏡像配置,TCP端口不會沖突,物理機轉(zhuǎn)發(fā)報文時不需要作額外的檢查,使物理機轉(zhuǎn)發(fā)報文的操作得到了簡化。如圖4所示,本申請網(wǎng)絡(luò)虛擬化方法一優(yōu)選的實施例中,步驟S3,由所述物理機為所述虛擬機分配僅供其使用的端口之后,還包括物理機上接收到mirroredsockets報文的流程:步驟S41,物理機判斷接收到的報文是否為傳輸控制協(xié)議及網(wǎng)絡(luò)之間互連的協(xié)議的報文,若是,步驟S42,在所述傳輸控制協(xié)議已經(jīng)建立的哈希表(TCPestablishedhash)中查找是否有對應(yīng)于該報文的傳輸控制協(xié)議套接字(TCPSocket),若查找到,步驟S43,判斷該傳輸控制協(xié)議套接字(TCPSocket)是否為鏡像套接字(mirroredsocket),若是鏡像套接字,則步驟S44,物理機將進行其內(nèi)核的報文進行4層之前的除類型接收裝卸(GRO)、填充套接字(PACKEDSOCKET)和網(wǎng)絡(luò)輪循接口(NETPOLL)操作之外的所有操作后,步驟S45,將所述報文送入虛擬機的傳輸控制協(xié)議(TCP)層,若不是鏡像套接字,則步驟S46,將所述報文轉(zhuǎn)到常規(guī)協(xié)議棧進行處理;若未查找到,則步驟S46,將所述報文轉(zhuǎn)到常規(guī)協(xié)議棧進行處理;若否,則步驟S46,將所述報文轉(zhuǎn)到常規(guī)協(xié)議棧進行處理。在此,類型接收裝卸(GRO)操作是Linux協(xié)議棧的優(yōu)化機制,本實施例里不需要進行,另外,由于本實施例中不需要物理機顯示虛擬機的報文,為避免guest的流量進入HOST,所以也不需要進行填充套接字(PACKEDSOCKET)和網(wǎng)絡(luò)輪循接口(NETPOLL)操作,本實施例簡化了物理機上接收報文的操作。如圖5所示,根據(jù)本申請的另一面,還提供一種網(wǎng)絡(luò)虛擬化設(shè)備,所述設(shè)備100包括:鏡像裝置1,用于將物理機的網(wǎng)絡(luò)配置鏡像到虛擬機上;協(xié)議棧限制裝置2,用于對虛擬機上的網(wǎng)絡(luò)協(xié)議棧加以端口使用限制;物理機3,用于由所述物理機為所述虛擬機分配僅供其使用的端口。本實施例通過將物理機的網(wǎng)絡(luò)配置鏡像到虛擬機上,實現(xiàn)模擬物理機網(wǎng)絡(luò)環(huán)境的目的,一方面,對應(yīng)用進程造成了“直接運行物理網(wǎng)絡(luò)”的假象,同時因為虛擬機和物理機操作系統(tǒng)內(nèi)核的獨立性自然滿足了輕量級網(wǎng)絡(luò)隔離性的要求,另一方面,對于虛擬機和物理機操作系統(tǒng)內(nèi)核來說,隔離后的網(wǎng)絡(luò)配置也與常規(guī)情況下幾無區(qū)別,也不需要進行任何的全局網(wǎng)絡(luò)配置修改,所以從協(xié)議棧上來說也沒有復(fù)雜修改,整個系統(tǒng)的維護成本也很低。另外,如果允許虛擬機內(nèi)的進程的任意綁定端口,就可以出現(xiàn)在不同虛擬機之間,或者虛擬機和物理機之間創(chuàng)建出端口沖突的TCP連接。因此,虛擬機在分配TCP協(xié)議的端口資源時必須與物理機操作系統(tǒng)協(xié)商,由所述物理機為所述虛擬機分配僅供其使用的端口,以避免端口沖突的問題。本申請原則上可以在任意操作系統(tǒng)和任意傳輸層協(xié)議上實現(xiàn),下文以Linux操作系統(tǒng)上TCP協(xié)議為例。本申請網(wǎng)絡(luò)虛擬化設(shè)備一優(yōu)選的實施例中,所述鏡像裝置1,用于將所述物理機上的網(wǎng)卡的配置鏡像到虛擬機上,實現(xiàn)虛擬機上的應(yīng)用程序看到的是物理機一樣的兩層網(wǎng)絡(luò),在此,物理機上的網(wǎng)卡的配置包括VLANID、MAC地址;關(guān)閉所述虛擬機上的網(wǎng)卡的地址解析協(xié)議,實現(xiàn)虛擬機網(wǎng)絡(luò)構(gòu)成為只有一臺主機的網(wǎng)絡(luò)的假象;將所述物理機上的網(wǎng)卡的網(wǎng)際互連的協(xié)議地址鏡像到所述虛擬機上,但將所述虛擬機上的網(wǎng)絡(luò)掩碼設(shè)置為32,實現(xiàn)虛擬機網(wǎng)絡(luò)構(gòu)成為只有一臺主機的網(wǎng)絡(luò)的假象;將所述物理機上的默認(rèn)路由器設(shè)為所述虛擬機的默認(rèn)路由器,并將虛擬機的默認(rèn)路由器的物理地址設(shè)置成虛構(gòu)的地址,實現(xiàn)隱藏物理網(wǎng)絡(luò)細(xì)節(jié),以達到更好的物理網(wǎng)絡(luò)隔離性;將所述物理機上的地址解析協(xié)議信息包過濾系統(tǒng)的規(guī)則鏡像到對應(yīng)的虛擬機,從而出于正確性的考慮,保證虛擬機內(nèi)運行的程序與在物理機 上運行的效果一樣。本申請網(wǎng)絡(luò)虛擬化設(shè)備一優(yōu)選的實施例中,所述鏡像裝置1,還用于將所述物理機上的多隊列和中斷配置鏡像到虛擬機上,從而使虛擬機的協(xié)議棧性能更高。本申請網(wǎng)絡(luò)虛擬化設(shè)備一優(yōu)選的實施例中,所述鏡像裝置,還用于將所述物理機上的域名系統(tǒng)配置鏡像到虛擬機上,從而實現(xiàn)通過過濾或者劫持虛擬機對外的DNS請求,限制虛擬機訪問的目標(biāo)網(wǎng)絡(luò)服務(wù)。可在虛擬機啟動時鏡像以上配置,當(dāng)物理機以上配置修改時也需要及時更新鏡像的配置,但這種是很少見的情況,因為以上配置的變化也會導(dǎo)致物理機網(wǎng)絡(luò)通信暫時中斷。本申請網(wǎng)絡(luò)虛擬化設(shè)備一優(yōu)選的實施例中,所述端口使用限制包括:不允許傳輸層通信協(xié)議連接的目標(biāo)地址是物理機上的傳輸層通信協(xié)議端口,在此,出于隔離性考慮,不允許虛擬機訪問物理機端口;不允許使用原始套接字接口,從而保證隔離性要求。優(yōu)選地,該端口使用限制還包括:除了傳輸層通信協(xié)議,只允許預(yù)設(shè)協(xié)議的流量進出所述虛擬機,所述預(yù)設(shè)協(xié)議的流量包括地址解析協(xié)議(ARP)請求和響應(yīng)的流量及預(yù)設(shè)類型的網(wǎng)際控制報文協(xié)議(ICMP,InternetControlMessageProtocol)的流量,從而保證正確性要求,其中,預(yù)設(shè)類型的網(wǎng)際控制報文協(xié)議,例如端口/主機不可達等(不支持ECHO)??蓞⒖紙D2,本申請網(wǎng)絡(luò)虛擬化設(shè)備一優(yōu)選的實施例中,所述物理機3,用于根據(jù)所述虛擬機的鏡像端口的分配請求,建立一個傳輸控制協(xié)議套接字;檢查所述虛擬機的鏡像端口的分配請求的類型,若是綁定系統(tǒng)調(diào)用,則執(zhí)行綁定系統(tǒng)調(diào)用,在傳輸控制協(xié)議綁定哈希表中占據(jù)一個鏡像端口,若是連接系統(tǒng)調(diào)用,則執(zhí)行連接系統(tǒng)調(diào)用,在傳輸控制協(xié)議已經(jīng)建立的哈希表中占據(jù)一個鏡像端口,若占據(jù)成功,則在所述傳輸控制協(xié)議套接字中保存對應(yīng) 的虛擬機標(biāo)識,并標(biāo)識該傳輸控制協(xié)議套接字為鏡像套接字,所述鏡像套接字中包括所述占據(jù)的鏡像端口,并向虛擬機返回分配功能的響應(yīng);若占據(jù)不成功,則關(guān)閉所述傳輸控制協(xié)議套接字,并向虛擬機返回分配失敗的響應(yīng)。具體的,以虛擬機內(nèi)的某個進程主動建立TCP連接為例。如果允許虛擬機內(nèi)的進程的任意綁定端口,就可以出現(xiàn)在不同虛擬機之間,或者虛擬機和物理機之間創(chuàng)建出端口沖突的TCP連接。因此,需要限制虛擬機能夠創(chuàng)建的TCP連接的4元組的取值范圍。這樣,虛擬機在分配TCP協(xié)議的端口資源時必須與物理機操作系統(tǒng)協(xié)商,將這種需要協(xié)商的端口稱為“mirroredports”,分配mirroredports的入口有:1.bind()系統(tǒng)調(diào)用。需要無條件向物理機操作系統(tǒng)申請mirroredports;2.connect()系統(tǒng)調(diào)用。但是如果目標(biāo)地址是一個本虛擬機(loopback)地址,則不必要申請mirroredports。如圖5和3所示,本申請網(wǎng)絡(luò)虛擬化設(shè)備一優(yōu)選的實施例中,所述設(shè)備100還包括虛擬機4,用于將經(jīng)過其傳輸控制協(xié)議套接字層、傳輸控制協(xié)議棧和網(wǎng)絡(luò)之間互連的協(xié)議層后,輸出的傳輸控制協(xié)議及網(wǎng)絡(luò)之間互連的協(xié)議的報文不通過其網(wǎng)卡,直接傳遞到所述物理機的操作系統(tǒng)中,其中,所述報文為依次封裝好目標(biāo)4、3、2層地址的報文,具體的,所述2層如以太網(wǎng)層,所述3層如IP層,所述4層如TCP層、UDP層,虛擬機的發(fā)包流程與原操作系統(tǒng)的發(fā)包流程完全相同,TCP報文從虛擬機的系統(tǒng)調(diào)用接口進入內(nèi)術(shù),經(jīng)過傳輸控制協(xié)議套接字(TCPsocket)層、傳輸控制(TCP)協(xié)議棧和網(wǎng)絡(luò)之間互連的協(xié)議(IP)層后,輸出的依次封裝好4、3、2層報頭的傳輸控制協(xié)議及網(wǎng)絡(luò)之間互連的協(xié)議的報文;所述物理機,還用于將其上的地址解析協(xié)議層替換掉所述報文中目標(biāo)2層地址后,將該報文通過其網(wǎng)卡發(fā)送出去。由于經(jīng)過鏡像配置,TCP端口不會沖突,物理機轉(zhuǎn)發(fā)報文時不需要作額外的檢查,使物理機轉(zhuǎn)發(fā)報文的操作得到了簡化??蓞⒖既?,本申請網(wǎng)絡(luò)虛擬化設(shè)備一優(yōu)選的實施例中,所述物理機3,還用于判斷接收到的報文是否為傳輸控制協(xié)議及網(wǎng)絡(luò)之間互連的協(xié)議的報文,若是,在所述傳輸控制協(xié)議已經(jīng)建立的哈希表中查找是否有對應(yīng)于該報文的傳輸控制協(xié)議套接字,若查找到,判斷該傳輸控制協(xié)議套接字是否為鏡像套接字,若是鏡像套接字,則物理機將進行其內(nèi)核的報文進行4層之前的除類型接收裝卸、填充套接字和網(wǎng)絡(luò)輪循接口操作之外的所有操作后,將所述報文送入虛擬機的傳輸控制協(xié)議層,若不是鏡像套接字,則將所述報文轉(zhuǎn)到常規(guī)協(xié)議棧進行處理;若未查找到,則將所述報文轉(zhuǎn)到常規(guī)協(xié)議棧進行處理;若否,則將所述報文轉(zhuǎn)到常規(guī)協(xié)議棧進行處理。在此,類型接收裝卸(GRO)操作是Linux協(xié)議棧的優(yōu)化機制,本實施例里不需要進行,另外,由于本實施例中不需要物理機顯示虛擬機的報文,為避免guest的流量進入HOST,所以也不需要進行填充套接字(PACKEDSOCKET)和網(wǎng)絡(luò)輪循接口(NETPOLL)操作,本實施例簡化了物理機上接收報文的操作。綜上所述,本申請通過將物理機的網(wǎng)絡(luò)配置鏡像到虛擬機上,實現(xiàn)模擬物理機網(wǎng)絡(luò)環(huán)境的目的,一方面,對應(yīng)用進程造成了“直接運行物理網(wǎng)絡(luò)”的假象,同時因為虛擬機和物理機操作系統(tǒng)內(nèi)核的獨立性自然滿足了輕量級網(wǎng)絡(luò)隔離性的要求,另一方面,對于虛擬機和物理機操作系統(tǒng)內(nèi)核來說,隔離后的網(wǎng)絡(luò)配置也與常規(guī)情況下幾無區(qū)別,也不需要進行任何的全局網(wǎng)絡(luò)配置修改,所以從協(xié)議棧上來說也沒有復(fù)雜修改,整個系統(tǒng)的維護成本也很低。另外,如果允許虛擬機內(nèi)的進程的任意綁定端口,就可以出現(xiàn)在不同虛擬機之間,或者虛擬機和物理機之間創(chuàng)建出端口沖突的TCP連接。因此,虛擬機在分配TCP協(xié)議的端口資源時必須與物理機操作系統(tǒng)協(xié)商,本申請通過由所述物理機為所述虛擬機分配僅供其使用的端口,以避免端口沖突的問題。此外,本申請在網(wǎng)絡(luò)隔離性上在傳統(tǒng)的網(wǎng)絡(luò)虛擬化和容器環(huán)境下的網(wǎng)絡(luò)子系統(tǒng)尋找到了一個微妙的平衡,它以TCP/IP網(wǎng)絡(luò)協(xié)議中的3層為界,3層及以下的絕大多數(shù)配置虛擬機從物理機上鏡像,4層以上的配置由物理機操作 系統(tǒng)與虛擬機操作系統(tǒng)配合管理,以保證物理機網(wǎng)絡(luò)環(huán)境通信機制的一致性,解決輕量級網(wǎng)絡(luò)隔離場景中隔離方案過于笨重的問題。顯然,本領(lǐng)域的技術(shù)人員可以對本申請進行各種改動和變型而不脫離本申請的精神和范圍。這樣,倘若本申請的這些修改和變型屬于本申請權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本申請也意圖包含這些改動和變型在內(nèi)。需要注意的是,本申請可在軟件和/或軟件與硬件的組合體中被實施,例如,可采用專用集成電路(ASIC)、通用目的計算機或任何其他類似硬件設(shè)備來實現(xiàn)。在一個實施例中,本申請的軟件程序可以通過處理器執(zhí)行以實現(xiàn)上文所述步驟或功能。同樣地,本申請的軟件程序(包括相關(guān)的數(shù)據(jù)結(jié)構(gòu))可以被存儲到計算機可讀記錄介質(zhì)中,例如,RAM存儲器,磁或光驅(qū)動器或軟磁盤及類似設(shè)備。另外,本申請的一些步驟或功能可采用硬件來實現(xiàn),例如,作為與處理器配合從而執(zhí)行各個步驟或功能的電路。另外,本申請的一部分可被應(yīng)用為計算機程序產(chǎn)品,例如計算機程序指令,當(dāng)其被計算機執(zhí)行時,通過該計算機的操作,可以調(diào)用或提供根據(jù)本申請的方法和/或技術(shù)方案。而調(diào)用本申請的方法的程序指令,可能被存儲在固定的或可移動的記錄介質(zhì)中,和/或通過廣播或其他信號承載媒體中的數(shù)據(jù)流而被傳輸,和/或被存儲在根據(jù)所述程序指令運行的計算機設(shè)備的工作存儲器中。在此,根據(jù)本申請的一個實施例包括一個裝置,該裝置包括用于存儲計算機程序指令的存儲器和用于執(zhí)行程序指令的處理器,其中,當(dāng)該計算機程序指令被該處理器執(zhí)行時,觸發(fā)該裝置運行基于前述根據(jù)本申請的多個實施例的方法和/或技術(shù)方案。對于本領(lǐng)域技術(shù)人員而言,顯然本申請不限于上述示范性實施例的細(xì)節(jié),而且在不背離本申請的精神或基本特征的情況下,能夠以其他的具體形式實現(xiàn)本申請。因此,無論從哪一點來看,均應(yīng)將實施例看作是示范性的,而且是非限制性的,本申請的范圍由所附權(quán)利要求而不是上述說明限 定,因此旨在將落在權(quán)利要求的等同要件的含義和范圍內(nèi)的所有變化涵括在本申請內(nèi)。不應(yīng)將權(quán)利要求中的任何附圖標(biāo)記視為限制所涉及的權(quán)利要求。此外,顯然“包括”一詞不排除其他單元或步驟,單數(shù)不排除復(fù)數(shù)。裝置權(quán)利要求中陳述的多個單元或裝置也可以由一個單元或裝置通過軟件或者硬件來實現(xiàn)。第一,第二等詞語用來表示名稱,而并不表示任何特定的順序。當(dāng)前第1頁1 2 3 當(dāng)前第1頁1 2 3