專利名稱:虛擬路由系統(tǒng)及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,特別涉及一種虛擬路由系統(tǒng)及方法。
背景技術(shù):
互聯(lián)網(wǎng)在過去幾十年的產(chǎn)生與發(fā)展過程中,取得了舉世矚目的成功,隨著互聯(lián)網(wǎng)的發(fā)展,出現(xiàn)了越來越多的用戶,越來越多的應(yīng)用,越來越多的服務(wù)。互聯(lián)網(wǎng)的快速發(fā)展使得現(xiàn)有的網(wǎng)絡(luò)架構(gòu)難以滿足用戶的迫切需求,同時,固有的弊端和新生的缺陷不斷涌現(xiàn)。因此,這就迫使研究人員不得不考慮下一代網(wǎng)絡(luò)的架構(gòu),并產(chǎn)生了一系列研究成果。然而,大量的研究成果沒有一個行之有效的大規(guī)模的平臺來驗證其正確性。因此,未來互聯(lián)網(wǎng)的研究迫切需要一個創(chuàng)新實驗平臺。這個創(chuàng)新實驗平臺,需要在不影響現(xiàn)有網(wǎng)絡(luò)的前提下,并行進行各種互聯(lián)網(wǎng)的創(chuàng)新研究和實驗。網(wǎng)絡(luò)虛擬化技術(shù)允許 在同一個底層網(wǎng)絡(luò)資源上同時并行運行多個虛擬網(wǎng)絡(luò),被認為是搭建未來創(chuàng)新網(wǎng)絡(luò)實驗平臺的一種重要和有效的技術(shù)。網(wǎng)絡(luò)虛擬化通過節(jié)點虛擬化技術(shù)和鏈路虛擬化技術(shù)在同一底層物理網(wǎng)絡(luò)上虛擬出多個虛擬網(wǎng)絡(luò),不同的虛擬網(wǎng)絡(luò)提供不同的服務(wù),運行不同的協(xié)議和應(yīng)用。例如不同虛擬網(wǎng)絡(luò)可以運行特點鮮明的不同應(yīng)用網(wǎng)絡(luò)電話(Voice over InternetProtocol, VoIP)、視頻點播、組播、文件共享等。支持虛擬化的路由器是虛擬化網(wǎng)絡(luò)的關(guān)鍵設(shè)備,所以在網(wǎng)絡(luò)虛擬化這一課題中,虛擬路由器的研究便顯得格外重要。為了突破基于軟件轉(zhuǎn)發(fā)的虛擬路由器的轉(zhuǎn)發(fā)速率低的瓶頸研究人員提出了基于硬件的虛擬路由器,主要分為兩類,一種為基于網(wǎng)絡(luò)處理器(Network Processor),雖然它可以達到較高的轉(zhuǎn)發(fā)速率,但是對于研究人員而言,網(wǎng)絡(luò)處理器的內(nèi)部結(jié)構(gòu)無法改變,對它的開發(fā)只能局限于設(shè)備廠商提供的接口,在可編程性上有較大的局限性。另一種方案是基于現(xiàn)場可編程門陣列(Field-Programmable Gate Array,FPGA),其最大的特點在于不僅可以達到高的轉(zhuǎn)發(fā)速率,同時提供完全的可編程性,內(nèi)部結(jié)構(gòu)可以任意更改。然而,目前關(guān)于硬件虛擬路由器的方案隔離性上仍存在缺陷,各個虛擬網(wǎng)絡(luò)之間無法做到完全的隔離。
發(fā)明內(nèi)容
(一 )要解決的技術(shù)問題本發(fā)明要解決的技術(shù)問題是如何實現(xiàn)連接虛擬路由器的各個虛擬網(wǎng)絡(luò)之間的完
全隔離。( 二)技術(shù)方案為解決上述技術(shù)問題,本發(fā)明提供了一種虛擬路由系統(tǒng),所述系統(tǒng)包括數(shù)據(jù)平面,所述數(shù)據(jù)平面包括=MAC輸入/輸出端口、輸入仲裁模塊、以及至少兩個數(shù)據(jù)轉(zhuǎn)發(fā)平面;所述MAC輸入/輸出端口,用于接收數(shù)據(jù)包,并發(fā)送至所述輸入仲裁模塊;所述輸入仲裁模塊,用于解析所述數(shù)據(jù)包,并通過所述數(shù)據(jù)包中的VLAN標簽,將所述數(shù)據(jù)包發(fā)送至相應(yīng)的數(shù)據(jù)轉(zhuǎn)發(fā)平面;
所述數(shù)據(jù)轉(zhuǎn)發(fā)平面,用于對所述數(shù)據(jù)包進行解析,通過解析獲得所述數(shù)據(jù)包相應(yīng)的目的MAC地址,將所述數(shù)據(jù)包發(fā)送至相應(yīng)的MAC輸入/輸出端口并轉(zhuǎn)發(fā)。優(yōu)選地,所述系統(tǒng)還包括控制平面,與所述數(shù)據(jù)平面連接,所述控制平面包括與所述數(shù)據(jù)轉(zhuǎn)發(fā)平面數(shù)量相同個數(shù)的虛擬機,且與所述數(shù)據(jù)轉(zhuǎn)發(fā)平面一一對應(yīng),每個虛擬機包括虛擬網(wǎng)卡、控制模塊和路由配置輸出端,所述虛擬網(wǎng)卡的數(shù)量與所述MAC輸入/輸出端口的數(shù)量相同,且—— 對應(yīng),相對應(yīng)的虛擬網(wǎng)卡和MAC輸出/輸出端口的MAC地址和IP地址相同;所述虛擬網(wǎng)卡,用于接收對應(yīng)數(shù)據(jù)轉(zhuǎn)發(fā)平面發(fā)送來的數(shù)據(jù)包,并轉(zhuǎn)發(fā)至所述控制模塊;所述控制模塊,用于接收由所述虛擬網(wǎng)卡轉(zhuǎn)發(fā)來的數(shù)據(jù)包,并對所述數(shù)據(jù)包進行解析,以調(diào)整與本虛擬機對應(yīng)的數(shù)據(jù)轉(zhuǎn)發(fā)平面的路由表、ARP表、以及端口映射表,所述端口映射表為存儲了所屬數(shù)據(jù)轉(zhuǎn)發(fā)平面對應(yīng)的虛擬機上所有虛擬網(wǎng)卡的MAC地址和IP地址;所述路由配置輸出端,用于將所述路由表、ARP表、以及端口映射表發(fā)送至與所述虛擬機對應(yīng)的數(shù)據(jù)轉(zhuǎn)發(fā)平面,以更新與所述虛擬機對應(yīng)的數(shù)據(jù)轉(zhuǎn)發(fā)平面上的路由表、ARP表、以及端口映射表。優(yōu)選地,每個數(shù)據(jù)轉(zhuǎn)發(fā)平面均包括端口映射地址匹配模塊和輸出端口查找模塊,并設(shè)有路由表、ARP表、以及端口映射表;所述端口映射地址匹配模塊,用于解析所述數(shù)據(jù)包,判斷所述數(shù)據(jù)包的包類型,若包類型為單播包,則獲取所述數(shù)據(jù)包的目的MAC地址,根據(jù)所述端口映射表判斷所述目的MAC地址是否屬于本數(shù)據(jù)轉(zhuǎn)發(fā)平面,若所述目的MAC地址不屬于本數(shù)據(jù)轉(zhuǎn)發(fā)平面,則丟棄所述數(shù)據(jù)包,若所述目的MAC地址屬于本數(shù)據(jù)轉(zhuǎn)發(fā)平面或所述包類型為組播包或廣播包,則獲取所述數(shù)據(jù)包的目的IP地址,根據(jù)所述端口映射表判斷所述目的IP地址是否與該數(shù)據(jù)轉(zhuǎn)發(fā)平面對應(yīng)的虛擬機的虛擬網(wǎng)卡的IP地址匹配,若所述目的IP地址與所述虛擬網(wǎng)卡的IP地址匹配,則將所述數(shù)據(jù)包發(fā)送至對應(yīng)的虛擬機,若所述目的IP地址與所述虛擬網(wǎng)卡的IP地址不匹配,則判斷所述數(shù)據(jù)包是否為IPV4包以及所述數(shù)據(jù)包中是否有選項,若所述數(shù)據(jù)包是IPV4包且沒有選項,則將所述數(shù)據(jù)包發(fā)送至所述輸出端口查找模塊,若所述數(shù)據(jù)包不是IPV4包或所述數(shù)據(jù)包有選項,則將所述數(shù)據(jù)包發(fā)送至對應(yīng)的虛擬機;所述輸出端口查找模塊,用于根據(jù)所述路由表進行查找匹配,若在路由表中未查找到目的IP地址,則將所述數(shù)據(jù)包發(fā)送至對應(yīng)的虛擬機,若在路由表中查找到了目的IP地址,則根據(jù)路由表獲得路由路徑,獲得下一跳的IP地址,根據(jù)所述ARP表進行查找匹配,在所述ARP表中未查找到下一跳的IP地址,則將所述數(shù)據(jù)包發(fā)送至對應(yīng)的虛擬機,若在所述ARP表中查找到下一跳的IP地址,則將所述下一跳的IP地址轉(zhuǎn)換為所述下一跳IP地址對應(yīng)的MAC地址,將所述目的MAC地址替換為數(shù)據(jù)包的源MAC地址,將根據(jù)查找獲得的下一跳的MAC地址替換為數(shù)據(jù)包的目的MAC地址,并將所述數(shù)據(jù)包發(fā)送至替換前的目的MAC地址相應(yīng)的MAC輸入/輸出端口。優(yōu)選地,每個數(shù)據(jù)轉(zhuǎn)發(fā)平面還包括時序調(diào)整模塊,用于對所述數(shù)據(jù)包進行調(diào)整,以使得包括VLAN標簽的數(shù)據(jù)包和不包括VLAN標簽的普通數(shù)據(jù)包的處理時序同步。優(yōu)選地,所述MAC輸入/輸出端口為至少兩個;優(yōu)選地,所述MAC輸入/輸出端口通過隊列的方式進行數(shù)據(jù)交互。
優(yōu)選地,所述數(shù)據(jù)平面通過FPGA板卡實現(xiàn)。優(yōu)選地,所述控制平面通過主機和安裝于所述主機中的虛擬機實現(xiàn)。本方面還公開了一種基于所述虛擬路由系統(tǒng)的方法,包括以下步驟SI :MAC輸入/輸出端口接收數(shù)據(jù)包;S2 :解析所述數(shù)據(jù)包,并通過所述數(shù)據(jù)包中的VLAN標簽,將所述數(shù)據(jù)包發(fā)送至相應(yīng)的數(shù)據(jù)轉(zhuǎn)發(fā)平面;
S3 :所述數(shù)據(jù)轉(zhuǎn)發(fā)平面對所述數(shù)據(jù)包進行解析,以獲得所述數(shù)據(jù)包相應(yīng)的目的MAC地址,并將所述數(shù)據(jù)包發(fā)送至相應(yīng)的MAC輸入/輸出端口 ;S4 :所述MAC輸入/輸出端口將所述數(shù)據(jù)包發(fā)送至所述目的地址。(三)有益效果本發(fā)明通過對數(shù)據(jù)包的虛擬局域網(wǎng)(Virtual Local Area Network, VLAN)標簽做處理,使得具有不同VLAN標簽的數(shù)據(jù)包在不同的轉(zhuǎn)發(fā)平面中進行處理,這樣不同VLAN標簽的數(shù)據(jù)包在硬件中也是相互隔離的,因此實現(xiàn)了連接虛擬路由器各個虛擬網(wǎng)絡(luò)之間的完全隔離。
圖I是按照本發(fā)明一種實施方式的虛擬路由系統(tǒng)的結(jié)構(gòu)框圖;圖2是按照本發(fā)明一種實施方式的虛擬路由系統(tǒng)中數(shù)據(jù)平面的結(jié)構(gòu)示意圖;圖3是圖I中所示的虛擬路由系統(tǒng)的包處理規(guī)則流程圖。
具體實施例方式下面結(jié)合附圖和實施例,對本發(fā)明的具體實施方式
作進一步詳細描述。以下實施例用于說明本發(fā)明,但不用來限制本發(fā)明的范圍。圖I是按照本發(fā)明一種實施方式的虛擬路由系統(tǒng)的結(jié)構(gòu)框圖,參照圖1,本實施方式的虛擬路由系統(tǒng)包括數(shù)據(jù)平面,所述數(shù)據(jù)平面包括介質(zhì)訪問控制層(Medium AccessControl, MAC)輸入/輸出端口、輸入仲裁模塊、以及至少兩個數(shù)據(jù)轉(zhuǎn)發(fā)平面,本實施方式中,采用了 4個MAC輸入/輸出端口,但不限制本發(fā)明的保護范圍;所述MAC輸入/輸出端口,用于接收數(shù)據(jù)包,并發(fā)送至所述輸入仲裁模塊;所述輸入仲裁模塊,用于解析所述數(shù)據(jù)包,并通過所述數(shù)據(jù)包中的VLAN標簽,將所述數(shù)據(jù)包發(fā)送至相應(yīng)的數(shù)據(jù)轉(zhuǎn)發(fā)平面;所述輸入仲裁模塊的具體的仲裁規(guī)則為每個數(shù)據(jù)轉(zhuǎn)發(fā)平面均對應(yīng)一個VLAN標簽(可根據(jù)需要進行相應(yīng)設(shè)置,參照圖2的實施方式,所述數(shù)據(jù)平面包括四個數(shù)據(jù)轉(zhuǎn)發(fā)平面,則可將其中的三個分別對應(yīng)一定的VLAN標簽,依次為VLANUVLAN2和VLAN3的標簽,并依次成為VLAN轉(zhuǎn)發(fā)平面1、VLAN轉(zhuǎn)發(fā)平面2和VLAN轉(zhuǎn)發(fā)平面3,還有一個則可對應(yīng)非VLAN標簽,稱為普通轉(zhuǎn)發(fā)平面),若所述數(shù)據(jù)包中的VLAN標簽與一個數(shù)據(jù)轉(zhuǎn)發(fā)平面對應(yīng),則將該數(shù)據(jù)包發(fā)送到該數(shù)據(jù)轉(zhuǎn)發(fā)平面中進行處理,否則該數(shù)據(jù)包將被丟棄;所述數(shù)據(jù)轉(zhuǎn)發(fā)平面,用于對所述數(shù)據(jù)包進行解析,通過解析獲得所述數(shù)據(jù)包相應(yīng)的目的MAC地址,將所述數(shù)據(jù)包發(fā)送至相應(yīng)的MAC輸入/輸出端口并轉(zhuǎn)發(fā)。為便于對所述數(shù)據(jù)轉(zhuǎn)發(fā)平面進行更新,優(yōu)選地,所述系統(tǒng)還包括控制平面,與所述數(shù)據(jù)平面連接,所述控制平面包括與所述數(shù)據(jù)轉(zhuǎn)發(fā)平面數(shù)量相同個數(shù)的虛擬機(本實施方式中,所述虛擬機采用OpenVZ技術(shù),虛擬機作為路由協(xié)議的載體,可以根據(jù)用戶需求運行路由協(xié)議,比如0SPF協(xié)議,RIP協(xié)議,BGP協(xié)議等;同時,為了提供對所述數(shù)據(jù)轉(zhuǎn)發(fā)平面的路由配置,每個虛擬機將運行路由協(xié)議產(chǎn)生的路由表,ARP表實時更新并存儲在主機的配置文件中;所述虛擬機之間沒有任何數(shù)據(jù)交互,即在控制平面具有良好的資源隔離性),且與所述數(shù)據(jù)轉(zhuǎn)發(fā)平面一一對應(yīng),每個虛擬機包括虛擬網(wǎng)卡、控制模塊和路由配置輸出端,所述虛擬網(wǎng)卡的數(shù)量與所述MAC輸入/輸出端口的數(shù)量相同,且一一對應(yīng),相對應(yīng)的虛擬網(wǎng)卡和MAC輸出/輸出端口的MAC地址和IP地址相同;所述虛擬網(wǎng)卡,用于接收對應(yīng)數(shù)據(jù)轉(zhuǎn)發(fā)平面發(fā)送來的數(shù)據(jù)包,并轉(zhuǎn)發(fā)至所述控制模塊(虛擬網(wǎng)卡接收數(shù)據(jù)包時,采用隊列的方式,本實施方式中,所述虛擬網(wǎng)卡和數(shù)據(jù)轉(zhuǎn)發(fā)平面之間通過PCI總線和網(wǎng)橋連接);所述控制模塊,用于接收由所述虛擬網(wǎng)卡轉(zhuǎn)發(fā)來的數(shù)據(jù)包,并對所述數(shù)據(jù)包進行解析,以調(diào)整與本虛擬機對應(yīng)的數(shù)據(jù)轉(zhuǎn)發(fā)平面的路由表、地址解析協(xié)議(AddressResolution Protocol, ARP)表、以及端口映射表,所述端口映射表為存儲了所屬數(shù)據(jù)轉(zhuǎn)發(fā) 平面對應(yīng)的虛擬機上所有虛擬網(wǎng)卡的MAC地址和IP地址;所述路由配置輸出端,用于將所述路由表、ARP表、以及端口映射表發(fā)送至與所述虛擬機對應(yīng)的數(shù)據(jù)轉(zhuǎn)發(fā)平面,以更新與所述虛擬機對應(yīng)的數(shù)據(jù)轉(zhuǎn)發(fā)平面上的路由表、ARP表、以及端口映射表(通過主機上的配置軟件、以及數(shù)據(jù)轉(zhuǎn)發(fā)平面上的控制接口,來更新與所述虛擬機對應(yīng)的數(shù)據(jù)轉(zhuǎn)發(fā)平面上的路由表、ARP表、以及端口映射表)。在路由環(huán)境發(fā)生變化時,所述控制模塊將本虛擬機的路由表、ARP表、以及端口映射表進行組包,通過虛擬網(wǎng)卡將組成的數(shù)據(jù)包發(fā)送至相應(yīng)的MAC輸入/輸出端口,發(fā)送該數(shù)據(jù)包時,通過隊列的方式進行發(fā)送,由所述MAC輸入/輸出端口發(fā)送至其它虛擬路由系統(tǒng)的數(shù)據(jù)平面的MAC輸入/輸出端口。參照圖2的實施方式,優(yōu)選地,每個數(shù)據(jù)轉(zhuǎn)發(fā)平面均包括端口映射地址匹配模塊和輸出端口查找模塊,并設(shè)有路由表、ARP表、以及端口映射表(該表項圖2未示出);所述端口映射地址匹配模塊,用于解析所述數(shù)據(jù)包,判斷所述數(shù)據(jù)包的包類型,若包類型為單播包,則獲取所述數(shù)據(jù)包的目的MAC地址,根據(jù)所述端口映射表判斷所述目的MAC地址是否屬于本數(shù)據(jù)轉(zhuǎn)發(fā)平面,若所述目的MAC地址不屬于本數(shù)據(jù)轉(zhuǎn)發(fā)平面,則丟棄所述數(shù)據(jù)包,若所述目的MAC地址屬于本數(shù)據(jù)轉(zhuǎn)發(fā)平面或所述包類型為組播包或廣播包,則獲取所述數(shù)據(jù)包的目的IP地址,根據(jù)所述端口映射表判斷所述目的IP地址是否與該數(shù)據(jù)轉(zhuǎn)發(fā)平面對應(yīng)的虛擬機的虛擬網(wǎng)卡的IP地址匹配,若所述目的IP地址與所述虛擬網(wǎng)卡的IP地址匹配,則將所述數(shù)據(jù)包發(fā)送至對應(yīng)的虛擬機,若所述目的IP地址與所述虛擬網(wǎng)卡的IP地址不匹配,則判斷所述數(shù)據(jù)包是否為IPV4包以及所述數(shù)據(jù)包中是否有選項,若所述數(shù)據(jù)包是IPV4包且沒有選項,則將所述數(shù)據(jù)包發(fā)送至所述輸出端口查找模塊,若所述數(shù)據(jù)包不是IPV4包或所述數(shù)據(jù)包有選項,則將所述數(shù)據(jù)包發(fā)送至對應(yīng)的虛擬機;所述輸出端口查找模塊,用于根據(jù)所述路由表進行查找匹配,若在路由表中未查找到目的IP地址,則將所述數(shù)據(jù)包發(fā)送至對應(yīng)的虛擬機,若在路由表中查找到了目的IP地址,則根據(jù)路由表獲得路由路徑,獲得下一跳的IP地址,根據(jù)所述ARP表進行查找匹配,在所述ARP表中未查找到下一跳的IP地址,則將所述數(shù)據(jù)包發(fā)送至對應(yīng)的虛擬機,若在所述ARP表中查找到下一跳的IP地址,則將所述下一跳的IP地址轉(zhuǎn)換為下一跳的MAC地址,將所述目的MAC地址替換為數(shù)據(jù)包的源MAC地址,將根據(jù)查找獲得的下一跳的MAC地址替換為數(shù)據(jù)包的目的MAC地址,并將所述數(shù)據(jù)包發(fā)送至替換前的目的MAC地址相應(yīng)的MAC輸入
/輸出端口。優(yōu)選地,每個數(shù)據(jù)轉(zhuǎn)發(fā)平面還包括時序調(diào)整模塊(所述普通轉(zhuǎn)發(fā)平面不包括所述時序調(diào)整模塊),用于對所述數(shù)據(jù)包進行調(diào)整(由于包括了 VLAN標簽的數(shù)據(jù)包多了 VLAN標簽的字符,因此需要較長時間),以使得包括VLAN標簽的數(shù)據(jù)包和不包括VLAN標簽的普通數(shù)據(jù)包的處理時序同步。優(yōu)選地,所述MAC輸入/輸出端口通過隊列的方式進行數(shù)據(jù)交互。 本實施方式中,所述虛擬路由系統(tǒng)主要可以分為兩個部分第一,由主機和安裝于所述主機中的虛擬機所構(gòu)成的控制平面,第二,F(xiàn)PGA和外圍設(shè)備所構(gòu)成的數(shù)據(jù)平面。通過這種縱向擴展的方法,一方面,我們實現(xiàn)了虛擬路由系統(tǒng)的控制功能與轉(zhuǎn)發(fā)功能的分離,使得兩者相互獨立,路由協(xié)議與數(shù)據(jù)轉(zhuǎn)發(fā)互不影響,易于進一步實現(xiàn)轉(zhuǎn)發(fā)能力的擴展;另一方面,通過主機的交互軟件及接口,使得控制平面和數(shù)據(jù)平面有機得耦合在一起,控制平面可對數(shù)據(jù)平面進行實時的控制。優(yōu)選地,所述數(shù)據(jù)平面通過FPGA板卡實現(xiàn)。優(yōu)選地,所述控制平面通過主機和安裝于所述主機中的虛擬機實現(xiàn)。主機部分除了提供FPGA板卡的驅(qū)動程序外,還扮演著十分重要的角色,主機部分的配置軟件可以將所有虛擬機維護的端口映射表、路由表及ARP表實時地配置到數(shù)據(jù)平面相對應(yīng)的轉(zhuǎn)發(fā)實例中;同時,主機還通過橋接的方式將虛擬機的虛擬網(wǎng)卡與FPGA板卡的數(shù)據(jù)轉(zhuǎn)發(fā)平面相連接,允許虛擬機通過FPGA板卡發(fā)送和接受控制數(shù)據(jù)包。這樣,主機將控制平面和數(shù)據(jù)平面有機得結(jié)合在一起。每個轉(zhuǎn)發(fā)平面中的處理流程是基于一個流水線結(jié)構(gòu),參照圖3,當有數(shù)據(jù)包被所述MAC輸入/輸出端口接收后,先判斷該數(shù)據(jù)包是否由對應(yīng)的虛擬機發(fā)送而來,若是,則通過所述MAC輸入/輸出端口發(fā)送至其它虛擬路由系統(tǒng),若否,則檢查其VLAN標簽,如果數(shù)據(jù)包中不存在VLAN標簽,數(shù)據(jù)包會被轉(zhuǎn)送到普通轉(zhuǎn)發(fā)模塊中進行處理;否則,數(shù)據(jù)包會被送到有VLAN標簽表項匹配的VLAN轉(zhuǎn)發(fā)模塊中進行處理,如果最終沒有匹配項被找到,該數(shù)據(jù)包就會被丟棄。在選定的數(shù)據(jù)轉(zhuǎn)發(fā)平面中,具體的包處理規(guī)則為數(shù)據(jù)包的目的MAC地址首先被檢查,組播包和廣播包一般為控制數(shù)據(jù)包(控制數(shù)據(jù)包即包括了路由表、ARP表、以及端口映射表的數(shù)據(jù)包,且由虛擬機進行處理),包括轉(zhuǎn)發(fā)信息包和ARP信息包等,這些包將由所述輸出端口直接發(fā)送到對應(yīng)的虛擬機里進行處理,單播包的目的MAC地址必須和該數(shù)據(jù)轉(zhuǎn)發(fā)平面對應(yīng)的虛擬機的虛擬網(wǎng)卡的MAC地址相匹配,否則直接被認為非本虛擬路由系統(tǒng)地址,將該數(shù)據(jù)包直接丟棄。若所述目的MAC地址屬于本數(shù)據(jù)轉(zhuǎn)發(fā)平面或所述包類型為組播包或廣播包,則獲取所述數(shù)據(jù)包的目的IP地址(獲取目的IP地址時,先進行IP和校驗,校驗通過后,再進行匹配,若校驗未通過則丟棄該數(shù)據(jù)包),根據(jù)所述端口映射表判斷所述目的IP地址是否與該數(shù)據(jù)轉(zhuǎn)發(fā)平面對應(yīng)的虛擬機的虛擬網(wǎng)卡的IP地址匹配,若所述目的IP地址與所述虛擬網(wǎng)卡的IP地址匹配,則將所述數(shù)據(jù)包發(fā)送至對應(yīng)的虛擬機,若所述目的IP地址與所述虛擬網(wǎng)卡的IP地址不匹配,則判斷所述數(shù)據(jù)包是否為IPV4包以及所述數(shù)據(jù)包中是否有選項,若所述數(shù)據(jù)包不是IPV4包或所述數(shù)據(jù)包有選項,則將所述數(shù)據(jù)包發(fā)送至對應(yīng)的虛擬機,若所述數(shù)據(jù)包是IPV4包且沒有選項,則檢查所述數(shù)據(jù)包的生存時間(Time ToLive, TTL),若TTL小于1,則將所述數(shù)據(jù)包發(fā)送至對應(yīng)的虛擬機,若TTL大于1,則根據(jù)所述路由表進行查找匹配,若在路由表中未查找到目的IP地址,則將所述數(shù)據(jù)包發(fā)送至對應(yīng)的虛擬機,若在路由表中查找到了目的IP地址,則根據(jù)路由表獲得路由路徑,獲得下一跳的IP地址,根據(jù)所述ARP表進行查找匹配,在所述ARP表中未查找到下一跳的IP地址,則將所述數(shù)據(jù)包發(fā)送至對應(yīng)的虛擬機,若在所述ARP表中查找到下一跳的IP地址,則將所述下一跳的IP地址轉(zhuǎn)換為下一跳的MAC地址,將所述目的MAC地址替換為數(shù)據(jù)包的源MAC地址,將根據(jù)查找獲得的下一跳的MAC地址替換為數(shù)據(jù)包的目的MAC地址,將所述數(shù)據(jù)包的TTL減1,再更新所述數(shù)據(jù)包的IP校驗和(CHECKSUM),并將所述數(shù)據(jù)包發(fā)送至替換前的目的MAC地址相應(yīng)的MAC輸入/輸出端口(虛擬機接收到的數(shù)據(jù)包,若數(shù)據(jù)包的所述目的IP地址與所述虛擬網(wǎng)卡的IP地址匹配或所述數(shù)據(jù)包不是IPV4包或所述數(shù)據(jù)包有選項,則對該數(shù)據(jù)包進行解析;否則直接丟棄)。本發(fā)明的虛擬路由系統(tǒng)的優(yōu)點為·I.資源的隔離性在傳統(tǒng)的虛擬路由系統(tǒng)中,大多是基于MAC地址進行虛擬網(wǎng)絡(luò)劃分。在這種方案中,所有與路由器相連的網(wǎng)絡(luò)中不會允許兩個不同的主機具有相同的IP地址,多個虛擬網(wǎng)絡(luò)之間不能共享網(wǎng)絡(luò)層的資源。為了解決問題,本發(fā)明提出了一種虛擬路由系統(tǒng),該虛擬路由系統(tǒng)對數(shù)據(jù)包的VLAN標簽做處理,進行二層的劃分,具有不同VLAN標簽的數(shù)據(jù)包在不同的轉(zhuǎn)發(fā)平面中進行處理,這樣不同VLAN標簽的數(shù)據(jù)包在硬件中也是相互隔離的,不同VLAN的轉(zhuǎn)發(fā)處理是在不同的模塊中進行的,因此可以實現(xiàn)網(wǎng)絡(luò)層的隔離性。2.多個并行的高速轉(zhuǎn)發(fā)數(shù)據(jù)平面由于數(shù)據(jù)轉(zhuǎn)發(fā)速率應(yīng)該盡量的高,轉(zhuǎn)發(fā)峰值速率至少要達到lGbps,為了實現(xiàn)這個目標,本發(fā)明在硬件上建立了多個相同結(jié)構(gòu)的數(shù)據(jù)轉(zhuǎn)發(fā)平面,從以太網(wǎng)口到達的大部分的包不會進入操作系統(tǒng)處理,而是直接進行硬件轉(zhuǎn)發(fā)。硬件中的數(shù)據(jù)總線位寬為64位,工作頻率在125MHz,這樣硬件的最大轉(zhuǎn)發(fā)速率可達到8Gbps,當并行的轉(zhuǎn)發(fā)模塊數(shù)少于8個時,可以保證每個數(shù)據(jù)轉(zhuǎn)發(fā)平面的轉(zhuǎn)發(fā)速率。3.靈活的配置機制每個數(shù)據(jù)轉(zhuǎn)發(fā)模塊中都存儲有各自的轉(zhuǎn)發(fā)表及ARP表,每個表項都可通過控制平面進行訪問或修改,這樣控制平面的路由軟件產(chǎn)生的轉(zhuǎn)發(fā)表及ARP表可被配置到不同的轉(zhuǎn)發(fā)平面中,使得硬件可以按照不同的轉(zhuǎn)發(fā)規(guī)則并行處理多個平面的數(shù)據(jù)包。4.不同類型的包轉(zhuǎn)發(fā)規(guī)則對于每種不同類型的包,比如轉(zhuǎn)發(fā)信息包、ARP信息包、以及組播包等,都有不同的包處理規(guī)則與其對應(yīng),使得虛擬路由系統(tǒng)對所有到來的數(shù)據(jù)包都可以進行處理。本發(fā)明還公開了一種基于所述虛擬路由系統(tǒng)的方法,包括以下步驟SI :MAC輸入/輸出端口接收數(shù)據(jù)包;S2 :解析所述數(shù)據(jù)包,并通過所述數(shù)據(jù)包中的VLAN標簽,將所述數(shù)據(jù)包發(fā)送至相應(yīng)的數(shù)據(jù)轉(zhuǎn)發(fā)平面;S3 :所述數(shù)據(jù)轉(zhuǎn)發(fā)平面對所述數(shù)據(jù)包進行解析,以獲得所述數(shù)據(jù)包相應(yīng)的目的MAC地址,并將所述數(shù)據(jù)包發(fā)送至相應(yīng)的MAC輸入/輸出端口 ;S4 :所述MAC輸入/輸出端口將所述數(shù)據(jù)包發(fā)送至所述目的地址。以上實施方式僅用于說明本發(fā)明,而并非對本發(fā)明的限制,有關(guān)技術(shù)領(lǐng)域的普通技術(shù)人員,在不脫離本發(fā)明的精神和范圍的情況下,還可以做出各種變化和變型,因此所有 等同的技術(shù)方案也屬于本發(fā)明的范疇,本發(fā)明的專利保護范圍應(yīng)由權(quán)利要求限定。
權(quán)利要求
1.一種虛擬路由系統(tǒng),其特征在于,所述系統(tǒng)包括數(shù)據(jù)平面,所述數(shù)據(jù)平面包括MAC輸入/輸出端口、輸入仲裁模塊、以及至少兩個數(shù)據(jù)轉(zhuǎn)發(fā)平面; 所述MAC輸入/輸出端口,用于接收數(shù)據(jù)包,并發(fā)送至所述輸入仲裁模塊; 所述輸入仲裁模塊,用于解析所述數(shù)據(jù)包,并通過所述數(shù) 據(jù)包中的VLAN標簽,將所述數(shù)據(jù)包發(fā)送至相應(yīng)的數(shù)據(jù)轉(zhuǎn)發(fā)平面; 所述數(shù)據(jù)轉(zhuǎn)發(fā)平面,用于對所述數(shù)據(jù)包進行解析,通過解析獲得所述數(shù)據(jù)包相應(yīng)的目的MAC地址,將所述數(shù)據(jù)包發(fā)送至相應(yīng)的MAC輸入/輸出端口并轉(zhuǎn)發(fā)。
2.如權(quán)利要求I所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括控制平面,與所述數(shù)據(jù)平面連接,所述控制平面包括與所述數(shù)據(jù)轉(zhuǎn)發(fā)平面數(shù)量相同個數(shù)的虛擬機,且與所述數(shù)據(jù)轉(zhuǎn)發(fā)平面一一對應(yīng),每個虛擬機包括虛擬網(wǎng)卡、控制模塊和路由配置輸出端,所述虛擬網(wǎng)卡的數(shù)量與所述MAC輸入/輸出端口的數(shù)量相同,且——對應(yīng),相對應(yīng)的虛擬網(wǎng)卡和MAC輸出/輸出端口的MAC地址和IP地址相同; 所述虛擬網(wǎng)卡,用于接收對應(yīng)數(shù)據(jù)轉(zhuǎn)發(fā)平面發(fā)送來的數(shù)據(jù)包,并轉(zhuǎn)發(fā)至所述控制模塊; 所述控制模塊,用于接收由所述虛擬網(wǎng)卡轉(zhuǎn)發(fā)來的數(shù)據(jù)包,并對所述數(shù)據(jù)包進行解析,以調(diào)整與本虛擬機對應(yīng)的數(shù)據(jù)轉(zhuǎn)發(fā)平面的路由表、ARP表、以及端口映射表,所述端口映射表為存儲了所屬數(shù)據(jù)轉(zhuǎn)發(fā)平面對應(yīng)的虛擬機上所有虛擬網(wǎng)卡的MAC地址和IP地址; 所述路由配置輸出端,用于將所述路由表、ARP表、以及端口映射表發(fā)送至與所述虛擬機對應(yīng)的數(shù)據(jù)轉(zhuǎn)發(fā)平面,以更新與所述虛擬機對應(yīng)的數(shù)據(jù)轉(zhuǎn)發(fā)平面上的路由表、ARP表、以及端口映射表。
3.如權(quán)利要求2所述的系統(tǒng),其特征在于,每個數(shù)據(jù)轉(zhuǎn)發(fā)平面均包括端口映射地址匹配模塊和輸出端口查找模塊,并設(shè)有路由表、ARP表、以及端口映射表; 所述端口映射地址匹配模塊,用于解析所述數(shù)據(jù)包,判斷所述數(shù)據(jù)包的包類型,若包類型為單播包,則獲取所述數(shù)據(jù)包的目的MAC地址,根據(jù)所述端口映射表判斷所述目的MAC地址是否屬于本數(shù)據(jù)轉(zhuǎn)發(fā)平面,若所述目的MAC地址不屬于本數(shù)據(jù)轉(zhuǎn)發(fā)平面,則丟棄所述數(shù)據(jù)包,若所述目的MAC地址屬于本數(shù)據(jù)轉(zhuǎn)發(fā)平面或所述包類型為組播包或廣播包,則獲取所述數(shù)據(jù)包的目的IP地址,根據(jù)所述端口映射表判斷所述目的IP地址是否與該數(shù)據(jù)轉(zhuǎn)發(fā)平面對應(yīng)的虛擬機的虛擬網(wǎng)卡的IP地址匹配,若所述目的IP地址與所述虛擬網(wǎng)卡的IP地址匹配,則將所述數(shù)據(jù)包發(fā)送至對應(yīng)的虛擬機,若所述目的IP地址與所述虛擬網(wǎng)卡的IP地址不匹配,則判斷所述數(shù)據(jù)包是否為IPV4包以及所述數(shù)據(jù)包中是否有選項,若所述數(shù)據(jù)包是IPV4包且沒有選項,則將所述數(shù)據(jù)包發(fā)送至所述輸出端口查找模塊,若所述數(shù)據(jù)包不是IPV4包或所述數(shù)據(jù)包有選項,則將所述數(shù)據(jù)包發(fā)送至對應(yīng)的虛擬機; 所述輸出端口查找模塊,用于根據(jù)所述路由表進行查找匹配,若在路由表中未查找到目的IP地址,則將所述數(shù)據(jù)包發(fā)送至對應(yīng)的虛擬機,若在路由表中查找到了目的IP地址,則根據(jù)路由表獲得路由路徑,獲得下一跳的IP地址,根據(jù)所述ARP表進行查找匹配,在所述ARP表中未查找到下一跳的IP地址,則將所述數(shù)據(jù)包發(fā)送至對應(yīng)的虛擬機,若在所述ARP表中查找到下一跳的IP地址,則將所述下一跳的IP地址轉(zhuǎn)換為所述下一跳IP地址對應(yīng)的MAC地址,將所述目的MAC地址替換為數(shù)據(jù)包的源MAC地址,將根據(jù)查找獲得的下一跳的MAC地址替換為數(shù)據(jù)包的目的MAC地址,并將所述數(shù)據(jù)包發(fā)送至替換前的目的MAC地址相應(yīng)的MAC輸入/輸出端口。
4.如權(quán)利要求3所述的系統(tǒng),其特征在于,每個數(shù)據(jù)轉(zhuǎn)發(fā)平面還包括時序調(diào)整模塊,用于對所述數(shù)據(jù)包進行調(diào)整,以使得包括VLAN標簽的數(shù)據(jù)包和不包括VLAN標簽的普通數(shù)據(jù)包的處理時序同步。
5.如權(quán)利要求I 4中任一項所述的系統(tǒng),其特征在于,所述MAC輸入/輸出端口為至少兩個;
6.如權(quán)利要求I 4中任一項所述的系統(tǒng),其特征在于,所述MAC輸入/輸出端口通過隊列的方式進行數(shù)據(jù)交互。
7.如權(quán)利要求I 4中任一項所述的系統(tǒng),其特征在于,所述數(shù)據(jù)平面通過FPGA板卡實現(xiàn)。
8.如權(quán)利要求2 4中任一項所述的系統(tǒng),其特征在于,所述控制平面通過主機和安裝于所述主機中的虛擬機實現(xiàn)。
9.一種基于權(quán)利要求I 8任一項所述虛擬路由系統(tǒng)的方法,其特征在于,包括以下步驟 51:MAC輸入/輸出端口接收數(shù)據(jù)包; 52:解析所述數(shù)據(jù)包,并通過所述數(shù)據(jù)包中的VLAN標簽,將所述數(shù)據(jù)包發(fā)送至相應(yīng)的數(shù)據(jù)轉(zhuǎn)發(fā)平面; 53:所述數(shù)據(jù)轉(zhuǎn)發(fā)平面對所述數(shù)據(jù)包進行解析,以獲得所述數(shù)據(jù)包相應(yīng)的目的MAC地址,并將所述數(shù)據(jù)包發(fā)送至相應(yīng)的MAC輸入/輸出端口 ; 54:所述MAC輸入/輸出端口將所述數(shù)據(jù)包發(fā)送至所述目的地址。
全文摘要
本發(fā)明公開了一種虛擬路由系統(tǒng)及方法,涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,所述系統(tǒng)包括數(shù)據(jù)平面,所述數(shù)據(jù)平面包括MAC輸入/輸出端口、輸入仲裁模塊、以及至少兩個數(shù)據(jù)轉(zhuǎn)發(fā)平面;所述MAC輸入/輸出端口,用于接收數(shù)據(jù)包,并發(fā)送至所述輸入仲裁模塊;所述輸入仲裁模塊,用于解析所述數(shù)據(jù)包,并通過所述數(shù)據(jù)包中的VLAN標簽,將所述數(shù)據(jù)包發(fā)送至相應(yīng)的數(shù)據(jù)轉(zhuǎn)發(fā)平面;所述數(shù)據(jù)轉(zhuǎn)發(fā)平面,用于對所述數(shù)據(jù)包進行解析,通過解析獲得所述數(shù)據(jù)包相應(yīng)的目的MAC地址,將所述數(shù)據(jù)包發(fā)送至相應(yīng)的MAC輸入/輸出端口并轉(zhuǎn)發(fā)。本發(fā)明通過對數(shù)據(jù)包的VLAN標簽做處理,使具有不同VLAN標簽的數(shù)據(jù)包在不同的轉(zhuǎn)發(fā)平面中進行處理,實現(xiàn)了連接虛擬路由器各個虛擬網(wǎng)絡(luò)之間的完全隔離。
文檔編號H04L12/741GK102957619SQ201110247229
公開日2013年3月6日 申請日期2011年8月25日 優(yōu)先權(quán)日2011年8月25日
發(fā)明者劉中金, 楊懋, 李勇, 蘇厲, 金德鵬, 曾烈光 申請人:清華大學