多媒介通信系统链路管理的设计和实现
2.2 链路间切换
在与一个节点通信的过程中,当主用链路(优先级高)断链或拥塞时,必须自动切换到备用链路上进行数据通信,称为自适应切换;亦可禁止自适应切换而由上层控制,称为非自动切换。在许多网络中,父节点备用链路通信是公用的,无法由某两个节点永久占用,只能在需要时申请激活。
在自动切换模式下,切换原则是:尽量使用高优先级链路进行通信。分五种情况讨论:(1)网络层交给链路层一系列待发送消息,此消息结构中包含了目的ID。链路层通过链路列表打到此目的ID对应的已经激活的链路中优先级最高者进行通信。(2)当正在通信的链路中断时,保持该链路的试图连接状态。激活优先级次之的链路,若无,则再次之(此链路应在切换链路集内)。如果没有链路可以被激活,则认为通信中断;若激活优先级链路,则从未被ACK的消息开始发送。(3)在通信中,高优先级的链路被激活时,中断正在使用的链路,转移到高优先级的链路上,从未被ACK的消息开始发送。(4)末在通信中的链路中断时(由心跳信号侦测得知),保持该链路试图连接状态,激活优先级次之的链路,若无,则再次之(在切换链路信内)。如果没有链路可以被激活,则认为通信中断。(5)末在通信中,高优先级的链路被激活时,中断低优先级链路。
非自动切换模式下的要点是保证在切换过程中数据的安全性,不丢失也不重复。向上层提供的非自动切换接口提供三个功能:a.激活某条链路;b.将当前通信切换至某条链路;c.中止(disable)某条链路。在产生通信动作前,上层可以指定目前激活的链路(同时中止其它链路,使激活链路保持在1);如果不能激活指定链路,则报告到上层,由上层继续进行调度。激活链路只有一条,有通信动作产生时,链路层自然采用条链路进行通信。如果需要从链路A切换到链路B,上层必须先激活链路B,此时有A/B两条链路激活。但是通信仍在链路A进行;然后上层将当前通信切换至链路B;链路管理层待上条消息发送成功或失败后,再切换至链路B;最后上层disable链路A,使激活链路仍然只保持一条。在这种模式下,尽管是非自动切换,但是链路管理层仍然对其过程进行干预,保证了数据的安全性。链路切换流程如图3。
2.3 节点动态加入
新的节点希望成为某节点的子节点时,配置与该节点(服务器)之间的链路,并向该节点发出加入申请帧,等待对应回传,从回传信息中判断对方是否允许本节点加入。与服务器之间有可能多链路,申请帧中必须包含所有这些链路的信息。
本节点收到新的客户端加入本网络的申请帧时,由服务器操作员审核是否允许该客户端加入。若允许,从申请帧中获得与该节点间所有链路的信息写入链路表,并把对方发送申请帧所使用的链路设为激活状态,然后发送“成功”应答帧至该节点,至此,即加入了一个新的子节点。若未通过审核,则发送“失败”应答帧至该节点。
本系统的优点在于:(1)基于超链思想,对点到点的多种类型链路、多条链路进行统一管理,使具体通信事务不必关心链路调度;对外接口简单,易于二次开发;(2)基于COM技术和OPC规范设计思想,把协议、媒介驱动、链路管理作为独立的组件,使系统的可扩展性大大增强,可以在基本不改变其他要素的情况下,独立地升级或增加协议或媒介驱动协议,系统的灵活性和适用范围大大增加。