使用賽靈思 FPGA加速包處理
隨著 10Gb 以太網(wǎng)發(fā)展趨于成熟,且業(yè)界甚至已開始期待 40GbE 和 100GbE 以太網(wǎng)的出現(xiàn),新一代網(wǎng)絡基礎架構(gòu)方興未艾。融合型網(wǎng)絡在流量處理方面向可擴展開放式平臺提出了全新的挑戰(zhàn)。新一代融合型基礎設施底板通常由高性能兆兆位 (TB) 交換結(jié)構(gòu)和可編程內(nèi)容處理器構(gòu)成,能夠在復雜性不斷增長且層出不窮的各類應用中處理應用層高達數(shù) 10 Gb 的流量。CloudShield 已創(chuàng)建了一系列全新的可編程包處理器,能夠?qū)ΠM行檢測、分類、修改以及復制,融合與應用層的動態(tài)交互。
本文引用地址:http://2s4d.com/article/190095.htm我們的流程加速子系統(tǒng) (FAST) 采用 Xilinx? Virtex?-class FPGA 來完成為 CloudShield 深度包處理與修改 (CloudShield Deep Packet Processing and Modification) 刀片的包預處理。這些 FPGA 包含 10Gb 以太網(wǎng) MAC,并為每個端口配備了用于分類及密鑰提取的入口處理器 (ingress processor)、用于包修改的出口處理器 (egress processor)、使用四倍數(shù)據(jù)速率 (QDR) SRAM的包隊列、基于賽靈思 Aurora 的消息傳輸通道以及基于三態(tài)內(nèi)容可尋址存儲器 (TCAM) 的搜索引擎。我們的 FPGA 芯片組能夠以最少的 CPU 參與來完成包的高速緩存及處理,可實現(xiàn)每秒高達 40Gb 的高性能處理能力。其采用 2 至 7 層字段查詢法,能夠根據(jù)動態(tài)可重配置規(guī)則在線速條件下以靈活和可確定的方式進行包修改。
FAST 包處理器的核心功能
我們當前部署的深度包處理刀片采用兩個刀片存取控制器 FPGA 和一個包交換 FPGA,所有這些都通過 LX110T Virtex-5 FPGA 來實施。每個刀片存取控制器都具備使用兩個賽靈思10GbE MAC/PHY 內(nèi)核實現(xiàn)的數(shù)據(jù)層連接功能、基于賽靈思 ChipSyncTM 技術(shù)的芯片間接口以及使用賽靈思 IP 核的包處理功能。包交換 PFGA 使用標準的賽靈思 SPI-4.2 IP 核來實現(xiàn)與我們的網(wǎng)絡處理器 (NPU) 及我們的 IP 核搜索引擎接口相連。
為了將片上系統(tǒng)的設計重點集中在包處理功能上,我們盡可能使用標準的賽靈思 IP 核。我們選用賽靈思 10Gb 以太網(wǎng) MAC 內(nèi)核配合雙 GTP 收發(fā)器來實施 4 x 3.125-Gbps 的 XAUI 物理層接口。針對 NPU 接口,我們使用了帶動態(tài)相位對準與 ChipSync 技術(shù)且支持每 LVDS 差分對高達 1Gbps 速率的賽靈思 SPI-4 Phase 2 內(nèi)核。我們主要的包處理 IP 核如下:
? FAST 包處理器:FPP 的入口包處理器 (FIPP) 負責第一層包解析、密鑰與數(shù)據(jù)流 ID 的散列生成以及按端口進行的第 3 層至第 4 層校驗和驗證。FPP 的出口包處理器 (FEPP) 可執(zhí)行出口包修改并重新計算第 3 層至第 4 層的校驗和。
? FAST 搜索引擎:我們 FSE 在 TCAM 和 QDR SRAM 中維護著一個流數(shù)據(jù)庫,可用于決定需要在入口包上執(zhí)行的處理任務。該 FSE 可從每個端口的 FIPP 處接受密鑰消息,決定針對該包需要執(zhí)行的處理任務,然后將結(jié)果消息返還給原始發(fā)出消息的隊列。
? FAST 數(shù)據(jù)隊列:我們的數(shù)據(jù)隊列 (FDQ) 可在“無序”保持緩沖器中存儲傳送進來的包。當入口包被寫入到 QDR SRAM 時,該隊列將密鑰消息從 FIPP 發(fā)送至 FAST 搜索引擎。該 FSE 將使用這一密鑰來決定如何處理此包,然后將結(jié)果消息返還給 FDQ。根據(jù)該結(jié)果消息,隊列可對每個緩沖的包進行轉(zhuǎn)發(fā)、復制或丟棄處理。此外,該隊列還可對已轉(zhuǎn)發(fā)或已復制的包獨立進行包修改。
數(shù)據(jù)流的輸入與輸出
圖 1 顯示了流經(jīng)我們流量加速子系統(tǒng)的數(shù)據(jù)流。核心 FPGA 功能以綠色表示,包數(shù)據(jù)流為黃色,控制消息為藍色,外部器件則為灰色。
首先,我們可從 10GbE 網(wǎng)絡端口所接收到的包來識別客戶數(shù)據(jù)流的開始。每個端口上的包都會進入 FAST 入口包處理器進行包解析與分析(圖中的 1 號)。在對協(xié)議和封包進行分類之后,F(xiàn)IPP 可定位第 2、3 以及 4 層的報頭偏移量。接下來是數(shù)據(jù)流散列與密鑰抽取(數(shù)據(jù)流選擇查找規(guī)則,如使用源 IP 地址、目的地 IP 地址、源和目的地端口和協(xié)議的五元組法 (5-tuple))。
此時,我們的隊列管理器緩沖器負責接收包,以釋放外部 QDR SRAM 的存儲器頁面。在此階段接收到的包都被認為是無序的。在等待 FAST 調(diào)度的同時,我們將它們置于外部 QDR SRAM 中。FAST 數(shù)據(jù)隊列(圖中的 2 號)分配包 ID,并向 FAST 搜索引擎(圖中的 3 號)分派密鑰消息。FAST 搜索引擎使用該密鑰來識別數(shù)據(jù)流。外部 TCAM 中匹配的數(shù)據(jù)流條目可在關(guān)聯(lián)的 SRAM 中向數(shù)據(jù)流任務表 (Flow Action Table) 提供索引。匹配的數(shù)據(jù)流任務根據(jù)客戶配置的應用訂閱進行確定。
FAST 搜索引擎向 FDQ(圖中的 4 號)發(fā)送結(jié)果消息進行回復,然后由任務調(diào)度程序根據(jù)其指定的任務將包分配給某個輸出隊列。然后我們從包隊列中將包解至專用的目的地輸出端口(圖中的 5 號),其中我們的 FAST 出口包處理器(圖中的 6 號)可根據(jù)指定任務的要求按數(shù)據(jù)流修改表 (Flow Modification Table) 中的規(guī)則處理包修改。
評論