话单合并处理方法

文档序号:7919331阅读:665来源:国知局
专利名称:话单合并处理方法
技术领域
本发明涉及电通信技术,尤其涉及一种话单合并处理方法。
背景技术
在GPRS、WCDMA网络上长时间占用网络资源的用户,主机会为用户生成多张部分话单,其中又分为首张部分话单、中间部分话单和末张部分话单,主机生成的部分话单在送计费中心之前,需要CG把话单尽可能地合并,变成一张话单或者几张较大的部分话单送计费中心进行计费处理。
现有技术的缺点是,在话单合并过程中若CG因为异常而导致合并过程中断,会产生丢话单或者重话单的问题。因为合并过程中需要大量话单在内存中等待,若CG出现异常而终止,在在内存中等待的话单将会丢失。因为等待的话单很多而无法进行保存,若合并过程中保存到磁盘会严重影响合并的性能,可能无法满足性能要求,所以当CG系统重新恢复的时候必须要把这些在内存中等待的话单找回来。
根据中国移动总局对CGF的基本要求,CG的计费处理的差错率必须小于0.001%,现有的技术不能精确的找回CG异常之前,在内存中等待的话单,或者造成话单丢失,或者造成重复话单。

发明内容
本发明的目的在于提供一种性能可靠的话单合并处理方法。
本发明所采用的方法为这种话单合并处理方法,其特征在于它采用如下步骤主机生成话单,包括部分话单和非部分话单,其中部分话单需要与其它话单合并,非部分话单不需要与其它话单合并,称A类话单;计费网关包装话单,将主机送来的当前话单包装在数据包中,送合并流程进行合并;然后,计费网关合并话单若当前话单为A类话单,则直接送到合并完成的话单存放队列;若当前话单为部分话单与有关等待话单进行合并至不需要继续等待合并时,把合并结果送到合并完成的话单存放队列;所述部分话单可分为B类话单和C类话单,其中B类话单在合并后需要继续与其他话单合并,C类话单合并后不需要继续等待,计费网关合并话单时,
A)若当前话单为B类话单,首先在等待队列查找属于同一个分组数据协议的等待话单;i.若找到等待话单,则先判断两张话单是否允许合并;1)若允许合并,先把当前话单与等待话单合并,合并结果保留在等待队列中,其包号与原先等待话单的包号相同,然后判断话单所属的分组数据协议是否已经结束;i)若已经结束,再判断合并结果是否需要继续等待所属分组数据协议的其他未到达的部分话单;a)若不需要继续等待,则把合并结果送合并完成的话单存放队列,当前话单的合并过程结束;b)若需要继续等待,则让合并结果保留在等待队列中,直到所属分组数据协议的所有部分话单到达后当前话单的合并过程结束;ii)若话单所属分组数据协议未结束,则合并结果继续等待话单所属分组数据协议的后续部分话单,当前话单的合并过程结束;2)若不允许合并则把等待话单送合并完成的话单存放队列,用当前话单替换等待话单在等待队列中的位置,继续等待后续话单,话单的包号为原先等待话单的包号,当前话单的合并过程结束;ii.若无正在等待的话单,则直接把当前话单送等待队列,并根据当前话单是否所属分组数据协议的首张部分话单,按照如下方式处理当前话单的包号;1)若当前话单是所属分组数据协议的首张部分话单,则当前话单的包号不变,当前话单的合并过程结束;2)若当前话单不是所属分组数据协议的首张部分话单,则调整话单包号,当前话单的合并过程结束;B)若当前话单为C类话单,首先在等待队列中查找正在等待当前话单的话单;i.若找到等待话单,则先判断两张话单是否允许合并;1)若允许合并则把当前话单与等待话单合并,合并的结果保留在等待队列中,其包号与原先等待话单的包号相同,合并结果中的数据已经包含前话单和等待话单;两张话单合并完成后,再判断合并结果是否需要继续等待所属分组数据协议的其他未到达的部分话单;
01.若不需要继续等待,则将合并结果从等待队列中取出并送合并完成的话单存放队列,当前话单的合并过程结束;02.若需要继续等待,则让合并结果在等待队列中再逗留一段时间,直到所属分组数据协议的所有部分话单到达,当前话单的合并过程结束;2)若不允许合并,则把等待话单和当前话单分别送合并完成的话单存放队列,当前话单的合并过程结束;ii.若没有找到等待话单,则直接将当前话单送合并完成的话单存放队列,当前话单的合并过程结束;所述的计费网关收到主机送来的话单后数量达到一个预定的值,或者在达到预定数量之前超过了时间限制,送合并流程进行合并;其他未在话单等待队列中等待超时的话单为黑话单,计费网关强行中断该话单的合并,并将其送到合并完成的话单存放队列;所述的话单等待队列中的话单被定期检测,当等待时间超过规定时长或者包号与合并模块收到的当前包号差值大于预定值m时,视为等待超时,当合并模块收到的话单的包号,假设为X时,满足下面的条件时,生成黑话单X%m=0,该式中%符号代表整除后的余数,这些满足条件的点为超时的检查点;所述的黑话单生成时,使用如下的缓存机制在检查点上生成的黑话单送到一个临时队列中,临时队列中的话单将在生成该临时队列的检查点后面紧邻的一个(i.m,(i+1).m)区间中被均匀地送入合并完成的话单存放队列中;如果在检查点上生成的临时队列中话单数为L,则(i.m,(i+1).m)区间中每一个话单包应该从临时队列中带走的话单数为[L/(m-1)]+1,式中“[]”表示取整数部分;所述的检查点上分组数据协议的话单被送临时队列时,如果合并模块正在合并一张话单,话单的包号为Y,Y∈[(k.m,(k+1).m),并且在等待队列中没有相应的等待话单,先判断当前话单是否所属分组数据协议的首张部分话单;若当前话单是所属分组数据协议的首张部分话单,则把当前话单作为新的节点送等待队列,并且把话单的包号设置为Y,即话单的当前包号;若当前话单不是所属分组数据协议的首张部分话单,则把当前话单作为新的节点送等待队列中,并且把话单的包号调整为k.m,即与Y紧邻的前面一个检查点;所述的话单新到达,在等待队列中没有对应的等待话单,且话单是分组数据协议的首张部分话单,则把话单增加到等待队列队列的头部,并且把话单的包号设置为话单当前的包号;若该话单在等待队列没有对应的等待话单,且话单不是分组数据协议的首张部分话单,则把话单增加到等待队列队列的尾部,并调整话单的包号为当前临近的前一个超时检查点包号;所述的检查点若在k.m上生成临时队列时,从等待队列的尾部向头部方向检查话单的包号,若话单的包号小于或者等于前一个超时检查点的包号(k-1).m,则把话单移动到临时队列的头部;若发现一张话单的包号大于前一个超时检查点的包号(k-1).m,则生成临时队列的过程结束;从临时队列中取出话单时从尾部开始,向头部方向顺序取话单,每次取一定数量的话单,假设初始生成的临时队列中话单数为L,则每次从临时队列中取话单数量为[L/(m-1)]+1,式中“[]”表示取整数部分,m为话单在内存中等待的最大包号差预定值;所述的话单在合并过程中由于异常或掉电,内存中的等待队列列表将全部丢失,通过保存中间状态信息,在启动时根据状态信息从原始话单数据中恢复内存中的等待队列列表;所述的话单在合并时,在等待队列的基础上建立一个索引表,搜索的时候在索引表中进行;所述的索引表采用杂凑表,每当队列中进入新的话单时,就在索引表中增加新的索引节点,而当从中删除一个节点时,就删除索引表中的相应节点。
本发明的有益效果为本发明中,通过对话单等待的时间或话单等待的数量进行控制,使得合并过程更易于控制且更平滑,减少了网络中主机在合并过程中的数据拥塞的可能性,本发明引入了黑话单概念并对合并过程有规律地实时检测,对于长时间占用网络资源的话单强行中断合并,有效地提高了本发明的工作可靠性,并且使用缓存机制,使合并过程更加顺畅,对于话单在合并过程中由于异常或掉电,通过保存中间状态信息,可根据状态信息从原始话单数据中有效地恢复有关的等待队列Qw列表等,从原理上保征了数据的完全恢复,因此,本发明提供了一种性能可靠的话单合并处理方法,可完成GPRS、WCDMA网络中主机生成的部分话单合并,并解决了话单合并过程中的丢话单和重话单问题。


图1为本发明合并流程示意图;图2为检查点示意图;图3为话单合并示意图;图4为故障点恢复示意图;图5为等待队列Qw恢复示意图;图6为等待队列Qw恢复示意图;
图7为临时队列Qt恢复示意图。
具体实施例方式
下面根据附图和实施例对本发明作进一步详细说明有关概念解释CG计费网关,Charging Gateway;分组数据协议PDP分组数据协议,Packet Data Protocol;每一个用户在主机中可能对应多个分组数据协议PDP,主机为每一个分组数据协议PDP都生成话单,本算法限制每一个分组数据协议PDP在CG系统中最多有一张话单在等待。
GGSN网关GPRS支持节点,Gateway GPRS Support Node;SGSN服务GPRS支持节点,Serv ing GPRS Support Node;CDR详细话单,Call Detail Record;G-CDR网关GPRS支持节点产生的详细话单,Gateway GPRS SupportNode Call Detail Record;M-CDR移动管理详细话单,Mobility Management-Call DetailRecord;S-CDR服务GPRS支持节点产生的详细话单,Serving GPRS SupportNode Call Detail Record;S-SMO-CDR短信息移动始发话单,SGSN delivered Short MessageMobile Originated Call Detail Record;S-SMT-CDR短信息移动终结话单,SGSN delivered Short messageMobile Terminated Call Detail Record;BP话单包,Bill Package;交换机或者称为主机生成的话单是实时送往CG的(通过GTP’协议),每次送一些话单,得到CG的确认之后再送后续话单。CG收到主机送来的话单后,当收到的话单数量达到一个预定的值,或者在达到预定数量之前超过了时间限制,就把收到的话单包装在一个数据包中,然后才送合并流程进行合并,这个数据包称为话单包。每一个话单包都由CG赋予一个唯一递增的序列号,称为话单包的包号(不考虑包号回绕)。
一个话单包可以包含多张话单,也可以不包含话单,称为空话单包。
同一个话单包中的话单具有相同的包号。
Qw等待队列,Queue waiting一个分组数据协议PDP的多张部分话单合并的原理是让先到达的话单在内存中等待,后续到达的部分话单与等待话单合并,当分组数据协议PDP的所有部分话单都到达CG并完成合并之后,使合并的结果进入后续处理流程。
每一个分组数据协议PDP在CG系统的内存中最多有一张话单在等待,所有这些分组数据协议PDP的等待话单构成一个队列,称为等待队列Qw。
合并完成的话单存放队列Qok合并完成的话单存放队列,QueueOK;CG把合并完成的话单或者不需要合并的话单(比如单张话单,不需要合并)临时存放在一个缓冲区中,这些话单形成的队列称为合并完成的话单存放队列Qok。
根据图1、图2、图3、图4、图5、图6和图7所示,主机生成话单,包括部分话单和非部分话单,其中部分话单需要与其它话单合并,非部分话单不需要与其它话单合并,称A类话单,主机仅为一个分组数据协议PDP生成一张话单;计费网关CG包装话单,将主机送来的当前话单包装在数据包中,送合并流程进行合并;然后,计费网关CG合并话单若当前话单为A类话单,则直接送到合并完成的话单存放队列Qok;若当前话单为部分话单与有关等待话单进行合并至不需要继续等待合并时,把合并结果送到合并完成的话单存放队列Qok。
其中,主机生成的部分话单有首张部分话单、中间部分话单、和末张部分话单等。
首张部分话单主机为一个分组数据协议PDP生成了多张话单,其中最先生成的一张称为首张部分话单。
末张部分话单主机为一个分组数据协议PDP生成了多张话单,其中最后生成的一张称为末张部分话单。
中间部分话单主机为一个分组数据协议PDP生成了多张话单,除了最先和最后生成的话单,其他话单都称为中间部分话单。
部分话单可分为B类话单和C类话单,其中B类话单在合并后需要继续与其他话单合并,C类话单合并后不需要继续等待。
这样,话单按类型分为三种A类话单不需要合并的话单;比如WCDMA和GPRS主机生成的S-CDR、G-CDR、M-CDR的单张话单和S-SMO-CDR、S-SMT-CDR(主机不会为短信息话单生成部分话单)。
B类话单需要等待后续部分话单的合并,同时可能需要与已有的部分话单进行合并,包括首张部分话单和中间部分话单;比如WCDMA和GPRS主机生成的S-CDR、G-CDR、M-CDR的中间部分话单和首张部分话单。
C类话单需要与以前的部分话单合并,但不需要等待继续合并的话单;比如WCDMA和GPRS主机生成的S-CDR、G-CDR、M-CDR的末张部分话单。
计费网关CG收到主机送来的话单后数量达到一个预定的值,或者在达到预定数量之前超过了时间限制,就把收到的话单包装在一个数据包中,送合并流程进行合并;下面的叙述按照这样的规则进行排版具有相同缩进的段落,叙述的是并列的操作;在本段缩进的基础上,紧接在后面缩进的段落,是本段叙述的后续操作,计费网关CG合并话单时,如图1所示A)对于A类话单,直接送合并完成的话单存放队列Qok;B)对于B类话单,首先根据当前话单的关键域在等待队列Qw中查找正在等待当前话单的话单,即查找属于同一个分组数据协议PDP的话单;i.若找到等待话单,先判断两张话单是否允许合并;1)若允许合并则把当前话单与等待话单合并,合并的结果保留在等待队列Qw中,其包号与原先等待话单的包号相同,合并结果中的数据已经包含当前话单和等待话单,两张话单合并完成后,再判断话单所属的分组数据协议PDP是否已经结束;i)若话单所属分组数据协议PDP已经结束,再判断合并结果是否需要继续等待所属分组数据协议PDP的其他未到达的部分话单;a)若不需要继续等待,则把合并结果送合并完成的话单存放队列Qok,当前话单的合并过程结束;b)若需要继续等待,则让合并结果在等待队列Qw中再逗留一段时间,直到话单所属分组数据协议PDP的所有部分话单到达,当前话单的合并过程结束;ii)若话单所属分组数据协议PDP未结束,则合并结果继续等待话单所属分组数据协议PDP的后续部分话单,当前话单的合并过程结束;2)若不允许合并则把等待话单送合并完成的话单存放队列Qok,用当前话单替换等待话单在等待队列Qw中的位置,继续等待后续话单,话单的包号为原先等待话单的包号,当前话单的合并过程结束;ii.若无正在等待的话单,则直接把当前话单送等待队列Qw,并根据当前话单是否所属分组数据协议PDP的首张部分话单,按照如下方式处理当前话单的包号;1)若当前话单是所属分组数据协议PDP的首张部分话单,则当前话单的包号不变,当前话单的合并过程结束;2)若当前话单不是所属分组数据协议PDP的首张部分话单,则按照规则调整话单包号,当前话单的合并过程结束;C)对C类话单,首先在等待队列Qw中查找正在等待当前话单的话单;
i.若找到等待话单,则先判断两张话单是否允许合并;1)若允许合并则把当前话单与等待话单合并,合并的结果保留在等待队列Qw中,其包号与原先等待话单的包号相同,合并结果中的数据已经包含前话单和等待话单;两张话单合并完成后,再判断合并结果是否需要继续等待所属分组数据协议PDP的其他未到达的部分话单。
01.不需要继续等待,则将合并结果从等待队列Qw中取出并送合并完成的话单存放队列Qok,当前话单的合并过程结束;02.若需要继续等待,则让合并结果在等待队列Qw中再逗留一段时间,直到所属分组数据协议PDP的所有部分话单到达,当前话单的合并过程结束;2)若不允许合并,则把等待话单和当前话单分别送合并完成的话单存放队列Qok,当前话单的合并过程结束。
ii.若没有找到等待话单,则直接将当前话单送合并完成的话单存放队列Qok,当前话单的合并过程结束。
以上为话单合并的基本流程,基本流程中允许附加额外的合并规则,包括移动总局的《GPRS计费网关技术规范》V1.2.0版本,以及设备供应商根据自己的特点需要附加的合并规则。
计费网关CG预处理生成话单包,并赋予唯一递增的序列号,然后发送给合并流程进行合并。所以合并流程收到的是序列号递增的话单包。
合并流程每次合并一个话单包中的话单,合并完一个话单包之后再合并下一个话单包(包号增加1),不能够交错合并包号不连续的话单包。
在上述处理过程中,其他未在话单等待队列中等待超时的话单为黑话单,计费网关强行中断该话单的合并,并将其送到合并完成的话单存放队列。
即当判断合并结果是否需要继续等待所属分组数据协议PDP的其他未到达的部分话单时,在需要继续等待时,如果话单在等待队列Qw中,等待时长超过一规定时长或合并模块接收到的话单包号超过等待队列Qw中话单包号一预定值时,为了减少等待队列Qw队列中话单的数据量,限制话单在内存中等待的时长,把话单强行中断合并,并把话单送合并完成的话单存放队列Qok中,这些被强行送走的话单为黑话单。
等待队列Qw中话单的包号与合并模块收到的当前包号差值大于预定值m时,作为话单等待超时,合并模块定期检测等待队列Qw中等待超时的话单,当合并模块收到的话单的包号,假设为X时,满足下面的条件时,生成黑话单X%m=0,该式中%符号代表整除后的余数,这些满足条件的点为超时的检查点,如图2所示,小圆点代表满足条件的点,在这些点上合并模块检查等待队列Qw中是否有等待超时的话单,所有超时话单都是必须中断合并的黑话单;例如,到达合并模块的话单包的包号从1开始,当包号达到m时,合并模块在合并该话单包之前,检查等待队列Qw中是否有话单等待超时,此时没有话单等待超时,不会生成黑话单;当包号到达2m时,合并模块检查等待队列Qw中是否有话单等待超时,此时所有从m以前开始的分组数据协议PDP在等待队列Qw中等待的话单都被认为等待超时,是指在m之前开始,并且当到达2m时分组数据协议PDP仍然没有结束,从而等待队列Qw中还有分组数据协议PDP的话单。对于到达2m之前已经结束的分组数据协议PDP,到达2m时等待队列Qw中没有这些分组数据协议PDP的话单,这些超时的话单被强行中断合并,作为黑话单送合并完成的话单存放队列Qok。开始于区间(m,2m)之间的分组数据协议PDP的话单将在3m话单包到达时等待超时,若包号到达3m时分组数据协议PDP还没有结束的话;当包号到达3m时,合并模块检查等待队列Qw中是否有话单等待超时,此时所有从2m以前开始的分组数据协议PDP在等待队列Qw中等待的话单都被认为等待超时,这些超时的话单被强行中断合并,作为黑话单送合并完成的话单存放队列Qok;如图3所示,对于3m以后的话单包是相同的过程;当包号到达i.m时,合并模块把所有从(i-1).m之前(包括(i-1).m)开始的分组数据协议PDP的话单作为黑话单送合并完成的话单存放队列Qok;在每一个检查点上生成的黑话单,都是跨越了至少一个[i.m,(i+1).m]区间的分组数据协议PDP的话单;若不考虑附加的规则,分组数据协议PDP散落在区间[Y,(i+2).m]的话单都与该分组数据协议PDP在话单包Y中的首张部分话单合并,并且当包号到达(i+2).m时,合并的结果被作为黑话单送合并完成的话单存放队列Qok中,这里所说的附加规则可能导致分组数据协议PDP的话单被提前中断合并,比如话单不按顺序到达,或者最大合并话单数的限制等,根据基本流程,尽管话单可能被提前中断合并,但是在生成黑话单之前话单的包号不会改变;分组数据协议PDP散落在区间[(i+2).m,(i+3).m]的话单都与该分组数据协议PDP在话单包(i+2).m中的首张部分话单合并,并且当包号到达(i+3).m时,合并的结果被作为黑话单送合并完成的话单存放队列Qok中;如此类推,对话单进行合并。
若在“检查点”上生成黑话单时,超长的分组数据协议PDP很多的话,就会导致合并完成的话单存放队列Qok中产生过多的话单,称这种情况为“数据爆发”。为了消除这种爆发的情况,使话单尽可能平缓的送合并完成的话单存放队列Qok,使用了下面的缓存机制在检查点上生成的黑话单不直接送合并完成的话单存放队列Qok,而是送到一个临时队列Qt中,临时队列Qt中的话单将在生成该临时队列Qt的检查点后面紧邻的一个(i.m,(i+1).m)区间中被均匀地送入合并完成的话单存放队列Qok中;如果在检查点上生成的临时队列Qt中话单数为L,则(i.m,(i+1).m)区间中每一个话单包应该从临时队列Qt中带走的话单数为[L/(m-1)]+1,式中“[]”表示取整数部分;例如图2中,在2.m点生成的临时队列Qt中的话单将在区间(2.m,3.m)中被均匀送走。
考虑分组数据协议PDP的话单和网络模块生成的话单包相比稀疏的多,就是说在分组数据协议PDP跨越的包号区间中,并非每一个话单包都会有分组数据协议PDP的话单。
如图3所示,一个分组数据协议PDP开始于Y,并终止于(i+4).m之后,设在话单包(i+2).m中没有该分组数据协议PDP的话单,考察一下生成黑话单的过程A)当包号到达(i+2).m时,因为该分组数据协议PDP的话单的包号在(i+1).m之前(包号为Y),所以认为话单等待超时,从而被作为黑话单送临时队列Qt中。
B)因为在话单包(i+2).m中没有该分组数据协议PDP的话单,当包号(i+3).m时,分组数据协议PDP的话单的包号并没有在(i+2).m之前,所以不会认为话单等待超时。然而这是一个跨越了区间[(i+2).m,(i+3).m]的超长分组数据协议PDP的话单,应该被作为黑话单送临时队列Qt。
为了保证在(i+3).m检查点上分组数据协议PDP的话单被送临时队列Qt,设置如下规则检查点上分组数据协议PDP的话单被送临时队列Qt时,如果合并模块正在合并一张话单,话单的包号为Y,Y∈[(k.m,(k+1).m),并且在等待队列Qw中没有相应的等待话单,先判断当前话单是否所属分组数据协议PDP的首张部分话单;若当前话单是所属分组数据协议PDP的首张部分话单,则把当前话单作为新的节点送等待队列Qw,并且把话单的包号设置为Y,即话单的当前包号;若当前话单不是所属分组数据协议PDP的首张部分话单,则把当前话单作为新的节点送Qw中,并且把话单的包号调整为k.m,即与Y紧邻的前面一个检查点;根据上面的规则,如图3所示,当分组数据协议PDP散落在区间[(i+2).m,(i+3).m]的首张部分话单出现时,其包号被调整为(i+2).m,从而保证在(i+3).m检查点上分组数据协议PDP的话单被送临时队列Qt。
检查点若在k.m上生成临时队列Qt时,从等待队列Qw的尾部向头部方向检查话单的包号,若话单的包号小于或者等于前一个超时检查点的包号(k-1).m,则把话单移动到临时队列Qt的头部;若发现一张话单的包号大于前一个超时检查点的包号(k-1).m,则生成临时队列Qt的过程结束;从临时队列Qt中取出话单时从尾部开始,向头部方向顺序取话单,每次取一定数量的话单,假设初始生成的临时队列Qt中话单数为L,则每次从临时队列Qt中取话单数量为[L/(m-1)]+1,式中“[]”表示取整数部分,m为话单在内存中等待的最大包号差预定值。
若CG在合并过程中异常或掉电,内存中的等待队列Qw列表将全部丢失。因为该列表可能非常庞大,在磁盘上保存该列表效率很低甚至是不可能的。可行的办法是保存某些状态,在启动时根据状态信息从原始话单数据中恢复。
设合并模块在运行的某个时刻失败,失败之前由存盘模块最后保存的话单话单包为n,如图4所示,合并模块在合并完成第n包话单之后,合并得出的结果放在合并完成的话单存放队列Qok中以及话单包号n都已经被存盘模块成功保存,当系统恢复时需要恢复n处的等待队列Qw队列和临时队列Qt队列;下面来考察来恢复n处的等待队列Qw和临时队列Qt队列的过程从n-(n%m)-2.m处开始往后,重新合并所有话单包,并且在重新合并到达n之前(包括n),把所有的合并结果(放在合并完成的话单存放队列Qok中的话单)丢弃,当超过了n之后才保存合并结果。
下面就各种情况讨论等待队列Qw和临时队列Qt的恢复结果。
1.Qw的恢复要求失败之前的等待队列Qw和恢复生成的等待队列Qw中包含的话单必须相同,两个Qw中的话单具有一一对应关系。
下面单独考察一个分组数据协议PDP,若对于等待队列Qw中的每一个分组数据协议PDP都能保证失败之前的话单和恢复生成的话单是相同的,就保证了两种情况下的Qw是相同的,恢复过程不能在Qw中引入新的分组数据协议PDP或者丢失了应该出现在等待队列Qw中的分组数据协议PDP,新到达的话单在等待队列Qw中没有对应的等待话单,且话单是分组数据协议PDP的首张部分话单,则把话单增加到等待队列Qw队列的头部,并且把话单的包号设置为话单当前的包号;若该话单在等待队列Qw没有对应的等待话单,且话单不是分组数据协议PDP的首张部分话单,则把话单增加到等待队列Qw队列的尾部,并调整话单的包号为当前临近的前一个超时检查点包号。
首先考察在一个区间[k.m,(k+1).m]中可能出现的分组数据协议PDP的类型,如图5所示,终止于区间内的分组数据协议PDP(两种情况)在到达(k+1).m之前已经终止,话单被送合并完成的话单存放队列Qok。
这样,跨越了区间的分组数据协议PDP,在到达(k+1).m时被强行中断合并,话单被送临时队列Qt中。散落在(k+1).m之后的话单被作为新的节点加入到Qw中,话单包号被调整;开始于区间内的分组数据协议PDP,跨越(k+1).m时分组数据协议PDP的话单仍然在Qw中等待后续话单,因为还没有超时。
根据图5和图6所示,故障点在n恢复点在i.m在到达n之前就已经结束的分组数据协议PDP,因为其自然结束所以不用考虑,图中未标出,因为在正常合并过程中,这些分组数据协议PDP的话单已经被保存,恢复过程中被丢弃;开始于区间(i.m,n)并终止于n之后的分组数据协议PDP,正常合并过程和恢复过程是相同的,所以这部分分组数据协议PDP在等待队列Qw中的话单一定相同,即图6中恢复点之后的话单。
开始于i.m之前并终止于n之后的分组数据协议PDP,因为至少在到达(i+1).m时被强行中断合并,分组数据协议PDP散落在区间[(i+1).m,n]的话单的合并过程在正常情况下和恢复时的过程也是相同的,所以这部分分组数据协议PDP在等待队列Qw中的话单一定相同。
因为分组数据协议PDP的话单在话单包中散落的位置是固定的,所以不管是正常合并过程,还是恢复过程,当到达(i+2).m点时所有分组数据协议PDP的话单在等待队列Qw中的相对位置是相同的;同样当到达n时所有分组数据协议PDP的话单在等待队列Qw中的相对位置也是相同的;在等待队列Qw中存在这样一个点该点之前的所有话单都是包号经过调整的话单,该点之后的话单包号都有序(从小到大)。
综上所述,经过恢复过程等待队列Qw被正确恢复。
2.临时队列Qt的恢复如图5所示,在i.m、(i+1).m、(i+2).m、(i+3).m点都会生成一个临时队列Qt。i.m点生成的临时队列Qt中的话单在区间(i.m,(i+1).m)中被均匀送合并完成的话单存放队列Qok;(i+1).m点生成的临时队列Qt中的话单在区间((i+1).m,(i+2).m)中被均匀送合并完成的话单存放队列Qok;(i+2).m点生成的临时队列Qt中的话单在将区间((i+2).m,(i+3).m)中被均匀送合并完成的话单存放队列Qok,当到达n时临时队列Qt中的话单仅有部分被送合并完成的话单存放队列Qok,存留的部分是恢复时需要恢复的。
如图7所示,在(i+2).m点生成了临时队列Qt,到达n时被送合并完成的话单存放队列Qok的是网格部分,条形部分是需要恢复的。
考虑对临时队列Qt按照这样的规则操作在超时检查点k.m上生成临时队列Qt时,从等待队列Qw的尾部向头部方向检查话单的包号。若话单的包号小于(或者等于)前一个超时检查点的包号(k-1).m,则把话单移动到临时队列Qt的头部。若发现一张话单的包号大于前一个超时检查点的包号(k-1).m,则生成临时队列Qt的过程结束;从临时队列Qt中取出话单时从尾部开始,向头部方向顺序取话单,每次取一定数量的话单(设初始生成的临时队列Qt中话单数为L,则每次从临时队列Qt中取话单数量为[L/(m-1)]+1,“[]”表示取整数部分,m为话单在内存中等待的最大包号差)。
因为不管是正常合并过程,还是恢复过程,当到达(i+2).m时等待队列Qw中所有分组数据协议PDP的话单的相对位置是相同的,所以按照上面的规则,在(i+2).m点从Qw中生成的临时队列Qt中话单的相对位置也是相同的(在(i+1).m点也生成了一个临时队列Qt,但是到达(i+2).m之前其中的话单已经全部被送合并完成的话单存放队列Qok。当到达n时,临时队列Qt中话单的相对位置和话单的数量也一定相同,并且每一张话单的数据也是相同的。
从以上讨论可以看出,在(i+2).m,包括该点直到n往后,任意一个点的等待队列Qw和临时队列Qt在正常合并过程和恢复过程中是完全相同的。
综上所述,恢复过程中临时队列Qt被正确恢复。
CG在进行话单合并时,内存中会有大量话单在等待,从大量的话单中搜索出符合条件话单的速度,极大的影响CG处理话单的速度,为了提高搜索的速度,在Qw的基础上建立一个索引表,搜索的时候就在索引表中进行,索引表采用杂凑表,或者称为HASH表、哈希表实现,每当Qw队列中进入新的话单时,就在索引表中增加新的索引节点,而当从Qw中删除一个节点时,就删除索引表中的相应节点。
本发明对实时联机话单合并和脱机合并都有效,其原理和控制过程与上述一致,此处不再赘述。
权利要求
1.一种话单合并处理方法,其特征在于它采用如下步骤主机生成话单,包括部分话单和非部分话单,其中部分话单需要与其它话单合并,非部分话单不需要与其它话单合并,称A类话单;计费网关包装话单,将主机送来的当前话单包装在数据包中,送合并流程进行合并;然后,计费网关合并话单若当前话单为A类话单,则直接送到合并完成的话单存放队列;若当前话单为部分话单与有关等待话单进行合并至不需要继续等待合并时,把合并结果送到合并完成的话单存放队列。
2.根据权利要求1所述的话单合并处理方法,其特征在于所述部分话单可分为B类话单和C类话单,其中B类话单在合并后需要继续与其他话单合并,C类话单合并后不需要继续等待,计费网关合并话单时,A)若当前话单为B类话单,首先在等待队列查找属于同一个分组数据协议的等待话单;i.若找到等待话单,先判断两张话单是否允许合并;1)若允许合并,先把当前话单与等待话单合并,合并结果保留在等待队列中,其包号与原先等待话单的包号相同,然后判断话单所属的分组数据协议是否已经结束;i)若已经结束,再判断合并结果是否需要继续等待所属分组数据协议的其他未到达的部分话单;a)若不需要继续等待,则把合并结果送合并完成的话单存放队列,当前话单的合并过程结束;b)若需要继续等待,则让合并结果保留在等待队列中,直到所属分组数据协议的所有部分话单到达后当前话单的合并过程结束;ii)若话单所属分组数据协议未结束,则合并结果继续等待话单所属分组数据协议的后续部分话单,当前话单的合并过程结束;2)若不允许合并则把等待话单送合并完成的话单存放队列,用当前话单替换等待话单在等待队列中的位置,继续等待后续话单,话单的包号为原先等待话单的包号,当前话单的合并过程结束;ii.若无正在等待的话单,则直接把当前话单送等待队列,并根据当前话单是否所属分组数据协议的首张部分话单,按照如下方式处理当前话单的包号1)若当前话单是所属分组数据协议的首张部分话单,则当前话单的包号不变,当前话单的合并过程结束;2)若当前话单不是所属分组数据协议的首张部分话单,则调整话单包号,当前话单的合并过程结束;B) 若当前话单为C类话单,首先在等待队列中查找正在等待当前话单的话单;i.若找到等待话单,则先判断两张话单是否允许合并;1)若允许合并则把当前话单与等待话单合并,合并的结果保留在等待队列中,其包号与原先等待话单的包号相同,合并结果中的数据已经包含前话单和等待话单;两张话单合并完成后,再判断合并结果是否需要继续等待所属分组数据协议的其他未到达的部分话单。01.若不需要继续等待,则将合并结果从等待队列中取出并送合并完成的话单存放队列,当前话单的合并过程结束;02.若需要继续等待,则让合并结果在等待队列中再逗留一段时间,直到所属分组数据协议的所有部分话单到达,当前话单的合并过程结束;2)若不允许合并,则把等待话单和当前话单分别送合并完成的话单存放队列,当前话单的合并过程结束。ii.若没有找到等待话单,则直接将当前话单送合并完成的话单存放队列,当前话单的合并过程结束。
3.根据权利要求1所述的话单合并处理方法,其特征在于所述的计费网关收到主机送来的话单后数量达到一个预定的值,或者在达到预定数量之前超过了时间限制,送合并流程进行合并。
4.根据权利要求2所述的话单合并处理方法,其特征在于其他未在话单等待队列中等待超时的话单为黑话单,计费网关强行中断该话单的合并,并将其送到合并完成的话单存放队列。
5.根据权利要求4所述的话单合并处理方法,其特征在于所述的话单等待队列中的话单被定期检测,当等待时间超过规定时长或者包号与合并模块收到的当前包号差值大于预定值m时,视为等待超时,当合并模块收到的话单的包号,假设为X时,满足下面的条件时,生成黑话单X%m=0,该式中%符号代表整除后的余数,这些满足条件的点为超时的检查点。
6.根据权利要求5所述的话单合并处理方法,其特征在于所述的黑话单生成时,使用如下的缓存机制在检查点上生成的黑话单送到一个临时队列中,临时队列中的话单将在生成该临时队列的检查点后面紧邻的一个(i.m,(i+1).m)区间中被均匀地送入合并完成的话单存放队列中;如果在检查点上生成的临时队列中话单数为L,则(i.m,(i+1).m)区间中每一个话单包应该从临时队列中带走的话单数为[L/(m-1)]+1,式中“[]”表示取整数部分。
7.根据权利要求6所述的话单合并处理方法,其特征在于所述的检查点上分组数据协议的话单被送临时队列时,如果合并模块正在合并一张话单,话单的包号为Y,Y∈[(k.m,(k+1).m),并且在等待队列中没有相应的等待话单,先判断当前话单是否所属分组数据协议的首张部分话单;若当前话单是所属分组数据协议的首张部分话单,则把当前话单作为新的节点送等待队列,并且把话单的包号设置为Y,即话单的当前包号;若当前话单不是所属分组数据协议的首张部分话单,则把当前话单作为新的节点送等待队列中,并且把话单的包号调整为k.m,即与Y紧邻的前面一个检查点。
8.根据权利要求5所述的话单合并处理方法,其特征在于所述的话单新到达,在等待队列中没有对应的等待话单,且话单是分组数据协议的首张部分话单,则把话单增加到等待队列的头部,并且把话单的包号设置为话单当前的包号;若该话单在等待队列没有对应的等待话单,且话单不是分组数据协议(PDP)的首张部分话单,则把话单增加到等待队列队列的尾部,并调整话单的包号为当前临近的前一个超时检查点包号。
9.根据权利要求6或7所述的话单合并处理方法,其特征在于所述的检查点若在k.m上生成临时队列时,从等待队列的尾部向头部方向检查话单的包号,若话单的包号小于或者等于前一个超时检查点的包号(k-1).m,则把话单移动到临时队列的头部;若发现一张话单的包号大于前一个超时检查点的包号(k-1).m,则生成临时队列的过程结束;从临时队列中取出话单时从尾部开始,向头部方向顺序取话单,每次取一定数量的话单,假设初始生成的临时队列中话单数为L,则每次从临时队列中取话单数量为[L/(m-1)]+1,式中“[]”表示取整数部分,m为话单在内存中等待的最大包号差预定值。
10.根据权利要求5或6或7所述的话单合并处理方法,其特征在于所述的话单在合并过程中由于异常或掉电,内存中的等待队列列表将全部丢失,通过保存中间状态信息,在启动时根据状态信息从原始话单数据中恢复内存中的等待队列列表。
11.根据权利要求5或6或7所述的话单合并处理方法,其特征在于所述的话单在合并时,在等待队列的基础上建立一个索引表,搜索的时候在索引表中进行。
12.根据权利要求11所述的话单合并处理方法,其特征在于所述的索引表采用杂凑表,每当等待队列队列中进入新的话单时,就在索引表中增加新的索引节点,而当从等待队列中删除一个节点时,就删除索引表中的相应节点。
全文摘要
一种涉及电通信技术的话单合并处理方法,通过对话单等待的时间或话单等待的数量进行控制,使得合并过程更易于控制且更平滑,减少了网络中主机在合并过程中的数据拥塞的可能性,本发明引入了黑话单概念并对合并过程有规律地实时检测,对于长时间占用网络资源的话单强行中断合并,并且使用缓存机制,使合并过程更加顺畅,对于话单在合并过程中由于异常或掉电,通过保存中间状态信息,可根据状态信息从原始话单数据中有效地恢复有关的等待队列Qw列表等,从原理上保征了数据的完全恢复,本发明提供了一种性能可靠的话单合并处理方法,可完成GPRS、WCDMA网络中主机生成的部分话单合并,并解决了话单合并过程中的丢话单和重话单问题。
文档编号H04L12/54GK1479485SQ0212996
公开日2004年3月3日 申请日期2002年8月27日 优先权日2002年8月27日
发明者李发君, 宋军, 王奇, 张天虎, 杨杰, 关国峰, 廖炳才, 邱意平, 颜文远, 王峰, 张玉新, 谢代斌, 周拥辉 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1