两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

基于opnet的多層協(xié)議棧網(wǎng)絡(luò)設(shè)備測試方法

文檔序號(hào):7699008閱讀:407來源:國知局

專利名稱::基于opnet的多層協(xié)議棧網(wǎng)絡(luò)設(shè)備測試方法
技術(shù)領(lǐng)域
:本發(fā)明涉及通信領(lǐng)域,尤其涉及一種基于OPNET的多層協(xié)議棧網(wǎng)絡(luò)設(shè)備測試方法。
背景技術(shù)
:隨著網(wǎng)絡(luò)的快速發(fā)展,網(wǎng)絡(luò)設(shè)備的類型越來越多,交換機(jī)、路由器、集線器、網(wǎng)橋、網(wǎng)關(guān)等,其中又包括不同的品牌、型號(hào)的設(shè)備以及不同廠家的設(shè)備,由于缺少通用的規(guī)格,某些網(wǎng)絡(luò)協(xié)議未作明確規(guī)定的設(shè)備其實(shí)現(xiàn)方法各不相同,而網(wǎng)絡(luò)設(shè)備測試的前提就是將設(shè)備放置到網(wǎng)絡(luò)中。通常測試網(wǎng)絡(luò)的改變會(huì)影響到測試數(shù)據(jù)的結(jié)果,而且為測試一個(gè)設(shè)備構(gòu)建一個(gè)測試網(wǎng)未免得不償失。網(wǎng)橋可以實(shí)現(xiàn)兩個(gè)網(wǎng)段之間的數(shù)據(jù)鏈路層的協(xié)議轉(zhuǎn)換,網(wǎng)關(guān)則是應(yīng)用層之間的轉(zhuǎn)換,其它則不做協(xié)議轉(zhuǎn)換。COM(ComponentObjectModel,簡稱組件對象模型)、CORBA(CommonObjectRequestBrokerArchitecture,簡稱公共對象請求代理結(jié)構(gòu))定義了IDL(InterfaceDescriptionLanguage,簡稱接口描述語言),對于不同的設(shè)備可以使用不同的Adapter進(jìn)行解析,拆解出需要的字段,然后填充到IDL的對應(yīng)項(xiàng)來實(shí)現(xiàn)。通過軟件仿真研究網(wǎng)絡(luò)性能,減少網(wǎng)絡(luò)部署測試的開銷,但是在結(jié)構(gòu)、協(xié)議日趨復(fù)雜的網(wǎng)絡(luò)中,通過單一的軟件仿真方式,很難能夠通過仿真的方法得到可靠性驗(yàn)證。如果采用軟件仿真和硬件設(shè)備結(jié)合的方法,不僅能夠測試出設(shè)備的性能又能夠得到網(wǎng)絡(luò)的性能,從而提髙仿真的可靠性。OPNET軟件提供的ESA(ExternalSimulationAccess,簡稱外部仿真控制)接口支持仿真節(jié)點(diǎn)和實(shí)際網(wǎng)絡(luò)的連接,將真實(shí)數(shù)據(jù)導(dǎo)入到仿真網(wǎng)絡(luò),或?qū)⑻摂M仿真數(shù)據(jù)發(fā)送到真實(shí)網(wǎng)絡(luò),為網(wǎng)絡(luò)測試提供了前提條件。另外基于傳統(tǒng)的Socket通信方式在異構(gòu)系統(tǒng)中同樣能夠?qū)崿F(xiàn)互通,本發(fā)明基于此兩種方式結(jié)合,實(shí)現(xiàn)網(wǎng)絡(luò)級設(shè)備的性能測試。OPNETModeler是一款用于網(wǎng)絡(luò)仿真的軟件,能夠滿足大型復(fù)雜網(wǎng)絡(luò)的仿真需要,為技術(shù)人員提供一個(gè)網(wǎng)絡(luò)技術(shù)和產(chǎn)品開發(fā)平臺(tái),可以幫助他們設(shè)計(jì)和分析網(wǎng)絡(luò)、網(wǎng)絡(luò)設(shè)備和通信協(xié)議。所述軟件通過離散事件仿真機(jī)制提供單向和全雙工的點(diǎn)到點(diǎn)鏈路,也提供總線鏈路用以允許對任意大小的節(jié)點(diǎn)組的廣播通信,通過網(wǎng)絡(luò)域、節(jié)點(diǎn)域和進(jìn)程域?qū)崿F(xiàn)三層建模仿真。能夠模擬路由器、網(wǎng)橋、工作站,終端等網(wǎng)絡(luò)設(shè)備,同時(shí)也支持大規(guī)模異構(gòu)網(wǎng)絡(luò)組網(wǎng),特別在針對具有多層協(xié)議棧網(wǎng)絡(luò)架構(gòu)的仿真方面具有其它仿真軟件所不能比擬的優(yōu)勢,如GMPLS(GeneralizedMultiProtocolLabelSwitching,簡稱通用多協(xié)議標(biāo)記交換)網(wǎng)絡(luò),ATM(AsynchronousTransferMode,簡稱異步傳輸模式)網(wǎng)絡(luò)等。綜上所述,通過軟件仿真網(wǎng)絡(luò)測試實(shí)際的網(wǎng)絡(luò)設(shè)備能夠減少測試的成本,并且可以通過接口仿真多種協(xié)議,對于多協(xié)試棧的網(wǎng)絡(luò)結(jié)構(gòu)可以靈活地支持??紤]到前述情況,存在克服相關(guān)技術(shù)中不足的需要。
發(fā)明內(nèi)容本發(fā)明實(shí)施例要解決的技術(shù)問題是提供一種基于OPNET的多層協(xié)議棧網(wǎng)絡(luò)設(shè)備測試方法,通過商用成熟的OPNET網(wǎng)絡(luò)仿真軟件4是供外圍測試接口,將硬件接口板和真實(shí)網(wǎng)絡(luò)設(shè)備互通,測試協(xié)議開銷、協(xié)議流程等。本發(fā)明可以解決測試網(wǎng)絡(luò)硬件設(shè)備單一化,缺乏真實(shí)網(wǎng)絡(luò)模擬性能的問題,同時(shí)給出擴(kuò)展性、通用性較強(qiáng)的接口設(shè)計(jì)方法。本發(fā)明所給出的基于OPNET的多層協(xié)議棧網(wǎng)絡(luò)設(shè)備測試方法,從軟件、硬件兩個(gè)方面獨(dú)立進(jìn)行設(shè)計(jì),并給出目前廣泛流行的基于Web提交的網(wǎng)絡(luò)化處理方法。特別地,針對復(fù)雜的多層協(xié)議棧協(xié)議流程,給出兩種不同的解決方案,分別應(yīng)用于不同的測試場景。本發(fā)明利用OPNET的ESA接口,完成軟硬件平臺(tái)接口,并在內(nèi)部仿真類提供對外配置軟件接口。具體包括網(wǎng)絡(luò)測試設(shè)備硬件版的外圍接口電路以及網(wǎng)絡(luò)測試硬件的軟件接口設(shè)計(jì),^j"于單個(gè)協(xié)議的報(bào)文擴(kuò)展方法。在多層協(xié)議棧網(wǎng)絡(luò)協(xié)議中的數(shù)據(jù)流封裝和二進(jìn)制比特映射過程,并對支持分段功能的OPNET系列函數(shù)重新設(shè)計(jì)一種基于鏈表的可控仿真實(shí)現(xiàn),提高軟件網(wǎng)絡(luò)仿真的準(zhǔn)確度。基于Web應(yīng)用類型的測試方法及接口設(shè)計(jì),具體包括Struct框架下的多種技術(shù)組合,完成MVC設(shè)計(jì)才莫式。從以上技術(shù)方案中可以看出,本發(fā)明通過OPNET仿真軟件,實(shí)現(xiàn)基于網(wǎng)絡(luò)、硬件設(shè)備的測試需求,而且對于多層協(xié)議棧中目前存在的多種關(guān)鍵性問題進(jìn)行分析并給出完整的解決方法,提高通過網(wǎng)絡(luò)仿真方式測試硬件設(shè)備的可信度。在網(wǎng)絡(luò)協(xié)議內(nèi)部進(jìn)行接口擴(kuò)展,而對于實(shí)際設(shè)備無需任何改動(dòng),可以實(shí)現(xiàn)即插即測。本發(fā)明的其它特征和優(yōu)點(diǎn)將在隨后的說明書中闡述,并且,部分地從說明書中變得顯而易見,或者通過實(shí)施本發(fā)明而了解,本發(fā)明的目的和其它優(yōu)點(diǎn)可通過在縮寫的說明書、權(quán)利要求書,.以及附圖中所特別指出的結(jié)構(gòu)來實(shí)現(xiàn)和獲得。結(jié)合描述了本發(fā)明的各種實(shí)施例的附圖,根據(jù)以下對本發(fā)明的各發(fā)明的詳細(xì)描述,將更易于理解本發(fā)明的這些和其它特征,其中圖1描述了網(wǎng)絡(luò)測試的Xilinx外圍硬件板結(jié)構(gòu);圖2描述了網(wǎng)絡(luò)測試硬件的軟件接口設(shè)計(jì)方法;圖3示意性示出一種路由協(xié)議的測試消息和攜帶實(shí)際數(shù)據(jù)的方法;圖4描述了路由協(xié)議的承載的二層協(xié)議棧轉(zhuǎn)換-方洽;圖5描述了基于傳統(tǒng)電信網(wǎng)的多層協(xié)議棧的測試實(shí)現(xiàn)方法;圖6給出ATM多層協(xié)議的信令消息流程的實(shí)際數(shù)據(jù)流的封裝方法和解碼后的二進(jìn)制比特流;圖7描述了OPNET中基于分段協(xié)議的測試數(shù)據(jù)附—加方法;圖8描述了基于Web配置的設(shè)備測試設(shè)計(jì)系統(tǒng)的軟件實(shí)現(xiàn)方法;圖9示意性示出了基于Struct體系結(jié)構(gòu)下的測試軟件接口流程;圖10描述了一種基于RMI的測試網(wǎng)絡(luò)拓樸結(jié)構(gòu)。具體實(shí)施方式下面將結(jié)合附圖對本發(fā)明的實(shí)施方式進(jìn)行詳細(xì)描述。圖1描述了網(wǎng)絡(luò)測試的Xilinx外圍硬件板結(jié)構(gòu)。硬件部分在整個(gè)系統(tǒng)中完成虛擬仿真網(wǎng)絡(luò)與測試設(shè)備的連通,采用FPGA及外圍芯片實(shí)現(xiàn)了虛擬網(wǎng)絡(luò)到實(shí)際網(wǎng)絡(luò)的接口,所述接口板包含接口'模塊101和主控模塊102兩個(gè)模塊,其中接口FPGA實(shí)現(xiàn)了測試數(shù)據(jù)流解幀和組幀功能,主控FPGA需要控制多個(gè)外設(shè)接口協(xié)同工作,主控FPGA通過互聯(lián)信號(hào)線對接口FPGA進(jìn)行控制,101和102之間的互連接口是數(shù)據(jù)交互的通路。102是整個(gè)硬件接口板的控制核心,對各個(gè)硬件接口進(jìn)行了控制和調(diào)度,該部分采用了Xilinx公司的Spartan3E系列FPGA(FieldProgrammableGateArray,簡稱現(xiàn)場可編程陣列)實(shí)現(xiàn),并采用了EDK(EmbeddedDevelopmentKit,簡稱嵌入式開發(fā)套件)開發(fā)工具,在FPGA內(nèi)部嵌入了MicroBlaze32位的CPU軟核實(shí)現(xiàn)主控功能。主控FPGA控制了多個(gè)接口,分別是通過接口FPGA外掛的USB口106、串口107、E1口108、光纖口109以及百兆以夫網(wǎng)口1010。由于考慮到主控FPGA需要控制多個(gè)外設(shè)接口協(xié)同工作,所以需要在MicroBlaze上運(yùn)行uClinux操作系統(tǒng),以實(shí)現(xiàn)不同接口之間的調(diào)度,程序運(yùn)行在SDRAM上,操作系統(tǒng)鏡像及基本配置數(shù)據(jù)信息保留在FLASH上。主控FPGA采用MicroBlaze的CPU(CentralProcessUnit,簡稱中央處理器)軟核,使用EDK將uClinux移植到MicroBlaze上運(yùn)行,釆用多任務(wù)方式,每個(gè)外設(shè)接口使用一個(gè)線程,通過時(shí)間片輪轉(zhuǎn)調(diào)度方式對多個(gè)外設(shè)接口進(jìn)行控制。uClinux移植需要采用EDK軟件搭建硬件環(huán)境,使用軟件提供的串口,網(wǎng)口,SDRAM103^FLASH104的IP核,并將IP核通過OPB(On-ChipPeripheralBus,簡稱片上外圍總線)總線掛接到MicroBlaze的CPU軟核,配置并生成uClinux的BSP,完成硬件系統(tǒng)的配置,最后需要對uClinux源代碼進(jìn)行交叉編譯,產(chǎn)生可以運(yùn)行于Microblaze的uClinux操作'系統(tǒng)。硬件系統(tǒng)開始工作時(shí),利用網(wǎng)口或串口可以將uClinux#:作系統(tǒng)的代碼下載到FLASH,并在FPGA上先運(yùn)行boot引導(dǎo)程序的代碼,.以后每次系統(tǒng)啟動(dòng)都會(huì)到FLASH上的制定存儲(chǔ)空間,將操作系統(tǒng)程序拷貝到SDRAM,并乂人SDRAM開始運(yùn)4亍,完成系統(tǒng)啟動(dòng)過禾呈。系統(tǒng)互連接口通過UART(UniversalAsynchronousReceiver/Transmitter,簡稱通用異步收發(fā)器)專用芯片控制,UART接口芯片一般引腳較多,內(nèi)含許多輔助模塊和一些輔助功能,采用全雙工形式收發(fā)w逸信的發(fā)送方和接收方各自有獨(dú)立的時(shí)鐘,傳輸?shù)乃俾视呻p方約定,通常以低電平作為起始位,高電平作為停止位,中間可傳輸5~8比特?cái)?shù)據(jù)和一個(gè)比特奇偶校驗(yàn)位,是否存在奇偶校驗(yàn)位以及數(shù)據(jù)比特的長度由通信雙方約定,一幀數(shù)據(jù)傳輸完畢后可以繼續(xù)傳輸下一幀數(shù)據(jù)。.目前的FPGA板均提供數(shù)字時(shí)鐘管理(Xilinx的全部FPGA均具有這種特性)。Xilinx推出的最先進(jìn)的FPGA提供數(shù)字時(shí)鐘管理和相位環(huán)路鎖定。相位環(huán)路鎖定能夠提供精確的時(shí)鐘綜合,且能夠降低抖動(dòng),并能夠?qū)崿F(xiàn)過濾功能。圖2描述了網(wǎng)絡(luò)測試硬件的軟件接口設(shè)計(jì)方法。在基于面向?qū)ο?0的設(shè)計(jì)過程中,無論是類還是方法通常都是相互關(guān)聯(lián)的。當(dāng)一個(gè)類的實(shí)現(xiàn)依賴于另外一個(gè)類時(shí),構(gòu)成耦合關(guān)系。對于軟件摸擬網(wǎng)絡(luò)的情況下,至少需要采用配置信息類201,仿真接口類202和仿真內(nèi)核類203三個(gè)類來實(shí)現(xiàn)。在配置信息類201和仿真接口類202之間釆用松耦合,減少它們之間的交互信息,使得外部用戶不需要知道另外一個(gè)類的任何實(shí)現(xiàn)細(xì)節(jié)。向?qū)Ψ降膶ο蟀l(fā)送消息來進(jìn)行訪問數(shù)據(jù)的屬性,通過對象的協(xié)作來完成操作。在仿真接口類202和仿真內(nèi)核類203之間由于為仿真所共同擁有控制權(quán),采用緊耦合方式,通過節(jié)約訪問的周期使得系統(tǒng)運(yùn)行的更快。雖然一旦屬性的實(shí)現(xiàn)發(fā)生變化就需要修改對應(yīng)的代碼,但是在處理負(fù)荷的時(shí)候,即使是訪問數(shù)據(jù)時(shí)可以節(jié)省出幾毫秒,面對成百上千對象的時(shí)候,就會(huì)節(jié)省出大量的時(shí)間。此時(shí)202和203依賴于實(shí)現(xiàn),也就是可以直接訪問另一個(gè)類的數(shù)據(jù)屬性。除非某些必要的情況,盡量少采用緊耦合的代碼,否則會(huì)造成系統(tǒng)鄉(xiāng)良護(hù)的逸重負(fù)擔(dān),相應(yīng)的業(yè)務(wù)代碼和測試代碼庫都會(huì)隨著規(guī)模的增大迅速膨脹,不適合后期軟件維護(hù)。松耦合的網(wǎng)絡(luò)測試仿真網(wǎng)絡(luò)設(shè)計(jì)需要在接口定義了一組方法和屬性,通過類和組件來共同實(shí)現(xiàn)內(nèi)聚的行為。在仿真配置類和仿真接口類分別定義接口的方法.在參與的類中,定義一套通用功能集,除了支持接口以外,不需要?jiǎng)e的類知道任何有關(guān)仿真內(nèi)核的事情。通過基于WEB的GUI(GraphicUserInterface,簡稱圖艱用戶」接口)獲得仿真的配置信息,GUI可以顯示出來實(shí)現(xiàn)的接口,以及任何實(shí)現(xiàn)了這些接口的類,但是除了實(shí)現(xiàn)兩個(gè)接口之外,GUI對于這些泉其它一無所知。通過為類和組件實(shí)現(xiàn)接口的方式增強(qiáng)模型和源碼中的一致性。在傳統(tǒng)的軟件開發(fā)過程中,如IEEE12207(http:〃www.ieee.org),將建模作為一個(gè)或者多個(gè)順序包含進(jìn)來。而釆用RUP(RationalUnifiedProcess,簡稱Rational統(tǒng)一過程,通過演化方式工作的建模規(guī)則以特定細(xì)節(jié)來描述軟件的結(jié)構(gòu)關(guān)系。通過特定的用戶界面組件(如窗體、HTML(HyperTextMarkupLanguage,簡稱為HTML)頁面或報(bào)表)獲得外部.用戶酵置參數(shù)的輸入,具體而言可以通過Microsoft窗體或者圖形用戶界面GUI方式或者通過瀏覽器作為外部信息的載體,通過仿真"l矣口類的處理,傳遞到仿真內(nèi)核中來。使得仿真的進(jìn)行與具體的系統(tǒng)工作方式無關(guān),而不會(huì)影響用例的邏輯。收到仿真請求時(shí),為窗體和報(bào)表等主要用戶界面元素添加邊界元素,所謂邊界元素,是指窗體、才艮表、HTML頁面,或系統(tǒng)界面等與執(zhí)行者(Actor)交互的軟件元素。可以通過三層建模方式,利用接口類的映射高效地完成不同的測試項(xiàng)目的雷求,提高仿真軟件模型的通用性。對于基于分布式多機(jī)計(jì)算情況,需要通過分層架構(gòu)根據(jù)仿真定制規(guī)則,同時(shí)應(yīng)用安全引擎等軟件組件,Web服務(wù)和消息總線等中間件以及大型機(jī)和應(yīng)用服務(wù)器硬件節(jié)點(diǎn)來實(shí)現(xiàn)。在仿真類之間將端口簡化以提供或請求單個(gè)接口,簡化端口間的關(guān)系和組件的內(nèi)部信息建模,通過類等物理結(jié)構(gòu)實(shí)現(xiàn)該邏輯結(jié)構(gòu)。通過自頂向下的方法開發(fā)組件模型,早期確定軟件模型的發(fā)展。根據(jù)Martin,Newkirk和Koss2003的《AgileSoftwareJDevelo,pment》中的設(shè)計(jì)原則,由于組件內(nèi)部的通信通常是內(nèi)存中對象"^間簡單地發(fā)送消息,而組件之間的通信則首先將消息以及參數(shù)轉(zhuǎn)化為數(shù)槔進(jìn)行傳送,再轉(zhuǎn)化回消息。通過在接口仿真類和外部配置參數(shù)類之間構(gòu)成無環(huán)依賴圖(AcyclicDependencies),減少流進(jìn)和流出類的寸言息流。而在仿真平臺(tái)內(nèi)部則形成公共閉包(CommonClosure),這樣可以減少同類變化的影響。組件內(nèi)一個(gè)類的變化不會(huì)影響組件夕P部的類,形成高度內(nèi)聚的組件類。通過實(shí)現(xiàn)公共接口的方法進(jìn)行適當(dāng)?shù)奈桑庋b對外部組件的訪問,從而實(shí)現(xiàn)模塊化的測試系統(tǒng)結(jié)構(gòu)。圖3示意性示出一種路由協(xié)議的測試消息和攜帶實(shí)際數(shù)據(jù)的方法。OPNET自帶的OSPF模塊主進(jìn)程為OSPF—V2,該進(jìn)程具有一個(gè)子進(jìn)程ospf_process,OSPF協(xié)議的主要功能由本進(jìn)程完成。而進(jìn)程ospf_process又具有2個(gè)子進(jìn)禾呈ospf—interface一v2和ospf—virtual—interface—v2,這兩個(gè)子進(jìn)禾呈又各自包含一個(gè)名為ospf—neighbor—v2的子進(jìn)程。OSPF的初始路由表可設(shè)置為由外部導(dǎo)入,程序運(yùn)行后,IP模塊會(huì)向OSPF模塊發(fā)送初始化'指令,OSPF隨后會(huì)進(jìn)行相應(yīng)的初始化操作,創(chuàng)建相應(yīng)的子進(jìn)程。此后OSPF—V2進(jìn)程收到不同的事件(中斷,包括收到OSPF消息和故障等)會(huì)交給子進(jìn)程處理。OSPF協(xié)議具有5種格式的報(bào)文,包括Hello包,DatabaseDescription包,LSR包,LSU包和LSAck包,每中類型的l艮文都具有相同的包頭。在OPNETospf模塊中的集中消息報(bào)文-分別對應(yīng)的報(bào)文才各式為302"ospf—hello—v2",303"ospf—Is—update—v2",304"ospf—ls—ack一v2",305"ospf—Is—requst—v2",306"ospf—dbase—desc—v2"。在仿真數(shù)據(jù)的末尾位附加實(shí)際數(shù)據(jù)流比特來傳遞仿真的實(shí)際數(shù)據(jù)Hello包302具體分3個(gè)域,8比特的"type",integer型;160比對爭的"fields",structure型;184比凈爭的"headerinfo",information型,OSPF包頭中,hello包的type值為1。其中Neighbor域?yàn)楸竟?jié)點(diǎn)在最近的一個(gè)RouterDeadlnterval時(shí)間內(nèi)收到過hello包的所有鄰居節(jié)點(diǎn)集合,用其router—id標(biāo)識(shí),長度不固定。在OPNETOSPF模塊中,由接口管理進(jìn)程ospf—interface—v2或ospf—virtual一interface—v2創(chuàng)建,創(chuàng)建函lt為ospf_hellocreate,接收到hello包后讀取包中type域的值,確定為hello包;取出fields域,進(jìn)行包頭鑒定,F(xiàn)ields域本為結(jié)構(gòu)體OspfT—Hello—Pkt—Fields,進(jìn)行包頭鑒定時(shí),將指向fields域的指針強(qiáng)制轉(zhuǎn)換為指向結(jié)構(gòu)體OspfT—Pkt—Header_Fields。從包中讀取鄰居節(jié)點(diǎn)列表,將收到的hello包的第4個(gè)域開始讀取鄰居節(jié)點(diǎn)信息。由于OPNETOSPF模塊中的hello包固定包含3個(gè)域,故創(chuàng)建hello包時(shí)將附加的neighbor信息附著在hello包的尾部,故/犬第4個(gè)域開始讀耳又Real—Data。DDesc包306分為3個(gè)域,8比特的"type",integer型;64比特的"fields",structure型;184比特的"headerinfo",information型。主要描述的是發(fā)送節(jié)點(diǎn)的LSA狀況,其創(chuàng)建兩數(shù)為ospf—message—lsr—create。需要注意的是該函凄t只創(chuàng)建該包的靜態(tài)部分,包括OSPF包頭和DDsequencenumber/InterfaceMTU/Options/I/M/MS/等域的信息。而本地LSA信息(包中的LSA.Header部分)會(huì)在包創(chuàng)建完成后由函ltospf—message—lsa—header—add添力口(每次只添加1個(gè)LSAHeader)。OSPF才莫塊中鄰居管理進(jìn)程和游息處理進(jìn)程(ospf_process)都會(huì)創(chuàng)建并發(fā)送該包。其中,鄰居管理進(jìn)程在鄰居狀態(tài)到達(dá)Ex—Start后會(huì)主動(dòng)向鄰居發(fā)送DDesc包,此時(shí)發(fā)送該包的主要目的是進(jìn)行DD序列號(hào)同步,故只需要?jiǎng)?chuàng)建一個(gè)包,不需要附加本地的LSA信息。而在消息處理進(jìn)程中,當(dāng)收到鄰居節(jié)點(diǎn)發(fā)來的DDesc包時(shí),需要回發(fā)DDesc包,以作為隱式確認(rèn)。此時(shí)才艮據(jù)本地LSA的狀況確認(rèn)是否需要往包中添加LSAHeader。LSR包305分3個(gè)域,8比特的"type",integer型;0比特的"fields",structure型;184比凈爭的"headerinfo",information型。當(dāng)兩個(gè)沖目鄰節(jié)點(diǎn)在完成DDesc包發(fā)送過程后,若一個(gè)節(jié)點(diǎn)發(fā)現(xiàn)對方擁有自己沒有的LSA,或者對方的LSA比自己的LSA更新,則向其發(fā)送LSR包,請求LSA。所請求的LSA由LSType,LinkSfatelD,AdvertisingRouterID三者標(biāo)識(shí)。與DDesc包相同的是,OPNET中LSR報(bào)文的創(chuàng)建函數(shù)ospf—message—lsr—create也只是創(chuàng)建包的靜態(tài)部分,即OSPF包頭。根據(jù)本地的LSA數(shù)據(jù)情況和收到的DDesc情況,由函數(shù)ospf—message—Is—request—add添力口i青求列表。在fe戈內(nèi)S乏洪時(shí),以及鄰居狀態(tài)達(dá)到Loading時(shí)會(huì)發(fā)出LSR包。LSU包303分3個(gè)域,8比特的"type",integer型;32比特的"fields",structure型;184比4爭的"headerinfo",information聖+。包含有LSA完全信息,可以供收到LSU包的節(jié)點(diǎn)更新本地的LSA庫。而OPNET中該才艮文的創(chuàng)建函數(shù)ospf—message—lsucreate只創(chuàng)建該包的包頭部分OSPFHeader和#LSA。而LSA數(shù)捧的添力。由函數(shù)15ospf—message—lsa—add完成,同時(shí)該函數(shù)還會(huì)根據(jù)添加的LSA數(shù)量設(shè)置弁LSA的值(#LSA的內(nèi)存空間由創(chuàng)建函數(shù)分配)。在鄰居管理進(jìn)程進(jìn)行鄰居LSU重傳,信息處理進(jìn)程收到LSR包,以及泛洪時(shí)會(huì)創(chuàng)建該包。節(jié)點(diǎn)在收到LSU包時(shí),首先對收到的包進(jìn)行合法性檢驗(yàn),如通過則將包中的LSA取出,若本節(jié)點(diǎn)中不具有該LSA,則將其載入本地LSA數(shù)據(jù)庫中;若本地具有該LSA,但收到的LSA'更新,則用收到的LSA替換掉本地LSA數(shù)據(jù)庫中的LSA實(shí)體;否則丟棄收到的LSA。LSAck包304分3個(gè)域,8比特的"type",integer型;0比特的"fields",structure型;184比特的"headerinfo",information型。該報(bào)文的創(chuàng)建函數(shù)只會(huì)創(chuàng)建包的靜態(tài)部分OSPF包頭,而包的凈荷部分一個(gè)或多個(gè)的LSAHeader由函凄tospf—message—lsa—header—add添加。當(dāng)節(jié)點(diǎn)在收到一個(gè)LSU包之后會(huì)創(chuàng)建并發(fā)送LSA包,在最后一個(gè)域附加類型為unsignedcha產(chǎn)類型的實(shí)際lt據(jù)部分。RFC2328中共定義了5種類型的LSA,分別是'Router-LSAs、Network-LSAs、Summary-LSAs(IPnetwork),Summary-LSAs(ASBR)、AS-external-LSAs,OPNET都作了完整實(shí)現(xiàn)。在其它不同的應(yīng)用場合對OSPF的LSA進(jìn)行了相應(yīng)的流量擴(kuò)展,具體的操作類似OSPF的五個(gè)基本報(bào)文,操作方式類似,在此不再贅述。圖4描述了路由協(xié)議的承載的二層協(xié)議棧轉(zhuǎn)換方法v在OPNET仿真軟件中IP數(shù)據(jù)包的數(shù)據(jù)結(jié)構(gòu)采用IpT—Dgram一Fields類型表示,在Payload數(shù)據(jù)字段后附件實(shí)際數(shù)據(jù)的指針進(jìn)行傳遞,為簡化實(shí)現(xiàn)在ARP模塊中對IP包進(jìn)行轉(zhuǎn)化,此處的轉(zhuǎn)化僅限于IP包頭的轉(zhuǎn)化,其凈荷部分的轉(zhuǎn)化將在應(yīng)用層的相應(yīng)模塊中完成。由于高層并僅在OSPF模塊中進(jìn)行了轉(zhuǎn)化功能設(shè)計(jì),故在轉(zhuǎn)換IP包時(shí),僅對承載OSPF協(xié)議的IP包進(jìn)行轉(zhuǎn)換。其中標(biāo)準(zhǔn)IP比特流采用unsignedchar類型數(shù)組的數(shù)據(jù)結(jié)構(gòu)。轉(zhuǎn)換的數(shù)據(jù)填入過程與OSPF的數(shù)據(jù)填入過程大致相同,需要注意的是,由于OPNET本身采用的包拆分機(jī)制的限制,被拆分的包將不能轉(zhuǎn)換成標(biāo)準(zhǔn)的比特流,對于仿真所采用^JSar系列函數(shù)需要重新實(shí)現(xiàn),從而實(shí)現(xiàn)分段的實(shí)際數(shù)據(jù)流恢復(fù)。通過轉(zhuǎn)換函數(shù)將調(diào)用轉(zhuǎn)化函數(shù)完成包格式的轉(zhuǎn)換,并對轉(zhuǎn)換后的數(shù)據(jù)進(jìn)行封裝。由于包的目的地可能是實(shí)際網(wǎng)絡(luò)中的節(jié)點(diǎn),也可能是仿真節(jié)點(diǎn),故發(fā)給MAC層的數(shù)據(jù)中既包含OPNET包的數(shù)據(jù),又包含有標(biāo)準(zhǔn)比特流數(shù)據(jù)。在OPNET包的包尾添加一個(gè)大小為0的structure型無名域。將轉(zhuǎn)換出的比特?cái)?shù)據(jù)流放入OPNET包的該域中,在接收端可以通過對該域的判斷來確定該包是否為轉(zhuǎn)換得到的包。圖5描述了基于傳統(tǒng)電信網(wǎng)的多層協(xié)議棧的測試實(shí)現(xiàn)方法。圖中所示為經(jīng)典的ATM協(xié)議棧結(jié)構(gòu),501為應(yīng)用層數(shù)據(jù)、路由報(bào)文或者信令消息的轉(zhuǎn)換實(shí)際數(shù)據(jù),圖3中所示的OSPF報(bào)文轉(zhuǎn)操處于為501內(nèi)部的單個(gè)路由協(xié)議位置,502為CPCS(CommonPartConvergenceSublayer,簡稱公共部分會(huì)聚子層)的PDU(ProtocolDataUnit,簡稱協(xié)議數(shù)據(jù)單元)對高層應(yīng)用數(shù)據(jù)進(jìn)行適配,503為AAL(ATMAdaptationLayer,簡稱ATM適配層)或者SSCt)P連接的實(shí)際數(shù)據(jù)流,其中AAL又分為五種類型,用于不同QoS等級的業(yè)務(wù)連接的維護(hù),SSCOP(ServiceSpecificConnectionOrientedIrotocd,簡稱業(yè)務(wù)特定面向連接協(xié)議)主要提供傳輸信息長度可達(dá)64k字節(jié)可靠性傳輸過程,為ATM信令提供可靠的數(shù)據(jù)傳送服務(wù)。504為ATM的53字節(jié)信元的實(shí)際數(shù)據(jù)。505為適配到傳輸通道后包含傳輸控制比特的實(shí)際數(shù)據(jù)部分。每一層都實(shí)現(xiàn)了仿真數(shù)據(jù)到實(shí)際數(shù)據(jù)的轉(zhuǎn)換,效率比較低,506表示從應(yīng)用層到物理層統(tǒng)一生成的實(shí)際數(shù)據(jù),傳輸效率較高。但是由于每一層實(shí)際上也要進(jìn)行內(nèi)存的釋放,分配操作,操作比較頻繁,也會(huì)帶來響應(yīng)的開銷,在實(shí)際應(yīng)用上,如果每一層的邏輯功能不是很復(fù)雜,后者在協(xié)議轉(zhuǎn)換方面具有較高的效率。而如果要測試中間層的協(xié)議功能,則需要保留該層的實(shí)際數(shù)據(jù)轉(zhuǎn)換,而避免每一層次的內(nèi)存調(diào)整。圖6給出ATM多層協(xié)議的信令消息流程的實(shí)際數(shù)據(jù)流的封裝方法和解碼后的二進(jìn)制比特流。其中601表示CPCS協(xié)議的數(shù)據(jù)單元,PAD602為填充的負(fù)載,為保證下面邏輯分層ATM層的測試數(shù)據(jù)為48字節(jié)的整數(shù)倍,PAD為047字節(jié)的填充比特,將數(shù)據(jù)補(bǔ)充為符合低層需求的數(shù)據(jù)單元。603為CPCS協(xié)議的UU(User-to-UserIndication,簡稱用戶到用戶指示)用于消息類裂的區(qū)分。CPI(CommonPartIndicator,簡稱公共部分指示)604用于解淼CPCS頭和尾中后繼部分的CPCS功能,整個(gè)CPCS協(xié)議數(shù)據(jù)單元的長度可變,具體承載信息的長度由Length字段605表示,606CRC(CyclicRedundancyCheck,簡稱循環(huán)冗余校驗(yàn))用于傳輸錯(cuò)誤糾正。OPNET中的ATM才莫型可以完成ATM信令連接、建立^各由以及傳輸用戶數(shù)據(jù)的功能,實(shí)現(xiàn)了用戶面、控制面的功能,模型中的節(jié)點(diǎn)包括ATM交換機(jī)、網(wǎng)關(guān)、ATM終端、IP終端。AAL層的流程如下高層信令報(bào)文首先進(jìn)入SSCOP進(jìn)程,添加尾部信息;之后同高層路由或應(yīng)用包一樣,在AAL5進(jìn)程中,為高層包尾部增加UU、CPI、CRC和PAD等信息;之后完成對高層包的分片;當(dāng)收到低層包時(shí),進(jìn)入AAL5進(jìn)程完成分片重組,去掉尾部信息,如果是信令包還需要進(jìn)入SSCOP進(jìn)程,去掉尾部消息字節(jié)。AAL層除轉(zhuǎn)發(fā)高層消息外,為了建立SSCOP連接,本層的SSCOP進(jìn)程也會(huì)發(fā)送、接收與'SSCOP連接有關(guān)的消息。OPNET中的AAL的處理操作包括來自高層的中斷(遠(yuǎn)程中斷),應(yīng)用層數(shù)據(jù)包和ATM層數(shù)據(jù)包等。ATM信令進(jìn)程在CC進(jìn)程的Est—Req狀態(tài)處有兩個(gè)中斷,分別為AMSC—AA—CPCS—CREATE_Req類型和AMSC_AA—ESTAB—Req類型的原語。對于前者,在ams—aal—disp—v3進(jìn)程中,根據(jù)收到的原語,從狀態(tài)從dispatch跳轉(zhuǎn)到cpcs/sar狀態(tài),在這個(gè)狀態(tài),創(chuàng)建并喚起ams—aal5—c他n—v3進(jìn)程。對于后者,在ams_aal_disp—v3進(jìn)程中,根據(jù)該原語,從狀喬從dispatch跳轉(zhuǎn)到setup狀態(tài)創(chuàng)建并喚起ams—aal_sscop進(jìn)程并向低層發(fā)送BGNPDU,向高層發(fā)送Establish指示。在sscop中,喚起AAL5進(jìn)程,觸發(fā)數(shù)據(jù)包發(fā)送進(jìn)程。高層包進(jìn)入connintrpt狀態(tài),首先確定收到報(bào)文的類型,如果是高層信令消息,則喚起sscop進(jìn)程、處理之后,再喚起AAL5進(jìn)程,否則喚起aal5進(jìn)程(to一atm狀態(tài))。對于低層數(shù)據(jù)報(bào)文,首先進(jìn)入connirpt狀態(tài),喚起aal5進(jìn)程,確定收到報(bào)文的類型,19如果為SSCOP報(bào)文,喚醒根進(jìn)程aa1—disp(SAALPDU)狀態(tài),再喚醒SSCOP進(jìn)程(在Data—Xfer狀態(tài),有很多種可能,其中只有ams—sscop—sd_pdu—receive將包發(fā)送至高層),如果為非SSCOP包,直接發(fā)送至高層。609為ATM信令承載協(xié)議SSCOP的消息族中的BGN消息607的二進(jìn)制實(shí)際數(shù)據(jù)比特流,共有48字節(jié),虛線框起的第一部分為BGN消息,后面部分為CPCS的尾部,中間為PAD,N(SQ)=01,第5字節(jié)01=00000001,故PL,,Rsvd=00,PDUType=0001,N(MR)=0003E8(little-endian)表示發(fā)送窗口大小為1000。最后4個(gè)字節(jié)為int類型的CRC,CRC=0xl6F2,由于是little-endian則為F2160000,0800為length,釆用短整型類型存儲(chǔ),實(shí)際為8,00為CPl,01為UU指示指示。類似地,比特流6010中虛線框起的部分為SSCOP協(xié)議BGAK消息,對應(yīng)字段解碼方式同609,此時(shí)消息類型為2,且沒有N(SQ)字段,該二進(jìn)制比特流采用無符號(hào)字符型指針存卞者于消息后,在仿真中進(jìn)行傳遞。注意,對于仿真網(wǎng)絡(luò)測試的方法,最容易引起的問題就是內(nèi)存泄漏,首先由于采用公用的接口,可能接口兩側(cè)的程序代碼所用內(nèi)存分配工具不同,無法對接口另一次的內(nèi)存進(jìn)行釋蘇,會(huì)引發(fā)泄漏。另一方面,收到的消息中的附加的實(shí)際字段在拷貝、刪除時(shí)需要測試人員額外注意,對該內(nèi)存塊進(jìn)行釋放。在協(xié)議負(fù)載提交至應(yīng)用層時(shí),不要采用動(dòng)態(tài)內(nèi)存分配的形式,通過基于堆棧的靜態(tài)存儲(chǔ)在應(yīng)用層才能夠順利地進(jìn)行釋放。如果內(nèi)存泄漏的問題不j主意,會(huì)使得測試的速度變慢,嚴(yán)重時(shí)還會(huì)影響測試的準(zhǔn)確度,因此需要測試人員倍加20注意。不同的內(nèi)存泄漏方式都會(huì)降低測試的性能,fa內(nèi)存泄漏的不同途徑以及內(nèi)存泄漏的測試方法不應(yīng)構(gòu)成對于本發(fā)明的限制。圖7描述了OPNET中基于分段協(xié)議的測試數(shù)據(jù)附加方法。對于需要分段與重組的網(wǎng)絡(luò)協(xié)議,OPNET仿真環(huán)境下所采用的為SAR系列函數(shù),下表列出了幾個(gè)常用的操作方法<table>tableseeoriginaldocumentpage21</column></row><table>在發(fā)送端可能會(huì)對某些包分段傳輸,也可能是傳輸一個(gè)完整的包。如果對某個(gè)包進(jìn)行分段傳輸,那么會(huì)先利用SAR作分段處理,處理之后一個(gè)數(shù)據(jù)分組變成多個(gè)包。在接收端接收到一個(gè)包的時(shí)候就需要確定該報(bào)是否是一個(gè)分片報(bào)文還是一個(gè)完整的報(bào)文。用SAR函數(shù)即可實(shí)現(xiàn)該功能。如果判斷該包是個(gè)分段,那么就需要與S的另外一些分段重組才能得到一個(gè)完整的包。以ATM協(xié)議族為例,發(fā)送端在ATM層完成對48字節(jié)的分片添加5字節(jié)頭部信息的功能;接收端,ATM層完成對53字節(jié)的信元去掉5字節(jié)頭部信息的任務(wù)。與VP/VC交換有關(guān)的功能在OPNET自帶模型中的ATM_Switch-和ATM_trans模塊完成。圖7中701-704分別表示被分段的數(shù)據(jù)包,在QPNET中不能夠支持每個(gè)分片包的實(shí)際數(shù)據(jù)攜帶,唯一的實(shí)現(xiàn)方式就是將實(shí)際數(shù)據(jù)轉(zhuǎn)換為二進(jìn)制比特流存放在仿真消息包的最后705。如此操作帶來的問題就是傳輸測試時(shí)不易控制,還需要獲知業(yè)務(wù)的開始、終結(jié)信息,操作較為復(fù)雜,而且在模擬分組丟失的場景下一旦最后一個(gè)分組丟失將會(huì)嚴(yán)重影響網(wǎng)絡(luò)的性能準(zhǔn)確性。本發(fā)明通過自定義的凝:據(jù)結(jié)構(gòu)進(jìn)行數(shù)據(jù)的分段重組操作,而放棄使用OPNET的SAR系列內(nèi)核函數(shù)。在數(shù)據(jù)分割時(shí),在仿真OPNET報(bào)文分片的同時(shí),生成,自定義仿真包,同時(shí)通過RealData指針每次取出48字節(jié)的數(shù)據(jù)部份,作為OP包的RealData部份發(fā)送。通過自定義的緩沖數(shù)據(jù)結(jié)構(gòu),可以實(shí)現(xiàn)任意形式的實(shí)際數(shù)據(jù)附著,706-709為實(shí)際數(shù)據(jù)——映射的二進(jìn)制比特流,存放在每個(gè)分片報(bào)文的RealData部分。在接收端重組時(shí),首先從SAR緩沖中取出一個(gè)部分得到length,UU,Payload等,通過創(chuàng)建一個(gè)字符型指針構(gòu)建鏈表形式的數(shù)據(jù)結(jié)構(gòu),內(nèi)含大小為65535的字符型數(shù)組作為分片buffer,每一個(gè)表項(xiàng)包括VPI、VCI、^^片數(shù)量,重組恢復(fù)后將原有RealData部分將取出交由高層處理。當(dāng)收到分片后,遍歷列表判斷分片所攜帶的VPI、VCI是否與列表中的某個(gè)表項(xiàng)吻合。如果吻合,則認(rèn)為接收到同一個(gè)包中的另一個(gè)分片,并且將其插入分片buffer中。再判斷是否是AMSC—ATM—PAYLOAD—TYPE—DATA—EOP(OPNET中數(shù)據(jù)結(jié)構(gòu)的內(nèi)部標(biāo)識(shí))。如果是,則從分片buffer中提取出數(shù)據(jù)信息,并且經(jīng)過CRC校驗(yàn)判斷接收并重組后的數(shù)據(jù)報(bào)是否正確。由于CPCS本層協(xié)議可能同時(shí)收到路由、信令以及業(yè)務(wù)分組,通常根據(jù)UU字段判斷這個(gè)包應(yīng)該發(fā)送到SAAL(SSCOP)還是高層應(yīng)用處理。圖8描述了基于Web配置的設(shè)備測試設(shè)計(jì)系統(tǒng)的軟件實(shí)現(xiàn)方法。整個(gè)系統(tǒng)的設(shè)計(jì)結(jié)構(gòu)不同于單純基于硬件設(shè)備仿真的測試接口,由于網(wǎng)絡(luò)的標(biāo)準(zhǔn)規(guī)范通常有典型的幾種,而對于外部通常需要統(tǒng)一的接口,而仿真內(nèi)核會(huì)隨測試網(wǎng)絡(luò)和測試設(shè)備不同而術(shù)同,予是需要模塊間具有足夠的解耦合,才能夠靈活地完成多個(gè)測試工作,從而達(dá)到代碼重用,而不是每個(gè)測試軟件,測試網(wǎng)絡(luò)都是一次性,從而提高代碼和測試協(xié)議棧的重用性。具體分為接口類801,舉統(tǒng)類g02,過程類803,領(lǐng)域類804,持久類805,數(shù)據(jù)源(DB)806五個(gè)^t塊組成。其中801封裝了對系統(tǒng)邏輯的訪問。UI(UserInterface,簡稱用戶接口)類提供了訪問系統(tǒng)的接口,該類提供對系統(tǒng)的外部系統(tǒng)的訪問。可以通過JSP或者Swing類庫實(shí)現(xiàn)圖形用戶界面窗體賣現(xiàn)Ur類,通過基于Web和COBRA(CommonObjectRequestBrokerArchitecture,簡稱公共對象請求代理體系結(jié)構(gòu))包裝類來實(shí)現(xiàn)系統(tǒng)接口。804實(shí)現(xiàn)和仿真領(lǐng)域相關(guān)的內(nèi)容,關(guān)于具體仿真的網(wǎng)絡(luò)、技術(shù),以尿單個(gè)對象的行為。803也稱為測試控制類,實(shí)現(xiàn)仿真的邏輯,諸如事件的觸發(fā),定時(shí)的維護(hù)等操作。負(fù)責(zé)和其它邏輯功能實(shí)體之間的協(xié)作。805封裝了存儲(chǔ)、檢索和刪除對象的功能,而不會(huì)暴露低層存儲(chǔ)技術(shù)的細(xì)節(jié)。802為應(yīng)用程序提供了特定于操作系統(tǒng)的功能,適過封裝特定于OS的功能,將軟件與操作系統(tǒng)隔離,以提高平臺(tái)的可移植性。層內(nèi)允許類間的協(xié)作,可以互相發(fā)送消息,協(xié)作發(fā)生在具有連接的兩個(gè)層之間,但是不能進(jìn)行跨層的交互,通過限制消息的流動(dòng)來降低系統(tǒng)的耦合度來提高系統(tǒng)的可移植性。因?yàn)橥ǔ=缑娴男薷牟荒軌蛴绊憙?nèi)部邏輯的處理。系統(tǒng)層實(shí)現(xiàn)了最基礎(chǔ)的功能,所以所有的類都與其進(jìn)行交互,通過IPC(Inter-ProcessCommunication,簡稱進(jìn)禾呈間通4言),作為和其他機(jī)器上的類協(xié)作的一種服務(wù)。在C/S仿真架構(gòu)中,801通過802的IPC服務(wù)向804發(fā)送仿真指令。對于多機(jī)分布式仿真情況,804通過IPC向其他領(lǐng)域類發(fā)送消息。IPC服務(wù)通常通過中間件來進(jìn)行。在設(shè)備測試外部接口中采用UML2.0(UnifiedModelingLanguag,簡稱統(tǒng)一建模語言v2版本)中GS(GeneralizationSet,簡稱泛化集)的概念,可以構(gòu)建LDM(LogicalDataModel,簡稱邏輯軟據(jù)模型),確定數(shù)據(jù)實(shí)體,以及它們的屬性和職責(zé)。確定不同實(shí)體間的關(guān)系,如關(guān)聯(lián)、組成、聚合、繼承等關(guān)系。根據(jù)不同實(shí)體所扮演的角色不同來分離實(shí)體,通常每個(gè)實(shí)體在系統(tǒng)中具有一種或多種角色,而且每種角色都有一定的生命周期,只在該周期內(nèi)適用(Start和JEnd屬性),每種角色執(zhí)行其特定的行為。這樣可以應(yīng)用到更為廣泛的環(huán)境中去,因?yàn)槠洳⒎轻槍τ谔囟ōh(huán)境。同時(shí)可以復(fù)用已有成果,4是高測試平臺(tái)開發(fā)效率。在實(shí)現(xiàn)窗體、頁面或者報(bào)表的用戶界面類中可以包含MFC(MicrosoftFoundationClasses,簡稱微軟基礎(chǔ)類庫)、JSP,Servlets或者通過Swing等用戶界面類庫實(shí)現(xiàn)的窗體類。圖9示意性示出了基于Struct體系結(jié)構(gòu)下的測試軟件接口流程。Struts是Apache基金會(huì)Jakarta項(xiàng)目組的一個(gè)OpenSource項(xiàng)目,Stmcts框架的核心是一個(gè)彈性的控制層,基于如JavaServlets,JavaBeans,ResourceBundles與XML(extensibleMarkupLanguage,擴(kuò)展標(biāo)記語言)等標(biāo)準(zhǔn)技術(shù),以及JakartaCommons的一些類庫,在網(wǎng)絡(luò)測試方面具有靈活的技術(shù)擴(kuò)展能力。Struts有一組相互協(xié)作的類(組件)、Serlvet組成?;赟tmts構(gòu)架的Web應(yīng)用程序基本上符合JSPModel2的設(shè)計(jì)標(biāo)準(zhǔn),可以說是一個(gè)傳統(tǒng)MVC(ModelViewController,簡稱模型視圖控制器)設(shè)計(jì)模式的一種變化類型。Struts是MVC的一種實(shí)現(xiàn),它將Servlet和JSP標(biāo)記(屬于J2EE規(guī)范)用作實(shí)現(xiàn)的一部分。Struts繼承了MVC的各項(xiàng)特性,并根據(jù)J2EE的特點(diǎn),做出相應(yīng)的變化與擴(kuò)展。用戶正在瀏覽一個(gè)用Struts技術(shù)構(gòu)建的網(wǎng)站主頁,主頁上有個(gè)登陸表單,用戶填好登陸名和密碼,單擊"登陸"按鈕,就激活了下述過程。首先在901,系統(tǒng)進(jìn)行初始化,創(chuàng)建內(nèi)部數(shù)據(jù)結(jié)構(gòu)以及守護(hù)進(jìn)程,等待連接。當(dāng)收到客戶請求902后,確定該連接是否包含HTTP(TyperTextTransferProtocol,簡稱超文本傳輸協(xié)議)請求,如果"是",則將用戶的請求以HTTP方式傳輸?shù)椒?wù)器上,接受請求的是ActionServlet,后續(xù)工作交由控制器Servlet處環(huán)。否則返回902,等待下一個(gè)用戶請求,ActionServlet請求找到用戶請求的Action后,首先將用戶輸入的表單參數(shù)打包成一個(gè)ActionFrom對象,這個(gè)ActionFrom對象其實(shí)也就是一個(gè)JavaBean,里面包含兩個(gè)字段,分別是用戶名和密碼。執(zhí)行ActionFrom對象中的Validate方'法。若Validate方法執(zhí)行有錯(cuò),則返回904。否則,繼續(xù)執(zhí)行908。在908,通過仿真接口處理,根據(jù)struts-config.xml中的配置信息決定是否要接受該請求,并確定服務(wù)器上是否有用戶請求的操作,此處用戶請求操作應(yīng)為登陸操作。如果沒有,則返回一個(gè)用戶請求無效的'出錯(cuò)信息,對該請求不估文任何處理。系統(tǒng)生成一個(gè)用戶所請求的對應(yīng)A(jtion的實(shí)例對象,將前面的ActionFrom對象傳遞給仿真內(nèi)核執(zhí)行9011,運(yùn)行Execute()方法。在執(zhí)行Exectue()方法時(shí),可以調(diào)用后臺(tái)模型驗(yàn)證登陸名和密碼是否正確等信息。在9010,確定仿真是否結(jié)束,如果結(jié)果為"否",則在9011繼續(xù)等待。當(dāng)仿真結(jié)束后,會(huì)生成以和ActionForward類型的對象909并將之返回給ActionServlet,通知控制器內(nèi)核仿真已經(jīng)結(jié)束,并將仿真的結(jié)果打包傳遞給ActionServlet,通過JSP視圖905在客戶瀏覽器上顯示。通過面向數(shù)據(jù)和面向?qū)ο蟮南㈤g往返,能調(diào)整到輸入/輸出的交互,輸入信息通過表單形式實(shí)現(xiàn)Web服務(wù),采用XML作為參數(shù),通過圖仿真拓樸,配置仿真表單,并將結(jié)果返回。對于組件內(nèi)部對象,需要發(fā)送給它們以對象或數(shù)據(jù)作為參數(shù)和返回值的消息。圖IO描述了一種基于RMI的測試網(wǎng)絡(luò)拓樸結(jié)構(gòu)。其中,1001為運(yùn)行OPNET的仿真計(jì)算機(jī),1002-1004為仿真節(jié)點(diǎn),1005-1007為硬件節(jié)點(diǎn)。采用控制結(jié)構(gòu),傳送結(jié)構(gòu)分層的設(shè)計(jì)方法,通過XML在硬件節(jié)點(diǎn)之間傳送數(shù)據(jù),Web服務(wù)器上的軟件通過RMI(RemoteMethodInvocation,簡稱遠(yuǎn)程方法調(diào)用)協(xié)議與應(yīng)用服務(wù)器上的軟件進(jìn)行通信,物理硬件節(jié)點(diǎn)之間的連接處于較低層次,可用通過以太網(wǎng)相連。構(gòu)建出分層網(wǎng)絡(luò)模型,在具有Ethernet構(gòu)造型硬件連接和帶有RMI構(gòu)造型的軟件實(shí)體對象間同時(shí)建立連接關(guān)系。硬件連接之間的動(dòng)作依賴于軟件實(shí)體間的控制消息。通過XML配置文件來配置必需的應(yīng)用行為,綁定表單驗(yàn)證,業(yè)務(wù)邏輯處理和顯示組件。每個(gè)節(jié)點(diǎn)的動(dòng)作行為有仿真節(jié)點(diǎn)的行為而定,如倒換、資源分配、重路由等操作。雖然結(jié)合附圖描述了本發(fā)明的實(shí)施方式,但是本4頁域內(nèi)熟練的技術(shù)人員可以在所附權(quán)利要求的范圍內(nèi)做出各種變形或修改。2權(quán)利要求1、一種基于OPNET的多層協(xié)議棧網(wǎng)絡(luò)設(shè)備測試方法,其特征在于包括以下內(nèi)容網(wǎng)絡(luò)測試設(shè)備硬件版的外圍接口電路;網(wǎng)絡(luò)測試硬件的軟件接口設(shè)計(jì);協(xié)議擴(kuò)展測試方法;多層協(xié)議棧的轉(zhuǎn)換方法及數(shù)據(jù)流封裝和二進(jìn)制比特映射過程;具有分段功能的硬件協(xié)議測試;基于Web應(yīng)用類型的測試方法及接口設(shè)計(jì)。2、根據(jù)權(quán)利要求1所述的基于OPNET的多層協(xié)議棧網(wǎng)絡(luò)設(shè)備測試方法,其特征在于所述網(wǎng)絡(luò)測試設(shè)備硬件版的外圍接口電路,具體包括FPGA主控板和接口板;外掛E1、串口、網(wǎng)口接口;FLASH和SDRAM存儲(chǔ);UART控制串口。3、根據(jù)權(quán)利要求1所述的基于OPNET的多層協(xié)議棧網(wǎng)絡(luò)設(shè)備測試方法,其特征在于所述網(wǎng)絡(luò)測試硬件的軟件接口設(shè)計(jì),具體包括配置接口類、仿真接口類和仿真內(nèi)核類之間的分工;不同功能類之間的松耦合設(shè)計(jì);公共數(shù)據(jù)庫的網(wǎng)絡(luò)訪問策略;高度內(nèi)聚的內(nèi)部功能組件。4、根據(jù)權(quán)利要求1所述的基于OPNET的多層協(xié)議棧網(wǎng)絡(luò)設(shè)備測試方法,其特征在于所述協(xié)議擴(kuò)展測試方法,具體包括OPNET仿真軟件中的OSPF協(xié)議進(jìn)程和報(bào)文的修改;仿真包域中實(shí)際數(shù)據(jù)所在報(bào)文索引的動(dòng)態(tài)獲得方法;對于OSPF中的Hello報(bào)文、DD報(bào)文、LSR報(bào)文、LSU報(bào)文和LSAck報(bào)文的處理方法。5、根據(jù)權(quán)利要求1所述的基于OPNET的多層協(xié)議棧網(wǎng)絡(luò)設(shè)備測試方法,其特征在于所述多層協(xié)議棧的轉(zhuǎn)換方法及數(shù)據(jù)流封裝和二進(jìn)制比特映射過程,具體包括逐層協(xié)議映射的方式;在物理傳輸層對仿真報(bào)文的統(tǒng)一映射的方式;ATM多層協(xié)議棧(信令、路由、AAL、SSCOP、ATM等)協(xié)議轉(zhuǎn)換;SSCOP協(xié)議中的BGN消息、BGAK消息的二進(jìn)制比特流實(shí)例。6、根據(jù)權(quán)利要求1所述的基于OPNET的多層協(xié)議棧河絡(luò)設(shè)備測試方法,其特征在于所述具有分段功能的硬件協(xié)議測試,具體'包括OPNET中的SAR系列函數(shù)實(shí)現(xiàn)對外不可見的解決方法;實(shí)際數(shù)據(jù)流基于鏈表的自定義實(shí)現(xiàn)方式;以ATM協(xié)議為例,描述了分片后的實(shí)際協(xié)議數(shù)據(jù)—包的重組方法;7、根據(jù)權(quán)利要求1所述的基于OPNET的多層協(xié)議棧網(wǎng)絡(luò)設(shè)備測試方法,其特征在于所述基于Web應(yīng)用類型的測試方法及"l妾口設(shè)計(jì),具體包括軟件測試網(wǎng)絡(luò)平臺(tái)接口的獨(dú)立設(shè)計(jì);基于Web和COBRA的封裝接口;Struct體系結(jié)構(gòu)下的測試軟件接口流程;MVC模式下的網(wǎng)絡(luò)配置測試方法;基于RMI的分層測試網(wǎng)絡(luò)拓樸結(jié)構(gòu)。全文摘要本發(fā)明涉及通信領(lǐng)域,本發(fā)明實(shí)施例公開了一種基于OPNET的多層協(xié)議棧網(wǎng)絡(luò)設(shè)備測試方法。本發(fā)明實(shí)施例方法包括網(wǎng)絡(luò)測試設(shè)備硬件版的外圍接口電路;網(wǎng)絡(luò)測試硬件的軟件接口設(shè)計(jì);協(xié)議擴(kuò)展測試方法;多層協(xié)議棧的轉(zhuǎn)換方法及數(shù)據(jù)流封裝和二進(jìn)制比特映射過程;具有分段功能的硬件協(xié)議測試;基于Struct架構(gòu)下的Web應(yīng)用類型的測試方法及接口設(shè)計(jì)。根據(jù)本發(fā)明的方法,通過商用成熟的OPNET網(wǎng)絡(luò)仿真軟件提供外圍測試接口,將硬件接口板和真實(shí)網(wǎng)絡(luò)設(shè)備互通,測試協(xié)議開銷、協(xié)議流程等。本發(fā)明通過OPNET仿真軟件,實(shí)現(xiàn)網(wǎng)絡(luò)、硬件設(shè)備的測試需求,而且對于多層協(xié)議棧中目前存在的多種關(guān)鍵性問題進(jìn)行分析并給出完整的解決方法,提高通過網(wǎng)絡(luò)仿真方式測試硬件設(shè)備的可信度。本發(fā)明可以解決測試網(wǎng)絡(luò)硬件設(shè)備單一化,缺乏真實(shí)網(wǎng)絡(luò)模擬性能的問題,同時(shí)給出擴(kuò)展性、通用性較強(qiáng)的接口設(shè)計(jì)方法。文檔編號(hào)H04L12/26GK101656636SQ20091007912公開日2010年2月24日申請日期2009年3月4日優(yōu)先權(quán)日2009年3月4日發(fā)明者張永軍,彬李,沛羅,郭秉禮,顧畹儀,黃善國申請人:北京郵電大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
1
井冈山市| 鲁山县| 龙井市| 安多县| 托克逊县| 门源| 荔浦县| 虹口区| 宣恩县| 启东市| 精河县| 武陟县| 成安县| 平遥县| 绥宁县| 和平区| 武邑县| 甘洛县| 理塘县| 长治市| 萍乡市| 阿合奇县| 沐川县| 介休市| 泽库县| 南乐县| 古蔺县| 瓦房店市| 九江市| 牡丹江市| 鱼台县| 德清县| 邳州市| 佛教| 大邑县| 泰州市| 南澳县| 安化县| 长兴县| 安陆市| 金秀|