周益帆
(杭州師范大學(xué) 錢江學(xué)院 電氣機械工程系,浙江 杭州 310012)
傳統(tǒng)的TCP協(xié)議是為有線網(wǎng)絡(luò)環(huán)境而設(shè)計的,因此TCP假定網(wǎng)絡(luò)擁塞是引起報文丟失的唯一原因,并相應(yīng)地采取擁塞控制機制。然而在無線網(wǎng)絡(luò)中,無線鏈路的高誤碼率和主機的移動切換也能經(jīng)常引起報文丟失,而TCP仍然將這些報文丟失歸咎于網(wǎng)絡(luò)擁塞,這種錯誤的推論最終導(dǎo)致無線網(wǎng)絡(luò)中TCP性能的嚴(yán)重下降。由于TCP協(xié)議應(yīng)用的廣泛性,如何提高TCP在無線網(wǎng)絡(luò)中的性能成為目前研究的熱點問題。
在無線鏈路中,較高的誤碼率往往會造成分組丟失而產(chǎn)生重傳超時現(xiàn)象,致使TCP端到端的吞吐量較低。特別是突發(fā)性錯誤造成的多個連續(xù)分組的丟失在無線鏈路中是經(jīng)常見到的,而每個分組的丟失都會引起擁塞窗口的減半,這樣就會使發(fā)送端的發(fā)送速率嚴(yán)重降低,當(dāng)然這種降低是我們不希望的。而當(dāng)擁塞窗口低于4個分段時,就無法激活快速重傳/恢復(fù)算法,這樣發(fā)送端只能等待超時重傳,使TCP端到端的性能進(jìn)一步降低。
另外,頻繁變動的移動節(jié)點也會對TCP性能造成很大的影響。當(dāng)移動節(jié)點移動到一條新鏈路之前的一瞬間,如果一個家鄉(xiāng)代理通過隧道向移動節(jié)點的轉(zhuǎn)交地址發(fā)送了一個數(shù)據(jù)包,在這個包到達(dá)移動節(jié)點的舊鏈路時,移動節(jié)點已經(jīng)不能在那里接收這個數(shù)據(jù)包了。因此,發(fā)送這個數(shù)據(jù)包的節(jié)點上的TCP就會檢測到一個包丟失,并根據(jù)TCP/IP協(xié)議族的假設(shè)認(rèn)為網(wǎng)絡(luò)發(fā)生擁塞,于是啟動TCP協(xié)的擁塞控制機制,開始降低發(fā)送數(shù)據(jù)包的速率。從這里可以看出,此時定時器超時的真正原因是由于移動節(jié)點離開了原來的網(wǎng)段又沒有完成新的注冊而造成的接收不到對等主機發(fā)送的數(shù)據(jù)包,當(dāng)然也就不可能給出相應(yīng)的確認(rèn)報文,而不是因為網(wǎng)絡(luò)發(fā)生了擁塞。無線網(wǎng)絡(luò)下TCP協(xié)議的行為有以下幾個缺點:
TCP的錯誤檢測機制:這個機制不能區(qū)別不同類型的錯誤。TCP有一個基本假設(shè),即一旦發(fā)生連續(xù)的丟包行為,TCP就判斷網(wǎng)絡(luò)擁塞。但是這套機制搬到無線環(huán)境中會使TCP的性能大大降低,甚至不可忍受。無線網(wǎng)的各種缺陷使得丟包現(xiàn)象不一定是擁塞導(dǎo)致的,而可能是移動導(dǎo)致的。
錯誤恢復(fù)機制:這個機制不能針對無線環(huán)境的具體特點 (如移動節(jié)點的頻繁變動和信道的衰弱)做出相應(yīng)的行為。
平衡協(xié)議的花銷以及時間的節(jié)省能力。這是考慮到使用電池的移動終端的 有效應(yīng)用。
對于擁塞(包括前向和后向)進(jìn)行可靠且精確的檢測,而不是僅僅基于RTT的鍘量,或是像標(biāo)準(zhǔn)TCP那樣直到丟包才探測到擁塞.這個機制可以解決不對稱鏈路上的不少問題,并且減少超時 (超時機制正是基于對RTT的測量)對協(xié)議性能的影響。
端到端技術(shù)直接作用于發(fā)送端或接收端,也可同時作用于二者。由于傳輸層具有無縫、高效、獨立等特性,使端到端的方案成為解決由用戶移動性所帶來的問題的較好方法,它可以修復(fù)由于用戶移動所引發(fā)的眾多問題。而且,當(dāng)前的大部分Internet提供了一個盡最大努力(best-effort)的服務(wù):網(wǎng)絡(luò)底層結(jié)構(gòu)能夠丟棄、記錄、復(fù)制數(shù)據(jù)段,引入時延的變化,限定信息的大小等。同時,應(yīng)用層協(xié)議需要確定的、按序的信息傳遞,并期望存在一種對任意大小信息都支持且適應(yīng)多重過程的網(wǎng)絡(luò)服務(wù)。端到端的方案要求使用一個有效的傳輸層,而TCP可能是最好的代表,它與網(wǎng)絡(luò)的其他部分的兼容性較好。對基于端到端協(xié)議的有一些新方法。
聰明代理機制:SMART機制與上邊提到的SACK基于相同的原理,它使用的SACK中包含了積累的確認(rèn)和已經(jīng)成功接收的報文段的序號,當(dāng)發(fā)現(xiàn)序號不連續(xù)時,立刻重發(fā)。顯式丟失通告機制:在ACK中增加了顯式丟失通告選項,它能夠通告發(fā)送方數(shù)據(jù)丟失的真正原因,以區(qū)別對待與網(wǎng)絡(luò)擁塞有關(guān)及其他與網(wǎng)絡(luò)擁塞無關(guān)的數(shù)據(jù)丟失。其具體做法是:中間節(jié)點或者接收方若檢測到數(shù)據(jù)丟失的確與網(wǎng)絡(luò)擁塞無關(guān),就相應(yīng)地將其返回的ACK首部ELN位置位。發(fā)送方根據(jù)ELN值就可知道數(shù)據(jù)丟失的原因,重傳數(shù)據(jù)并且避免觸發(fā)不必要的TCP擁塞控制機制。其中ELN位可選擇TCP報文首部中的保留比特位來充當(dāng)。例如對于移動主機作為接收方的情況,當(dāng)中間節(jié)點(基站)接收到來自移動主機的DUPACK時,若該DUPACK對應(yīng)報文的后續(xù)報文已被基站轉(zhuǎn)發(fā),則可斷定基站到移動主機間的無線鏈路段發(fā)生了數(shù)據(jù)丟失,就將其首部中的ELN位置位,然后再將此確認(rèn)轉(zhuǎn)發(fā)至發(fā)送方。發(fā)送方接收到含有ELN位的確認(rèn)后,立即重傳丟失的數(shù)據(jù),而不是錯誤的啟動擁塞控制機制。
TCP SACK協(xié)議。SACK算法是在Reno算法基礎(chǔ)上進(jìn)行擴展得來的,它在確認(rèn)包的包頭中增加了附加域,可以標(biāo)識沒有被正確接收的一個發(fā)送窗口內(nèi)的多個數(shù)據(jù)包,從而對數(shù)據(jù)包進(jìn)行有選擇地確認(rèn)和重傳。這樣,源端就能準(zhǔn)確地知道哪些數(shù)據(jù)包被正確地傳到接收端,避免了不必要的重傳,減少時延,提高網(wǎng)絡(luò)吞吐量。
非直接TCP(I-TCP)。這是使用分段連接方法的早期協(xié)議之一。這種方法在無線鏈路連接中使用常規(guī)的TCP,基站只簡單的在兩個連接間雙向復(fù)制報文。I-TCP像其它的分段連接方法一樣,試圖從整個網(wǎng)絡(luò)中將無線鏈路上的報文丟失分離出來,因此避免初始的TCP發(fā)送方參與無線鏈路上的恢復(fù)。由于TCP不能很好的適應(yīng)無線鏈路的特點,造成了無線網(wǎng)絡(luò)連接段的TCP發(fā)送方經(jīng)常超時,從而導(dǎo)致初始發(fā)送方停止發(fā)送報文。該方法的另一個缺點是,TCP端到端的語義被違反了,因為在報文還未到達(dá)目的地之前,發(fā)送方就有可能收到該報文段的ACK,這個ACK實際上只表明基站收到了相應(yīng)的報文,并非接收方真正收到了它。而且,每個報文段都要經(jīng)過兩次TCP的處理。由于TCP的狀態(tài)必須在基站之間傳輸,這個協(xié)議對于每一個TCP連接都需要在基站維持一定數(shù)量的連接狀態(tài),當(dāng)發(fā)生越區(qū)切換時處理過程就會變得復(fù)雜和緩慢。
無線TCP(W-TCP)?;臼褂脙煞N協(xié)議TCP和W-TCP,TCP用于處理有線鏈路數(shù)據(jù)的傳送,W-TCP則應(yīng)用于無線鏈路。在這個方案中無需對固定主機和移動終端的協(xié)議進(jìn)行改動。
當(dāng)基站接收到一個從發(fā)送方發(fā)送過來的報文段時,它將這個報文段的順序號和到達(dá)時間存放到緩沖區(qū)中。每當(dāng)一個報文段被發(fā)往移動主機時,W-TCP都會把它在緩沖區(qū)中停留的時間加入到時間戳里。通過這種“欺騙”方式,發(fā)送方會在報文段真正被基站發(fā)送出去之前,就認(rèn)為它已經(jīng)被發(fā)送了。W-TCP通過這種方法延緩了TCP時鐘超時的時間,即影響RTT的估算。特別是當(dāng)一個報文段被反復(fù)重傳了多次以后,RTT的估計值將會變得很大,由于TCP采用平滑估計時間(也稱為已平滑的RTT估計器)對下一次往返時間進(jìn)行估計,發(fā)送方需要很長的一段時間才能消除一個不正常的語義,基站在移動主機確實收到報文段后才發(fā)送ACK到發(fā)送方。
基站在收到DUPACK或者計時器超時后,可以對丟失的報文段進(jìn)行本地重傳。如果是超時引起的重傳,W-TCP在重傳后就將發(fā)送窗口降為1個最大報文段長度,因為此時可能在無線網(wǎng)絡(luò)中發(fā)生了突發(fā)性的報文丟失(burst loss)。相反,如果是重復(fù)應(yīng)答引起的本地重傳,基站不做多余的處理,因為能夠收到重復(fù)應(yīng)答幀證明此時無線信道狀況良好。
[1]文莉,無線Internet技術(shù),人民郵電出版社,2006年
[2]TCP/IP協(xié)議和服務(wù)技術(shù)參考,清華大學(xué)出版社,2004年
[3]周天翔,:通過ARQ提高無線網(wǎng)絡(luò)中的TCP吞吐量,上海交通大學(xué)學(xué)報,2002