一种跨平台的实时TCP/IP协议栈设计
2014-06-06黄云婷杜承烈
黄云婷,江 南,杜承烈
(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协议栈;实时性;通信协议;内存管理;数据包优先级;介质访问
1 概述
目前,以太网的应用非常广泛,TCP/IP协议栈已经成为全球通信的网络标准[1]。然而,在不同操作系统和硬件资源环境下,TCP/IP协议栈实现复杂且多样,需要占用大量系统资源,其实时性能受到很大限制,不能满足虚拟实验系统对实时性的要求。因此,探索一种实时TCP/IP协议栈的实现方法,使其适合于特定要求的分布虚拟实验系统,具有很重要的意义和价值。本文提出一种跨平台的实时TCP/IP(Real-time TCP/IP,RTTCP/IP)协议栈的实现方法。
2 TCP/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 网络层次结构
3 RTTCP/IP协议栈实现方法
根据以上分析,为提高异构系统下网络通信的实时性,本文提出一种基于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协议栈的跨平台可移植性。
4 测试与结果分析
本文选用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通信传输时间方差对比
5 结束语
本文提出一种跨平台的实时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