黃云婷,江 南,杜承烈
(1.西北工業大學計算機學院,西安710129;2.中國船舶重工集團公司750試驗場,昆明650051)
一種跨平臺的實時TCP/IP協議棧設計
黃云婷1,江 南2,杜承烈1
(1.西北工業大學計算機學院,西安710129;2.中國船舶重工集團公司750試驗場,昆明650051)
為提高異構系統下網絡通信的實時性,提出一種跨平臺的實時TCP/IP協議棧(RTTCP/IP)實現方法。運用操作系統適配技術屏蔽底層數據處理的差異性,增強協議棧的可移植性和可擴展性;通過簡化TCP/IP協議棧的結構,減少協議棧對系統資源的占用;采用內存映射技術,將內核空間地址映射到用戶空間,避免用戶與內核間的數據拷貝操作;引入基于時分多址的介質訪問機制和數據包優先級策略,防止網絡傳輸沖突,解決數據包優先級倒置問題。測試結果表明,RTTCP/IP實現方法能夠減少系統開銷和通信延遲,提高系統實時性和穩定性。
TCP/IP協議棧;實時性;通信協議;內存管理;數據包優先級;介質訪問
目前,以太網的應用非常廣泛,TCP/IP協議棧已經成為全球通信的網絡標準[1]。然而,在不同操作系統和硬件資源環境下,TCP/IP協議棧實現復雜且多樣,需要占用大量系統資源,其實時性能受到很大限制,不能滿足虛擬實驗系統對實時性的要求。因此,探索一種實時TCP/IP協議棧的實現方法,使其適合于特定要求的分布虛擬實驗系統,具有很重要的意義和價值。本文提出一種跨平臺的實時TCP/IP(Real-time TCP/IP,RTTCP/IP)協議棧的實現方法。
TCP/IP協議族[2]是一個Internet協議系統,TCP和IP是2個最著名和最重要的協議,它包括多種其他協議,如應用協議、管理性協議以及一些工具性協議[3]。
TCP/IP協議棧由應用層、傳輸層、網絡層以及網絡接口層構成。TCP/IP的每層都包含了一些相對獨立的協議,其實現復雜,在實時性要求嚴格的分布虛擬實驗系統存在以下問題:
(1)體積大,占有系統資源多。標準的TCP/IP協議棧實現復雜,代碼量大,需要消耗大量的內存空間。因此,為減少對系統資源的占用,提高系統性能,如何對標準TCP/IP協議棧進行裁剪和優化是需要考慮的問題。
(2)移植性和可擴展性差,不能滿足跨平臺的需要。因此,需要考慮操作系統、CPU體系和編譯器的不同,定義編譯器和操作系統無關的變量,避免系統的依賴性。
(3)任務調度造成的執行時間不確定性,導致延遲難以估計。主要包括基于線程的優先級倒置和基于數據包的優先級倒置問題帶來的處理延遲。
(4)數據包穿越協議棧帶來的延遲。主要包括數據復制延遲和協議處理延遲[4]。標準TCP/IP協議棧中數據包穿越協議棧期間至少需要經過2次內存拷貝操作,同時數據包可能會經歷由一些傳輸控制算法帶來的不確定延遲,例如TCP協議為了保證傳輸的可靠性和傳輸效率,所使用的流量控制和擁塞控制算法易導致過大的時延和抖動[5]。
(5)介質傳輸的不確定性。數據鏈路層采用載波監聽多點接入/碰撞檢測(Carrier Sense Multiple Access with Collision Detection,CSMA/CD)進行傳輸介質訪問,造成以太網通信延遲的不確定性和不公平性,導致系統性能下降。以太網的不確定性已經成為其在工業實時控制應用中的主要障礙[6]。
圖1為TCP/IP協議棧的層次結構。

圖1 網絡層次結構
根據以上分析,為提高異構系統下網絡通信的實時性,本文提出一種基于TCP/IP的跨平臺實時協議棧實現方法。
RTTCP/IP協議棧通過簡化TCP/IP協議棧的結構,降低了系統開銷和協議處理時間;采用內存映射技術,避免了用戶與內核間的數據拷貝操作;引入基于時分多址(Time Division Multiple Address, TDMA)的介質訪問機制和數據包優先級策略,減少了網絡傳輸沖突,解決了數據包優先級倒置問題,提高了網絡通信的實時性能;運用操作系統適配技術屏蔽了操作系統相關性,為上層提供一套操作系統無關接口。本節詳細介紹了RTTCP/IP協議棧實現過程采用的關鍵技術。
3.1 TCP/IP協議棧的簡化
標準TCP/IP協議棧包含諸多協議,而一些協議在通信中并不是必需的,因此,RTTCP/IP協議棧只保留了TCP,UDP,IP,ICMP,ARP/RARP協議的實現。
圖2為 RTTCP/IP網絡體系結構,最下層為Linux和Windows操作系統內核處理模塊,提供網絡通信協議處理的系統支持;操作系統適配層屏蔽操作系統相關性,為上層提供一套操作系統無關接口。Windows操作系統適配層采用NDIS[7-8]屏蔽底層不同的物理硬件,為上層提供一套操作系統無關接口,使上層可以和底層任何型號的網卡通信。

圖2 RTTCP/IP網絡體系結構
系統核心部分是RTTCP/IP協議棧,其中,傳輸層裁剪掉了標準TCP協議中的擁塞控制、流量控制等復雜機制。網絡層將動態ARP協議轉換為靜態,并在創建套接字時完成地址解析,將之存儲于全局MAC鏈表中。數據發送過程中無需發送ARP請求,直接從本機MAC鏈表中獲取目的主機MAC地址即可。如果出現一個新的地址,則解析失敗。IP協議屏蔽IP分片,將TOS字段和分片偏移字段作為預留字段。數據鏈路層通過改變MAC層的CSMA/ CD協議以保證網絡通信時間的確定性。RTTCP/IP協議棧采用基于時間槽的MAC規則:TDMA方式,為每個節點分配時間片,每個節點在各自時間片內發送數據,從而確保每個數據發送時間的可預測性。
位于RTTCP/IP協議棧之上的是系統調用函數接口,應用程序使用該接口傳遞請求給內核,內核完成所需處理,并將結果返回給應用程序。
3.2 緩沖區管理機制
緩沖區管理機制[9]分為動態內存分配和靜態內存分配。靜態分配是指編譯時就已經分配好內存空間,運行中不需要分配內存時間,在實時系統中非常重要。動態分配是指運行時才動態分配所需的內存空間,其分配的時間和成功率都不確定,不適合于實時性要求較高的應用。
標準TCP/IP協議采用動態內存分配技術,增加了系統調用時間,降低了系統的實時性能。RTTCP/ IP協議棧為了避免動態內存分配時間的不確定性,采用靜態緩沖區分配機制進行內存分配,該策略不會出現分配失敗的情況,且速度快。數據收發前,預先分配全局發送緩沖區池、全局重發緩沖區池和所創建套接字的接收緩沖區池以減少數據收發過程中進行動態內存分配和釋放所需的系統開銷;同時采用內存映射技術,將靜態分配的內核空間映射到用戶空間,從而減少了用戶/內核到內核/用戶的數據拷貝過程。圖3為內存映射關系示意圖。

圖3 內存映射關系示意圖
靜態內存分配機制減少了動態內存分配和釋放的系統開銷以及系統調用時間,同時結合內存映射技術將內核空間地址映射到用戶空間減少了用戶和內核之間的數據拷貝次數,為零拷貝技術[10-11]的實現奠定了基礎,提高了系統的實時性。
3.3 數據包優先級機制
標準TCP/IP協議棧對數據包的處理順序采用先進先出(First In First Out,FIFO)的方式,該方法實現簡單、成本低,但是不能提供QoS功能和隔離技術,缺乏公平性。這種方式將導致數據包的處理時間不是由優先級決定而是由FIFO隊列中掛在其前面的數據包的數量來決定。采用這種方式來處理數據包將使得緊急的命令或數據包的處理時間不可預見,進而影響系統的實時性能。為了解決FIFO隊列處理數據包方式帶來的數據包優先級倒置問題,本文引入數據包優先級標識,保證優先級高的數據包處理先于優先級低的數據包處理,而相同優先級的數據仍然采用FIFO方式進行數據包處理,進而保證緊急數據包能夠在可預見的時間內得到處理,以滿足網絡通信的實時性。圖4為優先級隊列示意圖。

圖4 優先級隊列示意圖
用戶調用發送函數時,內核處理函數按照優先級將用戶寫入的數據添加到對應的優先隊列中。發送線程首先發送高優先級隊列中的報文,再發送低優先級隊列中的報文,相同優先級的報文仍然采用FIFO方式進行數據包處理。采用這種方式可以保證每次發送報文時,總是能先將優先級高的報文發送出去,從而減少了網絡擁塞時高優先級報文的發送時延,使得緊急數據能夠得到快速處理。
當有數據包到達網卡時,網卡驅動將數據包存放于接收緩沖區池中,接收線程負責將數據包從接收緩沖區池取出,并對其進行解析,將正確的數據添加到對應套接字的接收鏈表中,等待用戶讀取。用戶調用接收函數,內核處理函數從接收套接字的接收鏈表中取出最早接收到的數據返回給用戶,完成數據接收。
3.4 基于TDMA的介質訪問機制
標準TCP/IP協議棧采用CSMA/CD協議進行傳輸介質訪問,造成以太網通信延遲的不確定性。為了保證以太網通信延遲確定性以及可預測性,本文采用基于時分多址(Time Division Multiple Access,TDMA)[12]的介質訪問機制實現對網絡介質的訪問,以滿足實時以太網通信時間的可預測性要求。
TDMA方式將時間分成一系列的時間片,給物理網絡段內的每個節點都分配一個時間片,相應地,每個節點在各自固定的時間片內發送消息,進而保證每個信息的確切發送時間。TDMA機制允許節點在一個周期內可以使用多個時間槽,而且可以設定特定的周期和在時間槽中的相位,這樣可限制網絡中的負載或在不同節點間共享時間槽。TDMA協議能給實時通信帶來合理的帶寬,每個節點在各自的時間槽內可以傳送它們的數據信息,可以進行大量的可預測通信,具有可靠性、可預測性、高效率和充分利用總線等特點[13]。對于同一時間槽內,如果存在多個數據包等待傳送,則按照數據包的優先級進行傳送,相同優先級數據包按照FIFO方式進行傳送。
3.5 操作系統適配技術
標準TCP/IP協議棧在可移植性和可擴展性方面存在明顯的不足,不能滿足跨平臺的需求。為了保證TCP/IP協議棧的可移植性和可擴展性,RTTCP/IP協議棧增加了操作系統適配層以屏蔽操作系統相關性,為上層提供一套操作系統無關接口,使上層可以和底層任何型號的網卡通信,如圖5所示。

圖5 操作系統適配結構
操作系統適配技術的引入使得RTTCP/IP協議棧能夠適配不同操作系統,保證一套協議棧代碼不需要修改即能在不同操作系統上直接運行。協議處理接口通過操作系統適配層與各個操作系統接口交互,實現TCP/IP協議棧的跨平臺可移植性。
本文選用UDP和TCP協議在不同操作系統下通信來測試RTTCP/IP協議棧的實時性和穩定性。測試方案為:在局域網內,客戶機向服務器發送長度分別為 64 Byte,128 Byte,256 Byte,512 Byte, 800 Byte,1 024 Byte,1 200 Byte,1 500 Byte的UDP和TCP數據報文各1 000次,實驗記錄1 000個數據報文往返時間作為測試參數,記錄次數各50次,并對標準TCP/IP協議棧下UDP和TCP通信進行相同測試,測試結果如圖6、圖7所示。

圖6 TCP/IP協議棧改進前后UDP通信傳輸時間對比

圖7 TCP/IP協議棧改進前后TCP通信傳輸時間對比
圖8為協議棧改進前后UDP通信傳輸時間方差對比示意圖,圖9為協議棧改進前后TCP通信傳輸時間方差對比示意圖。
從圖6、圖7可以看出,RTTCP/IP協議棧可以無縫地運行在Windows和Linux操作系統下,并且比標準協議棧的傳輸延遲小,特別當傳輸數據包大小超過1 000 Byte時,效果更加明顯,從圖8、圖9可知,改進后傳輸時間的樣本方差明顯更小,說明RTTCP/IP協議棧傳輸延遲波動小,具有更好的穩定性。測試結果表明,RTTCP/IP協議棧具有跨平臺性,傳輸數據包的時間穩定,且通過該協議棧傳輸相同大小數據包的速度明顯優于標準的TCP/IP協議棧,能夠很好地滿足網絡通信的實時性。

圖8 TCP/IP協議棧改進前后UDP通信傳輸時間方差對比

圖9 TCP/IP協議棧改進前后TCP通信傳輸時間方差對比
本文提出一種跨平臺的實時TCP/IP協議棧實現方法,詳細介紹了RTTCP/IP協議棧實現中采用的一些關鍵技術。通過簡化TCP/IP協議棧,設計一套內存管理機制,采用數據包優先級機制和基于TDMA的介質訪問機制等策略提高網絡通信的實時性,并通過對比實驗證明了該實現方法的可行性。實驗結果表明,該實現方法能保證實時網絡通信的可控性、穩定性,適用于對實時性要求較高的場合。在今后工作中,將針對協議棧接口進行性能和功能回歸測試,提出更高效和安全的處理流程,進一步提高協議棧的通信性能及增加協議棧的可靠性。
[1] 杜 敏.TCP/IP協議棧的輕量級多線程實現[D].上海:復旦大學,2009.
[2] Richard S W.TCP/IP詳解卷1:協議[M].范建華,譯.北京:機械工業出版社,2010.
[3] 楊延雙,張建標,王全民,等.TCP/IP協議分析及應用[M].北京:機械工業出版社,2010.
[4] 陳進朝,杜承烈,黃俊江.Xenomai平臺下基于以太網的實時通信方案[J].計算機工程,2012,38(10):86-88,91.
[5] 邢志浩,王 宏,淘 詞.RT-Linux下基于Ethernet的實時通信[J].計算機工程與應用,2005,41(13): 24-26.
[6] 陳 磊.從現場總線到工業以太網的實時性問題研究[D].杭州:浙江大學,2004.
[7] 陳 帆,史彩成.Windows驅動開發技術詳解[M].北京:電子工業出版社,2008.
[8] 譚 文,楊 瀟,邵堅磊.寒江獨釣——Windows內核安全編程[M].北京:電子工業出版社,2009.
[9] 于 曉,王家禮.嵌入式系統網絡實時性能的優化[J].電子測量與儀器學報,2009,23(3):60-64.
[10] Li Yunchen,Chiang M L.LyraNET:A Zero-copy TCP/ IP Pro-tocol Stack for Embedded Operating Systems [C]//Proc.of the 11th IEEE International Conference on Embedded and Real-time Computing Systems and Appli-cations.Hong Kong,China:[s.n.],2005: 123-128.
[11] 可向民,龔正虎,夏建東.零拷貝技術及其實現的研究[J].計算機工程與科學,2000,22(5):17-24.
[12] Mao Jianlin,Wu Zhiming,Wu Xing.A TDMA SchedulingSchemeforMany-to-oneCommunicationin Wire-less Sensor Networks[J].Computer Communications,2007,30(4):863-872.
[13] 張 劼.基于RTnet實時協議的數據傳輸時間及QoS研究[D].蘭州:蘭州大學,2008.
編輯 陸燕菲
A Design of Cross-platform Real-time TCP/IP Protocol Stack
HUANG Yun-ting1,JIANG Nan2,DU Cheng-lie1
(1.School of Computer,Northwestern Polytechnical University,Xi'an 710129,China;
2.750 Testing Ground,China Shipbuilding Industry Corporation,Kunming 650051,China)
In order to improve the real-time performance of a heterogeneous communication system,this paper proposes a cross-platform Real-time TCP/IP(RTTCP/IP)protocol stack.It introduces an OS independent layer in RTTCP/IP to shield the difference of system-level data processing to provide a good portability and extensibility.It simplifies the standard TCP/IP in RTTCP/IP so that less system resources are demanded,which makes RTTCP/IP a light-weight protocol stack.It avoids duplicating the data packets while delivering the data within the RTTCP/IP protocol stack,and it attempts to adopt a TDMA MAC in the RTTCP/IP protocol stack to avoid communication collisions.Besides,to guarantee the emergency data can be processed in the foreseeable period of time,it introduces a priority mechanism to tackle the thread,or packet,priority reversing problem.Test results show that the RTTCP/IP implementation method can reduce the system overhead and communication delay,and improve system real-time performance and stability.
TCP/IP protocol stack;real-time;communication protocol;memory management;packet priority; media access
1000-3428(2014)09-0134-04
A
TP393.04
10.3969/j.issn.1000-3428.2014.09.027
國家部委基金資助項目。
黃云婷(1989-),女,碩士研究生,主研方向:異構網絡,協議棧設計;江 南,研究員;杜承烈,教授、博士生導師。
2013-07-25
2013-10-07E-mail:605090754@qq.com