国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

“計算機網(wǎng)絡(luò)”課程實驗仿真教學(xué)的路徑探索

2021-10-23 02:37劉宴濤
電氣電子教學(xué)學(xué)報 2021年5期
關(guān)鍵詞:數(shù)據(jù)包計算機網(wǎng)絡(luò)建模

劉宴濤,秦 娜,2

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

0 引言

現(xiàn)代社會已經(jīng)進入“萬物互聯(lián),無網(wǎng)不勝”的網(wǎng)絡(luò)時代。隨著通信網(wǎng)絡(luò)基礎(chǔ)設(shè)施的日益完善和三網(wǎng)融合的持續(xù)推進,不斷催生出電子商務(wù)、門戶網(wǎng)站、網(wǎng)絡(luò)直播、視頻點播、搜索引擎、智能電網(wǎng)、5G移動通信、云計算、物聯(lián)網(wǎng)等眾多新技術(shù)、新經(jīng)濟和新業(yè)態(tài),并進而帶動上下游產(chǎn)業(yè)鏈,極大地推動了國民經(jīng)濟的發(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é)方法體系提出了新的更高的要求。

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

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

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

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

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

網(wǎng)絡(luò)仿真是研究網(wǎng)絡(luò)的一種高效的必不可少的手段,具有簡單、易實現(xiàn)、靈活性高、成本低、可信度高、演示性好、適用于各種網(wǎng)絡(luò)等優(yōu)點。網(wǎng)絡(luò)仿真是計算機仿真技術(shù)的一種,該技術(shù)通過建立設(shè)備、鏈路、移動性、業(yè)務(wù)量等模型,編程實現(xiàn)各層協(xié)議算法,模擬生成網(wǎng)絡(luò)拓?fù)?,從而在計算機上構(gòu)建出一個虛擬網(wǎng)絡(luò)。通過為虛擬節(jié)點加載業(yè)務(wù)量并模擬網(wǎng)絡(luò)流量的傳輸,獲取網(wǎng)絡(luò)的性能參數(shù),從而檢驗協(xié)議性能、測試網(wǎng)絡(luò)容量、改善網(wǎng)絡(luò)運行狀況。網(wǎng)絡(luò)仿真能夠為網(wǎng)絡(luò)的規(guī)劃設(shè)計提供客觀定量的依據(jù),縮短網(wǎng)絡(luò)建設(shè)周期,減少建設(shè)成本,降低投資風(fēng)險。此外,仿真所建立的模型靈活度高,可重用性好,基于已有的模型模塊可以很容易地構(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這兩種仿真軟件分別實現(xiàn)粗顆粒度和細(xì)顆粒度的仿真實驗,從而把網(wǎng)絡(luò)仿真融入到計算機網(wǎng)絡(luò)的教學(xué)中以提高學(xué)生的體驗度。

2 eNSP仿真實驗

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

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

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

圖2 Client1地址配置

圖3 測試兩臺PC機的連通性

右鍵單擊圖1路由器左側(cè)的GE0/0/0接口并單擊開始抓包,可以啟動Wireshark協(xié)議分析器,抓包結(jié)果如圖4所示,可見成功抓取了ping命令執(zhí)行過程的各個數(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ò)運行起來,仿真網(wǎng)絡(luò)的工作流程和可視化效果非常接近于真實的物理網(wǎng)絡(luò),有利于學(xué)生快速上手學(xué)習(xí),也便于網(wǎng)絡(luò)工程師進行網(wǎng)絡(luò)的設(shè)計、規(guī)劃、分析和檢驗。

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

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

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

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

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

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

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

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

3.3 節(jié)點模型

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

圖6 節(jié)點模型

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

3.4 APP進程模型

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

具體的,INIT狀態(tài)在仿真開始時進入,用于讀取工作參數(shù)、初始化各種變量、以及啟動數(shù)據(jù)傳輸?shù)?;?dāng)進程不需要處理事件的時候?qū)⑼A粼贗DLE狀態(tài)等待下一個中斷的到來。INIT和IDLE是所有OPNET進程模型都具有的狀態(tài)。Send_Data狀態(tài)用于發(fā)送數(shù)據(jù),由于本實驗的仿真想定為周期性地發(fā)送100個DATA包,周期定義為狀態(tài)變量packet_interval,所以進程要周期性地重復(fù)進入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è)計工作。

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

圖7 方波波形合成實驗結(jié)果圖a

圖7 APP模塊的進程模型

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進程模型

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

圖8 TCP模塊的進程模型

圖8中除了INIT和IDLE狀態(tài)之外,有一個接收數(shù)據(jù)包狀態(tài)Rec_PK,當(dāng)進程收到包中斷后進入該狀態(tài)。OPNET中每個狀態(tài)下方的兩個數(shù)字分別表示該狀態(tài)入口代碼和出口代碼的行數(shù),可見Rec_PK的入口代碼由632行代碼組成,功能比較復(fù)雜。由于到達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包頭和各個字段的信息并根據(jù)這些信息做出相應(yīng)的動作,比如取出DATA字段傳給APP模塊,或回復(fù)ACK給發(fā)送端,或收發(fā)雙方配合完成建立連接和拆除連接過程。

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

圖8 方波波形合成實驗結(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子隊列中的數(shù)據(jù)包,op_pk_nfd_set函數(shù)用于設(shè)置TCP包的各個字段,op_pk_send函數(shù)用于發(fā)出TCP包,op_intrpt_schedule_self函數(shù)用于設(shè)置定時中斷。如果發(fā)端TCP模塊在定時器期滿之前收到了收端TCP模塊回復(fù)的ACK確認(rèn)幀,則Client停止Timer2的計時并為其清零。

3.6 TDMA進程模型

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

圖9 TDMA模塊的進程模型

其中,INIT狀態(tài)指定了Client和Server的初次接入時刻分別為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)條件,即讓進程從idle狀態(tài)跳轉(zhuǎn)到Send_data狀態(tài)去發(fā)送數(shù)據(jù)。在Send_data狀態(tài),以Client為例,進程通過op_subq_pk_remove函數(shù)取出數(shù)據(jù)包隊列中隊首的數(shù)據(jù)包發(fā)送給無線發(fā)射機,并通過op_intrpt_schedule_self函數(shù)預(yù)置下一次TDMA的接入時間。代碼如下:

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ù)包隊列,等待自己的時隙到來的時候發(fā)送出去;如果是來自下層無線收信機,則傳給上層的TCP模塊進行處理。

3.7 仿真實驗及結(jié)果分析

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

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

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

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

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

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ā)送一個DATA包后還要等待Server的TCP模塊回復(fù)ACK包,這個往返過程既要進行數(shù)據(jù)傳輸還要等待TDMA時隙的到來,所以消耗的時間要大于0.2 s,所以Client的APP模塊產(chǎn)生的DATA包被大量積壓在了TCP模塊的包隊列中等待發(fā)送,這就是為什么在圖11中100個數(shù)據(jù)包的接收時間(PK_RCVD)要大于圖10中100個數(shù)據(jù)包的產(chǎn)生時間(PK_SENT)的原因。

圖10 TCP連接建立

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

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

圖14 TCP連接拆除

4 兩種顆粒度仿真實驗的教學(xué)效果

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

表1

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

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

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

5 結(jié)語

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

猜你喜歡
數(shù)據(jù)包計算機網(wǎng)絡(luò)建模
基于Jpcap的網(wǎng)絡(luò)數(shù)據(jù)包的監(jiān)聽與分析
聯(lián)想等效,拓展建?!浴皫щ娦∏蛟诘刃鲋凶鰣A周運動”為例
SmartSniff
基于PSS/E的風(fēng)電場建模與動態(tài)分析
計算機網(wǎng)絡(luò)環(huán)境下混合式教學(xué)模式實踐與探索
不對稱半橋變換器的建模與仿真
計算機網(wǎng)絡(luò)信息安全及防護策略
計算機網(wǎng)絡(luò)技術(shù)的應(yīng)用探討
三元組輻射場的建模與仿真
移動IPV6在改進數(shù)據(jù)包發(fā)送路徑模型下性能分析