解析器、分組處理裝置以及相關(guān)方法【專利說明】【
技術(shù)領(lǐng)域:
】[0001]本發(fā)明的實(shí)施例關(guān)于轉(zhuǎn)發(fā)分組的技術(shù)內(nèi)容,尤其關(guān)于一種用于解析分組中的報(bào)頭(header)的解析器(例如軟件定義解析器)以及與其相關(guān)的分組處理裝置。【【
背景技術(shù):
】】[0002]網(wǎng)絡(luò)交換器(networkswitch)是一種鏈接(link)不同電子裝置的電腦網(wǎng)絡(luò)裝置。舉例來說,網(wǎng)絡(luò)交換器會(huì)接收來自鏈接于該網(wǎng)絡(luò)交換器的第一電子裝置傳來的分組,并且會(huì)只對(duì)用于接收分組的第二電子裝置傳送修改后的分組或未經(jīng)修改的分組。解析器(parser)是網(wǎng)絡(luò)交換器中的重要元件,尤其是解析器會(huì)經(jīng)由遍歷(traverse)協(xié)議樹(protocoltree)以及提取感興趣的報(bào)頭字段(field),來對(duì)分組報(bào)頭進(jìn)行提取,后續(xù)的分組處理電路會(huì)參考該解析結(jié)果,來對(duì)分組報(bào)頭進(jìn)行分類以及執(zhí)行動(dòng)作命令。為了達(dá)到更好的分組處理性能,解析器可使用固定的硬件電路來實(shí)施。然而,這樣的解析器設(shè)計(jì)會(huì)缺乏彈性,因此有需要一種創(chuàng)新的解析器設(shè)計(jì)來加強(qiáng)彈性?!尽?br/>發(fā)明內(nèi)容】】[0003]有鑒于此,本發(fā)明特提供以下技術(shù)方案:[0004]本發(fā)明實(shí)施例提供一種解析器,用于解析分組中的報(bào)頭,解析器包含多個(gè)水平字段選擇器,多個(gè)比較器以及內(nèi)容可尋址存儲(chǔ)器式裝置,多個(gè)水平字段選擇器中的每一水平字段選擇器用于選擇第一比特位組;多個(gè)比較器分別耦接于多個(gè)水平字段選擇器,其中多個(gè)比較器中的每一比較器用于將對(duì)應(yīng)的水平字段選擇器所選出的第一比特位組與指定值作比較,以產(chǎn)生比較結(jié)果;內(nèi)容可尋址存儲(chǔ)器式裝置用于接收產(chǎn)生自多個(gè)比較器的多個(gè)比較結(jié)果,以及使用多個(gè)比較結(jié)果作為第一輸入搜尋數(shù)據(jù)。[0005]本發(fā)明實(shí)施例另提供一種一種分組處理裝置,包含解析器以及分組處理電路,解析器用于解析分組的報(bào)頭,以經(jīng)由提取來自報(bào)頭的至少一個(gè)用戶定義字段來產(chǎn)生解析結(jié)果,以及根據(jù)指定的集合識(shí)別符及指定的協(xié)議識(shí)別符來將至少一個(gè)用戶定義字段儲(chǔ)存于解析結(jié)果中的集合;分組處理電路用于至少部分地基于解析結(jié)果的數(shù)據(jù)結(jié)構(gòu),來進(jìn)行分組處理操作。[0006]本發(fā)明實(shí)施例另提供一種用于解析分組中的報(bào)頭的方法,包含選擇多個(gè)第一比特位組;將多個(gè)第一比特位組分別與多個(gè)指定值作比較,以產(chǎn)生多個(gè)比較結(jié)果;以及將多個(gè)比較結(jié)果作為輸入搜尋數(shù)據(jù)來輸入內(nèi)容可尋址存儲(chǔ)器式裝置。[0007]本發(fā)明實(shí)施例另提供一種分組處理方法,包含使用解析器來解析分組的報(bào)頭,以經(jīng)由自報(bào)頭提取出至少一個(gè)用戶定義字段來產(chǎn)生解析結(jié)果,以及根據(jù)指定的集合識(shí)別符以及指定的協(xié)議識(shí)別符來將至少一個(gè)用戶定義字段儲(chǔ)存于解析結(jié)果中的集合;以及至少部分地基于解析結(jié)果的數(shù)據(jù)結(jié)構(gòu),來進(jìn)行分組處理操作。[0008]利用本發(fā)明的解析器、分組處理裝置、用于解析分組中的報(bào)頭的方法以及分組處理方法可增進(jìn)分組處理的彈性?!尽靖綀D說明】】[0009]圖1是根據(jù)本發(fā)明實(shí)施例的彈性分組處理裝置的示意圖。[0010]圖2是圖1所示的軟件定義解析器的范例的示意圖。[0011]圖3是圖2所示的解析狀態(tài)表的每一表入口的數(shù)據(jù)結(jié)構(gòu)的示意圖。[0012]圖4是圖2所示的比較引擎的范例的示意圖。[0013]圖5是圖2所示的動(dòng)作表的每一表出口的數(shù)據(jù)結(jié)構(gòu)的示意圖。[0014]圖6是圖2所不的移位引擎的范例的不意圖。[0015]圖7是圖2所不的提取引擎的范例的不意圖?!尽揪唧w實(shí)施方式】】[0016]在說明書及權(quán)利要求書當(dāng)中使用了某些詞匯來指稱特定的組件。所屬領(lǐng)域中的技術(shù)人員應(yīng)可理解,制造商可能會(huì)用不同的名詞來稱呼同樣的組件。本說明書及權(quán)利要求書并不以名稱的差異來作為區(qū)分組件的方式,而是以組件在功能上的差異來作為區(qū)分的基準(zhǔn)。在通篇說明書及權(quán)利要求書當(dāng)中所提及的「包含」是開放式的用語,故應(yīng)解釋成「包含但不限定于」。另外,「耦接」一詞在此包含任何直接及間接的電氣連接手段。因此,若文中描述第一裝置耦接于第二裝置,則代表第一裝置可直接電氣連接于第二裝置,或透過其它裝置或連接手段間接地電氣連接至第二裝置。[0017]本發(fā)明提出了一種使用可編程解析狀態(tài)表的軟件定義(software-defined)解析器。此外,該軟件定義解析器會(huì)在本發(fā)明的以集合為基礎(chǔ)的(un1nbased)結(jié)構(gòu)中產(chǎn)生解析結(jié)果,其中該解析結(jié)果中的每一集合包含提取(extract)自分組的報(bào)頭的用戶定義字段(user-definedfield)。因此,后續(xù)的分組處理電路(包含入口(ingress)分組處理電路以及出口(egress)分組處理電路)用于基于設(shè)置于本發(fā)明的以集合為基礎(chǔ)的結(jié)構(gòu)中的用戶定義字段所組成的解析結(jié)果來進(jìn)行操作。如此一來,可實(shí)現(xiàn)增進(jìn)分組處理的彈性的目的。關(guān)于使用該軟件定義解析器的彈性分組處理裝置的細(xì)節(jié)將詳述如后。[0018]圖1是根據(jù)本發(fā)明一實(shí)施例的彈性分組處理裝置100的示意圖,舉例來說,彈性分組處理裝置100可為網(wǎng)絡(luò)交換器。如圖1所示,彈性分組處理裝置100包含介質(zhì)訪問控制(mediaaccesscontrol,MAC)層接收接口(標(biāo)示為“MACRX”)102、軟件定義解析器(software-definedparser,SDP)104、多個(gè)分組處理電路(例如多個(gè)流引擎(flowengines))106_1?106_N、流量管理器(trafficmanager,TM)108、分組修改電路110以及MAC層傳送接口(標(biāo)示為“MACTX")112oMAC層接收接口102用于自入口接口(ingressport)(未圖示)接收分組(即入口分組),且MAC層傳送接口112用于透過出口接口(egressport)(未圖示)來轉(zhuǎn)發(fā)分組。[0019]由MAC層接收接口102所接收的分組(即入口分組)PKT會(huì)被軟件定義解析器104處理以進(jìn)行分組報(bào)頭辨識(shí)。軟件定義解析器104會(huì)基于解析分組PKT中不同協(xié)議的報(bào)頭而產(chǎn)生解析結(jié)果PR,并且將具有提取到的分組報(bào)頭信息的解析結(jié)果PR提供給后續(xù)的分組處理電路(例如流引擎106_1?106_N)。流引擎106_1?106_N中一個(gè)或多個(gè)流引擎可基于分組PKT的解析結(jié)果PR來建立至少一個(gè)搜尋關(guān)鍵字(searchkey),并且使用該至少一個(gè)搜尋關(guān)鍵字來搜尋流程表114以進(jìn)行分組報(bào)頭分類(classificat1n)?;诜纸M報(bào)頭分類的結(jié)果,流引擎106_1?106_N中一個(gè)或多個(gè)流引擎可搜尋指令表(instruct1ntable)116來決定用于分組的動(dòng)作命令。此外,流引擎106_1?106_N中一個(gè)或多個(gè)流引擎可基于分組PKT的解析結(jié)果PR來建立散列關(guān)鍵字(hashkey),并且參照該散列關(guān)鍵字來選擇性地進(jìn)行動(dòng)態(tài)負(fù)載平衡(dynamicloadbalancing),以轉(zhuǎn)發(fā)由分組PKT產(chǎn)生的出口分組PKT’。[0020]流量管理器108至少用于處理分組的排序(queuing)以及調(diào)度(scheduling)。此夕卜,流量管理器108可另用于處理組播(multicast)以及相關(guān)的分組復(fù)制(replicat1n)。多個(gè)出口隊(duì)列(outputqueues)118分別對(duì)應(yīng)于彈性分組處理裝置100的多個(gè)出口接口?;诜纸MPKT所經(jīng)由來轉(zhuǎn)發(fā)的出口接口,流量管理器108會(huì)將分組PKT編入(enqueue)至對(duì)應(yīng)的輸出隊(duì)列118中。在排定的時(shí)間點(diǎn),流量管理器108會(huì)自輸出隊(duì)列118取出(dequeue)分組PKT給后續(xù)的分組處理電路(例如分組修改電路110)。此外,由流引擎106_1?106_N中一個(gè)或多個(gè)流引擎所決定的動(dòng)作命令可用動(dòng)作命令桶指針(act1ncommandbucketpointer)來表示,且該動(dòng)作命令桶指針經(jīng)由流量管理器108來被傳送至分組修改電路110。分組修改電路110用于依據(jù)該動(dòng)作命令桶指針來存取多個(gè)動(dòng)作命令桶120之一,找出并且執(zhí)行動(dòng)作命令,修改該分組PKT的報(bào)頭,以產(chǎn)生出口分組PKT’至MAC層傳送接口112。[0021]值得注意的是,圖1所示的彈性分組處理裝置100的結(jié)構(gòu)僅作為舉例,并非用于限定本發(fā)明的范疇,任何使用本發(fā)明的解析器設(shè)計(jì)及/或解析結(jié)果的數(shù)據(jù)結(jié)構(gòu)的分組處理裝置皆落入本發(fā)明的范疇。有關(guān)于軟件定義解析器104的細(xì)節(jié)以及在以集合為基礎(chǔ)的結(jié)構(gòu)中使用該解析結(jié)果的應(yīng)用的細(xì)節(jié)將詳述如后。[0022]圖2是圖1所示的軟件定義解析器104的范例的示意圖。軟件定義解析器104包含集合移位器(un1nshifter)202、比較引擎204、移位引擎206、提取引擎208、校驗(yàn)和引擎(checksumengine)210,以及多個(gè)可編程表(例如解析狀態(tài)表(parserstatetable)212、掩模表(masktable)214以及數(shù)值表(valuetable)216)。由于解析狀態(tài)表212、掩模表214以及數(shù)值表216都是可編程的,故可據(jù)以實(shí)現(xiàn)強(qiáng)化軟件定義解析器104的彈性的目的。在本實(shí)施例中,解析狀態(tài)表212基于協(xié)議樹(protocoltree)而被編程,例如解析狀態(tài)表212中的每一表入口(tableentry)會(huì)記錄當(dāng)前第1頁1 2 3 4 5