999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于網(wǎng)絡(luò)處理器的零拷貝技術(shù)

2007-01-01 00:00:00張宇雷
計算機應(yīng)用研究 2007年1期

摘要:通過分析網(wǎng)絡(luò)處理器系統(tǒng)的收發(fā)機制,提出了一種基于網(wǎng)絡(luò)處理器的零拷貝技術(shù)。該技術(shù)不僅實現(xiàn)了在網(wǎng)絡(luò)處理器系統(tǒng)下的零拷貝技術(shù),而且也體現(xiàn)出網(wǎng)絡(luò)處理器中不同數(shù)據(jù)處理層的協(xié)作框架。

關(guān)鍵詞:網(wǎng)絡(luò)處理器;零拷貝

中圖法分類號:TP393文獻標(biāo)識碼:A

文章編號:1001-3695(2007)01-0288-03

隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,網(wǎng)絡(luò)安全越來越受到人們的重視,同時隨著各種網(wǎng)絡(luò)攻擊手段的多元化、復(fù)雜化、智能化,單純依賴傳統(tǒng)的操作系統(tǒng)加固技術(shù)和防火墻隔離技術(shù)等靜態(tài)防御已難以勝任網(wǎng)絡(luò)安全的需要。IDS作為動態(tài)安全技術(shù)之一,提供了實時的入侵檢測,并能作出記錄、報警、阻斷等反應(yīng),提供了更為積極的防御手段。 大多數(shù)網(wǎng)絡(luò)入侵檢測系統(tǒng)(NIDS)是以通用的包獲取庫來獲取網(wǎng)絡(luò)上的報文,如Snort利用Libpcap庫。Libpcap庫對于應(yīng)用到NIDS這樣要求高速數(shù)據(jù)獲取,它的效率并不能滿足需要。同時傳統(tǒng)網(wǎng)卡工作方式依靠從網(wǎng)絡(luò)上抓包,再從網(wǎng)卡拷貝到上層系統(tǒng),拷貝過程也要大量占用CPU資源,造成了整體性能下降。零拷貝技術(shù)可以減少數(shù)據(jù)拷貝和共享總線操作的次數(shù),消除通信數(shù)據(jù)在存儲器之間不必要的中間拷貝過程,有效地提高通信效率,是設(shè)計高速接口通道、實現(xiàn)高速服務(wù)器和路由器的關(guān)鍵技術(shù)之一。

隨著高速局域網(wǎng)和光纖通信等新技術(shù)的應(yīng)用,對網(wǎng)絡(luò)性能和流量帶寬提出了越來越高的要求。而傳統(tǒng)的基于通用處理器(GPP)的NIDS,由于本身GPP的處理能力及體系結(jié)構(gòu)等因素的限制,從而制約了NIDS向千兆級的發(fā)展。而基于硬件電路ASIC等方式的硬件IDS不夠靈活、成本高,難以得到廣泛的使用。 網(wǎng)絡(luò)處理器是系統(tǒng)設(shè)計從ASIC轉(zhuǎn)向可編程應(yīng)用系統(tǒng)設(shè)計出現(xiàn)的產(chǎn)物,它的軟件可編程能力提供了高度靈活性,在硬件上對分組處理流程進行了優(yōu)化,可以滿足線速處理要求,并且硬件上實現(xiàn)了很多原來主要是由GPP負(fù)責(zé)完成的控制與管理功能,從而滿足了高性能的需求。現(xiàn)在已逐漸成為人們進行高性能網(wǎng)絡(luò)應(yīng)用開發(fā)的重要選擇方案之一。本文是以網(wǎng)絡(luò)處理器IXP2400為開發(fā)平臺,以Intel IXA SDK,Monta Vista Linux為軟件開發(fā)環(huán)境,提出一種零拷貝技術(shù)的實現(xiàn)方案。零拷貝技術(shù)的研究工作主要涉及到數(shù)據(jù)的傳輸途徑、傳輸控制、緩沖區(qū)管理機制、地址變換和地址空間的保護機制等設(shè)計問題。本文通過對IXP2400網(wǎng)絡(luò)處理器的硬件結(jié)構(gòu)的簡述,以及對該環(huán)境下數(shù)據(jù)包的收發(fā)機制、數(shù)據(jù)包與內(nèi)核空間的交互機制及用戶空間存取內(nèi)核空間數(shù)據(jù)機制三方面的論述,闡述基于網(wǎng)絡(luò)處理器下的零拷貝技術(shù)的原理,并且給出實現(xiàn)的具體技術(shù)。

1基于網(wǎng)絡(luò)處理器零拷貝技術(shù)的研究

1.1網(wǎng)絡(luò)處理器IXP2400簡述

IXP2400網(wǎng)絡(luò)處理器中采用了與通用處理器不同的全新體系結(jié)構(gòu),以適應(yīng)當(dāng)今網(wǎng)絡(luò)設(shè)備設(shè)計的需求。其中主要的結(jié)構(gòu)模塊有:①一個XScale Core,它主要用來處理控制層面的工作;②八個微引擎(ME),它們主要用于處理數(shù)據(jù)層面的工作;③SRAM 單元和DRAM 單元,它們?yōu)椴煌愋偷耐獠看鎯ζ鳎虎躆SF(Media Switch Fabric), 它是支持多種工業(yè)接口并提供一個數(shù)據(jù)包進出的高速外部數(shù)據(jù)總線;⑤PCI 控制器,用于連接主機處理器或外部設(shè)備,可提供與管理層面的通信接口;⑥SHac 單元,它包括一個小容量的快速片內(nèi)Scratchpad存儲器、片級控制狀態(tài)寄存器CSR和一個Hash運算器。其中Hash運算器是用來實現(xiàn)網(wǎng)絡(luò)處理中常用的Hash運算。所有這些結(jié)構(gòu)模塊可以通過總線相互通信。

IXP2400網(wǎng)絡(luò)處理器的體系結(jié)構(gòu)具有以下突出特點:

(1)并行處理器結(jié)構(gòu)。八個微引擎都是可編程RISC處理器,它們并行工作,并且擁有各自的控制存儲器和局部寄存器,對于外部存儲器的訪問機會均等,主要負(fù)責(zé)數(shù)據(jù)層面的處理;XScale則是符合ARM規(guī)范的Strong ARM,主要負(fù)責(zé)控制層面和上層應(yīng)用程序的處理,它的顯著特點是高性能、低功耗和緊湊設(shè)計,這使得它與其他專用的可執(zhí)行單元可以集成在一個芯片中。這樣在硬件設(shè)計上將控制與數(shù)據(jù)處理進行分離,提高了并行處理能力。

(2)分布式多級數(shù)據(jù)存儲結(jié)構(gòu)。采用了分布式數(shù)據(jù)存儲,四種類型存儲器(Local Memory,Scrachpad,SRAM,DRAM)兼顧了差別各異的網(wǎng)絡(luò)數(shù)據(jù)處理的靈活性和高性能;其中對SRAM和DRAM的訪問使用專用的讀寫寄存器實現(xiàn),簡化了編程模型。同時,SRAM和DRAM均支持多個讀寫隊列進行優(yōu)先級排隊,以優(yōu)化帶寬。

(3)微引擎內(nèi)部優(yōu)化。微引擎的高性能和可擴充性是通過多處理器、多線程和軟件的流水線機制來實現(xiàn)的,其中每個微引擎可支持八個線程并行處理,并且由硬件實現(xiàn)線程切換,實現(xiàn)了線程切換零時延。此外,微引擎特殊的硬件體系結(jié)構(gòu)可以支持高性能的數(shù)據(jù)平面的處理而無須核心處理器的干預(yù)。

1.2數(shù)據(jù)包的收發(fā)機制

網(wǎng)絡(luò)數(shù)據(jù)包的接收、發(fā)送由MSF及ME完成,它們可以高速地接收與發(fā)送數(shù)據(jù)包。MSF以Mpacket為單位接收從外界傳來的數(shù)據(jù)包,將Mpacket存入接收緩沖區(qū)(RBUF)內(nèi),ME從RBUF中讀取Mpacket, 通過實現(xiàn)一個狀態(tài)機而將SOP, MOP,EOP Mpackets進行有序的重組。在Mpacket組包過程中,當(dāng)每次組包充滿一個DRAM中的單位緩沖區(qū)時(本系統(tǒng)采用的緩沖區(qū)大小為2KB),將對應(yīng)生成的一個緩沖區(qū)描述符放入SRAM中。當(dāng)接收到每個數(shù)據(jù)包的SOP包時,將生成的一個數(shù)據(jù)包描述符存放在SRAM中。緩沖區(qū)描述符指向數(shù)據(jù)包描述符在SRAM中的位置,數(shù)據(jù)包描述符記錄了數(shù)據(jù)包在DRAM中的位置及數(shù)據(jù)包的類型。DRAM中以緩沖區(qū)為存放數(shù)據(jù)包的單位,其大小可以由軟件指定。當(dāng)數(shù)據(jù)包較大需要多個緩沖區(qū)時,數(shù)據(jù)包描述符中的Next Buffer數(shù)據(jù)項指向同一數(shù)據(jù)包的下一個緩沖區(qū)的位置。緩沖區(qū)描述符、數(shù)據(jù)包描述符及Packet Data的指向關(guān)系及存放位置如圖1 所示。

在數(shù)據(jù)處理的過程中,ME之間通過傳遞緩沖區(qū)描述符來實現(xiàn)數(shù)據(jù)包的傳遞。發(fā)送是一個逆向的過程。在系統(tǒng)中,緩沖區(qū)描述符及數(shù)據(jù)包描述符的傳遞是通過Scrachpad的隊列機制實現(xiàn)高效地通信。

1.3收發(fā)機制與上層系統(tǒng)的交互

作為一個嵌入式系統(tǒng),在XScale上運行嵌入式操作系統(tǒng)Monta Vista Linux,ME,SDRAM和SRAM及其他硬件均為系統(tǒng)下的設(shè)備。ME接收完數(shù)據(jù)包并要將其交付上層系統(tǒng)處理時,通過觸發(fā)中斷,將數(shù)據(jù)包的第一個緩沖區(qū)描述符交于Linux內(nèi)核,內(nèi)核再根據(jù)緩沖區(qū)描述符計算數(shù)據(jù)包的物理地址。實現(xiàn)零拷貝技術(shù)需將數(shù)據(jù)包映射到用戶空間,以避免數(shù)據(jù)包內(nèi)的拷貝,從而使用戶空間可以直接讀寫數(shù)據(jù)包。當(dāng)數(shù)據(jù)包處理完成之后,用戶進程通過一簡單的模塊機制調(diào)用內(nèi)核函數(shù),并將數(shù)據(jù)包傳遞給ME,由ME完成數(shù)據(jù)包的發(fā)送。

數(shù)據(jù)包可能同時被ME或XScale存取,因此必須實現(xiàn)同步機制。在內(nèi)核空間,可通過隊列機制進行數(shù)據(jù)包的同步:

RxQ——接收環(huán)形隊列的描述符,它記錄了接收環(huán)形隊列的頭尾指針。

Rxbuf——接收環(huán)形隊列,存放由ME傳上來的數(shù)據(jù)包緩沖區(qū)描述符。

TxQ——發(fā)送環(huán)形隊列的描述符,它記錄了發(fā)送環(huán)形隊列的頭尾指針。

Txbuf——發(fā)送環(huán)形隊列,存放由用戶層處理完的需交付ME發(fā)送的數(shù)據(jù)包緩沖區(qū)描述符。

在此數(shù)據(jù)結(jié)構(gòu)上有兩個操作:入隊操作(Enqueue),將數(shù)據(jù)包的緩沖區(qū)描述符存放在Rxbuf/Txbuf中,并修改RxQ/TxQ的頭指針。通過隊列機制,可以實現(xiàn)ME與XScale數(shù)據(jù)包收發(fā)的同步機制。以上數(shù)據(jù)結(jié)構(gòu)存放在同一內(nèi)存頁中,方便后面的內(nèi)存映射。

1.4Linux下的用戶空間存取內(nèi)核空間機制

上一節(jié)中的RxQ,RxBuf,TxQ,TxBuf及數(shù)據(jù)包均在內(nèi)核層空間內(nèi)。實現(xiàn)零拷貝必須給用戶層空間提供存取內(nèi)核空間的方便接口。

Linux提供了用戶層直接讀取內(nèi)核層數(shù)據(jù)的機制。Linux內(nèi)存管理采用三層頁式存儲管理策略。通過內(nèi)存映射技術(shù),采用內(nèi)核模塊編程,將內(nèi)核空間或設(shè)備內(nèi)存映射至用戶進程虛擬地址空間。本文需要映射兩部分內(nèi)存,即

(1)維護數(shù)據(jù)包收發(fā)同步的RxQ,RxBuf,TxQ,TxBuf數(shù)據(jù)結(jié)構(gòu)映射至用戶空間。由于Remap_page_range方法只能給予對保留的頁和物理內(nèi)存之上的物理地址的訪問,故這部分內(nèi)存空間由Vmalloc分配,其大小為一頁(4KB),使用VMA的Nopage方法將其映射至應(yīng)用層的地址空間。Nopage方法的原理是當(dāng)用戶調(diào)用設(shè)備Mmap,用戶進程只是得到虛擬地址。當(dāng)用戶進程真正訪問虛擬地址,操作系統(tǒng)會調(diào)用Nopage方法進行缺頁處理。

(2)數(shù)據(jù)包的映射至用戶進程。用戶進程通過讀取RxQ,RxBuf,TxQ,TxBuf可以獲得數(shù)據(jù)包的物理地址及其大小。由于屬于設(shè)備內(nèi)存,用Remap_page_rage將數(shù)據(jù)包直接映射到用戶進程地址空間。每個數(shù)據(jù)包大小為2KB,通過讀取RxQ,RxBuf,TxQ,TxBuf一次可以映射多個數(shù)據(jù)包。

1.5網(wǎng)絡(luò)處理器零拷貝原理及與傳統(tǒng)技術(shù)的比較

1.5.1原理

基于網(wǎng)絡(luò)處理器系統(tǒng)的零拷貝技術(shù)結(jié)構(gòu)如圖2所示。

MSF接收數(shù)據(jù)包,ME完成組包并在SRAM,SDRAM中分別建立與數(shù)據(jù)包相關(guān)的數(shù)據(jù)結(jié)構(gòu)緩沖區(qū)描述符、數(shù)據(jù)包描述符,ME將需要交付上層處理的數(shù)據(jù)包通過激發(fā)中斷,將數(shù)據(jù)包的緩沖區(qū)描述符傳遞至內(nèi)核空間,內(nèi)核空間通過緩沖區(qū)描述符獲得數(shù)據(jù)包的物理地址,通過內(nèi)存映射技術(shù)將數(shù)據(jù)包物理地址遞交用戶進程。用戶進程直接讀寫數(shù)據(jù)包實現(xiàn)數(shù)據(jù)包從收發(fā)設(shè)備至用戶進程的零拷貝。

1.5.2比較

基于通用處理器的零拷貝技術(shù)與基于網(wǎng)絡(luò)處理器的零拷貝技術(shù)相比:前者首先利用DMA技術(shù)將網(wǎng)絡(luò)數(shù)據(jù)包直接傳遞到系統(tǒng)內(nèi)核預(yù)先分配的地址空間中,避免CPU的參與;同時,將系統(tǒng)內(nèi)核中存儲數(shù)據(jù)包的內(nèi)存區(qū)域映射到檢測程序的應(yīng)用程序空間。檢測程序直接對這塊內(nèi)存進行訪問,從而減少了系統(tǒng)內(nèi)核向用戶空間的內(nèi)存拷貝,同時減少了系統(tǒng)調(diào)用的開銷,但傳統(tǒng)的零拷貝技術(shù)系統(tǒng)每次調(diào)用只能獲取一個數(shù)據(jù)包,而抓包能力由于軟件的限制而不能充分發(fā)揮硬件的優(yōu)勢。而在網(wǎng)絡(luò)處理器系統(tǒng)中,ME接收數(shù)據(jù)包并將其存入SDRAM中,在SRAM中建立數(shù)據(jù)包地址的描述信息,并將描述信息傳遞給內(nèi)核,之后內(nèi)核獲得數(shù)據(jù)包物理地址后用與前者同樣的機制交予用戶進程。數(shù)據(jù)包的收發(fā)過程均由ME完成,XScale沒有參與,XScale的主要工作集中在用戶進程收到數(shù)據(jù)包之后對數(shù)據(jù)包的分析階段。在這個過程中,數(shù)據(jù)包沒有任何拷貝行為。當(dāng)數(shù)據(jù)包較大占據(jù)一個以上緩沖區(qū),盡管物理地址不連續(xù),但仍然可以將數(shù)據(jù)包映射到用戶進程的連續(xù)虛擬進程空間。另外,由于引入了隊列機制,每次系統(tǒng)調(diào)用均可以處理多個數(shù)據(jù)包,具有較高的效率。

2實現(xiàn)

2.1微碼編程

微碼為符號化的編程語言,類似于通用處理器的匯編語言。它沒有指針和函數(shù)的概念,可以通過宏提高代碼的效率及可重用性。微碼運行采用多級流水線機制,同時可以利用硬件多線程及信號機制實現(xiàn)線程同步,以提高系統(tǒng)效率。本文中微碼完成數(shù)據(jù)包的收發(fā),將數(shù)據(jù)包提交XScale。以下微碼代碼為完成數(shù)據(jù)包提交工作(省略收發(fā)代碼及ME進程切換代碼):

//將Buffer Descriptor寫入事先約定的存儲位置

alu[$excep_lw0, ,b, packet_buffer_handle]

scratch[put, $excep_lw0, ring, 0,2]

//觸發(fā)中斷

cap[fast_wr, 0, XSCALE_INT_A]

2.2Linux內(nèi)核編程

(1)使用Nopage方法,將RxQ,RxBuf,TxQ,TxBuf數(shù)據(jù)結(jié)構(gòu)映射至用戶空間。Nopage代碼只需由虛擬地址獲得物理頁為

struct page *rtx_page_vma_nopage( struct vm_area_struct *vma,unsigned long address, int write_access)

{

Struct page *pageptr;

Unsigned long phyaddr = addressvma>vm_start +VMA_OFFSET(vma);

Pageptr =virt_to_page(_va(phyaddr));

Get_page(pageptr);

Return pageptr;

} 

(2)使用Remap_page_ragne將數(shù)據(jù)包映射至用戶空間。首先,通過調(diào)用運行在內(nèi)核空間的IXA SDK函數(shù)庫來獲取數(shù)據(jù)包的緩沖區(qū)描述符,并將其寫入RxBuf,同時更新RxQ。

// 數(shù)據(jù)包Buffer Descriptor

ix_buffer_handle arg_hBuffer;

enqueue(RxBuf,RxQ,arg_hBuffer);

其次,讀取隊列中的緩沖區(qū)描述符。獲得數(shù)據(jù)包的物理地址,調(diào)用Remap_page_range將數(shù)據(jù)包映射至用戶進程,每個數(shù)據(jù)包大小都是2KB的整數(shù)倍,一個數(shù)據(jù)包可能由幾個2KB空間組成(邊界檢查及出錯處理均未列出)。

int pkt_remap_mmap(struct file *flip,struct vm_area_struct *vma)

{

dequeue(RxBuf,RxQ,arg_hBuffer);

phyaddr=Ixa_get_phyaddr(arg_hBuffer);

remap_page_range(vma>start,phyaddr,2048,vma>vm_page_prot);

vma>vm_ops = pkt_remap_vm_ops;

return 0;

}

2.3用戶進程處理數(shù)據(jù)包

打開/dev/mem設(shè)備(相當(dāng)于物理內(nèi)存),使用Mmap首先將RxQ,RxBuf,TxQ,TxBuf數(shù)據(jù)結(jié)構(gòu)映射至用戶空間中處理完后所映射好的網(wǎng)絡(luò)數(shù)據(jù)包,將數(shù)據(jù)包緩沖區(qū)描述符寫入Tx_buf并更新TxQ,同時將其發(fā)送至ME(由IXASDK支持)。

Enqueue(TxBuf,TxQ,arg_hBuffer);

SendtoMe(TxBuf,TxQ).

3結(jié)束語

本文結(jié)合網(wǎng)絡(luò)處理器系統(tǒng)的特性,實現(xiàn)了零拷貝技術(shù),解決了在千兆級流量下IDS系統(tǒng)抓包的瓶頸。該技術(shù)體現(xiàn)了在網(wǎng)絡(luò)處理器系統(tǒng)下,快速數(shù)據(jù)處理層與上層處理系統(tǒng)的協(xié)作方式。在網(wǎng)絡(luò)處理器系統(tǒng)下,處理功能主要由ME完成,如ME將事先對數(shù)據(jù)包作分類并預(yù)處理,提交數(shù)據(jù)包給XScale。由XScale進行更復(fù)雜的分析,一方面可以使用現(xiàn)有的眾多的基于傳統(tǒng)PC體系結(jié)構(gòu)的軟件,同時發(fā)揮網(wǎng)絡(luò)處理器處理數(shù)據(jù)的高效性,以共同保護系統(tǒng)的安全。

參考文獻:

[1]可向民.零拷貝技術(shù)及其實現(xiàn)的研究[J] .計算機工程與科學(xué),2000,(5):1720.

[2]Intel Corp.IXP2400 Hardware Reference Manual[R]. 2003.

[3]Intel Corp.IXP2400 Programmer’s Reference Manual[R].20-04.

[4]Intel Corp Intel Internet Exchange Architecture[R].2003.

[5]Intel Corp Intel Internet Exchange Architecture Software Building Block Applications[R].2003.

[6]王佰玲.零拷貝報文捕獲平臺的研究與實現(xiàn)[J].計算機學(xué)報,2005,(1):4651.

作者簡介:

張宇雷,碩士研究生,研究方向為計算機網(wǎng)絡(luò)與安全;黃皓,教授,博導(dǎo),研究方向為計算機網(wǎng)絡(luò)與安全、分布式計算。

注:本文中所涉及到的圖表、注解、公式等內(nèi)容請以PDF格式閱讀原文

主站蜘蛛池模板: 久久精品中文字幕少妇| 国产成人三级| 精品国产欧美精品v| 亚洲国产精品美女| 亚洲天堂首页| 久久五月视频| 日本福利视频网站| 97超碰精品成人国产| 国模粉嫩小泬视频在线观看| 精品无码一区二区三区在线视频| 99久久99这里只有免费的精品| 亚洲国产综合精品一区| 女人18毛片一级毛片在线 | 国产又黄又硬又粗| 国产精品永久免费嫩草研究院| 久久国产精品影院| 免费A级毛片无码无遮挡| 国产成人欧美| 中文国产成人久久精品小说| 欧美成人国产| 亚洲午夜久久久精品电影院| 欧美日韩亚洲综合在线观看| 久久久久久久久亚洲精品| 欧美日韩国产成人高清视频| 欧美日韩国产在线播放| 久久综合成人| 国产成人亚洲毛片| 天天色天天操综合网| 国产一区三区二区中文在线| 欧美亚洲日韩中文| 欧美激情伊人| 免费无遮挡AV| 国产美女自慰在线观看| 国产精品视频a| 97综合久久| 亚洲人成日本在线观看| 亚洲色精品国产一区二区三区| 亚洲免费毛片| 91亚洲视频下载| 国产欧美精品一区二区| 麻豆国产精品视频| 久久国产成人精品国产成人亚洲| 国产自视频| 亚洲精品视频在线观看视频| 伊人福利视频| 免费可以看的无遮挡av无码| 精品国产网| 色天天综合久久久久综合片| 无码内射中文字幕岛国片| 思思热在线视频精品| 91国内在线视频| 国产精品浪潮Av| 国产香蕉国产精品偷在线观看| 一本色道久久88| 欧美成人精品高清在线下载| 亚洲永久免费网站| 亚洲色图欧美视频| 亚洲人成高清| 亚洲日产2021三区在线| 毛片卡一卡二| 色噜噜在线观看| 久久人妻系列无码一区| 人妻免费无码不卡视频| 久久成人免费| 9966国产精品视频| 99re这里只有国产中文精品国产精品 | 中文国产成人久久精品小说| 国产一级毛片网站| 国产成人福利在线视老湿机| 精品国产网| 日本午夜视频在线观看| 8090成人午夜精品| 欧美成人a∨视频免费观看| 2021国产精品自拍| 暴力调教一区二区三区| 亚洲中文精品人人永久免费| 美女被操黄色视频网站| 91久久国产综合精品女同我| 亚洲无码视频图片| 天天综合天天综合| 国产亚洲高清视频| 中文字幕中文字字幕码一二区|