• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      “計(jì)算機(jī)網(wǎng)絡(luò)”課程實(shí)驗(yàn)仿真教學(xué)的路徑探索

      2021-10-23 02:37:22劉宴濤
      關(guān)鍵詞:數(shù)據(jù)包計(jì)算機(jī)網(wǎng)絡(luò)建模

      劉宴濤,秦 娜,2

      (1.嘉應(yīng)學(xué)院,廣東 梅州514015;2.蒙古國研究生大學(xué),蒙古 烏蘭巴托)

      0 引言

      現(xiàn)代社會已經(jīng)進(jìn)入“萬物互聯(lián),無網(wǎng)不勝”的網(wǎng)絡(luò)時(shí)代。隨著通信網(wǎng)絡(luò)基礎(chǔ)設(shè)施的日益完善和三網(wǎng)融合的持續(xù)推進(jìn),不斷催生出電子商務(wù)、門戶網(wǎng)站、網(wǎng)絡(luò)直播、視頻點(diǎn)播、搜索引擎、智能電網(wǎng)、5G移動通信、云計(jì)算、物聯(lián)網(wǎng)等眾多新技術(shù)、新經(jīng)濟(jì)和新業(yè)態(tài),并進(jìn)而帶動上下游產(chǎn)業(yè)鏈,極大地推動了國民經(jīng)濟(jì)的發(fā)展。這些新興的互聯(lián)網(wǎng)產(chǎn)業(yè)亟需大量熟悉網(wǎng)絡(luò)知識的專門人才,由于網(wǎng)絡(luò)通信涉及領(lǐng)域之廣、包含技術(shù)之多是其它工業(yè)形式不能比擬的,所以相關(guān)行業(yè)從業(yè)人員的知識和技能應(yīng)該是多維度和全方位的,這就對我們的專業(yè)設(shè)置、培養(yǎng)方案和教學(xué)方法體系提出了新的更高的要求。

      “計(jì)算機(jī)網(wǎng)絡(luò)”是電子信息工程、通信工程、計(jì)算機(jī)科學(xué)與技術(shù)等相關(guān)專業(yè)的必修課,具有鮮明的跨學(xué)科、跨專業(yè)的特點(diǎn)。學(xué)好計(jì)算機(jī)網(wǎng)絡(luò),理解計(jì)算機(jī)網(wǎng)絡(luò)體系結(jié)構(gòu),理解協(xié)議分層及各層協(xié)議的工作原理,掌握網(wǎng)絡(luò)設(shè)備的工作原理和基本配置方法,熟悉網(wǎng)絡(luò)運(yùn)行的各項(xiàng)指標(biāo)參數(shù)的含義和測試方法,對于學(xué)生建立完善的網(wǎng)絡(luò)知識體系是至關(guān)重要的。

      “計(jì)算機(jī)網(wǎng)絡(luò)”是一門理論與實(shí)踐緊密結(jié)合的課程,如果學(xué)生能夠近距離地觀察到網(wǎng)絡(luò)設(shè)備的工作過程,尤其是通過閱讀或編寫代碼理解網(wǎng)絡(luò)協(xié)議的運(yùn)行機(jī)制,那么對于學(xué)生深刻理解網(wǎng)絡(luò)的工作原理是大有裨益的。然而,目前大多數(shù)高校在講授計(jì)算機(jī)網(wǎng)絡(luò)的時(shí)候往往采用傳統(tǒng)的基于PPT的教學(xué)方法,理論和實(shí)踐相脫節(jié),缺少實(shí)驗(yàn)環(huán)節(jié),或者只是設(shè)置非常簡單和表象的網(wǎng)絡(luò)配置和仿真實(shí)驗(yàn),這不利于提高學(xué)生的動手實(shí)操能力。

      為了解決這一問題,本文提出一種把粗顆粒度和細(xì)顆粒度兩種網(wǎng)絡(luò)仿真實(shí)驗(yàn)互相結(jié)合互相對比地融入到“計(jì)算機(jī)網(wǎng)絡(luò)”教學(xué)中的方法。通過網(wǎng)絡(luò)仿真實(shí)驗(yàn)讓學(xué)生觀察網(wǎng)絡(luò)設(shè)備的工作過程,提高對網(wǎng)絡(luò)運(yùn)行的感性認(rèn)識。更為重要的是,通過對兩種仿真實(shí)驗(yàn)的對比,尤其是通過細(xì)顆粒度仿真實(shí)驗(yàn),讓學(xué)生能夠在程序代碼的層次理解協(xié)議的工作原理和網(wǎng)絡(luò)對數(shù)據(jù)包的處理過程,就像拿著顯微鏡觀察細(xì)胞實(shí)驗(yàn)一樣讓學(xué)生近距離地觀察網(wǎng)絡(luò)的工作過程,幫助他們更透徹地理解網(wǎng)絡(luò)的工作原理和本質(zhì)屬性。

      1 網(wǎng)絡(luò)仿真

      對計(jì)算機(jī)網(wǎng)絡(luò)的研究方法可以分為理論分析和網(wǎng)絡(luò)實(shí)驗(yàn)兩種。前者是基于數(shù)學(xué)分析方法,比如圖論、排隊(duì)論、組合論、隨機(jī)過程等,理論分析多用于網(wǎng)絡(luò)性能分析[1],且只能在比較理想和簡單的情況下才能起到較好的作用,若用來評估復(fù)雜的通信網(wǎng)絡(luò)則顯得力不從心。后者可以進(jìn)一步分為基于實(shí)際設(shè)備的物理實(shí)驗(yàn)和基于仿真軟件的仿真實(shí)驗(yàn)兩種。前者通過購買實(shí)際網(wǎng)絡(luò)設(shè)備搭建真實(shí)的網(wǎng)絡(luò)環(huán)境[2,3]來研究和檢驗(yàn)網(wǎng)絡(luò)的工作性能,這種方法最接近于實(shí)際網(wǎng)絡(luò)的運(yùn)行情況,結(jié)果也最真實(shí)可靠。但物理實(shí)驗(yàn)成本高,周期長,靈活性和彈性差,不易擴(kuò)展。對于大中型網(wǎng)絡(luò),這種方法往往是不現(xiàn)實(shí)的。

      網(wǎng)絡(luò)仿真是研究網(wǎng)絡(luò)的一種高效的必不可少的手段,具有簡單、易實(shí)現(xiàn)、靈活性高、成本低、可信度高、演示性好、適用于各種網(wǎng)絡(luò)等優(yōu)點(diǎn)。網(wǎng)絡(luò)仿真是計(jì)算機(jī)仿真技術(shù)的一種,該技術(shù)通過建立設(shè)備、鏈路、移動性、業(yè)務(wù)量等模型,編程實(shí)現(xiàn)各層協(xié)議算法,模擬生成網(wǎng)絡(luò)拓?fù)?,從而在?jì)算機(jī)上構(gòu)建出一個(gè)虛擬網(wǎng)絡(luò)。通過為虛擬節(jié)點(diǎn)加載業(yè)務(wù)量并模擬網(wǎng)絡(luò)流量的傳輸,獲取網(wǎng)絡(luò)的性能參數(shù),從而檢驗(yàn)協(xié)議性能、測試網(wǎng)絡(luò)容量、改善網(wǎng)絡(luò)運(yùn)行狀況。網(wǎng)絡(luò)仿真能夠?yàn)榫W(wǎng)絡(luò)的規(guī)劃設(shè)計(jì)提供客觀定量的依據(jù),縮短網(wǎng)絡(luò)建設(shè)周期,減少建設(shè)成本,降低投資風(fēng)險(xiǎn)。此外,仿真所建立的模型靈活度高,可重用性好,基于已有的模型模塊可以很容易地構(gòu)建新的協(xié)議棧和改變網(wǎng)絡(luò)拓?fù)?,從而生成新的網(wǎng)絡(luò),而且網(wǎng)絡(luò)仿真在高度復(fù)雜的網(wǎng)絡(luò)環(huán)境中能得到具有高可信度的結(jié)果,因此非常適合大中型網(wǎng)絡(luò)的研發(fā)工作。

      目前有多種網(wǎng)絡(luò)仿真軟件或模擬器,比如Cisco Packet Tracer[4],NS3,QualNet,GloMosim[5],OMnet[6],華為eNSP[7],GNS3[8],OPNET[9,10],以及基于高層體系架構(gòu)的聯(lián)合分布式仿真技術(shù)[11,12]。綜合比較來看,OPNET是最主流最高端的網(wǎng)絡(luò)仿真軟件,無論是界面友好程度還是仿真建模能力都遠(yuǎn)遠(yuǎn)優(yōu)于其他網(wǎng)絡(luò)仿真軟件。下文將基于eNSP和OPNET這兩種仿真軟件分別實(shí)現(xiàn)粗顆粒度和細(xì)顆粒度的仿真實(shí)驗(yàn),從而把網(wǎng)絡(luò)仿真融入到計(jì)算機(jī)網(wǎng)絡(luò)的教學(xué)中以提高學(xué)生的體驗(yàn)度。

      2 eNSP仿真實(shí)驗(yàn)

      eNSP是華為研發(fā)的一款免費(fèi)仿真軟件,使用圖形化操作界面,采用即拿即用的工作方式,各種華為設(shè)備,比如交換機(jī)、路由器、工作站、連接線等,都是以圖標(biāo)的形式提供給用戶,用戶只需要用這些圖標(biāo)連接起來構(gòu)成網(wǎng)絡(luò)拓?fù)?,并配置相?yīng)的端口參數(shù)(比如IP地址)即可讓網(wǎng)絡(luò)運(yùn)行起來。因此,eNSP非常簡單易操作,能夠快速高效地構(gòu)建仿真網(wǎng)絡(luò),非常適合用于對網(wǎng)絡(luò)工程師的培訓(xùn),很多高校都把eNSP作為網(wǎng)絡(luò)仿真教學(xué)軟件。

      eNSP可以比擬成軟件實(shí)驗(yàn)箱,提供給用戶的只是虛擬設(shè)備和接口,設(shè)備內(nèi)部的工作過程和網(wǎng)絡(luò)協(xié)議的處理細(xì)節(jié)都被隱藏起來,用戶不能修改設(shè)備功能,因此eNSP只能實(shí)現(xiàn)粗顆粒度的仿真實(shí)驗(yàn)。所謂“顆粒度”是指對某一過程控制或描述的細(xì)節(jié)程度,顆粒度越細(xì)致,我們對過程的理解才能越透徹。下面通過一個(gè)樣例介紹eNSP的工作原理。

      在eNSP圖形化界面中如圖1所示放置兩臺PC機(jī)Client1和Client2、一臺S5700交換機(jī)LSW1,一臺S3700交換機(jī)LSW2和一臺AR201路由器R1。其中LSW1通過兩個(gè)G比特以太網(wǎng)口分別連接Client1和路由器R1,LSW2通過兩個(gè)以太網(wǎng)口分別連接Client2和路由器R1。把圖1中五臺設(shè)備通過右鍵單擊啟動后,右鍵單擊Client1和Client2可以為兩臺PC機(jī)設(shè)置IP地址,如圖2所示。雙擊R1在命令行窗口的系統(tǒng)視圖中可以將路由器R1兩側(cè)接口的IP地址分別設(shè)為10.0.1.254和10.0.2.254。IP地址設(shè)置完畢后,可以使用ping命令測試兩臺PC機(jī)Client1和Client2的連通性,測試結(jié)果如圖3所示。

      圖2 Client1地址配置

      圖3 測試兩臺PC機(jī)的連通性

      右鍵單擊圖1路由器左側(cè)的GE0/0/0接口并單擊開始抓包,可以啟動Wireshark協(xié)議分析器,抓包結(jié)果如圖4所示,可見成功抓取了ping命令執(zhí)行過程的各個(gè)數(shù)據(jù)包。

      圖4 對路由器接口的抓包結(jié)果

      3 OPNET網(wǎng)絡(luò)仿真

      3.1 OPNET仿真

      由上一節(jié)可見,eNSP可以方便地提供即拿即用的服務(wù)幫助使用者快速構(gòu)建網(wǎng)絡(luò)拓?fù)?,并通過配置一些簡單的參數(shù)即可讓網(wǎng)絡(luò)運(yùn)行起來,仿真網(wǎng)絡(luò)的工作流程和可視化效果非常接近于真實(shí)的物理網(wǎng)絡(luò),有利于學(xué)生快速上手學(xué)習(xí),也便于網(wǎng)絡(luò)工程師進(jìn)行網(wǎng)絡(luò)的設(shè)計(jì)、規(guī)劃、分析和檢驗(yàn)。

      然而,eNSP在用于“計(jì)算機(jī)網(wǎng)絡(luò)”課程的仿真教學(xué)時(shí)也存在一些缺點(diǎn)。首先,eNSP只提供網(wǎng)絡(luò)設(shè)備模型和接口,把很多網(wǎng)絡(luò)處理細(xì)節(jié)隱藏了起來,學(xué)生能做的只能是配置設(shè)備參數(shù),能看到的也只是設(shè)備之間能否通信,無法看到各層協(xié)議的處理細(xì)節(jié),也無法透徹地理解網(wǎng)絡(luò)協(xié)議的精髓,不利于提高學(xué)生體驗(yàn)度。其次,eNSP提供的是一種粗顆粒度的仿真,使用者雖然可以通過抓包觀察數(shù)據(jù)包的傳輸過程,卻無法觀察各層協(xié)議的執(zhí)行細(xì)節(jié),更無法修改協(xié)議,這對于一些科研院所的科研人員進(jìn)行協(xié)議的設(shè)計(jì)與分析是遠(yuǎn)遠(yuǎn)不夠的。

      eNSP的上述缺點(diǎn)在OPNET網(wǎng)絡(luò)仿真軟件中得到了很好的解決。與eNSP提供的設(shè)備層面的視圖不同,OPNET提供了代碼層面的視圖,可以讓學(xué)生進(jìn)行協(xié)議的設(shè)計(jì)和開發(fā),觀察到每個(gè)數(shù)據(jù)包的傳遞和每個(gè)字段的處理過程,就像用顯微鏡觀察細(xì)胞一樣幫助學(xué)生更為深入地理解網(wǎng)絡(luò)設(shè)備的工作原理。

      OPNET采用三層建模機(jī)制,分別是網(wǎng)絡(luò)模型、節(jié)點(diǎn)模型和進(jìn)程模型。網(wǎng)絡(luò)建模用于生成網(wǎng)絡(luò)拓?fù)?,由?jié)點(diǎn)和鏈路構(gòu)成;節(jié)點(diǎn)建模用于構(gòu)建節(jié)點(diǎn)的協(xié)議棧,各個(gè)協(xié)議模塊實(shí)現(xiàn)不同的功能;進(jìn)程建模用于實(shí)現(xiàn)各個(gè)協(xié)議的功能,基于有限狀態(tài)機(jī)(FSM-Finite State Machine)實(shí)現(xiàn)。OPNET提供了狀態(tài)變量、臨時(shí)變量和全局變量等多種變量形式,還提供了大量的核心函數(shù),極大方便了仿真程序的開發(fā)。OPNET采用離散事件仿真機(jī)理,數(shù)據(jù)包的到達(dá)和定時(shí)中斷都被當(dāng)做事件,仿真內(nèi)核生成并維護(hù)事件列表,按順序執(zhí)行各個(gè)事件,由此推進(jìn)仿真向前執(zhí)行。與時(shí)間驅(qū)動相比,這種基于事件的仿真驅(qū)動方式極大提高了計(jì)算效率,比如要知道數(shù)據(jù)包是否到達(dá),不必隔一段時(shí)間去查看一次,而是當(dāng)數(shù)據(jù)包到達(dá)中斷發(fā)生才去查看,每個(gè)時(shí)刻FSM將停留在某種狀態(tài),只有當(dāng)事件到達(dá)才進(jìn)行狀態(tài)的跳轉(zhuǎn)。

      OPNET仿真可以工作在全速運(yùn)行和單步調(diào)試(ODB-OPNET DeBugger)兩種模式下,在ODB模式下可以清晰地看到各個(gè)網(wǎng)絡(luò)協(xié)議的工作過程和仿真事件的發(fā)生,比如發(fā)送和接收數(shù)據(jù)包、定時(shí)中斷、遠(yuǎn)程中斷等,而且還可以讀取數(shù)據(jù)包的各個(gè)字段的內(nèi)容,從而理解有限狀態(tài)機(jī)在各個(gè)狀態(tài)之間是如何跳轉(zhuǎn)的。此外,在ODB模式下還可以進(jìn)行OPNET和Visual C++的聯(lián)合調(diào)試,在Visual C++中通過設(shè)置斷點(diǎn)清晰地看到OPNET中各個(gè)變量每時(shí)每刻發(fā)生的變化,從而檢驗(yàn)協(xié)議的正確性,讓我們對仿真運(yùn)行過程有更精細(xì)的觀察。通過在ODB中對數(shù)據(jù)包進(jìn)行跟蹤,可以幫助學(xué)生清晰地看到網(wǎng)絡(luò)各層協(xié)議是如何相互配合、協(xié)調(diào)工作的,從而真切、透徹地理解計(jì)算機(jī)網(wǎng)絡(luò)的運(yùn)行過程。另外,通過在OPNET中用C語言寫一些簡單的網(wǎng)絡(luò)協(xié)議的小程序,可以幫助學(xué)生學(xué)會搭建網(wǎng)絡(luò)和控制網(wǎng)絡(luò)運(yùn)行,極大地提高學(xué)習(xí)體驗(yàn)度。下面通過一個(gè)TCP協(xié)議的建模和仿真實(shí)例演示如何在OPNET中構(gòu)建一個(gè)仿真網(wǎng)絡(luò)。

      3.2 網(wǎng)絡(luò)模型

      仿真網(wǎng)絡(luò)如圖5所示,其中包含一個(gè)客戶機(jī)Client和一個(gè)服務(wù)器Server,采用無線通信的方式。

      圖5 網(wǎng)絡(luò)模型

      網(wǎng)絡(luò)中還包含一個(gè)特殊節(jié)點(diǎn)COMM_RANGE_SET,該節(jié)點(diǎn)用于設(shè)置無線通信半徑。仿真應(yīng)用場景如下:仿真啟動后,由Client向Server傳輸數(shù)據(jù),數(shù)據(jù)傳輸以控制幀SOF開始,以控制幀EOF結(jié)束,兩幀的中間周期性地傳輸100個(gè)DATA業(yè)務(wù)幀。仿真運(yùn)行過程記錄3個(gè)結(jié)果矢量統(tǒng)計(jì)量PK_SENT、PK_RCVD、PK_DELAY,分別表示Client發(fā)送的包數(shù),Server接收的包數(shù),以及包延時(shí)。在OPNET中,矢量統(tǒng)計(jì)量是指以時(shí)間軸為橫軸,被測量為縱軸的仿真結(jié)果統(tǒng)計(jì)量,矢量統(tǒng)計(jì)量反映了被測量隨時(shí)間的變化。

      3.3 節(jié)點(diǎn)模型

      Client和Server采用相同的節(jié)點(diǎn)模型,如圖6所示。除了物理層無線收發(fā)信機(jī)之外,協(xié)議棧中只包括了應(yīng)用層(APP)、傳輸層(TCP)和鏈路層(TDMA),為了簡化問題規(guī)模和復(fù)雜度,省略了對網(wǎng)際層(IP)的建模。

      圖6 節(jié)點(diǎn)模型

      OPNET對物理層的建模是通過管道階段(pipeline stage)實(shí)現(xiàn)的,接收組、傳輸延時(shí)、傳播延時(shí)、發(fā)射接收增益、信噪比等都被編寫成管道階段文件,由發(fā)射機(jī)和接收機(jī)順序調(diào)用執(zhí)行,用戶只需要設(shè)定無線收發(fā)信機(jī)的工作參數(shù)(比如數(shù)據(jù)率、發(fā)射功率、帶寬等)即可,因此大大省去了用戶對物理層的建模負(fù)擔(dān),用戶只需要完成上面各層協(xié)議的建模即可。下面分別介紹本實(shí)驗(yàn)設(shè)計(jì)的3層協(xié)議模塊。

      3.4 APP進(jìn)程模型

      圖7所示為APP模塊對應(yīng)的有限狀態(tài)機(jī),其中紅色狀態(tài)表示非強(qiáng)制狀態(tài),進(jìn)程可以停留在其中消耗仿真時(shí)間,綠色狀態(tài)表示強(qiáng)制狀態(tài),進(jìn)程不能停留,其中程序代碼的執(zhí)行不消耗仿真時(shí)間。

      具體的,INIT狀態(tài)在仿真開始時(shí)進(jìn)入,用于讀取工作參數(shù)、初始化各種變量、以及啟動數(shù)據(jù)傳輸?shù)龋划?dāng)進(jìn)程不需要處理事件的時(shí)候?qū)⑼A粼贗DLE狀態(tài)等待下一個(gè)中斷的到來。INIT和IDLE是所有OPNET進(jìn)程模型都具有的狀態(tài)。Send_Data狀態(tài)用于發(fā)送數(shù)據(jù),由于本實(shí)驗(yàn)的仿真想定為周期性地發(fā)送100個(gè)DATA包,周期定義為狀態(tài)變量packet_interval,所以進(jìn)程要周期性地重復(fù)進(jìn)入Send_Data狀態(tài),該功能被定義在出口代碼(即下半圓)中,如下:

      if(SENT_pk_number<Max_Packet_Number)

      op_intrpt_schedule_self(op_sim_time()+packet_interval,SEND_DATA);

      OPNET使用了大量以op_開頭的核心函數(shù)用于完成裝幀、發(fā)包、設(shè)置中斷等功能,極大地方便了用戶的程序設(shè)計(jì)工作。

      圖7中Rec_PK狀態(tài)當(dāng)APP模塊收到下層TCP模塊發(fā)來的數(shù)據(jù)包時(shí)進(jìn)入,用以從包流線接收數(shù)據(jù)包(op_pk_get函數(shù))、讀取包字段(op_pk_nfd_get函數(shù))、記錄和生成仿真結(jié)果(op_stat_write函數(shù))等。主要代碼如下:

      圖7 方波波形合成實(shí)驗(yàn)結(jié)果圖a

      圖7 APP模塊的進(jìn)程模型

      time=op_sim_time();

      pkptr=op_pk_get(op_intrpt_strm());

      pk_create_time=op_pk_creation_time_get(pkptr);

      op_pk_nfd_get(pkptr,“pk_number”,&temp_pk_number);

      op_stat_write(PK_rcvd_gsh,RCVD_pk_number);

      op_stat_write(PK_delay_gsh,time-pk_create_time);

      3.5 TCP進(jìn)程模型

      本實(shí)驗(yàn)的核心任務(wù)和關(guān)鍵模塊是TCP協(xié)議模塊,其有限狀態(tài)機(jī)如圖8所示。由于本實(shí)驗(yàn)主要是為了說明OPNET的建模與仿真過程,所以對TCP協(xié)議做了簡化處理,只實(shí)現(xiàn)了發(fā)送數(shù)據(jù)幀和確認(rèn)幀的過程以及連接的建立和拆除過程,略去了TCP的擁塞控制、流量控制等功能。

      圖8 TCP模塊的進(jìn)程模型

      圖8中除了INIT和IDLE狀態(tài)之外,有一個(gè)接收數(shù)據(jù)包狀態(tài)Rec_PK,當(dāng)進(jìn)程收到包中斷后進(jìn)入該狀態(tài)。OPNET中每個(gè)狀態(tài)下方的兩個(gè)數(shù)字分別表示該狀態(tài)入口代碼和出口代碼的行數(shù),可見Rec_PK的入口代碼由632行代碼組成,功能比較復(fù)雜。由于到達(dá)TCP的數(shù)據(jù)包可能來自于上層APP模塊或下層TDMA模塊,所以Rec_PK首先判斷包的來源。其次,用op_pk_format(pkptr_RCVD,PK_format)語句獲取數(shù)據(jù)包的包格式,并根據(jù)不同的包格式做出不同的動作。比如,如果收到的是SOF包,則啟動建立連接的3次握手過程;如果收到的是EOF包,則啟動拆除連接的4次握手過程;如果收到的是APP發(fā)來的DATA包,則封裝成TCP標(biāo)準(zhǔn)幀格式后向TDMA發(fā)送;如果收到的是下層TDMA模塊發(fā)來的包,則解封裝,讀取TCP包頭和各個(gè)字段的信息并根據(jù)這些信息做出相應(yīng)的動作,比如取出DATA字段傳給APP模塊,或回復(fù)ACK給發(fā)送端,或收發(fā)雙方配合完成建立連接和拆除連接過程。

      圖8中設(shè)置了兩個(gè)定時(shí)器Timer1和Timer2,Timer1用于建立連接和拆除連接的握手過程中對控制幀傳輸?shù)挠?jì)時(shí),Timer2用于數(shù)據(jù)傳輸過程中對數(shù)據(jù)幀傳輸?shù)挠?jì)時(shí)。以Timer2為例,當(dāng)Client發(fā)出數(shù)據(jù)幀的時(shí)候啟動Timer2定時(shí)器,如果在定時(shí)器期滿還沒有收到Server發(fā)來的ACK確認(rèn)幀,則Client重發(fā)該數(shù)據(jù)幀,代碼如下:

      圖8 方波波形合成實(shí)驗(yàn)結(jié)果圖b

      pkptr=op_subq_pk_access(1,OPC_QPOS_HEAD);

      op_pk_nfd_set(pkptr,“SYN”,0);

      op_pk_nfd_set(pkptr,“ACK”,0);

      op_pk_nfd_set(pkptr,“FIN”,0);

      op_pk_nfd_set(pkptr,“SEQ_NUMBER”,Seq_Number);

      op_pk_nfd_set(pkptr,“ACK_NUMBER”,(Peer_Seq_Number+1));

      op_pk_send(pkptr,down_output);

      retrans_timer2=op_intrpt_schedule_self(op_sim_time()+RETRANS_TIMER,TIMER2_OUT);

      其中,op_subq_pk_access函數(shù)用于讀取TCP子隊(duì)列中的數(shù)據(jù)包,op_pk_nfd_set函數(shù)用于設(shè)置TCP包的各個(gè)字段,op_pk_send函數(shù)用于發(fā)出TCP包,op_intrpt_schedule_self函數(shù)用于設(shè)置定時(shí)中斷。如果發(fā)端TCP模塊在定時(shí)器期滿之前收到了收端TCP模塊回復(fù)的ACK確認(rèn)幀,則Client停止Timer2的計(jì)時(shí)并為其清零。

      3.6 TDMA進(jìn)程模型

      TDMA模塊完成無線信道接入控制功能,本實(shí)驗(yàn)采用的是時(shí)分多址接入方式,Client和Server分時(shí)使用無線信道。TDMA模塊的有限狀態(tài)機(jī)如圖9所示。

      圖9 TDMA模塊的進(jìn)程模型

      其中,INIT狀態(tài)指定了Client和Server的初次接入時(shí)刻分別為1s和1.1s,代碼如下所示。

      if(node_id==1)

      {op_intrpt_schedule_self(1,TIMER_OUT);}

      if(node_id==2)

      {op_intrpt_schedule_self(1.1,TIMER_OUT);}

      其中,中斷碼TIMER_OUT代表圖9中的MY_SLOT跳轉(zhuǎn)條件,即讓進(jìn)程從idle狀態(tài)跳轉(zhuǎn)到Send_data狀態(tài)去發(fā)送數(shù)據(jù)。在Send_data狀態(tài),以Client為例,進(jìn)程通過op_subq_pk_remove函數(shù)取出數(shù)據(jù)包隊(duì)列中隊(duì)首的數(shù)據(jù)包發(fā)送給無線發(fā)射機(jī),并通過op_intrpt_schedule_self函數(shù)預(yù)置下一次TDMA的接入時(shí)間。代碼如下:

      if(op_subq_empty(0)==OPC_FALSE)

      pkptr=op_subq_pk_remove(0,OPC_QPOS_HEAD);

      op_pk_send(pkptr,0);

      op_intrpt_schedule_self(op_sim_time()+0.1*CYCLE,TIMER_OUT);

      Rec_PK狀態(tài)接收數(shù)據(jù)包,判斷數(shù)據(jù)包的來源,如果是上層TCP發(fā)來的TCP幀,則插入TDMA模塊的數(shù)據(jù)包隊(duì)列,等待自己的時(shí)隙到來的時(shí)候發(fā)送出去;如果是來自下層無線收信機(jī),則傳給上層的TCP模塊進(jìn)行處理。

      3.7 仿真實(shí)驗(yàn)及結(jié)果分析

      實(shí)驗(yàn)參數(shù)設(shè)置如下:無線信道的數(shù)據(jù)速率設(shè)置為65536bps,Client的APP模塊產(chǎn)生數(shù)據(jù)包的周期packet_interval設(shè)置為0.1 s,TDMA模塊的信道接入周期設(shè)置為0.2 s,TCP的兩個(gè)重傳定時(shí)器Timer1和Timer2設(shè)置為2 s。

      在ODB模式下運(yùn)行仿真,仿真結(jié)果如圖10-圖14所示。在圖10中1#node和2#node分別代表Client和Server。由圖10可見,經(jīng)過初始化和TCP的連接建立過程后,TCP傳輸打開,Client的TDMA模塊開始發(fā)送數(shù)據(jù)包,在大約1.4 s的時(shí)刻Server收到了1號數(shù)據(jù)包。需要說明的是由于Client的APP模塊產(chǎn)生數(shù)據(jù)包的周期是0.1 s,所以在大約10 s的時(shí)間內(nèi)產(chǎn)生了全部的DATA包(圖11),這些數(shù)據(jù)包保存在Client節(jié)點(diǎn)的TCP模塊的包隊(duì)列中。

      圖11-圖13的橫軸均為時(shí)間,圖11和圖12的縱軸分別表示發(fā)送和接收的包序號,圖13的縱軸為數(shù)據(jù)包的端到端延時(shí)。從圖13可見這100個(gè)數(shù)據(jù)包的延時(shí)呈線性增長,造成這一現(xiàn)象的原因主要是由于TDMA信道接入周期(0.2 s)大于APP模塊產(chǎn)生DATA包的周期(0.1 s)。具體的,統(tǒng)計(jì)量PK_DELAY被定義為Server的APP模塊收到DATA包的時(shí)間減去該包在Client中產(chǎn)生創(chuàng)建的時(shí)間,即

      圖12 Server的APP模塊收到的數(shù)據(jù)包

      圖13 數(shù)據(jù)包的延時(shí)

      op_stat_write(PK_delay_gsh,time-pk_create_time);

      由于Client的APP模塊按照0.1 s周期產(chǎn)生DATA包,而TDMA模塊的信道接入周期被設(shè)置0.2 s,而且當(dāng)Client的TCP模塊發(fā)送一個(gè)DATA包后還要等待Server的TCP模塊回復(fù)ACK包,這個(gè)往返過程既要進(jìn)行數(shù)據(jù)傳輸還要等待TDMA時(shí)隙的到來,所以消耗的時(shí)間要大于0.2 s,所以Client的APP模塊產(chǎn)生的DATA包被大量積壓在了TCP模塊的包隊(duì)列中等待發(fā)送,這就是為什么在圖11中100個(gè)數(shù)據(jù)包的接收時(shí)間(PK_RCVD)要大于圖10中100個(gè)數(shù)據(jù)包的產(chǎn)生時(shí)間(PK_SENT)的原因。

      圖10 TCP連接建立

      圖11 Client的APP模塊發(fā)送的數(shù)據(jù)包

      圖14表明Server成功接收了第100號數(shù)據(jù)包后回復(fù)ACK包,然后Client和Server啟動4次握手過程關(guān)閉TCP連接,完成了本次實(shí)驗(yàn)。

      圖14 TCP連接拆除

      4 兩種顆粒度仿真實(shí)驗(yàn)的教學(xué)效果

      很多高校在“計(jì)算機(jī)網(wǎng)絡(luò)”課程的實(shí)驗(yàn)教學(xué)中采用的都是基于eNSP的演示性實(shí)驗(yàn),其優(yōu)勢在于學(xué)習(xí)難度低,大概只需要2個(gè)學(xué)時(shí)即可掌握基本的建模方法,可以快速構(gòu)建網(wǎng)絡(luò)拓?fù)洌恍枰帉懘a,以即拿即用的方式幫助學(xué)生建立宏觀的網(wǎng)絡(luò)視圖。但是正如前面分析的,由于eNSP提供的只是設(shè)備層面的視圖,設(shè)備內(nèi)部的工作原理和協(xié)議的工作過程對使用者是屏蔽的,因此這種粗顆粒度仿真不利于學(xué)生理解協(xié)議的工作原理,而協(xié)議才是計(jì)算機(jī)網(wǎng)絡(luò)的精髓所在?;贠PNET的細(xì)顆粒度仿真實(shí)驗(yàn)提供了協(xié)議和代碼層面的視圖,能讓學(xué)生細(xì)致地觀察協(xié)議的運(yùn)行過程,也能讓學(xué)生編程實(shí)現(xiàn)或修改某些網(wǎng)絡(luò)協(xié)議的工作過程,并通過設(shè)計(jì)性實(shí)驗(yàn)加深對網(wǎng)絡(luò)協(xié)議的理解。但OPNET仿真的學(xué)習(xí)難度較大,需要10到15個(gè)學(xué)時(shí)才能掌握其建模原理并進(jìn)行簡單的仿真程序設(shè)計(jì)。表1從多個(gè)維度對eNSP和OPNET這兩種顆粒度仿真實(shí)驗(yàn)進(jìn)行了比較。

      表1

      表1 eNSP和OPNET仿真軟件的比較

      可見,eNSP和OPNET分別代表了入門級和專業(yè)級兩種仿真軟件,在仿真實(shí)驗(yàn)教學(xué)方面的優(yōu)勢和劣勢呈現(xiàn)出一定的互補(bǔ)性?;谶@種考慮,本文提出了把eNSP和OPNET這兩種顆粒度仿真實(shí)驗(yàn)有機(jī)結(jié)合的教學(xué)路徑。在教學(xué)過程中,為了驗(yàn)證這一教學(xué)路徑的有效性,對嘉應(yīng)學(xué)院兩級學(xué)生約200人次的學(xué)習(xí)效果進(jìn)行對比,為其中一級學(xué)生只開設(shè)了8個(gè)學(xué)時(shí)的eNSP實(shí)驗(yàn),為另一級學(xué)生開設(shè)了4個(gè)學(xué)時(shí)的eNSP實(shí)驗(yàn)+8個(gè)學(xué)時(shí)的OPNET實(shí)驗(yàn)。對學(xué)習(xí)效果的考核指標(biāo)包括網(wǎng)絡(luò)配置能力、實(shí)操和程序設(shè)計(jì)能力、對基本概念的理解度、對協(xié)議的理解度,以及對網(wǎng)絡(luò)工作性能參數(shù)的理解度等等。學(xué)習(xí)成績區(qū)分為1至5級,1級最低,5級最高。教學(xué)效果的比較如表2所示,可見采用本文提出的eNSP+OPNET的仿真實(shí)驗(yàn)教學(xué)路徑比傳統(tǒng)教學(xué)方法僅僅多用了4個(gè)學(xué)時(shí)就取得了各項(xiàng)指標(biāo)的全面提升。

      表2 教學(xué)效果比較

      5 結(jié)語

      在“計(jì)算機(jī)網(wǎng)絡(luò)”的教學(xué)中合理有效地設(shè)計(jì)網(wǎng)絡(luò)仿真實(shí)驗(yàn)可以極大地提高學(xué)生的理解度和學(xué)習(xí)效果,激發(fā)學(xué)生的學(xué)習(xí)興趣。本文在“計(jì)算機(jī)網(wǎng)絡(luò)”教學(xué)中,提出了粗顆粒度仿真和細(xì)顆粒度仿真兩種網(wǎng)絡(luò)仿真實(shí)驗(yàn)相結(jié)合的仿真教學(xué)方法。首先,應(yīng)用eNSP進(jìn)行粗顆粒度仿真實(shí)驗(yàn),讓學(xué)生在設(shè)備層面了解如何構(gòu)建仿真網(wǎng)絡(luò)和配置仿真參數(shù),以及如何通過抓包工具觀察協(xié)議的執(zhí)行過程。其次,應(yīng)用OPNET設(shè)計(jì)細(xì)顆粒度仿真實(shí)驗(yàn),在程序和代碼層面向?qū)W生展示協(xié)議的工作流程、數(shù)據(jù)包的傳輸和字段的分析處理過程,幫助學(xué)生理解和掌握網(wǎng)絡(luò)協(xié)議的精髓和設(shè)計(jì)方法。本文詳細(xì)討論了如何應(yīng)用OPNET進(jìn)行網(wǎng)絡(luò)仿真實(shí)驗(yàn)設(shè)計(jì),以TCP協(xié)議建模為例說明如何構(gòu)建網(wǎng)絡(luò)模型、節(jié)點(diǎn)模型、進(jìn)程模型、數(shù)據(jù)包格式,以及如何用C語言和OPNET的內(nèi)核函數(shù)編寫仿真程序和處理各種中斷。該實(shí)例簡潔明了地說明了OPNET仿真程序設(shè)計(jì)的基本過程,幫助學(xué)生清晰地認(rèn)識和理解計(jì)算機(jī)網(wǎng)絡(luò)的工作過程,包括數(shù)據(jù)包的生成、排隊(duì)、發(fā)送和接收,以及對各個(gè)字段的存取和處理。通過對兩級學(xué)生的仿真實(shí)驗(yàn)?zāi)芰M(jìn)行測試與考核,結(jié)果證明,本文提出的eNSP+OPNET的仿真實(shí)驗(yàn)教學(xué)路徑比傳統(tǒng)單純依賴eNSP的仿真教學(xué)方法只需要多增加幾個(gè)學(xué)時(shí)就可以使學(xué)生的動手操作和實(shí)驗(yàn)設(shè)計(jì)能力得到大幅度提升。

      猜你喜歡
      數(shù)據(jù)包計(jì)算機(jī)網(wǎng)絡(luò)建模
      聯(lián)想等效,拓展建?!浴皫щ娦∏蛟诘刃鲋凶鰣A周運(yùn)動”為例
      SmartSniff
      基于PSS/E的風(fēng)電場建模與動態(tài)分析
      電子制作(2018年17期)2018-09-28 01:56:44
      計(jì)算機(jī)網(wǎng)絡(luò)環(huán)境下混合式教學(xué)模式實(shí)踐與探索
      電子制作(2018年16期)2018-09-26 03:27:08
      不對稱半橋變換器的建模與仿真
      計(jì)算機(jī)網(wǎng)絡(luò)信息安全及防護(hù)策略
      電子制作(2018年12期)2018-08-01 00:47:58
      計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的應(yīng)用探討
      基于Libpcap的網(wǎng)絡(luò)數(shù)據(jù)包捕獲器的設(shè)計(jì)與實(shí)現(xiàn)
      三元組輻射場的建模與仿真
      計(jì)算機(jī)網(wǎng)絡(luò)維護(hù)工作的思考
      河南科技(2014年19期)2014-02-27 14:15:24
      叶城县| 永顺县| 呈贡县| 天镇县| 红桥区| 南昌县| 辉县市| 汕尾市| 上思县| 如皋市| 桃园县| 邳州市| 五指山市| 镇宁| 英超| 龙州县| 常宁市| 宜昌市| 绥中县| 方正县| 巨鹿县| 呼和浩特市| 呈贡县| 高碑店市| 河池市| 涿州市| 金昌市| 高青县| 河北省| 常州市| 黄骅市| 永康市| 汾西县| 五寨县| 伊吾县| 太仓市| 广平县| 望城县| 石泉县| 高青县| 彰化县|