CN100471121C - 一种解码方法和解码器 - Google Patents

一种解码方法和解码器 Download PDF

Info

Publication number
CN100471121C
CN100471121C CNB2006101704464A CN200610170446A CN100471121C CN 100471121 C CN100471121 C CN 100471121C CN B2006101704464 A CNB2006101704464 A CN B2006101704464A CN 200610170446 A CN200610170446 A CN 200610170446A CN 100471121 C CN100471121 C CN 100471121C
Authority
CN
China
Prior art keywords
avp
array
hash
record
charging event
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CNB2006101704464A
Other languages
English (en)
Other versions
CN101001159A (zh
Inventor
何文彬
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Huawei Enterprises Communications Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CNB2006101704464A priority Critical patent/CN100471121C/zh
Publication of CN101001159A publication Critical patent/CN101001159A/zh
Application granted granted Critical
Publication of CN100471121C publication Critical patent/CN100471121C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明实施例公开了一种解码方法,包括:接收diameter消息;根据各个AVP数组的代码字段,将需要进行提前解码的AVP数组及其对应的信息插入计费事件对应的TLV+HASH链表中,得到前提信息;将不需要进行提前解码的AVP数组及其对应的信息插入计费事件的HASH数组邻接链表结构体中;根据得到的前提信息,在数据库中查询为计费事件配置的记录,根据该记录,将HASH数组邻接链表结构体中的数据插入TLV+HASH链表中。这样,能够实现高效提取计费信息。本发明实施例还提供一种解码器,包括数据库、前期解码单元和数据映射单元。

Description

一种解码方法和解码器
技术领域
本发明涉及通信业务的计费技术,具体涉及一种解码方法和解码器。
背景技术
自网络诞生以来,认证、鉴权以及计费体制(AAA)就成为其运营的基础。网络中各类资源的使用,需要由认证、鉴权和计费进行管理。原有的主流AAA协议有RADIUS(Remote AuthenticationDial-in User Service)和TACACS+(Terminal Access Con-troller Access Control System Plus)两种,其中以RADIUS的应用为多。但随着网络技术的发展和应用需求的增长,Diameter协议已取代上述两种协议成为下一代的AAA协议标准。
AAA中的计费(Accounting)是指,网络系统收集、记录用户对网络资源的使用,以便向用户收取资源使用费用,或者用于审计等目的。以互联网接入业务供应商ISP为例,用户的网络接入使用情况可以按流量或者时间被准确记录下来。
直径(Diameter)协议支持移动IP、NAS请求和移动代理的认证、鉴权和计费工作,协议的实现和RADIUS类似,也是采用属性值(AVP)来实现,另外其中详细规定了错误处理,failover机制,采用传输控制协议(TCP),支持分布式计费,克服了RADIUS的许多缺点,是最适合未来移动通信系统的AAA协议。
根据RFC3588协议规定,在diameter协议格式消息中,携带的与计费相关的信息全部保存在基本单位AVP中。每个AVP由AVPcode(AVP的唯一识别码),length(AVP的长度),value(AVP的值即计费信息、业务信息等)这三个部分组成,其中AVP有的是复合结构,有的是单一结构,如果是复合型结构的AVP,则这个AVP的value里面又包含有很多个AVP,如果是单一结构的AVP,则这个AVP的value包含有计费信息、业务信息等。图1是一个复合型结构的AVP示意图,它由很多单一结构的AVP构成。如图1所示,以其中阴影表示的根到叶子节点的路径组合为例,000、001和002均是根AVP,301是叶子节点AVP,001、101和202均是叶子节点301的父亲节点AVP(GROUP类型AVP),其中,202为叶子节点301的直接父亲节点,(001,101,202,301)构成一条根到叶子节点的AVP路径组合,001、(001,101)和(001,101,202)构成一条根到父亲节点的AVP路径组合,每一种路径组合称为一条记录。
根据diameter协议,计费服务器接收外部输入的二进制码流,将其转换为计费信息的过程称为解码操作,以方便后续利用该计费信息进行计费。目前传统的解码方式,一般都是直接将diameter的二进制码流转化为各自计费最终需要的数据结构,这种数据结构大多都是树型的层次结构,再根据该结构提取计费信息。
目前的解码方式存在如下的缺点:
(一)由于传统的diameter解码方法中,直接由二进制码流转换为最终的数据结构,因此不能很方便的对某些diameter协议要求的AVP进行灵活的分析,也无法与需求方进行交互。比如根据diameter协议规定在某些父亲AVP中可能出现一些比较复杂,层次比较深的树型结构,也有可能不出现AVP,也有可能出现一些很简单的层次关系,这些都是随着各个业务灵活变化的,传统的解码技术不能灵活的进行处理,因为无法对信息进行分析和与需求方交互。
(二)传统的diameter解码方法不能很方便的对计费业务上要求的重复出现AVP进行格式转化,而这些重复出现的AVP都是一些计费业务上所必须而且常见的信息,比如某一个帐户的连续几个帐号,连续几个电话号码,连续几个供应商,但是都只对应一个属性,这样也就造成了重复AVP的情况。由于传统的解码方式都是一次性扫描diameter的二进制码数据包,因此不清楚到底当前数据包中是否会有重复的AVP,数据包中会有多少个重复的AVP,因此不能很好的对这种重复的AVP进行格式转换。
总之,目前的传统解码方法面对业务环境的变化和复杂多样的计费模型,不能高效地提取计费信息。
发明内容
有鉴于此,本发明实施例提供一种diameter消息的解码方法,能够高效地提取计费信息。
本发明实施例还提供一种diameter消息的解码器,能够高效提取计费信息。
为实现上述目的,本发明实施例采用如下的技术方案:
一种解码方法,包括:
a、接收以属性值对AVP二进制码流形式表示的diameter消息,所述AVP用于表示计费事件的计费相关信息;
b、根据AVP码流中的各个根到叶子节点的AVP数组的代码字段,将需要进行提前解码的AVP数组及其对应的信息插入所述计费事件对应的TLV+HASH链表中,得到前提信息;将不需要进行提前解码的AVP数组及其对应的信息插入所述计费事件的HASH数组邻接链表结构体中;
c、根据得到的前提信息,在数据库中查询为所述计费事件配置的代表根到节点路径组合的记录,根据该记录,将HASH数组邻接链表结构体中的数据插入TLV+HASH链表中,得到解码结果。
一种解码器,包括:数据库、前期解码单元和数据映射单元,其中,
所述数据库,用于保存为计费事件配置的所有需要的代表根到节点路径组合的记录;
所述前期解码单元,用于接收以AVP二进制码流形式表示的diameter消息,所述AVP用于表示计费事件的计费相关信息;根据AVP码流中的各个根到叶子节点的AVP数组的代码字段,将需要进行提前解码的AVP数组及其对应的信息插入所述计费事件对应的TLV+HASH链表中,得到前提信息,并将该前提信息发送给所述数据映射单元;将不需要进行提前解码的AVP数组及其对应的信息插入所述计费事件的HASH数组邻接链表结构体中;
所述数据映射单元,用于根据接收的前提信息,在所述数据库中查询为所述计费事件配置的记录,根据该记录,将HASH数组邻接链表结构体中的数据插入TLV+HASH链表中,得到解码结果。
由上述技术方案可见,本发明实施例中,在对diameter消息解码前,预先在数据库中根据计费事件的种类和编号,为计费事件配置所有需要的记录,以将任一计费事件所涉及到的所有层次结构在数据库进行存储,方便对各种计费模型的灵活处理;然后,对于接收到的AVP二进制码流,根据事先约定的解码类型,一部分采用硬解码,一部分采用一般性解码。具体地,将采用硬解码的AVP及其长度和值插入计费事件对应的TLV+HASH链表中,并得到该计费事件的编号等信息,作为一般性解码的前提信息;将采用一般性解码的AVP及其对于长度和值插入计费事件的HASH数组邻接链表结构体中,并根据硬解码得到的编号等一般性解码的前提信息,在数据库中查询为目标事件配置的记录,根据该记录将HASH数组连接链表结构体中的数据插入TLV+HASH链表中。应用上述方法后,可以在数据库中预先配置重复或非重复的AVP,并且在进行一般性解码过程中,HASH数组邻接链表结构体中的数据是可控的,可以供外部使用方进行信息协商,以解决重复AVP下计费信息的高效提取。
附图说明
图1是复合型结构的AVP示意图。
图2为本发明实施例中的diameter消息解码方法的总体流程图。
图3为本发明实施例的diameter消息解码方法的具体流程图。
图4为非重复AVP的树型结构示意图。
图5为重复AVP的树型结构示意图。
图6为本发明实施例的diameter消息解码器的具体结构图。
图7为TLV+HASH链表的数据结构图。
具体实施方式
为使本发明实施例的目的、技术手段和优点更加清楚明白,以下结合附图对本发明实施例作进一步详细说明。
本发明实施例的基本思想是:一方面采用灵活的数据配置方式,在数据库中根据各个计费事件的种类和编号,配置计费事件所需要的所有记录,以方便对各种计费模型的灵活处理;另一方面,采用哈希(HASH)数组邻接链表结构作为一般性解码的中间转换数据结构,从而为外部使用方提供信息协商和交互的接口。
图2为本发明实施例中提供的diameter消息解码方法的总体流程图。如图1所示,该方法包括:
步骤201,接收以AVP二进制码流形式表示的diameter消息。
步骤202,根据AVP码流中的各个根到叶子节点的AVP数组的代码字段,将需要进行提前解码的AVP数组及其对应的信息插入计费事件对应的类型长度值(TLV)+HASH链表中,得到前提信息;将不需要进行提前解码的AVP数组及其对应的信息插入计费事件的HASH数组邻接链表结构体中。
本步骤中,根据RFC3588协议的规定,某些AVP信息是需要进行提前解码的,将这些AVP的值称为前提信息,对前提信息进行解码的过程称为硬解码。其它AVP数组在进行解码时要参考前提信息进行,这些AVP数组的解码过程称为一般性解码。根据AVP数组的代码字段可以确定哪些AVP需要进行提前解码,解码后的前提信息包括计费事件的编号、时间信息等。
步骤203,根据得到的数据映射前提信息,在数据库中查询为计费事件配置的代表根到节点路径组合的记录,根据该记录,将HASH数组邻接链表结构体中的数据插入TLV+HASH链表中。
在上述流程中,对AVP二进制码流进行解码时,依据不同AVP的解码类型,采用不同的解码方式。对于携带计费事件编号、时间信息等的AVP采用硬解码,对于携带实际计费信息的AVP采用一般性解码。对于硬解码的AVP,将其AVP数组及其对应的信息直接插入TLV+HASH链表中,并获取数据映射的前提信息,即完成硬解码操作。对于一般性解码的AVP,则首先将AVP数组及其对应的信息插入HASH数组邻接链表中,然后,根据硬解码后得到的数据映射的前提信息,在数据库中查找计费事件对应的记录,再根据这些记录,将HASH数组邻接链表中的数据插入TLV+HASH链表中,完成一般性解码操作。
由上述过程可以看出,本发明实施例中对diameter消息的解码过程还可以分为前期解码过程和数据映射过程。前期解码过程实际上是扫描diameter的二进制码数据包的过程,该过程包括两个分支,对于携带前提信息的AVP数组,即需要进行提前解码的AVP数组,将其对应的信息直接插入TLV+HASH链表中;对于携带非前提信息的AVP数组,即不需要进行提前解码的AVP数组,根据扫描分析将其对应的信息投放到一个HASH数组邻接链表中,作为通过数据库表中记录扫描的数据源。然后在数据映射过程中,依据数据库表中的记录将前期解码过程得到的HASH邻接链表中的内容插入TLV+HASH链表中完成全部解码过程,解码的最终结果是TLV+HASH链表。计费系统可以利用TLV+HASH链表实现高效地提取计费信息。
下面通过一个具体的实施例说明本发明实施例的具体实施方式。图3为本发明实施例的diameter消息解码方法的具体流程图。如图3所示,该方法包括:
步骤301:在数据库中预先根据计费事件的种类和编号,为该计费事件配置所有需要的记录。
本步骤中,为计费事件配置的记录中包括:记录编号、AVP数组查询路径函数和获取AVP数组对应值函数。其中,AVP数组查询路径函数,用于确定该记录代表的AVP数组是否存在于HASH数组邻接链表中;获取AVP数组对应值函数,用于将该记录对应的叶子节点信息插入TLV+HASH链表。记录代表的AVP数组是指记录表示的根到节点的路径组合中包括的所有AVP节点。为计费事件配置记录,即配置该计费事件中,所有可能出现的层次关系,具体就是所有根到父亲节点或者根到叶子节点的路径组合的记录,以及这些记录对应的函数。
随着各种各样新型业务的推出,在计费事件中,出现了大量AVP的重复现象,为兼容在不同计费事件中出现的重复AVP和非重复AVP的现象,本发明实施例在数据库中进行数据配置时,针对重复AVP和非重复AVP分别进行了不同的配置。下面就分别对这两类数据配置方式进行介绍。
(一)非重复AVP配置方式
当外部传入的码流中含有图4所示情况的树型结构AVP的时候,属于没有重复情况的AVP组合。对于图4中(001,101,202,301)和(001,101,202,302)这2条表示根到叶子节点路径组合的记录,在数据库中将做如下配置:
 
记录编号 AVP数组查询路径函数 获取AVP数组对应值函数
记录1 设置AVP数组查询路径函数(001) 属于根到父亲的AVP组合没有TAG
记录2 设置AVP数组查询路径函数(001,101) 属于根到父亲的AVP组合没有TAG
记录3 设置AVP数组查询路径函数(001,101,202) 属于根到父亲的AVP组合没有TAG
记录4 设置AVP数组查询路径函数(001,101,202,301) 获取AVP数组对应值函数(TAG1)
记录5 设置AVP数组查询路径函数(001,101,202,302) 获取AVP数组对应值函数(TAG2)
              表1
设置AVP数组查询路径函数实现的功能是确定记录代表的AVP数组是否存在于HASH数组邻接链表中。在该函数中,输入变量是记录代表的AVP数组,该函数根据输入的所有AVP的数值,在HASH数组邻接链表中进行HASH查找和匹配搜索,判断当前记录代表的AVp数组是否在HASH数组邻接链表中存在。
获取AVp数组对应值函数实现的功能是将该记录对应的叶子节点信息插入TLV+HASH链表。该函数同样是在本步骤中设置,在后续对AVP进行一般性解码的数据映射过程中调用。在该函数中,输入的变量是TAG,TAG为计费系统内部标识计费元素的标签,每个AVP数组可对应一个TAG标签,可利用TAG标签作为AVP数组在TLV+HASH链表中的索引。首先,根据当前记录对应的AVP数组,在HASH数组邻接链表中找到相应的AVP数组以及其最底叶子节点AVP所携带的AVP代码(CODE),AVP长度(LENGTH)和AVP值(VALUE),再配合外部输入的TAG标签,将查找到的叶子节点的AVP CODE,AVP LENGTH和AVP VALUE插入到TLV+HASH链表中。
(二)重复AVP配置方式
重复的AVP分为重复的父亲节点和重复的叶子节点,如图5所示。对于图5所示的记录在数据库中做如下配置:
 
记录编号 AVP数组查询路径函数函数 获取AVP数组对应值函数
记录1 设置AVP数组查询路径函数(001) 属于根到父亲的AVP组合没有TAG
记录2 设置AVP数组查询路径函数(001,101) 属于根到父亲的AVP组合没有TAG
记录3 设置AVP数组查询路径函数(001,101,202) 属于根到父亲的AVP组合没有TAG
记录4 设置AVP数组查询路径函数(001,101,202,301) 获取AVP数组对应值函数(TAG1)
记录5 取下一个相同AVP数组(001,101,202,301) 获取AVP数组对应值函数(TAG2)
记录6 取下一个相同AVP数组(001,101) 属于根到父亲的AVP组合没有TAG
记录7 设置AVP数组查询路径函数(001,102,202) 属于根到父亲的AVP组合没有TAG
记录8 设置AVP数组查询路径函数(001,102,202,301) 获取AVP数组对应值函数(TAG3)
记录9 取下一个相同AVP数组(001,102,202,301) 获取AVP数组对应值函数(TAG4)
               表2
数据库中为重复AVp设置的记录中,取下一个相同AVP数组函数实现的功能是确定记录代表的重复AVP数组是否存在于HASH数组邻接链表中。在该函数中,输入变量为当前记录对应的AVP数组,由于该AVP数组前面已经出现过了至少一次,因此在计数器上做一次累加的操作,用这个计数器的数值结合AVP数组所有AVP的数值,在HASH数组邻接链表中进行HASH查找和匹配搜索,判断当前记录对应的AVP数组是否在HASH数组邻接链表中存在。
步骤302:接收以AVP二进制码流形式表示的diameter消息。
本步骤中,接收到的diameter消息是以多个AVP构成的二进制码流形式表示的。
步骤303:根据AVP码流中的各个根到叶子节点的AVP数组的代码字段进行判断,对于需要进行提前解码的AVP数组,执行步骤304,对于不需要进行提前解码的AVP数组,执行步骤305。
需要进行提前解码的AVP数组解码得到的AVP值为前提信息,进行的解码过程称为硬解码。对于不需要进行提前解码的AVP数组,进行的解码过程称为一般性解码,一般性解码过程要参考前提信息进行。
步骤304:将AVP数组以及其所对应的信息提前插入TLV+HASH链表中完成硬解码的格式转化并做适当的校验。
对于计费事件编号,时间等信息可以采用硬解码。具体地,硬解码的过程包括:
步骤304a:对前提信息的组合关系进行校验。这些前提信息的组合关系是根据RFC3588和RFC4006协议规定的AVP长度、大小、类型和取值范围进行前期设置的。
步骤304b:直接将硬解码的前提信息存储到一个数组结构体中,再将这个数组结构体中的信息插入TLV+HASH链表中。
至此,对于预先约定采用硬解码的AVP,便完成了解码过程。
步骤305:将预先约定采用一般性解码的AVP以及其所对应的信息保存到计费事件对应的HASH数组邻接链表结构体中。
本步骤中,具体将AVP及其对应的信息保存到HASH数组邻接链表结构体中的方式包括:
步骤305a:将AVP码流中采用一般性解码的从根到叶子的路径组合形成的AVP数组作为当前AVP数组;
步骤305b:判断当前AVP数组是否为第一次出现,若是,则代表目前还没有遇到相同的兄弟,则执行步骤305c,当前AVP数组不是第一次出现,则表示遇到了相同的兄弟AVP,执行步骤305d;
所谓相同的兄弟即AVP数组中包含的AVP相同。
步骤305c:设置与当前AVP数组相关联的计数器,转到步骤305e;
本步骤中,设置的计数器用于记录本路径组合形成的AVP数组的出现次数,以便于后面的统计;
步骤305d:确定当前AVP数组是第几次重复出现的兄弟,修改步骤305c中计数器的值,转到步骤305e;
本步骤中,由于在相同的兄弟AVP中,只有在第一次出现的AVP数组中保存有计数器,因此需要根据先前第一次出现的一组从根到叶子的路径组合形成的avp数组查找计数器的值,从而确定当前AVP数组是第几次重复出现的兄弟,并修改第一次出现的相同AVP数组对应的计数器的值,具体的修改操作为累加操作,以便于后续相同兄弟的统计;
步骤305e:对当前AVP数组计算HASH。
步骤305f:判断步骤305e计算出来的HASH值是否重复,若没有重复,则直接将当前AVP数组及其对应的信息放到HASH数组邻接链表的HASH数组头上;如果有重复,则直接将当前AVP数组及其对应的信息放到HASH数组邻接链表的邻接链表上。
本步骤中,AVP数组对应的信息包括AVP数组中最外层AVP的长度和值。其中,AVP数组中最外层AVP即该AVP数组代表的根到节点的路径组合中最底层的AVP节点,如对于AVP数组(001,101),其最外层AVP为AVP101。
至此,除预先约定采用硬解码的AVP数组外,其它非硬解码方式的AVP数组均转换为HASH数组邻接链表的形式。由于HASH数组邻接链表是可控的并且也提供了相关接口给外部使用方进行信息协商和交互,因此便于使用方通过这种中转式的解码机制,采取灵活配置的方式彻底解决diameter的二进制码流数据包中重复出现的计费信息AVP的问题,并且获取灵活配置解码各项参数的能力,获取灵活配置解码各项校验的能力,获取灵活配置容错机制的能力,获取灵活配置解码各项在原定流程新增主要或者附加功能的能力,获取灵活配置解码各项新需求的能力。
上述即完成了前期解码过程,接下来要进行数据映射,即对HASH数组邻接链表中的数据进行处理,以最终完成解码操作。
步骤306:确定计费事件在数据库中的索引编号。
步骤307:根据步骤304中的硬解码过程获取进行数据映射的前提信息,比如计费事件编号,时间等等。
步骤308:根据获取的数据映射前提信息,在数据库中索引编号对应的一组记录,将计费事件对应的HASH数组邻接链表中的内容写入TLV+HASH链表中。
本步骤中,具体操作包括以下步骤:
步骤308a:根据前提信息和获取的数据库中索引编号,找到步骤301中为计费事件配置的一组记录。
步骤308b:将计费事件对应的第一条记录作为当前记录;
步骤308c:根据表中的当前每条记录关联的函数,在计费事件对应的HASH数组邻接链表结构体中进行查询当前记录对应的AVP数组是否存在,若是,则执行步骤308d及其后续步骤,否则执行步骤308e;
步骤308d:直接在HASH数组邻接链表结构体中,根据当前记录对应的AVP数组,获取其对应的长度和值(也即该AVP数组中最外层AVP的长度和值),并且根据数据库表中这条记录对应的TAG信息,利用获取AVP数组对应值函数,将该AVP数组及其对应的信息插入到TLV+HASH链表中。
步骤308e:判断当前记录是否为最后一条记录,若是,则结束本流程,否则将下一条记录作为当前记录进行遍历,返回步骤308c。
上述即为整个解码的全过程。利用该过程,即可以对任何复杂的diameter消息进行效率高,功能全的格式转化,最终形成了适合计费的TLV类型的数据结构。
应用本发明实施例的方法,对于数据库中以非重复方式配置的记录组合,进行解码时的操作举例如下:
假定diameter的2进制码流数据包中包括AVP数组(001,101,202,301)代表根到叶子节点的路径组合,且对该组合进行一般性解码,则将该记录进行解码的过程为:
1:在前期解码过程中,把该AVP组合投放到HASH数组邻接链表中存储起来。
2:然后根据事先数据库中的如下记录予以转化(映射关系如下):
 
记录编号 确定记录代表的AVP数组是否存在于HASH数组邻接链表中的函数 将该记录对应的叶子节点信息插入TLV+HASH链表的函数
记录1 设置AVP数组查询路径函数(001,101,202,301) 获取AVP数组对应值函数(TAG1)
3:调用TLV+HASH链表上相应的插入函数setTag将(001,101,202,301)这条AVP组以及其携带的信息插入到TLV+HASH链表上。
对于数据库中以重复方式配置的记录组合,进行解码时的操作举例如下:
假定diameter的2进制码流数据包中包括两个AVP数组,分别是(001,101,202,301)和(001,101,202,301),有这样一条从根到叶子节点的组合:
1:先将在前期递归扫描的解码过程中把这条AVP组合投放到HASH数组邻接链表中存储起来。
2:然后根据事先数据库中的如下记录予以转化(映射关系如下):
 
记录编号 确定记录代表的AVP数组是否存在于HASH数组邻接链表中的函数 将该记录对应的叶子节点信息插入TLV+HASH链表的函数
记录1 设置AVP数组查询路径函数(001) 属于根到父亲的AVP组合没有TAG
记录2 设置AVP数组查询路径函数(001,101) 属于根到父亲的AVP组合没有TAG
记录3 设置AVP数组查询路径函数(001,101,202) 属于根到父亲的AVP组合没有TAG
记录4 设置AVP数组查询路径函数(001,101,202,301) 获取AVP数组对应值函数(TAG1)
记录5 取下一个相同AVP数组(001,101,202,301) 获取AVP数组对应值函数(TAG2)
记录6 取下一个相同AVP数组(001,101) 属于根到父亲的AVP组合没有TAG
记录7 设置AVP数组查询路径函数(001,102,202) 属于根到父亲的AVP组合没有TAG
记录8 设置AVP数组查询路径函数(001,102,202,301) 获取AVP数组对应值函数(TAG3)
记录9 取下一个相同AVP数组(001,102,202,301) 获取AVP数组对应值函数(TAG4)
如上所示,根据表2中所示的数据库中记录的先后顺序来确定的记录遍历顺序,同时由于AVP数组(001,101,202,301)和(001,101,202,301)代表的根到叶子节点路径组合都是隶属于AVP数组(001,101,202)代表根到父亲节点路径组合下的,且叶子节点相同,因此AVP数组(001,101,202,301)和(001,101,202,301)是重复的AVP。
至此,本发明实施例中diameter消息的解码方法具体流程结束。本发明实施例还提供了一种diameter消息的解码器,可以用于实施上述方法。图6即为本发明实施例的diameter消息解码器的具体结构图。如图6所示,该解码器600包括:数据库配置单元601、数据库602、前期解码单元603和数据映射单元604。
在该解码器600中,数据库配置单元601,用于在数据库602中根据计费事件的种类和编号,为该计费事件配置所有需要的代表根到节点路径组合的记录。
数据库602,用于保存为计费事件配置的所有需要的代表根到节点路径组合的记录。
前期解码单元603,用于接收以AVP二进制码流形式表示的diameter消息,根据AVP码流中的各个根到叶子节点的AVP数组的代码字段,将需要进行提前解码的AVP数组及其对应的信息插入计费事件对应的TLV+HASH链表中,得到前提信息,并将该前提信息发送给数据映射单元604;将不需要进行提前解码的AVP数组及其对应的信息插入计费事件的HASH数组邻接链表结构体中。
数据映射单元604,用于根据接收的前提信息,在数据库602中查询为计费事件配置的记录,根据该记录,将HASH数组邻接链表结构体中的数据插入TLV+HASH链表中。
图7即为TLV+HASH链表的数据结构图。如图7所示,这个最终形成的数据结构TLV+HASH链表是一个数组邻接链表的结构,它的访问方式是先遍历左边的HASH数组,然后根据找到HASH再遍历右边的链表,因此比直接访问树型AVP的速度快,处理也更灵活。
上述即为本发明实施例提供的diameter消息的解码方法和解码器的具体实施方式。可以看出,本发明实施例采用了便于灵活配置的中转式解码,并将解码结果表示成便于计费信息提取的数据结构。
首先,本发明实施例中的diameter解码方式并不是直接格式转化成计费最终需要的数据结构,而是先把接收到的diameter的二进制码流数据包,先格式转化到一个HASH数组邻接链表中,再转化到计费最终需要的数据结构。因为采取中转的这种策略及其相关的数据结构介质HASH数组邻接链表是可控的并且也提供了相关接口给外部使用方进行信息协商和交互,因此便于使用方通过这种中转式的解码机制,采取灵活配置的方式彻底解决diameter的二进制码流数据包中重复出现的计费信息AVP的问题,并且获取灵活配置解码各项参数的能力,获取灵活配置解码各项校验的能力,获取灵活配置容错机制的能力,获取灵活配置解码各项在原定流程新增主要或者附加功能的能力,获取灵活配置解码各项新需求的能力。
其次,应用本发明实施例中的diameter消息的解码方法和解码器后,将把一个diameter的二进制码流数据包格式转化后,最终形成TLV+HASH链表,将便于高效快速地灵活计费。由于diameter的二进制码流数据包的数据结构是一种根据不同运营商的不同业务以及电信设备提供厂商的不同功能而制定的结构各不相同并且极其不规则不规律的树型结构,因此每次要获取数据包中各项计费信息就必须每次遍历这个树型结构,这样将很不便于计费操作的前期工作即计费信息的提取。而通过本发明实施例的diameter解码方式最终形成的序列型数组结构体TLV+HASH链表,将能够让计费操作的前期工作即计费信息的提取变得很高效,因为每次访问这样的序列型的数组结构体(TLV)比每次访问那样一种复杂的树型数据包的效率显然要高得多,而且访问的方式也灵活得多。
以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (12)

1、一种解码方法,其特征在于,该方法包括:
a、接收以属性值AVP二进制码流形式表示的diameter消息,所述AVP用于表示计费事件的计费相关信息;
b、根据AVP码流中的各个根到叶子节点的AVP数组的代码字段,将需要进行提前解码的AVP数组及其对应的信息插入所述计费事件对应的类型长度值TLV+哈希HASH链表中,得到前提信息;将不需要进行提前解码的AVP数组及其对应的信息插入所述计费事件的HASH数组邻接链表结构体中;
c、根据得到的前提信息,在数据库中查询为所述计费事件配置的代表根到节点路径组合的记录,根据该记录,将HASH数组邻接链表结构体中的数据插入TLV+HASH链表中,得到解码结果。
2、根据权利要求1所述的方法,其特征在于,步骤c中所述为计费事件配置记录为:
在数据库中预先根据计费事件的种类和编号,为所述计费事件配置所有需要的表根到节点路径组合的记录;
或者,在步骤a后、步骤c前的解码过程中根据计费事件的种类和编号,为所述计费事件配置所有需要的表根到节点路径组合的记录。
3、根据权利要求1所述的方法,其特征在于,为计费事件配置的所述记录包括:AVP数组、AVP数组查询路径函数和获取AVP数组对应值函数;
所述AVP数组查询路径函数,用于确定记录代表的AVP数组是否存在于所述HASH数组邻接链表中;
所述获取AVP数组对应值函数,用于将记录对应的叶子节点插入所述TLV+HASH链表中。
4、根据权利要求3所述的方法,其特征在于,当为计费事件配置的记录中未出现重复的AVP数组时,则所述AVP数组查询路径函数为设置AVP数组查询路径函数,用于确定输入的AVP数组是否存在于所述HASH数组邻接链表中;
当为计费事件配置的记录中出现重复的AVP数组时,则对于首次出现的AVP数组所在记录中所述AVP数组查询路径函数为设置AVP数组查询路径函数,用于确定输入的首次出现的AVP数组是否存在于所述HASH数组邻接链表中;对于重复出现的AVP数组所在记录中所述AVP数组查询路径函数为取下一个相同AVP数组函数,用于确定输入的重复出现的AVP数组是否存在于所述HASH数组邻接链表中。
5、根据权利要求1所述的方法,其特征在于,步骤b中所述将需要进行提前解码的AVP数组及其对应的信息插入计费事件对应的TLV+HASH链表中包括:
根据事先约定对AVP数组中AVP长度、大小、类型和取值范围对所述前提信息的组合关系进行校验;
将所述AVP数组的值存储到一个数组结构体中,再将该数组结构体中的信息插入所述TLV+HASH链表中。
6、根据权利要求1所述的方法,其特征在于,步骤b中所述将不需要进行提前解码的AVP数组及其对应的信息插入计费事件的HASH数组邻接链表结构体中包括:
b1、将接收到的码流中不需要进行提前解码的AVP数组作为当前AVP数组;
b2、判断当前AVP数组是否为第一次出现,若是,则设置与当前AVP数组相关联的计数器,并将该计数器的值置1,执行步骤b4,否则执行步骤b3;
b3、确定当前AVP数组是第几次重复出现的兄弟,将所述计数器中的值加1,执行步骤b4;
b4、对当前AVP数组计算HASH,若该HASH值没有重复,则将当前AVP数组及其对应的信息放到HASH数组邻接链表的HASH数组头上;若该HASH值有重复,则将当前AVP数组及其对应的信息放到HASH数组邻接链表的邻接链表上。
7、根据权利要求1所述的方法,其特征在于,步骤c中所述将HASH数组邻接链表结构体中的数据插入TLV+HASH链表中包括:
c1、将数据库中计费事件对应的第一条记录作为当前记录;
c2、根据表中的当前记录,在计费事件对应的HASH数组邻接链表结构体中查询当前记录对应的AVP数组是否存在,若是,则执行步骤c3及其后续步骤,否则执行步骤c4;
c3、在所述HASH数组邻接链表结构体中,根据当前记录对应的AVP数组,获取其对应的长度和值,并根据数据库中当前记录对应的TAG信息,将该AVP数组及其对应的长度和值插入所述TLV+HASH链表中;
c4、判断当前记录是否为最后一条记录,若是,则结束本流程,否则将下一条记录作为当前记录,返回步骤c2。
8、根据权利要求7所述的方法,其特征在于,当为计费事件配置的所述记录包括:AVP数组、AVP数组查询路径函数和获取AVP数组对应值函数时,
步骤c2中所述在源计费事件对应的HASH数组邻接链表结构体中查询当前记录对应的AVP数组是否存在为:利用所述AVP数组查询路径函数进行查询;
步骤c3中所述将该AVP数组及其对应的长度和值插入所述TLV+HASH链表中为:利用所述获取AVP数组对应值函数进行插入。
9、根据权利要求1到8中任意一项所述的方法,其特征在于,所述前提信息包括计费事件编号和时间。
10、根据权利要求1到8中任意一项所述的方法,其特征在于,所述AVP数组对应的信息包括:AVP数组中最外层AVP的长度和值。
11、一种解码器,其特征在于,该解码器包括:数据库、前期解码单元和数据映射单元,其中,
所述数据库,用于保存为计费事件配置的所有需要的代表根到节点路径组合的记录;
所述前期解码单元,用于接收以AVP二进制码流形式表示的diameter消息,所述AVP用于表示计费事件的计费相关信息;根据AVP码流中的各个根到叶子节点的AVP数组的代码字段,将需要进行提前解码的AVP数组及其对应的信息插入所述计费事件对应的TLV+HASH链表中,得到前提信息,并将该前提信息发送给所述数据映射单元;将不需要进行提前解码的AVP数组及其对应的信息插入所述计费事件的HASH数组邻接链表结构体中;
所述数据映射单元,用于根据接收的前提信息,在所述数据库中查询为所述计费事件配置的记录,根据该记录,将HASH数组邻接链表结构体中的数据插入TLV+HASH链表中,得到解码结果。
12、根据权利要求11所述的解码器,其特征在于,该解码器进一步包括数据库配置单元,用于在所述数据库中根据计费事件的种类和编号,为该计费事件配置所有需要的代表根到节点路径组合的记录。
CNB2006101704464A 2006-12-30 2006-12-30 一种解码方法和解码器 Expired - Fee Related CN100471121C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2006101704464A CN100471121C (zh) 2006-12-30 2006-12-30 一种解码方法和解码器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2006101704464A CN100471121C (zh) 2006-12-30 2006-12-30 一种解码方法和解码器

Publications (2)

Publication Number Publication Date
CN101001159A CN101001159A (zh) 2007-07-18
CN100471121C true CN100471121C (zh) 2009-03-18

Family

ID=38692980

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2006101704464A Expired - Fee Related CN100471121C (zh) 2006-12-30 2006-12-30 一种解码方法和解码器

Country Status (1)

Country Link
CN (1) CN100471121C (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101179580B (zh) * 2007-12-12 2010-08-11 北京北方烽火科技有限公司 一种用于实现WiMAX系统消息编解码的方法
CN101459746B (zh) * 2007-12-13 2011-04-06 华为软件技术有限公司 一种话单解码方法和装置
CN101631126B (zh) * 2009-08-06 2012-09-05 中兴通讯股份有限公司 一种自适应编码/解码方法和装置
CN102025699A (zh) * 2009-09-22 2011-04-20 华为技术有限公司 一种Diameter消息的封装、解封装方法和装置
CN102904862B (zh) * 2011-07-28 2017-12-08 中兴通讯股份有限公司 一种码流的解码方法及装置
CN103813306B (zh) * 2012-11-08 2017-12-19 中兴通讯股份有限公司 属性携带方法及装置
CN107025125B (zh) * 2016-01-29 2019-10-22 上海大唐移动通信设备有限公司 一种原始码流解码方法和系统
CN107204859A (zh) * 2016-03-18 2017-09-26 华为技术有限公司 传输报文的方法和装置
CN111327397B (zh) * 2020-01-21 2021-02-02 武汉大学 一种信息数据纵向冗余校验纠错编解码方法
CN111767436B (zh) * 2020-06-23 2023-11-10 北京思特奇信息技术股份有限公司 一种hash索引数据的存储、读取方法与系统
US11277155B2 (en) 2020-07-06 2022-03-15 Huawei Technologies Co., Ltd. Decoder and decoding method
CN114461144B (zh) * 2022-01-19 2024-04-19 清华大学 协同驾驶的数据存储装置、数据处理方法及路侧设备
CN117349295B (zh) * 2023-12-04 2024-02-13 江苏瑞宁信创科技有限公司 字词频度统计方法及装置

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
Diameter Base Protocol RFC3588. IETF AAA Working Group,1-50. 2003
Diameter Base Protocol RFC3588. IETF AAA Working Group,1-50. 2003 *
哈夫曼编码的一种基于树型模式匹配的改进型算法. 刘晓峰,吴亚娟.西安师范大学学报(自然科学版),第27卷第1期. 2006
哈夫曼编码的一种基于树型模式匹配的改进型算法. 刘晓峰,吴亚娟.西安师范大学学报(自然科学版),第27卷第1期. 2006 *

Also Published As

Publication number Publication date
CN101001159A (zh) 2007-07-18

Similar Documents

Publication Publication Date Title
CN100471121C (zh) 一种解码方法和解码器
CN112347377B (zh) Ip地址段查找方法与业务调度方法、装置、电子设备
CN109150640A (zh) 一种基于二层网络协议的网络拓扑发现方法及系统
CN104778258B (zh) 一种面向协议数据流的数据抽取方法
CN102346747B (zh) 在数据模型中查找参数的方法
CN104869009A (zh) 网站数据统计的系统和方法
CN104111955A (zh) 一种面向Hbase数据库的复合查询方法
CN104462222A (zh) 一种卡口车辆通行数据的分布式存储方法及系统
CN102882703A (zh) 一种基于http分析的url自动分类分级的系统及方法
CN102122291A (zh) 一种基于树形日志模式分析的博客好友推荐方法
CN112347071B (zh) 一种配电网云平台数据融合方法及配电网云平台
CN104636477B (zh) 一种信息推送前推送列表的去重方法
CN107846483A (zh) 一种域名解析方法、系统和服务器
CN103853838B (zh) 一种数据处理方法和装置
CN106791983A (zh) 一种智能电视用户行为分析方法及系统
CN107832333B (zh) 基于分布式处理和dpi数据构建用户网络数据指纹的方法和系统
CN113256163B (zh) 智慧城市政务云平台网外运算方法及系统
CN102739812B (zh) 一种推荐好友的方法及装置
CN107276854B (zh) 一种大数据下molap统计分析的方法
CN100456680C (zh) 一种编码方法和编码器
CN110020243A (zh) 物联网数据的查询方法、装置、物联网服务器和存储介质
CN106326280B (zh) 数据处理方法、装置及系统
CN104750860B (zh) 一种不确定数据的数据存储方法
CN108549714A (zh) 一种数据处理方法及装置
CN105095402A (zh) 一种微信素材的搜集方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: HANGZHOU HUAWEI COMMUNICATION TECHNOLOGY CO., LTD.

Free format text: FORMER OWNER: HUAWEI TECHNOLOGY CO LTD

Effective date: 20120222

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: 518129 SHENZHEN, GUANGDONG PROVINCE TO: 310052 HANGZHOU, ZHEJIANG PROVINCE

TR01 Transfer of patent right

Effective date of registration: 20120222

Address after: 310052, Hangzhou, Binjiang District Long River Street, 301 shore road, 1, 3 floor

Patentee after: Hangzhou Huawei Enterprise Communication Technology Co., Ltd.

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Patentee before: Huawei Technologies Co., Ltd.

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090318

Termination date: 20141230

EXPY Termination of patent right or utility model