袁中書,陸 陽(yáng)
(合肥工業(yè)大學(xué)計(jì)算機(jī)與信息學(xué)院,合肥230009)
輕量級(jí)TCP/IP協(xié)議棧機(jī)制分析與優(yōu)化
袁中書,陸 陽(yáng)
(合肥工業(yè)大學(xué)計(jì)算機(jī)與信息學(xué)院,合肥230009)
輕量級(jí)TCP/IP協(xié)議棧(LwIP)主要應(yīng)用于資源受限的嵌入式設(shè)備。為滿足嵌入式設(shè)備對(duì)實(shí)時(shí)性的要求,分析LwIP的內(nèi)部機(jī)制,對(duì)其進(jìn)行性能瓶頸分析,并根據(jù)分析結(jié)果設(shè)計(jì)、實(shí)施LwIP的實(shí)時(shí)性和優(yōu)先級(jí)管理優(yōu)化方案。LwIP的主要性能瓶頸是內(nèi)存拷貝和校驗(yàn)過(guò)程,據(jù)此給出優(yōu)化后的內(nèi)存拷貝算法和校驗(yàn)算法。為滿足緊急數(shù)據(jù)對(duì)更高優(yōu)先級(jí)的要求,給出LwIP協(xié)議棧優(yōu)先級(jí)管理機(jī)制,能夠確保高優(yōu)先級(jí)標(biāo)記的緊急數(shù)據(jù)包優(yōu)先傳輸于普通數(shù)據(jù)包。實(shí)驗(yàn)結(jié)果表明,該優(yōu)化方法可以顯著提高LwIP的實(shí)時(shí)性能。
輕量級(jí)TCP/IP協(xié)議棧;嵌入式;實(shí)時(shí)性;優(yōu)化;優(yōu)先級(jí);等待隊(duì)列
隨著嵌入式系統(tǒng)在工業(yè)控制領(lǐng)域的廣泛應(yīng)用和發(fā)展,以及控制系統(tǒng)的網(wǎng)絡(luò)化發(fā)展趨勢(shì),嵌入式系統(tǒng)的網(wǎng)絡(luò)特性越來(lái)越受到重視[1]?;谶@種趨勢(shì),一些專門運(yùn)行于嵌入式設(shè)備的TCP/IP協(xié)議棧應(yīng)運(yùn)而生,比較成熟的開(kāi)源協(xié)議棧主要有LwIP、uIP、μC/ IP、TinyTcp等[2-3]。這些嵌入式協(xié)議棧均派生自BSD TCP/IP[4],實(shí)現(xiàn)了其最基本的通信功能。輕量級(jí)TCP/IP協(xié)議棧(Lightweight TCP/IP protocol stack,LwIP)[5]是一套用于嵌入式系統(tǒng)的開(kāi)源TCP/ IP協(xié)議棧。LwIP可以移植到多種嵌入式操作系統(tǒng)上,如Linux,μCOS等,也可以在缺乏操作系統(tǒng)的裸機(jī)上獨(dú)立運(yùn)行。LwIP的主要目標(biāo)是在保持TCP/IP協(xié)議主要功能的基礎(chǔ)上減少存儲(chǔ)器使用量和代碼尺寸,以便適應(yīng)資源有限的嵌入式環(huán)境[6]。為了滿足嵌入式應(yīng)用對(duì)TCP/IP協(xié)議棧實(shí)時(shí)性的要求,本文將在實(shí)驗(yàn)分析的基礎(chǔ)上,給出LwIP協(xié)議棧實(shí)時(shí)優(yōu)化方案,并對(duì)優(yōu)化結(jié)果進(jìn)行實(shí)驗(yàn)驗(yàn)證。
2.1 LwIP與嵌入式系統(tǒng)的關(guān)系
為了提高可移植性,LwIP在協(xié)議棧和操作系統(tǒng)之間增加了一個(gè)操作系統(tǒng)模擬層[7]。操作系統(tǒng)模擬層使用統(tǒng)一的接口提供定時(shí)器、進(jìn)程同步及消息傳遞機(jī)制等諸如此類的系統(tǒng)服務(wù)。消息傳遞通過(guò)一個(gè)被稱作郵箱的機(jī)制來(lái)實(shí)現(xiàn),投遞到郵箱的消息被操作系統(tǒng)模擬層放到隊(duì)列中直至其他進(jìn)程將它們?nèi)〕鯷8]。LwIP將所有協(xié)議駐留在同一個(gè)進(jìn)程,應(yīng)用程序既可以駐留在LwIP的進(jìn)程中,也可以使用一個(gè)單獨(dú)的進(jìn)程[9]。應(yīng)用程序與協(xié)議棧通信可以采用2種方式:(1)函數(shù)調(diào)用;(2)使用LwIP提供的API通過(guò)操作系統(tǒng)的郵箱等進(jìn)行通信。
2.2 LwIP模塊架構(gòu)
LwIP的設(shè)計(jì)與實(shí)現(xiàn)采用了分層的結(jié)構(gòu),每層協(xié)議都作為一個(gè)獨(dú)立的模塊來(lái)實(shí)現(xiàn),層與層之間通過(guò)接口函數(shù)進(jìn)行通信[10-11]。LwIP主要由IP,ICMP, UDP和TCP模塊組成[12],這些模塊完成通信功能。除此之外,LwIP還包含一些輔助模塊,例如操作系統(tǒng)模擬層、內(nèi)存管理系統(tǒng)等[13]。
TCP協(xié)議為傳輸層協(xié)議,它為應(yīng)用層提供可靠的面向連接的數(shù)據(jù)流服務(wù)[14]。TCP主要由6個(gè)函數(shù)組成,其中,tcp_write(),tcp_enqueue()與tcp_ output()對(duì)TCP輸出過(guò)程進(jìn)行處理,tcp_input(), tcp_process()與tcp_receive()對(duì)TCP輸入過(guò)程進(jìn)行處理。
UDP協(xié)議為應(yīng)用層提供不可靠的無(wú)連接數(shù)據(jù)報(bào)服務(wù)[15]。發(fā)送UDP數(shù)據(jù)時(shí),應(yīng)用程序調(diào)用udp_ send()函數(shù),該函數(shù)調(diào)用udp_output()完成udp頭部添加等操作,然后數(shù)據(jù)被移交給ip_output_if(),進(jìn)入IP層。接收時(shí),IP層調(diào)用udp_input()函數(shù)檢查UDP頭部,找到對(duì)應(yīng)的UDP PCB[16],然后調(diào)用recv()函數(shù),通知應(yīng)用層做進(jìn)一步處理。
2.3 LwIP數(shù)據(jù)處理
以TCP協(xié)議發(fā)送數(shù)據(jù)過(guò)程為例詳細(xì)分析LwIP數(shù)據(jù)處理流程。發(fā)送數(shù)據(jù)時(shí),應(yīng)用程序調(diào)用LwIP API接口函數(shù)LwIP_write(),LwIP_write()函數(shù)進(jìn)一步調(diào)用LwIP提供給內(nèi)嵌應(yīng)用程序使用的API函數(shù)netconn_write()。該函數(shù)負(fù)責(zé)POST一個(gè)發(fā)送數(shù)據(jù)包消息到郵箱。
當(dāng)協(xié)議棧接收到該消息時(shí),調(diào)用tcp_write()函數(shù),tcp_write()將控制權(quán)交給tcp_enqueue()。tcp_ enqueue()函數(shù)將應(yīng)用程序數(shù)據(jù)拷貝到協(xié)議棧內(nèi)部緩沖區(qū),對(duì)發(fā)送數(shù)據(jù)進(jìn)行分割與編號(hào),封裝進(jìn)pbuf,然后調(diào)用tcp_output()檢查當(dāng)前窗口是否還有空間存放更多的數(shù)據(jù),填充剩余TCP報(bào)頭字段,計(jì)算TCP校驗(yàn)和,最后使用ip_output()發(fā)送報(bào)文段。
ip_output()函數(shù)使用ip_route()查找適當(dāng)?shù)木W(wǎng)絡(luò)接口來(lái)傳送數(shù)據(jù)包。外發(fā)網(wǎng)絡(luò)接口確定后,數(shù)據(jù)包傳給ip_output_if()進(jìn)行IP頭字段的填充以及IP校驗(yàn)和的計(jì)算,然后調(diào)用netif->output()函數(shù)(協(xié)議棧初始化時(shí),該函數(shù)被初始化為low_level_ output()函數(shù))進(jìn)行數(shù)據(jù)包的物理層發(fā)送。在low_ level_output()中,pbuf中的數(shù)據(jù)被拷貝到發(fā)送緩沖區(qū),默認(rèn)使用的是C庫(kù)的memcpy()函數(shù),接著調(diào)用驅(qū)動(dòng)函數(shù)發(fā)送數(shù)據(jù)。數(shù)據(jù)發(fā)送流程如圖1所示。
圖1 TCP協(xié)議數(shù)據(jù)發(fā)送流程
3.1 分析工具
Linux平臺(tái)上比較典型的性能分析工具是gprof[17]。gprof通過(guò)在編譯時(shí)在函數(shù)入口處插入計(jì)數(shù)器,來(lái)收集每個(gè)函數(shù)的被調(diào)用次數(shù)以及函數(shù)占用時(shí)間[18],進(jìn)而找出程序中比較耗時(shí)的模塊。
3.2 測(cè)量方法
在PC機(jī)上運(yùn)行TCP/IP調(diào)試工具NetAssist作為TCP服務(wù)端,接受客戶端的連接。在嵌入式Linux平臺(tái)下使用LwIP協(xié)議棧編寫TCP客戶端與服務(wù)端建立連接并發(fā)送數(shù)據(jù),每次發(fā)送1000個(gè)數(shù)據(jù)包,每個(gè)包1024 Byte。客戶端程序總共運(yùn)行10次。
3.3 測(cè)量結(jié)果
使用gprof工具分析10次運(yùn)行結(jié)果,得到各函數(shù)占用時(shí)間統(tǒng)計(jì)結(jié)果如圖2所示。
圖2 各函數(shù)占用時(shí)間
3.4 結(jié)果分析
在發(fā)送數(shù)據(jù)過(guò)程中,進(jìn)行了2次內(nèi)存拷貝:函數(shù)tcp_enqueue()調(diào)用MEMCPY()(默認(rèn)采用C庫(kù)memcpy()函數(shù)實(shí)現(xiàn))將應(yīng)用程序數(shù)據(jù)拷貝到LwIP協(xié)議棧緩沖區(qū);函數(shù)low_level_output()調(diào)用memcpy()將pbuf中的數(shù)據(jù)拷貝到發(fā)送緩沖區(qū)。2次內(nèi)存拷貝耗時(shí)百分比分別為20%和16%,占總時(shí)間的36%。可見(jiàn),內(nèi)存拷貝是制約LwIP協(xié)議棧實(shí)時(shí)性性能的瓶頸之一。
函數(shù)ethernet_send()調(diào)用驅(qū)動(dòng)程序?qū)l(fā)送緩沖區(qū)中的數(shù)據(jù)寫入Tx隊(duì)列,進(jìn)而完成物理層的數(shù)據(jù)發(fā)送,其性能取決于驅(qū)動(dòng)程序的效率以及網(wǎng)絡(luò)控制器的硬件性能。
API_EVENT通過(guò)信號(hào)量機(jī)制喚醒LwIP協(xié)議棧進(jìn)程,占總時(shí)間的20%,其性能取決于操作系統(tǒng)對(duì)信號(hào)量機(jī)制的實(shí)現(xiàn)方式。
函數(shù)inet_chksum_pseudo()負(fù)責(zé)TCP包頭字段的校驗(yàn);inet_chksum()負(fù)責(zé)IP報(bào)文頭字段的校驗(yàn)。2次校驗(yàn)過(guò)程占總時(shí)間的11%,其效率與其本身算法實(shí)現(xiàn)方式以及CPU運(yùn)算速度相關(guān)。
函數(shù)netconn_connect()負(fù)責(zé)與服務(wù)端建立連接,占總時(shí)間的5%,郵箱操作占總時(shí)間的4%,其余代碼的執(zhí)行占總時(shí)間的12%。
4.1 內(nèi)存拷貝算法優(yōu)化
根據(jù)特定的體系架構(gòu),使用相應(yīng)的匯編指令可以有效優(yōu)化內(nèi)存拷貝算法。本文的LwIP協(xié)議棧運(yùn)行于ARM體系架構(gòu)下的嵌入式Linux平臺(tái)。ARM指令集中LDM(批量加載)和STM(批量存儲(chǔ))指令可以實(shí)現(xiàn)在一組寄存器和一塊連續(xù)的內(nèi)存單元之間傳送數(shù)據(jù)[19]。使用LDM/STM指令傳送內(nèi)存數(shù)據(jù)對(duì)訪問(wèn)的目標(biāo)內(nèi)存地址以及數(shù)據(jù)長(zhǎng)度有限制,目標(biāo)內(nèi)存地址必須按字對(duì)齊,數(shù)據(jù)長(zhǎng)度必須是一次傳送字節(jié)數(shù)的整數(shù)倍。緩沖區(qū)內(nèi)存地址通常都是按字對(duì)齊的,而數(shù)據(jù)長(zhǎng)度則因應(yīng)用而異。當(dāng)數(shù)據(jù)長(zhǎng)度不是LDM/STM一次傳送字節(jié)數(shù)的整數(shù)倍時(shí),可以先使用LDM/STM指令進(jìn)行塊數(shù)據(jù)傳送,多余的字節(jié)使用LDRB/STRB指令傳送。程序流程如圖3所示。
圖3 ARM匯編指令內(nèi)存拷貝流程
算法主要代碼如下:
算法ARM匯編指令內(nèi)存拷貝算法
4.2 校驗(yàn)算法優(yōu)化
在LwIP中,校驗(yàn)函數(shù)inet_chksum_pseudo()與inet_chksum()都是通過(guò)循環(huán)調(diào)用LwIP協(xié)議棧內(nèi)置校驗(yàn)函數(shù)LwIP_standard_chksum()實(shí)現(xiàn)的。LwIP_ standard_chksum()有3種不同的實(shí)現(xiàn)方式,可以通過(guò)對(duì)宏LwIP_CHKSUM_ALGORITHM定義不同的值來(lái)選擇合適的校驗(yàn)算法。3種校驗(yàn)算法復(fù)雜度依次降低,校驗(yàn)強(qiáng)度也依次減弱。
LwIP默認(rèn)選擇第1種校驗(yàn)算法。該算法計(jì)算每個(gè)字節(jié)的校驗(yàn)和,校驗(yàn)強(qiáng)度高,但比較耗時(shí)?;趨f(xié)議棧對(duì)實(shí)時(shí)性的要求,本文選擇第3種校驗(yàn)算法。該算法使用循環(huán)展開(kāi)的校驗(yàn)方式,對(duì)數(shù)據(jù)包頭部和尾部字節(jié)進(jìn)行特殊處理,并在一次內(nèi)循環(huán)的校驗(yàn)過(guò)程中,同時(shí)對(duì)8個(gè)字節(jié)的校驗(yàn)和進(jìn)行計(jì)算,大大提高了校驗(yàn)效率。
4.3 優(yōu)先級(jí)管理機(jī)制
在實(shí)時(shí)性有嚴(yán)格要求的應(yīng)用中,往往出現(xiàn)特定的緊急數(shù)據(jù)(比如警示信息等)需要以更高的優(yōu)先級(jí)發(fā)送到網(wǎng)絡(luò)上的情況,但LwIP并沒(méi)有提供這樣的傳輸機(jī)制?;谶@種需求,本文通過(guò)在LwIP協(xié)議棧IP層定義緊急數(shù)據(jù)等待隊(duì)列和普通數(shù)據(jù)等待隊(duì)列的方式,建立了LwIP協(xié)議棧優(yōu)先級(jí)管理機(jī)制。當(dāng)應(yīng)用程序使用帶有優(yōu)先級(jí)參數(shù)的發(fā)送函數(shù)發(fā)送數(shù)據(jù)時(shí),數(shù)據(jù)被提交到IP層,通過(guò)測(cè)試DSCP字段獲得數(shù)據(jù)包的優(yōu)先級(jí),進(jìn)而將數(shù)據(jù)包指針?lè)诺綄?duì)應(yīng)的等待隊(duì)列。當(dāng)網(wǎng)絡(luò)接口層發(fā)送函數(shù)空閑時(shí),優(yōu)先發(fā)送緊急隊(duì)列中的數(shù)據(jù)包,緊急隊(duì)列為空再發(fā)送普通隊(duì)列中的數(shù)據(jù)包。
優(yōu)先級(jí)管理機(jī)制主要采用一個(gè)互斥信號(hào)量eth_ available和一對(duì)等待隊(duì)列emergency_wait_queue與common_wait_queue實(shí)現(xiàn)。等待隊(duì)列通過(guò)循環(huán)隊(duì)列方式實(shí)現(xiàn),如圖4所示,C語(yǔ)言描述如下:
圖4 等待隊(duì)列
互斥信號(hào)量eth_available分別用于函數(shù)ip_ output()與low_level_output(),為0表示網(wǎng)絡(luò)接口層發(fā)送函數(shù)正忙,為1表示空閑。函數(shù)ip_output()調(diào)用ip_output_if()發(fā)送數(shù)據(jù)之前對(duì)eth_available進(jìn)行PEND操作;函數(shù)low_level_output()調(diào)用底層驅(qū)動(dòng)發(fā)送數(shù)據(jù)幀之后對(duì)eth_available進(jìn)行POST操作。
當(dāng)數(shù)據(jù)進(jìn)入IP層時(shí),函數(shù)ip_output()通過(guò)檢查參數(shù)tos確定數(shù)據(jù)的優(yōu)先級(jí),根據(jù)數(shù)據(jù)優(yōu)先級(jí)將數(shù)據(jù)包指針?lè)诺綄?duì)應(yīng)的等待隊(duì)列的rear處,然后通過(guò)PEND eth_available測(cè)試當(dāng)前網(wǎng)絡(luò)接口層發(fā)送函數(shù)狀態(tài)。如果空閑,則檢查緊急隊(duì)列是否為空,如果不為空,則發(fā)送緊急隊(duì)列中head處數(shù)據(jù)包,如果為空則發(fā)送普通隊(duì)列中head處數(shù)據(jù)包;如果網(wǎng)絡(luò)接口層發(fā)送函數(shù)正忙,則將進(jìn)程掛起,等待喚醒。LwIP優(yōu)先級(jí)管理機(jī)制流程如圖5所示。
圖5 LwIP優(yōu)先級(jí)管理機(jī)制流程
測(cè)試目的:對(duì)比LwIP優(yōu)化前響應(yīng)速度,優(yōu)化后普通數(shù)據(jù)響應(yīng)速度以及優(yōu)化后緊急數(shù)據(jù)響應(yīng)速度。
測(cè)試平臺(tái):PC端搭載Windows XP操作系統(tǒng),運(yùn)行TCP/IP調(diào)試工具NetAssist;開(kāi)發(fā)板搭載嵌入式Linux操作系統(tǒng),以優(yōu)化前后的LwIP作為TCP/IP協(xié)議棧,運(yùn)行測(cè)試程序。
測(cè)試方法:在不同的網(wǎng)絡(luò)負(fù)載下,測(cè)試程序向PC端發(fā)送數(shù)據(jù)包,通過(guò)記錄應(yīng)用程序調(diào)用協(xié)議棧發(fā)送函數(shù)以及驅(qū)動(dòng)程序在物理層發(fā)出數(shù)據(jù)2個(gè)時(shí)刻的系統(tǒng)時(shí)間來(lái)計(jì)算LwIP協(xié)議棧響應(yīng)時(shí)間。網(wǎng)絡(luò)負(fù)載大小由測(cè)試程序發(fā)送數(shù)據(jù)包的頻率控制。測(cè)試程序以固定的頻率向PC上的服務(wù)端發(fā)送數(shù)據(jù)包,數(shù)據(jù)包大小為1024 Byte,一次會(huì)話發(fā)送1000個(gè)數(shù)據(jù)包,通過(guò)對(duì)每個(gè)數(shù)據(jù)包的響應(yīng)時(shí)間進(jìn)行算數(shù)平均得到協(xié)議棧平均響應(yīng)時(shí)間。在發(fā)送普通數(shù)據(jù)的過(guò)程中隨機(jī)插入緊急數(shù)據(jù)并對(duì)其響應(yīng)時(shí)間進(jìn)行測(cè)試可以得到優(yōu)化后的LwIP緊急數(shù)據(jù)的響應(yīng)時(shí)間。
測(cè)試結(jié)果:測(cè)試結(jié)果如表1所示,結(jié)果對(duì)比如圖6所示。
表1 LwIP協(xié)議棧響應(yīng)時(shí)間μs
圖6 LwIP協(xié)議棧響應(yīng)時(shí)間對(duì)比
測(cè)試結(jié)果顯示,在相同的網(wǎng)絡(luò)負(fù)載情況下,優(yōu)化后的LwIP協(xié)議棧比優(yōu)化前響應(yīng)時(shí)間少12%~32%。網(wǎng)絡(luò)負(fù)載較小時(shí),LwIP優(yōu)化前后的響應(yīng)時(shí)間相差不大,約為12%;網(wǎng)絡(luò)負(fù)載較大時(shí),優(yōu)化后的LwIP響應(yīng)時(shí)間明顯小于優(yōu)化前,約為32%。此外,優(yōu)化后的協(xié)議棧緊急數(shù)據(jù)的響應(yīng)時(shí)間隨網(wǎng)絡(luò)負(fù)載的增加變化較小,可見(jiàn)緊急數(shù)據(jù)具有更高的優(yōu)先級(jí)。
隨著科技的發(fā)展,嵌入式系統(tǒng)和網(wǎng)絡(luò)技術(shù)結(jié)合得越來(lái)越緊密,網(wǎng)絡(luò)化將成為嵌入式設(shè)備的發(fā)展趨勢(shì)。在此背景下,對(duì)嵌入式TCP/IP協(xié)議棧的性能進(jìn)行優(yōu)化,具有重要的意義。本文針對(duì)嵌入式系統(tǒng)對(duì)LwIP實(shí)時(shí)性的要求,通過(guò)實(shí)驗(yàn)分析協(xié)議棧性能瓶頸,采用3種優(yōu)化方式,實(shí)現(xiàn)LwIP協(xié)議棧實(shí)時(shí)性能優(yōu)化。
[1] 許 剛.基于ARM11的嵌入式視頻采集系統(tǒng)設(shè)計(jì)[J].測(cè)控技術(shù),2013,32(12):37-40.
[2] 王建平,周辰飛,朱程輝,等.一種ZigBee-TCP/IP無(wú)縫網(wǎng)關(guān)模型[J].合肥工業(yè)大學(xué)學(xué)報(bào):自然科學(xué)版,2013, 36(9):1058-1062.
[3] 陳華兵.基于μC/OS-Ⅱ網(wǎng)絡(luò)模塊的擴(kuò)展及任務(wù)調(diào)度算法的研究[D].武漢:武漢理工大學(xué),2007.
[4] 郭傳雄,鄭少仁.對(duì)Linux操作系統(tǒng)中TCP/IP網(wǎng)絡(luò)協(xié)議的IP層排隊(duì)分析[J].計(jì)算機(jī)學(xué)報(bào),2001,24(5): 860-865.
[5] 韓德強(qiáng),楊淇善,王宗俠,等.基于μC/OS-Ⅲ的LwIP協(xié)議棧的移植與實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,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] 張 齊,勞熾元.輕量級(jí)協(xié)議棧LWIP的分析與改進(jìn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2010,31(10):2169-2171.
[8] 周海瑞.嵌入式TCP/IP協(xié)議棧的設(shè)計(jì)與實(shí)現(xiàn)[D].西安:西北工業(yè)大學(xué),2007.
[9] 孫鶴旭,邵 巖,邢關(guān)生,等.移動(dòng)機(jī)器人網(wǎng)絡(luò)的嵌入式Web系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)工程,2013,39(9):134-136.
[10] 楊高峰,顧春華.基于LwIP的ICMP路由重定向改進(jìn)[J].北京聯(lián)合大學(xué)學(xué)報(bào):自然科學(xué)版,2009,23(1): 39-42.
[11] 湯維維.數(shù)字機(jī)頂盒以太網(wǎng)接入的設(shè)計(jì)與實(shí)現(xiàn)[D].武漢:武漢理工大學(xué),2008.
[12] 李良仁,彭雪峰.LwIP協(xié)議棧在NIOSⅡ系統(tǒng)中的移植[J].機(jī)電技術(shù),2009,25(4):25-28.
[13] 張 潔,傅 明.LwIP協(xié)議棧在嵌入式Linux下的移植與實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2011,27(4):94-96.
[14] 馮彥君,孫利民,錢華林,等.MANET中TCP改進(jìn)研究綜述[J].軟件學(xué)報(bào),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協(xié)議LwIP的內(nèi)存管理機(jī)制研究[J].杭州電子科技大學(xué)學(xué)報(bào), 2012,32(4):118-121.
[17] 孫曉穎,曾文藝.基于Gprof的函數(shù)調(diào)用順序研究[J].微計(jì)算機(jī)信息,2010,26(12):121-124.
[18] 張惠臻,王 超,陳 雁.嵌入式軟件性能分析方法研究與工具設(shè)計(jì)[J].計(jì)算機(jī)應(yīng)用與軟件,2013,30(10): 284-287.
[19] 魏 強(qiáng),金 然,王清賢.基于中間匯編的緩沖區(qū)溢出檢測(cè)模型[J].計(jì)算機(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
袁中書,陸 陽(yáng).輕量級(jí)TCP/IP協(xié)議棧機(jī)制分析與優(yōu)化[J].計(jì)算機(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
安徽省科技攻關(guān)計(jì)劃基金資助重大項(xiàng)目(11010201011)。
袁中書(1988-),男,碩士研究生,主研方向:嵌入式系統(tǒng);陸 陽(yáng),教授。
2014-02-27
:2014-03-26E-mail:yuanzhongshu_1988@163.com