《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 设计应用 > 基于嵌入式的实时通信协议栈研究与设计
基于嵌入式的实时通信协议栈研究与设计
来源:电子技术应用2013年第2期
杜文凤,王博文
中国矿业大学 信息与电气工程学院,江苏 徐州221008
摘要: 传统的TCP/IP协议重点在于保证数据传输的可靠性及流量控制,而在实时性要求相对较高的嵌入式领域, 其实时性方面的性能显得不足。为此,对基于TCP/IP协议的嵌入式通信协议栈进行了分析,针对通信中的TCP拥塞控制问题进行了改进,有效地提高了TCP/IP协议的实时性。
关键词: TCPIP协议 实时性
中图分类号: 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

    嵌入式网络协议栈是指通信网络中网络层与其他各层之间的协议。嵌入式通信网络可看成是一系列功能层,最上面一层代表的是应用程序和网络软件之间的接口,最下面一层表示网络软件与网络物理设备之间的接口。为了进行网络之间的通信,应用程序需要从上到下,通过协议栈来进行数据的传输。网络经过协议栈使信息自下而上传输来实现与应用程序之间的通信。

    目前,嵌入式系统广泛应用于工业控制领域中,把TCP/IP协议应用到嵌入式系统中实现数据传输共享的兼容性网络有着很大的市场前景。本文对基于TCP/IP协议的嵌入式通信协议栈进行了分析,主要针对通信中的TCP拥塞控制问题进行了改进。
1 嵌入式通信协议栈及实时性
    对于嵌入式异构型对等异质网络的通信和交互问题,一种有效的解决方法是设置层次式通信协议栈。协议栈是独立的服务程序或系统软件,应用软件可以通过协议栈共享不同系统的资源。嵌入式通信协议栈位于嵌入式设备中,向下可以屏蔽不同物理设备和通信协议,向上可以使不同设备实现信息的发送与传输。图1为嵌入式TCP/IP协议栈框架结构图。

    为了与外部设备或网络进行通信,通常情况下,嵌入式设备都需要具有以太网口,同时还要有TCP/IP协议软件的支持。然而,传统的TCP/IP协议在实时性方面并不完善,大量的精力被用在保证数据传输的可靠性及流量控制上。在实时性要求相对较高的嵌入式领域,TCP/IP协议在实时性方面则显得不足。并且传统的TCP/IP协议的实现又比较复杂,通常要使用大量的系统资源,而嵌入式系统的资源一般情况下又很有限。此外,由于嵌入式系统的规模可定制、资源有限和实时性等原因,用于支持其联网的TCP/IP协议,其实时性要求较高,而且要进行一定程度的裁切,代码也要最大程度地精简[1]。
    嵌入式实时性主要是指嵌入式系统可以快速响应外界的突发事件,且响应时间是确定的、可预测的。TCP/IP协议是嵌入式系统一个很重要的组成部分,在其管理控制下,嵌入式系统与外界通信的实时性的高低直接影响到整个嵌入式系统的工作性能,甚至可能导致实际运行中的事故发生。因此,高实时性是嵌入式TCP/IP协议栈最主要的特点。由于嵌入式网络中每个节点是平等的,没有特定的路由器,可以在传输的信息中包含链路拥塞的信息,所以对于网络辅助拥塞控制需要进行相关研究。
    按照实时系统对于实时性要求的特点,实时性可以分为软实时和硬实时两类。硬实时系统主要是指系统要能保证在发生最坏情况时的响应时间,即在任何情况下,事件的响应时间的截止期限一定要得到保障。现实中类似的系统比较多,如宇宙飞船配备、战斗机等应用方面的控制系统。除此之外,其他的有实时特性的系统都叫做软实时系统。简单地说,是一种超过截止期限并不会带来重大的不可挽回损失的系统,如实时多媒体系统就是一种软实时系统。
2 拥塞控制算法的改进及性能分析
    本文对嵌入式通信系统拥塞控制算法做了基于数据包大小和紧迫度的优先级调度机制以及以动态形式对缓冲区的大小进行调节等两方面的改进。其算法的主要思路是:若TCP连接的缓冲区大小固定,则一旦缓冲区数量变多,将引起系统性能下降,最后消耗完系统资源,引起系统崩溃。而如果系统中缓冲区比较小的TCP连接特别多,系统将对缓冲区进行重新分配,从而使系统的数据传输能力得到提高;如果比较少,则剩下的资源会被分配给缓冲区中比较大的TCP连接,使TCP流量也可以得到提升[2]。改进措施:采取以动态形式对缓冲区窗口大小进行调节的方式,并改进其中的数据包调度机制,按照数据包的大小和紧迫度予以调度。先调度紧迫度高、体积小的数据包,即使此连接的缓冲区变小时仍然可以确保紧迫度高的信息能够及时被发送出去。经实验证明,通过这两个方面的改进,能够明显提升嵌入式系统的实时通信能力。具体方法介绍如下。
2.1 TCP缓冲区动态调节模块
    每一个TCP连接的收发端各有一个Buffer,缓冲区当中存有准备发送或接收的信息,所以其又可以分为发送缓冲区与接收缓冲区。接收端广播窗口的大小由接收缓冲区的最大可用内存大小决定,同时允许发送端发送超过之前确认的信息量也是由接收缓冲区当中的最大可用内存大小决定。若发送端的拥塞窗口内存空间大于接收端接收窗口的内存空间大小,则此连接的窗口内存空间就会被接收端窗口空间所限制;若接收窗口空间较大,则允许大批量数据由发送端不间断发送,发送端应用程序传输给TCP层的信息在没有被接收端确认之前,暂由发送缓冲区存放。如果发送缓冲区内存空间比传输链路上的带宽大,则会出现一部分信息始终将缓冲区占据的情况,从而出现浪费内存和链路传输受限的现象;如果发送缓冲区内存空间太小,当出现传输信息量较大时,则会引起传输流量变小,影响通信速率和通信系统的实时性。
    对于单个的TCP连接,可以通过增大缓冲区内存空间的方法提高传输速率。但当发生同一时间多个连接存在的情况时,此方法不但会在网络发生拥塞时有内存资源被浪费的现象出现,而且即使当网络没有出现拥塞的情况下,每个连接的发送端由于拥塞窗口无限变大的原因,会将内存资源最后消耗完,甚至引起系统死锁。对于此问题,本文以缓冲区动态调节为出发点的拥塞控制算法进行了研究,得出该算法不但能够满足自动调节网络拥塞的要求,还可以实现优化利用缓冲区。只需对缓冲区进行合理公平与高效率的利用,就是缓冲区调节算法的最终目的。
    TCP传输信息的具体过程由一个数据结构来实现维护和管理,所有应用程序进程都可以共享这个数据结构,该数据结构称作传输控制块(TCB)。每个TCP连接都有一个传输控制块,其含有相关TCP连接的一切信息,包含连接端点的地址与端口号、发送与接收的数据、平均往返时间以及对是否需要确认或者是重发进行判断等。
2.2 基于数据包大小和紧迫度的调度模块
    每一个TCP连接均有一个接收缓冲区与一个发送缓冲区,每个缓冲区中都含有许多队列。TCP以报文段为单位进行传输,报文段的大小不固定。而以太网数据传输中,数据包大小不一,且相差很大。在这种情况下公平排队算法就不适用,使信息传输受影响[3]。因为公平排队算法只是将数据包依据先进先出原则按次序向数据包轮询调度器进行提交,结果导致下列情况的发生:(1)数据包处于队列当中的等待时间不够合理;(2)在轮询调度器轮询于各队列时,会造成数据包大的传输分配到很大的带宽资源,出现带宽分配不合理的情况。
    为了使该问题得到有效解决,以提高系统实时性,可以采用优先传输紧迫度要求比较高而本身又较小的数据包的方法。如何根据数据包的大小与紧迫度这两个因素来对数据包的优先级别进行界定,这里采用数据包体积和紧迫度形成的二维优先级表来对数据包的优先级别进行界定的方法[4]。
    数据包的优先级别主要决定于包的体积与紧迫度,为此构建二维优先级表:横坐标是数据包的体积,纵坐标是其紧迫度,则优先级别计算如下:
 
2.3 实例验证
    本文主要研究了对嵌入式通信协议栈的设计和对TCP拥塞控制算法进行进一步改进的问题。考虑到所测试数据要有足够的准确性,将10次实验结果都求均值后才得到测试中的所有数据。ICMP和IP都是网络层协议,在这里只对ICMP模块进行测试。
    (1)试验方法
    Ping是一个通信协议,是IP协议的一部分,可以用于检查网络是否能够连通。在命令提示符下输入:PING(IP地址),就会返回相应的测试结果。根据测试结果,就可以判断本机与远程主机之间的连通性。其原理是:利用网络上机器IP地址的唯一性,给目标IP地址发送一个数据包,再要求对方返回一个同样大小的数据包来确定两台网络机器是否连接相通以及时延是多少。
    当PC机通过Ping向开发板发送ICMP请求数据包时,主机观察返回ICMP请求数据包的响应时间、大小、以及丢失率等信息,若这些信息正确,则说明目的站点收到ICMP请求报文。
    (2)实验结果
    实验结果如图3、图4所示。由图中可以看到,数据包较小时,协议栈的移植对系统的通信性能影响不大;一旦数据包超过800 B,移植协议栈之后系统通信时,ICMP报文的包丢失率就开始下降,同时系统响应时间也更快,即实时性得到了提高。这表明对实时通信协议栈和拥塞算法改进之后,明显地改善了嵌入式系统的通信性能。

 

 

    本文主要对嵌入式实时通信协议栈和拥塞控制算法进行了分析与改进,提出动态调节缓冲区大小的方法实现了缓冲区的优化;基于数据包大小和紧迫度的优先级调度机制,提高了TCP传输流量。对移植改进后的嵌入式实时通信协议栈和拥塞控制算法的数据传输进行了测试,通过PC机利用Ping命令向开发板发送数据,测试了ICMP模块。结果显示,当传输数据超过800 B时,数据包响应时间更短,包丢失率也有所下降,通信实时性得到明显提高。
参考文献
[1] 陈丽蓉.嵌入式软件系统的实时性设计[J].单片机和嵌入式系统应用,2001(3):18.
[2] 赵国锋,邱作雨,张毅.基于单片机的嵌入式TCP/IP协议栈的设计与实现[J].计算机技术与发展,2009,19(3):137-140.
[3] STALLINGS W,谢希仁.数据与计算机通信[M].王海,张娟,译.北京:电子工业出版社,2004.
[4] 廖日坤.CPLD/FPGA嵌入式应用开发技术白金手册[M].北京:中国电力出版社,2005.
[5] 王志平,熊光泽.实时调度算法研究[J].电子科技大学学报,2000,29(2):205-208.

此内容为AET网站原创,未经授权禁止转载。