专利名称:一种计费网关重启恢复工作的方法
技术领域:
本发明涉及一种用于移动通信系统的分组数据业务计费话单的处理技术,确切地 说,涉及一种计费网关CG重启恢复工作的方法,属于移动通信的计费技术领域。
背景技术:
计费网关CG (Charging Gateway)是TD-SCDMA和GPRS/WCDMA移动通信网络的一 个基础网元,其功能是实现移动通信网络数据域的计费数据采集,该网元在整个移动通信 网络中的位置如图l所示。对于电信计费网关而言,该网元的工作稳定性和容灾性的设计 要求很高,通常采用双机冗余备份机制,以提高该装置的可靠性。尽管如此,电信运营商对 于单机的容灾性也提出了相应的设计要求。在CG的设计规范中,电信运营商要求在单机情 况下,在遇到故障重启后,CG应该不丢失计费话单,并能正常工作和正常合并计费话单。例 如,在关闭CG的双机功能情况下,当CG接收计费话单过程时,直接终止CG话单服务器中的 任一进程(或直接关闭话单服务器电源后,重新启动),话单服务器都能够自动重启所有进 程、并继续工作,且所生成的话单文件不会出现重复或丢失等情况。 参见图1,介绍CG的工作性能CG通过接口 Ga接收来自GPRS服务节点SGSN或 GPRS网关节点GGSN的原始话单信息,即GPRS隧道协议GTP数据包,并对原始话单信息进行 解析和存储后,给SGSN或GGSN回复应答信息。然后对多个原始话单进行合并处理,得到最 终的计费话单,传送给计费系统BS (Billing System)。由BS对最终计费话单进行后续处 理,形成最终的用户账单。图中虚线表示信令接口 ,实线表示信令和数据传输接口 。
目前,TD-SCDMA和GPRS/WCDMA标准化组织3GPP提出的技术规范中,依靠SGSN或 GGSN与CG共同实现了计费话单的传输和容错机制。当SGSN或GGSN发送一个原始话单给 CG后,若没有接收到来自CG的应答,则SGSN或GGSN将备份该原始话单,并一直等到得到 CG明确的应答后,才丢弃该原始话单。而CG接收到来自SGSN或GGSN的原始话单后,就对 该原始话单进行解析。若解析正确,则保存该原始话单,并返回给SGSN或GGSN —个回应, 通知其删除该原始话单;否则,要求SGSN或GGSN重新发送该原始话单。
当CG出现故障后,通常将按如下情况进行处理 (1)当SGSN或GGSN产生一个原始话单,并将其发给CG进行处理时,若此时CG出 现故障并启动重启过程,则因SGSN或GGSN没有收到来自CG的应答,当CG重启恢复后,SGSN 或GGSN将重新把该原始话单发给CG进行处理;SGSN或GGSN与CG将继续进行工作,不会 出现丢单情况。 (2)当CG正确解析原始话单,并给SGSN或GGSN返回正确应答后,CG开始处理原 始话单,判断是否需要进行话单合并等操作。若需要合并,则进行合并操作,得到最终话单 并加以保存;然后继续接收来自SGSN或GGSN的原始话单。若在保存最终话单后,CG出现 了故障,由于此时已经完成了一个计费话单的处理周期,得到了最终话单,这样当CG重启 恢复后,SGSN或GGSN与CG也将继续工作,不会出现丢单。 但是,上述机制没有对发生故障的全部情况考虑周全若在对原始话单合并处理过程中,也即CG在回复SGSN或GGSN响应之后、完成最终话单保存之前时出现了故障,由于 SGSN或GGSN已经丢弃了原始话单,CG要根据已经保存的原始话单重新建立合并过程,再恢复 到故障前的工作状态和继续接收来自SGSN或GGSN的原始话单。但是,现有技术规范没有明 确给出CG如何应对这个时段的相应处理方法,造成业务处理中的一个盲点,这个问题就自然 成为CG实现正常工作时必须解决的问题;否则,此种情况一旦发生,将造成部分话单的丢失。
发明内容
有鉴于此,本发明的目的是提供一种能够解决上述现有技术盲点的计费网关重启 恢复工作的方法,本发明方法使得CG在其整个工作过程中,都能够正确处理计费话单,既 保证未处理完的原始话单不会出现丢单,又保证了已处理完、尚未保存的话单不会重复处 理而出现重单;同时,通过对需要处理的原始话单的数量进行合理选择,避免了 CG性能出 现明显下降。 为了达到上述目的,本发明提供了一种计费网关重启恢复工作的方法,其特征在
于在CG出现故障并重新启动后,CG根据故障发生前在工作区存储的信息,判断故障发生
时的不同状况,并分别执行相应操作;在不能通过GPRS服务节点SGSN或GPRS网关节点
GGSN与CG之间容错机制恢复工作的情况下,先合理选定从故障发生的时间起始的回溯分
析时间,再对CG本地存储的原始话单和最终话单进行回溯对比分析,发现未合并的原始话
单和删除已合并的原始话单,然后重新构建原始话单哈希表,恢复CG的正常工作。 为满足计费网关CG出现故障后的恢复要求,本发明针对3GPP规范中未涵盖的故
障情况,提出了一种能够很好地恢复CG工作的故障重启恢复工作的方法。该方法包括了 CG
出现故障后的重启恢复步骤、部分话单和最终话单的存储方法、哈希表的构建和删除,以及
回溯时间点的选择等内容,并具有以下特点弥补和完善了 CG在回复SGSN或GGSN响应之
后、保存最终话单之前时出现故障的应对、处理措施,保障了 CG对故障处理的完备性,使得
CG在任何时间、出现各种不同故障,都不会发生计费话单的丢单或重单的情况,保证计费话
单的准确性。而且,该方法能够使得CG出现任何故障时,都能够完成重启并恢复先前的工
作,提高了工作可靠性;并确保整个计费网关的工作性能不会产生明显影响。 本发明方法的操作过程简单、明晰,容易掌控和实现。再者,本发明的思路具有通
用性,对于其它需要考虑重启和恢复功能的类似系统或设备,该方法具有借鉴意义,因此,
本发明具有很好的推广应用前景。
图1是CG在移动通信网络中的位置示意图。
图2是部分话单的哈希表结构图。
图3是部分话单删除后的哈希表结构图。
图4是时间点选择示意图。 图5是本发明计费网关CG重启恢复工作方法的操作步骤流程图。
具体实施例方式
为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步的详细描述。 根据3GPP的技术规范,在用户使用数据业务的过程中,为保证计费数据的安全, 对于每次会话连接时间较长的业务过程,SGSN或GGSN都会定时产生多个部分话单,并将各 个部分话单依次发给CG进行处理和合并。 对于用户数据业务的每一次会话连接过程中所产生的多个部分话单(又称为原 始话单),CG在本地设有一个对应的存储单元,本发明用原始话单参数original—cdr表示 之。每个部分话单的内容中包含多个域(即字段),其中唯一标识该部分话单属于哪个会 话连接的域是用域参数charging」d表示的。因此,在一段时间范围内,域参数charging— id相同的部分话单被认为属于同一个会话连接,将参与最终的话单合并,产生最终话单并 存储在CG本地,用最终话单参数final_cdr表示。合并完成后,由CG将最终话单入库,并 删除最终话单参数final_Cdr中的数据。 本发明采用线性链表结构将原始话单参数charging」d相同的部分话单链接起 来,得到部分话单链表。同时采用哈希表结构来存储对应于某个原始话单参数charging」d 的部分话单信息,也即对应某个数据业务会话连接的部分话单。 哈希值hash—key的计算方式为hash_key = charging_id% 255,式中,%表示 取模操作,255是哈希表的长度。对哈希表冲突采用链表式结构进行处理将hash—key相 同的部分话单采用链表形式链接起来;若域参数charging」d不同的部分话单链表具有相 同的haSh_key值而发生冲突时,将haSh_key相同的部分话单链表再用链表链接起来,而访 问时通过原始话单参数charging」d区分部分话单的归属。 参见图2,介绍CG正常工作过程中得到的哈希表结构图的情况此时,CG正常接收 来自SGSN或GGSN的部分话单。完成解析后,将部分话单存入到原始话单参数original— cdr代表的CG本地存储空间;同时,将部分话单以哈希表节点的形式插入到相应的部分话 单链表(用part_cdr参数表示)中。 当某个数据业务的会话连接完成时,将会触发SGSN或GGSN发送最后一个部分话 单,表示正常业务的结束。当CG收到标识为最后一个部分话单的数据包后,就进行话单的 合并,即将对应这个会话连接的所有部分话单进行合并而得到最终话单,并存入到最终话 单参数final—cdr代表的CG本地存储空间。同时,要将部分话单链表从哈希表和origina1— cdr中删除。 假设对图2所示的哈希表中hash_key值为hash_key0的part_cdr_il,part_cdr_ i2, . . . , part_cdr_in所对应的某个原始话单参数charging」d的各个部分话单的合并完 成、并将其删除后,得到的哈希表结构如图3所示。CG的工作状态就是伴随着哈希表结构的 插入与删除等操作进行相应变换。 当CG出现故障而自动(或强制)重启后,保存在CG内存中的哈希表结构将不复 存在。此时,若要CG恢复到故障前的正常工作状态,则首先要将哈希表结构恢复到故障前 的状态。如前所述,所有存储在哈希表中的部分话单记录,都已经保存在original—cdr参 数代表的CG本地存储空间。因此,要恢复哈希表结构,必须重新解析original_Cdr参数中 的部分话单,根据域参数charging」d值将其插入到哈希表中,完成哈希表的重建。
但是,通常不可能将CG开始工作后的所有时间的部分话单都重新进行解析,这 样既没有必要、工作量也太大,且会严重影响CG的工作性能。因为已经产生并保存最终话单的原始话单就没有必要再读入哈希表中,只需对CG发生故障前的一小段时间内的原 始话单进行再解析,重新构建哈希表,也即将没有生成最终话单并存入f inal_Cdr参数的 original_cdr参数中的原始话单再读入哈希表中。 因此,重新解析的原始话单的起始时间点的选择非常关键,它既影响到CG的工作 性能,又可能影响话单的正确性,必须仔细考虑。系统重启后,CG首先读取当前工作目录的 文件时间,这里记录的是最近的原始话单文件的生成时间,用时间参数cycle表示。
回溯时间的选择是由人工通过管理系统预设的固定值,或者根据需要进行动态 调整。然而,为保证系统的健壮性,选择固定的回溯时间(用参数redo—time表示)更加 合理、可取。本发明通过对网上数据的提取分析,设定对故障前1小时之内的原始话单进 行重新分析,即redo—time参数值为3600秒(S)。因此,当CG重启后,需要重新解析从 cycle-redo_time到cycle这段时间内原始话单original_cdr参数中的所有话单,以及最 终话单final_cdr参数中的所有话单,并构建相应的哈希表结构。 参见图4,介绍本发明方法选择的具体回溯时间点。图中,cycle点为CG出现故障 时间,参数redo—success为CG重启恢复成功的时间点。 本发明是一种计费网关重启恢复工作的方法在CG出现故障并重新启动后,CG根 据故障发生前在工作区存储的信息,判断故障发生时的不同状况,并分别执行相应操作;在 不能通过SGSN或GGSN与CG之间容错机制恢复工作的情况下,先合理选定从故障发生的时 间起始的回溯分析时间,再对CG本地存储的原始话单和最终话单进行回溯对比分析,发现 未合并的原始话单和删除已合并的原始话单,然后重新构建原始话单哈希表,恢复CG的正 常工作。
参见图5,介绍本发明方法的具体操作步骤 步骤1、故障重启在故障重启过程中,CG重新执行初始化,内存中的数据不予保 留,硬盘上存储的工作区文件则维持原状,以供后续处理。 这里的故障重启过程包括系统自动判断重启,或维护人员启动重启。
步骤2、判断故障类型CG根据原始话单original_Cdr参数和最终话单final_ cdr参数的存储信息内容判断不同故障类型后,酌情执行后续步骤或结束该流程。该步骤 中,CG根据判断的三种故障类型,分别执行下列操作内容 (21)original_cdr参数和final_cdr参数均为空,表明该故障发生时,各个部分
话单都已完成合并与存储操作,CG能直接继续正常工作,结束该流程;或 (22) f inal_Cdr参数为空,表明该故障发生时,部分话单还没有完成合并,SGSN或
GGSN都还没有接收到CG的确认;此时,SGSN或GGSN会尝试重发GTP数据包,CG也能直接
继续工作,结束该流程;或 (23)在CG对原始话单合并处理过程中,即在CG回复SGSN或GGSN响应之后、完成 最终话单保存之前出现的故障;此时,CG执行后续操作步骤。 步骤3、分析部分话单CG先通过对当前工作目录的文件分析,确定最近的原始话 单文件生成时间值cycle为故障发生时间点,接着读取故障发生时间点以前设定回溯时间 内的所有最终话单文件并形成最终话单链表(用参数redo—final—cdrJist表示之),再读 取设定回溯时间内的所有部分话单文件,并将其与上述链表的内容进行对比分析,提取其 中未完成合并的部分话单和形成部分话单链表(用参数red0_part_Cdr_liSt表示之),以供后续处理,防止发生丢失话单和避免出现重复话单。该步骤进一步包括下列操作内容
(31)先设定回溯时间,并分析当前工作目录内的文件,确定最近的原始话单文件 保存时间作为故障发生时间点; (32)读取距离该故障发生时间点为设定回溯时间内的所有最终话单文件,形成参 数redo—final—cdr—list的最终话单链表; (33)读取距离该故障发生时间点为设定回溯时间内的所有原始话单文件,再重新 进行解析提取其中未合并的部分话单形成参数red0_part_Cdr_liSt的部分话单链表。
在将部分话单插入参数red0_part_Cdr_liSt的部分话单链表时,要将该部分话 单的域参数charging」d与参数redo—final—cdr—list的最终话单链表中最终话单的域参 数charging—id进行比较; 若两者相等,表明该部分话单已经被合并形成了最终话单,不需再进行合并处理, 即该部分话单不要插入到redo_part_cdr_list链表中; 若两者不等,则将该部分话单插入到red0_part_Cdr_liSt链表中,供后续进行合 并处理。 步骤4、重构哈希表CG读取部分话单链表中的部分话单,用线性链表将域参数相 同的部分话单链接起来,再根据部分话单的域参数值得到其哈希值后,将该部分话单链表 插入到重新构建的原始话单哈希表中;当该部分话单都已读取并插入于该原始话单哈希表 后,即完成哈希表的重构。 该步骤中,将部分话单链表插入到重新构建的原始话单哈希表中的操作包括下列 内容 (41)设定哈希值hash_key的计算方式为hash_key = charging_id% 255,式 中,%表示取模操作,255为哈希表的长度; (42)采用链表式结构处理哈希表冲突CG按haSh_key将部分话单链表保存到原 始话单哈希表中;若域参数charging」d不同的部分话单链表具有相同的haSh_key值而发 生冲突时,将haSh_key相同的部分话单链表再用链表链接起来,而访问时通过cnarging_ id来区分该部分话单的归属; (43)当CG读取到标识为最后一个部分话单的数据包后,执行话单的合并,即将 对应该会话连接的所有部分话单执行合并处理,得到最终话单后,将其存入到最终话单 final_cdr参数的本地存储空间;同时,从哈希表和原始话单original_Cdr参数中删除该 会话连接的所有部分话单链表。 步骤5、恢复正常工作CG通知SGSN或GGSN发送下一个GPRS隧道协议GTP数据 包,表明CG已完成重启恢复,重新开始正常工作。 本发明方法已经由申请人在其研发的CG设备中进行了多次试验实施,试验的结 果是成功的,实现了发明目的,并通过了中国移动GPRS网络入网测试中关于单机情况下恢 复计费的所有测试项,这也证明了本发明方法的有效性。
权利要求
一种计费网关CG重启恢复工作的方法,其特征在于在CG出现故障并重新启动后,CG根据故障发生前在工作区存储的信息,判断故障发生时的不同状况,并分别执行相应操作;在不能通过GPRS服务节点SGSN或GPRS网关节点GGSN与CG之间容错机制恢复工作的情况下,先合理选定从故障发生的时间起始的回溯分析时间,再对CG本地存储的原始话单和最终话单进行回溯对比分析,发现未合并的原始话单和删除已合并的原始话单,然后重新构建原始话单哈希表,恢复CG的正常工作。
2. 根据权利要求1所述的方法,其特征在于,所述方法包括下列操作步骤(1) 故障重启在故障重启过程中,CG重新执行初始化,内存中的数据不予保留,硬盘上存储的工作区文件则维持原状,以供后续处理;(2) 判断故障类型CG根据原始话单original—cdr参数和最终话单f inal_cdr参数的存储信息内容判断不同故障类型后,酌情执行后续步骤或结束该流程;(3) 分析部分话单CG先读取故障发生时间点以前设定回溯时间内的所有最终话单文件并形成链表,再读取设定回溯时间内的所有部分话单文件,并将其与所述链表的内容进行对比分析,提取其中未完成合并的部分话单和形成部分话单链表,以供后续处理,防止发生丢单和避免出现重复话单;(4) 重构哈希表CG读取部分话单链表中的部分话单,用线性链表将域参数相同的部分话单链接起来,再根据部分话单的域参数值得到其哈希值后,将该部分话单链表插入到重新构建的原始话单哈希表中;当该部分话单都已读取并插入于该原始话单哈希表后,即完成哈希表的重构;(5) 恢复正常工作CG通知SGSN或GGSN发送下一个GPRS隧道协议GTP数据包,表明CG已完成重启恢复,重新开始正常工作。
3. 根据权利要求2所述的方法,其特征在于所述故障重启过程包括系统自动判断重启或维护人员启动重启。
4. 根据权利要求2所述的方法,其特征在于所述步骤(2)中,CG根据判断的三种故障类型,分别执行下列操作内容(21) original_Cdr参数和final_cdr参数均为空,表明该故障发生时,各个部分话单都已完成合并与存储操作,CG能直接继续正常工作,结束该流程;或(22) f inal_Cdr参数为空,表明该故障发生时,部分话单还没有完成合并,SGSN或GGSN都还没有接收到CG的确认;此时,SGSN或GGSN会尝试重发GTP数据包,CG也能直接继续工作,结束该流程;或(23) 在CG对原始话单合并处理过程中,即在CG回复SGSN或GGSN响应之后、完成最终话单保存之前出现的故障;此时,CG执行后续操作步骤。
5. 根据权利要求2所述的方法,其特征在于所述步骤(3)进一步包括下列操作内容(31) 先设定回溯时间,并分析当前工作目录内的文件,确定最近的原始话单文件保存时间作为故障发生时间点;(32) 读取距离该故障发生时间点为设定回溯时间内的所有最终话单文件,形成参数redo_final_cdr_list的最终话单链表;(33) 读取距离该故障发生时间点为设定回溯时间内的所有原始话单文件,再重新进行解析提取其中未合并的部分话单形成参数red0_part_Cdr_liSt的部分话单链表。
6. 根据权利要求5所述的方法,其特征在于所述步骤(33)包括下列操作内容在将部分话单插入参数red0_part_Cdr_liSt的部分话单链表时,要将该部分话单的域参数与参数charging」d与参数redo—final—cdr—list的最终话单链表中的最终话单的域参数charging_id进行比较;若两者相等,表明该部分话单已经被合并形成了最终话单,不需再进行合并处理,即该部分话单不要插入到redo_part_cdr_list链表中;若两者不等,则将该部分话单插入到red0_part_Cdr_liSt链表中,供后续进行合并处理。
7. 根据权利要求5所述的方法,其特征在于所述回溯时间是采用人为设定的固定值,或者根据需要进行调整,当前设定值为1小时。
8. 根据权利要求2所述的方法,其特征在于所述步骤(4)中,将部分话单链表插入到重新构建的原始话单哈希表中的操作包括下列内容(41) 设定哈希值hash_key的计算方式为hash_key = charging_id% 255,式中,%表示取模操作,255为哈希表的长度;(42) 采用链表式结构处理哈希表冲突CG按hash—key将部分话单链表保存到原始话单哈希表中;若域参数charging」d不同的部分话单链表具有相同的haSh_key值而发生冲突时,将haSh_key相同的部分话单链表再用链表链接起来,而访问时通过charging」d来区分该部分话单的归属;(43) 当CG读取到标识为最后一个部分话单的数据包后,执行话单的合并,即将对应该会话连接的所有部分话单执行合并处理,得到最终话单后,将其存入到最终话单final_Cdr参数的本地存储空间;同时,从哈希表和原始话单original—cdr参数中删除该会话连接的所有部分话单链表。
全文摘要
一种计费网关CG重启恢复工作的方法,是在CG出现故障并重新启动后,CG根据故障发生前在工作区存储的信息,判断故障发生时的不同状况,并分别执行相应操作;在不能通过SGSN或GGSN与CG之间容错机制恢复工作的情况下,先合理选定从故障发生的时间点起始的回溯分析时间,再对CG本地存储的原始话单和最终话单进行回溯对比分析,发现未合并的原始话单和删除已合并的原始话单后,重新构建原始话单哈希表,恢复CG的正常工作。该方法包括故障重启、判断故障类型、分析部分话单、重构哈希表和恢复正常工作五个操作步骤。该方法使得CG出现任何故障都能完成重启并恢复先前工作,提高工作可靠性和计费话单准确性;并确保整个计费网关的工作性能不会受到明显影响。
文档编号H04W4/24GK101778367SQ200910244139
公开日2010年7月14日 申请日期2009年12月29日 优先权日2009年12月29日
发明者李学春, 李振, 熊志勇 申请人:北京首信科技股份有限公司