M2M平台与终端接口协议规范10.docx
《M2M平台与终端接口协议规范10.docx》由会员分享,可在线阅读,更多相关《M2M平台与终端接口协议规范10.docx(50页珍藏版)》请在冰豆网上搜索。
M2M平台与终端接口协议规范10
中国移动M2M终端测试规范
TheTestSpecificationofM2MTerminal
版本号:
1.1.0
前言
本规范描述了中国移动无线DDN业务中各网元(包括接入平台、无线DDN终端和企业应用网关)之间的相关消息的类型和定义。
根据业务的发展,规范中的操作和参数将会做进一步的调整和增加。
本规范解释权属于中国移动通信研究院和北京移动数据业务中心。
本规范起草单位:
中国移动研究院、北京移动数据业务中心。
目录:
1.范围5
2.缩略语5
3.网络结构5
4.协议栈6
5.通信方式7
5.1长连接7
5.2短连接8
5.3协议端口9
5.4交互过程中的应答方式9
5.5通信过程中的异常及重发10
5.6数据包流水号11
6.WMMP功能描述及流程说明11
6.1终端的接入认证及参数初始化配置12
6.2接入管理服务器激活远程终端14
6.3终端上线失败错误状态上报14
6.4远程终端升级firmware15
6.5通信过程中的数据交互16
6.6接入管理服务器实时查询终端的状态16
6.7无线DDN平台和企业网关同时连接时的处理流程17
7.消息定义21
7.1基本数据结构21
7.2消息结构21
7.3消息头格式22
7.4消息体定义22
7.4.1LOGIN包体定义22
7.4.2LONGIN_ACK包体定义22
7.4.3LOGOUT包体定义23
7.4.4LOGOUT_ACK包体定义23
7.4.5HEART_BEAT包体定义23
7.4.6HEART_BEAT_ACK包体定义23
7.4.7CONFIG_GET包体定义24
7.4.8CONFIG_GET_ACK包体定义24
7.4.9CONFIG_SET包体定义24
7.4.10CONFIG_SET_ACK包体定义25
7.4.11CONFIG_TRAP包体定义25
7.4.12CONFIG_TRAP_ACK包体定义25
7.4.13Command_id定义25
8.短信说明26
附录1:
修订历史29
附录2:
TLV说明30
附录4:
支撑平台侧通信协议状态迁移图39
附录5:
CCITTCRC16算法伪代码40
附录6:
行业终端登录操作状态迁移图41
1.范围
本规范规定了以下两方面的内容:
(1)行业终端与接入管理平台的接口;
(2)接入管理平台与企业应用网关之间的接口协议;
本规范适用于各行业终端生产厂家和接入管理平台的开发厂商。
2.缩略语
英文缩写
英文全称
说明
WMMP
WirelessMachineManagementProtocol
无线DDN终端管理协议
TLV
Tag、Length、Value
在数据通信协议中的一种表现形式
3.网络结构
图1接入管理平台逻辑结构图
如图1所示,接入管理服务器是行业终端与企业应用网关之间的中介实体。
接入管理服务器一方面负责接收企业应用网关发送给行业终端的控制信息;另一方面,行业终端上传的控制信息将由接入管理服务器发给企业应用网关。
从上图中可以看到,行业终端与企业应用网关之间的管理数据与业务数据互相分离,业务数据流可直接到企业应用网关,接入管理服务器负责中转企业应用网关和行业终端之间的管理数据。
如图2所示:
图2管理数据与业务数据相分离
业务数据流也可和控制流通过接入服务器转发给企业应用网关。
4.协议栈
本协议为实现行业终端与中国移动接入管理服务器数据通信过程而设计。
协议建立在UDP协议之上。
如图3所示。
图3协议栈
由于GPRS网络带宽较窄,延迟较大,不适于采用TCP协议进行通信。
而采用UDP协议无连接方式传输,其优点是效率高,流量小,节省网络带宽资源。
缺点是没有确认机制,有可能引起丢包,根据实际经验发现,采用UDP方式传输,丢包率能控制在1%以下,通过在UDP的上层应用层协议实现类似TCP的包确认和重传机制,从而提高通信效率及可靠性。
5.通信方式
行业终端与接入管理服务器共有两种连接方式:
长连接和短连接。
所谓长连接,指在一个过程中可以连续发送多个数据包,如果没有数据包发送,需要行业终端发送心跳包以维持此连接。
短连接是指通信双方有数据交互时,就建立一个WMMP过程,数据发送完成后,则断开此WMMP过程。
长连接和短连接的区别在于,长连接过程中采用了心跳作为维持、监测链路的手段,而短连接由于数据的交互在较短的时间内完成,从而可以不需要心跳包。
5.1长连接
通信双方以客户-服务器方式建立WMMP过程,用于双方信息的相互提交。
当信道上没有数据传输时,行业终端应每隔时间C发送心跳包以维持此连接,当心跳包发出超过时间T后未收到响应,应立即再发送心跳包,再连续发送N-1次后仍未得到响应则结束此过程。
参数C、T、N原则上应可配置,现阶段建议取值为:
C=1分钟,T=15秒,N=3(此参数目前为推荐值,可通过管理服务器在实际应用中修改。
在管理服务器加入优先级,推荐值将不同)。
消息采用同步方式发送,长连接的操作流程举例如图4所示:
图4长连接
长连接使用于需要长时间一直在线的企业应用。
数据包的定义参见7.4节。
5.2短连接
行业终端平时处于下线,当本地由于数据需要传输或达到定时上线时间等类似策略时,行业终端作为客户端以客户-服务器方式建立WMMP过程,传送数据完成后,结束该过程。
通信消息发送后等待T秒后未收到响应,应立即重发,再连续发送N-1次后仍未得到响应则停发。
现阶段建议取值为:
T=15秒,N=3(此参数目前为推荐值,可通过管理服务器在实际应用中修改)。
短连接的操作流程举例如图5所示:
图5短连接
短连接使用于数据量少,不需要一直在线的企业应用。
数据包的定义参见7.4节。
5.3协议端口
本协议使用的端口暂定为9991,协议为UDP。
5.4交互过程中的应答方式
本协议采用UDP方式通信,数据包以同步方式交互,每一个数据包必须有一个响应。
5.5通信过程中的异常及重发
图6偶然的丢包和重发
当数据包连续丢失时,通信双方则认为该过程无效,先检测出的一方向已知的对端IP发送logout包,并通过logout包的状态字报告故障重启。
然后行业终端可以重新发起WMMP过程。
当一个通信过程出现连续丢包或丢包比率较大时,先检测的一方向已知的对端发送logout包,通过logout包的状态字报告故障重启。
Logout有可能丢失,但这个过程必须完成。
Logout由请求方发送后,请求方收到logout_ack或接收超时后,释放该连接。
如果logout包或logout_ack包在传送的过程中丢失时,请求方在接收超时后,释放连接,而应答方也可在无数据包传输一段时间后检测出该连接无效。
如果通信过程中,发生丢包,情况大致有以下两种:
1.请求方的数据请求包在通信过程中未到达应答方就已经丢失,此时请求方应在应答超时后决定是否重发;(由预先设置的参数决定)
2.当请求方的数据请求包达到应答方后,应答方动作后的应答包在传送过程中未到达请求方即丢失,则请求方应在应答超时后句顶是否重发(由预先设置的参数决定)
应答方无需关心请求方的序号,只需拷贝该序号到应答包中。
对于收到两个流水号相同的数据包,此时应答方由于不关心序号是多少,处理的机制完全按照两个不同的数据包处理,即都作回复处理。
这样做可简化处理。
图示如下:
图7对于数据包重复接收的处理
Logout包是一个可选数据包,在应用条件许可的情况下,可以进行logout交互,从而有助于接入管理服务器对终端通信状态的管理。
如果应用不具备该条件,可不支持logout过程。
5.6数据包流水号
作为主动发出的数据包,通信双方各自维持自身的数据包流水号;作为对方数据请求包的应答,采用与该请求包相同的流水号。
例如,在WMMP过程的开始,行业终端发出的login报文流水号为0,接入管理服务器应答的login_config流水号也为0,在此后的交互中,流水号依次递增(报文的重发除外),当流水号达到0xffffffff时,下一个报文的流水号重新回到0。
6.WMMP功能描述及流程说明
行业终端应具有3个基本功能:
接收远程接入管理服务器激活指令、本地故障报警、数据通信功能。
及一个附加可选功能:
远程升级firmware功能。
接收远程接入管理服务器激活指令功能和本地故障报警功能通过短信方式实现。
数据通信承载于TCP/IP协议之上,具体则采用UDP协议。
6.1终端的接入认证及参数初始化配置
终端的出厂设置为:
设备ID:
中国移动分配的6字节设备号
拨号号码:
*99***1#
特服短信号码:
中国移动接入管理服务器设置的专有短信号码
初始化设置和正常接入管理服务器的过程大致相同,在每次通过发送login包,经过接入管理服务器鉴权后登入,通过login_ack得到配置,终端比较本地参数如果需要重启使配置生效,则发送logout包告知接入管理服务器结束通信过程,使配置生效。
重启后再重复登录过程。
(通信协议参见5.4节)
具体业务流程为:
图8 终端的接入认证及参数初始化配置
6.2接入管理服务器激活远程终端
1.行业终端按照配置策略下线进入待机模式后,此时企业管理员向接入管理服务器下发指定终端标识的终端激活指令。
2.接入管理服务器向终端下发激活指令,终端执行激活指令,并通过接入管理服务器向企业网报告结果。
3.企业网通过接入管理服务器向终端发送进一步管理指令。
4.终端与企业应用正常交互数据。
其业务过程如下:
图9 接入管理服务器激活远程终端
6.3终端上线失败错误状态上报
当行业终端发生连续拨号失败,未收到接入管理服务器任何数据包等情况时,此时行业终端下线,通过sms方式向接入管理服务器发送错误报告,接入管理服务器收到报告后返回响应。
此时行业终端判断是否收到短信响应,如未收到,间隔一段时间(如30分钟)重发,如果失败则将重发间隔以2的倍数计算进行重发(但最大间隔不超过4小时),收到响应则进入等待激活模式。
其业务流程为:
图10 终端上线失败错误状态上报
6.4远程终端升级firmware
当行业终端需要更新firmware时,此时根据厂商终端升级方式不同,分为”推”和’拉”方式。
“推”方式时,接入管理服务器直接向无线DDN终端发送升级数据。
“拉”方式时:
接入管理服务器通过config_set包中的TLV将升级服务器的IP,port等信息传递给终端,终端接收后,发送logout请求,告知接入管理服务器下线原因,下线后终端到指定的服务器地址进行升级。
升级后,终端登录接入管理服务器,在login包中报告终端现行协议版本号,接入管理服务器记录其登录状态及协议版本,行业用户通过管理平台可查看改终端协议版本。
其业务流程如下:
图11 远程终端升级firmware
6.5通信过程中的数据交互
当行业终端上线后即可进行数据通信。
下一节将详细介绍该过程。
6.6接入管理服务器实时查询终端的状态
接入管理服务器可以下发config_get命令查询终端的配置信息状态。
如果终端此时在线,可以直接下发指令;如果终端处于休眠状态,可以先利用短信手段激活终端,待终端上线后下发config_get命令。
图12 接入管理服务器实时查询终端的状态
6.7无线DDN平台和企业网关同时连接时的处理流程
无线DDN平台和企业网关同时连接时,分为4种状态。
针对不同的状态,无线DDN终端有4种不同的处理方式。
分别是:
1)平台和企业网关同时连接正常状态;
2)企业网关连接正常,但是平台连接出现故障时;
其中,一直尝试连接管理服务器的时间间隔由厂商自行根据经验决定。
建议采用平台心跳间隔来重发,具体定义见0x0016的TLV定义。
3)平台连接正常,但是企业网关连接出现故障时;
其中,一直定时尝试连接企业应用网关的时间间隔也是由厂商自行根据经验确定。
同样,建议采用企业应用网关心跳间隔来发送。
同时,终端会给管理服务器发送config_trap配合0x0029报警,由管理服务器根据用户定制策略来确定是否发送logout包将行业终端进入等待激活状态。
如果终端收到这样的logout包,则终端重启进入休眠模式,等待激活。
4)平台和企业网关同时连接不正常时;
如果终端判定与管理服务器和企业应用网关的连接同时断开,则重启,首先发送报警短信,得到管理平台短信确认后然后进入休眠,等待激活。
7.消息定义
7.1基本数据结构
项目
说明
UnsignedInteger
无符号整数
Integer
整数
String
不定长字符串
TLV
带格式的不定长字符串
TLV组
若干个首尾相连的TLV
7.2消息结构
项目
说明
MessageHeader
数据包头(所有消息公共包头)
MessageBody
数据包体
其中包头固定长度,包体长度可变。
7.3消息头格式
消息包头定义如下:
字段名
字节数
类型
描述
Total_Length
2
UnsignedInteger
消息总长度(含包头及包体)>=16&&<65535
Sequence_id
4
UnsigendInteger
消息流水号,0~0xffffffff
Command_Id
2
UnsignedInteger
命令或响应类型
Status
2
Unsignedchar
状态
行业终端标识
6
UnsignedInteger
唯一标识该行业终端(两字节厂商代码(移动分配)、四字节设备内部编号(厂商自行分配))
7.4消息体定义
7.4.1LOGIN包体定义
LOGIN包在每次建立WMMP过程时发送的第一个包,表明该行业终端已登录,请求接入管理服务器下发配置策略。
数据包头status字段取值:
0。
字段名
字节数
属性
描述
protocolversion
1
UnsignedInteger
通信协议版本,高8位为主版本号,低8四位为次版本号,只要主版本匹配即可建立通信过程
Hardwareversion
2
UnsignedInteger
设备硬件版本标识,便于终端厂商辨别其产品型号硬件版本
IMSI
15
string
IMSI号码
终端配置信息的CRC32校验和
4
Integer
终端配置信息的CRC32校验和,管理服务器检验配置信息是否正确
7.4.2LONGIN_ACK包体定义
LOGIN_ACK包是接入管理服务器收到行业终端登录请求后,下发的确认包。
其中包含运行配置策略。
通过在此包体中包含配置策略。
数据包头status字段取值:
0:
登录成功,并需要下发配置数据包体见下面的定义;
1:
非法Imsi;
2:
终端ID无效;
3:
通信协议版本不兼容;
4:
登录成功,但不需要下发配置
5:
登录成功,需要终端发送绑定短信确认终端与手机号码的绑定关系
其他:
保留;
数据包体定义:
字段名
字节数
属性
描述
protocolversion
1
UnsignedInteger
通信协议版本,高4位为主版本号,低四位为次版本号,只要主版本匹配即可建立通信过程
注意:
登录成功后,平台通过判断,如果要下发新配置,则立即通过config_set发送配置。
7.4.3LOGOUT包体定义
LOGOUT包可以由行业终端或接入管理服务器任何一方发起,表明要结束此次过程,数据包头中的status字段表明结束过程的原因。
无数据体。
数据包头status字段取值:
0:
正常退出,进入等待激活模式;
1:
准备升级;(此项一般由行业终端端发起)
2:
故障重启(此项由行业终端当与管理服务器连接发生故障时发起,断开当前连接,重新建立WMMP过程);
3:
应用新配置(此项一般由行业终端端发起)
4:
绑定短信确认
5:
故障退出,进入等待激活模式;(此项一般在行业终端与企业网关连接故障,而与管理平台连接正常时,通过config_trap上报管理平台后,由管理平台发起,使终端进入休眠模式,等待激活。
)
其他:
保留
7.4.4LOGOUT_ACK包体定义
LOGOUT_ACK包是对LOGOUT包请求的确认。
无数据体。
数据包头status字段=LOGOUT数据包头status字段
7.4.5HEART_BEAT包体定义
在长连接模式时,由于要维持过程,必须发送维持连接包维持连接,行业终端在没有实际数据达到预先设置的间隔值时,发送HEART_BEAT包以维持当前过程。
数据包头status字段取值:
0:
正常;
其他:
待定义;
数据体定义:
字段名
字节数
属性
描述
上次延迟
1
UnsignedInteger
秒为单位
丢包数
1
UnsignedInteger
每上报一次清一次零。
7.4.6HEART_BEAT_ACK包体定义
对HEART_BEAT的响应。
无数据体。
数据包头status字段取值:
0:
正常;
其他:
待定义;
7.4.7CONFIG_GET包体定义
接入管理服务器通过Tag读取行业终端的相应配置信息。
数据包头status字段取值:
0:
正常;
其他:
带定义。
数据体定义:
字段名
字节数
属性
描述
Tag组
2*Tag数目
UnsignedInteger
TLV中Tag定义,参见附录二
7.4.8CONFIG_GET_ACK包体定义
对CONFIG_GET包的响应,返回TLV形式的行业终端端的配置内容。
数据包头status字段取值:
0:
正确,此时数据体为TLV组形式的配置内容
1:
TAG值无效
数据体定义:
字段名
字节数
属性
描述
TLV组
参见附录二
终端在CONFIG_GET中收到不能识别的TLV,应在CONFIG_GET_ACK中说明TAG值无效,并在数据体中说明无效的TLV组;
对数据体的说明:
如果状态值status=0,则在TLV中,L=0表示“为空字符”
举例:
TAG:
0x0003(拨号帐号)
Length:
0x0000(表明是空字符)
Value:
(无)
如果状态值status=1,则在TLV中,L=0表示“无效组”
举例:
TAG:
0x0024(GPS经纬度,此时终端不支持)
Length:
0x0000(表明是无效值或不支持的TAG)
Value:
(无)
7.4.9CONFIG_SET包体定义
接入管理服务器通过指令设置行业终端的某些参数。
数据包头status字段取0
数据体定义:
字段名
字节数
属性
描述
TLV组
参见附录二
注意:
如果一次下发的配置较多,则可通过config_set包下发。
config_set包将配置分批下发至行业终端,采用Tag标记为0x0025,0x0026,0x0027的TLV组可实现对配置的分批处理。
具体方法参见附录二部分的举例;
7.4.10CONFIG_SET_ACK包体定义
数据包头status字段取值:
0:
设置成功;
1:
参数无效;
2:
CRC32校验错误
其他:
失败,原因待定;
数据体定义:
字段名
字节数
属性
描述
TLV组
参见附录二
当终端在CONFIG_SET中收到不能识别的TLV,应在CONFIG_SET_ACK中说明TAG值无效,并在数据体中说明无效的TLV组;
对数据体的说明:
如果状态值status=0L=0表示“无数据体”
如果状态值status=1L=0表示“无效TLV组”
举例:
TAG:
0x0024(GPS经纬度,此时终端不支持)
7.4.11CONFIG_TRAP包体定义
行业终端主动向接入管理服务器报告的某些参数。
数据包头status字段取0
数据体定义:
字段名
字节数
属性
描述
TLV组
参见附录二
说明:
在业务数据和管理数据分流的情况下,当行业终端与行业应用网关的数据交互存在问题,但与管理服务器的数据交互正常时,行业终端通过CONFIG_TRAP向管理平台上报的与故障信息,错误信息在TLV组中声明,详见Tag值为0x0029的说明。
备注:
config_trap中要上报所有的已定义,可用,且未说明不可config_trap的TLV,其中0x0029根据情况上报,平时的trap不一定要上报0x0029。
7.4.12CONFIG_TRAP_ACK包体定义
数据包头status字段取值:
0:
设置成功;
1:
参数无效;
2:
CRC32校验错误
其他:
失败,原因待定;
7.4.13Command_id定义
消息类型
Command_id
说明
LOGIN
0x0001
连接登录包
LOGIN_ACK
0x8001
连接登陆响应包
LOGOUT
0x0002
断开连接包
LOGOUT_ACK
0x8002
断开连接响应包
HEART_BEAT
0x0003
维持过程连接包由行业终端发起
HEART_BEAT_ACK
0x8003
维持过程连接回应包,由接入管理服务器响应
CONFIG_GET
0x0005
接入管理服务器读取行业终端的配置信息
CONFIG_GET_ACK
0x8005
行业终端响应接入管理服务器的命令,上报配置信息
CONFIG_SET
0x0006
设置系统个别参数
CONFIG_SET_ACK
0x8006
设置系统个别参数的响应
CONFIG_TRAP
0x0007
行业终端主动上报配置信息
CONFIG_TRAP_ACK
0x8007
接入管理服务器对行业终端主动上报配置信息的响应
8.短信说明
在本系统中接入管理服务器与行业终端可通过短信方式实现远程控制及报告错误状态等功能。
行业终端应具有识别源发送方号码以及解析短信内容的能力。
短信的格式定义为二进制方式(PDU模式),分为下列几种短信:
1)激活短信
此短信发送方为接入管理服务器,接收方为行业终端。
目的是激活行业终端或通过短信中TLV(TAG=0x0030)将终端恢复到出厂设置。
名称
长度
取值范围
说明
指令
1byte
0x01
表示该条短信内容为激活短信
TLV组
TLV定义,参见附录2
帧校验
2byte
对整条短信内容作CCITTCRC16校验
2)激活配置短信响应
此短信发送方为行业终端,接收方为接入管理服务器。
终端接受激活后,发给接入管理服务器的确认短信。
名称
长度
取值范围
说明
指令
1byte
0x81
表示该条短信内容为激活短信
CSQ
2byte
第一个字节表示现场信号质量,第二个字节表示BE