本發(fā)明屬于網(wǎng)絡(luò)通信技術(shù)領(lǐng)域,尤其涉及一種虛擬路由器實(shí)現(xiàn)方法。
背景技術(shù):
計(jì)算機(jī)網(wǎng)絡(luò)通常由大量的路由器、交換機(jī)和功能各異的網(wǎng)絡(luò)中間件組成。為了有效管理網(wǎng)絡(luò),管理員根據(jù)當(dāng)前網(wǎng)絡(luò)所承載的業(yè)務(wù)(如:視頻、語(yǔ)言、web等)來(lái)制定各種策略,由于缺少可用工具,管理員需要將這些高級(jí)策略手動(dòng)地轉(zhuǎn)化為可被網(wǎng)絡(luò)設(shè)備識(shí)別的低級(jí)配置命令,這項(xiàng)工作富有挑戰(zhàn)性且極易出錯(cuò)。
對(duì)網(wǎng)絡(luò)從業(yè)和研究人員而言,另一個(gè)幾乎不能被克服的困難就是互聯(lián)網(wǎng)的“僵化”問(wèn)題?;ヂ?lián)網(wǎng)的龐大部署規(guī)模,使得其成為社會(huì)中的關(guān)鍵基礎(chǔ)設(shè)施,部署規(guī)模的不斷擴(kuò)張,隨之而來(lái)的是互聯(lián)網(wǎng)自身的演進(jìn)和變革越來(lái)越困難,幾十年前為解決基礎(chǔ)互聯(lián)問(wèn)題而設(shè)計(jì)的互聯(lián)網(wǎng)面對(duì)當(dāng)前日新月異的各種顯得越來(lái)越力不從心。
上述背景下,以ietfforces(forwardingandcontrolseperation,forces)為代表的可編程網(wǎng)絡(luò)作為一種促進(jìn)網(wǎng)絡(luò)演化的手段被提出。而軟件定義網(wǎng)絡(luò)(softwaredefinednetwork,sdn)是可編程網(wǎng)絡(luò)的新形式,提供了一種新型的網(wǎng)絡(luò)架構(gòu)。sdn通過(guò)分離網(wǎng)絡(luò)中的轉(zhuǎn)發(fā)平面和控制平面,旨在簡(jiǎn)化網(wǎng)絡(luò)管理、支持網(wǎng)絡(luò)創(chuàng)新和演進(jìn),有望從根本上解決互聯(lián)網(wǎng)的“僵化”問(wèn)題。
網(wǎng)絡(luò)虛擬化是轉(zhuǎn)發(fā)與控制分離技術(shù)實(shí)現(xiàn)網(wǎng)絡(luò)可編程的基礎(chǔ),它們一直來(lái)都是研究者重點(diǎn)關(guān)注的對(duì)象。
作為轉(zhuǎn)發(fā)與控制分離思想的倡導(dǎo)者,ietfforces當(dāng)初是為打破單一網(wǎng)絡(luò)設(shè)備的黑盒現(xiàn)象而提出的一種新型網(wǎng)絡(luò)設(shè)備體系架構(gòu)。根據(jù)ietfforces的定義,網(wǎng)絡(luò)件(networkelement,ne)(通常意義上的網(wǎng)絡(luò)節(jié)點(diǎn))由一個(gè)控制件(controlelement,ce)和多個(gè)轉(zhuǎn)發(fā)件(forwardingelement,fe)組合而成,組合關(guān)系可以通過(guò)軟件定義的方式進(jìn)行設(shè)定。forcesne不強(qiáng)調(diào)ce和fe的地理位置和物理形態(tài),換而言之ne只是一個(gè)邏輯上的概念,如果ne所實(shí)現(xiàn)的功能是路由器,那么該路由器就是一個(gè)虛擬路由器(virtualrouter,vr),這和網(wǎng)絡(luò)虛擬化研究中的節(jié)點(diǎn)虛擬化在思想上不謀而合。
將虛擬機(jī)技術(shù)應(yīng)用到ce和fe的虛擬化,在ce和fe物理機(jī)之上生成多個(gè)ce虛擬機(jī)和fe虛擬機(jī),ce虛擬機(jī)和fe虛擬機(jī)分別是虛擬的控制件(virtualce,vce)和虛擬的轉(zhuǎn)發(fā)件(virtualfe,vfe),這些vce和vfe彼此組合構(gòu)成了多個(gè)vne(virtualne,vne)。如前所述,如果這些vne所實(shí)現(xiàn)的功能是路由器,那么一個(gè)ne中就會(huì)出現(xiàn)多個(gè)vr。由于構(gòu)成vne的vce和vfe彼此是隔離的,因此同一個(gè)ne內(nèi)的多個(gè)vne之間也彼此隔離。
當(dāng)在一個(gè)ne之上需要同時(shí)運(yùn)行多個(gè)虛擬網(wǎng)時(shí),ne可以為每個(gè)虛擬網(wǎng)分配一個(gè)專屬的vr(即vne),這些彼此隔離的vr保證了虛擬網(wǎng)之間的隔離性。
然而,傳統(tǒng)的forces路由器中外部端口分布在fe之上,在進(jìn)行虛擬化的過(guò)程中原有的端口分布模式會(huì)導(dǎo)致“fe瓶頸”問(wèn)題的出現(xiàn)。所謂“fe瓶頸”問(wèn)題指的是:當(dāng)vr為滿足虛擬網(wǎng)的包處理能力需求而使用多個(gè)vfe時(shí),為實(shí)現(xiàn)其中兩個(gè)vfe的外部端口(即vr的兩個(gè)端口)之間的包轉(zhuǎn)發(fā),數(shù)據(jù)包會(huì)以“串行”的方式穿過(guò)這兩個(gè)vfe,最終的包轉(zhuǎn)發(fā)速率取決于轉(zhuǎn)發(fā)速率較小的vfe,從而使vr根本無(wú)法提供預(yù)期的包處理能力。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是克服現(xiàn)有技術(shù)的不足,提出一種虛擬路由器實(shí)現(xiàn)方法。
本發(fā)明的目的通過(guò)以下技術(shù)方案實(shí)現(xiàn):一種虛擬路由器實(shí)現(xiàn)方法,包含如下步驟:
步驟(1)每一個(gè)虛擬路由器(vr)由一個(gè)虛擬控制器(vce)和若干個(gè)虛擬轉(zhuǎn)發(fā)器(vfe)組成,vce運(yùn)行路由協(xié)議并維護(hù)路由表,vfe針對(duì)數(shù)據(jù)包進(jìn)行路由查表、確定輸出端口;
所述vce和vfe都是物理機(jī)器上的一個(gè)虛擬機(jī),同屬于一個(gè)vr的vce和vfe可以位于不同物理機(jī)器之上。vfe對(duì)數(shù)據(jù)包的處理能力由其所在虛擬機(jī)的cpu和內(nèi)存數(shù)量決定;
步驟(2)所有進(jìn)出vr的數(shù)據(jù)包都通過(guò)交換組件(se)進(jìn)行調(diào)度;
所述se是一個(gè)多端口的交換機(jī),se上的端口分為外部端口(extraport)和內(nèi)部端口(intraport)兩種,intraport用于vce和vfe之間以及vfe和vfe之間的通信,extraport用于進(jìn)出vr的數(shù)據(jù)包的輸入和輸出;se維護(hù)了一張“vr→vce→vfe”的虛擬映射關(guān)系表(vmap),vmap表的每一行表示一個(gè)vr的虛擬映射關(guān)系,由五部分組成,分別是vr-vce-vfe、vce到se的intraport、vfe到se的intraport;
步驟(3)當(dāng)一個(gè)數(shù)據(jù)包(p1)進(jìn)入se時(shí),檢查p1的輸入端口,如果輸入端口為extraport,進(jìn)入步驟(4);如果輸入端口為intraport,進(jìn)入步驟(5);
步驟(4)se檢查數(shù)據(jù)包p1的目的地址,如果p1的目的地址為vce,se查找vmap表確定vce到se的intraport(intraporti),通過(guò)intraporti直接將p1發(fā)送至vce;否則,se查找vmap表、選取負(fù)載輕的vfe(vfej),同時(shí)確定vfej到se的intraport(intraportj),通過(guò)intraportj直接將p1發(fā)送至vfej;
步驟(5)se檢查數(shù)據(jù)包p1的源地址和目的地址,如果源地址為vce且目的地址為vfe(vfek),se查找vmap表確定vfek到se的intraport(intraportk),通過(guò)intraportk直接將p1發(fā)送至vfek;如果源地址為vce且目的地址為另一個(gè)vr,se將根據(jù)p1所攜帶的外部端口標(biāo)記,選擇一個(gè)extraport發(fā)送p1;如果源地址和目的地址均不是vce和vfe中任何一個(gè),se將根據(jù)p1所攜帶的外部端口標(biāo)記,選擇一個(gè)extraport發(fā)送p1;如果源地址為vfe且目的地址為vce,se查找vmap表確定vce到se的intraport(intraporti),通過(guò)intraporti將p1發(fā)送至vce。
本發(fā)明有益效果如下:為了解決虛擬化中的“轉(zhuǎn)發(fā)件瓶頸”問(wèn)題,本發(fā)明提出了一種虛擬路由器實(shí)現(xiàn)方法。虛擬路由器內(nèi)所有的外部端口全部集中至交換組件之上,這樣設(shè)計(jì)的好處在于:虛擬路由器為滿足虛擬網(wǎng)的包處理能力需求而使用多個(gè)轉(zhuǎn)發(fā)件時(shí),虛擬路由器中任意兩個(gè)端口之間的包轉(zhuǎn)發(fā),將不會(huì)再出現(xiàn)數(shù)據(jù)包“串行”穿過(guò)兩個(gè)轉(zhuǎn)發(fā)件的情況;交換組件會(huì)將數(shù)據(jù)包分發(fā)到這兩個(gè)轉(zhuǎn)發(fā)件進(jìn)行并行處理,這種情形下虛擬路由器的轉(zhuǎn)發(fā)速率等于這兩個(gè)轉(zhuǎn)發(fā)件的轉(zhuǎn)發(fā)速率之和。
附圖說(shuō)明
圖1基于轉(zhuǎn)發(fā)與控制分離的網(wǎng)絡(luò)虛擬化方法;
圖2基于轉(zhuǎn)發(fā)與控制分離的網(wǎng)絡(luò)虛擬化平臺(tái)設(shè)計(jì);
圖3交換組件的內(nèi)部結(jié)構(gòu)及數(shù)據(jù)分發(fā)示意圖。
具體實(shí)施方式
下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明作進(jìn)一步說(shuō)明。
本發(fā)明提出的一種虛擬路由器實(shí)現(xiàn)方法,包含如下步驟:
步驟(1)每一個(gè)虛擬路由器(vr)由一個(gè)虛擬控制器(vce)和若干個(gè)虛擬轉(zhuǎn)發(fā)器(vfe)組成,vce運(yùn)行路由協(xié)議并維護(hù)路由表,vfe針對(duì)數(shù)據(jù)包進(jìn)行路由查表、確定輸出端口;
所述vce和vfe都是物理機(jī)器上的一個(gè)虛擬機(jī),同屬于一個(gè)vr的vce和vfe可以位于不同物理機(jī)器之上。vfe對(duì)數(shù)據(jù)包的處理能力由其所在虛擬機(jī)的cpu和內(nèi)存數(shù)量決定;
步驟(2)所有進(jìn)出vr的數(shù)據(jù)包都通過(guò)交換組件(se)進(jìn)行調(diào)度;
所述se是一個(gè)多端口的交換機(jī),se上的端口分為外部端口(extraport)和內(nèi)部端口(intraport)兩種,intraport用于vce和vfe之間以及vfe和vfe之間的通信,extraport用于進(jìn)出vr的數(shù)據(jù)包的輸入和輸出;se維護(hù)了一張“vr→vce→vfe”的虛擬映射關(guān)系表(vmap),vmap表的每一行表示一個(gè)vr的虛擬映射關(guān)系,由五部分組成,分別是vr-vce-vfe、vce到se的intraport、vfe到se的intraport;
步驟(3)當(dāng)一個(gè)數(shù)據(jù)包(p1)進(jìn)入se時(shí),檢查p1的輸入端口,如果輸入端口為extraport,進(jìn)入步驟(4);如果輸入端口為intraport,進(jìn)入步驟(5);
步驟(4)se檢查數(shù)據(jù)包p1的目的地址,如果p1的目的地址為vce,se查找vmap表確定vce到se的intraport(intraporti),通過(guò)intraporti直接將p1發(fā)送至vce;否則,se查找vmap表、選取負(fù)載較輕的vfe(vfej),同時(shí)確定vfej到se的intraport(intraportj),通過(guò)intraportj直接將p1發(fā)送至vfej;
步驟(5)se檢查數(shù)據(jù)包p1的源地址和目的地址,如果源地址為vce且目的地址為vfe(vfek),se查找vmap表確定vfek到se的intraport(intraportk),通過(guò)intraportk直接將p1發(fā)送至vfek;如果源地址為vce且目的地址為另一個(gè)vr,se將根據(jù)p1所攜帶的外部端口標(biāo)記,選擇一個(gè)extraport發(fā)送p1;如果源地址和目的地址均不是vce和vfe中任何一個(gè),se將根據(jù)p1所攜帶的外部端口標(biāo)記,選擇一個(gè)extraport發(fā)送p1;如果源地址為vfe且目的地址為vce,se查找vmap表確定vce到se的intraport(intraporti),通過(guò)intraporti將p1發(fā)送至vce。
實(shí)施例
為了便于本領(lǐng)域一般技術(shù)人員理解和實(shí)現(xiàn)本發(fā)明,現(xiàn)結(jié)合附圖進(jìn)一步說(shuō)明本發(fā)明的技術(shù)方案,給出一種本發(fā)明所述的具體實(shí)施方式。
根據(jù)ietfforces的定義,ne(通常意義上的網(wǎng)絡(luò)節(jié)點(diǎn))由一個(gè)ce和多個(gè)fe組合而成,組合關(guān)系可以通過(guò)軟件定義的方式進(jìn)行設(shè)定。forcesne不強(qiáng)調(diào)ce和fe的地理位置和物理形態(tài),換而言之ne只是一個(gè)邏輯上的概念,如果ne所實(shí)現(xiàn)的功能是路由器,那么該路由器就是一個(gè)虛擬路由器(virtualrouter,vr),這和網(wǎng)絡(luò)虛擬化研究中的節(jié)點(diǎn)虛擬化在思想上不謀而合。
當(dāng)在一個(gè)ne之上需要同時(shí)運(yùn)行多個(gè)虛擬網(wǎng)時(shí),ne可以為每個(gè)虛擬網(wǎng)分配一個(gè)專屬的vr(即vne),這些彼此隔離的vr保證了虛擬網(wǎng)之間的隔離性。
如圖1所示,基于forces的網(wǎng)絡(luò)虛擬化方法本質(zhì)上是一種forces-in-forces架構(gòu)設(shè)計(jì)。外層的forces是傳統(tǒng)forces的擴(kuò)展,一方面構(gòu)建ne,對(duì)外呈現(xiàn)出一個(gè)轉(zhuǎn)發(fā)和控制分離的物理網(wǎng)絡(luò)節(jié)點(diǎn);另一方面還需增加對(duì)vfe和vce的管理,用于控制vne的構(gòu)建過(guò)程。里層的forces就是傳統(tǒng)意義上的forces,只不過(guò)運(yùn)行環(huán)境換成了虛擬機(jī)。由上可見(jiàn),這種forces-in-forces架構(gòu)設(shè)計(jì)在解決節(jié)點(diǎn)虛擬化問(wèn)題的同時(shí),解決了網(wǎng)絡(luò)層面的虛擬化,即虛擬網(wǎng)的構(gòu)建。
基于圖1所示的網(wǎng)絡(luò)虛擬化方法,我們?cè)O(shè)計(jì)并實(shí)現(xiàn)了一個(gè)網(wǎng)絡(luò)虛擬化平臺(tái)(vforter),其內(nèi)部結(jié)構(gòu)設(shè)計(jì)如圖2。vforter是一個(gè)物理服務(wù)器的集群,其中一個(gè)服務(wù)器是控制平面設(shè)備,即ce,數(shù)據(jù)平面通常被分散在多個(gè)服務(wù)器之上,這些執(zhí)行數(shù)據(jù)轉(zhuǎn)發(fā)功能的服務(wù)器,即是fe。vforter針對(duì)虛擬網(wǎng)構(gòu)建虛擬路由器vr,確保每個(gè)虛擬網(wǎng)對(duì)應(yīng)一個(gè)vr。vr中vfe的數(shù)量取決于虛擬網(wǎng)所需的轉(zhuǎn)發(fā)能力和vforter所能提供的可用資源。
圖2中,se是vforter內(nèi)通信流量的調(diào)度中心,所有流經(jīng)vforter、vce-vfe之間以及vfe-vfe之間的通信流量都將在其上進(jìn)行匯集,se根據(jù)虛擬網(wǎng)標(biāo)簽對(duì)它們進(jìn)行分發(fā)處理,而后的處理過(guò)程由vce和vfe完成,se只負(fù)責(zé)數(shù)據(jù)包的接收與發(fā)送。例如,當(dāng)se接收到一個(gè)數(shù)據(jù)包時(shí),首先決定它所屬的虛擬網(wǎng),然后將其交付相應(yīng)的vfe進(jìn)一步處理(如路由查表和流量整形),經(jīng)過(guò)vfe處理后的數(shù)據(jù)包重新返還se,此時(shí)的數(shù)據(jù)包已被vfe附加了特定的vn標(biāo)簽信息(如:輸出端口等),se根據(jù)標(biāo)簽信息完成發(fā)送。
圖2中vforter之上承載了3個(gè)虛擬網(wǎng),因此vforter產(chǎn)生3個(gè)vr,每個(gè)vr由一個(gè)vce和若干個(gè)vfe組成。vce存在于ce之中,是ce的一個(gè)虛擬機(jī),每個(gè)vce都獨(dú)立地運(yùn)行一個(gè)路由協(xié)議。vfe分布于fe之上,每個(gè)vr所包含的vfe可以是跨fe的,具體情況依據(jù)當(dāng)前vr所需的包轉(zhuǎn)發(fā)能力而定。以圖中的三個(gè)虛擬網(wǎng)為例,虛擬網(wǎng)1和虛擬網(wǎng)2對(duì)包轉(zhuǎn)發(fā)能力要求較高,因此給虛擬網(wǎng)1和虛擬網(wǎng)2中的vr分別分配了2個(gè)vfe(虛擬網(wǎng)1的vfe包括:vfe1-1和vfe1-2,虛擬網(wǎng)2的vfe包括:vfe2-1和vfe2-2,),而虛擬網(wǎng)3對(duì)包轉(zhuǎn)發(fā)能力要求較低,因此只為其分配1個(gè)vfe(即vfe3-1)。所有經(jīng)過(guò)vfe處理后的數(shù)據(jù)包將被打上標(biāo)簽重新匯聚到se,se再根據(jù)這些標(biāo)簽對(duì)數(shù)據(jù)包進(jìn)行分發(fā)處理。
圖3給出了交換組件se的內(nèi)部結(jié)構(gòu)圖,se是整個(gè)vforter的調(diào)度中心,vforter內(nèi)所有數(shù)據(jù)包的進(jìn)出都必須經(jīng)過(guò)它。其主要任務(wù)是對(duì)數(shù)據(jù)包進(jìn)行分類,然后分發(fā)器根據(jù)“vr→vce→vfe”之間的映射關(guān)系表進(jìn)行數(shù)據(jù)包的分發(fā)處理。每一個(gè)進(jìn)入se的數(shù)據(jù)包,分類器首先判斷它的來(lái)源,可能會(huì)有兩種情況:1)外部端口輸入和2)內(nèi)部接口輸入。對(duì)于前者,又細(xì)分為兩種情況:1)來(lái)自外部vforter中vr所發(fā)出的路由協(xié)議包,這時(shí)分發(fā)器需將其以重定向的方式通過(guò)內(nèi)部端口發(fā)送至vce(圖中①標(biāo)識(shí));2)來(lái)自虛擬網(wǎng)的普通轉(zhuǎn)發(fā)包,分發(fā)器將選擇相應(yīng)的vfe并發(fā)送(圖中②標(biāo)識(shí))。
當(dāng)數(shù)據(jù)包的來(lái)源為內(nèi)部接口輸入的情況下,又分為四種情況:1)來(lái)自vce的forces控制消息,用于實(shí)現(xiàn)vce對(duì)vfe的控制管理,分發(fā)器將其發(fā)送至vfe(圖中③標(biāo)識(shí));2)來(lái)自vce的路由協(xié)議包,其目的地是外部vforter中的vr,因此分發(fā)器需通過(guò)外部接口進(jìn)行發(fā)送(圖中④標(biāo)識(shí));3)vfe處理后的轉(zhuǎn)發(fā)數(shù)據(jù)包,已對(duì)其附加了標(biāo)簽,這時(shí)分發(fā)器還需根據(jù)標(biāo)簽信息,選擇相應(yīng)的外部接口發(fā)送(圖中②標(biāo)識(shí));4)vfe主動(dòng)產(chǎn)生的forces事件消息,分發(fā)器只需通過(guò)內(nèi)部接口將其發(fā)送至相應(yīng)的vce即可(圖中⑤標(biāo)識(shí))。同時(shí),se維護(hù)了一張“vr→vce→vfe”的映射表,這張表非常重要,因?yàn)樗鞔_了vforter內(nèi)部虛擬網(wǎng)、vr、fe、vfe和vce之間的對(duì)應(yīng)關(guān)系,這張表在劃分虛擬網(wǎng)的時(shí)候同步創(chuàng)建。
如前所述,每個(gè)經(jīng)過(guò)vfe處理后的數(shù)據(jù)包都將發(fā)回se。處理過(guò)程中,vfe執(zhí)行路由查表、獲取出端口并將出端口信息以標(biāo)簽的形式附加在數(shù)據(jù)包之上。這些標(biāo)簽僅存在vforter內(nèi)部,采用輕量級(jí)封裝,se中的分發(fā)器根據(jù)標(biāo)簽并通過(guò)外部接口發(fā)送數(shù)據(jù)。顯然,在數(shù)據(jù)包高速轉(zhuǎn)發(fā)的情形下,se可能會(huì)成為vforter的瓶頸,因此我們采取了2種措施來(lái)加速數(shù)據(jù)包的交換處理:1)讓分類器和分發(fā)器工作在內(nèi)核態(tài),減少數(shù)據(jù)包處理過(guò)程中的不必要的系統(tǒng)調(diào)用開(kāi)銷;2)se避免對(duì)數(shù)據(jù)包進(jìn)行深度包檢查,取而代之,只是根據(jù)包頭中的某些字段(如udp報(bào)文中的端口號(hào))進(jìn)行簡(jiǎn)單的分類,迅速交由vfe處理(如路由查表等)。
為防止se成為整個(gè)vforter的瓶頸,分類器和分發(fā)器還可以通過(guò)一些特殊硬件實(shí)現(xiàn),如netfpga、網(wǎng)絡(luò)處理器或者openflow交換機(jī)。se的分類器和分發(fā)器對(duì)所有虛擬網(wǎng)都一視同仁,因此沒(méi)有必要對(duì)se進(jìn)行虛擬化。