




摘要:計(jì)算機(jī)網(wǎng)絡(luò)課程具有高度的實(shí)踐性,應(yīng)將傳統(tǒng)的基于課堂的講授式教學(xué)轉(zhuǎn)變?yōu)榛趯?shí)驗(yàn)室的操作性教學(xué)。目前,大多數(shù)本科高校采用eNSP或PacketTracer進(jìn)行計(jì)算機(jī)網(wǎng)絡(luò)仿真實(shí)驗(yàn)教學(xué),此類方法的優(yōu)勢在于操作簡便,但僅能進(jìn)行粗顆粒度仿真實(shí)驗(yàn),無法深入觀察協(xié)議執(zhí)行的細(xì)節(jié),限制了學(xué)生的體驗(yàn)和理解。為解決這一問題,提出了一種結(jié)合粗顆粒度與細(xì)顆粒度的計(jì)算機(jī)網(wǎng)絡(luò)實(shí)驗(yàn)教學(xué)方法。該方法在eNSP或PacketTracer的基礎(chǔ)上,利用OPNET設(shè)計(jì)細(xì)顆粒度仿真實(shí)驗(yàn),通過協(xié)議建模和C語言編程,幫助學(xué)生深入理解協(xié)議的設(shè)計(jì)與工作流程。教學(xué)實(shí)踐結(jié)果表明,結(jié)合粗細(xì)顆粒度的實(shí)驗(yàn)教學(xué)方法在網(wǎng)絡(luò)配置、程序設(shè)計(jì)及協(xié)議理解等多個(gè)評價(jià)指標(biāo)上均優(yōu)于傳統(tǒng)方法,有助于學(xué)生全面掌握網(wǎng)絡(luò)協(xié)議的核心內(nèi)容。
關(guān)鍵詞:網(wǎng)絡(luò)仿真;網(wǎng)絡(luò)協(xié)議;OPNET;eNSP;PacketTracer
中圖分類號:G642
文獻(xiàn)標(biāo)識碼:A
文章編號:1009-3044(2025)15-0007-06
0引言
計(jì)算機(jī)網(wǎng)絡(luò)是電子信息類和計(jì)算機(jī)類專業(yè)的必修課程,兼具理論與實(shí)踐的特點(diǎn)。該課程涵蓋大量概念、協(xié)議、設(shè)備及操作,具備高度的實(shí)踐性,因此傳統(tǒng)的基于黑板或PPT的講授式教學(xué)難以滿足學(xué)生對實(shí)際操作的需求。學(xué)生的反饋表明,他們更傾向于通過實(shí)際操作來理解網(wǎng)絡(luò)的結(jié)構(gòu)、原理和運(yùn)行機(jī)制。因此,將傳統(tǒng)的課堂講授式教學(xué)轉(zhuǎn)變?yōu)榛趯?shí)驗(yàn)室的操作性教學(xué),增加實(shí)驗(yàn)環(huán)節(jié),使學(xué)生能夠近距離觀察網(wǎng)絡(luò)設(shè)備的工作過程,通過閱讀和編寫代碼深入理解網(wǎng)絡(luò)協(xié)議的運(yùn)行機(jī)制,對于提升學(xué)生對網(wǎng)絡(luò)工作原理的理解具有重要意義。
近年來,教學(xué)一線工作者一直對計(jì)算機(jī)網(wǎng)絡(luò)課程的實(shí)驗(yàn)教學(xué)進(jìn)行改革探索,在實(shí)驗(yàn)教學(xué)方法、實(shí)驗(yàn)和實(shí)踐教學(xué)體系建設(shè)等方面取得了一些成果。具體的,鐘輝[1]在工程教育認(rèn)證背景下探討了網(wǎng)絡(luò)實(shí)驗(yàn)方案設(shè)計(jì)方法,提出以Linux系統(tǒng)為實(shí)驗(yàn)節(jié)點(diǎn)的網(wǎng)絡(luò)實(shí)驗(yàn)組網(wǎng)平臺,采用具體事例和實(shí)驗(yàn)場景提高實(shí)驗(yàn)可操作性。朱曄[2]在微課基礎(chǔ)上采用翻轉(zhuǎn)課堂的教學(xué)模式,分為課前學(xué)習(xí)微課視頻、課中實(shí)踐操作、課后鞏固提升三個(gè)階段。王小春[3]和于子甲[4]把PacketTracer模擬器引入到計(jì)算機(jī)網(wǎng)絡(luò)的實(shí)驗(yàn)教學(xué),通過仿真實(shí)驗(yàn)讓學(xué)生直觀感受實(shí)驗(yàn)效果,加深對理論知識的理解度。朱劍林[5]介紹了北京郵電大學(xué)“開放式虛擬仿真實(shí)驗(yàn)教學(xué)平臺”在計(jì)算機(jī)網(wǎng)絡(luò)實(shí)驗(yàn)教學(xué)中的應(yīng)用。類似的,李楠、王煜、阿喜達(dá)也分別采用NS3、OMNET、PacketTracer等仿真軟件輔助計(jì)算機(jī)網(wǎng)絡(luò)課程的實(shí)驗(yàn)教學(xué)[6-8],根據(jù)不同的教學(xué)內(nèi)容把實(shí)驗(yàn)分為理論驗(yàn)證實(shí)驗(yàn)、網(wǎng)絡(luò)配置實(shí)驗(yàn)、綜合設(shè)計(jì)實(shí)驗(yàn)等類型。
除了具體的實(shí)驗(yàn)技術(shù)和實(shí)驗(yàn)案例方面的改革之外,一些學(xué)者也對計(jì)算機(jī)網(wǎng)絡(luò)實(shí)驗(yàn)或?qū)嵺`教學(xué)體系的構(gòu)建進(jìn)行了探索。黃山[9]提出了三維四層的實(shí)踐教學(xué)體系,三維包括“實(shí)踐創(chuàng)新能力、訓(xùn)練層次、實(shí)踐課程與實(shí)驗(yàn)項(xiàng)目”,四層教學(xué)目標(biāo)包括“基礎(chǔ)訓(xùn)練層、提高訓(xùn)練層、綜合訓(xùn)練層、創(chuàng)新創(chuàng)業(yè)層”。鄭洋[10]將多層次模糊評價(jià)模型引入到計(jì)算機(jī)網(wǎng)絡(luò)教學(xué)系統(tǒng)中,提出了四維度實(shí)踐教學(xué)體系,包括“高校信息集合、學(xué)生信息集合、實(shí)踐學(xué)生信息、學(xué)生上課內(nèi)容”。馬志彬[11]提出了由五個(gè)子體系構(gòu)成的計(jì)算機(jī)網(wǎng)絡(luò)實(shí)踐教學(xué)體系,包括“實(shí)踐教學(xué)保障體系、實(shí)踐教學(xué)目標(biāo)體系、實(shí)踐內(nèi)容體系、實(shí)踐管理體系、實(shí)踐評價(jià)體系”,這種分類方法對于計(jì)算機(jī)網(wǎng)絡(luò)實(shí)踐教學(xué)體系構(gòu)建具有一定的啟示作用。王勝[12]指出當(dāng)前的計(jì)算機(jī)網(wǎng)絡(luò)實(shí)踐教學(xué)體系存在教學(xué)定位不合理、教學(xué)內(nèi)容缺乏實(shí)戰(zhàn)性、教師隊(duì)伍滯后、教學(xué)質(zhì)量監(jiān)控體系不完善等問題,提出了基于項(xiàng)目導(dǎo)向的實(shí)踐教學(xué)體系,分四步(目標(biāo)、內(nèi)容、保障、評價(jià))構(gòu)建實(shí)踐教學(xué)體系。類似的,參考文獻(xiàn)[13-16]分別從實(shí)踐教學(xué)方法、實(shí)踐教學(xué)管理、實(shí)驗(yàn)室建設(shè)等方面提出了計(jì)算機(jī)網(wǎng)絡(luò)實(shí)驗(yàn)實(shí)踐教學(xué)體系的建設(shè)思路。焦炳連[17]把工程化實(shí)踐教學(xué)引入計(jì)算機(jī)網(wǎng)絡(luò)的教學(xué)環(huán)節(jié),提出了基于工程化的實(shí)踐教學(xué)體系構(gòu)架。朱立才[18]結(jié)合地方性應(yīng)用型本科高校的教學(xué)實(shí)際,分析了計(jì)算機(jī)網(wǎng)絡(luò)實(shí)踐教學(xué)體系構(gòu)建需要考慮的因素,包括理論教學(xué)和實(shí)踐教學(xué)的定位、實(shí)驗(yàn)室建設(shè)與管理、專業(yè)實(shí)習(xí)與就業(yè)的對接、網(wǎng)絡(luò)認(rèn)證與考核、信息資源庫建設(shè)等方面。
總結(jié)計(jì)算機(jī)網(wǎng)絡(luò)的實(shí)驗(yàn)教學(xué)現(xiàn)狀可以發(fā)現(xiàn),現(xiàn)有的計(jì)算機(jī)網(wǎng)絡(luò)實(shí)驗(yàn)教學(xué)在區(qū)分度和顆粒度方面仍存在不足。理想的實(shí)驗(yàn)教學(xué)應(yīng)具備不同層級的區(qū)分度(如演示性、驗(yàn)證性、設(shè)計(jì)性、創(chuàng)新性實(shí)驗(yàn))和顆粒度(粗顆粒度與細(xì)顆粒度實(shí)驗(yàn))。通過分層次、分等級及分類型地設(shè)計(jì)實(shí)驗(yàn)題目,可以幫助學(xué)生從不同視角和不同難度層次理解網(wǎng)絡(luò)工作流程,從而加深對網(wǎng)絡(luò)協(xié)議的理解度。因此,本文提出一種結(jié)合粗顆粒度與細(xì)顆粒度的計(jì)算機(jī)網(wǎng)絡(luò)實(shí)驗(yàn)教學(xué)方法,分別基于eNSP或PacketTracer和OPNET設(shè)計(jì)粗細(xì)顆粒度網(wǎng)絡(luò)仿真實(shí)驗(yàn),旨在通過兩種仿真工具的優(yōu)勢互補(bǔ),幫助學(xué)生建立宏觀與微觀視角,全面理解計(jì)算機(jī)網(wǎng)絡(luò)的運(yùn)行機(jī)制。
1粗顆粒度網(wǎng)絡(luò)仿真實(shí)驗(yàn)
目前大多數(shù)本科高校都是基于華為eNSP或思科PacketTracer進(jìn)行計(jì)算機(jī)網(wǎng)絡(luò)實(shí)驗(yàn)教學(xué)。eNSP是華為研發(fā)的一款免費(fèi)仿真軟件,使用圖形化操作界面,采用即拿即用的工作方式,各種網(wǎng)絡(luò)設(shè)備,比如交換機(jī)、路由器、工作站、連接線等都是以圖標(biāo)的形式提供給用戶,用戶只需要用這些圖標(biāo)連接起來構(gòu)成網(wǎng)絡(luò)拓?fù)洌⑴渲孟鄳?yīng)的端口參數(shù)即可讓網(wǎng)絡(luò)運(yùn)行起來。eNSP非常簡單易操作,能夠快速高效地構(gòu)建仿真網(wǎng)絡(luò),非常適用于實(shí)驗(yàn)教學(xué)和網(wǎng)絡(luò)培訓(xùn)。一個(gè)基于eNSP設(shè)計(jì)的IP網(wǎng)絡(luò)實(shí)驗(yàn)案例如圖1-圖4所示,實(shí)驗(yàn)場景為某高校網(wǎng)絡(luò)中心購買了新的華為路由器(AR2220),該路由器通過兩臺華為交換機(jī)(S3700、S5700)分別連接兩個(gè)處室,圖1為網(wǎng)絡(luò)拓?fù)鋱D,圖2為處室主機(jī)配置IP地址,圖3顯示在命令行窗口使用ping命令檢測兩臺PC機(jī)的連通性,圖4演示了使用抓包工具在路由器接口抓包的結(jié)果,也就是使用ICMP協(xié)議的ping命令的請求和響應(yīng)工作流程。該案例演示了如何建立網(wǎng)絡(luò)模型,如何配置IP地址,以及ping和抓包的過程。
與eNSP功能類似,PacketTracer是思科公司發(fā)布的一個(gè)輔助學(xué)習(xí)工具,為學(xué)習(xí)者學(xué)習(xí)計(jì)算機(jī)網(wǎng)絡(luò)原理與技術(shù)、設(shè)計(jì)和配置網(wǎng)絡(luò)項(xiàng)目,以及排除網(wǎng)絡(luò)故障提供了一個(gè)簡單易行的模擬環(huán)境。用戶可以直接使用拖放的方式建立網(wǎng)絡(luò)拓?fù)洌⑹褂脠D形配置界面或命令行配置界面對網(wǎng)絡(luò)設(shè)備進(jìn)行配置和測試,還可以在軟件提供的模擬模式下觀察數(shù)據(jù)包在網(wǎng)絡(luò)中傳輸過程的動畫演示。PacketTracer可以跟蹤網(wǎng)絡(luò)中數(shù)據(jù)傳輸過程,捕獲數(shù)據(jù)傳輸過程中產(chǎn)生的數(shù)據(jù)包,查看分析協(xié)議處理數(shù)據(jù)的詳情,從協(xié)議封裝層次和封裝格式等角度進(jìn)行分析。圖5-圖6演示了一個(gè)基于PacketTracer建立的點(diǎn)到點(diǎn)鏈路網(wǎng)絡(luò)及其配置過程,以及網(wǎng)絡(luò)工作時(shí)的動畫演示和數(shù)據(jù)捕獲過程。
需要說明的是,eNSP和PacketTracer分別由華為公司和思科公司開發(fā),兩者的設(shè)計(jì)目的都是為了學(xué)習(xí)者在沒有網(wǎng)絡(luò)硬件環(huán)境支持的情況下,通過虛擬仿真實(shí)驗(yàn)學(xué)習(xí)網(wǎng)絡(luò)技術(shù),從而培養(yǎng)網(wǎng)絡(luò)工程師,兩者的理念、功能和性能是類似的,都可以用于網(wǎng)絡(luò)工程師的培訓(xùn)和認(rèn)證。但由于分屬于不同的公司,所以eNSP和PacketTracer所使用的仿真設(shè)備模型庫(路由器、交換機(jī)等)以及與之相匹配的仿真軟件環(huán)境和操作命令集是不同的,兩者是分屬于華為公司和思科公司的兩套獨(dú)立體系,學(xué)習(xí)者需要根據(jù)未來的工作進(jìn)行選擇。
2細(xì)顆粒度網(wǎng)絡(luò)仿真實(shí)驗(yàn)
雖然eNSP和PacketTracer簡單易操作,但兩者在用于計(jì)算機(jī)網(wǎng)絡(luò)實(shí)驗(yàn)教學(xué)時(shí)只能進(jìn)行粗顆粒度仿真實(shí)驗(yàn)。仿真顆粒度是指仿真實(shí)驗(yàn)對物理過程控制或刻畫的細(xì)致程度,顆粒度越細(xì)致,越能體現(xiàn)過程細(xì)節(jié),越有助于理解網(wǎng)絡(luò)的本質(zhì)特征。eNSP和PacketTracer只提供網(wǎng)絡(luò)設(shè)備模型和外部接口,把網(wǎng)絡(luò)設(shè)備內(nèi)部的工作細(xì)節(jié)隱藏了起來,學(xué)生能做的只是配置設(shè)備參數(shù),能看到的也只是設(shè)備之間能否通信,雖然可以通過抓包觀察數(shù)據(jù)包的傳輸過程,卻無法看到設(shè)備內(nèi)部的工作流程和各層協(xié)議的執(zhí)行細(xì)節(jié),更無法設(shè)計(jì)或修改協(xié)議。以相鄰層協(xié)議的數(shù)據(jù)包交換為例,eNSP和PacketTracer雖然可以通過抓包觀察到有哪些協(xié)議在執(zhí)行,但無法觀察上下層協(xié)議交換數(shù)據(jù)包時(shí)添加或刪除包頭包尾的操作,無法讀取數(shù)據(jù)包各個(gè)字段的內(nèi)容,也無法理解協(xié)議在收到數(shù)據(jù)包時(shí)所做的邏輯判斷、字段修改、執(zhí)行操作等。
eNSP和PacketTracer之所以把網(wǎng)絡(luò)設(shè)備內(nèi)部的工作細(xì)節(jié)對使用者屏蔽,其原因在于華為公司和思科公司設(shè)計(jì)這兩款軟件的目的是讓使用者學(xué)習(xí)本公司的網(wǎng)絡(luò)產(chǎn)品,基于本公司的設(shè)備搭建網(wǎng)絡(luò),其設(shè)計(jì)理念是使用設(shè)備,而不是開發(fā)設(shè)備,更不是設(shè)計(jì)或修改協(xié)議,所以這兩種軟件只為用戶提供了設(shè)備模型和外部接口。可見,eNSP和PacketTracer只適用于演示性和驗(yàn)證性實(shí)驗(yàn),不適用于設(shè)計(jì)性和創(chuàng)新性實(shí)驗(yàn),不利于提高學(xué)生的體驗(yàn)度和理解度,基于這類實(shí)驗(yàn)無法透徹地理解網(wǎng)絡(luò)協(xié)議的精髓。
為了解決此問題,在eNSP和PacketTracer粗顆粒度仿真實(shí)驗(yàn)的基礎(chǔ)上,本文提出了一種基于OPNET網(wǎng)絡(luò)仿真軟件的細(xì)顆粒度仿真實(shí)驗(yàn)方法,從而幫助學(xué)生理解網(wǎng)絡(luò)的本質(zhì)。OPNET是目前市場上最主流的網(wǎng)絡(luò)仿真軟件之一,采用離散事件仿真和三層建模機(jī)制,包括網(wǎng)絡(luò)模型、節(jié)點(diǎn)模型和進(jìn)程模型。其中,網(wǎng)絡(luò)建模用于生成網(wǎng)絡(luò)拓?fù)洌晒?jié)點(diǎn)和鏈路構(gòu)成;節(jié)點(diǎn)建模用于建立節(jié)點(diǎn)的協(xié)議棧,各個(gè)協(xié)議模塊實(shí)現(xiàn)不同的功能;進(jìn)程建模具體實(shí)現(xiàn)了各個(gè)協(xié)議的功能,基于有限狀態(tài)機(jī)實(shí)現(xiàn)。OPNET提供了狀態(tài)變量、臨時(shí)變量和全局變量等多種變量形式,還提供了大量以op開頭的核心函數(shù),極大地方便了仿真程序的開發(fā)。OPNET采用離散事件仿真機(jī)理,數(shù)據(jù)包的到達(dá)、定時(shí)中斷都被當(dāng)做事件,仿真按照事件列表中事件的順序向前推進(jìn)。與時(shí)間驅(qū)動相比,計(jì)算效率得到了很大提高,比如要知道數(shù)據(jù)包是否到達(dá),不必每隔一定時(shí)間去周期性查看一次,而是收到數(shù)據(jù)包的事件發(fā)生才去查看,每個(gè)時(shí)刻有限狀態(tài)機(jī)將停留在特定狀態(tài),只有當(dāng)事件到達(dá)才進(jìn)行狀態(tài)的跳轉(zhuǎn)。
基于OPNET的細(xì)顆粒度仿真實(shí)驗(yàn)可以讓學(xué)生在程序代碼的層面觀察協(xié)議的工作原理和網(wǎng)絡(luò)對數(shù)據(jù)包的處理過程,就像通過顯微鏡觀察細(xì)胞一樣讓學(xué)生近距離地觀察網(wǎng)絡(luò)的微觀工作過程,幫助他們更透徹地理解網(wǎng)絡(luò)的工作原理和本質(zhì)屬性。通過在OPNET中對數(shù)據(jù)包進(jìn)行跟蹤,可以幫助學(xué)生清晰地看到網(wǎng)絡(luò)各層協(xié)議是如何相互配合、協(xié)調(diào)工作的,從而透徹地理解計(jì)算機(jī)網(wǎng)絡(luò)的運(yùn)行過程。OPNET仿真可以工作在全速或單步模式下,后者以中斷或事件為仿真單位,也就是說每一步仿真都執(zhí)行一個(gè)事件,以無線收信機(jī)接收數(shù)據(jù)包為例,如果上一步仿真學(xué)生觀察到某個(gè)時(shí)刻無線收信機(jī)開始接收數(shù)據(jù)包事件的發(fā)生,那么下一步仿真則顯示過一定仿真時(shí)間后該數(shù)據(jù)包被接收完成并交付給上層協(xié)議的過程。不僅如此,OPNET和VisualC++還可以進(jìn)行聯(lián)合調(diào)試,在VisualC++中通過設(shè)置斷點(diǎn)可以清晰地看到協(xié)議運(yùn)行中各個(gè)變量每時(shí)每刻的變化,從而讓學(xué)習(xí)者對協(xié)議的運(yùn)行過程有更微觀、更精細(xì)的觀察。通過在OPNET中用C語言寫一些簡單的網(wǎng)絡(luò)協(xié)議小程序[19],可以幫助學(xué)生學(xué)會搭建網(wǎng)絡(luò)和控制網(wǎng)絡(luò)運(yùn)行,從而真正滿足學(xué)生“你告訴我網(wǎng)絡(luò)是什么樣子,不如讓我看到網(wǎng)絡(luò)是什么樣子;你告訴我網(wǎng)絡(luò)如何運(yùn)行,不如讓我控制網(wǎng)絡(luò)運(yùn)行”的愿望和體驗(yàn),大大提高學(xué)習(xí)興趣和學(xué)習(xí)效果。
下面通過一個(gè)利用地球同步軌道(GEO GeosynchronousEarthOrbit)衛(wèi)星進(jìn)行數(shù)據(jù)交換的網(wǎng)絡(luò)實(shí)驗(yàn)說明如何在OPNET中構(gòu)建一個(gè)仿真網(wǎng)絡(luò)。GEO衛(wèi)星也稱高軌衛(wèi)星,軌道高度為36000km,衛(wèi)星與地球上的物體是相對靜止的,故又稱靜止軌道。1顆高軌衛(wèi)星可以照射大約地球表面的1/3,因此3顆衛(wèi)星就可以覆蓋除極地以外的整個(gè)地球。
圖7所示為兩個(gè)地面站(station_1和station_2)通過一顆GEO衛(wèi)星(GEO_sat)進(jìn)行數(shù)據(jù)交換的網(wǎng)絡(luò)。該網(wǎng)絡(luò)的網(wǎng)絡(luò)模型基于世界地圖構(gòu)建,包括3個(gè)節(jié)點(diǎn)(2個(gè)地面站和1顆衛(wèi)星),節(jié)點(diǎn)的位置如圖7所示,衛(wèi)星的經(jīng)緯度和高度可以在節(jié)點(diǎn)屬性中設(shè)置或修改。該網(wǎng)絡(luò)的工作流程如下:以10s為周期,1#站和2#站通過衛(wèi)星交換數(shù)據(jù),記1#站發(fā)送的數(shù)據(jù)為data1,記2#站發(fā)送的數(shù)據(jù)為data2,為了避免數(shù)據(jù)沖突,1#站和2#站向衛(wèi)星發(fā)送數(shù)據(jù)的時(shí)刻相差0.01s,衛(wèi)星收到data1和data2后采用網(wǎng)絡(luò)編碼的方法通過異或運(yùn)算生成新的數(shù)據(jù)data如下。
data=data1^data2然后衛(wèi)星把data以廣播方式同時(shí)發(fā)送給1#站和2#站。每個(gè)站收到data后與自己緩存的發(fā)送數(shù)據(jù)再次異或即可得到對方站的數(shù)據(jù),以1#站為例data2=data1^data不難發(fā)現(xiàn),這種網(wǎng)絡(luò)編碼的傳輸方式比衛(wèi)星中繼轉(zhuǎn)發(fā)data1、data2減少了一次發(fā)送,從而節(jié)省了帶寬和電量等資源。
為了實(shí)現(xiàn)上述工作過程,設(shè)計(jì)衛(wèi)星和地面站的節(jié)點(diǎn)模型(即協(xié)議棧模型)如圖8所示,其中rt_0和rr_0表示無線收發(fā)信機(jī),用于衛(wèi)星和地面站之間的無線通信。OPNET中收發(fā)信機(jī)包括點(diǎn)到點(diǎn)、總線、無線三種類型,都是基于管道階段實(shí)現(xiàn)并提供給用戶的,通常不需要修改,用戶使用時(shí)只需要設(shè)置相應(yīng)參數(shù)即可,比如帶寬、數(shù)據(jù)速率等。p_0表示處理機(jī)模塊,OPNET使用處理機(jī)實(shí)現(xiàn)不同協(xié)議,處理機(jī)以有限狀態(tài)機(jī)的形式建模并通過C語言編程實(shí)現(xiàn),處理機(jī)之間或處理機(jī)與收發(fā)信機(jī)之間通過包流線(圖8中箭頭線)進(jìn)行數(shù)據(jù)包交互,處理機(jī)可以產(chǎn)生和發(fā)送數(shù)據(jù)包,也可以接收和修改數(shù)據(jù)包。圖8中p_0處理機(jī)用于實(shí)現(xiàn)衛(wèi)星或地面站對數(shù)據(jù)包的收發(fā)和處理過程。
地面站的進(jìn)程模型如圖9所示。OPNET使用有限狀態(tài)機(jī)實(shí)現(xiàn)協(xié)議進(jìn)程,有限狀態(tài)機(jī)由若干狀態(tài)和狀態(tài)間連接線構(gòu)成,協(xié)議進(jìn)程執(zhí)行過程中根據(jù)到來的中斷或事件的不同在各個(gè)狀態(tài)之間跳轉(zhuǎn)并執(zhí)行狀態(tài)中的程序代碼,紅色狀態(tài)表示非強(qiáng)制狀態(tài),進(jìn)程可以停留在其中消耗仿真時(shí)間,綠色狀態(tài)表示強(qiáng)制狀態(tài),進(jìn)程不能停留在其中,強(qiáng)制狀態(tài)的代碼執(zhí)行不消耗仿真時(shí)間。狀態(tài)下方的數(shù)字表示狀態(tài)入口和出口代碼的行數(shù),狀態(tài)線為虛線表示該跳轉(zhuǎn)為有條件跳轉(zhuǎn)。圖9中INIT是初始化狀態(tài),用于讀取系統(tǒng)參數(shù)(比如節(jié)點(diǎn)ID、發(fā)送周期等)。IDLE狀態(tài)為空閑狀態(tài),仿真系統(tǒng)在該狀態(tài)等待仿真事件或中斷的到來。SEND_PK為發(fā)送數(shù)據(jù)狀態(tài),負(fù)責(zé)以10s為周期生成和發(fā)送數(shù)據(jù)包,REC_PK為接收狀態(tài),負(fù)責(zé)接收衛(wèi)星發(fā)來的數(shù)據(jù)data,并計(jì)算得到對方站的數(shù)據(jù)。SEND_PK和REC_PK的代碼如下,每行代碼的功能由注釋標(biāo)出。
SEND_PK狀態(tài)
pkptr=op_pk_create_fmt(\"sat_data_fmt1\");//按照固定的數(shù)據(jù)包格式sat_data_fmt1創(chuàng)建數(shù)據(jù)包
op_pk_nfd_set(pkptr,\"data\",my_data);//把數(shù)據(jù)my_data填入數(shù)據(jù)包字段data
pk_count++;//包計(jì)數(shù)器加1
op_pk_send(pkptr,0);//把數(shù)據(jù)包從包流號1(對應(yīng)于圖8中p_0和rt_0連接線)發(fā)出去
op_intrpt_schedule_self(op_sim_time()+10,SEND_DATA);//預(yù)置10秒后下一個(gè)發(fā)送周期
REC_PK狀態(tài)
pkptr_RECEIVED=op_pk_get(op_intrpt_strm());//從中斷流(對應(yīng)于圖8中rr_0和p_0連接線)接收衛(wèi)星發(fā)來的數(shù)據(jù)包
op_pk_nfd_get(pkptr_RECEIVED,\"data\",amp;sat_data);//從字段data中讀取數(shù)據(jù)并存入臨時(shí)變量sat_data
friend_data=my_data^sat_data,得到對方地面站發(fā)送;//把接收數(shù)據(jù)和自的數(shù)據(jù)
數(shù)據(jù)包op_pk_destroy,釋放內(nèi)存(pkptr_RECEIVED);//銷毀接收的衛(wèi)星節(jié)點(diǎn)p_0模塊的進(jìn)程模型如圖10所示,其中INIT和IDLE分別為初始化狀態(tài)和空閑狀態(tài)。
REC_PK為接收狀態(tài),負(fù)責(zé)接收兩個(gè)地面站發(fā)來的數(shù)據(jù)data1和data2,并進(jìn)行異或運(yùn)算得到data。
SEND_PK為發(fā)送狀態(tài),負(fù)責(zé)把data同時(shí)廣播發(fā)送給兩個(gè)地面站。衛(wèi)星進(jìn)程模型的SEND_PK和REC_PK的代碼如下。
REC_PK狀態(tài)
pkptr_RECEIVED=op_pk_get(op_intrpt_strm());
//接收數(shù)據(jù)包
if(pk_count==0)//說明這是本周期收到的第1個(gè)包,即來自于1號地面站的數(shù)據(jù)包
{
op_pk_nfd_get
(pkptr_RECEIVED,
\"data\",
amp;data1);//從data字段讀取數(shù)據(jù)并存入變量data1
pk_count++;//包計(jì)數(shù)器加1
}
elseif(pk_count==1)//說明這是本周期收到的第
2個(gè)包,即來自于2號地面站的數(shù)據(jù)包
{
op_pk_nfd_get
(pkptr_RECEIVED,
\"data\",
amp;data2);//從data字段讀取數(shù)據(jù)并存入變量data2
pk_count=0;//包計(jì)數(shù)器清零
op_intrpt_schedule_self(op_sim_time(),
SEND_DATA);//跳轉(zhuǎn)到發(fā)送狀態(tài)SEND_PK
}
SEND_PKpkptr=op_pk_create_fmt狀態(tài)(\"sat_data_fmt1\");//按照包格式sat_data_fmt1創(chuàng)建數(shù)據(jù)包
sat_data=data1^data2;//把收到的data1和data2異或得到data
op_pk_nfd_set
(pkptr,
\"data\",sat_data);//把
sat_data寫入數(shù)據(jù)包字段data
op_pk_send(pkptr,0);//把數(shù)據(jù)包從包流號1(對應(yīng)于圖8中p_0和rt_0連接線)發(fā)出去
通過在OPNET中進(jìn)行ODB單步調(diào)試(OPNETDe?bugger過程,圖)可以觀察到地面站和衛(wèi)星之間收發(fā)數(shù)據(jù)包的11顯示在一個(gè)周期內(nèi)兩個(gè)地面站成功收到了對方的數(shù)據(jù)。
圖7所示的衛(wèi)星交換網(wǎng)以一個(gè)簡單的數(shù)據(jù)交換過程演示了如何在OPNET中對網(wǎng)絡(luò)模型、節(jié)點(diǎn)模型、進(jìn)程模型進(jìn)行建模,以及如何在有限狀態(tài)機(jī)中編程實(shí)現(xiàn)網(wǎng)絡(luò)協(xié)議的工作過程。通過該實(shí)驗(yàn)可見,與基于eNSP和PacketTracer的粗顆粒度仿真實(shí)驗(yàn)相比較,基于OPNET的細(xì)顆粒度仿真實(shí)驗(yàn)更細(xì)致入微地觀察到每個(gè)數(shù)據(jù)包甚至是每個(gè)bit的計(jì)算和流動過程,極大增強(qiáng)了實(shí)驗(yàn)人員對網(wǎng)絡(luò)的控制程度,能夠更有效地幫助學(xué)生理解網(wǎng)絡(luò)協(xié)議的精髓。表1給出了eNSP、PacketTracer和OPNET在網(wǎng)絡(luò)仿真、建模能力、學(xué)習(xí)難度等方面的比較。
3教學(xué)效果比較
基于eNSP和PacketTracer的粗顆粒度實(shí)驗(yàn)和基于OPNET的細(xì)顆粒度實(shí)驗(yàn)在仿真實(shí)驗(yàn)教學(xué)方面的優(yōu)勢和劣勢呈現(xiàn)出一定的互補(bǔ)性。前者適用于初級者學(xué)習(xí),容易入門上手,可以幫助學(xué)生初步掌握網(wǎng)絡(luò)的工作原理;后者則適用于高級進(jìn)階學(xué)習(xí),能夠大大提高對網(wǎng)絡(luò)協(xié)議精髓的理解。基于這種考慮,本文提出了把eNSP/PacketTracer和OPNET這兩種顆粒度仿真實(shí)驗(yàn)相結(jié)合的計(jì)算機(jī)網(wǎng)絡(luò)實(shí)驗(yàn)教學(xué)方法。在教學(xué)過程中,為了驗(yàn)證這一教學(xué)方法的有效性,對某高校網(wǎng)絡(luò)工程專業(yè)兩級學(xué)生約200人次的學(xué)習(xí)效果進(jìn)行對比,為其中一級學(xué)生只開設(shè)了8個(gè)學(xué)時(shí)的eNSP實(shí)驗(yàn),實(shí)驗(yàn)題目包括常用的IP命令、交換機(jī)配置、虛擬局域網(wǎng)等;為另一級學(xué)生開設(shè)了4個(gè)學(xué)時(shí)的eNSP實(shí)驗(yàn)(常用的IP命令、交換機(jī)配置)+4個(gè)學(xué)時(shí)的OPNET實(shí)驗(yàn)(無線TDMA接入網(wǎng)、GEO衛(wèi)星通信網(wǎng))。對學(xué)習(xí)效果的考核指標(biāo)包括網(wǎng)絡(luò)配置能力、實(shí)操和程序設(shè)計(jì)能力、對基本概念的理解度、對協(xié)議的理解度,以及對網(wǎng)絡(luò)工作性能參數(shù)的理解度等等。學(xué)生的平均成績區(qū)分為1至5級,1級最低,5級最高。教學(xué)效果的比較如表2所示,可見采用本文提出的eNSP+OPNET的仿真實(shí)驗(yàn)教學(xué)方法比傳統(tǒng)教學(xué)方法取得了各項(xiàng)指標(biāo)的全面提升。
4結(jié)束語
計(jì)算機(jī)網(wǎng)絡(luò)課程的實(shí)踐性強(qiáng),有效的實(shí)驗(yàn)教學(xué)對提升教學(xué)質(zhì)量至關(guān)重要。傳統(tǒng)的基于eNSP/PacketTracer的實(shí)驗(yàn)教學(xué)方法雖然易于操作,但在區(qū)分度和顆粒度方面存在不足,限制了學(xué)生對網(wǎng)絡(luò)協(xié)議的深入理解。本文提出了一種結(jié)合粗細(xì)顆粒度的計(jì)算機(jī)網(wǎng)絡(luò)實(shí)驗(yàn)教學(xué)方法,將eNSP/PacketTracer的粗顆粒度實(shí)驗(yàn)與OPNET的細(xì)顆粒度實(shí)驗(yàn)相結(jié)合,優(yōu)勢互補(bǔ),既提供了宏觀的設(shè)備視圖,又提供了微觀的代碼視圖,使學(xué)生能夠從宏觀和微觀兩個(gè)層面理解網(wǎng)絡(luò)的工作原理和協(xié)議的執(zhí)行細(xì)節(jié)。教學(xué)實(shí)踐表明,這種粗細(xì)顆粒度相結(jié)合的實(shí)驗(yàn)教學(xué)方法在多個(gè)評價(jià)指標(biāo)上均優(yōu)于傳統(tǒng)的粗顆粒度實(shí)驗(yàn)教學(xué)方法,能夠有效提升學(xué)生對網(wǎng)絡(luò)協(xié)議的理解度、程序設(shè)計(jì)能力和系統(tǒng)綜合設(shè)計(jì)能力。未來將研究如何優(yōu)化細(xì)顆粒度實(shí)驗(yàn)設(shè)計(jì)以及建立粗細(xì)顆粒度相結(jié)合的實(shí)驗(yàn)案例庫,以更好地滿足學(xué)生學(xué)習(xí)需求。
參考文獻(xiàn):
[1]鐘輝,董潔.工程教育認(rèn)證下計(jì)算機(jī)網(wǎng)絡(luò)課程創(chuàng)新實(shí)驗(yàn)設(shè)計(jì)[J].電腦知識與技術(shù),2020,16(10):175-176..
[2]朱曄,周愛平,江敏.基于微課和翻轉(zhuǎn)課堂的計(jì)算機(jī)網(wǎng)絡(luò)實(shí)驗(yàn)課程教學(xué)[J].電腦知識與技術(shù),2020,16(6):170-171,173..
[3]王小春.模擬器在計(jì)算機(jī)網(wǎng)絡(luò)專業(yè)課程教學(xué)中的應(yīng)用研究[J].電腦知識與技術(shù),2020,16(11):100-101,162.
[4]于子甲.網(wǎng)絡(luò)仿真模擬器在計(jì)算機(jī)網(wǎng)絡(luò)實(shí)驗(yàn)課程教學(xué)中的應(yīng)用[J].信息記錄材料,2020,21(8):112-114.
[5]朱劍林,侯睿.虛擬仿真實(shí)驗(yàn)在計(jì)算機(jī)網(wǎng)絡(luò)課程教學(xué)中的應(yīng)用[J].教育教學(xué)論壇,2016(17):224-225.
[6]李楠,李琳,翟悅,等.網(wǎng)絡(luò)仿真模型庫在計(jì)算機(jī)網(wǎng)絡(luò)實(shí)驗(yàn)教學(xué)中的應(yīng)用[J].計(jì)算機(jī)產(chǎn)品與流通,2020(8):48.
[7]王煜,周文龍.虛擬仿真技術(shù)在計(jì)算機(jī)網(wǎng)絡(luò)實(shí)驗(yàn)教學(xué)中的應(yīng)用[J].計(jì)算機(jī)產(chǎn)品與流通,2020(7):190.
[8]阿喜達(dá).基于網(wǎng)絡(luò)仿真軟件的計(jì)算機(jī)網(wǎng)絡(luò)原理課程教學(xué)改革[J].計(jì)算機(jī)教育,2020(1):37-41.
[9]黃山.計(jì)算機(jī)網(wǎng)絡(luò)工程專業(yè)實(shí)踐教學(xué)體系的構(gòu)建[J].計(jì)算機(jī)產(chǎn)品與流通,2020(4):180-181.
[10]鄭洋.融合多層次模糊評價(jià)模型的高校計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)專業(yè)實(shí)踐教學(xué)體系構(gòu)建[J].保山學(xué)院學(xué)報(bào),2018,37(5):74-78.
[11]馬志彬,馬曉麗,張曉蕾,等.基于工作過程的計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)專業(yè)實(shí)踐教學(xué)體系構(gòu)建[J].亞太教育,2015(18):161,152.
[12]王勝.基于項(xiàng)目導(dǎo)向的計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)專業(yè)實(shí)踐教學(xué)體系構(gòu)建[J].隴東學(xué)院學(xué)報(bào),2013,24(3):136-139.
[13]宋志秋.基于項(xiàng)目的計(jì)算機(jī)網(wǎng)絡(luò)專業(yè)實(shí)踐教學(xué)體系的構(gòu)建
[14]杜海波[J].價(jià)值工程,劉麗梅,2012,胡宇航,31(33,等):213.計(jì)算機(jī)網(wǎng)絡(luò)專業(yè)實(shí)踐教學(xué)創(chuàng)新-214.體系的構(gòu)建與實(shí)踐研究[J].河北旅游職業(yè)學(xué)院學(xué)報(bào),2010,15(4):41-44.
[15]孫琦龍.面向工程化的計(jì)算機(jī)網(wǎng)絡(luò)實(shí)踐教學(xué)體系的構(gòu)建與實(shí)施[J].高教論壇,2010(1):64-66.
[16]劉敏,簡艷英.構(gòu)建計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)專業(yè)實(shí)踐教學(xué)體系[J].漯河職業(yè)技術(shù)學(xué)院學(xué)報(bào),2008,7(5):110-111.
[17]焦炳連,浦江.應(yīng)用型本科計(jì)算機(jī)網(wǎng)絡(luò)專業(yè)工程化實(shí)踐教學(xué)體系的構(gòu)建[J].徐州工程學(xué)院學(xué)報(bào),2008,23(2):78-82.
[18]朱立才.計(jì)算機(jī)網(wǎng)絡(luò)工程專業(yè)實(shí)踐教學(xué)體系的構(gòu)建[J].長春理工大學(xué)學(xué)報(bào)(綜合版),2006,1(4):118-120.
[19]秦娜,劉宴濤.OPNET仿真在計(jì)算機(jī)網(wǎng)絡(luò)教學(xué)中的應(yīng)用[J].高教學(xué)刊,2021,7(26):126-130,134.
【通聯(lián)編輯:王力】