虛擬網(wǎng)絡(luò)路由器的數(shù)據(jù)統(tǒng)一轉(zhuǎn)發(fā)方法
【專利摘要】一種虛擬網(wǎng)絡(luò)路由器的數(shù)據(jù)統(tǒng)一轉(zhuǎn)發(fā)方法,將虛擬路由器實(shí)例的控制平面與數(shù)據(jù)平面分離,控制平面運(yùn)行在各虛擬路由器實(shí)例內(nèi)部,負(fù)責(zé)路由計(jì)算;數(shù)據(jù)平面則轉(zhuǎn)移至虛擬路由器內(nèi)核中,各虛擬路由器實(shí)例的數(shù)據(jù)平面在虛擬路由器設(shè)備底層構(gòu)成一個數(shù)據(jù)統(tǒng)一轉(zhuǎn)發(fā)引擎,由該統(tǒng)一轉(zhuǎn)發(fā)引擎負(fù)責(zé)將各虛擬路由器實(shí)例的轉(zhuǎn)發(fā)表組織并壓縮為一個共享轉(zhuǎn)發(fā)表,并以此為依據(jù)負(fù)責(zé)本虛擬路由器節(jié)點(diǎn)上所有實(shí)例的數(shù)據(jù)轉(zhuǎn)發(fā),本發(fā)明可有效降低虛擬路由器的數(shù)據(jù)轉(zhuǎn)發(fā)開銷,使虛擬路由器達(dá)到線速轉(zhuǎn)發(fā)的性能,同時提高虛擬路由器能夠支持的虛擬路由器實(shí)例數(shù)量,提高虛擬網(wǎng)絡(luò)數(shù)據(jù)轉(zhuǎn)發(fā)性能。
【專利說明】虛擬網(wǎng)絡(luò)路由器的數(shù)據(jù)統(tǒng)一轉(zhuǎn)發(fā)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于互聯(lián)網(wǎng)【技術(shù)領(lǐng)域】,尤其適用于數(shù)據(jù)中心、云平臺等支持網(wǎng)絡(luò)虛擬化的下一代新型互聯(lián)網(wǎng)絡(luò),具體涉及一種虛擬網(wǎng)絡(luò)路由器的數(shù)據(jù)統(tǒng)一轉(zhuǎn)發(fā)方法。
【背景技術(shù)】
[0002]近年來,互聯(lián)網(wǎng)領(lǐng)域出現(xiàn)了許多有關(guān)骨干網(wǎng)絡(luò)設(shè)備的新技術(shù)突破,其中最重要的一項(xiàng)便是虛擬網(wǎng)絡(luò)技術(shù)。虛擬網(wǎng)絡(luò)是利用虛擬化技術(shù)對物理網(wǎng)絡(luò)資源進(jìn)行抽象和劃分后,在公共的網(wǎng)絡(luò)硬件基礎(chǔ)設(shè)施之上構(gòu)建的多個獨(dú)立運(yùn)行的邏輯網(wǎng)絡(luò)。虛擬路由器作為虛擬網(wǎng)絡(luò)的核心設(shè)備,建立在傳統(tǒng)硬件路由設(shè)備之上,利用軟件技術(shù)來復(fù)用硬件路由設(shè)備的各種資源,實(shí)現(xiàn)對物理路由器的功能仿真,達(dá)到在一臺路由器設(shè)備上部署多個虛擬路由器實(shí)例的效果。虛擬路由器實(shí)例間可以通過隧道技術(shù)建立多條邏輯上的虛擬鏈路,構(gòu)成虛擬網(wǎng)絡(luò)拓?fù)洵h(huán)境(圖1)。虛擬網(wǎng)絡(luò)技術(shù)提供了更靈活、更可控的網(wǎng)絡(luò)構(gòu)建方式,為新型互聯(lián)網(wǎng)服務(wù)與應(yīng)用的發(fā)展提供了很好的實(shí)現(xiàn)平臺。
[0003]虛擬網(wǎng)絡(luò)分組的一跳轉(zhuǎn)發(fā),即分組從一個虛擬路由器實(shí)例出發(fā),經(jīng)過一條由物理鏈路及多個中間物理路由器組成的虛擬鏈路,到達(dá)另一個虛擬路由器實(shí)例的過程。在傳統(tǒng)的虛擬網(wǎng)絡(luò)數(shù)據(jù)轉(zhuǎn)發(fā)技術(shù)中,各虛擬路由器實(shí)例分別維護(hù)各自的控制平面和數(shù)據(jù)平面,負(fù)責(zé)為其所屬的虛擬網(wǎng)絡(luò)同時提供路由與轉(zhuǎn)發(fā)服務(wù)??刂破矫尕?fù)責(zé)運(yùn)行虛擬網(wǎng)絡(luò)路由協(xié)議,生成轉(zhuǎn)發(fā)表,數(shù)據(jù)平面以轉(zhuǎn)發(fā)表為依據(jù)完成虛擬網(wǎng)絡(luò)的分組轉(zhuǎn)發(fā)。在這種轉(zhuǎn)發(fā)方式中,數(shù)據(jù)分組要進(jìn)入虛擬路由器實(shí)例完成路由查找,需要經(jīng)過物理網(wǎng)卡到虛擬網(wǎng)卡的多次映射,轉(zhuǎn)發(fā)時延較長,且各實(shí)例的數(shù)據(jù)平面會競爭CPU、cache、高速數(shù)據(jù)通路等物理資源,大大降低了路由查找效率。
【發(fā)明內(nèi)容】
[0004]為了克服上述現(xiàn)有技術(shù)的缺點(diǎn),本發(fā)明的目的在于提供一種虛擬網(wǎng)絡(luò)路由器的數(shù)據(jù)統(tǒng)一轉(zhuǎn)發(fā)方法,對虛擬路由器實(shí)例的數(shù)據(jù)轉(zhuǎn)發(fā)流程進(jìn)行了優(yōu)化設(shè)計(jì),將虛擬路由器實(shí)例的控制平面和數(shù)據(jù)平面進(jìn)行分離,在設(shè)備底層為到達(dá)各虛擬路由器實(shí)例的分組提供統(tǒng)一的轉(zhuǎn)發(fā)服務(wù),本發(fā)明可以有效地降低虛擬路由器的數(shù)據(jù)轉(zhuǎn)發(fā)開銷,使虛擬路由器達(dá)到線速轉(zhuǎn)發(fā)的性能,同時提高虛擬路由器能夠支持的虛擬路由器實(shí)例數(shù)量,是提高虛擬網(wǎng)絡(luò)數(shù)據(jù)轉(zhuǎn)發(fā)性能的重要技術(shù)。
[0005]為了實(shí)現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案是:
[0006]一種虛擬網(wǎng)絡(luò)路由器的數(shù)據(jù)統(tǒng)一轉(zhuǎn)發(fā)方法,將虛擬路由器實(shí)例的控制平面與數(shù)據(jù)平面分離,控制平面運(yùn)行在各虛擬路由器實(shí)例內(nèi)部,負(fù)責(zé)路由計(jì)算;數(shù)據(jù)平面則轉(zhuǎn)移至虛擬路由器內(nèi)核中,各虛擬路由器實(shí)例的數(shù)據(jù)平面在虛擬路由器設(shè)備底層構(gòu)成一個數(shù)據(jù)統(tǒng)一轉(zhuǎn)發(fā)引擎,由該統(tǒng)一轉(zhuǎn)發(fā)引擎負(fù)責(zé)將各虛擬路由器實(shí)例的轉(zhuǎn)發(fā)表組織并壓縮為一個共享轉(zhuǎn)發(fā)表,并以此為依據(jù)負(fù)責(zé)本虛擬路由器節(jié)點(diǎn)上所有實(shí)例的數(shù)據(jù)轉(zhuǎn)發(fā)。
[0007]各虛擬路由器實(shí)例的控制平面運(yùn)行路由協(xié)議,動態(tài)生成轉(zhuǎn)發(fā)表項(xiàng),并將轉(zhuǎn)發(fā)表發(fā)送至所述數(shù)據(jù)統(tǒng)一轉(zhuǎn)發(fā)引擎。
[0008]所述數(shù)據(jù)統(tǒng)一轉(zhuǎn)發(fā)引擎可視為原各虛擬路由器實(shí)例中數(shù)據(jù)平面的集合,具備普通數(shù)據(jù)平面的所有功能,如分組分類、路由查找、IP頭校驗(yàn)、分組封裝解封裝等,它負(fù)責(zé)為虛擬路由器上所有的虛擬路由器實(shí)例提供統(tǒng)一的數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù),其轉(zhuǎn)發(fā)依據(jù)為引擎中路由查找模塊的共享轉(zhuǎn)發(fā)表。各虛擬路由器實(shí)例的控制平面分別運(yùn)行各自的路由協(xié)議并生成轉(zhuǎn)發(fā)表,這些轉(zhuǎn)發(fā)表信息通過虛擬路由器實(shí)例與統(tǒng)一轉(zhuǎn)發(fā)引擎間的通信被定期發(fā)送給統(tǒng)一轉(zhuǎn)發(fā)引擎,在引擎中被組織為共享轉(zhuǎn)發(fā)表,這樣就可以將原來多個數(shù)據(jù)平面的轉(zhuǎn)發(fā)表信息整合到一個統(tǒng)一轉(zhuǎn)發(fā)引擎中。
[0009]通過構(gòu)建trie樹對各虛擬路由器實(shí)例的轉(zhuǎn)發(fā)表前綴進(jìn)行統(tǒng)一索引,可以將多個虛擬路由器實(shí)例的轉(zhuǎn)發(fā)表組織成一個共享轉(zhuǎn)發(fā)表。共享轉(zhuǎn)發(fā)表結(jié)構(gòu)由trie樹、共享索引表和各虛擬路由器實(shí)例的轉(zhuǎn)發(fā)表三部分組成。其中trie樹用于組織各虛擬路由器實(shí)例轉(zhuǎn)發(fā)表的地址前綴。包含有效前綴信息的trie樹結(jié)點(diǎn)將指向一個共享索引表,該共享索引表將各虛擬路由器實(shí)例的編號作為關(guān)鍵字,來索引該前綴結(jié)點(diǎn)在對應(yīng)的虛擬路由器實(shí)例轉(zhuǎn)發(fā)表中的位置。
[0010]當(dāng)各虛擬路由器實(shí)例均采用IP網(wǎng)絡(luò)時,trie樹用于組織各虛擬路由器實(shí)例轉(zhuǎn)發(fā)表的IP地址前綴,它采用級壓縮的方式,每個節(jié)點(diǎn)包含2n個分支,其中I SnS 32,能夠表示IP地址中的η比特位;trie樹每個包含有效前綴信息(即前綴出現(xiàn)在任意一個虛擬路由器實(shí)例的轉(zhuǎn)發(fā)表中)的結(jié)點(diǎn)都指向一個共享索引表,共享索引表將各虛擬路由器實(shí)例的編號作為關(guān)鍵字,來索引該trie樹結(jié)點(diǎn)所代表的前綴在對應(yīng)的虛擬路由器實(shí)例轉(zhuǎn)發(fā)表中的位置,各虛擬路由器實(shí)例的轉(zhuǎn)發(fā)表對普通的路由器轉(zhuǎn)發(fā)表進(jìn)行了擴(kuò)展,在表項(xiàng)中增加了下一跳虛擬鏈路的起點(diǎn)與終點(diǎn)信息。
[0011]當(dāng)有虛擬網(wǎng)絡(luò)上的數(shù)據(jù)分組到達(dá)虛擬路由器設(shè)備時,進(jìn)行如下操作:
[0012]a)從物理網(wǎng)卡上獲取數(shù)據(jù)報(bào)文并解封裝,取得內(nèi)部的虛擬網(wǎng)絡(luò)數(shù)據(jù)分組;
[0013]b)以虛擬網(wǎng)絡(luò)數(shù)據(jù)分組對應(yīng)的虛擬路由器實(shí)例編號及目的地址字段為依據(jù),在所述數(shù)據(jù)統(tǒng)一轉(zhuǎn)發(fā)引擎的路由查找模塊內(nèi)進(jìn)行路由查找;
[0014]c)查找結(jié)束后,數(shù)據(jù)分組分三類處理:如果數(shù)據(jù)分組的目的地址為各虛擬路由器實(shí)例,將其經(jīng)虛擬交換機(jī)遞交給相應(yīng)的虛擬路由器實(shí)例;如果數(shù)據(jù)分組的目的地址為設(shè)備的主機(jī)地址,則將數(shù)據(jù)分組上交給傳輸層處理;對于需要轉(zhuǎn)發(fā)的虛擬網(wǎng)絡(luò)數(shù)據(jù)分組,則根據(jù)路由查找結(jié)果對數(shù)據(jù)分組進(jìn)行IP封裝后,將其經(jīng)物理網(wǎng)卡發(fā)送至下一跳虛擬路由器實(shí)例。
[0015]所述路由查找模塊是數(shù)據(jù)統(tǒng)一轉(zhuǎn)發(fā)引擎的核心,主要包含三類功能:1)建立共享轉(zhuǎn)發(fā)表,作為各虛擬網(wǎng)絡(luò)數(shù)據(jù)分組進(jìn)行路由查找的依據(jù);2)與引擎內(nèi)其它模塊交互,獲取各虛擬路由器實(shí)例轉(zhuǎn)發(fā)表以及虛擬網(wǎng)絡(luò)數(shù)據(jù)分組等信息;3)對共享轉(zhuǎn)發(fā)表進(jìn)行操作,如添加一條轉(zhuǎn)發(fā)表項(xiàng)、刪除一條轉(zhuǎn)發(fā)表項(xiàng)、對共享轉(zhuǎn)發(fā)表進(jìn)行路由查找等。
[0016]與現(xiàn)有技術(shù)相比,本發(fā)明虛擬網(wǎng)絡(luò)路由器的統(tǒng)一轉(zhuǎn)發(fā)避免了虛擬網(wǎng)絡(luò)分組從虛擬路由器物理接口定向到虛擬接口以進(jìn)入虛擬路由器實(shí)例,在實(shí)例中完成路由查找后再從虛擬接口定向到物理接口以進(jìn)入物理網(wǎng)絡(luò)的過程,降低了轉(zhuǎn)發(fā)開銷。基于共享轉(zhuǎn)發(fā)表的統(tǒng)一路由查找節(jié)省了轉(zhuǎn)發(fā)表存儲空間,提高了路由查找效率。此外,統(tǒng)一轉(zhuǎn)發(fā)技術(shù)減輕了虛擬路由器實(shí)例維護(hù)數(shù)據(jù)平面的負(fù)擔(dān),使其能將資源集中用于控制平面協(xié)議的運(yùn)行與維護(hù),同時也在一定程度上避免了各虛擬路由器實(shí)例過大的任務(wù)計(jì)算量對數(shù)據(jù)轉(zhuǎn)發(fā)造成的干擾,對于提高虛擬網(wǎng)絡(luò)數(shù)據(jù)轉(zhuǎn)發(fā)的高效性和穩(wěn)定性具有重要意義。
【專利附圖】
【附圖說明】
[0017]圖1為統(tǒng)一轉(zhuǎn)發(fā)技術(shù)適用的典型虛擬網(wǎng)絡(luò)環(huán)境。
[0018]圖2為支持統(tǒng)一轉(zhuǎn)發(fā)引擎的虛擬路由器結(jié)構(gòu),虛線箭頭所指為虛擬網(wǎng)絡(luò)數(shù)據(jù)傳輸路線,實(shí)線箭頭所指為轉(zhuǎn)發(fā)表信息傳輸路線。
[0019]圖3為共享轉(zhuǎn)發(fā)表結(jié)構(gòu)。
[0020]圖4為采用統(tǒng)一轉(zhuǎn)發(fā)技術(shù)的虛擬網(wǎng)絡(luò)示例。
[0021]圖5為圖4中的虛擬網(wǎng)絡(luò)分組發(fā)送流程。
[0022]圖6為圖4中的VRl共享轉(zhuǎn)發(fā)表。
[0023]圖7為圖4中的VR2共享轉(zhuǎn)發(fā)表。
[0024]圖8為圖4中的VR3共享轉(zhuǎn)發(fā)表。
【具體實(shí)施方式】
[0025]下面結(jié)合附圖和實(shí)施例詳細(xì)說明本發(fā)明的實(shí)施方式。
[0026]本發(fā)明一種虛擬網(wǎng)絡(luò)路由器的數(shù)據(jù)統(tǒng)一轉(zhuǎn)發(fā)方法,主要是將虛擬路由器實(shí)例的控制平面與數(shù)據(jù)平面分離,控制平面運(yùn)行在各虛擬路由器實(shí)例內(nèi)部,負(fù)責(zé)路由計(jì)算;數(shù)據(jù)平面則轉(zhuǎn)移至虛擬路由器內(nèi)核中,各虛擬路由器實(shí)例的數(shù)據(jù)平面在虛擬路由器設(shè)備底層構(gòu)成一個數(shù)據(jù)統(tǒng)一轉(zhuǎn)發(fā)引擎,統(tǒng)一轉(zhuǎn)發(fā)引擎負(fù)責(zé)將各虛擬路由器實(shí)例的轉(zhuǎn)發(fā)表組織并壓縮為一個共享轉(zhuǎn)發(fā)表,并以此為依據(jù)負(fù)責(zé)本虛擬路由器節(jié)點(diǎn)上所有實(shí)例的數(shù)據(jù)轉(zhuǎn)發(fā)。支持統(tǒng)一轉(zhuǎn)發(fā)引擎的虛擬路由器結(jié)構(gòu)如圖2所示。
[0027]具體來說,本技術(shù)的實(shí)施步驟如下:
[0028]( I)各虛擬路由器實(shí)例的控制平面運(yùn)行路由協(xié)議,動態(tài)生成轉(zhuǎn)發(fā)表項(xiàng),并通過一定的通信機(jī)制將轉(zhuǎn)發(fā)表發(fā)送至數(shù)據(jù)統(tǒng)一轉(zhuǎn)發(fā)引擎;
[0029](2)數(shù)據(jù)統(tǒng)一轉(zhuǎn)發(fā)引擎負(fù)責(zé)將各實(shí)例的轉(zhuǎn)發(fā)表組織成一個共享轉(zhuǎn)發(fā)表;
[0030](3)當(dāng)有虛擬網(wǎng)絡(luò)上的數(shù)據(jù)分組到達(dá)虛擬路由器設(shè)備時,進(jìn)行如下操作:
[0031]a)從物理網(wǎng)卡上獲取數(shù)據(jù)報(bào)文并解封裝,取得內(nèi)部的虛擬網(wǎng)絡(luò)數(shù)據(jù)分組;
[0032]b)以虛擬網(wǎng)絡(luò)分組對應(yīng)的虛擬路由器實(shí)例編號及分組的目的地址字段為依據(jù),在統(tǒng)一轉(zhuǎn)發(fā)引擎的路由查找模塊內(nèi)進(jìn)行路由查找;
[0033]c)查找結(jié)束后,分組分三類處理:如果分組的目的地址為各虛擬路由器實(shí)例,將其經(jīng)虛擬交換機(jī)遞交給相應(yīng)的虛擬路由器實(shí)例;如果分組的目的地址為設(shè)備的主機(jī)地址,則將分組上交給傳輸層處理;對于需要轉(zhuǎn)發(fā)的虛擬網(wǎng)絡(luò)分組,則根據(jù)路由查找結(jié)果對分組進(jìn)行IP封裝后,將其經(jīng)物理網(wǎng)卡發(fā)送至下一跳虛擬路由器實(shí)例。
[0034]本發(fā)明中,共享轉(zhuǎn)發(fā)表的組織技術(shù)說明如下:
[0035]構(gòu)建共享轉(zhuǎn)發(fā)表的關(guān)鍵是各虛擬路由器實(shí)例的轉(zhuǎn)發(fā)表。這些轉(zhuǎn)發(fā)表由各虛擬路由器實(shí)例中運(yùn)行的路由協(xié)議動態(tài)生成,轉(zhuǎn)發(fā)表的大小、結(jié)構(gòu)取決于其所屬虛擬網(wǎng)絡(luò)的規(guī)模及所采用的路由協(xié)議。當(dāng)各虛擬網(wǎng)絡(luò)采用相同的網(wǎng)絡(luò)層協(xié)議時,可以將這些轉(zhuǎn)發(fā)表組織成一個共享轉(zhuǎn)發(fā)表,實(shí)現(xiàn)對各轉(zhuǎn)發(fā)表的統(tǒng)一索引。共享轉(zhuǎn)發(fā)表結(jié)構(gòu)由三部分組成,分別是trie樹,共享索引表和各虛擬路由器實(shí)例的轉(zhuǎn)發(fā)表,如圖3所示。以IP網(wǎng)絡(luò)為例,Trie樹用于組織各虛擬路由器實(shí)例轉(zhuǎn)發(fā)表的IP地址前綴,它采用級壓縮的方式,每個節(jié)點(diǎn)包含2n個分支(I < η < 32),可以表示IP地址中的η比特位。Trie樹結(jié)點(diǎn)上的每個分支都指向一個共享索引表。共享索引表將各虛擬路由器實(shí)例的編號作為關(guān)鍵字,來索引該trie樹前綴分支在對應(yīng)的虛擬路由器實(shí)例轉(zhuǎn)發(fā)表中的位置。各虛擬路由器實(shí)例的轉(zhuǎn)發(fā)表對普通的路由器轉(zhuǎn)發(fā)表進(jìn)行了擴(kuò)展,在表項(xiàng)中增加了下一跳虛擬鏈路的起點(diǎn)與終點(diǎn)信息。
[0036]下面以如圖4所示的采用統(tǒng)一轉(zhuǎn)發(fā)技術(shù)的小型虛擬網(wǎng)絡(luò)環(huán)境對本發(fā)明進(jìn)行詳細(xì)說明。該環(huán)境中,三臺虛擬路由器設(shè)備VR1、VR2和VR3分別通過三臺物理路由器設(shè)備R1、R2和R3接入物理網(wǎng)絡(luò)。每臺虛擬路由器設(shè)備上均支持兩個虛擬路由器實(shí)例(圖4中VRI1、VRI2), VRl上的VRI1、VR2上的VRI2以及VR3上的VRIl間通過隧道封裝技術(shù)建立虛擬鏈路,形成虛擬網(wǎng)絡(luò)VNetl ;VR1上的VRI2、VR2上的VRIl以及VR3上的VRI2間通過隧道封裝技術(shù)建立虛擬鏈路,形成虛擬網(wǎng)絡(luò)VNet2。PCl和PC2為VNetl上的用戶終端,分別通過VRl上的VRI1、VR3上的VRIl接入虛擬網(wǎng)絡(luò)VNetl進(jìn)行通信。以PCl向PC2發(fā)送數(shù)據(jù)分組為例,從虛擬網(wǎng)絡(luò)的視角看,分組從PCl發(fā)出后,依次被轉(zhuǎn)發(fā)至VRl上的VRI1、VR2上的VRI2、VR3上的VRI1,最終到達(dá)PC2。PC2的響應(yīng)分組則沿相同路徑反方向到達(dá)PC1。由于VR1、VR2和VR3均部署了數(shù)據(jù)統(tǒng)一轉(zhuǎn)發(fā)引擎,所以能代替VRI1、VRI2和VRI3為兩臺PC間的通信提供數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)。
[0037]圖4中PCl向PC2發(fā)送分組的具體流程如圖5所示。首先,PCl向VRl發(fā)送一個虛擬網(wǎng)絡(luò)分組(圖5分組①),VRl從物理網(wǎng)卡上接收到分組后,根據(jù)分組目的地址7.0.0.2和虛擬路由器實(shí)例編號I查找VRl共享轉(zhuǎn)發(fā)表,如圖6所示,先自上而下遍歷trie樹,找到與7.0.0.2匹配的有索引的最長前綴為7.0.0.0/24,由此查找對應(yīng)的共享索引表,得知此前綴在VRIl轉(zhuǎn)發(fā)表中的位置,從而獲得下一跳所經(jīng)虛擬鏈路的起點(diǎn)地址2.0.0.2和終點(diǎn)地址4.0.0.2。之后,VRl對此虛擬網(wǎng)絡(luò)分組進(jìn)行封裝,將封裝頭的源地址設(shè)為虛擬鏈路的起始地址,目的地址設(shè)為虛鏈路的終點(diǎn)地址,并更新TTL值和校驗(yàn)和。接著,內(nèi)核更新緩存分組的MAC地址信息,將封裝后分組(圖5分組②)直接從物理網(wǎng)卡上發(fā)送出去。封裝后分組經(jīng)物理路由器Rl與R2轉(zhuǎn)發(fā)到達(dá)VR2,VR2將分組解封裝,從封裝頭的目的地址得到虛擬路由器實(shí)例的編號為2,然后根據(jù)內(nèi)部虛擬網(wǎng)絡(luò)分組的目的地址7.0.0.2和虛擬路由器實(shí)例編號2以同樣的方式查找VR2共享轉(zhuǎn)發(fā)表,如圖7所示,得到下一跳所經(jīng)虛擬鏈路信息并重新封裝虛擬網(wǎng)絡(luò)分組,封裝頭的源地址和目的地址分別設(shè)為4.0.0.2和6.0.0.2(圖5分組③)。封裝分組從VR2發(fā)出后經(jīng)R2、R3到達(dá)VR3,VR3將分組解封裝后,根據(jù)內(nèi)部虛擬網(wǎng)絡(luò)分組的目的地址7.0.0.2和從封裝頭目的地址得到的虛擬路由器實(shí)例編號I查找VR3共享轉(zhuǎn)發(fā)表,如圖8所示,發(fā)現(xiàn)PC2與自己處于同一網(wǎng)段,因此直接將虛擬網(wǎng)絡(luò)分組發(fā)送至PC2(圖5分組④)。這樣就完成了虛擬網(wǎng)絡(luò)分組從PCl至PC2的傳輸。
【權(quán)利要求】
1.一種虛擬網(wǎng)絡(luò)路由器的數(shù)據(jù)統(tǒng)一轉(zhuǎn)發(fā)方法,其特征在于,將虛擬路由器實(shí)例的控制平面與數(shù)據(jù)平面分離,控制平面運(yùn)行在各虛擬路由器實(shí)例內(nèi)部,負(fù)責(zé)路由計(jì)算;數(shù)據(jù)平面則轉(zhuǎn)移至虛擬路由器內(nèi)核中,各虛擬路由器實(shí)例的數(shù)據(jù)平面在虛擬路由器設(shè)備底層構(gòu)成一個數(shù)據(jù)統(tǒng)一轉(zhuǎn)發(fā)引擎,由該統(tǒng)一轉(zhuǎn)發(fā)引擎負(fù)責(zé)將各虛擬路由器實(shí)例的轉(zhuǎn)發(fā)表組織并壓縮為一個共享轉(zhuǎn)發(fā)表,并以此為依據(jù)負(fù)責(zé)本虛擬路由器節(jié)點(diǎn)上所有實(shí)例的數(shù)據(jù)轉(zhuǎn)發(fā)。
2.根據(jù)權(quán)利要求1所述的虛擬網(wǎng)絡(luò)路由器的數(shù)據(jù)統(tǒng)一轉(zhuǎn)發(fā)方法,其特征在于,各虛擬路由器實(shí)例的控制平面運(yùn)行路由協(xié)議,動態(tài)生成轉(zhuǎn)發(fā)表項(xiàng),并將轉(zhuǎn)發(fā)表發(fā)送至所述數(shù)據(jù)統(tǒng)一轉(zhuǎn)發(fā)引擎。
3.根據(jù)權(quán)利要求1所述的虛擬網(wǎng)絡(luò)路由器的數(shù)據(jù)統(tǒng)一轉(zhuǎn)發(fā)方法,其特征在于,所述數(shù)據(jù)統(tǒng)一轉(zhuǎn)發(fā)引擎可視為原各虛擬路由器實(shí)例中數(shù)據(jù)平面的集合,具備普通數(shù)據(jù)平面的所有功能,它負(fù)責(zé)為虛擬路由器上所有的虛擬路由器實(shí)例提供統(tǒng)一的數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù),其轉(zhuǎn)發(fā)依據(jù)為引擎中路由查找模塊的共享轉(zhuǎn)發(fā)表;各虛擬路由器實(shí)例的控制平面分別運(yùn)行各自的路由協(xié)議并生成轉(zhuǎn)發(fā)表,各轉(zhuǎn)發(fā)表信息通過虛擬路由器實(shí)例與數(shù)據(jù)統(tǒng)一轉(zhuǎn)發(fā)引擎間的通信被定期發(fā)送給數(shù)據(jù)統(tǒng)一轉(zhuǎn)發(fā)引擎,在引擎中被組織為共享轉(zhuǎn)發(fā)表,從而將原來多個數(shù)據(jù)平面的轉(zhuǎn)發(fā)表信息整合到一個數(shù)據(jù)統(tǒng)一轉(zhuǎn)發(fā)引擎中。
4.根據(jù)權(quán)利要求1所述的虛擬網(wǎng)絡(luò)路由器的數(shù)據(jù)統(tǒng)一轉(zhuǎn)發(fā)方法,其特征在于,通過構(gòu)建trie樹對各虛擬路由器實(shí)例的轉(zhuǎn)發(fā)表前綴進(jìn)行統(tǒng)一索引,從而將多個虛擬路由器實(shí)例的轉(zhuǎn)發(fā)表組織成一個共享轉(zhuǎn)發(fā)表,共享轉(zhuǎn)發(fā)表結(jié)構(gòu)由trie樹、共享索引表和各虛擬路由器實(shí)例的轉(zhuǎn)發(fā)表三部分組成,其中trie樹用于組織各虛擬路由器實(shí)例轉(zhuǎn)發(fā)表的地址前綴,包含有效前綴信息的trie樹結(jié)點(diǎn)將指向一個共享索引表,該共享索引表將各虛擬路由器實(shí)例的編號作為關(guān)鍵字,來索引該前綴結(jié)點(diǎn)在對應(yīng)的虛擬路由器實(shí)例轉(zhuǎn)發(fā)表中的位置。
5.根據(jù)權(quán)利要求4所述的虛擬網(wǎng)絡(luò)路由器的數(shù)據(jù)統(tǒng)一轉(zhuǎn)發(fā)方法,其特征在于,當(dāng)各虛擬路由器實(shí)例均采用IP網(wǎng)絡(luò)時,trie樹用于組織各虛擬路由器實(shí)例轉(zhuǎn)發(fā)表的IP地址前綴,它采用級壓縮的方式,每個節(jié)點(diǎn)包含2n個分支,其中KnS 32,能夠表示IP地址中的η比特位;trie樹每個包含有效 前綴信息的結(jié)點(diǎn)都指向一個共享索引表,共享索引表將各虛擬路由器實(shí)例的編號作為關(guān)鍵字,來索引該trie樹結(jié)點(diǎn)所代表的前綴在對應(yīng)的虛擬路由器實(shí)例轉(zhuǎn)發(fā)表中的位置,各虛擬路由器實(shí)例的轉(zhuǎn)發(fā)表對普通的路由器轉(zhuǎn)發(fā)表進(jìn)行了擴(kuò)展,在表項(xiàng)中增加了下一跳虛擬鏈路的起點(diǎn)與終點(diǎn)信息。
6.根據(jù)權(quán)利要求1所述的虛擬網(wǎng)絡(luò)路由器的數(shù)據(jù)統(tǒng)一轉(zhuǎn)發(fā)方法,其特征在于,當(dāng)有虛擬網(wǎng)絡(luò)上的數(shù)據(jù)分組到達(dá)虛擬路由器設(shè)備時,進(jìn)行如下操作: a)從物理網(wǎng)卡上獲取數(shù)據(jù)報(bào)文并解封裝,取得內(nèi)部的虛擬網(wǎng)絡(luò)數(shù)據(jù)分組; b)以虛擬網(wǎng)絡(luò)數(shù)據(jù)分組對應(yīng)的虛擬路由器實(shí)例編號及目的地址字段為依據(jù),在所述數(shù)據(jù)統(tǒng)一轉(zhuǎn)發(fā)引擎的路由查找模塊內(nèi)進(jìn)行路由查找; c)查找結(jié)束后,數(shù)據(jù)分組分三類處理:如果數(shù)據(jù)分組的目的地址為各虛擬路由器實(shí)例,將其經(jīng)虛擬交換機(jī)遞交給相應(yīng)的虛擬路由器實(shí)例;如果數(shù)據(jù)分組的目的地址為設(shè)備的主機(jī)地址,則將數(shù)據(jù)分組上交給傳輸層處理;對于需要轉(zhuǎn)發(fā)的虛擬網(wǎng)絡(luò)數(shù)據(jù)分組,則根據(jù)路由查找結(jié)果對數(shù)據(jù)分組進(jìn)行IP封裝后,將其經(jīng)物理網(wǎng)卡發(fā)送至下一跳虛擬路由器實(shí)例。
7.根據(jù)權(quán)利要求6所述的虛擬網(wǎng)絡(luò)路由器的數(shù)據(jù)統(tǒng)一轉(zhuǎn)發(fā)方法,其特征在于,所述路由查找模塊是數(shù)據(jù)統(tǒng)一轉(zhuǎn)發(fā)引擎的核心,用于建立共享轉(zhuǎn)發(fā)表,作為各虛擬網(wǎng)絡(luò)數(shù)據(jù)分組進(jìn)行路由查找的依據(jù),與引擎內(nèi)其它模塊交互,獲取各虛擬路由器實(shí)例信息,并對共享轉(zhuǎn)發(fā)表進(jìn)行操作。`
【文檔編號】H04L12/803GK103491006SQ201310418512
【公開日】2014年1月1日 申請日期:2013年9月13日 優(yōu)先權(quán)日:2013年9月13日
【發(fā)明者】徐明偉, 張媛媛, 李清 申請人:清華大學(xué)