论文导读:2可靠数据报协议通信模块任务划分在整个RUDP软件结构中,协议处理任务和UDP套接字守护任务的分工如图1。(2)序列号机制RUDP通信模块将用户待发数据分成若干个字段进行传输(如果需要分组)。5结论本文针对通常传输层协议的不足,设计并实现了嵌入式实时系统中RUDP通信模块,最后给出测试分析及结果。
关键词:实时系统,可靠数据报协议,通信模块
可靠数据报协议(Reliable UDP,RUDP)是一个基于传输协议的简单的包,它的理论基础是RFCs1151和RFC908可靠数据协议[1]。RUDP位于UDP/IP之上,为虚拟连接提供可靠的有序的数据发送。
1可靠数据报协议通信模块的基本功能概括起来本软件模块提供的主要功能有:基于消息的收发功能,;确认延迟功能;选择性确认功能;校验和功能;保证包的顺序到达;丢弃重复包功能;保存失序包功能;超时重发功能;失序的快速重发功能;滑动窗口(需要有窗口通告、发送窗口、接收窗口)、流量控制机制;保活机制;检错机制;安全传输机制(主要是每个包都有一个该链接的ID,该功能可选);尽最大努力重传(保证消息可靠运行)[2]。
2可靠数据报协议通信模块任务划分在整个RUDP软件结构中,协议处理任务和UDP套接字守护任务的分工如图1 。

图1协议处理任务和套接字守护任务的分工 图中椭圆内的部分表示软件实体,箭头所指的方框表示相应软件实体完成的功能。用户接口包括用户建立连接、关闭连接、发送用户数据、接收数据及查看连接状态等请求。RUDP协议处理任务是RUDP软件模块的核心部分,包括用户请求事件处理、定时器事件处理及字段到达事件处理。对来自用户及UDP的字段进行处理。UDP套接字的守护任务主要是接收来自套接口的各种消息包,并根据各种包的类型进行相应的处理,更多的时候将RUDP包转发给RUDP协议处理任务进行处理。
3 RUDP采用的主要控制机制(1)面向连接的机制连接的建立:在RUDP的实现中,采用和TCP种类似的三次握手方式。论文大全。
(2)序列号机制 RUDP通信模块将用户待发数据分成若干个字段进行传输(如果需要分组)。每个数据字段被分配一个在此连接中唯一的序列号(Sequence),并且序列号的编排顺序与用户待传输数据排放顺序一致,用以标识字段,并保证用户数据的顺序原始性。
(3)重传机制 每当发送一个带有用户数据字段、空字段或带有初始序列号的字段后,发送端便启动重传定时器(Retran Timer),当重传定时器计时到达重传超时值(RetransmissionTimeout Value)时,还没得到接收方的相应字段的确认,便重发此字段;当重发此字段的次数超过最大重传次数时(Max Retrans),则认为连接失败,复位连接。当接收到相应字段的确认后,复位重传定时器。
(4)丢弃重复字段机制 每当收到带有数据字段后,便对该字段进行确认记录,只对未确认的数据字段进行确认,丢弃已确认的重复字段。
(5)校验机制 RUDP通信模块式承载在UDP通信机制之上的,利用UDP通信机制的校验位,可使RUDP字段进行校验,确保字段的正确性。若收到带有用户数据的字段校验错误,则丢弃该字段。此项工作在UDP协议层完成。
(6)保活机制 每一连接中,客户端及服务器端各有一个空字段定时器(NULL Segment Timer),用来探测连接是否有效。
(7)滑动窗口机制 [3]RUDP通过滑动窗口进行消息的收发同步以及流量控制。滑窗模型如图2所示。

图2滑动窗口模型 图中的收发两个循环中各个箭头都沿逆时针运动,即只能沿着循环队列的增长方向运动。运动的规则是,当接收方的可接收的最大消息的序号和已接收的最大消息序号重合的时候接收窗口就停止转动,最终导致发送窗口也停止转动。在接收和发送窗口都不运动的情况下,双方可以进行消息的重传、窗口探测和链路保活这三种动作。
(8)流量控制机制 利用上面设计的滑动窗口还可以实现流量控制。流量控制的原则,就是指在大流量时接收窗口可能会长时间为零的情况下,接收方只有在接收窗口增大到一个合适的值时才向发送方发送窗口通告。通过这样有效的对发送方的发送速度进行控制,就可以防止在大流量时出现网络过度拥塞的现象。
4实验的设计及结果(1)CPU间进程异步消息通信测试 目的是测试CPU间2个进程互发异步消息的通信效率。论文大全。设置3个测试进程,测试控制进程发启动测试消息,测试进程1收到启动测试消息后,发送异步通信消息到测试进程2,测试进程2收到进程1发送的异步通信消息后,发送异步通信消息到进程1,如此实现进程1和进程2互发消息。测试进程1收到测试进程2回发的异步消息后记录消息发送次数和当前系统运行时间(tick数)。论文大全。根据运行时间和消息数计算出通信效率。进程1和进程2配置为CPU间的两个进程。每个消息长度为sizeof(T_MSG) + 50 =90,实验结果如表1。
表1 VxWorks下CPU间进程异步通信测试结果
通信消息数(条) |
10000 |
100000 |
130000 |
200000 |
平均效率 |
使用 RUDP |
时间(TICK) |
1159 |
11695 |
15178 |
23410 |
|
效率(Mb/s) |
0.745 |
0.741 |
0.740 |
0.738 |
0.741 |
使用 TCP |
时间(TICK) |
1340 |
13521 |
17509 |
26930 |
|
效率(Mb/s) |
0.644 |
0.640 |
0.642 |
0.640 |
0.642 |
(2)CPU间进程同步消息通信测试 目的是测试CPU间2个进程互发同步消息的通信效率。设置3个测试进程,测试控制进程发启动测试消息,测试进程1收到启动测试消息后,发送同步通信消息到测试进程2,测试进程2收到进程1发送的同步通信消息后填充同步应答数据区。测试进程1收到同步应答后记录消息发送次数和当前系统运行时间(tick数)。根据运行时间和消息数计算出通信效率。
表2 VxWorks下CPU间进程同步通信测试结果表
通信消息数(条) |
10000 |
100000 |
130000 |
200000 |
平均效率 |
使用 RUDP |
时间(TICK) |
1004 |
10046 |
13371 |
21073 |
|
效率(Mb/s) |
0.43 |
0.43 |
0.42 |
0.41 |
0.423 |
使用 TCP |
时间(TICK) |
1231 |
12310 |
16007 |
24752 |
|
效率(Mb/s) |
0.35 |
0.35 |
0.35 |
0.35 |
0.350 |
5结论本文针对通常传输层协议的不足,设计并实现了嵌入式实时系统中RUDP通信模块,最后给出测试分析及结果。通过测试证明本文设计的进程间通信软件模块,不但成功的实现了CPU间的进程通信,而且在通信效率上比TCP通信模块有了较大程度的提高。
参考文献
[1] 代绍庆. 网络协议与路由. 第一版.北京: 清华大学出版社 2004.
[2] [美]T.Sridhar 彭甫阳/王怀彬/王安生.嵌入式通信软件设计.第一版.北京:北京航空航天大学出版社 2004.
[3] [美]Jan Axelson 骆丽/张岳强/欧小龙.嵌入式Ethernet和Internet通信设计技术.第一版.北京:北京航空航天大学出版社 2006.
|