• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

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

      2014-09-25 03:44:36王寶寶余世明王振宇
      中國工程科學(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ā)生的可能性加大。標準transmission control protocol(TCP)協(xié)議中應(yīng)用Nagle算法減少短幀數(shù)量。通過ARM7 32位micro control unit(MCU)和上位機personal computer(PC)構(gòu)建嵌入式Internet網(wǎng)絡(luò),分析Nagle算法的原理和工作機制。針對嵌入式系統(tǒng)中Nagle算法和上位機延遲確認策略交互產(chǎn)生的暫時性“死鎖”問題,提出了在不修改Nagle算法的基礎(chǔ)上,通過提高采樣頻率或者填充緩沖區(qū)的方法來避免暫時性“死鎖”。測試表明,該方案是有效可行的。

      Nagle算法;死鎖;延遲確認策略;ARM7;嵌入式Internet

      1 前言

      隨著計算機網(wǎng)絡(luò)技術(shù)的迅速發(fā)展和嵌入式系統(tǒng)的廣泛應(yīng)用,越來越多的嵌入式設(shè)備需要接入Internet,以實現(xiàn)遠程數(shù)據(jù)采集、遠程監(jiān)控、自動報警等功能[1],因此嵌入式Internet技術(shù)應(yīng)運而生。由于其結(jié)合了嵌入式技術(shù)和Internet技術(shù)的優(yōu)點,具有穩(wěn)定性好、實時性強、數(shù)據(jù)傳輸速率高、成本低廉等特點,因此,近年來已取得了飛速發(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)來實現(xiàn),硬件資源無法與personal computer(PC)相比,所以嵌入式系統(tǒng)中移植的TCP/IP協(xié)議棧一般是經(jīng)過簡化處理的。TCP協(xié)議作為TCP/IP協(xié)議棧中最重要也是最復(fù)雜的協(xié)議,在移植的過程中,一般只是實現(xiàn)其基本的通信機制,如連接的建立與關(guān)閉機制、超時重傳機制、數(shù)據(jù)包確認機制等[4],而忽略了其豐富的擁塞控制算法。

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

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

      本文所設(shè)計的嵌入式系統(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電路、時鐘電路、存儲電路等。網(wǎng)絡(luò)接口由PHY(物理接口收發(fā)器)DM9161AEP、耦合隔離變壓器J00-0065NL組成,負責(zé)物理層數(shù)據(jù)的收發(fā)。其他接口部分包括CAN(控制器局域網(wǎng)絡(luò))接口和232接口,主要完成相關(guān)傳感器數(shù)據(jù)的采集和控制信號的轉(zhuǎn)發(fā)功能。在軟件上,根據(jù)系統(tǒng)要求,從傳輸層到網(wǎng)路層依次裁剪移植了TCP、ICMP(英特網(wǎng)控制報文協(xié)議)、IP、ARP(地址解析協(xié)議)協(xié)議,并在數(shù)據(jù)鏈路層實現(xiàn)了802.3標準。筆者等將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)計和分析均基于該系統(tǒng)所獲得。

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

      3 短幀泛濫及其解決方法

      3.1 短幀問題

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

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

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

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

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

      3.3 Nagle算法

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

      相比于組塊技術(shù),Nagle算法是一種自適應(yīng)算法[6],其本質(zhì)是一種自適應(yīng)的組塊技術(shù),它有兩個觸發(fā)條件:本端應(yīng)用層所組塊的大小和確認到達的時間。這兩個觸發(fā)條件決定了這種自適應(yīng)組塊技術(shù)的延遲時間。通過這兩個觸發(fā)條件,將組塊技術(shù)的固定延遲轉(zhuǎn)變?yōu)閯討B(tài)的延遲,使得帶有Nagle算法的TCP擁有了一個動態(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ù)長度,采用Nagle算法的TCP發(fā)送數(shù)據(jù)長度是一個略大于200 Byte的波動值。波動的產(chǎn)生是由于Nagle算法將數(shù)據(jù)在網(wǎng)絡(luò)中的傳輸時延這個因素考慮進來,至于為何是一個略大于200 Byte的值,將在下面進行詳細介紹。

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

      4.1 延遲確認策略

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

      4.2 兩種交互方式

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

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

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

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

      4.3 暫時性“死鎖”的避免

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

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

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

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

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

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

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

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

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

      5 結(jié)語

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

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

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

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

      [4]吳顯偉.嵌入式協(xié)議棧結(jié)構(gòu)優(yōu)化的研究與實現(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é)報:工學(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單片機TCP通信效率的軟件方法[J].華僑大學(xué)學(xué)報:自然科學(xué)版,2011,32(2):235-237.

      [11]陳 立.對Nagle算法的進一步研究[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

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

      余世明,1962年出生,男,甘肅天水市人,教授,博士,主要研究領(lǐng)域為模型預(yù)測控制與系統(tǒng)辨識、嵌入式系統(tǒng)在自動化裝置的應(yīng)用;E-mail:ysm@zjut.edu.cn

      猜你喜歡
      組塊應(yīng)用層接收端
      基于擾動觀察法的光通信接收端優(yōu)化策略
      橫浪作用下大型上部組塊雙船浮托安裝動力響應(yīng)特性試驗研究
      頂管接收端脫殼及混凝土澆筑關(guān)鍵技術(shù)
      一種設(shè)置在密閉結(jié)構(gòu)中的無線電能傳輸系統(tǒng)
      新能源科技(2021年6期)2021-04-02 22:43:34
      基于多接收線圈的無線電能傳輸系統(tǒng)優(yōu)化研究
      基于分級保護的OA系統(tǒng)應(yīng)用層訪問控制研究
      陸豐7-2油田導(dǎo)管架平臺上部組塊低位浮托安裝關(guān)鍵技術(shù)
      新一代雙向互動電力線通信技術(shù)的應(yīng)用層協(xié)議研究
      物聯(lián)網(wǎng)技術(shù)在信息機房制冷系統(tǒng)中的應(yīng)用
      Current advances in neurotrauma research: diagnosis, neuroprotection, and neurorepair
      泰来县| 文登市| 平顺县| 孟村| 宁海县| 乐业县| 道真| 嘉黎县| 亳州市| 东明县| 南丹县| 抚州市| 饶河县| 河源市| 深泽县| 军事| 会理县| 嘉善县| 且末县| 科尔| 三穗县| 绥江县| 田阳县| 灌云县| 板桥市| 株洲县| 肥乡县| 石门县| 泰宁县| 景德镇市| 鸡泽县| 凤山市| 中牟县| 万宁市| 泸州市| 丰台区| 吐鲁番市| 镇远县| 巧家县| 通海县| 沂水县|