使用賽靈思 FPGA加速包處理
如果只需要修改 MAC 目標(biāo)地址,F(xiàn)EPP 在接受到包時(shí)收到的“任務(wù)”將會被使用,例如,流修改表(圖 3)中的規(guī)則 2。對規(guī)則 2 預(yù)先配置的內(nèi)容包括:指定操作碼(覆蓋)、OpLoc(在包中所處的位置,比如第 2 層)、OpOffset(距離啟始位置的偏移)、掩碼類型(使用什么字節(jié))以及修改數(shù)據(jù)(實(shí)際覆蓋的數(shù)據(jù))等。執(zhí)行的結(jié)果是使用預(yù)先配置的修改數(shù)據(jù)覆蓋從第 2 層位置開始的 6 個(gè)字節(jié)。
圖 3 – 簡單 MAC 目的地地址覆蓋修改
另一種覆蓋實(shí)例是如規(guī)則 6 所示的方案,例如我們希望修改某個(gè)特定的 TCP 標(biāo)志,如 ACK、SYN 或者 FIN(參見圖 4)。該規(guī)則將使用操作碼(覆蓋)、OpLoc(第 4 層)、OpOffset(從第 4 層開始 0 偏移)、掩碼類型(使用字節(jié) 14)和位掩碼(字節(jié)中的那些位需要掩蔽)。我們可以使用掩碼類型來包含或是排除特定的字節(jié),從而指定多個(gè)字段實(shí)現(xiàn)覆蓋。
圖 4 – TCP 標(biāo)志的覆蓋修改
我們的覆蓋功能不僅限于數(shù)據(jù)流修改規(guī)則表中存儲的內(nèi)容,而且還能包括作為關(guān)聯(lián)數(shù)據(jù)存儲在數(shù)據(jù)流任務(wù)表 (Flow Action Table) 中的內(nèi)容??梢酝ㄟ^指定規(guī)則,讓傳輸?shù)?FEPP 的關(guān)聯(lián)數(shù)據(jù)成為任務(wù)的組成部分,從而顯著擴(kuò)展可用于修改的數(shù)據(jù)的范圍。其結(jié)果,舉例來說,是可以覆蓋整個(gè) VLAN 標(biāo)記范圍。
我們的插入/刪除功能能夠?qū)崿F(xiàn)甚至更為復(fù)雜的包修改。以規(guī)則 5(參見圖 5)為例,使用我們的插入/刪除功能。包括操作碼(插入/刪除)、OpLoc(第 2 層)、OpOffset(從第 12 個(gè)字節(jié)開始)、ISize(插入數(shù)據(jù)大?。?22 個(gè)字節(jié))、DSize(刪除的字節(jié)大小 = 2個(gè)字節(jié))和Insert Data(0x8847,MPLS 標(biāo)簽)等與規(guī)則5相關(guān)的各種任務(wù),將刪除現(xiàn)有的 EtherType,并插入新的 EtherType=8847,這說明新的包將是一個(gè) MPLS 單播包,接著是由插入數(shù)據(jù)所指定的 MPLS 標(biāo)簽組。
圖 5 – MPLS 標(biāo)簽插入修改
布局規(guī)劃與時(shí)序收斂
在設(shè)計(jì)我們獨(dú)特的包處理器過程中,我們面臨的最嚴(yán)峻挑戰(zhàn)是 FPGA 設(shè)計(jì)復(fù)雜程度不斷增大,路由和使用密度的增加,各種 IP 核的集成,多種硬邏輯對象的使用(如 BRAM、GTP、DSP 以及類似對象),以及在項(xiàng)目最早期階段的數(shù)據(jù)流規(guī)劃不足等。我們發(fā)布的 Phase 1 Virtex-5 FPGA 的bit文件建立在較低的使用密度之上,特別是較低的 BRAM 使用密度基礎(chǔ)之上,結(jié)果導(dǎo)致相對簡單的時(shí)序收斂。在稍后階段因?yàn)樵黾恿诵碌闹匾δ埽瑢?dǎo)致 BRAM 的利用密度接近 97%,我們開始強(qiáng)烈意識到優(yōu)化布局規(guī)劃的重要意義,以及產(chǎn)品生命周期初期的決策將對后期造成怎樣的影響。
布局規(guī)劃的主要目標(biāo)通過減少路由延遲來改進(jìn)時(shí)序。為此,在設(shè)計(jì)分析過程中非常重要的事情就是將數(shù)據(jù)流和管腳配置納入考慮范圍?,F(xiàn)在已經(jīng)與 ISE? Y合一起的賽靈思 PlanAheadTM工具作為布局規(guī)劃和時(shí)序分析的單點(diǎn)工具 (point tool),為我們提供了如何在高利用率的使用設(shè)計(jì)中為了實(shí)現(xiàn)時(shí)序收斂而需要穿越重重復(fù)雜網(wǎng)絡(luò)的交互分析和可視化功能。PlanAhead 使我們能深入了解我們的設(shè)計(jì),即我們需要提供最少數(shù)量的約束條件來引導(dǎo)映射、布置以及布線工具充分滿足我們的時(shí)序要求。我們發(fā)現(xiàn),要做到這一點(diǎn),往往需要在基于模塊的設(shè)計(jì)區(qū)域約束之外優(yōu)化放置一部分關(guān)鍵的 BRAM。
回想起來,如果我們在項(xiàng)目最初階段即花更多的時(shí)間使用 PlanAhead 來進(jìn)行假定方案的驗(yàn)證,幫助我們看到最佳的數(shù)據(jù)流和管腳,我們在設(shè)計(jì)后期的任務(wù)就會輕松許多。
動態(tài)自適應(yīng)包處理
我們的整數(shù)流加速子系統(tǒng)能夠在最高的靈活程度下以線速檢查并和修改包,同時(shí)能夠動態(tài)地與應(yīng)用層業(yè)務(wù)進(jìn)行交互,實(shí)現(xiàn)高度自適應(yīng)的包處理。Virtex-class FPGA 是重要的實(shí)現(xiàn)手段,提供了一個(gè)前一代 FPGA 無法實(shí)現(xiàn)的片上系統(tǒng)平臺,加速基于內(nèi)容的路由以及實(shí)施重要包處理功能。
我們的新一代實(shí)施方案不僅能夠顯著提升性能、進(jìn)一步加強(qiáng)高速緩沖的能力,同時(shí)還能添加新功能。通過在單個(gè)賽靈思 Virtex-6 FPGA 中升級我們的 FAST 芯片組,我們不僅能夠?qū)⑿乱淮?FAST 的功能、接口和性能提升到一個(gè)前所未有的水平,同時(shí)還能縮小電路板空間并降低功耗要求,從而實(shí)現(xiàn)單芯片深度包處理協(xié)處理器單元。
評論