專利名稱:建立和查找路由表項(xiàng)的方法及路由器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信領(lǐng)域,特別涉及一種建立和查找路由表項(xiàng)的方法及路由器。
背景技術(shù):
現(xiàn)有技術(shù)中,路由器中各種路由表項(xiàng)的組織結(jié)構(gòu)主要有樹結(jié)構(gòu)和Hash表結(jié)構(gòu)兩種形式, 兩種形式對(duì)應(yīng)的查找方式也不同。
參見圖l,為樹形式的路由表項(xiàng)的組織結(jié)構(gòu),其中,l是根節(jié)點(diǎn),2、 3是樹的中間節(jié)點(diǎn), 4、 5和6是樹的葉子節(jié)點(diǎn),需要査找的路由表項(xiàng)一般存儲(chǔ)在葉子節(jié)點(diǎn)中,對(duì)應(yīng)一個(gè)key (關(guān) 鍵值)值進(jìn)行査找,樹在添加新路由表項(xiàng)的時(shí)候根據(jù)key值從根部開始建立中間節(jié)點(diǎn)。如果 key值的各個(gè)bit位分布比較均勻,建立出來的樹應(yīng)該像圖1中的樣子,如果需要査找葉子節(jié) 點(diǎn)4中存儲(chǔ)的路由表項(xiàng),只需要經(jīng)過1、 2兩個(gè)中間節(jié)點(diǎn)就搜索到了;如果key值的各個(gè)bit 分布的不均勻,建立出來的樹可能就像圖2的樣子,這種情況下當(dāng)需要査找葉子節(jié)點(diǎn)7中的 路由表項(xiàng)時(shí),就需要經(jīng)過l、 2、 4和5四個(gè)節(jié)點(diǎn),査找速度慢。
參見圖3,為Hash表形式的路由表項(xiàng)的組織結(jié)構(gòu),存儲(chǔ)的路由表項(xiàng)通常以鏈表的形式串 連起來,當(dāng)需要查找某個(gè)路由表項(xiàng)時(shí),首先根據(jù)key值的Hash結(jié)果找到鏈表Entry (入口), 然后再根據(jù)key值找到相應(yīng)的路由表項(xiàng)。如果key值不均勻,這種形式的路由表組織結(jié)構(gòu)也 存在Hash結(jié)果命中同一個(gè)Entry的情況,這種情況下還需要遍歷鏈表比較key值是否相等, 最壞的情況要遍歷到最后一個(gè)才能査找到。例如,當(dāng)需要査找Eliment4中的路由表項(xiàng)時(shí),key 值的Hash結(jié)果命中Entry3,但Entry3下的鏈表有3個(gè),需要根據(jù)key值依次比較,到第三 個(gè)時(shí)key值相等才能査找到相應(yīng)的表項(xiàng)。
在實(shí)現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)上述現(xiàn)有技術(shù)中至少存在以下缺點(diǎn)
在査找路由器上的路由表項(xiàng)時(shí),只有一種固定的算法,不能針對(duì)特定的應(yīng)用需求和網(wǎng)絡(luò) 模型優(yōu)化査找性能。
發(fā)明內(nèi)容
為了優(yōu)化路由表項(xiàng)的查找性能,本發(fā)明實(shí)施例提供了一種建立和査找路由表項(xiàng)的方法及
路由器。所述技術(shù)方案如下
本發(fā)明實(shí)施例提供了一種査找路由表項(xiàng)的方法,所述方法包括 配置關(guān)鍵值的指定位置;
設(shè)置所述關(guān)鍵值的指定位,并將所述指定位移位到所述指定位置得到新的關(guān)鍵值; 根據(jù)所述新的關(guān)鍵值建立路由表項(xiàng)。
相應(yīng)地,本發(fā)明實(shí)施例還提供了一種路由器,所述路由器包括 配置模塊,用于配置關(guān)鍵值的指定位置; 設(shè)置模塊,用于設(shè)置所述關(guān)鍵值的指定位;
移位模塊,用于將所述設(shè)置模塊設(shè)置的指定位移位到所述配置模塊配置的指定位置,得 到新的關(guān)鍵值;
建立模塊,用于根據(jù)所述移位模塊得到的新的關(guān)鍵值建立路由表項(xiàng)。 本發(fā)明實(shí)施例提供了一種査找路由表項(xiàng)的方法,所述方法包括-
當(dāng)査找路由表項(xiàng)時(shí),選擇需要査找的路由表項(xiàng)的關(guān)鍵值中的指定位,所述指定位為建立 所述路由表項(xiàng)時(shí)設(shè)置的指定位;
將所述指定位移位到所述關(guān)鍵值的指定位置,得到新的關(guān)鍵值,所述指定位置為建立所 述路由表項(xiàng)時(shí)配置的所述關(guān)鍵值的指定位置;
根據(jù)所述新的關(guān)鍵值査找所述路由表項(xiàng)。
相應(yīng)地,本發(fā)明實(shí)施例提供了一種路由器,所述路由器包括
選擇模塊,用于當(dāng)査找路由表時(shí),選擇需要査找的路由表項(xiàng)的關(guān)鍵值中的指定位,所述 指定位為建立所述路由表項(xiàng)時(shí)設(shè)置的指定位;
移位模塊,用于將所述選擇模塊選擇的指定位移位到指定位置,得到新的關(guān)鍵值,所述 指定位置為建立所述路由表項(xiàng)時(shí)配置的所述關(guān)鍵值的指定位置;
査找模塊,用于根據(jù)所述移位模塊得到的新的關(guān)鍵值査找路由表項(xiàng)。
本發(fā)明實(shí)施例提供的技術(shù)方案的有益效果是-本發(fā)明實(shí)施例通過在建立路由表項(xiàng)時(shí)配置key值的指定位置,將設(shè)置的key值中的指定位移 位到key值的指定位置得到新的key值,從而在根據(jù)新的key值建立路由表項(xiàng);在查找路由 表項(xiàng)時(shí)根據(jù)與建立路由表項(xiàng)相同的方法對(duì)key值進(jìn)行移位得到新的key值,這樣可以更快地 找到需要査找的路由表項(xiàng),提高了查找速度,優(yōu)化了査找性能。
圖1是現(xiàn)有技術(shù)中平均的二叉樹形式的路由表項(xiàng)組織結(jié)構(gòu)的示意圖; 圖2是現(xiàn)有技術(shù)中不平均的二叉樹形式的路由表項(xiàng)組織結(jié)構(gòu)的示意圖; 圖3是現(xiàn)有技術(shù)中Hash表形式的路由表項(xiàng)組織結(jié)構(gòu)的示意圖; 圖4是本發(fā)明實(shí)施例1提供的建立路由表項(xiàng)的方法的流程圖; 圖5是本發(fā)明實(shí)施例2提供的査找路由表項(xiàng)的方法的流程圖; 圖6是本發(fā)明實(shí)施例3提供的路由器的結(jié)構(gòu)示意圖; 圖7是本發(fā)明實(shí)施例4提供的路由器的結(jié)構(gòu)示意圖。
具體實(shí)施例方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明實(shí)施方式作進(jìn) 一步地詳細(xì)描述。
本發(fā)明實(shí)施例通過在建立路由表項(xiàng)時(shí)配置key值的指定位置,將設(shè)置的key值中的指定 位移位到key值的指定位置得到新的key值,即在建立路由表項(xiàng)時(shí)可以將key值中的指定位 移位到任意指定位置,然后根據(jù)新的key值建立路由表項(xiàng),在査找路由表項(xiàng)時(shí)采用與建立路 由表項(xiàng)相同的方法將選擇的key值中的指定位移位到指定位置得到新的key值,從而在根據(jù) 新的key值查找路由表項(xiàng)時(shí)可以更快地找到需要査找的路由表項(xiàng),提高了查找速度,優(yōu)化了 査找性能。
本發(fā)明實(shí)施例提供了 一種査找路由表項(xiàng)的方法,該方法包括 配置關(guān)鍵值的指定位置;
設(shè)置關(guān)鍵值的指定位,并將該指定位移位到配置的指定位置得到新的關(guān)鍵值; 根據(jù)新的關(guān)鍵值建立路由表項(xiàng)。 實(shí)施例1
本實(shí)施例中,首先在建立路由表時(shí),根據(jù)實(shí)際應(yīng)用的需求配置key值的指定位置,并將 指定位移位到key值的配置的指定位置得到新的key值,根據(jù)新的key值建立路由表;在查 表時(shí)采用與建表時(shí)相同的方法調(diào)整key值中比特位的順序得到新的key值,這樣在根據(jù)新的 key值查找路由表項(xiàng)時(shí)提高了査找速度。
參見圖4,本發(fā)明實(shí)施例提供了一種建立路由表項(xiàng)的方法,具體包括
101:配置key值的指定位置。
現(xiàn)有技術(shù)中在建立路由表時(shí),首先將key值的指定位移位到指定位置得到新的key值, 現(xiàn)有的建表算法只能將指定位移位到固定的指定位置,在本實(shí)施例中,首先根據(jù)實(shí)際應(yīng)用的
需求配置key值的指定位置,即key值的指定位置是可以變化的,在査表時(shí)采用與建表時(shí)相 同的方式將key值的指定位移位到配置的指定位置得到新的key值,然后再根據(jù)新的key值 査找路由表項(xiàng),這樣可以提高查表的速度。
102:將反映key值中比特位變化的一段比特位設(shè)置為指定位。
例如,某業(yè)務(wù)需要査找的路由表項(xiàng)的key值是源IP地址、目的IP地址、UDP或TCP首 部的源端口、目的端口和路由器入端口的組合,當(dāng)該業(yè)務(wù)的流量模型為IP地址變化頻繁而其 它幾項(xiàng)基本無變化的形式時(shí),可以將表示IP地址的一段比特位設(shè)置為指定位;當(dāng)該業(yè)務(wù)的流 量模型為IP地址固定而UDP或TCP端口變化頻繁的形式時(shí),可以將表示UDP或TCP端口 的一段比特位設(shè)置為指定位;當(dāng)該業(yè)務(wù)的流量模型為需要高帶寬采用多個(gè)路由器接口負(fù)載分 擔(dān)傳輸?shù)男问綍r(shí),可以將表示路由器端口的一段比特位設(shè)置為指定位。
進(jìn)一步地,還可以將反映key值變化的某一個(gè)比特位或者某幾個(gè)比特位設(shè)置為指定位, 即設(shè)置的指定位可以是一段連續(xù)的比特位,也可以是幾段不連續(xù)的比特位。
103:在設(shè)置key值的指定位后,將key值的指定位移位到配置的指定位置得到新的key值。
其中,可以將key值的指定位移位到key值的首部或者其它配置的指定位置。 104:根據(jù)新的key值建立路由表項(xiàng)。
本實(shí)施例以將指定位移位到key值的首部為例進(jìn)行說明,根據(jù)新的key值建立路由表項(xiàng) 的具體過程如下
根據(jù)新的key值的首部的指定位的Hash結(jié)果建立不同的Entry,然后再根據(jù)key值的Hash 結(jié)果將路由表下掛到不同的Entry下。例如,參見圖3,假設(shè)設(shè)置的key值的指定位為表示IP 地址的一段連續(xù)16位的比特位,根據(jù)新的key值的前16比特位的Hash結(jié)果建立的Entry有 Entryl、 Entry2、 ...、 EntryN,如果該key值的第一次Hash結(jié)果與Entryl相對(duì)應(yīng),則在Entryl 下下掛Elimentl;該key值的第二次Hash結(jié)果與Entry3相對(duì)應(yīng),則在Entry3下下掛Eliment2; 該key值的第二次Hash結(jié)果還與Entiy3相對(duì)應(yīng),則在Eliment2下下掛Eliment3,以此類推。
因?yàn)榻ū頃r(shí)首先要根據(jù)key值的首部的Hash結(jié)果建立不同的Entry,這種建表方式相當(dāng) 于將路由表項(xiàng)劃分成不同的組,在査表時(shí),首先找到路由表項(xiàng)所屬的組,然后再在該組中查 找路由表項(xiàng)。本實(shí)施例中根據(jù)實(shí)際需要將反映key值中比特位變化一段比特位設(shè)置為指定位, 并將其移位到key值的首部,這樣對(duì)key值的首部進(jìn)行Hash時(shí)就可以得到不同的Entry,即 盡可能地將路由表項(xiàng)劃分到不同的組以提高査表時(shí)的速度。
本實(shí)施例通過根據(jù)實(shí)際應(yīng)用的需要配置key值的指定位置,將key值中的指定位移位到
配置的指定位置,并根據(jù)移位后的key值建立路由表項(xiàng),減少了建表時(shí)樹的深度或者降低Hash 表的沖突,這樣在查找路由表項(xiàng)時(shí)按照與建表時(shí)相同的方法調(diào)整key值中比特位的順序,從 而可以提高查找路由表項(xiàng)的速度,優(yōu)化査找性能。 實(shí)施例2
參見圖5,與上述實(shí)施例1提供的建立路由表項(xiàng)的方法相對(duì)應(yīng),本實(shí)施例還提供了一種 査找路由表項(xiàng)的方法,具體包括
201:當(dāng)査找路由表項(xiàng)時(shí),選擇需要查找的路由表項(xiàng)的key值中的指定位,該指定位為建 立路由表項(xiàng)時(shí)設(shè)置的指定位。
其中,查表項(xiàng)時(shí)選擇的key值的指定位與建表時(shí)設(shè)置的指定位是相同的,例如,建表時(shí) 將key值中表示IP地址的16位比特位設(shè)置為指定位,在查找路由表項(xiàng)時(shí)也要選擇該指定位。
在建立路由表項(xiàng)時(shí),根據(jù)實(shí)際需要將反映key值中變化的一段比特位設(shè)置為指定位,由 于key值中的某個(gè)比特位或者某幾個(gè)比特位可以表示子網(wǎng)標(biāo)識(shí)或端口號(hào),因此這樣設(shè)置key 值的指定位在査找路由表項(xiàng)時(shí),可以使需求更加細(xì)化,在為客戶進(jìn)行網(wǎng)絡(luò)規(guī)劃時(shí),甚至能夠 細(xì)化到子網(wǎng)或端口范圍的地步。
202:將選擇的指定位移位到指定位置,得到新的key值,該指定位置為建立路由表項(xiàng)時(shí) 配置的關(guān)鍵值的指定位置。
203:根據(jù)新的key值查找路由表項(xiàng)。
本實(shí)施例在査找路由表項(xiàng)時(shí)按照與建表時(shí)相同的方法調(diào)整key值中比特位的順序,從而 提高了査找路由表項(xiàng)的速度,優(yōu)化查找性能。 實(shí)施例3
參見圖6,與上述實(shí)施例1提供的建立路由表項(xiàng)的方法實(shí)施例相對(duì)應(yīng),本發(fā)明實(shí)施例提 供了一種路由器,該路由器包括-
配置模塊301,用于配置關(guān)鍵值的指定位置;
設(shè)置模塊302,用于設(shè)置關(guān)鍵值的指定位;其中,可以將反映關(guān)鍵值中比特位變化的一 段比特位設(shè)置為指定位,上述一段比特位為一段連續(xù)比特位或不連續(xù)比特位。
移位模塊303,用于將設(shè)置模塊302設(shè)置的指定位移位到配置模塊301配置的指定位置, 得到新的關(guān)鍵值;
建立模塊304,用于根據(jù)移位模塊303得到的新的關(guān)鍵值建立路由表項(xiàng)。 本實(shí)施例通過配置模塊301配置key值的指定位置,設(shè)置模塊設(shè)置key值中的指定位, 移位模塊303將設(shè)置模塊302設(shè)置的指定位移位到配置模塊301配置的指定位置得到新的key值,由于指定位是反映key值中比特位變化的一段比特位,這樣在建立路由表項(xiàng)時(shí)可以根據(jù) 實(shí)際需要對(duì)key值進(jìn)行變換,從而可以減少建表時(shí)樹的深度或降低Hash沖突,便于在査找路 由表項(xiàng)時(shí)可以更快地找到需要查找的表項(xiàng),提高了査找速度,優(yōu)化了查找性能。 實(shí)施例4
參見圖7,與上述實(shí)施例2提供的査找路由表項(xiàng)的方法實(shí)施例相對(duì)應(yīng),本實(shí)施例還提供 了一種路由器,該路由器包括-
選擇模塊401,用于當(dāng)査找路由表時(shí),選擇需要査找的路由表項(xiàng)的關(guān)鍵值中的指定位, 該指定位為建立路由表項(xiàng)時(shí)設(shè)置的指定位;
移位模塊402,用于將選擇模塊401選擇的指定位移位到指定位置,得到新的關(guān)鍵值, 該指定位置為建立路由表項(xiàng)時(shí)配置的關(guān)鍵值的指定位置;
查找模塊403,用于根據(jù)移位模塊402得到的新的關(guān)鍵值査找路由表項(xiàng)。
本實(shí)施例當(dāng)査找路由表項(xiàng)時(shí),選擇模塊401選擇key值中的指定位,該指定位為建立路 由表項(xiàng)時(shí)設(shè)置的指定位,移位模塊402將選擇模塊401選擇的指定位移位到指定位置得到新 的key值,由于指定位是反映key值中比特位變化的一段比特位,從而在査找模塊403在根 據(jù)新的key值査找路由表項(xiàng)時(shí)可以更快地找到需要查找的表項(xiàng),提高了査找速度,優(yōu)化了査 找性能。
本發(fā)明實(shí)施例可以通過軟件實(shí)現(xiàn),相應(yīng)地軟件可以存儲(chǔ)到可讀取的存儲(chǔ)介質(zhì)中,例如, 計(jì)算機(jī)的硬盤、軟盤或光盤中。
以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之 內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種建立路由表項(xiàng)的方法,其特征在于,所述方法包括配置關(guān)鍵值的指定位置;設(shè)置所述關(guān)鍵值的指定位,并將所述指定位移位到所述指定位置得到新的關(guān)鍵值;根據(jù)所述新的關(guān)鍵值建立路由表項(xiàng)。
2. 根據(jù)權(quán)利要求l所述的査找路由表項(xiàng)的方法,其特征在于,所述設(shè)置所述關(guān)鍵值的指 定位具體為將反映關(guān)鍵值中比特位變化的一段比特位設(shè)置為指定位。
3. 根據(jù)權(quán)利要求2所述的査找路由表項(xiàng)的方法,其特征在于,所述一段比特位為一段連 續(xù)比特位或不連續(xù)比特位。
4. 一種路由器,其特征在于,所述路由器包括-配置模塊,用于配置關(guān)鍵值的指定位置; 設(shè)置模塊,用于設(shè)置所述關(guān)鍵值的指定位;移位模塊,用于將所述設(shè)置模塊設(shè)置的指定位移位到所述配置模塊配置的指定位置,得 到新的關(guān)鍵值;建立模塊,用于根據(jù)所述移位模塊得到的新的關(guān)鍵值建立路由表項(xiàng)。
5. —種査找路由表項(xiàng)的方法,其特征在于,所述方法包括當(dāng)査找路由表項(xiàng)時(shí),選擇需要査找的路由表項(xiàng)的關(guān)鍵值中的指定位,所述指定位為建立 所述路由表項(xiàng)時(shí)設(shè)置的指定位;將所述指定位移位到所述關(guān)鍵值的指定位置,得到新的關(guān)鍵值,所述指定位置為建立所 述路由表項(xiàng)時(shí)配置的所述關(guān)鍵值的指定位置;根據(jù)所述新的關(guān)鍵值查找所述路由表項(xiàng)。
6. —種路由器,其特征在于,所述路由器包括選擇模塊,用于當(dāng)査找路由表項(xiàng)時(shí),選擇需要查找的路由表項(xiàng)的關(guān)鍵值中的指定位,所述指定位為建立所述路由表項(xiàng)時(shí)設(shè)置的指定位;移位模塊,用于將所述選擇模塊選擇的指定位移位到指定位置,得到新的關(guān)鍵值,所述 指定位置為建立所述路由表項(xiàng)時(shí)配置的所述關(guān)鍵值的指定位置;查找模塊,用于根據(jù)所述移位模塊得到的新的關(guān)鍵值查找路由表項(xiàng)。
全文摘要
本發(fā)明公開了一種建立和查找路由表項(xiàng)的方法及路由器,屬于通信領(lǐng)域。建立路由表項(xiàng)的方法包括配置關(guān)鍵值的指定位置;設(shè)置key值的指定位,并將該指定位移位到指定位置得到新的key值;根據(jù)新的key值建立路由表項(xiàng)。所述路由器包括配置模塊、選擇模塊、移位模塊和建立模塊。本發(fā)明通過在建立路由表項(xiàng)時(shí)配置key值的指定位置,在查找路由表項(xiàng)時(shí)將選擇的key值中的指定位移位到配置的指定位置得到新的key值,從而在根據(jù)新的key值查找路由表項(xiàng)時(shí)可以更快地找到需要查找的路由表項(xiàng),提高了查找速度,優(yōu)化了查找性能。
文檔編號(hào)G06F17/30GK101340386SQ20081014736
公開日2009年1月7日 申請(qǐng)日期2008年8月12日 優(yōu)先權(quán)日2008年8月12日
發(fā)明者冰 韓 申請(qǐng)人:華為技術(shù)有限公司