儲先處理的2個特征字段對應(yīng)的匹配結(jié)果和查詢結(jié)果;待所述特征字段都處理完了,也依據(jù)每一特征字段完成了對報文的第一次操作和第二次操作之后,輸出報文給下一個處理結(jié)構(gòu)或由所述裝置轉(zhuǎn)發(fā)給下一裝置。在具體的實(shí)現(xiàn)過程中,也可以采用能同時處理4個特征字段的TCAM處理單元和查表單元來實(shí)現(xiàn)報文處理轉(zhuǎn)發(fā)。通常能夠同時處理特征字段個數(shù)越多,則TCAM處理單元和查表單元的結(jié)構(gòu)就復(fù)雜,可能需要更多的TCAM或處理器可能需要支撐能同時并發(fā)處理多條可編程指令,如支持同時執(zhí)行多條超長指令,這將導(dǎo)致裝置的硬件成本增加;而在本實(shí)施例中,通過延時單元的設(shè)置,可以很好的處理以上問題。
[0126]在具體的實(shí)現(xiàn)過程中,每一個所述裝置可認(rèn)為對應(yīng)了一個所述轉(zhuǎn)發(fā)節(jié)點(diǎn),在指定的所述處理結(jié)構(gòu)處理完之后,所述裝置將處理后的報文發(fā)送到下一轉(zhuǎn)發(fā)節(jié)點(diǎn)。當(dāng)所述報文需要經(jīng)過兩個以上所述處理結(jié)構(gòu)時,在前一個所述處理結(jié)構(gòu)完成所述第一次操作和第二操作之后,會將處理后的報文以及所述報文對應(yīng)的報文描述符發(fā)送到后一處理結(jié)構(gòu)中,由后一處理結(jié)構(gòu)繼續(xù)處理,最后一個處理所述報文及報文描述符的處理結(jié)構(gòu),在處理完所述第一次操作和所述第二次操作后將直接向下一裝置發(fā)送處理后的所述報文。
[0127]其中,所述指定的處理結(jié)構(gòu),可以為n+1個所述處理結(jié)構(gòu)中的一個或多個。
[0128]實(shí)施例二:
[0129]如圖5所示,本實(shí)施例還提供了一種報文轉(zhuǎn)發(fā)方法,應(yīng)用于包括至少一個處理結(jié)構(gòu)的裝置中,所述處理結(jié)構(gòu)包括TCAM處理單元及查表單元;
[0130]步驟S110:通過所述TCAM處理單元從報文及報文描述符中提取特征字段,將所述特征字段與TCAM條目進(jìn)行匹配形成匹配結(jié)果;
[0131]步驟S120:依據(jù)所述匹配結(jié)果,采用所述TCAM處理單元中的可編程指令對所述報文及報文描述符執(zhí)行第一次操作并形成鍵值域索引;
[0132]步驟S130:通過所述查表單元提取所述鍵值域索引,依據(jù)所述鍵值域索引查找鍵值,依據(jù)所述鍵值域索引進(jìn)行查表形成查表結(jié)果;
[0133]步驟S140:根據(jù)所述查表結(jié)果采用所述查表單元中的可編程指令對所述報文及所述報文描述符執(zhí)行第二次操作;
[0134]步驟S150:在指定的所述處理結(jié)構(gòu)執(zhí)行完所述第一次操作和所述第二次操作后,發(fā)送所述處理結(jié)構(gòu)處理后的所述報文。
[0135]本實(shí)施例所述的方法可以采用如實(shí)施例一中所述的裝置進(jìn)行來實(shí)現(xiàn),結(jié)合所述TCAM處理單元及所述查表單元,對報文進(jìn)行第一次操作和第二次操作,以達(dá)到報文處理轉(zhuǎn)發(fā)的目的。所述TCAM處理單元和所述查表單元的具體結(jié)構(gòu)可參見實(shí)施例一中的詳細(xì)描述。
[0136]在步驟S110中從描述輸入中提取特征字段可以由實(shí)施例一中所述的TCAM處理單元中的第一提取單元來執(zhí)行;步驟S110中將所述特征字段與TCAM條目進(jìn)行匹配形成匹配結(jié)果,可以由實(shí)施例一中所述的TCAM處理單元的匹配模塊來執(zhí)行。所述步驟S120可以由實(shí)施例一中所述的TCAM處理單元的第一執(zhí)行模塊來執(zhí)行。
[0137]本實(shí)施例所述的方法采用所述TCAM處理單元及所述查表單元對報文進(jìn)行處理轉(zhuǎn)發(fā),同時兼具了采用TCAM處理單元和可編程器件的優(yōu)點(diǎn),成本相對于僅采用可編程器件的裝置具有成本低及功耗低的優(yōu)點(diǎn);同時相對于固化芯片具有靈活性高,方便后續(xù)進(jìn)行業(yè)務(wù)調(diào)整以及業(yè)務(wù)拓展。在本實(shí)施例中所述TCAM處理單元主要是完成一些可以轉(zhuǎn)換條件判斷或分支選擇操作的基本處理。
[0138]所述TCAM處理單元包括外圍邏輯模塊;
[0139]所述方法還包括:通過所述外圍邏輯模塊將所述特征字段中的指定字段轉(zhuǎn)化成所述TCAM條目的匹配字段;所述匹配字段用于與所述TCAM條目進(jìn)行匹配。
[0140]在具體的實(shí)現(xiàn)過程中,有些特征字段與匹配字段相同,即TCAM也能處理完成;但是對于具有范圍比較或邏輯運(yùn)算的特征字段,在本實(shí)施例中可以通過TCAM單元的外圍邏輯電路進(jìn)行轉(zhuǎn)化,采用外圍邏輯電路進(jìn)行轉(zhuǎn)換,能簡化TCAM的處理。
[0141]進(jìn)一步地,如圖6所示,所述步驟S120包括:
[0142]步驟S121:依據(jù)所述匹配結(jié)果獲取所述第一次操作的操作信息;
[0143]步驟S122:依據(jù)所述操作信息,對所述報文及報文描述符執(zhí)行第一次操作;
[0144]步驟S123:依據(jù)所述匹配結(jié)果查詢對應(yīng)所述匹配結(jié)果的鍵值域索引。
[0145]本實(shí)施例中所述執(zhí)行單元執(zhí)行的第一次操作,可能是對報文轉(zhuǎn)發(fā)路徑相關(guān)信息的修改,如將上送報文的上送標(biāo)記置為有效等操作。具體的詳細(xì)闡述可以參見實(shí)施例一中對應(yīng)部分。在本發(fā)明實(shí)施例中所述第一次操作包括一個或多個依據(jù)所述匹配結(jié)果執(zhí)行的操作。所述第一次操作的具體詳細(xì)描述可以參見實(shí)施例一中的對應(yīng)部分。
[0146]進(jìn)一步地,
[0147]所述方法還包括:
[0148]將所述鍵值形成預(yù)定的鍵值結(jié)構(gòu);
[0149]所述步驟S130具體可包括為:依據(jù)鍵值結(jié)構(gòu)進(jìn)行查表形成所述查表結(jié)果。
[0150]優(yōu)選地,所述步驟S130包括:依據(jù)所述查表結(jié)果獲取所述第二次操作的操作信息;及依據(jù)所述操作信息,對所述報文執(zhí)行第二次操作。
[0151]所述查表結(jié)果可為:鍵值域索引是否與預(yù)先存儲的匹配信息的中的索引是否匹配的結(jié)果,具體匹配那一條匹配信息。如鍵值A(chǔ)或所述鍵值結(jié)構(gòu)A與匹配信息的索引B匹配成功;則依據(jù)所述匹配結(jié)果,提對應(yīng)于所述索引B的操作信息;再依據(jù)所述操作信息執(zhí)行第二次操作。所述操作信息包括具體執(zhí)行的操作,操作類型和/或操作參數(shù)等信息。
[0152]優(yōu)選地,所述TCAM處理單元及所述查表單元中的所述可編程指令均為超長指令;采用超長指令具有理效率高的優(yōu)點(diǎn)。
[0153]為了簡化所述TCAM處理單元及查表單元的結(jié)構(gòu),降低硬件成本,假設(shè)所述TCAM處理單元及所述查表單元,一次能夠處理N個所述特征字段;所述N為不小于1的整數(shù);則在本實(shí)施例中增設(shè)使部分特征字延時后處理的延時單元;具體地,所述方法還包括:當(dāng)所述特征字段的個數(shù)Μ大于所述Ν時,通過所述延時單元存儲所述Μ個所述特征字段以及所述特征字段對應(yīng)的匹配結(jié)果和查表結(jié)果,等待所述TCAM處理單元及所述查表單元對所述Μ個所述特征字段處理之后,輸出所述報文。
[0154]以下基于實(shí)施例一和/或?qū)嵤├峁﹥蓚€具體示例:
[0155]示例一:
[0156]如圖1所示,本示例提供一個系統(tǒng)包括η個報文轉(zhuǎn)發(fā)處理裝置CELL 11 ;其中,所述η為不小1的整數(shù);一個所述處理結(jié)構(gòu)CELL 11包括可認(rèn)為是對應(yīng)一個路徑轉(zhuǎn)發(fā)節(jié)點(diǎn)。每一個CELL 11的內(nèi)部結(jié)構(gòu)可為如圖7所示;具體包括延時單元200(英文縮寫MF_DELAY)、TCAM處理單元209、查表單元210。
[0157]所述TCAM處理單元209包括、提取模塊201 (英文縮寫T_KEY_SEL)、外圍邏輯模塊202(英文縮寫LOGIC).TCAM模塊203 (英文縮寫TCAM)、獲取模塊204 (英文縮寫T_ACT10N)以及執(zhí)行模塊205 (英文縮寫T_EX)。所述提取模塊201對應(yīng)于實(shí)施例一中的第一提取模塊;所述TCAM模塊對應(yīng)于實(shí)施例中的匹配模塊;所述獲獲取模塊及所述執(zhí)行模塊共同對應(yīng)實(shí)施例一中的第一執(zhí)行模塊。
[0158]所述查表單元210包括、提取模塊206 (英文縮寫S_KEY_SEL)、表項(xiàng)模塊211 (英文縮寫TBL)、獲取模塊208 (英文縮寫S_ACT10N)以及執(zhí)行模塊207 (英文縮寫S_EX)。所述提取模塊201對應(yīng)于實(shí)施例一中的第二提取模塊;所述表項(xiàng)模塊對應(yīng)于實(shí)施例中的查表模塊;所述獲獲取模塊及所述執(zhí)行模塊共同對應(yīng)實(shí)施例一中的第二執(zhí)行模塊。
[0159]所述延時單元200,用于吸收條目匹配和表項(xiàng)查找的延時,即實(shí)現(xiàn)部分特征字段的延時處處理;
[0160]提取模塊201,用于提取從描述輸入MF-1N中匹配需要的特征字段;所述MF-0UT為對所述MF-1N處理之后的輸出結(jié)果;
[0161]外圍邏輯模塊202,用于提升TCAM模塊203的處理能力;
[0162]TCAM模塊203,用于存儲由微碼轉(zhuǎn)換來的匹配條目,用于跟模塊201提取的特征字段以及由202轉(zhuǎn)換后的字段作比較匹配;所述匹配條目為TCAM條目。
[0163]獲取模塊204,用于根據(jù)TCAM匹配結(jié)果獲取與之對應(yīng)的ACT1N信息;
[0164]執(zhí)行模塊205,用于解析并執(zhí)行從模塊204中獲取的ACT1N信息對應(yīng)的自定義指令,并形成鍵值域索引。
[0165]提取模塊206,用于根據(jù)從模塊205中獲取的ACT1N信息中獲取查表的鍵值域索引并提取鍵值字段組裝成鍵值結(jié)構(gòu)向查表單元發(fā)送;
[0166]表項(xiàng)模塊211,用于依據(jù)所述鍵值結(jié)構(gòu)進(jìn)行查表;
[0167]獲取模塊207,用于根據(jù)查表返回的結(jié)果獲取與之對應(yīng)的ACT1N信息;
[0168]執(zhí)行模塊208,用于解析并執(zhí)行從模塊207中獲取的ACT1N信息對應(yīng)的自定義指令。
[0169]示例二:
[017