新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于Nagle算法的嵌入式TCP協(xié)議

基于Nagle算法的嵌入式TCP協(xié)議

作者: 時(shí)間:2012-04-05 來(lái)源:網(wǎng)絡(luò) 收藏

Nagle 算法的描述

在一個(gè)連接上已經(jīng)傳輸?shù)臄?shù)據(jù)還沒(méi)有被確認(rèn)的情況下,發(fā)送方的應(yīng)用程序又生成了后續(xù)數(shù)據(jù),并照常將數(shù)據(jù)送到輸出緩沖區(qū)中,但這時(shí)并不發(fā)送后續(xù)報(bào)文段,而是等到有足夠的數(shù)據(jù)填滿(mǎn)一個(gè)達(dá)到最大長(zhǎng)度的報(bào)文段之后再把緩沖區(qū)中的數(shù)據(jù)發(fā)送出去。

如果某個(gè)應(yīng)用程序每次僅產(chǎn)生一個(gè)八位組的數(shù)據(jù), TCP 會(huì)立即發(fā)送最初的那個(gè)八位組,但是在確認(rèn)到達(dá)之前, TCP 會(huì)把后續(xù)數(shù)據(jù)存入緩沖區(qū)中。因此當(dāng)應(yīng)用程序生成數(shù)據(jù)的速率比網(wǎng)絡(luò)的速率快很多時(shí)(如傳送文件) ,后續(xù)的報(bào)文段將包含大量的數(shù)據(jù),而當(dāng)應(yīng)用程序比網(wǎng)絡(luò)速度更慢時(shí)(如用戶(hù)敲鍵盤(pán)) ,就會(huì)發(fā)送較短的報(bào)文段而不必經(jīng)過(guò)長(zhǎng)的延時(shí)。

Nagle 算法在嵌入式環(huán)境的適用性

在嵌入式系統(tǒng)的環(huán)境中,嵌入式TCP 協(xié)議會(huì)面臨著各種情況,比如一兩個(gè)開(kāi)關(guān)量的傳輸,或者是傳感器數(shù)據(jù)實(shí)時(shí)的傳輸,而Nagle 算法能夠自動(dòng)適應(yīng)網(wǎng)絡(luò)速率和應(yīng)用層數(shù)據(jù)流量的各種情況,因?yàn)樗且源_認(rèn)來(lái)觸發(fā)的自計(jì)時(shí)的協(xié)議。

網(wǎng)絡(luò)模擬

NS-2 是一個(gè)應(yīng)用于網(wǎng)絡(luò)研究的離散事件模擬器,它充分支持有線(xiàn)與無(wú)線(xiàn)網(wǎng)絡(luò)上對(duì)于TCP、路由和多播協(xié)議的模擬。它自問(wèn)世以來(lái)受到學(xué)術(shù)界的充分信賴(lài),成為設(shè)計(jì)和檢驗(yàn)新的協(xié)議和算法的權(quán)威網(wǎng)絡(luò)模擬測(cè)試平臺(tái)。

網(wǎng)絡(luò)模擬環(huán)境的構(gòu)建

圖3 是本文構(gòu)建的網(wǎng)絡(luò)模擬環(huán)境:節(jié)點(diǎn)0 使用本文提出的嵌入式TCP 協(xié)議發(fā)送數(shù)據(jù),節(jié)點(diǎn)1 使用用戶(hù)投文協(xié)議(UDP) 組播協(xié)議來(lái)發(fā)送大量的數(shù)據(jù),用于測(cè)試嵌入式TCP 協(xié)議在網(wǎng)絡(luò)阻塞情況下的性能,節(jié)點(diǎn)2 和節(jié)點(diǎn)3 之間是瓶頸路徑,模擬交換機(jī)之間的線(xiàn)路情況。

嵌入式TCP 協(xié)議的性能指標(biāo)有吞吐量(throughp ut) ,即單位時(shí)間內(nèi)TCP 源節(jié)點(diǎn)發(fā)送的字節(jié)數(shù);延時(shí),即源節(jié)點(diǎn)的應(yīng)用層發(fā)出數(shù)據(jù)到目的節(jié)點(diǎn)應(yīng)用層接收到數(shù)據(jù)的時(shí)間量。

基于Nagle 的簡(jiǎn)化TCP 協(xié)議的吞吐率

作為一個(gè)簡(jiǎn)單確認(rèn)的TCP 協(xié)議,因?yàn)榇翱谑冀K是1 ,所以吞吐率( t hroughp ut ) 是恒定的,由于采用Nagle 算法,不再有大量小數(shù)據(jù)包產(chǎn)生,提高了吞吐率,提高的倍數(shù)約等于Internet 數(shù)據(jù)包最大值除以應(yīng)用層產(chǎn)生數(shù)據(jù)包大小。比如應(yīng)用層產(chǎn)生的數(shù)據(jù)包是10 byte ,那么吞吐率就提高了1000/ 10 = 100 倍。

如圖4 所示,接收到的數(shù)據(jù)是隨著時(shí)間線(xiàn)性增長(zhǎng)的,也就是說(shuō)吞吐率是恒定的。最高的曲線(xiàn)是采用Nagle 算法的簡(jiǎn)化TCP 協(xié)議的吞吐率;最低的曲線(xiàn)是未采用Nagle 算法的簡(jiǎn)化TCP 協(xié)議在同樣環(huán)境下的吞吐率;中間曲線(xiàn)為未經(jīng)過(guò)簡(jiǎn)化的標(biāo)準(zhǔn)TCP 協(xié)議,因此可以從圖中看出,采用Nagle 算法明顯優(yōu)于其他兩種情況,并且大大改善了簡(jiǎn)化TCP 的吞吐率。

基于Nagle 的簡(jiǎn)化TCP 協(xié)議的響應(yīng)時(shí)間

再看看延時(shí)的問(wèn)題,Nagle 算法會(huì)立即傳送最初的數(shù)據(jù),然后再以大吞吐量發(fā)送余下的數(shù)據(jù)。這就導(dǎo)致,第一,吞吐率大大增加,使得傳送數(shù)據(jù)更快;第二,產(chǎn)生的數(shù)據(jù)包數(shù)量減少,使得發(fā)生擁塞重傳的機(jī)會(huì)也減少。圖5 和6 中分別是標(biāo)準(zhǔn)TCP 協(xié)議的延時(shí)抖動(dòng)(jit ter) 和采用Nagle 算法的TCP 協(xié)議的延時(shí)抖動(dòng)。

圖6 曲線(xiàn)在開(kāi)始的尖峰說(shuō)明了在數(shù)據(jù)連接的開(kāi)始Nagle 算法會(huì)立即發(fā)送接收到的小數(shù)據(jù)包,而接下來(lái)是將接收的大量的數(shù)據(jù)打成大包發(fā)送。圖6曲線(xiàn)的平滑情況說(shuō)明了延時(shí)抖動(dòng)很小,適合嵌入式系統(tǒng)中實(shí)時(shí)數(shù)據(jù)的傳輸。在同樣的模擬參數(shù)下,標(biāo)準(zhǔn)TCP 協(xié)議發(fā)送了大量的數(shù)據(jù)包(120 個(gè)) ,而采用Nagle 算法的簡(jiǎn)化的TCP 協(xié)議發(fā)送了不到20 個(gè)數(shù)據(jù)包。顯而易見(jiàn),采用Nagle 算法的簡(jiǎn)化TCP 協(xié)議在吞吐率高的同時(shí)還節(jié)省了網(wǎng)絡(luò)的帶寬。



評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉