《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 設計應用 > 一種基于以太網的嵌入式數據傳輸速率優化方法研究
一種基于以太網的嵌入式數據傳輸速率優化方法研究
2015年微型機與應用第4期
陳 實,武 杰
(中國科學技術大學 近代物理系,安徽 合肥 230026)
摘要: 基于以太網的嵌入式數據傳輸系統在許多領域被普遍采用,系統的傳輸效率需要提高?;贏RM Cortex-M4內核和常用的嵌入式網絡協議棧LwIP,針對點對點數據傳輸的特點,采用了零數據拷貝技術并對UDP協議加以優化改進,大大提高了傳輸性能。測試結果表明,數據傳輸的速率從未優化的2.03 MB/s提升到9.80 MB/s,已接近百兆以太網的極限。同時引入ACK回應機制保障了UDP數據傳輸的可靠性。
Abstract:
Key words :

  摘  要: 基于以太網的嵌入式數據傳輸系統在許多領域被普遍采用,系統的傳輸效率需要提高。基于ARM Cortex-M4內核和常用的嵌入式網絡協議棧LwIP,針對點對點數據傳輸的特點,采用了零數據拷貝技術并對UDP協議加以優化改進,大大提高了傳輸性能。測試結果表明,數據傳輸的速率從未優化的2.03 MB/s提升到9.80 MB/s,已接近百兆以太網的極限。同時引入ACK回應機制保障了UDP數據傳輸的可靠性。

  關鍵詞STM32F407;LwIP/UDP;零數據拷貝;ACK

0 引言

  基于以太網的嵌入式數據傳輸系統由于其結構靈活、通用性強、傳輸速度快、傳輸距離遠等特點,在許多應用領域都發揮著重要的作用[1]。但由于嵌入式系統本身的結構[1]以及網絡協議棧的限制[2],網絡數據傳輸的效率不高,遠遠達不到以太網傳輸的理論帶寬。一方面通過改進嵌入式系統的硬件結構,如利用FPGA并行處理的優勢[2],可以大大提高數據傳輸的效率;另一方面,通過分析并改進嵌入式網絡協議棧,也可以提高網絡數據傳輸的速度[3]。

  嵌入式網絡傳輸系統由于成本資源的限制,往往采用簡化的網絡傳輸協議TCP/IP協議。LwIP協議棧是TCP/IP協議的一種簡化版本,專門針對嵌入式系統開發,專注于減少資源消耗,對性能優化卻比較少,效率不是很高[4]。

  本文通過研究、分析常用的嵌入式網絡協議棧LwIP的結構[4],針對簡單的點對點傳輸網絡環境,提出一種簡單、靈活、高效的基于UDP協議的嵌入式數據傳輸效率的優化方法。

1 系統結構和協議棧分析及改進

  系統以嵌入式微處理器STM32F407為核心,使用輕型網絡傳輸協議棧LwIP實現百兆以太網傳輸數據??紤]到嵌入式系統的處理速度和資源限制,為保證高效的數據傳輸,選擇更高效的UDP協議[5]。對于數據傳輸的可靠性,提出基于ACK回應的機制來改善。

  1.1 系統硬件結構

  選擇意法半導體的微處理器STM32F407作為系統的核心。它采用專為要求高性能、低成本、低功耗的嵌入式應用專門設計的ARMCortex-M4內核,時鐘頻率達到168 MHz,具有專門的網絡MAC層接口和專用于網絡的DMA通道,外加PHY芯片和網絡接口,通過網線就可以實現網絡傳輸。

  1.2 LwIP協議棧結構

  LwIP協議棧是基于分層的方式設計的,包括應用層、IP層、傳輸層等,每一層的協議都代表一個獨立的模塊,但是為了最小限度地使用系統資源,模塊間使用松散的通信機制,通過共享內存來實現通信[6]。

  LwIP協議棧設置了一個各層共享的內存空間——網絡數據包緩沖區,數據分組存在一個確定的緩沖區Data buff中,在層與層之間打包與解包的過程中傳遞的只是這個緩沖區的地址payload,只有當數據要被發送至PHY或被應用程序取走時才會通過數據拷貝來實現。LwIP協議棧使用pbuf來管理這個包緩沖區,從而實現在協議棧各層之間數據包的零拷貝。pbuf結構如圖1所示,包括包的信息、標志、地址等,payload指針指向包緩沖區Data buff。

001.jpg

  1.3 系統網絡傳輸過程分析

  整個數據通路如圖2所示。

002.jpg

  下面就LwIP協議棧UDP數據包的發送過程做詳細的分析。應用程序要利用UDP協議發送數據,先要建立UDP會話結構體udp_pcb,綁定本地IP地址與端口。由于udp_pcb結構體本身很小,且在已分配好的內存中,因此這一步執行很快。

  接下來,分配并建立pbuf,然后將待發送數據拷貝至pbuf緩沖區中。這個過程其實是將數據從應用層傳遞至網絡層的過程,這是第一次較大數據量的內存拷貝,占用了很多系統資源,降低了系統的性能。

  至此,發送前基本工作準備完畢,接下來發送網絡數據包。先要在網絡接口netif全局鏈表中查找網絡信息包將被傳輸至哪一個網絡接口。由于本系統是簡單的點對點網絡環境,系統也只有一個默認網絡接口,因此此步驟可以省去。

  然后進入UDP協議傳輸層,生成UDP數據包頭;再轉入IP層,生成IP層包頭。這兩個過程不涉及數據拷貝,待發送網絡數據包一直存儲在pbuf中,UDP包頭和IP包頭通過指針和數據包連接在一起。

  生成IP包以后,需要通過DMA(Direct Memory Access)將IP包發送到鏈路層MAC控制器的FIFO中然后發送出去。這個過程中涉及第二次大的內存拷貝,要把pbuf里的IP包拷貝到DMA控制器的發送緩存中。

  上面分析了嵌入式LwIP協議棧收發網絡數據包的過程,包括數據由應用程序傳至協議棧pbuf緩沖包(API_to_Pbuf)和從pbuf緩沖包轉移到以太網DMA緩沖區(Pbuf_to_DMA)時的兩次大的數據拷貝過程,數據由DMA傳輸至MAC控制器的FIFO(DMA_to_FIFO)中,還有一些內存分配、打包解包及由于考慮協議棧的通用性而導致的多余開銷(Others)。

  測試利用系統內部定時器完成,傳輸1 KB的數據包,上述4個部分開銷的測試結果如表1所示。

  006.jpg

  如圖3所示,最大的開銷就在兩次大的數據拷貝過程,占到整個開銷的73%。有很多關于TCP/IP協議零拷貝的研究[7],但多數對零拷貝的研究都是基于避免用戶空間與系統空間,與本系統存在的問題不太相同。其實,LwIP協議棧通過pbuf緩沖包在各層之間傳遞數據包的地址指針已經實現了協議棧內部的零拷貝技術,但對于協議棧與應用程序之間的數據拷貝并沒有過多考慮。

003.jpg

  1.4 LwIP協議棧改進

  基于以上的分析,對于本系統這樣一個簡單網絡環境,只需實現網絡的點對點通信,同時只傳輸固定格式的數據包,所以可以考慮讓網絡接口DMA控制器的數據緩存與協議棧pbuf緩沖包實現內存共享,達到真正的零數據拷貝。為了實現DMA控制器的數據緩存與協議棧pbuf緩沖包共享內存,將pbuf緩存包分配成PBUF_ROM類型,將pbuf緩存包的payload指針指向DMA數據緩存的地址。DMA控制器的數據緩存由系統分配,是一組連續的固定的內存空間。本系統傳輸固定大小和格式的數據包,并只設置一個DMA緩存,使得數據包被系統接收以后不至于分散在多個DMA緩存中,否則將造成多個DMA緩存地址不連續而無法與緩沖包共享內存。對于數據包頭的問題,由于本系統明確是UDP協議傳輸,且是點對點固定節點的網絡傳輸,可以在網絡傳輸前即將包頭設定完畢并保存下來,當進行網絡傳輸時直接應用這個固定包頭(其中UDP包頭8 B、IP包頭20 B、MAC幀頭14 B)即可。

  同樣通過系統的定時器測試4個部分的開銷,測試結果如表2所示。

007.jpg

  從測試結果來看,經改進的主要開銷是數據由DMA搬運到MAC控制器的FIFO的過程,避免了兩次大的內存拷貝,實現了數據零拷貝,大大提升傳輸效率,傳輸速度可以達到4_Z$6Z4)I9)P1ZNTAIW}$1U.jpg,接近百兆網的極限。

2 基于ACK機制的UDP可靠傳輸

  UDP協議是一種無連接的傳輸層協議,發送端把數據發送出去以后并不關心接收端是否接收到了數據,所以雖然它效率高,但并不可靠。很多文獻都討論過改進UDP協議的可靠性[8],下面提出一種提高UDP協議傳輸可靠性的簡易方法,在占用較少系統資源的前提下,盡量保證系統的傳輸性能和可靠性。

  TFTP是一種基于ACK包回應機制的簡單協議,其基本思想是:發送一個UDP包以后,等收到ACK包回應才發送下一個UDP包;在一定時間內,如果沒有收到ACK包,即重新發送此包。這種方法固然可以改善數據的可靠傳輸,但每發送一個UDP包都多了一個ACK包回應的開銷,降低了傳輸性能。

  基于ACK機制,本文提出兩點改進來改善UDP傳輸的可靠性:一方面,針對點對點的網絡傳輸應用,基于數據零拷貝,改進LwIP/UDP協議棧;另一方面,為了提高ACK機制的效率,發送N個數據包才回應一個ACK包。發送端每次發送N個數據包,并將這N個包緩存起來,在規定時間內,如果未收到ACK回應包即重傳這N個包。雖然UDP協議存在誤碼,但誤碼率不高,因一個UDP包丟失而造成N個包都需重傳所造成的額外開銷并不明顯。具體實現時,需要區分ACK包和DATA包,發送數據前需在UDP包末尾追加ACK標識和NUM序號,DATA包則在UDP數據包末尾追加DATA標識和NUM序號。

004.jpg

  收發兩端的傳輸流程如圖4所示。發送開始以后,發送端每次發送N個數據包,發送完馬上開始超時計時,等待ACK包回應;接收端接收并解析數據包,判斷一次傳輸是否完成(NUM%N為零即代表傳輸了N個包),完成即生成并發送ACK響應包;發送端收到ACK響應包后再發送下一組N個數據包,如果超時,重新發送上一組的N個數據包。

008.jpg

  當每次只傳輸1個數據包時,各部分開銷分布如表3所示,采用改進的LwIP/UDP協議,UDP部分主要開銷還是DMA_to_FIFO及其他打包解包等過程;采用ACK機制,增加了一次ACK包的生成與傳輸(Process_ACK)、兩次ACK包的解析及檢錯重傳所造成的額外開銷(Others)。

005.jpg

  采用每N個包發一次ACK響應包,減少Process_ACK的開銷,提高了傳輸效率。不同單次發送數據包數下的傳輸速率如圖5所示,ACK機制各部分開銷比重如圖6所示。從圖5看出,隨著N的增大傳輸速率逐漸增大,但是當N增加到12以后,速率增加趨于平緩。而從圖6可以看出,N的增加只會減少處理ACK響應時間(Process_ACK包括生成并發送ACK包),其他3個部分耗時不會減少,故存在一個極限的速率。

  這種改進方法比較簡單,考慮到等待重發等因素的影響,實際的傳輸速率還要降低一些。但其效率確實顯著提高,而且通過選擇單次傳輸數據包個數N的大小,可以靈活地調整傳輸效率、改善傳輸的可靠性。

3 結論

  本文詳細分析、測試嵌入式網絡LwIP/UDP協議的數據傳輸過程,針對點對點的簡單網絡傳輸,基于零數據拷貝的思想,改進了LwIP/UDP協議,明顯提升了傳輸的性能,數據傳輸的速率從未優化的2.03 MB/s提升到   9.80 MB/s,已接近百兆以太網的極限。另外,通過引入改進的ACK機制,改善了傳輸的可靠性,實現了一種通用高效靈活的網絡傳輸優化方法。

參考文獻

  [1] 王琳,商周,王學偉.數據采集系統的發展與應用[J].電測與儀表,2004,41(464):4-8.

  [2] 姚雪,楊光,張祥.嵌入式數據傳輸系統速度優化方法[J].微計算機應用,2011,32(3):59-63.

  [3] 段之昱,趙昭旺.嵌入式系統網絡數據傳輸性能研究[J].天文研究與技術,2007,4(3):266-275.

  [4] 孫樂鳴,江來,代鑫.嵌入式TCP/IP協議棧LWIP的內部結構探索與研究[J].電子元器件應用,2008,10(3):79-81.

  [5] 徐鑫,曹奇英.基于LwIP協議棧的UDP協議分析與優化[J].計算機應用與軟件,2011,28(3):246-249.

  [6] ADAM D. Design and implementation of the LwIP TCP/IP stack[M]. Swedish Institute of Computer Science, 2001.

  [7] 王小峰,時向泉,蘇金樹.一種TCP/IP卸載的數據零拷貝傳輸方法[J].計算機工程與科學,2008,30(2):135-138.

  [8] 李國,鞏光志,王冬冬.一種提高UDP可靠性的數據傳輸方法研究[J].中國民航大學學報,2012,30(1):41-45.


此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          国产精品极品美女粉嫩高清在线| 亚洲国产精品va| 欧美日韩国产bt| 一本高清dvd不卡在线观看| 久久免费观看视频| 国产一区二区三区av电影| 久久久精品动漫| 亚久久调教视频| 日韩午夜电影在线观看| 亚洲精品欧美日韩专区| 亚洲三级免费电影| 国产精品热久久久久夜色精品三区| 亚洲高清影视| 欧美刺激性大交免费视频| 欧美jizzhd精品欧美喷水| 久久国产精品色婷婷| 亚洲第一综合天堂另类专| 亚洲欧美国产毛片在线| 亚洲免费电影在线| 国内揄拍国内精品久久| 欧美精品久久一区二区| 亚洲国产精品美女| 欧美成人官网二区| 久久精品国产第一区二区三区最新章节| 日韩亚洲欧美中文三级| 欧美日本精品在线| 欧美亚州韩日在线看免费版国语版| 欧美网站大全在线观看| 99国产精品私拍| 一区二区欧美在线| 欧美日韩国产综合一区二区| 国产欧美一区视频| 亚洲国产欧美一区| 欧美在线综合| 国产欧美精品一区二区色综合| 中文av字幕一区| 国产自产高清不卡| 亚洲午夜精品福利| 欧美精品性视频| 日韩网站在线看片你懂的| 欧美综合第一页| 欧美一区日本一区韩国一区| 久久久国产精品一区| 欧美一级免费视频| 亚洲午夜久久久久久尤物| 亚洲国产午夜| 亚洲愉拍自拍另类高清精品| 一区二区三区日韩欧美| 激情婷婷欧美| 韩国三级电影一区二区| 国产精品扒开腿做爽爽爽视频| 欧美精品网站| 欧美.com| 欧美一区二区三区日韩| 日韩视频一区二区在线观看| 国产精品久久久久久影视| 久久国产黑丝| 国产精品劲爆视频| 亚洲国产黄色片| 香蕉成人伊视频在线观看| 国产精品久久久久久久久搜平片| 欧美视频精品在线观看| 麻豆精品在线观看| 欧美手机在线视频| 香蕉久久一区二区不卡无毒影院| 欧美在线播放高清精品| 亚洲一区二区视频在线| 激情亚洲一区二区三区四区| 亚洲国产91精品在线观看| 欧美特黄一级大片| 欧美丝袜一区二区三区| 欧美激情视频一区二区三区在线播放| 欧美日韩国产一区精品一区| 国产一区高清视频| 久久夜色精品国产欧美乱| 国产精品九九久久久久久久| 亚洲欧洲日本专区| 亚洲自拍16p| 国产一区二区视频在线观看| 日韩一级黄色av| 欧美三区在线视频| 久久久久久久久久久成人| 欧美自拍偷拍午夜视频| 欧美日韩精品国产| 欧美日韩国产一区二区三区| 每日更新成人在线视频| 国产精品婷婷| 麻豆久久久9性大片| 欧美日韩一二区| 亚洲激情另类| 国产亚洲精品综合一区91| 蜜月aⅴ免费一区二区三区| 久久久精品2019中文字幕神马| 欧美不卡视频| 亚洲美洲欧洲综合国产一区| 永久域名在线精品| 欧美午夜视频网站| 国产一区二区三区自拍| 久久久久久久综合狠狠综合| 国产日韩在线一区二区三区| 国产精品一区二区久久久| 欧美一区二区三区啪啪| 蜜臀av性久久久久蜜臀aⅴ四虎| 欧美一区二区在线观看| 久久综合伊人77777尤物| 亚洲精品久久久久久久久久久久| 欧美日韩美女在线| 欧美一区综合| 亚洲夫妻自拍| 亚洲综合清纯丝袜自拍| 久久色在线播放| 久久先锋影音av| 国内揄拍国内精品少妇国语| 午夜在线视频一区二区区别| 一区二区免费在线观看| 欧美日本国产视频| 欧美一级专区免费大片| 狠狠色狠狠色综合日日五| 欧美成人黑人xx视频免费观看| 久久一区激情| 国产一区二区欧美日韩| 在线播放亚洲一区| 久久人人爽人人爽| 欧美国产视频在线观看| 欧美国产专区| 久久免费视频在线| 久久久国产精品一区二区三区| 久久久久久久久久看片| 麻豆精品精品国产自在97香蕉| 欧美一区二区三区在线观看| 国产精品99久久久久久白浆小说| 国产精品一区毛片| 欧美成年视频| 国产综合久久久久影院| 国产伦精品一区二区三区照片91| 欧美亚州韩日在线看免费版国语版| 老司机午夜免费精品视频| 久久婷婷国产综合国色天香| 亚洲视频在线观看免费| a91a精品视频在线观看| 欧美一区免费视频| 国产精品一二三四区| 亚洲国产专区| 免费一区视频| 国产专区综合网| 欧美日韩国产电影| 欧美日韩网站| 久久久水蜜桃| 欧美午夜寂寞影院| 欧美va日韩va| 欧美日产在线观看| 99精品久久| 亚洲一级一区| 亚洲高清三级视频| 亚洲国产精品久久91精品| 欧美日韩免费区域视频在线观看| 亚洲永久字幕| 亚洲国产精品成人综合色在线婷婷| 欧美一级专区| 久久国产精品99国产精| 国产一区激情| 国产精品入口66mio| 一区二区三区四区精品| 久久午夜电影网| 欧美有码在线视频| 91久久久国产精品| 欧美日韩不卡在线| 久久精品成人一区二区三区| 欧美日韩第一区日日骚| 欧美色综合天天久久综合精品| 日韩一二三在线视频播| 国产欧美日韩视频一区二区| 欧美韩日一区| 亚洲另类一区二区| 国产亚洲精品一区二555| 宅男噜噜噜66国产日韩在线观看| 99www免费人成精品| 久久综合伊人77777麻豆| 久久国产一区二区| 欧美伊人久久久久久久久影院| 欧美1区视频| 亚洲一区国产一区| 在线亚洲免费视频| 亚洲一区二区三区色| 亚洲美女一区| 久久久久国色av免费看影院| 美日韩精品免费| 在线亚洲免费| 亚洲男同1069视频| 国内精品久久久久久久97牛牛| 在线观看视频免费一区二区三区| 韩国av一区二区三区在线观看| 欧美激情第1页| 久久久精品国产免大香伊| 亚洲区免费影片| 欧美精品精品一区| 欧美日韩少妇| 激情六月婷婷综合| 激情亚洲一区二区三区四区| 亚洲欧美在线视频观看| 亚洲国产精彩中文乱码av在线播放| 国内免费精品永久在线视频| 99伊人成综合| 夜夜嗨av一区二区三区网站四季av| 欧美日韩高清免费| 欧美国产第二页| 国产精品久久久一区二区| 黄色亚洲免费| 禁断一区二区三区在线| 亚洲色图综合久久| 久久精彩免费视频| 日韩视频在线一区二区三区| 欧美人牲a欧美精品| 日韩视频亚洲视频| 99re热这里只有精品免费视频| 欧美在线3区| 欧美精品一区在线| 亚洲每日在线| 在线免费观看日本一区| 午夜亚洲视频| 99热精品在线| 国产精品国内视频| 一本色道久久综合狠狠躁篇怎么玩| 韩国一区二区三区在线观看| 免费永久网站黄欧美| 亚洲黄色成人久久久| 亚洲人成毛片在线播放女女| 欧美综合激情网| 国产一区二区三区成人欧美日韩在线观看| 日韩视频免费在线观看| 精品电影在线观看| 亚洲国产精品成人精品| 在线看不卡av| 国产精品性做久久久久久| 1769国产精品| 国产一区二区成人久久免费影院| 久久中文欧美| 欧美成人国产va精品日本一级| 欧美婷婷六月丁香综合色| 亚洲午夜精品福利| 久久久久久一区二区| 亚洲高清资源综合久久精品| 午夜精品视频| 亚洲综合日韩| 免费一级欧美片在线播放| 亚洲无毛电影| 欧美成人一区二区三区片免费| 欧美日本一区二区高清播放视频| 狠狠干狠狠久久| 国产欧美一区二区色老头| 欧美日韩亚洲一区二| 在线看片成人| 国产精品第一页第二页第三页| 亚洲免费在线观看视频| 亚洲欧洲在线一区| 亚洲伦伦在线| 久久久精彩视频| 狼人社综合社区| 国产精品视频xxxx| 在线欧美不卡| 国产精品亚洲综合久久| 亚洲国产精品久久久久秋霞蜜臀| 老司机凹凸av亚洲导航| 9人人澡人人爽人人精品| 亚洲在线观看视频网站| 激情五月***国产精品| 久久人人爽人人| 一本色道久久加勒比88综合| 欧美在线免费视频| 亚洲日本精品国产第一区| 亚洲午夜电影| 久久精品盗摄| 久久久久成人网| 久久视频一区| 欧美在线视频导航| 亚洲国产精品久久精品怡红院| 欧美理论大片| 韩国久久久久| 久久久久久一区| 国内精品模特av私拍在线观看| 久久av在线看| 欧美激情一区二区久久久| 欧美一级视频免费在线观看| 久久蜜桃资源一区二区老牛| 韩国精品久久久999| 亚洲男女毛片无遮挡| 久久福利影视| 欧美一二三视频| 欧美大片在线观看一区| 久久这里有精品视频| 在线观看欧美视频| 黑人巨大精品欧美黑白配亚洲| 国产精品永久免费| 欧美有码在线观看视频| 亚洲影院在线观看| 国产一区二区三区精品久久久| 亚洲欧美另类在线观看| 国产精品视频一二三| 国产日韩欧美| 国产精品电影在线观看| 国产精品色午夜在线观看| 欧美大香线蕉线伊人久久国产精品| 亚洲午夜久久久久久久久电影网| 亚洲综合电影| 亚洲男同1069视频| 99精品国产99久久久久久福利| 国产精品久久久久久久免费软件| 亚洲午夜未删减在线观看| 在线一区二区三区四区五区| 美女久久网站| 正在播放亚洲| 欧美激情一区二区三区高清视频| 欧美激情亚洲国产| 国产视频在线观看一区二区三区| 欧美精品一区二区三区在线看午夜| 亚洲国产成人91精品| 免费久久99精品国产自| 亚洲视屏在线播放| 欧美aaaaaaaa牛牛影院| 在线免费高清一区二区三区| 亚洲欧美日韩第一区| 亚洲区一区二区三区| 快射av在线播放一区| 国产日韩一区在线| 欧美日韩在线精品一区二区三区| 在线播放国产一区中文字幕剧情欧美| 亚洲精品国精品久久99热| 国产精品日韩在线观看|