專利名稱:一種實(shí)現(xiàn)可靠udp傳輸?shù)膿砣刂品椒?br>
技術(shù)領(lǐng)域:
本發(fā)明涉及一種在網(wǎng)絡(luò)上交換數(shù)據(jù)的傳輸方法,特別是關(guān)于一種實(shí)現(xiàn)可靠UDP 傳輸?shù)膿砣刂品椒ā?
背景技術(shù):
近年來(lái),隨著互聯(lián)網(wǎng)技術(shù)和應(yīng)用的快速發(fā)展,IPv4的網(wǎng)絡(luò)地址空間已經(jīng)無(wú)法 滿足用戶規(guī)模的快速擴(kuò)張需求。為了擺脫這一困境,目前互聯(lián)網(wǎng)上大多數(shù)局域網(wǎng) 運(yùn)營(yíng)者采用了內(nèi)部地址的方法來(lái)解決IP地址空間不足的問(wèn)題局域網(wǎng)內(nèi)大多數(shù)計(jì) 算機(jī)使用私有內(nèi)部IP地址,并通過(guò)共享同一個(gè)公共外部IP地址來(lái)訪問(wèn)互聯(lián)網(wǎng); 在局域網(wǎng)內(nèi)計(jì)算機(jī)與互聯(lián)網(wǎng)之間,需要設(shè)置一個(gè)網(wǎng)絡(luò)地址轉(zhuǎn)換網(wǎng)關(guān)(NAT)來(lái)進(jìn)行 私有內(nèi)部IP地址與公共外部IP地址之間的地址轉(zhuǎn)換。由于傳輸控制協(xié)議(TCP) 無(wú)法讓位于NAT之后不同局域網(wǎng)內(nèi)的兩臺(tái)計(jì)算機(jī)之間直接建立TCP連接,因而需 要通過(guò)用戶數(shù)據(jù)報(bào)協(xié)議(UDP)穿透技術(shù)能夠使得位于NAT之后的不同局域網(wǎng)內(nèi)的 兩臺(tái)計(jì)算機(jī)通過(guò)UDP協(xié)議直接傳輸數(shù)據(jù),因此采用UDP協(xié)議進(jìn)行的可靠流式數(shù)據(jù) 傳輸方法近年來(lái)得到了迅速的發(fā)展。
不同于TCP, UDP是無(wú)連接的不可靠的傳輸層協(xié)議。UDP協(xié)議在由IP地址所標(biāo) 識(shí)的網(wǎng)絡(luò)節(jié)點(diǎn)處提供最小的應(yīng)用性多路復(fù)用,但其并不具有可靠的遞送、流量控 制和擁塞控制。UDP協(xié)議在本質(zhì)上是非常簡(jiǎn)單的,來(lái)自應(yīng)用層的數(shù)據(jù)向下傳遞到傳 輸層并且封裝在UDP數(shù)據(jù)報(bào)中。數(shù)據(jù)報(bào)被發(fā)送給主機(jī),中間過(guò)程沒(méi)有任何機(jī)制保 證其安全地到達(dá)目的地的設(shè)備。如果期望其具有可靠性的話,任何可靠性檢查都 要被推回到應(yīng)用層,從而增加應(yīng)用層負(fù)擔(dān)。UDP的簡(jiǎn)單性優(yōu)點(diǎn)減少了使用該協(xié)議 的開(kāi)銷,而且這些服務(wù)在很多情況下是足夠的。例如,指定3G無(wú)線網(wǎng)絡(luò)的IP多 媒體系統(tǒng)(IMS)為交換媒體流使用實(shí)時(shí)傳輸協(xié)議(RTP),而RTP通常在UDP上運(yùn) 行。
如圖1所示,在擁塞階段,由于網(wǎng)絡(luò)帶寬的減少,使得傳輸數(shù)據(jù)包往返時(shí)間 相應(yīng)變長(zhǎng)。隨著UDP業(yè)務(wù)的增加,網(wǎng)絡(luò)擁塞出現(xiàn)了新問(wèn)題。網(wǎng)絡(luò)擁塞指的是在包 交換網(wǎng)絡(luò)中由于傳送的包數(shù)目太多,而存貯轉(zhuǎn)發(fā)節(jié)點(diǎn)的資源有限而造成網(wǎng)絡(luò)傳輸 性能下降的情況。當(dāng)網(wǎng)絡(luò)發(fā)生擁塞時(shí),UDP業(yè)務(wù)非公平的占有網(wǎng)絡(luò)帶寬,導(dǎo)致TCP 業(yè)務(wù)性能下降。由于現(xiàn)有的UDP業(yè)務(wù)缺乏端到端的擁塞控制機(jī)制,因此對(duì)擁塞指 示信號(hào)不發(fā)生反應(yīng),從而占據(jù)了鏈路上幾乎所有的可用帶寬,嚴(yán)重時(shí)可能導(dǎo)致網(wǎng)
絡(luò)崩潰。
發(fā)明內(nèi)容
針對(duì)上述問(wèn)題,本發(fā)明的目的是提供一種實(shí)現(xiàn)可靠UDP傳輸?shù)膿砣刂品椒ā?為實(shí)現(xiàn)上述目的,本發(fā)明采取以下技術(shù)方案 一種實(shí)現(xiàn)可靠UDP傳輸?shù)膿砣?控制方法,它包括對(duì)接收端的控制策略和對(duì)發(fā)送端的控制策略來(lái)實(shí)現(xiàn)在UDP協(xié)議 下的端到端擁塞控制;所述對(duì)接收端的控制策略如下接收端每接收到4個(gè)包發(fā) 送一個(gè)確認(rèn)包ACK,如100毫秒內(nèi)沒(méi)有發(fā)送確認(rèn)包則發(fā)送一個(gè)確認(rèn)包。所述對(duì)發(fā)送 端的控制策略是通過(guò)滑動(dòng)窗口和數(shù)據(jù)包發(fā)送速率來(lái)控制數(shù)據(jù)包的發(fā)送,其控制數(shù) 據(jù)包發(fā)送速率步驟包括(1)發(fā)送端根據(jù)定期接收到的確認(rèn)包來(lái)測(cè)量數(shù)據(jù)包往返
時(shí)間RTT; (2)發(fā)送端根據(jù)定期接收到的確認(rèn)包來(lái)測(cè)量丟包率;(3)觸發(fā)發(fā)送速率
的更新;(4)對(duì)發(fā)送速率進(jìn)行更新。
上述發(fā)明的技術(shù)方案中,所述接收端發(fā)送的確認(rèn)包包含四個(gè)屬性,當(dāng)前接收 端收到的數(shù)據(jù)包的序號(hào)sh—seq、希望對(duì)方發(fā)送的數(shù)據(jù)包序號(hào)sh—ack、確認(rèn)包后接 收的離散包信息、接收端的接收窗口大小。
上述發(fā)明的技術(shù)方案中,所述發(fā)送端維護(hù)兩個(gè)隊(duì)列一個(gè)列表,即帶發(fā)送數(shù)據(jù) 包隊(duì)列、丟失包隊(duì)列、已發(fā)送待確認(rèn)包列表。
上述發(fā)明的技術(shù)方案中,所述RTT的是通過(guò)比較當(dāng)前接收的包sh—seq的接收 時(shí)間和發(fā)送時(shí)間來(lái)計(jì)算出RTT;對(duì)于重傳過(guò)的包則忽略。
上述發(fā)明的技術(shù)方案中,對(duì)所述發(fā)送速率進(jìn)行更新策略是通過(guò)調(diào)整數(shù)據(jù)包發(fā) 送間隔STP來(lái)調(diào)整發(fā)送速率;
增速策略
(i) 快增速階段從連接建立開(kāi)始進(jìn)入快速啟動(dòng)階段,該階段結(jié)束后,進(jìn)入 平滑階段;在塊啟動(dòng)階段每次發(fā)送速度增加10KB/S; STP更新為
sr尸=(i oo * sr尸)/(i oo + sr尸)
(ii) 慢增速階段系統(tǒng)一旦減速則進(jìn)入慢增速階段,每次增加1KB/S; STP 更新為
ot = (i ooo * sr尸)/(i ooo+s7p)
減速策略
(a)每次需要減速時(shí),速度減低一半,設(shè)置STP = 2 * STP, 一旦減速則設(shè) 置STP增速階段為慢增速階段;(b)限定兩次減速的時(shí)間間隔必須大于RTW2的 時(shí)間。
上述發(fā)明的技術(shù)方案中,所述觸發(fā)發(fā)送速率時(shí)機(jī)選擇通過(guò)(u) RTT變化觸發(fā):
如果RTT變長(zhǎng),貝USTP增倍,否則STP減少l/8; (v)丟包率變化觸發(fā)如果丟包 率增大,貝IJSTP增倍,否則STP減少1/8。
本發(fā)明由于采取以上技術(shù)方案,其具有以下優(yōu)點(diǎn)1、本發(fā)明通過(guò)發(fā)送端控制 策略和接收端控制策略,能夠動(dòng)態(tài)適應(yīng)網(wǎng)絡(luò)帶寬的波動(dòng)。2、本發(fā)明通過(guò)調(diào)整數(shù)據(jù)
包發(fā)送時(shí)間間隔來(lái)調(diào)整數(shù)據(jù)包的發(fā)送速率,不但可以嗅探出網(wǎng)絡(luò)的瓶頸帶寬,更
能充分利用傳輸雙方之間的帶寬以節(jié)約網(wǎng)絡(luò)資源。3、本發(fā)明由于使用以上技術(shù),
實(shí)現(xiàn)了端到端的擁塞控制機(jī)制,從而保證UDP傳輸?shù)目煽啃浴?br>
圖1是網(wǎng)絡(luò)處于擁塞狀態(tài)的示意圖
圖2是擁塞控制的原理流程圖
具體實(shí)施例方式
鑒于前述的技術(shù)背景,本發(fā)明提供了用于在使用UDP傳輸層網(wǎng)絡(luò)中減少擁塞 的控制方法??煽康腢DP數(shù)據(jù)傳輸?shù)谋憩F(xiàn)形式為將待傳輸?shù)牧魇綌?shù)據(jù)切割成多 個(gè)固定大小的數(shù)據(jù)包,并對(duì)數(shù)據(jù)包進(jìn)行連續(xù)編號(hào);其擁塞控制體現(xiàn)在通過(guò)部署類 似TCP的控制算法,來(lái)實(shí)現(xiàn)數(shù)據(jù)包傳輸?shù)目煽啃?,并控制和避免網(wǎng)絡(luò)擁塞。
下面對(duì)本發(fā)明的擁塞控制方法進(jìn)行詳細(xì)的描述。
如圖2所示,本發(fā)明主要包括對(duì)接收端的控制策略和對(duì)發(fā)送端的控制策略, 來(lái)實(shí)現(xiàn)在UDP協(xié)議下的端到端擁塞控制。 接收端的控制策略如下
(1) 每接收到4個(gè)包發(fā)送一個(gè)確認(rèn)包ACK信息。
(2) 如果100毫秒內(nèi)沒(méi)有發(fā)送ACK信息,則發(fā)送一個(gè)ACK信息。
(3) 在ACK包中,定義了以下四個(gè)屬性當(dāng)前收到的包序號(hào);希望對(duì)方發(fā)送 的包編號(hào)(即這個(gè)包序號(hào)前面所有包都已經(jīng)接收完畢);確認(rèn)包后之后接收的離散 包信息,該信息用位圖來(lái)表示;接收端的接收窗口大小。
對(duì)發(fā)送端的控制策略是通過(guò)滑動(dòng)窗口和數(shù)據(jù)包的發(fā)送速率來(lái)控制數(shù)據(jù)包的發(fā) 送?;瑒?dòng)窗口表示接收端的接收能力,即接收端緩沖區(qū)空閑內(nèi)存可接收數(shù)據(jù)包的 數(shù)目大??;數(shù)據(jù)包的發(fā)送速率用來(lái)控制數(shù)據(jù)包的發(fā)送速度,通過(guò)發(fā)送一個(gè)數(shù)據(jù)包 所需要等待的時(shí)間長(zhǎng)度來(lái)控制。發(fā)送端維護(hù)有兩個(gè)隊(duì)列和一個(gè)列表,分別是待發(fā) 送數(shù)據(jù)包隊(duì)列、丟失包隊(duì)列和已發(fā)送待確認(rèn)包列表,其作用是對(duì)數(shù)據(jù)包的狀態(tài)信 息進(jìn)行實(shí)時(shí)更新??刂撇呗圆襟E包括
(1) 發(fā)送端根據(jù)定期接收到的確認(rèn)包來(lái)測(cè)量數(shù)據(jù)包往返時(shí)間RTT;
(2) 發(fā)送端根據(jù)定期接收到的確認(rèn)包來(lái)測(cè)量丟包率;(3) 觸發(fā)發(fā)送速率的更新;
(4) 對(duì)發(fā)送速率進(jìn)行更新。
每一個(gè)ACK包中保護(hù)的兩個(gè)數(shù)字sh—seq和sh—ack,其中sh—seq表示當(dāng)前 接收的包的編號(hào),sh—ack表示之前的包都已經(jīng)接收成功。當(dāng)發(fā)送端接收到一個(gè)ACK 包后,通過(guò)比較包sh—seq的接收時(shí)間和發(fā)送時(shí)間來(lái)計(jì)算出包往返時(shí)間RTT。對(duì)于 重傳過(guò)的包則忽略。
本發(fā)明發(fā)送速率的更新策略是通過(guò)調(diào)整數(shù)據(jù)包發(fā)送間隔STP (用毫秒表示) 來(lái)調(diào)整發(fā)送速率,STP的變化則由RTT和丟包率的變化來(lái)觸發(fā)。發(fā)送速率的更新分 為增速策略、減速策略和觸發(fā)發(fā)送速率更新的時(shí)機(jī)選擇。
(1) 增速策略
a) 快增速階段從連接建立開(kāi)始即進(jìn)入快啟動(dòng)階段,該階段結(jié)束后,則進(jìn)入 平滑階段。在快速增速階段每次發(fā)送速度增加值為10KB/S。
sr尸=(i oo * sr尸)/(i oo + ot)
b) 慢增速階段系統(tǒng)一旦減速則進(jìn)入慢增速階段,每次增加值減少至1KB/S。
= (1000 * /(l 000 +
(2) 減速策略
a) 每次需要減速時(shí),速度減低一半,設(shè)置STP = 2 * STP。 一旦減速則設(shè)置 STP增速階段為慢增速階段。
b) 限定兩次減速的時(shí)間間隔必須大于RTT * 2的時(shí)間。
(3) 觸發(fā)發(fā)送速率更新的時(shí)機(jī)選擇
a) RTT變化觸發(fā)如果RTT變長(zhǎng),則STP增倍,否則STP減少1/8;
b) 丟包率變化觸發(fā)如果丟包率增大,則STP增倍,否則STP減少1/8。
權(quán)利要求
1、一種實(shí)現(xiàn)可靠UDP傳輸?shù)膿砣刂品椒ǎ▽?duì)接收端的控制策略和對(duì)發(fā)送端的控制策略來(lái)實(shí)現(xiàn)在UDP協(xié)議下的端到端擁塞控制;所述對(duì)接收端的控制策略如下接收端每接收到4個(gè)包發(fā)送一個(gè)確認(rèn)包ACK,如100毫秒內(nèi)沒(méi)有發(fā)送確認(rèn)包則發(fā)送一個(gè)確認(rèn)包;所述對(duì)發(fā)送端的控制策略是通過(guò)滑動(dòng)窗口和數(shù)據(jù)包發(fā)送速率來(lái)控制數(shù)據(jù)包的發(fā)送,其控制數(shù)據(jù)包發(fā)送速率步驟包括(1)發(fā)送端根據(jù)定期接收到的確認(rèn)包來(lái)測(cè)量數(shù)據(jù)包往返時(shí)間RTT;(2)發(fā)送端根據(jù)定期接收到的確認(rèn)包來(lái)測(cè)量丟包率;(3)觸發(fā)發(fā)送速率的更新;(4)對(duì)發(fā)送速率進(jìn)行更新。
2、 如權(quán)利要求1所述對(duì)接收端控制策略,其特征在于所述接收端發(fā)送的確 認(rèn)包包含四個(gè)屬性,當(dāng)前接收端收到的數(shù)據(jù)包的序號(hào)sh一seq、希望對(duì)方發(fā)送的數(shù) 據(jù)包序號(hào)sh—ack、確認(rèn)包后接收的離散包信息、接收端的接收窗口大小。
3、 如權(quán)利要求1所述的對(duì)發(fā)送端控制策略,其特征在于所述發(fā)送端維護(hù)兩 個(gè)隊(duì)列一個(gè)列表,即帶發(fā)送數(shù)據(jù)包隊(duì)列、丟失包隊(duì)列、已發(fā)送待確認(rèn)包列表。
4、 如權(quán)利要求2所述的對(duì)發(fā)送端控制策略,其特征在于所述發(fā)送端維護(hù)兩 個(gè)隊(duì)列一個(gè)列表,即帶發(fā)送數(shù)據(jù)包隊(duì)列、丟失包隊(duì)列、已發(fā)送待確認(rèn)包列表。
5、 如權(quán)利要求1或2或3或4所述的對(duì)發(fā)送端控制策略,其特征在于所述 RTT的是通過(guò)比較當(dāng)前接收的包sh—seq的接收時(shí)間和發(fā)送時(shí)間來(lái)計(jì)算出RTT;對(duì) 于重傳過(guò)的包則忽略。
6、 如權(quán)利要求1或2或3或4所述的對(duì)發(fā)送端控制策略,其特征在于對(duì)所 述發(fā)送速率進(jìn)行更新策略是通過(guò)調(diào)整數(shù)據(jù)包發(fā)送間隔STP來(lái)調(diào)整發(fā)送速率;增速策略(i) 快增速階段從連接建立開(kāi)始進(jìn)入快速啟動(dòng)階段,該階段結(jié)束后,進(jìn)入平滑階段;在塊啟動(dòng)階段每次發(fā)送速度增加10KB/S; STP更新為 S7P = (100 * S7P) /(100 + sr尸)(ii) 慢增速階段系統(tǒng)一旦減速則進(jìn)入慢增速階段,每次增加1KB/S; STP 更新為S7P = (1000 * SIP) /(1000 + OT)減速策略 (a) 每次需要減速時(shí),速度減低一半,設(shè)置STP = 2 * STP, 一旦減速則設(shè) 置STP增速階段為慢增速階段;(b) 限定兩次減速的時(shí)間間隔必須大于1 訂*2的時(shí)間。
7、 如權(quán)利要求5所述的對(duì)發(fā)送端控制策略,其特征在于對(duì)所述發(fā)送速率進(jìn) 行更新策略是通過(guò)調(diào)整數(shù)據(jù)包發(fā)送間隔STP來(lái)調(diào)整發(fā)送速率;增速策略(i) 快增速階段從連接建立開(kāi)始進(jìn)入快速啟動(dòng)階段,該階段結(jié)束后,進(jìn)入 平滑階段;在塊啟動(dòng)階段每次發(fā)送速度增加10KB/S; STP更新為<formula>formula see original document page 3</formula>(ii) 慢增速階段系統(tǒng)一旦減速則進(jìn)入慢增速階段,每次增加1KB/S; STP 更新為<formula>formula see original document page 3</formula>減速策略(a) 每次需要減速時(shí),速度減低一半,設(shè)置STP = 2 * STP, 一旦減速則設(shè) 置STP增速階段為慢增速階段;(b) 限定兩次減速的時(shí)間間隔必須大于RH^2的時(shí)間。
8、 如權(quán)利要求1或2或3或4或7所述的對(duì)發(fā)送端控制策略,其特征在于所述觸發(fā)發(fā)送速率時(shí)機(jī)選擇通過(guò)(u) RTT變化觸發(fā):如果RTT變長(zhǎng),則STP增倍,否則STP減少l/8;(v)丟包率變化觸發(fā)如果丟包率增大,則STP增倍,否則STP減少1/8。
9、 如權(quán)利要求5所述的對(duì)發(fā)送端控制策略,其特征在于所述觸發(fā)發(fā)送速率 時(shí)機(jī)選擇通過(guò)(u) RTT變化觸發(fā)如果RTT變長(zhǎng),則STP增倍,否則STP減少l/8;(v)丟包率變化觸發(fā)如果丟包率增大,則STP增倍,否則STP減少1/8。
10、 如權(quán)利要求6所述的對(duì)發(fā)送端控制策略,其特征在于所述觸發(fā)發(fā)送速 率時(shí)機(jī)選擇通過(guò)(u) RTT變化觸發(fā)如果RTT變長(zhǎng),貝ljSTP增倍,否則STP減少1/8;(v)丟包率變化觸發(fā)如果丟包率增大,則STP增倍,否則STP減少1/8。
全文摘要
本發(fā)明涉及一種實(shí)現(xiàn)可靠UDP傳輸?shù)膿砣刂品椒?,是一種端到端的控制機(jī)制,包括對(duì)接收端的控制策略和對(duì)發(fā)送端的控制策略來(lái)實(shí)現(xiàn)在UDP協(xié)議下的端到端擁塞控制;接收端每接收到4個(gè)數(shù)據(jù)包就發(fā)送1個(gè)確認(rèn)包,確認(rèn)包中包含體現(xiàn)網(wǎng)絡(luò)流量狀況的信息;根據(jù)確認(rèn)包中包含的信息,發(fā)送端通過(guò)測(cè)量到的數(shù)據(jù)包往返時(shí)間的變化來(lái)調(diào)整數(shù)據(jù)包發(fā)送時(shí)間間隔,從而調(diào)整數(shù)據(jù)包的發(fā)送速率,使得存在擁塞的網(wǎng)絡(luò)恢復(fù)暢通,并且充分利用傳輸雙方之間的帶寬,以達(dá)到有效節(jié)約資源的目的。
文檔編號(hào)H04L12/56GK101184052SQ20071030412
公開(kāi)日2008年5月21日 申請(qǐng)日期2007年12月25日 優(yōu)先權(quán)日2007年12月25日
發(fā)明者李永華 申請(qǐng)人:北京廣視通達(dá)網(wǎng)絡(luò)技術(shù)有限公司