从 伟
(中国交通通信中心,北京100011)
国际移动卫星(Inmarsat)系统是一个全球覆盖的卫星通信系统,与铱星、全球星并列为全球的三大移动卫星系统。国际移动卫星成立于1978年,最早称为国际海事卫星,由世界主要的航运国家参与并组建,是全球第一个建设并形成全球通信覆盖能力的移动卫星通信系统,以解决远洋船舶以及海上遇险、救助和船舶调度指挥现代化为发展目标。我国是海事卫星的主要成员国之一,并在北京建有卫星地面关口站。国际移动卫星C系统(简称卫星C系统)属于第3代短数据卫星通信系统,是目前我国海上应用最多的卫星通信。卫星C系统是全球海上遇险与安全(GMDSS)的主要组成部分,属于远洋船舶强制配置的卫星通信设备。
卫星C系统到我国陆地公网的接口有PSDN和PSTN两种类型,这2种接口都是使用电路交换,用户使用成本较高,且PSTN网较慢,PSDN网普及性不高,随着Internet应用的普及,越来越多的用户希望该系统提供基于互联网的接入方式。基于上述原因,本文提出了卫星C系统到互联网协议转换的解决方案,并对软件体系结构、工作流程及关键模块的具体实现进行了描述,研究结果表明,该协议转换方案可以实现,并能够作为卫星C系统的二级接续业务提供给用户使用。
本软件目的是要解决互联网到卫星C系统的通信问题,选择何种技术来解决这个问题,有如下3点分析:
用户通过超级终端拨号到卫星C系统的PSDN或PSTN接口,和卫星C系统的信息交互也同样在超级终端里展示。这就很容易联想到TCP/IP网的Telnet软件,Telnet到远程服务器,所有交互信息都将展现在用户Telnet界面里。是否可通过Telnet来仿真超级终端接入PSDN或PSTN网?
①采用什么接口来和卫星C系统进行通信?PSDN网的速率为2 Mkbit/s,相对PSTN网64 kbit/s要快得多,考虑需要支持多用户的访问,是否PSDN接口是和卫星C系统连接的最佳方式?
②可否开发一个软件,一方面支持用户的Telnet访问,另一方面通过本地的PSDN网和卫星C系统通信,实际上是开发一个协议转换软件,代理Telnet上来的用户去访问卫星 C系统,简称CSysTelnetAgent软件。
为了证明选择技术的可行性,需要考虑如何实现本地服务器和卫星C系统的通信。测试一款Eicon的X.25服务器卡,用25针的串口线将x.25板卡和卫星C系统PSDN板卡相连,安装Eicon的驱动程序后,利用Eicon的界面能够实现和卫星C系统的简单通信。这就说明了可以通过软件来控制服务器X.25板卡并且和卫星C系统进行通信,也证明了开发CSysTelnetAgent软件的可行性。
根据以上的分析,可设计CSysTelnetAgent软件的系统总体架构如图1所示。互联网用户通过Telnet访问CSysTelnetAgent软件,该软件通过X.25板卡和卫星C系统直接连接,最后通过卫星和远端的卫星C终端通信。
图1 互联网访问卫星C系统总体架构图
由于Telnet对应协议是Socket,PSDN对应的X.25,也就是说,CSysTelnetAgent核心的工作是完成Socket和X.25之间的协议转换。
软件需求分析可归纳为如下8条:
①支持互联网的用户Telnet拨入,并可与卫星C系统进行信息交互;
②需要对互联网登陆用户进行身份验证;
③支持用户使用Telnet和卫星C系统进行命令行信息交互:
ⓐ命令行格式符合卫星C系统定义规范;
ⓑ将用户数据的命令传递给卫星C系统;
ⓒ将卫星C系统的返回信息传递给用户;
④支持多用户同时进行信息交互;
⑥支持预先配置用户名、密码,满足管理员方便添加、修改、删除用户验证信息;
⑦支持配置系统信息,如提示信息、网络超时时间、Telnet重试次数等,满足管理员方便修改系统配置信息;
⑧满足一定的错误识别和处理能力,并能划分出错信息类别,并提示用户。
以上需求分析,第①条~第④条是满足用户访问的需求,也即是本软件需要完成的核心的通信功能;第⑤条~第⑦条是满足本软件的管理员的需求,提供管理员管理本软件的功能;第⑧条是需要通过一定时期的调试、测试才能逐步完善。
根据软件需求,CSysTelnetAgent软件主要有2个工作流程,分别为主通信工作流以及管理员操作工作流。
主通信用工作流是用来描述客户端和卫星C系统之间的关系和引发的相关动作。接收来自互联网的用户输入命令,将控制数据信息传递给CSysTelnetAgent软件,CSysTelnetAgent软件将这些信息转为卫星C系统所需的格式并送出,等待卫星C系统返回信息,并及时的将这些信息返回到互联网用户。主工作流中主要由3个模块构成,一个是Socket监听模块,监听来自互联网Telnet的Socket交互信息;另外一个是X.25监听模块,监听来自卫星C系统的的X.25交互信息;这2个模块分别继承于抽象出来的监听基类模块。
管理员操作工作流是实现系统管理员操作管理软件的流程,包括5个模块:启动服务、停止服务、用户信息配置、系统信息配置、查看日志。
CSysTelnetAgent最为关键技术是实现互联网和X.25的协议转换。根据以上分析,互联网用户使用的是Telnet协议,服务器使用Winsock API开发来响应客户端的访问和数据读取;卫星端的通信采用X.25协议,完成对X.25的通信控制就等同于完成对卫星端的信息交互,为了保证对Eicon的X.25板卡的正确控制,本软件采用了Eicon公司的X.25开发工具包,调用了该开发工具包的发送(x25send)、接受(x25recv)、判断(x25done)等基本函数。
海淀区东片数学区域教研组根据教师的实际教学情况及需求,对各个阶段的教研活动进行了细致分析与精心设计。以上教研活动各有特点和作用,各项活动相辅相成。
互联网的Winsock API较为通用,本文不再重点介绍。由于卫星C系统的X.25接口较为特殊,在开发中有1个逐步摸索解决问题的过程,先后做了2次重大的调整。
①第1次调整。编写一个X.25的多线程模块。程序思路改为多个用户轮流来控制对X.25的发送缓存,避免卫星C系统响应次序混乱。但实际调试时发现,如果是发信息到远程卫星终端时,响应时间通常较长,一般都在5~10 s左右,如果某个用户长时间占用发送缓存,其他用户的等待时间则明显过长,并且随着同时在线用户数的增多,情况更加恶化,这种方式将无法被接受;
②第2次调整。查看有关书籍后,发现可以通过改变Eicon硬件配置将一条在X.25 link配成支持多条连接的虚拟电路。意味着可以使用单线程来控制通信,但可将每个用户分配到不同的虚拟电路上去,每个用户直接和对应的一条虚拟X.25电路进行通信,互不干扰。
作为核心的功能模块,其模块设计进行了对主通信工作流程的抽象和封装设计。引入了会话的概念,通过会话来管理用户从登陆到退出的全过程,包括对象的创建、对象之间信息沟通等。主通信模块的主要类图设计为:CClientListerner类、CSession类、CClientMonitor类、CHostMonitor类、Cmonitor类、CClientListerner类。
CClientListerner负责监听来自用户的Telnet访问,并启动一个或者多个CSession对象;CSession负责该用户的登陆、验证、沟通等众多事务,同时它还启动CClientMonitor和CHostMonitor分别对客户端和主机端的数据进行监听。而CClientMonitor和CHostMonitor则继承于CMonitor,并封装一个DoMonitor()函数。所有负责监听任务的类因为是多线程函数,均继承于一个CClientListerner的基类。
通信接口是实现客户端和主机端的数据交互。本模块先后设计了2个X25工具类进行尝试,最终选择了Cx25Tool类。为了尽量减少改动代码,在上层的CMonitor类和底层的工具类之间,添加中间层,分别为客户端的接口类、主机端的接口类。接口类被设计只有3个纯虚函数,发送数据、接收数据、释放资源。这3个虚函数将被实际的底层工作类重载。
上层:CMonitor等端口监听类,负责启动、调用以及和会话类的信息沟通;
中间层:纯虚函数设计,只是为了扩展用;包括IClientCommTool和IHostCommTool 2个接口;
底层 :CSockTool、CX25Tool、CX25ExTool,具体负责协议读写操作的类。
通信实现过程中,CMonitor将通过2个继承类CClientMonitor和 CHostMonitor的 doMonitor()函数里来实现接收和发送数据工作。而CClientMonitor将通过IClientCommTool接口和CSocketTool工具类进行通信,处理来自互联网的 Telnet的信息;CCHostMonitor则是通过 IHostCommTool接口和CX25Tool工具类进行通信,处理来自卫星C系统的信息。
根据管理员操作工作流,该模块定义了工具类(CTookit),该工具类包括了配置文件、用户管理、日志管理,并描述了管理员类图和会话以及图形界面显示的关系。
CToolkit工具类负责在程序启动时的初始化工作,读取系统配置信息以及用户信息。当来自互联网用户访问,创建 CSeesion时,它首先需要去CToolkit调用用户信息来验证该用户身份,同时把该用户和卫星C系统的交互信息送给CToolkit形成日志记录;当用户成功登陆时,CSeesion还将通知GUI图形界面,在服务器端显示该用户基本信息及IP地址。GUI图形界面有两个菜单,负责触发启动或停止CClientListerner的监听服务。
基于协议转换的卫星通信系统的互联网应用软件实现互联网用户和卫星C系统之间的通信转换功能。该软件的成功开发,解决了单位的实际问题,目前已经上线运行,结论如下:
①准确匹配需求。解决互联网用户和卫星C系统之间的通信,选择支持何种协议转换,是满足需求的关键。实践证明,选用支持Telnet访问能够被用户接收,也同时也最能够保持原有用户的访问习惯;选择X.25接口则满足了支持多用户同时访问的速率要求。因此,把互联网和卫星C系统通信问题转换为Socket协议和X.25协议之间的通信问题,有效地匹配了用户需求;
②基于卫星C系统的X.25协议处理办法的新探索。由于卫星C系统的X.25接口较为特殊,在开发中有一个逐步摸索解决问题的过程,软件开发过程中分别采用多线程和单线程技术来测试使用卫星C系统的通信效果,最初效果均不理想,特别是当多个用户同时发送接受数据时,存在信息混乱或者等待时间过长的问题。经过反复调试,发现使用单线程,但针对X.25虚拟出多条临时虚电路,结合了单线程和多线程各自优点,从而摸索出一条和卫星C系统的最佳通信方案;
③实际使用效果良好,促进了其他系统的开发和应用。软件提供服务以来,经历了大量用户实际业务使用,已经成为一个成熟、稳定可靠的再用二次接续业务系统。正是由于CSysTelnetAgent的成功,促进了另外一个同样基于卫星C系统的协议转换软件的开发和应用,该新系统采用了和CSysTelnetAgent类似的接口处理机制,只是针对互联网协议使用了电子邮件SMTP和POP3协议,为用户提供电子邮件通信服务。
[1]王立福,张世琨,朱冰.软件工程——技术、方法与环境[M].北京:北京大学出版社,1997:35-45.
[2]Craig Larman.UML和模式应用[M].姚淑珍,李虎 译.北京:机械工业出版社,2002:79-105.
[3]官章全,刘家明.Visual C++6.0类库大全[M].北京:电子工业出版社,1999:584-618.