陳金超 謝東亮
摘要:隨著WiFi,3G網(wǎng)絡(luò)和無線設(shè)備的普及,無線通信傳輸數(shù)據(jù)亮不斷增加。對(duì)無線網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)男阅芤笠膊粩嗉哟?。TCP作為現(xiàn)今internet網(wǎng)絡(luò)主要傳輸控制協(xié)議之一,在IP層基礎(chǔ)上為應(yīng)用層提供面向連接的、可靠的數(shù)據(jù)傳輸服務(wù)。TCP在有線網(wǎng)絡(luò)中已經(jīng)證明可以取得良好的傳輸性能,然而在無線網(wǎng)絡(luò)中(蜂窩網(wǎng)絡(luò)、Ad hoc網(wǎng)絡(luò)和衛(wèi)星網(wǎng)絡(luò)等)由于無線信道具有高衰減、高比特誤碼率的特點(diǎn)等因素導(dǎo)致TCP傳輸性能衰弱。目前國內(nèi)外學(xué)者已經(jīng)提出了各種不同的方法來提高無線網(wǎng)絡(luò)中TCP性能,本文著重討論在蜂窩網(wǎng)絡(luò)、wifi網(wǎng)絡(luò)下提升無線TCP性能的解決方案,對(duì)比標(biāo)準(zhǔn)TCP協(xié)議,分析造成無線網(wǎng)絡(luò)TCP性能下降的主要原因以及各無線網(wǎng)絡(luò)TCP解決方案的性能。
關(guān)鍵詞:無線網(wǎng)絡(luò);WiFi;3G;TCP;性能優(yōu)化
中圖分類號(hào):TP393.0
文獻(xiàn)標(biāo)識(shí)碼:A
0 引言
隨著無線網(wǎng)絡(luò)和無線設(shè)備的普及,無線通信傳輸數(shù)據(jù)量愈來愈大。TCP作為面向連接的、可靠的、端到端的數(shù)據(jù)傳輸控制協(xié)議,其在無線網(wǎng)絡(luò)中的性能要求也越來越高。TCP通過窗口、序列號(hào)、重傳定時(shí)器、確認(rèn)等技術(shù)實(shí)現(xiàn)TCP的流量控制、差錯(cuò)控制以及擁塞控制,以此保證數(shù)據(jù)的可靠傳輸。雖然標(biāo)準(zhǔn)TCP在有線網(wǎng)絡(luò)中能很好地工作,但是在無線網(wǎng)絡(luò)中的性能很差。為了能在無線網(wǎng)絡(luò)中有效地使用TCP,就必須對(duì)標(biāo)準(zhǔn)TCP進(jìn)行優(yōu)化。雖然國內(nèi)外學(xué)者已經(jīng)提出了各種不同的方法來提高無線網(wǎng)絡(luò)中TCP性能,但是幾乎所有的方法都是針對(duì)某個(gè)特定問題,沒有一個(gè)方法可以解決所有問題。本文在接下來章節(jié)的分別介紹了TCP協(xié)議的基本概念,影響無線網(wǎng)絡(luò)TCP性能的主要因素,無線TCP協(xié)議改進(jìn)的主要方案,以及各種方案間性能的分析對(duì)比。
1 TCP傳輸控制協(xié)議
TCP協(xié)議在Internet體系結(jié)構(gòu)中的位置相當(dāng)于OSI(open systems interconnection)模型中的第4層如圖1所示,在不可靠的IP層基礎(chǔ)上為應(yīng)用層提供一個(gè)可靠的、按序傳輸、端到端的數(shù)據(jù)包傳輸服務(wù)。TCP假定網(wǎng)絡(luò)中的丟包是由于網(wǎng)絡(luò)擁塞引起的,并通過擁塞控制算法使網(wǎng)絡(luò)不斷進(jìn)行自我調(diào)節(jié),從而達(dá)到自我均衡的狀態(tài),TCP經(jīng)過幾十年的研究,不斷自我完善,主要有以下版本,Tahoe,Reno,NewReno,Sack,Vegas下面我們將詳細(xì)介紹TCP協(xié)議的發(fā)展以及TCP協(xié)議在無線網(wǎng)絡(luò)中的問題。
1.1TCP協(xié)議的發(fā)展
TCP Tahoe通過檢測丟失的報(bào)文段來探測網(wǎng)絡(luò)擁塞并調(diào)整發(fā)送速率從而實(shí)現(xiàn)了擁塞控制。Tahoe的擁塞控制算法包括慢啟動(dòng),擁塞避免和快速重傳。快速重傳階段,發(fā)送端只要一連收到3個(gè)重復(fù)的ACK即可斷定有分組丟失了,就應(yīng)立即重傳丟失的報(bào)文段,而不必等到重傳計(jì)時(shí)器超時(shí),而窗口調(diào)整同超時(shí)一樣將窗口調(diào)為初始狀態(tài)。然而,當(dāng)分組報(bào)文丟失并不是網(wǎng)絡(luò)擁塞引起是由于鏈路暫時(shí)斷開或者隨機(jī)誤差導(dǎo)致時(shí),Tahoe的快速重傳時(shí)將擁塞窗口降為初始狀態(tài)導(dǎo)致無法充分利用網(wǎng)絡(luò)帶寬。
TCP RENO增加了“快速恢復(fù)”(Fast Recovery)算法,避免了網(wǎng)絡(luò)擁塞不嚴(yán)重時(shí)采用“慢啟動(dòng)”算法而造成過大的減小發(fā)送窗口尺寸的現(xiàn)象。發(fā)送端收到三個(gè)重復(fù)ACK時(shí),就重新按照“乘法減小”重新設(shè)置ssthresh擁塞窗口不設(shè)為1MSS,而設(shè)為ssthresh+3xMSS若收到重復(fù)ACK為n個(gè)(n>3),cwnd將設(shè)為ssthresh+nxMSS若發(fā)送窗口值還允許發(fā)送報(bào)文段,就按照擁塞避免算法繼續(xù)發(fā)送報(bào)文段若收到了新的報(bào)文段的ACK,將cwnd縮到ssthresh。
NewReno是對(duì)TCPReno版本的修改。NewReno跟Reno在只有一個(gè)數(shù)據(jù)包遺失的情況下,其機(jī)制是一樣的。NewReno主要修改了Reno的Fast-recovery算法??紤]了一個(gè)發(fā)送窗口內(nèi)多個(gè)報(bào)文丟失的情況。在Reno快速恢復(fù)算法中,當(dāng)發(fā)送方收到一個(gè)不重復(fù)的應(yīng)答后就退出快速恢復(fù)狀態(tài),而Newreno算法中,只有當(dāng)所有報(bào)文都被應(yīng)答后才退出快速恢復(fù)狀態(tài)。
NewReno在Fast-recovery算法中加入了Partial ACK機(jī)制,當(dāng)同時(shí)有多個(gè)packet丟失時(shí),在收到Partial ACK時(shí),并不會(huì)立即結(jié)束Fast-recovery,相反,NewReno的發(fā)送端會(huì)持續(xù)地重送Partial ACK之后的數(shù)據(jù)包,直到將所有遺失的數(shù)據(jù)包重送后才結(jié)束Fast-recovery,減少大量數(shù)據(jù)包遺失對(duì)傳輸效果造成的影響。
Sack是TCPReno版本的修改。加入了SACK選項(xiàng),允許接收端在返回Duplicate ACK時(shí),將已經(jīng)收到的數(shù)據(jù)區(qū)段(連續(xù)收到的數(shù)據(jù)范圍)返回給傳送端,傳送端可以知道哪些數(shù)據(jù)包是已經(jīng)收到的,哪些是該重送的,因此SACK的傳送端可以在一個(gè)RTT時(shí)間內(nèi)重送一個(gè)以上的數(shù)據(jù)包。彌補(bǔ)了NewReno在每個(gè)RTT時(shí)間只能一個(gè)數(shù)據(jù)包遺失的錯(cuò)誤。更有效地處理大量數(shù)據(jù)包遺失的問題。
TCP Vegas利用RTT值的改變來判斷網(wǎng)絡(luò)是否擁塞,從而調(diào)整擁塞控制窗口。如果發(fā)現(xiàn)RTT大于閾值β,Vegas就認(rèn)為網(wǎng)絡(luò)正在發(fā)生擁塞,于是開始減小擁塞窗口,如果RTT小于閾值α,Vegas認(rèn)為網(wǎng)絡(luò)擁塞正在逐步解除,于是再次增加擁塞窗口。由于Vegas不是利用丟包來判斷網(wǎng)絡(luò)可用帶寬,而是利用RTT變化來判斷,因而可以更精確的探測網(wǎng)絡(luò)的可用帶寬,從而效率更好。然而由于網(wǎng)絡(luò)中路由器只要緩沖了數(shù)據(jù),就會(huì)造成RTT的變大,如果緩沖區(qū)沒有溢出的話,并不會(huì)發(fā)生擁塞,但是由于緩存數(shù)據(jù)就會(huì)導(dǎo)致處理時(shí)延,從而RTT變大,在這種情況下,TCP Vegas降低自己的擁塞窗口,但是只要沒有丟包的話,從上面看到標(biāo)準(zhǔn)的TCP是不會(huì)降低自己的窗口的,于是兩者開始不公平,從而導(dǎo)致采用TCP Vegas的流的帶寬競爭力不及未使用TCP Vegas的流。
1.2TCP協(xié)議在無線網(wǎng)絡(luò)中的問題
所有上述TCP協(xié)議的不足之處是,他們都沒有考慮無線網(wǎng)絡(luò)環(huán)境的特性,即數(shù)據(jù)包丟失并不一定意味著擁塞。然而,大多數(shù)的無線數(shù)據(jù)應(yīng)用(如FTP,網(wǎng)絡(luò),遠(yuǎn)程登錄,組播等)使用TCP作為默認(rèn)傳輸層的協(xié)議,因?yàn)樗鼈冃枰獙?shí)現(xiàn)可靠和保證交付的數(shù)據(jù)。但是TCP在無線環(huán)境下要達(dá)到正常的吞吐量已經(jīng)面臨了巨大的瓶頸。以下無線網(wǎng)絡(luò)特征對(duì)TCP性能已經(jīng)造成重要影響:
(1)高比特誤碼率:由于無線網(wǎng)絡(luò)的鏈路是有損介質(zhì),由于信道干擾,多徑衰弱等原因無線網(wǎng)絡(luò)鏈路相比于傳統(tǒng)的有線網(wǎng)絡(luò)具有很高的比特誤碼率。從而導(dǎo)致數(shù)據(jù)包損壞甚至丟包,使得發(fā)送端出現(xiàn)超時(shí)、重傳數(shù)據(jù)包,并啟動(dòng)擁塞控制降低TCP的性能。
(2)錯(cuò)誤的丟包探測機(jī)制:標(biāo)準(zhǔn)TCP不能區(qū)分不同類型的錯(cuò)誤(隨機(jī)丟包、擁塞丟包等),它把任何丟包都看做擁塞丟包并啟動(dòng)擁塞控制,而不管網(wǎng)絡(luò)是否處于擁塞狀態(tài),導(dǎo)致TCP性能下降。
(3)無線鏈路帶寬:因?yàn)闊o線鏈路的帶寬有限,結(jié)點(diǎn)可能只能使用很少的帶寬,甚至沒有帶寬可以使用,導(dǎo)致發(fā)送端超時(shí)和信息丟失的時(shí)間增多。
(4)區(qū)域切換:蜂窩網(wǎng)絡(luò)中,移動(dòng)結(jié)點(diǎn)在蜂窩之間切換過程中有一個(gè)信號(hào)消失階段。在這個(gè)階段,移動(dòng)節(jié)點(diǎn)與蜂窩基站失去聯(lián)系不能接收到任何發(fā)送端的數(shù)據(jù),造成發(fā)送端超時(shí)。TCP發(fā)送端會(huì)誤認(rèn)為這個(gè)階段丟失的數(shù)據(jù)包是擁塞造成的,會(huì)重傳這些數(shù)據(jù)并啟動(dòng)擁塞控制,導(dǎo)致TCP性能下降。
(5)延遲的不可預(yù)測性:由于移動(dòng)用戶隨意移動(dòng),與基站的距離各不相同,導(dǎo)致不同的時(shí)間延遲。這種不可預(yù)測的延遲同樣影響TCP擁塞判定準(zhǔn)確性。
(6)能量受限:移動(dòng)設(shè)備是電池供電,因此不能承受過多的重傳,也就是說TCP不是一種能量高效的傳輸協(xié)議。
2無線TCP協(xié)議改進(jìn)
2.1分段連接方案
2.1.1I-TCP
I-TCP中涉及到以下節(jié)點(diǎn)實(shí)體:移動(dòng)主機(jī)(FH)、固定主機(jī)(MH)和移動(dòng)支持路由器(MSR)。移動(dòng)支持路由器和有線網(wǎng)絡(luò)直接相連。I-TCP將發(fā)送者和接收者之間的TCP連接在基站處分為兩個(gè)部分:發(fā)送者到基站的有線連接和基站到移動(dòng)主機(jī)的無線連接。當(dāng)MH向FH發(fā)起TCP連接,MSR建立并使用MH的IP地址與端口號(hào)的socket同F(xiàn)H建立TCP連接,同時(shí)建立并使用MSR自身IP地址和相同端口號(hào)的socket同MH通信。MSR緩存所有由FH發(fā)向MH的數(shù)據(jù)包和ACK。如下圖,當(dāng)MH由于移動(dòng)發(fā)生切換時(shí),新的MSR建立同原MSR相同的倆個(gè)socket,同時(shí)原MSR將緩存的數(shù)據(jù)包和ACK發(fā)給新的MSR繼續(xù)通信。
2.1.2M-TCP
M-TCP是一種分段連接的方法,它的體系結(jié)構(gòu)可以這被看作三層。在最低層移動(dòng)主機(jī)(MH)和每個(gè)蜂窩的基站通信;多個(gè)基站由一個(gè)監(jiān)視主機(jī)控制;最上層是SH和固定主機(jī)FH通信。與I-TCP中基站一旦收到FH的數(shù)據(jù)即發(fā)送確認(rèn)不同,M-TCP中只有當(dāng)收到來自MH的確認(rèn)時(shí)才發(fā)送確認(rèn)到FH,從而維持了TCP端到端的特性。另外M-TCP還采用了零窗口通告機(jī)制,通過檢測發(fā)往無線節(jié)點(diǎn)的數(shù)據(jù)包和ACK包的變化來判斷無線鏈路的狀態(tài),并通過發(fā)送窗口為0的ACK包使得固定節(jié)點(diǎn)的TCP協(xié)議進(jìn)入保持狀態(tài),從而使TCP連接不會(huì)由于無線鏈路的誤碼而中斷。因此可以有效處理無線鏈路上發(fā)生的丟包。然而M-TCP的缺點(diǎn)是基站的任務(wù)過于復(fù)雜。
2.1.3METP
METP在無線鏈路中使用較小的報(bào)頭的數(shù)據(jù)報(bào)文取代TCP報(bào)文,METP使用標(biāo)準(zhǔn)TCP協(xié)議完成BS與FH間通信功能,BS緩存FH的數(shù)據(jù)包,同時(shí)在無線鏈路使用較小的頭的分組來減少了帶寬要求和誤差概率。METP還利用的鏈路層的ACK和重傳,使丟失的數(shù)據(jù)包快速地在無線鏈路中恢復(fù)。METP接收端定期發(fā)送反饋包通知METP發(fā)送端,接收端緩沖區(qū)空間大小,可以減少由于在接收端緩沖區(qū)溢出導(dǎo)致的丟包。然而METP不能有效的處理頻繁斷開的情況,因?yàn)樗蟹浅8叩那袚Q延遲,當(dāng)發(fā)生切換時(shí)舊的BS中的所有緩沖分組必須被移動(dòng)到新的BS中。
2.1.4總結(jié)
這類方案有將移動(dòng)主機(jī)(MH)和固定主機(jī)(FH)間的TCP連接在基站處分成兩段(MH到基站的無線段和基站到FH的有線段),在有線和無線鏈路段分別采取不同的擁塞控制策略,有線鏈路段使用標(biāo)準(zhǔn)TCP;無線鏈路段則采用適于無線環(huán)境的改進(jìn)協(xié)議,有線鏈路傳輸速度速度快且誤碼率低,而無線鏈路速度依然很慢(相對(duì)于有線鏈路而言),并且容易受到噪聲干擾和信道衰落的影響。在同時(shí)包含有線和無線兩種鏈路的網(wǎng)絡(luò)中對(duì)這兩種性能相差很多的鏈路使用同樣的流量控制和擁塞控制,無線鏈路顯然會(huì)成為系統(tǒng)性能的瓶頸,將其分開進(jìn)行處理有利于提高鏈路的利用率,但這類方案破壞了TCP連接的端對(duì)端語義,且需要修改移動(dòng)主機(jī)和中間結(jié)點(diǎn)的TCP協(xié)議。
2.2端到端連方案
2.2.1Freeze-TCP
Freeze-TCP用于解決主機(jī)移動(dòng)所引起的丟包,F(xiàn)reeze-TCP的思想是讓移動(dòng)主機(jī)監(jiān)測無線信號(hào)的能量,并檢測出即將發(fā)生的主機(jī)切換事件,當(dāng)切換即將發(fā)生時(shí),移動(dòng)主機(jī)向發(fā)送者發(fā)送一個(gè)通告窗口為零的反饋,從而迫使發(fā)送者進(jìn)入零窗口探測模式,在零窗口探測模式中,發(fā)送者不會(huì)改變它的擁塞窗口和超時(shí)計(jì)時(shí)器的時(shí)長,一旦切換操作結(jié)束,移動(dòng)主機(jī)連接到新的子網(wǎng),它向發(fā)送者發(fā)送連接中斷前最后接收到數(shù)據(jù)的3個(gè)重復(fù)ACK,以便使發(fā)送者能夠解除零窗口探測模式并迅速發(fā)送數(shù)據(jù),使用Freeze-TCP后,發(fā)送者可以在切換結(jié)束后立即使用原來的窗口重新發(fā)送數(shù)據(jù),F(xiàn)reeze-TCP提高了TCP在切換時(shí)的性能。
2.2.2TCP WESTWOOD
TCP Westwood采用了帶寬估計(jì)思想,發(fā)送端通過觀察返回ACK的時(shí)間間隔,估計(jì)端到端鏈路上的可利用帶寬。TCPW在慢啟動(dòng)和擁塞避免階段的窗口增長方式?jīng)]有改變,仍然與標(biāo)準(zhǔn)TCP相同。當(dāng)檢測到網(wǎng)絡(luò)擁塞時(shí)通過帶寬估計(jì)值來設(shè)置擁塞窗口和慢啟動(dòng)閾值,從而避免了與傳統(tǒng)擁塞控制機(jī)制一樣采用保守的策略大幅度減小擁塞窗口和慢啟動(dòng)閾值。TCPW通過對(duì)帶寬的準(zhǔn)確估計(jì),當(dāng)發(fā)生擁塞時(shí)使用與當(dāng)時(shí)有效網(wǎng)絡(luò)帶寬相一致的慢啟動(dòng)閾值和擁塞窗口值充分利用重傳之后的網(wǎng)絡(luò)資源。
2.2.3TCP VENO
TCP-veno是一種端至端的擁塞控制機(jī)制,它可以有效地處理隨機(jī)分組丟失。它利用類似Vegas的機(jī)制來估計(jì)連接的狀態(tài),并應(yīng)用TCP-reno的AIMD方案。它通過感知網(wǎng)絡(luò)擁塞級(jí)別調(diào)節(jié)慢啟動(dòng)的閥值,而非固定的減半。VENO采用Vegas的方法計(jì)算中間路由節(jié)點(diǎn)隊(duì)列積壓值,并根據(jù)隊(duì)列積壓值判斷網(wǎng)絡(luò)是否擁塞。如果檢測到分組丟失時(shí),且網(wǎng)絡(luò)處于擁塞狀態(tài)時(shí),veno將丟包視為擁塞丟包;否則,視為隨機(jī)丟包。
2.2.4總結(jié)
Westwood,veno嘗試計(jì)算可用帶寬的估計(jì)值來計(jì)算擁塞窗口和慢開始閾值,試圖選擇與網(wǎng)絡(luò)擁塞時(shí)網(wǎng)絡(luò)有效帶寬相一致的慢速啟動(dòng)閾值和擁塞窗口。Freeze-TCP通過凍結(jié)重傳定時(shí)器和擁塞窗口防止切換引起的超時(shí)和窗口減半。然而實(shí)現(xiàn)Freeze-TCP,網(wǎng)絡(luò)協(xié)議棧需要知道主機(jī)的移動(dòng)性。MH必須在一個(gè)RTT內(nèi)預(yù)測即將發(fā)生斷線;否則,性能將退化為標(biāo)準(zhǔn)TCP。
2.3顯示通知方案
2.3.1ECN
ECN(Explicit Congestion Notification),采用RED算法通過對(duì)數(shù)據(jù)報(bào)設(shè)置ECN比特來標(biāo)識(shí)網(wǎng)絡(luò)發(fā)生擁塞。基本思想是:當(dāng)路由器發(fā)生在早期擁塞時(shí),不是丟棄分組,而是盡量對(duì)分組進(jìn)行標(biāo)記。ECN是由RFC2481推薦規(guī)范的。IPv4的IP頭標(biāo)中的TOS域的第6、7位被設(shè)置為ECN域,第6位為ECT(ECN-CapableTransport)位,第7位為CE(CongestionExperienced)位。ECT位由數(shù)據(jù)發(fā)送方設(shè)定,協(xié)商網(wǎng)絡(luò)是否支持ECN功能(ECT=1,支持;ECT=0,不支持)。CE位由路由器設(shè)定,通告終端節(jié)點(diǎn)網(wǎng)絡(luò)的緩存已經(jīng)快溢出(CE=1,有擁塞;CE=0,緩存工作正常),接收方接收到帶有ECT的分組后,馬上返回帶有ECN-echo的ACK通知發(fā)送方網(wǎng)絡(luò)已經(jīng)發(fā)生擁塞,從而控制發(fā)送速率。
2.3.2ELN
ELN(Explicit Loss Notification),為提高無線網(wǎng)絡(luò)的TCP性能,一般將長的TCP連接分割成幾段短的連接,即Split TCP或者TCP Spoofing,用ELN方法來通知發(fā)送方目前的分組丟失與網(wǎng)絡(luò)擁塞無關(guān),相應(yīng)的,發(fā)送方的擁塞控制機(jī)制就削減為簡單的重傳機(jī)制,避免不必要的降低吞吐量。接收方知道分組的丟失不是因?yàn)閾砣瑒t在TCP頭標(biāo)中將相應(yīng)的ELN位置位,并通過ACK將信息回傳給發(fā)送方。設(shè)置ELN的主要依據(jù)是由MAC層的循環(huán)冗余校驗(yàn)CRC(CyclicRedundancy Check),當(dāng)數(shù)據(jù)分組傳輸錯(cuò)誤時(shí),鏈路的本地重傳策略將重傳每個(gè)傳送失敗的分組,直到成功為止。在ELN中,鏈路層重傳超過一定次數(shù)后,將鏈路故障消息發(fā)送給傳輸層,也就是設(shè)置ELN標(biāo)志位。ELN不再僅僅把分組丟棄,而是將帶有ELN標(biāo)志位的數(shù)據(jù)發(fā)給接收方,通知高層當(dāng)前網(wǎng)絡(luò)的鏈路特性。
總結(jié)
顯示通知是一種為發(fā)現(xiàn)網(wǎng)絡(luò)中出現(xiàn)的早期擁塞并提前采取措施來避免和控制擁塞的機(jī)制,通過低層通知TCP發(fā)送方目前網(wǎng)絡(luò)的擁塞狀況,使得TCP發(fā)送方能夠及早發(fā)現(xiàn)網(wǎng)絡(luò)擁塞,避免了路由器的緩存溢出,減小了丟包率,緩和網(wǎng)絡(luò)的擁塞,又保證網(wǎng)絡(luò)有較高的吞吐量。以上方法需要中間節(jié)點(diǎn)和終端主機(jī)都支持顯示通知機(jī)制。在所有的方法中,發(fā)送者通過網(wǎng)絡(luò)中的顯式反饋判斷當(dāng)前丟包是由于網(wǎng)絡(luò)擁塞還是其它因素。從而防止錯(cuò)誤地調(diào)用擁塞控制算法導(dǎo)致TCP性能的下降。
2.4鏈路層重傳方案
2.4.1snoop
Snoop協(xié)議應(yīng)用于在鏈路層,Snoop引人針對(duì)TCP數(shù)據(jù)包的ARQ機(jī)制,以解決無線信道上的比特差錯(cuò)問題;當(dāng)數(shù)據(jù)由SH向MH傳輸時(shí),Snoop在基站的代理緩存數(shù)據(jù)包并轉(zhuǎn)發(fā)MH。Snoop通過兩種方法檢測數(shù)據(jù)包在無線信道上的丟失情況,一種是通過在鏈路層設(shè)置類似TCP的超時(shí)重傳計(jì)時(shí)器,另一種是在鏈路層檢測反向路徑是否出現(xiàn)DupACK。當(dāng)?shù)谝淮纬霈F(xiàn)DupACK時(shí),Snoop重發(fā)丟失的數(shù)據(jù)包,并且丟棄隨后的DupAcKs,當(dāng)數(shù)據(jù)由MH向SH傳輸時(shí),基站Snoop檢測收到的數(shù)據(jù)報(bào)文順序號(hào)是否不連續(xù),一旦發(fā)現(xiàn)不連續(xù),則通過顯式丟失通知ELN反饋移動(dòng)主機(jī)需要重新發(fā)送的數(shù)據(jù)報(bào)文。
2.4.2DDA
DDA(Delayed Duplicate Acknowledgment),標(biāo)準(zhǔn)TCP中的快速重傳法雖然可以減輕切換造成的性能衰退,但對(duì)高誤碼率的情況效果不大,延遲重復(fù)確認(rèn)法采用對(duì)重復(fù)確認(rèn)進(jìn)行延遲發(fā)送的機(jī)制,使發(fā)送端重傳丟包之前,無線鏈路層能進(jìn)行局部重傳。該方法對(duì)時(shí)延帶寬值大的無線應(yīng)用環(huán)境TCP性能有明顯改善。DDA通過BS重傳無線鏈路丟失的分組來屏蔽TCP層數(shù)據(jù)丟包,同時(shí)TCP接收端延遲發(fā)送第三個(gè)重復(fù)ACK,如果延遲足夠大,允許鏈路層在TCP接收端發(fā)送第三個(gè)重復(fù)ACK前重傳丟失的數(shù)據(jù)包,由于TCP發(fā)送方?jīng)]有收到兩個(gè)以上的重復(fù)ACK,它不會(huì)觸發(fā)快速重傳,從而保證TCP性能。
2.4.3總結(jié)
鏈路層重傳的方法獨(dú)立于TCP層協(xié)議,這些方案試圖通過鏈路層重傳減少無線鏈路的高誤碼率對(duì)TCP性能的影響,但不能處理移動(dòng)切換及頻繁連接斷開導(dǎo)致的TCP協(xié)議調(diào)用擁塞控制算法。
2.5性能分析對(duì)比
由于不同無線TCP協(xié)議改進(jìn)的目標(biāo)各不相同,解決的問題也不相同,如無線鏈路高誤碼率,移動(dòng)切換,頻繁斷開,能量受限等,因此對(duì)上述無線TCP協(xié)議做一個(gè)全面的比較并不容易。
上述大多數(shù)無線TCP協(xié)議的保持了TCP端到端的語義同時(shí)高效解決無線鏈路高誤碼率的問題。部分協(xié)議針對(duì)無線環(huán)境下移動(dòng)端點(diǎn)頻繁斷開與切換的問題。通過研究現(xiàn)有的協(xié)議,表明如果我們要設(shè)計(jì)一個(gè)高效的無線網(wǎng)絡(luò)TCP協(xié)議,該協(xié)議必須滿足可以檢測頻繁的斷線和切換事件。同時(shí)為了滿足兼容性問題,該協(xié)議必須滿足對(duì)現(xiàn)有協(xié)議進(jìn)行較小的修改。所以修改MH端點(diǎn)的協(xié)議要好過修改FH端點(diǎn)的協(xié)議。由于無線路徑上誤碼率與數(shù)據(jù)包的大小成正比,所以也可以通過最小化數(shù)據(jù)包大小,降低無線網(wǎng)絡(luò)丟包問題。
如果下層可以通知傳輸層TCP連接斷開或者M(jìn)H進(jìn)行蜂窩切換,MH可以通過探測beacon信號(hào)強(qiáng)度,來預(yù)測即將斷開或者切換的TCP連接。MH通過ACK數(shù)據(jù)包通知FH。FH暫時(shí)禁用擁塞控制策略(如定時(shí)器,指數(shù)退避,和所述傳輸窗口的緩慢生長)。當(dāng)MH重新連接,它重復(fù)發(fā)送最后ACK并通知FH已經(jīng)重新連接。此時(shí),F(xiàn)H可被允許重新傳輸,并重啟擁塞控制算法,從而可以避免切換或連接斷開引起不必要的窗口降低。
為了在TCP層實(shí)現(xiàn)實(shí)時(shí)切換和漫游,切換時(shí)延必須最小化,所以需要智能路由和緩沖技術(shù)。當(dāng)移動(dòng)主機(jī)檢測到即將發(fā)生斷線,它會(huì)通知BS,然后開始轉(zhuǎn)發(fā)傳入數(shù)據(jù)包到附近的基站。當(dāng)切換完成后,新的BS開始發(fā)送緩沖的數(shù)據(jù)包。在無線網(wǎng)絡(luò)中采用基于RTT的擁塞控制算法可能并不準(zhǔn)確,因?yàn)檠舆t在無線網(wǎng)絡(luò)中是隨機(jī)的,同時(shí)也可能由于節(jié)點(diǎn)的運(yùn)動(dòng)而產(chǎn)生波動(dòng)。
另一種檢測擁塞的方法是顯式通知,通過中間節(jié)點(diǎn)路由器控制網(wǎng)絡(luò)擁塞,當(dāng)路由器緩存隊(duì)列趨于飽和,即擁塞即將發(fā)生,中間節(jié)點(diǎn)對(duì)隊(duì)列中數(shù)據(jù)包進(jìn)行標(biāo)記。接收端接收到明確網(wǎng)絡(luò)通知之后,采取適當(dāng)?shù)拇胧?,以減少網(wǎng)絡(luò)中的數(shù)據(jù)包的數(shù)量。
3 結(jié)論
標(biāo)準(zhǔn)TCP將丟包作為網(wǎng)絡(luò)擁塞的標(biāo)志,并調(diào)用擁塞控制和避免程序。而標(biāo)準(zhǔn)TCP不能將無線網(wǎng)絡(luò)中,信道干擾,切換,斷開等導(dǎo)致的丟包同擁塞丟包區(qū)分開。因此,標(biāo)準(zhǔn)TCP在無線環(huán)境下,性能明顯衰退。在本文中,我們對(duì)現(xiàn)有不同的解決方案進(jìn)行了比較和分類,并已表明,沒有一個(gè)解決方案,滿足高效率的解決增無線網(wǎng)絡(luò)中TCP存在的所有問題。
同時(shí)我們前面的討論清楚地表明,這是很難建立一個(gè)滿足所有要求的無線TCP擁塞控制算法。鏈路層重傳方案通過使用TCPSACK和鏈路層本地重傳,可以提供比其他方案顯著性能改進(jìn)。在顯示通知方案中,ECN和ELN是最常用的方案。如果端到端之間的路由頻繁變更的話,ELN的性能將優(yōu)于ECN。在分段連接的方法中,雖然TCP性能的增加,但代價(jià)是破壞端到端的語義,同時(shí)占用BS的大量緩存,增加了BS的負(fù)載。端至端方案中,主要是通過估計(jì)帶寬的可用值判斷無線網(wǎng)絡(luò)的丟包是否是擁塞導(dǎo)致,沒用解決無線網(wǎng)絡(luò)高BER和區(qū)域切換的問題。因此如何跟全面高效的解決無線網(wǎng)絡(luò)TCP性能的問題依然值得研究。