CMPP

简介: CMPP协议是中国移动针对短信服务提供商接入专门制定了一套协议。本文从以下几个方面对CMPP进行介绍:短信服务的发展如何通信CMPP连接方式

一、短信服务的发展

  1. 第一阶段,以短信中心为主要的业务提供及信息提供时期。1992年英国工程师Neil Papworth向手机发送了第一条短信,此时手机还不具备回复短信的能力;到2012年,我国的短信业务到达顶峰,全年累计发送量9000亿;之后手智能手机和互联网即时通讯(微信等)工具的影响,我国手机用户发送的短信数量逐年下降。
  2. 第二阶段,由短信服务提供商SP(提供各种票务服务、快递通知、电商营销、打车服务等)与短信中心SMSC沟通,将互联网上的巨大信息量根据用户的要求通过手机短信传递给用户。随着业务的发展,这种直连的方式带来了一定的问题,短信中心SMSC的负荷越来越大,而且,如果用户使用了点播服务,而服务提供商又没有在用户归属的短信中心SMSC注册,那么这条点播消息将无法送达至服务提供商SP。
  3. 第二阶段后期,引入互联网短信网关ISMG,在计算机领域有这么一句话“遇到的问题都可以通过增加一个中间层来解决”。ISMG由SMPP代理系统(与SMSC连接)、通信代理系统(与SP连接)、防火墙、短消息网关处理(查询、缓存路由)、计费统计部分成,保证了接入的一致性及安全性,实现服务提供商SP和短信中心SMSC之间的交互。



二、如何通信

协议内容

当SP与运营商达成合作之后,SP要按照协议规定才能将短信通过数据通道传递给最终用户,CMPP(China Mobile Peer to Peer,中国移动点对点协议)就是联想亚信公司为中国移动量身定做的协议。

  • 中国移动:CMPP(China Mobile Peer to Peer)
  • 中国电信:SMGP(Short Message Gateway Protocol)
  • 中国联通:SGIP(Short Message Gateway Interface Protocol)


CMPP对数据包字段的语法、语义进行了规范,定义了中国移动短信业务中各网元之间的相关消息的类型和定义,包含以下三方面的内容:

  • 信息资源站实体/业务提供商SP与互联网短信网关ISMG之间的接口协议
  • 互联网短信网关ISMG之间的接口协议
  • 互联网短信网关ISMG与汇接网关GNS之间的接口协议


ISMG架构图

互联网短信网关由以下几部分组成:

  • 服务提供商(SP,Service Provider):短信服务的提供者
  • 短信中心(SMSC,Short Message Service Center):利用信令网将短消息发给手机用户
  • 短信网关(ISMG,Internet Short Message Gateway):采用CMPP协议连接SP和SMSC
  • 汇接网关(GNS,Gateway Name Server):提供路由查询


业务流程

短信发送:用户归属地的SMSC将短信转发给归属的ISMG,ISMG在本地缓存中查询是否维护了SP的连接信息,如果是,则该ISMG直接转发给SP;否则,ISMG向GNS发出路由请求查询该SP对应的ISMG,然后将短信转发给目的ISMG进行短信发送。

短信接收:SP发出业务请求到ISMG,ISMG根据手机号码判断归属SMSC,如果归属SMSC由当前ISMG连接,则直接将数据发送到SMSC;否则向GNS发出路由请求查询路由,然后将业务数据转发给目的ISMG发给归属地SMSC,再发送给用户。

短信发送MO(上行)

短信发送是指从用户发送短信到SP的过程,其中③到⑧使用了CMPP协议

①手机发出数据请求(订阅或者点播等),被归属ISMG接收

②归属ISMG对接收到的消息返回响应

③归属ISMG在本地查询不到要连接的SP,向GNS发路由请求信息。CMPP_MO_ROUTE

④GNS将路由信息返回。CMPP_MO_ROUTE_RESP

⑤归属ISMG根据路由信息将请求转给接入ISMG。CMPP_FWD

⑥接入ISMG响应。CMPP_FWD_RESP

⑦接入ISMG将请求信息送给SP。CMPP_DELIVER

⑧SP响应。CMPP_DELIVER_RESP

短信接收MT(下行)  

短信接收是指用户从SP接收下发的消息的过程,其中①到⑥使用了CMPP协议

①SP发出数据请求(短信通知等),被接入ISMG接收。CMPP_SUBMIT

②接入ISMG对接收到的消息返回响应。CMPP_SUBMIT_RESP

③接入ISMG在本地查询不到目的手机号段所对应的网关代码,向GNS发路由请求信息。CMPP_MT_ROUTE

④GNS将路由信息返回。CMPP_MT_ROUTE_RESP

⑤接入ISMG根据路由信息将请求转给归属ISMG。CMPP_FWD

⑥归属ISMG响应。CMPP_FWD_RESP

⑦归属ISMG将请求信息发送至SMC

⑧SMC向归属ISMG返回响应。


路由

在短信发送和接收中存在两次路由过程:

  • 短信发送过程中,用户归属SMSC到SP的路由
  • 短信接收过程中,SP到用户归属SMSC的路由

其中路由信息由省内ISMGGNS进行维护。

GNS

查询前转网关的地址,包括:

  1. SP企业代码、服务代码、连接SP的ISMG的IP地址路由表(由CMPP协议自动生成)
  2. 全国用户手机号段、用户归属省的ISMG的IP地址路由表(人工配置)

省内ISMG

查询SP和SMSC的地址

  1. 直连的SP:业务代码、服务代码、SP企业代码、SP的IP地址的路由表(人工配置)
  2. 本省手机用户:本省手机号段,归属地SMSC的IP地址的路由表(人工配置)



三、CMPP连接方式

长连接

在TCP连接保持期间,可以连续发送多个数据包,如果没有数据包发送,需要双方发链路检测包,以维持此连接。

当信道上没有数据传输时,通信双方应每隔时间C发送链路检测包以维持此连接,当链路检测包发出超过时间T后未收到响应,应立即再发送链路检测包,再连续发送N-1次后仍未得到响应则断开此连接。(建议取值:C=3分钟,T=60秒,N=3)

消息采用并发方式发送,加以滑动窗口流量控制,即接收方在应答前一次收到的消息多于窗口大小条W将予以拒绝。

长连接多用于操作频繁,点对点的通讯,且连接数不能过多。

短连接

通信双方有数据交互时,建立一个TCP连接,数据发送完后,断开此TCP连接,即每次TCP连接只完成一对CMPP消息的发送。应答与请求在同一个连接中完成,完成一次操作后关闭此连接。

网关与SP之间,网关之间的消息发送后等待T秒后未收到响应,应立即重发,再发送N-1次后仍未得到响应则应停发。(建议取值:T=60秒,N=3)

短连接多用于并发量大,用户无需频繁操作的场景。

端口号

端口号

连接方式

7890

长连接(SP与ISMG之间)

7900

短连接(SP与ISMG之间)

7930

长连接(ISMG之间)

9168

短连接(ISMG与GNS之间)


相关文章
|
8月前
|
监控 网络协议 数据安全/隐私保护
云MAS中CMPP3.0协议封装与移动短信状态报告状态码说明
云MAS中CMPP3.0协议封装与移动短信状态报告状态码说明
785 1
使用vos3000时sip O 口网关注册成对接网关作为 ivr 接入,主叫号码如何设置
在VOS3000系统中,将SIP终端作为IVR接入点涉及配置SIP网关指向IVR应用,注册SIP设备并设定含用户名和域名的SIP账户。主叫号码设置可在注册时通过 Caller-ID 头部或拨号计划完成。拨号规则用于控制主叫号码传递,例如根据来源自动调整。配置后需测试主叫号码及IVR接入。不同版本可能有差异,欢迎交流学习。
|
架构师 NoSQL Java
【案例实战】SpringBoot3.x自定义封装starter实战
【案例实战】SpringBoot3.x自定义封装starter实战
【案例实战】SpringBoot3.x自定义封装starter实战
|
存储 编解码 监控
VOS3000作用与功能
VOS3000是一套VoIP 运营支撑系统,系统拥有强大的功能集合及可靠的安全保障,可支撑 5000 路并发,适用于话务转发,企业终端,APP 业务,大型呼叫中心调度等多种业务形态,满足了大部分高并发大容量 VoIP 业务的需求。
1832 0
|
安全 Java 关系型数据库
VOS3000 8.0安装命令
一、系统需求环境:     1.系统  :linux 64位系统     2.内核要求:内核2.6 以上     3.内存   :2G以上内存     4.系统要求:centos5.X 或者 redhat5.X (笔者用的centos5.6_64, 最好用centos5.6)     5.java环境:java version "1.5.0_08"     6.web环境 :apache-tomcat-5.5.15     7.数据库 :mysql
1143 0
|
Web App开发 网络协议 Java
干货:Java正确获取客户端真实IP方法整理
image 在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了。
2312 0
|
2月前
|
安全 Java API
【三方服务集成】最新版 | 阿里云短信服务SMS使用教程(包含支持单双参数模板的工具类,拿来即用!)
阿里云短信服务提供API/SDK和控制台调用方式,支持验证码、通知、推广等短信类型。需先注册阿里云账号并实名认证,然后在短信服务控制台申请资质、签名和模板,并创建AccessKey。最后通过Maven引入依赖,使用工具类发送短信验证码。
1184 3
【三方服务集成】最新版 | 阿里云短信服务SMS使用教程(包含支持单双参数模板的工具类,拿来即用!)
|
8月前
|
监控 测试技术 Apache
性能测试:方法、工具与最佳实践
性能测试:方法、工具与最佳实践
672 0
|
编解码 网络协议 安全
什么是猫池
猫池(外文名:ModemPOOL)就是将相当数量的Modem使用特殊的拨号请求接入设备连接在一起,可以同时接受多个用户拨号连接的设备。无线猫池设备广泛应用于大量具有多用户远程联网需求的单位或需要向从多用户提供电话拨号联网服务的单位。如邮电局、税务局、海关、银行、证券商、各类交易所、期货经纪公司、工商局、各类信息呼叫中心等。我公司的提供的猫池主要用于IP电话通讯使用,不是市面上的养卡猫池,这里我们再对猫池详细说明及功能使用:
3766 0
|
消息中间件 Kafka Shell
Docker安装kafka
Docker安装kafka
2879 0