亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        淺談NS2仿真平臺在計算機網絡實驗教學中的應用

        2014-04-29 00:00:00敖欣
        計算機光盤軟件與應用 2014年11期

        摘 要:由于計算機網絡實驗設備存在價格昂貴、維護困難等特點,高校計算機網絡教學多偏重理論知識傳授而忽視實驗訓練,因而影響了學生的學習興趣及學習效果。針對這一情況,探索如何利用開源的計算機網絡仿真平臺NS2來輔助實驗教學,改善課程的實驗教學效果。具體來講,利用Eclipse開發(fā)工具賦予NS2平臺靈活的代碼跟蹤能力,從而幫助學生通過代碼層次的單步跟蹤、跳轉等仿真控制來深入理解計算機網絡協議的具體工作流程,提高實驗教學效果。

        關鍵詞:計算機網絡;NS2仿真;代碼跟蹤;代碼調試

        中圖分類號:TP393;G642

        作為信息類學科的骨干課程,計算機網絡涉及到計算機軟件、硬件及通信類等多學科的綜合知識,具有概念多、應用性強、實踐需求高等顯著特點。在當前社會普遍強調學生實踐能力的背景下,如何有效培養(yǎng)學生的實際動手能力已成為計算機網絡課程的重點任務。然而,由于計算機網絡實驗設備相對昂貴,維護費用也比較高,學校往往無力給學生們提供充足的實驗條件。因此,學生們也無法深入了解其計算機網絡的具體工作原理,極大影響了課程的學習效果。

        針對這一現狀,有些教師試圖用從教學模式創(chuàng)新[1]、實驗內容改革[2-3]等角度來減輕課程對實驗的依賴程度,以強化的理論學習來部分取代實驗操作;而有些教師則傾向采用所謂“網絡硬件軟件化”的方案[4-11]。該類方案大多采用自制[4]或者已有軟件平臺[5-12]來模擬計算機網絡的硬件運作,以幫助學生在硬件實驗條件不充分的情況下深入了解、掌握計算機網絡的相關概念、運行原理。方案[4]利用C++面向對象特性設計了一個獨立的OSLite開放式軟件實驗環(huán)境,能夠在普通PC上實現一些小規(guī)模的網絡實驗。然而,受限設計水平及計算機網絡的復雜度,自制平臺往往功能薄弱、維護難度大,不適用于面向學生的實驗教學。因此,目前大部分的”網絡硬件軟件化“方案多采用較為成熟的已有平臺。這些平臺包括協議分析中常用的Wireshark[5]、Packet Tracer[6]等軟件,以及包括OPNET[7]、Netsim[8]、NS2[9-12]等協議仿真平臺。前一類方案雖能通過Wireshark等軟件捕捉真實的網絡數據包,卻只能根據這些數據包靜態(tài)地分析計算機網絡的協議層次及架構,不能很好地觀察網絡的動態(tài)交互性;而后一類方案不僅能通過NS2等軟件平臺模擬產生近乎真實的各層數據[9-11],還能利用軟件的附加工具觀察擁塞控制等協議在不同網絡實體之間的互動情況[12],具有很強的靈活性與可控性,便于學生觀察學習。

        遺憾的是,后一類方案的研究大多停留在NS2工作原理介紹或者基于NS2的課程實驗內容設計等方面,而鮮有研究考慮NS2平臺與計算機課程教學方法的具體結合。為此,本文先分析NS2平臺的特點,發(fā)現原始NS2平臺僅能夠控制或者呈現網絡協議在不同網絡實體間的互動,卻無法從源代碼層次上控制或者呈現協議在同一實體不同協議層次間的交互。而后者,恰恰能直觀地幫助學生們理解計算機網絡協議分層的原因及具體動作流程?;谶@一不足,本文通過重置原始NS2平臺的編譯、調試功能,并結合Eclipse出色的代碼閱讀、調試控制等功能來賦予NS2平臺靈活的代碼跟蹤能力,從而輔助學生從源代碼層次來理解計算機網絡協議的具體工作流程,提高計算機網絡實驗的教學效果。

        1 方案設計

        1.1 NS2仿真平臺

        NS2全名為Network Simulator version 2,是一種面向計算機網絡仿真的開源軟件平臺。其模塊化、靈活配置等特性能及時融合研究人員所提出的各類創(chuàng)新,深受科學研究人員的喜愛;同時它也被教育界當成一種有效的輔助教學方式,廣泛應用在計算機網絡類課程的教學過程中[12]。與計算機網絡高度模塊化、靈活配置性等特點相適應,NS2采用了一種混合編程架構來兼顧計算機網絡協議的仿真性能與可配置性。如圖1所示,它使用面向對象的編譯型語言C++以及腳本型語言OTCL作為開發(fā)語言,并提出了一種TCLCL機制來融合兩類語言。從性能考慮出發(fā),C++多被用來編寫承擔較多數據處理功能的網絡組件,如MAC協議、路由協議等;而從便捷配置的角度出發(fā),OTCL語言則被用于描述網絡仿真的場景以及一些簡單的網絡組件。

        圖1 NS2系統框架

        從內部運行原理來看,NS2是一種事件驅動型的離散事件模擬器,包含C++仿真事件調度器、C++網絡組件對象庫等。其核心處理任務是按時間順序調度所有事件,即執(zhí)行事件所對應的代碼處理流程并記錄事件發(fā)生、完成時間等。而從對外接口來看,NS可理解為Otcl腳本解釋器,負責從用戶仿真文件中依順序讀取相應腳本指令,并調用解釋器進行解釋。用戶腳本中的指令是驅動NS2運轉的源動力,而NS2中執(zhí)行的每一個事件也可能自動引發(fā)下一個事件的發(fā)生,如發(fā)送節(jié)點的數據發(fā)送事件必然會引發(fā)接收節(jié)點相對應的數據接收事件等。NS2會用標準的格式記錄每一個事件發(fā)生的具體信息,并寫入仿真腳本指定的記錄文件中。仿真結束后,用戶可以利用NS2平臺附帶的GunPlot、Xgraph等工具分析感興趣的網絡性能參數。此外,NS2附帶的Nam工具還能根據記錄文件通過視圖、動畫形式重現仿真過程,給用戶提供更為直觀的觀察途徑。NS2平臺的下載、安裝步驟有很多專門的網絡文檔加以說明,具體可參閱文獻[12]。

        1.2 Eclipse工具

        Eclipse是一個基于JAVA的開源開發(fā)平臺,通過提供一個整體框架及相應的服務,以方便用戶開發(fā)新插件或配置已有插件來自定義開發(fā)環(huán)境。本文即選用常用的CDT插件來支持Eclipse平臺下的C++代碼開發(fā)。與其它平臺相比較,Eclipse+CDT平臺不但能支持Windows、Linux等各類操作系統,還具有出色的代碼閱讀與代碼調試功能。就代碼閱讀功能而言,它不但支持通過正則表達式快速定位源文件,還能快速發(fā)現類之間的繼承關系,并圖形化顯示。除了提供其它常見的代碼高度等功能,它還支持圖形化的方式來快速定位函數間的調用關系。這非常便于用戶理解計算機網絡協議內各功能塊之間的相互關系。除了出色的代碼閱讀功能,內置GDB調試器的CDT插件支持單步或任意斷點間的中斷操作,從而方便用戶靈活地觀察、控制計算機網絡協議各功能塊間的運轉,此外,它還提供在中斷過程中實時圖形化顯示當前程序各類變量及其當前值的功能,便于用戶了解協議的實時運行狀態(tài)。

        1.3 重置NS2平臺

        NS2實驗雖然能夠通過Nam等仿真工具重現網絡場景中各網絡節(jié)點間的協議互動,卻無法幫助學生跟蹤觀察單個節(jié)點內數據在各個協議層次之間的流轉。這一不足直接弱化了NS2平臺對于計算機網絡課程教學的輔助功能。為了便于學生從代碼、函數級別清晰地觀察協議每個模塊的運轉流程,需要進一步挖掘NS2平臺的潛在功能。為此,我們需要賦予NS2平臺靈活可控的代碼跟蹤能力,并借助Eclipse平臺出色的代碼調試與代碼閱讀功能來達到流暢、靈活、可控的全流程代碼跟蹤、閱讀體驗。為達成上述目標,需要使NS2運行過程中所有NS2代碼都完全可跟蹤、控制。然而,由于NS2平臺由編譯型語言C++和腳本型語言OTCL語言共同編寫,導致NS2程序運行環(huán)境也將在兩類語言中不斷切換。因此,需要重置NS2平臺,以使其C++代碼、Tcl腳本代碼在各自的運行環(huán)境中都可跟蹤。

        1.3.1 C++環(huán)境的調試

        首先,我們先考慮NS2平臺中C++代碼部分。GDB是針對C/C++環(huán)境的常用調試器,具有完成程序啟動、在指定代碼處暫停程序執(zhí)行、檢查程序運行環(huán)境中的變量并動態(tài)改變程序執(zhí)行環(huán)境等強大功能。依賴于C/C++代碼在編譯時添加的額外輔助調試信息,它能夠在程序暫停時,反向定位程序當前運行代碼所對應的源代碼位置,從而實現程序運行過程中的實時跟蹤。普通編譯模式下,代碼編譯器GCC并不加入這部分調試信息,以保持最終生成可執(zhí)行文件的簡潔。同樣,NS2原始平臺在編譯過程中并沒有完成這一項工作。因此,我們需要更改NS2平臺的編譯選項,并重新生成NS2可執(zhí)行文件。具體來講,我們需要跳至ns2可執(zhí)行文件所在目錄,先用make clean命令清除原始NS2平臺生成的舊目標文件、庫文件和可執(zhí)行文件。然后,再用sudo./configure --enable-debug命令將調試信息添加進去(這個configure命令實際上是生成Makefile文件,--enable-debug參數相當直接在Makefile文件中的編譯選項中添加-g選項)。接下來,重新運行make命令便可生成全新的可調試NS2。

        如圖2所示,當在NS2程序的主函數入口main處設置斷點時(該函數位于TclAppInit.cc中,調試時勾選stopped at main function選項可定位此文件),可發(fā)現整個NS2程序的最外層由兩句代碼組成:Tcl_Main(argc,argv,Tcl_AppInit);return 0。也就是說,NS2平臺所有功能都集中在Tcl_Main函數中實現。因此,需要在Tcl_Main函數處設置斷點,并使用單步調試功能進入該函數。然而,如圖2所示,程序并未如期進入Tcl_Main函數,而是直接跳至return 0這句代碼。經分析,其原因在于Tcl_Main函數的實現文件并非位于ns2目錄下,而是引自于Tcl庫文件libtcl8.*.a(*代表具體的版本數字)。該庫文件保存在NS2對應的lib目錄下。因此,為了能夠跟蹤進入Tcl_Main文件,還需要重新生成可調試的Tcl庫文件。由于生成Tcl庫文件的源文件位于NS2平臺對應的Tcl目錄下的unix子目錄,需要修改該目錄下對應的編譯控制文件Makefile,即將編譯選項CFLAGS從初始的優(yōu)化模式$(CFLAGS_DEBUG)切換為調試模式$(CFLAGS_DEBUG),然后再重新編譯生成新的Tcl庫文件。新的可調試庫文件生成后,需再將其拷貝至NS2對應的lib目錄,而后再重新生成新NS2。需要注意的是,NS2除了引用Tcl靜態(tài)庫以后,還引用了TK、Otd和Tdd等三個庫文件。而且,這些庫文件之間存在相互引用的情況。因此,需要用上述方法按以下順序:Tcl->TK->Otcl->tclcl,重新編譯生成這四個庫文件,以實現NS2在Eclipse中的全程調試。

        圖2 NS2平臺入口代碼展示

        1.3.2 Tcl環(huán)境的調試

        上文已經討論過:NS2由C++和Tcl兩種語言生成。C++代碼主要負責生成具體的網絡構件,所以C++環(huán)境下的調試主要便于了解具體的網絡構件的運行原理。Tcl代碼主要負責配置仿真的場景及其它設置,所以Tcl環(huán)境下的調試主要便于控制仿真的具體進度,并檢查仿真腳本中的設置錯誤或者不當。與C++環(huán)境下的調試類似,Tcl環(huán)境下使用一種語法與原理都與Gdb相似的工具Tcl-Debug-2.0。通過在仿真腳本中設置具體的斷點控制語句,Tcl-Debug允許用戶任意切入或者暫停仿真腳本的運行,并通過相關指令查看當前Tcl環(huán)境下的環(huán)境變量。其具體支持的指令包括:s單步執(zhí)行(進入進程);n單步執(zhí)行(不進入進程);c繼續(xù);r繼續(xù)執(zhí)行直到從過程中返回;u轉至上級作用域;d轉至下級作用域;w列出調用棧;b設置,清除或顯示斷點;h幫助。以NS2 2.34版本為例,Tcl-debug的安裝過程如下(其中workdir是指ns2所在的工作目錄)。

        1)將下載的tar包拷貝到與NS平行的目錄下,例如/home/workdir/ns2/ns-allinone-2.34/下,使用命令tar-zxvf tcl-debug.tar.gz進行解壓。

        2)進入解壓時創(chuàng)建的目錄tcl-debug-2.0,運行命令。

        ./configure--prefix=/home/workdir/ns2/ns-allinone-2.34--with-tcl=/home/workdir/ns2/ns-allinone-2.34/tcl*/unix其中,*代表具體的Tcl版本號。

        3)運行命令make,生成Tcl-debug工具(實質上是一個靜態(tài)庫)。

        4)重新編譯NS,并加入相應的調試器模塊,進入到ns- 2.34目錄下,運行命令:

        ./configure--with-tcldebug=/home/workdir/ns2/ns-allinone-2.34/tcl-debug-2.0--enable-debug

        5)運行make命令,重新生成ns2。

        需要注意的是,步驟4中的--enable-debug是配置C++環(huán)境的調試功能,并假定已按上一節(jié)中的相關操作重新配置、生成了NS2所引用的靜態(tài)庫。另外,與Eclipse平臺的C++調試不同,Tcl環(huán)境下的調試僅支持在控制臺使用相關指令控制程序流程,并不支持源代碼的逆向定位及展示。

        至此,我們已經完成了NS2平臺的重構,實現了NS2平臺所有C++、Tcl代碼在各自運行環(huán)境下的調試功能。尤其對于編寫具體網絡構件的C++代碼,還可借助于Eclipse平臺的集中代碼調試與代碼閱讀功能,實現流暢、可控的代碼逆向跟蹤與調試功能。

        2 結束語

        受計算機網絡實驗設備昂貴、維護困難等現實問題的限制,高校計算機網絡課程往往難以提供充足的實驗條件。針對這一不足,大多數學校多采用一種名為“網絡硬件軟件化”的折中方案。該方案通過NS2、OPNET等軟件模擬不同網絡設備的工作原理,從而以較小的經濟代價幫助學生更為直觀地學習計算機網絡課程,改善學習效果。在此基礎上,本文進一步提出一種通過重置NS2編譯、調試功能,并結合Eclipse出色的代碼閱讀、調試控制等功能來賦予NS2平臺靈活的代碼跟蹤能力,從而輔助學生從源代碼層次理解計算機網絡協議的具體工作流程,提高計算機網絡實驗的教學效果。

        參考文獻:

        [1]賈炎川.計算機網絡課程教學改革與實踐[J].計算機光盤軟件與應用,2013,16(11):176-176.

        [2]楊麗麗.計算機網絡課程教學新思路[J].計算機光盤軟件與應用,2012(12):246-247.

        [3]王春枝,李紅,歐陽勇.計算機網絡課程實驗教學研究[J].實驗室研究與探索,2007(12):350-352.

        [4]謝謙,徐彬.建立計算機網絡課程開放實驗平臺的探索[J].實驗技術與管理,2001(06):32-34.

        [5]譚順華,陳淼.將Wireshark引入計算機網絡課堂教學方法研究[J].中國科技信息,2011(01):197-198.

        [6]徐佩鋒,趙中營.用PacketTracer軟件改進高職計算機網絡實驗教學[J].計算機教育,2008(18):35-37.

        [7]林瑜華,莫家慶.基于OPNET的網絡仿真實驗教學研究[J].實驗科學與技術,2011(04):39-42.

        [8]謝慧,聶峰.基于Netsim的計算機網絡仿真實驗教學研究[J].實驗技術與管理,2007(05):89-91.

        [9]劉外喜,高鷹,胡曉.虛擬實驗室在計算機網絡課程教學中應用的設計[J].計算機教育,2007(04):72-76.

        [10]周德榮,夏齡,舒濤.NS2網絡協議虛擬仿真實驗平臺研究[J].實驗技術與管理,2014(03):36-40.

        [11]何建新.NS2在網絡實驗輔助教學中的應用[J].實驗科學與技術,2008(06):64-66.

        [12]馬崇霄,張云,于晶晶.網絡仿真軟件NS2的安裝及協議擴展[J].甘肅科技,2010(02):10-16.

        作者簡介:敖欣(1985-),男,江西高安人,博士,講師,研究方向:無線自組織網絡及其應用。

        作者單位:東莞理工學院計算機學院,廣東東莞 523808

        基金項目:本文得到東莞理工學院博士啟動項目(項目編號:ZJ106903)和廣東省科技計劃項目(項目編號:2009B010900036)的支持。

        性色av成人精品久久| 亚州性无码不卡免费视频| 少妇人妻综合久久中文字幕| 日韩精品一区二区三区免费视频| 精品囯产成人国产在线观看| av亚洲在线一区二区| av在线入口一区二区| 久久久久亚洲精品无码系列| 欧美 国产 综合 欧美 视频| 中国年轻丰满女人毛茸茸| 亚洲va中文字幕无码毛片| 欧美性大战久久久久久久| 国产一线视频在线观看高清| 日本一道dvd在线中文字幕 | 激情在线一区二区三区视频| 亚洲中文字幕无码不卡电影| 人妻系列无码专区久久五月天| 躁躁躁日日躁| 成人综合久久精品色婷婷| 在线观看视频亚洲一区二区三区 | 久久综合精品国产一区二区三区无码| av一区无码不卡毛片| 亚洲色偷偷综合亚洲AVYP| 亚洲综合综合在线| 日韩在线精品免费观看| 中文有码亚洲制服av片| 国产性生大片免费观看性| jlzzjlzz全部女高潮| 五月停停开心中文字幕| 91精品国产综合久久久蜜| 中文字幕乱码无码人妻系列蜜桃| 国产精品无码一区二区在线看| 亚洲人成无码网站久久99热国产| 美女扒开内裤露黑毛无遮挡| 男女啦啦啦视频在线观看| 国产亚洲人成在线观看| 黑森林福利视频导航| 免费中文熟妇在线影片| 久久精品国产白丝爆白浆| 蜜桃视频免费进入观看 | 日韩乱码人妻无码中文字幕视频|