使用賽靈思 FPGA加速包處理
如果只需要修改 MAC 目標地址,FEPP 在接受到包時收到的“任務”將會被使用,例如,流修改表(圖 3)中的規則 2。對規則 2 預先配置的內容包括:指定操作碼(覆蓋)、OpLoc(在包中所處的位置,比如第 2 層)、OpOffset(距離啟始位置的偏移)、掩碼類型(使用什么字節)以及修改數據(實際覆蓋的數據)等。執行的結果是使用預先配置的修改數據覆蓋從第 2 層位置開始的 6 個字節。
圖 3 – 簡單 MAC 目的地地址覆蓋修改
另一種覆蓋實例是如規則 6 所示的方案,例如我們希望修改某個特定的 TCP 標志,如 ACK、SYN 或者 FIN(參見圖 4)。該規則將使用操作碼(覆蓋)、OpLoc(第 4 層)、OpOffset(從第 4 層開始 0 偏移)、掩碼類型(使用字節 14)和位掩碼(字節中的那些位需要掩蔽)。我們可以使用掩碼類型來包含或是排除特定的字節,從而指定多個字段實現覆蓋。

圖 4 – TCP 標志的覆蓋修改
我們的覆蓋功能不僅限于數據流修改規則表中存儲的內容,而且還能包括作為關聯數據存儲在數據流任務表 (Flow Action Table) 中的內容。可以通過指定規則,讓傳輸到 FEPP 的關聯數據成為任務的組成部分,從而顯著擴展可用于修改的數據的范圍。其結果,舉例來說,是可以覆蓋整個 VLAN 標記范圍。
我們的插入/刪除功能能夠實現甚至更為復雜的包修改。以規則 5(參見圖 5)為例,使用我們的插入/刪除功能。包括操作碼(插入/刪除)、OpLoc(第 2 層)、OpOffset(從第 12 個字節開始)、ISize(插入數據大小= 22 個字節)、DSize(刪除的字節大小 = 2個字節)和Insert Data(0x8847,MPLS 標簽)等與規則5相關的各種任務,將刪除現有的 EtherType,并插入新的 EtherType=8847,這說明新的包將是一個 MPLS 單播包,接著是由插入數據所指定的 MPLS 標簽組。

圖 5 – MPLS 標簽插入修改
布局規劃與時序收斂
在設計我們獨特的包處理器過程中,我們面臨的最嚴峻挑戰是 FPGA 設計復雜程度不斷增大,路由和使用密度的增加,各種 IP 核的集成,多種硬邏輯對象的使用(如 BRAM、GTP、DSP 以及類似對象),以及在項目最早期階段的數據流規劃不足等。我們發布的 Phase 1 Virtex-5 FPGA 的bit文件建立在較低的使用密度之上,特別是較低的 BRAM 使用密度基礎之上,結果導致相對簡單的時序收斂。在稍后階段因為增加了新的重要功能,導致 BRAM 的利用密度接近 97%,我們開始強烈意識到優化布局規劃的重要意義,以及產品生命周期初期的決策將對后期造成怎樣的影響。
布局規劃的主要目標通過減少路由延遲來改進時序。為此,在設計分析過程中非常重要的事情就是將數據流和管腳配置納入考慮范圍。現在已經與 ISE? Y合一起的賽靈思 PlanAheadTM工具作為布局規劃和時序分析的單點工具 (point tool),為我們提供了如何在高利用率的使用設計中為了實現時序收斂而需要穿越重重復雜網絡的交互分析和可視化功能。PlanAhead 使我們能深入了解我們的設計,即我們需要提供最少數量的約束條件來引導映射、布置以及布線工具充分滿足我們的時序要求。我們發現,要做到這一點,往往需要在基于模塊的設計區域約束之外優化放置一部分關鍵的 BRAM。
回想起來,如果我們在項目最初階段即花更多的時間使用 PlanAhead 來進行假定方案的驗證,幫助我們看到最佳的數據流和管腳,我們在設計后期的任務就會輕松許多。
動態自適應包處理
我們的整數流加速子系統能夠在最高的靈活程度下以線速檢查并和修改包,同時能夠動態地與應用層業務進行交互,實現高度自適應的包處理。Virtex-class FPGA 是重要的實現手段,提供了一個前一代 FPGA 無法實現的片上系統平臺,加速基于內容的路由以及實施重要包處理功能。
我們的新一代實施方案不僅能夠顯著提升性能、進一步加強高速緩沖的能力,同時還能添加新功能。通過在單個賽靈思 Virtex-6 FPGA 中升級我們的 FAST 芯片組,我們不僅能夠將新一代 FAST 的功能、接口和性能提升到一個前所未有的水平,同時還能縮小電路板空間并降低功耗要求,從而實現單芯片深度包處理協處理器單元。














評論