劉桂開,劉江濤
(湖南科技大學 計算機科學與工程學院,湖南 湘潭 411201)
針對計算機網絡知識體系,學習計算機網絡首先要學習的是計算機網絡的體系結構,包括各層協議及其構件所應完成的相應功能。然后是各層協議功能的具體實現,完成遵循所定義體系結構的硬件或軟件,如路由器、交換機等網絡設備以及主機操作系統TCP/IP 協議棧的實現等。不過,學習的時候并不需要實現每個層次的功能,只需通過系統調用和應用編程接口,得到操作系統的服務來完成跨越網絡的通信,重點在于理解計算機網絡協議功能的具體實現與應用過程。有了具備通信功能的網絡設備和主機,如何將它們互連起來構建成一個互聯網絡,也是計算機網絡知識體系中一個非常重要的組成部分。構建網絡實踐性非常強,在開設理論課的同時,還必須配備大量的組網實驗來培養學生的實際動手能力。為此,許多高校都建立了計算機網絡實驗室,以確保教學工作的正常進行。然而,網絡實驗室的發展受到諸多因素的制約,如設備更新換代快、投資成本高、設備容易損壞等,有可能使建立不久的實驗室很快變得資源短缺,從而無法滿足人才培養的要求。另外,實驗的開設還會受到場地和時間的限制,既不利于實驗室的充分利用,也不利于學生的自主學習。
網絡仿真軟件的出現使組網實驗的進行變得相對容易[1],可用于計算機網絡組建的仿真軟件有Packet Tracer、Dynamips、GNS3、NetSim、eNSP 等,其中前四種支持思科(Cisco)設備,最后一種支持華為設備。學生將網絡仿真軟件安裝在自己的電腦上,隨時隨地都可以進行實驗,不會受到場地和時間的限制,可以充分發揮個人主觀能動性,激發學習興趣。網絡仿真軟件也不存在設備更新、投資成本的問題,對計算機網絡教學起到了很好的輔助作用。不過,它們都不是專門為教學而開發的,因而并不具備教學所需的諸多環節。例如,教學需要所有學生都參與,并不是針對某一個學生,由于網絡仿真軟件是單機環境,學生是否使用網絡仿真軟件進行了組網實驗教師并不知情。只有對教學進行管理才能確保每個學生都參與到教學活動之中。另外,使用網絡仿真軟件做實驗,教師也需要關注實驗效果。一方面,教師需要了解學生的實驗情況來制定或調整后續的教學計劃;另一方面,教師需要對學生所做實驗形成比較客觀準確的判斷,并給定考核意見或等級[2]。此外,如果教師與學生之間能夠及時進行交流,就某些問題進行探討,就會達到更好的教學效果。
現代信息技術發展迅速,有基礎將網絡仿真軟件的優勢與教學管理結合起來,構建一個在線的計算機網絡虛擬仿真實驗教學平臺,在教師的統一管理下完成所要求的各項教學任務,并充分發揮網絡在信息傳遞方面所具有的優勢,實現教師和學生之間隨時隨地的溝通交流、答疑解惑[3]。本文將探討計算機網絡實驗教學與現代信息技術緊密結合,利用虛擬化技術實現服務器資源的合理化應用,將網絡仿真軟件由單機環境擴展到網絡環境,并完成實驗教學的管理功能,讓在線網絡虛擬仿真成為計算機網絡實驗室的有效補充與延伸。
平臺架構由兩大功能模塊組成,即在線組網虛擬仿真部分和實驗教學管理部分。在線組網虛擬仿真部分是平臺的主體功能模塊,基于已有仿真軟件構建出虛擬的網絡設備和網絡環境,用戶可以通過互聯網進行遠程操作,完成相應的組網實驗。實驗教學管理部分是進行在線組網實驗的輔助功能模塊,可以在線發布實驗任務,對實驗進程進行監管,對實驗結果進行評價,并支持在線交流。
網絡仿真軟件是網絡方面的虛擬化技術產品,支持思科設備模擬的仿真軟件比較多,有從硬件層面模擬的如Dynamips,也有從軟件層面模擬的如Packet Tacer等,相比之下各有優勢。Packet Tracer圖形化界面友好,因而易于操作。Dynamips 是法國UTC(University of Technology of Compiegne)大學Christophe Fillot 開發的一個基于虛擬化技術的模擬器(Emulator),用于模擬思科的網絡設備。Dynamips 圖形化效果不是很好,不太易于操作,它的優勢在于可以模擬出更接近真實網絡設備的效果,且幾乎支持所有的思科IOS(Internetwork Operating System),IOS 是思科網絡設備的操作系統。在線虛擬仿真用戶將通過互聯網利用基于Applet 的Telnet 技術遠程操作所模擬的網絡設備,且不再使用網絡仿真軟件原有的用戶界面,在平臺開發過程中,通過使用HTML5 Canvas 的jTopo 框架技術提供圖形化的用戶界面和實現網絡拓撲圖的呈現[4][5],完全可以彌補Dynamips 在圖形化界面方面的不足,因此,選擇Dynamips 更能滿足在線組網虛擬仿真平臺的開發需求,可以充分利用其在網絡設備模擬方面的優勢。
平臺層次總體上遵循B/S 的三層架構,即表示層、業務邏輯層和數據層。表示層通過瀏覽器為用戶提供應用程序的訪問與響應,包括接受用戶請求、返回數據等功能。業務邏輯層的主要構件是Dynamips 服務器和Web 服務器,負責對數據層進行操作。數據層就是一個數據庫[6],為業務邏輯層和表示層提供數據服務,包括用戶信息、網絡資源、教學管理、實驗操作等方面的數據,其中用戶主要包括學生、教師和管理員。平臺的總體設計如圖1 所示。

圖1 基于B/S 的平臺總體架構
在線組網虛擬仿真功能模塊主要由以下步驟完成:①教師或管理員用戶對需要使用的網絡設備進行注冊登記,并配置好已注冊設備的各項基本參數;②由Dynamips 仿真服務器虛擬出網絡設備如路由器、PC 機等;③所需設備配置完成后,用戶可以向Web 服務器發起設備信息請求,增加位置數據并互連設備后,即可生成網絡拓撲圖,期間可對拓撲圖進行調整,使其達到理想的呈現狀態。④用戶對拓撲圖中的設備進行配置,完成相應的組網實驗。
總的來說,就是要將實驗參數傳遞給Dynamips 服務器,由Dynamips 服務器完成組網實驗。不同之處在于,單機環境下是本地直接配置參數,現在是需要通過互聯網絡傳遞參數。參數的傳遞可以分為兩個階段:生成設備、把設備按要求通過鏈路連接起來,并呈現網絡拓撲結構是參數傳遞的第一階段;第二階段是需要傳遞對每臺網絡設備進行參數配置,通過配置讓設備之間能夠通信、傳遞數據。
設備注冊是生成需要使用的網絡設備的過程,通過提供設備生成及互連所需的相關信息,如設備的類型、插槽板卡類型、IOS 路徑等,由Dynamips 服務器虛擬出相應的設備,如Cisco7200 路由器、Cisco3640 路由器等。不過,這些設備信息首先是存放在數據庫中,在進行實驗的時候才會將它們傳遞給Dynamips 服務器并生成設備。對已經注冊的設備,用戶可以選擇使用,例如Cisco7200 路由器已經注冊,用戶就可以選擇互連兩臺Cisco7200 路由器進行實驗。
網絡拓撲結構的呈現是基于HTML5 Canvas 的jTopo 技術,為了合理安排設備在畫布上出現的位置,避免出現錯亂、重疊等問題,首先對設備的布局進行設計。當網絡規模較小時,可以考慮采用單環布局的方式。當圓心坐標為O(X0,Y0)、半徑為R0、設備個數為count 時,第i 個設備的位置可以由坐標Ri(Xi,Yi)來確定,其中Xi=X0+R0cos(2πi/count),Yi=Y0+R0sin(2πi/count),如圖2 所示。

圖2 單環布局網絡拓撲示意圖
當網絡規模較大時,可以采用雙環布局或多環布局,計算方法類似,只是需要考慮主干網、子網之間的相互關系,還有環與環之間的距離等因素。有了設備的位置數據,加上讀取存儲在數據庫中所需的網絡結點及連線數據,接下來借助XML 轉發工具JAR 包將所有獲得的數據轉換為XML 文件格式類型,并通過JavaScript 讀取XML 文件并解析為JSON 格式,將設備結點和連線呈現在所創建HTML5 Canvas 畫布上,得到網絡的拓撲結構圖。
網絡拓撲圖形成以后,下一步就可以對網絡中的設備進行配置,實現設備之間的通信。對Dynamips 服務器虛擬出來的設備進行配置,操作起來跟操作真實設備是類似的,通常通過操作系統自帶的Telnet 就可以遠程訪問Dynamips 虛擬出的設備。但是,不同的操作系統對Telnet 的支持不盡相同,有時用戶使用起來不一定很方便。為此,對遠程登錄虛擬設備進行了改進,使用基于Applet 的Telnet 來實現與虛擬設備的遠程交互[7][8]。在安裝JRE 插件后,就可以直接在瀏覽器上運行,用戶使用起來非常方便。
在線組網虛擬仿真功能實現以后,需要將其納入到實驗教學的范疇之內,才能成為教學活動的組成部分。在仿真軟件上實現思科虛擬設備互連是相對獨立的學生個人行為,并不需要教師的介入,而教學活動是教與學的結合,教師和學生都是教學活動的主體,缺少任何一方都不能順利完成相應的教學任務。因此,只有將在線組網虛擬仿真功能、教師和學生三者統一起來,才能實現計算機網絡組網實驗的教學,這就是實驗教學管理需要完成的工作。
實驗教學管理需要完成如下一些功能:①用戶管理:教師和學生都是在線虛擬組網實驗教學平臺的用戶,只有登錄到平臺后才能擔當各自在實驗教學工作中的角色,如教師發布實驗任務、學生申請實驗等。②教學資源管理:教師對需要完成的實驗發布任務書、實驗操作指導書,學生完成實驗以后需要提交實驗報告。學生可以與教師交流,反饋意見或對實驗操作進行討論。③實驗申請管理:學生收到教師發布的實驗任務書后,可以靈活安排實驗時間,申請在某個時間完成規定的實驗。平臺將根據系統資源的申請情況反饋是否可以申請成功,如果剩下的資源不夠使用,學生需要申請其他時段進行實驗。④實驗操作管理:提供實驗操作入口,執行在線虛擬組網功能,如對實驗進行參數配置、對配置情況進行檢驗等,完成組網實驗的一系列操作。⑤成績管理:學生完成實驗、提交實驗報告后,教師需要對學生所做實驗進行評價,給出評價等級或成績。學生可以查詢自己的成績。
在平臺安全上,通過設定不同的用戶權限,限定用戶只能在所允許的范圍內實施操作;采用了多服務器機制,某一臺服務器出現故障不會影響平臺的正常訪問。平臺開發采用的是MVC(Model View Controller)模式,模塊之間的關系相對獨立,具有較低的耦合度,對平臺進行調整或擴展都相對容易。

圖3 設備互連參數配置示意圖
從總體設計來說,平臺是B/S 架構,對客戶端環境沒有特別的要求,只需JRE6.0以上,Chrome、IE9+、Opera、Firefox 都可以作為客戶端的瀏覽器,對操作系統也沒有限制。服務器環境較為復雜一些,需要搭建三個服務器,即Dynamips 仿真服務器、Web 服務器和MySQL數據庫服務器。Dynamips 仿真服務器安裝Dynamips2.8 RC、操作系統CentOS6.6 以上。Web 服務器也是文件服務器,要求Windows XP 以上操作系統。MySQL 數據庫服務器安裝SQLyog 圖形化工具、MySQL5.7,操作系統CentOS6.6 以上。另外,Applet 的編譯環境要求JRE6.0以上,HTML5 的編譯環境Chrome、IE9+、Opera、Firefox,操作系統沒有限制。
Dynagen 是Dynamips 的前端,集成了Dynamips,下載其最新版本安裝,并安裝Dynamips 的運行環境Win-Pcap4.0 及以上版本。通過Dynagen 可以構建實驗網絡并進行實驗,所生成的.NET 文件包含了所需的設備配置、拓撲配置等信息,包括設備型號、IOS 鏡像文件、idlepc 值、插槽模塊型號、創建的虛擬路由器及相互連接等參數,類似Windows 下的ini 配置文件。通過平臺的設備注冊頁面,管理員或教師可以輸入上述參數完成某型號設備的生成,事實上注冊的目的就是要輸入生成設備的參數,并將這些參數通過Web 服務器寫入數據庫[9]。通過管理已注冊的設備就可以實現設備的添加、修改、刪除等操作,并通過設備選擇與參數配置完成設備的互連,如圖3 所示。
Dynagen 的.NET 配置文件是純文本文件,這里通過圖形化界面實現了端口分配、設備之間的互連等操作,點擊確認提交配置數據,保存到數據庫中。
網絡拓撲圖是由網絡結點和它們之間的連線組成,數據都保存在數據庫中。結點的位置由前述的單環布局、雙環布局或多環布局算法計算得到,使各網絡結點合理地呈現在畫布上。為了呈現網絡拓撲結構,創建HTML5 Canvas 畫布是基礎,畫布創建完成后,通過設備結點生成方法和設備連線生成方法在畫布的指定位置上生成設備結點和連線。
這里使用XML 文件格式表示拓撲結構的數據模型,主要包括了網絡結點和網絡連線兩個重要元素。當得到的拓撲結構圖不是很美觀時,可以通過手動調整,然后調用jTopo 框架中的toJson()方法,將網絡結點的屬性轉化成JSON 數據格式,并由后臺轉化為XML 格式文件。XML 格式數據還不能被JavaScript 直接使用,需要將XML 格式轉化為jTopo 所規定的JSON 格式,然后才能由JavaScript 在HTML5 Canvas 畫布上將網絡結點和連線呈現出來。
為了操作方便,可以在網絡拓撲圖添加鼠標右鍵菜單事件方法。在網絡結點或連線上用鼠標右鍵點擊,就會出現菜單,再點擊菜單中的選項,就可以觸發相應的事件處理。如圖4 所示。

圖4 網絡拓撲呈現與右鍵菜單示意圖
基于Java Applet 的Telnet 技術對用戶來說非常方便,不需考慮操作系統對Telnet 的支持情況,通過瀏覽器即可遠程登錄到Dynamips 虛擬設備并對設備進行配置。Applet 是可以運行在瀏覽器的Java 程序組件,只需將編輯的Applet 小程序打包成telnet.jar,將Applet.Java的編譯文件Applet.class 嵌入到HTML 中即可。由于使用了基于Applet 的Telnet,所以Telnet 的連接過程都會在Applet 的生命周期內完成。在啟動Applet 小程序的時候,會實例化一個圖像對象,創建一個可在瀏覽器上顯示的Telnet 命令提示符(CMD)窗口,并建立socket連接,完成數據的讀取、轉換和傳輸。另外,由于考慮到安全性,Applet 的運行受環境限制,只允許運行在安全環境中,需要使用數字簽名的方法來解除這種限制[10],以實現對本地文件的讀寫操作。圖5 是遠程配置虛擬路由器的一個實例。

圖5 遠程配置虛擬路由器示例
教師可添加、修改、刪除學生信息,也可以批量導入學生信息。學生登錄到實驗平臺后,可以對自己的信息進行修改。為了支持多個用戶同時進行仿真實驗,在服務器資源有限的情況下,需要采用預約申請的方式來協調服務器資源的使用。根據申請與資源分配情況同時開啟多個Dynamips 服務器,并將服務器的IP 地址分配給預約成功的用戶,用戶即可在預約好的時間開始進行實驗操作。這樣,多個用戶可以同時進行在線組網實驗,能支持的用戶數量主要由服務器的硬件資源決定。
教師可以添加實驗任務,并對實驗所需要的設備進行注冊和配置。對教師發布的實驗指導書,學生可以下載,也可以在線閱讀。實驗完成以后,學生將實驗報告上傳,教師查看實驗報告并結合學生所做實驗的情況給出成績。教師查看成績時,可以以班為單位對成績進行統計,如平均成績、及格與不及格人數等。學生只可以查看自己的實驗成績。平臺還有一個“話題討論”模塊,教師與學生之間可以就某個主題進行在線討論與交流,解答學生在實驗中所遇到的相關問題。
對實驗教學效果的評價不能只看實驗報告,了解實驗的操作過程也很重要。網絡仿真軟件適用于單機環境,組網實驗都是由學生獨立完成,教師掌握不了實驗的具體操作過程,有時僅憑實驗報告或實驗結果無法判斷學生是否按要求完成了實驗任務。本文采用網絡仿真軟件Dynamips 與基于文本的前端控制系統Dynagen,虛擬出網絡設備及設備之間的互連,利用HTML5 Canvas 的jTopo 技術呈現網絡拓撲結構,并通過Java Web 的Struts2、Hibernate、Spring 三大框架技術開發出實驗教學管理功能,構建了一個在線組網虛擬仿真實驗教學平臺,在充分發揮網絡仿真軟件優勢的基礎上,實現了教師對實驗操作過程的監控以及對實驗效果的評價。