TELLIN MML营业系统接口规范_第1页
TELLIN MML营业系统接口规范_第2页
TELLIN MML营业系统接口规范_第3页
TELLIN MML营业系统接口规范_第4页
TELLIN MML营业系统接口规范_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

TELLINMML营业系统接口规范目录1 TELLINMML营业系统接口概述 41.1 TELLINMML功能概述 41.2 物理组网 41.3 SMPAgent应用建议 51.3.1 方案1——终端直联SMPAgent 51.3.2 方案2——终端通过营业系统服务器连接SMPAgent 61.3.3 混合方案 61.4 SMPAgent配置方式 61.4.1 SMPAgent配置原则 61.4.2 多SMPAgent配置方式 61.5 TELLINMML消息接口 72 TELLINMML基本规范 82.1 词法 82.1.1 字母 82.1.2 数字 82.1.3 分隔符 82.1.4 不可打印字符 92.2 语法 92.2.1 标识符 92.2.2 数据类型 92.3 MML命令格式规范 112.3.1 MML命令组成 112.3.2 命令码 112.3.3 参数块 132.3.4 MML命令格式表示法 142.3.5 MML命令范例 152.4 MML返回命令规范 152.4.1 MML返回命令概述 152.4.2 SUC命令 152.4.3 ERR命令 162.4.4 ACK命令 173 协议规程 193.1 TELLINMML消息结构 193.1.1 消息开始标志 203.1.2 消息长度 203.1.3 消息头 213.1.4 结果标识 223.1.5 保留字 233.1.6 MML 233.1.7 MAC 233.2 加密与校验 243.2.1 加密机制 243.2.2 加密方式 253.2.3 校验算法 254 系统MML命令 264.1 登录命令LGI 264.1.1 LGI命令格式 264.1.2 LGI命令返回格式 274.2 注销命令LGO 274.2.1 LGO命令格式 274.3 心跳消息HBT 284.4 获取服务器时间命令GETSYSTIME 28TELLINMML营业系统接口概述TELLINMML功能概述TELLINMML营业系统接口是通过SMP开放,面向运营商营业系统,采用MML形式完成智能网业务数据管理功能的系统接口。TELLINMML营业系统接口主要面向营业厅系统,完成操作时间较短,涉及数据量小的业务数据管理功能,目前暂不提供大批量的数据操作(如大批量卡号管理、话单查询)和系统管理功能(如网络管理、业务管理等)。TELLINMML营业系统接口向营业厅系统屏蔽了系统内部实现的操作接口,营业厅系统可以使用卡号、密码等直接、显而易见的属性来操作业务数据,而系统内部的管理机制被营业系统接口屏蔽。TELLINMML营业系统接口只提供原子性的业务数据管理功能,具体管理流程、方式由营业系统根据业务的管理规则,灵活的利用业务系统提供的MML命令进行组合。换言之,TELLINMML营业系统接口为营业厅系统提供了搭建智能网业务运营功能的“积木”。物理组网下图中为TELLINMML系统的物理组网图:在TELLINMML应用中,华为公司提供SMPAgent,并在SMPAgent上开放TELLINMML营业系统接口功能。运营商可以利用MML接口开发、构建自己的营业系统:在终端较少的时候,运营商可以将营业系统直接接入SMP-Agent;在终端较多,且分布较广时,运营商可以开发营业系统服务器来对接入进行收敛;营业系统服务器与营业终端之间可以采用中间件的软件技术构建。运营商也可以开发Web服务器,利用MML接口来提供WWW管理能力。SMPAgent应用建议应用SMPAgent为营业系统服务,可以有下列的组网解决方案:方案1——终端直联SMPAgent这种方案只限于接入的终端较少,且终端能够安全的访问智能网系统的情况。接入的终端包括营业系统终端或者Web服务器。这种方案为运营商节省了营业系统服务器的设备、开发投资,可以适用在对性能要求较低,营业终端较少且集中的局点。在直联方式下,话单的查询可以用两种方式提供:1)开放SMP数据库提供话单查询对于性能要求较低、话务量较小、终端数少、对成本考虑较多的局点,可以考虑开放SMP的话单库以供营业终端查询。这种方式不可避免将带来对智能网性能的影响(特别是SMCP局点),开放SMP数据库提供话单查询的方式不是我们推荐的。2)营业系统自建话单库提供话单查询在营业系统内部,由运营商自行建设话单库执行查询。智能网SMP可以将发送给计费中心的话单抄送给营业系统话单库,或者由计费中心将分拣、结算后的话单分发给各个营业系统的话单库。营业系统自建话单库、计费中心分发话单,是我们推荐的营业系统话单查询解决方案。方案2——终端通过营业系统服务器连接SMPAgent营业系统服务器由运营商建设并维护,负责接受营业终端的操作请求,并发送给SMPAgent。营业系统服务器是对终端接入的一次收敛,通过营业系统服务器,可以大大提高SMPAgent能够接入的终端数。同时,营业系统服务器避免了营业厅终端与智能网网络的直接连接,保证了智能网的安全。话单查询方案则采用营业系统自建话单服务器,或者直接将话单库建设在营业系统服务器上。混合方案运营商可以通过同时使用终端直联和营业系统服务器接入方式,来达到支持终端数和设备成本之间的均衡点。混合方案的一个应用可以是:SMP所在地区的营业厅终端和WebServer通过城域网直接接入SMPAgent,其他地区各地建设营业系统服务器来处理本地营业厅终端的接入。SMPAgent配置方式SMPAgent配置原则SMPAgent由于需要SMP数据库的连接,并且考虑到网络速度,因此SMPAgent必须与SMP在同一台主机上或者在同一个局域网中。由于SMPAgent将原来由SMAP发起的营业操作转移到营业终端,使得处理能力需求从SMP转移到SMPAgent,从而可以SMPAgent运行在SMP主机上,以充分利用业务数据管理功能转移后SMP处理能力的富余。需要应用Web接入的局点,则必须考虑WWW接入情况下营业操作的浪涌增长,应该为SMPAgent配置单独的计算机设备,并相应的增大SMP的容量。多SMPAgent配置方式在单个SMPAgent处理能力不足以完成营业系统的操作请求,或者单个SMPAgent极大的浪费了SMP主机的DBMS并发能力或者多CPU能力时,可以在系统中配置多个SMPAgent。这里的多SMPAgent指的是软件的多配置,并不一定会带来设备的增加。如果SMP主机的处理能力允许,系统支持多个SMPAgent实例运行在同一台主机上;如果SMP主机的处理能力不够,系统支持将SMPAgent运行在同一个局域网中的其他主机上。营业系统应用多SMPAgent的方式可以有:不同的营业系统通过分别接入不同的SMPAgent来实现负荷的分担;同一个营业系统服务器可以同时接入多个SMPAgent来实现符合分担;如下图所示:TELLINMML消息接口TELLINMML营业系统接口与营业系统之间都采用基于TCP/IP的MML消息接口进行通讯,并提供了IDEA加密和MD5校验机制提高安全性(参见第3章协议规程)。SMPAgent与营业系统之间的MML消息分为以下几种:1. 营业MML命令由营业系统发给SMP-Agent用于完成智能网业务数据管理功能的MML命令。营业系统MML命令都是定制的。这些命令都有返回。2. MML命令返回

营业系统或者SMP-Agent对MML命令的返回。主要有SUC、ERR、ACK三种,另外HBT等几个系统命令也可以作为命令的返回。3. 系统MML系统MML是由SMP-Agent系统内部提供的MML命令,不存在定制。虽然主要有三种类型的消息,但是他们都遵循MML命令的基本规范(参见第2章TELLINMML基本规范)。TELLINMML基本规范词法字母包括从A到Z的全部大写字母,a到z的全部小写字母,下划线(_)。数字包括从0到9的全部十进制数码。分隔符分隔符用于分隔输入对话中的各个词法单元。1.一般分隔符一般分隔符可以普遍的用于分隔MML命令中的词法单元,而没有特殊的上下文要求。空格() 用于分隔词法单元。TAB(\t) 用于分隔词法单元。回车(\n) 用于分隔词法单元,当前不使用。换行(\r) 用于分隔词法单元,当前不使用。2.特殊分隔符特殊分隔符用于分隔特殊的MML命令上下文。冒号(:) 用于把命令码同第一个参数分隔开。等号(=) 把参数名称或参数码与其第一项参数值分开。逗号(,) 用于分隔各参数。叹号(!) 用于分隔命令中的多组并列参数(只用于ACK命令)。分号(;) 命令结束符。3.示例(1)MODPIN:CARDNO=N'89860012345,PINNUMBER=N'1234;(2)MODABBRV:CARDNO=N'8986001234,ABBRNOC=D'1,NUMBER=N'075568127;(3)ADDUSER:USERNAME="张三",ADDRESS="西直门外大街12号", PHONE=N'01087353345,IDNUMBER=N'310602720808123,ZIPCODE=N'102435;不可打印字符不可打印字符是ASCII码小于0X20控制字符,但不包括制表符、回车、换行符。在TELLINMML中不允许出现不可打印字符。语法标识符标识符是由一个或几个字符组成的字符串。该字符串以字母或下划线打头,其后仅跟以数字或字母,例如UPDATE、NO7。在TELLINMML中命令码、参数名都必须是合法的标识符。标识符不区分大小写。虽然标识符可以由下划线(_)开始,但是由于TELLINMML系统内部标识符都是采用下划线(_)开始。因此在对外开放的命令中,不允许使用下划线开始的标识符。数据类型1. D' 十进制整数十进制数由一组字符组成,它包括一个、几个数字以及可选的正负数指示,而且在前面要有专门的字符组D'(D单引号)。单独的D'表示null值。十进制整数的数值必须在MININT和MAXINT之间,对于32位系统,分别是–2147483648和2147483647。十进制整数在业务数据中主要用于表示金额、折扣率等数据。例如:ACCOUNT=D'12000DISCOUNT=D'72CHARGE=D'2. N' 数字字符串数字字符串用于表达一些十进制数无法表达的,但其本身又是由数字组成的信息。在智能网业务中,大量的用到数字字符串,如卡号、密码等,都是数字字符串。单独的N'表示null值。例如:CARDNO=N'89860012345678PINNUMBER=N'12343. " 字符串字符串(或正文串)允许输入文字正文。正文串由一串字符组成,字符个数可以是0个或多个,并用"(双引号)把它在首尾两端括起来。字符串类型不支持null值,如果在数据库检索出来的值为null,则在TELLINMML中将表示为""。正文串中不能包含下列字符: 回车(\r) 换行(\n)如果出现下列字符,必须使用转义序列代替: " 用转义序列 \" \ 用转义序列 \\例如: DESC="Thebigbigbang!" ADDRESS="西直门外大街" SENTENCE="Tomsaid\"Thereisnodoublequotationmarks!\"" 等效于Tomsaid"thereisnodoublequotationmarks!" SENTENCE="Weuse\\\"insteadof\"" 等效于Weuse\"insteadof" DESC=""MML命令格式规范MML命令组成一个MML命令从命令码开始。命令码规定了系统应该执行的功能。如果要求进一步的信息,那么在命令码后跟参数部分,并用冒号(:)把命令码和参数部分分隔开。命令码在一个服务内唯一确定一个MML功能,参数块则是该MML功能执行时所需的参数。命令码1.格式命令码最多由三个标识符组成,它们之间用一般分隔符分隔开。命令码意义:标识符1:长度最大为3的标识符,表示执行动作,如ADD,DSP,MOD,CRE等。标识符2:长度最大为8的标识符,表示执行动作的对象实体,如:CARD,USER等。标识符3:长度最大为8的标识符,表示执行动作要操作的对象实体属性,如:PSWD,ACNT、ABBRV等。命令码不区分大小写,习惯上写成大写。2.命令规范命令名称规范定义命令名称的构成、缩写方法、主要操作动词与缩写(如LST、ADD、MOD、RMV)。规范如下:(1)命令字最多由三个标识符合成,建议采用两个标识符,以空格连接;(2)标识符1为动作字,长度严格为三个字母;(3)标识符2(3)是命令动作操作的具体对象及其属性(操作的目标以及目标的属性),由3-8个字符(允许含有数字)组成(只要表示清楚,字符数越少越好);(4)MML操作系统的系统命令的组成允许少于两个标识符,如LGI(登录);(5)其他命令按照命令动作字功能块与对象的复合词组织。(6)LST与DSP命令,DSP命令专用于显示动态查询结果,静态数据查询一律用LST;(7)主要操作动词与缩写动作匹配反动作说明ADDRMV增加/删除CREDEL创建/删除MOD修改ACTDEA激活/去激活INHUIN禁止/解除禁止CHK检查DSP查询(动态)LST查询(静态)SET设置QRY查询BKPRES备份转储/恢复STPSTR停止/启动LGILGO登录/退出RST复位REDWRT读取/存取UPLUNL加载/卸载TOTAL:383.示例(1)修改卡号密码: MODCARDPSWD(2)增加用户: ADDUSER(3)登录: LGI(4)删除FPH限制号码: DELFPHSCREEN参数块1.格式参数块为执行命令码中指定的功能所必须的信息。参数块中的信息根据具体的命令由特定的一些参数来表示。如果参数块包含两个或多个参数,用逗号把它们分隔开。所有参数都是按名字定义的。可以用叹号(!)来分隔同一MML命令的多组参数块。目前只在ACK返回命令中使用叹号来分隔多个结果记录。2.参数定义按参数名定义的参数包括一个参数值,参数值之前有一个参数名,要用一个等号(=)把它们分隔开来。(1)参数名参数名用最多16个字符的标识符表示,参数名不区分大小写。参数名称规范定义参数的缩写方法、参数命名需遵循的原则:(a)参数名称是合法的标识符,采用有意义的缩写表示,参数名称由2-16个字符组成(只要表示清楚,字符数越少越好);(b)在定义一个新的参数的缩写时,应该参考相应的行业使用惯例(如密码为PIN);(c)在任何命令中,相同含义的参数使用相同的参数名称,具有相同的数据类型(如密码都使用PIN表示,数据类型为数字字符串);(2)参数值参数值由三种类型组成,包括十进制整数、数字字符串、字符串。MML命令格式表示法(1)在TELLINMML各个技术文档中,表示MML命令一般方法如下例所示:MODPIN:CARDNO,PIN;这种表示方法是将命令码、参数名都表示出来,同时表示出该MML命令没有返回数据。没有返回参数说明的MML命令只能有SUC、ERR返回,而不能由ACK返回。(2)如果MML命令支持多组参数,则表示方法如下例:MODPIN:CARDNO,PIN!;即以叹号(!)来表示该命令支持多组参数并列。目前在对营业厅接口中还不支持多组参数的情况。(3)如果命令存在返回数据,则表示方法如下例:QRYABBRV:CARDNO,ABBRVNOCRETURNPSTNNUMBER;即用RETURN来引导返回数据说明,返回数据说明同参数说明格式。有返回数据说明的MML命令可以分别有ACK、ERR返回,而不能有SUC返回。(4)如果返回数据支持多行记录,则表示方法如下例:QRYABBRV:CARDNORETURNPSTNNUMBER!;即以叹号(!)来表示该命令支持多行返回值。MML命令范例(1)修改密码:MODPIN:CARDNO=N'89860012345,PINNUMBER=N'1234;(2)修改缩位拨号:MODABBRV:CARDNO=N'89860012345678,ABBRNOC=D'1, PSTNNUMBER=N'07556812714;(3)增加用户:ADDUSER:USERNAME="张三",ADDRESS="西直门外大街12号", PHONE=N'01087353345,IDNUMBER=N'310602720808123,ZIPCODE=N'102435;MML返回命令规范MML返回命令概述MML返回命令用于对MML命令的返回。在SMP-Agent和营业系统之间的MML命令中,除了少数NOTIFY命令和注销LGO命令之外,都是要求有返回。所有的返回命令都要遵循MML返回命令规范。TELLINMML返回命令有三种:(1)操作成功,无返回数据——SUC命令(2)操作失败,返回错误———ERR命令(3)操作成功,有返回数据——ACK命令以下分别对三种返回命令进行说明。SUC命令图12 成功返回SUC命令返回只用于操作性质的MML命令返回,表示操作命令成功执行,并且无返回结果。SUC命令无参数。ERR命令1. ERR命令格式ERR命令只用于操作命令的返回,表示MML命令执行过程中出现错误。ERR命令格式如下:图13 出错返回参数块格式如下:图14 参数块SUC命令是通用的命令,用于服务器执行MML操作过程中出现错误时向终端发送,表示操作出现错误,同时向终端返回错误信息。2. 参数1——错误ID错误ID的格式是:错误编号由于可能分别来自SMP-Agent、SMP、SCP以及DBMS,编号本身并不能保证不重复。作为营业系统,不应针对特定的错误编号编写出错处理程序。3. 参数2——错误字符串错误字符串包含了对出错情况的说明。由于错误的输出可以是SMP-Agent、SMP、SCP以及DBMS,错误字符串可能会出现不同的语言、格式等。错误字符串的最大长度为:20K。4. ERR返回命令示例以下的例子为分别为SQL错误返回和接口命令参数错误返回:ERR:ERRID=D'268,ERRTEXT="SQLERROR:Uniqueconstraintix_1034violated.";ERR:ERRID=D'12,ERRTEXT="AgentERROR:密码值类型不合法,应该为数字字符串";ACK命令1. ACK命令格式ACK返回命令格式为:ACK返回命令由命令码ACK和结果集组成,中间用冒号(:)分隔。如果返回信息中结果集为空(意味着查询命令没有得到符合查询条件的结果),则冒号和结果集都为空,只保留命令码ACK。2. 结果集格式结果集中包含了命令的操作结果数据,操作结果数据的格式如下:结果集由返回结果组成,如果结果集中存在多行返回记录(如查询到多行记录),则返回结果之间用感叹号(!)分隔。返回记录可以由多个值组成,之间用逗号(,)分隔。返回参数值格式同MML命令中的参数值。同理,参数值也存在三种数据类型:十进制数、数字字符串、字符串。在业务数据中基本上不存在数据null值的情况,但是如果查询数据中某字段返回null值,则参数值返回将分别为: 数据类型为D',则null值表示为D'; 数据类型为N',则null值表示为N'; 数据类型为",则null值表示为""。每种数据类型的其他格式要求和转义字符序列同MML命令中的参数值要求。如果得到返回值过多,以至产生的MML返回消息超过了消息协议规定的最大长度(64k),则系统将把超出的记录丢弃,并在消息中注明实际结果集的记录数和发送的记录数。3. 示例(1)查询卡号缩位拨号ACKACK:ABBRNOC=N'0,PSTNNUMBER=N'07556812775! ABBRNOC=N'1,PSTNNUMBER=N'07556812714!ABBRNOC=N'2,PSTNNUMBER=N'07556812715! ABBRNOC=N'3,PSTNNUMBER=N'! ABBRNOC=N'4,PSTNNUMBER=N'! ABBRNOC=N'5,PSTNNUMBER=N'! ABBRNOC=N'6,PSTNNUMBER=N'! ABBRNOC=N'7,PSTNNUMBER=N'! ABBRNOC=N'8,PSTNNUMBER=N'! ABBRNOC=N'9,PSTNNUMBER=N';(2)查询卡号余额ACK:ACCOUNTLEFT=D'1260;(3)查询限呼号码(无限呼数据)ACK;协议规程TELLINMML消息结构无论是营业系统发送给SMP-Agent,还是由SMP-Agent返回给营业系统的消息,都遵循下图所示的消息结构:每一条MML消息都是由下列7个部分组成:(1)消息开始标志:标志消息帧的起始。(2)消息长度 :消息后续部分(不包括本身和消息开始标志)的长度。(3)消息头 :包含消息的发送、接收方信息以及请求的服务信息。(4)结果标识 :包含ACK消息内容是否完全的信息。(5)保留字 :用于日后的扩展。(6)MML :经过加密的MML命令串。(7)MAC :MML命令串的校验码。有关消息的编解码、加解密和消息校验的算法以华为公司提供的营业系统应用开发接口(即BS-API)的函数库或接口代码为准。下面依次对这些部分进行描述:消息开始标志消息开始标志是由4个字节(CHAR(4))组成,用来标识一个消息帧的起始。消息开始标志的内容是:"\x1C\x1D\x1E\x1F"。消息长度消息长度的数据类型为2字节整数,取值范围为:0-65000。消息长度表示了消息的后续部分的长度,包括:消息头(26bytes)+结果标识(8bytes)+保留字(64bytes)+MML(n*8bytes)+MAC(16bytes)本字段采用网络字节顺序。消息头消息头中包含消息发送、接收双方信息以及MML服务相关的信息。消息头由以下部分组成:1. 源实体ID源实体ID的数据类型为四字节整数,取值范围为0——2147483647。源实体ID表示了消息的发送方的标识。对于从营业系统发给SMP-Agent的消息,源实体ID为分配给该营业系统的标识ID;对于从SMP-Agent发送给营业系统的消息,源实体ID为SMP-Agent的ID。本字段采用网络字节顺序。2. 目的实体ID目的实体ID的数据类型为四字节整数,取值范围为0——2147483647。目的实体ID表示了消息的接收方的标识。对于从营业系统发给SMP-Agent的消息,目的实体ID为SMP-Agent的ID;对于从SMP-Agent发送给营业系统的消息,目的实体ID为分配给该营业系统的标识ID。本字段采用网络字节顺序。由于一个营业系统可以连接多个SMP-Agent、一个SMP-Agent又可以连接多个营业系统,因此源实体ID、目的实体ID在双方交互时用于判断消息的发送者和接收者身份。SMP-Agent不允许同一个营业系统与自己建立一个以上的连接。3. 源流水号源流水号的数据类型为四字节整数,取值范围为1——2147483647。源流水号表示了消息在发送方上的流水号。对于从营业系统发给SMP-Agent的消息,源流水号为该消息在营业系统上的流水号;对于从营业系统发给SMP-Agent的消息,源流水号为该消息在SMP-Agent上的流水号。本字段采用网络字节顺序。4. 目的流水号目的流水号的数据类型为四字节整数,取值范围为0——2147483647。目的流水号表示了消息在接收方上的流水号。对于从营业系统发给SMP-Agent的消息,目的流水号为该消息在SMP-Agent上的流水号;对于从营业系统发给SMP-Agent的消息,源流水号为该消息在营业系统上的流水号。对于大多数的消息,发送方在发送消息时并不知道该消息在接受方的流水号,此时可以将目的流水号设置为0。接收方在收到目的流水号为0的消息,将认为是一个新的操作请求。本字段采用网络字节顺序。由于SMP-Agent同时可以处理来自一个营业系统的多个MML消息,源流水号、目的流水号将被用来在通讯双方之间判断消息对应于哪个操作。如营业系统向SMP-Agent发送MML消息请求处理,将源流水号设置为营业系统上当前的流水号12,将目的流水号设置为0表示是一个新的请求。SMP-Agent收到该消息后,为其分配流水号345,并进行处理。处理完成后将返回消息的源流水号设置为345,将目的流水号设置为12发送给营业系统。营业系统收到目的流水号为12的消息后,就能够进行针对该流水号的处理,如将消息发送给相应的营业终端。5. 服务名服务名的数据类型为8字节字符。服务名用来标识SMP-Agent上提供的服务的名称。如修改密码MML命令MODPIN可以被用在300业务中,也可以被用在700业务中,如果标识这个MML命令的不同应用领域呢?这就要依靠服务名了。服务名是个字符串,不区分大小写,如“ACC”、“fph”等。但是建议营业系统发送消息时将服务名都写为大写。对于服务的MML命令及其返回,填写为该服务对应的服务名,如“ACC”、“SYSTEM”等。对于系统MML命令及其返回,统一填写为“INTERNAL”。如果服务名小于8个字符,则在服务名末尾加上"\0"表示字符串的结束。如果服务名等于8个字符,则不需要添加结束标志。6. 版本号版本号的数据类型为2字节整数,取值范围为:0-65535。服务本身在SMP-Agent上是可以升级的,为了避免升级前后MML格式不符造成的问题,要求消息中必须具备服务的版本号。如果SMP-Agent发现消息中的版本号与系统中该服务的版本号不符,将返回“服务版本号不一致”错误。本字段采用网络字节顺序。结果标识结果标识专用于ACK类型中用于数据库查询返回的查询结果消息。由于每条消息最大只能有65006个字节长,因此对于查询结果很大的情况,将只能返回部分数据。SMP-Agent不提供分批将数据传送完毕的功能,只会在消息的结果标识中填写实际结果集记录条数和返回结果记录条数。营业系统在收到返回结果记录条数<实际结果记录条数的ACK消息时,如果需要得到全部结果,只能通过调整查询条件来进行多次查询。结果标识由两个部分组成:1. 实际记录数实际记录数的数据类型为四字节整数,取值范围为0——2147483647。实际记录数表示该查询消息在SMP-Agent上实际得到的结果记录数。如某查询用户呼叫记录的语句在SMP-Agent上执行时,得到了2100条记录,则实际记录数将被填写为2100。2. 返回记录数返回记录数的数据类型为四字节整数,取值范围为0——2147483647。返回记录数表示该ACK消息中实际保存的记录数。如某查询用户呼叫记录的语句在SMP-Agent上执行时,得到了2100条记录,则实际记录数将被填写为2100。但是由于消息长度的限制,在ACK消息中返回了1200条记录,则返回记录数将被填写为1200。本字段采用网络字节顺序。对于一般的MML命令、ERR、非返回结果的ACK消息,实际记录数和返回记录数都填写为0。对于查询结果集记录数本身就是为0的,实际记录数和返回记录数都填写为0。保留字保留字的数据类型为64字节,目前无实际意义,用于日后的扩展。保留字目前SMP-Agent全部填空格。MMLMML的数据类型为一个n*8的字节流,最大长度64880字节,1=<n<=8110。MML中保存着经过加密的交互双方送出的MML命令,由于加密算法每次对64bit数据进行分组加密,因此MML命令将补齐到n*8,即8的整数倍。如果MML命令本身不够8的整数倍,则采用在命令后增加空格的方式补齐。MML命令在加密前是可见字符,但是经过加密算法的等长加密后,成为与明文长度相等的字节流。MML命令的加密方法在后续章节中将详细描述。MACMAC的数据类型是16字节的字节流。MAC的作用是用来进行消息的校验,用来检验传输过程中是否发生的内容的改变。MAC采用MD5算法,对MAC前面所有内容(加密后)并和密钥进行摘要运算,得到128bit的校验数据。在MAC中对密钥也进行摘要运算,是使得攻击者在没有得到密钥的情况下无法模拟生成MAC来欺骗SMP-Agent。MAC的具体校验方法在后续章节中将详细描述。加密与校验加密机制每个营业系统都被分配以下信息:(1)营业系统编号—— ClientID,营业系统以该编号作为本身的实体ID。(2)登录用户名 —— UserName,8字节字符串。(3)登录密码 —— Password,8字节字符串。其中ClientID与UserName、Password存在一一对应的关系,即SMP-Agent可以通过得到ClientID而得到相应的UserName、Password信息。营业系统与SMP-Agent之间的消息都是经过加密的,在交互过程中存在一次密钥的改变。1. 登录消息营业系统与SMP-Agent之间建立连接后,必须在10秒钟之内发送登录命令。在登录命令中,源实体ID填写为营业系统编号ClientID。MML命令采用IDEA加密,加密密钥是:MD5(UserName+Password)即用户名、密码的128bit的MD5摘要。注意,这里的用户名和密码都用空格补齐8个字节。MAC中填写的是MD5(加密密钥+消息体),消息体指的是除MAC外的消息其他部分(MML加密后)。SMP-Agent收到该登录消息后,将:(1)根据消息头中的源实体ID即ClientID,得到在SMP上保存的UserName和Password。(2)使用Password执行MD5(加密密钥+消息体)得到MAC',察看MAC'是否等于MAC,如果不是表示校验或者密码错误。SMP-Agent将立即断开与营业系统的连接,不返回任何错误。加密密钥为MD5(UserName+Password)产生的128bit摘要。(3)SMP-Agent使用MD5(UserName+Password)产生的128bit摘要作为解密密钥,对MML部分进行解密。(4)如果解密的MML部分不是合法的登录语句LGI:UserName=";或者LGI语句中的用户名与使用的UserName不一致,则SMP-Agent将立即断开与营业系统的连接,不返回任何错误。(5)SMP-Agent生成128bit(即16个bytes)的随机数,作为此次连接的SessionKey,返回给营业系统。返回消息仍然使用MD5(UserName+Password)做为密钥。(6)后续的其他消息将使用SessionKey作为新的密钥。2. 其他消息登录成功后的其他消息都将使用SMP-Agent返回的SessionKey作为MML语句的加、解密密钥。登录成功后的其他消息都将使用SMP-Agent返回的SessionKey作为MAC中的一部分,即: MAC=MD5(SessionKey+消息体)这些消息包括心跳消息。加密方式在TELLINMML消息中,只对MML部分进行了加密。MML的加密采用了IDEA算法进行加密。IDEA即InternationalDataEncryptionAlgorithn国际数据加密算法。IDEA是一个分组长度为64bit的分组加密算法,密钥长度为128位。同一个算法即可用于加密又可用于解密。IDEA的速度比DES快两倍,在33MHZ的Intel386机器上IDEA加密数据速率达880kbit/s,在66MHZ的Intel486机器上加密数据速率达2400kbit/s。IDEA的密钥长度是128位,比DES长两倍多。假设穷举攻击是最有效的,那么为了获取密钥需要2()次加密运算。设计一个每秒能够测试10亿个密钥的芯片,并采用10亿个芯片并行处理,它将花费年才能解出密钥——这个时间比宇宙的年龄还长。个这样的芯片可以在一天内找出密钥,但是在宇宙中还没有足够的硅原子可以被用来建造这样一个机器。因此,在TELLINMML中,只要营业系统能够很好的保证密钥不被泄漏,攻击者将不可能通过监听并截获TELLINMML的消息来得到密钥。并且,初始的密钥只在登录消息中使用,登录成功后,SMP-Agent与营业系统之间将采用随机产生的SessionKey进行加、解密,保证了交互过程中加密密钥与登录密码的无关。在登录消息及其返回中,使用的密钥是MD5(UserName+Password)即用户名、密码的128bit的MD5摘要。注意,这里的用户名和密码都用空格补齐8位。在登录后的消息交互,都将使用SMP-Agent在登录返回消息中给出的128bit随机SessionKey作为新的密钥。华为公司可以提供加密算法的C代码。校验算法TELLINMML使用的校验算法是MD5。MD5在经过一些初始化处理后,以512bit分组来处理输入文本,每一个分组又被分为16个32bit分组。算法的输出是由四个32bit分组组成,将它们级联成一个128bit散列值。MD5算法在TELLINMML中用来生成初始密钥,并作为消息校验的基础算法。在登录消息及其返回中,使用MD5(加密密钥+消息体)生成MAC,此处消息体为已经加密的消息。加密密钥为加密MML时使用的密钥,即MD5(UserName+Password

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论