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
















 
 
 



 
 
 
 