專利名稱:報(bào)文包頭的解析方法、包頭解析預(yù)處理裝置和網(wǎng)絡(luò)處理器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信技術(shù),尤其涉及一種報(bào)文包頭的解析方法、包頭解析預(yù)處理裝 置和網(wǎng)絡(luò)處理器。
背景技術(shù):
三重內(nèi)容可尋址寄存器(TernaryContent Address Memory,TCAM)是一種基
于內(nèi)容查詢的存儲器,其具有查詢速度快和查詢時間固定的優(yōu)點(diǎn)。在TCAM中預(yù)存有若 干條表項(xiàng),每條表項(xiàng)對應(yīng)著一條規(guī)則;在靜態(tài)隨機(jī)存儲器(SRAM)中預(yù)存有與TCAM 中的表項(xiàng)對應(yīng)的具體動作(Action)。在對報(bào)文進(jìn)行分類時,將報(bào)文與TCAM的表項(xiàng)進(jìn) 行關(guān)鍵字匹配,如果某個表項(xiàng)與該報(bào)文匹配成功,則對報(bào)文執(zhí)行與該TCAM表項(xiàng)對應(yīng)的 SRAM中存儲的相關(guān)動作,從而實(shí)現(xiàn)對報(bào)文分類的目的。TCAM的表項(xiàng)中的每一位的內(nèi) 容具有三種形式,即0、1和*,其中0和1表示具體的二進(jìn)制數(shù)字,而*表示該位不參與 比較,即在進(jìn)行匹配時,該位默認(rèn)匹配成功。在某些網(wǎng)絡(luò)處理器中,基于上述兩種存儲單元的包頭解析預(yù)處理模塊,主要對 報(bào)文包頭進(jìn)行規(guī)則匹配,并且解析出里面的包頭類型,例如以太網(wǎng)(ethemet)介質(zhì)訪問 控制(mac)、以太網(wǎng)類型(etype)、虛擬局域網(wǎng)(vlan)、多協(xié)議標(biāo)簽交換(MPLS) 標(biāo)簽等,這部分信息通過一個附加的字段——包頭解析字段,以固定的格式攜帶給后續(xù) 網(wǎng)絡(luò)處理器的微碼使用。微碼根據(jù)這個固定的格式,取出有效的信息和包頭類型進(jìn)行操 作,例如是二層報(bào)文,則走二層流程,取出mac查找mac地址;對于三層報(bào)文,則取出 ip地址進(jìn)行路由查找。包頭解析字段的存在使微碼的操作變得簡單有效。為了保證網(wǎng)絡(luò) 處理器的帶寬和處理效率,包頭解析字段通常有固定的格式和長度的限制,因此也就要 求解析出來的包頭類型在數(shù)目上有限制。如圖1所示,為現(xiàn)有的網(wǎng)絡(luò)處理器的結(jié)構(gòu)示意圖,該網(wǎng)絡(luò)處理器包括包頭解析 預(yù)處理模塊、查表處理模塊和封裝轉(zhuǎn)發(fā)模塊。一個報(bào)文在網(wǎng)絡(luò)處理器中一般都經(jīng)過了包 頭解析預(yù)處理、查表處理和封裝轉(zhuǎn)發(fā)的處理過程,下面以一個三層報(bào)文為例,說明網(wǎng)絡(luò) 處理器處理該報(bào)文的過程,該過程包括
包頭解析預(yù)處理模塊首先匹配出該報(bào)文是一個三層報(bào)文,同時完成一些預(yù)處理例 如報(bào)文合法性檢查,ip包頭校驗(yàn)和(checksum)計(jì)算等等;
查表處理模塊主要針對解析出的報(bào)文進(jìn)行分類處理三層報(bào)文走到三層流程,取目 Wip查路由轉(zhuǎn)發(fā)表等;
封裝轉(zhuǎn)發(fā)模塊則根據(jù)查表的結(jié)果,進(jìn)行報(bào)文的更新封裝,例如三層報(bào)文需要更新 mac和vlan等等,同時根據(jù)查轉(zhuǎn)發(fā)表獲得出口信息轉(zhuǎn)發(fā)出去。在該網(wǎng)絡(luò)處理器中,包頭解析預(yù)處理模塊是一個獨(dú)立于微碼的模塊,其解析結(jié) 果,通過一個約定的格式傳給后面的微碼處理(包括查表處理和封裝轉(zhuǎn)發(fā))單元進(jìn)行處 理,這可以極大地簡化微碼處理;但是同時,為了保證網(wǎng)絡(luò)處理器的帶寬和處理效率, 其傳遞給微碼處理的信息包括解析出的包頭類型往往是有限的。
如圖2所示,為現(xiàn)有的包頭解析預(yù)處理模塊工作的原理示意圖,該包頭解析預(yù) 處理模塊包括規(guī)則匹配模塊和執(zhí)行模塊,規(guī)則匹配模塊由TCAM單元組成,主要完成包 頭的規(guī)則匹配;執(zhí)行模塊,由SRAM單元組成,主要是對匹配規(guī)則后的包頭執(zhí)行相關(guān)操 作,例如往包頭解析字段填寫包頭類型等。下面說明該模塊的工作過程
1、該模塊的初始化往TCAM中第i個條目填寫包頭類型分別為A_B_C_D_E_D_G 的匹配規(guī)則;往SRAM中填寫對應(yīng)操作——依次解析出包頭中的7個類型;
2、報(bào)文匹配此時若是進(jìn)來一個匹配i規(guī)則的報(bào)文,將執(zhí)行SRAM中相關(guān)的操作 將包頭類型A,B,C,D,E,D,G分別填寫到包頭解析字段中,并且按照解析出來的 報(bào)文類型走到相應(yīng)的處理流程進(jìn)行微碼處理。由此可見,目前網(wǎng)絡(luò)處理器解析出的有效包頭類型個數(shù)一般為9個,這可以滿 足目前絕大多數(shù)情況下報(bào)文的解析,也不會浪費(fèi)硬件資源,以及網(wǎng)絡(luò)處理器的帶寬和處 理效率。但在某些特殊的功能下,需要解析出的包頭有效類型可能突破9個的限制,目 前的技術(shù)方案無法解決該問題。
發(fā)明內(nèi)容
為了解決上述技術(shù)問題,本發(fā)明提供了一種報(bào)文包頭的解析方法、包頭解析預(yù) 處理裝置和網(wǎng)絡(luò)處理器,以實(shí)現(xiàn)在原來的系統(tǒng)下,不增加硬件成本,依然能按照要求解 析出有效的包頭類型,供微碼使用。本發(fā)明提供了一種報(bào)文包頭的解析方法,該方法包括
當(dāng)包頭類型的個數(shù)超過9個時,分析所述報(bào)文包頭,將重復(fù)的包頭類型重新定義為 一個新的包頭類型;以及
根據(jù)新的包頭類型添加新的解析規(guī)則,并按照所述新的解析規(guī)則解析出報(bào)文的包頭類型。優(yōu)選地,上述報(bào)文包頭的解析方法可具有如下特點(diǎn)
所述方法還包括當(dāng)包頭類型的個數(shù)未超過9個時,依次對報(bào)文的包頭類型進(jìn)行解析。優(yōu)選地,上述報(bào)文包頭的解析方法還可具有如下特點(diǎn)
所述根據(jù)新的包頭類型添加新的解析規(guī)則包括根據(jù)新的包頭類型向三重內(nèi)容可尋 址寄存器(TCAM)中添加新的解析規(guī)則。優(yōu)選地,上述報(bào)文包頭的解析方法還可具有如下特點(diǎn)
在按照所述新的解析規(guī)則解析出報(bào)文的包頭類型之后,所述方法還包括對解析出 的包頭類型進(jìn)行微碼處理。本發(fā)明還提供了一種包頭解析預(yù)處理裝置,該包頭解析預(yù)處理裝置包括 重定義模塊,用于當(dāng)包頭類型的個數(shù)超過9個時,分析所述報(bào)文包頭,并將重復(fù)的
包頭類型重新定義為一個新的包頭類型;以及
解析模塊,用于根據(jù)新的包頭類型添加新的解析規(guī)則,并按照所述新的解析規(guī)則解 析出報(bào)文的包頭類型。優(yōu)選地,上述包頭解析預(yù)處理裝置可 具有如下特點(diǎn)所述包頭解析預(yù)處理裝置還包括包頭解析模塊,用于當(dāng)包頭類型的個數(shù)未超過9個時,依次對報(bào)文的包頭類型進(jìn)行解析。優(yōu)選地,上述包頭解析預(yù)處理裝置還可具有如下特點(diǎn)
所述解析模塊,進(jìn)一步用于根據(jù)新的包頭類型向三重內(nèi)容可尋址寄存器(TCAM) 中添加所述新的解析規(guī)則。本發(fā)明還提供了一種網(wǎng)絡(luò)處理器,該網(wǎng)絡(luò)處理器包括包頭解析預(yù)處理模塊、查 表處理模塊和封裝轉(zhuǎn)發(fā)模塊,其中
所述包頭解析預(yù)處理模塊,用于當(dāng)包頭類型的個數(shù)超過9個時,分析所述報(bào)文包 頭,并將重復(fù)的包頭類型重新定義為一個新的包頭類型;以及根據(jù)新的包頭類型添加新 的解析規(guī)則,按照所述新的解析規(guī)則解析出報(bào)文的包頭類型,并將解析出的報(bào)文的包頭 類型發(fā)送至查表處理模塊;
所述查表處理模塊,用于根據(jù)解析出的報(bào)文的包頭類型進(jìn)行分類處理; 所述封裝轉(zhuǎn)發(fā)模塊,用于根據(jù)查表處理模塊的分類處理結(jié)果進(jìn)行報(bào)文的更新封裝。優(yōu)選地,該網(wǎng)絡(luò)處理器可具有如下特點(diǎn)
所述包頭解析預(yù)處理模塊,還用于當(dāng)包頭類型的個數(shù)未超過9個時,依次對報(bào)文的 包頭類型進(jìn)行解析,并將解析出的報(bào)文的包頭類型發(fā)送至查表處理模塊。優(yōu)選地,該網(wǎng)絡(luò)處理器還可具有如下特點(diǎn)
所述包頭解析預(yù)處理模塊,進(jìn)一步用于根據(jù)新的包頭類型向三重內(nèi)容可尋址寄存器 (TCAM)中添加所述新的解析規(guī)則。上述報(bào)文包頭的解析方法、包頭解析預(yù)處理裝置和網(wǎng)絡(luò)處理器,將重復(fù)的包頭 類型重新定義為一個新的包頭類型,根據(jù)新的包頭類型添加新的解析規(guī)則,并按照新的 解析規(guī)則解析出報(bào)文的包頭類型;使得在原來的系統(tǒng)下,不增加硬件成本,依然能按照 要求解析出有效的包頭類型,供微碼使用。
圖1為現(xiàn)有的網(wǎng)絡(luò)處理器的結(jié)構(gòu)示意圖2為現(xiàn)有的包頭解析預(yù)處理模塊工作的原理示意圖; 圖3為本發(fā)明報(bào)文規(guī)則匹配方法的流程圖; 圖4為本發(fā)明包頭解析預(yù)處理裝置的結(jié)構(gòu)示意圖; 圖5為本發(fā)明網(wǎng)絡(luò)處理器的結(jié)構(gòu)示意圖。
具體實(shí)施例方式為使本發(fā)明的目的、技術(shù)方案和實(shí)施方式更加清楚,下面將結(jié)合附圖及具體實(shí) 施例對本發(fā)明的技術(shù)方案進(jìn)行詳細(xì)地描述。在實(shí)際應(yīng)用中,可能有些報(bào)文的有效包頭類型超過9個,目前應(yīng)用中的最長的 有效包頭類型達(dá)到12個。如果為了這幾個有限的報(bào)文類型而改變硬件結(jié)構(gòu),增加系統(tǒng)成 本,代價太大。本發(fā)明提供了一種報(bào)文包頭的解析方法,該方法能解析出供微碼有效使用的包 頭類型,該方法包括當(dāng)包頭類型的個數(shù)超過9個時,分析所述報(bào)文包頭,將重復(fù)的包頭類型重新定義為 一個新的包頭類型;以及
根據(jù)新的包頭類型添加新的解析規(guī)則,并按照所述新的解析規(guī)則解析出報(bào)文的包頭類型。該報(bào)文包頭的解析方法還可以包括當(dāng)包頭類型的個數(shù)未超過9個時,按照現(xiàn)有技術(shù)依次對報(bào)文的包頭類型進(jìn)行解析。假如現(xiàn)在需要處理下面類型的一個報(bào)文,需要解析出的包頭類型數(shù)有10個A_ B_C_D_D_D_G_H_I_J,其處理過程如圖3所示
步驟301、判斷當(dāng)前包頭類型個數(shù)是否超過9個,對于沒有超過9個類型的報(bào)文解析 規(guī)則,執(zhí)行步驟302,否則,執(zhí)行步驟303;
步驟302、按照順序?qū)Ω鱾€包頭類型依次進(jìn)行解析;轉(zhuǎn)向步驟306; 步驟303、在包頭類型超過9個的情況下,分析該報(bào)文包頭,重新定義其中某幾個包 頭類型為一個新的包頭類型,使新的規(guī)則解析出來的包頭類型能控制在9個的范圍內(nèi);
其中定義為新包頭類型的幾個包頭類型主要從微碼處理的方便性出發(fā),一般選擇微 碼操作相對較少的幾個包頭進(jìn)行合并;這里將三個重復(fù)出現(xiàn)的D類型重新定義為一個三 重 D CtripleD)類型;
步驟304、按照新的類型定義重新添加匹配規(guī)則;
該匹配規(guī)則即為解析規(guī)則,即驅(qū)動向TCAM中添加一條新的解析規(guī)則A_B_C_ tripleD_G_H_I_J ;
步驟305、報(bào)文匹配新的規(guī)則,解析出新的包頭類型;
同時SRAM中填寫對應(yīng)操作——依次解析出包頭類型A,B,C,tripleD, G,H, I,J ;
步驟306、報(bào)文解析完成,進(jìn)入相應(yīng)的微碼處理流程。微碼只需要添加相關(guān)的針對新包頭類型的操作即可,而不會影響整個流程。當(dāng)需要解析的有效包頭類型超過9個時,其中包含的包頭類型存在重復(fù)的某個 包頭類型;可以將這些重復(fù)的多個包頭類型重新定義為一個包頭類型。這樣,包頭解析 預(yù)處理模塊可以完成所有類型的解析,同時不會過多的增加微碼處理復(fù)雜度,使包頭解 析模塊在不擴(kuò)展硬件資源的情況下,完成功能的擴(kuò)展。如圖4所示,為本發(fā)明包頭解析預(yù)處理裝置的結(jié)構(gòu)示意圖,該包頭解析預(yù)處理 裝置包括重定義模塊41和解析模塊42,其中,重定義模塊用于當(dāng)包頭類型的個數(shù)超過9 個時,分析所述報(bào)文包頭,并將重復(fù)的包頭類型重新定義為一個新的包頭類型;解析模 塊用于根據(jù)新的包頭類型添加新的解析規(guī)則,并按照所述新的解析規(guī)則解析出報(bào)文的包 頭類型。另外,所述包頭解析預(yù)處理裝置還包括包頭解析模塊,該包頭解析模塊用于當(dāng) 包頭類型的個數(shù)未超過9個時,按照圖2所示流程對報(bào)文的包頭類型進(jìn)行解析。其中,所述解析模塊可以進(jìn)一步用于根據(jù)新的包頭類型向TCAM中添加新的解 析規(guī)則。該包頭解析預(yù)處理裝置可解析報(bào)文的包頭類型,其實(shí)現(xiàn)過程與報(bào)文包頭的解析 方法相同,具體可參見圖3。
該包頭解析預(yù)處理裝置,通過重定義模塊將重復(fù)的包頭類型重新定義為一個新 的包頭類型,通過解析模塊根據(jù)新的包頭類型添加新的解析規(guī)則,并按照新的解析規(guī)則 解析出報(bào)文的包頭類型;使得在原來的系統(tǒng)下,不增加硬件成本,依然能按照要求解析 出有效的包頭類型,供微碼使用。如圖5所示,為本發(fā)明網(wǎng)絡(luò)處理器的結(jié)構(gòu)示意圖,該網(wǎng)絡(luò)處理器包括包頭解析 預(yù)處理模塊51、查表處理模塊52和封裝轉(zhuǎn)發(fā)模塊53,其中所述包頭解析預(yù)處理模塊用 于當(dāng)包頭類型的個數(shù)超過9個時,分析所述報(bào)文包頭,并將重復(fù)的包頭類型重新定義為 一個新的包頭類型;以及根據(jù)新的包頭類型添加新的解析規(guī)則,按照所述新的解析規(guī)則 解析出報(bào)文的包頭類型,并將解析出的報(bào)文的包頭類型發(fā)送至查表處理模塊;查表處理 模塊用于根據(jù)解析出的報(bào)文的包頭類型進(jìn)行分類處理;所述封裝轉(zhuǎn)發(fā)模塊用于根據(jù)查表 處理模塊的分類處理結(jié)果進(jìn)行報(bào)文的更新封裝。優(yōu)選地,所述包頭解析預(yù)處理模塊還用于當(dāng)包頭類型的個數(shù)未超過9個時,依 次對報(bào)文的包頭類型進(jìn)行解析,并將解析出的報(bào)文的包頭類型發(fā)送至查表處理模塊。該 包頭解析預(yù)處理模塊與上述包頭解析預(yù)處理裝置的結(jié)構(gòu)相同,此處不再贅述。進(jìn)一步地,所述包頭解析預(yù)處理模塊可以根據(jù)新的包頭類型向三重內(nèi)容可尋址 寄存器(TCAM)中添加所述新的解析規(guī)則。該網(wǎng)絡(luò)處理器,通過對其中的某些包頭類型進(jìn)行合并,使包頭解析預(yù)處理模塊 能夠有效地解析出微碼處理需要的類型信息,而同時保證微碼在處理上不會使用過多的 指令,從而提高整個系統(tǒng)的運(yùn)行效率。本領(lǐng)域普通技術(shù)人員可以理解上述方法中的全部或部分步驟可通過程序來指令 相關(guān)硬件完成,上述程序可以存儲于計(jì)算機(jī)可讀存儲介質(zhì)中,如只讀存儲器、磁盤或光 盤等??蛇x地,上述實(shí)施例的全部或部分步驟也可以使用一個或多個集成電路來實(shí)現(xiàn)。 相應(yīng)地,上述實(shí)施例中的各模塊/單元可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能 模塊的形式實(shí)現(xiàn)。本發(fā)明不限制于任何特定形式的硬件和軟件的結(jié)合。以上實(shí)施例僅用以說明本發(fā)明的技 術(shù)方案而非限制,僅僅參照較佳實(shí)施例對本 發(fā)明進(jìn)行了詳細(xì)說明。本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解,可以對本發(fā)明的技術(shù)方案進(jìn)行 修改或者等同替換,而不脫離本發(fā)明技術(shù)方案的精神和范圍,均應(yīng)涵蓋在本發(fā)明的權(quán)利 要求范圍當(dāng)中。
權(quán)利要求
1.一種報(bào)文包頭的解析方法,該方法包括當(dāng)包頭類型的個數(shù)超過9個時,分析所述報(bào)文包頭,將重復(fù)的包頭類型重新定義為 一個新的包頭類型;以及根據(jù)新的包頭類型添加新的解析規(guī)則,并按照所述新的解析規(guī)則解析出報(bào)文的包頭類型。
2.根據(jù)權(quán)利要求1所述的報(bào)文包頭的解析方法,其特征在于,所述方法還包括當(dāng)包頭類型的個數(shù)未超過9個時,依次對報(bào)文的包頭類型進(jìn)行解析。
3.根據(jù)權(quán)利要求1或2所述的報(bào)文包頭的解析方法,其特征在于,所述根據(jù)新的包頭 類型添加新的解析規(guī)則包括根據(jù)新的包頭類型向三重內(nèi)容可尋址寄存器(TCAM)中添加新的解析規(guī)則。
4.根據(jù)權(quán)利要求1或2所述的報(bào)文包頭的解析方法,其特征在于,在按照所述新的解 析規(guī)則解析出報(bào)文的包頭類型之后,所述方法還包括對解析出的包頭類型進(jìn)行微碼處理。
5.一種包頭解析預(yù)處理裝置,該包頭解析預(yù)處理裝置包括重定義模塊,用于當(dāng)包頭類型的個數(shù)超過9個時,分析所述報(bào)文包頭,并將重復(fù)的 包頭類型重新定義為一個新的包頭類型;以及解析模塊,用于根據(jù)新的包頭類型添加新的解析規(guī)則,并按照所述新的解析規(guī)則解 析出報(bào)文的包頭類型。
6.根據(jù)權(quán)利要求5所述的包頭解析預(yù)處理裝置,其特征在于,所述包頭解析預(yù)處理裝 置還包括包頭解析模塊,用于當(dāng)包頭類型的個數(shù)未超過9個時,依次對報(bào)文的包頭類型進(jìn)行 解析。
7.根據(jù)權(quán)利要求5或6所述的包頭解析預(yù)處理裝置,其特征在于所述解析模塊,進(jìn)一步用于根據(jù)新的包頭類型向三重內(nèi)容可尋址寄存器(TCAM) 中添加所述新的解析規(guī)則。
8.—種網(wǎng)絡(luò)處理器,該網(wǎng)絡(luò)處理器包括包頭解析預(yù)處理模塊、查表處理模塊和封裝 轉(zhuǎn)發(fā)模塊,其中所述包頭解析預(yù)處理模塊,用于當(dāng)包頭類型的個數(shù)超過9個時,分析所述報(bào)文包 頭,并將重復(fù)的包頭類型重新定義為一個新的包頭類型;以及根據(jù)新的包頭類型添加新 的解析規(guī)則,按照所述新的解析規(guī)則解析出報(bào)文的包頭類型,并將解析出的報(bào)文的包頭 類型發(fā)送至查表處理模塊;所述查表處理模塊,用于根據(jù)解析出的報(bào)文的包頭類型進(jìn)行分類處理;所述封裝轉(zhuǎn)發(fā)模塊,用于根據(jù)查表處理模塊的分類處理結(jié)果進(jìn)行報(bào)文的更新封裝。
9.根據(jù)權(quán)利要求8所述的網(wǎng)絡(luò)處理器,其特征在于所述包頭解析預(yù)處理模塊,還用于當(dāng)包頭類型的個數(shù)未超過9個時,依次對報(bào)文的 包頭類型進(jìn)行解析,并將解析出的報(bào)文的包頭類型發(fā)送至查表處理模塊。
10.根據(jù)權(quán)利要求8或9所述的網(wǎng)絡(luò)處理器,其特征在于所述包頭解析預(yù)處理模塊,進(jìn)一步用于根據(jù)新的包頭類型向三重內(nèi)容可尋址寄存器 (TCAM)中添加所述新的解析規(guī)則。
全文摘要
本發(fā)明提供了一種報(bào)文包頭的解析方法、包頭解析預(yù)處理裝置和網(wǎng)絡(luò)處理器,其中,報(bào)文包頭的解析方法包括當(dāng)包頭類型的個數(shù)超過9個時,分析所述報(bào)文包頭,將重復(fù)的包頭類型重新定義為一個新的包頭類型;以及根據(jù)新的包頭類型添加新的解析規(guī)則,并按照所述新的解析規(guī)則解析出報(bào)文的包頭類型。上述報(bào)文包頭的解析方法、包頭解析預(yù)處理裝置和網(wǎng)絡(luò)處理器,將重復(fù)的包頭類型重新定義為一個新的包頭類型,根據(jù)新的包頭類型添加新的解析規(guī)則,并按照新的解析規(guī)則解析出報(bào)文的包頭類型;使得在原來的系統(tǒng)下,不增加硬件成本,依然能按照要求解析出有效的包頭類型,供微碼使用。
文檔編號H04L29/06GK102014065SQ20101058298
公開日2011年4月13日 申請日期2010年12月10日 優(yōu)先權(quán)日2010年12月10日
發(fā)明者冷星星, 錢勇 申請人:中興通訊股份有限公司