基于超时重传和多重校验的UDP可靠通信设计

2022-03-25 02:28赵晨希
测控技术 2022年2期
关键词:校验线程以太网

李 浩, 赵晨希, 关 冰

(1.中国运载火箭技术研究院,北京 100076; 2.北京时代民芯科技有限公司,北京 100076)

随着信息化和自动化技术的快速发展,以太网凭借速度快、成本低、支持连接设备多等特点,被越来越多地应用于工业自动化领域[1-3]。UDP是以太网的传输层协议,与TCP协议相比具有开销小、效率高的优势,但是由于其非面向连接的特点,可靠性不高,在数据传输中容易丢帧、错帧和乱帧[4-6]。

针对UDP传输过程中可能出现的丢帧、错帧和乱帧问题,本文提出了两种基于超时重传和多重校验的UDP可靠通信方法:一种是基于实时操作系统的方法,另一种是基于高精度定时器的方法。这两种方法的共同点是都采用多重校验、链路切换、超时重传等可靠性较高的技术,不同点是前者基于实时操作系统实现,逻辑简单,但实时性不高,后者基于高精度定时器实现,实时性较高,但逻辑复杂。本文提出的方法仅在应用层增加32 B冗余信息,且只在链路出现问题时进行数据重新发送,相对未采用可靠性措施的UDP通信方案,开销略有增加,但相对采用了三次握手和拥塞控制等机制的TCP通信,在网络开销和传输效率上的优势仍然存在,试验结果表明,本文提出的方法既能保证UDP通信的实时性,又能提升UDP通信的可靠性。

1 可靠以太网通信总体方案设计

对可靠以太网通信总体方案进行设计,首先设计了基于四度冗余拓扑的以太网总线结构,然后实现了基于多重校验的以太网通信协议,最后提出了两种基于超时重传和多重校验的UDP可靠通信方法,通过硬件、软件、协议和流程的联合优化设计,最终实现了基于超时重传和多重校验的可靠以太网通信机制。

以太网总线拓扑结构如图1所示,基于可靠以太网通信机制的软件设计称为服务端软件,有主、备两个网口,与服务端软件通信的软件称为客户端软件,也有主、备两个网口,服务端软件和客户端软件通过交换机进行以太网通信。这种网络拓扑结构的特点是通过网络链路的多重冗余,提升通信系统整体的可靠性,且由于以太网总线成本低廉,链路冗余带来的总体方案成本增加并不多。

图1 以太网通信总线拓扑结构

将数据进行UDP数据报封装、IP封装,并最终打包成符合IEEE802.3标准的以太网数据帧格式在网络上传输,UDP数据封装形式如图2所示。

图2 UDP数据封装格式

UDP传输的特点是只提供无连接的服务,没有确认帧、序列号、超时重传等机制,因此与TCP传输相比可靠性低。本文在应用层设计实现了一种基于多重校验的协议确认机制,确保UDP传输的数据内容、顺序和格式的准确无误。

对应用层的以太网通信协议进行重新设计,除了帧内容区表征传输的有效数据外,增加了帧头、帧序号、帧长度、帧校验和及帧尾等数据区域,主要目的是用于UDP传输数据的多重校验,以提升以太网通信的可靠性。具体格式如下。

① 帧头:固定帧头为0x55555555,用于判断帧的开始。

② 帧序号:表示相同类型帧的发送次数,由于UDP通信有可能出现丢帧,本区域可以表征传输的连续性。

③ 帧长度:表示本帧数据的实际长度,由于UDP传输数据的限制,本区域最大值不能超过1400。

④ 帧IP:表示网络层的地址。

⑤ 帧端口:表示传输层的地址。

⑥ 帧类型:表示本帧数据的类型。

⑦ 帧内容:表示本帧数据的具体内容。

⑧ 校验和:对本帧数据前N-4个字节进行CRC校验,CRC校验能够有效识别硬件误码导致的通信错误。

⑨ 帧尾:固定帧尾为0xAAAAAAAA,用于判断帧的结束。

2 基于实时操作系统的超时重传方法

实时操作系统被广泛应用于航空航天、核电能源、医疗卫生、国防电子等诸多安全关键系统中,具有实时性高、安全性强、系统资源占用少等特点,包含任务调度、任务同步、中断管理、内存管理等功能[7],常见的实时操作系统有VxWorks和RTEMS。

利用嵌入式实时操作系统的多线程抢占调度和多线程信号量同步机制,设计实现了一种精度达到10 ms量级的超时重传方法,本方案的优点是逻辑简单,缺点是精度不高。

设计3个线程和1个信号量,重传方法的实现流程如图3所示,主要功能如下。

图3 基于实时操作系统的以太网超时重传方法示例

① 线程1的优先级最高,执行一次后便不再执行,主要用于系统的软硬件初始化。

② 线程3的优先级次高,线程入口处设计死循环,使得线程3一直处于等待运行的状态,主要用途是获取以太网数据,并对接收方的应答数据进行解析判读和多重校验。

③ 线程2的优先级最低,线程入口处设计死循环,使得线程2一直处于等待运行的状态,主要用途是利用本文的基于实时操作系统的超时重传方法,实现基于UDP的可靠数据通信。

④ 信号量1主要用于线程3和线程2的数据同步,信号量的类型是二值信号量,初始值是0。

本子技术的核心功能有指令回令机制、多重校验判断、多线程同步、超时重传、链路切换,主要技术点如下。

① 线程2是发送线程,其发送的数据定义为指令,线程3是接收线程,其接收的数据定义为回令,规定每一条指令都对应有一条回令,通过设计指令回令机制,可以实现对以太网链路是否畅通的检测。

② 线程3在收到回令后,需要按照第1节描述的协议格式进行多重校验,包括帧头、帧尾、帧序号、帧长度、IP地址、端口、帧类型及帧CRC等8类区域的校验,如果多重校验通过,则认为回令符合要求,否则认为链路故障,通过多重校验机制可以实现硬件误码和软件丢包错包的故障检测。

③ 利用实时操作系统的多线程抢占调度和信号量同步机制,实现不同的线程之间通过二值信号量的方式进行时序同步。

④ 利用二进制信号量的超时判断机制,如果在指定的时间内软件收到了客户端软件的回令(为达到可靠性与与实时性的平衡,将超时时间设置为10 ms),并且通过了多重校验,则发布信号量以解除发送线程的阻塞状态;如果在指定的时间内没有收到客户端软件的回令,或者回令未通过多重校验,则信号量返回超时信息,进入链路切换和超时重传逻辑分支。

⑤ 基于系统设计的可靠以太网拓扑通信结构,设计实现了“主主-主备-备主-备备”的通信链路切换机制,能够在3条通信链路出现故障的情况下实现UDP数据有效通信,显著提升了以太网通信的可靠性。

3 基于高精度定时器的超时重传方法

利用嵌入式系统的高精度定时器和中断异步处理机制,设计实现一种精度达1 ms级别的超时重传方法,其优点是实时性高,不依赖实时操作系统即可实现,缺点是流程比较复杂。

设计2个中断、1个主函数和5个全局变量,重传方法的实现流程如图4所示,主要功能如下。

① 中断1的优先级最高,收到回令时触发,主要功能是获取以太网数据,并对接收方的应答数据进行解析判读和多重校验。

图4 基于高精度定时器的以太网超时重传方法示例

② 中断2的优先级次高,以1 ms周期性触发,主要功能是利用本文的基于高精度定时器的超时重传机制,实现基于UDP的可靠数据通信。

③ 主函数的优先级最低,主要用于系统的软硬件初始化和业务流程处理。

④ 超时起判标志为全局变量,在启动超时重传判断时置有效,在收到回令时或遍历所有链路时置无效。

⑤ 数据接收标志为全局变量,在收到回令时置有效,在遍历所有链路时置无效。

⑥ 超时时间为全局变量,是用户设定的固定值,该值用于表示从发送指令到接收回令的最长时间。

⑦ 起始时间为全局变量,该值表示发送以太网数据的时间。

⑧ 当前时间为全局变量,该值表示进行超时判断时的当前时间。

本方法的核心功能有指令回令机制、多重校验判断、高精度定时器中断,主要技术点如下。

① 主函数和中断2是发送线程,指令回令机制与第2节相同。

② 中断1在收到回令后,需要按照第1节描述的协议格式进行多重校验,多重校验的机制与第2节相同。

③ 利用嵌入式系统的高精度定时器和中断异步处理机制,实现主循环与中断之间通过共享全局变量的方式进行数据交互,能够实现精度为1 ms级别的超时判断。

④ 利用基于高精度定时器的超时判断机制,如果在指定的时间内收到了客户端软件的回令,并且通过了多重校验,则置数据接收标志有效以通知软件解除超时判断;如果在指定的时间内没有收到客户端软件的回令,或者回令未通过多重校验,则判断为已经超时。

⑤ 利用系统设计的主备以太网通路,实现“主主-主备-备主-备备”四条链路的故障切换,链路切换机制与第2节相同。

4 实验结果及建模分析

在实验室环境下对本文进行测试验证,服务端软件的硬件架构是“TMS320C6678+Kintex-7”,TMS320C6678是TI公司的一款多核处理器芯片,片内集成8个C66X内核[8],挂接一路网口,作为主通信链路,地址设置为192.168.0.109;Kintex-7是Xilinx公司的一款高性能FPGA芯片,拥有478 KB的可编程逻辑资源[9],挂接一路网口,作为备通信链路,地址设置为192.168.0.19。客户端软件的硬件架构与服务端软件相同,也是“TMS320C6678+Kintex-7”,主地址设置为192.168.102,备地址设置为192.168.0.12。

在上述环境中设置故障测试用例,测试本文设计的可靠以太网通信方法是否有效。其中,图5为主主链路正常通信示意图,图6为主主链路断开时链路切换后正常通信示意图,图7为主主、主备链路断开时链路切换后正常通信示意图,图8为主主、主备、备主链路断开时链路切换后正常通信示意图。结果表明,在通信链路出现一度、二度和三度故障时,基于本方法实现的软件仍可进行有效通信。

图5 主主链路正常通信示意图

图6 主主链路断开时链路切换后正常通信示意图

图7 主主、主备链路断开时链路切换后正常通信示意图

图8 主主、主备、备主链路断开时链路切换后正常通信示意图

采取了并联硬件冗余的方式实现可靠以太网通信,根据并联冗余的功能定义,可以按照下述的可靠性建模公式进行可靠性计算[10]。

Rs==1-(1-R0)n

式中:R0为单通道UDP通信的可靠度;n为并联冗余的部件个数;Rs为根据模型公式计算后的系统可靠度。本文假设R0值为0.9,n在本文中取值为4,经过计算,系统可靠度Rs为0.9999,相对单通道UDP通信的可靠度有较大提升。

5 结束语

针对UDP传输过程中可能出现的丢帧、错帧和乱帧问题,首先对可靠以太网通信总体方案进行设计,设计了基于四度冗余的以太网总线拓扑结构,然后实现了基于多重校验的以太网通信协议,最后提出了两种基于超时重传和多重校验的可靠通信方法:一种是基于实时操作系统的超时重传方法,为UDP可靠传输提供了一种流程简单、精度达10 ms的解决方案;另一种是高精度定时器的超时重传方法,为UDP可靠传输提供了精度达1 ms、不依赖操作系统的解决方案。

对本文的方法进行建模分析,本文所提出的方案相较传统单通道UDP通信方案可靠度由0.9提升到0.9999,通信的可靠度有较大提升。利用“TMS320C6678+ Kintex-7”开发板进行测试验证,结果表明基于本方法实现的软件功能实现正确,可以实现在通信链路出现一度、二度和三度故障时有效完成UDP通信。

猜你喜欢
校验线程以太网
5G终端模拟系统随机接入过程的设计与实现
复杂多耦合仿真模型校验工具研究
使用Excel朗读功能校验工作表中的数据
实时操作系统mbedOS 互斥量调度机制剖析
浅析体育赛事售票系统错票问题的对策研究
电能表在线不停电校验技术
Microchip推出首款车载以太网音视频桥接(AVB)全集成解决方案
精通文件校验的“门道”
三大因素驱动创新提速以太网快步迈入“灵活”时代
三大因素驱动创新提速 以太网快步迈入“灵活”时代