?

基于FPGA 的ICN 名字解析緩存加速系統

2024-04-02 03:42李雪彤
現代電子技術 2024年7期
關鍵詞:網絡地址表項哈希

李雪彤,陳 曉,宋 磊

(1.中國科學院聲學研究所國家網絡新媒體工程技術研究中心,北京 100190;2.中國科學院大學,北京 100049)

0 引 言

隨著Web 服務的普及以及連接到互聯網上的設備數量不斷增加,互聯網用戶的需求從主機之間的通信演進為主機到網絡的信息重復訪問。信息中心網絡(Information-Centric Networking, ICN)實現了從傳統主機為中心的網絡到信息為中心的網絡架構的轉變[1]。名字解析系統在尋址-路由分離的ICN 架構中,負責建立、維護信息標識與信息的實際物理地址之間的映射關系,是ICN 網絡獲取信息內容的關鍵[2]。因此,名字解析服務的查詢延時等性能指標極大影響了用戶體驗。

當前的名字解析系統大多從路由方法和系統節點負載均衡方法的角度降低解析時延,文獻[3]討論了提供分布式本地的名字解析系統,保證用戶可以就近獲得服務,降低解析時延。但現有的名字解析系統受限于傳統軟件網絡協議棧的固有性能瓶頸,無法滿足高性能的需求?,F場可編程門陣列(Field Programmable Gate Array,FPGA)因其低功耗、高性能以及可編程的特點廣泛應用于高性能服務器設備中,將軟件實現的功能卸載到FPGA 中,實現對網絡功能的加速。例如,文獻[4]基于FPGA對DNS權威服務器的功能進行卸載加速;文獻[5]利用FPGA 的并行計算能力對國產數據庫加速;文獻[6]基于FPGA 實現了一種大容量、高性能的路由查找算法;文獻[7]在FPGA上使用哈希算法實現了高性能鍵值存儲。

為降低名字解析系統的負載,減少名字解析服務的查詢時延,本文提出一種基于FPGA 的ICN 名字解析緩存加速系統,在網絡節點上存儲標識到網絡地址的映射關系,處理需要獲取網絡地址的轉發數據包,減少數據包對名字解析系統的請求訪問。同時,采用盡力解析的方式與主機CPU 協同工作,實現對名字解析服務的透明加速。

1 ICN 網絡的名字解析服務

根據內容尋址和轉發的方式,ICN 架構主要可以分為直接基于名字路由的轉發方式和尋址-路由分離的轉發方式兩類。在尋址-路由分離的ICN 架構中[8-10],內容標識符通常采用扁平化的命名方式,標識符和定位符被分別定義到兩個不同的命名空間。用戶首先在網絡中獲得與標識符相對應的定位符,然后根據定位符對數據進行路由。名字解析服務就是根據標識符在網絡中獲得相對應的定位符。軟件定義網絡(Software-Defined Networking, SDN)將網絡設備的數據平面和控制平面分離,控制平面負責邏輯決策,通過下發流表項的方式告知數據平面如何進行操作,實現靈活性。

在SDN 與ICN 相結合的網絡架構中,網絡數據包為了獲取一個唯一標識對應的實際物理地址信息,數據面將網絡數據包上送至控制面,控制面將網絡數據包轉換成解析請求,并通過解析系統交互接口與名字解析系統交互獲取實際物理地址信息,返回到數據面;數據面根據返回的地址信息對報文中的地址字段進行處理,形成新報文,并通過基于地址的轉發機制進行轉發。如上所述,網絡數據包請求名字解析服務的處理流程長,造成網絡延遲和性能下降。

本文利用FPGA 技術在網絡節點的數據面上維護大規模的標識到網絡地址的映射關系。該方法允許網絡數據包直接在數據面查詢對應的物理地址信息,從而顯著減少了數據包與網絡控制面的交互次數。同時,FPGA 具備并行化和低功耗的特點,能夠快速響應需要獲取實際物理地址的網絡數據包。

2 系統整體架構

系統整體架構包括網絡設備的控制面和數據面以及名字解析系統,如圖1 所示。其中,數據面的功能利用FPGA 網卡實現,網卡通過PCI-E 接口掛載在服務器主板上,與CPU 通過總線通信。同時,使用萬兆光纖接口與網絡通信,用于收發網絡數據包。

圖1 系統整體架構

名字解析緩存加速器在FPGA 網卡上實現,主要的工作流程為:

1)解析接收到的網絡數據包,判斷是否需要查詢網絡地址,若需要,則提取查詢的標識ID;

2)根據網絡數據包中提取的標識信息,在映射表中查找對應的表項;

3)如果查找到相應的表項,修改網絡數據包的目的地址字段并發送,否則,將該數據包上送至控制面,與名字解析系統交互獲取實際的物理地址。

除此之外,若名字解析緩存加速器處于滿載狀態,難以及時處理新的請求,該系統架構將超出處理能力的網絡數據包上送至控制面處理。網絡數據包的處理流程如圖2 所示。

圖2 網絡數據包的處理流程

本文設計的架構通過在FPGA 網卡上實現名字解析緩存加速器,采用盡力解析的方式與主機CPU 協同工作,確保對請求數據包的響應,實現對名字解析服務的透明加速。當網絡數據包被上送至控制面時,除返回對應的地址信息外,還返回表項信息,保證名字解析緩存加速器的存儲表項更新;另外,名字解析緩存加速器獨立于FPGA 網卡的其他功能,僅需實現名字解析應用處理的功能,功能更新不需要修改其他系統組件,部署簡便。

3 名字解析緩存加速器設計

圖3 是本文設計的基于FPGA 的名字解析緩存加速器整體結構,該加速器的設計是在開源Corundum[11]網卡工程的基礎上進行的,其優勢在于無需卸載網卡的所有功能,只需要專注于所加速的服務。

硬件系統設計成流水線的處理模式,主要包括包解析模塊、匹配查詢模塊、包封裝模塊以及輸出引擎模塊等部分。其中,匹配查詢模塊主要由五部分構成:鍵提取模塊、仲裁模塊、哈希計算模塊、命令處理模塊以及動作執行模塊。為了最大程度地在網絡節點的數據面上處理需要獲取網絡地址的轉發數據包,減少數據包與控制面的交互,降低網絡時延,對名字解析緩存加速器的存儲規模提出了特定要求。該系統設計將標識與網絡地址的鍵值對存儲在DDR3 內存中,以實現高效且大規模的解析操作。

網卡接收到以太網數據幀后進行跨時鐘域轉換,完成后將完整數據包傳輸到包解析模塊進行分類處理。包解析模塊在名字解析緩存加速器處于未滿載狀態時,對輸入數據包進行判斷,如果是非查詢的其他報文則直接送往CPU 處理;如果是查詢網絡地址的數據包則對報文進行解析,提取相關信息(標識ID、目的地址的偏移OFFSET 等)送至匹配查詢模塊。包解析模塊在名字解析緩存加速器處于滿載狀態時,直接將所有數據包上送至CPU 處理。這樣處理的優勢在于確保對請求數據包的響應,實現透明加速。

匹配查詢模塊提取字段信息中的標識ID 作為匹配查詢的鍵,計算哈希值并根據哈希值索引表項,并返回查詢結果到包封裝模塊。包封裝模塊負責對數據包進行編輯修改。輸出引擎模塊則將查詢成功的數據包轉發至網絡,查詢失敗的數據包上送至控制面匹配查詢。

3.1 包解析模塊設計

首先判斷當前名字解析緩存加速系統是否處于滿載狀態。在非滿載狀態下,包解析模塊對到達系統的數據包按照協議格式逐層進行解析,獲取關鍵字段;若處于滿載狀態,直接將數據包上送至CPU 處理。該模塊主要實現網絡數據包的協議解析處理,提取標識ID,計算目的IP 地址偏移,過濾無關報文。其中,名字解析緩存加速系統是否處于滿載狀態根據數據FIFO 當前的占用情況和名字解析緩存加速系統的處理能力綜合設定。

鑒于FPGA 硬件結構的特殊性,該模塊的設計采用流水線的處理方式,時序如圖4 所示。在數據包間隙設置為1 個時鐘周期時,可以進行正常解析處理,說明在200 MHz 時鐘處理頻率、數據位寬為128 bit 的情況下,可完全滿足線速解析處理的要求。

圖4 包解析模塊線速處理時序圖

3.2 匹配查詢模塊設計

本文利用哈希表來實現標識ID 的匹配查詢,為實現大規模的標識ID 到網絡地址的映射,哈希表采用DDR3進行存儲。其中,標識ID 作為匹配查詢的關鍵字,為160 bit;網絡地址作為與之對應的值,為128 bit。由于2的整數次冪非常適合在DDR中進行哈希表的快速尋址與表項讀寫操作??紤]到這一點,本文設計key-value對的大小為512 bit。為了緩解哈希沖突,哈希表的單個地址采用多槽位(slot)結構,能夠存儲4個key-value對,如圖5所示。在該配置下,8 GB的DDR3內存能夠支持3 200萬條表項存儲。

圖5 哈希表表項結構

考慮到本系統中表項的更新信息(插入/刪除)和查詢請求的接口不同,設計仲裁模塊。該模塊的主要功能是將更新表項的插入/刪除請求與來自前序鍵提取模塊的查詢請求進行合并。仲裁模塊將表項的更新請求以及查詢請求分別緩存在兩個FIFO 隊列中,當后續模塊返回ready 信號有效,并且至少有一個FIFO 非空時,仲裁模塊才會根據當前的有限狀態機狀態從兩個FIFO 中提取相應的請求。在這個過程中,插入和刪除請求具有高于查詢請求的優先級。

哈希計算模塊具備H3哈希計算功能,前序仲裁模塊輸入關鍵字key,該模塊輸出對應的地址值index。H3哈希函數[12]已經被證明可以有效地在散列表條目中均勻分配密鑰,這種均勻分布本身顯著降低了哈希沖突。其次,H3哈希函數僅需要簡單的逐位AND 和XOR 運算,也非常適用于高吞吐量的硬件實現。該模塊輸出的哈希計算結果會經由寄存器配置有效的哈希值位寬范圍,對哈希計算結果進行取低位操作以適配不同大小的內存外設。

命令處理模塊完成對DDR3 的讀寫以及表項的對比處理,其硬件實現結構如圖6 所示。在Xilinx 平臺中通過MIG IP 核對DDR3 進行讀寫操作,在實際讀寫過程中使用AXI4 總線。由于MIG IP 核提供的時鐘與用戶時鐘頻率存在差異,因此在使用該總線時利用異步FIFO 處理跨時鐘域問題。

圖6 命令處理模塊的硬件實現結構

DDR 讀模塊通過與前置FIFO 與后置FIFO 的配合,實現DDR 讀功能。前置FIFO 中存儲著index 值,即讀地址。當前置FIFO 非空時,DDR 讀模塊取出讀地址并完成讀任務;當后置FIFO 未滿時,將讀結果放入后置FIFO 中,隨后繼續探測前置FIFO 是否為空,以進行下一次讀任務。DDR 讀模塊每次讀內容的大小由表項大小決定。DDR 寫模塊通過與其前置FIFO 配合,實現DDR 寫功能。其中,前置FIFO 存儲待寫入的完整表項內容。

比較器模塊將待處理請求的原key 值與讀取的表項結果進行比較,4 個槽位的對比是并行執行的,將存在以下情況:

1)查詢請求。對于查詢請求,該模塊將請求中的關鍵值key 與讀取表項中4 個槽位的關鍵值并行對比,如果找到匹配的關鍵值,則輸出查詢結果;如果沒有匹配項,則返回查詢失敗的信息。

2)插入請求。在處理插入請求時,如果讀取的表項中存在空槽位,或者雖然沒有空槽位但存在與請求中關鍵值相同的項,則會通過DDR 寫模塊更新表項,并返回插入成功的信息;如果兩種情況均不滿足,則視為發生了碰撞,此時將丟棄待插入的表項,并返回插入失敗的信息。

3)刪除請求。在處理刪除請求時,如果讀取的表項不為空且關鍵值與請求中的相同,則通過DDR 寫模塊刪除該表項,并返回刪除成功的信息;如果讀取的表項為空或關鍵值不一致,則返回刪除失敗的信息。

3.3 包封裝模塊設計

在常規設計中,數據包封裝模塊通過重構數據包包頭的方式來構建響應數據包,這通常需要占用大量的設計資源。本文提出的數據包封裝模塊采用更為高效的方法,它根據數據包解析模塊計算得出的目的IP 地址的偏移信息以及動作執行模塊輸出的查詢結果,直接對原始請求包進行編輯修改。這種方法不僅減少了資源消耗,還提高了封裝過程的效率。

4 系統測試與分析

為進一步驗證本文設計的ICN 名字解析緩存加速系統在真實情況下的性能,故設計板級測試實驗。設計的架構在Xilinx XC7K32-5TFFG900-2 的FPGA 板卡上實現;測試平臺選用DellR730 商用服務器,該服務器配備兩個6核Intel Xeon E5-2609 v3 1.9 GHz CPU以及8 GB DDR3 內存,操作系統為CentOS 7.9;測試設計的架構時,選用Spirent 公司的SPT N4U 作為網絡測試儀,測試儀運行的軟件采用Spirent TestCenter Application 4.82版本,設備間使用光纖互聯。

4.1 性能分析

為了測試本文提出的基于FPGA 的ICN 名字解析緩存加速系統的吞吐量及延遲指標,實驗使用思博倫測試儀生成數據包長度為128~1 500 B 的10 Gb/s 測試流量,經過FPGA處理后,測試流量被轉發回思博倫測試儀。

圖7 展示了系統的吞吐量指標,硬件實現的ICN 名字解析緩存加速系統能夠以10 Gb/s 的線速處理256 B以上的解析請求數據包。此外,本文提出的加速系統架構采用盡力解析的方式,對于256 B 以下的請求包,將超出能力范圍的數據包交由控制面處理。該架構在保持解析服務能力的同時,有效地加速了解析過程。

圖7 名字解析緩存加速系統的吞吐量

如圖8 所示為名字解析緩存加速系統對不同包長的數據包的轉發率,該系統對256 B 小包的轉發率達到4.5 Mpps,支持每秒四百萬次請求,而軟件實現的名字解析系統僅支持每秒十萬次請求,性能大大提升。

圖8 名字解析緩存加速系統的數據包轉發率

本文系統對解析請求包的處理時延如圖9 所示,結果顯示基于FPGA 的名字解析緩存加速器處理256 B請求包的時延僅為1.5 μs,遠低于軟件的處理時延。文獻[13]中提出,利用傳統套接字實現的鍵值存儲系統的處理時延在41.40 μs,基于DPDK 實現的鍵值存儲系統的處理時延在6.29 μs。數據表明,硬件實現的鍵值存儲系統相較于傳統軟件實現的鍵值存儲系統處理速度提高了27 倍,與使用DPDK 內核旁路進行優化的軟件相比處理速度提高了4 倍。

圖9 名字解析緩存加速系統的處理時延

4.2 資源開銷

本文工程基于Xilinx FPGA 的XC7K32-5TFFG900-2設計實現,運行頻率為200 MHz,其資源消耗如表1 所示,包括查找表(LUT)、觸發器(FF)和存儲器資源(BRAM)。由于表項存儲在片外DDR上,節省片上資源。

表1 FPGA 工程資源消耗情況

5 結 語

為解決ICN 網絡中名字解析服務流程長以及名字解析系統負載高的問題,本文提出一種基于FPGA 的ICN 名字解析緩存加速系統。該架構在網絡節點的數據面卸載名字解析功能,處理需要獲取網絡地址的轉發數據包,有效縮短處理流程。同時,采用盡力解析的方式與主機CPU 協作,滿載時將數據包上送至控制面處理,在不影響服務能力的前提下加速了整個過程。

系統測試驗證顯示:基于FPGA 實現的鍵值存儲處理性能相較于傳統軟件以及基于DPDK 實現的鍵值存儲處理性能均明顯提升;其次,名字解析緩存加速器與網卡其他功能分離的形式極大簡化了系統設計難度。

注:本文通訊作者為宋磊。

猜你喜歡
網絡地址表項哈希
敬 告
一種改進的TCAM路由表項管理算法及實現
網絡地址轉換技術在局域網中的應用
基于ARMA模型預測的交換機流表更新算法
SDN數據中心網絡基于流表項轉換的流表調度優化
淺析IP地址分類
高校校園網絡IP地址設計規劃解析
基于OpenCV與均值哈希算法的人臉相似識別系統
基于維度分解的哈希多維快速流分類算法
基于同態哈希函數的云數據完整性驗證算法
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合