话单输出方法、装置及存储介质与流程

文档序号:14953532发布日期:2018-07-17 23:05阅读:375来源:国知局

本发明涉及通信领域,具体而言,涉及一种话单输出方法、装置及存储介质。



背景技术:

在第三代合作伙伴计划(the3rdgenerationpartnershipproject,简称为3gpp)描述的电信网络中,计费系统是其重要的功能组件之一,是运营商实现营收的重要保障。其主要功能如下所述:

图1示意了3gpp网络中计费功能实体的组成和他们之间的关系:计费触发功能(chargingtriggerfunction,简称为ctf)内嵌在3gpp核心网网元中,它主要实现的功能是,根据监测到的网络资源的使用情况,进行计费信息的收集,并通过rf接口(offlinechargingreferencepoint)发送到计费数据功能(chargingdatafunction,简称为cdf);cdf的主要功能是,接收ctf发送的计费请求消息(accountingrequest,简称为acr),构造成计费计费数据记录(chargingdatarecord,简称为cdr),并通过ga接口发送到计费网关功能(charginggatewayfunction,简称为cgf);cgf的主要功能是,对从cdf接收到的cdr进行存储和管理,并通过bx接口将cdr文件发送到计费域(billingdomain,简称为bd)。

其中ga接口用于cdf、cgf之间传送话单,此接口在计费系统中使用很普遍,比如分组域/演进的分组核心网(packetswitch/evolvedpacketcoreinternet,简称为ps/epc)核心网中,ps/epc网元(ctf和cdf合一)和cgf之间通过该标准接口传输计费数据。ga接口由gtp’协议栈实现,该协议栈原理见3gpp32.295标准文档。在3gpp32.295标准中,gtp’协议定义cdr传输和重定向功能,以及故障检测恢复和防止重单功能。

图2是3gpp32.295标准中cdr正常传输的过程示意。包括如下几个步骤:

1.cdf向cgf发送gtp请求消息,消息包含若干cdr(即,向cgf发送数据记录传输请求datarecordtransferrequest:发送数据记录数据包senddatarecordpacket);

2.cgf接收到请求消息后,将cdr保存(即,cdrsarestoredinasecureway);

3.cgf然后向cdf回复响应消息,消息中原因cause字段填写请求接收“requestaccepted”,标示请求消息已收到(即,返回数据记录传输响应datarecordtransfer:请求已接收requestaccepted);

4.cdf收到响应消息后删除缓存中的cdr(即,succesfullysentcdrsaredeletedfromthecdfbuffers)。

因为存在网络中断、cgf故障等异常情况,所以gtp协议提供了重定向功能,即cdf向cgf1发送cdr失败时,可以根据配置向cgf2重新发送cdr,而且重定向的cdf可以多个。此功能大大增加了系统的可靠性,不过也带来了话单可能重复的问题,3gpp32.295标准对此也提出了防重机制。

图3是标准中gtp协议防重机制的示意图。步骤如下:

1、cdf向高优先级的cgf1发送数据包(假设包流水号为n1)(即,senddatarecordpacket)。

2、一段时间内,cgf1没有向cdf回复响应(即,noresponsetocdf)。原因可能是网络中断,cgf1异常等。

2b、如果cgf1收到并处理了话单,此时cgf1记录了流水号n1。

3、因为cdf没有收到响应消息,所以cdf向次优先级的cgf2发送“可疑重复包”(即,senddatarecordpacket:pot.dupl)。

4、cgf2收到“可疑重复包”后,回复响应消息(即,requestaccepted),消息中cause字段填写“requestaccepted”标示请求已收到。

5、cgf1恢复工作后,向cdf发送节点存活请求“nodealiverequest”消息。

6、cdf向cgf1回复节点存活响应“nodealiveresponse”消息。

7、cdf知道cgf1恢复工作后,向cgf1发送可疑重复包(流水号为n1)(即,senddatarecordpacket:pot.dupl.empty),数据内容为空,标示此包是可疑重复包的确认请求。

8、cgf1收到可疑重复包的确认请求,判断流水号n1是否已接收过:

a)如果流水号未接收,cgf1向cdf回复响应消息,消息中cause字段填写“requestaccepted”标示请求已收到。

b)如果流水号已接收,cgf1向cdf回复响应消息,消息中cause字段填写"requestrelatedtopossiblyduplicatedpacketalreadyfulfilled"标示此流水号的可疑重复包已接收过。

9、cdf收到cgf1的响应消息,

a)如果cause是”requestaccepted”,则向cgf2发送释放可疑重复包的请求(即,releasedatarecordpacket),cgf2输出话单。

b)如果cause是"requestrelatedtopossiblyduplicatedpacketalreadyfulfilled",则向cgf2发送取消可疑重复包的请求,cgf2删除缓存中的可疑重复包(即,canceldatarecordpacket),不输出话单。

10、cgf2向cdf回复“requestaccepted”响应消息。

11、a)如果cgf2输出了可疑重复包,则cgf2向下游系统输出话单。

3gpp旨在通过上述机制解决重定向场景下重单问题,这种机制能够解决大部分重定向的场景,不过在某些场景还存在问题。比如上述流程中,可能在步骤1发送的正常数据包暂时没被处理,而在步骤7后才处理cdr和回复响应,这就和步骤8a的可疑重复包的响应区分不开了,因为这两个响应消息的原因cause和包序号都相同。这时候cdf会继续按照9a执行,也就是在cgf2也输出cdr。这就造成这个包在cgf1和cgf2上同时输出了cdr,造成重单。造成这种场景的可能原因有:

1、cdf发送正常数据包后,cgf1繁忙等原因,未来得及处理cdr,先缓存之。后续发生断链,cdf重定向发送可疑重复包给cgf2。链路恢复,cdf给cgf1发可疑重复空包请求,此时cgf1处理了正常数据包后回复响应。

2、cdf发送正常数据包后,cgf1繁忙等原因,未来得及处理cdr,先缓存之。后续重发超时,cdf重定向发送可疑重复包给cgf2。后续cdf检测cgf1链路正常,给cgf1发可疑重复空包请求,此时cgf1处理了正常数据包后回复响应。

3、cdf发送正常数据包,此时cgf1发现资源不足,给cdf回复重定向请求;cdf收到重定向请求后,发送可疑重复包给cgf2;后续cgf1发现资源恢复,给cdf回复nodealive消息,给cgf1发可疑重复空包请求,此时cgf1回复了正常数据包的响应。

以上几种场景都可能导致重单结果,其他可能情况就不一一列举。

通过以上分析可知,重定向时出现重单的根本原因,在于正常数据包请求和可疑重复包请求的响应消息内容一致(cause都是“requestaccepted”,序列号一样),cdf无法进行区分,导致误判。因为重单问题较为严重,如果计费中心没有话单排重功能,就会产生重复计费的风险,会导致客户投诉,降低客户满意度和信任感。

针对相关技术中存在的上述问题,目前尚未提出有效的解决方案。



技术实现要素:

本发明实施例提供了一种话单输出方法、装置及存储介质,以至少解决相关技术中存在的由于重复输出话单而导致的重复计费的问题。

根据本发明的一个实施例,提供了一种话单输出方法,包括:在确定第一计费网关功能cgf由异常状态恢复为正常状态后,向第一计费网关功能cgf发送第一请求消息,其中,所述第一请求消息用于请求所述第一cgf确认是否接收过用于计费的预定计费信息;接收所述第一cgf基于所述第一请求消息返回的第一响应消息,其中,所述第一响应消息用于指示所述第一cgf未接收过所述预定计费信息;依据所述第一响应消息指示第二cgf输出与所述预定计费信息对应的话单,其中,所述第二cgf已接收所述预定计费信息。

可选地,在向所述第一cgf发送所述第一请求消息之后,所述方法还包括:接收所述第一cgf基于所述第一请求消息返回的第二响应消息,其中,所述第二响应消息中用于指示所述第一cgf已接收所述预定计费信息;依据所述第二响应消息指示所述第二cgf取消输出与所述预定计费信息对应的话单。

可选地,所述第二响应消息为cause字段为128requestaccepted的消息。

可选地,所述第一响应消息包括以下之一:cause字段为178requestrelatedtopossiblyduplicatedpacketsaccepted的消息;cause字段为128requestaccepted且携带数据包的类型字段的消息,其中,所述数据包中携带有所述预定计费信息;cause字段为128requestaccepted且携带第一标签的消息,其中,所述第一请求消息中携带所述第一标签;cause字段为128requestaccepted且携带第一时间戳的消息,其中,所述第一请求消息中携带所述第一时间戳。

可选地,包括以下至少之一:当所述第一响应消息为cause字段为128requestaccepted且携带第一标签的消息时,所述第二响应消息为cause字段为128requestaccepted且携带第二标签的消息或者为cause字段为252requestrelatedtopossiblyduplicatedpacketalreadyfulfilled且携带所述第一标签的消息,所述第一标签和所述第二标签不同,向所述第一cgf发送所述预定计费信息时所携带的标签为所述第二标签;当所述第一响应消息为cause字段为128requestaccepted且携带第一时间戳的消息时,所述第二响应消息为cause字段为128requestaccepted且携带第二时间戳的消息或者为cause字段为252requestrelatedtopossiblyduplicatedpacketalreadyfulfilled且携带所述第一时间戳的消息,所述第一时间戳和所述第二时间戳不同,向所述第一cgf发送所述预定计费信息时所携带的时间戳为所述第二时间戳。

根据本发明的另一个实施例,还提供了一种话单输出方法,包括:接收来自计费数据功能cdf的第一请求消息;在根据所述第一请求消息确定未接收过用于计费的预定计费信息的情况下,向所述cdf返回第一响应消息,其中,所述第一响应消息用于所述cdf指示第二cgf输出与所述预定计费信息对应的话单,所述第二cgf已接收所述预定计费信息。

可选地,在接收来自所述cdf的所述第一请求消息之后,所述方法还包括:在根据所述第一请求消息确定已接收所述预定计费信息的情况下,向所述cdf返回第二响应消息,其中,所述第二响应消息用于所述cdf指示所述第二cgf取消输出与所述预定计费信息对应的话单。

可选地,所述第二响应消息为cause字段为128requestaccepted的消息。

可选地,所述第一响应消息包括以下之一:cause字段为178requestrelatedtopossiblyduplicatedpacketsaccepted的消息;cause字段为128requestaccepted且携带数据包的类型字段的消息,其中,所述数据包中携带有所述预定计费信息;cause字段为128requestaccepted且携带第一标签的消息,其中,所述第一请求消息中携带所述第一标签;cause字段为128requestaccepted且携带第一时间戳的消息,其中,所述第一请求消息中携带所述第一时间戳。

可选地,包括以下至少之一:当所述第一响应消息为cause字段为128requestaccepted且携带第一标签的消息时,所述第二响应消息为cause字段为128requestaccepted且携带第二标签的消息或者为cause字段为252requestrelatedtopossiblyduplicatedpacketalreadyfulfilled且携带所述第一标签的消息,所述第一标签和所述第二标签不同,所述cdf发送所述预定计费信息时所携带的标签为所述第二标签;当所述第一响应消息为cause字段为128requestaccepted且携带第一时间戳的消息时,所述第二响应消息为cause字段为128requestaccepted且携带第二时间戳的消息或者为cause字段为252requestrelatedtopossiblyduplicatedpacketalreadyfulfilled且携带所述第一时间戳的消息,所述第一时间戳和所述第二时间戳不同,所述cdf发送所述预定计费信息时所携带的时间戳为所述第二时间戳。

根据本发明的另一个实施例,还提供了一种话单输出装置,包括:发送模块,用于在确定第一计费网关功能cgf由异常状态恢复为正常状态后,向第一计费网关功能cgf发送第一请求消息,其中,所述第一请求消息用于请求所述第一cgf确认是否接收过用于计费的预定计费信息;第一接收模块,用于接收所述第一cgf基于所述第一请求消息返回的第一响应消息,其中,所述第一响应消息用于指示所述第一cgf未接收过所述预定计费信息;第一指示模块,用于依据所述第一响应消息指示第二cgf输出与所述预定计费信息对应的话单,其中,所述第二cgf已接收所述预定计费信息。

可选地,所述装置还包括:第二接收模块,用于在向所述第一cgf发送所述第一请求消息之后,接收所述第一cgf基于所述第一请求消息返回的第二响应消息,其中,所述第二响应消息中用于指示所述第一cgf已接收所述预定计费信息;第二指示模块,用于依据所述第二响应消息指示所述第二cgf取消输出与所述预定计费信息对应的话单。

根据本发明的另一个实施例,还提供了一种话单输出装置,包括:第三接收模块,用于接收来自计费数据功能cdf的第一请求消息;第一返回模块,用于在根据所述第一请求消息确定未接收过用于计费的预定计费信息的情况下,向所述cdf返回第一响应消息,其中,所述第一响应消息用于所述cdf指示第二cgf输出与所述预定计费信息对应的话单,所述第二cgf已接收所述预定计费信息。

可选地,所述装置还包括:第二返回模块,用于在接收来自所述cdf的所述第一请求消息之后,在根据所述第一请求消息确定已接收所述预定计费信息的情况下,向所述cdf返回第二响应消息,其中,所述第二响应消息用于所述cdf指示所述第二cgf取消输出与所述预定计费信息对应的话单。

根据本发明的另一个实施例,还提供了一种存储介质,所述存储介质包括存储的程序,其中,所述程序运行时执行上述任一项所述的方法。

根据本发明的又一个实施例,还提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行上述任一项所述的方法。

通过本发明,由于第一cgf可以返回一个专门用于指示第一cgf未接收过预定计费信息的响应消息,从而可以明确第一cgf的预定计费信息的接收情况,从而避免话单的重复输出,因此,可以解决相关技术中存在的由于重复输出话单而导致的重复计费的问题,达到避免重复输入话单,提供用户体验度的效果。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是相关技术中3gpp网络中计费功能实体的组成和他们之间的关系示意图;

图2是相关技术中3gpp32.295标准中cdr正常传输的过程示意图;

图3是相关技术标准中gtp协议防重机制的示意图;

图4是根据本发明实施例的第一种话单输出方法的流程图;

图5是根据本发明实施例的第二种话单输出方法的流程图;

图6是根据本发明实施例的ga口传输话单的网络架构示意图;

图7是根据本发明实施例的使用cause功能进行重定向防重的流程示意图;

图8是根据本发明实施的使用数据包类型进行重定向防重的流程示意图;

图9是根据本发明实施的使用“消息标签法”进行重定向防重的流程示意图;

图10是根据本发明实施的使用“时间戳法”进行重定向防重的流程示意图;

图11是根据本发明实施例的第一种话单输出装置的结构框图;

图12是根据本发明实施例的第二种话单输出装置的结构框图。

具体实施方式

下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。

实施例1

在本实施例中提供了一种话单输出的方法,图4是根据本发明实施例的第一种话单输出方法的流程图,如图4所示,该流程包括如下步骤:

步骤s402,在确定第一计费网关功能cgf由异常状态恢复为正常状态后,向第一计费网关功能cgf发送第一请求消息,其中,该第一请求消息用于请求第一cgf确认是否接收过用于计费的预定计费信息;

步骤s404,接收上述第一cgf基于第一请求消息返回的第一响应消息,其中,该第一响应消息用于指示第一cgf未接收过上述预定计费信息;

步骤s406,依据上述第一响应消息指示第二cgf输出与上述预定计费信息对应的话单,其中,该第二cgf已接收上述预定计费信息。

其中,执行上述操作的可以是cdf。

通过上述实施例,由于第一cgf可以返回一个专门用于指示第一cgf未接收过预定计费信息的响应消息,从而可以明确第一cgf的预定计费信息的接收情况,从而避免话单的重复输出,因此,可以解决相关技术中存在的由于重复输出话单而导致的重复计费的问题,达到避免重复输入话单,提供用户体验度的效果。

在一个可选的实施例中,在向上述第一cgf发送第一请求消息之后,上述方法还包括:接收第一cgf基于上述第一请求消息返回的第二响应消息,其中,该第二响应消息用于指示第一cgf已接收上述预定计费信息;依据上述第二响应消息指示第二cgf取消输出与预定计费信息对应的话单。在本实施例中,第一cgf返回第二响应消息的基础可能是第一cgf已经接收过预定计费信息,在这种情况下,第一cgf会输出话单,无需其他cgf重复输出相同的话单。

在一个可选的实施例中,上述第二响应消息为cause字段为128requestaccepted的消息。在本实施例中,第二响应消息可以采用现有的响应消息,从而简化操作。

在一个可选的实施例中,上述第一响应消息包括以下之一:cause字段为178requestrelatedtopossiblyduplicatedpacketsaccepted的消息;cause字段为128requestaccepted且携带数据包的类型字段的消息,其中,数据包中携带有预定计费信息;cause字段为128requestaccepted且携带第一标签的消息,其中,第一请求消息中携带第一标签;cause字段为128requestaccepted且携带第一时间戳的消息,其中,第一请求消息中携带第一时间戳。

在一个可选的实施例中,包括以下至少之一:当第一响应消息为cause字段为128requestaccepted且携带第一标签的消息时,第二响应消息为cause字段为128requestaccepted且携带第二标签的消息或者为cause字段为252requestrelatedtopossiblyduplicatedpacketalreadyfulfilled且携带第一标签的消息,第一标签和第二标签不同,向第一cgf发送预定计费信息时所携带的标签为第二标签;当第一响应消息为cause字段为128requestaccepted且携带第一时间戳的消息时,第二响应消息为cause字段为128requestaccepted且携带第二时间戳的消息或者为cause字段为252requestrelatedtopossiblyduplicatedpacketalreadyfulfilled且携带第一时间戳的消息,第一时间戳和第二时间戳不同,向第一cgf发送预定计费信息时所携带的时间戳为第二时间戳。后续的具体实施例中会对四种方案进行具体说明。

实施例2

在本实施例中还提供了一种话单输出的方法,图5是根据本发明实施例的第二种话单输出方法的流程图,如图5所示,该流程包括如下步骤:

步骤s502,接收来自计费数据功能cdf的第一请求消息;

步骤s504,在根据第一请求消息确定未接收过用于计费的预定计费信息的情况下,向上述cdf返回第一响应消息,其中,该第一响应消息用于cdf指示第二cgf输出与预定计费信息对应的话单,该第二cgf已接收所述预定计费信息。

其中,执行上述操作的可以是第一cgf。

通过上述实施例,由于第一cgf可以返回一个专门用于指示第一cgf未接收过预定计费信息的响应消息,从而可以明确第一cgf的预定计费信息的接收情况,从而避免话单的重复输出,因此,可以解决相关技术中存在的由于重复输出话单而导致的重复计费的问题,达到避免重复输入话单,提供用户体验度的效果。

在一个可选的实施例中,在接收来自cdf的第一请求消息之后,上述方法还包括:在根据第一请求消息确定已接收预定计费信息的情况下,向cdf返回第二响应消息,其中,该第二响应消息用于cdf指示第二cgf取消输出与预定计费信息对应的话单。在本实施例中,第一cgf返回第二响应消息的基础可能是第一cgf已经接收过预定计费信息,在这种情况下,第一cgf会输出话单,无需其他cgf重复输出相同的话单。

在一个可选的实施例中,上述第二响应消息为cause字段为128requestaccepted的消息。在本实施例中,第二响应消息可以采用现有的响应消息,从而简化操作。

在一个可选的实施例中,上述第一响应消息包括以下之一:cause字段为178requestrelatedtopossiblyduplicatedpacketsaccepted的消息;cause字段为128requestaccepted且携带数据包的类型字段的消息,其中,所述数据包中携带有所述预定计费信息;cause字段为128requestaccepted且携带第一标签的消息,其中,所述第一请求消息中携带所述第一标签;cause字段为128requestaccepted且携带第一时间戳的消息,其中,所述第一请求消息中携带所述第一时间戳。

在一个可选的实施例中,包括以下至少之一:当所述第一响应消息为cause字段为128requestaccepted且携带第一标签的消息时,所述第二响应消息为cause字段为128requestaccepted且携带第二标签的消息或者为cause字段为252requestrelatedtopossiblyduplicatedpacketalreadyfulfilled且携带所述第一标签的消息,所述第一标签和所述第二标签不同,所述cdf发送所述预定计费信息时所携带的标签为所述第二标签;当所述第一响应消息为cause字段为128requestaccepted且携带第一时间戳的消息时,所述第二响应消息为cause字段为128requestaccepted且携带第二时间戳的消息或者为cause字段为252requestrelatedtopossiblyduplicatedpacketalreadyfulfilled且携带所述第一时间戳的消息,所述第一时间戳和所述第二时间戳不同,所述cdf发送所述预定计费信息时所携带的时间戳为所述第二时间戳。后续的具体实施例中会对四种方案进行具体说明。

通过上述实施例可知,在本发明实施例中提供的是一种能够提高gtp重定向时计费传输准确性的方法,当发生重定向时,cdf发送可疑重复空包(即,已发送过的携带上述计费信息的数据包)后,如果cgf(对应于上述的第一cgf)发现本节点没有接收过这个包,回复一个有别于正常包响应的可疑重复空包的响应,cdf收到这个响应后,才通知重定向的cgf(对应于上述的第二cgf)释放此包。通过此办法,可以避免上述重单的产生,从而提高计费的准确性。

上述的实施例1主要是从cdf侧对本发明进行描述的,上述的实施例2主要是从第一cgf侧对本发明进行描述的,下面结合整体对本发明实施例中所提出的提高计费传输准确性的方法进行说明。

主要包括如下步骤:

1、cdf正常发送数据包请求,cgf1(对应于上述的第一cgf)回复响应(cause为128requestaccepted);

2、重定向后,cdf发送可疑重复包给cgf2(对应于上述的第二cgf);

3、当检测到cgf1可用时,向cgf1发送可疑重复空包请求(对应于上述的第一请求消息);

4、cgf1收到可疑重复空包请求后,判断包序号是否已接收,

如果包序号已接收,则向cdf回复响应(cause为252requestrelatedtopossiblyduplicatedpacketsalreadyfulfilled)(对应于上述的第二响应消息);

如果包序号未接收,则向cdf回复响应,消息携带该序号数据包未接收的标示(对应于上述的第一响应消息)。

cdf收到cgf1的响应消息,

如果cause为252,则向cgf2发送取消可疑重复包的请求(即,指示cgf2取消输出与所述预定计费信息对应的话单),cgf2收到请求后删除缓存中的可疑重复包,不输出话单;

如果消息携带该序号数据包未接收的标示,则向cgf2发送释放可疑重复包的请求(即,指示第二cgf输出与所述预定计费信息对应的话单),cgf2收到请求后输出话单。(此流程符合有别于现有标准)

如果cdf收到cgf1的正常数据包的requestaccepted响应(对应于上述的第二响应消息),则向cgf2发送取消可疑重复包的请求,cgf2收到请求后删除缓存中的可疑重复包,不输出话单。

下面结合具体实施例对本发明进行说明:

附图6示意了ga口传输话单的网络架构示意图。图6是一个最简单的重定向网络配置举例,实际组网和重定向配置比这个要复杂,所以本发明运用的场景不限于此架构,只要是重定向组网都适用。实施方法只对发明内容举四个具体实施例进行说明,具体实施方式不限于此。

具体实施例一

“cause标示法”,此实施方法是用特别定义的cause取值来标示cgf没有收到请求的可疑重复包,比如增加“178requestrelatedtopossiblyduplicatedpacketsaccepted”,和原来的“128requestaccepted”区分。

附图7为本发明实施的使用cause功能进行重定向防重的流程示意图,共包括如下处理步骤:

步骤s01:cdf向cgf1发送正常数据包(即,senddatarecordpacket);

步骤s02:cdf触发重定向,发送可疑重复包给cgf2(即,sendpossibleduplicateddatarecordpacket);

步骤s03:cgf2将可疑重复包缓存,回复响应给cdf,cause为“128requestaccepted”;

步骤s04:cdf检测到cgf1可用时,向cgf1发送可疑重复空包请求(即,sendpossibleduplicateddatarecordpacket(empty));

步骤s05:cgf1回复s01中正常数据包的响应,cause为“128requestaccepted”;

步骤s06:cgf1收到可疑重复空包后,判断数据包是否已接收,

如果已接收,则回复响应,cause为252requestrelatedtopossiblyduplicatedpacketsalreadyfulfilled(可疑重复包已接收过);

如果未接收过,则回复响应,cause为178requestrelatedtopossiblyduplicatedpacketsaccepted。

步骤s07:cdf收到cgf1的响应消息,

如果cause为128,表明cgf2已收到正常包,那么向cgf2发送取消话单的请求(即,canceldatarecordpacket)。

如果cause为252,向cgf2发送取消话单的请求(即,canceldatarecordpacket);

如果cause为178,向cgf2发送释放话单的请求(即,releasedatarecordpacket)。

步骤s08:a)cgf2收到取消话单的请求,删除缓存中的可疑重复包(即,deletecdr);

b)cgf2收到释放话单的请求,输出话单(即,sendcdr)。

说明1:在图7步骤s01和步骤s02间,可能还有其他sip信令交互流程(比如cdf重发包、cgf1发重定向等),为了简化将它们省略;

说明2:在图7步骤s03和步骤s04间,可能还有其他sip信令交互流程(比如cgf1发送nodealive消息、cdf发送echo检测消息等),为了简化将它们省略;

说明3:在图7步骤s06中,cause为178只是举例,区别于原128,实际取值可不限于此。

具体实施例二

“数据包类型标示法”,此实施方法响应的cause不变,采用另外ie字段,标示响应的是可疑重复包的请求。此ie字段可以重新定义,也可以采用privateextension字段,携带数据包类型信息,新增ie字段更具有通用性。此种方式可以向前兼容。

附图8为本发明实施的使用数据包类型进行重定向防重的流程示意图,包括如下处理步骤:

步骤s01:cdf向cgf1发送正常数据包(即,senddatarecordpacket);

步骤s02:cdf触发重定向,发送可疑重复包给cgf2(即,sendpossibleduplicateddatarecordpacket);

步骤s03:cgf2缓存可疑重复包,回复响应给cdf,cause为“128requestaccepted”;

步骤s04:cdf检测到cgf1可用时,向cgf1发送可疑重复空包请求(即,sendpossibleduplicateddatarecordpacket(empty));

步骤s05:cgf1可能会回复s01中正常数据包的响应,cause为“128requestaccepted”,不携带数据包类型字段;

步骤s06:cgf1收到可疑重复空包后,判断数据包是否已接收,

如果已接收,则回复响应,cause为252requestrelatedtopossiblyduplicatedpacketsalreadyfulfilled;

如果未接收过,则回复响应,cause为128requestaccepted,另外携带数据包类型,标示响应的请求是可疑重复包。

步骤s07:cdf收到响应消息,

如果cause为128,且没有包类型字段,表明cgf1已收到正常包,那么cdf向cgf2发送取消话单的请求(即,canceldatarecordpacket)。

如果cause为252,cdf向cgf2发送取消话单的请求(即,canceldatarecordpacket);

如果cause为128,且有标示可疑重复包的包类型字段,则cf向cgf2发送释放话单的请求(即,releasedatarecordpacket)。

步骤s08:a)cgf2收到取消话单的请求,删除缓存中的可疑重复包(即,deletecdr);

b)cgf2收到释放话单的请求,输出话单(即,sendcdr)。

说明1:在图8步骤s01和步骤s02间,可能还有其他sip信令交互流程(比如cdf重发包、cgf1发重定向等),为了简化将它们省略;

说明2:在图8步骤s03和步骤s04间,可能还有其他sip信令交互流程(比如cgf1发送nodealive消息、cdf发送echo检测消息等),为了简化将它们省略。

具体实施例三

“消息标签法”,此实施方法回复的cause不变,每次gtp发送新的请求消息,都携带一个在一段时间内唯一的标签ie,重发消息标签不变,响应消息携带回这个标签,这样发送请求方cdf可以根据标签来判断响应的有效性。此方式可以严格对应请求和响应,不过网络延迟或丢包对处理性能可能会有影响。

附图9为本发明实施的使用“消息标签法”进行重定向防重的流程示意图,共包括如下处理步骤:

步骤s01:cdf向cgf1发送正常数据包(即,senddatarecordpacket),携带消息标签,如tag1;

步骤s02:cdf触发重定向,发送可疑重复包给cgf2(即,sendpossibleduplicateddatarecordpacket),携带新的消息标签,如tag2;

步骤s03:cgf2缓存可疑重复包,回复响应给cdf,cause为“128requestaccepted”,携带消息标签tag2;

步骤s04:cdf检测到cgf1可用时,向cgf1发送可疑重复空包请求(即,sendpossibleduplicateddatarecordpacket(empty)),携带新的消息标签,如tag3;

步骤s05:cgf1可能会回复s01中正常数据包的响应,cause为“128requestaccepted”,携带消息标签tag1;

步骤s06:cgf1收到可疑重复空包后,判断数据包是否已接收,

如果已接收,则回复响应,cause为252requestrelatedtopossiblyduplicatedpacketsalreadyfulfilled,携带消息标签tag3;

如果未接收过,则回复响应,cause为128requestaccepted,携带消息标签tag3。

步骤s07:cdf收到响应消息,判断判断消息标签和request是否能对应上,如果对不上:

丢弃消息,cdf向cgf1重发可疑重复空包请求(即,sendpossibleduplicateddatarecordpacket(empty)),携带消息标签tag3;回到s06;

如果消息标签对的上:

如果cause为252,cdf向cgf2发送取消话单的请求(即,canceldatarecordpacket);

如果cause为128,cdf向cgf2发送释放话单的请求(即,releasedatarecordpacket)。

步骤s08:a)cgf2收到取消话单的请求,删除缓存中的可疑重复包;

cgf2收到释放话单的请求,输出话单。

说明1:在图9步骤s01和步骤s02间,可能还有其他sip信令交互流程(比如cdf重发包、cgf1发重定向等),为了简化将它们省略;

说明2:在图9步骤s03和步骤s04间,可能还有其他sip信令交互流程(比如cgf1发送nodealive消息、cdf发送echo检测消息等),为了简化将它们省略;

说明3:在图9步骤s01和步骤s07间,tag1和tag2和tag3不相同。

具体实施例四

“时间戳法”,此实施方法回复的cause不变,每次gtp发送新的请求消息,都携带发送消息的时间戳,响应消息携带回这个时间戳,这样发送请求方cdf可以根据时间戳来判断响应的有效性。此方式可以严格对应请求和响应,不过网络延迟或丢包对处理性能可能会有影响。

附图10为本发明实施的使用“时间戳法”进行重定向防重的流程示意图,共包括如下处理步骤:

步骤s01:cdf向cgf1发送正常数据包(即,senddatarecordpacket),携带时间戳,如timestamp1;

步骤s02:cdf触发重定向,发送可疑重复包给cgf2(即,sendpossibleduplicateddatarecordpacket),携带新的消息标签,如timestamp2;

步骤s03:cgf2缓存可疑重复包,回复响应给cdf,cause为“128requestaccepted”,携带消息标签timestamp2;

步骤s04:cdf检测到cgf1可用时,向cgf1发送可疑重复空包请求(即,sendpossibleduplicateddatarecordpacket(empty)),携带新的消息标签,如timestamp3;

步骤s05:cgf1可能会回复s01中正常数据包的响应,cause为“128requestaccepted”,携带消息标签timestamp1;

步骤s06:cgf1收到可疑重复空包后,判断数据包是否已接收;

如果已接收,则回复响应,cause为252requestrelatedtopossiblyduplicatedpacketsalreadyfulfilled,携带消息标签timestamp3;

如果未接收过,则回复响应,cause为128requestaccepted,携带消息标签timestamp3。

步骤s07:cdf收到响应消息,判断判断消息标签和request是否能对应上,如果对不上:

丢弃消息,cdf向cgf1重发可疑重复空包请求(即,sendpossibleduplicateddatarecordpacket(empty)),携带消息标签timestamp4;回到s06;

如果消息标签对的上:

如果cause为252,cdf向cgf2发送取消话单的请求;

如果cause为128,cdf向cgf2发送释放话单的请求。

步骤s08:a)cgf2收到取消话单的请求,删除缓存中的可疑重复包;

cgf2收到释放话单的请求,输出话单。

说明1:在图10步骤s01和步骤s02间,可能还有其他sip信令交互流程(比如cdf重发包、cgf1发重定向等),为了简化将它们省略;

说明2:在图10步骤s03和步骤s04间,可能还有其他sip信令交互流程(比如cgf1发送nodealive消息、cdf发送echo检测消息等),为了简化将它们省略;

说明3:在图10步骤s01和步骤s07间,timestamp1和timestamp2和timestamp3和timestamp4不相同,时间精度可以毫秒或微妙或纳秒.

综上所述,采用本发明方法,当发生重定向时,cdf和cgf间计费信息传输的准确性可以得到保证。通过此办法,可以避免计费传输中重单的产生,从而提高计费的准确性。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

实施例3

在本实施例中还提供了一种话单输出装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。

图11是根据本发明实施例的第一种话单输出装置的结构框图,该装置可以应用于cdf中,如图11所示,该装置包括发送模块112、第一接收模块114和第一指示模块116,下面对该装置进行说明:

发送模块112,用于在确定第一计费网关功能cgf由异常状态恢复为正常状态后,向第一计费网关功能cgf发送第一请求消息,其中,该第一请求消息用于请求第一cgf确认是否接收过用于计费的预定计费信息;第一接收模块114,连接至上述发送模块112,用于接收上述第一cgf基于第一请求消息返回的第一响应消息,其中,上述第一响应消息用于指示第一cgf未接收过预定计费信息;第一指示模块116,连接至上述第一接收模块114,用于依据第一响应消息指示第二cgf输出与预定计费信息对应的话单,其中,第二cgf已接收预定计费信息。

在一个可选的实施例中,上述装置还包括:第二接收模块,用于在向第一cgf发送第一请求消息之后,接收第一cgf基于第一请求消息返回的第二响应消息,其中,第二响应消息中用于指示第一cgf已接收预定计费信息;第二指示模块,用于依据第二响应消息指示第二cgf取消输出与预定计费信息对应的话单。

在一个可选的实施例中,上述第二响应消息为cause字段为128requestaccepted的消息。

在一个可选的实施例中,上述第一响应消息包括以下之一:cause字段为178requestrelatedtopossiblyduplicatedpacketsaccepted的消息;cause字段为128requestaccepted且携带数据包的类型字段的消息,其中,数据包中携带有预定计费信息;cause字段为128requestaccepted且携带第一标签的消息,其中,第一请求消息中携带第一标签;cause字段为128requestaccepted且携带第一时间戳的消息,其中,第一请求消息中携带第一时间戳。

在一个可选的实施例中,包括以下至少之一:当第一响应消息为cause字段为128requestaccepted且携带第一标签的消息时,第二响应消息为cause字段为128requestaccepted且携带第二标签的消息或者为cause字段为252requestrelatedtopossiblyduplicatedpacketalreadyfulfilled且携带第一标签的消息,第一标签和第二标签不同,向第一cgf发送预定计费信息时所携带的标签为第二标签;当第一响应消息为cause字段为128requestaccepted且携带第一时间戳的消息时,第二响应消息为cause字段为128requestaccepted且携带第二时间戳的消息或者为cause字段为252requestrelatedtopossiblyduplicatedpacketalreadyfulfilled且携带第一时间戳的消息,第一时间戳和第二时间戳不同,向第一cgf发送预定计费信息时所携带的时间戳为第二时间戳。

图12是根据本发明实施例的第二种话单输出装置的结构框图,该装置可以应用于第一cgf中,如图12所示,该装置包括第三接收模块122和第一返回模块124,下面对该装置进行说明:

第三接收模块122,用于接收来自计费数据功能cdf的第一请求消息;第一返回模块124,连接至上述第三接收模块122,用于在根据第一请求消息确定未接收过用于计费的预定计费信息的情况下,向cdf返回第一响应消息,其中,该第一响应消息用于cdf指示第二cgf输出与上述预定计费信息对应的话单,上述第二cgf已接收预定计费信息。

在一个可选的实施例中,上述装置还包括:第二返回模块,用于在接收来自cdf的第一请求消息之后,在根据第一请求消息确定已接收预定计费信息的情况下,向cdf返回第二响应消息,其中,第二响应消息用于cdf指示第二cgf取消输出与预定计费信息对应的话单。

在一个可选的实施例中,上述第二响应消息为cause字段为128requestaccepted的消息。

在一个可选的实施例中,上述第一响应消息包括以下之一:cause字段为178requestrelatedtopossiblyduplicatedpacketsaccepted的消息;cause字段为128requestaccepted且携带数据包的类型字段的消息,其中,数据包中携带有预定计费信息;cause字段为128requestaccepted且携带第一标签的消息,其中,第一请求消息中携带第一标签;cause字段为128requestaccepted且携带第一时间戳的消息,其中,第一请求消息中携带第一时间戳。

在一个可选的实施例中,包括以下至少之一:当第一响应消息为cause字段为128requestaccepted且携带第一标签的消息时,第二响应消息为cause字段为128requestaccepted且携带第二标签的消息或者为cause字段为252requestrelatedtopossiblyduplicatedpacketalreadyfulfilled且携带第一标签的消息,第一标签和第二标签不同,cdf发送预定计费信息时所携带的标签为第二标签;当第一响应消息为cause字段为128requestaccepted且携带第一时间戳的消息时,第二响应消息为cause字段为128requestaccepted且携带第二时间戳的消息或者为cause字段为252requestrelatedtopossiblyduplicatedpacketalreadyfulfilled且携带第一时间戳的消息,第一时间戳和第二时间戳不同,cdf发送预定计费信息时所携带的时间戳为第二时间戳。

需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。

本发明的实施例还提供了一种存储介质,该存储介质包括存储的程序,其中,上述程序运行时执行上述任一项所述的方法。

可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(read-onlymemory,简称为rom)、随机存取存储器(randomaccessmemory,简称为ram)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

本发明的实施例还提供了一种处理器,该处理器用于运行程序,其中,该程序运行时执行上述任一项方法中的步骤。

显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1