網(wǎng)絡(luò)處理器軟件開發(fā)模型的研究_第1頁(yè)
網(wǎng)絡(luò)處理器軟件開發(fā)模型的研究_第2頁(yè)
網(wǎng)絡(luò)處理器軟件開發(fā)模型的研究_第3頁(yè)
網(wǎng)絡(luò)處理器軟件開發(fā)模型的研究_第4頁(yè)
網(wǎng)絡(luò)處理器軟件開發(fā)模型的研究_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、網(wǎng)絡(luò)處理器軟件開發(fā)模型的研究     摘要:網(wǎng)絡(luò)處理器的高速處理和靈活的可編程性,使它成為當(dāng)今網(wǎng)絡(luò)中數(shù)據(jù)處理的有效解決方案。本文深入探討網(wǎng)絡(luò)處理器的軟件開發(fā)模型。首先,介紹Intel IXP2400網(wǎng)絡(luò)處理器硬件結(jié)構(gòu)和軟件開發(fā)平臺(tái),然后給出基于網(wǎng)絡(luò)處理器的路由轉(zhuǎn)發(fā)系統(tǒng)的設(shè)計(jì)實(shí)例,闡述網(wǎng)絡(luò)處理器開發(fā)的關(guān)鍵環(huán)節(jié),最后提出網(wǎng)絡(luò)處理器軟件開發(fā)所面臨的主要問題和挑戰(zhàn)。    關(guān)鍵詞:網(wǎng)絡(luò)處理器 軟件開發(fā)模型 微引擎 微模塊 核心組件引言隨著當(dāng)今網(wǎng)絡(luò)規(guī)模和性能迅速增長(zhǎng),Internet主干網(wǎng)絡(luò)流量的指數(shù)性增長(zhǎng)及新業(yè)務(wù)接連的出現(xiàn),這就要求

2、網(wǎng)絡(luò)設(shè)備具有線速和智能的處理能力。網(wǎng)絡(luò)處理器NP(Network Processor)便是一種新興、有效的統(tǒng)一解決方案。它適用于各層網(wǎng)絡(luò)處理,具有ASIC高速處理性能和可編程特性,既能保證系統(tǒng)靈活性,又能完成線速處理數(shù)據(jù)包所要求的高性能硬件功能。目前,網(wǎng)絡(luò)處理器已經(jīng)涌現(xiàn)出了一些成功的應(yīng)用范例。這些應(yīng)用主要包括:基于網(wǎng)絡(luò)處理器的路由交換設(shè)備、智能安全設(shè)備和入侵檢測(cè)設(shè)備等。比如,北京聯(lián)想使用IBM的PowerNP構(gòu)成了電信級(jí)的防火墻設(shè)備。與此同時(shí),圍繞著網(wǎng)絡(luò)處理器應(yīng)用展開的相關(guān)研究也得到了飛速發(fā)展,一些企業(yè)和科研機(jī)構(gòu)也給予了足夠重視。例如,Intel專門投資支持全球100所大學(xué)進(jìn)行網(wǎng)絡(luò)處理器及其相

3、關(guān)應(yīng)用的研究。由于網(wǎng)絡(luò)處理器特殊的體系結(jié)構(gòu),它的軟件編程模型與傳統(tǒng)網(wǎng)絡(luò)應(yīng)用/嵌入式應(yīng)用開發(fā)有較大不同,更為復(fù)雜。本文將以Intel IXP2400網(wǎng)絡(luò)處理器為例,對(duì)網(wǎng)絡(luò)處理器軟件開發(fā)模型進(jìn)行較為詳細(xì)地探討。1 網(wǎng)絡(luò)處理器硬件架構(gòu)在一般程序設(shè)計(jì)中,可以不考慮操作系統(tǒng)和編譯程序、線程調(diào)度的細(xì)節(jié)、寄存器的數(shù)量和容量,而在網(wǎng)絡(luò)處理器的程序設(shè)計(jì)中,忽略這些因素就不能編寫出優(yōu)化的程序。在對(duì)網(wǎng)絡(luò)處理器,尤其是微引擎編程之前,需要仔細(xì)了解網(wǎng)絡(luò)處理器的系統(tǒng)結(jié)構(gòu)和硬件平臺(tái)。下面以Intel的IXP2400為例來(lái)說(shuō)明。IXP2400網(wǎng)絡(luò)處理器是Intel在2002年推出的第二代互聯(lián)網(wǎng)交換架構(gòu)(IXA)網(wǎng)絡(luò)處理器。其

4、中,IXP2400是面向中高端應(yīng)用的網(wǎng)絡(luò)處理器,可用于實(shí)現(xiàn)OC-48的網(wǎng)絡(luò)路由交換設(shè)備。    Intel的IXP2400網(wǎng)絡(luò)處理器結(jié)構(gòu)允分體現(xiàn)了SoC(System on Chip)的思想。如圖1所示,它的內(nèi)部主要包括8個(gè)完全可編程的4線程微引擎(Mev2)和1個(gè)XScale核。此外,還有用于連接外部MAC設(shè)備的MSF單元、連接各種存儲(chǔ)器和總線的接口單元等。這些單元通過(guò)內(nèi)部的高速數(shù)據(jù)總線和控制總線彼些協(xié)作。IXP2400中的每一個(gè)微引擎其它就是一個(gè)32位RISC處理器,可以由4個(gè)并行硬件線程共享。數(shù)據(jù)包的接收、處理和發(fā)送等任務(wù),均由微引擎中的各線程并行執(zhí)行微引擎

5、指令存儲(chǔ)區(qū)中的微代碼程序來(lái)完成。網(wǎng)絡(luò)處理器數(shù)據(jù)的高速轉(zhuǎn)發(fā)正是因?yàn)槌浞掷昧擞布牟⑿行裕瑏?lái)彌補(bǔ)線速轉(zhuǎn)發(fā)中的內(nèi)存訪問的延遲。IXP2400嵌在開發(fā)板的中心,周圍通過(guò)數(shù)據(jù)線連接著各種設(shè)備,如SRAM,SDRAM等。SDRMA主要用來(lái)存放需要處理和轉(zhuǎn)發(fā)的數(shù)據(jù)包等,也作為XScale核的內(nèi)存;SRAM主要存放對(duì)數(shù)據(jù)包包頭進(jìn)行處理所需的重要信息和數(shù)據(jù)包的隊(duì)列描述等內(nèi)容。通過(guò)IXP2400的數(shù)據(jù)單元是一個(gè)64字節(jié)的MAC包(MPKT),在每收到一個(gè)包的時(shí)候,MAC將一個(gè)數(shù)據(jù)分成若干個(gè)MPKT,MPKT就是網(wǎng)絡(luò)處理器處理數(shù)據(jù)的單位。綜上所述,IXP2400擁有網(wǎng)絡(luò)處理的一般特點(diǎn),從系統(tǒng)角度看,IXP2400

6、屬于一個(gè)并行式的多算是器共享總線的計(jì)算機(jī)系統(tǒng)。對(duì)于網(wǎng)絡(luò)處理器的程序設(shè)計(jì)和一般計(jì)算機(jī)的程序設(shè)計(jì)有很大不同。2 網(wǎng)絡(luò)處理器軟件開發(fā)模型網(wǎng)絡(luò)設(shè)備性能和可編程能力最終由運(yùn)行在網(wǎng)絡(luò)處理器平臺(tái)上的軟件決定,其中,選擇何種編程模式是關(guān)鍵。評(píng)價(jià)網(wǎng)絡(luò)處理器編程模式有兩個(gè)基本準(zhǔn)則:一個(gè)是編程模式所能涉及的層,即哪些功能能夠編程以及編程能達(dá)到的層;另一個(gè)重要方面就是處理器襯淫的編程模型。由于網(wǎng)絡(luò)處理器平臺(tái)服務(wù)于軟件功能需要,所以編程方法的關(guān)鍵是在不犧牲設(shè)備性能的前提下,使用成熟技術(shù)和現(xiàn)有軟件模式,保證產(chǎn)品的可靠性,加快開發(fā)速度?;谶\(yùn)行在核心處理器和協(xié)處理器的不同硬件之上,網(wǎng)絡(luò)處理器可分成數(shù)據(jù)平面與控制平臺(tái)。

7、60;   IXP2400的軟件開發(fā)也分為內(nèi)核程序和微代碼兩部分。XScale內(nèi)核的開發(fā)通常可以使用基于ARM平臺(tái)嵌入式操作系統(tǒng)開發(fā)工具鏈,如WindRiver公司的Tornado或基于GNU的Linux工具鏈等;另一部分是對(duì)微引擎的編程,這部分使用Intel公司提供的Developer Workbench開發(fā)環(huán)境,主要使用微代碼來(lái)進(jìn)行編程。Developer Workbench提供了完善的編譯、鏈接、仿真和調(diào)試功能。為了方便開發(fā)人員開發(fā),消除平面之間通信等一些細(xì)節(jié),Intel提供了它的網(wǎng)絡(luò)處理器開發(fā)模型,稱為IXA可移植框架(portability framework)如

8、圖2所示。Intel IXA可移植框架中最重要的組成部分就是在微引擎上和XScale核上開發(fā)的代碼模型?;诓煌布祥_發(fā)的代碼模塊分別為微模塊(microblock)和核心組件(core component)。每一個(gè)模塊都代表了一個(gè)進(jìn)行包處理的代碼單元。這里實(shí)際上引入了構(gòu)件的思想,開發(fā)人員將各種模塊以一定的順序組織在一起,組成一個(gè)特定的應(yīng)用。下面分別對(duì)框架中的各個(gè)層次進(jìn)行討論。(1)微模塊(2)核心組件(3)微引擎數(shù)據(jù)平面優(yōu)化庫(kù)微引擎數(shù)據(jù)平面優(yōu)化庫(kù)(optimized microengine data plane library)包括一些底層的微引擎宏指令和用微引擎的特殊C語(yǔ)言寫的函數(shù)庫(kù),用

9、來(lái)編寫微模塊和一些微引擎的代碼。這些為是經(jīng)過(guò)Intel優(yōu)化的,非常高效,代碼的占用小,同時(shí)也是非常底層的。庫(kù)主要包含三信方面:對(duì)處理器硬件單元的操作,比如對(duì)微引擎內(nèi)部的本地內(nèi)存(local memory)、臨界區(qū)(critical sections)操作等;協(xié)議頭的解析函數(shù),如IPv4、IPv6協(xié)議等;哈希單元的查找,CRC等。(4)微模塊基本設(shè)施庫(kù)微模塊基本設(shè)施庫(kù)(microblocks infrastructure library)提供了訪問暫存包描述符的API,Dispatch Loop的實(shí)現(xiàn)是通過(guò)它來(lái)完成的。一個(gè)Dispatch Loop將運(yùn)行在一個(gè)微引擎內(nèi)部線程之間的多個(gè)微模塊組成一

10、個(gè)microblock組。關(guān)鍵的地方是,Dispatch Loop提供了一種多個(gè)微模塊之間高效共享包的描述符、包頭信息等重要數(shù)據(jù)結(jié)構(gòu)的方式,實(shí)現(xiàn)了多個(gè)微模塊間的數(shù)據(jù)傳遞。Dispatch Loop也提供了向其它Dispatch Loop也提供了向其它Dispatch Loop和XScale核之間發(fā)送和接收包的接口。(6)核心組件基本設(shè)施庫(kù)核心組件基本設(shè)施庫(kù)(core components infrastructurelibrary)為XScale核心組件設(shè)計(jì)和構(gòu)造提供了一些底層的API,同時(shí)也提供了組件之間傳遞包和消息的機(jī)制。其于核心組件基本設(shè)施庫(kù)的一個(gè)核心組件一般都要包含以下函數(shù):1個(gè)初始化

11、函數(shù);1個(gè)結(jié)束函數(shù);1個(gè)或多個(gè)包的處理名句柄;1個(gè)或多個(gè)消息處理句柄。(7)操作系統(tǒng)服務(wù)層(8)控制平面平臺(tái)開發(fā)工具包控制平面的PDK(Platform Development Kit)為XScale核心組件與運(yùn)行控制平面的軟件之間提供了接口。它所提供的API編程接口現(xiàn)在是符合國(guó)際網(wǎng)絡(luò)處理器論壇(NPF)提出的標(biāo)準(zhǔn)的,各種控制平面的網(wǎng)絡(luò)協(xié)議棧和用它可以很方便的集成進(jìn)來(lái)。3 網(wǎng)絡(luò)處理器應(yīng)用實(shí)例利用Intel IXA可移植框架來(lái)實(shí)現(xiàn)Intel IXP2400的一個(gè)簡(jiǎn)單路由轉(zhuǎn)發(fā)系統(tǒng)。數(shù)據(jù)分組在IXP2400中的流動(dòng)過(guò)程如下:以太網(wǎng)MAC器件接收數(shù)據(jù),放入MSD單元的接收緩存當(dāng)中,向微引擎發(fā)出信號(hào),表

12、示數(shù)據(jù)已經(jīng)收到,微引擎將接收緩存中數(shù)據(jù)傳輸?shù)絊DRAM,微引擎通過(guò)對(duì)MSF總線單元的訪問命令將前幾個(gè)字節(jié)(分組頭)傳送到傳輸寄存器中,微引擎對(duì)分組的以太網(wǎng)頭進(jìn)行修改,而將數(shù)據(jù)分組寫入發(fā)送隊(duì)列,然后通知MSF單元將數(shù)據(jù)分組傳送給適當(dāng)?shù)腗AC器件。圖3所示為典型路由器應(yīng)用系統(tǒng)中的數(shù)據(jù)流。在圖3所示的處理轉(zhuǎn)發(fā)結(jié)構(gòu)中,每一個(gè)模塊代表一個(gè)微模塊。發(fā)送和接收模塊和MSF硬件緊密相關(guān)。處理器芯片的MSF總線接口單元中有一對(duì)BUFFER,即輸入BUFFER和輸出BUFFER,分別用作接收和發(fā)送的緩沖區(qū)。開發(fā)者通過(guò)用這些相應(yīng)的硬件寄存器,硬件設(shè)備可自動(dòng)進(jìn)行相應(yīng)的轉(zhuǎn)發(fā)處理。>" 

13、0;  接收線程將自己的信息寫入MSF的FREELIST單元控制豁口,其中包括了線程號(hào)、微引擎號(hào)與存放接收控制字(RSW)的寄存器地址,等待MSF的信號(hào)將數(shù)據(jù)從RBUFFER中移入SDRAM。發(fā)送微模塊要選擇并等待一個(gè)有效的TBUFFER,再將數(shù)據(jù)從SDRAM中移入TBUFFER,并寫入相應(yīng)的控制寄存器,標(biāo)識(shí)分組要發(fā)送的端口,分組的發(fā)送由TSM硬件自動(dòng)完成。在中間處理包的各個(gè)模塊中,代碼首先從便存儲(chǔ)器(SCRATCHPAD MEMORY)中將接收線程放入的包信息取出,進(jìn)行以太網(wǎng)頭的有效性驗(yàn)證,根據(jù)IP頭的信息查找路由表,將以太網(wǎng)頭更新。其中每一個(gè)處理都是由一個(gè)微模塊來(lái)實(shí)現(xiàn)的。各個(gè)模塊

14、合在一起構(gòu)成了一個(gè)Dispatch Loop,各個(gè)模塊在便存儲(chǔ)器中共享包描述符信息,其中dlNextBlock全局變量為下一個(gè)處理微模塊的標(biāo)識(shí)。Dispatch Loop的部分代碼如下(簡(jiǎn)略)。while(1)dl_source(); /從接收線程取下包描述符if(dlBufHandle= =0) /dlBufHandle是Dispatch/Loop維護(hù)的一個(gè)全局變量continue;Ethernet_validate();/驗(yàn)證這個(gè)包是一個(gè)有效的以太網(wǎng)頭Ethernet_strip_header();/去掉以太網(wǎng)頭Ipv4_five_tuple_class();/進(jìn)行IPv4 classif

15、ier的轉(zhuǎn)發(fā)If(dlNextBlock= =IX_DROP)/clNextBlock也是全局變量,表示下一個(gè)Goto drop; /跳轉(zhuǎn)到丟棄包的處理模塊Ethernet_add_header();/添加新的以太網(wǎng)頭D1_sink(); /將處理后的包描述符放入發(fā)送緩沖區(qū)中Drop:Dl_BufDrop(dlBufHandle); /丟棄包的處理Intel IXP2400開發(fā)平臺(tái)中,微代碼的源文件是*.uc格式的,經(jīng)過(guò)預(yù)處理生成*.ucp的中間文件,進(jìn)而進(jìn)行匯編生成*.list匯編文件。微引擎程序的連接器將匯編程序的多個(gè)輸出文件轉(zhuǎn)變成一個(gè)可下載的微程序映像(image)。缺省情況下,連接器生

16、成的微代碼映像文件的擴(kuò)展名為uof。連接器也可以生成C結(jié)構(gòu)的程序格式,這樣的輸出文件與內(nèi)核程序一起進(jìn)行編譯和連接。4 網(wǎng)絡(luò)處理器軟件開發(fā)的關(guān)鍵環(huán)節(jié)(1)多線程的分配和調(diào)度策略對(duì)微引擎和線程分配任務(wù)是否合理,是影響系統(tǒng)性能的一個(gè)很重要因素。開發(fā)人員需要根據(jù)具體的網(wǎng)絡(luò)應(yīng)用和硬件平臺(tái)的特點(diǎn)來(lái)科學(xué)合理的分配任務(wù)。比如,對(duì)一個(gè)一般的網(wǎng)絡(luò)應(yīng)用來(lái)說(shuō),可以分為包的接收、處理、發(fā)送幾個(gè)階段。對(duì)于包的處理階段來(lái)說(shuō),又可以分成多個(gè)階段來(lái)執(zhí)行,每一個(gè)階段可以由一個(gè)微模塊來(lái)執(zhí)行。這多個(gè)微模塊是如何在每個(gè)微引擎中分配,就是一個(gè)任務(wù)分配的問題。如果分配才能使負(fù)載盡可能的達(dá)到平衡,處理器的資源得到最大效率的利用,這些都要進(jìn)行

17、研究、分析和實(shí)驗(yàn)。網(wǎng)絡(luò)處理器微引擎基于硬件的靜態(tài)多線程調(diào)度基礎(chǔ)上,即在一個(gè)微引擎內(nèi)部中的線程調(diào)度是由硬件來(lái)實(shí)現(xiàn)的,通常采用輪詢的策略。不同策引擎的線程間存在多種通信方法,線程之間在數(shù)據(jù)包處理過(guò)程中的同步方式也有多種。因此,開發(fā)者根據(jù)具體不同應(yīng)用功能特點(diǎn),不同數(shù)據(jù)處理相關(guān)功能需求,對(duì)圍繞處理器的多個(gè)微引擎的并行調(diào)度算法進(jìn)行選擇,以盡可能達(dá)到系統(tǒng)負(fù)載的平衡。Intel IXP2400提出了三種網(wǎng)絡(luò)處理器數(shù)據(jù)平面的多線程編程模型:流水模型(context pipeline)、并行處理模型的順序模式(ordered mode)和亂序的模式(unordered mode)。在任務(wù)的分配方面,Intel正

18、在考慮對(duì)現(xiàn)有的微引擎編程語(yǔ)言進(jìn)行擴(kuò)展,提出了新的微引擎自動(dòng)分配任務(wù)的編程模型,以加快網(wǎng)絡(luò)處理器軟件開發(fā)的效率。(2)數(shù)據(jù)結(jié)構(gòu)的這義和存儲(chǔ)分配(3)分組調(diào)度分組調(diào)度及處理算法的核心是鏈路層調(diào)度器的算法設(shè)計(jì)。在一般分組處理的存儲(chǔ)-轉(zhuǎn)發(fā)過(guò)程中,設(shè)計(jì)調(diào)度器必然要對(duì)分組處理時(shí)間進(jìn)行預(yù)測(cè),但處理器在調(diào)度器中要精確的獲取并更新這些虛擬時(shí)間是十分困難的。這就要根據(jù)具體的應(yīng)用,通過(guò)研究數(shù)據(jù)包的長(zhǎng)度、數(shù)據(jù)類型、處理方式與處理時(shí)間之間的關(guān)系,提出合理的數(shù)據(jù)包處理時(shí)間預(yù)測(cè)方案,選擇適當(dāng)?shù)姆纸M調(diào)度算法,達(dá)到比較好的系統(tǒng)性能。5 網(wǎng)絡(luò)處理器面臨的挑戰(zhàn)當(dāng)今的網(wǎng)絡(luò)處理咕嘟仍面臨著許多挑戰(zhàn),例如采用什么技術(shù)擴(kuò)展,如何簡(jiǎn)化編程模式等問題都需要進(jìn)一步研究。數(shù)據(jù)平面上運(yùn)行的軟件開發(fā)通常僅提供微代碼匯編和低通讀C語(yǔ)言技術(shù),這大大限制了網(wǎng)絡(luò)處理器技術(shù)的發(fā)展和應(yīng)用。因?yàn)槿狈Ω咝У能浖_發(fā)支持,軟件問題已經(jīng)成為網(wǎng)絡(luò)處理器應(yīng)用的一大障礙,必須研究面向網(wǎng)絡(luò)處理器系統(tǒng)的高效系統(tǒng)軟件平臺(tái)。網(wǎng)絡(luò)處理器微引擎指令的提供非常有限,僅有不足40條,這遠(yuǎn)遠(yuǎn)不能滿足開發(fā)人員的需求,僅用它去構(gòu)造一些復(fù)雜的網(wǎng)絡(luò)處

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論