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