王 俊
(广东邮电职业技术学院,广东 广州 510630)
适配器随着国内3G网络实施及各种应用的深入,如何将原有2G, 2.5G上的众多应用系统进行平滑升级,尽可能的降低重构成本是众多通讯应用开发商需解决的难题[1]。移动通信系统在推进3G应用的过程中也面临同样的问题。首先,运营支撑系统(BOSS,Business Operation Support System)、面向数据增值业务的综合平台(VGOP,Value-added Service General Operation Platform)、数据业务管理平台(DSMP,Data Service Management Platform)、应用数据中心(ADC,Application data center)等信息化平台通过不同接口访问移动相关数据中心,而与不同接口的交互运行着不同的协议,如∶短信网关运行中国移动点对点协议(CMPP,China Mobile Peer to Peer)协议、彩信中心则运行MM5协议[2-3]。其次,随着信息化的深入,各种基于3G的信息化业务需求不断增加,新增业务系统需要无缝接入已有平台。相关业务系统开发人员在实际的开发过程中需要关注太多的不同协议接口细节、底层通讯技术,增加了开发人员的开发难度和开发成本[4]。为了解决业务系统开发人员开发过程中面临的问题,提出基于3G业务的通用网关平台立项需求。
CMPP协议栈结构如图 1所示。因为 TCP/IP协议时CMPP协议的底层承载,所以,当SP与ISMG,ISMG之间交换信息时,既可以使用长连接方式也可以使用短连接方式。长连接是指一个 TCP连接可以持续发送多个数据包,TCP连接期间内,如果没有发送数据包,双方要发送链路检测包以确保连接。短连接是双方交换数据时,创建TCP连接,数据传输完成后,然后断开TCP连接,每个TCP连接只完成一此发送 CMPP消息。长连接:双反以客户-服务器模式创建TCP连接用以双方交换消息。当信息通道上没有发送数据,双方应间隔C时间传输链路检测包以保持此连接,当发送的链接测试包超出T时间后,仍然没有响应时,应该在此发送链路检测数据包,如果持续发送了N-1次以后还没有反应时就应该中断此次连接[5]。在原则上参数C, N, T是可以进行配置的,默认值是:C= 3 min,T=60 s ,N=3。当网关和SP,网关之间发送消息T秒之后仍然没有反应时,要立刻重发,如果持续N-1次重发后还是没有响应应该取消发送。在此阶段的推荐值:T= 60 s,N=3。用并发式发送消息,并且控制滑动窗口的流量,W作为窗口大小的参数,并且可以配置,W=16,即在应答之前接收方接收到的消息不会超过 16条。短连接,双方用客户-服务器的模式创建TCP连接,响应和请求在一个连接中同时完成。系统使用客户-服务器的方式,在操作上采用客户端发起连接请求,在一次操作完成后中断此次连接。网关和 SP,网关之间在发送消息 T时间后仍然没有反应的应该立刻重发,若持续发送N-1此还没有响应,应停止发送。在此阶段的推荐值为T=60 s, N=3。
图1 CMPP协议栈
B/S模式即浏览器/服务器模式,是以Web为中心,采用TCP/IP, HTTP传输协议,客户端通过浏览器(Browaer)访问Web服务器(Web Server)以及与 Web相连的后台数据库(Database),是一种从传统的三层C/S模式发展起来的新的网络结构模式,其本质是三层结构C/S模式。B/S结构利用大量成熟的Web浏览器技术,并结合中间件技术,实现了需要复杂软件设计才可以实现的客户端功能,节约了开发成本,同时解决了C/S模式客户端需要维护的缺点,是一种全新的软件构造技术。B/S具有分布性强、维护方便、开发简单、成本低、易升级、且共享性强等优点。在B/S结构下,整个系统的管理、资源分配、数据库操作、业务逻辑部件的管理及动态加载等等工作都集中于应用服务器。同时,由于工作集中,可以降低客户机的管理难度及客户计算机配置。仅仅提高应用服务器及数据库服务器的品质,就可以提高整个系统的运行效率,从而有效的降低了系统部署和管理的难度。
在适配器节点同业务系统的数据传输过程中,网关节点扮演着桥梁和中转枢纽的角色。适配器节点和业务系统之间传输的数据包,必须经过网关节点进行一系列的逻辑控制和业务处理后,才被发往到接收方。在整个传输过程中,网关节点始终都是连接的服务器端。换句话说,在适配器节点和网关节点的连接中,适配器节点是客户端,网关节点是服务器端;在业务系统同网关节点的连接中,业务系统是客户端,网关节点是服务器端。网关节点维持两种池,一种是连接池,其中包含了所有已经登录了的连接;另外一种叫通讯有序数据池,其中包含的是通讯数据包的集合。网关节点在适配器节点和业务系统两边各有通讯数据池。从适配器节点发出的请求数据包放在适配器数据池中,从业务系统发出的请求数据包放在业务系统数据池中。网关节点维持一个连接池,不论是适配器同网关节点连接,还是业务系统同网关的连接,都放在该连接池中。当网关节点接收到连接登陆请求(来自网络适配器节点或业务系统)时,先进行鉴权处理。如果满足鉴权要求,则反馈一个连接登陆成功的响应,并且将该连接放到连接池中,否则返回一个连接请求不成功的响应并断开连接;当网关节点接收到注销请求时,把该连接从连接池中清除,并断开连接[6]。网关节点将接收到的数据包分为两大类型,一种为控制消息包,另外一种为业务包。当网关节点接收到的是控制消息包时,该类消息包(如连接登录请求和注销请求)具有最高优先级,网关节点立即进行业务处理,并给出一个相应的响应。当网关节点接收到的是一个业务包时,则按下面的数据格式将数据包构建成一个数据项,并依照优先级从高到低的顺序放入到通讯数据池中。
该模块主要完成监听端口、接收适配器节点的获取配置请求、响应适配器节点的请求的功能。在网关主节点响应适配器节点获取配置请求之前,适配器节点应先连接到网关主节点。如果网关主节点的物理连接数已经饱和,则适配器节点不能中请连接登陆到网关主节,网关主节点反馈一个拒绝响应,并断开该 socket连接。如果网关主节点的物理连接数没有达到饱和,则建立socket连接,具体流程如图2所示。这个获取配置请求的连按并不放入网关主节点的连接池,在网关主节点响应适配器节点的请求后,该连接断开。
图2 适配器节点与网关节点连接流程
该模块主要完成能力鉴权和能力中专功能。其中能力鉴权是指网关节点收到业务数据包时,按照已经定义好的能力使用关系来决定该业务能否被授权,即决定数据包是否有权限被继续往下发送。能力中转是指网关节点对已经鉴权成功的业务数据包,按照相应的记录决定能力的中转路径。能力鉴权的处理流程,主要是网关节点根据接收到的业务数据包,然后查表,再根据查表的结果来决定能否被授权的过程。
流量控制对所有该网关节点内的请求,按照调用关系和业务接口做单位时间流量控制。时间单位可以是秒、分、时、日、月。未设置流量控制则不做处理。比如策略应用中对下行短信定义了每秒下行流量控制 50条,则需控制下行短信的流量每秒不超过 50条。流量控制采用业务接口时间点和对应的请求量计数器来实现,针对每个调用关系上的每个业务接口,系统设计以下5对变量:过去1秒的秒点和请求量计数器;过去1分的分点和请求量计数器;过去1时的时点和请求量计数器;过去1日的日点和请求量计数器;过去1月的月点和请求量计数器。秒点表示的是该秒时间点内的一段时间,如12:00:00的秒点表示的是[12:00:00,12:00:01]这个时间段。接收到一个请求时,如果当前时间在秒点之内,请求量计数器增1,这一动作称为增1操作;如果当前时间不在秒点之内,秒点变更为适合当前时间的秒点,并且请求量计数器重置为 1,这一动作称为时间点切换。同样,分点、时点、日点和月点以及对应的请求量计数器可以做类似的处理。增 1操作:以数据表方式记载把当前时间点和请求量计数器到数据库中,如果系统异常退出,在重启系统时需将当前时间点和请求量计数器重新加载到内存。时间点切换:时记载流量控制日志,把过去的时间点内的请求量计数器持久化到数据库。有了时间点和对应的请求量计数器,在此基础上做流量控制实际上就是一个数量比较。当请求量计数器大于控制量时,系统返回流量控制否决;当请求量计数器小于等于控制量时,系统继续处理。
优先级对所有该网关节点内的请求,按照调用关系和业务接口做排队处理,优先级高的优先分配处理线程进行处理;未设置系统优先级的调用关系,设置默认优先级。网关节点收到业务数据包进行优先级排队时,先获取该数据包的优先级,然后依照 DataPool的数据格式构造一个数据项,再将该数据项依照二分法插入到有序数据池中去。当线程空闲时,从数据池中按优先级从高到低发送数据包。
这里模块主要考虑适配器节点、业务系统连接登录到网关节点上,以及适配器节点、业务系统从网关节点中注销连接的功能。适配器连接到网关节点:如果网关节点的物理连接数已经饱和,则适配器节点不能中请连接登陆到网关节点。因此,适配器请求连接登录到网关节点,实际上是在适配器同网关节点之间已经存在了一个物理的 socket连接。然后网关节点收到适配器的请求后,在业务层面上对该连接请求进行鉴权和处理。如果该请求满足条件,网关节点就反馈一个同意请求的响应,且将该连接放到连接池中,并保持该连接。否则,网关节点反馈一个拒绝响应,并断开该socket连接。适配器节点从网关节点中注销:网关节点收到适配器注销连接的请求后,主要完成的动作是从连接池中删除相应的连接。同样的,对于业务系统中请连接登录到网关节点和中请注销连接的请求,网关节点按照上述类似的过程进行相应的处理。
首先对网关的总体功能进行了设计,对网关实现所需要的核心协议进行自定义,在关键技术解决的基础上完成系统的总体设计、模块详细设计。在设计的基础上实现系统各功能模块。从企业实际应用需求出发,设计完成了网关平台的开发、为业务系统和支撑平台提供了统一桥梁、完成不同协议转换、通讯控制等。
[l] 吴伟陵.移动通信中的关键技术[M].北京邮电大学出版社,2000.
[2] 朱小毅.基于J2EE三层B/S企业信息系统[J].太原理工大学学报,2005, 26(01):56-59.
[3] 王春梅,邹丰义,郑自国.基于三层结构的短信服务平台的解决方案[J].计算机应用研究,2006,23(04):246-249.
[4] 张国平,万仲保,刘高原.Spring AOP框架在J2EE中的应用[J].微计算机信息,2007, 23 (12):254-256.
[5] 金纯, 汤芳剑, 赵喜, 等.基于SIP和CMPP的即时消息网关的设计和实现[J].通信技术,2008,41(12):198-200.
[6] 洪斌,王利霞,张红岭,等.基于ARM和DSP的VoIP网关的设计与实现[J].通信技术,2008,41(08):173-175,178.