
摘 要:本研究針對計算機網絡課程知識面寬、抽象性強以及算法和協議學習困難等問題,提出了自主設計專用仿真軟件輔助教學的方法。通過對TCP擁塞控制算法原理的分析,設計實現了一款TCP擁塞控制仿真軟件,并將其應用在計算機網絡課程教學實踐中。調查問卷和測驗成績均表明,與傳統教學方式相比,采用TCP擁塞控制仿真軟件教學可以顯著改善教學效果。
關鍵詞:計算機網絡;TCP擁塞控制;仿真軟件;教學實踐
我們所處的時代是以網絡為核心的信息時代,數字化、網絡化和信息化是這個時代最大的特征。今天的互聯網無疑是有史以來由人類創造、精心設計的最大系統,數以億計的計算機、通信鏈路和交換機在這個系統中相交相連。
計算機網絡課程是大學本科計算機類專業的核心課程。該課程以計算機網絡體系結構為總綱,系統、分層次地講述計算機網絡的基本概念和網絡協議,重點講解互聯網的TCP/IP協議族及其工作原理。計算機網絡課程知識面寬、理論性強,涉及許多錯綜復雜、彼此交織的概念、協議和技術。作為計算機網絡課程的教師,如何讓學生深刻、系統地理解相關知識,是一個需要深入探討的課題。
TCP協議作為TCP/IP協議族中最重要的協議之一,是計算機網絡課程的重點知識。TCP擁塞控制算法原理是TCP協議工作原理中最抽象的部分。在真實的網絡環境中,不能直接觀察到TCP擁塞控制算法的工作過程,而且學生在學習過程中,缺乏必要的感性認識,從而增加了學習難度。仿真軟件具有靈活、直觀等特點,在教學過程中采用仿真軟件,配合課堂知識講授,可以改善學生的學習狀況,提高教學效率。
在計算機網絡課程教學中,仿真軟件的使用得到了廣大教師的重視。李向麗等教師探討了網絡仿真軟件NS的工作原理,并將其應用于IP協議的教學實踐中。此后,李向麗又將網絡仿真軟件NS2應用于計算機網絡課程的實踐教學改革中。趙欣探索了基于網絡模擬軟件Packet Tracer的計算機網絡課程的教學改革實踐方案。這些教學探索采用的網絡仿真或網絡模擬軟件,都有其特定的應用領域,并非專為計算機網絡課程教學而設計。網絡仿真軟件NS可以進行網絡拓撲仿真、協議仿真和通信量仿真等,在網絡協議設計等領域有廣泛應用。網絡模擬軟件Packet Trace是由思科系統公司發布的工具軟件,為學習思科網絡設備的操作提供專用的網絡模擬環境。本研究設計實現了一款TCP擁塞控制仿真軟件,并將其應用在課堂教學實踐中,輔助學生學習計算機網絡相關理論知識。
一、TCP擁塞控制算法原理
TCP擁塞控制算法通過維護一個擁塞窗口來進行擁塞控制。其基本原則是:只要網絡中沒有出現擁塞,就將擁塞窗口值增大,以便發送更多的數據;一旦網絡出現擁塞,就將擁塞窗口值減小,以減少發送到網絡中的數據。
RFC5681中規定了TCP擁塞控制的四個算法:慢開始、擁塞避免、快重傳和快恢復。慢開始算法和擁塞避免算法是TCP的強制實現部分。快重傳算法和快恢復算法是TCP的建議實現部分。
RFC5681要求TCP維持擁塞窗口值和慢開始門限值兩個參數。根據發送方的最大報文段長度(SMSS,Sender Maximum Segment Size)的值,RFC5681規定初始擁塞窗口值為2~4個SMSS的長度。
(一)慢開始算法
在慢開始階段,TCP進程每收到一個ACK報文段,就將擁塞窗口值增大至多一個SMSS值。即:擁塞窗口值+=min(N,SMSS),其中的N指剛收到的ACK報文段所確認的字節數。當擁塞窗口值大于或等于慢開始門限時,TCP就退出慢開始算法,執行擁塞避免算法。
(二)擁塞避免算法
在擁塞避免階段,每經過一個往返傳播時延(RTT,round-trip time),TCP擁塞窗口值增大約一個SMSS值。關于擁塞窗口值的計算方法,RFC5681建議每收到一個新的ACK報文段時,計算擁塞窗口值+=SMSS×(SMSS/cwnd)。當TCP觀察到網絡擁塞時,就會退出擁塞避免算法。
TCP可以通過多種方式觀察網絡擁塞。當TCP發送方因超時重傳事件檢測到報文段丟失時,TCP便認為網絡擁塞產生。慢開始門限值必須被設置為當前擁塞窗口值的一半,并且不小于2個SMSS值,即:慢開始門限值=max(當前擁塞窗口值/2,2×SMSS)。設置慢開始門限值后,TCP將擁塞窗口值設置為1個SMSS值,并重新開始執行慢開始算法。
(三)快重傳算法
RFC5681建議TCP接收方收到一個亂序的報文段時,立即發送一個重復的ACK報文段進行確認,以快速通知TCP發送方自己收到了亂序的報文段,提示TCP發送方網絡出現了某些問題。
(四)快恢復算法
由于采用了快重傳算法,TCP發送方可能會收到多個重復的ACK報文段。RFC5681建議收到3個重復的ACK時,TCP發送方就判定丟包事件產生,并執行快恢復算法,不必再等待超時重傳事件。
快恢復算法執行時,設置慢開始門限=max(當前擁塞窗口值/2,2×SMSS),然后設置擁塞窗口值=慢開始門限+3×SMSS。快恢復算法執行后,TCP重新開始執行擁塞避免算法。
二、TCP擁塞控制仿真軟件設計和實現
TCP擁塞控制仿真軟件用Python語言,采用多線程的方法設計并實現。多個線程分別用來仿真TCP擁塞控制算法、模擬網絡運行狀態以及實現用戶交互和數據展示。
(一)主線程
主線程負責啟動TCP仿真線程和網絡模擬線程。此外,主線程基于Python Tkinter庫實現圖形用戶界面,實現與用戶的交互。圖形用戶界面中包括五個按鈕,用戶可以利用這些按鈕手動開始或結束仿真、暫停或繼續仿真、產生超時重傳事件、產生3個重復ACK事件以及查閱軟件使用說明。主線程還利用Python Matplotlib庫,以折線圖的形式繪制歷史擁塞窗口值,并實時刷新圖表。
(二)TCP仿真線程
TCP仿真線程由主線程啟動后,模擬TCP的發送方和接收方進行數據的發送和接收。假設TCP發送方接收窗口足夠大,根據當前擁塞窗口值設定發送窗口值,發送數據,并以報文段為單位,將發送的數據以動畫的形式在圖形用戶界面上展示,方便用戶觀察當前擁塞窗口值。
TCP仿真線程還接收網絡擁塞事件,包括超時重傳事件和3個重復ACK事件。當接收到網絡擁塞事件后,TCP仿真線程暫停數據的發送和接收,根據當前的擁塞窗口值和事件種類選擇計算方法,計算慢開始門限值和新的擁塞窗口值,并將計算過程和計算結果通過彈窗顯示,方便用戶學習和計算。待用戶確認后,TCP仿真程序繼續運行,進行下一輪仿真。
TCP仿真線程根據擁塞控制算法,執行慢開始算法或擁塞避免算法,接收并響應擁塞事件,實時計算擁塞窗口值,并將擁塞窗口值發送給主線程,以實現主線程中擁塞窗口折線圖的實時更新。
(三)網絡模擬線程
網絡模擬線程由主線程啟動后,根據初始參數、當前擁塞窗口值、仿真程序時間以及隨機數,模擬計算網絡的擁塞程度,并以綠色、黃色和紅色三種顏色在圖形用戶界面上展示當前網絡的擁塞程度。其中,綠色代表網絡通暢、黃色代表網絡輕度擁塞、紅色代表網絡重度擁塞。當網絡輕度擁塞時,網絡模擬線程以隨機概率產生3個重復ACK事件;當網絡重度擁塞時,網絡模擬線程以隨機概率產生丟包事件。待TCP仿真線程處理擁塞事件后,網絡模擬線程將網絡恢復至通暢狀態,然后根據新的參數,繼續模擬計算機網絡的擁塞程度。
三、TCP擁塞控制仿真軟件在教學中的應用和效果
在教學中采用TCP擁塞控制仿真軟件,具有以下優點:
直觀展示數據發送過程。能夠直觀地展示TCP擁塞控制算法對擁塞窗口的控制,以及依據擁塞窗口值控制數據發送的過程。
仿真驗證擁塞控制算法。能夠仿真并驗證慢開始、擁塞避免、快重傳和快恢復算法,滿足課堂教學驗證TCP擁塞控制算法的需求。
動態模擬網絡運行狀態。能夠動態模擬計算機網絡的運行狀態,利用隨機事件控制計算機網絡的擁塞狀態,并能模擬網絡丟包等事件。
實時計算并顯示擁塞窗口變化。在捕獲到超時重傳事件和收到3個重復ACK事件時,實時計算慢開始門限值和擁塞窗口值,并以圖形方式直觀展示擁塞窗口值的變化趨勢。
為了更好地了解TCP擁塞控制仿真軟件在教學中的應用效果,本研究在部分班級采用了TCP擁塞控制仿真軟件進行教學,其他班級仍然采用傳統方式教學,然后設計了調查問卷,進行了課堂測驗,并對問卷結果和測驗成績進行了分析。
TCP擁塞控制算法掌握程度調查對比如表1所示,課堂測驗成績對比如表2所示:
從統計結果可以看出,采用TCP擁塞控制仿真軟件教學后,學生對算法的掌握程度和課堂測驗成績,均有較大程度提高。
在計算機網絡課程中采用專門設計的仿真軟件輔助教學是非常有必要的。采用仿真軟件教學,學生可以直接觀察網絡協議或算法的工作過程,驗證理論知識,彌補計算機網絡課程學習過程抽象、枯燥的缺點。調查問卷和測驗成績均表明,采用仿真軟件教學可以提高學生學習積極性,改善學習效果。后續將考慮在計算機網絡課程的其他關鍵知識點,設計仿真軟件,并應用在教學實踐中。
參考文獻:
[1]謝希仁.計算機網絡[M].北京:電子工業出版社,2017.
[2]James F.Kurose,Keith W. Ross.計算機網絡——自頂向下方法[M].陳鳴,譯.北京:機械工業出版社,2018.
[3]李向麗,李磊,陳靜.網絡實驗仿真與網絡技術實踐[J].計算機技術與發展,2006,(3).
[4]李向麗.應用人才培養模式的計算機網絡課程教改研究[J].計算機技術與發展,2014,(8).
[5]趙欣.基于Packet Tracer的計算機網絡實驗教學改革與探索[J].大連大學學報,2019,(6).
責編:桃 子