SGIP协议13.docx
《SGIP协议13.docx》由会员分享,可在线阅读,更多相关《SGIP协议13.docx(75页珍藏版)》请在冰豆网上搜索。
SGIP协议13
?
中国联合网络通信有限公司
短消息网关系统接口协议
(SGIP)
版本
}
%
中国联合网络通信有限公司
二零零九年三月
;
1概述1
协议说明1
适用范围1
参考资料1
术语表1
2系统体系结构3
消息从本地SMSC到本地SP4
消息从本地SP到本地SMSC4
消息从本地SMSC到异地SP4
消息从本地SP到异地SMSC4
路由选择4
3通信流程6
专用SGIP方式6
通用HTTP方式6
通信节点编号规则7
序列号的定义7
通信的安全性8
用户鉴权8
被叫方付费8
付费8
第三方付费8
SP与SMG的通信9
通用HTTP方式9
从SP到SMG的命令9
从SMG到SP的命令10
专用SGIP方式10
通信初始化10
通信过程10
通信结束11
故障处理12
从SP到SMG的消息12
从SMG到SP的消息13
SMG与SMG之间的通信13
通信初始化14
通信过程14
通信结束14
故障处理14
两个SMG之间的消息15
SMG与GNS之间的通信15
通信初始化15
通信过程15
通信结束16
故障处理16
从SMG到GNS的消息16
从GNS到SMG的消息16
4消息定义18
基于通用HTTP的消息定义18
操作18
Submit命令的请求内容18
Submit命令的应答内容19
操作20
Deliver命令的请求内容20
Deliver命令的应答内容20
操作21
Report命令的请求内容21
Report命令的应答内容21
操作22
UserRpt命令的请求内容22
UserRpt命令的应答内容22
操作22
Trace命令的请求内容22
Trace命令的应答内容23
基于专用SGIP的消息定义23
数据类型23
消息头的格式24
消息体的格式24
Bind操作24
Unbind操作25
Submit操作25
Deliver操作27
Report操作28
AddSP操作28
ModifySP操作29
DeleteSP操作30
QueryRoute操作30
AddTeleSeg操作31
ModifyTeleSeg操作32
DeleteTeleSeg操作32
AddSMG操作33
ModifySMG操作34
DeleteSMG操作34
鉴权消息定义35
命令的语法35
应答的语法35
命令的语法35
应答的语法35
测试消息定义36
命令的语法36
应答的语法36
5常量定义37
消息ID定义37
错误码定义37
计费类别定义38
状态与短消息状态的映射38
附录1:
全网路由表的格式示范39
附录2:
本地路由表的格式示范40
附录3:
HTTP承载方式示范41
1概述
协议说明
本协议是SMG和SP之间、SMG和GNS之间、以及SMG和SMG之间的接口协议,简称SGIP。
通过应用SGIP协议,SP可以接入到SMG,实现SP应用的一点接入、全网服务;SMG可以通过SGIP协议,实现消息在不同SMG之间的路由和转发。
同时,SMG通过该协议也可以和GNS通信,以实现各SMG和GNS之间路由表的同步功能。
适用范围
本协议适用于各SP厂商和SMG的开发厂商。
参考资料
[1]SMPP
[2]GSM
[3]GSM
[4]
术语表
本协议用到以下术语:
GNSGatewayNameServer,负责系统路由的管理和同步
MO由手机用户提交的短消息
MT由手机用户接收的短消息
SGIPShortMessageGatewayInterfaceProtocol,本协议所描述的短消息网关接口协议,用于完成在SMG和SP之间、SMG和SMG之间短消息的发送、接收和转发功能,以及SMG和GNS之间路由表的同步功能
SMGShortMessageGateway,联通公司的短消息网关,SMG之间的通讯协议采用SGIP
SMPPShortMessagePeertoPeer,短消息点对点协议,采用版本
SMSCShortMessageServiceCenter,短消息中心
SPServiceProvider,服务提供商
2系统体系结构
SMG是具有短消息转发功能的短消息网关。
全国可以有多个SMG网关,SMG网关之间通过互联网等方式实现网络互联。
每一个SMG同时与多个SMSC以及多个SP连接。
全网具有唯一有效的GNS,GNS负责全局路由表的维护与更新;为了确保路由表存储的安全性,网络中设置主备用GNS,两个GNS要保持一致性。
每一个SMG都和GNS连接。
SMG与SP、SMG与GNS以及SMG与SMG之间的通信协议为SGIP协议。
SMG与SMSC之间的通信统一采用协议。
图2-1说明了系统的体系结构。
图2-1SMG的体系结构
和SMG平台之间相连的SMSC称作本地SMSC,和异地SMG平台相连的SMSC称作异地SMSC。
和SMG平台之间相连的SP称作本地SP,和异地SMG平台相连的SP称作异地SP。
从本地SMSC向本地SP以及从本地SP向本地SMSC发送的消息直接由SMG转发;从本地SMSC向异地SP以及从本地SP向异地SMSC发送的消息由本地SMG路由到异地SMG后,再由异地SMG转发。
消息从本地SMSC到本地SP
SMG从SMSC接收到短消息,直接发给SP。
比如
SMSC1A—〉SMG1—〉SP1Y
SMSC1B—〉SMG1—〉SP1X
消息从本地SP到本地SMSC
SMG从SP接收短消息,直接发给SMSC。
比如
SP1X—〉SMG1—〉SMSC1A
SP1Y—〉SMG1—〉SMSC1B
消息从本地SMSC到异地SP
SMG从本地SMSC接收短消息,再路由到异地SMG,由异地的SMG发送到目的SP,比如
SMSC1A—〉SMG1—〉SMG2—〉SP2Y
SMSC1B—〉SMG1—〉SMG3—〉SP3X
消息从本地SP到异地SMSC
SMG从本地SP接收短消息,再路由到异地SMG,由异地的SMG发送到目的SMSC,比如
SP1X—〉SMG1—〉SMG2—〉SMSC2A
SP1Y—〉SMG1—〉SMG3—〉SMSC3B
路由选择
当消息在本地SMSC和异地SP,或者在本地SP和异地SMSC之间传输时,发送方必须要获取消息接收方的位置信息。
这部分功能称为路由选择。
对于MO方向的命令(即命令接收方为SP),其路由根据命令中的SP接入号码来选择。
对于MT方向的命令(即接收方为用户手机),其路由根据命令中的付费号码和用户号码来综合判断。
如果付费号码为空,或付费号码为SP接入号码,则根据用户号码来选择路由;否则根据付费号码所代表的手机号码来选择路由(这样做是考虑到了系统计费和用户鉴权的可行性,关于计费和用户鉴权的细节,请参见其它文档)。
由于SMG网关之间采用网状互联,网关之间不可能出现二次前转,因此接收前转消息的网关必须能判断前转的消息目的地址是否是本网关覆盖范围的用户,若不是,必须发送出错信息到前转网关。
3
通信流程
SGIP有两种具体实现方式,一种是采用专用SGIP方式,另一种是采用通用HTTP方式。
SMG和GNS、以及SMG和SMG之间采用专用SGIP方式作为承载协议;而SP和SMG的通信同时支持专用SGIP方式和通用HTTP方式两种承载协议。
专用SGIP方式
采用专用SGIP方式承载时,通信双方互为客户端和服务器端。
当客户端要发送命令时,主动向服务器端建立连接,然后向服务器端发送命令,并接收应答;服务器端从客户端接收命令,返回应答。
连接建立以后,客户端可以连续发送多条命令。
命令发送完并接收到所有应答后,客户端应该主动断开连接。
但是,命令及其应答之间的时间间隔最大不能超过30秒(默认,可配置)(如果命令应答时间超过最大等待时间,则要求客户端重发该条命令,重发机制参见业务联网规范有关内容),且待应答的命令不得超过32条(可以根据线路的质量和服务器的处理能力配置)。
而且,如果服务器端检测出一条连接长时间空闲(默认60秒,可配置),可以主动断开该连接。
如果需要,客户端可以同时向一个服务器端建立多个连接(SMG与单个其他SMG最多不能建立超过15个连接,对与之相连的单个SP的最大连接数视具体情况而定)。
采用专用SGIP承载方式时,SMG和SMG、SP和SMG之间使用的端口号是8801,GNS监听SMG的端口号为8802,SMG监听GNS的端口号为8803,主GNS和备用GNS之间的端口号为8804,SMG之间的测试用端口号为8810。
通用HTTP方式
HTTP承载方式只适用于SP和SMG的通信中。
与SP与SMG之间的专用SGIP承载方式不同的是,该种方式一次连接仅仅传送一条命令,而且连接的认证采用HTTP的URL的授权认证的方式,不需要专门的连接认证的命令,使用的端口号是80。
通信节点编号规则
在整个网关系统中,所有的通信节点(SMG、GNS、SP和SMSC)都有一个唯一的数字编号,不同的SP或SMSC或SMG或GNS编号不能相同,编号由系统管理人员负责分配。
编号规则如下:
SMG的编号规则:
1AAAAX
SMSC的编号规则:
2AAAAX
SP的编号规则:
3AAAAQQQQQ
GNS的编号规则:
4AAAAX
其中,?
AAAA表示四位长途区号(不足四位的长途区号,左对齐,右补零),X表示1位序号,QQQQQ表示5位企业代码。
序列号的定义
短消息网关系统之中传输的每一条命令都有一个序列号,序列号由命令源节点产生并唯一标记一条命令;也就是说,网关系统中任何两个命令的序列号都不相同。
需要注意的是,一条命令在发送过程中转发的不同副本视为一条命令,使用相同的序列号。
比如,SP1X向SMSC2A发送一条命令,该命令需经过多次转发才能到达SMSC2A,而转发该命令的每一次通信过程中使用的命令的序号均相同,为SP1X与SMG1通信所使用的序列号。
对于MO短消息,例如SMSC1B向SP3X发送一条命令,短消息首先采用SMPP协议发送到SMG1,经过SMG1转发时序列号必须由SMG1重新生成(此时命令源节点为SMG1)。
序列号分成三部分,每部分为一个32位整数,第一部分表示命令源节点的编号,第二部分表示命令产生的日期和时间(网关系统中的任何命令的保存时间都不应该超过一年),格式为十进制的mmddhhmmss,比如11月20日20时32分25秒产生的命令,其第二部分为十进制25;第三部分由0开始,循环进位,直到进位满了之后再清零,重新开始计数。
接收方在返回应答时,应答的序列号必须和相对应的命令的序列号相同。
图3-1命令序列号格式举例
通信的安全性
SP与SMG、SMG与SMG以及SMG与GNS之间采用专用SGIP方式通信时可采用对称加密方式。
SP与SMG之间采用通用HTTP方式时,可采用HTTPS方式加密。
用户鉴权
当一条MT短消息需要处理时,终点SMG必须保证该短消息的付费方有资格享用该服务(比如付费用户不欠费)。
根据短消息服务类型的不同,可以将付费方式分成三类:
被叫方付费、SP付费和第三方付费。
3.6.1被叫方付费
目前的短消息中心都具有对被叫用户鉴权的功能,所以对由被叫方付费的MT短消息,SMG不作鉴权检查,直接转发至SMSC;如果被叫方鉴权失败,SMSC会通过反馈通知SMG。
3.6.2SP付费
当MT短消息是由SP付费时(如SP发送广告),SMG不作鉴权检查。
3.6.3第三方付费
当MT短消息是由第三方付费(如手机用户A通过SP给手机用户B点歌,并由手机用户A付费)时,应该对付费方进行鉴权。
这种情况下,该MT短消息应该从付费方归属地的短消息中心发送,并且由付费方归属地的计费中心完成鉴权操作。
如果计费中心鉴权成功,SMG即将该MT短消息发送至SMSC,否则SMG不再发送该短消息,并根据SP的要求决定是否返回Report命令通知SP发送失败的原因。
SMG和计费中心通过TCP/IP通信实现鉴权功能。
计费中心为服务器端,SMG为客户端。
一次鉴权过程完成对一个手机号码的鉴权。
鉴权步骤如下:
1.SMG和计费中心建立TCP/IP连接;
2.SMG向计费中心发送鉴权命令;
3.SMG从计费中心接收鉴权应答;
4.SMG和计费中心断开连接;
消息
描述
CheckUser
SMG向计费中心请求对一个手机号码鉴权
CheckUser_Resp
计费中心向SMG返回的一个手机号码的鉴权结果
表3-1SMG和计费中心的鉴权消息
SP与SMG的通信
SP和SMG支持两种类型的通信承载方式:
通用HTTP承载方式和通用SGIP承载方式。
3.7.1通用HTTP方式
SP和SMG之间采用通用HTTP方式通信时,SP和SMG互为HTTP的客户端和服务器端。
HTTP服务器端对相关的URL进行保护,HTTP客户端必须采用授权方式访问这些URL。
HTTP的特点决定客户端和服务器端的每一次通信都必须一次完成授权连接、发送请求、接收应答、关闭连接等过程(HTTP承载方式不再需要专门的连接命令)。
对于MO方向的命令(即命令接收方为SP),由SMG通过POST方式提交给SP进行处理,SP将处理结果以及MT方向信息在HTTP应答中返回给SMG;
对于SP主动向用户发送信息的PUSH业务,由SP作为客户端将信息通过POST方式提交给SMG进行处理,SMG在应答中确认信息发送成功与否。
因为HTTP服务器对URL进行了授权保护,所以HTTP客户端必须在每次请求中都带上授权信息。
HTTP客户端的一个请求只能携带一条命令。
SP与SMG之间发送的任何一条命令都带有一个序列号,序列号由命令源产生,任何两条命令的序列号不能重复。
如果HTTP服务器接收到的HTTP请求内容的格式不完整或不正确,HTTP服务器应该返回错误码。
HTTP承载方式支持的HTTP协议为版。
HTTP承载方式使用如下命令:
3.7.1.1从SP到SMG的命令
消息
描述
Submit
SP用该消息向SMG请求向某一个短消息用户发送短消息
Trace
SP用该消息向SMG请求跟踪某一条MT短消息的状态
表3-2从SP到SMG的命令
3.7.1.2从SMG到SP的命令
消息
描述
Deliver
SMG发送一条短消息到SP
Report
SMG用该命令通知SP一条Submit命令所发送的MT当前结果
UserRpt
SMG用该命令报告SP一条手机用户的状态
表3-3从SMG到SP的命令
3.7.2专用SGIP方式
SP和SMG之间的通信由客户端向服务器端发起连接。
连接建立以后,由客户端向服务器端发送命令,服务器端必须对接收到的每一条命令返回一条应答消息。
SP和SMG互为客户端和服务器端。
3.7.2.1通信初始化
客户端有命令要向服务器端发送时,由客户端首先通过Bind命令向服务器端发起连接。
服务器端根据Bind命令之中的登录名和密码,对客户端的合法性进行验证,然后返回一条Bind_Resp应答给客户端。
如果验证通过,则客户端和服务器端的通信开始,否则中断连接。
3.7.2.2通信过程
SP与SMG之间发送的任何一条命令都带有一个序列号,序列号由命令源产生。
客户端与服务器端通信开始以后,客户端可以向服务器端发送相应的命令,服务器端对收到的命令返回应答。
图3-2SP和SMG的通信消息样例(SP为客户端)
图3-3SP和SMG的通信消息样例(SMG为客户端)
命令在SP和SMSC之间的传输是采用类似接力的方式,每条命令和对应的应答仅仅表示该次命令发送的结果是否正确。
比如,SP向某一个手机发送一条短消息,是通过向本地SMG发送一条Submit命令实现的,随后,SP会从SMG接收到一条Submit_Resp应答。
但是,即使应答表示Submit命令已正确接收,也不表示Submit命令内的短消息已经发送到手机上了,而仅仅表示该短消息已经传送到SMG,SMG将会作下一步处理,或者发送给SMSC,或者路由到另外的SMG,最终由目的SMSC发送到手机上。
这中间任何一个环节出现错误,系统会终止信息的继续发送,并且通过向原SP发送Report命令告诉发送出错的原因(如果SP指定要求反馈的话)。
3.7.2.3通信结束
如果客户端认为和服务器端的通信已结束,则客户端应该向服务器端发送Unbind命令,服务器端随后返回Unbind_Resp应答,然后双方断开连接。
3.7.2.4故障处理
发生故障时,SP、SMG以及GNS节点应通过Report命令和其它相关命令的应答相结合返回故障原因;如果MO不成功,该用户所属的SMG还应向用户终端返回友好的应答信息说明不成功原因。
3.7.2.网络故障
客户端与服务器端的通信过程中如果检测到双方连接中断(如网络断线),客户端应该断开连接,然后尝试重新向服务器端建立新的连接;服务器端应该按照接收到Unbind的情况进行处理,断开和客户端的连接。
3.7.2.接收到非法命令或应答
如果服务器端接收到的命令语法错误,比如命令不完整、命令无法识别等,则断开和客户端的连接;客户端应该向服务器端建立新连接继续发送命令。
如果客户端接收到的应答语法错误,比如命令不完整、命令无法识别等,则主动断开和服务器端的连接;服务器端也应该断开和客户端的连接。
如果命令语法正确,但服务器端不处理该命令,比如SP为服务器端时收到Submit命令,则返回相应应答,并在应答中指定错误原因。
如果应答语法正确,但客户端不处理该应答,比如SP为客户端时收到Deliver_Resp应答,则丢弃。
3.7.2.序列号重复
如果命令的序列号和以前接收到的命令的序列号相同,且命令内容也相同,则接收方丢弃该命令;如果序列号相同,但是命令内容并不相同,则命令接收方在应答中返回错误码。
3.7.2.5从SP到SMG的消息
消息
适用方式
描述
Bind
SP为客户端
SP用该消息向SMG发出建立连接的请求
Bind_Resp
SP为服务器
SP对Bind命令的应答
Unbind
SP为客户端
SP用该消息向SMG通知将要断开现有的连接
Unbind_Resp
SP为服务器
SP对Unbind命令的应答
Submit
SP为客户端
SP用该消息向SMG请求发送短消息
Deliver_Resp
SP为服务器端
SP用该消息对从SMG接收到的Deliver命令作出应答
Report_Resp
SP为服务器
SP对从SMG接收到的Report命令作出应答
UserRpt_Resp
SP为服务器
SP对从SMG接收到的UserRpt命令作出应答
Trace
SP为客户端
SP用该消息向SMG请求跟踪某一条MT短消息的状态
表3-4从SP到SMG的消息
3.7.2.6从SMG到SP的消息
消息
适用方式
描述
Bind
SMG为客户端
SMG用该消息向SP发出建立连接的请求
Bind_Resp
SMG为服务器端
SMG对Bind命令的应答
Unbind
SMG为客户端
SMG用该消息向SP通知将要断开现有的连接
Unbind_Resp
SMG为服务器端
SMG对Unbind命令的应答
Submit_Resp
SMG为服务器端
SMG对Submit命令的应答
Deliver
SMG为客户端
SMG发送一条短消息到SP
Report
SMG为客户端
SMG用该命令通知SP一条Submit命令所发送的MT当前结果
UserRpt
SMG为客户端
SMG用该命令通知SP一条手机用户的状态信息
Trace_Resp
SMG为客户端
SMG对Trace命令的应答
表3-5从SMG到SP的消息
SMG与SMG之间的通信
在网关系统之中,任何两个SMG之间都要建立一对基于TCP/IP的连接,以实现命令的路由。
两个SMG互为客户端和服务器端,客户端向服务器端发送命令,接收应答;服务器端从客户端接收命令,返回应答。
图3-4SMG之间的通信消息样例
3.8.1通信初始化
SMG与SMG通信时,由客户端首先通过Bind命令向服务器端发起连接。
服务器端根据Bind命令之中的登录名和密码,对客户端的合法性进行验证,然后返回一条Bind_Resp应答给客户端。
如果验证通过,则客户端和服务器端的通信开始,否则中断连接。
3.8.2通信过程
两个SMG之间的通信和SP和SMG之间的基于TCP/IP的承载方式的通信方式相同。
3.8.3通信结束
如果客户端认为和服务器端的通信已结束,则客户端应该向服务器端发送Unbind命令,服务器端随后返回Unbind_Resp应答,然后双方断开连接。
3.8.4故障处理
SMG之间的故障处理和SP与SMG之间的故障处理相同。
3.8.5两个SMG之间的消息
消息
描述
Bind
客户端向服务器端请求连接
Bind_Resp
服务器端对接收到的Bind命令的响应
Unbind
客户端向服务器端通知断开当前的连接
Unbind_Resp
服务器端对接收到的Unbind命令的响应
Submit
客户端向服务器端发送一条MT短消息
Submit_Resp
服务器端向从客户端接收到的Submit命令发送的应答消息
Deliver
客户端向服务器端发送一条MO短消息
Deliver_Resp
服务器端向从客户端接收到的Deliver命令发送的应答消息
Report
客户端向服务器端发送一条MT或MO的发送结果
Report_Resp
服务器端向从客户端接收到的Report命令发送应答消息
UserRpt
客户端向服务器端发送一条手机用户的状态信息
UserRpt_Resp
服务器端向从客户端接收到的UserRpt命令发送应答消息
Trace
客户端向服务器端发送请求跟踪某一条MT短消息状态的信息
Trace_Resp
服务器端向从客户端接收到的Trace命令发送应答消息
表3-6SMG之间的消息
SMG与GNS之间的通信
在网关系统之中,任何一个SMG都要和GNS以互为客户端/服务器的方式建立连接来完成路由表的更新和维护。
当SMG对本地的路由表作修改后,需要主动以客户端的身份向GNS建立连接,通知GNS更新路由表;当GNS修改了路由表后,需要主动以客户端的身份向所有的SMG建立连接,通知SMG更新路由表。
3.9.1通信初始化
SMG与GNS通信时,由客户端首先通过Bind命令向服务器端发起连接。
服务器端根据Bind命令之中的登录名和密码,对客户端的合法性进行验证,然后返回一条Bind_Resp应答给客户端。
如果验证通过,则客户端和服务器端的通信开始,否则中断连接。
3.9.2通信过程
客户端和服务器端建立连接以后,客户端向服务器端发送命令,服务器端则返回应答。
3.9.3通信结束
如果客户端认为和服务器端的通信已结束,则客户端应该向服务器端发送Unbind命令,服务器端随后返回Unbind_Resp应答,然后双方断开连接。
3.9.4故障处理
SMG和GNS的故障处理和SP与SMG之间的故障处理相同。