代 真,何 锋,熊华钢
(北京航空航天大学 电子信息工程学院,北京100191)
在SpaceWire[1,2]网络分析中,消息数据包的传输端到端延时是一个非常重要的测定指标,它体现网络的实时性。SpaceWire难以保证消息的传输端到端延时[3]。若事先已知网络中部分节点的消息属性,如时间、大小等,对它们的传输进行规划,按照固定时间窗口进行调度,即可形成时间触发消息网络,并极大提高网络中消息传输的确定性[4]。
测定消息传输延时的方法很多,如利用FPGA、ASIC硬件模拟SpaceWire网络行为[5],也可运用仿真软件对网络进行仿真,利用matlab、OPNET 等仿真软件模拟SpaceWire网络通信机制[6,7]。
现在已有的SpaceWire仿真系统中,大多为基于协议的事件触发网络[8],缺乏基于时间触发消息、对虫洞路由器调度时刻表进行规划的仿真系统。本文通过建模仿真,对于事件触发和时间触发网络场景下的SpaceWire总线网络消息传输端到端延时行了分析和研究。此外,分析了组路由[9]情况下,SpaceWire网络在链路出现故障时可行的重构方案,并利用仿真进行了验证。
星载SpaceWire通信网络包含链路、节点和交换机。节点为消息数据包的流入流出设备,链路为数据包的传输路径,交换机采用虫洞路由器,SpaceWire采用基于数据包触发的事件触发交换方式,支持自由的拓扑结构。
星载SpaceWire网络消息类型可分为多类[6],本文中将星载网络中的消息分为两类,一类为高实时性消息,这类消息通常为周期性确定消息,称之为时间触发消息;另一类为低实时性消息,这类消息对应于网络中随机产生的消息,称之为事件触发消息。为了确保时间触发消息的传输延时,同时兼并事件触发网络传输的特点,基于OPNET仿真平台开发了一套SpaceWire仿真系统。
本文中,将SpaceWire系统分为带时间窗口的虫洞路由器 (WR)、时间主控节点 (TM)和终端应用节点(ES),ES、WR、TM 通过点到点、全双工的数据通信链路形成星载通信网络,如图1所示。
图1 仿真系统模块
系统中各模块主要功能为:TM 通过广播发送时间码控制网络的时间同步;ES完成SpaceWire数据包的生成以及发送工作;WR 在接收到数据包后,对数据包的类型及到达时间进行相应判断,完成对数据包的寻址转发功能。
2.1.1 时间同步单元
时间主控节点模块用于生成SpaceWire网络同步时间码Time-code[3],Time-code中的T0~T5 位为时间码的计数位,其值在0~63内循环,用于区分不同发送时刻发送的时间码。
TM 生成时间码TM_TC 并向网络广播发送,TM 维持一个本地时钟,初始时,T0~T5位值为0,以后每隔10 ms时间主控节点TM 生成时间码并广播,T0~T5位值依次加1。终端应用节点模块和带时间窗口的虫洞路由器接收收到同步时间码TM_TC 后,分别将本地时间更新为TM_TC的时间,进而完成网络时间同步。
2.1.2 消息接收单元
在TM 接收到SpaceWire 消息数据包时,记录下SpaceWire数据包包尾的到达时刻Tend,由包头可获得数据包源节点信息 (可判断具体为哪条消息),以及数据包的发送时刻Tgen,进而可以计算对应数据包从源节点到达目的节点的传输端到端延时,公式为ETEi=Tend-Tgen,i表示消息流序号。
2.2.1 时间同步单元
ES维持一个本地时钟ES_TC,接收到TM 发送的时间码TM_TC后,读取时间码TM _TC 中T0~T5 位的值,将本地时钟值ES_TC 更新为TM _TC,完成时间同步。
2.2.2 消息属性设置单元
本单元设置ES生成消息数据包的属性。ES可生成两种类型的消息数据包,分为时间触发消息和事件触发消息。时间触发消息对应于重要的高实时性确定消息,通常为周期性确定消息。事件触发消息对应于低实时性消息,主要指随机性消息。
对时间触发消息,其数据包初始生成时刻Tstart、生成时间间隔Tcircle、数据包大小pkt_size、目的节点dest_node等信息确定,设置这些属性的具体值。
对事件触发消息,生成时间间隔Tcircle随机,设置为按照高斯或泊松分布,并设置均值大小;数据包大小pkt_size、初始生成时刻Tstart、目的节点dest_node等信息可设置为具体值或随机分布。
2.2.3 消息生成单元
消息生成单元用于生成消息数据包。SpaceWire数据包由包头、数据块、包尾组成,如图2 所示。包头用于记录相应信息,数据块用于控制整个数据包的大小,包尾表示整个数据包的结束。消息生成单元生成数据包后立刻发送出去。
图2 数据包结构
包头应包含以下信息:①pkt_type,区分数据包类型,时间触发消息其值设为1,事件触发消息其值设为0;②pkt_size,记录数据包大小,单位为byte;③src_node和dest_node,记录数据包源节点和目的节点。
本仿真系统中,为了保证时间触发消息在网络中的传输延时,在现有虫洞路由器的基础上,设置了数据包缓存机制和调度时间窗口,将其称为带时间窗口的虫洞路由器。
2.3.1 时间同步单元
WR 维持一个本地时钟WR_TC,接收到TM 发送的时间码TM_TC后,读取时间码TM_TC中T0~T5位的值,将本地时钟的值WR_TC更新为TM_TC,完成时间同步。
2.3.2 缓存机制
数据包缓存机制用于临时缓存SpaceWire数据包。为路由器的输入端口设置了缓存队列。当SpaceWire数据包的包头到达路由器后,路由器通过包头携带的目的节点信息得到其传输所需的输出端口,若该输出端口此时为忙状态,则将数据包缓存在路由器的缓存队列中,待该输出端口为空闲状态后,路由器才从缓存队列中取出数据包进行转发。
2.3.3 时间窗口机制
为了保证时间触发消息数据包的传输时间,在路由器的工作时间轴上设置了调度时间窗口,如图3所示。图中实线框为时间触发消息数据包的时间窗口,用TH 表示,路由器在TH 内只转发时间触发消息;虚线框为事件触发消息数据包的时间窗口,用EH 表示;TH 之间的空隙称为窗间间隔,用CH 表示。
图3 时间窗口及窗间间隔
时间触发消息数据包的属性事先知道,其传输路径也知道,这些路径上的路由器的相应转发端口均需设置时间窗口TH。时间窗口TH 的开始时刻设定为时间触发消息数据包的生成时刻TTgen,TH 时间窗口的长度按照数据包传输的理论时延进行计算,这里做近似处理为TH=10×size/c,其中size为数据包大小,c为链路传输速率。
事件触发SpaceWire数据包的属性不定,其时间窗口在路由器接收到数据包时设定,EH 的开始时刻ETarr设为路由器接收到事件触发消息数据包头的时刻,EH 长度为EH=10×size/c,这里的size 可从包头信息pkt_size获得。
仿真前应设置时间触发消息数据包的调度时间窗口TH,用于在仿真时转发对应的消息。对于事件触发消息的路由转发,则在TH 间的空隙窗宽间隔CH 内转发。事件触发消息转发时应遵循以下几点:
(1)事件触发消息时间窗口EH 与时间触发数据包的时间窗口TH 无重叠,转发数据包。
(2)事件触发消息时间窗口EH 与时间触发数据包的时间窗口TH 有重叠,分3种情况:
1)EH 完全包含于TH 之内;
2)EH 前端与TH 后端重叠,如图4中EH1所示;
3)EH 后端与TH 前端重叠,如图4中EH2所示。
图4 时间窗口工作原理
此时应将数据包暂且缓存,待相应端口空闲后进行转发。
(3)若窗宽间隔CH 不够多个数据包传输,如图4 所示,数据包ET2应缓存待TT2的时间窗口结束后处理,由于此时的长度不够ET2和ET3进行转发,即有<EH2+EH3,此时应按照先后顺序先将ET2转发,将ET3缓存,待相应端口空闲后转发。
(4)事件触发消息转发存在竞争时,按照先进先出的原则,先到达先处理。若两数据包同时到达路由器,优先转发小的数据包。
步骤1 利用点到点、全双工数据通信链路将若干带时间窗口的虫洞路由器、时间主控节点和终端应用节点连接形成通信网络;
步骤2 配置终端应用节点模块,设置生成消息数据包的类型,对应时间触发数据包和事件触发数据包,设置相应的数据包属性;
步骤3 配置路由器模块;为步骤2中设置的时间触发数据包设置相应的时间窗口TH;
步骤4 完成配置后,开始仿真。时间主控节点发送初始时刻时间码,完成时间同步后,终端节点生成并发送数据包,路由器路由转发数据包;
步骤5 目的节点接收到数据包后,根据源节点统计相应消息流的传输延时;
步骤6 仿真结束,得到结果。
基于仿真系统,搭建了如图5所示的通信网络,设置了3类场景进行仿真分析,网络消息的目的节点均为TM,链路传输速率设为100 Mbps。
当网络中所有消息均为事件触发消息时,即所有消息均随机产生并发送,在路由转发过程中按照自由竞争原则进行,这样的网络为事件触发网络,事件触发网络与标准协议定义的网络相符。
图5 SpaceWire通信网络
下表设置图5所示仿真网络消息属性。将ES1~ES4设置为发送事件触发消息,然后为每个ES设置了相应的数据包属性,见表1,pkt_size 为数据包大小,单位bytes;Tcicle为数据包的产生时间间隔,单位ms,E(X)表示按照高斯分布,均值为Xms;Tstart为数据包初始生成时刻,单位ms。
表1 事件触发网络消息属性
设置好ES的属性后,进行仿真,获得仿真结果,如图6所示,给出了ES1、ES2两个消息流的传输延时,菱形点消息流ES1,方形点为消息消息流ES2,一个点对应一个数据包的传输端到端延时结果。
图6 事件触发网络仿真结果
可见对于协议制定的传统事件触发SpaceWire总线网络,由于数据包在传输过程中存在许多竞争,导致部分数据包的传输延时大小不定,消息实时性难以控制。
当网络中所有消息均为时间触发消息时,即知道所有消息的生成时刻,称这样的网络为时间触发网络。
为了避免时间触发消息在传输过程中出现竞争,影响传输延时,应对消息的生成时刻进行调度。本文按照以下原则,将消息按周期大小排序,周期小的消息先生成,两个消息的初始生成时刻间隔1ms,见表2。
表2 时间触发网络消息属性
仿真结果如图7所示,给出了ES1、ES2、ES3这3条消息的传输延时结果。
图7 时间触发网络仿真结果
可见对于时间触发网络,由于在仿真前对时间触发消息的生成发送时刻进行了调度,避开了时间触发消息的传输时间,故在传输过程中不存在竞争,其传输延时稳定,均为最短传输端到端延时,网络消息传输的实时性得到了保证。
当网络中同时包含事件触发消息和时间触发消息时,称网络为事件时间触发兼容网络。
在这类网络中,部分消息为时间触发消息,为这类消息规划生成时刻,并在路由器上按照2.3.3 节所述设置相应的调度时间窗口,用以转发相应的数据包。对于事件触发消息,其生成时刻随机,通过窗宽间隔进行转发。仿真设置的消息属性见表3,ES2、ES4为时间触发消息,其余事件触发。
表3 事件时间触发兼容网络消息属性
仿真结果如图8所示,给出了ES1、ES2这2条消息的传输延时结果。可见,对于网络中时间触发消息,其传输延迟稳定,对事件触发消息,其传输延时不定。这是由于在路由器上为时间触发消息规划了相应的时间窗口,保证了其路由转发过程。事件时间触发兼容网络保证了网络中重要时间触发消息的传输实时性,又保留了事件触发消息的灵活性,对构建网络极具参考价值。
图8 事件时间兼容网络仿真结果
SpaceWire网络重构可采用路由器内部冗余的方式[10]。本文中考虑到SpaceWire具有组路由的工作特点,在网络链路损坏的情况下,可通过调整路由转发防止进行重构。
如图9 所示,路由器WR1和WR2之间有两条链路linka和linkb,在两条链路均完好时,路由器间可通过任一链路进行通信。
图9 网络故障重构模型
设置ES1、ES2、ES3作为源节点向TM 发送时间触发消息。设置ES1、ES2的消息通过linka进行转发,并在linka所在端口规划相应的时间窗口;ES3的时间触发消息通过linkb进行转发。
若网络运行过程中链路linkb发生故障,此时应对网络进行重构,重构方式为转换路由方式,让ES3的时间触发消息也通过链路linka进行转发。此时由于ES1、ES2的时间触发消息在端口a具有调度时间窗口,在重构后应将ES3的时间触发数据包作为事件触发数据包处理,到达路由器后,按照事件触发消息转发条件进行路由转发。
为图9所示网络设置了相应的数据包属性,见表4。
表4 故障重构网络消息属性
进行仿真,假定在仿真进行到1s时链路b出现故障,仿真延时结果如图10所示。
图10 故障重构仿真结果
可见重构前,ES1、ES2、ES3的消息数据包不存在竞争,传输延时均为最小,重构后,由于ES1、ES2具有时间窗口保证其路由转发,而ES3视为事件触发的数据包,故部分ES3数据包的传输延时出现了增加。可见,重构在实现网络正常工作的基础上,也保证了多数消息的传输实时性。
本文完成了SpaceWire通信网络的建模,构建了终端应用节点、时间主控节点和带时间窗口的虫洞路由器模型,通过对时间触发消息发送时刻以及虫洞路由器的工作时间轴的调度规划,实现了对网络消息传输的仿真控制,解决了SpaceWire网络消息传输延时不确定的问题。本文设计了3类典型的仿真场景,通过分析仿真结果消息传输端到端延时,得到了各类场景的工作特点。提出了一种基于组路由的重构方案,并通过仿真验证了其可行性。本文的研究成果兼并事件触发与时间触发网络的特点,可用于SpaceWire网络仿真或其它相关研究。
[1]ECSS.ECSS-E-ST-50-12C:SpaceWire-Links,nodes,routers and networks[S].2008.
[2]Roberts D,Parkes S.Spacewire missions and applications[C]//Proceedings of the 3th International SpaceWire Conference.IEEE,2010.
[3]YANG Zhi,LI Guojun,YANG Fang,et al.Design of communication protocol for SpaceWire onboard networks [J].Journal of Astronautics,2012,33 (2):200-209 (in Chinese).[杨志,李国军,杨芳,等.SpaceWire星载网络通信协议设计 [J].宇航学报,2012,33 (2):200-209.]
[4]Parkes S,Ferrer A,Mills S,et al.SpaceWire-D:Deterministic data delivery with SpaceWire [C]//International SpaceWire Conference,2010.
[5]Tarrillo J,Chipana R,Chielle E,et al.Designing and analyzing a SpaceWire router IP for soft errors detection [C]//12th Latin American Test Workshop.IEEE,2011:1-6.
[6]CHEN Xizhi,LIU Xiaofeng,YANG Mingchuan.Research on real-time transmission performance of SpaceWire network [J].Communication Technology,2012,45 (9):93-95 (in Chinese).[陈熙之,刘晓锋,杨明川.SpaceWire 总线网络实时传输性能研究 [J].通信技术,2012,45 (9):93-95.]
[7]HOU Jianru,CHEN Xiaomin.The simulation on the delay jitter of SpaceWire[J].Journal of National University of Defense Technology,2013,35 (5):114-119 (in Chinese).[侯剑儒,陈晓敏.SpaceWire时延抖动的仿真 [J].国防科技大学学报,2013,35 (5):114-119.]
[8]Ferrandiz T,Frances F,Fraboul C.Worst-case end-to-end delays evaluation for SpaceWire networks[J].Discrete Event Dynamic Systems,2011,21 (3):339-357.
[9]Parkes S,Armbruster P.SpaceWire:Spacecraft onboard data-handling network[J].Acta Astronautica,2010,66(1):88-95.
[10]ZHONG Xueyan,YAO Rui,BAO Xiaosheng.Dynamic partial reconfiguration fault-tolerant technology applied in SpaceWire router [J].Application Research of Computers,2013,30 (3):703-705 (in Chinese).[钟雪燕,姚睿,鲍小胜.一种应用于SpaceWire路由器动态部分重构的容错技术[J].计算机应用研究,2013,30 (3):703-705.]