摘要:本文介紹了我系設(shè)計開發(fā)的計算機網(wǎng)絡(luò)實驗系統(tǒng)NetRiver,該系統(tǒng)拓寬了計算機網(wǎng)絡(luò)實驗的內(nèi)容,豐富了實驗手段,提高了實驗效率。
關(guān)鍵詞:計算機網(wǎng)絡(luò);實驗教學(xué);NetRiver實驗系統(tǒng)
中圖分類號:G642 文獻(xiàn)標(biāo)識碼:B
1引言
清華大學(xué)計算機系從1985年起開設(shè)“計算機網(wǎng)絡(luò)原理”課程,開設(shè)了滑動窗口協(xié)議和應(yīng)用層協(xié)議等網(wǎng)絡(luò)實驗內(nèi)容。之后陸續(xù)開設(shè)了“計算機網(wǎng)絡(luò)體系結(jié)構(gòu)”、“無線網(wǎng)絡(luò)和移動計算”和“計算機網(wǎng)絡(luò)前沿研究”等研究生課程。2006年開設(shè)了強化實驗課程“計算機網(wǎng)絡(luò)專題訓(xùn)練”。在教學(xué)實踐中,我們提出了“本科打基礎(chǔ)、碩士重能力、博士出創(chuàng)新、科研促教學(xué)、實踐貫始終”的教學(xué)理念,強化了計算機網(wǎng)絡(luò)實驗教學(xué)。針對不同階段的學(xué)生,設(shè)置了不同的實驗內(nèi)容。本科生的網(wǎng)絡(luò)課程重點在于基礎(chǔ)網(wǎng)絡(luò)協(xié)議和原理的掌握,通過配置觀察實驗和基本協(xié)議實驗,加強感性認(rèn)識,提高動手能力;碩士生的網(wǎng)絡(luò)課程注重綜合能力和對網(wǎng)絡(luò)體系結(jié)構(gòu)的整體把握,通過復(fù)雜協(xié)議編程實驗,提高包括分析、設(shè)計和實現(xiàn)等在內(nèi)的綜合能力;博士生的課程則注重研究和創(chuàng)新,利用實驗系統(tǒng)的可擴展性設(shè)計新實驗、驗證新算法。圖1給出了計算機網(wǎng)絡(luò)實驗教學(xué)內(nèi)容、課程體系和人才培養(yǎng)目標(biāo)之間的關(guān)系。
計算機網(wǎng)絡(luò)實驗教學(xué)設(shè)計存在很多難點。網(wǎng)絡(luò)協(xié)議數(shù)量巨大,TCP/IP協(xié)議棧的常用協(xié)議有數(shù)百個,主機、路由器等網(wǎng)絡(luò)結(jié)點的協(xié)議棧實現(xiàn)有很大區(qū)別,各個協(xié)議的原理、功能和實現(xiàn)均不相同;協(xié)議描述文本難于理解、協(xié)議實現(xiàn)復(fù)雜,例如RFC 793(TCP)有85頁,代碼長度近一萬行,RFC 2328(OSPF)有244頁,代碼長度超過三萬行;課程實驗依賴具體的操作系統(tǒng),常用的操作系統(tǒng)包括Windows、Linux、BSD、Solaris等;網(wǎng)上存在大量開源代碼供學(xué)生參考使用,難以公平評價學(xué)生的實驗結(jié)果;網(wǎng)絡(luò)協(xié)議棧復(fù)雜,難以有效檢查;學(xué)生多,實驗多,難以管理。
總結(jié)國內(nèi)外以往的計算機網(wǎng)絡(luò)原理實驗教學(xué),主要存在以下幾個不足:
#61548;由于缺乏軟硬件支撐環(huán)境,通常會設(shè)計一些模擬實驗來代替實際的網(wǎng)絡(luò)實驗。這樣做的缺點是學(xué)生缺乏對真實網(wǎng)絡(luò)環(huán)境的感性認(rèn)識和理解。
#61548;由于常用的操作系統(tǒng)只提供應(yīng)用層的網(wǎng)絡(luò)編程接口,學(xué)生只能做網(wǎng)絡(luò)應(yīng)用實驗。應(yīng)用層實驗雖然能夠鍛煉學(xué)生網(wǎng)絡(luò)編程的能力,但卻不容易幫助學(xué)生理解底層協(xié)議的原理和工作流程,進(jìn)而忽視“計算機網(wǎng)絡(luò)原理”課程的核心內(nèi)容和教學(xué)目標(biāo)。
#61548;缺乏網(wǎng)絡(luò)核心協(xié)議的實驗,例如BGP和OSPF。
#61548;網(wǎng)絡(luò)實驗的管理和維護(hù)非常困難。做網(wǎng)絡(luò)實驗的學(xué)生多、實驗項目多。在每次實驗之前,實驗管理人員和助教需要花費大量的時間調(diào)整網(wǎng)絡(luò)來滿足實驗要求。
我們在長期從事計算機網(wǎng)絡(luò)教學(xué)的基礎(chǔ)上,利用科研成果,研制開發(fā)了NetRiver計算機網(wǎng)絡(luò)實驗系統(tǒng)。NetRiver系統(tǒng)包括客戶端、測試服務(wù)器和管理服務(wù)器三個組成部分,具有以下特點:可控真實的全協(xié)議棧網(wǎng)絡(luò)實驗環(huán)境,支持實驗代碼編輯、編譯和調(diào)試的集成編譯環(huán)境,可視化的協(xié)議報文捕捉與行為分析,多層次實驗手段,基于腳本語言的可擴展實驗描述和執(zhí)行,基于協(xié)調(diào)測試法的自動實驗測試和功能豐富的實驗管理平臺。NetRiver實驗系統(tǒng)拓寬了計算機網(wǎng)絡(luò)實驗內(nèi)容,豐富了實驗手段,提高了實驗效率。
2相關(guān)工作
北京航空航天大學(xué)在2004年啟動“先進(jìn)計算機網(wǎng)絡(luò)實驗基地建設(shè)”項目,建立了北京市重點實驗室——網(wǎng)絡(luò)技術(shù)實驗室。該網(wǎng)絡(luò)實驗室基本上采用全套的華為網(wǎng)絡(luò)路由器和交換機設(shè)備,從低端到高端,建立了一個小型的互聯(lián)網(wǎng)模擬實驗室。該實驗室構(gòu)建了國內(nèi)一流的計算機網(wǎng)絡(luò)技術(shù)教學(xué)實驗環(huán)境,但其存在一個很大的問題就是硬件投資過大,并且在IT技術(shù)發(fā)展迅猛的今天,這些硬件設(shè)施存在生命期短的問題。
Stanford大學(xué)本科計算機網(wǎng)絡(luò)課程“Introduction to Computer Networks”為學(xué)生的實驗提供了一個Linux操作系統(tǒng)下的集群作為中央服務(wù)器,學(xué)生可以遠(yuǎn)程登錄,在集群環(huán)境中對自己的代碼進(jìn)行編譯及調(diào)試。但由于沒有便捷的一體化集成環(huán)境,在Linux操作系統(tǒng)中所有編譯和調(diào)試的工作都需要學(xué)生手工進(jìn)行,要求比較高,可能造成學(xué)生精力分散,無法集中于網(wǎng)絡(luò)協(xié)議的設(shè)計和實現(xiàn),并且這也需要Linux下編程的相關(guān)先修課支持。
MIT大學(xué)的本科生網(wǎng)絡(luò)教學(xué)是放到課程“Computer Systems Engineering”中進(jìn)行的,主要的動手環(huán)節(jié)是學(xué)生自己做Project的全套工作。雖然這樣比較鍛煉學(xué)生的動手能力,但跟Stanford大學(xué)的實驗類似,對學(xué)生Linux下編程能力要求比較高,對于沒有修過相關(guān)課程的學(xué)生來說,精力過多消耗在Linux編程上,而淡化了網(wǎng)絡(luò)協(xié)議的理解。
3計算機網(wǎng)絡(luò)實驗系統(tǒng)NetRiver
計算機網(wǎng)絡(luò)實驗系統(tǒng)NetRiver是為計算機網(wǎng)絡(luò)教學(xué)開發(fā)的一套網(wǎng)絡(luò)實驗平臺系統(tǒng)。目前的網(wǎng)絡(luò)實驗大多以配置觀察實驗為主,無法使學(xué)生深入了解網(wǎng)絡(luò)協(xié)議運行機制。由于網(wǎng)絡(luò)實驗本身往往涉及到系統(tǒng)底層實現(xiàn),在真實環(huán)境中進(jìn)行模擬實驗一般會比較困難。比如進(jìn)行TCP實驗時,由于操作系統(tǒng)內(nèi)核對TCP協(xié)議棧已經(jīng)有了實現(xiàn),因此學(xué)生所寫測試程序發(fā)出的數(shù)據(jù)包往往會被操作系統(tǒng)處理或丟棄,導(dǎo)致無法進(jìn)行TCP處理過程的模擬。針對上述問題,本系統(tǒng)為學(xué)生提供了進(jìn)行網(wǎng)絡(luò)協(xié)議編程、調(diào)試、可視化執(zhí)行和自動測試的實驗平臺。在此平臺上,學(xué)生無需關(guān)心系統(tǒng)對實驗的影響,能夠直接編寫和測試協(xié)議相關(guān)的核心內(nèi)容。
圖2為實驗系統(tǒng)常用的連接拓?fù)涫疽鈭D。NetRiver系統(tǒng)由一臺或多臺測試服務(wù)器、一套客戶端軟件和一套實驗管理軟件構(gòu)成。測試服務(wù)器通過與客戶端交互協(xié)議包,實現(xiàn)實驗功能,并提供自動測試和實驗結(jié)果評分。客戶端軟件運行于多臺PC機上,為用戶提供基于Windows的集成實驗環(huán)境,學(xué)生編寫實驗代碼、調(diào)試和運行實驗程序均在客戶端軟件上執(zhí)行。管理服務(wù)器保存用戶信息、測試?yán)嶒灤a和測試結(jié)果,管理客戶端和測試服務(wù)器,實現(xiàn)基于Web的實驗管理功能。
3.1NetRiver客戶端
NetRiver客戶端提供了界面友好的編程開發(fā)、調(diào)式和測試環(huán)境,同時還可以動態(tài)捕捉和分析實驗過程中收發(fā)的數(shù)據(jù)報文,方便學(xué)生檢查程序錯誤和進(jìn)行調(diào)試。
圖3所示是代碼編寫界面,學(xué)生在此界面中可以編寫代碼,并使用系統(tǒng)自帶的編譯工具進(jìn)行編譯和調(diào)試。
圖4是報文分析界面,提供可視化的報文分析功能,可清楚的看到發(fā)出和收到的數(shù)據(jù)包,同時對數(shù)據(jù)包中的字段進(jìn)行解析并顯示,幫助學(xué)生分析程序中可能存在的問題。
3.2NetRiver測試服務(wù)器
學(xué)生完成實驗之后,可選擇相應(yīng)測試?yán)㈤_始對自己所做實驗進(jìn)行測試。測試過程是在客戶端和測試服務(wù)器之間自動完成的,包含一系列的發(fā)包、收包過程。整個過程由事先編寫好的腳本系統(tǒng)控制。根據(jù)實驗內(nèi)容和所選測試?yán)?,測試服務(wù)器會向客戶端發(fā)出包含一定內(nèi)容的數(shù)據(jù)報文,由學(xué)生所編寫的程序?qū)υ搱笪倪M(jìn)行處理,并得出一定結(jié)果(如回復(fù)、轉(zhuǎn)發(fā)、丟棄或接受等),經(jīng)過一系列的收發(fā)包過程,測試服務(wù)器會對實驗完成情況做出相應(yīng)評測,并將結(jié)果提交到管理服務(wù)器。
整個測試過程可描述如下:測試服務(wù)器打開腳本配置文件script,并將腳本裝載到內(nèi)存??蛻舳烁鶕?jù)主界面?zhèn)魅氲拿钚袇?shù)獲得需要測試服務(wù)器IP、測試?yán)柡蜏y試項目號??蛻舳撕蜏y試服務(wù)器建立socket連接。測試服務(wù)器收到建連請求后創(chuàng)建一個腳本解析器??蛻舳私⒁粋€解析器。客戶端向測試服務(wù)器發(fā)送下載腳本的請求。測試服務(wù)器收到請求后,找到對應(yīng)地腳本解析器,并在腳本解析器中完成初始化,步驟包括以下兩個部分。根據(jù)請求中包含地測試項目號和測試?yán)柦M裝包含客戶端腳本內(nèi)容的分組,并發(fā)送給客戶端。根據(jù)請求中包含地測試項目號和測試?yán)栂螺d服務(wù)器端的腳本內(nèi)容到本解析器,初始化相關(guān)變量??蛻舳耸盏桨_本的分組后,填充到解析器中,并完成初始化操作??蛻舳撕蜏y試服務(wù)器端的解析器根據(jù)腳本的內(nèi)容逐行解釋執(zhí)行,并調(diào)用相應(yīng)的回調(diào)函數(shù)完成測試過程。測試服務(wù)器判定測試結(jié)果是否正確。測試服務(wù)器將結(jié)果發(fā)送到客戶端??蛻舳藢⒔Y(jié)果發(fā)送到主界面。
3.3NetRiver管理服務(wù)器
管理服務(wù)器用于對學(xué)生和實驗信息進(jìn)行管理,包括學(xué)生帳號和基本信息、實驗內(nèi)容及測試?yán)?、每個學(xué)生的試驗完成情況等。由于整個實驗是一個基于腳本控制的自動完成的過程,學(xué)生在對自己的實驗進(jìn)行測試之后,成績會自動提交到管理服務(wù)器進(jìn)行登記。教師或者助教可方便的在管理服務(wù)器提供的Web界面上查看所有學(xué)生的實驗完成情況并進(jìn)行匯總統(tǒng)計,學(xué)生也可通過該界面查看自己的實驗結(jié)果。
3.4目前支持的網(wǎng)絡(luò)實驗
NetRiver實驗系統(tǒng)目前所支持的實驗如表1所示。由于系統(tǒng)使用了可擴展的腳本描述方法來定義實驗和測試?yán)?,因此教師可根?jù)需要方便的增加所需實驗內(nèi)容,實現(xiàn)擴展實驗。NetRiver系統(tǒng)為每個實驗都提供配置實驗和編程實驗兩種實驗方式,適應(yīng)不同的實驗要求。
4NetRiver實驗系統(tǒng)的特色和創(chuàng)新點
可控真實的全協(xié)議棧網(wǎng)絡(luò)實驗環(huán)境
本實驗系統(tǒng)提供了一個IPv4/IPv6全協(xié)議棧的網(wǎng)絡(luò)實驗環(huán)境,并且該環(huán)境建立在可控真實網(wǎng)絡(luò)基礎(chǔ)上。學(xué)生在一個真實網(wǎng)絡(luò)環(huán)境中做實驗,但是實驗過程中不會受到雜亂數(shù)據(jù)的影響,可集中關(guān)注與實驗相關(guān)的數(shù)據(jù)包收發(fā)。同時,學(xué)生實驗可涉及到完整協(xié)議棧,無論是數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層還是傳輸層和應(yīng)用層,都可以通過編程開發(fā)或者交互式配置觀察來深入理解相應(yīng)網(wǎng)絡(luò)協(xié)議機制。
#61548;支持實驗代碼編輯、編譯和調(diào)試的集成編譯環(huán)境
實驗系統(tǒng)面向?qū)W生的客戶端提供了一整套開發(fā)調(diào)試解決方案。學(xué)生可在客戶端上完成包括登錄、實驗選擇、測試?yán)x擇、代碼編寫、編譯、調(diào)試和測試在內(nèi)的完整過程。界面設(shè)計友好,可讓學(xué)生迅速進(jìn)入實驗狀態(tài)。
#61548;可視化的協(xié)議報文捕捉與行為分析
為了便于學(xué)生觀察報文和調(diào)試程序,本實驗系統(tǒng)還提供了可視化報文分析功能。系統(tǒng)可在學(xué)生程序運行過程中實時捕捉實驗相關(guān)報文,并且按照其時間順序和發(fā)送方向以可視化的方式在界面上描繪出來,并且學(xué)生也可具體查看每個分組解析之后各域的內(nèi)容,從而判斷自己的程序潛在的錯誤。
#61548;面向因材施教的多層次實驗手段
實驗系統(tǒng)不但提供了全協(xié)議棧的實驗支持,而且對學(xué)生也提供了多種可選的實驗手段。除了編程開發(fā)實驗之外,也可進(jìn)行交互式配置觀察實驗。即,學(xué)生可在圖形化界面上根據(jù)當(dāng)前實驗要求通過手動填寫分組各個域的值來完成實驗。這樣既可以讓學(xué)生掌握分組組成和協(xié)議運行過程,同時也不要求學(xué)生掌握編程技術(shù),可適合于文科類學(xué)生使用。
#61548;基于腳本語言的、可擴展的實驗描述和執(zhí)行
實驗系統(tǒng)所支持的實驗是基于腳本語言編寫的,具有良好的可擴展性。即,當(dāng)實驗內(nèi)容發(fā)生變化,或者需要增刪實驗時,只需要修改或編寫相應(yīng)的腳本,而無需對系統(tǒng)本身進(jìn)行修改,極大地簡化了實驗系統(tǒng)的更新和維護(hù)工作,同時使其具有非常靈活的可定制性。
#61548;基于協(xié)調(diào)測試法的自動實驗測試
完成某個實驗之后,實驗平臺可按照學(xué)生選擇的測試?yán)詣訉υ搶W(xué)生所做的配置或者編寫的代碼進(jìn)行測試,同
時返回測試通過的數(shù)量和失敗的數(shù)量。學(xué)生可在此基礎(chǔ)上進(jìn)行檢查和調(diào)試,整個過程無需教師或助教的參與。
#61548;功能豐富的實驗管理平臺
實驗系統(tǒng)針對學(xué)生和實驗管理提供了一個功能豐富的B/S結(jié)構(gòu)管理平臺。學(xué)生可登錄到該Web界面查看自己做過哪些實驗以及實驗的通過情況;助教可通過該平臺查看所有學(xué)生的實驗情況,并可進(jìn)行匯總分析;教師除了可看到所有學(xué)生的情況之外,還可對學(xué)生和實驗進(jìn)行增刪等管理操作。該平臺避免了手工管理大量學(xué)生實驗成績的繁瑣,可十分高效、方便而又準(zhǔn)確的對學(xué)生實驗情況進(jìn)行管理。
5總結(jié)
NetRiver實驗系統(tǒng)從2006年開始在 “計算機網(wǎng)絡(luò)原理”課程中使用,取得了很好的效果。到目前為止,共有約兩千多人次使用本系統(tǒng)完成教學(xué)實驗。通過便捷、系統(tǒng)的實驗以及與原理課程的緊密結(jié)合,極大促進(jìn)了學(xué)生對網(wǎng)絡(luò)體系結(jié)構(gòu)的認(rèn)識和對網(wǎng)絡(luò)協(xié)議及相關(guān)原理的掌握。另外,由于實驗系統(tǒng)的使用,打破了傳統(tǒng)教學(xué)中需要學(xué)生學(xué)習(xí)復(fù)雜的系統(tǒng)接口、無法深入編寫協(xié)議相關(guān)代碼、無法清晰的觀察協(xié)議運行機理的局面,贏得了學(xué)生的高度評價。
目前NetRiver系統(tǒng)已經(jīng)在以下幾個單位得到了部署和應(yīng)用:清華大學(xué)計算機系、清華大學(xué)軟件學(xué)院、清華大學(xué)網(wǎng)絡(luò)中心dragonlab實驗室、北京大學(xué)、解放軍信息工程大學(xué)。另外,黑龍江大學(xué)和浙江工商大學(xué)等院校正在遠(yuǎn)程試用。
參考文獻(xiàn)
[1] Andrew S Tanenbaum. 計算機網(wǎng)絡(luò)(第4版)[M]. 北京:清華大學(xué)出版社,2004.
[2] 陳鳴,常強林,岳振軍. 計算機網(wǎng)絡(luò)實驗教程:從原理到實踐[M]. 北京:機械工業(yè)出版社,2007.
[3] 徐恪,吳建平,徐明偉. 高等計算機網(wǎng)絡(luò)—體系結(jié)構(gòu)、協(xié)議機制、算法設(shè)計與路由器技術(shù)[M]. 北京:機械工業(yè)出版社,2003.