專利名稱:轉(zhuǎn)發(fā)數(shù)據(jù)包的查表方法
技術(shù)領(lǐng)域:
本發(fā)明涉及電數(shù)字?jǐn)?shù)據(jù)處理,尤其涉及一種在路由器、交換機(jī)等設(shè)備中轉(zhuǎn)發(fā)數(shù)據(jù)包的查表方法。
背景技術(shù):
在路由器和交換機(jī)的設(shè)計(jì)中,必須要進(jìn)行對(duì)于數(shù)據(jù)的查表處理,以便找到數(shù)據(jù)包的下一個(gè)節(jié)點(diǎn),目前在硬件處理的過程中,針對(duì)IP包的查找通常采用有兩種實(shí)現(xiàn)方法一是采用專用的內(nèi)容尋址存儲(chǔ)器(CAM,Content Address Memory),可以快速查找相應(yīng)的內(nèi)容;二是采用專門的查找算法,外部利用靜態(tài)隨機(jī)存取存貯器(SSRAM)和動(dòng)態(tài)隨機(jī)存取存貯器(SDRAM)來存儲(chǔ)表項(xiàng)。
隨著因特網(wǎng)(Internet)的普及和廣泛應(yīng)用,IP協(xié)議(因特網(wǎng)協(xié)議)不斷完善,新增加的協(xié)議越來越多,例如GRE(Generic RoutingEncapsulation,即普通路由封裝)、L2TP(Layer 2 tunneling protocol,即二層隧道協(xié)議)、IPSec(IP Security,即IP安全)、MPLS(MultiprotocolLabel Switching,即多協(xié)議標(biāo)簽交換)、IP/IP(IP Encapsulation within IP,即IP封裝IP)等,查表的內(nèi)容也越來越復(fù)雜。隨著目前IPv6(InternetProtocol version 6,即因特網(wǎng)第6版本協(xié)議)研究的深入,由IPv4(InternetProtocol version 4,即因特網(wǎng)第4版本協(xié)議)向IPv6過渡又必須采用隧道技術(shù)和NAT-PT(網(wǎng)絡(luò)地址轉(zhuǎn)換-協(xié)議轉(zhuǎn)換)等技術(shù),查表的種類和涉及到的范圍更加復(fù)雜。
在實(shí)現(xiàn)中,一般采用各自獨(dú)立的查表方式,即使用獨(dú)立的MPLS表、IPv4單播/多播表、MAC表、L2TP表等各自的表項(xiàng),這樣表項(xiàng)種類越來越多,外部器件和接口也越來越多,而且長(zhǎng)度各不一樣,實(shí)現(xiàn)復(fù)雜,通常在實(shí)現(xiàn)中,只能兼顧其中的一種或兩種,將1~2個(gè)重要的表采用硬件實(shí)現(xiàn)(通常為流分類表和IPv4單播/多播查找),而其余表認(rèn)為流量小,采用軟件實(shí)現(xiàn)或者在芯片內(nèi)部使用片內(nèi)的靜態(tài)隨機(jī)存貯器(SRAM)實(shí)現(xiàn)線性查找,因此對(duì)于邊緣或網(wǎng)關(guān)產(chǎn)品,這樣的性能必然滿足不了日益增長(zhǎng)的網(wǎng)絡(luò)應(yīng)用需要,并導(dǎo)致路由交換設(shè)備網(wǎng)絡(luò)適應(yīng)能力低,假如L2TP采用軟件實(shí)現(xiàn),那么當(dāng)設(shè)備應(yīng)用在L2TP業(yè)務(wù)流量多的領(lǐng)域,端口性能就大大降低,影響業(yè)務(wù)的轉(zhuǎn)發(fā)性能,而且使用片內(nèi)隨機(jī)存貯器(RAM)導(dǎo)致表項(xiàng)數(shù)目少,不利于網(wǎng)絡(luò)的大規(guī)模應(yīng)用。
現(xiàn)有技術(shù)還采用統(tǒng)一的查找KEY(查找表的輸入數(shù)據(jù))寬度來查表,在IPv4中利用這樣的查找KEY,例如256位,可以適用任何其中一種查表用途,但查表的結(jié)果是對(duì)于大多數(shù)的查找有比較大的浪費(fèi),如對(duì)于普通的IPv4單播查找,查找KEY只需要32bit(IP地址為32位)左右,因此其余224位的查找KEY空間就全部浪費(fèi)了,而且采用現(xiàn)有的統(tǒng)一的查找KEY寬度,通常只能作為一種查找類型的應(yīng)用,不能兼容IPv6的多種需要,不能很好的支持IPv6的查找。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是克服現(xiàn)有數(shù)據(jù)包轉(zhuǎn)發(fā)采用獨(dú)立表項(xiàng)查表時(shí),外部表項(xiàng)種類多,實(shí)現(xiàn)復(fù)雜,以及采用統(tǒng)一的查找KEY寬度查表時(shí),只能作為一種查找類型應(yīng)用的不足,提供一種支持全部表項(xiàng)的處理的查表方法,從而使得路由交換設(shè)備可以全面支持各種IPv4/IPv6的查表操作,對(duì)于所有的查找表均可以硬件加速實(shí)現(xiàn),有效地提高設(shè)備的處理能力。
本發(fā)明為解決上述技術(shù)問題所采用的技術(shù)方案為
這種轉(zhuǎn)發(fā)數(shù)據(jù)包的查表方法,其特征在于采用帶有類型區(qū)分域的查找表輸入數(shù)據(jù)(KEY)來查表,包括以下步驟首先構(gòu)造至少一個(gè)查找KEY寬度模式;根據(jù)數(shù)據(jù)包的包頭類型將數(shù)據(jù)包按不同的查找表分類;構(gòu)建查找KEY,查找KEY中設(shè)置類型區(qū)分域和目的地址(DA)域,根據(jù)所述數(shù)據(jù)包查找表的分類情況確定類型區(qū)分域?qū)挾?,利用所述的類型區(qū)分域?qū)Σ檎冶眍愋瓦M(jìn)行區(qū)分,并根據(jù)所述的目的地址域查表。
所述的查找KEY可采用72位和288位兩種寬度模式,或只采用288位一種寬度模式。
所述的目的地址域根據(jù)數(shù)據(jù)包包頭的相關(guān)域進(jìn)行確定。
將查找表分為16類,采用4位所述的類型區(qū)分域來區(qū)分不同的查找表類型。
可采用哈希(HASH)或其它算法將所述的查找KEY中目的地址域或類型區(qū)分域統(tǒng)一為某個(gè)固定的長(zhǎng)度。
所述的類型區(qū)分域可以含有因特網(wǎng)協(xié)議(IP)類型,也可以含有異步傳輸模式(ATM)類型。
在系統(tǒng)中維護(hù)一個(gè)可包含各種隧道信息表和普通轉(zhuǎn)發(fā)信息表的轉(zhuǎn)發(fā)信息庫,在進(jìn)行隧道處理時(shí),通過所述的查找KEY對(duì)轉(zhuǎn)發(fā)信息庫進(jìn)行查找,確定下一跳出口。
本發(fā)明的有益效果為本發(fā)明針對(duì)目前在查找領(lǐng)域內(nèi)的這些矛盾問題,簡(jiǎn)化了查表的種類,將各種表項(xiàng)合并為一種查表方式,查找表類型采用類型區(qū)分域區(qū)別,同一物理查找表可以同時(shí)支持IPv4、IPv6、L2TP、MPLS、GRE、IP/IP、IPSec、6to4、自動(dòng)隧道、手工隧道、NAT-PT等范圍的多種查找內(nèi)容,表項(xiàng)空間完全可以共享使用,使得路由交換設(shè)備可以全面支持各種IPv4/IPv6的查表操作,對(duì)于所有的查找表均可以硬件加速實(shí)現(xiàn),有效地提高了設(shè)備的處理能力。
利用本發(fā)明進(jìn)行隧道處理時(shí),可以通過這種通用的查找KEY找到轉(zhuǎn)發(fā)信息庫,轉(zhuǎn)發(fā)信息庫中可包含各種隧道信息表和普通的轉(zhuǎn)發(fā)信息表,所有的查找表可通過統(tǒng)一形式的查找KEY進(jìn)行查找,對(duì)外部查找表的接口只有一個(gè),因而十分方便硬件的實(shí)現(xiàn),可形成一個(gè)通用的查找流程,本發(fā)明提供了一種既可以支持全部表項(xiàng)的處理,又可以提供全面有效的查表性能的行之有效的方法。
圖1為本發(fā)明不等寬度查找KEY示意圖;圖2為利用本發(fā)明查找KEY進(jìn)行查找的通用查找處理流程圖。
具體實(shí)施例方式
下面根據(jù)附圖和實(shí)施例對(duì)本發(fā)明作進(jìn)一步詳細(xì)說明首先構(gòu)造一個(gè)或兩個(gè)查找KEY寬度模式,例如72bit和288bit。
當(dāng)IP數(shù)據(jù)流進(jìn)入數(shù)據(jù)處理單元,首先根據(jù)數(shù)據(jù)包的包頭的類型將數(shù)據(jù)包按照不同的查找表分類,并提供相應(yīng)的查找KEY值,這里可以設(shè)定數(shù)據(jù)包查找表為16類IPv4單播、IPv4多播、MPLS、L2TP、GRE、IP/IP、IPSec、IPv6單播、IPv6多播、6to4隧道....
然后按照如下兩種方式構(gòu)建查找KEY,使用4bit類型區(qū)分域(16種類型)表明查找類型
或者
目的地址(DA,Destination Address)根據(jù)數(shù)據(jù)包包頭的相關(guān)域進(jìn)行確定,如當(dāng)IPv4單播時(shí)DA=目的IPv4地址當(dāng)IPv4多播時(shí)DA=源IPv4地址+組IPv4地址當(dāng)MPLS時(shí)DA=標(biāo)簽當(dāng)IPv6單播時(shí)DA=目的IPv6地址DA也可以是IP地址和TOS(服務(wù)類型)等域的HASH值或組合值。
對(duì)于IPv6的查找,只能采用288bit的KEY方法來查找。
若采用72bit+288bit兩種查找KEY的方法,則在物理上存在大小兩種類型的查找表,由于所有的查找表已經(jīng)歸為這兩種類型,因此可以在同一個(gè)物理介質(zhì)中實(shí)現(xiàn),如圖1所示為不等寬度查找KEY示意圖,在實(shí)現(xiàn)中可以根據(jù)應(yīng)用的需要重新分配這兩個(gè)表的邏輯空間大小,從而達(dá)到硬件存儲(chǔ)資源的動(dòng)態(tài)調(diào)整。
本發(fā)明也可以采用單一的查找KEY寬度模式,只提供288bit的查找KEY,查找KEY覆蓋全部的查找空間,然后利用查找KEY的類型區(qū)分域來分類查找表項(xiàng),同樣可以兼容所有的IPv4/IPv6查找內(nèi)容。
當(dāng)然,本發(fā)明也可以采用HASH或其他算法,將查找KEY中DA域或類型區(qū)分域統(tǒng)一到某個(gè)固定的長(zhǎng)度上,例如將DA域統(tǒng)一到144bit,將類型區(qū)分域統(tǒng)一到2bit,同樣可以達(dá)到本發(fā)明的目的。
另外,類型區(qū)分域中除了IP類型外,也可以含有異步傳輸模式(ATM)類型,利用本發(fā)明同樣可以實(shí)現(xiàn)全面有效的查表。
當(dāng)一個(gè)節(jié)點(diǎn)支持作為隧道入口節(jié)點(diǎn)的封裝處理、隧道中間節(jié)點(diǎn)的轉(zhuǎn)發(fā)處理、和隧道出口節(jié)點(diǎn)的解封裝處理時(shí),必須進(jìn)行相應(yīng)的查表處理,現(xiàn)有技術(shù)是按獨(dú)立的查找表方式進(jìn)行查找,比如MPLS查找應(yīng)當(dāng)維護(hù)一個(gè)MPLS的隧道表,L2TP查找應(yīng)當(dāng)維護(hù)一個(gè)L2TP的隧道表,
IPv6單播查找應(yīng)當(dāng)維護(hù)一個(gè)IPv6單播表等等。
這樣在執(zhí)行查找中,按照對(duì)應(yīng)的協(xié)議構(gòu)建獨(dú)立的查找KEY之后,首先要判斷是查找哪種協(xié)議,然后找到對(duì)應(yīng)的查找表,在硬件實(shí)現(xiàn)中就會(huì)出現(xiàn)多個(gè)不同協(xié)議的查找表,查找接口是分別各自獨(dú)立存在的,對(duì)于硬件實(shí)現(xiàn)是非常不利的。
本發(fā)明將所有的查找表通過統(tǒng)一形式的查找KEY結(jié)合在一起,對(duì)外部查找表的接口只有一個(gè),十分方便硬件的實(shí)現(xiàn),形成一個(gè)通用的查找處理流程,如圖2所示(該流程不體現(xiàn)按隧道進(jìn)行收發(fā)統(tǒng)計(jì)計(jì)數(shù)、進(jìn)行用戶認(rèn)證的功能)1、從鏈路層接口接收到數(shù)據(jù)幀。
2、數(shù)據(jù)鏈路層(L2)處理,剝除鏈路層封裝。
3、確定鏈路幀的數(shù)據(jù)報(bào)文是何種協(xié)議,令當(dāng)前處理協(xié)議(CrP)為L(zhǎng)2協(xié)議號(hào)域指示的協(xié)議,例如,對(duì)以太網(wǎng),當(dāng)Eth_Type為0800時(shí)是IPv4。
4、按CrP協(xié)議的要求對(duì)數(shù)據(jù)報(bào)文作合法性檢查,并從報(bào)文頭中獲取當(dāng)前目的地址(DA),目的地址(DA)指數(shù)據(jù)報(bào)文中用來確定報(bào)文轉(zhuǎn)發(fā)路徑的域,例如,IP包中DA是目的IP地址,MPLS包中DA是標(biāo)記棧中的標(biāo)記。
5、通過本發(fā)明的通用查找KEY中的DA去查找CrP對(duì)應(yīng)的轉(zhuǎn)發(fā)信息庫,轉(zhuǎn)發(fā)信息庫中包含有各種隧道信息表和普通的轉(zhuǎn)發(fā)信息表。
6、判斷本節(jié)點(diǎn)是否為該報(bào)文所用的隧道出口,同時(shí)識(shí)別出隧道類型。如果是本節(jié)點(diǎn)是該報(bào)文所用的隧道出口,則令CrP為隧道內(nèi)的數(shù)據(jù)報(bào)文的協(xié)議,剝除隧道封裝,重新對(duì)報(bào)文作合法性檢查,從報(bào)文頭中獲得當(dāng)前DA,重新進(jìn)行轉(zhuǎn)發(fā)查找;如果本節(jié)點(diǎn)不是該報(bào)文所用的隧道出口,則繼續(xù)后續(xù)處理。
判斷“本節(jié)點(diǎn)是否該報(bào)文所用隧道出口”時(shí),如果“當(dāng)前處理協(xié)議”是MPLS,則可以直接根據(jù)頂層標(biāo)記來判斷;如果“當(dāng)前處理協(xié)議”是IPv4,判斷過程如下if目的IP地址是本節(jié)點(diǎn)thenif協(xié)議號(hào)是TCP或UDP thenif端口號(hào)是知名的用于隧道的端口號(hào)then本節(jié)點(diǎn)是隧道出口;else不是;end if;else if協(xié)議號(hào)是用于隧道協(xié)議的then本節(jié)點(diǎn)是隧道出口;else不是;end if;else不是;end if;如果“當(dāng)前處理協(xié)議”是其他協(xié)議,應(yīng)該按照該協(xié)議的規(guī)定去做。
7、轉(zhuǎn)發(fā)信息庫中,下一跳出口可以是普通的出口,也可以是一個(gè)隧道入口,轉(zhuǎn)發(fā)信息庫中使用標(biāo)記區(qū)分這兩類出口,若下一跳出口是某條隧道的入口,則判斷是否進(jìn)入隧道,如果不進(jìn)入隧道,則進(jìn)行普通查找,將查找后的封裝信息取出來,并更新相應(yīng)的統(tǒng)計(jì)管理信息,然后就直接L2鏈路層封裝發(fā)送;如果進(jìn)入隧道,則轉(zhuǎn)入到隧道處理流程中,取得隧道類型及使用的分發(fā)協(xié)議類型,并取得構(gòu)造分發(fā)協(xié)議包頭必須的信息,進(jìn)行隧道封裝,然后判斷是否可以根據(jù)隧道信息直接確定鏈路層出口,如果可以,則鏈路層封裝發(fā)送;如果不可以,則令CrP為分發(fā)協(xié)議,令當(dāng)前目的地址DA為分發(fā)協(xié)議包頭的DA,重新進(jìn)行轉(zhuǎn)發(fā)查找。
系統(tǒng)在轉(zhuǎn)發(fā)信息庫中維護(hù)有隧道信息表,根據(jù)隧道入口ID(Identifier,即識(shí)別符)查這個(gè)表即可得到進(jìn)行隧道封裝的必要信息(包括構(gòu)造分發(fā)協(xié)議報(bào)文頭和構(gòu)造隧道協(xié)議報(bào)文頭需要的信息)。
對(duì)于MPLS,由于它是面向連接的,可以根據(jù)隧道信息直接確定鏈路層出口;而對(duì)于使用IPv4作為承載協(xié)議的隧道來說,建立隧道時(shí)一般只能確定隧道出口節(jié)點(diǎn)的IPv4地址,不能直接確定在本節(jié)點(diǎn)的鏈路層出口,因此需要再查一次轉(zhuǎn)發(fā)表以確定數(shù)據(jù)包的鏈路層出口。但是,在一些特殊的應(yīng)用場(chǎng)合中(例如,使用隧道作為用戶接入,隧道報(bào)文必須從指定的接口接收或發(fā)送),建立隧道時(shí)就可以確定該隧道對(duì)應(yīng)的鏈路層出口,這種情況下就不需要再查一次轉(zhuǎn)發(fā)表了。
按以上流程,如果由于配置錯(cuò)誤,導(dǎo)致隧道信息中的分發(fā)協(xié)議包頭的DA就是本節(jié)點(diǎn)的話,會(huì)出現(xiàn)“封裝—解封裝”的循環(huán),這有可能使一個(gè)數(shù)據(jù)包被無限次處理,從而嚴(yán)重影響節(jié)點(diǎn)的轉(zhuǎn)發(fā)處理性能。為了避免這種情況的發(fā)生,可以在獲取分發(fā)協(xié)議報(bào)頭DA時(shí),判斷該DA是否本節(jié)點(diǎn)DA,如果是則將數(shù)據(jù)包丟棄;另一種方法是,限制在節(jié)點(diǎn)中對(duì)一個(gè)數(shù)據(jù)包封裝的次數(shù)和解封裝的次數(shù),當(dāng)封裝或解封裝的次數(shù)超出一定值時(shí),丟棄這個(gè)數(shù)據(jù)包。
利用本發(fā)明的這種通用查找KEY對(duì)轉(zhuǎn)發(fā)信息庫進(jìn)行查找時(shí),可通過統(tǒng)一形式的查找KEY對(duì)所有的查找表進(jìn)行查找,可形成一個(gè)通用的查找流程,對(duì)外部查找表的接口只有一個(gè),十分方便硬件的實(shí)現(xiàn)。
權(quán)利要求
1.一種轉(zhuǎn)發(fā)數(shù)據(jù)包的查表方法,其特征在于采用帶有類型區(qū)分域的查找表輸入數(shù)據(jù)(KEY)來查表,包括以下步驟首先構(gòu)造至少一個(gè)查找KEY寬度模式;根據(jù)數(shù)據(jù)包的包頭類型將數(shù)據(jù)包按不同的查找表分類;構(gòu)建查找KEY,查找KEY中設(shè)置類型區(qū)分域和目的地址(DA)域,根據(jù)所述數(shù)據(jù)包查找表的分類情況確定類型區(qū)分域?qū)挾?,利用所述的類型區(qū)分域?qū)Σ檎冶眍愋瓦M(jìn)行區(qū)分,并根據(jù)所述的目的地址域查表。
2.根據(jù)權(quán)利要求1所述的轉(zhuǎn)發(fā)數(shù)據(jù)包的查表方法,其特征在于所述的查找KEY可采用72位和288位兩種寬度模式,或只采用288位一種寬度模式。
3.根據(jù)權(quán)利要求1或2所述的轉(zhuǎn)發(fā)數(shù)據(jù)包的查表方法,其特征在于所述的目的地址域根據(jù)數(shù)據(jù)包包頭的相關(guān)域進(jìn)行確定。
4.根據(jù)權(quán)利要求3所述的轉(zhuǎn)發(fā)數(shù)據(jù)包的查表方法,其特征在于將查找表分為16類,采用4位所述的類型區(qū)分域來區(qū)分不同的查找表類型。
5.根據(jù)權(quán)利要求3所述的轉(zhuǎn)發(fā)數(shù)據(jù)包的查表方法,其特征在于可采用哈希(HASH)或其它算法將所述的查找KEY中目的地址域或類型區(qū)分域統(tǒng)一為某個(gè)固定的長(zhǎng)度。
6.根據(jù)權(quán)利要求3所述的轉(zhuǎn)發(fā)數(shù)據(jù)包的查表方法,其特征在于所述的類型區(qū)分域可以含有因特網(wǎng)協(xié)議(IP)類型,也可以含有異步傳輸模式(ATM)類型。
7.根據(jù)權(quán)利要求3所述的轉(zhuǎn)發(fā)數(shù)據(jù)包的查表方法,其特征在于在系統(tǒng)中維護(hù)一個(gè)可包含各種隧道信息表和普通轉(zhuǎn)發(fā)信息表的轉(zhuǎn)發(fā)信息庫,在進(jìn)行隧道處理時(shí),通過所述的查找KEY對(duì)轉(zhuǎn)發(fā)信息庫進(jìn)行查找,確定下一跳出口。
全文摘要
一種轉(zhuǎn)發(fā)數(shù)據(jù)包的查表方法,采用帶有類型區(qū)分域的查找表輸入數(shù)據(jù)(KEY)來查表,首先根據(jù)需要構(gòu)造至少一個(gè)查找KEY寬度模式,并根據(jù)數(shù)據(jù)包的包頭類型將數(shù)據(jù)包按不同的查找表類型分類,然后構(gòu)建查找KEY,查找KEY中設(shè)置類型區(qū)分域和目的地址(DA)域,利用類型區(qū)分域?qū)Σ檎冶眍愋瓦M(jìn)行區(qū)分,可以采用72位和288位兩種查找KEY寬度模式,或只采用288位一種查找KEY寬度模式。本發(fā)明提供一種支持全部表項(xiàng)的處理的查表方法,從而使得路由交換設(shè)備可以全面支持各種IPv4/IPv6的查表操作,對(duì)于所有的查找表均可以硬件加速實(shí)現(xiàn),有效地提高設(shè)備的處理能力。
文檔編號(hào)H04Q3/545GK1543131SQ03122348
公開日2004年11月3日 申請(qǐng)日期2003年4月30日 優(yōu)先權(quán)日2003年4月30日
發(fā)明者杜涌, 杜 涌 申請(qǐng)人:華為技術(shù)有限公司