李雪彤,陳 曉,宋 磊
(1.中國(guó)科學(xué)院聲學(xué)研究所國(guó)家網(wǎng)絡(luò)新媒體工程技術(shù)研究中心,北京 100190;2.中國(guó)科學(xué)院大學(xué),北京 100049)
隨著Web 服務(wù)的普及以及連接到互聯(lián)網(wǎng)上的設(shè)備數(shù)量不斷增加,互聯(lián)網(wǎng)用戶的需求從主機(jī)之間的通信演進(jìn)為主機(jī)到網(wǎng)絡(luò)的信息重復(fù)訪問(wèn)。信息中心網(wǎng)絡(luò)(Information-Centric Networking, ICN)實(shí)現(xiàn)了從傳統(tǒng)主機(jī)為中心的網(wǎng)絡(luò)到信息為中心的網(wǎng)絡(luò)架構(gòu)的轉(zhuǎn)變[1]。名字解析系統(tǒng)在尋址-路由分離的ICN 架構(gòu)中,負(fù)責(zé)建立、維護(hù)信息標(biāo)識(shí)與信息的實(shí)際物理地址之間的映射關(guān)系,是ICN 網(wǎng)絡(luò)獲取信息內(nèi)容的關(guān)鍵[2]。因此,名字解析服務(wù)的查詢延時(shí)等性能指標(biāo)極大影響了用戶體驗(yàn)。
當(dāng)前的名字解析系統(tǒng)大多從路由方法和系統(tǒng)節(jié)點(diǎn)負(fù)載均衡方法的角度降低解析時(shí)延,文獻(xiàn)[3]討論了提供分布式本地的名字解析系統(tǒng),保證用戶可以就近獲得服務(wù),降低解析時(shí)延。但現(xiàn)有的名字解析系統(tǒng)受限于傳統(tǒng)軟件網(wǎng)絡(luò)協(xié)議棧的固有性能瓶頸,無(wú)法滿足高性能的需求?,F(xiàn)場(chǎng)可編程門(mén)陣列(Field Programmable Gate Array,FPGA)因其低功耗、高性能以及可編程的特點(diǎn)廣泛應(yīng)用于高性能服務(wù)器設(shè)備中,將軟件實(shí)現(xiàn)的功能卸載到FPGA 中,實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)功能的加速。例如,文獻(xiàn)[4]基于FPGA對(duì)DNS權(quán)威服務(wù)器的功能進(jìn)行卸載加速;文獻(xiàn)[5]利用FPGA 的并行計(jì)算能力對(duì)國(guó)產(chǎn)數(shù)據(jù)庫(kù)加速;文獻(xiàn)[6]基于FPGA 實(shí)現(xiàn)了一種大容量、高性能的路由查找算法;文獻(xiàn)[7]在FPGA上使用哈希算法實(shí)現(xiàn)了高性能鍵值存儲(chǔ)。
為降低名字解析系統(tǒng)的負(fù)載,減少名字解析服務(wù)的查詢時(shí)延,本文提出一種基于FPGA 的ICN 名字解析緩存加速系統(tǒng),在網(wǎng)絡(luò)節(jié)點(diǎn)上存儲(chǔ)標(biāo)識(shí)到網(wǎng)絡(luò)地址的映射關(guān)系,處理需要獲取網(wǎng)絡(luò)地址的轉(zhuǎn)發(fā)數(shù)據(jù)包,減少數(shù)據(jù)包對(duì)名字解析系統(tǒng)的請(qǐng)求訪問(wèn)。同時(shí),采用盡力解析的方式與主機(jī)CPU 協(xié)同工作,實(shí)現(xiàn)對(duì)名字解析服務(wù)的透明加速。
根據(jù)內(nèi)容尋址和轉(zhuǎn)發(fā)的方式,ICN 架構(gòu)主要可以分為直接基于名字路由的轉(zhuǎn)發(fā)方式和尋址-路由分離的轉(zhuǎn)發(fā)方式兩類(lèi)。在尋址-路由分離的ICN 架構(gòu)中[8-10],內(nèi)容標(biāo)識(shí)符通常采用扁平化的命名方式,標(biāo)識(shí)符和定位符被分別定義到兩個(gè)不同的命名空間。用戶首先在網(wǎng)絡(luò)中獲得與標(biāo)識(shí)符相對(duì)應(yīng)的定位符,然后根據(jù)定位符對(duì)數(shù)據(jù)進(jìn)行路由。名字解析服務(wù)就是根據(jù)標(biāo)識(shí)符在網(wǎng)絡(luò)中獲得相對(duì)應(yīng)的定位符。軟件定義網(wǎng)絡(luò)(Software-Defined Networking, SDN)將網(wǎng)絡(luò)設(shè)備的數(shù)據(jù)平面和控制平面分離,控制平面負(fù)責(zé)邏輯決策,通過(guò)下發(fā)流表項(xiàng)的方式告知數(shù)據(jù)平面如何進(jìn)行操作,實(shí)現(xiàn)靈活性。
在SDN 與ICN 相結(jié)合的網(wǎng)絡(luò)架構(gòu)中,網(wǎng)絡(luò)數(shù)據(jù)包為了獲取一個(gè)唯一標(biāo)識(shí)對(duì)應(yīng)的實(shí)際物理地址信息,數(shù)據(jù)面將網(wǎng)絡(luò)數(shù)據(jù)包上送至控制面,控制面將網(wǎng)絡(luò)數(shù)據(jù)包轉(zhuǎn)換成解析請(qǐng)求,并通過(guò)解析系統(tǒng)交互接口與名字解析系統(tǒng)交互獲取實(shí)際物理地址信息,返回到數(shù)據(jù)面;數(shù)據(jù)面根據(jù)返回的地址信息對(duì)報(bào)文中的地址字段進(jìn)行處理,形成新報(bào)文,并通過(guò)基于地址的轉(zhuǎn)發(fā)機(jī)制進(jìn)行轉(zhuǎn)發(fā)。如上所述,網(wǎng)絡(luò)數(shù)據(jù)包請(qǐng)求名字解析服務(wù)的處理流程長(zhǎng),造成網(wǎng)絡(luò)延遲和性能下降。
本文利用FPGA 技術(shù)在網(wǎng)絡(luò)節(jié)點(diǎn)的數(shù)據(jù)面上維護(hù)大規(guī)模的標(biāo)識(shí)到網(wǎng)絡(luò)地址的映射關(guān)系。該方法允許網(wǎng)絡(luò)數(shù)據(jù)包直接在數(shù)據(jù)面查詢對(duì)應(yīng)的物理地址信息,從而顯著減少了數(shù)據(jù)包與網(wǎng)絡(luò)控制面的交互次數(shù)。同時(shí),F(xiàn)PGA 具備并行化和低功耗的特點(diǎn),能夠快速響應(yīng)需要獲取實(shí)際物理地址的網(wǎng)絡(luò)數(shù)據(jù)包。
系統(tǒng)整體架構(gòu)包括網(wǎng)絡(luò)設(shè)備的控制面和數(shù)據(jù)面以及名字解析系統(tǒng),如圖1 所示。其中,數(shù)據(jù)面的功能利用FPGA 網(wǎng)卡實(shí)現(xiàn),網(wǎng)卡通過(guò)PCI-E 接口掛載在服務(wù)器主板上,與CPU 通過(guò)總線通信。同時(shí),使用萬(wàn)兆光纖接口與網(wǎng)絡(luò)通信,用于收發(fā)網(wǎng)絡(luò)數(shù)據(jù)包。
圖1 系統(tǒng)整體架構(gòu)
名字解析緩存加速器在FPGA 網(wǎng)卡上實(shí)現(xiàn),主要的工作流程為:
1)解析接收到的網(wǎng)絡(luò)數(shù)據(jù)包,判斷是否需要查詢網(wǎng)絡(luò)地址,若需要,則提取查詢的標(biāo)識(shí)ID;
2)根據(jù)網(wǎng)絡(luò)數(shù)據(jù)包中提取的標(biāo)識(shí)信息,在映射表中查找對(duì)應(yīng)的表項(xiàng);
3)如果查找到相應(yīng)的表項(xiàng),修改網(wǎng)絡(luò)數(shù)據(jù)包的目的地址字段并發(fā)送,否則,將該數(shù)據(jù)包上送至控制面,與名字解析系統(tǒng)交互獲取實(shí)際的物理地址。
除此之外,若名字解析緩存加速器處于滿載狀態(tài),難以及時(shí)處理新的請(qǐng)求,該系統(tǒng)架構(gòu)將超出處理能力的網(wǎng)絡(luò)數(shù)據(jù)包上送至控制面處理。網(wǎng)絡(luò)數(shù)據(jù)包的處理流程如圖2 所示。
圖2 網(wǎng)絡(luò)數(shù)據(jù)包的處理流程
本文設(shè)計(jì)的架構(gòu)通過(guò)在FPGA 網(wǎng)卡上實(shí)現(xiàn)名字解析緩存加速器,采用盡力解析的方式與主機(jī)CPU 協(xié)同工作,確保對(duì)請(qǐng)求數(shù)據(jù)包的響應(yīng),實(shí)現(xiàn)對(duì)名字解析服務(wù)的透明加速。當(dāng)網(wǎng)絡(luò)數(shù)據(jù)包被上送至控制面時(shí),除返回對(duì)應(yīng)的地址信息外,還返回表項(xiàng)信息,保證名字解析緩存加速器的存儲(chǔ)表項(xiàng)更新;另外,名字解析緩存加速器獨(dú)立于FPGA 網(wǎng)卡的其他功能,僅需實(shí)現(xiàn)名字解析應(yīng)用處理的功能,功能更新不需要修改其他系統(tǒng)組件,部署簡(jiǎn)便。
圖3 是本文設(shè)計(jì)的基于FPGA 的名字解析緩存加速器整體結(jié)構(gòu),該加速器的設(shè)計(jì)是在開(kāi)源Corundum[11]網(wǎng)卡工程的基礎(chǔ)上進(jìn)行的,其優(yōu)勢(shì)在于無(wú)需卸載網(wǎng)卡的所有功能,只需要專(zhuān)注于所加速的服務(wù)。
硬件系統(tǒng)設(shè)計(jì)成流水線的處理模式,主要包括包解析模塊、匹配查詢模塊、包封裝模塊以及輸出引擎模塊等部分。其中,匹配查詢模塊主要由五部分構(gòu)成:鍵提取模塊、仲裁模塊、哈希計(jì)算模塊、命令處理模塊以及動(dòng)作執(zhí)行模塊。為了最大程度地在網(wǎng)絡(luò)節(jié)點(diǎn)的數(shù)據(jù)面上處理需要獲取網(wǎng)絡(luò)地址的轉(zhuǎn)發(fā)數(shù)據(jù)包,減少數(shù)據(jù)包與控制面的交互,降低網(wǎng)絡(luò)時(shí)延,對(duì)名字解析緩存加速器的存儲(chǔ)規(guī)模提出了特定要求。該系統(tǒng)設(shè)計(jì)將標(biāo)識(shí)與網(wǎng)絡(luò)地址的鍵值對(duì)存儲(chǔ)在DDR3 內(nèi)存中,以實(shí)現(xiàn)高效且大規(guī)模的解析操作。
網(wǎng)卡接收到以太網(wǎng)數(shù)據(jù)幀后進(jìn)行跨時(shí)鐘域轉(zhuǎn)換,完成后將完整數(shù)據(jù)包傳輸?shù)桨馕瞿K進(jìn)行分類(lèi)處理。包解析模塊在名字解析緩存加速器處于未滿載狀態(tài)時(shí),對(duì)輸入數(shù)據(jù)包進(jìn)行判斷,如果是非查詢的其他報(bào)文則直接送往CPU 處理;如果是查詢網(wǎng)絡(luò)地址的數(shù)據(jù)包則對(duì)報(bào)文進(jìn)行解析,提取相關(guān)信息(標(biāo)識(shí)ID、目的地址的偏移OFFSET 等)送至匹配查詢模塊。包解析模塊在名字解析緩存加速器處于滿載狀態(tài)時(shí),直接將所有數(shù)據(jù)包上送至CPU 處理。這樣處理的優(yōu)勢(shì)在于確保對(duì)請(qǐng)求數(shù)據(jù)包的響應(yīng),實(shí)現(xiàn)透明加速。
匹配查詢模塊提取字段信息中的標(biāo)識(shí)ID 作為匹配查詢的鍵,計(jì)算哈希值并根據(jù)哈希值索引表項(xiàng),并返回查詢結(jié)果到包封裝模塊。包封裝模塊負(fù)責(zé)對(duì)數(shù)據(jù)包進(jìn)行編輯修改。輸出引擎模塊則將查詢成功的數(shù)據(jù)包轉(zhuǎn)發(fā)至網(wǎng)絡(luò),查詢失敗的數(shù)據(jù)包上送至控制面匹配查詢。
首先判斷當(dāng)前名字解析緩存加速系統(tǒng)是否處于滿載狀態(tài)。在非滿載狀態(tài)下,包解析模塊對(duì)到達(dá)系統(tǒng)的數(shù)據(jù)包按照協(xié)議格式逐層進(jìn)行解析,獲取關(guān)鍵字段;若處于滿載狀態(tài),直接將數(shù)據(jù)包上送至CPU 處理。該模塊主要實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)包的協(xié)議解析處理,提取標(biāo)識(shí)ID,計(jì)算目的IP 地址偏移,過(guò)濾無(wú)關(guān)報(bào)文。其中,名字解析緩存加速系統(tǒng)是否處于滿載狀態(tài)根據(jù)數(shù)據(jù)FIFO 當(dāng)前的占用情況和名字解析緩存加速系統(tǒng)的處理能力綜合設(shè)定。
鑒于FPGA 硬件結(jié)構(gòu)的特殊性,該模塊的設(shè)計(jì)采用流水線的處理方式,時(shí)序如圖4 所示。在數(shù)據(jù)包間隙設(shè)置為1 個(gè)時(shí)鐘周期時(shí),可以進(jìn)行正常解析處理,說(shuō)明在200 MHz 時(shí)鐘處理頻率、數(shù)據(jù)位寬為128 bit 的情況下,可完全滿足線速解析處理的要求。
圖4 包解析模塊線速處理時(shí)序圖
本文利用哈希表來(lái)實(shí)現(xiàn)標(biāo)識(shí)ID 的匹配查詢,為實(shí)現(xiàn)大規(guī)模的標(biāo)識(shí)ID 到網(wǎng)絡(luò)地址的映射,哈希表采用DDR3進(jìn)行存儲(chǔ)。其中,標(biāo)識(shí)ID 作為匹配查詢的關(guān)鍵字,為160 bit;網(wǎng)絡(luò)地址作為與之對(duì)應(yīng)的值,為128 bit。由于2的整數(shù)次冪非常適合在DDR中進(jìn)行哈希表的快速尋址與表項(xiàng)讀寫(xiě)操作??紤]到這一點(diǎn),本文設(shè)計(jì)key-value對(duì)的大小為512 bit。為了緩解哈希沖突,哈希表的單個(gè)地址采用多槽位(slot)結(jié)構(gòu),能夠存儲(chǔ)4個(gè)key-value對(duì),如圖5所示。在該配置下,8 GB的DDR3內(nèi)存能夠支持3 200萬(wàn)條表項(xiàng)存儲(chǔ)。
圖5 哈希表表項(xiàng)結(jié)構(gòu)
考慮到本系統(tǒng)中表項(xiàng)的更新信息(插入/刪除)和查詢請(qǐng)求的接口不同,設(shè)計(jì)仲裁模塊。該模塊的主要功能是將更新表項(xiàng)的插入/刪除請(qǐng)求與來(lái)自前序鍵提取模塊的查詢請(qǐng)求進(jìn)行合并。仲裁模塊將表項(xiàng)的更新請(qǐng)求以及查詢請(qǐng)求分別緩存在兩個(gè)FIFO 隊(duì)列中,當(dāng)后續(xù)模塊返回ready 信號(hào)有效,并且至少有一個(gè)FIFO 非空時(shí),仲裁模塊才會(huì)根據(jù)當(dāng)前的有限狀態(tài)機(jī)狀態(tài)從兩個(gè)FIFO 中提取相應(yīng)的請(qǐng)求。在這個(gè)過(guò)程中,插入和刪除請(qǐng)求具有高于查詢請(qǐng)求的優(yōu)先級(jí)。
哈希計(jì)算模塊具備H3哈希計(jì)算功能,前序仲裁模塊輸入關(guān)鍵字key,該模塊輸出對(duì)應(yīng)的地址值index。H3哈希函數(shù)[12]已經(jīng)被證明可以有效地在散列表?xiàng)l目中均勻分配密鑰,這種均勻分布本身顯著降低了哈希沖突。其次,H3哈希函數(shù)僅需要簡(jiǎn)單的逐位AND 和XOR 運(yùn)算,也非常適用于高吞吐量的硬件實(shí)現(xiàn)。該模塊輸出的哈希計(jì)算結(jié)果會(huì)經(jīng)由寄存器配置有效的哈希值位寬范圍,對(duì)哈希計(jì)算結(jié)果進(jìn)行取低位操作以適配不同大小的內(nèi)存外設(shè)。
命令處理模塊完成對(duì)DDR3 的讀寫(xiě)以及表項(xiàng)的對(duì)比處理,其硬件實(shí)現(xiàn)結(jié)構(gòu)如圖6 所示。在Xilinx 平臺(tái)中通過(guò)MIG IP 核對(duì)DDR3 進(jìn)行讀寫(xiě)操作,在實(shí)際讀寫(xiě)過(guò)程中使用AXI4 總線。由于MIG IP 核提供的時(shí)鐘與用戶時(shí)鐘頻率存在差異,因此在使用該總線時(shí)利用異步FIFO 處理跨時(shí)鐘域問(wèn)題。
圖6 命令處理模塊的硬件實(shí)現(xiàn)結(jié)構(gòu)
DDR 讀模塊通過(guò)與前置FIFO 與后置FIFO 的配合,實(shí)現(xiàn)DDR 讀功能。前置FIFO 中存儲(chǔ)著index 值,即讀地址。當(dāng)前置FIFO 非空時(shí),DDR 讀模塊取出讀地址并完成讀任務(wù);當(dāng)后置FIFO 未滿時(shí),將讀結(jié)果放入后置FIFO 中,隨后繼續(xù)探測(cè)前置FIFO 是否為空,以進(jìn)行下一次讀任務(wù)。DDR 讀模塊每次讀內(nèi)容的大小由表項(xiàng)大小決定。DDR 寫(xiě)模塊通過(guò)與其前置FIFO 配合,實(shí)現(xiàn)DDR 寫(xiě)功能。其中,前置FIFO 存儲(chǔ)待寫(xiě)入的完整表項(xiàng)內(nèi)容。
比較器模塊將待處理請(qǐng)求的原key 值與讀取的表項(xiàng)結(jié)果進(jìn)行比較,4 個(gè)槽位的對(duì)比是并行執(zhí)行的,將存在以下情況:
1)查詢請(qǐng)求。對(duì)于查詢請(qǐng)求,該模塊將請(qǐng)求中的關(guān)鍵值key 與讀取表項(xiàng)中4 個(gè)槽位的關(guān)鍵值并行對(duì)比,如果找到匹配的關(guān)鍵值,則輸出查詢結(jié)果;如果沒(méi)有匹配項(xiàng),則返回查詢失敗的信息。
2)插入請(qǐng)求。在處理插入請(qǐng)求時(shí),如果讀取的表項(xiàng)中存在空槽位,或者雖然沒(méi)有空槽位但存在與請(qǐng)求中關(guān)鍵值相同的項(xiàng),則會(huì)通過(guò)DDR 寫(xiě)模塊更新表項(xiàng),并返回插入成功的信息;如果兩種情況均不滿足,則視為發(fā)生了碰撞,此時(shí)將丟棄待插入的表項(xiàng),并返回插入失敗的信息。
3)刪除請(qǐng)求。在處理刪除請(qǐng)求時(shí),如果讀取的表項(xiàng)不為空且關(guān)鍵值與請(qǐng)求中的相同,則通過(guò)DDR 寫(xiě)模塊刪除該表項(xiàng),并返回刪除成功的信息;如果讀取的表項(xiàng)為空或關(guān)鍵值不一致,則返回刪除失敗的信息。
在常規(guī)設(shè)計(jì)中,數(shù)據(jù)包封裝模塊通過(guò)重構(gòu)數(shù)據(jù)包包頭的方式來(lái)構(gòu)建響應(yīng)數(shù)據(jù)包,這通常需要占用大量的設(shè)計(jì)資源。本文提出的數(shù)據(jù)包封裝模塊采用更為高效的方法,它根據(jù)數(shù)據(jù)包解析模塊計(jì)算得出的目的IP 地址的偏移信息以及動(dòng)作執(zhí)行模塊輸出的查詢結(jié)果,直接對(duì)原始請(qǐng)求包進(jìn)行編輯修改。這種方法不僅減少了資源消耗,還提高了封裝過(guò)程的效率。
為進(jìn)一步驗(yàn)證本文設(shè)計(jì)的ICN 名字解析緩存加速系統(tǒng)在真實(shí)情況下的性能,故設(shè)計(jì)板級(jí)測(cè)試實(shí)驗(yàn)。設(shè)計(jì)的架構(gòu)在Xilinx XC7K32-5TFFG900-2 的FPGA 板卡上實(shí)現(xiàn);測(cè)試平臺(tái)選用DellR730 商用服務(wù)器,該服務(wù)器配備兩個(gè)6核Intel Xeon E5-2609 v3 1.9 GHz CPU以及8 GB DDR3 內(nèi)存,操作系統(tǒng)為CentOS 7.9;測(cè)試設(shè)計(jì)的架構(gòu)時(shí),選用Spirent 公司的SPT N4U 作為網(wǎng)絡(luò)測(cè)試儀,測(cè)試儀運(yùn)行的軟件采用Spirent TestCenter Application 4.82版本,設(shè)備間使用光纖互聯(lián)。
為了測(cè)試本文提出的基于FPGA 的ICN 名字解析緩存加速系統(tǒng)的吞吐量及延遲指標(biāo),實(shí)驗(yàn)使用思博倫測(cè)試儀生成數(shù)據(jù)包長(zhǎng)度為128~1 500 B 的10 Gb/s 測(cè)試流量,經(jīng)過(guò)FPGA處理后,測(cè)試流量被轉(zhuǎn)發(fā)回思博倫測(cè)試儀。
圖7 展示了系統(tǒng)的吞吐量指標(biāo),硬件實(shí)現(xiàn)的ICN 名字解析緩存加速系統(tǒng)能夠以10 Gb/s 的線速處理256 B以上的解析請(qǐng)求數(shù)據(jù)包。此外,本文提出的加速系統(tǒng)架構(gòu)采用盡力解析的方式,對(duì)于256 B 以下的請(qǐng)求包,將超出能力范圍的數(shù)據(jù)包交由控制面處理。該架構(gòu)在保持解析服務(wù)能力的同時(shí),有效地加速了解析過(guò)程。
圖7 名字解析緩存加速系統(tǒng)的吞吐量
如圖8 所示為名字解析緩存加速系統(tǒng)對(duì)不同包長(zhǎng)的數(shù)據(jù)包的轉(zhuǎn)發(fā)率,該系統(tǒng)對(duì)256 B 小包的轉(zhuǎn)發(fā)率達(dá)到4.5 Mpps,支持每秒四百萬(wàn)次請(qǐng)求,而軟件實(shí)現(xiàn)的名字解析系統(tǒng)僅支持每秒十萬(wàn)次請(qǐng)求,性能大大提升。
圖8 名字解析緩存加速系統(tǒng)的數(shù)據(jù)包轉(zhuǎn)發(fā)率
本文系統(tǒng)對(duì)解析請(qǐng)求包的處理時(shí)延如圖9 所示,結(jié)果顯示基于FPGA 的名字解析緩存加速器處理256 B請(qǐng)求包的時(shí)延僅為1.5 μs,遠(yuǎn)低于軟件的處理時(shí)延。文獻(xiàn)[13]中提出,利用傳統(tǒng)套接字實(shí)現(xiàn)的鍵值存儲(chǔ)系統(tǒng)的處理時(shí)延在41.40 μs,基于DPDK 實(shí)現(xiàn)的鍵值存儲(chǔ)系統(tǒng)的處理時(shí)延在6.29 μs。數(shù)據(jù)表明,硬件實(shí)現(xiàn)的鍵值存儲(chǔ)系統(tǒng)相較于傳統(tǒng)軟件實(shí)現(xiàn)的鍵值存儲(chǔ)系統(tǒng)處理速度提高了27 倍,與使用DPDK 內(nèi)核旁路進(jìn)行優(yōu)化的軟件相比處理速度提高了4 倍。
圖9 名字解析緩存加速系統(tǒng)的處理時(shí)延
本文工程基于Xilinx FPGA 的XC7K32-5TFFG900-2設(shè)計(jì)實(shí)現(xiàn),運(yùn)行頻率為200 MHz,其資源消耗如表1 所示,包括查找表(LUT)、觸發(fā)器(FF)和存儲(chǔ)器資源(BRAM)。由于表項(xiàng)存儲(chǔ)在片外DDR上,節(jié)省片上資源。
表1 FPGA 工程資源消耗情況
為解決ICN 網(wǎng)絡(luò)中名字解析服務(wù)流程長(zhǎng)以及名字解析系統(tǒng)負(fù)載高的問(wèn)題,本文提出一種基于FPGA 的ICN 名字解析緩存加速系統(tǒng)。該架構(gòu)在網(wǎng)絡(luò)節(jié)點(diǎn)的數(shù)據(jù)面卸載名字解析功能,處理需要獲取網(wǎng)絡(luò)地址的轉(zhuǎn)發(fā)數(shù)據(jù)包,有效縮短處理流程。同時(shí),采用盡力解析的方式與主機(jī)CPU 協(xié)作,滿載時(shí)將數(shù)據(jù)包上送至控制面處理,在不影響服務(wù)能力的前提下加速了整個(gè)過(guò)程。
系統(tǒng)測(cè)試驗(yàn)證顯示:基于FPGA 實(shí)現(xiàn)的鍵值存儲(chǔ)處理性能相較于傳統(tǒng)軟件以及基于DPDK 實(shí)現(xiàn)的鍵值存儲(chǔ)處理性能均明顯提升;其次,名字解析緩存加速器與網(wǎng)卡其他功能分離的形式極大簡(jiǎn)化了系統(tǒng)設(shè)計(jì)難度。
注:本文通訊作者為宋磊。