国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

嵌入式Internet中Nagle算法及其應(yīng)用研究

2014-09-25 03:44:36王寶寶余世明王振宇
中國(guó)工程科學(xué) 2014年2期
關(guān)鍵詞:組塊應(yīng)用層接收端

王寶寶,余世明,王振宇

(浙江工業(yè)大學(xué)信息工程學(xué)院,杭州 310023)

嵌入式Internet中Nagle算法及其應(yīng)用研究

王寶寶,余世明,王振宇

(浙江工業(yè)大學(xué)信息工程學(xué)院,杭州 310023)

嵌入式Internet中使用短幀數(shù)據(jù)包,使得網(wǎng)絡(luò)帶寬的利用率極低,擁塞發(fā)生的可能性加大。標(biāo)準(zhǔn)transmission control protocol(TCP)協(xié)議中應(yīng)用Nagle算法減少短幀數(shù)量。通過ARM7 32位micro control unit(MCU)和上位機(jī)personal computer(PC)構(gòu)建嵌入式Internet網(wǎng)絡(luò),分析Nagle算法的原理和工作機(jī)制。針對(duì)嵌入式系統(tǒng)中Nagle算法和上位機(jī)延遲確認(rèn)策略交互產(chǎn)生的暫時(shí)性“死鎖”問題,提出了在不修改Nagle算法的基礎(chǔ)上,通過提高采樣頻率或者填充緩沖區(qū)的方法來避免暫時(shí)性“死鎖”。測(cè)試表明,該方案是有效可行的。

Nagle算法;死鎖;延遲確認(rèn)策略;ARM7;嵌入式Internet

1 前言

隨著計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的迅速發(fā)展和嵌入式系統(tǒng)的廣泛應(yīng)用,越來越多的嵌入式設(shè)備需要接入Internet,以實(shí)現(xiàn)遠(yuǎn)程數(shù)據(jù)采集、遠(yuǎn)程監(jiān)控、自動(dòng)報(bào)警等功能[1],因此嵌入式Internet技術(shù)應(yīng)運(yùn)而生。由于其結(jié)合了嵌入式技術(shù)和Internet技術(shù)的優(yōu)點(diǎn),具有穩(wěn)定性好、實(shí)時(shí)性強(qiáng)、數(shù)據(jù)傳輸速率高、成本低廉等特點(diǎn),因此,近年來已取得了飛速發(fā)展和廣泛的應(yīng)用[2]。

嵌入式Internet技術(shù)的關(guān)鍵是在嵌入式系統(tǒng)中移植transmission control protocol(TCP)/IP協(xié)議棧[3]。嵌入式系統(tǒng)一般是基于8位、16位或者32位micro control unit(MCU)來實(shí)現(xiàn),硬件資源無法與personal computer(PC)相比,所以嵌入式系統(tǒng)中移植的TCP/IP協(xié)議棧一般是經(jīng)過簡(jiǎn)化處理的。TCP協(xié)議作為TCP/IP協(xié)議棧中最重要也是最復(fù)雜的協(xié)議,在移植的過程中,一般只是實(shí)現(xiàn)其基本的通信機(jī)制,如連接的建立與關(guān)閉機(jī)制、超時(shí)重傳機(jī)制、數(shù)據(jù)包確認(rèn)機(jī)制等[4],而忽略了其豐富的擁塞控制算法。

本文基于ARM7 32位MCU構(gòu)建嵌入式Internet。在通信測(cè)試中筆者等發(fā)現(xiàn)網(wǎng)絡(luò)中存在大量的短幀數(shù)據(jù)包,導(dǎo)致帶寬資源的嚴(yán)重浪費(fèi),甚至引起網(wǎng)絡(luò)擁塞。針對(duì)短幀泛濫問題,在嵌入式TCP協(xié)議中實(shí)現(xiàn)Nagle算法。針對(duì)Nagle算法和延遲確認(rèn)策略交互時(shí)產(chǎn)生的暫時(shí)性“死鎖”問題,通過提高采樣頻率或者填充緩沖區(qū)的方式避免暫時(shí)性“死鎖”的產(chǎn)生,在提高帶寬利用率的同時(shí)確保了數(shù)據(jù)的實(shí)時(shí)傳輸。

2 嵌入式Internet技術(shù)的實(shí)現(xiàn)

本文所設(shè)計(jì)的嵌入式系統(tǒng)硬件結(jié)構(gòu)如圖1所示。按功能主要分為4部分:微控制器MCU、相關(guān)外圍電路、網(wǎng)絡(luò)接口和其他接口。微控制器采用NXP(恩智浦半導(dǎo)體)公司生產(chǎn)的ARM7 32位MCU LPC2368。相關(guān)外圍電路包括電源電路、復(fù)位電路、JTAG電路、時(shí)鐘電路、存儲(chǔ)電路等。網(wǎng)絡(luò)接口由PHY(物理接口收發(fā)器)DM9161AEP、耦合隔離變壓器J00-0065NL組成,負(fù)責(zé)物理層數(shù)據(jù)的收發(fā)。其他接口部分包括CAN(控制器局域網(wǎng)絡(luò))接口和232接口,主要完成相關(guān)傳感器數(shù)據(jù)的采集和控制信號(hào)的轉(zhuǎn)發(fā)功能。在軟件上,根據(jù)系統(tǒng)要求,從傳輸層到網(wǎng)路層依次裁剪移植了TCP、ICMP(英特網(wǎng)控制報(bào)文協(xié)議)、IP、ARP(地址解析協(xié)議)協(xié)議,并在數(shù)據(jù)鏈路層實(shí)現(xiàn)了802.3標(biāo)準(zhǔn)。筆者等將PC定義為設(shè)備A,IP地址設(shè)置為10.1.60.2,將嵌入式設(shè)備定義為設(shè)備B,IP地址設(shè)置為10.1.60.168,構(gòu)建嵌入式Internet系統(tǒng)。本文所涉及的數(shù)據(jù)統(tǒng)計(jì)和分析均基于該系統(tǒng)所獲得。

圖1 系統(tǒng)硬件結(jié)構(gòu)Fig.1 Architecture of system’s hardware

3 短幀泛濫及其解決方法

3.1 短幀問題

當(dāng)TCP需要傳輸一個(gè)字節(jié)的數(shù)據(jù)時(shí),在網(wǎng)絡(luò)層就會(huì)產(chǎn)生41 Byte的分組,此時(shí)額外開銷達(dá)到4 000%[5],導(dǎo)致網(wǎng)絡(luò)的利用率極低??紤]到數(shù)據(jù)鏈路層和物理層的額外開銷之后,這種情況下帶寬的利用率更低[6]。嵌入式Internet中存在著大量的長(zhǎng)度為1~4字節(jié)的數(shù)據(jù)幀,一方面這些短幀的存在使得網(wǎng)絡(luò)帶寬的利用率極低;另一方面,由于大量的短幀數(shù)據(jù)包的存在,使網(wǎng)絡(luò)發(fā)生擁塞的可能性增加,容易引起數(shù)據(jù)傳輸時(shí)延不確定甚至網(wǎng)絡(luò)崩潰。

3.2 組塊技術(shù)(clumping)

20世紀(jì)60年代后期,短幀泛濫問題在Tymnet網(wǎng)絡(luò)中第一次被提出,當(dāng)時(shí)采取的方法是在TCP發(fā)送端對(duì)短數(shù)據(jù)報(bào)延遲一段時(shí)間(200~500 ms)再傳輸,以期在延遲過程中有若干數(shù)據(jù)到來并附加在同一數(shù)據(jù)報(bào)中發(fā)送出去,最終達(dá)到減少網(wǎng)絡(luò)中短幀的目的[5]。這就是組塊技術(shù)。針對(duì)組塊技術(shù),筆者等進(jìn)行了如下測(cè)試:下位機(jī)(設(shè)備B)連續(xù)向上位機(jī)(設(shè)備A)發(fā)送10 000 Byte數(shù)據(jù),TCP發(fā)送端分別延遲200 ms和500 ms。其中下位機(jī)應(yīng)用層產(chǎn)生數(shù)據(jù)的速率為1 Byte/ms。表1為通過Wireshark抓包分析工具獲取的數(shù)據(jù)包統(tǒng)計(jì)。

表1 不同延時(shí)下數(shù)據(jù)包統(tǒng)計(jì)Table 1 Packets statistics under different delay time

當(dāng)下位機(jī)(設(shè)備B)應(yīng)用層以恒定的速率產(chǎn)生數(shù)據(jù)時(shí),如表1所示,延遲500 ms產(chǎn)生的數(shù)據(jù)包數(shù)目比延遲200 ms少很多,字節(jié)總量也有相應(yīng)的降低。其根本原因在于組塊技術(shù)可以減少報(bào)頭開銷,減少TCP發(fā)送數(shù)據(jù)報(bào)數(shù)量和相應(yīng)的應(yīng)答數(shù)據(jù)報(bào)數(shù)量。但是通常情況下,應(yīng)用層產(chǎn)生數(shù)據(jù)的速率是不固定的,或者說應(yīng)用層相鄰兩個(gè)數(shù)據(jù)之間的時(shí)延是不確定的。所以組塊技術(shù)最大的缺陷在于不能給出一個(gè)通用的延遲時(shí)間[5,7],一個(gè)固定的時(shí)延不可能適用于所有情況。

3.3 Nagle算法

1984年,John Nagle提出Nagle算法。該算法應(yīng)用在TCP發(fā)送端,其作用是決定TCP發(fā)送端何時(shí)通過TCP連接發(fā)送一個(gè)數(shù)據(jù)報(bào)[7]。算法描述為:如果發(fā)送端有很小的數(shù)據(jù)報(bào)需要發(fā)送,那么只要先前傳送的數(shù)據(jù)報(bào)都已經(jīng)被TCP接收端確認(rèn)或者說發(fā)送端不存在未被確認(rèn)的數(shù)據(jù)報(bào),這時(shí)發(fā)送端就可以發(fā)送數(shù)據(jù)。前提是這個(gè)很小的數(shù)據(jù)報(bào)的長(zhǎng)度小于TCP發(fā)送端的最大報(bào)文段長(zhǎng)度(MSS)。其具體的工作流程如圖2所示。

相比于組塊技術(shù),Nagle算法是一種自適應(yīng)算法[6],其本質(zhì)是一種自適應(yīng)的組塊技術(shù),它有兩個(gè)觸發(fā)條件:本端應(yīng)用層所組塊的大小和確認(rèn)到達(dá)的時(shí)間。這兩個(gè)觸發(fā)條件決定了這種自適應(yīng)組塊技術(shù)的延遲時(shí)間。通過這兩個(gè)觸發(fā)條件,將組塊技術(shù)的固定延遲轉(zhuǎn)變?yōu)閯?dòng)態(tài)的延遲,使得帶有Nagle算法的TCP擁有了一個(gè)動(dòng)態(tài)的發(fā)送緩沖區(qū),因此其具有很好的通用性。表2為嵌入Nagle算法的TCP抓包分析,這里應(yīng)用層產(chǎn)生數(shù)據(jù)的速率為1 Byte/ms。

圖2 Nagle算法流程Fig.2 Procedure of the Nagle algorithm

表2 Nagle處理抓包分析Table 2 Analysis of capture of nagle

相比于組塊技術(shù)的固定數(shù)據(jù)長(zhǎng)度,采用Nagle算法的TCP發(fā)送數(shù)據(jù)長(zhǎng)度是一個(gè)略大于200 Byte的波動(dòng)值。波動(dòng)的產(chǎn)生是由于Nagle算法將數(shù)據(jù)在網(wǎng)絡(luò)中的傳輸時(shí)延這個(gè)因素考慮進(jìn)來,至于為何是一個(gè)略大于200 Byte的值,將在下面進(jìn)行詳細(xì)介紹。

4 Nagle算法和延遲確認(rèn)(delayed ACK)策略的交互

4.1 延遲確認(rèn)策略

在標(biāo)準(zhǔn)TCP中還包括另外一種用來減少網(wǎng)絡(luò)中短幀數(shù)量的算法:延遲確認(rèn)策略。該算法應(yīng)用在TCP接收端,它使得TCP接收端在接收到數(shù)據(jù)后并不立即產(chǎn)生確認(rèn)包,而是延遲一段時(shí)間(典型值為200 ms)再進(jìn)行確認(rèn)。如果在這段延遲時(shí)間內(nèi)有新的報(bào)文段到來,TCP接收端立即發(fā)送確認(rèn)包[8]。延遲確認(rèn)策略可以有效減少過多的短幀確認(rèn)包的產(chǎn)生。

4.2 兩種交互方式

不同于組塊技術(shù),Nagle算法是基于確認(rèn)的到達(dá)來決定是否發(fā)送報(bào)文[6],所以TCP發(fā)送端的Nagle算法很容易觸發(fā)TCP接收端的延遲確認(rèn)策略。圖3為Nagle算法和延遲確認(rèn)策略的兩種交互方式。

圖3 Nagle-delayed ACK交互方式Fig.3 Interactive mode between Nagle-delayed ACK

在Mode 1中,發(fā)送端發(fā)送data1給接收端,同時(shí)對(duì)后續(xù)產(chǎn)生的數(shù)據(jù)進(jìn)行組塊;接收到數(shù)據(jù)后,接收端設(shè)定一個(gè)200~500 ms的定時(shí)器。定時(shí)器超時(shí)后,接收端發(fā)送確認(rèn)包,發(fā)送端在收到data1的確認(rèn)之后發(fā)送data 2。這樣,Mode 1在每一次數(shù)據(jù)交互過程中都會(huì)產(chǎn)生至少200 ms的時(shí)延,也被稱為暫時(shí)性“死鎖”(“deadlock”)[9]。暫時(shí)性“死鎖”的存在,使得表2中的數(shù)據(jù)長(zhǎng)度為一個(gè)略大于200 Byte的值。它給系統(tǒng)帶來兩大危害:a.產(chǎn)生頻繁的定時(shí)器超時(shí)事件,而處理定時(shí)器超時(shí)事件在操作系統(tǒng)中是一個(gè)很耗資源的行為[8];b.帶來明顯的延遲,影響實(shí)時(shí)性要求比較高的系統(tǒng)的正常運(yùn)行[10,11]。

Mode 2與Mode 1的區(qū)別在于發(fā)送端發(fā)送data1之后,在接收端定時(shí)器超時(shí)之前,發(fā)送端生成了一個(gè)達(dá)到MSS的報(bào)文data 2并立即發(fā)送,接收端在連續(xù)收到兩條未確認(rèn)的報(bào)文之后立即發(fā)送確認(rèn)包,同時(shí)刪除定時(shí)器。Mode 2避免了暫時(shí)性“死鎖”。

4.3 暫時(shí)性“死鎖”的避免

針對(duì)暫時(shí)性“死鎖”問題,一些網(wǎng)絡(luò)實(shí)施者采取禁用Nagle算法的做法,但是也只是某一類應(yīng)用中,更多的是對(duì)Nagle算法進(jìn)行改進(jìn)。文獻(xiàn)[8~11]分別介紹了幾種Nagle算法的改進(jìn)算法,但都是基于協(xié)議的修改,在資源有限的嵌入式系統(tǒng)中實(shí)現(xiàn)起來并不容易。

在這里,可以根據(jù)嵌入式系統(tǒng)中的數(shù)據(jù)信號(hào)類型,采取不同的處理方式,避免暫時(shí)性“死鎖”。

針對(duì)隨機(jī)信號(hào),可以采用填充緩沖區(qū)的方式。具體實(shí)施如下:針對(duì)應(yīng)用層發(fā)送緩沖區(qū)中的數(shù)據(jù),如果是隨機(jī)信號(hào),則在該數(shù)據(jù)信號(hào)尾部添加無用的數(shù)據(jù)段,直至總的報(bào)文長(zhǎng)度達(dá)到最大報(bào)文段長(zhǎng)度,然后將填充后的數(shù)據(jù)交Nagle處理。前提是該隨機(jī)信號(hào)不能容忍200 ms的時(shí)延。

筆者等模擬測(cè)試了該方案,設(shè)定應(yīng)用層產(chǎn)生數(shù)據(jù)的速率為1 Byte/ms,MSS值為1 460 Byte。測(cè)試結(jié)果如表3所示。序號(hào)為3的包為隨機(jī)信號(hào),數(shù)據(jù)長(zhǎng)度為2 Byte。在該數(shù)據(jù)尾部填充1 458 Byte的0xFF,然后將填充后的數(shù)據(jù)交由Nagle處理。由于此時(shí)數(shù)據(jù)長(zhǎng)度達(dá)到MSS值,Nagle算法立即啟動(dòng)數(shù)據(jù)發(fā)送。在表3中可以看到,3號(hào)包從產(chǎn)生到發(fā)送只用了4.096 ms的時(shí)間,遠(yuǎn)遠(yuǎn)低于其他包的200 ms以上的延遲時(shí)間。

表3 填充緩沖區(qū)抓包分析Table 3 Analysis of capture of buffer filling

針對(duì)周期性信號(hào),可以采用提高采樣頻率的方式。具體實(shí)施如下:針對(duì)需要周期性進(jìn)行采樣的數(shù)據(jù),提高其采樣頻率,以期在200 ms時(shí)間內(nèi)采樣的總的數(shù)據(jù)長(zhǎng)度達(dá)到或者超過MSS值。前提是這個(gè)周期信號(hào)不能容忍200 ms的時(shí)延。

表4為模擬測(cè)試結(jié)果,此時(shí)將應(yīng)用層產(chǎn)生數(shù)據(jù)的速率提高到10 Byte/ms,MSS值設(shè)定為1 460 Byte。由于應(yīng)用層每隔146 ms產(chǎn)生一個(gè)長(zhǎng)度為1 460 Byte的報(bào)文段,這樣在200 ms時(shí)間內(nèi)就會(huì)兩次觸發(fā)Nagle算法的發(fā)送條件。一次是由于報(bào)文段數(shù)據(jù)長(zhǎng)度達(dá)到MSS值,另一次是由于接收到發(fā)送端發(fā)來的確認(rèn),立即發(fā)送數(shù)據(jù)。從表4中可以看出,數(shù)據(jù)包數(shù)據(jù)長(zhǎng)度和時(shí)間間隔基本吻合,沒有產(chǎn)生額外的延遲。

通過上述兩種處理方式,可以很好地避免Mode 1的交互方式,即避免暫時(shí)性“死鎖”的產(chǎn)生,使得數(shù)據(jù)按照Mode 2的方式進(jìn)行交互。

表4 提高采樣頻率抓包分析Table 4 Analysis of capture of sampling frequency improving

5 結(jié)語

本文針對(duì)嵌入式Internet中產(chǎn)生的大量小數(shù)據(jù)包所導(dǎo)致的網(wǎng)絡(luò)帶寬利用率低,容易產(chǎn)生擁塞等問題,在深入研究組塊技術(shù)的基礎(chǔ)上,詳細(xì)分析了Nagle算法的工作機(jī)制以及其與延遲確認(rèn)策略的交互方式。針對(duì)“死鎖”問題,在嵌入式系統(tǒng)中可以采用提高采樣頻率或者填充緩沖區(qū)的方式,在不修改Nagle算法的基礎(chǔ)上,避免暫時(shí)性“死鎖”的產(chǎn)生,提高帶寬利用率的同時(shí)保證數(shù)據(jù)傳輸?shù)膶?shí)時(shí)性。目前,基于Nagle算法和填充緩沖區(qū)、提高采樣頻率數(shù)據(jù)處理方式的嵌入式Internet系統(tǒng)已在計(jì)量泵遠(yuǎn)程監(jiān)控系統(tǒng)中取得了很好的應(yīng)用。

[1]陳蓉芳,王海濱,胡振華,等.基于嵌入式Internet技術(shù)的電網(wǎng)遠(yuǎn)程監(jiān)測(cè)系統(tǒng)[J].微計(jì)算機(jī)信息,2003,24(7-2):78-80.

[2]周志洪.基于嵌入式網(wǎng)絡(luò)技術(shù)的網(wǎng)絡(luò)化自動(dòng)抄表系統(tǒng)的研究[D].杭州:浙江大學(xué),2005.

[3]鐘建國(guó).嵌入式Internet系統(tǒng)中TCP/IP協(xié)議的實(shí)現(xiàn)[J].陜西師范大學(xué)學(xué)報(bào):自然科學(xué)版,2008,36(4):16-19.

[4]吳顯偉.嵌入式協(xié)議棧結(jié)構(gòu)優(yōu)化的研究與實(shí)現(xiàn)[D].哈爾濱:哈爾濱理工大學(xué),2009.

[5]IETF RFC896-Jan.Congestion control in IP/TCP internetworks[S].1984.

[6]Minshall G,Saito Y,Mogu J C,et al.Application performance pitfalls and TCP’s Nagle algorithm[J].ACM Performance Evalvation Review,2000,27(4):36-44.

[7]周志洪,王 勇,陳抗生.基于Nagle算法的嵌入式TCP協(xié)議[J].浙江大學(xué)學(xué)報(bào):工學(xué)版,2006,40(1):41-44.

[8]IETF RFC813-July.Window and acknowledgement strategy in TCP[S].1982.

[9]Mogul J C,Minshall G.Rethinking the TCP Nagle algorithm[J].Computer Communication Review(ACM SIGCOMM),2001,31(1):6-20.

[10]梅小華.提高51單片機(jī)TCP通信效率的軟件方法[J].華僑大學(xué)學(xué)報(bào):自然科學(xué)版,2011,32(2):235-237.

[11]陳 立.對(duì)Nagle算法的進(jìn)一步研究[D].上海:復(fù)旦大學(xué),2002.

Nagle algorithm and its application research in embedded Internet

Wang Baobao,Yu Shiming,Wang Zhenyu
(College of Information Engineering,Zhejiang University of Technology,Hangzhou 310023,China)

The existence of small packets in embedded Internet lead to low bandwidth efficiency and even congestion.The Nagle algorithm was applied by standard transmission control protoco(lTCP)protocol to reduce the number of small packets.The paper builds embedded Internet network based on ARM7 32 bits micro control uni(tMCU)and personal computer(PC),analyses the principle and working mechanism of Nagle,and suggests an approach to resolve the temporary“deadlock”created by the interaction between the Nagle algorithm and the delayed ACK policy without modifying the Nagle algorithm through improving sampling frequency or filling the buffer in embedded system.The experimental results indicate that this approach is effective and reliable.

Nagle algorithm;deadlock;delayed ACK policy;ARM7;embedded Internet

TP393

A

1009-1742(2014)02-0101-05

2012-11-06

浙江省重大科技專項(xiàng)(2011C11089)

余世明,1962年出生,男,甘肅天水市人,教授,博士,主要研究領(lǐng)域?yàn)槟P皖A(yù)測(cè)控制與系統(tǒng)辨識(shí)、嵌入式系統(tǒng)在自動(dòng)化裝置的應(yīng)用;E-mail:ysm@zjut.edu.cn

猜你喜歡
組塊應(yīng)用層接收端
基于擾動(dòng)觀察法的光通信接收端優(yōu)化策略
橫浪作用下大型上部組塊雙船浮托安裝動(dòng)力響應(yīng)特性試驗(yàn)研究
頂管接收端脫殼及混凝土澆筑關(guān)鍵技術(shù)
一種設(shè)置在密閉結(jié)構(gòu)中的無線電能傳輸系統(tǒng)
新能源科技(2021年6期)2021-04-02 22:43:34
基于多接收線圈的無線電能傳輸系統(tǒng)優(yōu)化研究
基于分級(jí)保護(hù)的OA系統(tǒng)應(yīng)用層訪問控制研究
陸豐7-2油田導(dǎo)管架平臺(tái)上部組塊低位浮托安裝關(guān)鍵技術(shù)
新一代雙向互動(dòng)電力線通信技術(shù)的應(yīng)用層協(xié)議研究
物聯(lián)網(wǎng)技術(shù)在信息機(jī)房制冷系統(tǒng)中的應(yīng)用
Current advances in neurotrauma research: diagnosis, neuroprotection, and neurorepair
湾仔区| 合阳县| 东丰县| 灵山县| 那曲县| 安化县| 开封市| 肥乡县| 大姚县| 五河县| 柳林县| 广德县| 安顺市| 舒兰市| 灵宝市| 左贡县| 南和县| 泗阳县| 临桂县| 读书| 林州市| 隆回县| 西平县| 天长市| 西盟| 金沙县| 宁德市| 德惠市| 越西县| 云霄县| 大同市| 永昌县| 侯马市| 武定县| 抚远县| 易门县| 新巴尔虎右旗| 炉霍县| 广宁县| 剑河县| 梅州市|