TW200407010A - Method and apparatus to perform network routing using multiple length trie blocks - Google Patents

Method and apparatus to perform network routing using multiple length trie blocks Download PDF

Info

Publication number
TW200407010A
TW200407010A TW092115980A TW92115980A TW200407010A TW 200407010 A TW200407010 A TW 200407010A TW 092115980 A TW092115980 A TW 092115980A TW 92115980 A TW92115980 A TW 92115980A TW 200407010 A TW200407010 A TW 200407010A
Authority
TW
Taiwan
Prior art keywords
clue
segment
network address
item
length
Prior art date
Application number
TW092115980A
Other languages
English (en)
Other versions
TWI241089B (en
Inventor
Philip P Mathew
Ranjeeta Singh
Harshawardhan Vipat
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of TW200407010A publication Critical patent/TW200407010A/zh
Application granted granted Critical
Publication of TWI241089B publication Critical patent/TWI241089B/zh

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/54Organization of routing tables

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Description

200407010 玫、發明說明: 【發明所屬之技術領域】 本發月係關於-種方法及裝置以改善_網路上的資訊之 路由。更特定言之,本發明係關於使用由不同大小的線索 段所組成之-路由表以及為利用該新路由I而設計之搜尋 及更新演算法,可改善一網路裝置的搜尋及更新效率。 【先前技術】 資訊可利用網路位址經由網路發送。例如,一路由器可 接收需路由至另-網路裝置之資訊。該路由器可利用諸如 -目的地位址之類網路位址,以於_路由表中搜尋適當的 路由資訊4程序亦可稱作「路由查找」。然而,當網路之 大小增大時,路由器用於搜尋以路由資訊之時間隨之減 少。路由器用於以新路由更新路由表之時間亦隨之減少。 因此,即而要減少路由資訊之搜尋及更新時間,以使封包 之處理可更快。 【發明内容】 本發明灸具體實施例可包含一種方法及裝置以改善一網 路上的貝訊〈路由。更特定言之,本發明之一項具體實施 例使用由不同大小的線索段所組成之-路由表以及為利用 該新路由表而設計之搜尋及更新演算法,可改善一網路裝 置的搜尋及更新效率。此處所用的術語「路由表」可指用 以容納與一特足網路位址相關聯的路由資訊之一資料結 構。此處所用的術語「線索段」可指一特定資料結構(諸如 一樹結構等)之一節點。此處所用的術語「路由資訊」可指 86063 -6- 200407010 任何用於經由一網路裝置路由資料之資訊,諸如一埠號、 一介面號、動態媒體存取控制器(Dynamic Media Access Controller ; DMAC)識別項、靜態MAC (SMAC)識別項、最 大傳輸單元(Maximum Transmission Unit ; MTU)、旗標、通 道識別項、佇列識別項等。 例如,本發明之一項具體實施例可使用4位元線索段與8 位元線索段之一組合以儲存一網路位址及有關的路由資 訊。一般而言,較大線索段會減少用於搜尋之記憶體存取, 但亦需要較多的記憶體,且會降低更新速度。反之,較小 線索段會增加記憶體存取,但僅需要較少的記憶體,且會 提供較快的更新速度。因此,本發明之一項具體實施例嘗 試以一將較大線索段與較小線索段組合方式,使其保留優 點而減少有關的缺點。換言之,此組合可提供大線索跨步 與小線索跨步二方案之益處,同時減少其潛在的不足。因 此,諸如路由器之類網路裝置即可更快地實行搜尋及動態 更新網路位址及其相關路由資訊。因而,使用者亦可得益 於改善之網路產品及服務。 【實施方式】 必須注意,說明書中任何提及到「一項具體實施例」或 「一具體實施例」之語句皆表示有關具體實施例的特定功 能、結構或特徵至少包括於本發明的至少一項具體實施例 中。說明書中各處出現的「在一項具體實施例中」辭令不 一定全部代表同一具體實施例。 本文會敘述很多具體細節,以提供對本發明之具體實施 200407010 例的透徹瞭解。然而,㈣技術者應明白,不使用該等具 把細節亦可實施本發明之具體實施例。在其他情況下,為 11免淆本發明之具體實施例,熟知的方法、程序、組件 及私路將不再作詳細說明。應瞭解,本文所披露的具體的 結構及功旎細節具有代表性,並未限制本發明之範疇。 現在詳細參考圖式,其中,相同的部件係使用相同的參 考數孚表示,圖1所示係適合實施本發明之一項具體實施例 的系統。圖1為包含若干藉由一或一以上通訊媒體連接之 罔路節2之一系統i00的方塊圖。在本上下文中,網路節點 (即點」)可為任何能進行資訊通訊之裝置,諸如電腦、伺 一 w人換機、路由器、橋接器、閘道、個人數位助理、 仃動裝且等。通訊媒體可為任何能載送資訊訊號之媒體, 諸又、.’X線、同軸電纜、光纖、射頻、電子、聲音或光學 訊號等。 特疋言之,系統100可包含一源節點102、一中間節| 106及目的地節點11〇。源節點1〇2、中間節點ι〇6及目^ 务.·占110可藉由通訊媒體104及1〇8連接,如圖所示。雖身 圖僅•、肩7F —個源節點、_個中間節點及—個目的地節點 應月白系統1GG中可使用任何數目的網路節點,而不會1 離本發明〈料。另外,本上下文中的術語「連接」、「J 、」及其夂化形式可指實體連接及/或邏輯連接。
本發月之項具體實施例中,系統丨00可包含一封包古 ^同路。本上T又中的封包切換可指根據一或多個通訊浪 、相對較短封包的形式在-網路上進行資訊通訊。本J 86063 200407010 下文中的封包可指一組有限長度的資訊,其長度通常以位 元或位元組表示。封包長度之一範例可為1 〇 〇 〇位元組。協 定可包含一組指令,藉由該等指令資訊訊號在通訊媒體上 通訊。例如,協定可為諸如傳輸控制協定(Transmission Control Protocol ; TCP)及網際網路協定(Internet Protocol ; IP)之類封包切換協定;TCP係網際網路工程特別小組 (Internet Engineering Task Force ; IETF)標準7、意見請求 (Request For Comment ; RFC) 793 所定義、於 1981 年 9月採用 的協定(TCP規格),IP係IETF標準5、RFC791所定義、於1981 年9月採用的協定(IP規格),以上二協定均可從「www.ietf.org」 (統稱為「TCP/IP規格」)獲得。封包可使用任何數目的協定 位址,諸如IP規格所確定的網際網路協定第四版(IPv4)位址 以及IETF網際網路協定第六版(IPv6)標準草案、RFC2460、 曰期為1998年12月的協定(IPv6規格),此二協定亦可從 「www.ietf.org ι 獲得。 在本發明之一項具體實施例中,源節點102可包含一節 點,其產生需傳送至目的地節點110之一組資訊。目的地節 點110可包含一節點,其係該資訊的預期接收者。中間節點 106可包含一節點,其對源節點1〇2與目的地節點110之間的 該資訊進行通訊。在有些情形中,可能有不止一個源節點、 目的地節點及/或中間節點。例如,在多播連接中可存在多 個目的地節點。在另一範例中,在一源節點與一目的地節 點之間經常存在多個中間節點。各範例皆係為清楚解釋本 發明而列舉,但具體實施例不受本上下文的限制。資訊可 200407010 包含任何能表現為-訊號之資料,諸如—電訊號、光學訊 號、聲音訊號等。本上下文中的資訊之範例可為來自—語 音對話、視訊會議、視訊流、電子郵件(email)訊息、語音 郵件訊息、文字數字符號、圖形、影像、視訊、文字等二 料。 貝 在通常的操作中,源節點102可根據TCP/Ip規格經由中間 節點106發送資訊至目的地節點110。源節點將一組資訊拆 散為一封包序列。各封包皆可包含該資訊之一部分加上— 些控制資訊。該控制資訊可協助網路中的中間節點將各封 包路由至目的地節點。源節點102可將該等封包發送至中間 節點106。中間節點106可接收該等封包,短暫儲存之,然 後將其傳送至下一中間節點或目的地節點110。目的地節點 11 〇取、·’;可接收到整個封包序列,且可使用其以再製源節點 102所發送之原始資訊。 圖2顯示依據本發明之一項具體實施例之一處理系統的 方塊圖。圖2可顯示一處理系統2〇〇 ,其併入之功能可實施 為藉由一處理器執行之軟體、硬體電路或結構或二者之組 合。孩處理器可為一通用處理器或專用處理器,諸如英特 爾(Intel)公司、摩托羅拉⑽〇t〇r〇la)公司、昇陽電腦(3仙 Microsystems)公司及其他公司所製造的處理器家族中的一 款處理器。該軟體可包含程式化邏輯、指令或資科,以實 施本發明之一項具體實施例的某些功能。該軟體可儲存於 可藉由一機器存取之一媒體中或一電腦可讀媒體中,諸如 唯視圮憶體(read-〇nly memory ; ROM)、隨機存取記憶體 86063 200407010 (random-access memory ; RAM)、磁碟(例如軟碟片及硬驅動 ' 機)、光碟(例如CD-ROM)或任何其他資料儲存媒體。在本 發明之一項具體實施例中,該媒體可儲存壓縮及/或加密格 式的程式化指令,以及在藉由該處理器執行之前需編譯或 需藉由一安裝器安裝之指令。或者,本發明之一項具體實 施例可實施為包含硬佈線邏輯以實行所述功能之特定硬體 u 組件,或藉由任何程式化通用電腦組件及定製硬體組件之 組合實施。 φ 在本發明之一項具體實施例中,處理系統200可包含一接 收介面202、一搜尋模組204、一傳輸介面206以及一更新模 組208。接收介面202可接收封包,且控制對搜尋模組204的 處理及路由。搜尋模組204可利用自封包中取出之控制資訊 於一路由表中搜尋路由資訊。傳輸介面206可使用該路由資 訊將封包與其下一目的地通訊。更新模組208可根據指令及 自特殊控制封包中取出之更新資訊更新該路由表。 更特定言之,搜尋模組204搜尋具有一唯一資料結構之一 β 路由表,該資料結構係經最佳化,以提高諸如路由器之類 網路裝置的搜尋及更新效率。搜尋模組204可利用較傳統搜 尋演算法更為有效的一搜尋演算法搜尋該路由表。例如, 對於 IPν4/ΙΡν6最長前置匹配(Longest Matching Prefix ; LPM) 查找存在若干演算法。然而,該等演算法中的大多數會在 記憶體中建立複雜的資料結構以加快搜尋。若缺少記憶體 快取階層結構,則存取該等資料結構實質上可使搜尋程序 ‘ 變慢。因此,在搜尋路由表以及另外在執行路由表更新時, 86063 -11 - 200407010 藉由減少對記憶體的存取之次數可改善諸如路由器之類網 路裝置的性能。 柏克萊軟體設計(Berkeley Software Design ; BSD)及 Linux 核心中所採用的一種熟知的IP v6實施方案利用具有二元數 基樹(binary radix tree)或1位元線索之一 Patricia樹搜尋演算 法。1位元線索係其中各節點皆包含一 0指標、一 1指標以及 (可能有)一前置的樹。前置之個別位元決定儲存前置之節 點。該搜尋演算法一次考慮一目的地IP位址之一位元,且 根據該位元之值遍歷該樹以找到一匹配前置。該等實施方 案可有效地處理任意長度之前置,但當路由表中的項數增 加時,其性能亦隨之下降。結果,該等實施方案可能需要 進行與目的地位址中的位元數相等次數的記憶體存取,例 如對於IPv6進行128次記憶體存取。此即導致利用更高數基 的樹,即多位元線索。 對於一線索,利用更高數目的位元可減少記憶體存取的 次數,但會引入二新問題。第一,每一線索結構可能需要 更多的記憶體。第二,實行某些增加及刪除可能需要更多 次數的記憶體存取。以一 4位元線索為例,匹配一通常的64 位元IPv6前置可能需要16次靜態隨機存取記憶體(SRAM)存 取。若使用8位元線索段,則同樣的路由查找僅需要8次 SRAM存取。然而,所具有之長度不為8的倍數之前置將需 要多達128次SRAM存取以增加/刪除一路由。因此,線索的 大小可部分決定搜尋效率與更新效率之間的折衷。較高的 線索結構可幫助加快搜尋程序,但可能會使某些路由項的 86063 -12- 200407010 更新變得不划算。 本發明之一項具體實施例利用具有不同長度之線索的組 合可解決此折衷問題。例如,在本發明之一項具體實施例 中’路由表係由4位元線索及8位元線索組成。此可參考圖3 作更詳細論述。 圖3係依據本發明之一項具體實施例之一搜尋模組的方 塊圖。圖3顯示一搜尋模組300,其可代表(例如)搜尋模組 204。搜尋模組3〇〇可包含一位址擴取模組3〇2、一位元擴取 模組304、一線索識別模組306以及一路由決策模組3〇8。在 本發明之一項具體實施例中,位址擷取模組3 〇2可自封包中 擷取一網路位址。該網路位址可為(例如)_lp目的地位址。 位元擷取模組304可自該網路位址中擷取位元。線索識別模 組306可利用該等擷取之位元識別下一線索的一線索識別 項或跨步位元。本文所使用之術語「線索識別項」及「跨 步位元」可全體地指用以識別一資料結構中下一線索的一 識別項。例如,在本發明之一項具體實施例中,該線索識 別項可為「0」用以代表一 4位元線索表,或為「丨」用以代 表一 8位元線索表,但本發明之具體實施例並不侷限於此。 線索識別項及線索資料結構會參考圖7及8作更詳細論述。 一旦完全遍歷該路由表’路由決策模組3 〇8即可取得該路由 資訊。 在操作中,搜尋模组300可搜尋具有由表示路由項的4 元及8位元線索所組成的一資料結構之—路由表。可擷取 128位元目的地IPv6位址之最前8位元,且縣甘 且微其用作一基本 86063 -13 - 200407010 位元、泉索表的索引。依據當前線索項中的下一跨步位元, 使用邊位址之4或8位元部分遍歷後繼的線索表(若有)。繼續 此私序直至遇到下一 2值線索指標。在遍歷線索時,下 一中繼段指標可保存於一固定位置。搜尋終止後,此位置 可包含指向下一中繼段資訊之指標。 圖4係依據本發明之一項具體實施例之一更新模組的方 塊圖。圖4顯示一更新模組4〇〇,其可代表(例如)更新模組 208。在本發明之一項具體實施例中,更新模組4⑻可包含 一位元擷取模組402、一線索識別模組4〇4、一線索分配模 、、且4 0 6 控制如置展開模組4 0 8以及一線索連接模組41 〇。 位元擷取模組402可自諸如一 IP目的地位址之類網路位址 中擷取位元。線索識別模組4〇4可利用該等擷取之位元識別 一下一線索。線索分配模組406可根據該下一線索的狀態分 配一新線索。控制前置展開模組408可根據該網路位址中剩 餘未梅取的位元之數目實行控制前置展開。本文所用的術 語「控制前置展開」可指任何導致多個指向相同下一中繼 段路由項之線索項的控制前置展開演算法。線索連接模組 410可連接映射之線索。 在操作中,更新模組400可更新具有由表示路由項的斗位 元及8位元線索所組成的一資料結構之一路由表。對於各路 由項’其前置長度可決定該位址至該等線索結構的映射。 為增加一路由,取出該前置位址之8位元部分且將其峡射至 8位元線索表,直至該前置的所有位元皆得到處理,或剩餘 需處理的位元少於8位元。將剩餘位元映射至一或二4位元 86063 -14- 200407010 線索表。若剩餘位元之數 σ 6 數’則可使用控制之 則置展開’且可設定多個緩 %、 泉索項在設足該等線索表時, 权足或清除各線索項中的跨 。跨步位兀以指示其下-線索段係 一 4位το抑或一 8位元線帝。导銘一始土 、 ’、取後一、,泉索項中的下一中繼段 指標係設定為指向轉發封包 乙王卜1f繼段所必要的路由資 訊0 、 系統100至400之操作將參考圖5至1〇及隨附的範例作進 步說明冑然本文所提供的圖5至1〇中之某些或全部可包 含-特足處理邏輯,但應明白該處理邏輯僅提供本文所描 述的-般功能可如何實施之_範例。另外,在給定的處理 邏輯内各操作並不需要照所列次序執行,除非另有說明。 圖5及6係依據本發明之一項具體實施例,分別由一搜尋 模組及一更新模組所實行的操作之方塊流程圖。在本發明 之一項具體實施例中,該等模組可指用於實施本文所描述 的一或一以上具體實施例之功能的軟體及/或硬體。在本發 明之茲項具體實施例中,該等模組可實施為諸如處理系統 200之類處理系統的部分。然而,應明白,此功能可藉由位 於通訊網路中任意位置的任何裝置或裝置之組合實施,而 不會背離本發明之範_。 圖5顯示依據本發明之一項具體實施例之一搜尋模組的 程式化邏輯500。如程式化邏輯5〇〇所示,在方塊502處可接 收具有一網路位址之一封包。在方塊504處,可於一路由表 中搜尋有關該網路位址之路由資訊。該路由表可包含(例如) 一第一組具有一第一長度之線索段以及一第二組具有一第 86063 -15 - 之具體實施例並不侷限於此。在方塊506處,可使用該路由 資訊以路由該封包。 、〈、泉索段。在本發明之一項具體實施例中,該第一 又σ 8位兀’而該第二長度可包含4位元,但本發明 在本,明〈—項具體實施例中,可藉由自該網路位址中 取出田則位疋段以於該路由表中搜尋路由資訊。與該當 月!位7C段相關聯的—線索段即可得到定位。與該線索段相 關聯的—線索識別項即可得賴別。根據該線索識別項, =可自該網路位址中取得—下―位元段。此程序可重複進 仃’直至遇到-終止條件。例如,該終止條件可包含定位 指向該路由資訊之下—中繼段指標。在另-範例中,該終 止條件可包含定位一無路由(n〇r〇ute)或空指示器。 圖6顯示依據本發明之一項具體實施例之一更新模組的 程式化邏輯600。如程式化邏輯6〇〇所示,在方塊6〇2處可接 收具有-網路位址之-封包。該封包可包含用以更新一路 由表之指令。該路由表可包含(例如)一第一組具有一第一長 度之線索段以及一第二组具有一第二長度之線索段。例 如,該第一長度可包含8位元,而該第二長度可包含4位元, 但本發明之具體實施例並不侷限於此。在方塊6〇4處,可使 用該網路位址之該路由資訊以更新該路由表。 在本發明之一項具體實施例中,可藉由決定是否存在用 於更新的一路由以更新該路由表。根據該決定,使用該網 路位址即可向該路由表中增加一路由。例如,若該路由存 在,則可自該網路位址中取得一當前位元段。與該當前位 86063 -16 - 200407010 元段相闕聯的一線索段即可得到定位。即可取得與該線索 段相闕聯的一線索識別項。根據該線索識別項,即可向該 路由表中增加一新線索段。根據該線索識別項,亦可自該 網路位址中取得下一位元段。此程序可重複進行,直至遇 到一終止條件。然後即可連接該等映射之線索段。 在本發明之一項具體實施例中,該終止條件可包含決定 該網路,址中未取得之位元數目是否少於該第二長^例 如’❹二長度可包含4位元。然後可對長度少於$位元之 剩餘未取得位元實行控制之前置展開。 在本發明之一項具體實施例中 5 硌由可能不存在,而 需要增加—新路由。可自該網路位址中取得一該第一長度 :位元段。對於該第-長度位元段,可向該路由表中增加 …索& & &新線索段指定—線索識別項。此程序可 ^進仃’直至該網路位址中未取得之位缝目少於該第 -長度'然後,可自該網路位址中取得一該第二長度的位 ^段。對於該第:長度位元段,可向該路由表中增加一新 佳索段4该新線索段指定一線索識別項。此程序可持 進行,直至遇到一欲μ故仙 、 該等線索段。” 如上文所述。然後即可連接 ^ 月六菔貫施例之一線索段。 ^ . 泉索鲛700。在此範例中,線索段700可為一 84 的原理亦可應祕任何大小的線索段 ^索段。線索段可包含(例如)總共32位元,: 、疋至15表示指向下-線索表之-指標,位元16表示· 86063 -17 - 200407010 索識別項,而位元17至31表示下一中繼段指標。例如,在 本發明之-項具體實施例中,該線索識別财為「〇」用以 代表下-4位元線索表,而%可代表下_8位元線索表。 圖8顯示依據本發明之一項具體實施例之一路由表的資 料結構。圖8可顯示一資料結構_,其包含一序列線索表: 各線索表皆包含複數個線索段。例如,其8位元線索段可由 類似於線索段700的線索段組成。在本發明之一項具體實施 例中,資料結構800可包含一第—8位元線索表8〇2、一第二 8位兀線索表804、一 4位元線索表806以及一下一跳躍入口 8〇8。如前又所述,各線索表皆可包含任意數目的線索段。 例如,第一 8位元線索表802與第二8位元線索表8〇4均可包 含線索段0至FF (用16進制記法表示)。在另一範例中,斗位 一線索表806可包含線索段〇至ρ。下一跳躍入口 可儲存 路由:貝訊,諸如一埠號、一介面號、dmac、、ΜΤυ、 旗標、通道識別項、佇列識別項等。 可使用一範例進一步說明圖丨至8所示之具體實施例。例 如,藉由擷取一網路位址(諸如一 位元目的地ΙΡν6位址之 類)之最前8位元,一搜尋模組(諸如搜尋模組3〇〇之類)可搜 尋具有一資料結構(諸如資料結構8〇〇之類)之一路由表。然 後,搜尋模組300可使用該等擷取之位元對第一8位元線索 表802進行索引。例如,假設所擷取之第一 8位元為「fe」。 搜尋模組300可於第一8位元線索表8〇2中搜尋線索段「叩」。 如圖8所示,對於線索段FE,於其「路由」欄中找到一空值 「〇」’且該線索識別項係設定為r i」。現在,搜尋模組即 86063 -18- 200407010 知悉該下一線索表為一 8位元線索表,故自該目的地位址中 取得下一 8位元。第一 8位元線索表802中的「下一線索」欄 包含指向該下一線索表的一指標,在此範例中,該下一線 索表係第二8位元線索表804。所取得之下一 8位元表示第二 8位元線索表804之線索段「4」。第二8位元線索表804之線 索段「4」在其「路由」欄中包含一空值「0」,且包含作為 線索識別項「〇」以及指向4位元線索表806之一指標。利用 該新線索識別項,搜尋模組300自該目的地位址中取得該下 一 4位元。所取得之下一4位元表示4位元線索表804之線索 段「A」。4位元線索表806之「路由」欄包含指向儲存於下 一跳躍入口 808中之路由資訊的一下一中繼段指標。然後, 搜尋模組300可取得該路由資訊。 如上述特定範例所示,依據當前線索項中的下一跨步位 元,後繼的線索表(若有)係使用該位址之4或8位元部分遍 歷。繼續此程序,直至遇到下一空線索指標。在遍歷該等 線索時,可將該下一中繼段指標保存於一固定位置。搜尋 終止後,此位置可包含指向該下一中繼段資訊之指標。 在本發明之一項具體實施例中,可使用以下演算法以實 施搜尋模組300 : // 128 bit destination IPv6 address is an array of 4 long-words (LW) // unsigned int DestinationlPAddress [4] ,·
bitsDone - 0; // how far away we are from the MSB in 128-bit Dest IP stride = 8; // current stride bitsToDo - 128; // how many bits need to be processed curPos - Base8Table; // first trie do {
// fetch the correct long-word of destIP // based on the current bit position thisLW = DestinationIpAddress[ bitsDone / 32 ]; // where we are starting in this long-word startBitlnLW = bitsDone % 32; -19- 86063 200407010 // how many bit we have left in this long word bitsRemaininglnLW = 32 - startBitlnLW; // are the bits remaining in this long-word enough // to make a required stride if ( bitsRemaininglnLW < stride ) { // no, stride crossing long-word boundary // fetch appropriate bits from two long-words to make a stride nextLW - DestinationlpAddress [ ( bitsDone / 32) + 1]; index - (thisLW « (stride - bitsRemaininglnLW)) | // bits from
first LW (nextLW >> (32 - (stride - bitsRemaininglnLW))) & // bits from
next LW (stride == 8 ? OxFF : OxF); // mask } else // yes, stride is contained in this long-word // fetch the appropriate bits from this long-word to make a nibble index * (thisLW » (bitsRemaininglnLW - stride)) & (stride -= 8 ? OxFF : OxF) } // get the TrieEntry curEntry = McurPos + index); // next trie pointer curPos = ( curEntry & OxFFFF ) * SIZE一OF一TRIE; if(curEntry & OxFFFEOOOO) { - lastValidRoute - curEntry » 17; } if ((curEntry & OxFFFF) =- 0x0) { goto xit; } // move the position pointer forward bitsDone += stride; // set next stride as indicated by bit 16 stride = (currEntry & 0x10000 ? 8 : 4); } while (bitsDone < bitsToDo ); xit: if (!lastValidRoute) { /* There is no route for this DA ★/ 在更新該路由表之一範例中,該路由程序可藉由啟動搜 尋該路由之目的地子網之程序開始。例如,向該路由表增 加一路由之第一步驟係啟動路由查找程序以查找該路由之 目的地子網。本範例以一 8位元線索表開始。依據增加該路 由所規定的前置長度,可自該目的地位址中擷取8位元或更 少位元,且可將其用於一路由查找。查找程序根據當前線 索項之下一跨步位元(例如位元16)決定須自該前置中擷取 多少個下一位元之數目。若當前線索項係有效,且該下一 -20 - 86063 200407010 跨步位元為〇’則可自該前置中掏取4位元以索引該下一線 索表。若當前線索項係有效’且該下—跨步位元為卜則可 自孩前置中取得8位元以索引該下—線索表。 在查找期間,若遇到下—空值線索指標,且仍存在需查 找的剩餘位址位元,則可分配另外的線素段。另外㈣^ 段之分配係基於需查找的該前置長度之剩餘位元。若需查 找的剩餘位元之長度剛好能用8整除,則所有後繼線索皆: 8位X,否則該前置長度中的所有8位元成分將表示為8位元 線素,而該前置長度之騎位元將表示為4位元線索。在最 後-線索段中,路由指標可設定為指向—新分配之路由, 或指向具H目同的下—中繼段之—已有路由。若路由遮罩 之最後的位元少於4位元,或多於4位元但少於8位元,則可 對該等位元應用控制前置展開以將此項增加至適當的線索 表中。如前述,控制前置展開可導致多個指向相同下一中 繼段路由項之線索項。應設計特定設計實施方案以避免重 寫先前安裝的更特定的路由。可使用遮罩陣列以決定一已 安裝之路由的遮罩是否較當前增加的路由為長。若現有項 的遮罩與該增加之項相同,則該增加操作實質上係一替換。 一旦已使用正確的路由指標更新該最終線索段,即可以 反向順序連接該等線索段。此可有助於防止並行問題,其 中一路由查找與一路由增加同時發生會找到不完全的線索 連接,且會產生意料不到的結果。 在路由指標與下一線索指標增加至線索段之後,即可遞 增一總體統計量(population statistic)。此有助於以後當該等 線索段為空時將其收回。 86063 -21 - 200407010 在本發明之一項具體實施例中,可使用以下演算法以實 施諸如更新模組4 0 0之類更新模組之一路由增加:
Dest - destination subnet Mask = destination mask. trie currentTrie = 8 bit base trie table of the route table numnibs - first 8 bits of the Dest. numlnibs - remaining number of Nibbles of Dest that are of Oxf; prevTrie - currentTrie; currentTrie = currentTrie->subTrie(numnibs) if (currentTrie == NULL) if{ (numlnibs 〇) set currentMas kNib currentNib = Next Nibble of the Dest; currentTrie = NewTrie4(); // Create a 4 bit prevTrie.NextTrieSize = 0; table. numRouteEntries 16 - currentMaskNib; if (numlnibs > 0) for (i - 0; Knumlnibs; i++) if{ (currentTrie NULL) if ((numlnibs - i) >1} currentTrie * NewTrie8〇; // Create an 8 bit trie table. currentNib ® Next 8 bits of the Dest; currentMaskNib ~ set currentMaskNib; prevTrie.NextTrieSize - 1; numRouteEntries ~ 256 - currentMaskNib; i++; 1) else if ((numlnibs - i) currentTrie = NewTrie4(); // Create a 4 bit trie table. currentNib = Next Nibble of the Dest; currentMaskNib - set currentMaskNib; prevTrie.NextTrieSize - 0; numRouteEntries - 16 - currentMas kNib; }} else{ if{ (prevTrie.NextTrieSize 〇) currentNib = Next Nibble of the Dest; currentMaskNib = Set currentMas kN ib; numRouteEntries = 16 - currentMaskNib; } elsei if{ ((numlnibs - i) > 1) currentNib - Next 8 bits of the Dest; currentMaskNib = Set currentMaskNib; numRouteEntries = - currentMaskNib; numRouteEntries = 256 - currentMas kNib; i++;} else{ CurrentMaskNib = set currentMaskNib; currentNib = Remaining bits of Dest; numRouteEntries = 256 - currentMaskNib; break; prevTrie = currentTrie; currentTrie - currentTrie->SubTrie (currentNib); -22 - 86063 200407010 newRoute = new Route (); if (currentTrie == NULL) currentTrie = prevTrie; startEntry = currentNib & currentMaskNib; for (i = 0; i < numRouteEntries;i++) { if (currentTrie->mask[startEntry + i] < currentMaskNib) { CurrentTrie->SetSubRoute(startEntry + i, newRoute); currentTrie->population ++; connect new tries in the reverse order;
Adjust the population appropriately; 為了自路由表中刪除一路由,首先可實行一查找,以查 找該路由之目的地子網。若未發現此路由,則該路由刪除 即不成功。若發現此路由,則可刪除該路由。在最後的線 索段中,可使用該前置資料結構以決定是否存在一覆蓋該 刪除之路由的已安裝之較不特定(less-specific)路由。若存 在,則可使用此下一中繼段路由指標以替換刪除之該下一 中繼段路由指標。若本存在一匹配之較不特定路由,則該 刪除之路由的下一中繼段路由指標可設定為空。 若自該最後線索中成功刪除一路由,則可遞減該線索之 總體統計量。若該新總體量為零,則可刪除該線索且將其 自其上代線索中移除,同時遞減其總體統計量等。此即允 許收回線索段。 在本發明之一項具體實施例中,可使用以下演算法以實 施諸如更新模組400之類更新模組之一路由刪除:
Dest * destination subnet Mask - destination mask. trie currentTrie - 8 bit base trie table of the route table numnibs - first 8 bits of the Dest. numlnibs = remaining number of Nibbles of Dest that are of Oxf; prevTrie - currentTrie; currentTrie = currentTrie->subTrie(numnibs) if (currentTrie — NULL) { if (numlnibs — 0) { set currentMaskNib currentNib = Next Nibble of the Dest; currentTrie = NewTrie4(); // Create a 4 bit trie table. prevTrie.NextTrieSize = 0; numRouteEntries = 16 - currentMaskNib; if (numlnibs > 0) { for (i = 0; i<numlnibs; i++) { if (currentTrie == NULL) -23 - 86063 200407010 throw exception; } else { if (prevTrie.NextTrieSize == 0) { currentNib - Next Nibble of the Dest; currentMaskNib = Set currentMaskNib; numRouteEntries = 16 - currentMaskNib; else { if ((numlnibs - i) >1} { currentNib = Next 8 bits of the Dest; currentMaskNib = Set currentMaskNib; numRouteEntries = - currentMaskNib; numRouteEntries =* 256 - currentMaskNib; i+十; } else {
CurrentMaskNib = set currentMaskNib; currentNib = Remaining bits of Dest; numRouteEntries = 256 - currentMaskNib; break; prevTrie - currentTrie; currentTrie = currentTrie->SubTrie (currentNib); startEntry = currentNib & currentMaskNib; if ^currentTrie == NULL) currentTrie = prevTrie; for (i = 0; i < numRouteEntries;i++) { newRoute - find less specific route using the prefix structures. if (currentTrie->mask [startEntry + i] == currentMaskNib) { CurrentTrie->SetSubRoute (startEntry + i, newRoute); } } currentTrie->population -一;
Remove empty tries. 圖9為依據本發明之一項具體實施例之性能改善的一第 一圖形。圖9所示之圖形反映不同操作所需的記憶體存取之 次數與介於範圍1至64之間的前置長度之間的關係。更特定 言之,圖9顯示一圖形,其中前置長度顯示在X軸上,在該 前置上執行一查找所需之記憶體存取的次數顯示在Y軸上。 此圖形顯示,我們的方案的查找性能接近於8位元線索段方 案的查找性能,通常其記憶體存取次數最少。 圖10為顯示依據本發明之一項具體實施例之性能改善的 一第二圖形。在圖10顯示之圖形中,前置長度顯示在X軸 -24- 86063 200407010 上’增加該前置長度之—致1 路由所需的記憶體存取之次數的 對數顯示在γ轴上。此圄那溢;- ΰ形顯不,此具體實施例的更新效率 可與-4位元線索方案相媲美,在有些情形中,甚至更佳。 圖9及1〇所不(圖形有助於證明此具體實施例之查找性 月匕接近於8位TL線索万案,而其更新性能接近於4位元線索 方案因此,此具體實施例發揚了 4位元及8位元線索二方 案的優點,同時減低了有關缺點。 雖然本發明之具體實施例的某些特徵已在本文中說明, 但熟悉技術者將明白可有許多修正、替代、改變或其等效 形式。因此’須要瞭解所附申請專利範圍係涵蓋所有這些 修正及改變,因其皆包含於本發明之具體實施例的真正精 神之中。 【圖式簡單說明】 在本說明書的結論部份詳細說明視為本發明之具體實施 例的王旨並明確定義本申請專利的範圍。然而,對於本發 明之具體貫施例的組織及操作方法,以及其目的、特徵及 優點’最好參考以上的詳細說明並配合附圖來加以瞭解, 其中: 圖1係適合於實施本發明之一項具體實施例的一系統; 圖2係依據本發明之一項具體實施例之一處理系統的方 塊圖; 圖3係依據本發明之一項具體實施例之一搜尋模組的方 塊圖; 圖4係依據本發明之一項具體實施例之一更新模組的方 86063 -25- 200407010 塊圖; 圖5係依據本發明之—項具體實施例由—搜尋模組所實 行的操作之方塊流程圖; 圖係依據本發明之_項具體實施例由—更新模組所實 行的操作之方塊流程圖; 圖7顯示依據本發明之-項具體實施例的-線索段; 圖8顯7F依據本發明之一項具體實施例之—路由表的資 料結構; 圖9為依據本發明之一項具體實施例之顯示性能改善的 一第一圖形;以及 圖10為依據本發明之一項具體實施例之_示性能改善的 一第二圖形。 【圖式代表符號說明】 100 系統 102 源節點 104 通訊媒體 106 中間節點 108 通訊媒體 110 目的地節點 200 處理系統 202 接收介面 204 搜尋模組 206 傳輸介面 208 更新模組 搜尋模組 位址擷取模組 位元擷取模組 線索識別模組 路由決策模組 更新模組 位元擷取模組 線索識別模組 線索分配模組 控制前置展開模組 線索連接模組 程式化邏輯 方塊 方塊 方塊 程式化邏輯 方塊 方塊 線索段 資料結構 第一 8位元線索表 第二8位元線索表 4位元線索表 下一跳躍入口 -27 -

Claims (1)

  1. 200407010 拾、申請專利範圍: 1· 一種用以實行網路路由之方法,其包各: 接收具有一網路位址之一封包; 搜尋一用於與該網路位址相關聯的路由資訊之路由 表,該路由表包含一第一組具有—第一長度之線索段以 及一第二組具有一第二長度之線索段;以及 使用該路由資訊路由該封包。 2·如申請專利範圍第1項之方法,其中該第一長度包含8位 3. 如申請專利範圍第丨項之方法,其中該第二長度包含4位 元。 4. 如申請專利範圍第1項之方法,其中該搜尋包含: a) 自該網路位址中取得一當前位元段; b) 定位與該當前位元段相關聯的一線索段; c) 取得與該線索段相關聯的一線索識別項; d) 根據該線索識別項自該網路位址中取得一下一位元 段;以及 e) 重複a)至d),直至遇到一終止條件。 5. 如申請專利範圍第4項之方法,其中該終止條件包含對指 向琢路由資訊之一下一中繼段指標定位。 6·如申請專利職第4項之彳法,其中該終止條件包含對一 典路由指示器(no route indicator)定位。 7. 一種用以更新一路由表之方法,其包含: 接收具有一網路位址及指令之一封包以更新一路由 86063 200407010 表,該路由表包含一第一組具有一第一長度之線索段以 f 及一第二組具有一第二長度之線索段;以及 使用該網路位址之路由資訊更新該路由表。 8. 如申請專利範圍第7項之方法,其中該更新包含: 決定是否存在用於更新之一路由; 根據該決定使用該網路位址增加該路由。 _ 9. 如申請專利範圍第8項之方法,其中該路由存在且該增加 包含: ⑩ a) 自該網路位址中取得一當前位元段; b) 足位與该當纟I』位元段相關聯的一線索段; c) 取得與該線索段相關聯的一線索識別項; d) 根據該線索識別項,向該路由表增加一新線索段; e) 根據該線索識別項自該網路位址中取得一下一位元 段; f) 重複幻至e),直至遇到一終止條件;以及 g) 連接該等線索段。 籲 ίο.如申請專利範圍第9項之方法,其中該終止條件包含: 決定該網路位址中未取得之位元數目是否少於該第一 長度;以及 對涿等未取得 < 位元實行控制之前置展開。 U·如申請專利範圍第8項之方法,其中該路由不存在且該增 加包含: ‘ a) 自該網路位址中取得-該第-長度之位元段; · b) 對該第一長度之該位元段向該路由表中增加一新線 86063 -2- 200407010 索段; c) 對該新線索段指定一線索識別項; d) 重複a)至c),直至未取得之位元數目少於該第一長度; Θ自該網路位址中取得一該第二長度之位元段; ♦ f) 對該第二長度之該位元段向該路由表中增加一新線 · 索段; g) 對該新線索段指定一線索識別項; h) 重複e)至g),直至遇到一終止條件;以及 Φ 0 連接該等線索段。 12. 如申請專利範圍第丨丨項之方法,其中該終止條件包含: 決定該網路位址中未取得之位元數目是否少於該第二 長度;以及 對該等未取得之位元實行控制之前置展開。 13. 如申請專利範圍第7項之方法,其中該第一長度包含8位 元,且該第二長度包含4位元。 14· 一種路由裝置,其包含: _ 一接收介面,用以接收具有一網路位址之一封包; 一搜尋模組,用以於一路由表中搜尋路由資訊,該路 由表包含一第一組具有一第一長度之線索段以及一第二 組具有一第二長度之線索段;以及 一傳輸介面,用以使用該路由資訊傳輸該封包。 15.如申請專利範圍第14項之路由裝置,其中該搜尋模組包 含: , 一位址擴取模組,用以自該封包中擷取該網路位址; 86063 200407010 一位元擷取模組,用以自該網路位址中擴取位元; < 一線索識別模組,用以使用該等擷取之位元識別一下 一線索;以及 一路由決策模組,用以取得該路由資訊。 參 16·如申請專利範圍第14項之路由裝置,其進一步包含一更 新模組’用以使用路由資訊更新該路由表。 17. 如申請專利範圍第16項之路由裝置,其中該更新模組包 含: · 一位元擷取模組,用以自一網路位址中擷取位元; 一線索識別模組,用以使用該等擴取之位元識別一下 一線索; 一線索分配模組,用以根據該下一線索的狀態分配一 新線索; 一控制前置展開模組,用以根據該網路位址中剩餘未 擷取的位元之數目實行控制前置展開;以及 一線索連接模組,用以連接該等映射之線索。 ® 18. —種用以管理一網路中路由之系統,其包含: 一源節點,用以使用一網路位址發送一封包; 對應於該網路位址之一目的地節點,用以接收該封 包;以及 一中間節點,用以在該源節點與該目的地節點之間路 · 由該封包,該中間節點具有一路由裝置,用以使用一路 由表路由該封包,該路由表包含一第一組一第一長度之 線索段以及一第二組一第二長度之線索段。 86063 4 200407010 19. 如申請專利範圍第1 8項之系統,其中該第二長度所包含 r 的位元少於該第一長度。 20. 如申請專利範圍第18項之系統,其中該路由裝置包含: 一接收介面,用以接收具有一網路位址之一封包; 一搜尋模組,用以於一路由表中搜尋路由資訊,該路 由表包含一第一組具有一第一長度之線索段以及—第二 · 組一具有第二長度之線索段;以及 一傳輸介面,用以利用該路由資訊傳輸該封包。 鲁 21·如申請專利範圍第18項之系統,其中該路由裝置包含: 一位元擷取模組’用以自一網路位址中擷取位元; 一線索識別模組,用以使用該等擷取之位元識別一下 一線索; 一線索分配模組,用以根據該下一線索的狀態分配一 新線索; 一控制前置展開模組,用以根據該網路位址中剩餘未 擷取的位元之數目實行控制前置展開;以及 _ 一線索連接模組,用以連接該等映射之線索。 22. —種物品,其包含: 一儲存媒體; 該儲存媒體包含儲存之指令,當藉由一處理器執行該 等指令時,其導致··接收具有一網路位址之一封包,搜 尋一用於與該網路位址相關聯的路由資訊之路由表,該 路由表包含一第一組具有一第一長度之線索段以及一第· 一組具有一第二長度之線索段,以及使用該路由資訊路 86063 5 200407010 由該封包。 23.如申請專利範圍第22項之物品,其中當藉由一處理器執 行該等儲存之指令時,其進_步導致藉由以下步驟實施 該搜尋:(a)自該網路位址中取得一當前位元段;(b)定位 與該1前位元段相關聯的一線索段;(c)取得與該線索段 相關、的一線索識別項;⑷根據該線索識別項自該網路
    位址中取得一下一位元段;以及⑷重複⑷至⑷,直至遇 到一終止條件。 24.如申請專利範圍第23項之物品,其中當藉由一處理器彰 行該等儲存之指令時,其進一步導致一終止條件,該终 止條件包含對指向該路由資訊之一下一中繼段指標定 位0 25.如申請專利範圍第如之物品,其中當藉由—處理器執 行該等儲存之指令時,其進-步導致-終止條件,該終 止條件包含定位一無路由指示器。
    26· —種物品,其包含: 一儲存媒體; _該儲存媒體包含儲存之指令,富精由-㈣器執行 等扣v時,其導致:接收具有一網路位址之—封包及 以更新一路由表之指令,該路由表包含-第一組具有 第一長度之線索段以及―第二組具有—第:長度切 段,以及使用該網路位址之路由資訊更新該路由表 27.如申請專利_第26項之物品,其中t藉由—處理 行該等儲存之指令時,其進一步導致藉由以下步驟實 86063 -6 - 200407010 違更新:決定是否存在用於更新之一路由,以及根據該 決定使用該網路位址增加該路由。 28·如申請專利範圍第27項之物品,其中當藉由一處理器執 行該等儲存之指令時,其進一步導致決定該路由存在且 該增加包含:(a)自該網路位址中取得一當前位元段;(b) 定位與該當前位元段相關聯的一線索段;取得與該線 索段相關聯的一線索識別項;(d)根據該線索識別項,向 該路由表中增加一新線索段;(e)根據該線索識別項,自 該網路位址中取得一下一位元段;(f)重複(a)至(e),直至 遇到一終止條件;(g)以及連接該等線索段。 29·如申請專利範圍第28項之物品,其中當藉由一處理器執 行該等儲存之指令時,其進一步導致該終止條件,該終 止條件包含決定該網路位址中未取得之位元數目是否少 於汶第一長度,以及對該等未取得之位元實行控制之前 置展開。 30·如申^專利範圍弟27項之物品’其中當藉由一處理器執 行該等儲存之指令時,其進一步導致決定該路由不存在 且該增加包含:(a)自該網路位址中取得一該第一長度之 位兀段;(b)對該第一長度之該位元段向該路由表中增加 一新線索段;(c)對該新線索段指定一線索識別項;((1)重 複(a)至(c),直至未取得之位元數目少於該第一長度;(幻 自該網路位址中取得一該第二長度之位元段;(f)對該第 一長度之為位元段向該路由表中增加一新線索段;(g)對 該新線索段指定一線索識別項;(h)重複(e)至(g),直至遇 86063 200407010 到一終止條件:以及(i)連接該等線索段。 31.如申請專利範圍第30項之物品,其中當藉由一處理器執 行該等儲存之指令時,其進一步導致該終止條件,該終 止條件包含決定該網路位址中未取得之位元的數目是否 少於該第二長度,以及對該等未取得之位元實行控制之 前置展開。 86063
TW092115980A 2002-06-13 2003-06-12 Method and apparatus to perform network routing using multiple length trie blocks TWI241089B (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/172,522 US7058725B2 (en) 2002-06-13 2002-06-13 Method and apparatus to perform network routing using multiple length trie blocks

Publications (2)

Publication Number Publication Date
TW200407010A true TW200407010A (en) 2004-05-01
TWI241089B TWI241089B (en) 2005-10-01

Family

ID=29733083

Family Applications (1)

Application Number Title Priority Date Filing Date
TW092115980A TWI241089B (en) 2002-06-13 2003-06-12 Method and apparatus to perform network routing using multiple length trie blocks

Country Status (4)

Country Link
US (1) US7058725B2 (zh)
AU (1) AU2003229302A1 (zh)
TW (1) TWI241089B (zh)
WO (1) WO2003107605A1 (zh)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8532127B2 (en) 2001-10-19 2013-09-10 Juniper Networks, Inc. Network routing using indirect next hop data
US7184437B1 (en) 2002-07-17 2007-02-27 Juniper Networks, Inc. Scalable route resolution
US7877504B2 (en) * 2002-08-29 2011-01-25 Intel Corporation Techniques for entry lookups
US7782853B2 (en) * 2002-12-06 2010-08-24 Stmicroelectronics, Inc. Apparatus and method of using fully configurable memory, multi-stage pipeline logic and an embedded processor to implement multi-bit trie algorithmic network search engine
US7304994B2 (en) * 2003-04-09 2007-12-04 Nec Laboratories America, Inc. Peer-to-peer system and method with prefix-based distributed hash table
US7415463B2 (en) * 2003-05-13 2008-08-19 Cisco Technology, Inc. Programming tree data structures and handling collisions while performing lookup operations
US7702882B2 (en) * 2003-09-10 2010-04-20 Samsung Electronics Co., Ltd. Apparatus and method for performing high-speed lookups in a routing table
US7577670B2 (en) * 2004-03-08 2009-08-18 Hewlett-Packard Development Company, L.P. Method and apparatus for inferring address and subnet relationships
US7515588B2 (en) * 2004-03-18 2009-04-07 Intel Corporation Method and apparatus to support a large internet protocol forwarding information base
US7512080B1 (en) * 2005-11-08 2009-03-31 Juniper Networks, Inc. Forwarding tree having multiple bit and intermediate bit pattern comparisons
US20090016355A1 (en) * 2007-07-13 2009-01-15 Moyes William A Communication network initialization using graph isomorphism
US8625604B2 (en) * 2009-12-01 2014-01-07 Polytechnic Institute Of New York University Hash-based prefix-compressed trie for IP route lookup
US8767757B1 (en) 2012-02-15 2014-07-01 Applied Micro Circuits Corporation Packet forwarding system and method using patricia trie configured hardware
US9049148B1 (en) 2012-09-28 2015-06-02 Juniper Networks, Inc. Dynamic forwarding plane reconfiguration in a network device
CN102984062B (zh) * 2012-11-29 2016-06-15 中兴通讯股份有限公司 一种子网路由的处理方法及报文转发设备
US11134117B1 (en) * 2020-06-30 2021-09-28 Amazon Technologies, Inc. Network request intercepting framework for compliance monitoring

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2075048C (en) * 1990-01-30 1999-08-17 Gregory A. Pascucci Networked facilities management system
US5583996A (en) * 1993-03-16 1996-12-10 Bell Communications Research, Inc. Method and system for shortcut routing over public data networks
US5761440A (en) * 1994-09-15 1998-06-02 International Business Machines Corporation System and method utilizing multiple search trees to route data within a data processing network
US5721819A (en) * 1995-05-05 1998-02-24 Silicon Graphics Corporation Programmable, distributed network routing
US5884297A (en) * 1996-01-30 1999-03-16 Telefonaktiebolaget L M Ericsson (Publ.) System and method for maintaining a table in content addressable memory using hole algorithms
JP3832006B2 (ja) 1996-02-26 2006-10-11 富士ゼロックス株式会社 セルラ通信網およびその通信方法
US5940396A (en) 1996-08-21 1999-08-17 3Com Ltd. Method of routing in an asynchronous transfer mode network
US5825768A (en) * 1996-09-30 1998-10-20 Motorola, Inc. Interface for an asymmetric digital subscriber line transceiver
US5916306A (en) * 1996-11-14 1999-06-29 Johnson Controls Technology Communication protocol for a router-based building automation and control network
US6011795A (en) * 1997-03-20 2000-01-04 Washington University Method and apparatus for fast hierarchical address lookup using controlled expansion of prefixes
US6052683A (en) * 1998-02-24 2000-04-18 Nortel Networks Corporation Address lookup in packet data communication networks
US6396842B1 (en) 1998-04-30 2002-05-28 3Com Corporation Method of searching using longest match based Randix Search Trie with variable length keys and having prefix capability
US6522632B1 (en) * 1998-05-06 2003-02-18 Avici Systems Apparatus and method for efficient prefix search
US6430527B1 (en) * 1998-05-06 2002-08-06 Avici Systems Prefix search circuitry and method
US6389024B1 (en) * 1998-06-08 2002-05-14 Excel Switching Corporation Flexible call routing system
US6212184B1 (en) 1998-07-15 2001-04-03 Washington University Fast scaleable methods and devices for layer four switching
US6636498B1 (en) * 1999-01-08 2003-10-21 Cisco Technology, Inc. Mobile IP mobile router
JP3645734B2 (ja) * 1999-02-24 2005-05-11 株式会社日立製作所 ネットワーク中継装置及びネットワーク中継方法
GB9912129D0 (en) 1999-05-26 1999-07-28 3Com Corp Communication device with forwarding database having having a trie search facility
US6567380B1 (en) * 1999-06-30 2003-05-20 Cisco Technology, Inc. Technique for selective routing updates
JP3449326B2 (ja) * 1999-12-08 2003-09-22 日本電気株式会社 データ検索システム及びパケット処理装置並びに制御方法
US6581106B1 (en) * 2000-01-13 2003-06-17 Pierluigi Crescenzi Fast address lookup in routing tables
US20010040895A1 (en) * 2000-03-16 2001-11-15 Templin Fred Lambert An IPv6-IPv4 compatibility aggregatable global unicast address format for incremental deployment of IPv6 nodes within IPv4
US6845091B2 (en) * 2000-03-16 2005-01-18 Sri International Mobile ad hoc extensions for the internet
US6798777B1 (en) * 2000-04-17 2004-09-28 Juniper Networks, Inc. Filtering and route lookup in a switching device
US7966421B2 (en) * 2000-06-21 2011-06-21 SAtech Group, A.B. Limited Liability Company Method and apparatus for logically expanding the length of a search key
US6956858B2 (en) * 2000-06-30 2005-10-18 Mayan Networks Corporation Network routing table and packet routing method
US7047314B2 (en) * 2000-12-28 2006-05-16 Oki Electric Industry Co., Ltd. Duplicate private address translating system and duplicate address network system
JP2002217950A (ja) * 2001-01-15 2002-08-02 Sony Corp 情報処理装置および方法、記録媒体、並びにプログラム
US6996662B2 (en) * 2001-06-18 2006-02-07 Integrated Device Technology, Inc. Content addressable memory array having flexible priority support
US6775737B1 (en) * 2001-10-09 2004-08-10 Cisco Technology, Inc. Method and apparatus for allocating and using range identifiers as input values to content-addressable memories
US6691171B1 (en) * 2002-02-01 2004-02-10 Micrel, Inc. Method and system for address lookup in data communication
US6856991B1 (en) * 2002-03-19 2005-02-15 Cisco Technology, Inc. Method and apparatus for routing data to a load balanced server using MPLS packet labels
US20030220987A1 (en) * 2002-05-21 2003-11-27 Aviation Communication & Surveillance Systems, Llc System and method with environment memory for input/output configuration
US7899067B2 (en) * 2002-05-31 2011-03-01 Cisco Technology, Inc. Method and apparatus for generating and using enhanced tree bitmap data structures in determining a longest prefix match
US7039018B2 (en) * 2002-07-17 2006-05-02 Intel Corporation Technique to improve network routing using best-match and exact-match techniques

Also Published As

Publication number Publication date
AU2003229302A1 (en) 2003-12-31
US20040006639A1 (en) 2004-01-08
TWI241089B (en) 2005-10-01
US7058725B2 (en) 2006-06-06
WO2003107605A1 (en) 2003-12-24

Similar Documents

Publication Publication Date Title
US7039018B2 (en) Technique to improve network routing using best-match and exact-match techniques
US9825860B2 (en) Flow-driven forwarding architecture for information centric networks
TW200407010A (en) Method and apparatus to perform network routing using multiple length trie blocks
KR100705593B1 (ko) 라우팅 시스템 및 라우팅 시스템의 룰 엔트리 관리 방법
JP4716909B2 (ja) ネットワーク接続テーブルを提供するための方法および装置
US9407549B2 (en) System and method for hash-based forwarding of packets with hierarchically structured variable-length identifiers
EP2869515A1 (en) System and method for minimum path mtu discovery in content centric networks
US10616175B2 (en) Forwarding information to forward data to proxy devices
US7257643B2 (en) Method and apparatus to improve network routing
WO2009000200A1 (fr) Procédé pour annoncer un message de parcours, procédé, système et dispositif pour router des paquets
US20080056262A1 (en) Approach for fast ip address lookups
US8923298B2 (en) Optimized trie-based address lookup
US11012358B2 (en) Forwarding table management
WO2020114239A1 (zh) 组播报文的处理方法及装置、存储介质、处理器
WO2017190559A1 (zh) 路由查找方法、装置、分配节点、查找节点及入口节点
WO2018184487A1 (zh) Bier报文的转发方法及装置
WO2021135492A1 (zh) 路由表项的处理方法及装置
CN113315705A (zh) 基于单次哈希布隆过滤器的Flexible IP寻址方法及装置
JP7142106B2 (ja) Icnメッセージの転送方法
US20200036634A1 (en) Hybrid routing table for routing network traffic
WO2022267018A1 (zh) 一种报文匹配方法、装置、网络设备及介质
WO2021088357A1 (zh) 一种用于生成转发信息的方法、装置和系统
KR100429909B1 (ko) 고속 ip룩업 장치를 기반으로 한 고속 ip포워딩 엔진제어 장치 및 방법
JP2007221514A (ja) ルータ装置、ルータ装置におけるルート決定方法
KR100778348B1 (ko) IPv6 라우터의 라인 카드에서 터널 포워딩 정보 구축방법

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees