王 军,陈天丽,夏荒生
(1.中国电子科技集团公司第四十一研究所,安徽 蚌埠 233006;2.湖北中烟工业有限责任公司武汉卷烟厂,湖北 武汉 430040;3.湖北中烟工业有限责任公司襄阳卷烟厂,湖北 襄阳 441000)
时代进步,科技发展,对卫星载荷分辨率要求也与日俱增,同时对于各个星体之间的数据交换以及信息共享也要实现高同通速率,非常紧急需求搭建一种高可靠性和全速的网络结构,让许多用户和数据信息能及时共享。本文在研究SpaceWire 协议标准的基础上,给出了该网络拓扑遍历算法,进而研究其网络自主路由配置算法。
SpaceWire 基础协议是ESA 在商用标准的基础上改进而来的,使其可靠性、功耗、速率等性能大大提高以更好地满足航天应用的要求。我们选择传输速率能够达到500Mb/s 的串行数据总线,因为此总线可实现双向和全双工功能。
基础协议包含物理层、信号层、字符层、交换层、数据包层和网络层。基础协议在硬件接口规范和网络规范等方面提出要求,给出了数据包的流通规则与容错要求。每一层仅需完成本层的任务,而无需关心其他层的工作内容,即层与层之间是相对透明的。一共分为两种,一种是数据包的信源和信宿,另一种是数据转发功能,其中数据转发功能就是我们常说的路由器,而数据包的信源和信宿也就是节点,二者都是多端口设备。各个设备通过SpaceWire 链路互连便形成了SpaceWire 网络。
(Breadth-FirstTranversal,BFT)和深度优先遍历(Depth-FirstTranversal,DFT)是该网络常用的两种遍历算法。为了便于说明SpaceWire 网络是个双向全双工网络,以图1中的小型SpaceWire 网络示意图为例,该网络经常使用的是深度优先遍历和宽度优先遍历两种算法,对网络拓扑遍历方法进行举例说明。如图1所示:
图1 网络模型拓扑示意图
(1)NM 自检,发现自己有1个端口,端口号为1,为自己分配逻辑地址LA1。
(2)零跳设备查询:NM 向与自己直接相连的设备发送设备查询数据包,得到查询应答显示R1是路由器,其共有8个端口,收到数据包的端口为1号端口;NM 向R1写发现标识,即将其逻辑地址位写入0xFE,表征R1已经被发现。
(3)一跳设备查询:NM 依次向R1的各个端口发送设备查询包,通过计时等待,发现其2号、5号、6号、8号端口都没有连接设备;3号端口连接有普通节点SN1,为其分配逻辑地址LA2,并写入其EDS 中;4号端口连接有路由器R2,向其EDS 中写入发现标识,其共有8个端口,其收到查询包的端口是6号口;7号端口连接有普通节点SN3,为其分配逻辑地址LA3。
(4)二跳设备查询:NM 依次向R2的各端口发送设备查询包,通过计时等待发现R2的1号、2号、4号、7号、8号端口为空;其3号端口连接有普通节点SN1,SN1已被发现,其逻辑地址为LA2;5号端口连接有普通节点SN2,为其分配逻辑地址LA4。
(5)由于没有三跳设备的存在,因此遍历结束。
(1)NM 自检,发现自己有1个端口,端口号为1,为自己分配逻辑地址LA1。
(2)NM 向与自己直接相连的设备发送设备查询数据包,得到查询应答显示R1是路由器,其共有8个端口,收到数据包的端口为1号端口;NM 向R1写发现标识,即将其逻辑地址位写入0xFE,表征R1已经被发现。
(3)R1各端口查询:NM 向R1的2号口发送设备查询包,通过计时等待,发现其2号口没有连接设备;向3号端口发送查询包,发现3号口连接有普通节点SN1,为其分配逻辑地址LA2;发现4 号端口连接有路由器R2,其共有6个端口,其收到查询包的端口是6号口。
(4)R2各端口查询:NM 依次向R2的各端口发送设备查询包,通过计时等待发现R2的1号、2号、4号、7号、8号端口为空;其3号端口连接有普通节点SN1,SN1已被发现,其逻辑地址为LA2;5号端口连接有普通节点SN2,为其分配逻辑地址LA3。
(5)R1剩余端口查询:R2端口查询结束后,回到R1 未遍历的端口上,向R1 的5 号、6 号端口依次发送查询包,计时等待后发现两个端口上都没有设备连接;向R1的7号端口发送查询包,发现其连接有普通节点SN3,为其分配逻辑地址LA4;向R1的8号端口发送查询包,计时等待后发现该端口上都没有设备连接。
(6)由于没有其他的路由器及剩余端口存在,因此遍历结束。
根据上述可知,宽度优先算法BFT 在遍历过程中比深度优先算法DFT 效率更高,更省时。
路由算法分为静态路由和动态路由。静态路由是手工定义和配置路由的过程,动态路由是路由器之间相互通信,相互传递数据信息。静态路由适合于组网结构简单、到达目标只有一条路径的网络,但是对于当网络出现问题和其他原因引发拓扑结构发生变化时,除非外力干预,否则静态路由不会自动发生变化。
对于网络规模较小、结构固定、无路由自适应需求的SpaceWire 网络,较适合采用静态路由。当第一个数据包是字符0时,表示是内部配置端口,在内部用于对路由器进行配置的虚拟端口。
动态路由有两种:距离矢量和链路状态路由选择算法。
距离矢量路由选择算法顾名思义就是到达目的地的最短距离和路径,同时进行实时更新两个路由器直接的信息分配。链路状态路由选择算法是将自己作为中心,同时计算跟别的路由器之间的最短距离,让数据在各个路由器直接传输跟及时和高效。
在SpaceWire 网络中,网络带宽至关重要,一旦出现网络故障,导致数据的传输将受到影响,关键是随着现代网络时代的发展,对网络的及时性和容量要求更加迫切,必须增加网络的带宽。因此,为了提高网络容错能力,增加网络带宽,采用硬容错思想,以链路冗余为代价,提出了组适配路由技术。
组适配路由的算法,数据包转发过程中,首先要定义端口的优先级,按优先等级顺序排列方式进行数据传送。如图2所示:
图2 组适配路由示例
本文介绍了SpaceWire 网络的组成,给出了两种网络拓扑遍历算法,相比较而言,宽度优先算法BFT 遍历效率更高。本文研究了网络路由算法,给出了动态组适配路由算法。该算法可以有效地进行路由配置,配置结果可用于逻辑寻址,在后续高速技术发展简便实用的自适应路由等技术打下良好的基石,具有很好的科研、生产和民用价值。