本發(fā)明涉及it技術(shù)領(lǐng)域,尤其涉及云計(jì)算系統(tǒng)中報(bào)文處理的方法、主機(jī)和系統(tǒng)。
背景技術(shù):
虛擬化技術(shù)是云計(jì)算領(lǐng)域的關(guān)鍵技術(shù)之一,可將主機(jī)的物理資源抽象成共享資源池,供主機(jī)上運(yùn)行的若干個(gè)虛擬機(jī)(virtualmachine,vm)使用。主機(jī)上運(yùn)行的若干個(gè)虛擬機(jī)可以共享使用主機(jī)的網(wǎng)卡,與主機(jī)外部網(wǎng)絡(luò)進(jìn)行通信。在現(xiàn)有技術(shù)中,可以通過網(wǎng)卡虛擬化的方式將網(wǎng)卡分配給虛擬機(jī)使用,網(wǎng)卡虛擬化可以采用單根輸入輸出虛擬化(single-rooti/ovirtualization,sr-iov)或或多根輸入輸出虛擬化(multirootinput/outputvirtualization,mr-iov),上述網(wǎng)卡虛擬化又稱為網(wǎng)卡直通。以sr-iov直通為例,當(dāng)網(wǎng)卡支持sr-iov時(shí),使用sr-iov技術(shù)可以將主機(jī)上網(wǎng)卡共享給主機(jī)上運(yùn)行的若干個(gè)虛擬機(jī)。
在主機(jī)上使用支持sr-iov能力的網(wǎng)卡時(shí),網(wǎng)卡的網(wǎng)口會(huì)虛擬出至少一個(gè)物理功能(physicalfunction,pf)以及多個(gè)虛擬功能(virtualfunction,vf),主機(jī)上的虛擬機(jī)連接到至少一個(gè)vf。網(wǎng)卡內(nèi)部包含具備交換機(jī)功能的交換設(shè)備。該交換設(shè)備按照介質(zhì)訪問控制(mediaaccesscontrol,mac)表轉(zhuǎn)發(fā)數(shù)據(jù)包,負(fù)責(zé)著pf、vf和物理網(wǎng)口之間的數(shù)據(jù)包轉(zhuǎn)發(fā),但由于該交換設(shè)備的處理和存儲(chǔ)能力有限,因此無法為用戶提供豐富的網(wǎng)絡(luò)功能,例如安全組、服務(wù)質(zhì)量(qualityofservice,qos)、二層隧道封裝以及分布式路由等等。
技術(shù)實(shí)現(xiàn)要素:
本文描述了一種云計(jì)算系統(tǒng)中報(bào)文處理的方法、主機(jī)和系統(tǒng),以解決網(wǎng)卡直通場(chǎng)景下無法提供豐富的網(wǎng)絡(luò)功能的問題。
第一方面,本發(fā)明實(shí)施例提供了一種主機(jī),至少一個(gè)網(wǎng)卡連接到該主機(jī),所述主機(jī)上運(yùn)行有虛擬機(jī)監(jiān)視器vmm,vmm上運(yùn)行有第一虛擬機(jī),所述vmm包含虛擬網(wǎng)橋以及虛擬網(wǎng)絡(luò)功能模塊,所述虛擬網(wǎng)絡(luò)功能模塊可以提供網(wǎng)絡(luò)功能處理的能力。所述網(wǎng)卡包含交換設(shè)備以及至少兩個(gè)網(wǎng)口,其中,第一網(wǎng)口支持網(wǎng)卡虛擬化能力,所述第一網(wǎng)口對(duì)應(yīng)于至少一個(gè)物理功能pf和多個(gè)虛擬功能vf,所述第一網(wǎng)口的至少一個(gè)vf直通給所述第一虛擬機(jī),
第一虛擬機(jī)將數(shù)據(jù)包從與自身相連的vf發(fā)出,所述數(shù)據(jù)包的目的mac地址為所述虛擬網(wǎng)橋上行鏈路口的mac地址,由第一網(wǎng)口的交換設(shè)備根據(jù)數(shù)據(jù)包的目的mac地址對(duì)數(shù)據(jù)包進(jìn)行轉(zhuǎn)發(fā),將數(shù)據(jù)包發(fā)送給vmm上的虛擬網(wǎng)橋,通過該虛擬網(wǎng)橋?qū)?shù)據(jù)包傳遞到虛擬網(wǎng)絡(luò)功能模塊,由虛擬網(wǎng)絡(luò)功能模塊為該數(shù)據(jù)包提供豐富的網(wǎng)絡(luò)功能。在網(wǎng)卡直通的場(chǎng)景下,虛擬機(jī)將數(shù)據(jù)包從直通的vf發(fā)出后,通過上述方式可以將數(shù)據(jù)包從網(wǎng)卡引導(dǎo)到vmm中的虛擬網(wǎng)絡(luò)功能模塊,利用該軟件模塊為用戶提供豐富的網(wǎng)絡(luò)功能。
在一種可能的設(shè)計(jì)中,所述主機(jī)上可以運(yùn)行有多個(gè)虛擬機(jī),每個(gè)虛擬機(jī)與所述第一網(wǎng)口的至少一個(gè)vf相連,所述第一網(wǎng)口的多個(gè)vf具有不同的虛擬局域網(wǎng)vlan標(biāo)識(shí)。通過為每個(gè)vf設(shè)置與其他vf不同的vlan標(biāo)識(shí),保證帶有vlan標(biāo)識(shí)的廣播報(bào)文只在vlan標(biāo)識(shí)對(duì)應(yīng)的虛擬局域網(wǎng)傳播,從而不會(huì)被發(fā)送給具有不同vlan標(biāo)識(shí)的其他vf。
在一種可能的設(shè)計(jì)中,第一虛擬機(jī)通過apr流程獲取待發(fā)送的數(shù)據(jù)包的目的mac地址。具體的:
第一虛擬機(jī)通過與自身相連的vf發(fā)出arp請(qǐng)求報(bào)文,所述arp請(qǐng)求報(bào)文攜帶發(fā)出arp請(qǐng)求報(bào)文的所述vf的vlan標(biāo)識(shí),
第一網(wǎng)口的交換設(shè)備接收到所述arp請(qǐng)求報(bào)文后,廣播所述arp請(qǐng)求報(bào)文,當(dāng)vmm中的虛擬網(wǎng)橋接收到所述交換設(shè)備廣播的所述arp請(qǐng)求報(bào)文后,向sdn控制器轉(zhuǎn)發(fā)所述arp請(qǐng)求報(bào)文。sdn控制器記錄有云計(jì)算系統(tǒng)的網(wǎng)絡(luò)拓?fù)湫畔?,?dāng)sdn控制器收到arp請(qǐng)求報(bào)文時(shí),構(gòu)建流表項(xiàng),并向所述虛擬網(wǎng)橋返回所述流表項(xiàng),所述流表項(xiàng)包括arp代答設(shè)置,所述arp代答設(shè)置用于指示所述虛擬網(wǎng)橋構(gòu)造arp響應(yīng)報(bào)文,所述arp響應(yīng)報(bào)文攜帶所述虛擬網(wǎng)橋上行鏈路口的mac地址作為所述待發(fā)送的數(shù)據(jù)包的目的mac地址;
所述虛擬網(wǎng)橋根據(jù)所述流表項(xiàng)向所述第一虛擬機(jī)返回arp響應(yīng)報(bào)文,arp響應(yīng)報(bào)文攜帶所述虛擬網(wǎng)橋上行鏈路口的mac地址作為所述待發(fā)送的數(shù)據(jù)包的目的mac地址。
本發(fā)明實(shí)施例定義了新的arp流程,將待發(fā)送的數(shù)據(jù)包的目的mac地址設(shè)定為虛擬網(wǎng)橋上行鏈路口的mac地址,從而使得第一虛擬機(jī)發(fā)出的數(shù)據(jù)包經(jīng)過二層轉(zhuǎn)發(fā)到虛擬網(wǎng)橋,從而實(shí)現(xiàn)數(shù)據(jù)包從網(wǎng)卡重定向回vmm的效果。
在一種可能的設(shè)計(jì)中,所述流表項(xiàng)還包括mac地址設(shè)置,所述mac地址設(shè)置用于指示所述虛擬網(wǎng)橋在接收到第一虛擬機(jī)發(fā)送給第二虛擬機(jī)的所述數(shù)據(jù)包時(shí),將所述數(shù)據(jù)包的目的mac地址修改為第二虛擬機(jī)的mac地址。由于第一虛擬機(jī)發(fā)出的數(shù)據(jù)包的目的mac地址為虛擬網(wǎng)橋上行鏈路口的mac地址,當(dāng)虛擬網(wǎng)橋收到該數(shù)據(jù)包時(shí),需要將數(shù)據(jù)包的目的mac地址替換為第二虛擬機(jī)的mac地址,從而使得虛擬網(wǎng)橋發(fā)出的數(shù)據(jù)包可以根據(jù)第二虛擬機(jī)真實(shí)的地址路由到第二虛擬機(jī)。
在一種可能的設(shè)計(jì)中,所述虛擬網(wǎng)橋上行鏈路口為所述第一網(wǎng)口的pf,所述虛擬網(wǎng)橋通過所述pf與所述網(wǎng)卡相連;或者,所述虛擬網(wǎng)橋上行鏈路口為所述第一網(wǎng)口的選定的vf,所述虛擬網(wǎng)橋通過所述選定的vf與所述網(wǎng)卡相連,其中,與所述虛擬網(wǎng)橋相連的所述選定的vf被設(shè)置為混雜模式。需要說明的是,所述虛擬網(wǎng)橋通過pf或vf與所述網(wǎng)卡相連指虛擬網(wǎng)橋與所述網(wǎng)卡存在邏輯相連,即所述虛擬網(wǎng)橋與所述網(wǎng)卡之間通過pf或vf傳輸數(shù)據(jù)包。
在一種可能的設(shè)計(jì)中,數(shù)據(jù)包的源虛擬機(jī)(第一虛擬機(jī))和目的虛擬機(jī)(第二虛擬機(jī))在同一主機(jī)上。此時(shí),當(dāng)虛擬網(wǎng)絡(luò)功能模塊處理完所述數(shù)據(jù)包后,將所述處理后的數(shù)據(jù)包返回給所述虛擬網(wǎng)橋,所述虛擬網(wǎng)橋接收處理后的數(shù)據(jù)包,根據(jù)所述數(shù)據(jù)包的目的mac地址將所述處理后的數(shù)據(jù)包通過所述交換設(shè)備發(fā)送給所述第二虛擬機(jī)。
所述第二虛擬機(jī)與所述第一虛擬機(jī)也可以運(yùn)行在不同主機(jī)上,此時(shí),所述虛擬網(wǎng)絡(luò)功能模塊建立與所述第二虛擬機(jī)所在的主機(jī)上的另一虛擬網(wǎng)絡(luò)功能模塊之間的隧道,將所述處理后的數(shù)據(jù)包發(fā)送到所述網(wǎng)卡的第二網(wǎng)口,然后通過所述隧道將所述處理后的數(shù)據(jù)包發(fā)送到所述第二虛擬機(jī)所在的主機(jī),以使得所述另一虛擬網(wǎng)絡(luò)功能模塊將所述處理后的數(shù)據(jù)包發(fā)送到所述第二虛擬機(jī)。
第二方面,本發(fā)明實(shí)施例還提供了一種云計(jì)算系統(tǒng)中報(bào)文處理的方法,所述云計(jì)算系統(tǒng)中的至少一個(gè)主機(jī)包括虛擬機(jī)監(jiān)視器vmm,以及至少一個(gè)網(wǎng)卡,所述主機(jī)上運(yùn)行有第一虛擬機(jī),所述vmm包含虛擬網(wǎng)橋以及虛擬網(wǎng)絡(luò)功能模塊,所述網(wǎng)卡包含交換設(shè)備以及至少兩個(gè)網(wǎng)口,其中,第一網(wǎng)口支持網(wǎng)卡虛擬化能力,所述第一網(wǎng)口對(duì)應(yīng)于至少一個(gè)pf和多個(gè)vf,所述第一虛擬機(jī)連接到所述第一網(wǎng)口的至少一個(gè)vf,所述方法包括:
所述第一虛擬機(jī)確定待發(fā)送的數(shù)據(jù)包的目的mac地址,所述待發(fā)送的數(shù)據(jù)包的mac地址為所述虛擬網(wǎng)橋上行鏈路口的mac地址;
所述第一虛擬機(jī)通過與自身相連的所述vf向第二虛擬機(jī)發(fā)送所述數(shù)據(jù)包,所述數(shù)據(jù)包攜帶的目的ip地址為所述第二虛擬機(jī)的ip地址,攜帶的目的mac地址為所述虛擬網(wǎng)橋上行鏈路口的mac地址;
所述交換設(shè)備接收所述數(shù)據(jù)包,根據(jù)所述數(shù)據(jù)包的目的mac地址,將所述數(shù)據(jù)包通過所述虛擬網(wǎng)橋的上行鏈路口發(fā)送到所述虛擬網(wǎng)橋;
所述虛擬網(wǎng)橋接收所述數(shù)據(jù)包,將所述數(shù)據(jù)包的目的mac地址修改為所述第二虛擬機(jī)的mac地址,將修改后的數(shù)據(jù)包發(fā)送給虛擬網(wǎng)絡(luò)功能模塊;
所述虛擬網(wǎng)絡(luò)功能模塊對(duì)所述修改后的數(shù)據(jù)包進(jìn)行網(wǎng)絡(luò)功能處理后,發(fā)送處理后的數(shù)據(jù)包,所述處理后的數(shù)據(jù)包的目的mac地址為所述第二虛擬機(jī)的mac地址。
在一種可能的設(shè)計(jì)中,所述第一網(wǎng)口的多個(gè)vf具有不同的虛擬局域網(wǎng)vlan標(biāo)識(shí)。
在另一種可能的設(shè)計(jì)中,第一虛擬機(jī)通過arp流程從sdn控制器獲取待發(fā)送數(shù)據(jù)包的目的mac地址,所述目的mac地址為所述虛擬網(wǎng)橋上行鏈路口的mac地址。具體獲取的方式與第一方面的描述相同。
第三方面,本發(fā)明實(shí)施例提供了一種云計(jì)算系統(tǒng),所述云計(jì)算系統(tǒng)包括第一方面所述的主機(jī)以及sdn控制器,所述sdn控制器,用于接收所述虛擬網(wǎng)橋轉(zhuǎn)發(fā)的來自所述第一虛擬機(jī)的arp請(qǐng)求報(bào)文,向所述虛擬網(wǎng)橋返回流表項(xiàng),所述流表項(xiàng)包括arp代答設(shè)置和mac地址設(shè)置,所述arp代答設(shè)置用于指示所述虛擬網(wǎng)橋針對(duì)所述arp請(qǐng)求構(gòu)造arp響應(yīng)報(bào)文,所述arp響應(yīng)報(bào)文攜帶所述虛擬網(wǎng)橋上行鏈路口的mac地址作為待發(fā)送的數(shù)據(jù)包的目的mac地址。
第四方面,與前述裝置、方法以及系統(tǒng)相對(duì)應(yīng),本發(fā)明實(shí)施例提供了一種主機(jī),該主機(jī)具有實(shí)現(xiàn)第一方面中定義的主機(jī)的功能。所述功能可以通過硬件實(shí)現(xiàn),也可以通過硬件執(zhí)行相應(yīng)的軟件實(shí)現(xiàn)。所述硬件或軟件包括一個(gè)或多個(gè)與上述功能相對(duì)應(yīng)的模塊。具體的,所述主機(jī)包括第一處理器、第一存儲(chǔ)器以及至少一個(gè)網(wǎng)卡,所述網(wǎng)卡包含第二處理器、第二存儲(chǔ)器以及至少兩個(gè)網(wǎng)口,其中,第一網(wǎng)口支持網(wǎng)卡虛擬化能力,所述第一網(wǎng)口對(duì)應(yīng)于至少一個(gè)pf和多個(gè)vf,所述第一虛擬機(jī)連接到所述第一網(wǎng)口的至少一個(gè)vf,所述第一存儲(chǔ)器和所述第二存儲(chǔ)器中存儲(chǔ)有指令,
所述第一處理器用于執(zhí)行所述第一存儲(chǔ)器中的指令以實(shí)施第一方面中第一虛擬機(jī)、虛擬網(wǎng)橋以及虛擬網(wǎng)絡(luò)功能模塊的功能;
所述第二處理器用于執(zhí)行所述第二存儲(chǔ)器中的指令以實(shí)施第一方面中交換設(shè)備的功能。
在一個(gè)可能的設(shè)計(jì)中,所述主機(jī)和sdn控制器由通用或?qū)S玫姆?wù)器實(shí)現(xiàn),服務(wù)器的結(jié)構(gòu)中包括處理器、存儲(chǔ)器、系統(tǒng)總線以及輸入輸出接口,所述處理器被配置為支持所述系統(tǒng)中主機(jī)的相應(yīng)的功能。所述輸入輸出接口用于與所述云計(jì)算系統(tǒng)中的其他部件進(jìn)行通信,處理器執(zhí)行所述存儲(chǔ)器中存儲(chǔ)的指令。
第五方面,本發(fā)明實(shí)施例提供了一種計(jì)算機(jī)存儲(chǔ)介質(zhì),用于儲(chǔ)存為上述主機(jī)所用的計(jì)算機(jī)軟件指令,其包含用于執(zhí)行上述方面所設(shè)計(jì)的程序。
第六方面,本發(fā)明實(shí)施例提供了另一種計(jì)算機(jī)存儲(chǔ)介質(zhì),用于儲(chǔ)存為上述網(wǎng)卡中的交換設(shè)備所用的計(jì)算機(jī)軟件指令,其包含用于執(zhí)行上述方面所設(shè)計(jì)的程序。
第七方面,本發(fā)明實(shí)施例提供了一種計(jì)算機(jī)程序,當(dāng)物理服務(wù)器運(yùn)行該計(jì)算機(jī)程序時(shí),該物理服務(wù)器執(zhí)行主機(jī)中虛擬機(jī)、虛擬網(wǎng)橋以及虛擬網(wǎng)絡(luò)功能模塊的功能。
第八方面,本發(fā)明實(shí)施例提供了一種計(jì)算機(jī)程序,當(dāng)網(wǎng)卡中的處理器或可編程邏輯電路運(yùn)行該計(jì)算機(jī)程序時(shí),網(wǎng)卡執(zhí)行前述方面中交換設(shè)備的功能。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹。顯而易見地,下面附圖中反映的僅僅是本發(fā)明的一部分實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得本發(fā)明的其他實(shí)施方式。而所有這些實(shí)施例或?qū)嵤┓绞蕉荚诒景l(fā)明的保護(hù)范圍之內(nèi)。
圖1a是本發(fā)明實(shí)施例提供的主機(jī)上的虛擬化結(jié)構(gòu)示意圖;
圖1b是本發(fā)明實(shí)施例提供的一種網(wǎng)卡直通場(chǎng)景下主機(jī)上的虛擬化結(jié)構(gòu)示意圖;
圖2是本發(fā)明實(shí)施提供的另一種主機(jī)上的虛擬化架構(gòu)示意圖;
圖3是本發(fā)明實(shí)施例提供的arp流程示意圖;
圖4是本發(fā)明實(shí)施例提供的vm1向vm2發(fā)送數(shù)據(jù)包的流程示意圖;
圖5是本發(fā)明實(shí)施例提供的一種計(jì)算機(jī)設(shè)備硬件結(jié)構(gòu)示意圖;
圖6是本發(fā)明實(shí)施例提供的一種云計(jì)算系統(tǒng)結(jié)構(gòu)示意圖。
具體實(shí)施方式
本發(fā)明實(shí)施例描述的網(wǎng)絡(luò)架構(gòu)以及業(yè)務(wù)場(chǎng)景是為了更加清楚的說明本發(fā)明實(shí)施例的技術(shù)方案,并不構(gòu)成對(duì)于本發(fā)明實(shí)施例提供的技術(shù)方案的限定,本領(lǐng)域普通技術(shù)人員可知,隨著網(wǎng)絡(luò)架構(gòu)的演變和新業(yè)務(wù)場(chǎng)景的出現(xiàn),本發(fā)明實(shí)施例提供的技術(shù)方案對(duì)于類似的技術(shù)問題,同樣適用。
如圖1a所示,為本發(fā)明實(shí)施例提供的主機(jī)上的虛擬化結(jié)構(gòu)示意圖。主機(jī)為一臺(tái)物理服務(wù)器,該物理服務(wù)器的底層為硬件層,硬件層主要包括中央處理器(cpu,centralprocessingunit)、內(nèi)存、硬盤以及網(wǎng)卡等硬件資源。服務(wù)器虛擬化是在物理服務(wù)器上借助虛擬化軟件(如vmwareesx、citrixxen)實(shí)現(xiàn)多個(gè)虛擬機(jī)(virtualmachine,vm)的虛擬化運(yùn)行環(huán)境。安裝在服務(wù)器上實(shí)現(xiàn)虛擬化環(huán)境的軟件層被稱為虛擬機(jī)監(jiān)視器(virtualmachinemonitor,vmm)。運(yùn)行在硬件層之上的vmm承擔(dān)對(duì)硬件層中的硬件資源進(jìn)行調(diào)度、分配和管理工作。vmm之上運(yùn)行多個(gè)虛擬機(jī)vm,vmm為每個(gè)虛擬機(jī)提供虛擬化的cpu、內(nèi)存、存儲(chǔ)、io設(shè)備(如網(wǎng)卡)以及以太網(wǎng)交換機(jī)等硬件環(huán)境,保證多個(gè)虛擬機(jī)相互隔離運(yùn)行。
在虛擬化運(yùn)行環(huán)境中,vmm為每個(gè)虛擬機(jī)創(chuàng)建虛擬網(wǎng)卡(virtualnetworkinterfacecard,vnic),虛擬交換機(jī)vswitch提供了虛擬機(jī)之間,以及虛擬機(jī)與外部網(wǎng)絡(luò)之間的通訊能力。每個(gè)虛擬機(jī)的虛擬網(wǎng)卡對(duì)應(yīng)到vswitch的一個(gè)邏輯端口上,主機(jī)的物理網(wǎng)卡對(duì)應(yīng)于vswitch與外部物理交換機(jī)相連的端口。當(dāng)虛擬機(jī)發(fā)送或接收的數(shù)據(jù)包經(jīng)過vmm時(shí),vmm中的虛擬網(wǎng)絡(luò)功能模塊對(duì)經(jīng)過的數(shù)據(jù)進(jìn)行網(wǎng)絡(luò)功能處理,由于虛擬網(wǎng)絡(luò)功能模塊為軟件模塊,可以根據(jù)需要進(jìn)行更新,因此,vmm中的虛擬網(wǎng)絡(luò)功能模塊可以為用戶提供豐富的網(wǎng)絡(luò)功能。
物理網(wǎng)卡的網(wǎng)口支持虛擬化能力可以通過單根輸入輸出虛擬化(singlerootinput/outputvirtualization,sr-iov)或多根輸入輸出虛擬化(multirootinput/outputvirtualization,mr-iov)來實(shí)現(xiàn),本發(fā)明實(shí)施例以sr-iov技術(shù)為例進(jìn)行說明。sr-iov技術(shù)是一種基于硬件的虛擬化解決方案,可以在虛擬機(jī)之間高效共享pcie(peripheralcomponentinterconnectexpress,快速外設(shè)組件互連)設(shè)備,并且由于sr-iov技術(shù)是在硬件中實(shí)現(xiàn)的,因此可以能夠獲得高效的i/o性能。
標(biāo)準(zhǔn)化組織pci-sig(peripheralcomponentinterconnectspecialinterestgroup,外圍設(shè)備互連專業(yè)組)定義了sr-iov規(guī)范,sr-iov規(guī)范可參閱http://www.pcisig.com。
通過使用sr-iov技術(shù),單個(gè)i/o資源可由主機(jī)上的多個(gè)虛擬機(jī)共享,這樣,每個(gè)虛擬機(jī)都可訪問同一個(gè)的硬件資源。因此,啟用了sr-iov的pcie設(shè)備(例如物理網(wǎng)卡的網(wǎng)口)可以顯示為多個(gè)單獨(dú)的設(shè)備,顯示出的每個(gè)單獨(dú)的設(shè)備都具有獨(dú)立的pcie配置空間。以支持sr-iov的物理網(wǎng)卡為例,該物理網(wǎng)卡上包含若干個(gè)網(wǎng)口,可以分別針對(duì)各個(gè)網(wǎng)口啟用/禁用sr-iov能力,啟用了sr-iov能力的網(wǎng)口對(duì)應(yīng)于至少一個(gè)物理功能(physicalfunction,pf)以及多個(gè)虛擬功能(virtualfunction,vf),根據(jù)現(xiàn)有的sr-iov規(guī)范,每個(gè)pf最多可有64,000個(gè)與其關(guān)聯(lián)的vf。創(chuàng)建vf后,可以直接將vf指定給主機(jī)上的虛擬機(jī)使用,從而使得多個(gè)虛擬機(jī)通過與其相連的至少一個(gè)vf共享pcie設(shè)備。
如圖1b所示,為本發(fā)明實(shí)施例提供的一種網(wǎng)卡直通場(chǎng)景下主機(jī)上的虛擬化結(jié)構(gòu)示意圖,與圖1a不同的是,物理網(wǎng)卡支持單根io虛擬化,物理網(wǎng)卡的一個(gè)網(wǎng)口對(duì)應(yīng)于至少一個(gè)pf以及多個(gè)vf,各vf能共享物理網(wǎng)卡的物理資源(例如網(wǎng)卡端口)。
當(dāng)主機(jī)上的虛擬機(jī)通過直通vf發(fā)送數(shù)據(jù)包時(shí),虛擬機(jī)發(fā)出的數(shù)據(jù)包將會(huì)通過虛擬機(jī)上安裝的vf驅(qū)動(dòng)直接傳遞給網(wǎng)卡的vf,導(dǎo)致數(shù)據(jù)包無法經(jīng)過vmm中的虛擬網(wǎng)絡(luò)功能模塊。由于網(wǎng)卡的交換設(shè)備中的mac表容量有限,處理能力有限,且無法進(jìn)行自由的功能擴(kuò)展,因此網(wǎng)卡無法提供豐富的網(wǎng)絡(luò)功能。在一種可能的場(chǎng)景中,交換設(shè)備為virtualethernetbridge&classifier。
需要說明的是,本發(fā)明實(shí)施例針對(duì)網(wǎng)卡直通的場(chǎng)景,上述網(wǎng)卡直通的實(shí)現(xiàn)可以是sr-iov或者mr-iov,本發(fā)明實(shí)施例對(duì)此并不進(jìn)行限定。
如圖2所示,為本發(fā)明實(shí)施提供的另一種主機(jī)上的虛擬化架構(gòu)示意圖,該主機(jī)包含虛擬機(jī)監(jiān)視器vmm以及至少一個(gè)物理網(wǎng)卡,所述主機(jī)上運(yùn)行有至少一個(gè)虛擬機(jī)。所述至少一個(gè)物理網(wǎng)卡包括至少兩個(gè)網(wǎng)口,第一網(wǎng)口和第二網(wǎng)口。其中,第一網(wǎng)口支持網(wǎng)卡虛擬化能力,第二網(wǎng)口連接到主機(jī)外部的物理交換機(jī)。第一網(wǎng)口虛擬出至少一個(gè)pf以及至少兩個(gè)vf(圖2中以兩個(gè)vf為例進(jìn)行說明),第一虛擬機(jī)和第二虛擬機(jī)上安裝有vf驅(qū)動(dòng),第一虛擬機(jī)和第二虛擬機(jī)分別連接到至少一個(gè)vf,pf連接到vmm上的虛擬網(wǎng)橋,該虛擬網(wǎng)橋與vmm上的虛擬網(wǎng)絡(luò)功能模塊相連,該虛擬網(wǎng)絡(luò)功能模塊通過第二網(wǎng)口與主機(jī)外部的物理交換機(jī)相連。
在一種具體的場(chǎng)景中,vmm上的虛擬網(wǎng)橋可以為openvswitchbridge,將第一網(wǎng)口的pf作為該虛擬網(wǎng)橋的上行鏈路口。需要說明的是,也可以選擇第一網(wǎng)口的一個(gè)vf作為虛擬網(wǎng)橋的上行鏈路口,即第一網(wǎng)口通過選擇的vf與vmm上的虛擬網(wǎng)橋相連,此時(shí),需要在vmm上加載vf驅(qū)動(dòng),同時(shí)將與虛擬網(wǎng)橋相連的vf設(shè)置為混雜模式,設(shè)置為混雜模式的vf類似于pf,可以接收到目的地址不是自身mac地址的數(shù)據(jù)包?;祀s模式的具體說明可以參閱https://en.wikipedia.org/wiki/promiscuous_mode。本發(fā)明各實(shí)施例以第一網(wǎng)口的pf連接虛擬網(wǎng)橋?yàn)槔M(jìn)行說明,本領(lǐng)域技術(shù)人員可以理解的是,通過上述的設(shè)置方式,也可以使用混雜模式(promiscuousmode)的vf連接虛擬網(wǎng)橋。
在一種可能的實(shí)施方式中,第一網(wǎng)口和第二網(wǎng)口可以處在同一網(wǎng)卡上,也可以單獨(dú)位于不同的網(wǎng)卡上,本發(fā)明實(shí)施例對(duì)此并不進(jìn)行限定。
在本發(fā)明各實(shí)施例中,網(wǎng)卡虛擬化具體是指網(wǎng)卡硬件虛擬化。
第一虛擬機(jī)和第二虛擬機(jī)分別連接到第一網(wǎng)口的至少一個(gè)vf,第一網(wǎng)口的每個(gè)vf設(shè)置有不同的虛擬局域網(wǎng)(virtuallocalareanetwork,vlan)標(biāo)識(shí),由于一個(gè)vlan就是一個(gè)廣播域,廣播報(bào)文只能發(fā)送到到一個(gè)vlan內(nèi)的虛擬機(jī)。所以,通過為每個(gè)vf設(shè)置的不同的vlan標(biāo)識(shí),使得每個(gè)虛擬機(jī)處在不同的廣播域,虛擬機(jī)發(fā)出的廣播報(bào)文只能被虛擬機(jī)自身和pf收到。在設(shè)置vf的vlan標(biāo)識(shí)時(shí),需要保證主機(jī)范圍內(nèi)vlan標(biāo)識(shí)唯一即可,不同主機(jī)上的vlan標(biāo)識(shí)可以相同。
需要說明的是,圖2所示的實(shí)施例中,第一虛擬機(jī)向第二虛擬機(jī)發(fā)送數(shù)據(jù)包是同一主機(jī)內(nèi)部的兩個(gè)虛擬機(jī)之間的通信。本領(lǐng)域技術(shù)人員可以理解的是,第二虛擬機(jī)與第一虛擬機(jī)也可以位于不同主機(jī)上,此時(shí)第一虛擬機(jī)和第二虛擬機(jī)為跨主機(jī)通信。圖2中僅以兩個(gè)vf以及兩個(gè)vlan子接口為例進(jìn)行說明,在實(shí)際產(chǎn)品實(shí)現(xiàn)時(shí),支持網(wǎng)卡虛擬化功能的網(wǎng)卡可以虛擬化為至少一個(gè)pf以及多個(gè)vf,并不限定為兩個(gè)vf,相對(duì)應(yīng)的,vlan子接口的數(shù)量也并不限定為兩個(gè)。
本發(fā)明實(shí)施例以vm1(第一虛擬機(jī))發(fā)送數(shù)據(jù)包到vm2(第二虛擬機(jī))為例對(duì)數(shù)據(jù)包的處理流程進(jìn)行說明,網(wǎng)卡中的交換設(shè)備需要將來自vm1的數(shù)據(jù)包發(fā)送到vmm上的虛擬網(wǎng)絡(luò)功能模塊進(jìn)行處理。在發(fā)送數(shù)據(jù)包之前,第一虛擬機(jī)確定待發(fā)送的數(shù)據(jù)包的目的介質(zhì)訪問控制mac地址為所述vmm中的虛擬網(wǎng)橋上行鏈路口的mac地址。第一虛擬機(jī)通過與自身相連的所述vf向第二虛擬機(jī)發(fā)送所述數(shù)據(jù)包,所述數(shù)據(jù)包攜帶的目的ip地址為所述第二虛擬機(jī)的ip地址,攜帶的目的mac地址為所述虛擬網(wǎng)橋上行鏈路口的mac地址。第一網(wǎng)口的交換設(shè)備接收第一虛擬機(jī)通過vf發(fā)出的數(shù)據(jù)包,根據(jù)所述數(shù)據(jù)包的目的mac地址對(duì)數(shù)據(jù)包進(jìn)行二層轉(zhuǎn)發(fā),將所述數(shù)據(jù)包通過所述虛擬網(wǎng)橋的上行鏈路口發(fā)送到所述虛擬網(wǎng)橋。虛擬網(wǎng)橋接收所述數(shù)據(jù)包,將所述數(shù)據(jù)包的目的mac地址修改為所述第二虛擬機(jī)的mac地址,將修改后的數(shù)據(jù)包發(fā)送給虛擬網(wǎng)絡(luò)功能模塊,通過修改數(shù)據(jù)包的目的mac地址,使得數(shù)據(jù)后續(xù)的傳輸過程可以使用修改后的mac地址,從而保證數(shù)據(jù)包可以發(fā)送到第二虛擬機(jī)。虛擬網(wǎng)絡(luò)功能模塊在接收到修改后的數(shù)據(jù)包后,對(duì)所述修改后的數(shù)據(jù)包進(jìn)行網(wǎng)絡(luò)功能處理,為用戶提供豐富的網(wǎng)絡(luò)功能服務(wù),然后根據(jù)所述第二虛擬機(jī)的mac地址,將處理后的數(shù)據(jù)包發(fā)送到第二虛擬機(jī)。
本發(fā)明實(shí)施例中,虛擬機(jī)將數(shù)據(jù)包從與虛擬機(jī)相連的vf發(fā)出,由第一網(wǎng)口的交換設(shè)備進(jìn)行轉(zhuǎn)發(fā),將數(shù)據(jù)包發(fā)送給vmm上的虛擬網(wǎng)橋,通過該虛擬網(wǎng)橋?qū)?shù)據(jù)包傳遞到虛擬網(wǎng)絡(luò)功能模塊,由虛擬網(wǎng)絡(luò)功能模塊為該數(shù)據(jù)包提供豐富的網(wǎng)絡(luò)功能。在網(wǎng)卡直通的場(chǎng)景上,虛擬機(jī)將數(shù)據(jù)包從直通的vf發(fā)出后,通過上述方式可以將數(shù)據(jù)包發(fā)送到vmm中的虛擬網(wǎng)絡(luò)功能模塊,利用該軟件模塊為用戶提供豐富的網(wǎng)絡(luò)功能,實(shí)現(xiàn)對(duì)數(shù)據(jù)包進(jìn)行虛擬網(wǎng)絡(luò)功能處理。
進(jìn)一步的,本發(fā)明實(shí)施例提供了一種地址解析協(xié)議(addressresolutionprotocol,arp)流程,以使得第一虛擬機(jī)在發(fā)送數(shù)據(jù)包前可以獲得虛擬網(wǎng)橋上行鏈路口的mac地址,從而將數(shù)據(jù)包的目的mac地址設(shè)定為虛擬網(wǎng)橋上行鏈路口的mac地址。在本發(fā)明實(shí)施例提供的arp流程中,由軟件定義網(wǎng)絡(luò)(softwaredefinednetwork,sdn)控制器對(duì)vm1發(fā)起的arp請(qǐng)求進(jìn)行代答,在arp響應(yīng)中攜帶vmm上的虛擬網(wǎng)橋的上行鏈路口的mac地址,通過將該mac地址與數(shù)據(jù)包的目的ip相對(duì)應(yīng),從而使得將vm1發(fā)出的數(shù)據(jù)包引導(dǎo)到與虛擬網(wǎng)橋相連的pf或者vf。需要說明的是,sdn控制器可以獲得云計(jì)算網(wǎng)絡(luò)的網(wǎng)絡(luò)拓?fù)?,即可?shí)現(xiàn)上述arp流程。
具體的,如圖3所示,為本發(fā)明實(shí)施例提供的arp流程示意圖。
步驟301:vm1發(fā)出arp請(qǐng)求報(bào)文,攜帶vm2的ip地址,用于獲取vm2的mac地址,該arp請(qǐng)求報(bào)文從與vm1相連的vf發(fā)出,網(wǎng)卡上的交換設(shè)備接收到該arp請(qǐng)求報(bào)文,該arp請(qǐng)求報(bào)文攜帶發(fā)出所述arp請(qǐng)求報(bào)文的vf的vlan標(biāo)識(shí);
步驟302:交換設(shè)備廣播該arp請(qǐng)求報(bào)文,由于主機(jī)上的每個(gè)虛擬機(jī)連接的vf都具備不同的vlan標(biāo)識(shí),該arp請(qǐng)求報(bào)文被通過pf發(fā)送給虛擬網(wǎng)橋;
在一種可能的設(shè)計(jì)中,當(dāng)虛擬網(wǎng)橋通過vf與網(wǎng)卡相連時(shí),所述arp請(qǐng)求報(bào)文通過af發(fā)送到虛擬網(wǎng)橋。
步驟303:虛擬網(wǎng)橋?qū)⒃揳rp請(qǐng)求報(bào)文轉(zhuǎn)發(fā)給sdn控制器;
具體的,虛擬網(wǎng)橋可以通過packet-in消息將該arp請(qǐng)求報(bào)文發(fā)送給sdn控制器。
步驟304:sdn控制器對(duì)虛擬網(wǎng)橋設(shè)置流表項(xiàng),將流表項(xiàng)下發(fā)到虛擬網(wǎng)橋;
所述流表項(xiàng)包括:
1)arp代答設(shè)置,該arp代答設(shè)置表示:當(dāng)虛擬網(wǎng)橋接收到vm1發(fā)出的用于獲取vm2的mac地址的arp報(bào)文請(qǐng)求時(shí),構(gòu)造arp響應(yīng)報(bào)文,在arp響應(yīng)報(bào)文中攜帶虛擬網(wǎng)橋上行鏈路口的mac地址作為vm2的mac地址,該虛擬網(wǎng)橋上行鏈路口的mac地址為與虛擬網(wǎng)橋相連的pf或vf的mac地址;
2)vlan標(biāo)識(shí)處理設(shè)置:對(duì)于vm1發(fā)出的單播報(bào)文,去除單播報(bào)文攜帶的vlan標(biāo)識(shí);
3)mac地址設(shè)置:對(duì)于vm1發(fā)送給vm2的單播報(bào)文,將單播報(bào)文的目的mac地址修改為vm2的mac地址,將修改后的單播報(bào)文通過與虛擬網(wǎng)絡(luò)功能模塊相連的端口發(fā)送到虛擬網(wǎng)絡(luò)功能模塊。
需要說明的是,上述流表項(xiàng)的設(shè)置原理可以基于openflow協(xié)議。
步驟305:虛擬網(wǎng)橋配置流表項(xiàng),根據(jù)arp代答設(shè)置向vm1返回arp響應(yīng)報(bào)文,該arp響應(yīng)報(bào)文攜帶虛擬網(wǎng)橋上行鏈路口的mac地址,將該arp響應(yīng)報(bào)文通過該上行鏈路口發(fā)送給交換設(shè)備;
步驟306:交換設(shè)備轉(zhuǎn)發(fā)該arp響應(yīng)報(bào)文至vm1;
步驟307:vm1接收該arp響應(yīng)報(bào)文,將vm2的mac地址設(shè)置為虛擬網(wǎng)橋上行鏈路口的mac地址。
本發(fā)明實(shí)施例定義了上述arp過程,無需通過自學(xué)習(xí)mac轉(zhuǎn)發(fā)表的形式實(shí)現(xiàn)vm流量的二層轉(zhuǎn)發(fā)控制。通過上述arp流程,使得vm1發(fā)出的數(shù)據(jù)包的目的mac為虛擬網(wǎng)橋上行鏈路口的mac地址,從而保證了數(shù)據(jù)包通過該上行鏈路口發(fā)送到虛擬網(wǎng)橋,進(jìn)而由虛擬網(wǎng)橋?qū)⒃摂?shù)據(jù)包轉(zhuǎn)發(fā)到虛擬網(wǎng)絡(luò)功能模塊進(jìn)行處理。
如圖4所示,為本發(fā)明實(shí)施例提供的vm1向vm2發(fā)送數(shù)據(jù)包的流程示意圖。在本發(fā)明實(shí)施例中,主機(jī)1上的vm1向主機(jī)2上的vm2發(fā)送數(shù)據(jù)包,主機(jī)1的vmm中包含第一虛擬網(wǎng)橋以及第一虛擬網(wǎng)絡(luò)功能模塊,主機(jī)1的網(wǎng)卡包含至少兩個(gè)網(wǎng)口以及第一交換設(shè)備,主機(jī)2的vmm中包含第二虛擬網(wǎng)橋以及第二虛擬網(wǎng)絡(luò)功能模塊,主機(jī)2的網(wǎng)卡包含至少兩個(gè)網(wǎng)口以及第二交換設(shè)備。具體的,主機(jī)1和主機(jī)2的結(jié)構(gòu)和各組件的功能如圖2所示,此處不再贅述。vm1向vm2發(fā)送數(shù)據(jù)包的流程包括:
步驟401:vm1通過與自身相連的vf發(fā)送目的為vm2的數(shù)據(jù)包,數(shù)據(jù)包的目的ip地址為vm2的ip地址,目的mac地址為主機(jī)1上的第一虛擬網(wǎng)橋上行鏈路口的mac地址,所述數(shù)據(jù)包攜帶所述vf的vlan標(biāo)識(shí);
步驟402:網(wǎng)卡1的第一交換設(shè)備接收該數(shù)據(jù)包,根據(jù)數(shù)據(jù)包的目的mac地址將數(shù)據(jù)包通過該上行鏈路口發(fā)送給第一虛擬網(wǎng)橋;
步驟403:第一虛擬網(wǎng)橋根據(jù)預(yù)先設(shè)置的流表項(xiàng),對(duì)該數(shù)據(jù)包進(jìn)行處理,去除該數(shù)據(jù)包的vlan標(biāo)識(shí),將數(shù)據(jù)包的目的mac地址修改為vm2的mac地址;
步驟404:第一虛擬網(wǎng)橋?qū)⑿薷暮蟮臄?shù)據(jù)包發(fā)送給第一虛擬網(wǎng)絡(luò)功能模塊;
步驟405:第一虛擬網(wǎng)絡(luò)功能模塊對(duì)該數(shù)據(jù)包進(jìn)行網(wǎng)絡(luò)功能處理,包括安全組、qos、二層隧道封裝以及分布式路由等等;
需要說明的是,第一虛擬網(wǎng)絡(luò)功能模塊進(jìn)行網(wǎng)絡(luò)功能處理可以采用現(xiàn)有技術(shù)中的各種實(shí)現(xiàn)方式,本發(fā)明實(shí)施例對(duì)此并不進(jìn)行限定。
步驟406:第一虛擬網(wǎng)絡(luò)功能模塊將處理后的數(shù)據(jù)包通過第二網(wǎng)口發(fā)送到主機(jī)1外部的物理交換機(jī),物理交換機(jī)經(jīng)過網(wǎng)絡(luò)將數(shù)據(jù)包路由到vm2所在的主機(jī)2;
需要說明的是,數(shù)據(jù)包中攜帶有vm2的ip地址和mac地址,采用現(xiàn)有的路由方式即可將數(shù)據(jù)包路由到vm2所在的主機(jī)2,本發(fā)明實(shí)施例對(duì)數(shù)據(jù)包在網(wǎng)絡(luò)中的傳輸過程并不進(jìn)行限定,示例性的,vm1所在的主機(jī)1和vm2所在的主機(jī)2可以建立隧道,隧道的端點(diǎn)分別為主機(jī)1和主機(jī)2的虛擬網(wǎng)絡(luò)功能模塊,從而在兩個(gè)主機(jī)之間為vm1和vm2建立數(shù)據(jù)傳輸所需的隧道。
步驟407:vm2所在主機(jī)2的第二虛擬網(wǎng)絡(luò)功能模塊對(duì)接收到的數(shù)據(jù)包進(jìn)行網(wǎng)絡(luò)功能處理,將處理后的數(shù)據(jù)包發(fā)送給第二虛擬網(wǎng)橋;
步驟408:第二虛擬網(wǎng)橋根據(jù)vm2的mac地址進(jìn)行二層轉(zhuǎn)發(fā),通過交換設(shè)備將數(shù)據(jù)包發(fā)送給與vm2連接的vf,從而將該數(shù)據(jù)包發(fā)送到第二虛擬機(jī)。
對(duì)于從主機(jī)外部發(fā)送到主機(jī)上的目的虛擬機(jī)的數(shù)據(jù)包,該數(shù)據(jù)包首先經(jīng)過第二網(wǎng)口傳遞到虛擬網(wǎng)絡(luò)功能模塊,經(jīng)過虛擬網(wǎng)絡(luò)功能處理后再經(jīng)過第一網(wǎng)口傳遞到數(shù)據(jù)包的目的虛擬機(jī)。
圖4所示的實(shí)施例為虛擬機(jī)間跨主機(jī)的通信,可以理解的是,數(shù)據(jù)包的源虛擬機(jī)和目的虛擬機(jī)可以位于同一主機(jī)上,數(shù)據(jù)包的傳輸過程與圖4的流程類似,不同之處在于,當(dāng)數(shù)據(jù)包的源虛擬機(jī)和目的虛擬機(jī)位于同一主機(jī)上時(shí),主機(jī)的虛擬網(wǎng)絡(luò)功能模塊完成網(wǎng)絡(luò)功能處理后,將處理后的數(shù)據(jù)包發(fā)送給虛擬網(wǎng)橋,由虛擬網(wǎng)橋根據(jù)目的虛擬機(jī)的mac地址將處理后的數(shù)據(jù)包發(fā)送給目的虛擬機(jī)。
主機(jī)、sdn控制器可以采用通用的計(jì)算機(jī)設(shè)備,示例性的,如圖5所示,為本發(fā)明實(shí)施例提供的計(jì)算機(jī)設(shè)備硬件結(jié)構(gòu)示意圖。計(jì)算機(jī)設(shè)備500包括至少一個(gè)處理器501,通信總線502,存儲(chǔ)器503以及至少一個(gè)通信接口504。
處理器501可以是一個(gè)通用中央處理器(cpu),微處理器,特定應(yīng)用集成電路(application-specificintegratedcircuit,asic),或一個(gè)或多個(gè)用于控制本發(fā)明方案程序執(zhí)行的集成電路。
通信總線502可包括一通路,在上述組件之間傳送信息。所述通信接口504,使用任何收發(fā)器一類的裝置,用于與其他設(shè)備或通信網(wǎng)絡(luò)通信,如以太網(wǎng),無線接入網(wǎng)(ran),無線局域網(wǎng)(wirelesslocalareanetworks,wlan)等。
存儲(chǔ)器503可以是只讀存儲(chǔ)器(read-onlymemory,rom)或可存儲(chǔ)靜態(tài)信息和指令的其他類型的靜態(tài)存儲(chǔ)設(shè)備,隨機(jī)存取存儲(chǔ)器(randomaccessmemory,ram)或者可存儲(chǔ)信息和指令的其他類型的動(dòng)態(tài)存儲(chǔ)設(shè)備,也可以是電可擦可編程只讀存儲(chǔ)器(electricallyerasableprogrammableread-onlymemory,eeprom)、只讀光盤(compactdiscread-onlymemory,cd-rom)或其他光盤存儲(chǔ)、光碟存儲(chǔ)(包括壓縮光碟、激光碟、光碟、數(shù)字通用光碟、藍(lán)光光碟等)、磁盤存儲(chǔ)介質(zhì)或者其他磁存儲(chǔ)設(shè)備、或者能夠用于攜帶或存儲(chǔ)具有指令或數(shù)據(jù)結(jié)構(gòu)形式的期望的程序代碼并能夠由計(jì)算機(jī)存取的任何其他介質(zhì),但不限于此。存儲(chǔ)器可以是獨(dú)立存在,通過總線與處理器相連接。存儲(chǔ)器也可以和處理器集成在一起。
其中,所述存儲(chǔ)器503用于存儲(chǔ)執(zhí)行本發(fā)明方案的應(yīng)用程序代碼,并由處理器501來控制執(zhí)行。所述處理器501用于執(zhí)行所述存儲(chǔ)器503中存儲(chǔ)的應(yīng)用程序代碼。
在具體實(shí)現(xiàn)中,作為一種實(shí)施例,處理器501可以包括一個(gè)或多個(gè)cpu,例如圖5中的cpu0和cpu1。
在具體實(shí)現(xiàn)中,作為一種實(shí)施例,計(jì)算機(jī)設(shè)備500可以包括多個(gè)處理器,例如圖5中的處理器501和處理器508。這些處理器中的每一個(gè)可以是一個(gè)單核(single-cpu)處理器,也可以是一個(gè)多核(multi-cpu)處理器。這里的處理器可以指一個(gè)或多個(gè)設(shè)備、電路、和/或用于處理數(shù)據(jù)(例如計(jì)算機(jī)程序指令)的處理核。
在具體實(shí)現(xiàn)中,作為一種實(shí)施例,計(jì)算機(jī)設(shè)備500還可以包括輸出設(shè)備505和輸入設(shè)備506。輸出設(shè)備505和處理器501通信,可以以多種方式來顯示信息。例如,輸出設(shè)備505可以是液晶顯示器(liquidcrystaldisplay,lcd),發(fā)光二級(jí)管(lightemittingdiode,led)顯示設(shè)備,陰極射線管(cathoderaytube,crt)顯示設(shè)備,或投影儀(projector)等。輸入設(shè)備506和處理器501通信,可以以多種方式接受用戶的輸入。例如,輸入設(shè)備506可以是鼠標(biāo)、鍵盤、觸摸屏設(shè)備或傳感設(shè)備等。
上述的計(jì)算機(jī)設(shè)備500可以是一個(gè)通用計(jì)算機(jī)設(shè)備或者是一個(gè)專用計(jì)算機(jī)設(shè)備。在具體實(shí)現(xiàn)中,計(jì)算機(jī)設(shè)備500可以是臺(tái)式機(jī)、便攜式電腦、網(wǎng)絡(luò)服務(wù)器、掌上電腦(personaldigitalassistant,pda)、移動(dòng)手機(jī)、平板電腦、無線終端設(shè)備、通信設(shè)備、嵌入式設(shè)備或有圖5中類似結(jié)構(gòu)的設(shè)備。本發(fā)明實(shí)施例不限定計(jì)算機(jī)設(shè)備500的類型。
sdn控制器和圖2中的主機(jī)可以為圖5所示的設(shè)備,存儲(chǔ)器中存儲(chǔ)了一個(gè)或多個(gè)軟件模塊,用于實(shí)現(xiàn)主機(jī)和sdn控制器的各項(xiàng)功能。主機(jī)和sdn控制器可以通過處理器以及存儲(chǔ)器中的程序代碼來實(shí)現(xiàn)本發(fā)明實(shí)施例公開的報(bào)文處理的方法。
需要說明的是,圖5所示的計(jì)算機(jī)設(shè)備僅僅是給出了云計(jì)算系統(tǒng)中各部分的可能的硬件實(shí)現(xiàn)方式,根據(jù)系統(tǒng)各部分功能的不同或者變化,可以對(duì)計(jì)算機(jī)設(shè)備的硬件組件進(jìn)行增刪,以使得與系統(tǒng)各部分的功能進(jìn)行匹配。
進(jìn)一步的,與圖5所示的硬件裝置類似,上述實(shí)施例中的網(wǎng)卡中包含處理器以及存儲(chǔ)器,網(wǎng)卡中的處理器執(zhí)行存儲(chǔ)器中的指令以實(shí)現(xiàn)上述交換設(shè)備的功能。本發(fā)明實(shí)施例不再贅述。
更進(jìn)一步的,如圖6所示,為本發(fā)明實(shí)施例提供的一種云計(jì)算系統(tǒng)結(jié)構(gòu)示意圖,所述云計(jì)算系統(tǒng)包括至少一個(gè)主機(jī)601以及sdn控制器602,所述主機(jī)中包含至少一個(gè)網(wǎng)卡,所述主機(jī)的結(jié)構(gòu)如圖2所示。
所述主機(jī)601包括虛擬機(jī)監(jiān)視器vmm,以及至少一個(gè)網(wǎng)卡,所述主機(jī)601上運(yùn)行有第一虛擬機(jī),所述vmm包含虛擬網(wǎng)橋以及虛擬網(wǎng)絡(luò)功能模塊,所述網(wǎng)卡包含交換設(shè)備以及至少兩個(gè)網(wǎng)口,其中,第一網(wǎng)口支持單根輸入輸出虛擬化,所述第一網(wǎng)口對(duì)應(yīng)于至少一個(gè)pf和多個(gè)vf,所述第一虛擬機(jī)連接到所述第一網(wǎng)口的至少一個(gè)vf,
所述sdn控制器602,用于接收所述虛擬網(wǎng)橋轉(zhuǎn)發(fā)的來自所述第一虛擬機(jī)的arp請(qǐng)求報(bào)文,向所述虛擬網(wǎng)橋返回流表項(xiàng),所述流表項(xiàng)包括arp代答設(shè)置和mac地址設(shè)置,所述arp代答設(shè)置用于指示所述虛擬網(wǎng)橋?yàn)樗龅谝惶摂M機(jī)構(gòu)造arp響應(yīng)報(bào)文,所述arp響應(yīng)報(bào)文攜帶所述虛擬網(wǎng)橋上行鏈路口的mac地址作為待發(fā)送的數(shù)據(jù)包的目的mac地址;
所述第一虛擬機(jī),用于通過與自身相連的所述vf向第二虛擬機(jī)發(fā)送所述數(shù)據(jù)包,所述數(shù)據(jù)包攜帶的目的ip地址為所述第二虛擬機(jī)的ip地址,攜帶的目的mac地址為所述虛擬網(wǎng)橋上行鏈路口的mac地址;
所述交換設(shè)備,用于接收所述數(shù)據(jù)包,根據(jù)所述數(shù)據(jù)包的目的mac地址,將所述數(shù)據(jù)包通過所述虛擬網(wǎng)橋的上行鏈路口發(fā)送到所述虛擬網(wǎng)橋;
所述虛擬網(wǎng)橋,用于接收所述數(shù)據(jù)包,將所述數(shù)據(jù)包的目的mac地址修改為所述第二虛擬機(jī)的mac地址,將修改后的數(shù)據(jù)包發(fā)送給虛擬網(wǎng)絡(luò)功能模塊;
所述虛擬網(wǎng)絡(luò)功能模塊,用于對(duì)所述修改后的數(shù)據(jù)包進(jìn)行網(wǎng)絡(luò)功能處理后,根據(jù)所述第二虛擬機(jī)的mac地址,將處理后的數(shù)據(jù)包發(fā)送到第二虛擬機(jī)。
其中,所述第一網(wǎng)口的多個(gè)vf具有不同的虛擬局域網(wǎng)vlan標(biāo)識(shí)。
所述第一虛擬機(jī),還用于通過所述與自身相連的所述vf發(fā)出所述arp請(qǐng)求報(bào)文,所述arp請(qǐng)求報(bào)文攜帶發(fā)出arp請(qǐng)求報(bào)文的所述vf的vlan標(biāo)識(shí);
所述交換設(shè)備,還用于廣播所述arp請(qǐng)求報(bào)文,所述arp請(qǐng)求報(bào)文通過所述上行鏈路口發(fā)送到所述虛擬網(wǎng)橋;
所述虛擬網(wǎng)橋,還用于向所述sdn控制器轉(zhuǎn)發(fā)所述arp請(qǐng)求報(bào)文,接收所述sdn控制器返回的所述流表項(xiàng),向所述第一虛擬機(jī)返回arp響應(yīng)報(bào)文,arp響應(yīng)報(bào)文攜帶所述虛擬網(wǎng)橋上行鏈路口的mac地址作為所述待發(fā)送的數(shù)據(jù)包的目的mac地址。
所述流表項(xiàng)還包括mac地址設(shè)置,所述mac地址設(shè)置用于指示所述虛擬網(wǎng)橋在接收到第一虛擬機(jī)發(fā)送給第二虛擬機(jī)的單播報(bào)文時(shí),將單播報(bào)文的目的mac地址修改為第二虛擬機(jī)的mac地址。
進(jìn)一步的流表項(xiàng)中還包括輸出設(shè)置,所述輸出設(shè)置用于指示將修改后的數(shù)據(jù)包通過與所述虛擬網(wǎng)絡(luò)功能模塊相連的端口發(fā)出。
所述虛擬網(wǎng)橋上行鏈路口為所述第一網(wǎng)口的pf,所述虛擬網(wǎng)橋通過所述pf與所述網(wǎng)卡相連;或者,所述虛擬網(wǎng)橋上行鏈路口為所述第一網(wǎng)口的選定的vf,所述虛擬網(wǎng)橋通過所述選定的vf與所述網(wǎng)卡相連,其中,與所述虛擬網(wǎng)橋相連的所述選定的vf被設(shè)置為混雜模式。
當(dāng)所述第二虛擬機(jī)與所述第一虛擬機(jī)運(yùn)行在同一主機(jī)上時(shí),所述虛擬網(wǎng)橋,還用于接收處理后的數(shù)據(jù)包,根據(jù)所述數(shù)據(jù)包的目的mac地址將所述處理后的數(shù)據(jù)包通過所述交換設(shè)備發(fā)送給所述第二虛擬機(jī)。
當(dāng)所述第二虛擬機(jī)與所述第一虛擬機(jī)運(yùn)行在不同主機(jī)上時(shí),在第一虛擬機(jī)和第二虛擬機(jī)所在的兩個(gè)主機(jī)的虛擬網(wǎng)絡(luò)功能模塊之間建立隧道,通過隧道將處理后的數(shù)據(jù)包從第二網(wǎng)口發(fā)出,傳輸?shù)降诙摂M機(jī)所在的主機(jī)的虛擬網(wǎng)絡(luò)功能模塊。在第二虛擬機(jī)所在的虛擬網(wǎng)絡(luò)功能模塊對(duì)數(shù)據(jù)包完成網(wǎng)絡(luò)功能處理后,將數(shù)據(jù)包通過第二虛擬機(jī)所在的主機(jī)的虛擬網(wǎng)橋發(fā)送到第二虛擬機(jī)。
本發(fā)明實(shí)施例還提供了一種計(jì)算機(jī)存儲(chǔ)介質(zhì),用于儲(chǔ)存為上述圖2-6中的設(shè)備所用的計(jì)算機(jī)軟件指令,其包含用于執(zhí)行上述方法實(shí)施例所設(shè)計(jì)的程序。通過執(zhí)行存儲(chǔ)的程序,可以實(shí)現(xiàn)云計(jì)算系統(tǒng)中報(bào)文處理的方法。
綜上所述,本發(fā)明實(shí)施例提供的云計(jì)算系統(tǒng)中報(bào)文處理的方法,主機(jī)和系統(tǒng),可以將使用直通vf的虛擬機(jī)發(fā)出的報(bào)文引導(dǎo)到vmm上的虛擬網(wǎng)橋,進(jìn)而由vmm上的虛擬網(wǎng)絡(luò)功能模塊對(duì)數(shù)據(jù)包進(jìn)行網(wǎng)絡(luò)功能處理,從而為用戶提供豐富的網(wǎng)絡(luò)功能。
盡管在此結(jié)合各實(shí)施例對(duì)本發(fā)明進(jìn)行了描述,然而,在實(shí)施所要求保護(hù)的本發(fā)明實(shí)施例過程中,本領(lǐng)域技術(shù)人員通過查看所述附圖、公開內(nèi)容、以及所附權(quán)利要求書,可理解并實(shí)現(xiàn)所述公開實(shí)施例的其他變化。在權(quán)利要求中,“包括”(comprising)一詞不排除其他組成部分或步驟,。單個(gè)處理器或其他單元可以實(shí)現(xiàn)權(quán)利要求中列舉的若干項(xiàng)功能。相互不同的從屬權(quán)利要求中記載了某些措施,但這并不表示這些措施不能組合起來產(chǎn)生良好的效果。
本領(lǐng)域技術(shù)人員應(yīng)明白,本發(fā)明的實(shí)施例可提供為方法、裝置(設(shè)備)、或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本發(fā)明實(shí)施例可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器、cd-rom、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。計(jì)算機(jī)程序存儲(chǔ)/分布在合適的介質(zhì)中,與其它硬件一起提供或作為硬件的一部分,也可以采用其他分布形式,如通過internet或其它有線或無線電信系統(tǒng)。
本發(fā)明實(shí)施例涉及到的計(jì)算機(jī)程序指令可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,通過執(zhí)行計(jì)算機(jī)程序指令可以實(shí)現(xiàn)前述各實(shí)施例中各部件的功能
這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。
盡管結(jié)合具體特征及其實(shí)施例對(duì)本發(fā)明進(jìn)行了描述,顯而易見的,在不脫離本發(fā)明的精神和范圍的情況下,可對(duì)其進(jìn)行各種修改和組合。相應(yīng)地,本說明書和附圖僅僅是所附權(quán)利要求所界定的本發(fā)明的示例性說明,且視為已覆蓋本發(fā)明范圍內(nèi)的任意和所有修改、變化、組合或等同物。顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。