《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 業(yè)界動(dòng)態(tài) > 10Gb/s線速可擴(kuò)展P2P流量識(shí)別引擎

10Gb/s線速可擴(kuò)展P2P流量識(shí)別引擎

2008-07-30
作者:范紅永, 張 進(jìn), 劉勤讓, 汪

  摘 要: 通過引入流特征統(tǒng)計(jì)和深度數(shù)據(jù)包檢測(cè)相結(jié)合的思想,設(shè)計(jì)了一種可擴(kuò)展的10Gb/s線速P2P流量識(shí)別引擎" title="識(shí)別引擎">識(shí)別引擎,給出了該引擎的硬件實(shí)現(xiàn)方案,詳細(xì)介紹了方案中已知流過濾、傳輸層特征統(tǒng)計(jì)、凈荷關(guān)鍵詞匹配等核心部分的實(shí)現(xiàn)。測(cè)試表明,該引擎可完全實(shí)現(xiàn)10Gb/s速率下的P2P流量線速識(shí)別,識(shí)別準(zhǔn)確率大于95%。
  關(guān)鍵詞: 識(shí)別引擎; P2P流量; 流特征識(shí)別;深度數(shù)據(jù)包檢測(cè)

?

??? 近來,P2P流量成為一個(gè)流行的問題,這種無序的流量占用網(wǎng)絡(luò)中50%~90%的帶寬[1],造成網(wǎng)絡(luò)擁塞,致使服務(wù)質(zhì)量下降。通過在網(wǎng)絡(luò)中主動(dòng)識(shí)別標(biāo)識(shí)P2P流量,并在此基礎(chǔ)上實(shí)現(xiàn)對(duì)P2P流量的管理與控制,是目前被業(yè)內(nèi)認(rèn)可的一種解決方案。
  有一些工具使用深層數(shù)據(jù)包檢測(cè)技術(shù)" title="檢測(cè)技術(shù)">檢測(cè)技術(shù)[2] DPI(Deep Packet Inspection)通過軟件(如P2P終結(jié)者)的方式在小型局域網(wǎng)中識(shí)別處理P2P流量,其能力有限; 華為、Cisco等公司也推出了相關(guān)產(chǎn)品,基于DPI技術(shù)對(duì)流量的應(yīng)用層協(xié)議分類,標(biāo)識(shí)出P2P流量,其最大吞吐率" title="吞吐率">吞吐率為4Gb/s。韓國(guó)的JamesWon-KiHong等人研發(fā)的流量監(jiān)控系統(tǒng)NG-MON是基于流量特征的檢測(cè)技術(shù)[3](Transport Layer Identification),但其性能參數(shù)未知。DPI技術(shù)的缺點(diǎn)是對(duì)新P2P應(yīng)用檢測(cè)具有滯后性,難以檢測(cè)加密P2P應(yīng)用,性能與載荷檢測(cè)的復(fù)雜度相關(guān)?;诹髁刻卣鞯臋z測(cè)技術(shù)[4]能夠克服這些缺點(diǎn),但它不能指示P2P應(yīng)用協(xié)議具體類型,當(dāng)其他應(yīng)用的流量與P2P流量特征類似時(shí)容易誤判。
  針對(duì)目前已經(jīng)成為主流鏈路" title="鏈路">鏈路傳輸速率的10Gb/s速率,筆者設(shè)計(jì)了一種高效的P2P流量識(shí)別引擎,把深層數(shù)據(jù)包檢測(cè)技術(shù)和基于流量特征的檢測(cè)技術(shù)結(jié)合,兼顧效率和精度。該引擎能夠?qū)?0Gb/s鏈路的P2P流量線速識(shí)別。
1 P2P識(shí)別引擎設(shè)計(jì)
  本設(shè)計(jì)的P2P識(shí)別引擎采用流水作業(yè)方式,如圖1所示。

?


  當(dāng)一個(gè)IP數(shù)據(jù)包(設(shè)為flow:由源IP地址SrcIP、目的IP地址DstIP、源端口SrcPort、目的端口DstPort和協(xié)議域Protocol組成)進(jìn)入該引擎時(shí),它首先通過已知流比較,未知的流量數(shù)據(jù)包送到端口匹配識(shí)別引擎進(jìn)行端口匹配,接著不匹配的數(shù)據(jù)包由傳輸層特征識(shí)別引擎處理,將未知類型P2P數(shù)據(jù)包送至凈荷檢測(cè)識(shí)別引擎,做具體類型判斷。對(duì)于每個(gè)模塊識(shí)別出的非P2P流量直接輸出到引擎對(duì)外接口;對(duì)于識(shí)別出的P2P數(shù)據(jù)包,則添加類型指示并送到輸出FIFO,類型指示包括P2P具體類型和P2P未知類型。最后,數(shù)據(jù)包由FIFO輸出。
1.1 已知流過濾
  對(duì)于P2P流量而言,具有數(shù)據(jù)量大,在線時(shí)間長(zhǎng)的特點(diǎn)。數(shù)據(jù)包(flow)和儲(chǔ)存在TCAM中的已知P2P流直接比較,快速區(qū)分出是否為已知P2P流;同時(shí)有很多知名Web等服務(wù)器的IP地址固定,通過IP地址判斷不是P2P流量。
1.2 端口匹配識(shí)別引擎
  許多P2P應(yīng)用軟件有默認(rèn)的使用端口,一些用戶沒有修改軟件默認(rèn)端口的習(xí)慣,通過端口可以識(shí)別一部分P2P流量。
1.3 傳輸層特征識(shí)別引擎
  傳輸層識(shí)別引擎通過對(duì)主機(jī)傳輸層特征的統(tǒng)計(jì)識(shí)別P2P流量。根據(jù)已有研究成果[4],目前P2P流量在傳輸層特征上存在以下兩個(gè)特征:
  (1)許多P2P應(yīng)用在一對(duì)主機(jī)之間同時(shí)采用TCP 和UDP連接;
  (2)某一主機(jī)與多個(gè)目的主機(jī)通信,并且對(duì)于不同目的主機(jī)通常采用不同的目的端口。
  上述特征也存在一些例外情況,如DNS、NETBIOS、IRC、游戲和多媒體業(yè)務(wù)流量有(1)的特征, 有時(shí)Mail、DNS、Game也具備上述(2)的特征。本設(shè)計(jì)采用參考文獻(xiàn)[4]的方法可以區(qū)分這些應(yīng)用??紤]到骨干網(wǎng)鏈路上主機(jī)數(shù)目眾多,無法測(cè)量所有主機(jī)的傳輸層特征;但是由于網(wǎng)絡(luò)流量大小服從Zipf分布的特性,10%的主機(jī)的流量占據(jù)了鏈路總流量的90%[5],因此,采用抽樣的方式,僅僅測(cè)量流量大的主機(jī)的傳輸層特征。抽樣算法采用參考文獻(xiàn)[6]中提出的sample-and-hold算法。
1.4 凈荷檢測(cè)識(shí)別引擎
  不同的P2P協(xié)議凈荷具有不同的特征,采用特征字符串來匹配凈荷的方式可以精確識(shí)別P2P具體應(yīng)用的具體類型。
2 P2P識(shí)別引擎的實(shí)現(xiàn)
  P2P識(shí)別引擎可以識(shí)別10Gb/s網(wǎng)絡(luò)中P2P流量。它包括已知流過濾、端口匹配識(shí)別、傳輸層特征識(shí)別、凈荷檢測(cè)識(shí)別四個(gè)部分,并隨著發(fā)展可以擴(kuò)展新的功能模塊。這在Xilinx Virtex-4 LX160 FPGA上得到了實(shí)現(xiàn)。
2.1 已知流過濾的實(shí)現(xiàn)
  要線速地對(duì)10Gb/s數(shù)據(jù)流進(jìn)行處理,需兼顧處理速度和存儲(chǔ)容量要求,所以筆者使用TCAM1實(shí)現(xiàn)對(duì)數(shù)據(jù)包的過濾。在一條鏈路中,識(shí)別引擎的工作時(shí)間越長(zhǎng), 識(shí)別出來的P2P流量越多,把識(shí)別出來的P2P流量用流標(biāo)識(shí)符(SrcIP、DstIP、SrcPort、DstPort和Protocol經(jīng)過Bloom filter運(yùn)算壓縮[7]成20bit流標(biāo)識(shí)符)存儲(chǔ)在FPGA片外的TCAM1中。許多知名網(wǎng)站服務(wù)器(如sina、 hotmail等)的訪問量很大,其IP地址固定,把這些IP地址也儲(chǔ)存在TCAM1中。如果SrcIP或者DstIP在表中,則可以直接判為非P2P流量。在TCAM1中,如圖2所示,劃分出多塊空間,分別對(duì)應(yīng)存儲(chǔ)已知具體類型和未知類型的P2P流量標(biāo)識(shí)符、知名網(wǎng)站服務(wù)器IP地址。通過TCAM掩碼可以選擇每一行中的比特哪些必須匹配,哪些可以忽略。如果所有的值在沒有掩碼的比特位置都匹配了,根據(jù)返回的空間地址可以知道數(shù)據(jù)包的類型。通過發(fā)送控制包到 P2P識(shí)別引擎可以改變TCAM掩碼、TCAM值和TCAM空間分配。對(duì)于識(shí)別出具體類型的P2P流量,把數(shù)據(jù)包添加類型指示直接送到輸出FIFO中,對(duì)未知類型的P2P流量數(shù)據(jù)包添加類型指示送到凈荷檢測(cè)模塊處理,對(duì)知名網(wǎng)站服務(wù)器的數(shù)據(jù)包直接送到引擎對(duì)外接口;如果沒有匹配,則認(rèn)為是未知流量,對(duì)其添加未知類型指示送到端口匹配識(shí)別模塊作處理。對(duì)已知流的快速標(biāo)識(shí),可以提高判別效率,節(jié)省FPGA資源。

?


2.2 端口匹配的實(shí)現(xiàn)
  目前很多的P2P應(yīng)用軟件中都有默認(rèn)的使用端口,例如eMule使用端口4662/4672/4673等。據(jù)統(tǒng)計(jì),目前P2P默認(rèn)端口數(shù)量在100以下,使用FPGA的BLOCK RAM實(shí)現(xiàn)的CAM可以高效地完成端口匹配工作。在這個(gè)CAM中,對(duì)不同類型端口同樣分配不同空間位置,由返回地址獲得P2P類型。對(duì)于端口匹配識(shí)別出的具體類型P2P流量,把流標(biāo)識(shí)符寫入TCAM1相應(yīng)的位置,同時(shí)把數(shù)據(jù)包添加類型指示直接送到輸出FIFO中;對(duì)沒有識(shí)別出流量類型的數(shù)據(jù)包,送到傳輸層特征識(shí)別引擎處理。
2.3 傳輸層特征識(shí)別引擎的實(shí)現(xiàn)
  傳輸層特征識(shí)別引擎的實(shí)現(xiàn)框圖如圖3所示。

?


  首先,對(duì)于到達(dá)的每個(gè)數(shù)據(jù)包,按照概率p對(duì)其進(jìn)行抽樣。如果數(shù)據(jù)包被抽樣到,則以“SrcIP +DstIP”作為流標(biāo)志,將該數(shù)據(jù)包所屬的流(設(shè)為F)送往TCP/UDP對(duì)判別模塊。如果檢測(cè)到F中同時(shí)存在活動(dòng)的TCP和UDP連接(活動(dòng)時(shí)間取64s[7]),并且端口不是表1中列出的端口,則判定F為P2P流量,并輸出到凈荷檢測(cè)識(shí)別模塊;如果是表1中端口,則根據(jù)參考文獻(xiàn)[4]中方法進(jìn)一步處理;否則,將F送入(IP,PORT)檢測(cè)模塊。(IP,PORT)檢測(cè)模塊分別統(tǒng)計(jì)與各個(gè)SrcIP通信的DstIP和DstPort的數(shù)量,如果兩者數(shù)量接近,且均遠(yuǎn)大于1,則認(rèn)為該源IP地址所對(duì)應(yīng)的流量為P2P流量。

?


  筆者參考了文獻(xiàn)[7]的算法思想,基于d-left Hash函數(shù)實(shí)現(xiàn)了TCP/UDP連接對(duì)檢測(cè)模塊。采用4個(gè)獨(dú)立的Hash函數(shù),Hash結(jié)果空間大小為210,每個(gè)Hash單元存放8個(gè)(源)IP地址及2bit的狀態(tài)標(biāo)志。IP地址并不直接存放,而是首先對(duì)其進(jìn)行壓縮運(yùn)算,得到一個(gè)長(zhǎng)14bit" title="14bit">14bit的地址標(biāo)號(hào),再將地址標(biāo)號(hào)存放在Hash單元中。這樣,實(shí)現(xiàn)TCP/UDP連接對(duì)檢測(cè)模塊共需要的存儲(chǔ)容量為:
  4×8×210×(14+2)=524 288bit
  對(duì)于所選用的FPGA而言,采用片內(nèi)SRAM即可滿足這一需求。
  (IP,PORT)檢測(cè)模塊基于Bloom Filter的思想實(shí)現(xiàn)。如圖4所示,(IP,PORT)檢測(cè)模塊共維護(hù)10K條統(tǒng)計(jì)表項(xiàng),每條表項(xiàng)在FPGA片外SRAM中對(duì)應(yīng)一個(gè)96bit的存儲(chǔ)區(qū)域。其中有92bit用于Bloom Filter的Hash向量,4bit作為統(tǒng)計(jì)計(jì)數(shù)器。每到達(dá)一個(gè)數(shù)據(jù)包,通過查找其源IP地址統(tǒng)計(jì)項(xiàng)的Hash向量,判斷目的IP地址是否是一個(gè)新地址,如果是則將對(duì)應(yīng)的計(jì)數(shù)器加1。否則更新Bloom Filter的Hash向量。與實(shí)現(xiàn)TCP/UDP連接對(duì)檢測(cè)模塊類似,不直接存儲(chǔ)源IP地址,而是存儲(chǔ)其14bit的壓縮標(biāo)號(hào)。這樣,實(shí)現(xiàn)(IP,PORT)檢測(cè)模塊共需要140KB的FPGA片內(nèi)存儲(chǔ)空間以及(960×2)=1 920KB的片外SRAM存儲(chǔ)空間。比較容易就可以實(shí)現(xiàn)。

?


2.4? 凈荷檢測(cè)識(shí)別的實(shí)現(xiàn)
  凈荷復(fù)雜就會(huì)造成檢測(cè)性能下降,10Gb/s的數(shù)據(jù)難以完全實(shí)現(xiàn)線速檢測(cè)。但是通過上述三個(gè)模塊的處理,送到凈荷檢測(cè)的數(shù)據(jù)包速率大大降低(10%),就可以實(shí)現(xiàn)線速檢測(cè)。
  不同的P2P協(xié)議具有不同的特征[8],表2給出了幾種典型應(yīng)用協(xié)議數(shù)據(jù)區(qū)的判別特征。從不同應(yīng)用協(xié)議的凈荷特征可以看出,絕大部分協(xié)議的報(bào)文特征體現(xiàn)在凈荷開頭的前20字節(jié),少數(shù)協(xié)議的報(bào)文特征還會(huì)體現(xiàn)在凈荷結(jié)尾處的某些字段。用上述固定位置字段的特征信息可以進(jìn)行數(shù)據(jù)包的識(shí)別。

?


  凈荷檢測(cè)識(shí)別引擎如圖5所示,使用FPGA外的TCAM2可以高效地實(shí)現(xiàn)凈荷關(guān)鍵詞的匹配。對(duì)不同凈荷特征分配不同空間,當(dāng)一個(gè)IP包到達(dá),凈荷的匹配比特與TCAM中的表項(xiàng)值比較,如果沒有掩碼的值都匹配了,根據(jù)返回的空間地址可以確定P2P的類型,把未知類型更改為具體類型指示并送到輸出FIFO中,同時(shí)把流標(biāo)識(shí)符寫入TCAM1相應(yīng)的位置;如果沒有匹配成功,則認(rèn)為是未知類型的P2P數(shù)據(jù)包送到輸出FIFO中。

?


  采用多個(gè)凈荷檢測(cè)識(shí)別引擎并行工作的方式,可以提高處理能力。
3 性能分析與測(cè)試
  在Xilinx Virtex-4 LX160 FPGA上綜合P2P識(shí)別引擎在布局布線后的結(jié)果列在表3中。核心邏輯占用了69%的邏輯資源和88%的block RAM。
3.1 吞吐率
  本文設(shè)計(jì)的P2P識(shí)別引擎器件采用Xilinx Virtex-4 LX160 FPGA、IDT 71T75602 SRAM、IDT 75K72100 TCAM。
  對(duì)于實(shí)現(xiàn)在FPGA內(nèi)部的模塊,F(xiàn)PGA的工作時(shí)鐘在125MHz,同時(shí)處理128bit的數(shù)據(jù),這樣可以得出P2P識(shí)別引擎的吞吐率:128bit×125MHz=16Gb/s。完全能夠?qū)崿F(xiàn)10Gb/s的線速處理。
  對(duì)于查表匹配模塊,TCAM工作時(shí)鐘在100MHz,按照每個(gè)最短數(shù)據(jù)包64字節(jié)計(jì)算,查表速率:64×8×100=51.2Gb/s;更新一個(gè)TCAM表項(xiàng)的內(nèi)容需要4個(gè)時(shí)鐘周期,更新速率:51.2/4=12.8Gb/s??梢詫?shí)現(xiàn)對(duì)10Gb/s數(shù)據(jù)的線速處理。
  對(duì)于SRAM模塊,設(shè)鏈路數(shù)據(jù)率為10Gb/s,最小包長(zhǎng)為64字節(jié),則每個(gè)數(shù)據(jù)包的傳輸時(shí)間為51.2ns。SRAM的讀寫周期為4ns,接口位寬32bit。每收到一個(gè)數(shù)據(jù)包,需要讀寫SRAM各三次,共需24ns。那么,還剩余27.2ns用于判斷Bloom Filter的Hash向量的四個(gè)對(duì)應(yīng)位是否為1,并更新計(jì)數(shù)器。滿足本設(shè)計(jì)所選用的FPGA要求,同樣能夠?qū)崿F(xiàn)10Gb/s的線速處理。
  按照流水處理的方式,本文設(shè)計(jì)的引擎可以實(shí)現(xiàn)對(duì)P2P數(shù)據(jù)的線速識(shí)別。
3.2 測(cè)試
  如圖6所示,在測(cè)試時(shí)使用Spirent AX4000測(cè)試儀發(fā)送鏈路速率為10Gb/s包含各種類型流量的數(shù)據(jù)包,識(shí)別引擎對(duì)其中的P2P流量識(shí)別,把識(shí)別的結(jié)果用FPGA中實(shí)現(xiàn)的統(tǒng)計(jì)模塊記錄下來,通過PC觀察結(jié)果。

?


  測(cè)試結(jié)果表明,該引擎可以在10Gb/s速率下完成對(duì)P2P數(shù)據(jù)包的識(shí)別,且準(zhǔn)確率大于95%。但該引擎還有待實(shí)際網(wǎng)絡(luò)流量的測(cè)試。
  本文設(shè)計(jì)的 P2P識(shí)別引擎實(shí)現(xiàn)在高性能路由器中(國(guó)家863計(jì)劃信息技術(shù)領(lǐng)域重大專項(xiàng),大規(guī)模接入?yún)R聚路由器系統(tǒng)性能及關(guān)鍵技術(shù)研究),滿足對(duì)10Gb/s鏈路數(shù)據(jù)中的P2P流量線速識(shí)別。FPGA所具有的大規(guī)模并行處理能力和可編程的靈活性使得該引擎能獲得極高的處理性能,并且通過重新下載配置信息來改變功能,能夠適應(yīng)P2P應(yīng)用的日益變化和性能需求,具有良好的可擴(kuò)展性。


參考文獻(xiàn)
[1] 鄔賀銓. 2007年寬帶世界論壇亞洲會(huì)議.演講稿.
[2] ?SEN S, SPATSCHECK O, WANG D.? Accurate, scalable?in-network identification of P2P traffic using application?signatures. In www, 2004.
[3] ?HAN S H, JAMES W K H. The architecture of NGMON: A passive network monitoring system for high-speed IP networks. Lecture Notes In Computer Science;Vol. 2506,2002.
[4] ?KARARGIANNIS T, BROIDO A, FALOUTSOS M, et al.?Transport layer identification of P2P traffic. In Proceedings ?of ACM SIGCOMM, 2004.
[5] ?ESTAN C, VARGHESE G. New directions in traffic measurement and accounting. SIGCOMM '02, August 19-23,2002, Pittsburgh, Pennsylvania, USA.
[6] ?CLAFFY K, BRAUN H W, POLYZOS G. A parametrizable?methodology for internet traffic flow profiling. In IEEE?JSAC, 1995.
[7] ?BONOMI F, MITZENMACHER M, PANIGRAHY R.?Beyond bloom filters: from approximate membership checks ?to approximate state machines. SIGCOMM’06, September?11–15, 2006, Pisa, Italy.
[8] ?White paper-netflow services and applications http://www.cisco.com/warp/public/cc/pd/iosw/ioft/neflct/tech/napps_wp.%htm.

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請(qǐng)及時(shí)通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。