邢亮 路帅
中国航空工业西安航空计算技术研究所 陕西西安 710119
[摘要]随着综合化航电的深入发展,分区操作系统下文件传输服务已成为新的应用需求。本文从VxworksAE653操作系统的体系架构出发,结合简单文件传输协议(Trivial File Transfer Protocol,TFTP)的工作模式,引入选项协商机制对协议进行了扩展,给出了在分区机制操作系统VxworksAE653下TFTP的实现方法。
[教育期刊网 http://www.jyqkw.com
关键词 ]综合化航电;分区操作系统;简单文件传输协议;选项协商
引言
随着航电系统综合化的不断发展、新一代航电系统中对于数据传输要求的不断提高,航电系统中传输的不仅仅是命令和状态数据,而且还有大量的中间结果、可加载的应用软件等,文件传输服务在分区机制操作系统下广泛应用已成为航电系统新的需求。在分区操作系统下实现文传传输服务,将为综合化航电系统文件传输应用的开发提供有力的支持。
1.VxwoksAE653操作系统简介
VxworksAE653操作系统美国WindRiver公司依据ARINC653标准推出的具备分区机制的高安全操作系统。操作系统分为上下两层,下层操作系统称之为核心操作系统,上层操作系统称之为分区操作系统。核心操作系统提供分区机制,并且提供最基本的分区相关服务,如根据主时间框架内分配给分区的时间窗口调度分区;利用处理器的MMU对分区的空间进行保护。分区操作系统主要负责与分区无关的分区内进程的管理,如分区内的进程管理、进程调度、进程间通信、分区内端口的管理等。在该结构下,分区机制的实现依赖于核心操作系统及其支撑硬件,与分区无关的进程管理依赖于每个分区自己的分区操作系统,本文中TFTP软件是基于VxworksAE653操作系统设计和实现的。
2.TFTP简介
TFTP是一种基于UDP的用来传输文件的简单文件传输协议,它是基于客户/服务器模式,主要功能是从远程服务器上读取文件或者将文件传输给远程服务器。
2.1 TFTP数据报文格式
TFTP数据以定长512字节传输。一个TFTP包头含以下两个部分: TFTP操作码和数据。图1为5种TFTP报文格式。
2.2 TFTP的工作模式
TFTP的工作模式为客户/服务器(C/S)模式。创建连接后,客户端和服务器端通过协议包进行信息交互。下面是一个客户端向服务器端发送文件的例子,(1)客户端通过发送端口向服务器端的接收端口上发送WRQ请求。(2)服务器端的接收端口接收到请求后,通过发送端口向客户端发出ACK,块号为0。(3)客户端接收到块号为0的ACK包后,连接建立。(4)客户端依次向服务器端发送DATA包,DATA包序列从1开始,同时客户端检查ACK包序列,如ACK包检查有误,中止传输。如ACK包序列正确,继续传输直至传输结束。
3.TFTP在分区机制操作系统下的设计
TFTP的客户端和服务器段分别处于VxworksAE653操作系统的应用分区中,应用分区中支持满足ARINC653标准的接口。TFTP的任何一个传输服务都以客户端申请写文件或者读文件请求发起连接,如果服务器同意连接请求,则连接成功。文件中的数据以定长的字节传输,每个数据包都包含一个数据块,在发送一个数据包之前,前一个数据必须得到确认。在VxworksAE653操作系统下,TFTP的设计需要考虑通信和文件系统配置、超时重传机制、协议包的合法性检查、协议包序列号验证以及协议的可扩展性问题。
3.1 通信配置
VxworksAE653操作系统下,核心操作系统提供了一组设备管理接口,系统集成人员通过调用该接口可向核心操作系统注册网络设备驱动。本文中的TFTP软件所使用的网络为以太网UDP驱动。通过将以太网UDP驱动注册到核心操作系统可完成网络驱动配置。分区间通信为端口-通道-虚端口机制,分区中通过端口进行数据收发,虚端口可直接访问下层设备进行数据收发,端口和虚端口之间通过通道连接。在VxworksAE653操作系统的配置蓝图中,分别为TFTP客户端和服务器端配置通信端口,使得TFTP客户端和服务器端可通过端口进行数据通信。
3.2 文件系统配置
TFTP软件通过以文件的形式对数据进行管理。VxworksAE653操作系统提供了系统调用机制,分区可通过系统调用的形式使用核心操作系统的服务,通过在核心操作系统向分区扩展文件系统服务接口,分区中运行的TFTP软件可以通过系统调用的方式访问文件系统服务。
3.3 超时重传
TFTP协议通过超时和重传机制在协议层保证数据传输的可靠性。TFTP超时和重传策略为:TFTP发送一个数据包,接收方收到此数据包后,必须对发送方做出应答。发送方在设定的超时时间内如果没有收到应答,将重新发送此数据包,如果在限定的发送次数内仍然没有收到应答包,则此次文件传输失败。
3.4 协议包序号检查
在数据传输过程中,如果数据的源序列号和期望的序列号不同,这个包则被认为是一个无效的包而丢弃。设想发送方发出一个数据包,这个数据包由于某种原因在网络设备中被复制成两个包,接收方将先后接受两个包。接收方在接收到第一个包后,期望的数据序列号会自动加1,当第二个包到达后,数据序列号和期望序列号不同,所以第一个包被丢弃,而不会导致一个数据包接收两次。TFTP协议包需要检查序号的数据包为DATA包和ACK包。
3.5 异常处理
TFTP软件在进行文件传输过程中,在客户端/服务器端可能会出现一些异常情况(如文件未找到、访问越界、非法的TFTP操作等),当出现异常情况后,异常的发现方立即组织一个ERROR,发给对方,同时退出连接。ERROR包的接收方收到消息后,退出连接。
3.6 协议扩展
RFC1350标准推荐的协议数据包大小为512字节,超时时间为2S,重传次数为3次。TFTP协议在设计中在RFC1350标准的基础上参考RFC2347标准加入了选项协商机制。选项协商机制是在原有的WRQ和RRQ包中扩展了数据包长度、重传次数和超时时间协商选项,引入了OACK包回应选项协商。文件传输的发起方在发送WRQ或RRQ包的时候,将建议的数据报长度、重传次数、超时时间写入到WRQ或RRQ包中,接收收方接收并解析WRQ或RRQ包后,如果支持选项协商中的一项或者多项,发送OACK包进行回应。如果接收方不支持选项协商机制,发送ACK包进行回应,传输双方按照RFC1350标准推荐的协议设置工作。
4.TFTP的软件实现
TFTP软件的客户端软件和服务器端软件分别驻留的不同硬件模块上的VxworksAE653操作系统分区中,通过应用分区中的应用端口进行数据通信,通过文件系统对文件数据进行存储和访问。
4.1 TFTP客户端的实现
TFTP的客户端软件首先在WRQ和RRQ包中设置选项协商参数,包括TFTP数据包大小、重传次数和超时时间,然后将读/写命令请求发送出去,接收服务端的回应信息,若连接失败,退出本次服务;如果和服务器端连接成功,在服务器端的回应信息中判定服务器端是否支持选项协商机制,如果服务器端不支持选项协商机制,则恢复缺省协议参数后开始上传/下载文件数据传输。如果服务器端支持选项协商机制,则直接开始上传/下载文件数据传输。上传文件时,从本地文件中读出协议参数规定长度的数据,从发送端口将数据发送到服务器的接收端口上,同时在接收端口上等待来自服务器端的应答包。如果在协议参数设定的时间内接收端口上接收到了应答包,且应答包包序列正确,说明服务器端口已经确认数据包已经收到,接下来进行下一包数据的传送,如果在设定的时间内接收端口上没有收到应答信息,则客户端认为服务器端没有接收到数据包,继续对此数据进行重传。若按照协议参数设定的次数连续重传后仍然没有收到应答包,则认为此次上传任务失败。客户端将退出连接。下载文件时,客户端程序在在协议限定的时间内(超时时间和重传次数相乘)接收数据,如果没有收到数据,则退出,如果能收到数据,则将收到的数据写入文件,同时向远程服务器发送回应消息。重复此过程,直至接收完所有的文件数据。
4.2 TFTP服务端的实现
TFTP服务端工作流程如下:1)服务器端接收客户端发送的命令。2)服务器端解析客户端命令请求。解析客户端WRQ/RRQ协议包,若客户端发送的WRQ/RRQ具备协议协商机制要求,同步服务端的协议参数,发送OACK协议包进行应答。3)根据(2)的解析结果,在分区操作系统中创建文件上传/下载传输任务进行文件传输,服务器端上传/下载传输与客户端相应服务处理流程相同。
5.结束语
本文在研究分区操作系统VxWorksAE653架构的基础上,介绍了TFTP的数据报文格式和工作过程,并结合相关协议标准对TFTP协议进行了扩展设计,给出了分区机制操作系统VxWorksAE653下TFTP的设计思路和实现方法,在开发实例测试中,Vxworks653平台下的TFTP软件稳定运行,在传输过程中,客户端软件与Windows平台下的TFTP服务器可以兼容工作,出现网络故障时,可以进行超时重传,具有良好的容错能力。
教育期刊网 http://www.jyqkw.com
参考文献
[1]徐晓光,员海顺等.分区操作系统下的分区间通信设计[J],现代电子技术.2013,36(14):58-64.
[2]李伟,李杰涛等.VxWorks下文件传输的设计和实现[J],科技创新导报.2013.19:38-39.
[3]Sollins K. RFC2347,The TFTP Protocol ( Revision 2) [S].USA: IETF,2010.
作者简介
邢亮,1983.7,男,陕西宝鸡人,工程师,硕士,主要研究方向:嵌入式软件及软件工程化.