(重慶郵電大學 計算機科學與技術(shù)學院, 重慶 400065)
摘 要:
基于廣泛使用的TCP版本TCP Reno,提出了一種主動TCP擁塞控制方案,命名Active-TCP。在沿用傳統(tǒng)的被動擁塞控制方式的同時,Active-TCP添加了主動擁塞控制方式,即在滿足給定條件下,Active-TCP可主動降低擁塞窗口,而此時網(wǎng)絡(luò)并未真正發(fā)生擁塞。仿真分析了Active-TCP性能,結(jié)果表明,與TCP Reno相比,使用Active-TCP可改善吞吐量,降低報文重傳率;Active-TCP也能與TCP Reno友好共存,公平競爭網(wǎng)絡(luò)資源。另外,Active-TCP可由TCP Reno發(fā)送方作較小修改得到,因此Active-TCP容易實現(xiàn),所增加的額外開銷較少。
關(guān)鍵詞:傳輸控制協(xié)議; 擁塞控制; 傳輸控制協(xié)議性能; 主動傳輸控制協(xié)議
中圖分類號:TP393.03 文獻標志碼:A
文章編號:1001-3695(2009)02-686-04
Active-TCP congestion control approach
HE Li, XIAN Yong-ju
(College of Computer Science Technology, Chongqing University of Posts Telecommunications, Chongqing 400065, China)
Abstract:Based on TCP Reno, a widely used TCP version, proposed an active TCPcongestion control approachnamed Active-TCP. Besides the traditional passive congestion control manners, Active-TCP added an active congestion control manner, i.e., the congestion window may be decreased actively when some given conditions were satisfied before the congestion really occurs. Investigated Active-TCP performances through simulations. Comparing with TCP Reno, the throughput may be improved and the retransmit probabilitymay be decreased. Active-TCP can coexist with TCP Reno very friendly, and they can compete network resources fairly. In addition, Active-TCP may be obtained through a little modification fromTCP Reno at the sender side, so Active-TCP can be easily developed and the addition overheads are very low.
Key words:transmission control protocol(TCP); congestion control; TCP performance; Active-TCP
0 引言
Internet協(xié)議體系結(jié)構(gòu)是基于使用IP協(xié)議的無連接端到端分組服務(wù),具有實效性、靈活性以及健壯性等優(yōu)點。然而,正是這種基于無連接的設(shè)計模式,使得重負載情況下難以提供良好的服務(wù)。毫無疑問,對分組轉(zhuǎn)發(fā)的動態(tài)性缺乏了解會導致服務(wù)質(zhì)量的嚴重下降甚至于“Internet瓦解”。在20世紀80年代中期,Internet應(yīng)用得以迅速增長的初級階段,人們就對這種現(xiàn)象引起了關(guān)注,并稱這種現(xiàn)象為擁塞崩潰。對這一問題的最初解決應(yīng)歸功于Van Jacobson,他于1986初提出了迄今在TCP實現(xiàn)中所普遍采用的一種擁塞避免機制。在網(wǎng)絡(luò)出現(xiàn)擁塞的過程中,主機通過采用這種擁塞避免機制使注入TCP連接的分組減少,達到減輕網(wǎng)絡(luò)負荷,從而避免網(wǎng)絡(luò)擁塞的目的。當前流行的TCP版本為TCPReno。
TCPReno擁塞控制主要涉及慢啟動、擁塞避免、快速恢復和快速重傳。采用一種反應(yīng)式的被動擁塞控制模式,即只有在檢測出網(wǎng)絡(luò)擁塞時(如收到三個重復應(yīng)答或超時)才啟動擁塞控制機制[1~5]。由于采用被動方式進行擁塞控制,使網(wǎng)絡(luò)擁塞次數(shù)較多,數(shù)據(jù)重傳難以有效抑制。
關(guān)于主動擁塞控制方面的研究目前主要集中在路由器的隊列管理,典型的研究成果為隨機早期檢測(random early detection, RED)技術(shù)[6,7]。RED以給定概率丟棄到來的分組,此概率會隨著所估計的平均隊列長度的增加而增大。在RED中,隊列緩沖較少出現(xiàn)長期溢出,有效避免了數(shù)據(jù)的突發(fā)丟失。RED對相關(guān)參數(shù)較為敏感[8~11],算法實現(xiàn)較復雜。
基于TCP Reno,本文提出了一種主動TCP擁塞控制機制,命名為Active-TCP。在沿用傳統(tǒng)的被動擁塞控制方式的同時,Active-TCP還采用了主動擁塞控制方式,即在擁塞到來時可提前主動降低擁塞窗口,而不用等網(wǎng)絡(luò)擁塞后才被動降低擁塞窗口,從而避免了不必要的擁塞,改善了吞吐量,降低了報文重傳率。
1 Active-TCP擁塞控制
TCPReno主要根據(jù)重復應(yīng)答和超時來推斷網(wǎng)絡(luò)擁塞,降低擁塞窗口。Active-TCP除了沿用這兩種方式外,還添加了一種方式,即主動降低擁塞窗口方式,盡管此時網(wǎng)絡(luò)并未發(fā)生擁塞。采用主動擁塞控制模式下,當給定條件滿足時,可主動降低擁塞窗口,之后進入被動擁塞控制模式。若此模式下主動降低擁塞窗口條件未滿足時網(wǎng)絡(luò)發(fā)生了擁塞,則按TCP Reno方式降低擁塞窗口,進入被動擁塞控制模式。Active-TCP算法如下:
a)發(fā)送方記錄最近一次收到三個重復應(yīng)答時的擁塞窗口值。為便于表述,把此值記為latest-cwnd。
b)發(fā)送方收到重復應(yīng)答后,將此時的擁塞窗口值與latest-cwnd進行比較。若這兩個值的相對誤差絕對值小于給定門限,則緊接著的擁塞避免階段采用主動擁塞控制方式(詳見c));反之如TCP Reno在緊接著的擁塞避免階段仍采用被動式的擁塞控制,即在此階段擁塞窗口降低的條件為收到三個重復應(yīng)答或超時。
c)在主動擁塞避免階段,引起擁塞窗口降低的條件
除了收到三個重復應(yīng)答或超時外,添加了主動擁塞窗口降低機制,即在未收到三個重復應(yīng)答或超時時,若當前擁塞窗口值達到latest-cwnd的給定門限時,主動降低擁塞窗口,并將擁塞窗口值降為latest-cwnd的一半。
為了清晰地呈現(xiàn)Active-TCP,給出了Active-TCP的SDL(specification and description language)描述,如圖1所示。Active-TCP的其他方面與TCP Reno相同。
圖1中相關(guān)變量說明如下:
flg——主動擁塞控制模式標志。flg=1時進入主動擁塞控制模式。此模式下,可主動降低擁塞窗口,而此時網(wǎng)絡(luò)并未擁塞。
cwnd——擁塞窗口。
lc——最近一次被動擁塞控制模式下收到三個重復應(yīng)答時的擁塞窗口。
vc——被動擁塞控制模式下相鄰兩次收到三個重復應(yīng)答時擁塞窗口的相對誤差。
th_vc——門限值。當vc的絕對值小于此門限值時,采用主動擁塞控制模式,即令flg=1。
th_cw——門限值。在主動擁塞控制模式下,若cwnd/lc大于此門限值,則主動降低擁塞窗口。
由上可知,在Active-TCP中引入了兩個門限值:th_vc和th_cw。為公平起見,要求在所有的Active-TCP中使用一致的th_vc和th_cw。
2 性能分析
本文選用有名的單瓶頸(啞鈴)拓撲用于性能評估,如圖2所示。其中:S1~S10為發(fā)送方;R1~R10為接收方。N1處的隊列管理為Drop-Tail,緩沖大小為40個報文。仿真工具采用NS-2.26。Active-TCP中兩個門限值分別設(shè)為th_vc=0.15,th_cw=0.93。
仿真實驗中考察的性能指標主要包括吞吐量、報文重傳率和公平指數(shù)。其中瞬時吞吐量、平均吞吐量和報文重傳率分別用符號thrput、avgthrput和rexrate表示。部分性能指標說明如下:
a)累計平均吞吐量。多個連接平均吞吐量之和。譬如10個連接的累計平均吞吐量,為10個連接平均吞吐量之和,用aggr_avgthrput表示。
b)累計報文重傳率。多個連接累計的報文重傳率。譬如10個連接的累計報文重傳率,近似為10個連接至給定時刻重傳的報文總數(shù)除以10個連接已傳輸?shù)膱笪目倲?shù),用aggr_rexrate表示。
c)吞吐量公平指數(shù)fi。根據(jù)吞吐量計算的公平指數(shù)。譬如10個連接吞吐量公平指數(shù)計算公式為(∑Ti)2/(10∑Ti2)。其中:Ti為第i個連接的吞吐量。此指標可用于評價協(xié)議內(nèi)公平性,也可用于評價協(xié)議間公平性。
d)吞吐量公平指數(shù)F。用于兩協(xié)議間吞吐量的公平性評價,定義為min (TI/TII, TII/TI)。其中:TI為所有使用協(xié)議I的吞吐量的平均值;TII為所有使用協(xié)議II的吞吐量的平均值。譬如,在同一環(huán)境中有5個連接使用TCP Reno,它們的吞吐量分別為TI1,TI2,…,TI5,有5個連接使用Active-TCP,它們的吞吐量分別為TII1,TII2,…,TII5,則TI=(TI1+TI2+(+TI5)/5,TII=(TII1+TII2+…+TII5)/5,F(xiàn)=min(TI/TII, TII/TI)。
2. 1 TCP Reno性能
為便于比較分析,仿真分析了TCP Reno性能。
情形1 10個TCP Reno連接均從0時刻開始,仿真時間1 000 s。
如圖3~5分別為情形1時TCP Reno瞬時吞吐量、平均吞吐量和報文重傳率隨時間的變化曲線。至1 000 s時10個TCP Reno連接的平均吞吐量(Mbps)分別為0.792 05、0.790 21、0.813 82、0.785 18、0.806 5、0.803 9、0.802 9、0.791 03、0.827 46、0.808 54,公平指數(shù)fi=0.999 768,累計平均吞吐量為8.021 8 Mbps,因此可以認為鏈路利用率近似為80.22%;至1 000 s時10個TCP Reno連接的報文重傳率分別為0.003 03、0.002 96、0.002 88、0.002 98、0.002 93、0.002 99、0.003 07、0.003 08、0.002 87、0.002 85,累計報文重傳率為0.002 96。
情形2 10個TCP Reno連接均從0時刻開始,7~10連接在400 s時終止,仿真時間1 000 s。
如圖6~8分別為情形2時TCPReno瞬時吞吐量、平均吞吐量和報文重傳率隨時間的變化曲線。
在400 s時,由于連接7~10終止,其余連接快速地競爭多出的可用網(wǎng)絡(luò)資源,相應(yīng)它們的瞬時吞吐量和平均吞吐量增大,報文重傳率下降;400 s后連接7~10的瞬時吞吐量為0,平均吞吐量隨著時間的推移逐漸下降,報文重傳率維持不變,仍為400 s時的值。
2. 2 Active-TCP性能
情形3 10個Active-TCP連接均從0時刻開始,仿真時間1 000 s。
如圖9~11分別為情形3時Active-TCP瞬時吞吐量、平均吞吐量和報文重傳率隨時間的變化曲線。至1 000 s時10個Active-TCP連接的平均吞吐量(Mbps)分別為0.809 04、0.896 05、0.844 48、0.831 7、0.818 98、0.892 86、0.800 39、0.803 25、0.844 96、0.850 05,公平指數(shù)fi=0.998 516,累計平均吞吐量為8.391 74 Mbps,因此可以認為鏈路利用率近似為83.92%;至1 000 s時10個Active-TCP連接報文重傳率分別為0.002 53、0.002 16、0.002 49、0.002 25、0.002 46、0.002 28、0.002 74、0.002 58、0.002 56、0.002 31,累計報文重傳率為0.002 43。
情形4 10個Active-TCP連接均從0時刻開始,7~10連接在400 s時終止,仿真時間1 000 s。
如圖12~14分別為情形4時Active-TCP瞬時吞吐量、平均吞吐量和報文重傳率隨時間的變化曲線。在400 s時,由于連接7~10終止,其余連接快速地競爭多出的可用網(wǎng)絡(luò)資源,相應(yīng)它們的瞬時吞吐量和平均吞吐量增大,報文重傳率下降;400 s后連接7~10的瞬時吞吐量為0,平均吞吐量隨著時間的推移逐漸下降,報文重傳率維持不變,仍為400 s時的值。
為便于比較,把情形1~4的累計平均吞吐量、累計報文重傳率及公平指數(shù)fi分別畫于圖15~17中。由圖15,16可知,Active-TCP累計平均吞吐量較TCP有所提高,Active-TCP累計報文重傳率較TCP大幅度下降。譬如,就情形1、3而言,至1 000 s,TCPReno和Active-TCP的累計平均吞吐量(Mbps)分別為8.021 8、8.391 74,報文重傳率分別為0.002 96、0.002 43。因此,相對于TCP Reno,至1 000 s時,Active-TCP的累計平均吞吐量提高了4.611 7%,累計報文重傳率下降了17.905%。由圖17可知,Active-TCP協(xié)議內(nèi)吞吐量公平性較好。
2. 3 Active-TCP與TCP Reno共存環(huán)境下的性能
情形5 所在連接均從0時刻開始,其中連接1~6為Active-TCP,連接7~10為TCP Reno,仿真時間1 000 s。
圖18~20分別為情形5時Active-TCP與TCPReno共存環(huán)境下瞬時吞吐量、平均吞吐量和報文重傳率隨時間的變化曲線。
至1 000 s時,6個Active-TCP連接的平均吞吐量(Mbps)為0.792 79、0.811 31、0.785 97、0.839 71、0.814 36、0.816 86,4個TCP Reno連接的平均吞吐量(Mbps)分別為0.863 25、0.836 6、0.848 12、0.875 21,吞吐量公平指數(shù)fi=0.998 882,累計平均吞吐量為8.284 18Mbps。6個Active-TCP連接的報文重傳率為0.002 72、0.002 61、0.002 78、0.002 36、0.002 57、0.002 56,4個TCPReno連接的報文重傳率分別為0.002 7、0.002 78、0.002 75、0.002 47,累計報文重傳率為0.002 63。
改變Active-TCP連接與TCP Reno連接的比例,重復此仿真實驗。表1歸納了仿真結(jié)果。為便于比較,也給出了10個TCP Reno連接和10個Active-TCP連接的性能。
表1 Active-TCP與TCP Reno共存環(huán)境下的性能
Active-TCP/TCP Reno累計平均吞吐量/Mbps累計報文重傳率/×10-3平均吞吐量公平系數(shù)Active-TCP/TCP Reno累計平均吞吐量/Mbps累計報文重傳
表1結(jié)果表明,Active-TCP可與TCP Reno友好地共存,公平地競爭網(wǎng)絡(luò)資源;在TCPReno環(huán)境中使用Active-TCP,也能改善累計平均吞吐量,降低累計報文重傳率。總的趨勢是,隨著Active-TCP連接與TCP Reno連接比例的增大,累計平均吞吐量增大,累計報文重傳率下降。
3 Active-TCP中的參數(shù)
Active-TCP中有兩個參數(shù),即th_vc、th_cw。為便于考察它們對Active-TCP性能的影響,改變th_vc和th_cw,重復情形3的仿真。圖21~26分別為累計平均吞吐量、累計報文重傳率和公平指數(shù)fi隨th_vc和th_cw的變化曲線。
圖21~26所示結(jié)果表明,th_vc和th_cw在一定范圍內(nèi)時:a)th_vc和th_cw的增加均可改善累計平均吞吐量;b)th_vc的增加可降低累計報文重傳率,th_cw取0.87左右可獲得相對較小的報文重傳率;c)th_vc和th_cw的增加會使協(xié)議內(nèi)吞吐量公平性略變差,不過仍能維持很好的公平性。
如果要考慮Active-TCP與TCPReno的共存問題,則應(yīng)考察不同th_vc和th_cw取值對協(xié)議間公平性的影響。改變th_vc和th_cw的取值,重復情形5的仿真,其中連接1~5為Active-TCP,連接6~10為TCP Reno。圖27、28分別為吞吐量公平指數(shù)F隨th_vc和th_cw的變化曲線。結(jié)果表明,th_cw對F影響較小;th_vc對F的影響較大,即隨著th_vc的增加,F(xiàn)會下降。這主要是因為,在共存環(huán)境下,較大的th_vc會使Active-TCP競爭網(wǎng)絡(luò)資源不充分,受到TCP Reno的抑制。
綜合考慮圖21~28的結(jié)果,建議th_vc在0.15左右取值;th_cw在0.93左右取值。
4 結(jié)束語
Active-TCP在TCPReno基礎(chǔ)上引入了主動擁塞控制方式,即主動降低擁塞窗口,而此時網(wǎng)絡(luò)并未發(fā)生擁塞。分析結(jié)果表明,th_vc宜在0.15左右取值,th_cw宜在0.93左右取值。
本文的主要貢獻是提出了在TCP中添加主動擁塞控制的思想,建議了一種主動TCP擁塞控制方案,即Active-TCP,并對此方案作了性能仿真評估。在以后的研究工作中,將結(jié)合實際網(wǎng)絡(luò)環(huán)境,進一步考察其性能。
參考文獻:
[1]POSTEL J . RFC 793, Transmission control protocol[S]. 1981.
[2]STEVENS W R. RFC 2001, TCP slow start, congestion avoidance, fast retransmit and fast recovery algorithms[S]. 1997.
[3]ALLMAN M, PAXSON V, STEVENS W R. RFC 2581, TCP congestion control[S]. 1999.
[4]CHIU D M, JAIN R. Analysis of the increase and decrease algorithms for congestion avoidance in computer networks[J]. Computer Networks and ISDN Systems, 1989,17(1):1-14.
[5]FLOYD S.Connections with multiple congestioned gateways in packet-switched networks part 1: one-way traffic[J]. ACM Computer Communication Review, 1991,21(5):30-47.
[6]FLOYD S, JACBSON V. Random early detection gateways for congestion avoidance[J]. IEEE/ACM Trans on Networking, 1993,1(4):397-413.
[7]BRADEN B, CLARK D, CROWCROFT J, et al. RFC 2309, Recom-mendation on queue management and congestion avoidance in the Internet[S]. 1998.
[8]LIN Dong, MORRIS R. Dynamics of random early detection[J]. Computer Communication Review, 1997,27(4):127-137.
[9]HOLLOT C. MISRA V, TOWSLEY D, et al. A control theoretic analysis of RED[C]//Proc of IEEE INFOCOM’01. [S.l.]: IEEE Press, 2001:1510-1519.
[10]MAY M, BOLOT J, DIOT C, et al.Reasons not to deploy RED[C]//Proc of the 7th Int Workshop on Quality of Service. London:[s.n.], 1999:260-262.
[11] OTT T J, LAKSHMAN T V, WONG L. SRED: stabilized RED[C]//Proc of IEEE INFOCOM’99. [S.l.]: IEEE Press, 1999:1346-1355.