《電子技術(shù)應用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設計應用 > 基于嵌入式的實時通信協(xié)議棧研究與設計
基于嵌入式的實時通信協(xié)議棧研究與設計
來源:電子技術(shù)應用2013年第2期
杜文鳳,,王博文
中國礦業(yè)大學 信息與電氣工程學院,,江蘇 徐州221008
摘要: 傳統(tǒng)的TCP/IP協(xié)議重點在于保證數(shù)據(jù)傳輸?shù)目煽啃约傲髁靠刂疲趯崟r性要求相對較高的嵌入式領域,, 其實時性方面的性能顯得不足,。為此,,對基于TCP/IP協(xié)議的嵌入式通信協(xié)議棧進行了分析,針對通信中的TCP擁塞控制問題進行了改進,,有效地提高了TCP/IP協(xié)議的實時性,。
中圖分類號: TN915.04
文獻標識碼: A
文章編號: 0258-7998(2013)02-0026-03
Research and design of embedded real-time communication protocol stack
Du Wenfeng,Wang Bowen
School of Information and Electrical Engineering,China University of Mining and Technology,,Xuzhou 221008,,China
Abstract: Traditional TCP/IP protocol did a lot of effort to ensure the reliability of data transmission and flow control, so that in the field of embedded where real-time requirements are relatively high, TCP/IP protocol revealed a lack of real-time. This paper analyzes the embedded communications protocol stack based on TCP/IP protocol, improves the TCP congestion control problem in communication, and effectively improves the real-time nature of the TCP/IP protocol.
Key words : TCP/IP protocol;real-time

    嵌入式網(wǎng)絡協(xié)議棧是指通信網(wǎng)絡中網(wǎng)絡層與其他各層之間的協(xié)議,。嵌入式通信網(wǎng)絡可看成是一系列功能層,,最上面一層代表的是應用程序和網(wǎng)絡軟件之間的接口,最下面一層表示網(wǎng)絡軟件與網(wǎng)絡物理設備之間的接口,。為了進行網(wǎng)絡之間的通信,,應用程序需要從上到下,通過協(xié)議棧來進行數(shù)據(jù)的傳輸,。網(wǎng)絡經(jīng)過協(xié)議棧使信息自下而上傳輸來實現(xiàn)與應用程序之間的通信,。

    目前,嵌入式系統(tǒng)廣泛應用于工業(yè)控制領域中,,把TCP/IP協(xié)議應用到嵌入式系統(tǒng)中實現(xiàn)數(shù)據(jù)傳輸共享的兼容性網(wǎng)絡有著很大的市場前景,。本文對基于TCP/IP協(xié)議的嵌入式通信協(xié)議棧進行了分析,主要針對通信中的TCP擁塞控制問題進行了改進,。
1 嵌入式通信協(xié)議棧及實時性
    對于嵌入式異構(gòu)型對等異質(zhì)網(wǎng)絡的通信和交互問題,,一種有效的解決方法是設置層次式通信協(xié)議棧。協(xié)議棧是獨立的服務程序或系統(tǒng)軟件,,應用軟件可以通過協(xié)議棧共享不同系統(tǒng)的資源,。嵌入式通信協(xié)議棧位于嵌入式設備中,,向下可以屏蔽不同物理設備和通信協(xié)議,向上可以使不同設備實現(xiàn)信息的發(fā)送與傳輸,。圖1為嵌入式TCP/IP協(xié)議??蚣芙Y(jié)構(gòu)圖。

    為了與外部設備或網(wǎng)絡進行通信,,通常情況下,,嵌入式設備都需要具有以太網(wǎng)口,同時還要有TCP/IP協(xié)議軟件的支持,。然而,,傳統(tǒng)的TCP/IP協(xié)議在實時性方面并不完善,大量的精力被用在保證數(shù)據(jù)傳輸?shù)目煽啃约傲髁靠刂粕?。在實時性要求相對較高的嵌入式領域,,TCP/IP協(xié)議在實時性方面則顯得不足。并且傳統(tǒng)的TCP/IP協(xié)議的實現(xiàn)又比較復雜,,通常要使用大量的系統(tǒng)資源,,而嵌入式系統(tǒng)的資源一般情況下又很有限。此外,,由于嵌入式系統(tǒng)的規(guī)??啥ㄖ啤①Y源有限和實時性等原因,,用于支持其聯(lián)網(wǎng)的TCP/IP協(xié)議,,其實時性要求較高,而且要進行一定程度的裁切,,代碼也要最大程度地精簡[1],。
    嵌入式實時性主要是指嵌入式系統(tǒng)可以快速響應外界的突發(fā)事件,且響應時間是確定的,、可預測的。TCP/IP協(xié)議是嵌入式系統(tǒng)一個很重要的組成部分,,在其管理控制下,,嵌入式系統(tǒng)與外界通信的實時性的高低直接影響到整個嵌入式系統(tǒng)的工作性能,甚至可能導致實際運行中的事故發(fā)生,。因此,,高實時性是嵌入式TCP/IP協(xié)議棧最主要的特點。由于嵌入式網(wǎng)絡中每個節(jié)點是平等的,,沒有特定的路由器,,可以在傳輸?shù)男畔⒅邪溌窊砣男畔ⅲ詫τ诰W(wǎng)絡輔助擁塞控制需要進行相關研究,。
    按照實時系統(tǒng)對于實時性要求的特點,,實時性可以分為軟實時和硬實時兩類,。硬實時系統(tǒng)主要是指系統(tǒng)要能保證在發(fā)生最壞情況時的響應時間,即在任何情況下,,事件的響應時間的截止期限一定要得到保障?,F(xiàn)實中類似的系統(tǒng)比較多,如宇宙飛船配備,、戰(zhàn)斗機等應用方面的控制系統(tǒng),。除此之外,其他的有實時特性的系統(tǒng)都叫做軟實時系統(tǒng),。簡單地說,,是一種超過截止期限并不會帶來重大的不可挽回損失的系統(tǒng),如實時多媒體系統(tǒng)就是一種軟實時系統(tǒng),。
2 擁塞控制算法的改進及性能分析
    本文對嵌入式通信系統(tǒng)擁塞控制算法做了基于數(shù)據(jù)包大小和緊迫度的優(yōu)先級調(diào)度機制以及以動態(tài)形式對緩沖區(qū)的大小進行調(diào)節(jié)等兩方面的改進,。其算法的主要思路是:若TCP連接的緩沖區(qū)大小固定,則一旦緩沖區(qū)數(shù)量變多,,將引起系統(tǒng)性能下降,,最后消耗完系統(tǒng)資源,引起系統(tǒng)崩潰,。而如果系統(tǒng)中緩沖區(qū)比較小的TCP連接特別多,,系統(tǒng)將對緩沖區(qū)進行重新分配,從而使系統(tǒng)的數(shù)據(jù)傳輸能力得到提高,;如果比較少,,則剩下的資源會被分配給緩沖區(qū)中比較大的TCP連接,使TCP流量也可以得到提升[2],。改進措施:采取以動態(tài)形式對緩沖區(qū)窗口大小進行調(diào)節(jié)的方式,,并改進其中的數(shù)據(jù)包調(diào)度機制,按照數(shù)據(jù)包的大小和緊迫度予以調(diào)度,。先調(diào)度緊迫度高,、體積小的數(shù)據(jù)包,即使此連接的緩沖區(qū)變小時仍然可以確保緊迫度高的信息能夠及時被發(fā)送出去,。經(jīng)實驗證明,,通過這兩個方面的改進,能夠明顯提升嵌入式系統(tǒng)的實時通信能力,。具體方法介紹如下,。
2.1 TCP緩沖區(qū)動態(tài)調(diào)節(jié)模塊
    每一個TCP連接的收發(fā)端各有一個Buffer,緩沖區(qū)當中存有準備發(fā)送或接收的信息,,所以其又可以分為發(fā)送緩沖區(qū)與接收緩沖區(qū),。接收端廣播窗口的大小由接收緩沖區(qū)的最大可用內(nèi)存大小決定,同時允許發(fā)送端發(fā)送超過之前確認的信息量也是由接收緩沖區(qū)當中的最大可用內(nèi)存大小決定。若發(fā)送端的擁塞窗口內(nèi)存空間大于接收端接收窗口的內(nèi)存空間大小,,則此連接的窗口內(nèi)存空間就會被接收端窗口空間所限制,;若接收窗口空間較大,則允許大批量數(shù)據(jù)由發(fā)送端不間斷發(fā)送,,發(fā)送端應用程序傳輸給TCP層的信息在沒有被接收端確認之前,,暫由發(fā)送緩沖區(qū)存放。如果發(fā)送緩沖區(qū)內(nèi)存空間比傳輸鏈路上的帶寬大,,則會出現(xiàn)一部分信息始終將緩沖區(qū)占據(jù)的情況,,從而出現(xiàn)浪費內(nèi)存和鏈路傳輸受限的現(xiàn)象;如果發(fā)送緩沖區(qū)內(nèi)存空間太小,,當出現(xiàn)傳輸信息量較大時,,則會引起傳輸流量變小,影響通信速率和通信系統(tǒng)的實時性,。
    對于單個的TCP連接,,可以通過增大緩沖區(qū)內(nèi)存空間的方法提高傳輸速率。但當發(fā)生同一時間多個連接存在的情況時,,此方法不但會在網(wǎng)絡發(fā)生擁塞時有內(nèi)存資源被浪費的現(xiàn)象出現(xiàn),,而且即使當網(wǎng)絡沒有出現(xiàn)擁塞的情況下,每個連接的發(fā)送端由于擁塞窗口無限變大的原因,,會將內(nèi)存資源最后消耗完,,甚至引起系統(tǒng)死鎖。對于此問題,,本文以緩沖區(qū)動態(tài)調(diào)節(jié)為出發(fā)點的擁塞控制算法進行了研究,,得出該算法不但能夠滿足自動調(diào)節(jié)網(wǎng)絡擁塞的要求,還可以實現(xiàn)優(yōu)化利用緩沖區(qū),。只需對緩沖區(qū)進行合理公平與高效率的利用,,就是緩沖區(qū)調(diào)節(jié)算法的最終目的。
    TCP傳輸信息的具體過程由一個數(shù)據(jù)結(jié)構(gòu)來實現(xiàn)維護和管理,,所有應用程序進程都可以共享這個數(shù)據(jù)結(jié)構(gòu),,該數(shù)據(jù)結(jié)構(gòu)稱作傳輸控制塊(TCB)。每個TCP連接都有一個傳輸控制塊,,其含有相關TCP連接的一切信息,,包含連接端點的地址與端口號、發(fā)送與接收的數(shù)據(jù),、平均往返時間以及對是否需要確認或者是重發(fā)進行判斷等。
2.2 基于數(shù)據(jù)包大小和緊迫度的調(diào)度模塊
    每一個TCP連接均有一個接收緩沖區(qū)與一個發(fā)送緩沖區(qū),,每個緩沖區(qū)中都含有許多隊列,。TCP以報文段為單位進行傳輸,報文段的大小不固定。而以太網(wǎng)數(shù)據(jù)傳輸中,,數(shù)據(jù)包大小不一,,且相差很大。在這種情況下公平排隊算法就不適用,,使信息傳輸受影響[3],。因為公平排隊算法只是將數(shù)據(jù)包依據(jù)先進先出原則按次序向數(shù)據(jù)包輪詢調(diào)度器進行提交,結(jié)果導致下列情況的發(fā)生:(1)數(shù)據(jù)包處于隊列當中的等待時間不夠合理,;(2)在輪詢調(diào)度器輪詢于各隊列時,,會造成數(shù)據(jù)包大的傳輸分配到很大的帶寬資源,出現(xiàn)帶寬分配不合理的情況,。
    為了使該問題得到有效解決,,以提高系統(tǒng)實時性,可以采用優(yōu)先傳輸緊迫度要求比較高而本身又較小的數(shù)據(jù)包的方法,。如何根據(jù)數(shù)據(jù)包的大小與緊迫度這兩個因素來對數(shù)據(jù)包的優(yōu)先級別進行界定,,這里采用數(shù)據(jù)包體積和緊迫度形成的二維優(yōu)先級表來對數(shù)據(jù)包的優(yōu)先級別進行界定的方法[4]。
    數(shù)據(jù)包的優(yōu)先級別主要決定于包的體積與緊迫度,,為此構(gòu)建二維優(yōu)先級表:橫坐標是數(shù)據(jù)包的體積,,縱坐標是其緊迫度,則優(yōu)先級別計算如下:
 
2.3 實例驗證
    本文主要研究了對嵌入式通信協(xié)議棧的設計和對TCP擁塞控制算法進行進一步改進的問題,??紤]到所測試數(shù)據(jù)要有足夠的準確性,將10次實驗結(jié)果都求均值后才得到測試中的所有數(shù)據(jù),。ICMP和IP都是網(wǎng)絡層協(xié)議,,在這里只對ICMP模塊進行測試。
    (1)試驗方法
    Ping是一個通信協(xié)議,,是IP協(xié)議的一部分,,可以用于檢查網(wǎng)絡是否能夠連通。在命令提示符下輸入:PING(IP地址),,就會返回相應的測試結(jié)果,。根據(jù)測試結(jié)果,就可以判斷本機與遠程主機之間的連通性,。其原理是:利用網(wǎng)絡上機器IP地址的唯一性,,給目標IP地址發(fā)送一個數(shù)據(jù)包,再要求對方返回一個同樣大小的數(shù)據(jù)包來確定兩臺網(wǎng)絡機器是否連接相通以及時延是多少,。
    當PC機通過Ping向開發(fā)板發(fā)送ICMP請求數(shù)據(jù)包時,,主機觀察返回ICMP請求數(shù)據(jù)包的響應時間、大小,、以及丟失率等信息,,若這些信息正確,,則說明目的站點收到ICMP請求報文。
    (2)實驗結(jié)果
    實驗結(jié)果如圖3,、圖4所示,。由圖中可以看到,數(shù)據(jù)包較小時,,協(xié)議棧的移植對系統(tǒng)的通信性能影響不大,;一旦數(shù)據(jù)包超過800 B,移植協(xié)議棧之后系統(tǒng)通信時,,ICMP報文的包丟失率就開始下降,,同時系統(tǒng)響應時間也更快,即實時性得到了提高,。這表明對實時通信協(xié)議棧和擁塞算法改進之后,,明顯地改善了嵌入式系統(tǒng)的通信性能。

 

 

    本文主要對嵌入式實時通信協(xié)議棧和擁塞控制算法進行了分析與改進,,提出動態(tài)調(diào)節(jié)緩沖區(qū)大小的方法實現(xiàn)了緩沖區(qū)的優(yōu)化,;基于數(shù)據(jù)包大小和緊迫度的優(yōu)先級調(diào)度機制,提高了TCP傳輸流量,。對移植改進后的嵌入式實時通信協(xié)議棧和擁塞控制算法的數(shù)據(jù)傳輸進行了測試,,通過PC機利用Ping命令向開發(fā)板發(fā)送數(shù)據(jù),測試了ICMP模塊,。結(jié)果顯示,,當傳輸數(shù)據(jù)超過800 B時,數(shù)據(jù)包響應時間更短,,包丟失率也有所下降,,通信實時性得到明顯提高。
參考文獻
[1] 陳麗蓉.嵌入式軟件系統(tǒng)的實時性設計[J].單片機和嵌入式系統(tǒng)應用,,2001(3):18.
[2] 趙國鋒,,邱作雨,張毅.基于單片機的嵌入式TCP/IP協(xié)議棧的設計與實現(xiàn)[J].計算機技術(shù)與發(fā)展,,2009,,19(3):137-140.
[3] STALLINGS W,謝希仁.數(shù)據(jù)與計算機通信[M].王海,,張娟,,譯.北京:電子工業(yè)出版社,2004.
[4] 廖日坤.CPLD/FPGA嵌入式應用開發(fā)技術(shù)白金手冊[M].北京:中國電力出版社,,2005.
[5] 王志平,,熊光澤.實時調(diào)度算法研究[J].電子科技大學學報,2000,,29(2):205-208.

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。