新聞中心

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

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

作者: 時間:2012-04-05 來源:網(wǎng)絡 收藏

Nagle 算法的描述

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

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

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

在嵌入式系統(tǒng)的環(huán)境中,嵌入式TCP 協(xié)議會面臨著各種情況,比如一兩個開關量的傳輸,或者是傳感器數(shù)據(jù)實時的傳輸,而Nagle 算法能夠自動適應網(wǎng)絡速率和應用層數(shù)據(jù)流量的各種情況,因為它是以確認來觸發(fā)的自計時的協(xié)議。

網(wǎng)絡模擬

NS-2 是一個應用于網(wǎng)絡研究的離散事件模擬器,它充分支持有線與無線網(wǎng)絡上對于TCP、路由和多播協(xié)議的模擬。它自問世以來受到學術界的充分信賴,成為設計和檢驗新的協(xié)議和算法的權威網(wǎng)絡模擬測試平臺。

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

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

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

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

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

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

基于Nagle 的簡化TCP 協(xié)議的響應時間

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

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



評論


相關推薦

技術專區(qū)

關閉