本站小編為你精心準備了網絡協議論文:無線網中協定的算法優化透析參考范文,愿這些范文能點燃您思維的火花,激發您的寫作靈感。歡迎深入閱讀并收藏。
作者:陳海麗單位:廣東省高級技工學校
舊的數據包
這情現象相對來說少一些,發生類似這種情況的主要是由于TCP發送端出現了超時計數器出現了超時,這時就會重新傳輸超時的數據包,這種基站會收到序號小于基站緩存中緩存的最大序號的數據包信息。這種情況是由于TCP在發送端超時而重傳的數據包也會被轉發到相應的TCP接收終端。
ack算法流程
下面是Snoop對接收到的確認數據包時所處理流程,圖1表示了ack()算法流程圖:Snoop是屬于接收到的ACK,ACK分為三種情況:第一種是新的ACK、第二種是舊的且是不重復的ACK、第三種是舊的且重復的ACK。Snoop在時對他們進行不同的情況進行處理。
(1)新ACK
這是屬于正常的情況,Snoop對于ACK已經所確認的數據包會從緩存中刪除掉,而且又要重新開始計算無線網絡端到端的傳輸時延值。此時的ACK會被傳送給TCP的發送終端。
(2)舊的ACK而且不是重復的ACK
類似這種情況相對來說會少一些。Snoop會丟棄這個ACK。
(3)舊的ACK并且是重復的ACK
這種情況是代表了TCP在接收端并且沒有收到這個ACK時所確認的下一個需要的數據包。假如這個ACK所確認的下一個數據包是沒有直接被data()標記為擁塞的數據包時,那么就會知道這個數據包是在無線網絡的傳輸中被丟失的。當不斷重復地確認數據包數大于或等于3時,Snoop就會馬上重新傳輸這個數據包。假如被標記為擁塞數據包時則會發送到相應的接收端。
現有Snoop協義算法的缺點
雖然現有Snoop算法可以提高系統的吞吐量,但是有許多缺點,具體缺點如下:
(1)TCP的發送端存在擁塞控制不及時
由于Snoop存在過濾一些重復的確認數據包功能,因此,使得TCP發送端不能通過接收到三個重復的確認數據包進行擁塞控制。這樣TCP的發送端只允許通過超時計數器的超時行為方可以作相應的擁塞控制處理,這樣就會使得TCP在發送端出現網絡擁塞時無法進行及時的擁塞控制,從而導致網絡性能出現更差的現象。
(2)TCP存在交叉層問題
因為無線鏈路出現了錯誤從而導致了相應數據包丟失的現象,此時Snoop就會在本地重新傳輸已經丟失掉的數據包。通常在這種情況下,TCP在發送端的超時計數器出現超時之前,部分重傳數據還沒有完成,TCP的發送端就會認為網絡已經出現了擁塞現象,此時就會進行相應的擁塞控制處理,將開始慢慢啟動閾值并將其設置為擁塞時的一半,將相應的發送窗口設置為1,使得相關的發送進入慢啟動的階段。TCP盲目地降低了網絡數據傳輸速度,這樣就導致了鏈路的利用率出現降低狀況,從而使得整個系統的吞吐量出現了下降,此時丟失的數據包在傳輸層以及鏈路層將會同時被重傳,這樣就會浪費了有限的帶寬資源。
Snoop協議中算法的改進措施
鑒于Snoop擁塞控制機制存在一些缺點,下面我們根據實際情況提出了針對Snoop算法的優化方案Snoop_BE,這個優化方案可以使其在TCP發送端增加帶寬估計算法。與舊的Snoop算法相比可以體現了TCP在發送端增加帶寬估計算法可以很好地動態設置發送窗口以及慢啟動的閾值,可以使相關的發送端避免盲目地減少擁塞窗口,并且更好地優化了Snoop算法,也可以對網絡的擁塞情況做出更快的反應。
本文中所使用的帶寬估計算法是屬于TCPWestwood算法。TCPWestwood算法所采用的帶寬估計算法可以為發送端通過觀察接收端來返回相應的確認數據包時間的間隔來估算到終端鏈路上的能夠使用的帶寬。通過確認ACK的時間間隔和其相對應的數據包大小來估算瓶頸鏈路時能夠使用的帶寬。發送端在kt時刻所接收到接收端的確認數據包,就會清楚已確認數據包所確認后的數據是否已經被接收端成功地接收,k1t是屬于上一個確認數據包接收端的時間,kd是屬于所確認的數據量,所以這樣可以簡單的通過公式(2-1)來算出相應的網絡帶寬kB:由于網絡擁塞是發生在整個網絡中的數據包流量出現了超過鏈路的容量的時候,因此我們可以使用最簡單的公式得到的是一個在較短時間內的帶寬值,同時如果當接收端出現延遲確認數據包時,對估算后的平均值可能影響較大,因此帶寬估算法的選擇上需要十分慎重。TCPWestwood所使用的帶寬估算法的公式如(2-2)所示:與一般的擁塞控制算法相比,TCPWestwood最基本的擁塞窗口動態調整算法在慢慢啟動階段以及擁塞避免階段都沒有完全改變。這個算法思想是這樣的:當網絡發生擁塞時,也就是接收到三個重復的ACK或者是計數器存在超時現象時,TCPWestwood將會試圖選擇一個慢啟動閾值或者擁塞窗口來有效地利用網絡帶寬。TCPWestwood可以避免將發送端的無線信道因偶然的錯誤而出現丟包而誤以為是網絡擁塞出現征兆,從而減少一些不必要的窗口,也使得其在整個無線網絡中更加有效。
Snoop的優化算法Snoop_BE其具體改進方法是這樣的:在Snoop模塊里面取消重復ACK過濾功能,將已經接收到重復的ACK發送到接收方這一端。而作Snoop模塊依然需要保留對ACK的重復計數功能,當Snoop模塊收到三個重復的ACK時就需要進行本地數據包的重復傳輸,其它相關功能保持不變。在發送端,當接收到三個重復的ACK或者是超時計數器超時,就需要進行改進的擁塞控制;如果接收到三個重復的ACK時,那么發送端就需要根據當時的帶寬估計值來進行設置相應的慢啟動閾值以及擁塞窗口的處理,但是不會重新傳輸已經丟失掉的數據包;接到三個重復ACK時,此時就需要設置當前可用帶寬值為BWE,端到端的最小時延為RTTmin,數據包值的大小為seg_size,慢啟動閾值為ssthresh,擁塞窗口為cwin,那么發送端的動態窗口就可以調整算法如下:下面對Snoop的優化算法Snoop_BE在接收到ACK時的操作進行相關的說明。當發送端接收到接收端發送的ACK時,就會根據ACK的狀態執行相應的操作。那么當發送端出現正常的情況下接收到新的ACK時,就可以知道數據包已被正常接收,此時就會取消該數據包的超時計數器的工作;假如當接收到重復的ACK時,并且這個重復ACK數量是小于3時,那么就會將這個數據包的重復ACK計數累加1;如果當接收到重復的ACK,并且其重復的ACK數量是大于或等于3時,所發送端就會依照估算得到的可用帶寬動態來調整擁塞窗口以及慢啟動閾值,圖2為發送端控制算法流程圖。
當接收端出現超時計數器超時時,那么發送端就會根據當時的帶寬估算值來進行相應的動態設置慢啟動閾值以及擁塞窗口來處理。將慢啟動閾值設為(BWE*RTTmin)/seg_size,當(BWE*RTTmin)/seg_size小于2,慢啟動閾值設為2,擁塞窗口設為1。并且重新傳輸已丟失掉的數據包。發送端的具體控制流程圖如圖3所示。
改進后的Snoop協議的仿真結果及分析
在無線網絡運行環境下,無線鏈路的誤碼率是直接影響著整個網絡傳輸性能的主要原因之一,當無線鏈路誤碼率越來越高時,整個系統的性能就會越來越差。因此模擬在不同的鏈路環境錯誤的情況下,需要改進的Snoop協議與其他相關協議的比較,在整個試驗中,TCP的平均吞吐量如圖4所示。從上面的實驗結果來看,改進后的算法可以使得無線鏈路誤碼率變得較低以及有效的減少丟包率,其實TCP的在不同版本中吞吐量大致相同??墒侨绻斦`碼率不斷增高的時候,他們的吞吐量就會隨之而下降。其中TCPReno的下降速度是最快的,這是由于在整個無線鏈路中RTT出現的變化較大,而TCPReno是通過RTT的值來改變擁塞窗口的,因此在無線鏈路誤碼率較高時候,它就無法適應。由于TCPSack是采用了選擇性進行重復傳輸的技術,因此在一定的程度上有效地降低了無線鏈路錯誤造成的不良影響。與Snoop算法相比較可以知道改進后的Snoop算法在整體性能上優于傳統的Snoop算法,這是由于當鏈路錯誤而造成的相關數據包丟失,而且鏈路層也沒有成功的進行局部重復傳輸時,TCP的發送端就會盲目地啟動相關的擁塞控制,從而減少了擁塞窗口,有效地降低了無線鏈路的利用率,從而改進Snoop的算法,是依照估算的可用帶寬來動態地改變擁塞控制窗口。
而且如果當用于網絡擁塞產生丟包的現象是Snoop算法就無法按照接收到重復的ACK來進行相應的擁塞控制處理,唯有當發生計數器存在超時時才可以行動。如此一來就無形中增加了網絡的擁塞,而改進后Snoop算法則可以很好地對網絡擁塞現象做出快速的反應。
網絡的時延是影響整個無線網絡性能的較為關鍵因素之一,圖5是Snoop改進算法后與其它TCP擁塞控制算法在不同的鏈路時延下的系統性能下降的情況比較。
從圖5可以看出,當網絡時延增加時,整個系統的性能就會變差,當在時延很小時完全可以忽略不計,那么此時的吞吐量基本上是一樣的,而如果當網絡的時延在不斷地增加時,Snoop算法的吞吐量就會明顯小于改進后的算法。這是由于網絡上時延的增多時TCP接收端發生超時計數器超時,使得相關的接收端誤以為網絡發生了擁塞而出現錯誤的減少擁塞窗口,而當Snoop改進算法在檢測到發生網絡超時不是盲目地減少擁塞窗口值,而是按照接收端估算后得到的可用帶寬值動態的設定擁塞窗口值,這樣就可以在出現網絡時延較大時,對于無線網絡性能的影響較小。
總結
綜上所述,本文介紹了現行Snoop算法存在的不足以及算法的改進措施。在Snoop算法的基礎上增加了帶寬估計算法來動態的調整擁塞控制窗口的大小。根據模擬結果對改進算法進行分析,通過試驗分析可以得出誤碼率較高和時延較大的情況下,改進的Snoop算法可以有效提高無線網絡的吞吐率。