張奎,袁海軍
(中國(guó)電子科技集團(tuán)公司第四十一研究所,山東青島,266555)
ISO/IEC為協(xié)議一致性測(cè)試制定了多種抽象測(cè)試方法,由于遠(yuǎn)程測(cè)試法具有良好的環(huán)境適應(yīng)性,目前的網(wǎng)絡(luò)協(xié)議一致性測(cè)試系統(tǒng)大都是基于這一方法設(shè)計(jì)的[1]?,F(xiàn)有的測(cè)試系統(tǒng)通常是由若干臺(tái)測(cè)試設(shè)備搭建而成的,其中一種設(shè)備負(fù)責(zé)發(fā)送控制消息,其他設(shè)備負(fù)責(zé)執(zhí)行測(cè)試[2]。這種系統(tǒng)結(jié)構(gòu)復(fù)雜,部署成本高。測(cè)試的執(zhí)行需要所有設(shè)備協(xié)同完成,不同設(shè)備之間需要同步與協(xié)調(diào),延長(zhǎng)了測(cè)試周期。功能模塊劃分不清晰,導(dǎo)致測(cè)試系統(tǒng)的可擴(kuò)展性不好,比如當(dāng)添加新的測(cè)試協(xié)議類型時(shí),對(duì)系統(tǒng)的完善變得困難而復(fù)雜[3][4]。
本文闡述了一種以一臺(tái)CPCI工控機(jī)作為系統(tǒng)平臺(tái)的網(wǎng)絡(luò)協(xié)議一致性測(cè)試系統(tǒng),結(jié)構(gòu)簡(jiǎn)單,不需要考慮測(cè)試設(shè)備的同步問題,容易操作,將系統(tǒng)軟件和硬件的操作分別設(shè)計(jì)為不同的測(cè)試模塊,降低了系統(tǒng)開發(fā)和維護(hù)的難度。
本系統(tǒng)以一臺(tái)CPCI工控機(jī)作為系統(tǒng)硬件平臺(tái),軟件模塊包括虛擬端口模塊、測(cè)試數(shù)據(jù)生成模塊、數(shù)據(jù)導(dǎo)入/導(dǎo)出模塊、數(shù)據(jù)偵聽模塊、數(shù)據(jù)分析模塊,硬件模塊包括數(shù)據(jù)收發(fā)模塊、數(shù)據(jù)偵聽模塊、數(shù)據(jù)存儲(chǔ)模塊,其中,數(shù)據(jù)收發(fā)模塊包括以太網(wǎng)模塊和收發(fā)模塊。
系統(tǒng)硬件采用CPCI工控機(jī)平臺(tái),上位機(jī)通過CPCI總線與其他硬件模塊進(jìn)行數(shù)據(jù)交換,包括測(cè)試模塊的控制信息、模塊的測(cè)試結(jié)果、測(cè)試中捕獲的數(shù)據(jù)等。以太網(wǎng)模塊包括以太網(wǎng)接口電路、FPGA、存儲(chǔ)器和CPU系統(tǒng),提供數(shù)據(jù)收發(fā)的通道。收發(fā)模塊包括信號(hào)發(fā)射電路和信號(hào)接收電路。
系統(tǒng)軟件完成人機(jī)交互、硬件控制等功能。軟件采用層次化的設(shè)計(jì)方法,分為硬件控制層、驅(qū)動(dòng)層、應(yīng)用層。硬件控制層由獨(dú)立的板載微處理器系統(tǒng)來實(shí)現(xiàn),以消息應(yīng)答的形式與主機(jī)進(jìn)行通信,滿足高實(shí)時(shí)性的控制要求。驅(qū)動(dòng)層為應(yīng)用層提供板級(jí)控制的接口,使應(yīng)用層與板級(jí)控制隔離,從而提高了系統(tǒng)的可靠性及可維護(hù)性。應(yīng)用層提供人機(jī)交互的界面,主要完成人機(jī)交互、消息序列的生成與處理、測(cè)試數(shù)據(jù)生成與分析、生成測(cè)試報(bào)告、支持文件保存與管理等功能。
本系統(tǒng)的功能模塊主要包括虛擬端口模塊、測(cè)試數(shù)據(jù)生成模塊、數(shù)據(jù)導(dǎo)入/導(dǎo)出模塊、數(shù)據(jù)收發(fā)模塊、數(shù)據(jù)偵聽模塊、數(shù)據(jù)分析模塊。系統(tǒng)設(shè)計(jì)如圖1所示。
測(cè)試數(shù)據(jù)生成模塊:選擇測(cè)試用例,編輯測(cè)試用例的各種參數(shù),保存參數(shù)設(shè)置,并根據(jù)測(cè)試用例編輯模塊保存的配置參數(shù),生成標(biāo)準(zhǔn)的測(cè)試報(bào)文。測(cè)試數(shù)據(jù)生成模塊能夠保存當(dāng)前的參數(shù)配置,供再次測(cè)試使用;測(cè)試參數(shù)的配置可以采用手動(dòng)方式進(jìn)行,也可以采用導(dǎo)入配置文件的方式進(jìn)行;測(cè)試軟件將根據(jù)測(cè)試用例,生成測(cè)試報(bào)文。
圖1 系統(tǒng)設(shè)計(jì)框圖
數(shù)據(jù)導(dǎo)入/導(dǎo)出模塊:數(shù)據(jù)導(dǎo)入模塊構(gòu)造標(biāo)準(zhǔn)的以太網(wǎng)數(shù)據(jù)幀,該幀的目的地址是在虛擬端口模塊中所添加的路由項(xiàng)中的目的地址,該目的地址的網(wǎng)關(guān)為虛擬端口,然后將其提交給虛擬端口。當(dāng)發(fā)送測(cè)試數(shù)據(jù)時(shí),使用的是數(shù)據(jù)導(dǎo)入模塊;當(dāng)接收測(cè)試數(shù)據(jù)時(shí),使用的是數(shù)據(jù)導(dǎo)出模塊。導(dǎo)入和導(dǎo)出數(shù)據(jù)時(shí),都需要將數(shù)據(jù)封裝為標(biāo)準(zhǔn)的以太網(wǎng)幀。上述數(shù)據(jù)導(dǎo)入和導(dǎo)出的區(qū)別在于:數(shù)據(jù)導(dǎo)入時(shí),目的地址和源地址是可以任意設(shè)置,僅需要確保目的地址的網(wǎng)關(guān)是虛擬端口。數(shù)據(jù)導(dǎo)出時(shí),目的地址設(shè)置為虛擬端口的地址。
虛擬端口模塊:為物理測(cè)試端口創(chuàng)建一個(gè)與之對(duì)應(yīng)的虛擬端口,為其配置網(wǎng)絡(luò)參數(shù),并創(chuàng)建以該虛擬端口為網(wǎng)關(guān)的路由。虛擬端口是一個(gè)虛擬的以太網(wǎng)設(shè)備,它并不完全具備一個(gè)標(biāo)準(zhǔn)的網(wǎng)絡(luò)設(shè)備具備的所有功能,因此,它是一個(gè)非標(biāo)準(zhǔn)的網(wǎng)絡(luò)設(shè)備。虛擬端口對(duì)外提供標(biāo)準(zhǔn)的讀寫接口,其他模塊可以使用寫文件的方式向其發(fā)送數(shù)據(jù)、使用讀文件的方式讀取存儲(chǔ)在其中的數(shù)據(jù)。所有待發(fā)送和接收到的數(shù)據(jù)都將被保存在虛擬端口的內(nèi)置鏈表中,供下一級(jí)接口讀取。采用虛擬端口的目的是為了降低模塊間的耦合性,在這種功能劃分的情況下,測(cè)試數(shù)據(jù)生成模塊僅負(fù)責(zé)向下層接口輸出標(biāo)準(zhǔn)幀格式的數(shù)據(jù),而不必關(guān)心硬件的工作模式。
配置虛擬端口的IP地址;
修改ARP表,添加一條靜態(tài)ARP項(xiàng),該ARP項(xiàng)中的目的IP地址和目的MAC地址與數(shù)據(jù)導(dǎo)入模塊中設(shè)置的參數(shù)保持一致;
添加一條目的地址的網(wǎng)關(guān)是該虛擬端口的路由,目的地址與數(shù)據(jù)導(dǎo)入模塊中設(shè)置的參數(shù)保持一致。
數(shù)據(jù)收發(fā)模塊:包括FPGA控制電路、網(wǎng)絡(luò)接口電路,作為測(cè)試系統(tǒng)與被測(cè)試實(shí)現(xiàn)進(jìn)行交互的接口。該模塊讀取虛擬端口中的幀數(shù)據(jù),然后將幀數(shù)據(jù)的凈荷部分提取出來;在FPGA電路的控制下,經(jīng)過網(wǎng)絡(luò)接口電路將提取到凈荷部分發(fā)送到鏈路中,同時(shí)也將來自DUT的數(shù)據(jù)提交給千兆網(wǎng)絡(luò)接口。其中,F(xiàn)PGA控制電路控制數(shù)據(jù)的接收和發(fā)送;網(wǎng)絡(luò)接口電路配備以太網(wǎng)物理層收發(fā)器,支持10M/100M/1000M以太網(wǎng)信號(hào)的發(fā)送和接收。數(shù)據(jù)收發(fā)模塊采用數(shù)據(jù)轉(zhuǎn)發(fā)的工作模式,即對(duì)所有流經(jīng)的數(shù)據(jù)的格式不做任何處理:在發(fā)送時(shí),提供一條數(shù)據(jù)發(fā)送的鏈路;在接收時(shí),將收到的數(shù)據(jù)保存下來,供下一級(jí)接口使用。
數(shù)據(jù)偵聽模塊:檢測(cè)是否有新的數(shù)據(jù)到達(dá),如果有,則讀取該數(shù)據(jù),并提交給下一級(jí)模塊。否則,繼續(xù)檢測(cè)。當(dāng)讀取到數(shù)據(jù)后,對(duì)收到的數(shù)據(jù)進(jìn)行過濾,僅提交與當(dāng)前測(cè)試類型匹配的數(shù)據(jù)。由于在實(shí)際的網(wǎng)絡(luò)中測(cè)試時(shí),物理端口也會(huì)收到來自其他非目的設(shè)備的數(shù)據(jù),為了有效的區(qū)分有用的測(cè)試數(shù)據(jù),這里采用多個(gè)特征數(shù)據(jù)相結(jié)合的方式進(jìn)行數(shù)據(jù)的過濾。由于在同一時(shí)刻,在每個(gè)端口僅執(zhí)行一種類型的測(cè)試,并且收發(fā)數(shù)據(jù)的源端和目的端是確定的,因此,這里使用“源MAC地址+目的MAC地址+源IP地址+目的IP地址+協(xié)議類型”的過濾方式過濾數(shù)據(jù)。
數(shù)據(jù)分析模塊:從虛擬端口中提取測(cè)試幀,將接收到的反饋數(shù)據(jù)與標(biāo)準(zhǔn)的反饋數(shù)據(jù)進(jìn)行對(duì)比,根據(jù)對(duì)比結(jié)果,生成測(cè)試報(bào)告。
本文首先介紹了協(xié)議一致性測(cè)試系統(tǒng)的現(xiàn)狀,然后提出了一種網(wǎng)絡(luò)協(xié)議一致性測(cè)試系統(tǒng)的設(shè)計(jì)方案,詳細(xì)介紹了該測(cè)試系統(tǒng)中的模塊劃分以及各模塊的功能。本系統(tǒng)將軟件和硬件分別設(shè)計(jì)為不同的測(cè)試模塊,降低了系統(tǒng)開發(fā)和維護(hù)的難度。其中,采用由軟件生成測(cè)試數(shù)據(jù)的方式,當(dāng)需要更新測(cè)試協(xié)議類型時(shí),只需要按照系統(tǒng)設(shè)計(jì)的規(guī)范創(chuàng)建新的測(cè)試用例,就可以執(zhí)行新的協(xié)議測(cè)試,這使得系統(tǒng)具有良好的可擴(kuò)展性。當(dāng)需要添加新的測(cè)試協(xié)議時(shí),在不影響以前的功能的前提下,降低了系統(tǒng)的開發(fā)成本;同時(shí),可以向處于工作狀態(tài)中的網(wǎng)絡(luò)發(fā)送數(shù)據(jù),或者捕獲來自網(wǎng)絡(luò)的數(shù)據(jù),在測(cè)試的過程中不會(huì)影響網(wǎng)絡(luò)的正常運(yùn)行。本方案可以滿足網(wǎng)絡(luò)協(xié)議一致性測(cè)試的實(shí)際需求。