多媒介通信系统链路管理的设计和实现
难点之二,如前文所述,通信媒介组件与物理层密切相关,很难做到支持并行化的输入。在多条独立链路不同的线程中同时使用同一通信媒介时,各链路对物理层的操作将产生冲突,必须对通信媒介组件的数据输入进行串行化处理(排队),使同一时刻,只处理一个输入。在COM组件的多线程模型中,单线程套间(STA)模型有如下特点:如果某COM组件的对象生成在单线程套间中,则只有与同在一个套间特定的线程可以访问该对象不在同一套间的其他线程必须通过列集(marshal)技术才能访问该对象。这种技术基于COM ORPC协议和消息阶列机制,自动把对该对象的访问串行化了。所以如果每个通信媒介组件都只有一个对象且生存在STA中,则通过列集技术它的访问自动被串行化。
1.4 媒介模块和协议模块的设计
媒介组件封装了与网络平有关的操作,向上提供了建链、断链、发送数据、接收数据(回调)、参数设置、状态改变报告(回调)、参数查询、状态查询等接口。
例如在高速公路网络中,专线网络和拨号线后备链路都基于IP网络,Windows套接字接口(Winsock)提供了一个基本与协议无关的传送接口从而封装了基本操作。但是对于不同协议,具体操作仍稍有不同,如面连接的TCP和面向无连接的UDP向上层暴露的SOCKET连接过程就很不相同,同时对不同协议参数信息的查询和设置接口差别也很大;而拨号线后备链路在SOCKET连接之外还有拨号、挂断等操作。媒介组件在Winsock基础上又给出了一层封装,把建立链路、撤销链路、等差别较大的操作在此层完成,向上层暴露统一的建链方法。对于参数的设置和信息查询,媒介组件同外界通过不定长度的数组或字符串交换,这样就形式了掩盖了差异,保持了接口的统一性。
对于特殊的后备媒介,如无线MODEM-无线电台方式,媒介组件必须提供与IP网络相一致的接口,而对设备的操作(串口、MODEM、电台)进行封装。节点ID系统(与IP系统类似)也在此组件中进行管理。
在媒介模块之上完成的协议控制以独立的COM组件方式存在。这是考虑到媒介类型与协议并非一一对应,一种协议可能适用于多种媒介,一种媒介亦可能使用多种协议。
2 链路的管理、维护和调度
链路的管理、维护和调度是本设计的重点内容之一,可从运行角度和维护测试角度分别考虑。在运行中,系统的每个节点都可能通过多条链路与多个节点通信,每条链路所使用的通信媒介和协议又不尽相同。与同一节点通信的过程中,有可能在不同的通信媒介和协议间切换。同时,链路管理层必须实时获得各条链路的运行状态和当前参数,如通断情况、吞吐量等,以作出正确的调度决策。从维护测试角度,需要设置各条链路所涉及的协议参数和涉及通信媒介的参数;新节点必须能够自动加入,成为任一节点的客户端。
2.1 多链路管理
链路管理层必须维护一张链路表,以记录各条链路的情况(如表1)。
表1 链路管理表结构
目的ID是节点的全网唯一标总值,通信媒介用字符标识,链路标识是链路的唯一标识。对应目的地址为下一层(特定通信媒介)的地址:若基于UDP/IP或TCP/IP,则为IP地址;若基于短波或者别的通信媒介,则为在下一层约定的地址。优先级表示与同一目的ID通信时优先采用哪条链路。与同一节点间的链路可能有数条,它们互相独立且对等,只是优先级不相同。链路状态包括中止和激活两种。中止状态指链路保持在侦听态,能接收数据帧关上报链路管理组件,而发送线程中止运行;激活状态指两节点在此链路上进行通信。链路由中止状态到激活状态转换的过程称为激活,包括启动发送线程,通过发送握手帧和接收握手成功帧与目的ID进行握手等过程。
链路表包括了所有可能使用的链路,在本节点启动时,只激活优先级最高的链路。若优先级最高链路无法激活,则激活次高的链路,以此类推,直到连接上。若激活了非最高优先级链路,则保持高优先级链路的“试图连接状态”。若均无法激活,则停止主动激活,等待被动激活。在所有激活的链路上,服务器主动发出“心跳信号”,侦测链路状态,包括链路是否中断、心跳信
《多媒介通信系统链路管理的设计和实现(第2页)》