999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

輕量級TCP/IP協議棧機制分析與優(yōu)化

2015-01-06 08:21:57袁中書
計算機工程 2015年2期
關鍵詞:嵌入式優(yōu)化

袁中書,陸 陽

(合肥工業(yè)大學計算機與信息學院,合肥230009)

輕量級TCP/IP協議棧機制分析與優(yōu)化

袁中書,陸 陽

(合肥工業(yè)大學計算機與信息學院,合肥230009)

輕量級TCP/IP協議棧(LwIP)主要應用于資源受限的嵌入式設備。為滿足嵌入式設備對實時性的要求,分析LwIP的內部機制,對其進行性能瓶頸分析,并根據分析結果設計、實施LwIP的實時性和優(yōu)先級管理優(yōu)化方案。LwIP的主要性能瓶頸是內存拷貝和校驗過程,據此給出優(yōu)化后的內存拷貝算法和校驗算法。為滿足緊急數據對更高優(yōu)先級的要求,給出LwIP協議棧優(yōu)先級管理機制,能夠確保高優(yōu)先級標記的緊急數據包優(yōu)先傳輸于普通數據包。實驗結果表明,該優(yōu)化方法可以顯著提高LwIP的實時性能。

輕量級TCP/IP協議棧;嵌入式;實時性;優(yōu)化;優(yōu)先級;等待隊列

1 概述

隨著嵌入式系統(tǒng)在工業(yè)控制領域的廣泛應用和發(fā)展,以及控制系統(tǒng)的網絡化發(fā)展趨勢,嵌入式系統(tǒng)的網絡特性越來越受到重視[1]。基于這種趨勢,一些專門運行于嵌入式設備的TCP/IP協議棧應運而生,比較成熟的開源協議棧主要有LwIP、uIP、μC/ IP、TinyTcp等[2-3]。這些嵌入式協議棧均派生自BSD TCP/IP[4],實現了其最基本的通信功能。輕量級TCP/IP協議棧(Lightweight TCP/IP protocol stack,LwIP)[5]是一套用于嵌入式系統(tǒng)的開源TCP/ IP協議棧。LwIP可以移植到多種嵌入式操作系統(tǒng)上,如Linux,μCOS等,也可以在缺乏操作系統(tǒng)的裸機上獨立運行。LwIP的主要目標是在保持TCP/IP協議主要功能的基礎上減少存儲器使用量和代碼尺寸,以便適應資源有限的嵌入式環(huán)境[6]。為了滿足嵌入式應用對TCP/IP協議棧實時性的要求,本文將在實驗分析的基礎上,給出LwIP協議棧實時優(yōu)化方案,并對優(yōu)化結果進行實驗驗證。

2 LwIP分析

2.1 LwIP與嵌入式系統(tǒng)的關系

為了提高可移植性,LwIP在協議棧和操作系統(tǒng)之間增加了一個操作系統(tǒng)模擬層[7]。操作系統(tǒng)模擬層使用統(tǒng)一的接口提供定時器、進程同步及消息傳遞機制等諸如此類的系統(tǒng)服務。消息傳遞通過一個被稱作郵箱的機制來實現,投遞到郵箱的消息被操作系統(tǒng)模擬層放到隊列中直至其他進程將它們取出[8]。LwIP將所有協議駐留在同一個進程,應用程序既可以駐留在LwIP的進程中,也可以使用一個單獨的進程[9]。應用程序與協議棧通信可以采用2種方式:(1)函數調用;(2)使用LwIP提供的API通過操作系統(tǒng)的郵箱等進行通信。

2.2 LwIP模塊架構

LwIP的設計與實現采用了分層的結構,每層協議都作為一個獨立的模塊來實現,層與層之間通過接口函數進行通信[10-11]。LwIP主要由IP,ICMP, UDP和TCP模塊組成[12],這些模塊完成通信功能。除此之外,LwIP還包含一些輔助模塊,例如操作系統(tǒng)模擬層、內存管理系統(tǒng)等[13]。

TCP協議為傳輸層協議,它為應用層提供可靠的面向連接的數據流服務[14]。TCP主要由6個函數組成,其中,tcp_write(),tcp_enqueue()與tcp_ output()對TCP輸出過程進行處理,tcp_input(), tcp_process()與tcp_receive()對TCP輸入過程進行處理。

UDP協議為應用層提供不可靠的無連接數據報服務[15]。發(fā)送UDP數據時,應用程序調用udp_ send()函數,該函數調用udp_output()完成udp頭部添加等操作,然后數據被移交給ip_output_if(),進入IP層。接收時,IP層調用udp_input()函數檢查UDP頭部,找到對應的UDP PCB[16],然后調用recv()函數,通知應用層做進一步處理。

2.3 LwIP數據處理

以TCP協議發(fā)送數據過程為例詳細分析LwIP數據處理流程。發(fā)送數據時,應用程序調用LwIP API接口函數LwIP_write(),LwIP_write()函數進一步調用LwIP提供給內嵌應用程序使用的API函數netconn_write()。該函數負責POST一個發(fā)送數據包消息到郵箱。

當協議棧接收到該消息時,調用tcp_write()函數,tcp_write()將控制權交給tcp_enqueue()。tcp_ enqueue()函數將應用程序數據拷貝到協議棧內部緩沖區(qū),對發(fā)送數據進行分割與編號,封裝進pbuf,然后調用tcp_output()檢查當前窗口是否還有空間存放更多的數據,填充剩余TCP報頭字段,計算TCP校驗和,最后使用ip_output()發(fā)送報文段。

ip_output()函數使用ip_route()查找適當的網絡接口來傳送數據包。外發(fā)網絡接口確定后,數據包傳給ip_output_if()進行IP頭字段的填充以及IP校驗和的計算,然后調用netif->output()函數(協議棧初始化時,該函數被初始化為low_level_ output()函數)進行數據包的物理層發(fā)送。在low_ level_output()中,pbuf中的數據被拷貝到發(fā)送緩沖區(qū),默認使用的是C庫的memcpy()函數,接著調用驅動函數發(fā)送數據。數據發(fā)送流程如圖1所示。

圖1 TCP協議數據發(fā)送流程

3 性能瓶頸分析

3.1 分析工具

Linux平臺上比較典型的性能分析工具是gprof[17]。gprof通過在編譯時在函數入口處插入計數器,來收集每個函數的被調用次數以及函數占用時間[18],進而找出程序中比較耗時的模塊。

3.2 測量方法

在PC機上運行TCP/IP調試工具NetAssist作為TCP服務端,接受客戶端的連接。在嵌入式Linux平臺下使用LwIP協議棧編寫TCP客戶端與服務端建立連接并發(fā)送數據,每次發(fā)送1000個數據包,每個包1024 Byte。客戶端程序總共運行10次。

3.3 測量結果

使用gprof工具分析10次運行結果,得到各函數占用時間統(tǒng)計結果如圖2所示。

圖2 各函數占用時間

3.4 結果分析

在發(fā)送數據過程中,進行了2次內存拷貝:函數tcp_enqueue()調用MEMCPY()(默認采用C庫memcpy()函數實現)將應用程序數據拷貝到LwIP協議棧緩沖區(qū);函數low_level_output()調用memcpy()將pbuf中的數據拷貝到發(fā)送緩沖區(qū)。2次內存拷貝耗時百分比分別為20%和16%,占總時間的36%。可見,內存拷貝是制約LwIP協議棧實時性性能的瓶頸之一。

函數ethernet_send()調用驅動程序將發(fā)送緩沖區(qū)中的數據寫入Tx隊列,進而完成物理層的數據發(fā)送,其性能取決于驅動程序的效率以及網絡控制器的硬件性能。

API_EVENT通過信號量機制喚醒LwIP協議棧進程,占總時間的20%,其性能取決于操作系統(tǒng)對信號量機制的實現方式。

函數inet_chksum_pseudo()負責TCP包頭字段的校驗;inet_chksum()負責IP報文頭字段的校驗。2次校驗過程占總時間的11%,其效率與其本身算法實現方式以及CPU運算速度相關。

函數netconn_connect()負責與服務端建立連接,占總時間的5%,郵箱操作占總時間的4%,其余代碼的執(zhí)行占總時間的12%。

4 優(yōu)化方法

4.1 內存拷貝算法優(yōu)化

根據特定的體系架構,使用相應的匯編指令可以有效優(yōu)化內存拷貝算法。本文的LwIP協議棧運行于ARM體系架構下的嵌入式Linux平臺。ARM指令集中LDM(批量加載)和STM(批量存儲)指令可以實現在一組寄存器和一塊連續(xù)的內存單元之間傳送數據[19]。使用LDM/STM指令傳送內存數據對訪問的目標內存地址以及數據長度有限制,目標內存地址必須按字對齊,數據長度必須是一次傳送字節(jié)數的整數倍。緩沖區(qū)內存地址通常都是按字對齊的,而數據長度則因應用而異。當數據長度不是LDM/STM一次傳送字節(jié)數的整數倍時,可以先使用LDM/STM指令進行塊數據傳送,多余的字節(jié)使用LDRB/STRB指令傳送。程序流程如圖3所示。

圖3 ARM匯編指令內存拷貝流程

算法主要代碼如下:

算法ARM匯編指令內存拷貝算法

4.2 校驗算法優(yōu)化

在LwIP中,校驗函數inet_chksum_pseudo()與inet_chksum()都是通過循環(huán)調用LwIP協議棧內置校驗函數LwIP_standard_chksum()實現的。LwIP_ standard_chksum()有3種不同的實現方式,可以通過對宏LwIP_CHKSUM_ALGORITHM定義不同的值來選擇合適的校驗算法。3種校驗算法復雜度依次降低,校驗強度也依次減弱。

LwIP默認選擇第1種校驗算法。該算法計算每個字節(jié)的校驗和,校驗強度高,但比較耗時。基于協議棧對實時性的要求,本文選擇第3種校驗算法。該算法使用循環(huán)展開的校驗方式,對數據包頭部和尾部字節(jié)進行特殊處理,并在一次內循環(huán)的校驗過程中,同時對8個字節(jié)的校驗和進行計算,大大提高了校驗效率。

4.3 優(yōu)先級管理機制

在實時性有嚴格要求的應用中,往往出現特定的緊急數據(比如警示信息等)需要以更高的優(yōu)先級發(fā)送到網絡上的情況,但LwIP并沒有提供這樣的傳輸機制。基于這種需求,本文通過在LwIP協議棧IP層定義緊急數據等待隊列和普通數據等待隊列的方式,建立了LwIP協議棧優(yōu)先級管理機制。當應用程序使用帶有優(yōu)先級參數的發(fā)送函數發(fā)送數據時,數據被提交到IP層,通過測試DSCP字段獲得數據包的優(yōu)先級,進而將數據包指針放到對應的等待隊列。當網絡接口層發(fā)送函數空閑時,優(yōu)先發(fā)送緊急隊列中的數據包,緊急隊列為空再發(fā)送普通隊列中的數據包。

優(yōu)先級管理機制主要采用一個互斥信號量eth_ available和一對等待隊列emergency_wait_queue與common_wait_queue實現。等待隊列通過循環(huán)隊列方式實現,如圖4所示,C語言描述如下:

圖4 等待隊列

互斥信號量eth_available分別用于函數ip_ output()與low_level_output(),為0表示網絡接口層發(fā)送函數正忙,為1表示空閑。函數ip_output()調用ip_output_if()發(fā)送數據之前對eth_available進行PEND操作;函數low_level_output()調用底層驅動發(fā)送數據幀之后對eth_available進行POST操作。

當數據進入IP層時,函數ip_output()通過檢查參數tos確定數據的優(yōu)先級,根據數據優(yōu)先級將數據包指針放到對應的等待隊列的rear處,然后通過PEND eth_available測試當前網絡接口層發(fā)送函數狀態(tài)。如果空閑,則檢查緊急隊列是否為空,如果不為空,則發(fā)送緊急隊列中head處數據包,如果為空則發(fā)送普通隊列中head處數據包;如果網絡接口層發(fā)送函數正忙,則將進程掛起,等待喚醒。LwIP優(yōu)先級管理機制流程如圖5所示。

圖5 LwIP優(yōu)先級管理機制流程

5 實驗與分析

測試目的:對比LwIP優(yōu)化前響應速度,優(yōu)化后普通數據響應速度以及優(yōu)化后緊急數據響應速度。

測試平臺:PC端搭載Windows XP操作系統(tǒng),運行TCP/IP調試工具NetAssist;開發(fā)板搭載嵌入式Linux操作系統(tǒng),以優(yōu)化前后的LwIP作為TCP/IP協議棧,運行測試程序。

測試方法:在不同的網絡負載下,測試程序向PC端發(fā)送數據包,通過記錄應用程序調用協議棧發(fā)送函數以及驅動程序在物理層發(fā)出數據2個時刻的系統(tǒng)時間來計算LwIP協議棧響應時間。網絡負載大小由測試程序發(fā)送數據包的頻率控制。測試程序以固定的頻率向PC上的服務端發(fā)送數據包,數據包大小為1024 Byte,一次會話發(fā)送1000個數據包,通過對每個數據包的響應時間進行算數平均得到協議棧平均響應時間。在發(fā)送普通數據的過程中隨機插入緊急數據并對其響應時間進行測試可以得到優(yōu)化后的LwIP緊急數據的響應時間。

測試結果:測試結果如表1所示,結果對比如圖6所示。

表1 LwIP協議棧響應時間μs

圖6 LwIP協議棧響應時間對比

測試結果顯示,在相同的網絡負載情況下,優(yōu)化后的LwIP協議棧比優(yōu)化前響應時間少12%~32%。網絡負載較小時,LwIP優(yōu)化前后的響應時間相差不大,約為12%;網絡負載較大時,優(yōu)化后的LwIP響應時間明顯小于優(yōu)化前,約為32%。此外,優(yōu)化后的協議棧緊急數據的響應時間隨網絡負載的增加變化較小,可見緊急數據具有更高的優(yōu)先級。

6 結束語

隨著科技的發(fā)展,嵌入式系統(tǒng)和網絡技術結合得越來越緊密,網絡化將成為嵌入式設備的發(fā)展趨勢。在此背景下,對嵌入式TCP/IP協議棧的性能進行優(yōu)化,具有重要的意義。本文針對嵌入式系統(tǒng)對LwIP實時性的要求,通過實驗分析協議棧性能瓶頸,采用3種優(yōu)化方式,實現LwIP協議棧實時性能優(yōu)化。

[1] 許 剛.基于ARM11的嵌入式視頻采集系統(tǒng)設計[J].測控技術,2013,32(12):37-40.

[2] 王建平,周辰飛,朱程輝,等.一種ZigBee-TCP/IP無縫網關模型[J].合肥工業(yè)大學學報:自然科學版,2013, 36(9):1058-1062.

[3] 陳華兵.基于μC/OS-Ⅱ網絡模塊的擴展及任務調度算法的研究[D].武漢:武漢理工大學,2007.

[4] 郭傳雄,鄭少仁.對Linux操作系統(tǒng)中TCP/IP網絡協議的IP層排隊分析[J].計算機學報,2001,24(5): 860-865.

[5] 韓德強,楊淇善,王宗俠,等.基于μC/OS-Ⅲ的LwIP協議棧的移植與實現[J].電子技術應用,2013, 39(5):18-21.

[6] Dunkels A.Design and Implementation of the LwIP TCP/IPStack[D].Stockholm,Sweden:Swedish Institute of Computer Science,2001.

[7] 張 齊,勞熾元.輕量級協議棧LWIP的分析與改進[J].計算機工程與設計,2010,31(10):2169-2171.

[8] 周海瑞.嵌入式TCP/IP協議棧的設計與實現[D].西安:西北工業(yè)大學,2007.

[9] 孫鶴旭,邵 巖,邢關生,等.移動機器人網絡的嵌入式Web系統(tǒng)設計[J].計算機工程,2013,39(9):134-136.

[10] 楊高峰,顧春華.基于LwIP的ICMP路由重定向改進[J].北京聯合大學學報:自然科學版,2009,23(1): 39-42.

[11] 湯維維.數字機頂盒以太網接入的設計與實現[D].武漢:武漢理工大學,2008.

[12] 李良仁,彭雪峰.LwIP協議棧在NIOSⅡ系統(tǒng)中的移植[J].機電技術,2009,25(4):25-28.

[13] 張 潔,傅 明.LwIP協議棧在嵌入式Linux下的移植與實現[J].微計算機信息,2011,27(4):94-96.

[14] 馮彥君,孫利民,錢華林,等.MANET中TCP改進研究綜述[J].軟件學報,2005,16(3):434-444.

[15] Liu Guoping,Sun Jian,Zhao Yunbo.Design,Analysis and Real-time Implementation of Networked Predictive Control Systems[J].Acta Automatica Sinica,2013, 39(11):1769-1777.

[16] 蔡雄飛,王新華,郭淑琴.嵌入式TCP/IP協議LwIP的內存管理機制研究[J].杭州電子科技大學學報, 2012,32(4):118-121.

[17] 孫曉穎,曾文藝.基于Gprof的函數調用順序研究[J].微計算機信息,2010,26(12):121-124.

[18] 張惠臻,王 超,陳 雁.嵌入式軟件性能分析方法研究與工具設計[J].計算機應用與軟件,2013,30(10): 284-287.

[19] 魏 強,金 然,王清賢.基于中間匯編的緩沖區(qū)溢出檢測模型[J].計算機工程,2009,35(3):169-172.

編輯 顧逸斐

Analysis and Optimization of Lightweight TCP/IP Protocol Stack Mechanism

YUAN Zhongshu,LU Yang
(School of Computer and Information,Hefei University of Technology,Hefei 230009,China)

Lightweight TCP/IP protocol stack(LwIP)is mainly used in resource-constrained embedded devices.In order to meet the real-time requirement of the embedded device,this paper analyzes the internal mechanism of LwIP, conducts a performance bottleneck analysis by experimental measurements,and designs the optimization program of LwIP.The main performance bottlenecks of LwIP are memory copy and verification process.Accordingly,the optimized algorithms of memory copy and checksum are presented.Additionally,in order to meet the higher priority requirement of the urgent data,this paper presents the management mechanism of the priority,and ensures that the emergency packets take precedence over ordinary data packets.Experimental tests are presented to prove that these optimization methods improve the real-time performance of LwIP.

Lightweight TCP/IP protocol stack(LwIP);embedded;real-time;optimization;priority;wait queue

袁中書,陸 陽.輕量級TCP/IP協議棧機制分析與優(yōu)化[J].計算機工程,2015,41(2):317-321.

英文引用格式:Yuan Zhongshu,Lu Yang.Analysis and Optimization of Lightweight TCP/IP Protocol Stack Mechanism[J]. Computer Engineering,2015,41(2):317-321.

1000-3428(2015)02-0317-05

:A

:TP393

10.3969/j.issn.1000-3428.2015.02.061

安徽省科技攻關計劃基金資助重大項目(11010201011)。

袁中書(1988-),男,碩士研究生,主研方向:嵌入式系統(tǒng);陸 陽,教授。

2014-02-27

:2014-03-26E-mail:yuanzhongshu_1988@163.com

猜你喜歡
嵌入式優(yōu)化
超限高層建筑結構設計與優(yōu)化思考
房地產導刊(2022年5期)2022-06-01 06:20:14
民用建筑防煙排煙設計優(yōu)化探討
關于優(yōu)化消防安全告知承諾的一些思考
一道優(yōu)化題的幾何解法
由“形”啟“數”優(yōu)化運算——以2021年解析幾何高考題為例
TS系列紅外傳感器在嵌入式控制系統(tǒng)中的應用
電子制作(2019年7期)2019-04-25 13:17:14
嵌入式系統(tǒng)通信技術的應用
電子制作(2018年18期)2018-11-14 01:48:16
搭建基于Qt的嵌入式開發(fā)平臺
嵌入式軟PLC在電鍍生產流程控制系統(tǒng)中的應用
基于低碳物流的公路運輸優(yōu)化
主站蜘蛛池模板: 青青青伊人色综合久久| 国产av色站网站| 日韩精品一区二区三区中文无码| 亚洲人成网站在线播放2019| 日韩无码一二三区| 欧美在线伊人| 白浆免费视频国产精品视频| 最新国产精品第1页| 中文字幕人妻无码系列第三区| 无码AV动漫| 亚洲色无码专线精品观看| 日韩欧美中文字幕在线韩免费 | 国产亚洲视频播放9000| 亚洲国产成人综合精品2020| 99re热精品视频国产免费| 三级视频中文字幕| 国产91特黄特色A级毛片| 久久综合干| 国产自产视频一区二区三区| 不卡无码h在线观看| 中文字幕永久视频| 国产精品对白刺激| 高清免费毛片| 久久国产高清视频| 香蕉99国内自产自拍视频| 精品亚洲麻豆1区2区3区| 欧美中文字幕在线播放| 欧美色99| 亚洲人免费视频| 国产成人午夜福利免费无码r| 国产高清无码麻豆精品| 国产成人亚洲精品蜜芽影院| 亚洲精品动漫| 狼友av永久网站免费观看| 日本成人一区| 婷婷六月激情综合一区| 91精品aⅴ无码中文字字幕蜜桃 | 亚洲av无码成人专区| 国产簧片免费在线播放| 日韩视频免费| 9999在线视频| 国产流白浆视频| 性欧美在线| 亚洲国产成人在线| 欧美啪啪视频免码| 性视频一区| 一区二区三区成人| 激情无码字幕综合| aⅴ免费在线观看| 亚洲精品福利视频| 亚洲一区二区三区国产精品 | 一级黄色片网| 国产激情无码一区二区免费| 三区在线视频| 亚洲成人网在线观看| 少妇极品熟妇人妻专区视频| 91亚洲视频下载| 婷婷伊人五月| 99精品久久精品| 国产av无码日韩av无码网站| 新SSS无码手机在线观看| 91欧美在线| 国产乱码精品一区二区三区中文| 欧美日韩一区二区三区四区在线观看 | lhav亚洲精品| 亚洲av片在线免费观看| 偷拍久久网| 白丝美女办公室高潮喷水视频| 朝桐光一区二区| 国产精品久久久久久久伊一| 免费一级无码在线网站| 伊人成人在线| 国产一级毛片在线| 内射人妻无套中出无码| 91无码国产视频| 国产真实乱人视频| 亚洲第一成年网| 91破解版在线亚洲| 欧美精品导航| 日本欧美精品| 国产美女无遮挡免费视频网站| 欧美精品不卡|