游勝玉,劉琳
(東華理工大學軟件學院,江西 南昌 330013)
隨著經濟的迅猛發展,計算機網絡已經離不開人們的生活。社會需求的日益增加,網絡拓撲結構也不斷復雜化,網絡的應用也不斷多元化,傳統的網絡實驗操作環境已遠遠不能滿足現代實驗操作的要求。在計算機網絡技術中,服務器、交換機、防火墻及路由器是網絡的主流設備[1-2],即使實際的網絡實驗中采用一定數量的網絡設備,但意味著需要投入更高的成本,且網絡設備維護也比較復雜,特別是對于那些復雜的大型網絡建設,更需要大量的人力物力來建設。另外,對于初學者來說,如果在硬件設備搭建實驗過程中出現故障導致實驗失敗,也不知道問題出現在哪,從而影響實驗效果[3-4]。因此,針對這樣的情況,引入仿真技術來搭建網絡實驗環境,可以減少投資成本,并且對于初學者而言又鍛煉了實踐能力。本文采用OPNET網絡仿真軟件搭建仿真實驗平臺,對傳輸控制協議TCP 的慢啟動算法、擁塞避免算法、快速重傳算法和快速修復算法進行設計與實現。
1986 年,麻省理工大學的2 名博士創建了一個公司,名為OPNET。第二年,OPNET 公司的第一個商業化的網絡性能仿真軟件問世,使得具有預測性的網絡性能管理和仿真成為可能。OPNET 網絡仿真軟件是OPNET 公司推出的最早及最具有影響力的網絡仿真軟件,對網絡的建模仿真、提前預測大大提高了網絡環境的質量,起了一個劃時代的作用[5]。
OPNET 網絡仿真軟件主要包括OPNET Modeler、OPNET ITGuru、OPNET SPGuru 和WDM Guru、ODK和NetBizODK 共4 個系列。OPNET Modeler 系列主要用來進行研究,可以用來分析網絡設備、網絡協議和一些通信協議;OPNET ITGuru 系列主要是針對大型企業網絡的管理和分析,查找問題,找出性能瓶頸,提出解決方案等;OPNET SPGuru 和WDM Guru 系列主要面向運營商,面向智能化的網絡管理;ODK 和NetBizODK 是一個更底層的軟件開發平臺,ODK 為開發時的環境,NetBizODK 為運行時的環境,由多種軟件組件庫組成,主要應用于計算機網絡的建模、仿真、優化和分析。OPNET 迅速而穩步地發展,作為高科技網絡規劃、仿真、分析工具,OPNET 在通信、國防及計算機網絡領域已經被廣泛認可和采用[6]。
OPNET Modeler 是一款非常優秀的網絡仿真和建模工具,它不僅支持面向對象的建模方式,而且還可以提供圖形化的編輯界面。它的強大功能和全面性,使它可以模擬任何網絡設備、支持各種網絡技術。因此,本文采用OPNET Modeler 網絡仿真軟件作為仿真平臺,對傳輸控制協議TCP 的慢開始算法、擁塞避免算法、快速重傳算法和快速修復算法進行模擬實驗。
傳輸控制協議TCP 是一種面向連接可靠的全雙工通信協議,其核心思想是基于共享資源管理下,按照一定的算法來控制傳輸數據,并且合理地利用資源,保證網絡的穩定性。TCP 協議包括4 種擁塞控制算法,即慢開始算法、擁塞避免算法、快速重傳算法和快速恢復算法。這些算法的核心就是通過控制擁塞窗口的大小,發送端可以控制業務量,從而控制網絡擁塞。在傳輸過程中,發送端逐漸增加窗口的大小,一直到出現數據包丟失,窗口值迅速下降,然后開始逐漸增大,從而有效避免了擁塞癱瘓[7]。
慢開始算法:它是一個在TCP 連接上控制數據流發送速度的算法。顧名思義,在開始時就不要發送大量數據,將發送窗口及擁塞窗口初始值設為1,等接收方確認數據之后,擁塞窗口成倍增加,發送窗口也成倍增加;直到窗口大小等于慢開始門限值時,改為每次加1,直至擁塞。慢啟動算法是一個在TCP 連接上控制數據流發送速度的算法。
擁塞避免算法:它是一種處理丟失報文的算法。許多輸入流到路由器,而路由器輸出能力不足的時候,擁塞避免就是為解決這個問題而提出的。數據包的丟失率是非常低的,那么丟失的數據包,將產生一個信號,在源和目的地址之間有堵塞現象,所以在實際情況中,它們在共同的階段相互作用。
快速重傳算法:TCP 協議為了保證數據的可靠性,采用了超時重傳機制,在發送一個數據后開始啟動一個計時器,在一定時間內如果沒有得到發送數據報的確認幀ACK(Acknowledgement,確認字符)報文時,那么就重新發送數據,直到發送成功為止。快速重傳算法是在數據包丟失的情況下給出的一種修補機制。一般來說,重傳發生在超時之后,但如果接收端在一個往返時間里接收到3 個以上的重復確認幀ACK 報文時,這就代表數據丟失了,需要重傳,快速重傳不需要等到重傳定時器溢出時再進行重傳,所以叫快速重傳。
快速恢復算法:它是在快速重傳算法后,當接收端收到3 個確認幀ACK 時,就將慢啟動閾值設置成為當前的擁塞窗口值的1/2,發送重傳的數據報,并采用擁塞避免算法,每收到一個確認幀,擁塞窗口就增加一個報文段,而不啟動慢開始算法。快速重傳和快速恢復算法的作用都是快速恢復丟失的數據包,如果沒有快重傳和快恢復,TCP 將會使用定時器來要求傳輸暫停,在暫停時間內,沒有新的數據包被發送,從而影響通信質量。
首先,創建網絡模型,模擬現實中的網絡環境,在實驗環境中仿真搭建一個從Paris 地區到Sthlm 地區的網絡,在Paris 地區的子網上設置服務器和路由器,接著在Sthlm 地區的子網上也設置服務器和路由器,用來建立雙方網絡的連接,通過通信模擬TCP 協議。
其次,在OPNET 網絡仿真軟件的界面下打開opnet→File→Project,新建一個工程,接著選擇場景,向場景里面添加所需的設備及物件,如一個應用配置物件(Application Definition)、一個業務主詢配置物件(Profile Definition)、路由器,服務器等,并且對2 個地區的服務器及路由器進行配置,設置相應服務器和路由器設備的名稱、IP 地址、子網掩碼網關地址等,在應用配置物件上配置TCP 協議的各種參數值,包括數據包大小、接收緩沖區大小、擁塞窗口值大小等,其拓撲結構圖如圖1 所示。

圖1 Paris 到Sthlm 的網絡
2.3.1 慢開始與擁塞避免算法同時使用的仿真
慢開始與擁塞避免算法同時使用的仿真結果如圖2 所示。從圖中可以看出,TCP 協議在執行緩慢開始和擁塞避免算法時,初始窗口很小,但是呈指數型增長;如果一旦超過規定的最大窗口閾值(ssthresh)的話,其窗口大小增長曲線將呈線性增長,這就是擁塞避免算法的實現。從圖中還可以看出,在一個1 s 時間窗口內,窗口閾值從1 200 字節成倍增長到67 000 個字節,這是慢開始算法。當閾值達到大約67 000 字節時,開始“加法增大”,這就是擁塞避免算法。

圖2 慢開始與擁塞避免算法同時使用的仿真結果
2.3.2 慢開始、擁塞避免和快速重傳算法同時使用的仿真
慢開始、擁塞避免和快速重傳算法同時使用的仿真結果如圖3 所示。從圖中可以看出,在1 min 54 s時間窗口內,窗口閾值從1 440 字節成倍增長到近65 535 個字節,這是慢開始算法。當閾值達到大約65 535 字節,開始“加大算法”,這就是擁塞避免算法。

圖3 慢開始、擁塞避免和快速重傳算法同時使用的仿真結果
窗口大小達到大約72 725 字節時,應該得到3 個連續的ACK,根據3 個重復來確定響應包丟失,立即重新發送數據包丟失,然后設置最大窗口閾值ssthresh作為當前擁塞窗口72 725 字節的1/2,這是快速重傳(Tahoe)算法,然后轉移到一個緩慢的開始。
2.3.3 慢開始、擁塞避免、快速重傳和快速修復算法同時使用的仿真
慢開始、擁塞避免、快速重傳和快速修復算法同時使用的仿真結如圖4 所示。從圖中可以看出,與同時使用慢開始、擁塞避免和快重傳算法類似,TCP 協議在執行緩慢開始和擁塞避免算法時,它的初始窗口的值比較小,但呈指數級增長,但是到了最大窗口閾值(ssthresh)的時候,窗口大小就會增長并且呈線性增長。

圖4 慢開始、擁塞避免、快速重傳和快速修復算法同時使用的仿真結果
從圖4 的仿真結果中可以看出,在1 min 54 s 時,窗口左右值近65 535 個字節從近1 460 字節成倍增長,這就是慢開始。當閾值達到大約65 535 字節時,開始“增大加法”,這就是擁塞避免算法。窗口大小達到大約72 638 字節時,應該得到3 個連續的確認幀ACK,如果基于3 個重復來確定響應包丟失和重傳丟失的數據包,如果收到non-duplicate ACK,擁塞窗口值cwnd=最大窗口閾值ssthresh,進入擁塞避免階段,這是快速重新傳輸/快速恢復算法(Reno)。
計算機網絡結構的越發復雜化及應用的越發多元化,使網絡更加需要一個可靠的規劃與設計的方法,可是傳統的計算機網絡規劃主要是靠經驗而來,這樣就會導致花費大量的人力物力來規劃、設計及建立更加完善的網絡,這對于目前這些復雜的大型網絡的建設非常不利。網絡仿真軟件的出現,大大方便了網絡工程師們建設一個優秀的網絡,其中OPNET 仿真軟件,不僅在設計上非常規則,而且在網絡規劃及建設方面也很大程度縮短了周期,從而進一步提高了網絡建設的科學性,降低網絡建設的投資成本及風險,讓網絡工程師們看到了重要的、客觀的及可信的定量依據,并完美呈現出一個美好的網絡前景。網絡仿真技術的使用,在協議開發、標準開發、網絡規劃和網絡運營管理等方面,可以極大地提高效率,為網絡技術的發展提供強有力的支持。
因此,利用網絡仿真軟件來構建計算機網絡課程的實驗環境,既可以減低實驗設備的投資成本,又可以提高初學者動手實踐能力和創造能力,提高做實驗的效率。本文介紹了采用OPNET 網絡仿真軟件對TCP協議的4 種算法進行模擬仿真實驗,通過實驗得出OPNENT 仿真軟件能夠很好地仿真設計與分析網絡協議。初學者還可以利用OPNET 仿真軟件仿真計算機網絡的基礎類、設計類、綜合類及創新類實驗等,通過實驗把理論與實踐更好地結合起來,把實踐知識應用到實際環境中,為后續的學習打好基礎。
參考文獻: