專利名稱:執(zhí)行高速互聯(lián)網(wǎng)協(xié)議路由查找和管理路由選擇/轉(zhuǎn)發(fā)表的裝置和方法
背景技術(shù):
1、發(fā)明領(lǐng)域本發(fā)明一般地涉及用于在因特網(wǎng)中向目的地轉(zhuǎn)發(fā)分組的路由技術(shù),特別涉及用于執(zhí)行高速IP(互聯(lián)網(wǎng)協(xié)議)路由查找和管理路由選擇(或轉(zhuǎn)發(fā))表的一種裝置和方法。
2、相關(guān)技術(shù)說明由于因特網(wǎng)用戶的不斷增長的數(shù)量、支持業(yè)務(wù)的多樣性和諸如VoIP(IP話音傳輸)和面向流應(yīng)用的業(yè)務(wù)區(qū)域的擴(kuò)展,因特網(wǎng)中的業(yè)務(wù)量已經(jīng)以指數(shù)規(guī)律增長。通過在一個(gè)千兆(Giga)或萬億(Tera)比特/秒級(jí)高速路由器中尋找一個(gè)目的路徑而不引起任何延遲來向下一個(gè)中繼接口轉(zhuǎn)發(fā)分組已經(jīng)顯現(xiàn)為一個(gè)隨之而來的設(shè)計(jì)問題。為了尋找通過路由器的物理輸入接口轉(zhuǎn)發(fā)的分組的目的路徑,需要保持緊密結(jié)合形式的路由選擇(或轉(zhuǎn)發(fā))表和減少查找時(shí)間。
在傳統(tǒng)的路由器中,在最近使用的高速路由器——其中處理分組和尋找它們的目的地需要的時(shí)間比在傳輸路徑上需要的時(shí)間快——出現(xiàn)之前,一種作為連接子網(wǎng)或其他網(wǎng)絡(luò)的轉(zhuǎn)接節(jié)點(diǎn)的路由器的表現(xiàn)很好。最近,諸如POSOC-192(10千兆比特/秒)或基于IP的DWDM(密集波分復(fù)用)的光學(xué)網(wǎng)絡(luò)連接接口的帶寬的增長已經(jīng)優(yōu)于路由器中的處理時(shí)間并引起對(duì)于路由器產(chǎn)生高速因特網(wǎng)中的主要瓶頸的責(zé)備。對(duì)于路由器的背景討論,請(qǐng)參見Keshav,S.和Sharma,R.,《路由器設(shè)計(jì)的問題與趨勢(shì)(Issues and Trends in Router Design)》,IEEE通信雜志,144-151頁,1998年5月;Kumar,V和Lakshman,T.和Stiliadis,D.的《最大努力所不及明天的因特網(wǎng)的不同業(yè)務(wù)的路由器結(jié)構(gòu)(Beyond BestEffortRouter Architectures for the Differentiated Services of Tomorrow’sInternet)》,IEEE通信雜志,152-164頁,1998年5月;Chan,H.、Alnuweiri,H.和Leung,V.的《用于最佳化下一代IP路由器的成本和性能的結(jié)構(gòu)(AFramework for Optimizing the Cost and Performance of Next-Generation IPRouters)》,IEEE通信中的選擇區(qū)域期刊,第17卷,第6號(hào),1013-1029頁,1999年6月;Partridge,C.等人的《一種50千兆比特/秒的IP路由器(A 50-Gb/sIP Router)》,IEEE/美國計(jì)算機(jī)學(xué)會(huì)聯(lián)網(wǎng)技術(shù)學(xué)報(bào),第6卷,第3號(hào),237-248頁,1998;以及Metz,C.的《IP路由器千兆聯(lián)網(wǎng)技術(shù)的新工具(New Tool forGigabit Networking)》,IEEE因特網(wǎng)計(jì)算,14-18頁,1998年11-12月。
在九十年代早期,IETF(因特網(wǎng)工程任務(wù)組)工作組引入了一種稱為CIDR(無級(jí)域間路由選擇)的新的IP尋址方案來有效地在IPv4(IP版本4)中使用IP地址。請(qǐng)參見RFC(征求意見文件網(wǎng)絡(luò)工作組)1518,《利用CIDR的IP地址分配的結(jié)構(gòu)(An Architecture for IP Address Allocation with CIDR)》,1993年9月;以及RFC 1517,《無級(jí)域間路由選擇(CIDR)實(shí)現(xiàn)的可應(yīng)用性報(bào)告(Applicability Statement for the Implementation of Classless Inter-DomainRouting(CIDR))》,1993年9月。
在這種情況下,為了在具有各種前綴長度的分組中獲得一個(gè)前綴和尋找與最長的前綴匹配的IP地址,已經(jīng)廣泛使用了一種基于檢索樹(trie)或Patricia(檢索編碼為字母數(shù)字的信息的使用算法)檢索樹(trie)數(shù)據(jù)結(jié)構(gòu)的LPM(最長前綴匹配)算法。請(qǐng)參見Doeringer,W.、Karjoth,G.和Nassehi,M.的《最長匹配前綴的路由選擇(Routing on Longest-Matching Prefixes)》,IEEE/美國計(jì)算機(jī)學(xué)會(huì)聯(lián)網(wǎng)技術(shù)學(xué)報(bào),第4卷,第1號(hào),86-97頁,1996年2月。
下面參照表1詳細(xì)說明LPM算法。表1示出了包含在路由選擇(或轉(zhuǎn)發(fā))表中的路由項(xiàng)(routing entry)的一個(gè)簡單示例。星號(hào)允許給任何數(shù)填充‘0’或‘1’,盡管在IPv4的情況下前綴本身不能超過32。例如,‘0*’可以指‘01*’‘011*’或‘010*’而不管其余的比特串是什么。
表1
路由項(xiàng)或路由由IP地址={<網(wǎng)絡(luò)前綴>,<主機(jī)編號(hào)>}來表示。當(dāng)目的IP地址是‘10010101000…0’的時(shí)候,目的IP地址的第一個(gè)比特與在路由選擇表中包含的網(wǎng)絡(luò)前綴(簡單前綴)相比較。于是,諸如0*、01010*、010101*和0101011*的前綴被丟棄,因?yàn)樗鼈兙哂袕摹?’開始的第一比特。當(dāng)給定的目的地址域其余的前綴相比較的時(shí)候,前綴‘11*’、‘1110*’和‘1001010101*’被排除在外,因?yàn)樗鼈儚牡诙虻谑忍嘏c目的地址不匹配。在似乎正確的前綴(如‘1*’、‘10*’和‘100101010*’)中,‘100101010*’被選為匹配路由的最長的前綴(或最特殊的),具有此目的IP地址的IP分組通過接口‘10’被轉(zhuǎn)發(fā)到相鄰的路由器。
同時(shí),一種最近公布的路由選擇查找算法被存儲(chǔ)在一個(gè)可能的處理器(路由選擇處理器或轉(zhuǎn)發(fā)引擎)中的一個(gè)超高速緩沖存儲(chǔ)器中以降低存儲(chǔ)器存取時(shí)間。雖然基于路由選擇表的路由選擇查找表保證了有效的查找,但是它不能改變路由選擇(或轉(zhuǎn)發(fā))表。因此,路由選擇查找算法當(dāng)改變時(shí)可能引起在反射路由選擇表中的時(shí)間延遲。
另外,在路由選擇處理器中的路由選擇表被通過一個(gè)DMA(直接存儲(chǔ)器存取)卡、一個(gè)IPC(進(jìn)程間通訊)卡或一個(gè)交換結(jié)構(gòu)而復(fù)制,并隨后被應(yīng)用到在轉(zhuǎn)發(fā)引擎中的一個(gè)轉(zhuǎn)發(fā)表。在此,有必要建立一個(gè)新的轉(zhuǎn)發(fā)表而不是僅僅加入或刪除改變的路由。這可能導(dǎo)致另外的時(shí)間延遲,并也由于在從路由器的存儲(chǔ)器存取請(qǐng)求中使用的存儲(chǔ)器帶寬的增加而引起在路由器或系統(tǒng)總線的內(nèi)部存儲(chǔ)器中的瓶頸。
而且,在一些算法中,必需利用表示路由器當(dāng)前鏈路狀態(tài)的鏈路可達(dá)到性(reachability)信息來建立一個(gè)初始的路由選擇(或轉(zhuǎn)發(fā))表。因此,為了在路由選擇表中依序插入可達(dá)到性信息,需要一種用于按照前綴長度預(yù)先分類每個(gè)路由的附加的處理。參見Degermark,M.、Brodnik,A.、Carlsson S.和Pink,S.的《用于快速路由選擇查找的小轉(zhuǎn)發(fā)表(Small Forwarding Tables for FastRouting Lookups)》,美國計(jì)算機(jī)學(xué)會(huì)SIGCOMM’97會(huì)刊,3-14頁,戛納,法國,1997;Srinivasan,V和Varghese,G.的《利用受控的前綴擴(kuò)展的快速IP查找(Faster IP Lookups using Controlled Prefix Expansion)》,美國計(jì)算機(jī)學(xué)會(huì)Sigmetrics’98會(huì)議會(huì)刊,1-11頁,1998;Lampson,B.、Srinivasan,V.和Varghese,G.的《利用多路和多欄(multicolumn)搜索的IP查找(IP Lookups using Multiwayand Multicolumn Search)》,IEEE Inforcom,1248-1256頁,1998;Tzeng,G.和Pryzygienda,T.的《關(guān)于快速地址查找算法(On Fast Address-LookupAlgorithms)》,IEEE通信中的選擇區(qū)域期刊,第17卷,第6號(hào),1067-1082頁,1999年6月;Waldvogel,M.、Varghese,G.、Turner,J.和Plattner,B.的《可擴(kuò)展高速IP路由選擇查找(Scalable High Speed IP Routing Lookups)》,美國計(jì)算機(jī)學(xué)會(huì)SIGCOMM’97會(huì)刊,戛納,法國,25-37頁,1997;以及Waldvogel,M.、Varghese,G.、Tuner,J.和Plattner,B.的《可擴(kuò)展最佳匹配前綴查找(ScalableBest Matching Prefix Lookups)》,PODC’98會(huì)刊,Puerto Vallarta,頁,1998。
諸如基數(shù)樹或Patricia檢索樹(trie)的在路由選擇表中一般使用的數(shù)據(jù)結(jié)構(gòu)不僅造成尋找分組路徑所需要的存儲(chǔ)器存取次數(shù)的增加,而且需要相當(dāng)多的更新時(shí)間來反射通過從相應(yīng)的路由器的相鄰路由器設(shè)置或刪除路由而引起的改變的路由。Degermark,M.、Brodnik,A.、Carlsson S.和Pink,S.的《用于快速路由選擇查找的小轉(zhuǎn)發(fā)表(Small Forwarding Tables for Fast RoutingLookups)》,美國計(jì)算機(jī)學(xué)會(huì)SIGCOMM’97會(huì)刊,3-14頁,戛納,法國,1997中提出了一種可以存儲(chǔ)在轉(zhuǎn)發(fā)引擎的超高速緩沖存儲(chǔ)器中的緊密結(jié)合的轉(zhuǎn)發(fā)表,但是難于向其中反射改變的路由。由Srinivasan,V.和Varghese,G.的《利用受控的前綴擴(kuò)展的快速IP查找(Faster IP Lookups using Controlled PrefixExpansion)》,美國計(jì)算機(jī)學(xué)會(huì)Sigmetrics’98會(huì)議會(huì)刊,1-11頁,1998(參見授予George Varghese和Srinivasan的標(biāo)題為“用于利用前綴的受控?cái)U(kuò)展的快速分層地址查找的方法和裝置(Method and Apparatus for Fast HierarchicalAddress Lookup Using Controlled Expansion of Prefixes)”的美國專利第6,01,795號(hào))提出的受控前綴擴(kuò)展方法和由Tzeng,G.和Pryzygienda,T.的《關(guān)于快速地址查找算法(On Fast Address-Lookup Algorithms)》,IEEE通信中的選擇區(qū)域期刊,第17卷,第6號(hào),1067-1082頁,1999年6月提出的快速地址查找算法也是基于多分辨率檢索樹(trie),但是難于加入或刪除路由,因?yàn)閿?shù)據(jù)結(jié)構(gòu)是基于檢索樹(trie)的。就此而論,參見一同授予Hong-Yi Tzeng的標(biāo)題為“用于IP路由選擇表查找的方法(Method for IP Routing Table Look-up)”的美國專利第6,061,712號(hào)和標(biāo)題為“利用壓縮樹處理的高速路由選擇(HighSpeed Routing Using Compressed Tree Process)”的美國專利第6,067,574號(hào)。通過向具有散列表和基于多分辨率檢索樹(trie)(Tzeng,G.和Pryzygienda,T.的《關(guān)于快速地址查找算法(On Fast Address-Lookup Algorithms)》,IEEE通信中的選擇區(qū)域期刊,第17卷,第6號(hào),1067-1082頁,1999年6月)的完整的前綴檢索樹(trie)的二進(jìn)制樹映射一個(gè)檢索樹(trie)結(jié)構(gòu)一種線搜索(rope search)算法(Waldvogel,M.、Varghese,G.、Turner,J.和Plattner,B.的《可擴(kuò)展高速IP路由選擇查找(Scalable High Speed IP Routing Lookups)》,美國計(jì)算機(jī)學(xué)會(huì)SIGCOMM’97會(huì)刊,戛納,法國,25-37頁,1997;和Waldvogel,M.、Varghese,G.、Tuner,J.和Plattner,B.的《可擴(kuò)展最佳匹配前綴查找(Scalable Best MatchingPrefix Lookups)》,PODC’98會(huì)刊,Puerto Vallarta,頁,1998)由于改變的路由項(xiàng)的更新而趨于效率低,因?yàn)檫@些數(shù)據(jù)結(jié)構(gòu)是基于檢索樹(trie)的。就此而論,參見授予Jonathan Turner、George Varghese和Marcel Waldvogel的標(biāo)題為“可擴(kuò)展高速IP路由選擇查找(Scalable High Speed IP Routing Lookups)”的美國專利第6,018,524號(hào)。
除了上述之外,已經(jīng)提出了其他的檢索樹(trie)的變化方式。例如,已經(jīng)提出了一種雙檢索樹(trie)方案(Kijkanjanarat,T.和Chao,H.的《利用雙檢索樹(trie)數(shù)據(jù)結(jié)構(gòu)的快速IP查找(Fast IP Lookups Using a Two-Tries DataStructure)》,Globecom’99的會(huì)刊,1999),它鏈接用以降低搜索時(shí)間的兩個(gè)檢索樹(trie)和用以降低在一個(gè)檢索樹(trie)中的層級(jí)長度的一個(gè)LC檢索樹(trie)(Nillson,S.和Karlsoson,G.的《利用LC檢索樹(trie)的IP地址查找(IP-Addresses Lookup Using LC-Tries)》,IEEE通信中的選擇區(qū)域期刊,第17卷,第16號(hào),1083-1092頁,1999年6月)以及一個(gè)DP檢索樹(trie)(Doeringer,W.、Karjoth,G.和Nassehi,M.的《最長匹配前綴的路由選擇(Routing onLongest-Matching Prefixes)》,IEEE/美國計(jì)算機(jī)學(xué)會(huì)聯(lián)網(wǎng)技術(shù)學(xué)報(bào),第4卷,第1號(hào),86-97頁,1996年2月)。但是它們?nèi)匀辉谙蚵酚蛇x擇(或轉(zhuǎn)發(fā))表反射改變的路由中存在困難。
另外,雖然前述的方案有益于降低查找時(shí)間,但是仍然存在有關(guān)路由更新的問題。硬件輔助的方案也被提出來降低查找時(shí)間。Gupta,P.、Lin,S.和McKeown,N.的《以存儲(chǔ)器存取速度在硬件中的路由選擇查找(RoutingLookups in Hardware at Memory Access Speeds)》,IEEE INFOCOM’98會(huì)議會(huì)刊,1240-1247頁,1998提出了一種根據(jù)大型存儲(chǔ)器的使用的解決方案。與基于軟件的方案相比降低查找時(shí)間是可能的,但是在IPv6(IP版本6)的轉(zhuǎn)變中仍然造成很大數(shù)量的存儲(chǔ)器容量的使用和成本。McAuley,A.和Francis,P.的《利用CAM的快速路由選擇表查找(Fast Routing Table Lookup UsingCAMs)》,IEEE INFOCOM’93會(huì)刊,第三卷,1382-1391頁,1993提出了一種利用CAM(內(nèi)容可尋址存儲(chǔ)器)的方案,但是由于CAM的高價(jià)格,它現(xiàn)在沒有被考慮使用。Huang,N.和Zhao,S.的《用于多個(gè)千兆交換路由器的新型IP路由選擇查找方案和硬件結(jié)構(gòu)(A Novel IP-Routing Lookup Scheme andHardware Architecture for Multigigabit Switching Routers)》,IEEE通信中的選擇區(qū)域期刊,第17卷,第6號(hào),1093-1104頁,1999年6月提出了一種間接查找算法,它利用流水線存儲(chǔ)器存取來降低存儲(chǔ)器的存取,但是它具有在IPv6轉(zhuǎn)變上的一個(gè)缺點(diǎn)。
發(fā)明概述因此,本發(fā)明的一個(gè)目的在于提供一種用于執(zhí)行高速IP路由查找和管理路由選擇/轉(zhuǎn)發(fā)表的方法,它能夠利用隨機(jī)算法來最小化存儲(chǔ)器存取時(shí)間,因此保證了存儲(chǔ)器的有成本效益的利用。
本發(fā)明的另一個(gè)目的是提供一種用于執(zhí)行高速IP路由查找和管理路由選擇/轉(zhuǎn)發(fā)表的方法,它可以容易地改變和管理路由的增加和刪除。
本發(fā)明的另一個(gè)目的是提供一種用于執(zhí)行高速IP路由查找和管理路由選擇/轉(zhuǎn)發(fā)表的方法,它可以有效地建立一個(gè)路由選擇表和/或一個(gè)轉(zhuǎn)發(fā)表,而不用按照在建立表期間要輸入的路由的前綴長度來將相關(guān)的路由分類。
按照本發(fā)明的第一方面,提供了一種方法,用于利用跳轉(zhuǎn)表(skip list)來搜索具有作為關(guān)鍵字的一個(gè)前綴長度范圍的IP地址,該跳轉(zhuǎn)表包含具有預(yù)定最大值的關(guān)鍵字(key)的首標(biāo)節(jié)點(diǎn)和每個(gè)具有以降序預(yù)設(shè)的固定(或可變)范圍的關(guān)鍵字、并在與各個(gè)前綴長度相關(guān)的散列表中存儲(chǔ)對(duì)應(yīng)于各個(gè)前綴長度的路由項(xiàng)的多個(gè)節(jié)點(diǎn)(子節(jié)點(diǎn))。
按照本發(fā)明的第二方面,一種用于利用跳轉(zhuǎn)表來建立IP路由選擇表的方法包括步驟建立一個(gè)具有最大等級(jí)的首標(biāo)節(jié)點(diǎn)來管理在跳轉(zhuǎn)表中的每個(gè)節(jié)點(diǎn);向跳轉(zhuǎn)表插入多個(gè)具有劃分的前綴范圍的節(jié)點(diǎn);以及建立一個(gè)散列表,用于存儲(chǔ)在對(duì)應(yīng)于前綴范圍的每個(gè)節(jié)點(diǎn)給出的路由項(xiàng)。
按照本發(fā)明的第三方面,提供了一種方法,用于利用跳轉(zhuǎn)表來更新路由選擇表,跳轉(zhuǎn)表中根據(jù)在每個(gè)按照一個(gè)IP地址的前綴長度范圍產(chǎn)生的節(jié)點(diǎn)中設(shè)置的前綴長度來以散列表的形式存儲(chǔ)路由項(xiàng)。所述方法包括步驟尋找一個(gè)節(jié)點(diǎn),其中設(shè)置了對(duì)應(yīng)于要更新的路由的前綴長度的前綴范圍;搜索一個(gè)散列表,它具有與在找到的節(jié)點(diǎn)中要更新的路由相同的前綴長度;以及當(dāng)找到散列表的時(shí)候更新在散列表中的對(duì)應(yīng)的路由。
按照本發(fā)明的第四個(gè)方面,提供了一種利用一個(gè)跳轉(zhuǎn)表的路由選擇表的路由查找方法,在所述跳轉(zhuǎn)表中按照一個(gè)IP地址的前綴范圍的分配而產(chǎn)生的每個(gè)節(jié)點(diǎn)中的預(yù)設(shè)的前綴長度存儲(chǔ)了散列表形式的路由項(xiàng)。所述方法包括步驟尋找從跳轉(zhuǎn)表的第一個(gè)節(jié)點(diǎn)開始的一個(gè)相鄰的節(jié)點(diǎn);比較目的地址與在對(duì)應(yīng)節(jié)點(diǎn)的各個(gè)散列表;以及當(dāng)散列表包括目的地址的時(shí)候?qū)⒁粋€(gè)匹配的前綴當(dāng)作最長的前綴。
隨著本發(fā)明通過參照下面的參考附圖的詳細(xì)說明而變得更好明白,本發(fā)明的更完整的理解和它的許多附帶的優(yōu)點(diǎn)將變得更為清楚,在附圖中,相同的參考標(biāo)號(hào)指相同或類似的部件。
圖1是圖解可應(yīng)用本發(fā)明的分布式路由器結(jié)構(gòu)的原理圖;圖2是圖解可應(yīng)用本發(fā)明的平行路由器結(jié)構(gòu)的原理圖;圖3是圖解可應(yīng)用本發(fā)明的轉(zhuǎn)發(fā)引擎結(jié)構(gòu)的原理圖;圖4是圖解路由選擇處理器的結(jié)構(gòu)的原理圖;圖5是用于解釋按照本發(fā)明的一個(gè)實(shí)施例的LPM(最長前綴匹配)算法的圖;圖6是圖解按照本發(fā)明的一個(gè)實(shí)施例的跳轉(zhuǎn)表的結(jié)構(gòu)的圖;圖7A和7B是圖解在因特網(wǎng)中預(yù)定長度分布的測(cè)量值的圖;圖8是圖解按照本發(fā)明的一個(gè)實(shí)施例的首標(biāo)節(jié)點(diǎn)的結(jié)構(gòu)的圖;圖9是用于說明按照本發(fā)明的一個(gè)實(shí)施例的跳轉(zhuǎn)表建立操作的圖;圖10A和10B是用于說明按照本發(fā)明的一個(gè)實(shí)施例的根據(jù)前綴長度建立路由選擇表的操作的圖;圖11是圖解用于按照本發(fā)明的一個(gè)實(shí)施例建立路由選擇表的過程的流程圖;圖12是圖解用于按照本發(fā)明的一個(gè)實(shí)施例更新路由選擇表的過程的流程圖;
圖13和14是圖解按照本發(fā)明的一個(gè)實(shí)施例的用于說明路由查找和更新操作的跳轉(zhuǎn)表結(jié)構(gòu)的圖;圖15是圖解按照本發(fā)明的一個(gè)實(shí)施例的路由查找處理的流程圖;和圖16是圖解按照本發(fā)明的一個(gè)實(shí)施例的用于說明整體查找過程的跳轉(zhuǎn)表結(jié)構(gòu)的圖。
優(yōu)選實(shí)施例的詳細(xì)說明以下,參照附圖來說明本發(fā)明的優(yōu)選實(shí)施例。在下面的說明中,不詳細(xì)說明公知的功能和結(jié)構(gòu),因?yàn)樗鼈儗⒁圆槐匾募?xì)節(jié)混淆本發(fā)明。
首先,說明可應(yīng)用本發(fā)明的一種路由器和路由選擇方法。Chan等人(《用于最佳化下一代IP路由器的成本和性能的結(jié)構(gòu)(A Framework for Optimizingthe Cost and Performance of Next-Generation IP Routers)》,IEEE通信中的選擇區(qū)域期刊,第17卷,第6號(hào),1013-1029頁,1999年6月)將兩種主要的高速路由器的結(jié)構(gòu)劃分為分布式或平行式的,它們之間的主要區(qū)別依賴于轉(zhuǎn)發(fā)引擎的位置。高速主干路由器趨向于具有分布式結(jié)構(gòu)而不是傳統(tǒng)的集中結(jié)構(gòu)。
圖1圖解了可應(yīng)用本發(fā)明的具有分布式結(jié)構(gòu)的路由器。參見圖1,路由器包括一配有轉(zhuǎn)發(fā)表FE的線路卡模塊110,分組通過它來輸入和輸出;一路由選擇處理器120,用于建立初始的路由選擇表RT和管理路由選擇表;以及一交換結(jié)構(gòu)130,當(dāng)分組被轉(zhuǎn)換到路由器中的一個(gè)特定端口的時(shí)候使用。
路由選擇處理器120包括通過反射最后改變的路由而更新的一路由選擇表RT。路由選擇表RT根據(jù)諸如RIP(路由選擇信息協(xié)議)、OSPF(開放最短路徑優(yōu)先)或BGP-4(邊界網(wǎng)關(guān)協(xié)議4)的路由選擇協(xié)議產(chǎn)生,但不限于這些協(xié)議。一種設(shè)計(jì)用于有效查找的稱為轉(zhuǎn)發(fā)表FT的緊密結(jié)合的表被從路由選擇處理器中的路由選擇表復(fù)制。這個(gè)轉(zhuǎn)發(fā)表FT僅僅設(shè)計(jì)用于通過犧牲路由加入和刪除的效率的有效查找。
如果從線路卡模塊110輸入的分組不能從轉(zhuǎn)發(fā)表FT尋找它的目的路徑,則對(duì)應(yīng)的分組必須穿過交換結(jié)構(gòu)130到路由選擇處理器120以解析它的未匹配的路由。在找到它的目的地后,所述分組必須再次路由到交換結(jié)構(gòu)130以向輸出線路卡模塊110發(fā)送分組。否則,如果路由選擇處理器120即使通過路由選擇表RT也不能尋找目的路徑,則所述分組在路由選擇處理器120被丟棄。
同時(shí),Asthana,A.、Delph,C.、Jagadish,H.和Krzyzanowski,P.的《走向千兆比特IP路由器(Towards a Gigabit IP Router)》,高速網(wǎng)絡(luò)期,第1卷,第4號(hào),281-288頁,1992和Partridge,C.等人(《一種50千兆比特/秒的IP路由器(A 50-Gb/s IP Router)》,IEEE/美國計(jì)算機(jī)學(xué)會(huì)聯(lián)網(wǎng)技術(shù)學(xué)報(bào),第6卷,第3號(hào),237-248頁,1998)公開了一種具有平行結(jié)構(gòu)的路由器。圖2圖解了可以應(yīng)用本發(fā)明的一種具有平行結(jié)構(gòu)的路由器。在圖2所示的具有平行結(jié)構(gòu)的路由器中,每個(gè)具有轉(zhuǎn)發(fā)表FT的轉(zhuǎn)發(fā)引擎112與線路卡模塊110分離。這樣的平行結(jié)構(gòu)使用一個(gè)基于客戶機(jī)和服務(wù)器的模式來用于處理在每個(gè)轉(zhuǎn)發(fā)引擎中的路由查找和平行分組處理。
在路由選擇處理器120中的路由選擇表必須設(shè)計(jì)成它可以立即反射改變的路徑和它可以容易地被保持。而且,要加入或刪除的路由必須以最小的花費(fèi)盡快地被反射到在轉(zhuǎn)發(fā)引擎112中的轉(zhuǎn)發(fā)表FT中。當(dāng)沒有反射路由的時(shí)候,輸入的分組被通過交換結(jié)構(gòu)130發(fā)送到路由選擇處理器120,引起由于繞過在處理相應(yīng)的分組中所要求的附加的路由而導(dǎo)致的傳輸延遲的增加。
雖然已經(jīng)就分布式路由器和平行路由器說明了本發(fā)明,對(duì)本領(lǐng)域的技術(shù)人員顯然的是本發(fā)明可以被應(yīng)用到具有其他結(jié)構(gòu)的路由器。
圖3圖解了在具有分布或平行結(jié)構(gòu)的路由器中的轉(zhuǎn)發(fā)引擎112的結(jié)構(gòu)。圖4圖解了路由選擇處理器120的結(jié)構(gòu)。
參見圖3,轉(zhuǎn)發(fā)引擎112包括n個(gè)輸入接口、m個(gè)輸出接口、n個(gè)用于緩沖通過輸入接口輸入的分組的緩沖器、一個(gè)用于按照類型分類存儲(chǔ)在緩沖器重點(diǎn)的分組的分組分類器、以及一個(gè)用于通過查閱轉(zhuǎn)發(fā)表將由轉(zhuǎn)發(fā)表和分組分類器分類的分組發(fā)送到相應(yīng)的輸出接口的路由查找控制器。
參見圖4,路由選擇處理器120包括n個(gè)輸入/輸出接口,用于從/向圖1和2所示的交換結(jié)構(gòu)130接收和輸出分組;一個(gè)交換接口,用于緩沖從/向輸入/輸出接口輸入和輸出的分組與在交換結(jié)構(gòu)130和它的下一級(jí)的路由查找和保留控制器之間對(duì)接;以及路由查找和保留控制器,用于通過查閱路由選擇表來將從路由選擇表和交換接口提供的分組經(jīng)由交換接口傳送到對(duì)應(yīng)的輸入/輸出接口。
按照RFC標(biāo)準(zhǔn),路由選擇(或轉(zhuǎn)發(fā))表對(duì)主要用于查找的數(shù)據(jù)結(jié)構(gòu)數(shù)組、樹和檢索樹(trie)沒有限制,也對(duì)何種算法要用于處理它們沒有限制。但是,對(duì)于最長前綴匹配,需要最小數(shù)量的存儲(chǔ)器存取,并且改變的路由應(yīng)當(dāng)在路由選擇(或轉(zhuǎn)發(fā))表種容易更新。
為此,本發(fā)明的實(shí)施例使用了一種隨機(jī)算法。改隨機(jī)算法是在它的執(zhí)行期間進(jìn)行隨機(jī)選擇的算法。它著重于使得它可能在每個(gè)輸入上表現(xiàn)良好。這是要根據(jù)不是一個(gè)特定的假設(shè)而是概率(如拋擲硬幣)p來處理某個(gè)輸入。使用隨機(jī)算法的優(yōu)點(diǎn)來自它的簡單與有效。
基于隨機(jī)算法的按照本發(fā)明的算法保證了最小數(shù)量的存儲(chǔ)器存取和路由選擇表的簡單管理。為了管理路由項(xiàng),僅僅重建改變的路由信息而不使用重建整個(gè)表的傳統(tǒng)方法。另外,不象諸如一般樹或二進(jìn)制檢索樹(trie)的路由查找算法一樣,按照本發(fā)明的算法從圖5所示的目的IP地址的尾部搜索最長的前綴。
另外,本發(fā)明使用用于路由選擇表的跳轉(zhuǎn)表。參見Pugh,W.的《跳轉(zhuǎn)表平衡樹的概率性替代(A Probabilistic Alternatives to Balanced Trees)》,CACM33(6),6689-676,1990。
跳轉(zhuǎn)表被當(dāng)作具有分類的n個(gè)節(jié)點(diǎn)的鏈表并通常用于代表諸如分裂樹的平衡樹的數(shù)據(jù)結(jié)構(gòu)中。參見Sleator,D.和Tarjan,R.的《自調(diào)節(jié)二進(jìn)制搜索樹(Self-Adjusting Binary Search Trees)》,計(jì)算機(jī)協(xié)會(huì)會(huì)刊,第32卷,第3號(hào),1985年7月。因此,在插入和刪除操作中它比平衡樹更簡單和有效。本發(fā)明提出了一種圖6所示的用于最長前綴匹配的跳轉(zhuǎn)表的變化形式。
圖6圖解了按照本發(fā)明的實(shí)施例的跳轉(zhuǎn)表的變化形式。參見圖6,每個(gè)節(jié)點(diǎn)具有一個(gè)單獨(dú)的指針或多個(gè)指針并且最左面的節(jié)點(diǎn)被稱為首標(biāo)節(jié)點(diǎn)210,因?yàn)閷?duì)于跳轉(zhuǎn)表的變化形式的所有的操作,如查找、插入、刪除和更新,必須從首標(biāo)節(jié)點(diǎn)210開始。
首標(biāo)節(jié)點(diǎn)210包含+∞作為關(guān)鍵值和指針來指示下一個(gè)節(jié)點(diǎn)。在節(jié)點(diǎn)220、230、240、250和260中的關(guān)鍵字被以降序排序。在每個(gè)節(jié)點(diǎn)中的關(guān)鍵字表示‘前綴長度范圍’或‘前綴長度值的聚類’,并且這個(gè)關(guān)鍵字被以降序插入。在本發(fā)明的實(shí)施例中,搜索將從葉到根(或父)開始,即一個(gè)反轉(zhuǎn)的關(guān)鍵值序列,這是一種與傳統(tǒng)的檢索樹(trie)或樹結(jié)構(gòu)完全不同的方法。
第二節(jié)點(diǎn)220的關(guān)鍵字具有前綴長度范圍32-34,具有屬于這個(gè)前綴長度范圍的前綴長度的任何路由被存儲(chǔ)在與它的前綴長度匹配的散列表中。圖6示出了具有前綴長度30比特的散列表222和具有前綴長度26比特的散列表224來作為屬于第二節(jié)點(diǎn)220的范圍的路由器的散列表的示例。而且,圖6示出了具有前綴長度15比特的散列表242來作為屬于具有前綴長度17-12的第四節(jié)點(diǎn)240的范圍的路由器的散列表的示例。
雖然圖6示出了一個(gè)示例,其中對(duì)于不同的長度不同節(jié)點(diǎn)的前綴長度范圍是固定的,即固定劃分的前綴范圍,但是前綴長度范圍也可以被劃分為具有可變長度的一組節(jié)點(diǎn),即被可變地劃分的前綴范圍。Srinivasan,V.和Varghese,G.的《利用受控的前綴擴(kuò)展的快速IP查找(Faster IP Lookups usingControlled Prefix Expansion)》,美國計(jì)算機(jī)學(xué)會(huì)Sigmetrics’98會(huì)議會(huì)刊,1-11頁,1998討論了一種動(dòng)態(tài)編程技術(shù),用于劃分一個(gè)前綴范圍來提供最佳的存儲(chǔ)。在按照本發(fā)明的算法中,有可能利用類似的技術(shù)來劃分前綴長度組。但是,在圖6所示的本發(fā)明的實(shí)施例中,最好具有固定的前綴長度范圍,因此可以避免由于動(dòng)態(tài)編程而導(dǎo)致的附加的計(jì)算負(fù)擔(dān)。
對(duì)于IPv4的情況,如果前綴長度被固定為8,則被插入的節(jié)點(diǎn)的總數(shù)可以是5(1+[32/8](其中32是在一個(gè)IPv4地址中的比特的最大數(shù)量))。如來自IPMA(因特網(wǎng)性能測(cè)量和分析)的經(jīng)驗(yàn)結(jié)果所示,http//nic.merit.edu/ipma,實(shí)際引用的前綴長度的分布具有一個(gè)偏離的,即暗示在實(shí)際引用的前綴長度分布中存在的局域格式。因此,在本發(fā)明中有可能使用更少數(shù)量的節(jié)點(diǎn)。例如,從圖7A和7B可以注意到從17到27的前綴長度是最常被引用的。因此,有可能設(shè)置一個(gè)具有包括對(duì)應(yīng)的前綴長度的范圍的前綴長度關(guān)鍵值的節(jié)點(diǎn)并按照另一個(gè)前綴長度范圍來設(shè)置多個(gè)節(jié)點(diǎn)。
向回參見圖6,首標(biāo)節(jié)點(diǎn)210的變量‘MaxLevel’表示在屬于跳轉(zhuǎn)表的所有節(jié)點(diǎn)中的最大層級(jí)數(shù)量,即在首標(biāo)節(jié)點(diǎn)的指向其他節(jié)點(diǎn)的指針的總數(shù)。每個(gè)節(jié)點(diǎn)保持一個(gè)關(guān)鍵值‘x->key’(或key(x))和指針‘x->forward[L]’(或next(x,L))以指示在節(jié)點(diǎn)x的層級(jí)L從節(jié)點(diǎn)x指向相鄰節(jié)點(diǎn)的指針。
在除了首標(biāo)節(jié)點(diǎn)210之外的一個(gè)節(jié)點(diǎn)中每個(gè)關(guān)鍵字具有一個(gè)前綴長度范圍或集。在圖6中,節(jié)點(diǎn)220具有范圍從32到24的路由項(xiàng)并且每個(gè)前綴長度具有它自己的散列表以存儲(chǔ)與相應(yīng)的前綴長度相匹配的路由項(xiàng)。如果路由項(xiàng)對(duì)應(yīng)于范圍從32到24——包括32和24——的每個(gè)路由項(xiàng)而存在,則對(duì)應(yīng)的節(jié)點(diǎn)將具有9個(gè)指針來指向9個(gè)不同的散列表。每個(gè)散列表僅僅存儲(chǔ)與它的前綴長度精確匹配的路由項(xiàng)。這是調(diào)用跳轉(zhuǎn)表的變化形式作為具有k個(gè)散列的節(jié)點(diǎn)的跳轉(zhuǎn)表的原因。
為了根據(jù)按照本發(fā)明的跳轉(zhuǎn)表更好地理解所述算法,將說明用于建立首標(biāo)節(jié)點(diǎn)和建立跳轉(zhuǎn)表變化形式的方法。
圖8是說明用于按照本發(fā)明的實(shí)施例建立首標(biāo)節(jié)點(diǎn)的方法的圖。參見圖8,首標(biāo)節(jié)點(diǎn)具有一個(gè)+∞關(guān)鍵值并且MaxLevel=5(1+[32/8]),其中MaxLevel=1+[W/n],W是IP地址的比特長度,如IPv432和IPv6128,并且n是前綴范圍。由于首標(biāo)節(jié)點(diǎn)需要唯一地位于在跳轉(zhuǎn)表中的所有節(jié)點(diǎn)的前面,因此在IPv4的情況下,如果概率p是1/2并且前綴范圍等于1則MaxLevel=33對(duì)于包含最多232個(gè)路由的數(shù)據(jù)結(jié)構(gòu)是合適的。首標(biāo)節(jié)點(diǎn)具有索引為0到MaxLevel-1的MaxLevel個(gè)正向指針。在本發(fā)明的實(shí)施例中,由于前綴范圍的聚合(Clustering)利用,在假定固定前綴范圍是8的時(shí)候要求MaxLevel=5。
在產(chǎn)生一個(gè)首標(biāo)節(jié)點(diǎn)之后,跳轉(zhuǎn)表的變化形式的結(jié)構(gòu)如圖9所示,這是一個(gè)用于說明按照本發(fā)明的實(shí)施例建立跳轉(zhuǎn)表的操作的圖。如果在首標(biāo)節(jié)點(diǎn)中的頂層的指針為空,即如果不存在相鄰的節(jié)點(diǎn),即與首標(biāo)節(jié)點(diǎn)的指針相連的子節(jié)點(diǎn),則層級(jí)降1直到指針指向一個(gè)相鄰的節(jié)點(diǎn)。如圖9所示,建立了具有前綴范圍值32-24的第一節(jié)點(diǎn)(a),并且在首標(biāo)節(jié)點(diǎn)中的層級(jí)0的指針指向第一節(jié)點(diǎn)。此后,依序建立了具有前綴范圍值23-18的第二節(jié)點(diǎn)(b)和具有前綴范圍值17-12的第三節(jié)點(diǎn)(c)。在這個(gè)過程中,建立了多個(gè)節(jié)點(diǎn)以覆蓋每個(gè)前綴長度范圍。
每個(gè)建立的節(jié)點(diǎn)的層級(jí)被利用程序3中所示的隨機(jī)算法在下面按照本發(fā)明隨機(jī)設(shè)置。首先產(chǎn)生屬于(0,1)實(shí)數(shù)的一個(gè)隨機(jī)數(shù)字值。當(dāng)所產(chǎn)生的隨機(jī)實(shí)數(shù)值小于預(yù)設(shè)的基準(zhǔn)概率值(在此基準(zhǔn)概率被設(shè)置為p=1/2,用于生成一個(gè)理想的跳轉(zhuǎn)表)并且要建立的對(duì)應(yīng)節(jié)點(diǎn)的層級(jí)也小于MaxLevel的時(shí)候,對(duì)應(yīng)節(jié)點(diǎn)的層級(jí)被提高。否則,建立具有層級(jí)值0的一個(gè)節(jié)點(diǎn)。
以這種方式,在跳轉(zhuǎn)表中建立具有前綴范圍的節(jié)點(diǎn)后,需要建立一個(gè)包含路由項(xiàng)的路由選擇表。參照?qǐng)D10A,將說明用于建立當(dāng)路由器具有前綴長度為30的路由的時(shí)候的路由選擇表的方法。
參見圖10A,當(dāng)路由器具有前綴長度30的時(shí)候,搜索在跳轉(zhuǎn)表中具有前綴長度范圍32-24的第一節(jié)點(diǎn)220,然后要加入的路由項(xiàng)被以散列表的形式插入。在跳轉(zhuǎn)表中的節(jié)點(diǎn)可以具有范圍從它的前綴長度開始的不同的散列表。按照相同的過程,具有前綴長度15的路由如圖10B所示被加入,其中具有前綴長度15的散列表被建立在具有前綴范圍17-12的節(jié)點(diǎn)240下。
為了扼要重述路由選擇表產(chǎn)生過程,在圖11中描述了整個(gè)的順序,它圖解了按照本發(fā)明的一個(gè)實(shí)施例建立路由選擇表的過程。在步驟11a,建立了具有MaxLevel的一個(gè)首標(biāo)節(jié)點(diǎn)來在跳轉(zhuǎn)表中覆蓋所有節(jié)點(diǎn)。然后在步驟11b,具有固定劃分的前綴范圍的節(jié)點(diǎn)被插入到表中。為了簡化,雖然本發(fā)明提出了前綴范圍的固定劃分,也有可能推測(cè)反映實(shí)際前綴長度分布的自適應(yīng)劃分。其后,在步驟11c,在具有對(duì)應(yīng)前綴范圍的節(jié)點(diǎn)下建立針對(duì)每個(gè)給定路由項(xiàng)的散列表。按照本發(fā)明的新型方案提供從具有最長前綴長度的路由開始的搜索,而不象對(duì)于檢索樹(trie)或樹結(jié)構(gòu)通常的從最短前綴長度開始的搜索。
路由器經(jīng)常從它的連接的路由器接收路由變化。這些變化必須被反射到當(dāng)前的路由選擇(或轉(zhuǎn)發(fā))表中。在新型方案中的更新順序在圖12中被表示。在步驟12a中,對(duì)于在路由選擇表中要反射的給定的改變的路由(前綴),要發(fā)現(xiàn)預(yù)前綴長度匹配的節(jié)點(diǎn)。其后,在步驟12b,搜索對(duì)應(yīng)于與改變的路由的前綴長度相同的前綴長度的散列表。如果在步驟12c找到一個(gè)對(duì)應(yīng)的散列表,則過程進(jìn)行到步驟12d,其中在對(duì)應(yīng)的散列表匯總被發(fā)現(xiàn)的路由被更新或刪除。如果在步驟12c不存在散列表,則下一個(gè)步驟進(jìn)行到12e。如果要加入所述路由,則過程進(jìn)行到步驟12f,其中建立具有與改變的路由的前綴長度相同的前綴長度的散列表。其后,在步驟12g,改變的路由被插入到新建立的散列表中。否則,在步驟12h中,丟棄改變的路由。
圖13和14是說明用于按照本發(fā)明的實(shí)施例搜索和更新路由的過程的圖。
首先,將參照?qǐng)D13說明用于搜索具有前綴長度15的路由的過程。需要尋找具有相同前綴長度(15)的節(jié)點(diǎn)。搜索從首標(biāo)節(jié)點(diǎn)210的頂層(即層級(jí)4)開始(圖13的順序(1))。層級(jí)4的指針指向具有層級(jí)4的下一個(gè)節(jié)點(diǎn),即具有前綴長度范圍(關(guān)鍵字)8-1的節(jié)點(diǎn)260(圖13的順序(2))。其后。選行路由的前綴長度與節(jié)點(diǎn)260的關(guān)鍵字的比較。關(guān)鍵值不匹配并且搜索返回首標(biāo)節(jié)點(diǎn)210的同一層級(jí)(層級(jí)4)(圖13的順序(3))。首標(biāo)節(jié)點(diǎn)210的層級(jí)降1(圖13的順序(4)),并且下一層級(jí)(層級(jí)3)的指針指向具有層級(jí)3的下一個(gè)節(jié)點(diǎn),即具有關(guān)鍵字17-12的節(jié)點(diǎn)240(圖13的順序(5))。當(dāng)在節(jié)點(diǎn)240找到匹配的關(guān)鍵值的時(shí)候(圖13的順序(6)),搜索對(duì)應(yīng)于改變的路由的前綴長度的散列表(圖13的順序(7))。如果存在散列表,則執(zhí)行下一個(gè)中繼(hop)(圖13的順序(8))。如果不存在散列表,則必須建立一個(gè)散列表用于加入一個(gè)新路由。
圖14圖解了幾個(gè)順序,其中具有下一個(gè)中繼接口‘10’的前綴‘111010…1’的路由要從散列表刪除或改變?yōu)榫哂邢乱粋€(gè)中繼‘1’的‘111010…1’。搜索對(duì)應(yīng)的前綴(111010…1)的過程以與圖13所示類似的方式執(zhí)行。
現(xiàn)在,參照?qǐng)D15和16詳細(xì)說明用于從路由選擇表搜索特定目的IP地址的路由的一個(gè)路由查找過程。
圖15和16圖解了按照本發(fā)明的實(shí)施例的定義為最長前綴匹配方案的一個(gè)路由查找過程?;谧铋L前綴匹配方案的搜索意味著路由項(xiàng)必須與最長前綴,如在IPv4中的前綴長度32相比較。圖16是說明按照本發(fā)明的實(shí)施例的整體查找方案的圖,其中目的地址具有‘111010…1’的前綴長度15。
在圖15的步驟15a中,對(duì)于一個(gè)給定的封裝在IP首標(biāo)中的目的地址,尋找在跳轉(zhuǎn)表中的第一節(jié)點(diǎn),因此由目的地址給定的路由查找從首標(biāo)節(jié)點(diǎn)210的層級(jí)4開始(圖16的順序(1)),并且在首標(biāo)節(jié)點(diǎn)210中的層級(jí)向?qū)蛹?jí)0降1(圖16的順序(2)),層級(jí)0具有指向第一節(jié)點(diǎn)220的指針(圖16的順序(3))。
然后,在步驟15b搜索第一節(jié)點(diǎn)220的散列表,從前綴長度范圍的在上的關(guān)鍵值開始,如32(當(dāng)前的前綴長度)。如果不存在一個(gè)散列表,則過程進(jìn)行到步驟15g。否則,如果在步驟15c存在一個(gè)散列表,則過程進(jìn)行到步驟15d。在步驟15d,在找到的散列表中搜索對(duì)應(yīng)于目的地址的前綴。如果在步驟15e一個(gè)找到的前綴被確定與目的地址匹配,則在步驟15f匹配的前綴被返回作為最長前綴。同時(shí),如果在步驟15e前綴不匹配,則過程進(jìn)行到步驟15g。
在步驟15g,該過程尋找在同一前綴范圍中的下一個(gè)散列表。如果在步驟15h下一個(gè)散列表存在,則過程返回步驟15b以重復(fù)上述處理。如果在步驟15h下一個(gè)散列表不存在,則過程進(jìn)行到步驟15I,在此它移向在跳轉(zhuǎn)表中的相鄰的節(jié)點(diǎn),然后返回步驟15b以在相鄰節(jié)點(diǎn)重復(fù)上述處理。如上所述,不象從根節(jié)點(diǎn)開始的傳統(tǒng)搜索方案一樣,新型方案是基于從具有它自己的散列表的最長前綴范圍開始的搜索的。
再次參見圖16,首先,如前所述在跳轉(zhuǎn)表中搜索一個(gè)節(jié)點(diǎn)并且由目的地址給定的路由查找從首標(biāo)節(jié)點(diǎn)開始(圖16的順序(1))。在首標(biāo)節(jié)點(diǎn)210中的層級(jí)下降到層級(jí)0(圖16的順序(2)),在此指針指向具有最長前綴范圍的節(jié)點(diǎn),然后由首標(biāo)節(jié)點(diǎn)210的指針?biāo)傅牡谝还?jié)點(diǎn)220被穿過(圖16的順序(3))。其后,搜索第一節(jié)點(diǎn)220以找到包含長度為32的前綴的散列表。如果找到對(duì)應(yīng)的散列表,則將目的地址與在散列表中的前綴比較以尋找匹配。如果在第一節(jié)點(diǎn)未找到包含長度為32的前綴的散列表。由于在跳轉(zhuǎn)表中的每個(gè)節(jié)點(diǎn)保留著指向在節(jié)點(diǎn)前綴范圍中的每個(gè)散列表的指針組,因此如果不存在包含長度為32的前綴的散列表,則對(duì)應(yīng)的指針將是空的。
在圖16的示例中,第一節(jié)點(diǎn)220僅僅具有兩個(gè)散列表222和224,分別對(duì)應(yīng)于前綴長度30和前綴長度26。因此,當(dāng)搜索第一節(jié)點(diǎn)220以尋找散列表的時(shí)候,在前綴范圍中的每個(gè)指針被檢查,并且具有空值的指針被跳過。對(duì)應(yīng)于不具有空值的指針的散列表將與原始目的地址比較以尋找匹配。
因此,不具有空值的第一個(gè)指針將指向散列表222并且目的地址被與在散列表222中的前綴相比較(圖16的順序(4))。如果在散列表222中沒有找到目的地址,則將下一個(gè)具有非空指針的散列表,即具有前綴長度26的散列表224,與目的地址相比較(圖16的順序(5))。如果沒有找到目的地址,并且在第一節(jié)點(diǎn)220中沒有更多的散列表,則對(duì)于節(jié)點(diǎn)220查找失敗。
當(dāng)在節(jié)點(diǎn)220查找失敗的時(shí)候,搜索指向在具有下一個(gè)最長前綴范圍的跳轉(zhuǎn)表中的下一個(gè)節(jié)點(diǎn)的指針。在這個(gè)示例中,有一個(gè)指針指示具有下一個(gè)最長前綴范圍的跳轉(zhuǎn)表中的下一個(gè)節(jié)點(diǎn)是節(jié)點(diǎn)230(圖16的順序(6))。因此,檢查節(jié)點(diǎn)230以查看是否它具有任何散列表,并且因?yàn)闆]有,因此搜索在節(jié)點(diǎn)230中指向在跳轉(zhuǎn)表中的下一個(gè)節(jié)點(diǎn)的指針。
在這種情況下,它移向在跳轉(zhuǎn)表中的一個(gè)相鄰的節(jié)點(diǎn)240(圖16的順序(7)),并且按照?qǐng)D15的步驟找到指向散列表242的指針。目的地址被與具有前綴長度15的散列表242中的前綴比較(圖16的順序(8))。當(dāng)匹配發(fā)生時(shí),隨后路由查找操作成功終止(圖16的順序(9))。如果即使在最后一個(gè)節(jié)點(diǎn)260的最后一個(gè)散列表中頁不能找到目的地址,則查找失敗并且具有對(duì)應(yīng)地址的分組被發(fā)送到具有默認(rèn)路由項(xiàng)的路由。
跳轉(zhuǎn)表的建立被表示在程序1、2和3中;向跳轉(zhuǎn)表反射路由項(xiàng)的變化頁被示出在程序4、5、6和7中;并且在程序8中示出了新型算法的一個(gè)必要部分,路由查找。
程序1建立操作var pxbitstring init b’0’;(*前綴*)interfaceinteger init 0;(*下一個(gè)中繼接口*)Winteger init 32;(*地址比特的#,IPv4*)kinteger init 8;(*固定的前綴范圍,例如8或從0至W*的可變前綴范圍*)hrangeinteger init W;(*前綴范圍的上邊界*)lrangeinteger init W-k+1;(*1前綴范圍的下邊界e*)MaxLevelinteger init[lg(W/k)];(*假設(shè)p=1/2(其中p確定是否以多個(gè)層級(jí)建立節(jié)點(diǎn)的可能性的概率)*)Buildup(list)(*建立跳轉(zhuǎn)表*)<pre listing-type="program-listing"> begin L=[W/k](*L是等于W/k的最高限的整數(shù)并且與要產(chǎn)生的節(jié)點(diǎn)數(shù)密 切相關(guān)*); while L≥0 do Insert_Node(list,hrange,lrange); L=L-1 hrange=lrang-1; lrang=hrang-k+1; end while end</pre>程序2在跳轉(zhuǎn)表中插入一個(gè)節(jié)點(diǎn)Insert-Node(list,hrange,Irange)(*插入節(jié)點(diǎn)*)beginupdate
;x=list→headerfor i=list→level downto 0 dnwhile[hrange,lrange] x→forward[i]→key dox=x→forward[i]end whileupdate[i]=x;end forx=x→forward
if[hrange,lrang]∈x→key then
x→value=[hrange,lrang]elsev=RandomLevel()if v>list→level thenfor i=list→level+1 to v doupdate[i]=list→headerend forlist→level=v;end ifx=MakeNode(v,[hrange,lrang])for i=0 to level dox→forward[i]=update[i]→forward[i];update[i]→forward[i]=x;end forend ifend程序3隨機(jī)化層級(jí)<pre listing-type="program-listing">RandomLevel()(*隨機(jī)判定節(jié)點(diǎn)層級(jí)*) begin v=0; r=Random();(*r ∈
→key dox=x→forward[i];end whileend forx =x→forward
;if x→key=px thenfor j=hrange downto lrange-1 doif hash-get(j,px);return hash-get(j,px);end ifend forreturn errorend ifend程序5插入操作<pre listing-type="program-listing">Insert(list,pretix,interface)(*插入路由項(xiàng)*) begin if hash-insert(list,pretix,interface)then else return errorend if end<br/></pre>程序6刪除操作<pre listing-type="program-listing">Delete(list,pretix,interface)(*刪除路由項(xiàng)*) begin if search(list,pretix)then hash-delete(pretix,interface);<!-- SIPO <DP n="18"> --><dp n="d18"/> else return error end if end</pre>程序7更新路由項(xiàng)<pre listing-type="program-listing">Update(list,prefix,interface)(*更新路由項(xiàng)*) begin if search(list,prefix)then hash-delete(prefix,interface); else return error end if end</pre>程序8查找操作<pre listing-type="program-listing">Lookup(list,destaddr)(*查找具有最長前綴的路由*) begin x=list→header; x=x→forward
; for i=[W/k]downto 0 do for j=hrange downto lrange-1 do if compare(destaddr,hash-get(j,destaddr))then return hash-get(j,destaddr); end if end for x=x→forward[i]; end for return error; end</pre>
在九十年代早期,IETF(因特網(wǎng)工程任務(wù)組)工作組引入了一種稱為CIDR(無級(jí)域間路由選擇)的新的IP尋址方案來有效地在IPv4(IP版本4)中使用IP地址。請(qǐng)參見RFC(征求意見文件網(wǎng)絡(luò)工作組)1518,《利用CIDR的IP地址分配的結(jié)構(gòu)(An Architecture for IP Address Allocation with CIDR)》,1993年9月;以及RFC 1517,《無級(jí)域間路由選擇(CIDR)實(shí)現(xiàn)的可應(yīng)用性報(bào)告(Applicability Statement for the Implementation of Classless Inter-DomainRouting(CIDR))》,1993年9月。
在這種情況下,為了在具有各種前綴長度的分組中獲得一個(gè)前綴和尋找與最長的前綴匹配的IP地址,已經(jīng)廣泛使用了一種基于檢索樹(trie)或Patricia(檢索編碼為字母數(shù)字的信息的使用算法)檢索樹(trie)數(shù)據(jù)結(jié)構(gòu)的LPM(最長前綴匹配)算法。請(qǐng)參見Doeringer,W.、Karjoth,G.和Nassehi,M.的《最長匹配前綴的路由選擇(Routing on Longest-Matching Prefixes)》,IEEE/美國計(jì)算機(jī)學(xué)會(huì)聯(lián)網(wǎng)技術(shù)學(xué)報(bào),第4卷,第1號(hào),86-97頁,1996年2月。
下面參照表1詳細(xì)說明LPM算法。表1示出了包含在路由選擇(或轉(zhuǎn)發(fā))表中的路由項(xiàng)(routing entry)的一個(gè)簡單示例。星號(hào)允許給任何數(shù)填充‘0’或‘1’,盡管在IPv4的情況下前綴本身不能超過32。例如,‘0*’可以指‘01*’‘011*’或‘010*’而不管其余的比特串是什么。
表1
在表2中,為了避免與其他底數(shù)為10的對(duì)數(shù)混淆,lg表示底數(shù)為2的對(duì)數(shù)。
在IPv4的情況下,W對(duì)應(yīng)于32,對(duì)于IPv6為128。在MAE-EAST和PAIX NAP中,路由項(xiàng)的數(shù)量N分別是大約50,000和6,000。在這種情況下,如果前綴范圍等于8,則在具有k個(gè)散列的節(jié)點(diǎn)的跳轉(zhuǎn)表中的k是4。對(duì)于IPv6的情況是16。
新型算法比傳統(tǒng)的搜索樹和檢索樹(trie)(Patricia檢索樹(trie)或LC檢索樹(trie))在路由選擇表建立上、插入和刪除操作上要好。而且,按照本發(fā)明的新型算法比二進(jìn)制散列表搜索(Waldvogel,M.、Varghese,G.、Turner,J.和Plattner,B.的《可擴(kuò)展高速IP路由選擇查找(Scalable High Speed IP Routing Lookups)》,美國計(jì)算機(jī)學(xué)會(huì)SIGCOMM’97會(huì)刊,戛納,法國,25-37頁,1997)和完整前綴檢索樹(trie)(Tzeng,G.和Pryzygienda,T.的《關(guān)于快速地址查找算法(On FastAddress-Lookup Algorithms)》,IEEE通信中的選擇區(qū)域期刊,第17卷,第6號(hào),1067-1082頁,1999年6月)在建立時(shí)間和插入或刪除操作上要好。另外,從表2可以注意到復(fù)雜程度結(jié)果指示新型算法勝過一個(gè)純粹的跳轉(zhuǎn)表。
如上所述,按照本發(fā)明的算法按照IP地址的前綴范圍利用跳轉(zhuǎn)表和散列表來建立節(jié)點(diǎn),這構(gòu)成了隨機(jī)算法。而且,本發(fā)明提供了利用跳轉(zhuǎn)表的路由選擇方法,其中路由項(xiàng)被按照在每個(gè)節(jié)點(diǎn)設(shè)置的前綴長度以散列表形式存儲(chǔ),因此最小化了路由查找時(shí)間和有效地管理相關(guān)的表。通過這樣做,有可能執(zhí)行高速路由查找。這個(gè)算法也可以被應(yīng)用到IPv6,將用于未來的路由器。
另外,從復(fù)雜程度分析結(jié)果可以注意到,新型算法在各個(gè)方面比其他傳統(tǒng)算法優(yōu)越,尤其是在路由選擇(或轉(zhuǎn)發(fā))表的建立、插入和刪除操作上。而且,在諸如分布路由器結(jié)構(gòu)或平行路由器結(jié)構(gòu)的當(dāng)代結(jié)構(gòu)——其中在轉(zhuǎn)發(fā)引擎中的轉(zhuǎn)發(fā)表仍然與在路由選擇處理器中的一個(gè)路由選擇表分離——的當(dāng)前趨勢(shì)中,通過沿著路徑僅僅發(fā)送更新的路由到路由器而不是所有的路由項(xiàng),可以緩解存儲(chǔ)器帶寬或系統(tǒng)總線的爭用。另外,查找時(shí)間的降低和在所有路由選擇相關(guān)的表中的一致的路由選擇信息的保持可以有益于在諸如QoS(服務(wù)質(zhì)量)、多信道廣播、IPSec和其他的其他因素上的性能增進(jìn)。
雖然已經(jīng)參照特定的實(shí)施例說明和圖解了本發(fā)明,本領(lǐng)域的技術(shù)人員可以理解,在不脫離所附的權(quán)利要求所限定的精神和范圍的情況下可以作出各種形式和細(xì)節(jié)上的改變。
權(quán)利要求
1.一種用于利用跳轉(zhuǎn)表來建立用于一個(gè)IP(互聯(lián)網(wǎng)協(xié)議)地址查找的路由選擇/轉(zhuǎn)發(fā)表的方法,包括步驟以預(yù)設(shè)的方法劃分一個(gè)IP地址的前綴長度范圍;根據(jù)劃分為前綴長度范圍的數(shù)個(gè)組(cluster)建立具有最大層級(jí)的首標(biāo)節(jié)點(diǎn),所述首標(biāo)節(jié)點(diǎn)指向在所述跳轉(zhuǎn)表中的每個(gè)節(jié)點(diǎn);以及按照被劃分的組的數(shù)量來建立子節(jié)點(diǎn),每個(gè)子節(jié)點(diǎn)具有被劃分的前綴長度范圍作為關(guān)鍵字。
2.如權(quán)利要求1所述的方法,還包括步驟在按照在每個(gè)子節(jié)點(diǎn)中的前綴長度提供的散列表中存儲(chǔ)對(duì)應(yīng)于在對(duì)應(yīng)的前綴長度范圍中的各個(gè)前綴長度的路由項(xiàng)。
3.如權(quán)利要求2所述的方法,其中路由項(xiàng)包括32比特或128比特。
4.如權(quán)利要求1所述的方法,其中子節(jié)點(diǎn)的首標(biāo)節(jié)點(diǎn)的層級(jí)被隨機(jī)設(shè)置。
5.如權(quán)利要求1所述的方法,其中前綴長度范圍被固定地或可變地劃分。
6.如權(quán)利要求1所述的方法,前綴長度范圍被劃分成通過子節(jié)點(diǎn)覆蓋每個(gè)前綴長度范圍。
7.如權(quán)利要求1所述的方法,其中路由選擇/轉(zhuǎn)發(fā)表被分別包括在一路由選擇處理器和一轉(zhuǎn)發(fā)引擎中。
8.一種用于利用跳轉(zhuǎn)表建立IP路由選擇/轉(zhuǎn)發(fā)表的方法,包括步驟建立一個(gè)首標(biāo)節(jié)點(diǎn),用于指向每個(gè)節(jié)點(diǎn)以處理在跳轉(zhuǎn)表中的每個(gè)節(jié)點(diǎn);建立具有以預(yù)設(shè)方法劃分的IP地址的前綴范圍作為關(guān)鍵字的多個(gè)子節(jié)點(diǎn);和按照前綴長度建立散列表,來按照在每個(gè)子節(jié)點(diǎn)中的對(duì)應(yīng)前綴長度范圍中的前綴長度來存儲(chǔ)路由項(xiàng)。
9.如權(quán)利要求8所述的方法,還包括步驟在散列表中存儲(chǔ)與對(duì)應(yīng)前綴相匹配的路由項(xiàng)。
10.如權(quán)利要求8所述的方法,其中隨機(jī)設(shè)置子節(jié)點(diǎn)的首標(biāo)節(jié)點(diǎn)的層級(jí)。
11.如權(quán)利要求8所述的方法,其中前綴長度范圍固定地或可變地劃分。
12.如權(quán)利要求8所述的方法,其中前綴長度范圍被劃分成應(yīng)通過多個(gè)子節(jié)點(diǎn)覆蓋每個(gè)前綴長度范圍。
13.如權(quán)利要求8所述的方法,其中路由項(xiàng)由32或128比特組成。
14.如權(quán)利要求8所述的方法,其中首標(biāo)節(jié)點(diǎn)具有+∞關(guān)鍵值和索引為0到最大層級(jí)減一的正向指針。
15.如權(quán)利要求8所述的方法,其中路由選擇/轉(zhuǎn)發(fā)表被分別包括在路由選擇處理器和轉(zhuǎn)發(fā)引擎中。
16.一種用于利用跳轉(zhuǎn)表來搜索路由選擇/轉(zhuǎn)發(fā)表的方法,其中根據(jù)在每個(gè)按照一個(gè)IP地址的前綴長度范圍的分配建立的節(jié)點(diǎn)中設(shè)置的前綴長度來以散列表的形式存儲(chǔ)路由項(xiàng),所述方法包括步驟尋找一個(gè)節(jié)點(diǎn),其中設(shè)置了對(duì)應(yīng)于要搜索的路由的前綴長度的前綴范圍;尋找一個(gè)散列表,它具有與在找到的節(jié)點(diǎn)中要搜索的路由相同的前綴長度;以及從找到的散列表中找到搜索的路由。
17.如權(quán)利要求16所述的方法,其中節(jié)點(diǎn)尋找步驟包括步驟尋找一個(gè)節(jié)點(diǎn),用于從跳轉(zhuǎn)表的首標(biāo)節(jié)點(diǎn)的最大層級(jí)指向;比較所找到的節(jié)點(diǎn)的前綴長度范圍與所搜索的路由的前綴長度;和當(dāng)所搜索的路由的前綴長度不對(duì)應(yīng)于所找到的節(jié)點(diǎn)的前綴長度范圍的時(shí)候,尋找在首標(biāo)節(jié)點(diǎn)的下一個(gè)層級(jí)被指向的一個(gè)節(jié)點(diǎn)。
18.如權(quán)利要求16所述的方法,其中跳轉(zhuǎn)表包括一個(gè)首標(biāo)節(jié)點(diǎn)和每個(gè)具有以降序預(yù)設(shè)的范圍內(nèi)的關(guān)鍵字并在與各個(gè)前綴長度相關(guān)的散列表中存儲(chǔ)對(duì)應(yīng)于各個(gè)前綴長度的路由項(xiàng)的多個(gè)節(jié)點(diǎn)。
19.如權(quán)利要求16所述的方法,其中路由選擇/轉(zhuǎn)發(fā)表被分別包括在一個(gè)路由選擇處理器和一個(gè)轉(zhuǎn)發(fā)引擎中。
20.如權(quán)利要求16所述的方法,其中路由項(xiàng)由32比特或128比特構(gòu)成。
21.一種用于利用跳轉(zhuǎn)表來更新路由選擇/轉(zhuǎn)發(fā)表的方法,其中根據(jù)在每個(gè)按照一個(gè)IP地址的前綴長度范圍產(chǎn)生的節(jié)點(diǎn)中設(shè)置的前綴長度來以散列表的形式存儲(chǔ)路由項(xiàng),所述方法包括步驟尋找一個(gè)節(jié)點(diǎn),其中設(shè)置了對(duì)應(yīng)于要更新的路由的前綴長度的前綴范圍;搜索一個(gè)散列表,它具有與在找到的節(jié)點(diǎn)中要更新的路由相同的前綴長度;以及當(dāng)找到散列表的時(shí)候更新在散列表中的對(duì)應(yīng)的路由。
22.如權(quán)利要求21所述的方法,其中節(jié)點(diǎn)尋找步驟包括步驟尋找一個(gè)節(jié)點(diǎn),用于從跳轉(zhuǎn)表的首標(biāo)節(jié)點(diǎn)的最大層級(jí)指向;比較所找到的節(jié)點(diǎn)的前綴長度范圍與要更新的路由的前綴長度;和當(dāng)要更新的路由不對(duì)應(yīng)于所找到的節(jié)點(diǎn)的前綴長度范圍的時(shí)候,尋找在首標(biāo)節(jié)點(diǎn)的下一個(gè)層級(jí)被指向的一個(gè)節(jié)點(diǎn)。
23.如權(quán)利要求21所述的方法,其中路由更新步驟包括步驟加入、改變或刪除要更新的路由。
24.如權(quán)利要求21所述的方法,還包括步驟當(dāng)沒有找到散列表的時(shí)候,建立具有與要更新的路由相同前綴的散列表;知在建立的散列表中插入要更新的路由。
25.如權(quán)利要求21所述的方法,其中跳轉(zhuǎn)表包括一個(gè)首標(biāo)節(jié)點(diǎn)和每個(gè)具有以降序預(yù)設(shè)的范圍內(nèi)的關(guān)鍵字并在與各個(gè)前綴長度相關(guān)的散列表中存儲(chǔ)對(duì)應(yīng)于各個(gè)前綴長度的路由項(xiàng)的多個(gè)節(jié)點(diǎn)。
26.如權(quán)利要求21所述的方法,其中路由選擇/轉(zhuǎn)發(fā)表被分別包括在一個(gè)路由選擇處理器和一個(gè)轉(zhuǎn)發(fā)引擎中。
27.如權(quán)利要求21所述的方法,其中路由項(xiàng)由32比特或128比特構(gòu)成。
28.一種利用跳轉(zhuǎn)表的路由選擇/轉(zhuǎn)發(fā)表的路由查找的方法,其中根據(jù)在每個(gè)按照一個(gè)IP地址的前綴范圍的分配產(chǎn)生的節(jié)點(diǎn)中預(yù)設(shè)的前綴長度來以散列表的形式存儲(chǔ)路由項(xiàng),所述方法包括步驟尋找從跳轉(zhuǎn)表的第一節(jié)點(diǎn)開始的相鄰節(jié)點(diǎn);比較一個(gè)目的地址與在對(duì)應(yīng)節(jié)點(diǎn)的各個(gè)散列表;當(dāng)散列表包括目的地址的時(shí)候?qū)⑵ヅ涞那熬Y當(dāng)作最長的前綴。
29.如權(quán)利要求28所述的路由查找方法,還包括步驟當(dāng)散列表不包括目的IP地址的時(shí)候?qū)ふ以谏⒘斜碇械南乱粋€(gè)節(jié)點(diǎn)。
30.如權(quán)利要求28所述的路由查找方法,其中跳轉(zhuǎn)表包括一個(gè)首標(biāo)節(jié)點(diǎn)和每個(gè)具有以降序預(yù)設(shè)的范圍的關(guān)鍵字并在與各個(gè)前綴長度相關(guān)的散列表中存儲(chǔ)對(duì)應(yīng)于各個(gè)前綴長度的路由項(xiàng)的多個(gè)節(jié)點(diǎn)。
31.如權(quán)利要求28所述的路由查找方法,其中比較步驟包括步驟比較目的地址與在對(duì)應(yīng)節(jié)點(diǎn)的散列表中的具有最長前綴長度的散列表;和當(dāng)在具有最長前綴長度的散列表匯總沒有找到目的地址的時(shí)候,比較具有下一個(gè)最長前綴長度的散列表與目的地址。
32.如權(quán)利要求28所述的路由查找方法,其中路由選擇/轉(zhuǎn)發(fā)查找表被分別包括在一個(gè)路由選擇處理器和一個(gè)轉(zhuǎn)發(fā)引擎中。
33.如權(quán)利要求28所述的路由查找方法,其中路由項(xiàng)由32比特或128比特構(gòu)成。
34.一種高速IP路由器,包括多個(gè)線路卡模塊,每個(gè)配置了一個(gè)轉(zhuǎn)發(fā)引擎,通過它輸入和輸出分組。一交換結(jié)構(gòu),用于在內(nèi)部端口之間交換分組;和一路由選擇處理器,包括一個(gè)具有跳轉(zhuǎn)表結(jié)構(gòu)的路由選擇表,所述跳轉(zhuǎn)表結(jié)構(gòu)包括一個(gè)首標(biāo)節(jié)點(diǎn)和每個(gè)按照一個(gè)IP地址的前綴范圍而被建立、具有前綴長度范圍作為關(guān)鍵字和按照設(shè)置的前綴長度以散列表的形式存儲(chǔ)路由項(xiàng)的多個(gè)節(jié)點(diǎn)。
35.一種高速IP路由器,包括多個(gè)線路卡模塊,每個(gè)配置了具有跳轉(zhuǎn)表結(jié)構(gòu)的一個(gè)轉(zhuǎn)發(fā)引擎,所述跳轉(zhuǎn)表結(jié)構(gòu)包括一個(gè)首標(biāo)節(jié)點(diǎn)和每個(gè)按照一個(gè)IP地址的前綴范圍而被建立、具有前綴長度范圍作為關(guān)鍵字和按照設(shè)置的前綴長度以散列表的形式存儲(chǔ)路由項(xiàng)的多個(gè)節(jié)點(diǎn);一交換結(jié)構(gòu),用于在內(nèi)部端口之間交換分組;和一路由選擇處理器,用于控制整體的路由選擇操作。
36.如權(quán)利要求35所述的高速IP路由器,其中路由選擇處理器包括一個(gè)一個(gè)具有跳轉(zhuǎn)表結(jié)構(gòu)的路由選擇表,所述跳轉(zhuǎn)表結(jié)構(gòu)包括一個(gè)首標(biāo)節(jié)點(diǎn)和每個(gè)按照一個(gè)IP地址的前綴范圍而被建立、具有前綴長度范圍作為關(guān)鍵字和按照設(shè)置的前綴長度以散列表的形式存儲(chǔ)路由項(xiàng)的多個(gè)節(jié)點(diǎn)。
全文摘要
一種用于利用跳轉(zhuǎn)表來建立用于一個(gè)IP地址查找的路由選擇/轉(zhuǎn)發(fā)表的方法。所述方法以預(yù)設(shè)的方法劃分一個(gè)IP地址的前綴長度范圍;根據(jù)劃分為前綴長度范圍的數(shù)個(gè)組建立具有最大層級(jí)的首標(biāo)節(jié)點(diǎn),所述首標(biāo)節(jié)點(diǎn)指向在所述跳轉(zhuǎn)表中的每個(gè)節(jié)點(diǎn);以及按照被劃分的組的數(shù)量來建立子節(jié)點(diǎn),每個(gè)子節(jié)點(diǎn)具有被劃分的前綴長度范圍作為關(guān)鍵字。
文檔編號(hào)H04L29/06GK1404591SQ01805497
公開日2003年3月19日 申請(qǐng)日期2001年12月21日 優(yōu)先權(quán)日2000年12月22日
發(fā)明者崔明壽 申請(qǐng)人:三星電子株式會(huì)社