程 澄,刘 云,贾 凡
(北京交通大学通信与信息系统北京市重点实验室,北京100044)
随着高速铁路在我国的飞速发展,对铁路调度系统提出了更高的要求,基于GSM-R的无线通信及列车定位技术的列车运行控制系统,实现了列车控制信息的无线传输与真正的“数字化铁路”。其中无线通信质量受到了极大关注。在无线通信传输过程中起信号中继作用的直放站设备运行的正常与否直接影响着整个无线通信系统的运行状态与服务质量。由于直放站设备分散在移动网络覆盖的各个区域,而且有些站点地理环境复杂不能时常人工巡检,那么就需要直放站监控系统对其进行有效监控管理以及日常维护。而这种监控又是建立在监控系统与直放站之间实时通信基础之上的。考虑到直放站的设备类型以及其所处的网络环境和通信开销,最经济并且最便利的通信方式就是采用短消息(Short Message)的形式。为此设计了一套建立在直放站网关系统Web服务器与短消息中心(SMC(Short Message Center))之间的短信网关平台,通过中国移动点对点协议(CMPP(China Mobile Peer to Peer))与直放站通信。
系统功能模块见图1,其中的设备管理、告警管理、轮询管理这些模块需要与直放站进行短消息通信,并对发送接收到的数据进行处理。告警管理模块负责接收直放站发来的告警信息,对告警信息进行记录分析并发送确认信息,将重要频繁的告警信息通过短信网关转发给相关人员。设备管理模块和轮询管理模块提供对于直放站站点单个或者批量的同步处理,可对站点单个或全部参数进行查询和修改。整个与直放站的通信也是通过短信息实现。
图1 直放站网关系统功能模块图
短信平台主要提供短信收发,将接收到的短信初解码,并将初解码后的信息通过Socket发送给Web端,进行解码分析。另将Web端发来的准备发送的信息,按照CMPP协议打包发出。
作为ISMG(Internet Short Message Gateway)的短信服务器与短信中心之间按照中国移动通信信息资源站实体与互联网短消息网关接口协议进行通信。短信网关在系统中的位置见图2。
通信中采取CMPP中规定的长连接模式,就是短信平台建立与短信中心(SMC)的连接,不断将数据包(一个个CMPP消息)发送到SMC,此处发送不必等待某条消息的回应消息返回,就接着发送下一个消息。发送同接收消息不是一定要同步的,实际采用异步(同时也时双工)模式。
图2 短信网关在系统中的位置
当收到短信中心发来的短信即CMPP包的时候开启短信处理程序,其流程见图3。
图3 短信接收处理程序流程图
首先启动短信程序,开始对于短信中心发来的消息进行监听捕获,一旦收到短信开启新线程处理信息。再将准备好的Socket消息发给Web的时候,为了避免大通信量导致的拥塞和Web端处理能力的溢出,在此以队列的形式进行发送。
当Web端有发送消息的请求时,Web端根据业务需要形成需要发送的短信形成固定的格式,提交给短信网关。
在通信服务器端,运行着SocketServer程序,用来监听来自Web端的发送请求。当收到Web端发来的发送请求的时候,首先分析信息格式,是否合法,包括信息编码格式,目标地址格式等等。然后对信息提取,取出目标地址和短信内容,按照CMPP协议进行封装后发出。
根据直放站监控系统的业务要求,在执行全部站点轮询业务时,需要短时间内给系统中的几千个直放站发送轮询请求,由于设备数量大,各自所处的网络环境复杂,短信回复的时间有很大的随机性,加之系统同时还要处理日常的告警信息,巡检信息和开站上报信息,就可能在很短时间内并发几十条甚至上百条短信回复,这对于系统造成了很大的处理压力,极端情况下可能导致系统瘫痪,所以采用了多线程处理技术,花在为每一个短信请求创建一个线程并在任务完成后销毁的时间和消耗的系统资源要比处理短信请求的时间和资源更多。也会造成CPU和内存资源的大量耗费,降低了系统的性能。因此在此采用线程池技术应对这个问题。
图4 短信发送处理流程图
在短信网关程序启动时便启动100个短信接收和解码处理的线程,并让这些线程处于睡眠状态,当直放站发来一个回复短信时,就会唤醒线程池中的某一个睡眠线程,让它来处理收到的短信请求,处理完该请求后,线程又处于睡眠状态,等待下次请求时被唤醒。短信发送处理流程见图4。
本系统用Java语言开发,Java语言本身内置了线程对象,当创建一个线程,就要从Thread类中继承,并实现其run()接口。这样就可以用wait()和notify()方法休眠或唤醒一个线程。
三者之间的数据交换采取异步全双工模式进行,用以应对随时发生的通信请求。采取了Socket长连接来进行消息发送,数据收发流程如图5。
图5 短信网关数据收发流程图
短信网关平台是直放站监控系统中底层通信的承载体,是系统中一切业务正常运行的基础,这种基础性的地位决定了短信网关平台必须具有高性能、高稳定性、高可靠性的特点。本程序现只适应中国移动CMPP协议,后期可以继续对于本系统加以完善,改进其多协议适应性加入SMPP,SGIP,SMGP等短信网关协议的支持,使得系统能在各种协议下正常工作。
经实验室测试、生产环境下测试,本系统运行正常,各项指标达到中国移动直放站监控系统性能规范的要求。
[1] Allen Holub.Taming Java Threads[M] . Apress. June 1, 2000.
[2] QB-GF-028-2003,中国移动通信互联网短信网关接口协议[S] . 北京:中国移动通信集团有限公司,2005,7.
[3] QB-W-003-2005,中国移动直放站监控系统数据需求规范[S] . 北京:中国移动通信集团有限公司,2005,8.
[4] 周恒民. Java TCP/IP Socket 编程[M] . 北京:机械工业出版社,2009,1.
[5] 侯建刚. 基于CMPP协议短信运营管理平台的设计与实现[D] . 济南:山东大学,2007.