一種數(shù)據(jù)包轉(zhuǎn)發(fā)的方法、裝置及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及虛擬化技術(shù)領(lǐng)域,具體涉及一種數(shù)據(jù)包轉(zhuǎn)發(fā)的方法、裝置及系統(tǒng)。
【背景技術(shù)】
[0002] 虛擬化技術(shù)目前使用非常廣泛,在現(xiàn)有的虛擬化技術(shù)中,一個物理主機(jī)可以運(yùn)行 多個虛擬機(jī),每個虛擬機(jī)都共享該物理機(jī)的硬件資源,但是針對該物理主機(jī)上每個虛擬機(jī) 的10訪問都必須基于該物理主機(jī)上的同一個虛擬機(jī)監(jiān)控器(VirtualMachineMonitor, VMM)進(jìn)行轉(zhuǎn)發(fā),因此,如果該物理主機(jī)上虛擬機(jī)的數(shù)量非常巨大時,所有的數(shù)據(jù)包都集中通 過VMM,必然造成網(wǎng)絡(luò)數(shù)據(jù)流擁塞,從而影響系統(tǒng)性能。
[0003] 現(xiàn)有的虛擬化網(wǎng)絡(luò)的使用方式,所有的數(shù)據(jù)包都必須在VMM內(nèi)進(jìn)行轉(zhuǎn)發(fā),通過查 找VMM中的轉(zhuǎn)發(fā)表,找到每個數(shù)據(jù)包對應(yīng)的目的端口,從而通過該端口將數(shù)據(jù)包轉(zhuǎn)發(fā)到對 應(yīng)的接收設(shè)備或發(fā)到指定的外網(wǎng),同時每當(dāng)端口收到一個新的數(shù)據(jù)包時,都會對數(shù)據(jù)包信 息進(jìn)行記錄,從而刷新轉(zhuǎn)發(fā)表,將目的端口和指定的MAC地址建立對應(yīng)關(guān)系,如果虛擬機(jī)數(shù) 量不斷增加,每個虛擬機(jī)訪問的目標(biāo)主機(jī)也不斷改變,必然會造成轉(zhuǎn)發(fā)表巨大,同時需要經(jīng) 常刷新,造成訪問轉(zhuǎn)發(fā)表查找目的端口的時間延長,造成性能瓶頸。
[0004] 現(xiàn)有技術(shù)在VMM中通過一個轉(zhuǎn)發(fā)表管理所有的虛擬機(jī)的上下行端口,當(dāng)虛擬機(jī)數(shù) 量增加時,必然會導(dǎo)致表的體積急劇增大,從而延長查找時間,而且業(yè)務(wù)類型復(fù)雜多樣,每 個虛擬機(jī)都會訪問大量不同的目的地址,因此表的體積會隨著業(yè)務(wù)復(fù)雜度增加而增大,造 成性能下降。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明實(shí)施例提供的一種數(shù)據(jù)包轉(zhuǎn)發(fā)的方法,可以使虛擬機(jī)上下行的數(shù)據(jù)包不必 每個都經(jīng)過虛擬機(jī)監(jiān)控器,從而提高了數(shù)據(jù)包轉(zhuǎn)發(fā)的效率,減輕了虛擬機(jī)監(jiān)控器的負(fù)擔(dān)。本 發(fā)明實(shí)施例還提供了相應(yīng)的裝置及物理主機(jī)。
[0006] 本發(fā)明第一方面提供一種數(shù)據(jù)包轉(zhuǎn)發(fā)的方法,所述方法應(yīng)用于物理主機(jī)中的源通 信端口,所述物理主機(jī)包括多個虛擬機(jī)VM、虛擬機(jī)監(jiān)控器VMM和物理網(wǎng)卡,所述源通信端口 包括每個VM上的虛擬通信端口,以及所述物理網(wǎng)卡上的物理通信端口,每個虛擬通信端口 和每個物理通信端口中都維護(hù)有本通信端口的第一數(shù)據(jù)轉(zhuǎn)發(fā)表,所述第一數(shù)據(jù)轉(zhuǎn)發(fā)表由與 所述本通信端口關(guān)聯(lián)的媒體訪問控制MAC地址與目的通信端口標(biāo)識的對應(yīng)關(guān)系組成,所述 方法包括:
[0007] 接收待發(fā)送的數(shù)據(jù)包,所述待發(fā)送的數(shù)據(jù)包攜帶目的MAC地址;
[0008] 從所述本通信端口維護(hù)的第一數(shù)據(jù)轉(zhuǎn)發(fā)表中,查找與所述本通信端口關(guān)聯(lián)的所述 目的MAC地址對應(yīng)的目的通信端口標(biāo)識;
[0009] 當(dāng)查找到與所述目的MAC地址對應(yīng)的目的通信端口標(biāo)識,直接向所述目的通信端 口標(biāo)識對應(yīng)的目的通信端口發(fā)送所述待發(fā)送的數(shù)據(jù)包,其中,當(dāng)所述源通信端口為虛擬機(jī) 的虛擬通信端口時,所述目的通信端口為目的物理通信端口,當(dāng)所述源通信端口為物理通 信端口時,所述目的通信端口為目的虛擬機(jī)的虛擬通信端口。
[0010] 結(jié)合第一方面,在第一種可能的實(shí)現(xiàn)方式中,所述方法還包括:
[0011] 刪除所述本通信端口維護(hù)的第一數(shù)據(jù)轉(zhuǎn)發(fā)表中滿足刪除條件的MAC地址與目的 通信端口標(biāo)識的對應(yīng)關(guān)系,以保持所述本通信端口維護(hù)的第一數(shù)據(jù)轉(zhuǎn)發(fā)表的容量。
[0012] 結(jié)合第一方面或第一方面第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式中, 所述方法還包括:
[0013] 當(dāng)未查找到與所述目的MAC地址對應(yīng)的目的通信端口標(biāo)識,向所述VMM發(fā)送所述 待發(fā)送的數(shù)據(jù)包,所述待發(fā)送的數(shù)據(jù)包由所述VMM從所述VMM中維護(hù)的第二數(shù)據(jù)轉(zhuǎn)發(fā)表中, 確定與所述目的MAC地址對應(yīng)的目的通信端口標(biāo)識,并向所述目的MAC地址對應(yīng)的目的通 信端口發(fā)送所述待發(fā)送的數(shù)據(jù)包,所述第二數(shù)據(jù)轉(zhuǎn)發(fā)表包含每一個MAC地址與目的通信端 口標(biāo)識的對應(yīng)關(guān)系。
[0014] 結(jié)合第一方面第二種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,所述向所述 VMM發(fā)送所述待發(fā)送的數(shù)據(jù)包之后,所述方法還包括:
[0015] 接收所述VMM發(fā)送的所述目的MAC地址與對應(yīng)的目的通信端口標(biāo)識的對應(yīng)關(guān) 系;
[0016] 將所述目的MAC地址與對應(yīng)的目的通信端口標(biāo)識的對應(yīng)關(guān)系添加到所述第一數(shù) 據(jù)轉(zhuǎn)發(fā)表中,所述目的MAC地址與對應(yīng)的目的通信端口標(biāo)識的對應(yīng)關(guān)系用于發(fā)送下一個攜 帶所述目的MAC地址的數(shù)據(jù)包。
[0017] 結(jié)合第一方面第二種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,所述方法還 包括:
[0018] 當(dāng)任意一個MAC地址對應(yīng)的目的通信端口標(biāo)識發(fā)生變更時,接收所述VMM發(fā)送的 所述任意一個MAC地址與更新后的目的通信端口標(biāo)識的對應(yīng)關(guān)系;
[0019] 將所述任意一個MAC地址與更新后的目的通信端口標(biāo)識的對應(yīng)關(guān)系,更新到所述 第一數(shù)據(jù)轉(zhuǎn)發(fā)表中,所述任意一個MAC地址與更新后的目的通信端口標(biāo)識的對應(yīng)關(guān)系用于 發(fā)送攜帶所述任意一個MAC地址的數(shù)據(jù)包到更新后的目的端口。
[0020] 本發(fā)明第二方面提供一種數(shù)據(jù)包轉(zhuǎn)發(fā)的裝置,所述裝置為物理主機(jī)中的源通信端 口,所述物理主機(jī)包括多個虛擬機(jī)VM、虛擬機(jī)監(jiān)控器VMM和物理網(wǎng)卡,所述源通信端口包括 每個VM上的虛擬通信端口,以及所述物理網(wǎng)卡上的物理通信端口,每個虛擬通信端口和每 個物理通信端口中都維護(hù)有本通信端口的第一數(shù)據(jù)轉(zhuǎn)發(fā)表,所述第一數(shù)據(jù)轉(zhuǎn)發(fā)表由與所述 本通信端口關(guān)聯(lián)的媒體訪問控制MAC地址與目的通信端口標(biāo)識的對應(yīng)關(guān)系組成,所述裝置 包括:
[0021] 接收模塊,用于接收待發(fā)送的數(shù)據(jù)包,所述待發(fā)送的數(shù)據(jù)包攜帶目的MAC地址;
[0022] 查找模塊,用于從所述本通信端口維護(hù)的第一數(shù)據(jù)轉(zhuǎn)發(fā)表中,查找與所述本通信 端口關(guān)聯(lián)的所述目的MAC地址對應(yīng)的目的通信端口標(biāo)識;
[0023] 發(fā)送模塊,用于當(dāng)所述查找模塊查找到與所述目的MAC地址對應(yīng)的目的通信端口 標(biāo)識,直接向所述目的通信端口標(biāo)識對應(yīng)的目的通信端口發(fā)送所述待發(fā)送的數(shù)據(jù)包,其中, 當(dāng)所述源通信端口為虛擬機(jī)的虛擬通信端口時,所述目的通信端口為目的物理通信端口, 當(dāng)所述源通信端口為物理通信端口時,所述目的通信端口為目的虛擬機(jī)的虛擬通信端口。
[0024] 結(jié)合第二方面,在第一種可能的實(shí)現(xiàn)方式中,所述裝置還包括:
[0025] 轉(zhuǎn)發(fā)表管理模塊,用于刪除所述本通信端口維護(hù)的第一數(shù)據(jù)轉(zhuǎn)發(fā)表中滿足刪除條 件的MAC地址與目的通信端口標(biāo)識的對應(yīng)關(guān)系,以保持所述本通信端口維護(hù)的第一數(shù)據(jù)轉(zhuǎn) 發(fā)表的容量。
[0026] 結(jié)合第二方面或第二方面第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式中,
[0027] 所述發(fā)送模塊,還用于當(dāng)所述查找模塊未查找到與所述目的MAC地址對應(yīng)的目的 通信端口標(biāo)識,向所述VMM發(fā)送所述待發(fā)送的數(shù)據(jù)包,所述待發(fā)送的數(shù)據(jù)包由所述VMM從所 述VMM中維護(hù)的第二數(shù)據(jù)轉(zhuǎn)發(fā)表中,確定與所述目的MAC地址對應(yīng)的目的通信端口標(biāo)識,并 向所述目的MAC地址對應(yīng)的目的通信端口發(fā)送所述待發(fā)送的數(shù)據(jù)包,所述第二數(shù)據(jù)轉(zhuǎn)發(fā)表 包含每一個MAC地址與目的通信端口標(biāo)識的對應(yīng)關(guān)系。
[0028] 結(jié)合第二方面第二種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,所述裝置還 包括:添加模塊,
[0029] 所述接收模塊,還用于接收所述VMM發(fā)送的所述目的MAC地址與對應(yīng)的目的通信 端口標(biāo)識的對應(yīng)關(guān)系;
[0030] 所述添加模塊,用于將所述接收模塊接收的所述目的MAC地址與對應(yīng)的目的通信 端口標(biāo)識的對應(yīng)關(guān)系添加到所述第一數(shù)據(jù)轉(zhuǎn)發(fā)表中,所述目的MAC地址與對應(yīng)的目的通信 端口標(biāo)識的對應(yīng)關(guān)系用于發(fā)送下一個攜帶所述目的MAC地址的數(shù)據(jù)包。
[0031] 結(jié)合第二方面第二種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,所述裝置還 包括:更新模塊,
[0032] 所述接收模塊,還用于當(dāng)任意一個MAC地址對應(yīng)的目的通信端口標(biāo)識發(fā)生變更 時,接收所述VMM發(fā)送的所述任意一個MAC地址與更新后的目的通信端口標(biāo)識的對應(yīng)關(guān) 系;
[0033] 所述更新模塊,用于將所述接收模塊接收的所述任意一個MAC地址與更新后的目 的通信端口標(biāo)識的對應(yīng)關(guān)系,更新到所述第一數(shù)據(jù)轉(zhuǎn)發(fā)表中,所述任意一個MAC地址與更 新后的目的通信端口標(biāo)識的對應(yīng)關(guān)系用于發(fā)送攜帶所述任意一個MAC地址的數(shù)據(jù)包到更 新后的目的端口。
[0034] 本發(fā)明第三方面提供一種物理主機(jī),包括多個虛擬機(jī)VM、虛擬機(jī)監(jiān)控器VMM和物 理網(wǎng)卡,每個VM上包括虛擬通信端口,所述物理網(wǎng)卡上包括多個物理通信端口,每個虛擬 通信端口和每個物理通信端口中都維護(hù)有本通信端口的第一數(shù)據(jù)轉(zhuǎn)發(fā)表,所述第一數(shù)據(jù)轉(zhuǎn) 發(fā)表由與所述本通信端口關(guān)聯(lián)的媒體訪問控制MAC地址與目的通信端口標(biāo)識的對應(yīng)關(guān)系 組成,
[0035] 當(dāng)每個虛擬通信端口和每個物理通信端口中的任意一個作為源通信端口時,所述 源通信端口用于:
[0036] 接收待發(fā)送的數(shù)據(jù)包,所述待發(fā)送的數(shù)據(jù)包攜帶目的MAC地址;
[0037] 從所述本通信端口維護(hù)的第一數(shù)據(jù)轉(zhuǎn)發(fā)表中,查找與所述本通信端口關(guān)聯(lián)的所述 目的MAC地址對應(yīng)的目的通信端口標(biāo)識;
[0038] 當(dāng)查找到與所述目的MAC地址對應(yīng)的目的通信端口標(biāo)識,向所述目的通信端口標(biāo) 識對應(yīng)的目的通信端口發(fā)送所述待發(fā)送的數(shù)據(jù)包,其中,當(dāng)所述源通信端口為虛擬機(jī)的虛 擬通信端口時,所述目的通信端口為目的物理通信端口,當(dāng)所述源通信端口為物理通信端 口時,所述目的通信端口為目的虛擬機(jī)的虛擬通信端口。
[0039] 本發(fā)明實(shí)施例提供的數(shù)據(jù)包轉(zhuǎn)發(fā)的方法,所述方法應(yīng)用于物理主機(jī)中的源通信端 口,所述物理主機(jī)包括多個虛擬機(jī)VM、虛擬機(jī)監(jiān)控器VMM和物理網(wǎng)卡,所述源通信端口包括 每個VM上的虛擬通信端口,以及所述物理網(wǎng)卡上的物理通信端口,每個虛擬通信端口和每 個物理通信端口中都維護(hù)有本通信端口的第一數(shù)據(jù)轉(zhuǎn)發(fā)表,所述第一數(shù)據(jù)轉(zhuǎn)發(fā)表由與所述 本通信端口關(guān)聯(lián)的媒體訪問控制MAC地址與目的通信端口標(biāo)識的對應(yīng)關(guān)系組成,所述方法 包括:接收待發(fā)送的數(shù)據(jù)包,所述待發(fā)送的數(shù)據(jù)包攜帶目的MAC地址;從所述本通信端口維 護(hù)的第一數(shù)據(jù)轉(zhuǎn)發(fā)表中,查找與所述本通信端口關(guān)聯(lián)的所述目的MAC地址對應(yīng)的目的通信 端口標(biāo)識;當(dāng)查找到與所述目的MAC地址對應(yīng)的目的通信端口標(biāo)識,直接向所述目的通信 端口標(biāo)識對應(yīng)的目的通信端口發(fā)送所述待發(fā)送的數(shù)據(jù)包,其中,當(dāng)所述源通信端口為虛擬 機(jī)的虛擬通信端口時,所述目的通信端口為目的物理通信端口,當(dāng)所述源通信端口為物理 通信端口時,所述目的通信端口為目的虛擬機(jī)的虛擬通信端口。與現(xiàn)有技術(shù)中虛擬機(jī)上下 行的數(shù)據(jù)包都要經(jīng)過VMM,由VMM從包含每一個MAC地址與目的通信端口標(biāo)識的對應(yīng)關(guān)系的 大表中確定待發(fā)送的數(shù)據(jù)包要發(fā)往的目的端口相比,本發(fā)明實(shí)施例提供的數(shù)據(jù)包轉(zhuǎn)發(fā)的方 法,在虛擬機(jī)的虛擬通信端口和物理網(wǎng)卡的物理通信端口中維護(hù)一個只與本通信端口關(guān)聯(lián) 的第一數(shù)據(jù)轉(zhuǎn)發(fā)表,所述第一數(shù)據(jù)轉(zhuǎn)發(fā)表由與所述本通信端口關(guān)聯(lián)的媒體訪問控制MAC地 址與目的通信端口標(biāo)識的對應(yīng)關(guān)系組成,從而加快了確定目的通信端口的速度,并且在確 定到目的通信端口后,源通信端口直接將數(shù)據(jù)包發(fā)送到目的通信端口,也就是說數(shù)據(jù)包可 以繞過VMM,從而減輕了VMM的負(fù)擔(dān),提高了數(shù)據(jù)包轉(zhuǎn)發(fā)的效率。
【附圖說明】