游勝玉,劉琳
(東華理工大學軟件學院,江西 南昌 330013)
隨著經(jīng)濟的迅猛發(fā)展,計算機網(wǎng)絡(luò)已經(jīng)離不開人們的生活。社會需求的日益增加,網(wǎng)絡(luò)拓撲結(jié)構(gòu)也不斷復雜化,網(wǎng)絡(luò)的應(yīng)用也不斷多元化,傳統(tǒng)的網(wǎng)絡(luò)實驗操作環(huán)境已遠遠不能滿足現(xiàn)代實驗操作的要求。在計算機網(wǎng)絡(luò)技術(shù)中,服務(wù)器、交換機、防火墻及路由器是網(wǎng)絡(luò)的主流設(shè)備[1-2],即使實際的網(wǎng)絡(luò)實驗中采用一定數(shù)量的網(wǎng)絡(luò)設(shè)備,但意味著需要投入更高的成本,且網(wǎng)絡(luò)設(shè)備維護也比較復雜,特別是對于那些復雜的大型網(wǎng)絡(luò)建設(shè),更需要大量的人力物力來建設(shè)。另外,對于初學者來說,如果在硬件設(shè)備搭建實驗過程中出現(xiàn)故障導致實驗失敗,也不知道問題出現(xiàn)在哪,從而影響實驗效果[3-4]。因此,針對這樣的情況,引入仿真技術(shù)來搭建網(wǎng)絡(luò)實驗環(huán)境,可以減少投資成本,并且對于初學者而言又鍛煉了實踐能力。本文采用OPNET網(wǎng)絡(luò)仿真軟件搭建仿真實驗平臺,對傳輸控制協(xié)議TCP 的慢啟動算法、擁塞避免算法、快速重傳算法和快速修復算法進行設(shè)計與實現(xiàn)。
1986 年,麻省理工大學的2 名博士創(chuàng)建了一個公司,名為OPNET。第二年,OPNET 公司的第一個商業(yè)化的網(wǎng)絡(luò)性能仿真軟件問世,使得具有預(yù)測性的網(wǎng)絡(luò)性能管理和仿真成為可能。OPNET 網(wǎng)絡(luò)仿真軟件是OPNET 公司推出的最早及最具有影響力的網(wǎng)絡(luò)仿真軟件,對網(wǎng)絡(luò)的建模仿真、提前預(yù)測大大提高了網(wǎng)絡(luò)環(huán)境的質(zhì)量,起了一個劃時代的作用[5]。
OPNET 網(wǎng)絡(luò)仿真軟件主要包括OPNET Modeler、OPNET ITGuru、OPNET SPGuru 和WDM Guru、ODK和NetBizODK 共4 個系列。OPNET Modeler 系列主要用來進行研究,可以用來分析網(wǎng)絡(luò)設(shè)備、網(wǎng)絡(luò)協(xié)議和一些通信協(xié)議;OPNET ITGuru 系列主要是針對大型企業(yè)網(wǎng)絡(luò)的管理和分析,查找問題,找出性能瓶頸,提出解決方案等;OPNET SPGuru 和WDM Guru 系列主要面向運營商,面向智能化的網(wǎng)絡(luò)管理;ODK 和NetBizODK 是一個更底層的軟件開發(fā)平臺,ODK 為開發(fā)時的環(huán)境,NetBizODK 為運行時的環(huán)境,由多種軟件組件庫組成,主要應(yīng)用于計算機網(wǎng)絡(luò)的建模、仿真、優(yōu)化和分析。OPNET 迅速而穩(wěn)步地發(fā)展,作為高科技網(wǎng)絡(luò)規(guī)劃、仿真、分析工具,OPNET 在通信、國防及計算機網(wǎng)絡(luò)領(lǐng)域已經(jīng)被廣泛認可和采用[6]。
OPNET Modeler 是一款非常優(yōu)秀的網(wǎng)絡(luò)仿真和建模工具,它不僅支持面向?qū)ο蟮慕7绞剑疫€可以提供圖形化的編輯界面。它的強大功能和全面性,使它可以模擬任何網(wǎng)絡(luò)設(shè)備、支持各種網(wǎng)絡(luò)技術(shù)。因此,本文采用OPNET Modeler 網(wǎng)絡(luò)仿真軟件作為仿真平臺,對傳輸控制協(xié)議TCP 的慢開始算法、擁塞避免算法、快速重傳算法和快速修復算法進行模擬實驗。
傳輸控制協(xié)議TCP 是一種面向連接可靠的全雙工通信協(xié)議,其核心思想是基于共享資源管理下,按照一定的算法來控制傳輸數(shù)據(jù),并且合理地利用資源,保證網(wǎng)絡(luò)的穩(wěn)定性。TCP 協(xié)議包括4 種擁塞控制算法,即慢開始算法、擁塞避免算法、快速重傳算法和快速恢復算法。這些算法的核心就是通過控制擁塞窗口的大小,發(fā)送端可以控制業(yè)務(wù)量,從而控制網(wǎng)絡(luò)擁塞。在傳輸過程中,發(fā)送端逐漸增加窗口的大小,一直到出現(xiàn)數(shù)據(jù)包丟失,窗口值迅速下降,然后開始逐漸增大,從而有效避免了擁塞癱瘓[7]。
慢開始算法:它是一個在TCP 連接上控制數(shù)據(jù)流發(fā)送速度的算法。顧名思義,在開始時就不要發(fā)送大量數(shù)據(jù),將發(fā)送窗口及擁塞窗口初始值設(shè)為1,等接收方確認數(shù)據(jù)之后,擁塞窗口成倍增加,發(fā)送窗口也成倍增加;直到窗口大小等于慢開始門限值時,改為每次加1,直至擁塞。慢啟動算法是一個在TCP 連接上控制數(shù)據(jù)流發(fā)送速度的算法。
擁塞避免算法:它是一種處理丟失報文的算法。許多輸入流到路由器,而路由器輸出能力不足的時候,擁塞避免就是為解決這個問題而提出的。數(shù)據(jù)包的丟失率是非常低的,那么丟失的數(shù)據(jù)包,將產(chǎn)生一個信號,在源和目的地址之間有堵塞現(xiàn)象,所以在實際情況中,它們在共同的階段相互作用。
快速重傳算法:TCP 協(xié)議為了保證數(shù)據(jù)的可靠性,采用了超時重傳機制,在發(fā)送一個數(shù)據(jù)后開始啟動一個計時器,在一定時間內(nèi)如果沒有得到發(fā)送數(shù)據(jù)報的確認幀ACK(Acknowledgement,確認字符)報文時,那么就重新發(fā)送數(shù)據(jù),直到發(fā)送成功為止??焖僦貍魉惴ㄊ窃跀?shù)據(jù)包丟失的情況下給出的一種修補機制。一般來說,重傳發(fā)生在超時之后,但如果接收端在一個往返時間里接收到3 個以上的重復確認幀ACK 報文時,這就代表數(shù)據(jù)丟失了,需要重傳,快速重傳不需要等到重傳定時器溢出時再進行重傳,所以叫快速重傳。
快速恢復算法:它是在快速重傳算法后,當接收端收到3 個確認幀ACK 時,就將慢啟動閾值設(shè)置成為當前的擁塞窗口值的1/2,發(fā)送重傳的數(shù)據(jù)報,并采用擁塞避免算法,每收到一個確認幀,擁塞窗口就增加一個報文段,而不啟動慢開始算法??焖僦貍骱涂焖倩謴退惴ǖ淖饔枚际强焖倩謴蛠G失的數(shù)據(jù)包,如果沒有快重傳和快恢復,TCP 將會使用定時器來要求傳輸暫停,在暫停時間內(nèi),沒有新的數(shù)據(jù)包被發(fā)送,從而影響通信質(zhì)量。
首先,創(chuàng)建網(wǎng)絡(luò)模型,模擬現(xiàn)實中的網(wǎng)絡(luò)環(huán)境,在實驗環(huán)境中仿真搭建一個從Paris 地區(qū)到Sthlm 地區(qū)的網(wǎng)絡(luò),在Paris 地區(qū)的子網(wǎng)上設(shè)置服務(wù)器和路由器,接著在Sthlm 地區(qū)的子網(wǎng)上也設(shè)置服務(wù)器和路由器,用來建立雙方網(wǎng)絡(luò)的連接,通過通信模擬TCP 協(xié)議。
其次,在OPNET 網(wǎng)絡(luò)仿真軟件的界面下打開opnet→File→Project,新建一個工程,接著選擇場景,向場景里面添加所需的設(shè)備及物件,如一個應(yīng)用配置物件(Application Definition)、一個業(yè)務(wù)主詢配置物件(Profile Definition)、路由器,服務(wù)器等,并且對2 個地區(qū)的服務(wù)器及路由器進行配置,設(shè)置相應(yīng)服務(wù)器和路由器設(shè)備的名稱、IP 地址、子網(wǎng)掩碼網(wǎng)關(guān)地址等,在應(yīng)用配置物件上配置TCP 協(xié)議的各種參數(shù)值,包括數(shù)據(jù)包大小、接收緩沖區(qū)大小、擁塞窗口值大小等,其拓撲結(jié)構(gòu)圖如圖1 所示。
圖1 Paris 到Sthlm 的網(wǎng)絡(luò)
2.3.1 慢開始與擁塞避免算法同時使用的仿真
慢開始與擁塞避免算法同時使用的仿真結(jié)果如圖2 所示。從圖中可以看出,TCP 協(xié)議在執(zhí)行緩慢開始和擁塞避免算法時,初始窗口很小,但是呈指數(shù)型增長;如果一旦超過規(guī)定的最大窗口閾值(ssthresh)的話,其窗口大小增長曲線將呈線性增長,這就是擁塞避免算法的實現(xiàn)。從圖中還可以看出,在一個1 s 時間窗口內(nèi),窗口閾值從1 200 字節(jié)成倍增長到67 000 個字節(jié),這是慢開始算法。當閾值達到大約67 000 字節(jié)時,開始“加法增大”,這就是擁塞避免算法。
圖2 慢開始與擁塞避免算法同時使用的仿真結(jié)果
2.3.2 慢開始、擁塞避免和快速重傳算法同時使用的仿真
慢開始、擁塞避免和快速重傳算法同時使用的仿真結(jié)果如圖3 所示。從圖中可以看出,在1 min 54 s時間窗口內(nèi),窗口閾值從1 440 字節(jié)成倍增長到近65 535 個字節(jié),這是慢開始算法。當閾值達到大約65 535 字節(jié),開始“加大算法”,這就是擁塞避免算法。
圖3 慢開始、擁塞避免和快速重傳算法同時使用的仿真結(jié)果
窗口大小達到大約72 725 字節(jié)時,應(yīng)該得到3 個連續(xù)的ACK,根據(jù)3 個重復來確定響應(yīng)包丟失,立即重新發(fā)送數(shù)據(jù)包丟失,然后設(shè)置最大窗口閾值ssthresh作為當前擁塞窗口72 725 字節(jié)的1/2,這是快速重傳(Tahoe)算法,然后轉(zhuǎn)移到一個緩慢的開始。
2.3.3 慢開始、擁塞避免、快速重傳和快速修復算法同時使用的仿真
慢開始、擁塞避免、快速重傳和快速修復算法同時使用的仿真結(jié)如圖4 所示。從圖中可以看出,與同時使用慢開始、擁塞避免和快重傳算法類似,TCP 協(xié)議在執(zhí)行緩慢開始和擁塞避免算法時,它的初始窗口的值比較小,但呈指數(shù)級增長,但是到了最大窗口閾值(ssthresh)的時候,窗口大小就會增長并且呈線性增長。
圖4 慢開始、擁塞避免、快速重傳和快速修復算法同時使用的仿真結(jié)果
從圖4 的仿真結(jié)果中可以看出,在1 min 54 s 時,窗口左右值近65 535 個字節(jié)從近1 460 字節(jié)成倍增長,這就是慢開始。當閾值達到大約65 535 字節(jié)時,開始“增大加法”,這就是擁塞避免算法。窗口大小達到大約72 638 字節(jié)時,應(yīng)該得到3 個連續(xù)的確認幀ACK,如果基于3 個重復來確定響應(yīng)包丟失和重傳丟失的數(shù)據(jù)包,如果收到non-duplicate ACK,擁塞窗口值cwnd=最大窗口閾值ssthresh,進入擁塞避免階段,這是快速重新傳輸/快速恢復算法(Reno)。
計算機網(wǎng)絡(luò)結(jié)構(gòu)的越發(fā)復雜化及應(yīng)用的越發(fā)多元化,使網(wǎng)絡(luò)更加需要一個可靠的規(guī)劃與設(shè)計的方法,可是傳統(tǒng)的計算機網(wǎng)絡(luò)規(guī)劃主要是靠經(jīng)驗而來,這樣就會導致花費大量的人力物力來規(guī)劃、設(shè)計及建立更加完善的網(wǎng)絡(luò),這對于目前這些復雜的大型網(wǎng)絡(luò)的建設(shè)非常不利。網(wǎng)絡(luò)仿真軟件的出現(xiàn),大大方便了網(wǎng)絡(luò)工程師們建設(shè)一個優(yōu)秀的網(wǎng)絡(luò),其中OPNET 仿真軟件,不僅在設(shè)計上非常規(guī)則,而且在網(wǎng)絡(luò)規(guī)劃及建設(shè)方面也很大程度縮短了周期,從而進一步提高了網(wǎng)絡(luò)建設(shè)的科學性,降低網(wǎng)絡(luò)建設(shè)的投資成本及風險,讓網(wǎng)絡(luò)工程師們看到了重要的、客觀的及可信的定量依據(jù),并完美呈現(xiàn)出一個美好的網(wǎng)絡(luò)前景。網(wǎng)絡(luò)仿真技術(shù)的使用,在協(xié)議開發(fā)、標準開發(fā)、網(wǎng)絡(luò)規(guī)劃和網(wǎng)絡(luò)運營管理等方面,可以極大地提高效率,為網(wǎng)絡(luò)技術(shù)的發(fā)展提供強有力的支持。
因此,利用網(wǎng)絡(luò)仿真軟件來構(gòu)建計算機網(wǎng)絡(luò)課程的實驗環(huán)境,既可以減低實驗設(shè)備的投資成本,又可以提高初學者動手實踐能力和創(chuàng)造能力,提高做實驗的效率。本文介紹了采用OPNET 網(wǎng)絡(luò)仿真軟件對TCP協(xié)議的4 種算法進行模擬仿真實驗,通過實驗得出OPNENT 仿真軟件能夠很好地仿真設(shè)計與分析網(wǎng)絡(luò)協(xié)議。初學者還可以利用OPNET 仿真軟件仿真計算機網(wǎng)絡(luò)的基礎(chǔ)類、設(shè)計類、綜合類及創(chuàng)新類實驗等,通過實驗把理論與實踐更好地結(jié)合起來,把實踐知識應(yīng)用到實際環(huán)境中,為后續(xù)的學習打好基礎(chǔ)。
參考文獻: