輕量級TCP/IP協(xié)議棧機制分析與優(yōu)化
發(fā)布時間:2021-01-31 00:27
輕量級TCP/IP協(xié)議棧(Lw IP)主要應用于資源受限的嵌入式設備。為滿足嵌入式設備對實時性的要求,分析Lw IP的內(nèi)部機制,對其進行性能瓶頸分析,并根據(jù)分析結果設計、實施Lw IP的實時性和優(yōu)先級管理優(yōu)化方案。Lw IP的主要性能瓶頸是內(nèi)存拷貝和校驗過程,據(jù)此給出優(yōu)化后的內(nèi)存拷貝算法和校驗算法。為滿足緊急數(shù)據(jù)對更高優(yōu)先級的要求,給出Lw IP協(xié)議棧優(yōu)先級管理機制,能夠確保高優(yōu)先級標記的緊急數(shù)據(jù)包優(yōu)先傳輸于普通數(shù)據(jù)包。實驗結果表明,該優(yōu)化方法可以顯著提高Lw IP的實時性能。
【文章來源】:計算機工程. 2015,41(02)北大核心
【文章頁數(shù)】:5 頁
【部分圖文】:
TCP協(xié)議數(shù)據(jù)發(fā)送流程
第41卷第2期袁中書,陸陽:輕量級TCP/IP協(xié)議棧機制分析與優(yōu)化圖2各函數(shù)占用時間3.4結果分析在發(fā)送數(shù)據(jù)過程中,進行了2次內(nèi)存拷貝:函數(shù)tcp_enqueue()調(diào)用MEMCPY()(默認采用C庫memcpy()函數(shù)實現(xiàn))將應用程序數(shù)據(jù)拷貝到LwIP協(xié)議棧緩沖區(qū);函數(shù)low_level_output()調(diào)用memcpy()將pbuf中的數(shù)據(jù)拷貝到發(fā)送緩沖區(qū)。2次內(nèi)存拷貝耗時百分比分別為20%和16%,占總時間的36%。可見,內(nèi)存拷貝是制約LwIP協(xié)議棧實時性性能的瓶頸之一。函數(shù)ethernet_send()調(diào)用驅動程序將發(fā)送緩沖區(qū)中的數(shù)據(jù)寫入Tx隊列,進而完成物理層的數(shù)據(jù)發(fā)送,其性能取決于驅動程序的效率以及網(wǎng)絡控制器的硬件性能。API_EVENT通過信號量機制喚醒LwIP協(xié)議棧進程,占總時間的20%,其性能取決于操作系統(tǒng)對信號量機制的實現(xiàn)方式。函數(shù)inet_chksum_pseudo()負責TCP包頭字段的校驗;inet_chksum()負責IP報文頭字段的校驗。2次校驗過程占總時間的11%,其效率與其本身算法實現(xiàn)方式以及CPU運算速度相關。函數(shù)netconn_connect()負責與服務端建立連接,占總時間的5%,郵箱操作占總時間的4%,其余代碼的執(zhí)行占總時間的12%。4優(yōu)化方法4.1內(nèi)存拷貝算法優(yōu)化根據(jù)特定的體系架構,使用相應的匯編指令可以有效優(yōu)化內(nèi)存拷貝算法。本文的LwIP協(xié)議棧運行于ARM體系架構下的嵌入式Linux平臺。ARM指令集中LDM(批量加載)和STM(批量存儲)指令可以實現(xiàn)在一組寄存器和一塊連續(xù)的內(nèi)存單元之間傳送數(shù)據(jù)[19]。使用LDM/STM指令傳送內(nèi)存數(shù)據(jù)對訪問的目標內(nèi)存地址以及數(shù)據(jù)長度有限制,目標內(nèi)存地址必須按字對齊,數(shù)據(jù)長度必須是一次傳送字節(jié)數(shù)的整數(shù)倍。緩沖區(qū)內(nèi)存地址通常都是按字對齊的,而數(shù)據(jù)長度則因應用而異。當數(shù)據(jù)長度不是LDM/STM一次傳送字節(jié)數(shù)的整數(shù)倍時,可以先使用LDM/STM指
棧運行于ARM體系架構下的嵌入式Linux平臺。ARM指令集中LDM(批量加載)和STM(批量存儲)指令可以實現(xiàn)在一組寄存器和一塊連續(xù)的內(nèi)存單元之間傳送數(shù)據(jù)[19]。使用LDM/STM指令傳送內(nèi)存數(shù)據(jù)對訪問的目標內(nèi)存地址以及數(shù)據(jù)長度有限制,目標內(nèi)存地址必須按字對齊,數(shù)據(jù)長度必須是一次傳送字節(jié)數(shù)的整數(shù)倍。緩沖區(qū)內(nèi)存地址通常都是按字對齊的,而數(shù)據(jù)長度則因應用而異。當數(shù)據(jù)長度不是LDM/STM一次傳送字節(jié)數(shù)的整數(shù)倍時,可以先使用LDM/STM指令進行塊數(shù)據(jù)傳送,多余的字節(jié)使用LDRB/STRB指令傳送。程序流程如圖3所示。圖3ARM匯編指令內(nèi)存拷貝流程算法主要代碼如下:算法ARM匯編指令內(nèi)存拷貝算法_start:LDRR0,=src;R0=源地址LDRR1,=dst;R1=目的地址MOVR2,#len;R2=數(shù)據(jù)長度ADDR3,R1,R2;R3=結束傳送地址MOVSR4,R2,LSR#4;R4=塊傳送次數(shù)BEQbyte_cpySTMFDSP!,{R5-R8};保存寄存器R5-R8block_cpy:LDMIAR0!,{R5-R8}STMIAR1!,{R5-R8}SUBSR4,R4,#1BNEblock_cpyLDMFDSP!,{R5-R8};恢復寄存器R5-R8byte_cpy:LDRBR4,[R0],#1STRBR4,[R1],#1CMPR1,R3BNEbyte_cpy4.2校驗算法優(yōu)化在LwIP中,校驗函數(shù)inet_chksum_pseudo()與inet_chksum()都是通過循環(huán)調(diào)用LwIP協(xié)議棧內(nèi)置校驗函數(shù)LwIP_standard_chksum()實現(xiàn)的。LwIP_standard_chksum()有3種不同的實現(xiàn)方式,可以通過對宏LwIP_CHKSUM_ALGORITHM定義不同的值來選擇合適的校驗算法。3種校驗算法復雜度依次降低,校驗強度也依次減弱。LwIP默認選擇第1種校驗算法。該算法計算每個字節(jié)的校驗和,校驗強度高,但比較耗時;趨f(xié)319
【參考文獻】:
期刊論文
[1]基于ARM11的嵌入式視頻采集系統(tǒng)設計[J]. 許剛. 測控技術. 2013(12)
[2]網(wǎng)絡化預測控制系統(tǒng)的設計、分析與實時實現(xiàn)(英文)[J]. 劉國平,孫鍵,趙云波. 自動化學報. 2013(11)
[3]嵌入式軟件性能分析方法研究與工具設計[J]. 張惠臻,王超,陳雁. 計算機應用與軟件. 2013(10)
[4]一種ZigBee-TCP/IP無縫網(wǎng)關模型[J]. 王建平,周辰飛,朱程輝,徐曉冰. 合肥工業(yè)大學學報(自然科學版). 2013(09)
[5]移動機器人網(wǎng)絡的嵌入式Web系統(tǒng)設計[J]. 孫鶴旭,邵巖,邢關生,劉寧,田雙娜. 計算機工程. 2013(09)
[6]基于μC/OS-Ⅲ的LwIP協(xié)議棧的移植與實現(xiàn)[J]. 韓德強,楊淇善,王宗俠,高雪園. 電子技術應用. 2013(05)
[7]嵌入式TCP/IP協(xié)議LwIP的內(nèi)存管理機制研究[J]. 蔡雄飛,王新華,郭淑琴. 杭州電子科技大學學報. 2012(04)
[8]Lwip協(xié)議棧在嵌入式Linux下的移植與實現(xiàn)[J]. 張潔,傅明. 微計算機信息. 2011(04)
[9]基于Gprof的函數(shù)調(diào)用順序研究[J]. 孫曉穎,曾文藝. 微計算機信息. 2010(36)
[10]輕量級協(xié)議棧LWIP的分析與改進[J]. 張齊,勞熾元. 計算機工程與設計. 2010(10)
碩士論文
[1]數(shù)字機頂盒以太網(wǎng)接入的設計與實現(xiàn)[D]. 湯維維.武漢理工大學 2008
[2]基于μC/OS-Ⅱ網(wǎng)絡模塊的擴展及任務調(diào)度算法的研究[D]. 陳華兵.武漢理工大學 2007
[3]嵌入式TCP/IP協(xié)議棧的設計與實現(xiàn)[D]. 周海瑞.西北工業(yè)大學 2007
本文編號:3009865
【文章來源】:計算機工程. 2015,41(02)北大核心
【文章頁數(shù)】:5 頁
【部分圖文】:
TCP協(xié)議數(shù)據(jù)發(fā)送流程
第41卷第2期袁中書,陸陽:輕量級TCP/IP協(xié)議棧機制分析與優(yōu)化圖2各函數(shù)占用時間3.4結果分析在發(fā)送數(shù)據(jù)過程中,進行了2次內(nèi)存拷貝:函數(shù)tcp_enqueue()調(diào)用MEMCPY()(默認采用C庫memcpy()函數(shù)實現(xiàn))將應用程序數(shù)據(jù)拷貝到LwIP協(xié)議棧緩沖區(qū);函數(shù)low_level_output()調(diào)用memcpy()將pbuf中的數(shù)據(jù)拷貝到發(fā)送緩沖區(qū)。2次內(nèi)存拷貝耗時百分比分別為20%和16%,占總時間的36%。可見,內(nèi)存拷貝是制約LwIP協(xié)議棧實時性性能的瓶頸之一。函數(shù)ethernet_send()調(diào)用驅動程序將發(fā)送緩沖區(qū)中的數(shù)據(jù)寫入Tx隊列,進而完成物理層的數(shù)據(jù)發(fā)送,其性能取決于驅動程序的效率以及網(wǎng)絡控制器的硬件性能。API_EVENT通過信號量機制喚醒LwIP協(xié)議棧進程,占總時間的20%,其性能取決于操作系統(tǒng)對信號量機制的實現(xiàn)方式。函數(shù)inet_chksum_pseudo()負責TCP包頭字段的校驗;inet_chksum()負責IP報文頭字段的校驗。2次校驗過程占總時間的11%,其效率與其本身算法實現(xiàn)方式以及CPU運算速度相關。函數(shù)netconn_connect()負責與服務端建立連接,占總時間的5%,郵箱操作占總時間的4%,其余代碼的執(zhí)行占總時間的12%。4優(yōu)化方法4.1內(nèi)存拷貝算法優(yōu)化根據(jù)特定的體系架構,使用相應的匯編指令可以有效優(yōu)化內(nèi)存拷貝算法。本文的LwIP協(xié)議棧運行于ARM體系架構下的嵌入式Linux平臺。ARM指令集中LDM(批量加載)和STM(批量存儲)指令可以實現(xiàn)在一組寄存器和一塊連續(xù)的內(nèi)存單元之間傳送數(shù)據(jù)[19]。使用LDM/STM指令傳送內(nèi)存數(shù)據(jù)對訪問的目標內(nèi)存地址以及數(shù)據(jù)長度有限制,目標內(nèi)存地址必須按字對齊,數(shù)據(jù)長度必須是一次傳送字節(jié)數(shù)的整數(shù)倍。緩沖區(qū)內(nèi)存地址通常都是按字對齊的,而數(shù)據(jù)長度則因應用而異。當數(shù)據(jù)長度不是LDM/STM一次傳送字節(jié)數(shù)的整數(shù)倍時,可以先使用LDM/STM指
棧運行于ARM體系架構下的嵌入式Linux平臺。ARM指令集中LDM(批量加載)和STM(批量存儲)指令可以實現(xiàn)在一組寄存器和一塊連續(xù)的內(nèi)存單元之間傳送數(shù)據(jù)[19]。使用LDM/STM指令傳送內(nèi)存數(shù)據(jù)對訪問的目標內(nèi)存地址以及數(shù)據(jù)長度有限制,目標內(nèi)存地址必須按字對齊,數(shù)據(jù)長度必須是一次傳送字節(jié)數(shù)的整數(shù)倍。緩沖區(qū)內(nèi)存地址通常都是按字對齊的,而數(shù)據(jù)長度則因應用而異。當數(shù)據(jù)長度不是LDM/STM一次傳送字節(jié)數(shù)的整數(shù)倍時,可以先使用LDM/STM指令進行塊數(shù)據(jù)傳送,多余的字節(jié)使用LDRB/STRB指令傳送。程序流程如圖3所示。圖3ARM匯編指令內(nèi)存拷貝流程算法主要代碼如下:算法ARM匯編指令內(nèi)存拷貝算法_start:LDRR0,=src;R0=源地址LDRR1,=dst;R1=目的地址MOVR2,#len;R2=數(shù)據(jù)長度ADDR3,R1,R2;R3=結束傳送地址MOVSR4,R2,LSR#4;R4=塊傳送次數(shù)BEQbyte_cpySTMFDSP!,{R5-R8};保存寄存器R5-R8block_cpy:LDMIAR0!,{R5-R8}STMIAR1!,{R5-R8}SUBSR4,R4,#1BNEblock_cpyLDMFDSP!,{R5-R8};恢復寄存器R5-R8byte_cpy:LDRBR4,[R0],#1STRBR4,[R1],#1CMPR1,R3BNEbyte_cpy4.2校驗算法優(yōu)化在LwIP中,校驗函數(shù)inet_chksum_pseudo()與inet_chksum()都是通過循環(huán)調(diào)用LwIP協(xié)議棧內(nèi)置校驗函數(shù)LwIP_standard_chksum()實現(xiàn)的。LwIP_standard_chksum()有3種不同的實現(xiàn)方式,可以通過對宏LwIP_CHKSUM_ALGORITHM定義不同的值來選擇合適的校驗算法。3種校驗算法復雜度依次降低,校驗強度也依次減弱。LwIP默認選擇第1種校驗算法。該算法計算每個字節(jié)的校驗和,校驗強度高,但比較耗時;趨f(xié)319
【參考文獻】:
期刊論文
[1]基于ARM11的嵌入式視頻采集系統(tǒng)設計[J]. 許剛. 測控技術. 2013(12)
[2]網(wǎng)絡化預測控制系統(tǒng)的設計、分析與實時實現(xiàn)(英文)[J]. 劉國平,孫鍵,趙云波. 自動化學報. 2013(11)
[3]嵌入式軟件性能分析方法研究與工具設計[J]. 張惠臻,王超,陳雁. 計算機應用與軟件. 2013(10)
[4]一種ZigBee-TCP/IP無縫網(wǎng)關模型[J]. 王建平,周辰飛,朱程輝,徐曉冰. 合肥工業(yè)大學學報(自然科學版). 2013(09)
[5]移動機器人網(wǎng)絡的嵌入式Web系統(tǒng)設計[J]. 孫鶴旭,邵巖,邢關生,劉寧,田雙娜. 計算機工程. 2013(09)
[6]基于μC/OS-Ⅲ的LwIP協(xié)議棧的移植與實現(xiàn)[J]. 韓德強,楊淇善,王宗俠,高雪園. 電子技術應用. 2013(05)
[7]嵌入式TCP/IP協(xié)議LwIP的內(nèi)存管理機制研究[J]. 蔡雄飛,王新華,郭淑琴. 杭州電子科技大學學報. 2012(04)
[8]Lwip協(xié)議棧在嵌入式Linux下的移植與實現(xiàn)[J]. 張潔,傅明. 微計算機信息. 2011(04)
[9]基于Gprof的函數(shù)調(diào)用順序研究[J]. 孫曉穎,曾文藝. 微計算機信息. 2010(36)
[10]輕量級協(xié)議棧LWIP的分析與改進[J]. 張齊,勞熾元. 計算機工程與設計. 2010(10)
碩士論文
[1]數(shù)字機頂盒以太網(wǎng)接入的設計與實現(xiàn)[D]. 湯維維.武漢理工大學 2008
[2]基于μC/OS-Ⅱ網(wǎng)絡模塊的擴展及任務調(diào)度算法的研究[D]. 陳華兵.武漢理工大學 2007
[3]嵌入式TCP/IP協(xié)議棧的設計與實現(xiàn)[D]. 周海瑞.西北工業(yè)大學 2007
本文編號:3009865
本文鏈接:http://sikaile.net/guanlilunwen/ydhl/3009865.html
最近更新
教材專著