首页 考试吧论坛 Exam8视线 考试商城 网络课程 模拟考试 考友录 实用文档 缤纷校园 英语学习 | ||
2010考研 | 自学考试 | 成人高考 | 专 升 本 | 法律硕士 | MBA/MPA | 中 科 院 | ||
四六级 | 商务英语 | 公共英语 | 职称日语 | 职称英语 | 博思 | 口译笔译 | GRE GMAT | 日语 | 托福 | ||
雅思 | 专四专八 | 新概念 | 自考英语 | 零起点英、法、德、日、韩语 | 在职申硕英语 | ||
在职攻硕英语 | 成人英语三级 | ||
等级考试 | 水平考试 | 微软认证 | 思科认证 | Oracle认证 | Linux认证 | ||
公务员 | 报关员 | 报检员 | 外销员 | 司法考试 | 导游考试 | 教师资格 | 国际商务师 | 跟单员 | ||
单证员 | 物流师 | 价格鉴证师 | 银行从业资格 | 证券从业资格 | 人力资源管理师 | 管理咨询师 | ||
期货从业资格 | 社会工作者 | ||
会计职称 | 注会CPA | 经济师 | 统计师 | 注册税务师 | 评估师 | 精算师 | 高会 | ACCA | 审计师 | ||
法律顾问 | 会计证 | ||
一级建造师 | 二级建造师 | 造价师 | 监理师 | 安全师 | 咨询师 | 结构师 | 建筑师 | 安全评价师 | ||
房地产估价师 | 土地估价师 | 设备监理师 | 岩土工程师 | 质量资格 | 房地产经纪人 | 造价员 | ||
投资项目管理 | 土地代理人 | 环保师 | 环境影响评价 | 物业管理师 | 城市规划师 | 公路监理师 | ||
公路造价工程师 | 招标师 | ||
执业护士 | 执业医师 | 执业药师 | 卫生资格 |
关键词: 短消息 ; 短消息网关 ; 通信
• 前言
随着通信技术的发展,无线互联网短消息业务正在为用户提供越来越多的服务。人们不仅可以通过手机点播定制新闻、股票信息、天气预报,还可以下载铃声、图片等。无论需要什么样的信息,我们都可以随时随地地通过手机接入互联网络,享受各种服务。电信运营商要实现这些增值业务,就必须支持网间的互联互通。
目前实现网间互联互通的方式有四种,包括:通过移动关口局互联互通;通过信令转接点互联互通;通过短消息网关互联互通;通过第三方运营商系统互联互通。前两种方式不易设置计费点和引出计费话单,因此不利于网间结算;最后一种方式,虽然能够保证计费点和结算点的统一,但是易受到地域条件的限制 。 而通过短消息网关实现互联互通,无须对 现网运行的设备进行大面积的数据改动和升级改造,能够 合理的设置计费点,保证计费的准确性,实现业务鉴权和业务过滤的功能,保证网络的安全,也能够通过对业务流量的监视和控制,防止网络风暴的发生,这种互联方式具有其他三种方式不可比拟的优点。目前,大部分短消息业务的互联互通都是使用短消息网关来实现。
• 短消息网关结构
短消息网关( ISMG )是处于短消息中心( SMSC )和业务提供商( SP )之间的设备,它为这两个实体的数据交换提供安全、快捷的通道。网关与短消息中心之间使用 SMPP 协议( Short Message Peer to Peer, 短消息点对点协议) , 与 SP 之间使用 CMPP 协议( China Mobile Peer to Peer, 中国移动点对点协议),因此短消息网关需要完成协议的转换、计费、路由、安全和网络管理等功能。其结构图如图 1 所示。
具体说来,图 1 中 SMPP 通信代理系统主要实现网关和 GSM 网中短消息中心( SMSC )的连接,确保准确接收和发送数据,实现高效、可靠的数据传输。为了达到规范要求的不超过 0.001% 的数据丢包率, SMPP 通信代理需要支持流量控制。 CMPP 通信代理系统主要是实现和 SP 服务提供商的连接,与 SMPP 通信代理系统不同的是,由于协议的影响, CMPP 通信代理是服务器端,需等待 SP 的连接,而 SMPP 通信代理是客户端,需要主动连接 SMSC 。短消息网关处理系统是网关中最复杂的处理进程,它完成的任务包括:向 GNS( 汇接网关 ) 查询路由,维护路由表,进行协议转换和数据分发。防火墙系统主要为网关系统提供安全保障,它包括 IP 包过滤和身份验证。短信网关计费系统主要形成各种计费话单,为计费提供依据。业务管理系统主要完成对业务进行统计报告,生成报表,为运营者对用户数据的添加、修改、删除以及对网关系统的监控、查询、操作和维护提供接口和界面。
• 短消息网关通信模块的设计与实现
短消息网关通信模块是整个短消息网关的基础。无论是计费、统计,还是超时重传,高质量的通信构架是必不可少的保障。这个通信构架不仅要完成基本的收发消息的功能,而且还要有好的结构以支撑各种业务需求,保证良好的扩展性。
在设计短消息网关通信模块时,我们考虑了以下几点:
第一,由于短消息网关功能繁多,如果把通信和具体业务合在一起开发,容易顾此失彼。可能会因为开始的考虑不周全,造成在增加某项新业务时不得不修改通信底层和原来的业务代码,导致重复开发。所以我们采用通信代理的方式把通信和具体业务分开,在增加新业务时,就只需少量修改通信代理的设置,而且不必再改动原来的业务代码了。
第二,通信代理需要同时侦听多个端口,我们选用多路复用 I/O 这种方式。虽然多线程能够通过并行计算和共享内存提高代码效率和资源利用率,但在短消息网关中,处理的数据量大,多线程方式的并行处理会造成一些消息的逻辑混乱,资源共享也会增加代码的复杂度。而多路复用使用简单,逻辑清晰明了,不易发生错误,也不会出现因资源共享带来同步和互斥问题。因此使用多路复用 I/O 是比较合理的。
第三,业务处理模块与通信代理之间可以使用队列进行通信,对队列的管理和参数的设置 (例如对同一队列操作的互斥,以及队列个数的设置等)都使用专门的队列内核程序统一调度并封装成函数接口,以方便业务处理模块对队列的使用。另外,通过队列通信,也可以为今后增加的业务提供良好的扩展性。
第四,为了达到 99.999%的不丢包率,通信代理需要使用流量控制机制以保证网关内部不丢包。这是因为无论队列设置有多大,如果出现消息只发不收的情况,都会造成队列溢出而丢包。因此,为每个队列中缓存的消息做记录,当某个时刻队列消息的数量达到规定限度,队列就不再收包,以保证到达网关的消息不会丢失。