看Linux及SQL如何構建網絡性能分析測試系統(tǒng)
豐富的開發(fā)工具和開源軟件組件是Linux環(huán)境的主要優(yōu)點之一,如今,支撐通信網絡的設備無論在速度、吞吐量、性能還是其支持的服務方面都變得日益強大。顯然對用戶來說這是福音——但對生產商來說這卻是一項重大挑戰(zhàn)。
路由器的設計目標也許是與10000個其它設備流暢交互。那么其生產商就必須維護一個由所有服務器、網關、交換機及其他(用來重現(xiàn)設備可能面臨的標準狀態(tài)與壓力狀態(tài)的)裝置組成的測試網絡嗎?
顯然,這會導致成本不菲,更別說時間的耗費了,并且如果測試一個普通路由器都如此困難,生產商如何測試最大規(guī)模電信網絡設備(例如10GB以太網交換機)的功能,又如何度量系統(tǒng)交互與需求情景對于復雜服務(例如整合語音、數(shù)據與影像的“三合一”服務)的不同影響?
這就是Spirent Communications公司與其產品Spirent TestCenter要解決的問題。它的設計目標是復雜網絡性能分析系統(tǒng),提供軟件與硬件真實模擬任何可能的網絡流量情景,以簡化并加速測試。通過在同一個應用程序中產生控制與數(shù)據層流量并收集測試結果,功能與性能測試集中于一個應用程序中。這樣做的效果是,用戶可以準確測量幾微秒量級的設備延遲時間。
獨一無二的基于Linux的高度分布式結構(在一個產品中可能分布有數(shù)百個甚至數(shù)千個運行在設備邊緣的獨立嵌入式Linux系統(tǒng))使Spirent TestCenter能夠以線路速率跟上網絡數(shù)據包流量。操作所處的位置(位于Spirent TestCenter的端口,設備處理大量輸入、輸出數(shù)據包的地方)對于系統(tǒng)性能而言十分關鍵,因為它可以調節(jié)大量位于該處的CPU并確保只有測試結果(而非原始數(shù)據)被傳送到中央控制應用程序那里。
圖為Spirent TestCenter端口處的應用程序及數(shù)據庫
使用基于SQL的開源關系數(shù)據庫作為測試結果的后端存儲,而且端口處部署有現(xiàn)場可編程門陣列(FPGA),主要來自Xilinx公司,用來處理最為性能密集的任務:產生、捕獲與分解數(shù)據包。對于大規(guī)模測試,用戶可以將多種機箱加入到安裝中,形成多達720個端口。系統(tǒng)可以捆綁到一起以提供更多端口。這樣,一個端口可依次模擬32,000個數(shù)據流,使得系統(tǒng)能夠“創(chuàng)建”由數(shù)以百萬計主機與設備組成的網絡,以測試交換機、路由器或其他設備。
為進行測試,有端口(通常不少于2個)將被連接到測試設備上的端口。用戶通過運行在相連的PC或筆記本電腦上控制應用程序進行控制。輸入命令后,F(xiàn)PGA開始大量生成數(shù)據包,有效地將交換機或路由器“置于”用戶指定的速度與流量級別的網絡中。FPGA監(jiān)控設備返回的流量,測試并分解輸入的數(shù)據包來度量延遲時間、抖動、丟包率以及數(shù)百種其它現(xiàn)象(根據測試需要),將這些數(shù)據發(fā)送給eXtremeDB內存嵌入式數(shù)據庫。
幾乎所有測試結果都由測試模塊的應用程序計算得到,盡管少部分(例如需要利用多種來源數(shù)據計算的平均值)在控制PC機中計算。在數(shù)據收集點處完成幾乎全部數(shù)據分析工作,可以充分利用分布于整個系統(tǒng)中的眾多CPU(其中一些為多核),從而提升系統(tǒng)性能。
這些測試可以傳輸?shù)男畔⒎N類多的驚人。一些用戶僅僅關注第2或第3通訊子層(參考OSI 7層模型),或測量處于更高子層狀態(tài)流量的特性。對于防火墻與其他與安全相關的設備,設備可以對數(shù)據包進行深入分析以探測出帶有病毒及其它惡意程序特征的模式(一種更加CPU密集的分析)。系統(tǒng)支持相對簡單的工業(yè)標準網絡設備測試(例如:IETF RFC 2544和2889),但更適合進行關系到多種應用程序和流量的高度復雜分析。今天,人們期待網絡能夠同時處理IPTV、Web通信以及VoIP數(shù)據。與此同時還要應付不斷變更的IPTV頻道。最困難的挑戰(zhàn)之一是運行針對這些情況(尤其是它們同時發(fā)生時)的測試。
將定制FPGA功能與軟件處理相結合,我們可以在TestCenter中完成這個任務。在軟件方面,設備廣泛利用了Linux的多線程。測試程序隔離了各種功能(例如IPTV測試、VoIP測試以及多種數(shù)據庫行為)并將它們分配給不同的線程。相比之下,許多老式測試技術只利用了一個CPU線程,我們產品中最“硬”的實時性能來自FPGA。
與FPGA硬件相比,系統(tǒng)的嵌入式軟件并非“硬”實時,它只是非??於?。我們不需要Linux的響應時間達到微秒量級,MontaVista Linux系統(tǒng)內建的Jiffy時間片管理工具對軟件需求已經是綽綽有余。
當我們在幾年前試圖將產品轉變?yōu)楝F(xiàn)在的分布式結構時,尋找一個能在端口處足夠快的進行分類、存儲以及檢索測試數(shù)據的數(shù)據庫是一個挑戰(zhàn)。我們需要一個內存式數(shù)據庫,從而避免文件I/O、緩存管理以及磁盤數(shù)據庫相關的其他開銷。系統(tǒng)性能得益于引導性的數(shù)據庫應用編程接口(API),即,嵌入代碼的API函數(shù)通過循環(huán)操作方式,一次只針對一條數(shù)據庫記錄工作,應用程序邏輯決定當前記錄行是否屬于目標集合。
SQL在測試系統(tǒng)中也占有一席之地,控制程序中包含開源的SQLite數(shù)據庫,從分布式Linux系統(tǒng)中提取的測試結果就保存在該DBMS中。之所以選擇SQLite是因為它對于這種非實時存儲足夠快,并且如果需要的話,可以“插入”一個不同的SQL數(shù)據庫作為后端??煽啃约八俣仁筁inux成為我們理想的選擇。Linux的穩(wěn)定性很好。如果有一千個端口,每個端口都有自己的Linux系統(tǒng),并假設每個分布式系統(tǒng)的平均故障時間是1000分鐘,那么整個測試平均每分鐘都會出故障,這是無法接受的。因此,對如此大規(guī)模的分布式智能設備來說,穩(wěn)定性是絕對的關鍵。
Linux環(huán)境豐富的開發(fā)工具和開源軟件組件也是主要優(yōu)點之一。例如:利用Scons構建工具可以將軟件分布在Spirent的20或30臺專用機器上,并將工作交給那些空閑的計算機。用于該產品的一種Linux工具是MontaVista公司的Application Pre-Linking,它掃描系統(tǒng)中的所有二進制文件來發(fā)現(xiàn)鏈接依賴關系。這樣就不需要在應用程序運行時動態(tài)生成鏈接信息。
Spirent TestCenter依靠定制編程的FPGA來產生和分析數(shù)據包,它同樣也可以使用開源的PCAP(Packet Capture,數(shù)據包捕獲)API來進行數(shù)據包的捕獲和存儲。結果文件可以由基于PCAP的應用程序(如:WireShark)打開并查看,從而協(xié)助追蹤bug(如:設備抖動的原因)。您說出一種Linux工具我們就可能在使用它,因為Linux基本上是一組構件的集合,TestCenter的設計則是基于這些構件的。系統(tǒng)中的處理器一般是成品的Intel x86和Cavium Network處理器。
我們產品中的另一開源組件是tcl/tk —— 開源的工具命令行語言(Tool Command Language)及GUI工具包。tcl/tk腳本在自動運行一組時分別在10%、20%、30%等線路速率情況下測量第二層性能的測試,之后自動開始其他第二層測試。
用戶只需要按下“play”同樣可以執(zhí)行更長時間的測試,因為用戶(包括制造商、認證機構以及以電信公司為代表的買方)需要從不同角度、針對多種模擬情況對網絡設備進行壓力測試,以確保設備能夠達到他們聲稱的能力。
【編輯推薦】