趙正偉,張 英,安永果,李洪磊
(1.中國(guó)電子科技集團(tuán)公司第五十四研究所,河北 石家莊050081;
2.軍械工程學(xué)院 信息工程系,河北 石家莊050003;
3.西安衛(wèi)星測(cè)控中心,陜西 西安 710043)
?
一種基于硬件的10G網(wǎng)絡(luò)中TCP流處理方法
趙正偉1,張英2,安永果3,李洪磊1
(1.中國(guó)電子科技集團(tuán)公司第五十四研究所,河北 石家莊050081;
2.軍械工程學(xué)院 信息工程系,河北 石家莊050003;
3.西安衛(wèi)星測(cè)控中心,陜西 西安 710043)
摘要:近年來(lái),設(shè)計(jì)高速的網(wǎng)絡(luò)設(shè)備用以在流層面進(jìn)行分組處理,一直是工業(yè)界和學(xué)術(shù)界的研究熱點(diǎn)。10G網(wǎng)絡(luò)下的TCP流處理同時(shí)面臨性能問(wèn)題和異常情況的處理。真實(shí)流量的許多特性,會(huì)導(dǎo)致基于硬件的TCP流處理系統(tǒng)內(nèi)存耗盡。針對(duì)這種情況,提出并實(shí)現(xiàn)了一種用于10G網(wǎng)絡(luò)中TCP流處理的硬件設(shè)計(jì)方法,能夠處理百萬(wàn)量級(jí)TCP流的分組重組和狀態(tài)跟蹤。該解決方案提出了大規(guī)模流表的流替換算法和對(duì)全局流表的快速的單輪訪問(wèn)方式,采取了對(duì)亂序數(shù)據(jù)緩沖管理的主動(dòng)釋放策略,設(shè)計(jì)了一種無(wú)鏈的數(shù)據(jù)結(jié)構(gòu),保證了最壞情況下的處理時(shí)間要求。仿真結(jié)果顯示,該系統(tǒng)可以處理超過(guò)99%的10G網(wǎng)絡(luò)流量。基于FPGA的硬件原型也驗(yàn)證了系統(tǒng)的設(shè)計(jì)。
關(guān)鍵詞:10G網(wǎng)絡(luò);硬件加速;TCP重組;TCP狀態(tài)跟蹤
0引言
隨著網(wǎng)絡(luò)帶寬的迅速增長(zhǎng)和網(wǎng)絡(luò)流量處理需求的日益復(fù)雜,采用定制的硬件進(jìn)行網(wǎng)路流量處理與分析已成為共識(shí)[1]。從IP層的分組過(guò)濾到應(yīng)用層的數(shù)據(jù)過(guò)濾,硬件加速已被應(yīng)用到網(wǎng)絡(luò)的各個(gè)層次[2-3]。
10G網(wǎng)絡(luò)中TCP處理的性能瓶頸在于對(duì)流記錄表的訪問(wèn)上[4]。這就需要解決內(nèi)存訪問(wèn)的瓶頸,充分利用硬件并行性進(jìn)行高速的TCP處理;在基于硬件的TCP流狀態(tài)跟蹤系統(tǒng)提供記錄的替換機(jī)制。
本文在分析數(shù)據(jù)中心真實(shí)流量的基礎(chǔ)上,提出了一個(gè)基于硬件的TCP流狀態(tài)跟蹤和重組解決方案,能夠支持10 MPPS的處理速度,并且能夠保證最壞情況下的處理時(shí)間要求。對(duì)真實(shí)的流量分析結(jié)果顯示,該方案可以使用合理的資源處理99%的10G網(wǎng)絡(luò)流量。我們也用FPGA實(shí)現(xiàn)了一個(gè)原型,驗(yàn)證了該系統(tǒng)的設(shè)計(jì)。
1真實(shí)Trace分析
我們采集了某公司和某研究機(jī)構(gòu)的數(shù)據(jù)中心中匯聚鏈路的trace,帶寬分別是10G和1G,持續(xù)時(shí)間約60 min。下文中分別稱為Trace_10G和Trace_1G。
trace中出現(xiàn)的TCP流可分為3類[5]:第一類是沒(méi)有頭部的流(headless flow),這些流在trace開(kāi)始之前建立,其SYN分組沒(méi)有被采集到;第二類是完整的流(complete flow),在trace開(kāi)始之后建立,并且在trace停止之前結(jié)束;第三類是沒(méi)有尾部的流(tailless flow),在trace開(kāi)始之前建立,并且在trace停止之前沒(méi)有結(jié)束。如果在trace停止時(shí),一條流有未填充的序號(hào)但是其FIN分組已經(jīng)到達(dá),這條流仍然被看做是沒(méi)有尾部的流。
對(duì)2個(gè)trace的真實(shí)流量進(jìn)行了統(tǒng)計(jì)分析[6],分析結(jié)果如表1所示??梢钥闯?,2個(gè)trace的亂序流的比例都小于1%,所需要的最大緩沖均超過(guò)10 MB。
表1 真實(shí)流量分析
Trace_10G中不同類型流的數(shù)目隨時(shí)間的變化情況如圖1所示?;顒?dòng)流是連接已經(jīng)建立并且沒(méi)有結(jié)束的流,圖中顯示活動(dòng)流的數(shù)目一直在增加。在trace停止時(shí)的活動(dòng)流就是無(wú)尾流,為辨別無(wú)尾流的活動(dòng)性,統(tǒng)計(jì)了這些流最后一個(gè)分組到達(dá)時(shí)間和trace停止時(shí)間的間隔,稱之為分組的間隔時(shí)間,如圖2所示。
圖1 Trace_10G的流情況統(tǒng)計(jì)
圖2 Trace_10G的分組間隔累積分布
圖中右側(cè)可以看出,在trace停止時(shí),無(wú)尾流在超過(guò)100 s的時(shí)間內(nèi)沒(méi)有收到任何分組。圖中左側(cè)的曲線是每條流中相鄰的2個(gè)分組的間隔時(shí)間。大多數(shù)的間隔時(shí)間都超過(guò)100 s,也就是說(shuō),許多實(shí)時(shí)流沒(méi)有收到FIN但是已經(jīng)不傳輸數(shù)據(jù)了,這些流稱為僵尸流(zombie flow)。TCP子系統(tǒng)必須為每條無(wú)尾流分配一條流記錄以用于TCP重組,無(wú)尾流數(shù)目的持續(xù)增加不可避免地導(dǎo)致內(nèi)存耗盡。
圖3是一條流的分組重組所需緩沖的累積分布,從圖中可以看出,幾乎所有的分組重組所需要的緩沖都不超過(guò)40 KB。
圖3 分組重組所需緩沖的累積分布
2TCP處理框架
從前面對(duì)真實(shí)流量的分析可知,只有一部分的TCP流有亂序情況發(fā)生[7]。為了能夠處理10 Gbps的高速流量,采用快速通道分組處理順序流的分組,其執(zhí)行時(shí)間是固定的;用另外的一個(gè)慢速通道處理亂序流的分組。
此外,真實(shí)流量的2個(gè)特性也必須考慮:① 由于僵尸流的存在,必須設(shè)計(jì)流記錄的替換機(jī)制[8],這可能導(dǎo)致一個(gè)新接收到的分組找不到它的相關(guān)記錄,稱之為無(wú)記錄分組;② 因?yàn)闆](méi)有足夠多的緩存,小部分的流不能完成TCP重組,將這些流視為異常流。無(wú)記錄分組和異常流的分組將被上傳到主機(jī),并由主機(jī)的TCP子系統(tǒng)處理。
2.1帶替換優(yōu)先級(jí)的流表
為了進(jìn)行替換操作,需要維護(hù)一些替換操作所需的信息,提出了一種帶替換優(yōu)先級(jí)的流表。把流記錄存放在二維的數(shù)組里,每一行就是一個(gè)鏈表,存儲(chǔ)了流記錄以及一個(gè)哈希值,該哈希值等于行號(hào)。每一行還是一個(gè)哈希沖突鏈,其長(zhǎng)度就是哈希沖突鏈所允許的最大長(zhǎng)度。查詢一個(gè)分組的相關(guān)記錄需要2個(gè)步驟:首先根據(jù)分組的四元組的哈希結(jié)果找到目標(biāo)記錄的行號(hào),接著在該行中找到目標(biāo)記錄。對(duì)每行增加一個(gè)替換優(yōu)先級(jí)域,用于記錄該行所有記錄的替換優(yōu)先級(jí),用以在需要時(shí)把該記錄替換出去。
替換優(yōu)先級(jí)域由次序域和計(jì)數(shù)器域組成。次序域是0,1,2,3…n-1的一個(gè)排列(n是行的長(zhǎng)度),每個(gè)數(shù)字代表該行中的對(duì)應(yīng)列所表示的流記錄,次序域占用(n-1)×log2n位。次序域是該行中所有記錄的替換順序,最右側(cè)的數(shù)字表示最優(yōu)先被替換出去的記錄的列號(hào)。當(dāng)一行中沒(méi)有空閑的記錄可以使用時(shí),次序域的值全為0。計(jì)數(shù)器域記錄該行已經(jīng)被使用的記錄的數(shù)目,占用log2n位。如果計(jì)數(shù)器域和次序域全為0,表示該行所有的記錄都沒(méi)有被使用,其他情況下計(jì)數(shù)器域?yàn)?表示該行n個(gè)記錄全被使用。整個(gè)替換優(yōu)先級(jí)域占用n×log2n位,當(dāng)行的長(zhǎng)度是4的時(shí)候,每行只需要一個(gè)字節(jié)就可以存儲(chǔ)替換操作所需的全部信息。替換優(yōu)先級(jí)處理過(guò)程如圖4所示。
存儲(chǔ)替換優(yōu)先級(jí)有2種選擇:分離的流表和合并的流表。如果流表不是很大(小于10M行),替換優(yōu)先級(jí)可以存儲(chǔ)在cache中,即SRAM或者FPGA的Block RAM中,而不是DRAM中,這種流表稱之為分離的流表;如果流表的行數(shù)大于10M,替換優(yōu)先級(jí)就不能被存在SRAM里了,需要把替換優(yōu)先級(jí)和流記錄都存在DRAM里,這種流表稱之為合并的流表。
圖4 替換優(yōu)先級(jí)變化示意圖
2.2兩級(jí)流表
流表的2種存儲(chǔ)方法具有各自的缺點(diǎn):分離的流表訪問(wèn)效率較高,但是支持的流的數(shù)目有限;合并的流表的容量只受DRAM容量的限制,因而可以支持千萬(wàn)量級(jí)的活動(dòng)流,但是其獲取替換優(yōu)先級(jí)的延遲很大,導(dǎo)致在處理分組之前必須等待。
為克服上述缺點(diǎn),設(shè)計(jì)了兩級(jí)的流表。第一級(jí)稱為全局流表,用于存儲(chǔ)活動(dòng)流的簡(jiǎn)化記錄,簡(jiǎn)化記錄包括處理無(wú)亂序情況的TCP流所需的全部信息,如四元組和期望的序號(hào);第二級(jí)稱為亂序流表,對(duì)每條亂序流維護(hù)一個(gè)亂序記錄,亂序記錄的內(nèi)容包括TCP重組所需要的全部信息,如亂序報(bào)文段的地址和長(zhǎng)度,以及兩個(gè)亂序報(bào)文段之間的間隔大小。
全局流表是一個(gè)合并的流表,它記錄的長(zhǎng)度很小,可以在一個(gè)DDR read burst內(nèi)讀取替換優(yōu)先級(jí)和一行的所有記錄,并且可以在一個(gè)write burst內(nèi)寫回更新數(shù)據(jù)。
對(duì)亂序流來(lái)說(shuō),由于只有一小部分的流有亂序情況發(fā)生,所以采用分離的流表更合適。替換優(yōu)先級(jí)可以以較低的延遲從cache中獲取,然后根據(jù)替換優(yōu)先級(jí)的次序域逐條讀取記錄??紤]到流分組的局部性,一次就讀到目標(biāo)記錄的概率很高,所以更大的亂序記錄不會(huì)引入額外的存儲(chǔ)開(kāi)銷,64或128 bytes就足夠使用。
如果數(shù)據(jù)流沒(méi)有亂序情況發(fā)生,就由快速通道處理,首先獲取全局的流表,接著根據(jù)流記錄內(nèi)容和分組頭更新流的狀態(tài)。如果有亂序情況發(fā)生,就由慢速通道處理,必須從亂序流表中獲取亂序記錄并完成TCP重組。
2.3快速通道處理
快速通道處理首先根據(jù)分組四元組的哈希結(jié)果,從全局流表里取得目標(biāo)行,繼而找到流記錄,并更新該流的狀態(tài)。如果沒(méi)有發(fā)生亂序,并且分組序號(hào)和期望序號(hào)相等,用分組的長(zhǎng)度更新流的狀態(tài)。否則,流被標(biāo)記為亂序流,這個(gè)標(biāo)記在流的生命周期內(nèi)不會(huì)被取消,該流的所有后續(xù)分組都將由慢速通道處理。
全局的流記錄里包含快速處理通道所需的全部信息,包括:
CA,SA:客戶端/服務(wù)端地址;
CP,SP:客戶端/服務(wù)端端口號(hào);
CSEQ,SSEQ:客戶端/服務(wù)端期望序號(hào);
CS:連接狀態(tài)。
一條全局流記錄需要24 bytes,如果全局流表的一行是128 bytes的話,每行能存放5條記錄。這個(gè)值也可以設(shè)置為32 bytes,多余的字節(jié)可以用于擴(kuò)展。
2.4慢速通道處理
慢速通道用來(lái)處理亂序的流。首先在cache中讀取替換優(yōu)先級(jí),繼而找到對(duì)應(yīng)的亂序記錄,并根據(jù)記錄的相關(guān)域、序號(hào)以及分組長(zhǎng)度對(duì)分組進(jìn)行重組。TCP重組包括以下步驟:將當(dāng)前分組寫入亂序緩沖,從亂序緩沖中讀取數(shù)據(jù),如果當(dāng)前分組填滿了期望序號(hào)和亂序數(shù)據(jù)之間的空隙(gap),就上傳到主機(jī)。如果一條流的重組太復(fù)雜,慢速通道不能完成處理,則將其視為異常流,亂序流表將丟棄異常流,但是全局流表將保留異常流的記錄,并在狀態(tài)域中對(duì)其打上異常標(biāo)記。
亂序流記錄包括慢速通道處理所需的全部信息,除了前面提到的全局流記錄之外,全局流表還包括以下的數(shù)據(jù):
CBA:客戶端到服務(wù)端亂序緩沖基地址;
SBA:服務(wù)端到客戶端亂序緩沖基地址;
CSEQOFF,SSEQOFF:亂序緩沖中期望的序號(hào)偏移;
DSV:數(shù)據(jù)報(bào)文有效標(biāo)識(shí);
DSD:數(shù)據(jù)報(bào)文方向;
DSH1~N,DST1~N:數(shù)據(jù)報(bào)文頭/尾指針。
其中,N是一個(gè)連接可以容納的亂序數(shù)據(jù)報(bào)文的數(shù)目,S是亂序數(shù)據(jù)緩沖的大小。
對(duì)每個(gè)亂序的TCP流進(jìn)行重組時(shí),需要一塊連續(xù)的固定長(zhǎng)度的存儲(chǔ)空間。如果亂序數(shù)據(jù)的大小超過(guò)該空間的大小,慢速通道不會(huì)為這條流申請(qǐng)新的緩沖區(qū),而是把它視為異常流,將其流記錄和亂序數(shù)據(jù)上傳到主機(jī),其后續(xù)的分組將直接上傳到主機(jī)。與每次申請(qǐng)一小塊頁(yè)面(page)繼而將這些頁(yè)面鏈接起來(lái)的緩沖區(qū)管理策略比起來(lái),這種策略要簡(jiǎn)單得多。如果一條流長(zhǎng)時(shí)間占用緩沖,說(shuō)明這條流的最后一個(gè)分組已經(jīng)到達(dá)很長(zhǎng)一段時(shí)間,這條流很可能是一條僵尸流。采用一種主動(dòng)釋放策略來(lái)處理這些流。由于限制了亂序流表的大小,所以在較長(zhǎng)的時(shí)間內(nèi)沒(méi)有收到新的分組的亂序流將會(huì)被替換出去,并不額外消耗數(shù)據(jù)緩沖,而在全局流表中,是通過(guò)申請(qǐng)盡可能多的空間來(lái)替換可能是僵尸流的流,造成數(shù)據(jù)緩沖的額外開(kāi)銷。
2.5優(yōu)化
在上述方案中,對(duì)全局流表的訪問(wèn)非常有規(guī)律,不需要在控制器中進(jìn)行復(fù)雜的調(diào)度。每個(gè)分組只需要一個(gè)burst read和一個(gè)burst write,所以,通過(guò)調(diào)整分組的輸入順序就可以達(dá)到高效的bank-level并行,如圖5所示。
圖5 Round-Robin分組請(qǐng)求
在工作模塊(working module)之前放置一組FIFO,F(xiàn)IFO和DRAM的bank之間是一一對(duì)應(yīng)關(guān)系。FIFO中待處理的所有分組的相關(guān)記錄都位于對(duì)應(yīng)的bank中。這里有一個(gè)分發(fā)模塊,以輪轉(zhuǎn)方式從FIFO中取出分組,然后再送到工作模塊中。多個(gè)工作模塊并發(fā)訪問(wèn)全局流表,形成了對(duì)bank的交織訪問(wèn)。這種沒(méi)有內(nèi)存控制器參與的策略稱為RRPR(Round Robin Packet Request)。慢速通道由于只有一小部分的分組需要訪問(wèn)亂序流表。所以不需要使用RRPR。
3系統(tǒng)實(shí)現(xiàn)
在硬件系統(tǒng)中實(shí)現(xiàn)TCP處理框架,需要2個(gè)DDR2內(nèi)存模塊:全局流表獨(dú)占一個(gè),另一個(gè)由亂序流表和亂序數(shù)據(jù)緩沖共享。用2個(gè)SRAM芯片存儲(chǔ)分組的有效載荷以及亂序流表的替換優(yōu)先級(jí)。系統(tǒng)架構(gòu)如圖6所示。
圖6 系統(tǒng)架構(gòu)圖
模塊之間沿實(shí)線傳輸?shù)氖欠纸M頭及其相關(guān)數(shù)據(jù)結(jié)構(gòu),沿虛線傳輸?shù)氖欠纸M的有效載荷。
數(shù)據(jù)預(yù)處理模塊過(guò)濾掉非TCP的分組,根據(jù)四元組計(jì)算哈希值(用于索引各種數(shù)據(jù)結(jié)構(gòu)),提取分組的有效載荷并將其存入SRAM中。接著創(chuàng)建一個(gè)header結(jié)構(gòu),包括分組頭、哈希值、有效載荷的SRAM地址,并把這個(gè)頭結(jié)構(gòu)傳遞給后繼模塊。
流狀態(tài)管理器接收到頭結(jié)構(gòu)后,從全局流表中取出流記錄,如果是亂序流則把頭結(jié)構(gòu)傳遞給亂序流處理模塊,否則更新頭結(jié)構(gòu),并將其傳遞給提交模塊。
重組模塊完成亂序TCP流的重組,并更新亂序記錄的相關(guān)域,該模塊不涉及分組載荷的傳輸。
提交模塊負(fù)責(zé)更新各種數(shù)據(jù)結(jié)構(gòu),包括全局流表、亂序流表、亂序流表的替換優(yōu)先級(jí)以及緩存亂序分組的載荷。
4系統(tǒng)評(píng)價(jià)
本節(jié)中采用軟件算法仿真來(lái)對(duì)真實(shí)流量進(jìn)行離線分析,對(duì)基于硬件的TCP處理框架進(jìn)行性能和容量評(píng)價(jià)[9]。另外實(shí)現(xiàn)了一個(gè)FPGA的原型,用于硬件資源評(píng)估。
4.1性能評(píng)價(jià)
用DRAMsim[10]來(lái)分析系統(tǒng)的吞吐量。使用DRAMsim默認(rèn)的DDR2配置,DDR2-400,時(shí)序參數(shù)3-3-3-9,單通道數(shù)據(jù)總線寬度為64 bytes,cache line大小(即burst length)為128 bytes,1個(gè)rank,4個(gè)bank,地址映射采用sdram_hiper_map,控制器的事務(wù)選擇方式為FCFS,芯片延遲為2。CPU主頻(即FPGA的工作頻率)設(shè)置為200M。
圖7顯示的是在不同的配置下,處理這個(gè)內(nèi)存請(qǐng)求序列時(shí)的內(nèi)存效率??梢钥闯鯮RPR能顯著地提高內(nèi)存訪問(wèn)效率。當(dāng)有2個(gè)工作模塊同時(shí)訪問(wèn)全局流表的時(shí)候,控制器的效率達(dá)到峰值。原因在于每個(gè)工作模塊并發(fā)訪問(wèn)2個(gè)bank。所以在4個(gè)bank的DRAM中,3個(gè)工作模塊將會(huì)導(dǎo)致頻繁的bank沖突。當(dāng)DDR2-400的訪問(wèn)效率是80%時(shí),內(nèi)存控制器每秒可以處理20M次突發(fā)訪問(wèn),也就是說(shuō)系統(tǒng)可以處理10 MPPS。真實(shí)流量中分組的平均長(zhǎng)度約是400 bytes,即10G流量下3.36 MPPS。由此可以得出結(jié)論,該TCP子系統(tǒng)可以處理10G的真實(shí)流量。
圖7 訪問(wèn)全局流表時(shí)的內(nèi)存總線效率
4.2容量評(píng)價(jià)
假設(shè)全局流表只有4M條記錄,占用128 MB。使用3種類型的全局流表:2M×2,1M×4,和512K×8。使用2種替換策略:LRE選擇一行中最早建立的流的記錄,并將其替換出去;LRU選擇一行中最不活躍的流(即最長(zhǎng)時(shí)間沒(méi)有收到新的分組的流)的記錄,并將其替換出去。對(duì)一分鐘內(nèi)被替換記錄和無(wú)記錄分組情況進(jìn)行統(tǒng)計(jì)。
結(jié)果表明:對(duì)于無(wú)記錄分組的數(shù)目,LRU的效果要比LRE好得多,這與期望是一致的。只考慮LRU,與4列或8列相比,2列情況下的無(wú)記錄分組數(shù)目要大得多。在全局流表是4列的情況下,2個(gè)trace的無(wú)記錄分組的比例分別為0.14%和0.013%。
對(duì)異常流會(huì)有2種結(jié)果:一種是這條流收到的亂序分組的數(shù)目超過(guò)了給它分配的緩沖區(qū)大??;另一種是這條流有太多的亂序數(shù)據(jù)報(bào)文,以致于亂序記錄不能保存所有的數(shù)據(jù)段的狀態(tài)。對(duì)這種情況的統(tǒng)計(jì)如表2、表3和表4所示。
表2 Trace-10 G中亂序緩沖溢出時(shí)的異常流數(shù)目
表3 Trace-10 G中不同亂序表情況下的異常流數(shù)目
表4 Trace-10 G中亂序數(shù)據(jù)報(bào)文溢出時(shí)的異常流數(shù)目
從表2中可以發(fā)現(xiàn),如果一條流的亂序數(shù)據(jù)超過(guò)64 KB,那么這條流通常都大于1 MB。所以,把緩沖區(qū)的大小由64 KB增大至1 MB并不能解決問(wèn)題。表3列出了在主動(dòng)釋放策略下,不同的亂序流表情況下的異常流數(shù)目。表3中每個(gè)分組的平均訪問(wèn)時(shí)間非常接近1,說(shuō)明大多數(shù)情況下,LRU策略從目標(biāo)行中取出的第一個(gè)記錄就是當(dāng)前分組的相關(guān)記錄。
在主動(dòng)釋放和非主動(dòng)釋放策略下的內(nèi)存使用情況比較如圖8所示。主動(dòng)釋放策略能顯著降低緩沖區(qū)的大小,同時(shí)異常流的數(shù)目幾乎沒(méi)有增加。
圖8 主動(dòng)釋放策略下的亂序數(shù)據(jù)緩沖需求
根據(jù)表4的統(tǒng)計(jì),必須考慮在一條流中同時(shí)處理2個(gè)或更多的亂序數(shù)據(jù)段。考慮到亂序數(shù)據(jù)記錄的大小,每個(gè)記錄保留4-6個(gè)數(shù)據(jù)段是很有必要的。
綜合考慮所有因素,把全局流表設(shè)置為2M×4,亂序流表設(shè)置為4K×16,一條流支持的最大并發(fā)亂序數(shù)據(jù)段設(shè)置為6。一條亂序流的數(shù)據(jù)緩沖設(shè)置為64 KB。統(tǒng)計(jì)了Trace_10G的后面30 min的情況。結(jié)果顯示,0.23%的TCP分組是無(wú)記錄分組,0.76%的分組屬于異常流。全部的內(nèi)存需求,包括2個(gè)流表以及亂序數(shù)據(jù)緩沖,小于512 MB。假設(shè)處理10G的網(wǎng)絡(luò)流需要的資源是Trace_10G的4倍(Trace_10G中流量的平均速率是2.6G),處理10G流量時(shí),TCP子系統(tǒng)所需的DRAM是2 GB,目前的技術(shù)完全能夠支持。
4.3FPGA原型
為了驗(yàn)證我們的設(shè)計(jì),實(shí)現(xiàn)了一個(gè)基于FPGA的10G POS網(wǎng)卡。FPGA采用Xilinx Virtex5 LX110t[11],F(xiàn)PGA接收的數(shù)據(jù)來(lái)自一個(gè)Cortina OC192 Integrated Framer,CS1777[12]。設(shè)計(jì)的邏輯開(kāi)銷如表5所示,設(shè)計(jì)的頻率能達(dá)到250 MHz。
表5 Virtex5 LX110t的設(shè)備利用率
FPGA器件在邏輯資源利用率為50%~70%時(shí)可以達(dá)到性能和資源利用的最優(yōu)[13-14]。表5的統(tǒng)計(jì)數(shù)據(jù)表明,輸入/輸出模塊使用率較高,存儲(chǔ)器使用率適中,其他邏輯單元使用率偏低??傊闹薪鉀Q方案的實(shí)現(xiàn)不需要過(guò)多的FPGA資源。
5結(jié)束語(yǔ)
本文提出了一種基于硬件的TCP狀態(tài)跟蹤和重組解決方案。該方案采用高效的流記錄替換算法,來(lái)應(yīng)對(duì)活動(dòng)流數(shù)目的持續(xù)增長(zhǎng);采用主動(dòng)釋放亂序數(shù)據(jù)緩存的策略,以避免緩存分組造成內(nèi)存耗盡。
文中的解決方案能夠到達(dá)10 MPPS的處理速度,在合理的內(nèi)存資源下,能夠處理99%的10G流量。對(duì)于如何更加合理利用FPGA資源以獲得更高的TCP流處理速度需要進(jìn)一步的研究和探索。
參考文獻(xiàn)
[1]SONG Tian,ZHANG Wei,WANG Dong-sheng,et al.A Memory Efficient Multiple Pattern Matching Architecture for Network Security [C] ∥Proc of INFOCOM 2008.Phoenix :IEEE,2008:166-170.
[2]孫召敏,楊越,陳啟美.云基礎(chǔ)設(shè)施中TPL2-SW網(wǎng)絡(luò)模型的優(yōu)化[J].計(jì)算機(jī)應(yīng)用研究,2012,29(6):2268-2273.
[3]郭勇,陳艷玲.多發(fā)多收網(wǎng)絡(luò)仿真器的FPGA實(shí)現(xiàn)及測(cè)試[J].無(wú)線電工程,2013,43(1):4-6.
[4]蘇琪,龔儉,蘇艷珺.基于抽樣流記錄的RTT估計(jì)[J].軟件學(xué)報(bào),2014,25(10):2346-2361.
[5]王遠(yuǎn),丁偉,龔儉.TCP數(shù)據(jù)流超時(shí)研究[J].廈門大學(xué)學(xué)報(bào)(自然科學(xué)版),2007,46(增刊2):192-195.
[6]龍劍友,王維,何晶.網(wǎng)絡(luò)流量自相似性的影響因素[J].吉首大學(xué)學(xué)報(bào)(自然科學(xué)版),2008,29(4):38-41.
[7]Dharmapurikar S,Paxson V.Robust TCP Stream Reassembly in the Presence of Adversaries [C] ∥Proc of 14th Conference on USENIX Security Symposium.Berkely:USENIX Association,2005:5-5.
[8]廖鑫.一種基于LRU算法改進(jìn)的緩存方案研究與實(shí)現(xiàn)[J].電子工程師,2008,34(7):46-48.
[9]夏愛(ài)民,劉棟,張帆.TCP擁塞控制建模分析方法[J].無(wú)線電工程,2011,41(8):4-5.
[10]Wang D,Ganesh B,Tuaycharoen N,et al.DRAMsim:A Memory System Simulator[J].SIGARCH Computer Architecture News,2005,33(4):100-107.
[11]Xilinx.Xilinx University Program XUPV5-LX110T Development System [OL].http:∥www.xilinx.com/univ/xupv5-lx110t.htm.
[12]Cortina Systems.OC192/48 Integrated Framer [OL].http:∥www.cortina-systems.com/products/view/4.
[13]高麗麗.基于Xilinx V5的SAR_GMTI若干關(guān)鍵技術(shù)的實(shí)現(xiàn)[D].西安:西安電子科技大學(xué) ,2013:31-32.
[14]陳雪峰,劉洋.基于FPGA的北斗衛(wèi)星信號(hào)快速捕獲[J].無(wú)線電工程,2014,44(3):46-49.
A Hardware-based TCP Flow Processing Solution in 10Gbps Network
ZHAO Zheng-wei1,ZHANG Ying2,AN Yong-guo3,LI Hong-lei1
(1.The 54th Research Institute of CETC,Shijiazhuang Hebei 050081,China;2.Department of Information Engineering,Ordnance Engineering College,Shijiazhuang Hebei 050003,China;3.China Xi’an Satellite Control Center,Xi’an Shaanxi 710043)
Abstract:There is an increasing interest in designing high-speed network devices to perform packet processing at flow level.However,TCP processing for 10Gbps network traffic needs not only to address performance problems but also to cope with abnormal conditions.Some characteristics of real traffic,will result in memory exhaustion in hardware-based TCP processing subsystem which is less flexible for exceptional processing.For this case,this paper presents a hardware design which is capable of processing real traffic in 10G networks with TCP reassembly and tracking states of millions of parallel TCP flows.The solution has several features:①a simple and effective implementation of flow replacement algorithm for massive flow table;②fast one round access to global flow table;③an active release policy for out-of-order data buffer management;④a link-less data structure which ensures time limit for worst case processing.The simulation result shows that the system can process over 99% of the 10G network traffic.A FPGA-based prototype is also implemented for evaluation.
Key words:10G network;hardware acceleration;TCP reassembly;TCP state tracking
中圖分類號(hào):TP391.4
文獻(xiàn)標(biāo)志碼:A
文章編號(hào):1003-3114(2016)03-70-6
作者簡(jiǎn)介:趙正偉(1982—),男,博士,工程師,主要研究方向:航天測(cè)控。張英(1982—),女,碩士,講師,主要研究方向:軍用通信技術(shù)。
基金項(xiàng)目:國(guó)家高技術(shù)研究發(fā)展計(jì)劃(863計(jì)劃)項(xiàng)目(2013AA122105)
收稿日期:2016-01-05
doi:10.3969/j.issn.1003-3114.2016.03.19
引用格式:趙正偉,張英,安永果,等.一種基于硬件的10G網(wǎng)絡(luò)中TCP流處理方法[J].無(wú)線電通信技術(shù),2016,42(3):70-75,114.