国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

一種可重構(gòu)以太網(wǎng)數(shù)據(jù)包解析器中可重構(gòu)單元的設(shè)計(jì)*

2020-03-04 08:20:48殷樹娟李翔宇
關(guān)鍵詞:解析器關(guān)鍵字數(shù)據(jù)包

趙 宇,殷樹娟,李翔宇

(1.北京信息科技大學(xué)理學(xué)院,北京 100192;2.清華大學(xué)微電子學(xué)研究所,北京 100084)

1 引言

近年來互聯(lián)網(wǎng)產(chǎn)業(yè)迅猛發(fā)展,各種新型網(wǎng)絡(luò)技術(shù)層出不窮,隨著網(wǎng)絡(luò)體系的不斷膨脹及特殊服務(wù)種類的增加,出現(xiàn)了大量的新型協(xié)議,如MPLS(Multi-Protocol Label Switching)、GRE(Generic Routing Encapsulation)、IP-in-IP等。為了適應(yīng)新的網(wǎng)絡(luò)業(yè)務(wù)需求,運(yùn)營(yíng)商不得不快速更新網(wǎng)絡(luò)中轉(zhuǎn)設(shè)備,但是更新硬件開發(fā)周期較長(zhǎng)且部署成本較高,問題隨之而來。

交換機(jī)作為網(wǎng)絡(luò)中不同設(shè)備之間數(shù)據(jù)交互的中轉(zhuǎn)機(jī)制,是設(shè)備之間的鏈路樞紐。如果能夠提高網(wǎng)絡(luò)中轉(zhuǎn)發(fā)設(shè)備(交換機(jī))的性能,尤其是通用性和靈活性,使其能夠在不重新部署的情況下隨著網(wǎng)絡(luò)體系升級(jí),這將對(duì)解決上述問題有極大的幫助。

交換機(jī)在工作時(shí),第1步是實(shí)現(xiàn)數(shù)據(jù)包的解析,而傳統(tǒng)網(wǎng)絡(luò)數(shù)據(jù)包包頭的報(bào)文序列通常是具有固定格式的。但是,現(xiàn)代網(wǎng)絡(luò)中,如前文所述,交換機(jī)需要處理的報(bào)文格式更加豐富,而且可能需要處理用戶自定義的未知協(xié)議報(bào)文,因此需要實(shí)現(xiàn)更加靈活通用的數(shù)據(jù)包解析器來滿足現(xiàn)代網(wǎng)絡(luò)中不同業(yè)務(wù)的需求,在不降低解析速度的情況下可支持新的協(xié)議加入。

在這之前相關(guān)研究人員已經(jīng)做出了大量努力,如CPHP(Configurable Parser for Heterogeneous Protocols)[1]和RDFE(Reconfigurable Dataplane for network Function Evolution)[2]設(shè)計(jì)通過引入可配置用戶定制模塊和配套的解析樹映射算法,將用戶定制的協(xié)議映射到硬件結(jié)構(gòu)中,從而實(shí)現(xiàn)異構(gòu)協(xié)議的解析。但是,這2個(gè)設(shè)計(jì)在解析較長(zhǎng)的數(shù)據(jù)包包頭時(shí)解析路徑相對(duì)較長(zhǎng),其相應(yīng)消耗的解析時(shí)鐘周期較多,解析速度會(huì)明顯下降。CAFE(Configurable pAcket Forwarding Engine)[3]和SwitchBlade[4]設(shè)計(jì)是通過一種任意比特提取器來實(shí)現(xiàn)包頭解析時(shí)包頭中的任意比特域的提取或組合,這種設(shè)計(jì)思想僅初步實(shí)現(xiàn)了用戶自定義匹配域抽取模式,沒有解決關(guān)鍵字匹配和解析動(dòng)作的可編程性問題。Kozanitis等人[5]提出了Kangaroo結(jié)構(gòu),通過可編程的協(xié)議樹預(yù)測(cè)解析,實(shí)現(xiàn)多個(gè)數(shù)據(jù)包的同時(shí)處理,其解析能力可以達(dá)到40 Gbps。但是,它利用TCAM(Ternary Content Addressable Memory)來實(shí)現(xiàn)對(duì)數(shù)據(jù)包中預(yù)定義偏移的預(yù)測(cè)性提取,其數(shù)據(jù)包存儲(chǔ)在內(nèi)存系統(tǒng)中,提取指令每次都要從中取出相應(yīng)的字段,這樣其處理協(xié)議的預(yù)測(cè)跨度將受限于可從內(nèi)存子系統(tǒng)中提取字段的多少。DrawerPipe模型[6]將網(wǎng)絡(luò)功能抽象為5個(gè)標(biāo)準(zhǔn)的“抽屜”,不同的“抽屜”根據(jù)需要裝載不同的處理模塊,通過組合處理模塊實(shí)現(xiàn)各種網(wǎng)絡(luò)功能。這一模型目前僅能實(shí)現(xiàn)對(duì)數(shù)據(jù)中心網(wǎng)絡(luò)中各種數(shù)據(jù)進(jìn)行不同功能的分組處理,還沒有用于數(shù)據(jù)交換的實(shí)例。劉中金等人[7]提出了EPC(Elastic Protocol Customization)結(jié)構(gòu)及其對(duì)應(yīng)的映射算法,其核心思想是通過偏移量信息來提取匹配域,但僅支持4個(gè)匹配域的提取,故無法滿足實(shí)際應(yīng)用的需求。王永娜等人[8]使用XML語言描述可擴(kuò)展協(xié)議報(bào)文的方法,以簡(jiǎn)單協(xié)議解析為基礎(chǔ),將解析器功能模塊化,從而設(shè)計(jì)出異構(gòu)協(xié)議動(dòng)態(tài)解析器模型,但是其目前只適用于工業(yè)控制網(wǎng)絡(luò)。Bosshart等人[9]提出了基于 TCAM 的可編程解析器架構(gòu),同時(shí)在解析模塊中引入 RAM 存儲(chǔ)匹配域的偏移量,從而實(shí)現(xiàn)匹配域的用戶自定義。為實(shí)現(xiàn)解析器的快速設(shè)計(jì),Benacek等人[10]和Attig等人[11]分別將高級(jí)數(shù)據(jù)包處理語言 P4(Programming Protocol-independent Packet Processors)和PP(Packet Parsing)映射到FPGA中,實(shí)現(xiàn)了數(shù)據(jù)包解析器的快速生成,但是在每次處理協(xié)議變化時(shí)還要重新編譯生成新的解析器的FPGA配置文件,F(xiàn)PGA作為一種通用的細(xì)粒度可重配置芯片,其實(shí)現(xiàn)效率相對(duì)較低,所實(shí)現(xiàn)的解析器性能受到了限制。

基于以上討論,本文提出了一種可以通過靜態(tài)配置實(shí)現(xiàn)不同解析邏輯(包括用戶自定義的未知協(xié)議)的以太網(wǎng)交換機(jī)數(shù)據(jù)包解析器基本處理單元PE(Process Element),這種PE可以被用于任何一層協(xié)議的解析,配置文件由編譯器根據(jù)協(xié)議幀格式生成,通過流水線式級(jí)聯(lián)能夠搭建支持各種協(xié)議(包括自定義的未知協(xié)議)集合的可重構(gòu)數(shù)據(jù)包解析器。由于它是面向包解析器這一特定硬件類型設(shè)計(jì)的定制可重構(gòu)結(jié)構(gòu),實(shí)現(xiàn)效率高于通用的FPGA,配置文件規(guī)模也得到大大壓縮,與已有方案相比,其具有更少的資源占用率、更高的性能和更高的靈活性。

2 數(shù)據(jù)包解析器的整體架構(gòu)

在高性能以太網(wǎng)交換機(jī)芯片中,目前數(shù)據(jù)包解析器普遍采用流水線結(jié)構(gòu),所有輸入的數(shù)據(jù)包都按照相同的流水線逐級(jí)傳遞,中間不能停頓以確保數(shù)據(jù)在交換機(jī)芯片內(nèi)部不會(huì)出現(xiàn)擁塞。包解析的各步操作按照協(xié)議封裝層次順序依次排列在流水線中,大多數(shù)網(wǎng)絡(luò)數(shù)據(jù)包解析過程都可以看成是多叉樹結(jié)構(gòu),在每一層針對(duì)本層樹節(jié)點(diǎn)的對(duì)應(yīng)域進(jìn)行提取、匹配,從而實(shí)現(xiàn)本層協(xié)議的解析。因此,每層協(xié)議的解析硬件也具有相似性,每級(jí)流水線可以采用相同的可重構(gòu)基本處理單元(PE)來構(gòu)成,每級(jí)PE對(duì)應(yīng)1層包頭(1層協(xié)議)的解析,這樣可以簡(jiǎn)化硬件設(shè)計(jì)和配置文件的生成。

本文數(shù)據(jù)包解析器的設(shè)計(jì)思想是將包解析中固定的內(nèi)容,如變化較少的L1協(xié)議、checksum等內(nèi)容采用固定邏輯實(shí)現(xiàn),而將需要具備可編程性的包解析部分用可重構(gòu)的PE級(jí)聯(lián)實(shí)現(xiàn)。這樣可以最大化系統(tǒng)的實(shí)現(xiàn)效率和靈活性,同時(shí)因?yàn)椴捎靡?guī)則的結(jié)構(gòu)(復(fù)用PE),又能夠有效降低硬件設(shè)計(jì)復(fù)雜度,滿足設(shè)計(jì)時(shí)間的要求。

本文主要關(guān)注PE單元的設(shè)計(jì),因此忽略解析器中的固定邏輯部分,這樣的解析器主體部分的整體結(jié)構(gòu)示意圖如圖 1所示,它由多個(gè)可重構(gòu)基本處理單元 (PE)級(jí)聯(lián)組成。PE之間的數(shù)據(jù)交換通過幀寄存器(Frame)和中間值寄存器堆IRF(Intermediates Register File)實(shí)現(xiàn)。交換機(jī)接收到的數(shù)據(jù)包包頭(PKT_header)會(huì)隨著Frame數(shù)據(jù)通路進(jìn)行傳輸,首先由前面的預(yù)處理邏輯匹配出首層的協(xié)議所要提取的關(guān)鍵字段的位置及下1層協(xié)議類型,并對(duì)關(guān)鍵字段進(jìn)行提取存放到IRF中,然后由PE單元對(duì)數(shù)據(jù)包剩下協(xié)議進(jìn)行逐層解析,提取出的關(guān)鍵字段及處理結(jié)果均存放于IRF寄存器中。

Figure 1 Overall structure of Parser圖1 Parser的整體結(jié)構(gòu)框圖

圖1中可重構(gòu)PE模塊是此報(bào)文解析器的核心部分,可重構(gòu)PE模塊通過配置可以實(shí)現(xiàn)不同的硬件解析邏輯,從而支持對(duì)不同協(xié)議報(bào)文的解析?;镜脑O(shè)計(jì)原則是數(shù)據(jù)包的每層封裝的解析對(duì)應(yīng)1級(jí)PE單元,對(duì)應(yīng)現(xiàn)代需要解析到L4層的交換機(jī),典型應(yīng)用場(chǎng)景中包含5級(jí)PE。通過配置可以實(shí)現(xiàn)不同層之間的配合解析,也可以每層獨(dú)立解析,因此具有較高的靈活性。

3 可重構(gòu)基本處理單元

硬件可重構(gòu)解析處理單元的實(shí)現(xiàn)是本設(shè)計(jì)的關(guān)鍵所在。包含不同協(xié)議的網(wǎng)絡(luò)數(shù)據(jù)包,其對(duì)應(yīng)數(shù)據(jù)域的位置、長(zhǎng)度、類型均不相同,因此要處理不同協(xié)議的數(shù)據(jù)包,就需要靈活地調(diào)動(dòng)同一層或不同層的硬件資源,通過這些資源的相互配合來協(xié)同工作,這就要求必須實(shí)現(xiàn)可靈活配置的硬件可重構(gòu)單元。

由于數(shù)據(jù)包包頭是各種報(bào)文序列的組合,因此數(shù)據(jù)包的解析過程可以按層進(jìn)行劃分,每層報(bào)文的解析可以概述為提取、查找、動(dòng)作3個(gè)過程。接收到的數(shù)據(jù)包輸入到數(shù)據(jù)包解析器中,對(duì)應(yīng)任一層協(xié)議的解析,首先要根據(jù)協(xié)議類型提取出當(dāng)前協(xié)議包頭的關(guān)鍵字段,然后進(jìn)行查表匹配出需要執(zhí)行的動(dòng)作,最后執(zhí)行相應(yīng)的動(dòng)作(如提取關(guān)鍵字段值、字段值的比較、設(shè)定報(bào)文類型描述符等),這就完成了一層報(bào)文解析的過程。

可重構(gòu)PE是實(shí)現(xiàn)上述解析邏輯可重構(gòu)的基本單元,其結(jié)構(gòu)如圖 2所示,主要是由PE配置模塊(PE_config)、 Cell_A單元、Cell_B單元、PE_bypass模塊、Offset模塊、Frame數(shù)據(jù)通路、IRF 數(shù)據(jù)通路幾個(gè)部分組成。

Figure 2 Structure of reconfigurable PE圖2 可重構(gòu)PE結(jié)構(gòu)框圖

在這里將Cell_A單元和Cell_B單元統(tǒng)稱為Cell單元,其用來實(shí)現(xiàn)對(duì)協(xié)議報(bào)文的解析,Cell單元的硬件實(shí)現(xiàn)邏輯可以根據(jù)協(xié)議幀格式進(jìn)行配置,從而支持不同的協(xié)議幀的解析。Cell單元中包含PA、PB、PC和Action幾個(gè)部分,其中PB、PC主要為查找表結(jié)構(gòu),而Cell_A單元和Cell_B單元的區(qū)別將在下1小節(jié)中具體說明。

典型情況下,F(xiàn)rame數(shù)據(jù)通路中傳輸?shù)氖? 024 bit的數(shù)據(jù)包包頭信息,主要是向Cell單元提供數(shù)據(jù),Cell單元可以在Frame中提取出任意指定的數(shù)據(jù)匹配域(即關(guān)鍵字段)。

IRF數(shù)據(jù)通路是用來暫存解析過程中所產(chǎn)生的結(jié)果(描述符)和需要跨層傳遞的臨時(shí)中間數(shù)據(jù),其在第1層輸入的是由前端的報(bào)文預(yù)解析模塊產(chǎn)生的初始數(shù)據(jù),如端口號(hào)、是否為環(huán)回報(bào)文等,然后每經(jīng)過1層PE單元,寄存器的數(shù)量增加相應(yīng)的量,為每層PE處理過程中所新產(chǎn)生的數(shù)據(jù)包描述信息。

PE_config單元是完成Cell單元中PB、PC的查找表的表項(xiàng)內(nèi)容的配置。

PE_bypass單元主要實(shí)現(xiàn)跨層協(xié)議的處理,如Ethernet+IPv4+…的數(shù)據(jù)包,在PE_L2層完成了Ethernet的解析,而IPv4是在PE_L3層解析的,則需要跳過L2子層,此時(shí)PE_L2s內(nèi)的PE_bypass單元就完成該工作,其根據(jù)上1層傳來的bypass_cur信號(hào)執(zhí)行跳過本層的動(dòng)作,同時(shí)為了匹配各層的延時(shí),需要將數(shù)據(jù)通路的數(shù)據(jù)信號(hào)進(jìn)行相應(yīng)的延時(shí)。

Offset單元用來實(shí)現(xiàn)每層PE單元的Frame數(shù)據(jù)通路的起始數(shù)據(jù)訪問位置的偏移工作,對(duì)于1個(gè)數(shù)據(jù)包,上1層解析過的數(shù)據(jù),在下1層不需要再次訪問,因此下1層的起始訪問數(shù)據(jù)將要越過上層已解析的數(shù)據(jù),該單元就完成對(duì)應(yīng)操作。這種做法可以減少偏移量的存儲(chǔ)位寬,同時(shí)縮小訪問范圍,降低硬件設(shè)計(jì)復(fù)雜度和硬件開銷。

3.1 Cell單元

Cell單元是每層PE實(shí)現(xiàn)對(duì)應(yīng)協(xié)議解析的關(guān)鍵所在,其有2種不同的形式——Cell_A單元和Cell_B單元。如圖 2所示,Cell單元中均包含PA、PB、PC、Action幾個(gè)模塊。

Cell中的PA模塊用來實(shí)現(xiàn)特定數(shù)據(jù)域的提取,每1個(gè)Cell單元中設(shè)置了若干個(gè)PA。PA模塊的輸入為前1級(jí)PE輸出的關(guān)鍵字段偏移量、本級(jí)Frame寄存器的待提取的數(shù)據(jù)幀,輸出為提取出來的關(guān)鍵字段。PB模塊的輸入為本級(jí)各PA模塊輸出的關(guān)鍵字段,其核心是1個(gè)匹配查找表,把關(guān)鍵字段組合和其中存儲(chǔ)的匹配模板一一比較,輸出匹配的模板所對(duì)應(yīng)的協(xié)議類型信息。如果關(guān)鍵字段和任何特征模板都不匹配,則發(fā)送非法標(biāo)識(shí)到PC單元,PB單元每個(gè)匹配模板還有1個(gè)對(duì)應(yīng)的掩碼字,用來忽略不關(guān)心的比特。PC中有PC_cur和PC_nxt 2種表,其中PC_cur表用來根據(jù)PB表的匹配結(jié)果索引要執(zhí)行的動(dòng)作,PC_nxt表用來根據(jù)PB表的匹配結(jié)果索引下1層PE單元要提取的關(guān)鍵字的偏移量。Action用來執(zhí)行PC表索引的對(duì)應(yīng)的動(dòng)作,這些動(dòng)作的定義以超長(zhǎng)指令字的形式表示,Action執(zhí)行的指令的源操作數(shù)來自Frame(即數(shù)據(jù)包頭字段)、IRF或立即數(shù)寄存器,執(zhí)行結(jié)果被寫入IRF。

在數(shù)據(jù)包頭解析的過程中,存在同時(shí)檢查多個(gè)關(guān)鍵字段的情況(如QinQ協(xié)議解析時(shí)就需要同時(shí)提取外層Type、內(nèi)層Type和MAC 3個(gè)字段域,PA取出這些字段后,再將他們拼接成1個(gè)Keyword輸出給PB進(jìn)行查表),特別是如果這些關(guān)鍵字段彼此是獨(dú)立還要考察其各種組合,則需要對(duì)應(yīng)增加很多表項(xiàng)(如MAC域要進(jìn)行的是比較操作,Type域要進(jìn)行的是協(xié)議類型查找操作,假使MAC域有m種可能,Type域有n種可能,如果把這2個(gè)獨(dú)立的域合成1個(gè)Keyword給PB進(jìn)行查表,則存在m×n種組合的可能性,即會(huì)使PB表增加m×n行,這將使存儲(chǔ)開銷激增),而各層協(xié)議的匹配任務(wù)數(shù)量(即需要支持的協(xié)議種類數(shù)量)差異也較大,業(yè)務(wù)類型越豐富的層匹配任務(wù)越多,如果只使用1種固定的Cell單元,同時(shí)滿足所有層次的需求,會(huì)引入很大冗余開銷,因?yàn)槠ヅ淙蝿?wù)數(shù)量少的層無需大的存儲(chǔ)表,而如果采用較小的Cell單元,某些層可能僅靠1個(gè)Cell單元無法完全解析,如果串聯(lián)多個(gè)Cell單元解析,則時(shí)鐘周期將大大增加,降低解析速度。因此,本文采用多個(gè)小單元任意組合的解決方案,即在不同層次上根據(jù)需要并行放置不同數(shù)量的Cell單元。同時(shí)使用多個(gè)Cell單元并行解析,這樣可以解耦復(fù)雜的解析操作,即將彼此獨(dú)立的條件匹配復(fù)雜操作進(jìn)行分解,然后存儲(chǔ)到并行的多個(gè)Cell單元的表中,這樣不僅可以保證1層協(xié)議頭在PB處只需1個(gè)時(shí)鐘周期即可完成解析,降低了配置的復(fù)雜度;同時(shí)也可以去除表項(xiàng)之間的耦合關(guān)系,使獨(dú)立的匹配條件分別存儲(chǔ)到多張表中,減少表項(xiàng)的條目,即減小存儲(chǔ)開銷。例如,上述Type和MAC 2個(gè)字段的匹配操作,如果分別使用2個(gè)并行的Cell單元來處理,則一共僅需m+n行表項(xiàng),這將大大節(jié)約存儲(chǔ)開銷。因?yàn)槊繉訁f(xié)議解析僅需1張存儲(chǔ)下1層協(xié)議類型的表(即PC_nxt表),如果直接使用相同的Cell單元并行解析1層協(xié)議,則PC_nxt表資源會(huì)存在浪費(fèi),因此這里設(shè)計(jì)了2種形式的Cell單元:Cell_A和Cell_B。在Cell_A單元中PC模塊包含PC_cur和PC_nxt 2種表,而Cell_B單元的PC模塊僅有PC_cur這1張表。考慮到一些協(xié)議解析操作比較復(fù)雜,為了簡(jiǎn)化硬件配置邏輯,PE有3種組合情況,Cell_A單元都是1個(gè),但其可以分別含有0個(gè)、1個(gè)、2個(gè)Cell_B單元,具體使用哪種情況,在設(shè)計(jì)調(diào)用時(shí)要根據(jù)實(shí)際解析的數(shù)據(jù)包在各層解析所占用的硬件資源來確定。

使用2種形式的Cell單元并行解析的實(shí)現(xiàn)方式,通過PE_config單元的配置,可以使Cell_A、Cell_B單元協(xié)同工作,同時(shí)解析協(xié)議樹中同1層的多個(gè)協(xié)議。當(dāng)2個(gè)Cell_B單元仍無法完全解析1層協(xié)議時(shí),可以通過對(duì)相鄰2層PE單元中查找表的協(xié)同配置,使相鄰2層或多層PE單元來處理1個(gè)較為復(fù)雜的協(xié)議層。這樣,只要不超出硬件資源的容量,可以實(shí)現(xiàn)任意1種未知協(xié)議的解析,提高硬件資源的復(fù)用率和通用擴(kuò)展性。

3.2 可重構(gòu)處理單元的數(shù)據(jù)通路

3.2.1 關(guān)鍵字段提取單元PA

PA負(fù)責(zé)解析器中Frame數(shù)據(jù)和IRF數(shù)據(jù)的提取工作,其通過輸入的Offset值,對(duì)輸入數(shù)據(jù)中相應(yīng)的字段值進(jìn)行提取。PA可以分別訪問到Frame和IRF 2個(gè)數(shù)據(jù)存儲(chǔ)單元,具體訪問哪一路數(shù)據(jù)由PE_bypass單元指定。PA提取的數(shù)據(jù)作為關(guān)鍵字傳給PB。PA單元的結(jié)構(gòu)如圖 3所示。

Figure 3 Internal structure of PA圖3 PA內(nèi)部結(jié)構(gòu)

如圖 3所示,PA用來實(shí)現(xiàn)特定數(shù)據(jù)域的提取,每1個(gè)Cell單元中設(shè)置了若干個(gè)PA,在實(shí)現(xiàn)提取時(shí)采用統(tǒng)一提取的方式,一次性提取出本級(jí)PE后續(xù)解析所需要的所有關(guān)鍵字段,以提高提取效率。由于前1層解析過的包頭數(shù)據(jù)在下1層解析中不需要再次訪問,因此通過偏移對(duì)齊每層協(xié)議頭部(偏移工作由Offset單元完成),可以減少用來描述可訪問數(shù)據(jù)的位寬,即縮小偏移量位寬,不僅節(jié)省硬件開銷,也提高了解析速度。因此,在本設(shè)計(jì)中,PA只能訪問當(dāng)前層協(xié)議幀頭部的數(shù)據(jù),即整體訪問跨度等于所有協(xié)議幀頭部長(zhǎng)度的最大值,本設(shè)計(jì)每個(gè)PA可訪問16字節(jié)的數(shù)據(jù)。同時(shí),又由于匹配域(即關(guān)鍵字段)的長(zhǎng)度不定,很難做到通用,如果使用固定邏輯會(huì)浪費(fèi)硬件開銷,分散提取會(huì)增加數(shù)據(jù)偏移量的存儲(chǔ)開銷,因此為了降低后續(xù)處理硬件邏輯的復(fù)雜度,在該模塊采用固定長(zhǎng)度的提取方案,即每個(gè)PA單元1次可提取出1個(gè)字節(jié)數(shù)據(jù)。長(zhǎng)度超過1個(gè)字節(jié)的字段,則由多個(gè)PA分別提取后拼接,當(dāng)長(zhǎng)度不是字節(jié)整倍數(shù)時(shí),則額外提取相鄰位補(bǔ)充成完整字節(jié),多余的比特在匹配時(shí)再利用掩碼功能忽略掉。

3.2.2 關(guān)鍵字段匹配單元PB

PB是查找表結(jié)構(gòu),其表項(xiàng)內(nèi)容如表 1所示,PB可以根據(jù)PA傳來的關(guān)鍵字和上級(jí)PE解析出的本層協(xié)議類型(HDR_ID)匹配出本層協(xié)議所執(zhí)行的動(dòng)作索引SUB_ID和下1層協(xié)議類型(NXT_ID)及Bypass信息。為了降低配置的復(fù)雜度,采用二級(jí)表結(jié)構(gòu)將表項(xiàng)進(jìn)行拆分,對(duì)于一些復(fù)雜運(yùn)算先經(jīng)過前級(jí)表進(jìn)行轉(zhuǎn)換,變換成已有的簡(jiǎn)單運(yùn)算,再在后級(jí)表中進(jìn)行匹配。

Table 1 Contents of PB table表1 PB表的表項(xiàng)結(jié)構(gòu)

Figure 4 Internal structure of PB圖4 PB內(nèi)部結(jié)構(gòu)

PB單元的內(nèi)部結(jié)構(gòu)如圖 4所示,其接收到的關(guān)鍵字先與Mask進(jìn)行掩碼操作,然后再與查找表中存儲(chǔ)的Value項(xiàng)進(jìn)行匹配。這里使用掩碼操作是為了在提取時(shí)可以實(shí)現(xiàn)固定長(zhǎng)度的統(tǒng)一提取操作,這樣不僅降低了硬件設(shè)計(jì)的復(fù)雜度,規(guī)范了數(shù)據(jù)的處理位寬,同時(shí)減小了存儲(chǔ)開銷。

3.2.3 動(dòng)作及協(xié)議類型索引單元PC

PC中有PC_cur和PC_nxt 2種表,如表2所示,PC_cur表根據(jù)PB表的匹配結(jié)果(SUB_ID)索引要執(zhí)行的動(dòng)作的超長(zhǎng)指令字VLIW(Very Long Instruction Word)信息和下1級(jí)PE單元的Frame數(shù)據(jù)通路的起始數(shù)據(jù)訪問位置的偏移(LYR_offset)信息,并分別將VLIW通過Action、LYR_offset輸出給本級(jí)PE的Offset單元;PC_nxt表根據(jù)PB表的匹配結(jié)果(NXT_ID)索引下1層PE單元的每個(gè)PA所要提取數(shù)據(jù)域的位置偏移信息PA_offset。

Table 2 Contents of PC table 表2 PC表的表項(xiàng)結(jié)構(gòu)

PC_cur表的實(shí)現(xiàn)結(jié)構(gòu)如圖 5所示,其主要使用SRAM(Static Random Access Memory)實(shí)現(xiàn),為了節(jié)省存儲(chǔ)空間,在配置PC_cur表時(shí),使其表項(xiàng)條目順序按照PB表中對(duì)應(yīng)的SUB_ID條目的順序進(jìn)行存儲(chǔ),這樣在PC_cur表中可以省去SUB_ID的匹配過程,簡(jiǎn)化了硬件設(shè)計(jì)復(fù)雜度。

Figure 5 Internal structure of PC_cur圖5 PC_cur內(nèi)部結(jié)構(gòu)

PC_nxt表的內(nèi)部實(shí)現(xiàn)如圖 6所示,其根據(jù)PB給出的NXT_ID信息,與自己表中的HDR_ID信息匹配出下1層PE單元的PA模塊所提取的關(guān)鍵字段的偏移量PA_offset信息。其表項(xiàng)內(nèi)容通過配置可以做出相應(yīng)的改變,以此來滿足不同協(xié)議解析的要求。

Figure 6 Internal structure of PC_nxt圖6 PC_nxt內(nèi)部結(jié)構(gòu)

3.2.4 動(dòng)作執(zhí)行單元Action

Action用來執(zhí)行PC表索引出的對(duì)應(yīng)動(dòng)作,其接收來自PC的超長(zhǎng)指令字(VLIW),解析指令,取源操作數(shù)并執(zhí)行。Action內(nèi)部有3種指令單元,如圖 7所示,每種指令單元各8個(gè),共24個(gè)。1個(gè)超長(zhǎng)指令字包含24個(gè)子指令,分別控制這24個(gè)指令單元。在本設(shè)計(jì)中對(duì)每級(jí)PE做了IRF的預(yù)分配,每個(gè)Action單元對(duì)應(yīng)分配到24*8 bit的IRF空間,即每個(gè)指令對(duì)應(yīng)8 bit的IRF空間,用來存儲(chǔ)指令的運(yùn)行結(jié)果;同時(shí),為了簡(jiǎn)化IRF的存儲(chǔ)結(jié)構(gòu)復(fù)雜度,在本設(shè)計(jì)中,將指令單元與存儲(chǔ)空間進(jìn)行了綁定,而存儲(chǔ)空間的實(shí)際意義(即存儲(chǔ)的數(shù)據(jù)結(jié)構(gòu))由編譯器進(jìn)行指定,與硬件結(jié)構(gòu)無關(guān)。

Figure 7 Diagram of Action圖7 Action框圖

在指令集設(shè)計(jì)中,盡量精簡(jiǎn)指令集,以縮短指令長(zhǎng)度,指令長(zhǎng)度縮短可以降低PC模塊中的表項(xiàng)規(guī)模,簡(jiǎn)化指令譯碼邏輯復(fù)雜度。各指令單元如圖 7所示,ALU單元用來執(zhí)行大于(Greater than)、等于(Equal)等比較操作,MOV單元和SET單元分別執(zhí)行復(fù)制(Move)、置數(shù)(Set)操作。Move子指令將Frame或IRF中的數(shù)據(jù)賦值到IRF寄存器中。Set子指令將數(shù)值域的值賦值到對(duì)應(yīng)的IRF寄存器中。報(bào)文解析中用到的其它操作(如大于或等于等操作)都可以轉(zhuǎn)化為這幾種操作。這3種指令單元的指令格式如表 3所示。

Table 3 Sub instruction format of Action表3 Action的子指令格式

ALU單元子指令共24 bit,分為6個(gè)域,分別為指令名稱域(Ist)、掩碼域(Mask)、操作數(shù)1源選擇域(Source 1)、操作數(shù)1偏移量域(Offset 1)、操作數(shù)2源選擇域(Source 2)、操作數(shù)2偏移量域(Offset 2)。Ist域用來指定操作類型;Mask域?qū)Σ僮鲾?shù)做掩碼操作,去除操作數(shù)中無用信息,其做掩碼時(shí)以字節(jié)為單位,最高支持64 bit;操作數(shù)源選擇域指示操作數(shù)來源于Frame還是IRF;操作數(shù)偏移量域指示從數(shù)據(jù)源中提取的具體數(shù)據(jù)位置偏移量。ALU單元的操作結(jié)果存放到IRF寄存器中。

MOV單元子指令共8 bit,分為3個(gè)域,分別為使能域(En)、操作數(shù)源選擇域(Source)、操作數(shù)偏移量域(Offset)。En域指示是否執(zhí)行MOV操作;Source域指示操作數(shù)來源于Frame或IRF;Offset域指示從數(shù)據(jù)源中提取的具體數(shù)據(jù)位置偏移量。

3.3 存儲(chǔ)開銷分析

在可重構(gòu)處理單元中,存儲(chǔ)開銷主要包括:存儲(chǔ)類型域內(nèi)容的查找表、存儲(chǔ)偏移量信息及匹配域字段的查找表、存儲(chǔ)中間數(shù)據(jù)的寄存器IRF、存儲(chǔ)數(shù)據(jù)包包頭的Buffer。這幾個(gè)部分的開銷分析如下:假設(shè)PE中PA模塊的個(gè)數(shù)為Npa;PB模塊查找表可以支持的協(xié)議條目數(shù)為Pb;PC模塊中當(dāng)前級(jí)查找表(PC_cur)支持的協(xié)議條目數(shù)為Pccur,下1級(jí)查找表(PC_nxt)支持的協(xié)議條目數(shù)為Pcnxt;ALU指令的位寬為A,MOV指令的位寬為M,SET指令的位寬為S,Action單元中指令單元總個(gè)數(shù)為Z;每層可重構(gòu)處理單元(PE)所支持的最大和最小包頭長(zhǎng)度分別為Max_header和Min_header。那么,各種存儲(chǔ)開銷計(jì)算公式如表 4所示。

Table 4 Storage overhead calculation formula表4 存儲(chǔ)開銷計(jì)算公式

對(duì)于包含1個(gè)Cell_A單元、2個(gè)Cell_B單元(每個(gè)Cell單元中包含24個(gè)PA單元、1個(gè)PB單元、1個(gè)PC單元、1個(gè)Action單元)的PE(可支持的協(xié)議條目為32,數(shù)據(jù)包包頭長(zhǎng)度為1 024 bit)開銷如下:PB表總計(jì)38 496 bit;PC表總計(jì)49 632 bit;IRF寄存器總計(jì)704 bit;緩沖寄存器總計(jì)1 262 bit,即1層PE的總存儲(chǔ)開銷約為87.98 Kb。

3.4 基于本文PE的包解析器實(shí)例

本節(jié)將給出1個(gè)基于本文所設(shè)計(jì)的PE實(shí)現(xiàn)的支持如表 5所示的協(xié)議集合的數(shù)據(jù)包解析器作為示例,說明PE的配置方法。

以太網(wǎng)數(shù)據(jù)包包頭包含的首先是鏈路層協(xié)議,如Ethernet Ⅱ、Vlan、 IP-in-IP(802.1q)等;然后是

Table 5 Protocol set supported by the packet parser表5 數(shù)據(jù)包解析器支持的協(xié)議集合

MPLS層協(xié)議,典型的如MPLS L2/L3VPN等;接下來是網(wǎng)絡(luò)層協(xié)議(如IPv4、IPv6等)和傳輸層協(xié)議(如TCP、UDP等),本設(shè)計(jì)支持到傳輸層協(xié)議的解析。如圖 8所示,數(shù)據(jù)包的解析過程可以按照樹形結(jié)構(gòu)進(jìn)行分解,每1個(gè)樹的節(jié)點(diǎn)為1種協(xié)議,樹的每1層為1個(gè)解析層次,與之對(duì)應(yīng),采用層的硬件結(jié)構(gòu)對(duì)數(shù)據(jù)包進(jìn)行解析,每1級(jí)或2級(jí)PE單元對(duì)應(yīng)協(xié)議樹的1層節(jié)點(diǎn),通過配置可重構(gòu)處理單元來實(shí)現(xiàn)本層協(xié)議的硬件解析邏輯。

根據(jù)數(shù)據(jù)包的層封裝結(jié)構(gòu)的解析過程,將整個(gè)解析器設(shè)計(jì)為流水線(層)結(jié)構(gòu)。在本示例中,為支持到傳輸層協(xié)議的解析,選用5層PE進(jìn)行級(jí)聯(lián),為能夠支持IP-in-IP、MPLS等協(xié)議的解析,每層PE單元內(nèi)部包含1個(gè)Cell_A單元、2個(gè)Cell_B單元,每個(gè)Cell單元中均包含24個(gè)PA單元、1個(gè)PB單元、1個(gè)PC單元、1個(gè)Action單元,每層PE單元所支持的解析協(xié)議類型如表 5所示。在每級(jí)PE單元中,需要配置7張表(Cell_A中1個(gè)PB、1個(gè)PC_cur和1個(gè)PC_nxt,2個(gè)CellB中各1個(gè)PB和1個(gè)PC_cur),它們的具體內(nèi)容由配套設(shè)計(jì)的編譯器生成(編譯器的設(shè)計(jì)本文不做討論),然后通過PE_config單元加載。根據(jù)3.3節(jié)的公式估算,所用存儲(chǔ)資源共計(jì)0.429 6 Mb。

Figure 9 Simulation results of packet parser圖9 數(shù)據(jù)包解析器功能仿真結(jié)果

Figure 8 Schematic diagram of message protocol tree structure圖8 報(bào)文協(xié)議樹結(jié)構(gòu)示意圖

4 性能分析

本文提出1種可重構(gòu)的以太網(wǎng)數(shù)據(jù)包解析器中可重構(gòu)單元的實(shí)現(xiàn),以EthernetⅡ+Vlan+IPv4+MPLS+TCP數(shù)據(jù)包為例對(duì)其功能進(jìn)行驗(yàn)證分析,如圖 9所示為其功能仿真結(jié)果。

將圖9輸出結(jié)果與Wireshark工具軟件的輸出結(jié)果進(jìn)行了比較,結(jié)果顯示一致。并使用Synopsys公司的邏輯綜合工具對(duì)本設(shè)計(jì)做了DC綜合分析,使用40 nm的工藝庫,最終系統(tǒng)能達(dá)到的時(shí)鐘頻率為240 MHz,由于測(cè)試實(shí)例使用了5級(jí)PE單元,每級(jí)時(shí)延為4個(gè)時(shí)鐘周期,故此數(shù)據(jù)包解析器處理1個(gè)數(shù)據(jù)包大約需83 ns,由本文PE按照流水線級(jí)聯(lián)方式組成的解析器理論上每個(gè)時(shí)鐘周期可以輸出1個(gè)數(shù)據(jù)包,因此由解析器決定的最高數(shù)據(jù)包吞吐率可達(dá)每秒2.4億個(gè)數(shù)據(jù)包(假設(shè)不存在環(huán)回報(bào)文)。同時(shí),對(duì)1級(jí)PE(包含3個(gè)Cell單元,每個(gè)Cell單元中包含24個(gè)PA單元、1個(gè)PB單元、1個(gè)PC單元、1個(gè)Action單元)的面積做了評(píng)估,其面積為3 528 761.77,約為147.56萬門。

5 結(jié)束語

針對(duì)目前網(wǎng)絡(luò)體系中數(shù)據(jù)中轉(zhuǎn)設(shè)備的更新速度難以跟上網(wǎng)絡(luò)結(jié)構(gòu)的更新速度的問題,以及為了降低硬件部署成本的現(xiàn)實(shí)需求,本文提出了1種以可重構(gòu)的方式實(shí)現(xiàn)更改解析邏輯的數(shù)據(jù)報(bào)文解析器基本處理單元,并對(duì)其進(jìn)行了功能測(cè)試及資源分析,其靈活性可以很好地滿足現(xiàn)實(shí)需求。通過測(cè)試這種結(jié)構(gòu)可以看出,該結(jié)構(gòu)支持多種協(xié)議且具有較高的轉(zhuǎn)發(fā)速率。該設(shè)計(jì)對(duì)軟件定義網(wǎng)絡(luò)(SDN)[11]的交換機(jī)芯片設(shè)計(jì)具有重要的價(jià)值。

猜你喜歡
解析器關(guān)鍵字數(shù)據(jù)包
履職盡責(zé)求實(shí)效 真抓實(shí)干勇作為——十個(gè)關(guān)鍵字,盤點(diǎn)江蘇統(tǒng)戰(zhàn)的2021
基于多解析器的域名隱私保護(hù)機(jī)制
基于Wireshark的列控中心以太網(wǎng)通信協(xié)議解析器的研究與實(shí)現(xiàn)
成功避開“關(guān)鍵字”
SmartSniff
如何防御DNS陷阱?常用3種DNS欺騙手法
一種基于無關(guān)DNS的通信隱私保護(hù)技術(shù)研究
電子世界(2018年14期)2018-04-15 16:14:25
基于Libpcap的網(wǎng)絡(luò)數(shù)據(jù)包捕獲器的設(shè)計(jì)與實(shí)現(xiàn)
視覺注意的數(shù)據(jù)包優(yōu)先級(jí)排序策略研究
基于用戶反饋的關(guān)系數(shù)據(jù)庫關(guān)鍵字查詢系統(tǒng)
石城县| 商丘市| 安龙县| 德昌县| 宝丰县| 麟游县| 京山县| 西丰县| 剑河县| 河北省| 九台市| 武鸣县| 堆龙德庆县| 略阳县| 清原| 江源县| 古蔺县| 上高县| 滨州市| 德庆县| 常山县| 石楼县| 棋牌| 内江市| 左权县| 洪江市| 介休市| 贞丰县| 交城县| 郴州市| 遵化市| 鹤壁市| 综艺| 绍兴县| 奉节县| 泾源县| 辽阳县| 通河县| 彰武县| 介休市| 贺兰县|