肖文顯,劉震,馬孝琴
(河南科技學(xué)院,河南新鄉(xiāng)453003)
擁塞控制是保證計(jì)算機(jī)網(wǎng)絡(luò)穩(wěn)定性、魯棒性的關(guān)鍵因素之一.隨著網(wǎng)絡(luò)規(guī)模的擴(kuò)大、網(wǎng)絡(luò)帶寬持續(xù)增加和聯(lián)網(wǎng)形式日益多樣化,擁塞控制策略遇到了一些新的需要解決的問(wèn)題.當(dāng)?shù)竭_(dá)網(wǎng)絡(luò)的分組數(shù)目大于網(wǎng)絡(luò)的處理能力時(shí),網(wǎng)絡(luò)性能會(huì)急劇下降,這時(shí)就不可避免地發(fā)生了擁塞.擁塞導(dǎo)致網(wǎng)絡(luò)的性能大幅度降低,為了避免出現(xiàn)擁塞,人們?cè)诰W(wǎng)絡(luò)中使用擁塞控制方法使其能正常工作[1].
TCP/IP擁塞控制方法主要包括TCP端到端擁塞控制方法和IP層的全網(wǎng)擁塞控制策略.TCP控制控制方法包括慢啟動(dòng)、擁塞避免、快速重傳和快速恢復(fù)4個(gè)基本的算法;相對(duì)于TCP控制方法來(lái)講,IP層的全網(wǎng)控制方法比較簡(jiǎn)單,主要包括先進(jìn)先出算法(FIFO)、隨機(jī)早期檢測(cè)算法(Random Early Detection,RED)、顯示擁塞指示算法(ECN)、公平排隊(duì)算法(Fair Queuing,FQ)和加權(quán)公平排隊(duì)算法(Weighted Fair Queuing,WFQ)[2].擁塞控制的目的是保證網(wǎng)絡(luò)安全、高效地運(yùn)行,但由于網(wǎng)絡(luò)擁塞控制的復(fù)雜性,對(duì)于采用TCP/IP協(xié)議的網(wǎng)絡(luò)來(lái)說(shuō),通過(guò)TCP的擁塞控制和IP層的擁塞控制聯(lián)合來(lái)實(shí)現(xiàn)存在一定困難,TCP的擁塞控制算法運(yùn)行在端節(jié)點(diǎn)中,其算法復(fù)雜性對(duì)整個(gè)網(wǎng)絡(luò)的效率影響不大,算法可以適當(dāng)復(fù)雜;對(duì)于IP層的擁塞控制算法來(lái)說(shuō),其擁塞控制在核心路由器來(lái)實(shí)現(xiàn),算法必須高效;這兩種控制策略的相互配合能夠保證網(wǎng)絡(luò)高效、正常運(yùn)行.
在TCP端到端擁塞控制策略中的慢啟動(dòng)算法是TCP發(fā)送端用來(lái)控制數(shù)據(jù)發(fā)送窗口所必須遵守的方法.算法描述:對(duì)于每一個(gè)TCP連接,發(fā)送端保持兩個(gè)參量,即擁塞窗口和慢啟動(dòng)閾值,擁塞窗口用于說(shuō)明發(fā)送端在收到確認(rèn)信息之前能向網(wǎng)絡(luò)傳送的最大數(shù)據(jù)量,慢啟動(dòng)閾值是發(fā)送端用來(lái)確定該采用慢啟動(dòng)算法還是擁塞避免算法來(lái)控制數(shù)據(jù)傳送.擁塞窗口(CWND)和接收端通知窗口(RWND)的最小值決定了發(fā)送端一次能夠傳送的最大數(shù)據(jù)量[3].
在RFC2581和RFC2001中對(duì)TCP慢啟動(dòng)算法進(jìn)行了描述,其偽代碼描述如下(其中swin為發(fā)送方窗口,awin為接受方通知窗口):
重新進(jìn)入慢啟動(dòng)階段.
從慢啟動(dòng)描述來(lái)看,它所采用的漸進(jìn)式增加以找到合適的發(fā)送帶寬的方法,使TCP連接在連接開(kāi)始時(shí)不能充分使用可以使用的網(wǎng)絡(luò)帶寬,對(duì)于傳輸數(shù)據(jù)量小、突發(fā)性強(qiáng)的連接,整個(gè)連接可能一直處于小的發(fā)送窗口的慢啟動(dòng)狀態(tài),從而使網(wǎng)絡(luò)傳輸效率降低.如果在連接過(guò)程中出現(xiàn)連續(xù)丟包,將導(dǎo)致慢啟動(dòng)閾值的值急劇減小,系統(tǒng)長(zhǎng)時(shí)間處于緩慢增長(zhǎng)的小的擁塞窗口控制之下,可能一直不能得到合適的帶寬[4].
以上分析表明,在初始擁塞窗口或小的擁塞窗口內(nèi)有可能發(fā)生丟包,需要對(duì)擁塞控制算法進(jìn)行改進(jìn)來(lái)解決小窗口丟包問(wèn)題.改進(jìn)的擁塞控制算法不要影響網(wǎng)絡(luò)的整體性能,對(duì)具體的網(wǎng)絡(luò)環(huán)境應(yīng)用應(yīng)具有一定的實(shí)用價(jià)值.
在慢啟動(dòng)起始階段,擁塞控制窗口被設(shè)置為初始窗口,發(fā)送端發(fā)送數(shù)據(jù)包后,若在設(shè)定的RTO超時(shí)時(shí)間內(nèi)沒(méi)有收到ACK確認(rèn)信息而重發(fā)數(shù)據(jù)包時(shí)不改變慢啟動(dòng)的閾值.
改進(jìn)的算法偽代碼:(其中swin為發(fā)送方窗口,awin為接受方通知窗口)
按照改進(jìn)后算法,如果TCP連接在初始擁塞窗口太小或小擁塞窗口內(nèi)發(fā)生丟失數(shù)據(jù)包,慢啟動(dòng)閾值不會(huì)改變,這樣能夠防止擁塞控制較早進(jìn)入擁塞避免階段,對(duì)發(fā)送數(shù)據(jù)量較少的連接有一定的保護(hù)作用,從而提高系統(tǒng)的傳輸效率.
綜上述在初始擁塞窗口或小的擁塞窗口內(nèi)有可能發(fā)生丟包,改進(jìn)的擁塞控制算法是有效的,不影響網(wǎng)絡(luò)的整體性能,對(duì)具體的網(wǎng)絡(luò)環(huán)境應(yīng)用具有實(shí)用價(jià)值.
校園網(wǎng)是一種常見(jiàn)的局限于學(xué)校范圍內(nèi)應(yīng)用的局域網(wǎng),具有連接范圍有限、拓?fù)浣Y(jié)構(gòu)簡(jiǎn)單、網(wǎng)內(nèi)傳輸帶寬高等特點(diǎn).在校園網(wǎng)中,內(nèi)部節(jié)點(diǎn)與教育網(wǎng)或者Internet連接一般是通過(guò)租用的公用出口,與校園網(wǎng)內(nèi)部的高鏈接帶寬來(lái)比,校園網(wǎng)的出口帶寬通常較小,往往在出口地方形成瓶頸[5].校園網(wǎng)內(nèi)部通常是通過(guò)核心、匯聚、接入三層交換連接起來(lái),如在某高校校園網(wǎng)內(nèi)部,核心交換機(jī)萬(wàn)兆連通匯聚交換機(jī),匯聚交換機(jī)千兆接入交換機(jī),接入交換機(jī)百兆接入到用戶,學(xué)校的總出口帶寬為100 M上聯(lián)到地區(qū)節(jié)點(diǎn).所有校園網(wǎng)大體相同,都為典型的樹(shù)形結(jié)構(gòu),并根據(jù)不同的地理位置劃分為不同的網(wǎng)段,一般采用VLAN的方式來(lái)管理網(wǎng)內(nèi)的用戶,處于同一VLAN內(nèi)的用戶具有相同的桌面連接帶寬;校園網(wǎng)的服務(wù)有兩種:內(nèi)部服務(wù)和對(duì)外服務(wù),內(nèi)部服務(wù)通過(guò)核心交換機(jī)與主干網(wǎng)絡(luò)相連為內(nèi)部用戶提供服務(wù),為校園網(wǎng)用戶提供WEB、FTP、VOD、MAIL以及其它管理系統(tǒng)服務(wù);服務(wù)器全部采用HPDL850,為上述服務(wù)提供雙千兆到核心交換機(jī)(DB10808),在學(xué)校內(nèi)部,這個(gè)帶寬對(duì)所有網(wǎng)內(nèi)用戶來(lái)講是比較充足的.
在校園網(wǎng)內(nèi)部如果使用慢啟動(dòng)算法,小的傳輸速率會(huì)降網(wǎng)絡(luò)整體的傳輸效率;使用改進(jìn)的慢啟動(dòng)算法,我們不改變慢啟動(dòng)閥值,這樣所有的TCP連接都可以以平滑的速率增長(zhǎng),就能充分利用網(wǎng)絡(luò)的內(nèi)部資源[6].
對(duì)于校園網(wǎng)的內(nèi)部網(wǎng)絡(luò)服務(wù)來(lái)說(shuō),TCP擁塞控制算法太過(guò)于保守.根據(jù)校園網(wǎng)的特點(diǎn)和TCP連接特征,更加高效的TCP擁塞控制算法可以通過(guò)合理設(shè)計(jì)而得以實(shí)現(xiàn),并應(yīng)用到校園網(wǎng)的內(nèi)部服務(wù)中[7].
NS包括兩個(gè)基本的組成部分,一個(gè)是擴(kuò)展了的面向?qū)ο蟮腡CL解釋器,另一個(gè)是NS模擬數(shù)據(jù)庫(kù).在模擬數(shù)據(jù)庫(kù)中包含模擬事件時(shí)間表、各種模擬的網(wǎng)絡(luò)實(shí)體對(duì)象和網(wǎng)絡(luò)設(shè)置的有關(guān)模塊.
在校園網(wǎng)內(nèi)部,處在相同VLAN內(nèi)的終端可以共享網(wǎng)絡(luò)擁塞信息,所以可以設(shè)計(jì)一個(gè)節(jié)點(diǎn)代表整個(gè)一個(gè)VLAN的連接情況.具體拓?fù)浣Y(jié)構(gòu)介紹如圖1:節(jié)點(diǎn)n1為內(nèi)部服務(wù)器的連接節(jié)點(diǎn),節(jié)點(diǎn)n2為固定速率流的源節(jié)點(diǎn),用節(jié)點(diǎn)n3代替校園網(wǎng)內(nèi)的多個(gè)網(wǎng)段.當(dāng)節(jié)點(diǎn)n3的TCP連接大于一定數(shù)目時(shí),可以假定多個(gè)網(wǎng)段總的TCP連接帶寬接近一個(gè)穩(wěn)定的值,節(jié)點(diǎn)n2和n3之間的網(wǎng)絡(luò)連接類似于固定速率流(CBR),也可以假定這樣一個(gè)連接代表校園網(wǎng)出口帶寬,之所以在節(jié)點(diǎn)n2和n3之間的連接使用固定速率流而不采用直接限制帶寬的方法,是因?yàn)楣潭ㄋ俾柿髋cTCP連接競(jìng)爭(zhēng)帶寬時(shí)具有一定的彈性,能夠較好地模擬網(wǎng)絡(luò)實(shí)際的情況;設(shè)計(jì)另外兩個(gè)網(wǎng)絡(luò)連接節(jié)點(diǎn)n4和n5,節(jié)點(diǎn)n1和n5之間的連接采用經(jīng)典的TCP擁塞控制方法進(jìn)行數(shù)據(jù)傳輸,節(jié)點(diǎn)n1和n4之間的連接采用改進(jìn)的TCP(章節(jié)稱作TCPLAN)擁塞控制算法進(jìn)行數(shù)據(jù)傳輸.網(wǎng)絡(luò)擁塞發(fā)生在R0到R1的鏈路上.
在仿真實(shí)驗(yàn)中,校園網(wǎng)的網(wǎng)絡(luò)拓?fù)浜瓦B接情況如圖1所示,在實(shí)際的分析中,將分協(xié)議討論.
圖1 網(wǎng)絡(luò)拓?fù)浜瓦B接Fig.1 Network topologyand connection
通過(guò)仿真來(lái)查看TCP的cwnd變化情況.在n2到R0的鏈路上采用udp服務(wù),使用一個(gè)穩(wěn)定的cbr流在其上面?zhèn)鬏?對(duì)鏈路節(jié)點(diǎn)R0不造成擁塞,在n1到R0的鏈路上使用FTP流進(jìn)行傳輸,控制策略采用慢啟動(dòng)算法.
用TCL語(yǔ)言描述如下:
圖2 TCP的cwnd變化Fig.2 TCP cwnd changes
從圖2可以看出,TCP的Congestion Window值會(huì)呈現(xiàn)周期性的重復(fù)變化.TCP開(kāi)始執(zhí)行時(shí),先由Slow-start開(kāi)始,cwnd超過(guò)Ssthresh時(shí)進(jìn)入Congestion Avoidance階段,由于傳送到網(wǎng)絡(luò)上的封包不斷地增加,當(dāng)超出允許能傳送到網(wǎng)絡(luò)上的個(gè)數(shù)時(shí),路由器開(kāi)始使用Drop-tail將封包丟掉.當(dāng)有封包遺失時(shí),TCP會(huì)將ssthresh設(shè)為發(fā)現(xiàn)封包遺失時(shí)的Window值的1/2,接著將Window的值設(shè)為1.且每次封包遺失都重新由slow-start開(kāi)始.
3.2.1 TCPLAN的傳輸效果對(duì)于采用新協(xié)議進(jìn)行模擬,仍采用ftp連接來(lái)進(jìn)行仿真,cwnd變化如圖3所示.用TCL語(yǔ)言描述如下:
圖3 TCPLAN的cwnd變化Fig.3 TCPLANcwnd changes
從圖3可以看出,在數(shù)據(jù)傳輸量較大的網(wǎng)絡(luò)環(huán)境下,TCPLAN一直都是在很短的時(shí)間就能提高自己的發(fā)送速率,隨著數(shù)據(jù)量傳輸?shù)脑黾?從開(kāi)始連接2 ms以后的數(shù)據(jù)看,TCPLAN隨連接時(shí)間的增加要比TCP更快地探詢到可用帶寬,在相同條件下TCPLAN的傳輸速率還是比TCP的傳輸速率高.
這種擁塞控制方法是種已知網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)和連接特點(diǎn)的方法,在校園網(wǎng)內(nèi)部的服務(wù)可以使用,但算法缺少一定的通用性.
3.2.2 異質(zhì)性環(huán)境下TCPLAN的傳輸效果在實(shí)際的網(wǎng)絡(luò)運(yùn)行中,勢(shì)必考慮不同TCP版本共存.下面以TCPLAN和TCP Vegas在異構(gòu)的情況下運(yùn)行時(shí)進(jìn)行比較.
仿真試驗(yàn)中,把校園網(wǎng)網(wǎng)絡(luò)簡(jiǎn)化如下圖4所示:
圖4 簡(jiǎn)化網(wǎng)絡(luò)拓?fù)浜瓦B接Fig.4 Simply Network topology and connection
其中,假定r0與r1之間的延時(shí)為20 ms,其它鏈路間為1 ms.
TCL語(yǔ)言描述主要代碼如下:
圖5 TCPLAN與Vegas的cwnd變化Fig.5 TCPLAN and Vegas cwnd changes
從圖5可以看出,TCPLAN總是在較高的地方振蕩,而Vegas的Window總是維持在較低的位置.由于TCPLAN使用了較具侵略性的擁塞控制策略,傳輸端會(huì)持續(xù)將封包送到網(wǎng)絡(luò)上,而Vegas使用了較保守的方式.相比之下,TCPLAN具有更高的占用帶寬的能力.
改進(jìn)的慢啟動(dòng)算法在特定的網(wǎng)絡(luò)環(huán)境中能夠提高網(wǎng)絡(luò)的傳輸效率,由于僅在發(fā)送端對(duì)協(xié)議進(jìn)行修改,對(duì)接受端沒(méi)有要求,所以該算法的采用不影響網(wǎng)絡(luò)的內(nèi)部服務(wù)性能.該算法比較適合于校園網(wǎng)內(nèi)部的連接,對(duì)于有相同連接特點(diǎn)的其它網(wǎng)絡(luò)也同樣適用.
[1] 陳鶴年,嚴(yán)麗麗,李俊青.一種基于模糊策略的擁塞控制算法[J].電子與計(jì)算機(jī)技術(shù),2009,23(3):45-48.
[2] TranenbaumAS.Computer Network[M].3版.北京:清華大學(xué)出版社,2006.
[3] 楊玉林,楊海瀾.隨機(jī)早測(cè)RED算法分析及改進(jìn)[J].重慶電力高等專科學(xué)報(bào),2009,15(1):16-19.
[4] 吳國(guó)綱.Dos攻擊與IP擁塞控制研究[J].電子科技大學(xué)學(xué)報(bào),2007,14(4):22-27.
[5] 張牧,李君.TCP擁塞控制算法的仿真研究[J].計(jì)算機(jī)工程與科學(xué),2008(44):21-23.
[6] Low SH.Aduality model ofTCP and queue management algorithms[DB/OL].[2012-02-18].http://netlab.caltech.edu.
[7] 孔素環(huán).TCP擁塞控制中慢啟動(dòng)算法的改進(jìn)[J].平頂山學(xué)院學(xué)報(bào),2007,13(3):34-36.