1、中国联通SGIP协议v12中国联合通信公司短消息网关系统接口协议(SGIP) 版本1.2 中国联合通信公司二零零一年十月1概述1.1协议说明本协议是SMG和SP之间、SMG和GNS之间、以及SMG和SMG之间的接口协议,简称SGIP。通过应用SGIP协议,SP可以接入到SMG,实现SP应用的一点接入、全网服务;SMG可以通过SGIP协议,实现消息在不同SMG之间的路由和转发。同时,SMG通过该协议也可以和GNS通信,以实现各SMG和GNS之间路由表的同步功能。1.2适用范围本协议适用于各SP厂商和SMG的开发厂商。1.3参考资料1 SMPP 3.32 GSM 3.403 GSM 3.384 H
2、TTP1.0 1.4术语表本协议用到以下术语:GNS Gateway Name Server,负责系统路由的管理和同步MO 由手机用户提交的短消息MT 由手机用户接收的短消息SGIP Short Message Gateway Interface Protocol,本协议所描述的短消息网关接口协议,用于完成在SMG和SP之间、SMG和SMG之间短消息的发送、接收和转发功能,以及SMG和GNS之间路由表的同步功能SMG Short Message Gateway ,联通公司的短消息网关,SMG之间的通讯协议采用SGIPSMPP Short Message Peer to Peer,短消息点对点协
3、议,采用3.3版本SMSC Short Message Service Center ,短消息中心SP Service Provider,服务提供商2系统体系结构SMG是具有短消息转发功能的短消息网关。全国可以有多个SMG网关,SMG网关之间通过互联网等方式实现网络互联。每一个SMG同时与多个SMSC以及多个SP连接。全网具有唯一有效的GNS,GNS负责全局路由表的维护与更新;为了确保路由表存储的安全性,网络中设置主备用GNS,两个GNS要保持一致性。每一个SMG都和GNS连接。SMG与SP、SMG与GNS以及SMG与SMG之间的通信协议为SGIP协议。SMG与SMSC之间的通信统一采用SMP
4、P3.3协议。图2-1说明了系统的体系结构。图2-1 SMG的体系结构和SMG平台之间相连的SMSC称作本地SMSC,和异地SMG平台相连的SMSC称作异地SMSC。和SMG平台之间相连的SP称作本地SP,和异地SMG平台相连的SP称作异地SP。从本地SMSC向本地SP以及从本地SP向本地SMSC发送的消息直接由SMG转发;从本地SMSC向异地SP以及从本地SP向异地SMSC发送的消息由本地SMG路由到异地SMG后,再由异地SMG转发。2.1消息从本地SMSC到本地SPSMG从SMSC接收到短消息,直接发给SP。比如SMSC1ASMG1SP1YSMSC1BSMG1SP1X2.2消息从本地SP到
5、本地SMSCSMG从SP接收短消息,直接发给SMSC。比如SP1XSMG1SMSC1ASP1YSMG1SMSC1B2.3消息从本地SMSC到异地SPSMG从本地SMSC接收短消息,再路由到异地SMG,由异地的SMG发送到目的SP,比如SMSC1ASMG1SMG2SP2YSMSC1BSMG1SMG3SP3X2.4消息从本地SP到异地SMSCSMG从本地SP接收短消息,再路由到异地SMG,由异地的SMG发送到目的SMSC,比如SP1XSMG1SMG2SMSC2ASP1YSMG1SMG3SMSC3B2.5路由选择当消息在本地SMSC和异地SP,或者在本地SP和异地SMSC之间传输时,发送方必须要获取
6、消息接收方的位置信息。这部分功能称为路由选择。对于MO方向的命令(即命令接收方为SP),其路由根据命令中的SP接入号码来选择。对于MT方向的命令(即接收方为用户手机),其路由根据命令中的付费号码和用户号码来综合判断。如果付费号码为空,或付费号码为SP接入号码,则根据用户号码来选择路由;否则根据付费号码所代表的手机号码来选择路由(这样做是考虑到了系统计费和用户鉴权的可行性,关于计费和用户鉴权的细节,请参见其它文档)。由于SMG网关之间采用网状互联,网关之间不可能出现二次前转,因此接收前转消息的网关必须能判断前转的消息目的地址是否是本网关覆盖范围的用户,若不是,必须发送出错信息到前转网关。3通信流
7、程SGIP有两种具体实现方式,一种是采用专用SGIP方式,另一种是采用通用HTTP方式。SMG和GNS、以及SMG和SMG之间采用专用SGIP方式作为承载协议;而SP和SMG的通信同时支持专用SGIP方式和通用HTTP方式两种承载协议。3.1专用SGIP方式采用专用SGIP方式承载时,通信双方互为客户端和服务器端。当客户端要发送命令时,主动向服务器端建立连接,然后向服务器端发送命令,并接收应答;服务器端从客户端接收命令,返回应答。连接建立以后,客户端可以连续发送多条命令。命令发送完并接收到所有应答后,客户端应该主动断开连接。但是,命令及其应答之间的时间间隔最大不能超过30秒(默认,可配置)(如
8、果命令应答时间超过最大等待时间,则要求客户端重发该条命令,重发机制参见业务联网规范有关内容),且待应答的命令不得超过32条(可以根据线路的质量和服务器的处理能力配置)。而且,如果服务器端检测出一条连接长时间空闲(默认60秒,可配置),可以主动断开该连接。如果需要,客户端可以同时向一个服务器端建立多个连接(SMG与单个其他SMG最多不能建立超过15个连接,对与之相连的单个SP的最大连接数视具体情况而定)。采用专用SGIP承载方式时,SMG和SMG、SP和SMG之间使用的端口号是8801,GNS监听SMG的端口号为8802,SMG监听GNS的端口号为8803,主GNS和备用GNS之间的端口号为88
9、04,SMG之间的测试用端口号为8810。3.2通用HTTP方式HTTP承载方式只适用于SP和SMG的通信中。与SP与SMG之间的专用SGIP承载方式不同的是,该种方式一次连接仅仅传送一条命令,而且连接的认证采用HTTP的URL的授权认证的方式,不需要专门的连接认证的命令,使用的端口号是80。3.3通信节点编号规则在整个网关系统中,所有的通信节点(SMG、GNS、SP和SMSC)都有一个唯一的数字编号,不同的SP或SMSC或SMG或GNS编号不能相同,编号由系统管理人员负责分配。编号规则如下:SMG的编号规则:1AAAAXSMSC的编号规则: 2AAAAXSP的编号规则:3AAAAQQQQQG
10、NS的编号规则:4AAAAX其中,AAAA表示四位长途区号(不足四位的长途区号,左对齐,右补零),X表示1位序号,QQQQQ表示5位企业代码。3.4序列号的定义短消息网关系统之中传输的每一条命令都有一个序列号,序列号由命令源节点产生并唯一标记一条命令;也就是说,网关系统中任何两个命令的序列号都不相同。需要注意的是,一条命令在发送过程中转发的不同副本视为一条命令,使用相同的序列号。比如,SP1X向SMSC2A发送一条命令,该命令需经过多次转发才能到达SMSC2A,而转发该命令的每一次通信过程中使用的命令的序号均相同,为SP1X与SMG1通信所使用的序列号。对于MO短消息,例如SMSC1B向SP3
11、X发送一条命令,短消息首先采用SMPP协议发送到SMG1,经过SMG1转发时序列号必须由SMG1重新生成(此时命令源节点为SMG1)。序列号分成三部分,每部分为一个32位整数,第一部分表示命令源节点的编号,第二部分表示命令产生的日期和时间(网关系统中的任何命令的保存时间都不应该超过一年),格式为十进制的mmddhhmmss,比如11月20日20时32分25秒产生的命令,其第二部分为十进制1120203225;第三部分由0开始,循环进位,直到进位满了之后再清零,重新开始计数。接收方在返回应答时,应答的序列号必须和相对应的命令的序列号相同。图3-1 命令序列号格式举例注:序列号由三个无符号32位整
12、型数组成。对于SP节点编号(3开头的10位整数)只有无符号整型可以放下,另外序号部分的最大值也是无符号32位整数的最大值。3.5通信的安全性SP与SMG、SMG与SMG以及SMG与GNS之间采用专用SGIP方式通信时可采用对称加密方式。SP与SMG之间采用通用HTTP方式时,可采用HTTPS方式加密。3.6用户鉴权当一条MT短消息需要处理时,终点SMG必须保证该短消息的付费方有资格享用该服务(比如付费用户不欠费)。根据短消息服务类型的不同,可以将付费方式分成三类:被叫方付费、SP付费和第三方付费。3.6.1被叫方付费目前的短消息中心都具有对被叫用户鉴权的功能,所以对由被叫方付费的MT短消息,S
13、MG不作鉴权检查,直接转发至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通信
14、实现鉴权功能。计费中心为服务器端,SMG为客户端。一次鉴权过程完成对一个手机号码的鉴权。鉴权步骤如下:1SMG和计费中心建立TCP/IP连接;2SMG向计费中心发送鉴权命令;3SMG从计费中心接收鉴权应答;4SMG和计费中心断开连接;消息描述CheckUserSMG向计费中心请求对一个手机号码鉴权CheckUser_Resp计费中心向SMG返回的一个手机号码的鉴权结果表3-1 SMG和计费中心的鉴权消息注:上表中checkuser, checkuser_resp的消息格式在35页给出,为此计费中心需要为本地的SMG分配一个查询用户和密码。CheckUser_Resp消息中没有对应的UserNu
15、mber,这就需要SMG系统保留CheckUser消息的序列号(不必重新产生,使用submit消息中的序列号),以此做结果的对应。而且这个“第三方付费”的协议还存在一些实现上的问题。比如SMG收到第三方付费的submit消息后,它可能做第三方用户的鉴权或forward,也可能做对被叫用户的消息发送或forward,具体应怎么做必须要看消息是从哪里发出的。是从SP发出的?还是从第三方用户所属SMG发出的?还是从其他SMG发出的?这无疑增加了SMG实现的复杂性和无效消息在SMG之间循环发送的可能性。目前该方案只是联通的一个设想,尚无切实执行。目前联通提供的解决方案是每个地方的计费中心为当地的SMG
16、提供一个“黑名单”,由SMG每天下载。SMG只检查usernumber是否在“黑名单”上来做鉴权。3.7 SP与SMG的通信SP和SMG支持两种类型的通信承载方式:通用HTTP承载方式和通用SGIP承载方式。3.7.1通用HTTP方式SP和SMG之间采用通用HTTP方式通信时,SP和SMG互为HTTP的客户端和服务器端。HTTP服务器端对相关的URL进行保护,HTTP客户端必须采用授权方式访问这些URL。HTTP的特点决定客户端和服务器端的每一次通信都必须一次完成授权连接、发送请求、接收应答、关闭连接等过程(HTTP承载方式不再需要专门的连接命令)。对于MO方向的命令(即命令接收方为SP),由
17、SMG通过POST方式提交给SP进行处理,SP将处理结果以及MT方向信息在HTTP应答中返回给SMG;对于SP主动向用户发送信息的PUSH业务,由SP作为客户端将信息通过POST方式提交给SMG进行处理,SMG在应答中确认信息发送成功与否。因为HTTP服务器对URL进行了授权保护,所以HTTP客户端必须在每次请求中都带上授权信息。HTTP客户端的一个请求只能携带一条命令。SP与SMG之间发送的任何一条命令都带有一个序列号,序列号由命令源产生,任何两条命令的序列号不能重复。如果HTTP服务器接收到的HTTP请求内容的格式不完整或不正确, HTTP服务器应该返回错误码。HTTP承载方式支持的HTT
18、P协议为1.0版。HTTP承载方式使用如下命令:3.7.1.1从SP到SMG的命令消息描述SubmitSP用该消息向SMG请求向某一个短消息用户发送短消息TraceSP用该消息向SMG请求跟踪某一条MT短消息的状态表3-2 从SP到SMG的命令3.7.1.2从SMG到SP的命令消息描述DeliverSMG发送一条短消息到SPReportSMG用该命令通知SP一条Submit命令所发送的MT当前结果UserRptSMG用该命令报告SP一条手机用户的状态表3-3 从SMG到SP的命令3.7.2专用SGIP方式SP和SMG之间的通信由客户端向服务器端发起连接。连接建立以后,由客户端向服务器端发送命令
19、,服务器端必须对接收到的每一条命令返回一条应答消息。SP和SMG互为客户端和服务器端。3.7.2.1通信初始化客户端有命令要向服务器端发送时,由客户端首先通过Bind命令向服务器端发起连接。服务器端根据Bind命令之中的登录名和密码,对客户端的合法性进行验证,然后返回一条Bind_Resp应答给客户端。如果验证通过,则客户端和服务器端的通信开始,否则中断连接。3.7.2.2通信过程SP与SMG之间发送的任何一条命令都带有一个序列号,序列号由命令源产生。客户端与服务器端通信开始以后,客户端可以向服务器端发送相应的命令,服务器端对收到的命令返回应答。图3-2 SP和SMG的通信消息样例(SP为客户
20、端)图3-3 SP和SMG的通信消息样例(SMG为客户端)命令在SP和SMSC之间的传输是采用类似接力的方式,每条命令和对应的应答仅仅表示该次命令发送的结果是否正确。比如,SP向某一个手机发送一条短消息,是通过向本地SMG发送一条Submit命令实现的,随后,SP会从SMG接收到一条Submit_Resp应答。但是,即使应答表示Submit命令已正确接收,也不表示Submit命令内的短消息已经发送到手机上了,而仅仅表示该短消息已经传送到SMG,SMG将会作下一步处理,或者发送给SMSC,或者路由到另外的SMG,最终由目的SMSC发送到手机上。这中间任何一个环节出现错误,系统会终止信息的继续发送
21、,并且通过向原SP发送Report命令告诉发送出错的原因(如果SP指定要求反馈的话)。3.7.2.3通信结束如果客户端认为和服务器端的通信已结束,则客户端应该向服务器端发送Unbind命令,服务器端随后返回Unbind_Resp应答,然后双方断开连接。3.7.2.4故障处理发生故障时,SP、SMG以及GNS节点应通过Report命令和其它相关命令的应答相结合返回故障原因;如果MO不成功,该用户所属的SMG还应向用户终端返回友好的应答信息说明不成功原因。3.7.2.4.1网络故障客户端与服务器端的通信过程中如果检测到双方连接中断(如网络断线),客户端应该断开连接,然后尝试重新向服务器端建立新的连
22、接;服务器端应该按照接收到Unbind的情况进行处理,断开和客户端的连接。3.7.2.4.2接收到非法命令或应答如果服务器端接收到的命令语法错误,比如命令不完整、命令无法识别等,则断开和客户端的连接;客户端应该向服务器端建立新连接继续发送命令。如果客户端接收到的应答语法错误,比如命令不完整、命令无法识别等,则主动断开和服务器端的连接;服务器端也应该断开和客户端的连接。如果命令语法正确,但服务器端不处理该命令,比如SP为服务器端时收到Submit命令,则返回相应应答,并在应答中指定错误原因。如果应答语法正确,但客户端不处理该应答,比如SP为客户端时收到Deliver_Resp应答,则丢弃。注:这
23、里有一个问题,即对于unbind这种消息,依照协议它应该由client发起,但如果由server端首先发起的话,client端是否应任为是非法命令?其实从结果上看应该接受该消息,并断开连接,因为这正是server端马上要做的。但返回非法命令也应该是可以接受的。编程人员可以根据实现的方便任选。3.7.2.4.3序列号重复如果命令的序列号和以前接收到的命令的序列号相同,且命令内容也相同,则接收方丢弃该命令;如果序列号相同,但是命令内容并不相同,则命令接收方在应答中返回错误码。注:按照协议的规定,相同内容(包括序列号)的消息应作为重复发送的消息丢弃,这样一来虽然能够减少一些网络通讯量,但有可能引起其
24、他一些问题,比如client端死等回音导致连接中断,而且也不太符合协议中任何消息都是请求应答相对应的原则。所以对于序列号重复的消息通通返回错误也是可以接受的一种做法。3.7.2.5从SP到SMG的消息消息适用方式描述BindSP为客户端SP用该消息向SMG发出建立连接的请求Bind_RespSP为服务器SP对Bind命令的应答UnbindSP为客户端SP用该消息向SMG通知将要断开现有的连接Unbind_RespSP为服务器SP对Unbind命令的应答SubmitSP为客户端SP用该消息向SMG请求发送短消息Deliver_RespSP为服务器端SP用该消息对从SMG接收到的Deliver命令
25、作出应答Report_RespSP为服务器SP对从SMG接收到的Report命令作出应答UserRpt_RespSP为服务器SP对从SMG接收到的UserRpt命令作出应答TraceSP为客户端SP用该消息向SMG请求跟踪某一条MT短消息的状态表3-4 从SP到SMG的消息3.7.2.6从SMG到SP的消息消息适用方式描述BindSMG为客户端SMG用该消息向SP发出建立连接的请求Bind_RespSMG为服务器端SMG对Bind命令的应答UnbindSMG为客户端SMG用该消息向SP通知将要断开现有的连接Unbind_RespSMG为服务器端SMG对Unbind命令的应答Submit_Res
26、pSMG为服务器端SMG对Submit命令的应答DeliverSMG为客户端SMG发送一条短消息到SPReportSMG为客户端SMG用该命令通知SP一条Submit命令所发送的MT当前结果UserRptSMG为客户端SMG用该命令通知SP一条手机用户的状态信息Trace_RespSMG为客户端SMG对Trace命令的应答表3-5从SMG到SP的消息3.8 SMG与SMG之间的通信在网关系统之中,任何两个SMG之间都要建立一对基于TCP/IP的连接,以实现命令的路由。两个SMG互为客户端和服务器端,客户端向服务器端发送命令,接收应答;服务器端从客户端接收命令,返回应答。图3-4 SMG之间的通
27、信消息样例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之间的故障处理
28、相同。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服务器端向从客户端接收到的Re
29、port命令发送应答消息UserRpt客户端向服务器端发送一条手机用户的状态信息UserRpt_Resp服务器端向从客户端接收到的UserRpt命令发送应答消息Trace客户端向服务器端发送请求跟踪某一条MT短消息状态的信息Trace_Resp服务器端向从客户端接收到的Trace命令发送应答消息表3-6 SMG之间的消息3.9 SMG与GNS之间的通信在网关系统之中,任何一个SMG都要和GNS以互为客户端/服务器的方式建立连接来完成路由表的更新和维护。当SMG对本地的路由表作修改后,需要主动以客户端的身份向GNS建立连接,通知GNS更新路由表;当GNS修改了路由表后,需要主动以客户端的身份向所
30、有的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之间的故障处理相同。3.9.5从SMG到GNS的消息消息适用方式描述BindSMG为客户端SMG向GNS端请求连接Bind_RespSMG为服务器端SMG对Bind命令的应答UnbindSMG为客户端SMG向GNS端通知断开当前的连接Unbind_RespSMG为服务器端SMG对Unbind命令的应答AddSPSMG为客户端SMG通知GNS添加了一个SPAddSP_RespSMG为服务器端SMG对AddSP命令的应答ModifySPSMG为客户端SMG通知GNS修改了一个SPModifySP_RespSMG为服务器端SMG对ModifySP命令的应答De
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1