報(bào)文匹配處理方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明設(shè)及通信領(lǐng)域,具體而言,設(shè)及一種報(bào)文匹配處理方法及裝置。
【背景技術(shù)】
[0002] S態(tài)內(nèi)容尋址存儲(chǔ)器(Ternary Content AcMress油Ie Memoir,簡(jiǎn)稱為 TCAM),主 要用于快速查找A化、路由等表項(xiàng)。它是從內(nèi)容尋址存儲(chǔ)器(Content AcMress油Ie Memo巧, 簡(jiǎn)稱為CAM)的基礎(chǔ)上發(fā)展而來的。一般的CAM存儲(chǔ)器中每個(gè)bit位的狀態(tài)只有兩個(gè),"0" 或"1",而TCAM中每個(gè)bit位有S種狀態(tài),除掉"0 "和"1"外,還有一個(gè)"don ' t care "狀 態(tài),所W稱為態(tài)",它是通過掩碼來實(shí)現(xiàn)的,正是TCAM的運(yùn)個(gè)第=種狀態(tài)特征使其既能 進(jìn)行精確匹配查找,又能進(jìn)行模糊匹配查找,而CAM沒有第=種狀態(tài),所W只能進(jìn)行精確匹 配查找。
[0003] TCAM具有查找速度快、操作簡(jiǎn)單的優(yōu)點(diǎn),但同時(shí)它也具有3個(gè)明顯的缺點(diǎn):成本 高、功耗大和表項(xiàng)更新復(fù)雜。由于W上缺點(diǎn)的存在,很難做到表項(xiàng)可W匹配整個(gè)報(bào)文。
[0004] 針對(duì)相關(guān)技術(shù)中的很難做到匹配整個(gè)報(bào)文問題,目前尚未提出有效的解決方案。
【發(fā)明內(nèi)容】
陽〇化]本發(fā)明提供了一種報(bào)文匹配處理方法及裝置,W至少解決相關(guān)技術(shù)中的很難做到 匹配整個(gè)報(bào)文問題。
[0006] 根據(jù)本發(fā)明的一個(gè)方面,提供了一種報(bào)文匹配處理方法,包括:確定報(bào)文中用于匹 配的至少兩個(gè)匹配字段;根據(jù)預(yù)先配置的報(bào)文匹配規(guī)則W及所述至少兩個(gè)匹配字段,對(duì)所 述報(bào)文進(jìn)行匹配。
[0007] 進(jìn)一步地,確定報(bào)文中用于匹配的至少兩個(gè)匹配字段包括:在第一次對(duì)所述報(bào)文 進(jìn)行匹配的情況下,設(shè)置標(biāo)志位信息,確定所述報(bào)文的頭22個(gè)字節(jié)作為匹配字段;和/或, 在不是第一次對(duì)所述報(bào)文進(jìn)行匹配的情況下,根據(jù)上一次匹配設(shè)置的標(biāo)志位信息配置本次 匹配的標(biāo)志位信息,并根據(jù)上一次匹配的偏移量確定所述至少兩個(gè)匹配字段。
[0008] 進(jìn)一步地,所述標(biāo)志位信息包括W下至少之一:虛擬局域網(wǎng)(Virtual Local 化twork,簡(jiǎn)稱為VLAN)層數(shù),是否W太網(wǎng)上的點(diǎn)對(duì)點(diǎn)協(xié)議PPPOE報(bào)文,源端口號(hào)。
[0009] 進(jìn)一步地,在根據(jù)預(yù)先配置的報(bào)文匹配規(guī)則W及所述至少兩個(gè)匹配字段,對(duì)所述 報(bào)文進(jìn)行匹配之前,還包括:設(shè)置匹配規(guī)則=態(tài)內(nèi)容尋址存儲(chǔ)器TCAM條目;根據(jù)所述報(bào)文 的匹配次數(shù)分配l〇〇kup_id的數(shù)量,其中,每個(gè)lookup_id對(duì)應(yīng)一次匹配,每個(gè)匹配條目指 定下一次匹配的l〇〇kup_id值。
[0010] 進(jìn)一步地,在根據(jù)預(yù)先配置的報(bào)文匹配規(guī)則W及所述至少兩個(gè)匹配字段,對(duì)所述 報(bào)文進(jìn)行匹配之后,還包括:匹配成功的報(bào)文將執(zhí)行的動(dòng)作暫存入內(nèi)存中;根據(jù)所述執(zhí)行 的動(dòng)作判斷下一個(gè)l〇〇kup_id是否是停止;在判斷結(jié)果為是的情況下,確定對(duì)所述報(bào)文匹 配成功。
[0011] 根據(jù)本發(fā)明的另一方面,提供了一種報(bào)文匹配處理裝置,包括:第一確定模塊,用 于確定報(bào)文中用于匹配的至少兩個(gè)匹配字段;匹配模塊,用于根據(jù)預(yù)先配置的報(bào)文匹配規(guī) 則W及所述至少兩個(gè)匹配字段,對(duì)所述報(bào)文進(jìn)行匹配。
[0012] 進(jìn)一步地,所述第一確定模塊包括:第一確定單元,用于第一次對(duì)所述報(bào)文進(jìn)行匹 配的情況下,設(shè)置標(biāo)志位信息,確定所述報(bào)文的頭22個(gè)字節(jié)作為匹配字段;和/或,第二 確定單元,用于在不是第一次對(duì)所述報(bào)文進(jìn)行匹配的情況下,根據(jù)上一次匹配設(shè)置的標(biāo)志 位信息配置本次匹配的標(biāo)志位信息,并根據(jù)上一次匹配的偏移量確定所述至少兩個(gè)匹配字 段。
[0013] 進(jìn)一步地,所述標(biāo)志位信息包括W下至少之一:虛擬局域網(wǎng)VLAN層數(shù),是否W太 網(wǎng)上的點(diǎn)對(duì)點(diǎn)協(xié)議PPPOE報(bào)文,源端口號(hào)。
[0014] 進(jìn)一步地,所述裝置還包括:設(shè)置模塊,用于設(shè)置匹配規(guī)則=態(tài)內(nèi)容尋址存儲(chǔ)器 TCAM條目;分配模塊,用于根據(jù)所述報(bào)文的匹配次數(shù)分配lookup_id的數(shù)量,其中,每個(gè) lookup_id對(duì)應(yīng)一次匹配,每個(gè)匹配條目指定下一次匹配的lookup_id值。
[0015] 進(jìn)一步地,所述裝置還包括:暫存模塊,用于匹配成功的報(bào)文將執(zhí)行的動(dòng)作暫存入 內(nèi)存中;判斷模塊,用于根據(jù)所述執(zhí)行的動(dòng)作判斷下一個(gè)l〇〇kup_id是否是停止;第二確定 模塊,用于在判斷結(jié)果為是的情況下,確定對(duì)所述報(bào)文匹配成功。
[0016] 通過本發(fā)明,采用確定報(bào)文中用于匹配的至少兩個(gè)匹配字段;根據(jù)預(yù)先配置的報(bào) 文匹配規(guī)則W及所述至少兩個(gè)匹配字段,對(duì)所述報(bào)文進(jìn)行匹配,解決了相關(guān)技術(shù)中的很難 做到匹配整個(gè)報(bào)文問題,從而高效地實(shí)現(xiàn)報(bào)文匹配的效果。
【附圖說明】
[0017] 此處所說明的附圖用來提供對(duì)本發(fā)明的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本發(fā) 明的示意性實(shí)施例及其說明用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。在附圖中: 陽01引圖1是根據(jù)本發(fā)明實(shí)施例的報(bào)文匹配處理方法的流程圖;
[0019] 圖2是根據(jù)本發(fā)明實(shí)施例的報(bào)文匹配處理裝置的框圖;
[0020] 圖3是根據(jù)本發(fā)明實(shí)施例的報(bào)文匹配處理裝置的框圖一;
[0021] 圖4是根據(jù)本發(fā)明實(shí)施例的報(bào)文匹配處理裝置的框圖二;
[0022] 圖5是根據(jù)本發(fā)明實(shí)施例的報(bào)文匹配處理裝置的框圖S ;
[0023] 圖6是根據(jù)本發(fā)明優(yōu)選實(shí)施例的報(bào)文匹配流程圖。
【具體實(shí)施方式】
[0024] 下文中將參考附圖并結(jié)合實(shí)施例來詳細(xì)說明本發(fā)明。需要說明的是,在不沖突的 情況下,本申請(qǐng)中的實(shí)施例及實(shí)施例中的特征可W相互組合。
[0025] 在本實(shí)施例中提供了一種報(bào)文匹配處理方法,圖1是根據(jù)本發(fā)明實(shí)施例的報(bào)文匹 配處理方法的流程圖,如圖1所示,該流程包括如下步驟: 陽0%] 步驟S102,確定報(bào)文中用于匹配的至少兩個(gè)匹配字段;
[0027] 步驟S104,根據(jù)預(yù)先配置的報(bào)文匹配規(guī)則W及該至少兩個(gè)匹配字段,對(duì)該報(bào)文進(jìn) 行匹配。
[0028] 通過上述步驟,確定報(bào)文中用于匹配的至少兩個(gè)匹配字段,根據(jù)預(yù)先配置的報(bào)文 匹配規(guī)則W及該至少兩個(gè)匹配字段,對(duì)該報(bào)文進(jìn)行匹配,解決了相關(guān)技術(shù)中的很難做到匹 配整個(gè)報(bào)文問題,從而高效地實(shí)現(xiàn)報(bào)文匹配的效果。
[0029] 確定報(bào)文中用于匹配的至少兩個(gè)匹配字段可W有很多種,在一個(gè)可選的實(shí)施例 中,確定報(bào)文中用于匹配的至少兩個(gè)匹配字段可W包括:在第一次對(duì)所述報(bào)文進(jìn)行匹配的 情況下,設(shè)置標(biāo)志位信息,確定該報(bào)文的頭22個(gè)字節(jié)作為匹配字段;和/或,在不是第一次 對(duì)所述報(bào)文進(jìn)行匹配的情況下,根據(jù)上一次匹配設(shè)置的標(biāo)志位信息配置本次匹配的標(biāo)志位 信息,并根據(jù)上一次匹配的偏移量確定該至少兩個(gè)匹配字段。
[0030] 上述的標(biāo)志位信息可W是一種或者多種,在一個(gè)可選的實(shí)施例中,可W包括W下 至少之一:VLAN層數(shù),是否W太網(wǎng)上的點(diǎn)對(duì)點(diǎn)協(xié)議PPPOE報(bào)文,源端口號(hào)。
[0031] 在根據(jù)預(yù)先配置的報(bào)文匹配規(guī)則W及該至少兩個(gè)匹配字段,對(duì)該報(bào)文進(jìn)行匹配之 前,設(shè)置匹配規(guī)則S態(tài)內(nèi)容尋址存儲(chǔ)器TCAM條目;根據(jù)該報(bào)文的匹配次數(shù)分配lookup_id 的數(shù)量,其中,每個(gè)l〇〇kup_id對(duì)應(yīng)一次匹配,每個(gè)匹配條目指定下一次匹配的lookup_id 值。
[0032] 在根據(jù)預(yù)先配置的報(bào)文匹配規(guī)則W及該至少兩個(gè)匹配字段,對(duì)該報(bào)文進(jìn)行匹配之 后,匹配成功的報(bào)文將執(zhí)行的動(dòng)作暫存入內(nèi)存中;根據(jù)該執(zhí)行的動(dòng)作判斷下一個(gè)l〇〇kup_ id是否是停止;在判斷結(jié)果為是的情況下,確定對(duì)該報(bào)文匹配成功。
[0033] 本發(fā)明實(shí)施例還提供了一種報(bào)文匹配處理裝置,該裝置用于實(shí)現(xiàn)上述實(shí)施例及優(yōu) 選實(shí)施方式,已經(jīng)進(jìn)行過說明的不再寶述。如W下所使用的,術(shù)語"模塊"可W實(shí)現(xiàn)預(yù)定功 能的軟件和/或硬件的組合。盡管W下實(shí)施例所描述的裝置較佳地W軟件來實(shí)現(xiàn),但是硬 件,或者軟件和硬件的組合的實(shí)現(xiàn)也是可能并被構(gòu)想的。
[0034] 圖2是根據(jù)本發(fā)明實(shí)施例的報(bào)文匹配處理裝置的框圖,如圖2所示,包括:第一確 定模塊22和匹配模塊24,下面對(duì)各個(gè)模塊進(jìn)行簡(jiǎn)要說明。
[0035] 第一確定模塊22,用于確定報(bào)文中用于匹配的至少兩個(gè)匹配字段;
[0036] 匹配模塊24,用于根據(jù)預(yù)先配置的報(bào)文匹配規(guī)則W及該至少兩個(gè)匹配字段,對(duì)該 報(bào)文進(jìn)行匹配。
[0037] 圖3是根據(jù)本發(fā)明實(shí)施例的報(bào)文匹配處理裝置的框圖一,如圖3所示,該第一確定 模塊22包括:
[0038] 第一確定單元32,用于在第一次對(duì)所述報(bào)文進(jìn)行匹配的情況下,設(shè)置標(biāo)志位信息, 確定該報(bào)文的頭22個(gè)字節(jié)作為匹配字段;和/或,
[0039] 第二確定單元34,用于在不是第一次對(duì)所述報(bào)文進(jìn)行匹配的情況下,根據(jù)上一次 匹配設(shè)置的標(biāo)志位信息配置本次匹配的標(biāo)志位信息,并根據(jù)上一次匹配的偏移量確定該至 少兩個(gè)匹配字段。 W40] 圖4是根據(jù)本發(fā)明實(shí)施例的報(bào)文匹配處理裝置的框圖二如圖4所示,該裝置還包 括:
[0041] 設(shè)置模塊42,用于設(shè)置匹配規(guī)則S態(tài)內(nèi)容尋址存儲(chǔ)器TCAM條目;
[0042] 分配模塊44,用于根據(jù)該報(bào)文的匹配次數(shù)分配lookup_id的數(shù)量,其中,每個(gè) lookup_id對(duì)應(yīng)一次匹配,每個(gè)匹配條目指定下一次匹配的lookup_id值。
[00創(chuàng)圖5是根據(jù)本發(fā)明實(shí)施例的報(bào)文匹配處理裝置的框圖三如圖5所示,該裝置還包 括: W44]暫存模塊52,用于匹配成功的報(bào)文將執(zhí)行的動(dòng)作暫存入內(nèi)存中;
[0045] 判斷模塊54,用于根據(jù)該執(zhí)行的動(dòng)作判斷下一個(gè)lookup_id是否是停止;第二確 定模塊,用于在判斷結(jié)果為是的情況下,確定對(duì)該報(bào)文匹配成功。
[0046] 下面結(jié)合可選實(shí)施例對(duì)本發(fā)明實(shí)施例進(jìn)行進(jìn)一步說明。
[0047] 由于相關(guān)技術(shù)中很難做到表項(xiàng)可W匹配整個(gè)報(bào)文,并且通訊系統(tǒng)中對(duì)報(bào)文的匹配 一般也不需要匹配全報(bào)文,不同的設(shè)備和模塊關(guān)屯、報(bào)文的字段不同,一般需要匹配的字段 都不會(huì)超過16個(gè)字節(jié)(IPV6的ip),所W采用24字節(jié)的TCAM就可W有效的匹配報(bào)文,節(jié)省 成本和功耗,本可選實(shí)施例提供了一種基于短表項(xiàng)TCAM實(shí)現(xiàn)長(zhǎng)報(bào)文深度匹配的方法,包括 W下內(nèi)容:
[0048] 表 1
[0049]
[0050] 用于匹配的TCAM表項(xiàng)的結(jié)構(gòu)如表1所示,主要包括24 (不局限于具體長(zhǎng)度)個(gè)字 節(jié)value位和24個(gè)字節(jié)mask位,前面我們介紹過TCAM屬于S態(tài)存儲(chǔ)器,當(dāng)相應(yīng)mask位置 1時(shí)表示關(guān)屯、此位,相應(yīng)的mask位置0時(shí)表示不關(guān)屯、此位;24個(gè)字節(jié)Vlaue分為兩個(gè)部分, 前兩字節(jié)(可W根據(jù)具體需要增加)用于做標(biāo)志位,用來表示匹配中關(guān)屯、的一些標(biāo)志,標(biāo)志 的用法會(huì)在下面進(jìn)行說明,其余部分用來填充需要匹配的報(bào)文字段的值和掩碼(mask);
[0051] 因?yàn)閳?bào)文長(zhǎng)度24個(gè)字節(jié)不能完全覆蓋整個(gè)報(bào)文,所W-個(gè)報(bào)文需要進(jìn)行多次匹 配,才能覆蓋整個(gè)報(bào)文,采用多次匹配的方式,在不同匹配中匹配不同的字段,完成整個(gè)報(bào) 文的匹配。采用上述標(biāo)志位的前=位(可W根據(jù)需要擴(kuò)展)來表示匹配的不同階段,每次