前言
标准:GF 011-95 国内No.7信令方式 — 事务处理能力部分(TCAP)(暂行规定)
引用:事务处理能力的功能描述Q.771(Q.772)
事务处理能力的格式和编码Q.773
事务处理能力过程Q.774
应用事务处理能力的准则Q.775
关键字:事务处理,对话,成分,状态机
概述
事务处理能力应用部分(Transaction Capabilities Application part)简称TCAP,指的是在 TC用户(即各种应用)和网络层业务之间提供的一系列通信能力。它为大量分散在电信网中的交换机和专用中心的应用提供功能和规程,其主要目的是将信息传送功能和呼叫控制功能分开,支持不同节点之间电路无关消息的传送。
TCAP部分为之提供服务的TC用户包括以下应用:
1) 移动通信业务(漫游用户的位置登记等);
2) 涉及专用业务节点的补充业务的登记、激活和调用(免费电话业务、信用卡业务等);
3) 电路无关信令信息的交换(如:闭合用户群);
4) 网络操作和维护(信息询问/响应、批量数据传送等)。
随着我国电信业的日益发展,电信网逐步智能化和综合化,应运而生的各种应用业务,例如:被叫付费,VPN等智能网业务,信令网的维护和运行管理(OMAP),移动应用(MAP),闭合用户群(CUG)等,要求交换机之间,交换机与网络中心的数据库相关联,提供其间的信息请求和响应功能。作为No.7信令系统中专门提供的与应用无关的网络信息交互协议一事务处理能力应用部分协议,在各种智能业务、移动业务中发挥越来越重要的作用。
事务处理体系结构
事务处分为两个子层:成分处理子层(CSL)和事务处理子层(TSL)。成分处理子层主要进行操作管理,事务处理子层主要进行事务(对话)管理。
成分处理子层包括对话处理(DHA)和成分处理(CHA),用户数据就包含在成分处理中作为成分的数据部分。
那么什么是事务呢?通俗的讲,就是做的一件事情。举个远程办公的例子,用户A和用户B所在不同城市,他们都有自己的技术优势,现在用户A遇到一个技术难题,而用户B却擅长此问题的解决,因此用户A需要通过email与B交流合作才能完成这件事(事务)。为了做好这件事情,他们需要一次或多次交流(通过Email来交流信息,可以认为交流就是对话,而交流的具体内容就是成分),经过这些对话之后,事情才可能得到解决,也即完成一个事务。
再举个例子。一条运输带,每完成一类物体的运输任务我们就认为是完成一个事务。假设现在需要运输教科书和会议文档,所以运输带要完成两个任务(两件事务),运输带的另一端工作人员通过任务号(事务标识符)来区别不同的任务,进而将收到的装有教科书和会议文档的箱子区别开来。教科书的箱子可能还有学校名称(对话标识符),而会议文档箱子可能还有会议室号码(对话标识符),至于具体的教科书和会议文档的内容(成分)则是工作人员不关心的,交给相应的单位之后由各个单位自己解释。
一个事务可以有多个对话,每个对话都只能对应一个事务,而成分就是上层的用户数据,上层用户可能需要多次传送数据,每次传送时分配一个调用标识符以示区别。如果没有开始一个事务时,那么事务可能就是空闲状态;开始一个事务之后而没有对方的应答,这时候的等待状态就是发送启动状态;如果对方接收到一个事务的开始消息,等待接收对话的用户的请求或者通知,这时的等待状态就是接收启动状态;双方继续交换事务状态就是激活状态。
事务处理体系结构如图1
图1 事务处理体系结构
纠错:TC-U-CANCLE应该是请求(req)原语
成分处理和事务处理都维护自己的状态。ISM为成分处理状态机,TSM为事务处理状态机
TCAP协议层对应OSI模型中的应用层,NO.7协议栈如图2,由图可知道TCAP在NO.7信令中的位置。
图2 NO.7协议栈
原语
对话分为结构化对话和非结构化对话。事务分为结构化事务和非结构化事务。
结构化对话有对话的开始,继续,结束阶段。结束可以有预先安排的结束,基本结束和TC用户中止结束三种结束方式。
预先安排的结束是由TC用户根据预先的安排决定何时结束对话,TC-END请求原语的结果是本地的,此对话不会发送到对方也不会再接收成分,这种结束方式很少使用;基
本结束是通过TC-END原语结束一个对话,此原语会传送任何悬而未决的成分,然后对话在两个方向都不再交换成分;由TC用户中止的结束是用户不考虑任何未完成的操作调用请求而立即结束对话,TC用户可以提供表明中止原因及诊断信息的端对端信息来通知对方(TC用户可以通过TC-U-ABORT原语实现这种结束)。
而非结构化对话没有对话的开始,继续,结束阶段,一旦发出就没有回应,属于单向消息
结构化的每个事务都有独立的事务处理ID来识别,且经过事务的开始,继续,结束阶段。而非结构化的事务处理是没有事务处理ID的
请求表示将成分从TC用户传送到成分子层,指示表示将成分从成分子层传送到TC用户。
成分处理原语
——TC-INVOKE(请求,指示):请求或者指示一个调用操作。TC用户通过此原语将请求封装成一个调用操作请求。或当TCAP收到远端用户的调用请求时,通过此原语指示TC用户有远端用户的调用请求
——TC-RESULT-L(请求,指示):返回成功操作的最终结果。TC用户执行远端的调用请求且执行成功,则通过此原语将结果封装成响应,远端TC用户通过此原语就可知道请求得到服务。
——TC-RESULT-NL(请求,指示):返回成功操作的分段结果。基本同TC-RESULT-L
原语,但是此原语封装的是结果的分段结果,后续还有结果的成分
——TC-U-ERROR(请求,指示):TC用户指明失败理由。本端TC用户执行远端TC用户的调用请求时出现错误,则用此原语通知远端用户调用出错。TCAP通过此原语指示TC用户调用出错
——TC-U-REJECT(请求,指示):TC用户拒绝理由。如果远端的请求未能符合规则,那么TC用户通过此原语通知远端调用请求被拒绝,而TCAP通过此原语指示TC用户调用请求被拒绝
——TC-U-CANCLE(请求):TC用户的撤销决定通知
——TC-L-CANCLE(指示):本地成分子层对TC用户的撤销通知
——TC-L-REJECT(指示):本地拒绝;成分子层通知TC用户,因为错误的包类型或者成分而被底层拒绝
——TC-R-REJECT(指示):远端拒绝;成分子层通知本地TC用户成分被远端成分子层拒绝。
成分就是TCAP的用户数据部分,成分原语表示此成分的总体类型。举个例子,TC用户通过TC-INVOKE就可以知道数据是一个请求,通过TC-U-ERROR就可以知道数据是目的端对等用户再执行请求时出错了,通过TC-R-REJECT原语可知道数据在目的端的底层就被拒绝了而没有传达至目的对等用户。
成分有三种状态:
——空闲。未进行任何调用操作的状态
——操作发送。已经发送调用,正在等待远端响应
——等候拒绝。已经收到远端最终响应结果,但是保留此调用一段时间,使用户可以拒绝响应结果。状态迁移如图2
图2 成分处理状态迁移
对话处理原语
——TC-UNI(请求,指示):请求/指明一个非结构化对话
——TC-BEGIN(请求,指示):TC用户通过此原语开始一个对话.远端TCAP通过此原
语指示TC用户对话的开始
——TC-CONTINUE(请求,指示):继续一个对话,在调用TC-END原语结束一个对话之前,所有的双向对话都是CONTINUE消息
——TC-END(请求,指示):结束一个对话
——TC-U-ABORT(请求,指示):允许TC用户不考虑未完成的操作而突然终结对话,TC用户可以提供表明中止原因及诊断信息的端对端信息来通知对方
——TC-P-ABORT(指示):响应事务处理子层的终结通知。可能是因为包错误导致的。
——TC-NOTICE(指示):通知TC用户网络业务提供者不能提供所请求的业务
对话原语是一组行为控制指示,是动作,而成分是数据类型原语。
事务处理原语
事务处理原语与对话处理原语一一对应。
——TR-UNI(请求,指示):请求/指明一个非结构化事务
——TR-BEGIN(请求,指示):开始一个事务
——TR-CONTINUE(请求,指示):继续一个事务,在调用TR-END原语结束一个事务之前,所有的双向事务都是CONTINUE消息
——TR-END(请求,指示):结束一个事务
——TR-U-ABORT(请求,指示):TSL用户(CSL)突然终结事务的通知(对应TC-U-ABORT原语)。远端TC用户突然中止对话,
——TR-P-ABORT(指示):事务处理子层因为包或成分类型错误而终结事务,并通知TR用户
——TR-NOTICE(指示):通知成分子层网络底层不能提供所请求业务
事务处理有四种状态:
——空闲。事务未开始
——发送启动(IS)。Begin消息已发出,等待同层实体的响应
——接收启动(IR)。Begin消息已接收,等待TR用户的请求(继续或终结事务)
——激活。事务已经建立,continue消息可以双向通信
状态迁移如图3
图3 事务处理状态迁移
1. 还有内容吗
格式编码
1. TCAP消息格式如图4
消息类型标签总消息长度事务处理部分信息单元事务处理部分事务处理部分信息单元对话部分信息单元成份部分标签成份部分长度成份类型标签成份长度成份部分信息成份成 份
图 4 TCAP消息结构
2. TCAP消息的基本信息单元如图5
图5 TCAP消息单元格式
3. 标签结构如图6
图 6 信息单元标签格式
类别是标签的类型,值为00(通用类),01(全应用类),10(上下文专用类),11(专用类)。F位是格式位,表示信息单元是基本式(0)还是构成式(1)。标签码是区别此信息单元与其他单元的标识,是可以扩展的。
4. 长度。是一个八位组,指明内容中八位组的数量,不包括标签和长度,分为短格式(小于128个字节),长格式(大于127个字节)和不定长格式
实例
举个远程登录数据库的例子说明原语的使用,状态机的变化,如图4
图7 远程登录数据库系统
在源端,TC用户A通过TC-INVOKE原语,将登录的请求封装(分配一个调用ID),然后通过TC-BEGIN原语开始一个对话,对话处理然后通过TR-BEGIN原语将请求传达事务处理子层,事务处理分配本端事务标识符并保存目的端地址(由TC用户提供,SCCP协议需要),通过N-UNITDATA原语将数据传给底层SCCP协议,由SCCP的寻址,将消息通过网络传达到目的端数据库系统。这时源端成分处理进入操作发送状态,而事务处理进入发送启动状态。如果底层网络不支持所请求业务,SCCP通过N-notice原语指示事务处理子层出错了,再经TC-notice原语通知TC用户错误
在目的端,SCCP通过N-UNITDATA原语通知事务处理,事务处理记录本消息的源端事务标识号(作为目的事务标识)和源端地址(作为目的地地址)以及目的地址(作为本地地址),然后通过TR-BEGIN原语将指示通知对话处理,接着对话处理通过TC-BEGIN原语通知远端事务处理子层有消息到达,这时候数据库系统通过TC-INVOKE原语提取请求进
而解释内涵。如果远端数据库同意登录系统,则继续。这时目的端的事务处理进入接收启动的状态。
数据库系统同意TC用户A的登录请求,认为用户A首先需要输入用户名和密码,于是通过TC-INVOKE原语,将用户名和密码请求封装,通过TC-CONTINUE原语将请求传至事务处理子层。事务处理将之前记录的事务标识号作为目的事务标识,同时也加上本端的事务标识号,通过网络将请求传到用户A。假如请求因为某些原因而未能及时传达TC用户A,超过一定时间之后,TC成分子层会通过TC-L-CANCLE原语通知TC用户A请求超时(成分处理进入空闲状态)。
用户A收到TC-CONTINUE通知,就会通过TC-INVOKE原语提取出用户名和密码请求,输入用户名和密码后通过TC-invoke原语封装请求(会重新分配调用ID),将CONTINUE消息传达数据库系统。
数据库系统经过认证认为密码或用户名错误,将使用TC-U-REJECT成分原语通过TC-CONTINUE通知用户A登录被拒绝原因。
以下是MAP消息交户的一个片段。
1.1 TC-BeginA
62 4D 48 03 EA 01 85 6B 1E 28 1C 06 07 00 11 86 05 01 01
01 A0 11 60 0F 80 02 07 80 A1 09 06 07 04 00 00 01 00 01 02 6C 80 A1 22 02 01
01 02 01 02 30 1A 04 08 64 00 30 32 09 10 55 F4 81 06 91 68 31 09 40 67 04 06
91 68 31 09 40 67 00 00
这条消息携带源端事务标识号(48),对话部分(6B),外部标签(28),成分部分(6C),应用上下文(A1),调用ID(02),操作码(02).
1.2 TC-ContinueB
65 81 48 03 D8 02 E5 49 03 EA 01 85 6B 2A 28 28 06 07 00
11 86 05 01 01 01 A0 1D 61 1B 80 02 07 80 A1 09 06 07 04 00 00 01 00 01 02 A2
03 02 01 00 A3 05 A1 03 02 01 00 6C 80 A7 66 02 01 02 02 01 07 30 80 81 07 91
68 31 68 21 87 36 82 01 0A 83 01 00 A6 03 04 01 11 A7 80 A1 0D 04 01 92 30 08
30 06 83 01 10 84 01 04 A1 0D 04 01 93 30 08 30 06 83 01 10 84 01 05 A3 09 04
01 11 84 01 05 81 01 01 A3 09 04 01 13 84 01 05 81 01 00 A3 06 04 01 12 84 01
00 A3 06 04 01 14 84 01 00 00 00 00 00 00 00
这条消息携带本端事务标识符(48),目的端事务标识符(49),返回成功操作的非最终结果(A7)
1.3 TC-ContinueB
65 11 48 03 D8 02 E5 49 03 EA 01 85 6C 05 A2 03 02 01 03
返回成功操作的最终结果(A2)
1.4 TC-EndA
64 1D 49 03 D8 02 E5 6C 15 A2 13 02 01 00 30 0E 02 01 02 30
09 04 07 91 68 31 69 11 00 00
结束对话消息,只有目的端事务标识符。状态机恢复到空闲状态
再举个800#业务的例子。
800#业务介绍:
在IN业务中,800#业务是一种被叫付费业务。800#是指被叫用户和网络签约,提供发话免费的业务(其通话费用由被叫用户支付)。例如,当一个商业、企业部门或个人等作为一个业务用户申请开放该业务时,则呼叫该业务用户的通话费由该业务用户支付。由于
这些呼叫对主叫是免费的,所以一般把800#业务又称为免费电话业务。
800#业务具体流程如下所述:
1. 用户摘机,听到拨号音后为呼叫6104567,并由对方付费。先按“8006104567”,交换局知道这是一个免费对话呼叫。
2. 交换局根据主叫用户输入的免费号码(8006104567)对主叫方进行鉴权。同时通过TC-INVOKE原语将请求封装,启动一个结构化对话,向业务控制点(SCP)传送含有免费电话号码的BEGIN消息,请求SCP执行译码操作(OP1)
3. SCP收到TC-BEGIN对话消息,知道有对话/事务开始,然后通过TC-INVOKE得到请求调用,然后执行调用请求:检索与该号码对应的合同用户信息,若有,则用TC-INVOKE封装请求,然后用CONTINUE消息要求交换局/SSP发送通知,催促用户第二次拨号并收集拨号信息(OP2)
4. 交换局收到TC-CONTINUE消息,知道事务可以继续,然后通过TC-INVOKE原语得到调用请求,执行请求之后向主叫用户送出催促第二次拨号的通知
5. 发话人收到上述通知后,开始第二次拨号“2”
6. 交换局收集用户的拨号信息,通过TC-RR-L封装结果,接着用TC-CONTINUE原语发送CONTINUE消息,向SCP传送发话人第二次拨号的数字信息(OP2的结果),SCP将此信息译成受话点的对话号码
7. SCP译码成功,通过TC-RR-L成分原语封装结果,用TC-END对话原语向交换局
/SSP回送受话点的实际电话号码(OP1的结果)
8. 交换局/SSP收到TC-END消息,通过TC-RR-L取出结果,然后根据译码结果接通电话,并记录对应的账单号码和计费信息
附录
消息类型:
UNI BEGIN CONTINUE END ABORT 消息组成:
源端事务标识号 目的端事务标识 协议放弃原因 61H
62H
65H
64H
67H
48H
49H
4AH
对话部分 6BH
成分部分 6CH
成分:
INV A1H
RR_L A2H
RR_NL A7H
RE A3H
RJ A4H
本地调用ID:02H
本地操作码:02H
Linked ID 80H
NULL标记 03H
全程操作码标记 06H
END消息 64H
协议版本 80H
应用上下文 A1H
用户信息 BEH(1011 1110)
中止来源 80H
结果 82H
结果来源诊断 A3H
操作码 02 03 Location)
04 Number)
07 Subscriber Data)
操 作
位置更新(Locating Updating) 删除位置信息(Cancel 取漫游号(Sent Roaming 插入用户数据(Insert
09 取用户参数(Sent Parament)
16 取路由信息(Sent Routing Infomation)
56 送鉴权信息(Sent Authentication Infomation
一. 附录B
因篇幅问题不能全部显示,请点此查看更多更全内容