專利名稱:一種使用分段壓縮表實現(xiàn)最長前綴地址路由查找的方法
技術領域:
本發(fā)明涉及數(shù)據(jù)通信技術領域。特別是一種使用分段、壓縮技術實現(xiàn)IPv4最長前綴地址路由查找的方法。該方法可以使用于IPv4因特網(wǎng)中路由器、三層交換機、接入服務器等需要進行IPv4地址路由查找的設備。
背景技術:
路由查找是路由器、三層交換機等設備的基本功能之一。IP地址由<網(wǎng)絡標識,主機標識>組成,IP分組的轉發(fā)按照網(wǎng)絡標識進行。早期,IP地址根據(jù)網(wǎng)絡標識長度固定在8、16、24位,分別對應于A、B、C類地址。無類域間路由技術(CIDR)允許任意長度地址聚合,使得IP地址的網(wǎng)絡標識長度不再僅限于8位、16位和24位三種,而是可以為8~32的任何值。路由表中路由信息由<地址前綴/前綴長度,下一跳地址(索引)>給出。進行IPv4地址查找時,原有的完全匹配被最長前綴匹配(LPM)所替代,即需要在路由前綴數(shù)據(jù)庫中查找與給定IP分組目的地址有著最長匹配前綴的表項。
由于最長前綴匹配查找較為復雜,使得處理器負擔大大加重;加上網(wǎng)絡對路由器轉發(fā)速度要求的不斷提高,路由查找成為影響路由器性能的主要瓶頸之一。
評價一種IP地址查找方法的性能時,必須綜合考慮該本方法所能達到的查找速度(一般以每秒所能進行的分組查找數(shù)目(pps)衡量)、存儲一定路由表項需要的存儲器容量、查找表的更新開銷、復雜度、以及實現(xiàn)方法的難易程度、功耗、面積等各方面,其中,查找方法的查找速度、更新開銷和存儲器容量更為重要。
如何提高IP地址查找方法的查找速度、降低更新開銷和存儲器容量,達到各方面性能的均衡成為了一些業(yè)內人士的研究方向,他們提出了眾多不同查找方法。
發(fā)明內容
本發(fā)明的目的是提供一種實現(xiàn)IPv4最長前綴地址路由查找的方法。該方法擁有高速的IPv4最長前綴地址路由查找能力與轉發(fā)表更新能力,同時需要較少的存儲空間。
本發(fā)明的目的是這樣實現(xiàn)的一種使用分段壓縮表實現(xiàn)最長前綴地址路由查找的方法,其特征在于選定壓縮偏移表路由基準索引字段位寬和壓縮偏移表指針字段位寬,在存儲器中通過建立兩級表格64K段表(Segment Table)和壓縮偏移表(Compressed Offset Table),通過將壓縮偏移表中原偏移表路由索引值壓縮成該索引值與本段基準路由索引差值的方法來存儲路由索引信息。查找時,先使用欲查找的目標IPv4地址的高16位(IPH16)作為索引值,在64K段表中定位表項判斷該表項中壓縮偏移表指針值(pOffetTable)是否無效(全1值)。若指針值無效,表示此表項中段路由索引(NHseg)為該目標IPv4地址所對應下一跳路由索引值(NHI);若否,則根據(jù)此表項中壓縮偏移表指針值得到該IPv4地址對應壓縮偏移表的入口地址,由段路由索引字段(NHseg)值得到當前下一跳路由索引值(NHIcurrent)。使用公式1計算出該壓縮偏移表表項寬度EntryWidth,使用該IPv4地址的低16位(IPL16)和壓縮偏移表表項寬度通過公式2計算出此IPv4地址在壓縮偏移表中的字偏移量(Offsetword)、通過公式3計算出此IPv4地址在該字中的比特偏移量(Offsetbit),計算出壓縮偏移表路由基準值(BaseIndex),訪問此IPv4地址對應壓縮偏移表中的字偏移量字,得到比特寬度為EntryWidth的下一跳路由索引偏移量(OffsetNH)。判斷下一跳路由索引偏移量值是否為全1值(2EntryWidth-1)?若是,表示此IPv4地址對應下一跳路由索引(NHI)即等于當前一跳索引值(NHIcurrent);若否,通過公式4計算得到該IPv4地址的下一跳路由索引值(NHI)。
公式1EntryWidth=2widthIndex公式2Offsetword=Int((EntryWidth×IPL16)/Widthword)公式3Offsetbit=((EntryWidth×IPL16))-(Offsetword×Widthword)公式4NHI=BaseValue+OffsetNH
其中Widthword為壓縮偏移表所在存儲器的位寬Int表示取整BaseValue為根據(jù)路由基準索引值(BaseIndex)得到的路由索引基準值。
上文所述的64K段表中,每條表項由段路由索引(NHseg)、壓縮偏移表指針(pOffetTable)、路由基準索引(BaseIndex)和壓縮表表項寬度索引(WidthIndex)四個字段組成。見圖1說明。
段路由索引字段位寬為8比特,存儲在表項的最高有效位置,初始化為0xFF,表示無有效下一跳路由。
壓縮偏移表表項位寬索引字段為2比特,存儲于表項中與壓縮偏移表指針相鄰的高有效位,初始化為全1,即0x3。根據(jù)壓縮偏移表表項位寬索引,可以由公式1計算出壓縮偏移表中每條表項所占比特位數(shù)。
壓縮偏移表指針字段存儲在表項的最低有效位。壓縮偏移表指針字段位寬可以由具體實施方案確定,取值16比特或14比特,初始化為全1值,即分別初始化為0xFFFF(字段位寬為16比特)、0x3FFF(字段位寬為14比特),表示無效,不需要進行進一步查找;查找時,若指針值不等于初始全1值(字段位寬為14比特時為0x3FFF,字段位寬為16比特時為0xFFFF),表示需進行進一步查找,且此指針值為目標IPv4地址對應的壓縮偏移表起始地址。
路由基準索引字段的位寬根據(jù)壓縮偏移表指針字段位寬的不同取相應的長度,存儲在表項中與段路由索引相鄰的低高有效位置。當壓縮偏移表指針字段位寬分別為14、16比特時,路由索引基準字段位寬分別為6比特、8比特。
上文所述的壓縮偏移表中,每條表項由一個位寬為EntryWidth個比特的路由索引差值字段構成,表示路由索引值和段路由索引的差值,見圖2說明。
當路由基準索引(BaseIndex)字段位寬為8比特時,路由基準值(BaseValue)等于路由基準索引字段值;當路由基準索引字段位寬為6比特時,路由基準值由以下公式5給出
公式5BaseValue=4×BaseIndex所述的64K段表每一條表項都是一個32比特的長字,由段路由索引字段(31:24比特)、壓縮偏移表路由索引基準值字段(23:18比特或23:16比特)、壓縮偏移表表項寬度索引字段(17:16比特或15:14比特)和壓縮偏移表指針字段(15:0比特或13:0比特)共四個字段構成。
所述的64K段表,表項的最高8比特(31:24)段路由索引是指向路由表的索引,初始化為0xFF表示默認無有效下一跳路由;若段路由索引等于路由索引初始值時,表示無有效下一跳路由;若段路由索引不等于路由索引初始值,其數(shù)值為IPv4地址對應下一跳路由的索引值。
所述的64K段表,表項的壓縮偏移表路由基準索引值(23:18比特或23:16比特)是壓縮偏移表路由索引值的基準索引值,初始化為0x3F(字段位寬為6比特時)或0xFF(字段位寬為8比特時),僅當同表項中壓縮偏移表指針不為壓縮偏移表指針初始值時有意義;字段位寬為6比特時,壓縮偏移表路由索引基準值等于4倍的壓縮偏移表路由基準索引值;字段位寬為8比特時,壓縮偏移表路由索引基準值等于壓縮偏移表路由基準索引值。
所述的64K段表,表項的壓縮偏移表表項寬度索引(17:16比特或15:14比特)是指明壓縮偏移表表項寬度的索引值,初始化為壓縮偏移表表項寬度索引初始值0x3,僅當同表項中壓縮偏移表指針不為壓縮偏移表指針初始值時有意義。
所述的64K段表,表項的壓縮偏移表指針(15:0比特或13:0比特)是指向本表項所對應壓縮偏移表起始地址的指針,初始化為0xFFFF(字段位寬為16比特時)或0x3FFF(字段寬度為14比特時),若壓縮偏移表指針值等于壓縮偏移表指針初始值,表示本表項不存在對應壓縮偏移表,不需要進行進一步查找;若壓縮偏移表指針值不等于壓縮偏移表指針初始值,表示本表項存在對應壓縮偏移表,需要進行進一步路由查找,且壓縮偏移表指針的值為本表項對應的壓縮偏移表的起始地址。
壓縮偏移表路由基準值表示壓縮偏移表的下一跳路由基準值,壓縮偏移表路由基準值等于4倍的壓縮偏移表路由基準索引值(64K段表中壓縮偏移表路由基準索引字段位寬為6比特時),或壓縮偏移表路由基準值等于壓縮偏移表路由基準索引值(64K段表中壓縮偏移表路由基準索引值字段位寬為8比特時)。
所述的壓縮偏移表每一條表項由路由索引偏移字段構成,表項位寬等于2的壓縮偏移表表項寬度索引值次冪,表示表項對應的下一跳路由索引值與壓縮偏移表路由基準值的差值,初始化為全1值,若壓縮偏移表表項值等于壓縮偏移表表項初始值,表示下一跳路由索引值等于此壓縮偏移表所屬64K段表表項中的段路由索引值;若壓縮偏移表表項的值不等于壓縮偏移表表項初始值,表示下一跳路由索引值等于表項值與壓縮偏移表路由基準值之和。
圖1是本發(fā)明的64K段表表項構成方式一示意圖。
圖2是本發(fā)明的64K段表表項構成方式二示意圖。
圖3是本發(fā)明的壓縮偏移表表項結構示意圖。
圖4是本發(fā)明的實施本方法的操作步驟流程圖。
圖5是本發(fā)明的硬件實施系統(tǒng)結構圖。
該方法的實現(xiàn)分為以下步驟如圖4所示。
(1)選定具體實施方案64K段表表項中壓縮偏移表指針和路由基準索引字段位寬和壓縮偏移表指針字段位寬。
(2)首先對原始路由信息表進行擴展、排序和分組將原始路由記錄中前綴長度小于16比特的路由信息均擴展成前綴長度為16的記錄;將前綴長度大于16比特且小于32比特的路由條目均擴展成長度為32比特的路由前綴,按照前綴的高16比特分組,組內按照路由前綴的長度從小到大排放;路由信息擴展指將原始路由信息中的IP地址前綴從原前綴擴展成指定長度的一組為原地址前綴所包含的一組地址前綴,但擴展后的路由信息中前綴長度的有效值和下一跳索引值不變。例如,將路由項<8.0.0.0/8,25>(前綴/前綴長度,下一跳地址)擴展到16比特后可得到的路由項組為<8.0.0.0/8,25>、<8.1.0.0/8,25>、<8.2.0.0/8,25>…<8.254.0.0/8,25>、<8.255.0.0/8,25>。
按照目標IPv4地址的高16比特分組,組內按照路由前綴的長度從小到大排放。
決定實現(xiàn)方案中壓縮偏移表指針(pOffetTable)和路由基準索引(BaseIndex)兩個字段的比特寬度。
(3)64K段表的初始化操化,構建64K段表將每組路由信息中前綴長度小于等于16比特的信息項按照前綴長度由小到大的順序依次填入64K段表相應表項,構造64K段表。表中每條表項由段路由索引(NHseg)、壓縮偏移表指針(pOffetTable)、路由基準索引(BaseIndex)和壓縮表表項寬度索引(WidthIndex)四個字段組成,其中路由基準索引字段、壓縮偏移表指針字段和壓縮表表項寬度索引字段和段路由索引字段填入初始值(全1)。
64K段表擁有64K條表項,占用的存儲空間為64K×Widthword比特(4)壓縮偏移表的初始化操作,構建64K段表中各表項對應的壓縮偏移表統(tǒng)計出每組路由信息中前綴長度大于16比特的信息所對應下一跳路由索引值中最小值NHmin和最大值NHmax,取其最小值為下一跳路由索引值(BaseValue)。若1中選定的路由基準索引字段為6,則根據(jù)公式6計算出路由準索引值;若1中選定的路由基準索引字段位寬等比8比特,則選取路由基準索引值等于路由基準值。公式6BaseIndex=Int(BaseValue/4)選取壓縮偏移表表項寬度索引值WidthIndex使其同時滿足以下條件WidthIndex=log Entry Width①EntryWidth={min(i)|BaseValue+2i-1>NHmax,i∈N}②申請尺寸為 EntryWidth×64K比特的存儲器空間,將其首地址填入64K段表中壓縮偏移表指針字段。將路由基值索引BaseIndex和壓縮偏移表表項寬度索引值WidthIndex填入64K段表中各自對應字段。
使用全1初始化壓縮偏移表。分別對每組路由中前綴長度大于16的路由信息條目計算路由信息中下一跳路由索引值與路由基準值間的差值,依前綴長度從小到大的順序以位寬EntryWidth填入壓縮偏移表中對應比特范圍。
(5)取目標IPv4地址的高16位作為索引值,在64K段表中定位表項判斷該表項中壓縮偏移表指針值(pOffetTable)是否無效(全1值)。
若壓縮偏移表指針無效,轉入6;若壓縮偏移表指針值有效,轉入7。
(6)判斷表項中段路由索引字段值是否無效(0xFF)?若段路由索引(NHseg)值為0xFF(全1),則該目標IPv4地址無對應有效下一跳路由;若否,則表項中路由索引值即為該目標IPv4地址所對應下一跳路由索引值(NHI)。查找結束(7)根據(jù)此表項中壓縮偏移表指針值得到該IPv4地址對應壓縮偏移表的入口地址、路由基準索引值(BaseIndex)和壓縮表表項寬度索引值(WidthIndex),令當前下一跳路由索引值(NHIcurrent)等于段路由索引(NHseg)。使用公式1計算出該壓縮偏移表表項寬度EntryWidth,使用該IPv4地址的低16位(IPL16)和壓縮偏移表表項寬度通過公式2計算出此IPv4地址在壓縮偏移表中的字偏移量(Offsetword)、通過公式3計算出此IPv4地址在該字中的比特偏移量(Offsetbit),并計算出壓縮偏移表路由基準值。
(8)以偏移量Offsetword訪問此IPv4地址對應壓縮偏移表中的偏移量字,得到比特寬度為EntryWidth的下一跳路由索引值偏移量(OffsetNH)。判斷下一跳路由索引偏移量值是否為2EntryWidth-1。若是,則此IPv4地址對應下一跳路由索引(NHI)即等于當前一跳索引值(NHIcurrent);若否,通過公式4計算出下一跳路由索引值(NHI)。若NHI為全1值,則此IPv4地址無對應下一跳路由;若否,則此IPv4地址對應下一跳路由即為NHI,查找結束。
本發(fā)明方法可以擁有高速的查找能力和更新能力,同時需要較少的存儲空間。本發(fā)明實現(xiàn)IPv4路由查找方法的特點是只需建立兩個結構簡單的轉發(fā)表一段表和壓縮偏移表。表的構造過程操作步驟簡單、且快速、有效。該方法相對于現(xiàn)有的各種分段、壓縮進行IPv4路由查詢方法,具有以下優(yōu)點查找速度相快,僅需要2次存儲器訪問;實施方法所需要的存儲空間較??;更新開銷小。
相對于現(xiàn)有的各種分段、壓縮實現(xiàn)IPv4地址快速查找算法,本方法具有更高的綜合性能,較好的解決了查找速度與更新速度、查找速度與存儲器容量之間的矛盾。一次IPv4地址查找最多需要2次存儲器訪問;二級表的壓縮減少了大量存儲器空間;同時,由于壓縮算法簡單,二級表的壓縮并未增加傳統(tǒng)分段表的更新開銷。64K段表表項結構簡單但信息量豐富,解決了分段算法可能發(fā)生的路由查找回溯現(xiàn)象。
本發(fā)明內容實現(xiàn)起來簡單、容易。需要的存儲容量小,算法簡單、易實現(xiàn),可以由FPGA采用硬件方式實現(xiàn),也可以使用普通PC或接入服務器采用軟件方式實現(xiàn)。本發(fā)明可以應用于三層交換機、路由器和其它需要完成IP網(wǎng)絡路由查找的設備。
具體實施說明在64K段表和壓縮偏移表中,各字段初始化為全1值,表示無效(壓縮偏移表表項寬度字段除處)。查找時,若64K段表中段路由索引字段值為全1,則表示無效路由;64K段表中壓縮偏移表指針字段值為全1,則表示本段不存在壓縮偏移表;壓縮偏移表中若某表項值為全1,表示對應下一跳路由索引值為段路由索引,而不使用公式4計算。
具體實施時,首先根據(jù)實際應用環(huán)境選定壓縮偏移表路由基準索引字段的位寬和壓縮偏移表指針字段的位寬。
查找時,先使用欲查找的目標IPv4地址的高16位(IPH16)作為索引值,在64K段表中定位表項判斷該表項中壓縮偏移表指針值(pOffetTable)是否無效(全1值)。若指針值無效,則此表項中段路由索引(NHseg)即為該目標IPv4地址所對應下一跳路由索引值(NHI);若否,則根據(jù)此表項中壓縮偏移表指針值得到該IPv4地址對應壓縮偏移表的入口地址、路由基準索引值(BaseIndex)和壓縮表表項寬度索引值(WidthIndex),令當前下一跳路由索引值(NHIcurrent)等于段路由索引(NHseg)。計算出該壓縮偏移表表項寬度EntryWidth,使用該IPv4地址的低16位(IPL16)和壓縮偏移表表項寬度計算出此IPv4地址在壓縮偏移表中的字偏移量(Offsetword)、比特偏移量(Offsetbit),訪問此IPv4地址對應壓縮偏移表中的字偏移量字,得到比特寬度為EntryWidth的下一跳路由索引值偏移量(OffsetNH)。判斷下一跳路由索引偏移量值是否為全1值(2EntryWidth-1)。若是,則此IPv4地址對應下一跳路由索引(NHI)即等于當前一跳索引值(NHIcurrent);若否,通過公式4計算得到該IPv4地址的下一跳路由索引值(NHI)。
根據(jù)方法具體實施時所選取64K段表中下一跳路由基準索引字段和壓縮偏移表指針字段位寬的不同,本方法的實施方式可具體分為二種情況下一跳路由基準索引字段寬度為6比特,壓縮偏移表字段位寬為16比特;下一跳路由基準索引字段寬度為8比特,壓縮偏移表指針字段位寬為14比特。
1 64K段表中下一跳路由基準索引字段寬度為6比特64段表中段路由索引字段位寬為8比特、下一跳路由基準索引字段位寬為6比特、壓縮偏移表表項寬度索引字段位寬為2比特、壓縮偏移表指針字段為16比特。各字段定義是
2 64K段表中下一跳路由索引基準字段寬度為8比特64K段表中段路由索引字段位寬為8比特、下一跳路由基準索引字段位寬為8比特、壓縮偏移表項寬度索引字段位寬為2比特、壓縮偏移表指針字段為14比特。壓縮偏移表下一跳路由基準值等于段表中下一跳路由基準索引值。
若具體實施方案選取壓縮偏移表指針字段位寬為16比特,壓縮偏移表基準索引字段為6比特壓縮偏移表指針字段取值范圍為0-65535,去掉一個表示無效指針的數(shù)值65535(0xFFFF)后,此字段仍可以區(qū)分65535個不同壓縮偏移表;同時,壓縮偏移表基準索引字段受位寬限制,取值范圍為0-63,無法完全表示路由索引可能的取值,本方法采用了4倍取值的算法將路由基準索引值擴展成路由基準值。在某些情況下,偏移表的壓縮效率受到一定限制。
若具體實施方案選取壓縮偏移表指針字段位寬為14比特,壓縮偏移表基準索引字段為8比特壓縮偏移表基準索引字段可以表示0-255中任意數(shù)值,偏移表壓縮效率得到提高;壓縮偏移表指針字段取值范轉為0-16383,去掉一個表示無效指針的數(shù)值16383(0x3FFF)后,此字段可區(qū)分的不同壓縮偏移表數(shù)目為16383。
由上文分析可以看出,兩種字段位寬定義組合具有各自的優(yōu)、缺點。在實際實施本方法時,應根據(jù)方法所應用的實際網(wǎng)絡路由情況加以選擇。
64K段表各表項所對應的壓縮偏移表由路由索引偏移字段順序構成,每一表項表示一個路由索引偏移字段。
本發(fā)明可以在普通PC機或服務器上以軟件方式編程實現(xiàn),表構建及最長前綴查找過程由軟件完成,64K段表及壓縮偏移表存儲在計算機內存中。
本發(fā)明也可采用FPGA以硬件方式實現(xiàn),具體實施系統(tǒng)結構圖如圖5所示。表構建和最長前綴查找過程由硬件邏輯單元完成,64K段表和壓縮偏移表存儲在靜態(tài)隨機存取存儲器(SRAM)或動動態(tài)存取存儲器(DRAM)。
權利要求
1.一種最長前綴地址路由查找方法,其特征在于該方法是建立64K段表和壓縮偏移表,查找時,先使用欲查找的目標IPv4地址的高16位作為索引值,在64K段表中定位表項,判斷該表項中壓縮偏移表指針值是否無效,若指針值無效,則此表項中段路由索引即為該目標IPv4地址所對應下一跳路由索引值;若否,根據(jù)此表項中壓縮偏移表指針值得到該IPv4地址對應壓縮偏移表的起始地址、路由基準索引值和壓縮表表項寬度索引值、段路由索引值,計算出該壓縮偏移表表項寬度、壓縮偏移表路由基準值,使用該IPv4地址的低16位和壓縮偏移表表項寬度計算出此IPv4地址在壓縮偏移表中的字偏移量、比特偏移量,訪問此IPv4地址對應壓縮偏移表中的字偏移量字和比特偏移量表項,得到下一跳路由索引值偏移量,判斷下一跳路由索引偏移量值是否為全1值?若是,則此IPv4地址對應下一跳路由索引即等于當前一跳索引值;若否,通過公式計算得到該IPv4地址的下一跳路由索引值。
2.根據(jù)權利要求1所述的最長前綴地址路由查找方法,其特征在于所述的64K段表每一條表項都是一個32比特的長字,由段路由索引字段(31:24比特)、壓縮偏移表路由索引基準值字段(23:18比特或23:16比特)、壓縮偏移表表項寬度索引字段(17:16比特或15:14比特)和壓縮偏移表指針字段(15:0比特或13:0比特)共四個字段構成。
3.根據(jù)權利要求2所述的最長前綴地址路由查找方法,其特征在于所述的64K段表,表項的最高8比特(31:24)段路由索引是指向路由表的索引,初始化為0xFF表示默認無有效下一跳路由;若段路由索引等于路由索引初始值時,表示無有效下一跳路由;若段路由索引不等于路由索引初始值,其數(shù)值為IPv4地址對應下一跳路由的索引值。
4.根據(jù)權利要求2所述的最長前綴地址路由查找方法,其特征在于所述的64K段表,表項的壓縮偏移表路由基準索引值(23:18比特或23:16比特)是壓縮偏移表路由索引值的基準索引值,初始化為0x3F(字段位寬為6比特時)或0xFF(字段位寬為8比特時),僅當同表項中壓縮偏移表指針不為壓縮偏移表指針初始值時有意義;字段位寬為6比特時,壓縮偏移表路由索引基準值等于4倍的壓縮偏移表路由基準索引值;字段位寬為8比特時,壓縮偏移表路由索引基準值等于壓縮偏移表路由基準索引值。
5.根據(jù)權利要求2所述的最長前綴地址路由查找方法,其特征在于所述的64K段表,表項的壓縮偏移表表項寬度索引(17:16比特或15:14比特)是指明壓縮偏移表表項寬度的索引值,初始化為壓縮偏移表表項寬度索引初始值0x3,僅當同表項中壓縮偏移表指針不為壓縮偏移表指針初始值時有意義。
6.根據(jù)權利要求2所述的最長前綴地址路由查找方法,其特征在于所述的64K段表,表項的壓縮偏移表指針(15:0比特或13:0比特)是指向本表項所對應壓縮偏移表起始地址的指針,初始化為0xFFFF(字段位寬為16比特時)或0x3FFF(字段寬度為14比特時),若壓縮偏移表指針值等于壓縮偏移表指針初始值,表示本表項不存在對應壓縮偏移表,不需要進行進一步查找;若壓縮偏移表指針值不等于壓縮偏移表指針初始值,表示本表項存在對應壓縮偏移表,需要進行進一步路由查找,且壓縮偏移表指針的值為本表項對應的壓縮偏移表的起始地址。
7.根據(jù)權利要求1所述的最長前綴地址路由查找方法,其特征在于壓縮偏移表路由基準值表示壓縮偏移表的下一跳路由基準值,壓縮偏移表路由基準值等于4倍的壓縮偏移表路由基準索引值(64K段表中壓縮偏移表路由基準索引字段位寬為6比特時),或壓縮偏移表路由基準值等于壓縮偏移表路由基準索引值(64K段表中壓縮偏移表路由基準索引值字段位寬為8比特時)。
8.據(jù)根利要求1所述的最長前綴地址路由查找方法,其特征在于所述的壓縮偏移表每一條表項由路由索引偏移字段構成,表項位寬等于2的壓縮偏移表表項寬度索引值次冪,表示表項對應的下一跳路由索引值與壓縮偏移表路由基準值的差值,初始化為全1值,若壓縮偏移表表項值等于壓縮偏移表表項初始值,表示下一跳路由索引值等于此壓縮偏移表所屬64K段表表項中的段路由索引值;若壓縮偏移表表項的值不等于壓縮偏移表表項初始值,表示下一跳路由索引值等于表項值與壓縮偏移表路由基準值之和。
9.根據(jù)權利要求1所述的最長前綴地址路由查找方法,其特征在于該方法有下列實施步驟(1)選定實現(xiàn)方案中壓縮偏移表指針和路由基準索引兩個字段的比特寬度;(2)對原始路由信息表進行擴展、排序和分組將原始路由記錄中前綴長度小于16比特的路由信息均擴展成前綴長度為16的記錄;將前綴長度大于16比特且小于32比特的路由條目均擴展成長度為32比特的路由前綴,按照前綴的高16比特分組,組內按照路由前綴的長度從小到大排放;(3)64K段表的初始化操化,構建64K段表將每組路由信息中前綴長度小于等于16比特的信息項按照前綴長度由小到大的順序依次填入64K段表相應表項,構造64K段表。表中每條表項由段路由索引(NHseg)、壓縮偏移表指針、路由基準索引和壓縮表表項寬度索引四個字段組成,其中路由基準索引字段、壓縮偏移表指針字段和壓縮表表項寬度索引字段和段路由索引字段填入初始值,共擁有64K條表項,占用的存儲空間為64K×32比特;(4)壓縮偏移表的初始化操作,構建壓縮偏移表統(tǒng)計出每組路由信息中前綴長度大于16比特的信息所對應下一跳路由索引值中最小值NHmin和最大值NHmax,取其最小值為下一跳路由索引值,計算出路由基準索引值,選取壓縮偏移表表項寬度索引值,申請尺寸為EntryWidth×64K比特的存儲器空間,將其首地址填入64K段表中壓縮偏移表指針字段,將路由基值索引BaseIndex和壓縮偏移表表項寬度索引值WidthIndex填入64K段表中各自對應字段,使用全1初始化壓縮偏移表,分別對每組路由中前綴長度大于16的路由信息條目計算路由信息中下一跳路由索引值與路由基準值間的差值,依前綴長度從小到大的順序以位寬EntryWidth填入壓縮偏移表中對應比特范圍;(5)取目標IPv4地址的高16位作為索引值,在64K段表中定位表項判斷該表項中壓縮偏移表指針值是否無效(全1值)?若無效,轉入(6);若壓縮偏移表指針值有效,轉入(7);(6)判斷此表項中段路由索引(NHseg)值是否為0xFF?若是,則該目標IPv4地址無對應有效下一跳路由;若否,則表項中路由索引值即為該目標IPv4地址所對應下一跳路由索引值(NHI);(7)根據(jù)此表項中壓縮偏移表指針值得到該IPv4地址對應壓縮偏移表的入口地址、路由基準索引值和壓縮表表項寬度索引值和段路由索引值,計算出該壓縮偏移表表項寬度,使用該IPv4地址的低16位(IPL16)和壓縮偏移表表項寬度計算出此IPv4地址在壓縮偏移表中的字偏移量和比特偏移量;(8)以偏移量Offsetword訪問此IPv4地址對應壓縮偏移表中的偏移量字,得到比特寬度為EntryWidth的下一跳路由索引值偏移量,判斷下一跳路由索引偏移量值是否為全1值?若是,則此IPv4地址對應下一跳路由索引(NHI)即等于當前一跳索引值(NHIcurrent);若否,計算出下一跳路由索引值(NHI),若NHI為全1值,則此IPv4地址無對應下一跳路由;若否,則此IPv4地址對應下一跳路由即為NHI。
全文摘要
本發(fā)明涉及數(shù)據(jù)通信技術領域,一種實現(xiàn)最長前綴地址路由查找的方法。該方法建立兩級路由信息表格64K段表和壓縮偏移表,將偏移表中路由索引值壓縮成該索引值與本段基準路由索引差值,通過此方法來存儲路由查找信息。查找時,先使用欲查找的目標IPv4地址的高16位作為索引值,在64K段表中定位表項判斷該表項中壓縮偏移表指針是否無效?若是,則此表項中路由索引即為該目標IPv4地址所對應下一跳路由索引值;若否,則根據(jù)此表項得到該IPv4地址對應壓縮偏移表的指針值、基準值和壓縮表表項寬度,以目標IPv4地址的低16位為偏移量訪問對應壓縮偏移表表項,通過計算得到該IPv4地址的下一跳路由索引值。
文檔編號G06F17/30GK1588907SQ200410050069
公開日2005年3月2日 申請日期2004年7月2日 優(yōu)先權日2004年7月2日
發(fā)明者徐宇鋒, 李華偉, 宮曙光, 劉彤 申請人:中國科學院計算技術研究所