《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于嵌入式的實(shí)時(shí)通信協(xié)議棧研究與設(shè)計(jì)
基于嵌入式的實(shí)時(shí)通信協(xié)議棧研究與設(shè)計(jì)
來(lái)源:電子技術(shù)應(yīng)用2013年第2期
杜文鳳,,王博文
中國(guó)礦業(yè)大學(xué) 信息與電氣工程學(xué)院,,江蘇 徐州221008
摘要: 傳統(tǒng)的TCP/IP協(xié)議重點(diǎn)在于保證數(shù)據(jù)傳輸?shù)目煽啃约傲髁靠刂疲趯?shí)時(shí)性要求相對(duì)較高的嵌入式領(lǐng)域, 其實(shí)時(shí)性方面的性能顯得不足。為此,對(duì)基于TCP/IP協(xié)議的嵌入式通信協(xié)議棧進(jìn)行了分析,針對(duì)通信中的TCP擁塞控制問(wèn)題進(jìn)行了改進(jìn),,有效地提高了TCP/IP協(xié)議的實(shí)時(shí)性,。
中圖分類號(hào): TN915.04
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 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)絡(luò)協(xié)議棧是指通信網(wǎng)絡(luò)中網(wǎng)絡(luò)層與其他各層之間的協(xié)議。嵌入式通信網(wǎng)絡(luò)可看成是一系列功能層,,最上面一層代表的是應(yīng)用程序和網(wǎng)絡(luò)軟件之間的接口,,最下面一層表示網(wǎng)絡(luò)軟件與網(wǎng)絡(luò)物理設(shè)備之間的接口。為了進(jìn)行網(wǎng)絡(luò)之間的通信,,應(yīng)用程序需要從上到下,,通過(guò)協(xié)議棧來(lái)進(jìn)行數(shù)據(jù)的傳輸。網(wǎng)絡(luò)經(jīng)過(guò)協(xié)議棧使信息自下而上傳輸來(lái)實(shí)現(xiàn)與應(yīng)用程序之間的通信,。

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

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

 

 

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

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