摘要:在參照現有的網絡設備性能測試指標的基礎上,針對采用協議地址轉換機制(NATPT)的轉換網關的特點,提出了全面評價NATPT性能要進行的測試,同時提出了定位轉換網關的應用層網關性能瓶頸的測試方法,在此基礎上給出了一個測試結果示例。這些測試指標比較全面地反映NATPT轉換網關的性能,同時有助于定位轉換網關的性能瓶頸。
關鍵詞:IPv4/IPv6轉換網關;性能測試;網絡處理器
中圖分類號:TP393.1文獻標志碼:A
文章編號:1001-3695(2008)05-1496-04
0引言
從IPv4到IPv6的演進是一個漸進的漫長過程。在過渡過程中,為了實現大規模新建IPv6網絡與原有IPv4網絡的互通,一般采用網絡地址轉換/協議轉換(network address translation-protocol translation,NATPT)技術[1]。該技術的主要思想是,當IPv6節點與IPv4節點通信時,借助于中間的NATPT轉換網關,將網絡層協議頭進行IPv6/IPv4間的轉換,以適應對端的協議類型。
目前,國內外已經開展了多類NATPT轉換網關的研究。較知名的有:華盛頓大學基于Windows NT系統驅動層以及SPIN系統的NAT-PT實現,微軟公司的Windows系統用戶態下的NATPT實現,以及英國電信的基于KAME IPv6 Stack的NATPT實現等[2]。但是,隨著各類IPv6本地網的大范圍部署,IPv6與IPv4網絡間的資源互訪需求日益提高,NATPT轉換網關也自然地需要從用戶本地子網遷移到Gigabit鏈路的IP骨干網邊緣。因此,NATPT轉換網關的性能問題將成為制約IPv6網絡發展的關鍵因素。由于NATPT是一個線上設備,能否達到線速要求是NATPT能否實用的一個關鍵所在。為了滿足性能的要求,朗訊貝爾實驗室提出了一種基于網絡處理器平臺的NATPT轉換網關實現方案[3]。在這種實現方案中,所有的數據包被分為快速數據通路和慢速速據通路兩部分來進行處理。其中快速數據通路包括對數據包的轉發以及數據包頭的翻譯;而慢速數據通道則包括應用層網關和某些處理異常報文的處理模塊。這種實現方案借助于網絡處理器提供的功能,能大幅度地提高NATPT的性能。
但是如何全面衡量基于網絡處理器實現NATPT系統的性能一直沒有一個全面的研究。文獻[4]對如何進行網絡互連設備的測試給出了一些測試指標,同時給出了這些測試指標的測試方法。但是NATPT對數據包的處理有著自身的特點, 可以將經過NATPT所處理的數據包流分為兩個部分:a)只需簡單地IP地址翻譯;b)協議翻譯。這部分的功能稱為應用層網關。第一部分的功能與傳統意義上的NAT功能相似,兩者的區別在于傳統意義上的NAT一般用于兩個IPv4地址的翻譯,因而數據包的大小無須改變;但是NATPT用于IPv4、IPv6兩個地址之間的翻譯,數據包大小改變了,從而導致數據包在內容中的管理比較復雜,同時IPv4、IPv6協議報頭的附加選項的不同也增加NATPT的復雜性。第二部分流量需要比較復雜的處理,主要是對應用層包頭的處理,每個在應用層報頭中包含IP地址信息的應用層協議都需要相應的應用層網關,如FTP、DNS、SIP等。這部分功能一般稱之為協議翻譯(protocol translation)功能,也稱為應用層網關[1]。這兩部分功能也是NATPT名稱的由來。NATPT的功能可以進一步分為靜態地址映射、動態地址映射數據包的處理。動態地址映射部分又包括對已建立NAT條目的數據包的處理和未建立NAT條目的數據包的處理等。這兩部分功能的處理有著明顯的差別,因而要針對它們的特點分別進行測試。
1基于網絡處理器的NATPT轉換網關
1.1NATPT的基本功能
NATPT轉換網關作為IPv4/IPv6域間通信的中間設備,主要完成IPv4/IPv6地址轉換以及IP協議頭部字段的語義翻譯。對于一些內嵌地址信息或針對IPv6擴展的應用層協議,NATPT需要與應用層網關(application layer gateway,ALG)協作來完成翻譯。因此,NATPT的協議地址轉換功能可以分為兩類:a)基本協議地址轉換,完成普通IP報文的協議地址翻譯;b)應用層網關轉換,完成特殊報文的協議地址翻譯。這里的特殊報文主要包括各類ALG所處理的報文(FTP控制報文、DNS報文、SIP報文)、會話發起/拆除報文(如TCP SYN/FIN報文)及ICMP報文。分析上述兩類轉換的處理報文,可以發現應用層網關轉換的處理報文除了要求完成IP層的處理,還需ALG完成高層協議的翻譯,而該類報文的計算開銷遠遠高于普通IP地址報文的開銷。
依據CAIDA發布的Internet流量統計研究結果,應用層網關轉換的處理報文約占Internet整體流量的7%(會話發起/拆除報文2.5%,DNS報文2.4%,FTP 控制報文1.1%, ICMP報文小于1%)。
上述統計結果表明,在NATPT轉換網關中基本協議地址轉換的處理能力體現系統整體性能。但是對應用層網關的性能同樣有很高的要求,在一個線速1 Gbps的轉換網關上,需要應用層轉換網關的性能達到60 Mbps。1.2基于網絡處理的NATPT實現
圖1給出一個基于Intel的IXP2400網絡處理器的NATPT實現框架。在這個實現方案中基本的IPv4/IPv6協議地址翻譯功能由可編程的專門用于網絡數據包處理的微引擎來處理,對于處理功能比較復雜的應用層網關以及系統的NAT條目管理,則有專門的嵌入式處理器來實現。
由于應用層網關復雜性和多變性,一般基于通用的RISC處理器實現、基于通用處理器的軟件實現方案是影響應用層網關性能的主要因素。同時應用層網關處理的數據包首先要經過快速數據通路的包分類處理才能到達應用層網關(圖1中箭頭1所示),經過應用層網關處理后的數據包需要發往快速數據通路的隊列管理模塊后才能發送出去,而快速數據通路與應用層網關之間數據通路的吞吐量也是影響應用層網關的性能的一個主要因素。為了更好地定位應用層網關的性能瓶頸在于數據通路還是于處理器性能,第三章給出了一個測試方案。
NATPT雖然無須維護每對鏈接的狀態信息,但是需要為每對鏈接對維護一個NAT映射信息。NAT映射信息包含IPv4地址、端口號和IPv6地址、端口號的地址映射信息。當微引擎接收到一個IPv6的會話發起報文,首先經過數據包分類模塊的處理后,發送到IPv4/IPv6協議轉換模塊,協議轉換模塊如果查詢不到相應的NAT表條目,這些數據包(圖1中箭頭2所示)就會被發送到NAT表管理模塊,NAT表管理模塊將為其從IPv4地址池中分配 (srcAddr4,unusedPort),并結合IPv6報文中的(srcAddr6, srcPort),形成一條臨時的動態映射存儲在NAT表中,即
[srcAddr6, srcPort, destAddr6, destPort]→[src-Addr4, unusedPort, destAddr4, destPort]。其中:srcAddr4為系統從IPv4地址池中臨時為該會話分配的一個全局IPv4地址;unusedPort表示該IPv4地址中還未使用的端口號。
可以看出,NATPT是一個復雜的系統,簡單的測試不能涵蓋所有影響NATPT實際使用時的性能。為了對NATPT的性能進行全面的評估,必須針對NATPT所支持的功能進行針對性的測試。
2NATPT測試
網絡設備的性能測試包括非常多的測試指標,文獻[4]說明需要針對相應的設備選擇該設備支持的功能進行測試。本文首先給出了一些基本的測試指標的定義和測試方法說明,隨后針對NATPT的性能評估需要進行的測試給出了全面的總結。通常網絡設備性能測試采用基準測試(base line test)和真實環境測試(real world testing)。基準測試采用的是一種穩定的相對測試, 側重于不同產品之間的比對。真實環境測試其主要特點是盡可能地將測試的流量和測試的環境接近于真實,提供一個絕對評價的測試方案。本文中主要采用基準測試的方法來進行測試。其測試環境拓撲圖如圖2所示。
基本的測試指標如下:
a)吞吐量。不丟失任何一個幀時的最大轉發速率,同樣以Mbps為單位。吞吐量是衡量設備數據轉發能力的最重要的指標。
NATPT只對數據包的報頭進行處理而不涉及到對數據包內容的處理,因而一個大包和小包處理的復雜度是一樣的,在以Mbps為單位對NATPT進行測試時要區分不同數據包大小情況下的吞吐量。
b)延遲。其定義有兩種,在存儲轉發模式下定義為:輸入幀的最后一位到達輸入端口,輸出幀的第一位到達輸出端口的時間間隔。快速轉發模式下定義為:輸入幀的第一位到達輸入端口,輸出幀的第一位到達輸出端口的時間間隔。NPF衡量網絡處理器性能的benchmark采用的是第二種定義,基于網絡處理器實現的NATPT測試采用該規范。
需要注意的是,雖然數據包的大小不影響數據包處理的復雜度,但是數據包的大小影響到數據包在內容中讀取速度和數據包的接收及發送時間,因而在進行延遲測試時同樣要針對不同大小的數據包分別進行測試。
c)丟包率。在不同穩態負荷下,由于缺乏資源應轉發而沒有轉發的數據包所占的比例。不同負荷通常指從吞吐量測試到線速(線路上傳輸包的最高速率)。步長一般使用線速的10%。該指標可以描述在過載狀態下網絡設備的性能。這個測試指標同樣受NATPT的丟包策略的影響。
d)背對背幀。給定的媒體,從空閑狀態開始,以最小合法幀間隔發送連續幀,被測設備所能處理的最大幀數。該指標與設備的緩沖區相關。如果DUT具備線速能力(吞吐量=接口媒體線速),則該測試沒有意義。
e)系統恢復(system recovery)時間。測試DUT在過載后恢復正常工作的時間。如果設備是線速,則該指標沒有意義。
f)系統復位(reset)時間。測試DUT從軟件復位或關電重啟到正常工作的時間間隔。正常工作指能以吞吐量轉發數據。
g)背板轉發容量。對于具有多口的設備(如交換機、路由器等)。
針對上述NATPT系統結構以及網絡中數據報文的數據流圖,本文認為針對NATPT有多種不同功能層面的設備需要進行如下四個方面的測試:
a)快速數據通路的測試。主要測試NATPT轉換網關在建立NAT條目后,系統查找NAT表、進行IP地址頭翻譯、重新計算IP校驗、根據翻譯后的數據包查找路由的能力(圖1中無填充色的寬箭頭所示的流量)。
b)應用層網關的性能測試。主要測試NATPT快速數據通路與應用層網關之間的數據通路、應用層網關處理、應用層網關與快速數據通路之間的數據通路的性能(圖1中箭頭1的流量)。
c)NAT表管理性能測試。主要測試NATPT處理新連接的能力(圖1中箭頭2所示的流量)。
d)系統功能測試。主要測試NATPT系統的功能。
3定位NATPT應用層網關性能瓶頸
影響應用層網關性能的有兩個主要因素:基于通用處理器的軟件實現方案是影響應用層網關性能的主要因素,快速數據通路與應用層網關之間數據通路的吞吐量是影響應用層網關的性能的另外一個因素。為了定位應用層網關的性能瓶頸,首先給出了應用層網關數據流(圖1中箭頭1所示)所經過的處理流程,如圖7所示。
由圖7可以看出,數據包在微引擎的各個模塊傳遞時,只需傳遞數據包的摘要描述信息(簡稱包信息);但是數據包傳送到應用層網關時,應用層網關需要讀取數據包的報文內容,包括應用層報文信息,經過應用層網關處理后,新的數據包報文要重新寫入內存,并且重新生成新的數據包信息傳遞給微引擎進行處理。
可以粗略地將應用層網關的數據流分為一個五級流水的過程:
a)微引擎接收數據報文,構造數據包相關的索引信息,并且將數據包報文存入內存;
b)應用層網關從內存中讀取數據報文;
c)應用層網關按照應用層包頭對數據包進行處理;
d)應用層網關將經過相應的應用層協議翻譯機制處理后的數據報文重新寫入到內存;
f)微引擎讀取內存中的新報文,發送到外部媒體。
由于微引擎是專門針對數據包的處理進行過優化的,如果數據包的流量不經過應用層網關進行處理,那么微引擎的處理速率可以達到線速1 Gbps的要求。因而可知應用層網關的性能瓶頸不可能在于a)、f)中,而應該在應用層網關讀取數據包、進行數據包處理、寫入新的數據包到內存這一系列操作中。當應用層網關所在的RISC處理器與微引擎不在同一個處理器上時,如RISC處理器是與網絡處理器協同工作的協處理器時,讀取數據包、寫入數據包可能是應用層網關的主要開銷,而對于數據報文進行處理則可能是次要開銷。為了衡量應用層網關的性能瓶頸,需要對應用層網關的計算能力和數據包對數據包的存取能力分別進行測試。測試方案如下:
a)首先將測試圖7中所示的系統中應用層網關的吞吐量記為T1。
b)在應用層網關中省去數據包模塊的功能處理。在流水線3中進行數據包的分組分類后,直接將新的數據包發送模塊發送到內存中。此時應用層網關數據流的處理過程如圖8所示,測試并且記錄此時的系統吞吐量為T2。
c)在RISC處理器端構造靜態數據報文,單獨測試應用層網關處理性能。記錄下此時應用層網關數據包處理的吞吐量為T3。
在網絡處理器中,由于芯片面積的限制,RISC處理器的處理能力一般來說瓶頸,采用上述步驟c)就可以分析出處理器的能力。例如在IXP2400中采用的RISC處理器是主頻XScale,同樣應用層網關代碼,采用GCC編譯器編譯,對大小為84 Byte的FTP報文進行處理時,XScale只能達到15 Mbps,遠遠小于60 Mbps的處理要求,而在主頻2.4 GHz的Pentium 4上則可以到達300 Mbps左右。為了改善處理能力的不足,通常采用增加協處理器的方法來增加網絡處理器的處理能力。協處理器一般通過PCI總線與網關處理器進行通信,此時協處理器可以通過DMA的方式來讀取數據包。在讀取數據包時,協處理器同時可以進行數據包的處理,那么對內存的讀取與對數據包的處理可以看做是一種流水關系。而且通過b)可以得到內存讀取的速率,通過c)可以得到處理器的計算能力。而且這影響著兩種性能的因素獨立(影響內存讀取的主要因素是PCI總線的主頻,影響處理器能力的是處理器的主頻)。如果T3>T2,說明PCI總線是瓶頸;如果T2>T3,說明處理器的性能是瓶頸。而且如果要求應用層網關的性能要達到60 M-bps,那么要求T3、T2>60 Mbps。
提出a)的主要目的是,如果b)、c)中的某一項比較難以進行,可以用1/T1=1/T2+1/T3來近似的估計。
在該系統中T1是60 Mbps,T2是100 Mbps,T3>150 M-bps,可以看出性能的瓶頸在于通過PCI讀取數據包的速率。
4結束語
本文針對NATPT網關如何進行測試,提出了一個比較全面的測試指標,并且給出一個參考的測試結果。同時針對應用層網關的性能測試,提出一種定位應用層網關性能的方法。這些測試指標和測試方法都是在實際的項目開發總結出來的,對其他類似的項目也有一定的參考意義。下一步的主要工作是對于NATPT在實際應用中的性能進行進一步的分析和研究。
參考文獻:
[1]TSIRTSIS G,SRISURESH P.RFC 2766,Network address translation:protocol translation (NAT-PT)[S].[S.l.]:Internet Engineering Task Force(IETF),2000.
[2]陳沫,殷昭印,王春峰,等.基于網絡處理器的NATPT轉換網關的性能研究[J].系統仿真學報,2007,19(6): 1241-1248.
[3]CAIDA.OC48 statistics:stratification of traffic by application[EB/OL].(2002).http://www.caida.org/analysis/workload/byapplication/oc48/20020109/apps_perc_20020109/20020109_table_packets.xml.
[4]Network processing forum(NPF) [EB/OL].http://www.npforum.org.
[5]GROSSE E,LAKSHMAN Y N.Network processors applied to IPv4/IPv6 transition[J].IEEE Network,2003,17(4): 35-39.
[6]BRADNER S.RFC 2544,Benchmarking methodology for network interconnect devices[S].1999.
[7]NEWMAN D.RFC 2647,Benchmarking terminology for firewall performance[S].1999.
“本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文”