杜文鳳,王博文
(中國礦業(yè)大學 信息與電氣工程學院,江蘇 徐州 221008)
嵌入式網絡協(xié)議棧是指通信網絡中網絡層與其他各層之間的協(xié)議。嵌入式通信網絡可看成是一系列功能層,最上面一層代表的是應用程序和網絡軟件之間的接口,最下面一層表示網絡軟件與網絡物理設備之間的接口。為了進行網絡之間的通信,應用程序需要從上到下,通過協(xié)議棧來進行數據的傳輸。網絡經過協(xié)議棧使信息自下而上傳輸來實現(xiàn)與應用程序之間的通信。
目前,嵌入式系統(tǒng)廣泛應用于工業(yè)控制領域中,把TCP/IP協(xié)議應用到嵌入式系統(tǒng)中實現(xiàn)數據傳輸共享的兼容性網絡有著很大的市場前景。本文對基于TCP/IP協(xié)議的嵌入式通信協(xié)議棧進行了分析,主要針對通信中的TCP擁塞控制問題進行了改進。
對于嵌入式異構型對等異質網絡的通信和交互問題,一種有效的解決方法是設置層次式通信協(xié)議棧。協(xié)議棧是獨立的服務程序或系統(tǒng)軟件,應用軟件可以通過協(xié)議棧共享不同系統(tǒng)的資源。嵌入式通信協(xié)議棧位于嵌入式設備中,向下可以屏蔽不同物理設備和通信協(xié)議,向上可以使不同設備實現(xiàn)信息的發(fā)送與傳輸。圖1為嵌入式TCP/IP協(xié)議??蚣芙Y構圖。
為了與外部設備或網絡進行通信,通常情況下,嵌入式設備都需要具有以太網口,同時還要有TCP/IP協(xié)議軟件的支持。然而,傳統(tǒng)的TCP/IP協(xié)議在實時性方面并不完善,大量的精力被用在保證數據傳輸的可靠性及流量控制上。在實時性要求相對較高的嵌入式領域,TCP/IP協(xié)議在實時性方面則顯得不足。并且傳統(tǒng)的TCP/IP協(xié)議的實現(xiàn)又比較復雜,通常要使用大量的系統(tǒng)資源,而嵌入式系統(tǒng)的資源一般情況下又很有限。此外,由于嵌入式系統(tǒng)的規(guī)??啥ㄖ啤①Y源有限和實時性等原因,用于支持其聯(lián)網的TCP/IP協(xié)議,其實時性要求較高,而且要進行一定程度的裁切,代碼也要最大程度地精簡[1]。
嵌入式實時性主要是指嵌入式系統(tǒng)可以快速響應外界的突發(fā)事件,且響應時間是確定的、可預測的。TCP/IP協(xié)議是嵌入式系統(tǒng)一個很重要的組成部分,在其管理控制下,嵌入式系統(tǒng)與外界通信的實時性的高低直接影響到整個嵌入式系統(tǒng)的工作性能,甚至可能導致實際運行中的事故發(fā)生。因此,高實時性是嵌入式TCP/IP協(xié)議棧最主要的特點。由于嵌入式網絡中每個節(jié)點是平等的,沒有特定的路由器,可以在傳輸的信息中包含鏈路擁塞的信息,所以對于網絡輔助擁塞控制需要進行相關研究。
按照實時系統(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)。
本文對嵌入式通信系統(tǒng)擁塞控制算法做了基于數據包大小和緊迫度的優(yōu)先級調度機制以及以動態(tài)形式對緩沖區(qū)的大小進行調節(jié)等兩方面的改進。其算法的主要思路是:若TCP連接的緩沖區(qū)大小固定,則一旦緩沖區(qū)數量變多,將引起系統(tǒng)性能下降,最后消耗完系統(tǒng)資源,引起系統(tǒng)崩潰。而如果系統(tǒng)中緩沖區(qū)比較小的TCP連接特別多,系統(tǒng)將對緩沖區(qū)進行重新分配,從而使系統(tǒng)的數據傳輸能力得到提高;如果比較少,則剩下的資源會被分配給緩沖區(qū)中比較大的TCP連接,使TCP流量也可以得到提升[2]。改進措施:采取以動態(tài)形式對緩沖區(qū)窗口大小進行調節(jié)的方式,并改進其中的數據包調度機制,按照數據包的大小和緊迫度予以調度。先調度緊迫度高、體積小的數據包,即使此連接的緩沖區(qū)變小時仍然可以確保緊迫度高的信息能夠及時被發(fā)送出去。經實驗證明,通過這兩個方面的改進,能夠明顯提升嵌入式系統(tǒng)的實時通信能力。具體方法介紹如下。
每一個TCP連接的收發(fā)端各有一個Buffer,緩沖區(qū)當中存有準備發(fā)送或接收的信息,所以其又可以分為發(fā)送緩沖區(qū)與接收緩沖區(qū)。接收端廣播窗口的大小由接收緩沖區(qū)的最大可用內存大小決定,同時允許發(fā)送端發(fā)送超過之前確認的信息量也是由接收緩沖區(qū)當中的最大可用內存大小決定。若發(fā)送端的擁塞窗口內存空間大于接收端接收窗口的內存空間大小,則此連接的窗口內存空間就會被接收端窗口空間所限制;若接收窗口空間較大,則允許大批量數據由發(fā)送端不間斷發(fā)送,發(fā)送端應用程序傳輸給TCP層的信息在沒有被接收端確認之前,暫由發(fā)送緩沖區(qū)存放。如果發(fā)送緩沖區(qū)內存空間比傳輸鏈路上的帶寬大,則會出現(xiàn)一部分信息始終將緩沖區(qū)占據的情況,從而出現(xiàn)浪費內存和鏈路傳輸受限的現(xiàn)象;如果發(fā)送緩沖區(qū)內存空間太小,當出現(xiàn)傳輸信息量較大時,則會引起傳輸流量變小,影響通信速率和通信系統(tǒng)的實時性。
對于單個的TCP連接,可以通過增大緩沖區(qū)內存空間的方法提高傳輸速率。但當發(fā)生同一時間多個連接存在的情況時,此方法不但會在網絡發(fā)生擁塞時有內存資源被浪費的現(xiàn)象出現(xiàn),而且即使當網絡沒有出現(xiàn)擁塞的情況下,每個連接的發(fā)送端由于擁塞窗口無限變大的原因,會將內存資源最后消耗完,甚至引起系統(tǒng)死鎖。對于此問題,本文以緩沖區(qū)動態(tài)調節(jié)為出發(fā)點的擁塞控制算法進行了研究,得出該算法不但能夠滿足自動調節(jié)網絡擁塞的要求,還可以實現(xiàn)優(yōu)化利用緩沖區(qū)。只需對緩沖區(qū)進行合理公平與高效率的利用,就是緩沖區(qū)調節(jié)算法的最終目的。
TCP傳輸信息的具體過程由一個數據結構來實現(xiàn)維護和管理,所有應用程序進程都可以共享這個數據結構,該數據結構稱作傳輸控制塊(TCB)。每個TCP連接都有一個傳輸控制塊,其含有相關TCP連接的一切信息,包含連接端點的地址與端口號、發(fā)送與接收的數據、平均往返時間以及對是否需要確認或者是重發(fā)進行判斷等。
每一個TCP連接均有一個接收緩沖區(qū)與一個發(fā)送緩沖區(qū),每個緩沖區(qū)中都含有許多隊列。TCP以報文段為單位進行傳輸,報文段的大小不固定。而以太網數據傳輸中,數據包大小不一,且相差很大。在這種情況下公平排隊算法就不適用,使信息傳輸受影響[3]。因為公平排隊算法只是將數據包依據先進先出原則按次序向數據包輪詢調度器進行提交,結果導致下列情況的發(fā)生:(1)數據包處于隊列當中的等待時間不夠合理;(2)在輪詢調度器輪詢于各隊列時,會造成數據包大的傳輸分配到很大的帶寬資源,出現(xiàn)帶寬分配不合理的情況。
為了使該問題得到有效解決,以提高系統(tǒng)實時性,可以采用優(yōu)先傳輸緊迫度要求比較高而本身又較小的數據包的方法。如何根據數據包的大小與緊迫度這兩個因素來對數據包的優(yōu)先級別進行界定,這里采用數據包體積和緊迫度形成的二維優(yōu)先級表來對數據包的優(yōu)先級別進行界定的方法[4]。
數據包的優(yōu)先級別主要決定于包的體積與緊迫度,為此構建二維優(yōu)先級表:橫坐標是數據包的體積,縱坐標是其緊迫度,則優(yōu)先級別計算如下:
式中,p為數據包的優(yōu)先級,Xi為數據包大小,Yj為數據包緊迫度。優(yōu)先級計算方法示意圖如圖2所示[5],假如存在一些數據包其橫坐標和縱坐標之和相等(即其對應的坐標位于坐標系的一條斜線之上),則由圖2能夠得到優(yōu)先調度體積較小的數據包。優(yōu)先級別的判斷十分重要,預先定制完成數據包的優(yōu)先級,再按照緊迫度和包的體積經綜合考慮以后將優(yōu)先級確定下來。緊迫度與數據包體積之和相等時,優(yōu)先調度體積較小的數據包。
本文主要研究了對嵌入式通信協(xié)議棧的設計和對TCP擁塞控制算法進行進一步改進的問題??紤]到所測試數據要有足夠的準確性,將10次實驗結果都求均值后才得到測試中的所有數據。ICMP和IP都是網絡層協(xié)議,在這里只對ICMP模塊進行測試。
(1)試驗方法
Ping是一個通信協(xié)議,是IP協(xié)議的一部分,可以用于檢查網絡是否能夠連通。在命令提示符下輸入:PING(IP地址),就會返回相應的測試結果。根據測試結果,就可以判斷本機與遠程主機之間的連通性。其原理是:利用網絡上機器IP地址的唯一性,給目標IP地址發(fā)送一個數據包,再要求對方返回一個同樣大小的數據包來確定兩臺網絡機器是否連接相通以及時延是多少。
當PC機通過Ping向開發(fā)板發(fā)送ICMP請求數據包時,主機觀察返回ICMP請求數據包的響應時間、大小、以及丟失率等信息,若這些信息正確,則說明目的站點收到ICMP請求報文。
(2)實驗結果
實驗結果如圖3、圖4所示。由圖中可以看到,數據包較小時,協(xié)議棧的移植對系統(tǒng)的通信性能影響不大;一旦數據包超過800 B,移植協(xié)議棧之后系統(tǒng)通信時,ICMP報文的包丟失率就開始下降,同時系統(tǒng)響應時間也更快,即實時性得到了提高。這表明對實時通信協(xié)議棧和擁塞算法改進之后,明顯地改善了嵌入式系統(tǒng)的通信性能。
本文主要對嵌入式實時通信協(xié)議棧和擁塞控制算法進行了分析與改進,提出動態(tài)調節(jié)緩沖區(qū)大小的方法實現(xiàn)了緩沖區(qū)的優(yōu)化;基于數據包大小和緊迫度的優(yōu)先級調度機制,提高了TCP傳輸流量。對移植改進后的嵌入式實時通信協(xié)議棧和擁塞控制算法的數據傳輸進行了測試,通過PC機利用Ping命令向開發(fā)板發(fā)送數據,測試了ICMP模塊。結果顯示,當傳輸數據超過800 B時,數據包響應時間更短,包丟失率也有所下降,通信實時性得到明顯提高。
[1]陳麗蓉.嵌入式軟件系統(tǒng)的實時性設計[J].單片機和嵌入式系統(tǒng)應用,2001(3):18.
[2]趙國鋒,邱作雨,張毅.基于單片機的嵌入式TCP/IP協(xié)議棧的設計與實現(xiàn)[J].計算機技術與發(fā)展,2009,19(3):137-140.
[3]STALLINGS W,謝希仁.數據與計算機通信[M].王海,張娟,譯.北京:電子工業(yè)出版社,2004.
[4]廖日坤.CPLD/FPGA嵌入式應用開發(fā)技術白金手冊[M].北京:中國電力出版社,2005.
[5]王志平,熊光澤.實時調度算法研究[J].電子科技大學學報,2000,29(2):205-208.