《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 面向設備監控的LwIP協議棧擴展設計
面向設備監控的LwIP協議棧擴展設計
來源:電子技術應用2013年第6期
孫棣華1,2,陸 旭1,2,廖孝勇1,2,鄭林江2,3,余楚中1
1.重慶大學 自動化學院,重慶400044; 2.重慶大學 信息物理社會可信服務計算教育部重點實驗室,重慶400044; 3.重慶大學 計算機學院,重慶400044
摘要: 針對遠程設備監控中數據傳輸速度慢、傳輸距離有限、無法監控設備網絡狀態等問題,提出一種基于改進輕型IP協議棧(LwIP)的設備監控方案。在嵌入式ARM硬件平臺和μC/OS-Ⅱ軟件平臺基礎上,采用LwIP協議棧實現了監控終端網絡通信功能。通過擴展LwIP中因特網信報控制協議(ICMP)模塊中的報文應答機制,完成了對ICMP數據報文的監聽和處理,以達到對遠端設備的實時監控。實驗結果證明了設計方案的可行性和實用性。
中圖分類號: TP274+.2
文獻標識碼: A
文章編號: 0258-7998(2013)06-0010-04
Expansion design of LwIP in device monitoring
Sun Dihua1,2,Lu Xu1,2,Liao Xiaoyong1,2,Zheng Linjiang2,3,Yu Chuzhong1
1.College of Automation,Chongqing University,Chongqing 400044,China; 2.Key Laboratory of Dependable Service Computing in Cyber Physical Society of Ministry of Education, Chongqing University,Chongqing 400044,China; 3.College of Computer Science,Chongqing University,Chongqing 400044,China
Abstract: Aiming at problems of slow speed of data transmission, restricted transmission distance and difficulty to get monitoring device network state in remote device monitoring, this paper designs a new device monitoring scheme which is based on improved LwIP. This scheme realizes the function of the network by transplanting LwIP on ARM platform and μC/OS-Ⅱ system. In order to achieve the purpose of real-time monitoring on remote device, it completes monitoring and treatment of the ICMP message by improving ICMP support in LwIP. The experimental results prove the feasibility and practicability of the scheme.
Key words : LwIP;device monitoring;STM32F207;ICMP

    設備監控系統可獲得設備的工作環境參數和設備運行狀況,對確保設備安全正常運行、充分發揮設備效能、提高企業經濟效益有極其重要的作用[1]。目前已有許多企業構建了設備監控系統,但大部分是通過RS232、RS485和CAN總線等協議進行通信,不僅在數據傳輸距離和傳輸速度上有很大限制,而且無法直接接入互聯網,無法滿足信息化條件下對企業生產作業管理的要求[2]。本文將結合嵌入式技術和網絡技術,設計一種遠程設備監控方案,保證設備工作狀態的準確采集和快速傳遞,同時輔助工作人員實現對現場設備的及時維護與管理。

    瑞士計算機科學院的Adam Dunkels等開發了一套用于嵌入式系統的TCP/IP協議棧-LwIP,這是一種既可以移植到操作系統上,又可以獨立運行的輕型嵌入式TCP/IP協議棧,其主要特點是在保持TCP協議主要功能的基礎上減少了對RAM的占用[2-3]。LwIP作為一種嵌入式網絡協議棧,具有相對齊全的功能,并提供一套非常完善的內存管理方法,適合在32位的低端嵌入式系統中使用。
    在綜合考慮設計成本和穩定性等多方面因素后,本文在32位ARM處理器 STM32F207和嵌入式實時操作系統μC/OS-II組成的軟硬件平臺上移植和改進LwIP協議棧,從而實現了對遠端設備的監控與管理。
1 系統硬件平臺
    設備監控系統主要包括以太網通信和本地數據采集兩大模塊。采用STM32F207系列作為開發板核心處理器,硬件功能模塊主要包括網絡功能模塊、串口設備驅動模塊、A/D模塊、看門狗定時器功能模塊、Flash數據讀寫模塊等,通過各模塊之間的互相輔助與合作,保證監控終端的穩定可靠工作,實現配電狀態檢測、網絡狀態檢測以及環境溫濕度數據采集等功能,并通過以太網向上位機傳遞現場設備信息[4]。硬件電路結構框圖如圖1所示。

3 LwIP協議的移植與改進
3.1 LwIP協議進程模式

    LwIP的設計與實現采用分層模式,每層協議都解決網絡通信的一部分問題并作為獨立的模塊來實現,提供一些與其他協議的接口函數。各層之間通過共享內存的方式實現通信,從而減少了內存拷貝開銷,提高其性能[5]。LwIP所支持的協議主要包括IP、ICMP、UDP和TCP等協議,這些模塊能夠完成網絡通信的主要功能。除此之外,還設計了一些輔助模塊,主要包括內存管理子系統、操作系統模擬層、網絡API函數等[6]。
3.2 LwIP協議的移植
    (1)與CPU或編譯器相關的文件移植
    修改/include/arch目錄下cc.h文件中有關數據長度、字的高低位順序等的宏定義。同時,使用_packed關鍵字聲明結構體struct,以便LwIP讀取pbuf結構體中不同長度的數據[2]。
    (2)與操作系統相關的部分
    LwIP中使用信號量通信,所以在 sys_arch.h、sys_arch.c中應實現信號量結構體sys_sem_t和相關的信號量處理函數,包括sys_sem_new()、sys_ sem _free()、sys_sem_signal()、sys_arch_sem_wait()等,完成信號量的建立、釋放、發送和等待接收功能。同時,LwIP使用消息隊列來緩沖、傳遞數據報文, 因此需要實現消息隊列結構體sys_mbox_t以及相應的操作函數(包括sys_mbox_new()、sys_mbox_free()、sys_mbox_post()等),從而實現消息隊列的創建、釋放、發送和獲取等功能。
    LwIP與外界網絡連接的線程都有獨立的等待超時時間,也就要求在移植過程中用戶要實現sys_arch_
timeouts()函數, 返回當前該線程所對應的timeout隊列指針。另外,LwIP 中網絡數據的處理需要新建任務來完成操作, 有必要實現sys_thread_new()函數來保證數據處理任務在操作系統中能夠被建立。
    (3)相關庫函數的實現
    LwIP協議棧中用到了8個外部函數,主要完成16 bit數據的高低字節交換、32 bit數據的大小頭對調、返回字符串長度、字符串比較、內存數據塊拷貝、指定長度的數據塊清零等功能,與系統或編譯器有關,需要用戶實現。
    (4)網絡設備驅動程序
    在LwIP中可以有多個網絡接口,每個網絡接口都對應了一個struct netif結構,這個netif包含了相應網絡接口的屬性、收發函數。在網絡設備驅動程序中主要是實現4個網絡接口函數:網卡初始化、網卡接收數據、網卡發送數據以及網卡中斷處理函數。
3.3 LwIP問題分析
    LwIP中對ICMP協議的數據處理比較簡單,基本流程如圖3所示。底層物理接口將接收ICMP包并向上傳送至網絡層,經由IP模塊中的ip_input()函數移交到ICMP層處理,在ICMP協議中調用icmp_input()函數解析出IP包頭、ICMP包頭及數據內容。一些ICMP信息被傳遞到更高協議層并被傳輸層的一些特殊函數處理,其中函數icmp_dest_unreach()用來通過傳輸層的UDP協議發送目標無法到達消息[7]。通常情況下,使用ICMP ECHO信息來探測LwIP協議移植情況,主要在函數icmp_input()中完成對ICMP ECHO信息的響應,包括地址信息驗證、目的與源地址進行交換、修改ICMP數據類型、求取校驗和,然后通過IP層協議中的ip_output()將應答信息回傳。

    但是在設備監控中,要求LwIP能夠識別ICMP_ER類型的回送報文。因此,需要對LwIP中的ICMP模塊進行補充,以滿足嵌入式終端對局域網中設備網絡狀態的監控。另外,為了模擬類似Linux系統中ping功能系統調用,需要開發相應的功能接口函數來組成所需IP數據包,并通過IP層的報文發送函數ip_output()或者原始套接字將數據包發送到目的主機,以達到監控網絡狀態的目的。
3.4 LwIP改進方法
    根據以上所述問題,本文所采取的改進方法主要包括合成ICMP報文、建立套接字并發送報文到目的地址、添加ICMP協議支持這三個基本步驟。
    (1)ping指令簡介
    因特網包探索器ping(packet internet groper),是用來檢查網絡是否通暢或者網絡連接速度的命令。ping發送一個ICMP包,發送請求消息給目的主機并報告是否收到所希望的ICMP應答。ping本質上屬于IP協議層,并且根據用戶輸入不同的指令參數返回網絡狀態信息。
    (2)合成ICMP_ER報文
    LwIP本身具有一套較為完善的內存管理機制,利用pbuf結構實現數據傳遞,這與BSD中的Mbuf 很相似。pbuf主要用于保存用戶應用程序與LwIP之間互相傳遞的用戶數據。利用LwIP提供的內存分配函數pbuf_alloc(),在RAM中分配一塊空間存儲IP數據包,數據大小為sizeof(struct icmp_echo_hdr),然后填充icmp_echo_hdr類型對象iecho。基本過程如下:
    q=pbuf_alloc(PBUF_IP,sizeof(struct IcmpHeader),
PBUF_RAM);
    iecho=q->payload;
    iecho->type=ICMP_ECHO;
    iecho->code=0;
    iecho->seqno=htons(1);
    iecho->id=htons(13);
    iecho->chksum=0;  //由硬件求取校驗和
    (3)通過RAW套接字發送請求
    RAW SOCKET可以接收本機網卡上的所有數據幀或者數據包,這對于監聽網絡的流量和分析是很有作用的。所以選擇利用LwIP提供的API套接字函數操作建立RAW SOCKET,并調用lwip_sendto()函數將數據通過RAW SOCKET發送到目的IP。基本過程如下:
    sockfd=socket(AF_INET,SOCK_RAW,IPPROTO_ICMP);
    lwip_sendto(sockfd,q->payload, sizeof(q->payload), 0,
(struct sockaddr *) & dest_addr,sizeof(dest_addr));
    (4)修改ICMP協議文件
    為了實現對ICMP_ER消息的監聽和處理,需要對/src/core/ipv4目錄下的icmp.c文件做補充修改。在主要的報文處理函數icmp_input()中,添加ICMP_ER消息中斷響應方法,由于IP包頭已經被剝離,所以需要在switch(type){}框架中添加case ICMP_ER:單元,主要處理是計算響應時間和消息存活時間,并提取icmp_seq、對方IP地址等相關信息,主要實現方法如下:
    case ICMP_ER:
    timeofrecv = OSTimeGet();
    iechr = (struct IcmpHeader *)p->payload;
    timeofsend = iechr->timestamp;
    timeofrecv = (timeofrecv - timeofsend) * 1000 /
OS_TICKS_PER_SEC;
    printf("%d byte from %s: icmp_seq=%u ttl=%d rtt=
%u ms \n\r",ntohs(iphdr->_len),ip_ntoa(&(iphdr->src)),
ntohs(iecho->seqno),IPH_TTL(iphdr),timeofrecv);
4 實驗分析
4.1 LwIP移植情況測試

    移植情況測試是通過設備監控終端與PC之間的網絡ping指令實現的。監控終端IP地址為:172.20.36.93,主機IP地址為:172.20.36.72。從圖4中可以看出,終端響應時間為1 ms,可以滿足數據快速收發的要求,數據存活時間為ttl=255 ms,丟包率為0,說明LwIP協議已經移植成功。

4.2 改進后設備監控功能測試
    在地址為172.20.36.72的主機上使用IP Sinffer軟件偵聽網絡中傳遞上來的ICMP報文,如圖5所示。分析圖5可知,主機接收到了多條由終端發送上來的ICMP報文,數據包具體內容顯示在右側邊框中,IP數據包的內容是ICMP_ER類型的ICMP報文;ID號0x0D與終端中所設置的報文ID相等,即iecho->id=htons(13);序號為1與終端中所設置的報文序號相等,即iecho->seqno=htons(1)。由此說明終端中所合成的ICMP_ER類型的IP報文已經成功發送到了目的地址,并且目的主機立刻返回了ICMP請求。

 

 

    對實驗環境的具體要求:通過監控終端監測IP尾數為204和128的設備網絡狀態,同時監測設備電源配電狀況并回顯配電狀態參數。分析圖6可知,局域網內被監控設備網絡連接正常,能快速響應網絡檢測數據包,丟包率為0,說明對LwIP的協議棧優化后,能夠發送網絡狀態檢測數據,并獲得對方主機響應。另外,監控終端與主機網絡連接正常,可以將設備狀態參數通過網絡及時上傳到控制中心。

    本文在分析設備遠程監控實際需求的基礎上,以32位微處理器STM32F207系列的處理器為核心,完成了LwIP嵌入式TCP/IP協議棧的移植與改進,設計并實現了一個基于改進LwIP的設備監控方案。該方案已經在實驗室環境下完成了樣機的研制并驗證了其功能。實踐表明,改進后的LwIP彌補了原有協議棧對ICMP協議功能支持上的不足,滿足了用戶需要,相信在未來的設備監控等領域必將有著廣闊的應用前景。
參考文獻
[1] 孫彩云,李世中,李麗麗,等.基于ZigBee技術的設備監控系統設計[J].水電能源科學,2010,11(28):125-127.
[2] 張亞魁.基于LwIP的嵌入式WEB服務器的研究與實現[D].合肥:合肥工業大學,2009:14-19.
[3] 楊曄.實時操作系統的μC/OS-Ⅱ下TCP/IP協議棧的實現[J].單片機與嵌入式系統應用,2003(7):80-83.
[4] 王暉,周巧娣,章雪挺,等.基于LwIP的海洋數據采集與傳輸系統[J].電子技術應用,2012,38(8):26-29.
[5] Duan Zhiyu,Zhao Zhaowang.A study of the Ethernet  throughput performance of the embedded system[J].Astronomical Research and Technology,2007,4(3):266-275.
[6] DUNKELS A.Design and implementation of the LwIP TCP/IP stack[EB/OL].(2001-2-1)[2004-2-1].http://www.ece.ualberta.ca/~cmpe401/fall2004/labs/docs/lwip.pdf.
[7] 徐鑫,曹奇英.基于LwIP協議棧的UDP協議分析與優化[J].計算機應用與軟件,2011,28(3):246-249.

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 三级黄a| 欧美视频在线一区二区三区 | 在线免费观看视频黄 | 久久精品成人国产午夜 | 老司机午夜在线 | 成人羞羞视频播放网站 | 五月婷中文字幕 | 成人国产一区二区三区 | 亚洲欧美韩国日产综合在线 | 最近中文字幕2019免费6 | 国产精品正在播放 | 天天舔天天爱 | 亚洲欧美日韩高清一区二区三区 | 看全色黄大色黄大片免责看的 | 欧美日韩国产综合在线小说 | 亚洲日韩精品欧美一区二区一 | 男人爱看的视频网站免费 | 国产第一福利 | 一个人看的www网站 一个人看的www在线 | 欧美成a人片免费看久久 | 国内在线观看精品免费视频 | 免费中文字幕视频 | 一本三道a无线码一区v | 日韩亚洲国产欧美精品 | 黄色欧美在线观看 | 国产ppp视频在线观看 | 国产特黄一级一片免费 | 欧美在线视频精品 | 男女摸下面刺激免费视频软件 | 手机看理论片 | 亚洲影视久久 | 丁香激情六月天 | 欧美性猛交xxxx免费看手交 | 污片在线观看 | 做久爱视频在线观看 | 波多在线视频 | 一本一道dvd在线播放器 | 黄色国产精品 | 自偷自偷自亚洲首页精品 | 日韩色影院 | 欧美一级特黄乱妇高清视频 |