国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種基于TCAM的路由查找系統(tǒng)及其方法與流程

      文檔序號:11206071閱讀:389來源:國知局
      一種基于TCAM的路由查找系統(tǒng)及其方法與流程

      本發(fā)明涉及一種基于tcam的路由查找系統(tǒng)及其方法,屬于高速ip查找技術(shù)領(lǐng)城。



      背景技術(shù):

      近年來,internet用戶激增,導(dǎo)致路由表的激增,這導(dǎo)致了傳統(tǒng)的ipv4的a類,b類,c類地址資源的枯竭。一種過渡的辦法就是利用無域間路由(cidrclasslessinter-domainrouting)。通過采用可變長度的網(wǎng)絡(luò)id,代替了固定的8、16、24位固定的網(wǎng)絡(luò)id,從而使ip地址利用率提升。但同時對于路由查找算法,也大大增加了復(fù)雜度。

      路由表在20多年間從幾千條增加到60多萬條。一些經(jīng)典的算法可能在路由表增長的過程中,會由于搜索時間更長,或者占用更多的存儲空間而不適用,因此,如何處理因為路由表的激增而帶來的路由查找的問題變得更加迫在眉睫。

      tcam(ternarycontent-addressablememory),三值按內(nèi)容可尋址存儲器,是一種具有搜索功能的隨機存儲器。tcam單元在搜索時會有三種狀態(tài),即0、1、x(不關(guān)心),也就是允許通配符存在。tcam不同于軟件搜索的特點是,在一個時鐘周期內(nèi),就可以得出搜索結(jié)果,在速度上有著無可比擬的優(yōu)勢。正是由于tcam的高速以及支持通配符的特性,tcam在高速的數(shù)據(jù)庫,數(shù)據(jù)壓縮,路由查找,模式識別以及人工智能方面有著出色的表現(xiàn)。

      而對于tcam這種從速度上來說,其他軟件算法無法比擬的硬件搜索引擎來說,仍然面臨挑戰(zhàn)。tcam的功耗能夠達到十幾瓦到幾十瓦,如此高的功耗對于器件的散熱造成巨大的挑戰(zhàn),如何減小tcam功耗成為一個急切而又熱門的話題。同時,tcam的復(fù)雜的更新,以及更新延時造成性能的下降。

      在plo_opt【d.shahandp.gupta,”fastupdatesonternary-camsforparcketlookupsandclassification,”ieeemicro,vol.21,no.1,jan./fab.2001】方案中,所有的未使用的tcamentry被放置在tcam芯片的中間。假設(shè)ip地址的長度為l(對于ipv4來說l等于32),前綴長度大于1/2l的前綴放置在未使用的tcam塊的上方(低地址);前綴長度小于等于1/2l的前綴放置在未使用的tcam塊下方。利用這種方案,在刪除或者添加一個前綴時,在最壞情況下,挪動前綴需要1/2l次。也就是說,plo_opt方案的時間復(fù)雜度是o(l/2)對于ipv4來說,需要移動16次才能夠更新一個前綴,平均的移動次數(shù)較多,降低了tcam搜索的性能。plo_opt示意圖如圖1(a)所示。

      在cao_opt【d.shahandp.gupta,”fastupdatesonternary-camsforparcketlookupsandclassification,”ieeemicro,vol.21,no.1,jan./fab.2001】方案中,所有閑置的tcamentry同plo_opt方案一樣,都是放置在tcam芯片的中間。在cao_opt方案中,前綴的存儲是按照trie這種方式來存儲的,也就是說,只需要保證在同一個分支上的前綴的相對順序,在tcam搜索的時候就會保證搜索結(jié)果正確,而不需要較長的前綴放在低地址,短的前綴放在高地址。對于任何一個前綴來說,從該前綴到未使用的前綴的相對距離不會超過[d/2](d表示該分支的長度,[d/2]表示向上取整)。因此,cao_opt方案的時間復(fù)雜度是o([d/2])。但在cao_opt方案中,為了維持在同一分支的節(jié)點的關(guān)系,在刪除前綴的時候,需要移動更多的前綴。并且由于前綴的增長,d的值一定會增加,這會降低該方案的性能。cao_opt示意圖如圖1(b)所示。



      技術(shù)實現(xiàn)要素:

      為了克服現(xiàn)有技術(shù)中存在的不足,本發(fā)明目的是提供一種基于tcam的路由查找系統(tǒng)及其方法。本發(fā)明的目的在于減小tcam更新時前綴移動次數(shù),提高更新性能,并在一定程度上加速tcam的查找速度。

      為了實現(xiàn)上述發(fā)明目的,解決己有技術(shù)中存在的問題,本發(fā)明采取的技術(shù)方案是:一種基于tcam的路由查找系統(tǒng),包括容量為n個條目的tcam模塊1、容量為m個條目的tcam模塊2、具有n個輸入端的編碼器,具有m個輸入端的優(yōu)先級編碼器,兩輸入選擇器和兩輸入或門,所述tcam模塊1的n個輸出端分別與編碼器的n個輸入端一一對應(yīng)相連,所述tcam模塊2的m個輸出端分別與優(yōu)先級編碼器的m個輸入端一一對應(yīng)相連,所述編碼器的輸出端與兩輸入選擇器的“1”端相連,所述優(yōu)先級編碼器的輸出端與兩輸入的選擇器的“0”端相連,所述tcam模塊1輸出的匹配標(biāo)志1與兩輸入選擇器的選擇端相連,所述tcam模塊1輸出的匹配標(biāo)志1和tcam模塊2輸出的匹配標(biāo)志2分別與兩輸入或門相連,兩輸入選擇器的輸出端作為系統(tǒng)的匹配地址,兩輸入或門的輸出端作為系統(tǒng)的匹配標(biāo)志,所述n及m均為大于零的正整數(shù);所述tcam模塊1中存放n1條第一層前綴,n1為大于零的正整數(shù),存放的地址范圍為[0,n1-1],前綴采用隨機存放的方式,每個entry的輸出端與entry地址相對應(yīng)的編碼器的輸入端連接,tcam模塊1的地址范圍[n1,n-1]不存放前綴,每條entry的輸出與entry地址相對應(yīng)的編碼器的輸入端相連;在tcam模塊2的地址范圍為[0,n2-1]的tcamentry中存放n2條前綴,輸出端分別與地址為[0,n2-1]的優(yōu)先級編碼器的輸入端相連,前綴隨機存放,tcam模塊2的地址范圍為[n2,n2+ne1-1]放置ne1條未使用的tcamentry,組成空閑空間1,ne1為大于零的正整數(shù),每條entry的輸出端與該entry地址相對應(yīng)的優(yōu)先級編碼器的輸入相連;在tcam模塊2的地址范圍為[n2+ne1,n2+ne1+no1-1]的tcamentry中存放no1條,長度為24~17的其他層的前綴,no1為大于零的正整數(shù),每條entry的輸出端與該entry地址相對應(yīng)的優(yōu)先級編碼器的輸入相連,前綴按照前綴長度存放,前綴長度長的放在低地址,短的放在高地址;在tcam模塊2的地址范圍為[n2+ne1+no1,n2+ne1+no1+ne2-1]的tcamentry不存放前綴,組成空閑空間2,每條entry的輸出與該entry地址相對應(yīng)的優(yōu)先級編碼器的輸入相連;在tcam模塊2的地址范圍為[n2+ne1+no1+ne2,n2+ne1+no1+ne2+no2-1]的tcamentry中存放no2條長度為16~13的其它層前綴,每條entry的輸出與該entry地址相對相應(yīng)的優(yōu)先級編碼器的輸入端連接,前綴按照前綴長度存放,前綴長度長的放在低地址,短的放在高地址;在tcam模塊2的地址范圍為[n2+ne1+no1+ne2+no2,n2+ne1+no1+ne2+no2+ne3-1]的tcamentry中不存放前綴,組成空閑空間3tcam模塊2地址范圍為[n2+ne1+no1+ne2+no2+ne3,m-1]的tcamentry中存放m-(n2+ne1+no1+ne2+no2+ne3)條前綴長度為12~8的其他層前綴,每條entry的輸出端與該entry地址相對相應(yīng)的優(yōu)先級編碼器的輸入連接,前綴按照前綴長度存放,前綴長度長的放在低地址,短的放在高地址。

      所述系統(tǒng)的一種基于tcam的路由查找及更新方法,其中查找方法包括以下步驟:

      步驟401、將待查找的目的ip同時送入tcam模塊1和tcam模塊2中,進行搜索;

      步驟402、從編碼器的輸出端得到tcam模塊1的匹配地址,從優(yōu)先級編碼器的輸出端得到tcam模塊2的匹配地址,從tcam模塊1的輸出端得到匹配標(biāo)志1,從tcam模塊2輸出端得到匹配標(biāo)志2;

      步驟403、將tcam模塊1得到的匹配標(biāo)志1送入選擇器的選擇端;

      步驟404、將tcam模塊1得到的匹配地址的最高位前加標(biāo)志位“1”,送入選擇器“1”端,將tcam模塊2中得到的匹配地址的最高位前加“0”,送入選擇器“0”端;

      步驟405、從選擇器輸出端得到搜索的匹配結(jié)果,從或門輸出端得到匹配標(biāo)志;

      所述更新方法包括插入和刪除兩部分,其中插入包括以下步驟:

      步驟501、開始,準(zhǔn)備好要插入的前綴;

      步驟502、判斷要插入的前綴是否應(yīng)該插入到第一層前綴中,如果該前綴應(yīng)該插入到第一層,則執(zhí)行步驟503,否則執(zhí)行步驟508;

      步驟503、判斷要插入的前綴在第一層前綴中是否存在超集p1,如果p1存在,則執(zhí)行步驟504,如果不存在,則執(zhí)行步驟511;

      步驟504、判斷p1在第二層中是否存在超集p2,如果p2存在,則執(zhí)行步驟506,如果不存在,則執(zhí)行步驟505;

      步驟505、將前綴p1插入到第二層前綴中;

      步驟506、將前綴p2插入到其它前綴層中;

      步驟507、將前綴p1移動到p2在移動之前的位置;

      步驟508、如果要插入的前綴應(yīng)該插入到第二層,則執(zhí)行步驟509,否則執(zhí)行步驟511;

      步驟509、判斷被插入前綴在第二層是否存在超集p2,如果存在,則執(zhí)行步驟510,如果不存在,則執(zhí)行步驟511;

      步驟510、將前綴p2插入到其它層;

      步驟511、在相應(yīng)的前綴層插入目標(biāo)前綴;

      步驟512、記錄前綴數(shù)量和位置的變化;

      步驟513、結(jié)束此次前綴插入操作;

      所述刪除包括以下步驟:

      步驟601、開始刪除過程,準(zhǔn)備好被刪除的前綴;

      步驟602、判斷被刪除前綴是否位于第一層,如果被刪除前綴位于第一層,則執(zhí)行步驟603,否則執(zhí)行步驟609;

      步驟603、判斷被刪除前綴在第二層中是否有超集p2,如果p2存在,則執(zhí)行步驟604,如果p2不存在,則執(zhí)行步驟613;

      步驟604、判斷p2在第一層前綴中有無與被刪除前綴不同的子集,如果子集存在,則執(zhí)行步驟613,如果不存在子集,則執(zhí)行步驟605;

      步驟605、將前綴p2移動到被刪除的前綴的位置處;

      步驟606、判斷前綴p2在其它層前綴中是否有超集p3,如果p3存在,則執(zhí)行步驟607,如果p3不存在,則執(zhí)行步驟613;

      步驟607、判斷前綴p3在第二層前綴中是否存在與p2不同的子集,如果存在,則執(zhí)行步驟613,如果不存在,則執(zhí)行步驟608;

      步驟608、將前綴p3移動到前綴p2的位置;

      步驟609、判斷被刪除前綴是否位于第二層中,如果位于第二層前綴中,則執(zhí)行步驟610,否則執(zhí)行步驟613;

      步驟610、判斷被刪除前綴在其他層中是否存在超集p3,如果存在,則執(zhí)行步驟611,如果不存在,則執(zhí)行步驟613;

      步驟611、判斷p3在第二層前綴中有無與被刪除前綴不同的子集前綴,如果該子集存在,則執(zhí)行步驟613,如果不存在,則執(zhí)行步驟612;

      步驟612、將前綴p3移動到被刪除前綴的位置處;

      步驟613、刪除目標(biāo)前綴;

      步驟614、記錄前綴位置和數(shù)量的變化;

      步驟615、結(jié)束此次刪除操作。

      本發(fā)明有益效果是:一種基于tcam的路由查找系統(tǒng)及其方法,系統(tǒng)包括容量為n個條目的tcam模塊1、容量為m個條目的tcam模塊2、具有n個輸入端的編碼器,具有m個輸入端的優(yōu)先級編碼器,兩輸入選擇器和兩輸入或門,所述tcam模塊1的n個輸出端分別與編碼器的n個輸入端一一對應(yīng)相連,所述tcam模塊2的m個輸出端分別與優(yōu)先級編碼器的m個輸入端一一對應(yīng)相連,所述編碼器的輸出端與兩輸入選擇器的“1”端相連,所述優(yōu)先級編碼器的輸出端與兩輸入的選擇器的“0”端相連,所述tcam模塊1輸出的匹配標(biāo)志1與兩輸入選擇器的選擇端相連,所述tcam模塊1輸出的匹配標(biāo)志1和tcam模塊2輸出的匹配標(biāo)志2分別與兩輸入或門相連,兩輸入選擇器的輸出端作為系統(tǒng)的匹配地址,兩輸入或門的輸出端作為系統(tǒng)的匹配標(biāo)志,所述n及m均為大于零的正整數(shù);與已有技術(shù)相比,本發(fā)明提供的基于tcam的路由查找及更新方法,具有以下優(yōu)點:(1)處于第一層和第二層的前綴由于不存在重疊和包含的關(guān)系,因此可以在其相應(yīng)的區(qū)間內(nèi)無序隨機放置;(2)降低了在更新時的tcam表的移動次數(shù);(3)由于減小了移動前綴的次數(shù),在一定程度上降低了tcam的功耗;(4)由于在第一部分tcam中,僅使用了編碼器,提高了搜索的速度。

      附圖說明

      圖1是plo_opt、cao_opt方案示意圖。

      圖中:(a)是plo_opt方案示意圖。

      (b)cao_opt方案示意圖。

      圖2是傳統(tǒng)的tcam查找方案示意圖。

      圖3是本發(fā)明系統(tǒng)原理框圖。

      圖4是本發(fā)明查找方法步驟流程圖。

      圖5是本發(fā)明插入方法步驟流程圖。

      圖6是本發(fā)明刪除方法步驟流程圖。

      具體實施方式

      下面結(jié)合本發(fā)明用到的一些名詞做簡單解釋:

      前綴重疊:如果兩個前綴a和前綴b在同一分支上,這兩個前綴就是互相重疊的兩個前綴。

      前綴的超集和子集:如果前綴a和前綴b在同一分支上,也就是它們是互相重疊的前綴,并且前綴a的長度比前綴b的長度短,我們就稱前綴a是前綴b的超集(或者記作)。

      前綴層i(i=1,2,…,n):有同樣匹配優(yōu)先級的前綴集在同一前綴層上。前綴層1有最高的優(yōu)先級,前綴層n的匹配優(yōu)先級最低。第一層的前綴沒有子集,第二層的前綴至少在第一層有一個子集,第三層的前綴在第二層至少有一個子集,以此類推。

      命中:在某一前綴層搜索前綴a時,如果前綴a被某一前綴包含或者前綴a包含了該前綴層中的某前綴,我們把這種情況稱為命中。

      下面結(jié)合附圖對本發(fā)明作進一步說明。

      如圖3、4、5、6所示,一種基于tcam的路由查找系統(tǒng),包括容量為n個條目的tcam模塊1、容量為m個條目的tcam模塊2、具有n個輸入端的編碼器,具有m個輸入端的優(yōu)先級編碼器,兩輸入選擇器和兩輸入或門,所述tcam模塊1的n個輸出端分別與編碼器的n個輸入端一一對應(yīng)相連,所述tcam模塊2的m個輸出端分別與優(yōu)先級編碼器的m個輸入端一一對應(yīng)相連,所述編碼器的輸出端與兩輸入選擇器的“1”端相連,所述優(yōu)先級編碼器的輸出端與兩輸入的選擇器的“0”端相連,所述tcam模塊1輸出的匹配標(biāo)志1與兩輸入選擇器的選擇端相連,所述tcam模塊1輸出的匹配標(biāo)志1和tcam模塊2輸出的匹配標(biāo)志2分別與兩輸入或門相連,兩輸入選擇器的輸出端作為系統(tǒng)的匹配地址,兩輸入或門的輸出端作為系統(tǒng)的匹配標(biāo)志,所述n及m均為大于零的正整數(shù);所述tcam模塊1中存放n1條第一層前綴,n1為大于零的正整數(shù),存放的地址范圍為[0,n1-1],前綴采用隨機存放的方式,每個entry的輸出端與entry地址相對應(yīng)的編碼器的輸入端連接,tcam模塊1的地址范圍[n1,n-1]不存放前綴,每條entry的輸出與entry地址相對應(yīng)的編碼器的輸入端相連;在tcam模塊2的地址范圍為[0,n2-1]的tcamentry中存放n2條前綴,輸出端分別與地址為[0,n2-1]的優(yōu)先級編碼器的輸入端相連,前綴隨機存放,tcam模塊2的地址范圍為[n2,n2+ne1-1]放置ne1條未使用的tcamentry,組成空閑空間1,ne1為大于零的正整數(shù),每條entry的輸出端與該entry地址相對應(yīng)的優(yōu)先級編碼器的輸入相連;在tcam模塊2的地址范圍為[n2+ne1,n2+ne1+no1-1]的tcamentry中存放no1條,長度為24~17的其他層的前綴,no1為大于零的正整數(shù),每條entry的輸出端與該entry地址相對應(yīng)的優(yōu)先級編碼器的輸入相連,前綴按照前綴長度存放,前綴長度長的放在低地址,短的放在高地址;在tcam模塊2的地址范圍為[n2+ne1+no1,n2+ne1+no1+ne2-1]的tcamentry不存放前綴,組成空閑空間2,每條entry的輸出與該entry地址相對應(yīng)的優(yōu)先級編碼器的輸入相連;在tcam模塊2的地址范圍為[n2+ne1+no1+ne2,n2+ne1+no1+ne2+no2-1]的tcamentry中存放no2條長度為16~13的其它層前綴,每條entry的輸出與該entry地址相對相應(yīng)的優(yōu)先級編碼器的輸入端連接,前綴按照前綴長度存放,前綴長度長的放在低地址,短的放在高地址;在tcam模塊2的地址范圍為[n2+ne1+no1+ne2+no2,n2+ne1+no1+ne2+no2+ne3-1]的tcamentry中不存放前綴,組成空閑空間3;tcam模塊2地址范圍為[n2+ne1+no1+ne2+no2+ne3,m-1]的tcamentry中存放m-(n2+ne1+no1+ne2+no2+ne3)條前綴長度為12~8的其他層前綴,每條entry的輸出端與該entry地址相對相應(yīng)的優(yōu)先級編碼器的輸入連接,前綴按照前綴長度存放,前綴長度長的放在低地址,短的放在高地址。

      所述系統(tǒng)的一種基于tcam的路由查找及更新方法,其中查找方法包括以下步驟:

      步驟401、將待查找的目的ip同時送入tcam模塊1和tcam模塊2中,進行搜索;

      步驟402、從編碼器的輸出端得到tcam模塊1的匹配地址,從優(yōu)先級編碼器的輸出端得到tcam模塊2的匹配地址,從tcam模塊1的輸出端得到匹配標(biāo)志1,從tcam模塊2輸出端得到匹配標(biāo)志2;

      步驟403、將tcam模塊1得到的匹配標(biāo)志1送入選擇器的選擇端;

      步驟404、將tcam模塊1得到的匹配地址的最高位前加標(biāo)志位“1”,送入選擇器“1”端,將tcam模塊2中得到的匹配地址的最高位前加“0”,送入選擇器“0”端;

      步驟405、從選擇器輸出端得到搜索的匹配結(jié)果,從或門輸出端得到匹配標(biāo)志;

      在更新方法中,需要記錄下未使用的tcamentry的位置emptyn和前綴數(shù)量numn(n代表前綴所處的層數(shù))。對于處于其他層的前綴來說,需要記錄某一長度前綴的起始位置s(n)和e(n)(n代表前綴長度),s(n)和e(n)為大于零的正整數(shù)。它們被記為s(8),s(9),…,s(24)和e(8),e(9),…,e(24)。同時也要相應(yīng)的記錄各個長度前綴的數(shù)量n(8),n(9),…,n(24)。

      所述更新方法包括插入和刪除兩部分,其中插入方法包括以下步驟:

      步驟501、開始,準(zhǔn)備好要插入的前綴;

      步驟502、判斷要插入的前綴是否應(yīng)該插入到第一層前綴中,如果該前綴應(yīng)該插入到第一層,則執(zhí)行步驟503,否則執(zhí)行步驟508;

      步驟503、判斷要插入的前綴在第一層前綴中是否存在超集p1,如果p1存在,則說明插入前綴所處分支中,有更高層次的前綴,執(zhí)行步驟504,如果不存在,則說明插入前綴同原前綴不相關(guān),執(zhí)行步驟511;

      步驟504、判斷p1在第二層中是否存在超集p2,如果p2存在,則說明存在更高層次的前綴,執(zhí)行步驟506,如果不存在,則說明p1同tcam模塊2中前綴無關(guān),執(zhí)行步驟505;

      步驟505、將前綴p1插入到第二層前綴中;

      步驟506、將前綴p2插入到其它前綴層中;

      步驟507、將前綴p1移動到p2在移動之前的位置;

      步驟508、如果要插入的前綴應(yīng)該插入到第二層,則執(zhí)行步驟509,否則執(zhí)行步驟511;

      步驟509、判斷被插入前綴在第二層是否存在超集p2,如果存在,則說明存在更高層次的前綴,執(zhí)行步驟510,如果不存在,則說明插入前綴同tcam模塊2中前綴無關(guān),執(zhí)行步驟511;

      步驟510、將前綴p2插入到其它層;

      步驟511、在相應(yīng)的前綴層插入目標(biāo)前綴;

      步驟512、記錄前綴數(shù)量和位置的變化;

      步驟513、結(jié)束此次前綴插入操作;

      在插入過程中,涉及到前綴要插入到某一確定前綴層中,當(dāng)在某一層插入前綴時,首先要在該層找到一個空閑的tcamentry的位置。對于第一層和第二層的前綴,直接將該前綴插入empty1/empty2的最低位置。在把相應(yīng)層數(shù)的前綴數(shù)(num1/num2)加1即可。對于其他層的前綴,首先判斷其前綴長度,并且判斷在相應(yīng)長度的前綴是否存在空閑的tcamentry,如果存在,則返回其所在的位置。如果不存在,則需要以該前綴長度為中心,依次從大于該前綴長度和小于該前綴長度兩個方向檢查該長度前綴開始的位置和結(jié)束的位置,并確定是否有空閑的tcamentry,直到找到空閑的tcamentry的位置,并記錄該位置所處的前綴長度l。在空閑tcamentry被找到后,開始插入過程。首先,要確定插入到哪一層。如果是第一層或第二層,直接插入空閑地址中的最低地址,并在相應(yīng)層前綴數(shù)量加1即可。對于其他前綴層,假設(shè)要插入的前綴的長度為l,返回的空閑tcamentry的位置為loc。如果l比l大,將處于e(l)位置的前綴移動到loc處。因此,e(l)位置為空閑。然后s(l)和e(l)均減一。將處于e(l-1)位置的前綴移動到s(l-1)-1的位置。這樣,在s(l-2)和e(l-1)的位置就有了一個空閑的entry。重復(fù)這樣的迭代過程,直到目標(biāo)前綴被插入到正確的位置。如果l比l小,這個過程是類似的。不同之處在于把處于s(l)位置的前綴移動到loc處,s(l)、e(l)分別加1。同樣也是重復(fù)這樣的迭代,直到目標(biāo)前綴被插入到正確的位置。

      所述刪除方法包括以下步驟:

      步驟601、開始刪除過程,準(zhǔn)備好被刪除的前綴;

      步驟602、判斷被刪除前綴是否位于第一層,如果被刪除前綴位于第一層,則執(zhí)行步驟603,否則執(zhí)行步驟609;

      步驟603、判斷被刪除前綴在第二層中是否有超集p2,如果p2存在,則執(zhí)行步驟604,如果p2不存在,則說明該前綴在原tcam中不存在與其相關(guān)的前綴,直接刪除對后面的查找,更新不產(chǎn)生影響,執(zhí)行步驟613;

      步驟604、判斷p2在第一層前綴中有無與被刪除前綴不同的子集,如果子集存在,則節(jié)點的相對順序關(guān)系不會被破壞,執(zhí)行步驟613,如果不存在子集,則執(zhí)行步驟605;

      步驟605、將前綴p2移動到被刪除的前綴的位置處;

      步驟606、判斷前綴p2在其它層前綴中是否有超集p3,如果p3存在,則執(zhí)行步驟607,如果p3不存在,則說明p2是這一分支的最高層,執(zhí)行步驟613;

      步驟607、判斷前綴p3在第二層前綴中是否存在與p2不同的子集,如果存在,則刪除節(jié)點不會導(dǎo)致節(jié)點相對順序被破壞,執(zhí)行步驟613,如果不存在,則執(zhí)行步驟608;

      步驟608、將前綴p3移動到前綴p2的位置;

      步驟609、判斷被刪除前綴是否位于第二層中,如果位于第二層前綴中,則執(zhí)行步驟610,否則執(zhí)行步驟613;

      步驟610、判斷被刪除前綴在其他層中是否存在超集p3,如果存在,則執(zhí)行步驟611,如果不存在,則被刪除前綴位于其所在分支的最高層,執(zhí)行步驟613;

      步驟611、判斷p3在第二層前綴中有無與被刪除前綴不同的子集前綴,如果該子集存在,則執(zhí)行步驟613,如果不存在,則執(zhí)行步驟612;

      步驟612、將前綴p3移動到被刪除前綴的位置處;

      步驟613、刪除目標(biāo)前綴;

      步驟614、記錄前綴位置和數(shù)量的變化;

      步驟615、結(jié)束此次刪除操作。

      在刪除過程中,涉及到在某一確定前綴層刪除前綴,如果在前綴層1或者前綴層2中,只需要刪除該前綴,并將相應(yīng)層的前綴數(shù)量減一即可。如果在其它層刪除前綴,刪除該前綴,并將相應(yīng)長度的前綴數(shù)量減1,如果刪除的前綴位于s(l),則相應(yīng)的s(l)加一;如果刪除的前綴位于e(l),則相應(yīng)的e(l)減一。

      當(dāng)前第1頁1 2 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1