国产精品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>

      查找鍵值生成裝置及方法

      文檔序號:6458120閱讀:210來源:國知局
      專利名稱:查找鍵值生成裝置及方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及通信技術(shù)領(lǐng)域,特別涉及一種查找鍵值生成裝置及方法。
      技術(shù)背景在通信網(wǎng)絡(luò)設(shè)備中,特別是交換機和路由器中,為了實現(xiàn)對不同的流進 行不同的處理,需要對接收到的報文,進行報文分類處理,簡稱流分類。將報文進行分類之后,才能決定網(wǎng)絡(luò)設(shè)備將要對其進行的具體操作,如決定 轉(zhuǎn)發(fā)策略或者丟棄。具體的應(yīng)用如訪問控制列表,區(qū)別服務(wù)中需要的流分類, 都需要從報文和客戶設(shè)置的網(wǎng)絡(luò)參數(shù)中提取關(guān)鍵的域值來進行報文分類,從 而提供不同的轉(zhuǎn)發(fā)策略和服務(wù)質(zhì)量。但是,對于不同的客戶、網(wǎng)絡(luò)部署或者 網(wǎng)絡(luò)介質(zhì),進行報文分類時,所關(guān)心的域值是不相同的,因此,進行報文分 類的靈活性和可擴展性是非常重要的。目前,在網(wǎng)絡(luò)設(shè)備上進行報文分類的方法主要有兩類 一類是,應(yīng)用高 速的專用集成電路(Application Specific Integrated Circuits,以下簡稱ASIC ) 提取報文頭或報文數(shù)據(jù)中的相關(guān)域值,例如,標(biāo)準(zhǔn)的IP報文分類用的報文五 元組,包括源IP、目的IP、源端口、目的端口、協(xié)議類型號,以及服務(wù)質(zhì) 量的相關(guān)參數(shù),作為查詢內(nèi)容尋址內(nèi)存(Content Addressable Memory,以下 簡稱CAM)或三重內(nèi)容尋址內(nèi)存(Ternary Content Addressable Memory, 以下簡稱TCAM)用的查找鍵值;查詢CAM或TCAM得到相應(yīng)的索引值, 再去查找線性表得到相關(guān)的動作表項;網(wǎng)絡(luò)設(shè)備再根據(jù)動作表項對報文進行 相關(guān)的操作,例如決定轉(zhuǎn)發(fā)策略或丟棄。這種基于ASIC電路提取報文頭或報文數(shù)據(jù)中的相關(guān)域值的報文分類方 法,能保證高速轉(zhuǎn)發(fā)報文的要求,但是靈活性很差,對于不同用戶或者不同網(wǎng)絡(luò)部署的報文轉(zhuǎn)發(fā)策略,這種固定的報文分類方法不能滿足差異化的需求。 另一類是, 一般在低速網(wǎng)絡(luò)設(shè)備上,有應(yīng)用軟件編程的方法來對報文進行分類的方法,可以根據(jù)需要,通過編寫軟件代碼,確定提取報文頭或報文數(shù)據(jù)中的哪些信息作為報文分類所需的關(guān)鍵域值,從而滿足對不同協(xié)議或者不同網(wǎng)路部署引入的報文分類的不同的需求。軟件編程對報文進行分類的優(yōu)點是靈活性高,能夠滿足差異化的需求。然而,目前應(yīng)用的軟件編程方法的最大瓶頸是通用的CPU架構(gòu)以及程序代碼的運算效率,制約了軟件編程進行報文分類的方法在高速網(wǎng)絡(luò)設(shè)備上的應(yīng) 用。發(fā)明內(nèi)容本發(fā)明實施例提供一種查找鍵值生成裝置及方法,對于不同協(xié)議、不同 網(wǎng)絡(luò)部署或不同用戶的報文轉(zhuǎn)發(fā)策略,能夠?qū)崿F(xiàn)報文的靈活分類,還能夠滿 足報文高速轉(zhuǎn)發(fā)的要求。本發(fā)明實施例提供了一種查找鍵值生成裝置,包括 提取單元,用于提取報文數(shù)據(jù)及前級電路的處理結(jié)果; 處理方式配置單元,用于存儲查找鍵值處理方式;控制單元,用于根據(jù)所述提取單元提取的所述前級電路的處理結(jié)果,按 所述處理方式配置單元中存儲的相應(yīng)的查找鍵值處理方式控制查找鍵值的生 成;多個查找鍵值產(chǎn)生單元,用于在所述控制單元的控制下,并行處理多個 所述報文數(shù)據(jù),生成多個查找鍵值。本發(fā)明實施例提供了一種查找鍵值生成方法,包括 提取報文數(shù)據(jù)及前級電路的處理結(jié)果;根據(jù)提取的前級電路的處理結(jié)果,確定相應(yīng)的查找鍵值處理方式; 按照所述相應(yīng)的查找鍵值處理方式,并行處理提取的多個所述報文數(shù)據(jù)和/或前級電路的處理結(jié)果,同時生成多個查找鍵值。由以上技術(shù)方案可知,本發(fā)明實施例的查找4t值生成裝置及方法,通過 基于可編程的查找鍵值產(chǎn)生單元來生成查找鍵值,設(shè)計了比較專用的微碼控 制指令集,比用軟件來產(chǎn)生查找鍵值的裝置性能要高,實現(xiàn)了對查找鍵值產(chǎn) 生單元的靈活性的需求,滿足了不同網(wǎng)絡(luò)部署策略或者不同客戶對報文分類的差異化需求;采用并行處理的方法同時產(chǎn)生多個查找鍵值,從而解決了高速的報文轉(zhuǎn)發(fā)對報文分類查找鍵值生成裝置的性能要求的問題。 下面通過具體實施例并結(jié)合附圖對本發(fā)明做進一步的詳細描述。


      圖1為本發(fā)明查找鍵值生成裝置實施例一的結(jié)構(gòu)示意圖; 圖2為本發(fā)明查找鍵值生成裝置實施例二的結(jié)構(gòu)示意圖; 圖3為包括本發(fā)明實施例查找鍵值生成裝置的報文分類操作裝置的結(jié)構(gòu) 示意圖;圖4為本發(fā)明查找4定值生成方法實施例一的流程示意圖; 圖5為本發(fā)明查找鍵值生成方法實施例中使用的互聯(lián)網(wǎng)協(xié)議第四版 (IPV4)報文內(nèi)容的示意圖。
      具體實施方式
      本發(fā)明實施例的方案是根據(jù)輸入的報文數(shù)據(jù)及前級電路的處理結(jié)果,由 可編程的查找鍵值產(chǎn)生單元生成需要的查找鍵值;然后再利用該查找鍵值查 找CAM或TCAM,或其他相關(guān)算法查找引擎,匹配得到一個索引值,將輸 入的報文進行分類;再用得到的索引值去查找相關(guān)的線性表,得到該分類后 的報文對應(yīng)的動作表項,決定報文的轉(zhuǎn)發(fā)策略或丟棄報文。如圖l所示,為本發(fā)明查找鍵值生成裝置實施例一的結(jié)構(gòu)示意圖,包括 提取單元1,用于提取報文數(shù)據(jù)及前級電路的處理結(jié)果;處理方式配置單元2,用于存儲查找鍵值處理方式;控制單元3,用于根據(jù)提取單元l提取 的前級電路的處理結(jié)果,按處理方式配置單元2中存儲的相應(yīng)的查找鍵值處 理方式控制查找鍵值的生成;多個查找鍵值產(chǎn)生單元4,用于在控制單元3 的控制下,并行處理提取單元1提取的多個報文數(shù)據(jù)和/或前級電路的處理結(jié) 果,生成多個查找鍵值。進一步還可以包括存儲單元5,用于存儲多個查找鍵值產(chǎn)生單元4生成 的多個查找鍵值。提取單元1提取多個報文數(shù)據(jù)及前級電路的處理結(jié)果作為輸入。其中, 報文數(shù)據(jù)主要是從報文頭及報文內(nèi)部提取的部分內(nèi)容,例如,可為現(xiàn)有技術(shù) 中所述的報文五元組中的任意一個或多個數(shù)據(jù);前級電路的處理結(jié)果主要包 括初始程序指針及一些人為定義的和報文內(nèi)容無關(guān)的屬性,前級電路的處理 結(jié)果中至少要包括初始程序指針,本發(fā)明實施例中的查找鍵值生成是靠可編 程的該查找鍵值生成裝置產(chǎn)生的,該初始程序指針用于指示輸入報文對應(yīng)的 處理該報文的微碼程序的初始位置,在該前級電路的處理結(jié)果中還可以包括 有其他和輸入的報文內(nèi)容無關(guān)的信息,例如報文進入路由器的端口號、用 戶對這個端口設(shè)置的一些人為定義屬性,例如這個端口報文的優(yōu)先級,或 者對于這個端口的報文是要做2層流分類還是3層流分類等指示信息。處理 方式配置單元2存儲了多種查找鍵值的處理方式,控制單元3根據(jù)提取單元 1提取的前級電路的處理結(jié)果,主要是前級電路處理結(jié)果中的初始程序指針, 找到處理方式配置單元2中存儲的相應(yīng)的查找鍵值的處理方式控制查找鍵值 的生成;即按照初始程序指針的指示,將各個提取出來的報文數(shù)據(jù)及前級電 路的處理結(jié)果分配給不同的查找一建值產(chǎn)生單元4,來生成不同的查找^:值。 然后再根據(jù)微碼程序指示,存儲單元5把各個查找鍵值產(chǎn)生單元4的處理結(jié) 果,收集在該存儲單元5中;再從該存儲單元5中取出查找鍵值,按照順序 發(fā)送給CAM或TCAM,或者其他的算法查找引擎。其中多個查找鍵值產(chǎn)生單元4是一組功能相同的通過可編程的微碼控制的查找鍵值產(chǎn)生單元4,根據(jù)輸入的報文數(shù)據(jù)和/或前級電路的處理結(jié)果的不 同,其生成的查找鍵值的類型和長度也都可以不相同。在具體實現(xiàn)方案中, 需要根據(jù)報文轉(zhuǎn)發(fā)的處理性能要求和報文轉(zhuǎn)發(fā)電路的工作頻率,以及微碼的 處理效率來決定需要幾個查找鍵值產(chǎn)生單元來同時生成查找鍵值。查找鍵值產(chǎn)生單元4的個數(shù)可以用下述基本公式推算得到假設(shè)該報文轉(zhuǎn)發(fā)的處理性 能是xMPPS (每秒鐘處理x兆個報文),報文轉(zhuǎn)發(fā)電^各的時鐘頻率是cMHz, 即要求每c/x個周期處理一個報文,假設(shè)單個查找鍵值產(chǎn)生單元4生成某種 類型的查找鍵值要y個周期(微碼程序執(zhí)行所需要的時延加上電路流水線的 固定時延),可以推算得到所需要的查找鍵值產(chǎn)生單元4的個數(shù)N為y/(c/x) 個,即可以達到系統(tǒng)處理性能的要求。由此可見,通過合理的選擇,該多個 查找鍵值產(chǎn)生單元4并行處理報文的流量吞吐率可以達到ASIC電路處理相 同報文的流量吞吐率,因此,并行的處理架構(gòu)能夠滿足高速網(wǎng)絡(luò)設(shè)備性能的 要求、可擴展性好。本實施例采用的方法是通過基于可編程的查找鍵值產(chǎn)生單元來生成查找 鍵值,設(shè)計了比較專用的微碼控制指令集,比用軟件來產(chǎn)生查找鍵值的裝置 性能要高;但是比起ASIC電路,這種靈活性還是存在對該查找鍵值生成裝 置的性能的犧牲,單靠提高單個可編程的查找鍵值產(chǎn)生單元的工作頻率來提 高其處理性能,始終受到工藝的限制,不能滿足更高性能的要求。因此,本 實施例采用并行處理的方法同時產(chǎn)生多個查找鍵值,從而解決了高速的報文 轉(zhuǎn)發(fā)對報文分類查找鍵值生成裝置的性能要求的問題。如圖2所示,為本發(fā)明查找鍵值生成裝置實施例二的結(jié)構(gòu)示意圖,本實 施例主要用以說明一個查找鍵值產(chǎn)生單元4的內(nèi)部結(jié)構(gòu)。查找鍵值產(chǎn)生單元據(jù)塊;鍵值提取模塊42用于在所述控制單元的控制下,根據(jù)塊選擇電路41 提取的數(shù)據(jù)塊生成查找鍵值。為了實現(xiàn)可以更加靈活的生成查找鍵值,該查找鍵值產(chǎn)生單元4還可以包括字節(jié)間重排序電路43。此時,塊選4奪電路41用于乂人報文數(shù)據(jù)和/或前級電路的處理結(jié)果中提取第一數(shù)據(jù)塊;字節(jié)間重排序電路43用于將第一數(shù)據(jù)塊 進行字節(jié)間重排序,生成第二數(shù)據(jù)塊;并且鍵值提取模塊42用于在所述控制 單元的控制下,根據(jù)第一數(shù)據(jù)塊或第二數(shù)據(jù)塊生成查找鍵值。該查找鍵值產(chǎn)生單元4還可以包括字節(jié)內(nèi)重排序電路44,實現(xiàn)比上述兩 種裝置都靈活,并且基于比特粒度的查找鍵值生成裝置。塊選擇電路41用于 從報文數(shù)據(jù)和/或前級電路的處理結(jié)果中提取第一數(shù)據(jù)塊;字節(jié)間重排序電路 43用于將第一數(shù)據(jù)塊進行字節(jié)間重排序,生成第二數(shù)據(jù)塊;字節(jié)內(nèi)重排序電 路44用于將第二數(shù)據(jù)塊,進行字節(jié)內(nèi)重排序,生成第三數(shù)據(jù)塊;鍵值提取模 塊42用于在所述控制單元的控制下,根據(jù)第一數(shù)據(jù)塊或第二數(shù)據(jù)塊或第三數(shù) 據(jù)塊生成查找鍵值。在本實施例中的查找鍵值產(chǎn)生單元中還包括有鍵值寄存器45,用于存儲 塊選擇電路41或字節(jié)間重排序電路43或字節(jié)內(nèi)重排序電路44生成的數(shù)據(jù)塊 中提取的查找鍵值。進一步的,本實施例中的處理方式配置單元2具體可以為微碼指令存儲 器21,用于存儲控制查找鍵值產(chǎn)生單元4中塊選擇電路41、字節(jié)間重排序電 路43、以及字節(jié)內(nèi)重排序電路44的微碼指令集,即查找^t值的處理方式; 控制單元3具體可以為微碼指令控制器31,用于更新程序指針指示微碼指令 在微碼指令存儲器21的位置;并控制查找鍵值產(chǎn)生單元4中的塊選擇電路 41、字節(jié)間重排序電路43、以及字節(jié)內(nèi)重排序電路44生成查找^:值。該查找鍵:值產(chǎn)生單元4的工作過程如下查找鍵值產(chǎn)生單元4接收到提取單元1提取的報文數(shù)據(jù)及前級電路的處 理結(jié)果后,微碼指令控制器31用于根據(jù)前級電路的處理結(jié)果給出對應(yīng)的微碼 指令存儲器21中的微碼程序的初始程序指針更新程序指針,并從微碼指令存 儲器21中讀出第一微碼指令201;查找鍵值產(chǎn)生單元4中的塊選擇電路41 用于根據(jù)微碼指令控制器31解析出來的第 一微碼指令201,從報文數(shù)據(jù)中或者報文數(shù)據(jù)和前級電路的處理結(jié)果中提取出第一數(shù)據(jù)塊A;字節(jié)間重排序電 路43根據(jù)第二微碼指令202,即從初始程序指針?biāo)甘镜奈⒋a指令存儲器21 的程序順序向下執(zhí)行得到的微碼指令,將提取出的第 一數(shù)據(jù)塊A以字節(jié)為單 位重新排序生成第二數(shù)據(jù)塊B;字節(jié)內(nèi)重排序電路44根據(jù)第三微碼指令203, 將第二數(shù)據(jù)塊B以比特為單位在字節(jié)內(nèi)進行重新排序生成第三數(shù)據(jù)塊C;鍵 值提取模塊42再根據(jù)塊選擇電路41提取的第一數(shù)據(jù)塊A,或者字節(jié)間重排 序電路43提取的第二數(shù)據(jù)塊B,或者字節(jié)內(nèi)重排序電路44提取的第三數(shù)據(jù) 塊C生成查找鍵值;鍵值寄存器45根據(jù)第四微碼指令204發(fā)送的掩碼指令, 把數(shù)據(jù)塊C中經(jīng)字節(jié)間重排序電路43或字節(jié)內(nèi)重排序電路44排序好的,需 要的某幾位bit值寫入鍵值寄存器45對應(yīng)的位置,完成查找鍵值的生成。微 碼指令控制器31根據(jù)微碼指令的執(zhí)行情況一直控制更新程序指針,直到對應(yīng) 的處理程序執(zhí)行完畢。其中,塊選擇電路41、字節(jié)間重排序電路43、字節(jié)內(nèi)重排序電路44, 依次分3個粒度對輸入的報文數(shù)據(jù)或前級電路的處理結(jié)果進行了提取或者移 位,這樣的分級結(jié)構(gòu),比較直接的以比特為粒度進行提取或移位,可減少實 現(xiàn)電路的面積。塊選擇電路41,可以實現(xiàn)以任意字節(jié)為起始位置的,固定字 節(jié)數(shù),整塊數(shù)據(jù)的提??;字節(jié)間重排序電路43,可以實現(xiàn)字節(jié)間的任意排序, 不受初始位置的限制;字節(jié)內(nèi)重排序電路44,可以以比特數(shù)據(jù)為單位實現(xiàn)字 節(jié)內(nèi)部的循環(huán)移位。上述三個功能電路相結(jié)合,就可以實現(xiàn)以比特為粒度的 對于任意數(shù)據(jù)塊的任意位置的重排序。本實施例提供的查找鍵值產(chǎn)生單元的內(nèi)部具體結(jié)構(gòu),通過塊選擇電路41 、 字節(jié)間重排序電路43、字節(jié)內(nèi)重排序電路44,依次分3個粒度對輸入的報文 數(shù)據(jù)或前級電路的處理結(jié)果進行了處理;并且還可以通過微碼程序?qū)ι鲜鋈?個電路進行控制,實現(xiàn)了對查找鍵值產(chǎn)生單元的靈活性的需求,滿足了不同 網(wǎng)絡(luò)部署策略或者不同客戶對報文分類的差異化需求。如圖3所示,為本發(fā)明實施例報文分類操作裝置的結(jié)構(gòu)示意圖?;谏鲜鰞蓚€實施例的查找鍵值生成裝置結(jié)構(gòu),結(jié)合報文分類及操作裝置,即可組成整個報文分類的裝置。具體包括查找鍵值產(chǎn)生單元組101,是一組并行 處理的多個單元,用于同時生成多個查找鍵值;其產(chǎn)生的查找鍵值送入一個 或多個CAM,或者一個或多個TCAM,或者其他相關(guān)的算法查找引擎102 中,匹配CAM或TCAM或其他相關(guān)的算法查找引擎102中的對應(yīng)值,得到 一個索引值;再根據(jù)這個索引值去查找相關(guān)的動作線性表103,得到對應(yīng)的 動作表項,網(wǎng)絡(luò)設(shè)備再按照這個動作表項定義的內(nèi)容去操作報文,決定轉(zhuǎn)發(fā) 策略或丟棄。如圖4所示,為本發(fā)明查找鍵值生成方法實施例一的流程示意圖,具體 步驟如下步驟401 、提取報文數(shù)據(jù)及前級電路的處理結(jié)果;報文數(shù)據(jù)為要進行報文分類的報文內(nèi)部的數(shù)據(jù),例如,可為現(xiàn)有技術(shù)中 所述的報文五元組中的任意一個或多個數(shù)據(jù);前級電路的處理結(jié)果中至少要 包括初始程序指針,本發(fā)明實施例中的查找鍵值生成是靠可編程的查找鍵值 生成裝置產(chǎn)生的,該初始程序指針用于指示輸入報文對應(yīng)的處理該報文的微 碼程序的初始位置,在該前級電路的處理結(jié)果中還可以包括有其他和輸入的 報文內(nèi)容無關(guān)的信息,例如報文進入路由器的端口號、用戶對這個端口設(shè) 置的一些人為定義屬性,例如這個端口報文的優(yōu)先級,或者對于這個端口 的報文是要做2層流分類還是3層流分類等指示信息;步驟402、根據(jù)提取的前級電路的處理結(jié)果,確定相應(yīng)的查找鍵值處理 方式;步驟403、按照相應(yīng)的查找鍵值處理方式,并行處理提取的多個報文數(shù) 據(jù)和/或前級電路的處理結(jié)果,同時生成多個查找鍵值;由于利用可編程的查找鍵值生成裝置不如ASIC電路對報文處理的速度 快,所以釆用了并行的多個電路同時對多個報文數(shù)據(jù)進行處理,這樣可以在 處理一個報文的時間內(nèi)生成多個查找鍵值,加快了報文的處理速度;進一步的,還包括步驟404、存儲同時生成的多個查找鍵值。收集的多個查找鍵值,再被按照一定的順序取出,發(fā)送給CAM之類的 查找引擎,對報文進行分類。本實施例采用的方法是通過基于可編程的查找^t值產(chǎn)生單元來生成查找 鍵值,設(shè)計了比較專用的微碼控制器結(jié)構(gòu)和指令集,比用軟件來產(chǎn)生查找鍵 值的方法性能要高;但是比起ASIC電路產(chǎn)生查找4A值的方法,該方法還是 存在對電路性能的犧牲,單靠提高單個可編程的查找鍵值產(chǎn)生單元的工作頻 率來提高處理性能,始終受到工藝的限制,不能滿足更高處理性能的要求, 因此,本實施例采用并行處理的方法同時產(chǎn)生多個查找鍵值,從而解決了高 速的報文轉(zhuǎn)發(fā)對報文分類查找鍵值生成裝置的性能要求的問題。本發(fā)明查找鍵值生成方法實施例二的具體步驟如下步驟501、提取報文數(shù)據(jù)及前級電路的處理結(jié)果;步驟502、根據(jù)提取的前級電路的處理結(jié)果,確定相應(yīng)的查找鍵值處理 方式;步驟503、按照相應(yīng)的查找鍵值處理方式,并行處理提取的多個報文數(shù)據(jù)和/或前級電路的處理結(jié)果,同時生成多個查找鍵值;該并行處理生成查找鍵值的過程中對每個報文數(shù)據(jù)及前級電路的處理結(jié)果的處理分別如下步驟5031、從報文數(shù)據(jù)和/或前級電路的處理結(jié)果中提取第一數(shù)據(jù)塊; 步驟5032、將第一數(shù)據(jù)塊進行字節(jié)間重排序,生成第二數(shù)據(jù)塊; 步驟5033、將第二數(shù)據(jù)塊進行字節(jié)內(nèi)重排序,生成第三數(shù)據(jù)塊; 步驟5034、根據(jù)第一數(shù)據(jù)塊或第二數(shù)據(jù)塊或第三數(shù)據(jù)塊,生成查找鍵值。 上述第一數(shù)據(jù)塊或第二數(shù)據(jù)塊或第三數(shù)據(jù)塊均可以生成所需的查找鍵值,具體處理如下例所述以IPV4網(wǎng)絡(luò)的報文分類為例,如圖5所示,為IPV4報文的內(nèi)容,第一行0 3為十位數(shù)字,第二行0 9為個位數(shù)字,每行都有32bit數(shù)據(jù),每兩個"+"間表示lbit,每個格子中為該報文中的某一種域值數(shù)據(jù)。假設(shè)報文分類所關(guān)心的域值有{Source Address[31:8], Destination Address[31:8], Protocol[7:0], Type of Service [2:0], Ingress Port[4:0]},其中,Destination Address 和Source Address分別占用了報文內(nèi)容中的一行32bit數(shù)據(jù),但實際只需要高 24位地址作為最后需要的查找鍵值,Type of Service有8bit,該例子中報文分 類只需要前3bit。除了需要從進行分類的報文內(nèi)容中提取查找鍵值,還需要 從前級電路的處理結(jié)果中找到需要的數(shù)據(jù),本實施例中為Ingress Port,即進 入路由器的端口號,只有5bit,即支持32個入端口。輸入的源數(shù)據(jù)為以上提到的報文數(shù)據(jù)和Ingress Port,生成的查找鍵值有 80個bit位。數(shù)據(jù)塊提取一次只能提取40bit數(shù)據(jù),字節(jié)間和字節(jié)內(nèi)排序都是 按照40bit來操作的,因此要提取出上述的數(shù)據(jù)作為查找鍵值,過程如下1) 從IPV4報文數(shù)據(jù)里提取40bit數(shù)據(jù)塊,Source Address[31:0]和 Destination Address[31:24],進行字節(jié)間重排序,4巴Destination Address[31:24] 移到Source Address[31:8]后,不需要進行字節(jié)內(nèi)重排序,通過微碼指令的控 制,將40bit數(shù)據(jù)塊中的[39:8]寫入鍵值寄存器的前32bit,即key[79:48];2) 從lPV4報文數(shù)據(jù)里再提取40bit數(shù)據(jù)塊,Destination Address[31: 0] 和Options[31:24],先進行1次字節(jié)間重排序,把Destination Address [23:16] 移到輸出40bit數(shù)據(jù)塊的[7:0],不需要進行字節(jié)內(nèi)重排序,通過微控指令的控 制,將輸出40bit數(shù)據(jù)塊的[7:0]寫入鍵值寄存器的前40bit中未被寫入數(shù)據(jù)的 低8bit,即key[47: 40];對提取的40bit數(shù)據(jù)塊,Destination Address[31: 0] 和Options[31:24],再進行1次字節(jié)間重排序,把Destination Address[ 15:8]移 到輸出40bit數(shù)據(jù)塊的[39:32],不需要進行字節(jié)內(nèi)重排序,通過微控指令的控 制,將輸出40bit數(shù)據(jù)塊的[7:0]寫入鍵值寄存器的后40bit中的高8bit,即 key[39:32];3) 從lPV4報文數(shù)據(jù)里再提取40bit數(shù)據(jù)塊,IPV4報文頭數(shù)據(jù)的第3行 (包含Protocol域值)和Source Address[31:24],進行字節(jié)間重排序,把Protocol[7:0]移到輸出40bit數(shù)據(jù)塊的[31:24],不需要進行字節(jié)內(nèi)重排序,通 過微控指令的控制,將輸出40bit數(shù)據(jù)塊的[31:24]寫入4建值寄存器的后40bit 中的[31:24],即key[31:24];4) 從lPV4報文數(shù)據(jù)里再提取40bit數(shù)據(jù)塊,IPV4報文頭數(shù)據(jù)的第l行 (包含Type of Service域值)和Identification[7:0],進行字節(jié)間重排序,把TypeofService[7:0]移到輸出40bit數(shù)據(jù)塊的[23:16],進行字節(jié)內(nèi)重排序,把type of service[2:0]移到輸出40bit數(shù)據(jù)塊的[23:21],通過微控指令的控制,將輸出40bit 數(shù)據(jù)塊的[23:21]寫入鍵值寄存器的后40bit中的[23:21],即key[23:21];5) 從前級電路的處理結(jié)果中提取數(shù)據(jù)塊(包含Ingress Port域值),進行 字節(jié)間重排序,把包含Ingress Port[4:0]的8bit字節(jié),移到輸出40bit數(shù)據(jù)塊的 [23:16],進行字節(jié)內(nèi)重排序,把Ingress Port[4:0]移到輸出40bit數(shù)據(jù)塊的[20:16], 通過微控指令的控制,將輸出40bit數(shù)據(jù)塊的[20:16]寫入鍵值寄存器的后40bit 中的[20:16],即key[20:16];經(jīng)過上述的微碼操作就可以生成 一 個需要的查找鍵值。 步驟504、存儲同時生成的多個查找鍵值。值操作,將得到的多個鍵值都存儲起來,按照一定的順序送入一個或多個 CAM或TCAM,或者其他的相關(guān)算法查找引擎,匹配后得到對應(yīng)各個查找鍵 值,即各個報文的索引值,再去查找相關(guān)的動作線性表,得到對應(yīng)的動作表 項,網(wǎng)絡(luò)設(shè)備再按照這個動作表項的定義去操作報文。進行數(shù)據(jù)塊提取,可以實現(xiàn)以任意字節(jié)為起始位置的,固定字節(jié)數(shù),整 塊數(shù)據(jù)的提?。蛔止?jié)間重排序可以實現(xiàn)字節(jié)的任意排序,不受初始位置的限 制;字節(jié)內(nèi)重排序可以實現(xiàn)字節(jié)內(nèi)部的循環(huán)移位;三者相結(jié)合,就可以實現(xiàn) 以比特為粒度的任意位置的數(shù)據(jù)調(diào)整及重排序。而這些任意位置,以任意排 序進行的數(shù)據(jù)調(diào)整可以依靠可編程的微碼程序來實現(xiàn)。本發(fā)明實施例通過依靠可編程的微碼程序來實現(xiàn)提取報文數(shù)據(jù)及前級電路的處理結(jié)果生成不同的查找鍵值的方法,體現(xiàn)了查找鍵值生成的靈活性, 滿足了對不同網(wǎng)絡(luò)部署策略或者不同客戶對報文分類的差異化需求。最后應(yīng)說明的是以上實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述實施例對本發(fā)明進行了詳細的說明,本領(lǐng)域的普通技術(shù) 人員應(yīng)當(dāng)理解其依然可以對前述各實施例所記載的技術(shù)方案進行修改,或者對其中部分技術(shù)特征進行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的精神和范圍。
      權(quán)利要求
      1、一種查找鍵值生成裝置,其特征在于,包括提取單元,用于提取報文數(shù)據(jù)及前級電路的處理結(jié)果;處理方式配置單元,用于存儲查找鍵值處理方式;控制單元,用于根據(jù)所述提取單元提取的所述前級電路的處理結(jié)果,按所述處理方式配置單元中存儲的相應(yīng)的查找鍵值處理方式控制查找鍵值的生成;多個查找鍵值產(chǎn)生單元,用于在所述控制單元的控制下,并行處理多個所述報文數(shù)據(jù)和/或前級電路的處理結(jié)果,生成多個查找鍵值。
      2、 根據(jù)權(quán)利要求1所述的查找鍵值生成裝置,其特征在于,所述查找鍵 值產(chǎn)生單元包括塊選擇電路,用于從所述報文數(shù)據(jù)和/或前級電路的處理結(jié)果中提取數(shù)據(jù)塊;鍵值提取模塊,用于在所述控制單元的控制下,根據(jù)所述數(shù)據(jù)塊生成查 找鍵值。
      3、 根據(jù)權(quán)利要求1所述的查找鍵值生成裝置,其特征在于,所述查找鍵 值產(chǎn)生單元包括塊選擇電路,用于從所述報文數(shù)據(jù)和/或前級電路的處理結(jié)果中提取第一 數(shù)據(jù)塊;字節(jié)間重排序電路,用于將所述第一數(shù)據(jù)塊進行字節(jié)間重排序,生成第 二數(shù)據(jù)塊;鍵值提取模塊,用于在所述控制單元的控制下,根據(jù)所述第一數(shù)據(jù)塊或 所述第二數(shù)據(jù)塊生成查找鍵:值。
      4、 根據(jù)權(quán)利要求1所述的查找鍵值生成裝置,其特征在于,所述查找鍵 值產(chǎn)生單元包括塊選擇電路,用于從所述報文數(shù)據(jù)和/或前級電路的處理結(jié)果中提取第一數(shù)據(jù)塊;字節(jié)間重排序電路,用于將所述第一數(shù)據(jù)塊進行字節(jié)間重排序,生成第二數(shù)據(jù)塊;字節(jié)內(nèi)重排序電路,用于將所述第二數(shù)據(jù)塊,進行字節(jié)內(nèi)重排序,生成 第三數(shù)據(jù)塊;鍵值提取模塊,用于在所述控制單元的控制下,根據(jù)所述第一數(shù)據(jù)塊或 所述第二數(shù)據(jù)塊或所述第三數(shù)據(jù)塊生成查找鍵值。
      5、 根據(jù)權(quán)利要求2-4所述的任一查找鍵值生成裝置,其特征在于,所述 查找鍵值產(chǎn)生單元還包括鍵值寄存器,用于存儲所述鍵值提取模塊提取的 所述查找鍵值。
      6、 根據(jù)權(quán)利要求l-4所述的任一查找鍵值生成裝置,其特征在于,還包 括存儲單元,用于存儲所述多個查找鍵值。
      7、 根據(jù)權(quán)利要求1所述的查找鍵值生成裝置,其特征在于, 所述處理方式配置單元具體為微碼指令存儲器,用于存儲控制所述查找鍵值產(chǎn)生單元的微碼指令;所述前級電路的處理結(jié)果包括程序指針,用于指示對應(yīng)的微碼指令; 所述控制單元具體為微碼指令控制器,用于更新所述程序指針指示所述微碼指令在所述微碼指令存儲器的位置,與所述微碼指令存儲器相連接;并控制所述查找鍵值產(chǎn)生單元生成所述查找^t值。
      8、 一種查找鍵值生成方法,其特征在于,包括 提取報文數(shù)據(jù)及前級電路的處理結(jié)果;根據(jù)提取的前級電路的處理結(jié)果,確定相應(yīng)的查找鍵值處理方式; 按照所述相應(yīng)的查找鍵值處理方式,并行處理提取的多個所述報文數(shù)據(jù) 和/或前級電路的處理結(jié)果,同時生成多個查找4建值。
      9、 根據(jù)權(quán)利要求8所述的查找鍵值生成方法,其特征在于,所述按照所 述相應(yīng)的查找鍵值處理方式,并行處理提取的多個所述報文數(shù)據(jù),同時生成多個查找鍵值具體為從所述報文數(shù)據(jù)和/或前級電路的處理結(jié)果中提取數(shù)據(jù)塊;按照所述相應(yīng)的查找鍵值處理方式,根據(jù)所述數(shù)據(jù)塊生成查找鍵值。
      10、 根據(jù)權(quán)利要求8所述的查找鍵值生成方法,其特征在于,所述按照 所述相應(yīng)的查找鍵值處理方式,并行處理提取的多個所述報文數(shù)據(jù),同時生 成多個查找鍵值具體為從所述報文數(shù)據(jù)和/或前級電路的處理結(jié)果.中提取第 一數(shù)據(jù)塊; 將所述第一數(shù)據(jù)塊進行字節(jié)間重排序,生成第二數(shù)據(jù)塊; 按照所述相應(yīng)的查找鍵值處理方式,根據(jù)所述第一數(shù)據(jù)塊或所述第二數(shù) 據(jù)塊,生成查找鍵值。
      11、 根據(jù)權(quán)利要求8所述的查找鍵值生成方法,其特征在于,所述按照 所述相應(yīng)的查找鍵值處理方式,并行處理提取的多個所述報文數(shù)據(jù),同時生 成多個查找鍵值具體為從所述報文數(shù)據(jù)和/或前級電路的處理結(jié)果中提取第一數(shù)據(jù)塊; 將所述第一數(shù)據(jù)塊進行字節(jié)間重排序,生成第二數(shù)據(jù)塊; 將所述第二數(shù)據(jù)塊進行字節(jié)內(nèi)重排序,生成第三數(shù)據(jù)塊; 按照所述相應(yīng)的查找鍵值處理方式,根據(jù)所述第一數(shù)據(jù)塊或所述第二數(shù) 據(jù)塊或所述第三數(shù)據(jù)塊,生成查找鍵:值。
      12、 根據(jù)權(quán)利要求9、 10或11所述的查找鍵值生成方法,其特征在于, 在所述生成查找鍵值之后還包括存儲生成的所述查找鍵值。
      13、 根據(jù)權(quán)利要求12所述的查找鍵值生成方法,其特征在于在所述存儲 生成的所述查找4A值之后還包括將存儲的所述查找鍵值送入一個或多個算法查找引擎,匹配所述算法查 找引擎中的對應(yīng)值,得到一個索引值;根據(jù)所述索引值去查找動作線性表,得到對應(yīng)的動作表項。
      全文摘要
      本發(fā)明實施例涉及一種查找鍵值生成裝置及方法,采用多個可編程控制查找鍵值產(chǎn)生的查找鍵值產(chǎn)生單元并行處理的方法,同時產(chǎn)生多個查找鍵值,從而解決了高速的報文轉(zhuǎn)發(fā)對報文分類查找鍵值生成裝置的性能要求的問題比用軟件來產(chǎn)生查找鍵值的裝置性能要高;設(shè)計了比較專用的微碼控制指令集,通過微碼程序分3個粒度對輸入的報文數(shù)據(jù)及前級電路的處理結(jié)果進行了處理,實現(xiàn)了對查找鍵值產(chǎn)生單元的靈活性的需求,滿足了不同網(wǎng)絡(luò)部署策略或者不同客戶對報文分類的差異化需求。
      文檔編號G06F17/30GK101242362SQ20081000743
      公開日2008年8月13日 申請日期2008年3月7日 優(yōu)先權(quán)日2008年3月7日
      發(fā)明者軍 梁 申請人:華為技術(shù)有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1