《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 業(yè)界動(dòng)態(tài) > 基于Intel IXP2400和GP-CPU的NAT系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)

基于Intel IXP2400和GP-CPU的NAT系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)

2008-11-19
作者:司 靚1,2, 于曉娟3, 李昀

??? 摘 要: 提出了一種基于可編程網(wǎng)絡(luò)處理器IXP2400和GP-CPU的NAT/NAPT" title="NAT/NAPT">NAT/NAPT的實(shí)現(xiàn)方案,設(shè)計(jì)并實(shí)現(xiàn)了基于Intel IXP2400和GP-CPU所組成的具有安全防火墻功能的NAT系統(tǒng)。針對(duì)該NAT系統(tǒng)進(jìn)行了性能分析,它能夠支持六十多萬并發(fā)TCP/UDP的連接容量與全線速為2Gb/s以太網(wǎng)連接速率,有效提高了NAT/NAPT的操作速度,克服了傳統(tǒng)NAT實(shí)現(xiàn)方案中的性能瓶頸。
??? 關(guān)鍵詞: 網(wǎng)絡(luò)處理器; IXP2400; NAT; NAPT; 微引擎

?

??? 在現(xiàn)代通信網(wǎng)應(yīng)用中,網(wǎng)絡(luò)地址轉(zhuǎn)換NAT(Network Address Translation)技術(shù)是IETF提出的有效解決IPv4面臨的網(wǎng)絡(luò)地址枯竭問題的方案之一,是為提高網(wǎng)絡(luò)地址利用率、緩解IPv4地址枯竭壓力而采取的一種有效策略。與此同時(shí),為滿足互聯(lián)網(wǎng)絡(luò)對(duì)高性能與靈活性的要求,網(wǎng)絡(luò)處理器作為一種可編程的高速處理器應(yīng)運(yùn)而生,它是新興的下一代網(wǎng)絡(luò)設(shè)備的核心,它綜合了GP-CPU(通用處理器)的完全可編程特性和專用處理器ASIC(Application Specific Integrated Circuit)的高速處理能力的優(yōu)點(diǎn),有效地兼顧了網(wǎng)絡(luò)設(shè)備的功能靈活性和性能強(qiáng)大性。因此,不但提高了網(wǎng)絡(luò)服務(wù)的處理能力而且還具有高線速處理性能,從而能夠很靈活地適應(yīng)網(wǎng)絡(luò)的各種業(yè)務(wù)性能要求[1]。
  對(duì)于傳統(tǒng)的基于GP-CPU或ASIC的NAT處理復(fù)雜、負(fù)荷過重而造成的性能瓶頸,本文提出了一種基于IXP2400和GP-CPU的NAT系統(tǒng)的實(shí)現(xiàn)方案,成功地實(shí)現(xiàn)了基于有效的全局地址或用戶配置的飽和度來執(zhí)行NAT模式(包括靜態(tài)NAT與動(dòng)態(tài)NAT)與NAPT模式(Network Address Port Translation,網(wǎng)絡(luò)地址與端口轉(zhuǎn)換)的動(dòng)態(tài)切換功能,最高效地實(shí)現(xiàn)了網(wǎng)絡(luò)地址復(fù)用,同時(shí)大大提高了NAT/NAPT的地址轉(zhuǎn)換能力,克服了傳統(tǒng)的NAT網(wǎng)絡(luò)應(yīng)用方案中因數(shù)據(jù)幀頭處理時(shí)間過長所導(dǎo)致的難以保持在NPs上一定的線速問題。
1 網(wǎng)絡(luò)處理器IXP2400和NAT/NAPT的概述
1.1 網(wǎng)絡(luò)處理器IXP2400簡介

  網(wǎng)絡(luò)處理器IXP2400是用來執(zhí)行數(shù)據(jù)處理" title="數(shù)據(jù)處理">數(shù)據(jù)處理和轉(zhuǎn)發(fā)的高速可編程處理器,由一個(gè)Xscale Core(智能協(xié)處理單元,即32bit的嵌入式精簡指令集處理器)、8個(gè)微引擎" title="微引擎">微引擎Microengines(簡稱MEs),以及標(biāo)準(zhǔn)存儲(chǔ)接口單元和網(wǎng)絡(luò)接口單元等部分組成。IXP2400的硬件體系結(jié)構(gòu)如圖1所示。IXP2400硬件體系結(jié)構(gòu)的詳細(xì)描述主要來自于參考文獻(xiàn)[1]、[2]。

?

1.2 NAT/NAPT綜述
  NAT具體可分為三種類型:靜態(tài)NAT、動(dòng)態(tài)NAT和NAPT,分別用來支持IP地址轉(zhuǎn)換以及IP地址與TCP/UDP端口數(shù)據(jù)轉(zhuǎn)換。
NAT映射一個(gè)內(nèi)部的IP地址到一個(gè)公網(wǎng)IP地址。當(dāng)數(shù)據(jù)包穿過NAT時(shí),不更換它的TCP/UDP端口號(hào)。NAT通常使用在一些具備公共IP地址池的NAT上,通過它可以進(jìn)行地址綁定,即代表一臺(tái)內(nèi)部主機(jī)。NAPT 則是一種動(dòng)態(tài)地址轉(zhuǎn)換,它將一個(gè)由內(nèi)部IP地址和TCP端口號(hào)組成的二元組映射到一個(gè)由外部IP地址和TCP端口號(hào)組成的二元組,從而允許多個(gè)內(nèi)部IP地址共用一個(gè)合法外部IP地址[3]。二者都提供了一種機(jī)制:實(shí)現(xiàn)內(nèi)網(wǎng)的IP地址與公網(wǎng)的IP地址之間的相互轉(zhuǎn)換,并將大量的內(nèi)網(wǎng)IP地址轉(zhuǎn)換為一個(gè)或少量的公網(wǎng)合法的IP地址。因此,IP地址轉(zhuǎn)換的應(yīng)用勢在必行。
2 基于IXP2400和GP-CPU的NAT系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
2.1 系統(tǒng)硬件的設(shè)計(jì)與實(shí)現(xiàn)
  該系統(tǒng)設(shè)計(jì)的最終目標(biāo)是要通過基于IXP2400和GP-CPU來實(shí)現(xiàn)具有安全防火墻功能的NAT/NAPT的應(yīng)用方案。該系統(tǒng)的硬件體系結(jié)構(gòu)如圖2所示,其中,基于NP IXP2400的NAT子系統(tǒng)是實(shí)現(xiàn)整個(gè)NAT系統(tǒng)核心功能的重要組成部分,也是整個(gè)NAT系統(tǒng)取得高性能的關(guān)鍵之所在,其結(jié)構(gòu)圖如圖3所示。

?

?

?

  該系統(tǒng)的實(shí)現(xiàn)平臺(tái)主要是由一片集成了時(shí)鐘頻率為600MHz的IXP2400的板卡、通用PCI高速背板、一片集成有GP-CPU的主板(即主機(jī)系統(tǒng))、運(yùn)行嵌入式VxWorks實(shí)時(shí)多任務(wù)操作系統(tǒng)、IDT公司的 PAX.Ware 2500i Media Interface Card、一個(gè)100/1000M以太網(wǎng)卡,以及Intel IXA SDK4.2[5]和相關(guān)的構(gòu)建框架(Framework)等部件所組成。
  基于IXP2400和GP-CPU的NAT系統(tǒng)能夠提供線速4Gb/s的以太網(wǎng)實(shí)現(xiàn)方案[6],并同時(shí)支持IPv4的單播轉(zhuǎn)發(fā)。作者通過編輯內(nèi)核相關(guān)的代碼,使GP-CPU具有第二到四層數(shù)據(jù)包過濾功能;同時(shí)通過Intel IXA SDK4.2編輯相關(guān)的微代碼,并映射到NP IXP2400中創(chuàng)建一個(gè)NAT/NAPT功能模塊,從而實(shí)現(xiàn)具有安全防火墻功能的NAT系統(tǒng)的應(yīng)用方案。
2.2 NAT子系統(tǒng)的軟件模塊設(shè)計(jì)與實(shí)現(xiàn)
  基于NP IXP2400的NAT子系統(tǒng)的數(shù)據(jù)流程示意圖如圖4所示。作者把NP IXP2400的8個(gè)微引擎分別對(duì)應(yīng)地分成具體的功能模塊: Packet RX模塊、NAT/NAPT處理和IPv4轉(zhuǎn)發(fā)功能模塊、Queue Manger模塊、Packet Scheduler模塊以及Packet TX模塊。在設(shè)計(jì)方案當(dāng)中,接收、隊(duì)列管理及調(diào)度這三個(gè)功能模塊各占用一個(gè)微引擎,而數(shù)據(jù)包的發(fā)送模塊要占用兩個(gè)微引擎來發(fā)送數(shù)據(jù)包,其余三個(gè)微引擎用于NAT/NAPT和IPv4轉(zhuǎn)發(fā)的數(shù)據(jù)處理階段。在NAT/NAPT數(shù)據(jù)處理階段中,微引擎的分配使用是通過微引擎內(nèi)部的指令執(zhí)行周期與時(shí)延" title="時(shí)延">時(shí)延周期的數(shù)據(jù)分析來決定的,這一點(diǎn)將在2.3節(jié)中進(jìn)一步說明。

?


  在NP IXP2400中NAT/NAPT的數(shù)據(jù)處理的詳細(xì)模塊,如圖5所示。 在Xscale Core(即控制面)與微引擎之間的通信過程中,有兩個(gè)Scratch Rings(SR0和SR1)按照優(yōu)先排序的方式處理數(shù)據(jù)并控制數(shù)據(jù)包。作者所設(shè)計(jì)的NAT功能模塊既可以通過手動(dòng)配置運(yùn)行靜態(tài)NAT模式,同時(shí)也可以基于數(shù)據(jù)包運(yùn)行動(dòng)態(tài)NAT模式。

?


  該NAT系統(tǒng)控制著NAT處理模式與NAPT處理模式的轉(zhuǎn)換,這種控制機(jī)理的實(shí)現(xiàn)是基于有效的全局地址或用戶配置的飽和度,確保內(nèi)部網(wǎng)絡(luò)用戶對(duì)外部網(wǎng)絡(luò)不間斷的訪問,并能夠支持更多的網(wǎng)絡(luò)服務(wù)。所以,Xscale Core與 NAT/NAPT MEs(圖5)之間的通信是必不可少的,因?yàn)閄scale Core 管理控制著NBT(NAT/NAPT Binding Table,網(wǎng)絡(luò)地址/端口轉(zhuǎn)換映射表)而NAT/NAPT MEs 則是根據(jù)Xscale Core 所管控的 NBT 中所提供的信息來對(duì)數(shù)據(jù)包進(jìn)行處理的。NAT子系統(tǒng)中NAT/NAPT模式的轉(zhuǎn)換是根據(jù)SRAM0中存儲(chǔ)的NAT轉(zhuǎn)換模式表來實(shí)現(xiàn)的,如圖5所示。在NAT子系統(tǒng)中運(yùn)用這種模式轉(zhuǎn)換方案可把模式轉(zhuǎn)換帶來的數(shù)據(jù)傳輸中斷的影響降到了最低限。
2.3? NAT/NAPT功能模塊的微引擎分配
  為了保持?jǐn)?shù)據(jù)處理達(dá)到2Gb/s的全線速,NAT/NAPT功能模塊基于每個(gè)微引擎在處理數(shù)據(jù)包時(shí),都要求在連續(xù)數(shù)據(jù)包的間隙內(nèi)進(jìn)行處理。筆者將NAT/NAPT模塊的功能映射到微引擎上來執(zhí)行,是通過估算有效指令執(zhí)行周期與I/O" title="I/O">I/O時(shí)延周期來實(shí)現(xiàn)的。在以太網(wǎng)接口層,最小的鏈路層數(shù)據(jù)幀的大小為84B(最小的以太網(wǎng)數(shù)據(jù)幀是64B,再加上幀間的數(shù)據(jù)幀頭是20B)。當(dāng)線速為2Gb/s時(shí),如果數(shù)據(jù)包的大小是84B,數(shù)據(jù)包的吞吐量將達(dá)到每秒鐘處理2.976M個(gè)數(shù)據(jù)包。其中,連續(xù)兩個(gè)84B的數(shù)據(jù)包的間隙為336ns。
  PacketInterArrivalTime(ns)=PacketSize(Bytes)×8/DataRate(Gb/s)
  上式中的幀間間隙可以被設(shè)置成子系統(tǒng)中處理器的時(shí)鐘,并由下列公式推導(dǎo)得出。由于NAT子系統(tǒng)是基于IXP2400來實(shí)現(xiàn)的,而IXP2400的時(shí)鐘頻率為600MHz,因此,該處理器的時(shí)鐘應(yīng)為1.67ns。
  PacketArrivalTime(ProcessorCycles)=PacketInterArrivalTime(ns)/ProcessorClockTick(ns)
所以,整個(gè)數(shù)據(jù)處理流程(如圖4所示)中的任何一個(gè)處理進(jìn)程都必須能夠在特定周期(符合這種周期算法)內(nèi)完成所要求的所有接收到的數(shù)據(jù)包的處理,而且,每個(gè)處理進(jìn)程都應(yīng)該能夠達(dá)到每202個(gè)周期處理一個(gè)新的數(shù)據(jù)包的處理速度,以支持2.0Gb/s的全線速。
微引擎對(duì)數(shù)據(jù)包的處理包括:對(duì)內(nèi)存儲(chǔ)器和外存儲(chǔ)器的訪問,例如:Scratch Memory、SRAM、DRAM等。訪問存儲(chǔ)器的時(shí)延與相鄰數(shù)據(jù)包之間的間隙是近似的,例如:SRAM存儲(chǔ)器的訪問時(shí)延大約是150 Cycles,而DRAM存儲(chǔ)器的訪問時(shí)延大約是250~300 Cycles[7]。每個(gè)微引擎內(nèi)部有8個(gè)硬件線程(Context),采用多線程交換(Multi-Threading)技術(shù)時(shí),由相應(yīng)的硬件結(jié)構(gòu)提供支持,由軟件指令來控制,可以將存儲(chǔ)器的訪問時(shí)延隱藏在指令執(zhí)行周期的后面,因此,提供一個(gè)I/O時(shí)延周期相當(dāng)于數(shù)據(jù)包傳輸速率的8倍,即一個(gè)I/O時(shí)延周期總計(jì)為8×202=1 616 Cycles(即8倍的以太網(wǎng)傳輸模式上的IPv4數(shù)據(jù)包最短到達(dá)時(shí)間),這樣充分發(fā)揮了微引擎的MIPS性能,提高了系統(tǒng)的并行處理能力。表1展示了不同的NAT/NAPT功能模塊中的微引擎數(shù)量組合(1ME、2MEs、3MEs)所對(duì)應(yīng)的有效指令執(zhí)行周期與I/O時(shí)延周期的值的變化。如果使用兩個(gè)微引擎執(zhí)行NAT/NAPT處理,則上述兩種周期的值要比只有一個(gè)微引擎處理時(shí)增加兩倍,因?yàn)閮蓚€(gè)MEs具有16個(gè)硬件線程,這樣可以并行處理16路數(shù)據(jù)包。表2展示了估算的指令執(zhí)行次數(shù)和NAT/NAPT功能模塊中存儲(chǔ)器訪問的次數(shù)。在不理想的情況下,根據(jù)每個(gè)存儲(chǔ)器訪問類型[7]的時(shí)延的數(shù)值計(jì)算得出,執(zhí)行NAPT處理時(shí)的I/O時(shí)延周期大約為2 880 Cycles。 因此,單個(gè)微引擎的指令執(zhí)行周期與I/O時(shí)延周期要小于兩個(gè)微引擎的指令執(zhí)行周期與I/O時(shí)延周期。所以,筆者設(shè)計(jì)此NAT/NAPT處理和IPv4轉(zhuǎn)發(fā)功能模塊應(yīng)當(dāng)配置三個(gè)微引擎并行工作,來支持網(wǎng)絡(luò)所要求的數(shù)據(jù)處理速度。這一分析結(jié)果將在下節(jié)的軟件仿真測試中被證實(shí)。

?


3? NAT系統(tǒng)的性能分析
  這項(xiàng)仿真測試運(yùn)用了IXP2400 Developer Workbench專用軟件開發(fā)平臺(tái),通過編譯微代碼來實(shí)現(xiàn)數(shù)據(jù)的仿真。在測試當(dāng)中,Workbench編譯器使用的參數(shù)設(shè)置都是默認(rèn)值。
3.1 最大連接速率/最大會(huì)話速率
  該性能測試為系統(tǒng)的TCP會(huì)話處理性能和峰值速率性能的測試集合。在性能測試之前,ARP的映射條目與NAT/NAPT的轉(zhuǎn)換條目采用動(dòng)態(tài)配置的形式,關(guān)于最大連接速率與最大會(huì)話速率的測試:是通過固定的數(shù)據(jù)幀長度(84B)與60個(gè)客戶機(jī)和一個(gè)服務(wù)器來完成的。這項(xiàng)測試結(jié)果表明了所設(shè)計(jì)的NAT系統(tǒng)完全能夠以全線速處理數(shù)據(jù)包。
3.2? 平均轉(zhuǎn)發(fā)速率
  在這項(xiàng)仿真測試過程中,當(dāng)所有數(shù)據(jù)包的NMT查找采用一次地址沖突量(N-depth)匹配的方式時(shí),以最小長度64B以太網(wǎng)幀生成于每個(gè)網(wǎng)絡(luò)地址,而且NBTs 的查找模式以N-depth匹配方式被靜態(tài)設(shè)置,所有的數(shù)據(jù)包都匯成一股數(shù)據(jù)流,執(zhí)行NAT/NAPT處理的微引擎中的每個(gè)線程都會(huì)同時(shí)去訪問NMT,這樣就會(huì)引起DRAM存儲(chǔ)器訪問的沖突。當(dāng)哈希沖突的次數(shù)不斷增加時(shí),DRAM存儲(chǔ)器的負(fù)擔(dān)就會(huì)增大而且DRAM存儲(chǔ)器的訪問時(shí)延也會(huì)大大增加,再加上等待數(shù)據(jù)讀入線程的開銷,執(zhí)行NAT/NAPT處理的微引擎中線程將會(huì)產(chǎn)生過度的時(shí)延。圖中曲線的走勢說明:隨著NBT查找匹配的一次地址沖突量的增加,將會(huì)導(dǎo)致平均轉(zhuǎn)發(fā)速率逐漸地降低。
3.3 時(shí)延分析
  將本NAT系統(tǒng)(包含:子系統(tǒng)中的NAT/NAPT功能模塊)的時(shí)延與不具有NAT/NAPT功能僅僅只提供簡單的數(shù)據(jù)包轉(zhuǎn)發(fā)功能的系統(tǒng)的時(shí)延進(jìn)行了對(duì)比。在對(duì)NAT系統(tǒng)的測試當(dāng)中,ARP的映射條目與NAT/NAPT的轉(zhuǎn)換條目采用靜態(tài)配置的形式。通過對(duì)兩個(gè)不同的系統(tǒng)的性能仿真測試結(jié)果進(jìn)行對(duì)比,得出以下結(jié)論:①與不具有NAT/NAPT功能的系統(tǒng)的時(shí)延相比,具有NAT/NAPT功能的系統(tǒng)的時(shí)延要增加6%~30%。②時(shí)延的平均增長比率是根據(jù)數(shù)據(jù)包的大小的不同而變化的,也就是說,如果數(shù)據(jù)包的大小在64B~256B范圍內(nèi),其時(shí)延的平均增長比率為25%;如果數(shù)據(jù)包的大小在512B~1 518B范圍內(nèi),其時(shí)延的平均增長比率為9%。以上測試結(jié)果表明:基于NP的NAT/NAPT功能模塊需要對(duì)數(shù)據(jù)包頭進(jìn)行深度地處理。
  NAT技術(shù),對(duì)于當(dāng)前的IPv4網(wǎng)絡(luò)中的地址耗盡和路由表的規(guī)模擴(kuò)大是一個(gè)很有效的解決方案,因?yàn)榫W(wǎng)絡(luò)擴(kuò)大時(shí)它需要很少的改變,并能很快地實(shí)現(xiàn)地址復(fù)用。作者設(shè)計(jì)出一種基于IXP2400和GP-CPU的NAT系統(tǒng)實(shí)現(xiàn)方案,成功地實(shí)現(xiàn)了地址復(fù)用,并且微引擎的多線程交換技術(shù)與并行處理能力有效地提高了系統(tǒng)的NAT/NAPT模塊數(shù)據(jù)處理的性能,解決了傳統(tǒng)NAT實(shí)現(xiàn)方案中的性能瓶頸。
  在未來的工作計(jì)劃中,作者為了減少系統(tǒng)數(shù)據(jù)處理產(chǎn)生的哈希沖突次數(shù),計(jì)劃創(chuàng)建一個(gè)新的哈希函數(shù)來減少哈希沖突,還要重新設(shè)計(jì)哈希表的數(shù)據(jù)結(jié)構(gòu)來提高存儲(chǔ)器的利用率,最小化存儲(chǔ)器的訪問時(shí)延。


參考文獻(xiàn)
[1]?Intel. Intel IXP2400 Network Processor Hardware Reference Manual [M/CD] . USA: Intel Corporation, Oct.2004. [2] ?張宏科,蘇偉,武勇. 網(wǎng)絡(luò)處理器原理與技術(shù)[M].北京:北京郵電大學(xué)出版社,2004,11:18~138.
[3]? STEVENS R W. TCP/IP Illustrated, Volume 2: The Implementation[M].? Beijing: China Machine Press,April.2000: ?63-560.
[4]? Integrated Device Technology.? IDTTM PAX.wareTM 2500i?Evaluation System. 2004.
[5]? Intel. IXP2400 and IXP2800 Network Processor: Programmer’s Reference Manual[M/CD]. USA: Intel Corpora-
?tion, Jan. 2005.
[6] ?Intel. Internet Exchange Architecture Software Building?Blocks Reference Manual [M/CD]. USA: Intel Corporation, ?Feb. 2003.
[7]? LAKSHMANAMURTHY S, LIU K, PUN Y, et al.Network?Processor Performance Analysis Methodology[J]. USA:Intel ??Technology Journal, Aug. 2002,6(3):19-28.

本站內(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。