文獻(xiàn)標(biāo)識(shí)碼: A
章編號(hào): 0258-7998(2013)09-0109-03
互聯(lián)網(wǎng)采用TCP和UDP兩種協(xié)議,在網(wǎng)絡(luò)擁塞的情況下,UDP數(shù)據(jù)流幾乎占用了所有網(wǎng)絡(luò)帶寬,而TCP數(shù)據(jù)流則幾乎停止工作,影響相關(guān)應(yīng)用正常運(yùn)行。因此,如何實(shí)現(xiàn)UDP數(shù)據(jù)流和TCP數(shù)據(jù)流的公平性是一個(gè)迫切需要解決的問題。
IP電話視頻會(huì)議等多媒體網(wǎng)絡(luò)應(yīng)用采用實(shí)時(shí)性較強(qiáng)的UDP傳輸數(shù)據(jù)。UDP是一種無連接協(xié)議,在傳輸速度上占有一定優(yōu)勢,但它缺乏擁塞控制機(jī)制,傳輸可靠性差。因此如何在UDP中解決擁塞控制從而提高傳輸可靠性是另一個(gè)迫切需要解決的問題。
因此,本文提出解決上述兩個(gè)問題的方案,即UDP根據(jù)丟包率來判斷網(wǎng)絡(luò)的擁塞情況,若出現(xiàn)網(wǎng)絡(luò)擁塞,接收方則通知控制方調(diào)整發(fā)送速率從而有效解決公平性問題和UDP的擁塞控制問題。
1 FFUDP實(shí)現(xiàn)方案
FFUDP的創(chuàng)新之處在于接收方收到發(fā)送方發(fā)送的數(shù)據(jù)消息后,不像TCP那樣頻繁返回確認(rèn)消息即可控制發(fā)送速率,從而提高帶寬利用率和數(shù)據(jù)包傳輸效率。
FFUDP包括兩個(gè)部分:局部調(diào)整算法和全局調(diào)整算法。前者根據(jù)接收方本次接收數(shù)據(jù)消息的序列號(hào)和前一次接收的差值得到丟包數(shù)(局部丟包數(shù))來調(diào)整發(fā)送方的數(shù)據(jù)發(fā)送率。后者根據(jù)接收方開始接收數(shù)據(jù)消息到本次接收消息結(jié)束這段時(shí)間內(nèi)產(chǎn)生的丟包數(shù)(全局丟包數(shù))來調(diào)整數(shù)據(jù)發(fā)送率。
前期工作發(fā)現(xiàn):獨(dú)立使用局部調(diào)整算法導(dǎo)致丟包率抖動(dòng),而獨(dú)立使用全局調(diào)整算法則解決公平性的效果不理想。在FFUDP中,局部調(diào)整算法控制接收方發(fā)送通知消息的周期,全局調(diào)整算法控制發(fā)送方發(fā)送速率。
1.1 FFUDP協(xié)議的協(xié)議頭
FFUDP通過實(shí)時(shí)監(jiān)測網(wǎng)絡(luò),定時(shí)給發(fā)送端發(fā)送通知消息來解決公平性和擁塞控制問題。本文新增的FFUDP協(xié)議頭字段,如圖1所示。
1.3 FFUDP協(xié)議實(shí)現(xiàn)機(jī)制
FFUDP的實(shí)現(xiàn)機(jī)制分為以下兩種情況。
1.3.1 提高發(fā)送級(jí)別的通知消息
如果發(fā)送方發(fā)送的數(shù)據(jù)全部被接收方接收,則接收方向發(fā)送方發(fā)送提高發(fā)送速率的通知消息。雙方通信過程如圖4所示。
(1)發(fā)送方A依次發(fā)送數(shù)據(jù)包M1和M2,M2到達(dá)接收方B后,接收方B開始發(fā)送通知消息Notify1,其負(fù)載為降低之后的發(fā)送級(jí)別。
(2)接收方B發(fā)送通知消息Notify1后,降低發(fā)送速率,并根據(jù)降低后的發(fā)送速率發(fā)送后期的數(shù)據(jù)包M3。
如果接收方發(fā)送的通知消息丟失,那么發(fā)送方不改變發(fā)送速率。
2 仿真實(shí)驗(yàn)與性能分析
仿真工具采用NS-2,網(wǎng)絡(luò)帶寬為4 Mb/s,鏈路延遲為5 ms,隊(duì)列長度為20。網(wǎng)絡(luò)中的發(fā)送節(jié)點(diǎn)分別發(fā)送TCP、UDP、FFUDP三種數(shù)據(jù)流。為了保持公平性,三種數(shù)據(jù)流所處的網(wǎng)絡(luò)環(huán)境完全一致。
2.1 公平性分析
為了測試FFUDP和TCP的友好性,數(shù)據(jù)流只包含TCP/ FFUDP。
如圖6所示,兩種數(shù)據(jù)流都不斷調(diào)整自己的發(fā)送速率。8 s后,兩者漸漸趨于平衡,保持一個(gè)相對(duì)平衡的趨勢。但FFUDP數(shù)據(jù)流的吞吐量高于TCP,這是因?yàn)門CP對(duì)任一數(shù)據(jù)消息都返回確認(rèn)消息,從而實(shí)現(xiàn)可靠傳輸。FFUDP則是定期發(fā)送通知消息,所以,F(xiàn)FUDP數(shù)據(jù)流的吞吐量略高于TCP數(shù)據(jù)流,但兩者保持一個(gè)相對(duì)平穩(wěn)的趨勢,因此保證了相對(duì)公平性。
如圖6、圖7所示,丟包率與吞吐量成反比。初始階段,TCP/FFUDP數(shù)據(jù)流的吞吐量很高,但丟包率很低。同樣,經(jīng)過8 s左右的調(diào)整,兩種數(shù)據(jù)流的丟包率出現(xiàn)穩(wěn)定的趨勢,但是FFUDP的丟包率比TCP的丟包率低。這是由于TCP的重傳確認(rèn)機(jī)制占用的網(wǎng)絡(luò)資源增加了丟棄數(shù)據(jù)的概率。相比,F(xiàn)FUDP不采用重傳確認(rèn)機(jī)制,降低了丟棄數(shù)據(jù)的概率。從圖7可以看出, FFUDP協(xié)議達(dá)到了FFUDP/TCP數(shù)據(jù)流友好公平的目的。
2.2 擁塞控制分析
為了測試FFUDP的擁塞控制功能,在原來的配置下,分別設(shè)置兩條FFUDP/UDP數(shù)據(jù)流,以測試FFUDP比UDP更具有可靠性。如圖8所示,F(xiàn)FUDP的吞吐量比UDP高很多。UDP的低吞吐量可能導(dǎo)致服務(wù)癱瘓。而FFUDP通過調(diào)整發(fā)送速率有效控制了網(wǎng)絡(luò)擁塞,達(dá)到了提高吞吐量的目的。
如圖9所示,UDP丟包率遠(yuǎn)高于FFUDP,致使接收數(shù)據(jù)存在不完整性。FFUDP大幅度降低了丟包率,實(shí)現(xiàn)了可靠傳輸。
本文提出了FFUDP以解決UDP與TCP數(shù)據(jù)流公平性問題,以及UDP傳輸可靠性問題。仿真數(shù)據(jù)表明,F(xiàn)FUDP協(xié)議實(shí)現(xiàn)了不同數(shù)據(jù)流之間的公平性,在網(wǎng)絡(luò)資源緊張的情況下,能夠有效控制網(wǎng)絡(luò)擁塞從而實(shí)現(xiàn)傳輸可靠性。
參考文獻(xiàn)
[1] 朱利, 周俊輝, 鄭守淇,等. 基于RTT的自適應(yīng)擁塞控制研究[J]. 計(jì)算機(jī)學(xué)報(bào),2000,23(7):705-710.
[2] 李如瑋, 鮑長春. VoIP丟包處理技術(shù)的研究進(jìn)展[J].通信學(xué)報(bào), 2007,28(6):103-110.
[3] 李強(qiáng), 張新榮. 基于延遲抖動(dòng)分析的TCP友好擁塞控制算法[J]. 計(jì)算機(jī)工程與科學(xué), 2007,29(6):18-20.
[4] 王國棟, 任勇毛, 李俊. 多重慢啟動(dòng)TCP協(xié)議研究[J].微電子學(xué)與計(jì)算機(jī), 2011,28(3):178-181.
[5] 張藝瀕, 張志斌, 趙詠,等. TCP與UDP網(wǎng)絡(luò)流量對(duì)比分析研究[J].計(jì)算機(jī)應(yīng)用研究, 2010,27(6):2192-2197.
[6] 靳海力, 李俊. 具有補(bǔ)發(fā)機(jī)制的增強(qiáng)型可靠UDP的實(shí)現(xiàn)[J]. 小型微型計(jì)算機(jī)系統(tǒng), 2010,31(5):904-907.
[7] POSTEL J. User datagram protocol[S]. RFC 768. 1980.
[8] VELTEN D. Reliable data protocol[S]. RFC908. 1984.
[9] 方路平,劉世華,陳盼,等.NS-2網(wǎng)絡(luò)模擬基礎(chǔ)與應(yīng)用[M].北京:國防工業(yè)出版社,2008.
[10] TANENBAUM A S. Computer network(fourth edition)[M].Prentice Hall PTR,2004.11.
[11] STEVENS W R. TCP/IP詳解卷1:協(xié)議[M]. 北京:機(jī)械工業(yè)出版社, 2000.
[13] STEVENS W R. TCP/IP詳解卷2:實(shí)現(xiàn)[M]. 北京:機(jī)械工業(yè)出版社, 2004.