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