路由决策上下文对象的制作方法
【专利摘要】各种示例性实施例涉及一种方法和相关的网络节点,所述方法包括一个或多个如下操作:在DRA上从源设备接收Diameter消息;响应接收所述Diameter消息建立路由决策上下文对象,其中所述路由决策上下文对象与选择为接收先前消息的目标设备相关联;评估包括上下文对象引用的规则,其中所述评估包括基于上下文对象引用访问路由决策上下文对象;并且基于该规则的评估发送消息。
【专利说明】路由决策上下文对象
[0001] 相关申请的交叉参考
[0002] 本申请涉及以下共同未决的申请,该申请在此引入作为参考:申请号为 13/482, 597,律师事务所案卷号为ALC 3809,发明名称为"Organization of Diameter routing agent rule sets,'。
【技术领域】
[0003] 本文所公开的各种典型实施例一般涉及计算机网络。
【背景技术】
[0004] 从互联网工程任务组(IETF)征求意见文档(RFC) 3588的建议开始起,Diameter 协议已经越来越多地被大量网络应用采用。例如,第三代合作伙伴项目(3GPP)已经针对 各种策略和计费控制(PCC)、移动性管理、以及IP多媒体子系统(MS)的应用程序采用了 Diameter为。由于基于IP的网络代替电路交换网络,Diameter甚至要取代SS7作为密钥 通信信令协议。随着网络的发展,Diameter将成为无线和有线通信网络中广泛使用的协议
[0005] Diameter协议的一个显著方面是Diameter分组路由。被称为Diameter路由代理 (DRA)的实体促进网络中的数据分组的移动。在各种部署中,DRA可以执行如简单的路由、 代理和重定向的基本的功能。
【发明内容】
[0006] 各种实施例的简要总结如下。在下面的
【发明内容】
中可以做一些简化和省略,其意 在突出和介绍各种示例性实施方式的一些方面,而不是限制本发明的范围。后面的章节中 将呈现足以使本领域普通技术人员的技术人员能够制造和使用本发明概念优选的示例性 实施例的详细说明。
[0007] 各种示例性实施例涉及由Diameter路由代理(DRA)执行的用于处理Diameter消 息的方法,所述方法包括:识别上下文工件,其中,所述上下文工件定义了由DRA使用的上 下文对象类型;在DRA上从源设备接收Diameter消息;建立由上下文工件定义的上下文对 象类型的上下文对象;评估包括上下文对象的引用的规则,其中,所述评估包括基于上下文 对象引用访问所述上下文对象;并且基于该规则的评估发送消息。
[0008] 各种典型实施例涉及用于处理Diameter消息的Diameter路由代理(DRA),所述 DRA包括:上下文工件存储器,被配置为存储定义了上下文对象类型的上下文工件;规则存 储器,被配置为存储包括上下文对象引用的规则;Diameter堆栈,被配置为从源设备接收 Diameter消息;上下文创建器,被配置为建立由所述上下文工件定义的上下文对象类型的 上下文对象;规则引擎,被配置为评估规则,其中,所述评估包括基于所述上下文对象引用 访问所述上下文对象;以及消息处理器,被配置为基于规则的评估经由所述Diameter堆栈 发送消息。
[0009] 各种示例性实施例涉及一种非临时性计算机可读存储介质,其上编码有用于由 Diameter路由代理(DRA)执行的用于处理Diameter消息的指令,所述介质包括:用于识 别上下文工件的指令,其中,所述上下文工件定义了由DRA使用的上下文对象类型;用于在 DRA上从源设备接收Diameter消息的指令;用于建立由上下文工件定义的上下文对象类型 的上下文对象的指令;用于评估包括上下文对象引用的规则的指令,其中,所述评估包括基 于上下文对象引用访问所述上下文对象;并且用于基于该规则的评估发送消息的指令。
[0010] 描述了各种实施例,其中上下文工件(context artifact)是定义上下文对象的类 的运行时库(runtime library)。
[0011] 描述了各种实施例,其中访问上下文对象包括检索由上下文工件定义的属性。
[0012] 描述了各种实施例,其中访问上下文对象包括调用由上下文工件定义的动作。
[0013] 各种实施例进一步包括,在识别上下文工件之前,通过DRA的用户接口接收上下 文的工件。
[0014] 各种实施例进一步包括在所述上下文工件中定位注释;并基于所述注释生成上下 文对象类型的组件名称,其中组分名称指的是上下文对象类型的属性和动作的至少一个。
[0015] 各种实施例进一步包括:经由用户接口接收对应于该规则的规则定义,其中,所述 规则定义包括对组件名称的引用以及对与上下文对象引用对应的组件名称的引用。
[0016] 各种示例性实施例涉及由Diameter路由代理(DRA)执行的用于处理Diameter 消息的方法,所述方法包括:在DRA上从源设备接收Diameter消息;响应接收到所述 Diameter消息,建立路由决策上下文对象,其中所述路由决策上下文对象与选择要接收先 前消息的目标设备相关联;评估包括上下文对象引用的规则,其中,所述评估包括基于上下 文对象引用访问路由决策上下文对象;并且基于该规则的评估发送消息。
[0017] 各种典型实施例涉及用于处理Diameter消息的Diameter路由代理(DRA),所述 DRA包括:规则存储器,被配置为存储包括上下文对象引用的规则;路由决策数据库,被配 置为存储先前路由决策,其中,所述先前路由决策,包括为先前消息所选择的的目标设备的 标识;Diameter堆栈,被配置为从源设备接收Diameter消息;上下文创建器,被配置为基 于接收Diameter消息,建立路由决策上下文对象,其中所述路由决策上下文对象与先前路 由决策相关联;规则引擎,被配置为评估该规则,其中,所述评估包括:基于所述上下文对 象引用访问路由决策上下文对象;以及消息处理器,被配置为基于该规则的评估经由所述 Diameter堆栈发送消息。
[0018] 各种示例性实施例涉及一种非临时性计算机可读存储介质,其上编码有用于由 Diameter路由代理(DRA)执行的用于处理Diameter消息的指令,所述介质包括:用于在 DRA上从源设备接收Diameter消息的指令;用于响应接收到所述Diameter消息,建立路由 决策上下文对象的指令,其中所述路由决策上下文对象与选择要接收先前消息的目标设备 相关联;用于评估包括上下文对象引用的规则的指令,其中,所述评估包括基于上下文对象 引用访问路由决策上下文对象;以及用于基于该规则的评估发送消息的指令。
[0019] 描述了各种实施例,其中,基于该规则的评估发送消息包括向目标设备发送 Diameter 消息。
[0020] 描述了各种实施例,其中所述Diameter消息与第一Diameter应用相关,先前消息 与第二Diameter应用相关。
[0021] 各种实施例进一步包括,在接收Diameter消息之前:在DRA接收先前消息;确定 先前消息应该被路由到目标设备;发送先前消息至目标设备;并存储先前消息的标识的与 所述目标设备作为路由决策。
[0022] 描述了各种实施例,其中访问所述路由决策上下文对象包括更新与所述路由决策 相关联的时间戳。
[0023] 各种实施例进一步包括:基于与所述路由决策相关联的时间戳,确定所述路由决 策应该被删除;以及,从DRA的存储器中删除所述路由决策。
[0024] 描述了各种实施例,其中建立路由决策上下文对象以及访问路由决策上下文对象 的至少一个包括:从Diameter消息提取至少一条标识信息;以及确定所述至少一条标识信 息对应于先前消息。
[0025] 各种示例性实施例涉及由Diameter路由代理(DRA)执行的用于处理Diameter消 息的方法,所述方法包括:在DRA从源装置接收Diameter消息,所述Diameter消息与订户 相关联;响应接收到所述Diameter消息,建立订户记录上下文对象,其中所述订户记录上 下文对象与所述订户的订户记录相关联;评估包括上下文对象引用的规则,其中,所述评估 包括根据上下文对象引用访问订户记录上下文对象;并且基于该规则的评估发送消息。
[0026] 各种典型实施例涉及用于处理Diameter消息的Diameter路由代理(DRA),所 述DRA包括:规则存储器,被被配置为存储包括上下文对象引用的规则;Diameter堆栈,被 配置为从源设备接收Diameter消息,其中,所述Diameter消息与订户相关;上下文创建 器,被配置为建立订户记录上下文对象,其中,所述订户记录上下文对象与所述订户的订 户记录相关联;规则引擎,被配置为评估该规则,其中,所述评估包括:基于所述上下文对 象引用访问订户记录上下文对象;以及消息处理器,被配置为基于该规则的评估经由所述 Diameter堆栈发送消息。
[0027] 各种示例性实施例涉及一种非临时性计算机可读存储介质,其上编码有用于由 Diameter路由代理(DRA)执行的用于处理Diameter消息的指令,所述介质包括:用于在 DRA从源装置接收Diameter消息的指令,所述Diameter消息与订户相关联;用于响应接收 到所述Diameter消息,建立订户记录上下文对象的指令,其中所述订户记录上下文对象与 所述订户的订户记录相关联;用于评估包括上下文对象引用的规则的指令,其中,包括根据 上下文对象引用访问订户记录上下文对象进行评估的指令;以及用于基于该规则的评估发 送消息的指令。
[0028] 描述了各种实施例,其中建立订户记录上下文对象以及访问订户记录上下文对象 中的至少一个包括:确定与所述Diameter消息相关联的至少一个订户标识符;以及检索与 所述至少一个订户标识符相关联的订户记录。
[0029] 描述了各种实施例,其中检索所述订户记录包括发送消息到订户简档库(SPR)。
[0030] 描述了各种实施例,其中访问所述订户记录上下文对象包括读取订户记录的字 段。
[0031] 描述了各种实施例,其中访问所述订户记录上下文对象包括将值写入用户记录, 该方法进一步包括存储修改的订户记录。
[0032] 描述了各种实施例,其中访问所述订户记录上下文对象包括调用订户记录上下文 对象的动作,以及所述订户记录上下文对象的动作调用除了上下文对象的功能以外的DRA 的功能。
[0033] 描述了各种实施例,其中DRA的功能从订户简档储存库中检索订户记录。
【专利附图】
【附图说明】
[0034] 为了更好地理解各种示例性实施例,参考下面的附图进行说明,其中:
[0035] 图1示出Diameter路由代理的示例性网络环境;
[0036] 图2示出示例性Diameter路由代理;
[0037] 图3示出用于处理Diameter消息的示例性方法;
[0038] 图4示出用于使用上下文工件的示例性方法;
[0039] 图5示出用于生成上下文对象的元数据的示例性方法;
[0040] 图6示出了用于路由决策的上下文对象的示例性类图;
[0041] 图7示出用于检索先前路由决策的示范方法;
[0042] 图8示出订户记录上下文对象的示例类图;
[0043] 图9示出用于检索订户记录的示例性方法;和
[0044] 图10示出示例性规则组。
【具体实施方式】
[0045] 本说明书和附图仅仅示出本发明的原理。因此,可以理解的是,尽管这里没有明确 地描述或示出,本领域的技术人员能够设计体现本发明的原理并包括在其范围之内的各种 布局。此外,本文描述的所有实施例原则上是仅用于示范的目的,以帮助读者理解本发明的 原理和发明人提供的深化本领域的概念,并且应当被解释为不限于这些具体引用的示例和 条件。另外,如本文中所使用的术语"或"是指非排他性的或(即,和/或),除非另有说明 (例如,"否则"或"或在替代方案中")。另外,本文所描述的各种实施例并不一定是相互排 斥的,因为一些实施例可以与一个或多个其他实施例结合,以形成新的实施方案。本文所用 的,术语"上下文"和"上下文对象"将被理解为是同义的,除非另有说明。
[0046] 现在可用的Diameter路由代理(DRA)只提供典型地在硬编码或脚本中定义的基 本功能。因此,用户可能通常不能被轻松授权并不能灵活地为DRA定义更复杂的行为模式。 鉴于上述情况,希望提供一种便于用户定义和扩展DRA消息处理行为的方法和系统。
[0047] 图1示出用于Diameter路由代理(DRA) 142的示例性网络环境100。示例性网络 环境100可以是用于提供各种服务的订户网络。在各种实施例中,订户网络100可以是公 共陆地移动网(PLMN)。示例性的订户网络100可以是用于提供对各种服务进行访问的电 信网络或其他网络。示例性订户网络100可以包括用户设备110、基站120、演进分组核心 (EPC) 130、分组数据网络150和应用功能(AF) 160。
[0048] 用户设备110可以是与分组数据网络150进行通信,用于向末端用户提供提供数 据服务的设备。这样的数据服务可以包括例如语音通信、文本消息传送、多媒体流、和互联 网接入。更具体地,在各种示例性实施例中,用户设备110是个人计算机或膝上型计算机、 无线电子消息设备、蜂窝电话、平板电脑、电视机顶盒、或能够经由EPC130与其他设备进行 通信的任何其他设备。
[0049] 基站120可以是实现用户设备110和EPC130之间通信的设备。例如,基站120可 以是诸如由相关的3GPP标准所定义的演进节点B(e节点B)的基站收发信台。因此,基站 120可以与用户设备110经由诸如无线电波的第一介质通信,并经由诸如以太网电缆的第 二介质与EPC130进行通信。基站120可以与EPC130直接通信或经由多个中间节点进行通 信(未示出)。在各种实施例中,可以存在多个基站(未示出)以向用户设备110提供移动 性。注意,在各种替代实施例中,用户设备110可以直接与EPC130进行通信。在这种实施 例中,基站120可以不存在。
[0050] 演进分组核心(EPC) 130可以是向用户设备110提供到分组数据网络140的网关 接入的一个设备或多个设备的网络。EPC 130还可以向订户收取使用提供的数据服务的费 用,并确保满足特定的质量体验(QoE)标准。因此,EPC130可以至少部分地根据相关3GPP 标准来实现。EPC130可以包括服务网关(SGW) 132、分组数据网络网关(PGW) 134、以及会话 控制设备140。
[0051] 服务网关(SGW)132可以是提供到EPC130网关接入的设备。SGW132可以是在 EPC 130内接收由用户设备110发送的数据包的第一设备之一。各种实施例还可以包括在 SGW132之前接收分组的移动性管理实体(MME)(未示出)。SGW132可以向PGW134转发这些 分组。SGW 132可以执行许多功能,例如管理多个基站(未示出)之间的用户设备110的移 动性以及为每个被服务的流执行特定服务质量(QoS)特性。在诸如实施代理移动IP标准 的各种实现中,SGW132可以包括承载绑定和事件报告功能(BBERF)。在各种示例性实施例 中,EPC130可以包括多个SGW(未示出),并且每个SGW可以与多个基站通信(未示出)。
[0052] 分组数据网络网关(PGW) 134可以是向分组数据网络140提供网关接入的设备。 PGW 134可以是EPC 130内接收分组的最后设备,所述分组由用户设备110经SGW 132向 分组数据网络140发送。PGW 134可以包括对每个服务数据流(SDF)执行策略和计费控 制(PCC)规则的策略和计费执行功能(PCEF)。因此,PGW 134可以是策略和计费执行节点 (PCEN)。PGW134可以包括许多附加的功能,例如分组过滤、深度分组检测以及用户计费支 持。PGW134也可以为未知应用服务负责请求资源分配。
[0053] 会议控制设备140可以是在EPC 130内提供各种管理或其他功能的设备。例如,会 话控制设备140可提供策略和计费规则功能(PCRF)。在各种实施例中,会议控制设备140 可以包括阿尔卡特朗讯5780动态服务控制器(DSC)。会议控制设备140可以包括DRA142、 多个策略和计费规则刀片(PCRB) 144、146,以及订户简档库。
[0054] 如将在下文中更详细描述的,DRA 142可以是智能的Diameter路由代理。由此, DRA 142可以接收、处理和发送各种Diameter消息。DRA 142可以包括若干用户定义的规 贝丨J,这些规则就DRA 142可能会遇到的各种Diameter消息来支配DRA 142的行为。根据这 样的规则,DRA142可以操作为中继代理、委托代理、或重定向代理。例如,DRA 142可以中继 接收到的消息至合适的接收设备。这样的路由可以相对于传入和传出消息以及对会话控制 设备来说的内部消息来执行。
[0055] 策略和计费规则刀片(PCRB) 144、146的每一个可以是设备或设备组,其接收对应 用服务的请求,生成PCC规则,并向PGWl34或其他PCEN (未示出)提供PCC规则。PCRB 144、 146可以经由Rx接口与AF160通信。如下面进一步关于AF 160要详细描述的,PCRB 144、 146可以从AF 160接收认证和授权请求(AAR)形式的应用请求。在接收到AAR时,PCRB 144、146可以生成至少一个新PCC规则用于履行应用要求。
[0056] PCRB 144、146 也可以分别经由 Gxx 和 Gx 接口与 SGW 132 和 PGW134 通信。PCRB 144、146可以从SGW 132或PGW 134接收信用控制请求(CCR)形式的应用请求。至于与 AAR,在接收到CCR时,PCRB 144、146可以生成至少一个新PCC规则用于履行应用请求。在 各种实施例中,AAR和CCR可以代表被单独处理的两个独立应用请求,而在其他实施例中, AAR和CCR可以携带关于单个应用请求的信息,并且PCRB 144、146可以基于AAR和CCR的 组合创建至少一个PCC规则。在各种实施例中,PCRB 144、146可以能够处理单个消息和配 对消息的应用请求。
[0057] 当创建新PCC规则时或者当PGW134发出请求时,PCRB 144、146可以通过Gx接口 向PGW134提供PCC规则。在各种实施例中,例如那些在代理移动IP (PMIP)标准的实施例 中,PCRB 144、146还可以生成QoS规则。当创建新的QoS规则或者当SGW 132发出请求时, PCRB 144、146可以经由Gxx接口向SGW132提供QoS规则。
[0058] 订户简档库(SPR) 148可以是向订户网络100存储与订户相关的信息的设备。这 样,SPR 148可以包括机器可读存储介质,如只读存储器(ROM)、随机存取存储器(RAM)、磁 盘存储介质、光存储介质、闪存设备、和/或类似的存储介质。SPR 148可以是PCRB144、146 之一的组成部分,或者可以构成EPC130或者会话控制设备140内的独立节点。SPR138存储 的数据可以包括订户信息140,例如每个订户的标识符、带宽限制、收费参数、和订户的优先 级。
[0059] 分组数据网络150可以是用于提供用户设备110与诸如AF 160的连接到分组数 据网络150的其他设备之间的数据通信的任何网络。分组数据网络150还可以提供例如电 话和/或互联网服务至与分组数据网络150进行通信的各个用户设备。
[0060] 应用功能(AF) 160可以是向用户设备110提供已知应用服务的设备。因此,AF 160 可以是服务器或例如向用户设备110提供视频流或语音通信服务的其他设备。AF 160还 可以经由Rx接口与EPC 130的PCRB144U46通信。当AF 160开始向用户设备110提供已 知应用服务时,AF 160可以根据Diameter协议生成诸如验证和授权请求(AAR)的应用请 求消息,以通知PCRB 144U46资源应分配至该应用服务。应用请求消息可以包括这样的信 息,例如使用应用服务的订户的标识、订户的IP地址、相关联的IP-CAN会话的APN,或者必 须被建立以提供所请求的服务的特定服务数据流的标识。
[0061] 可以理解,各种Diameter应用可以在订户网络100内建立并被DRA142支持。例 如,Rx应用可以在AF 160和各PCRB 144、146的每一个之间建立。作为另一个例子,Sp应 用可以SPR 148和PCRB 144、146每一个之间建立。作为又一个例子,S9应用可以在PCRB 144、146的一个或更多以及执行另一个PCRF(未示出)的远程设备之间建立。可以理解的 是,许多其他Diameter应用可以在订户网络100内建立。正如将要理解的,各种Diameter 应用可以被内订户网络100建立与例如,一个接收应用程序可自动对160和各PCRB 144、 146之间建立所支持的DRA 142。作为另一个例子,Sp应用可以在SPR 148和各PCRB 144、 146之间被建立。作为另一个例子,Sp应用可以在一个或更多PCRB144、146和执行另一个 PCRF远程设备之间建立(未示出)。如将理解的,许多其他的Diameter应用可以内订户网 络100建立。
[0062] 在支持各种可能的Diameter应用中,DRA 142可以接收Diameter消息、处理该消 息,并基于处理进行操作。例如,DRA 142可以从PGW 134接收Gx CCR、识别适当的PCRB144、 146来处理Gx CCR、并转发Gx CCR到识别的PCRB 144、146。DRA 142还可以通过修改由 PCRB 144、146发送的后续Gx CCA来充当代理以携带指向DRA 142而不是PCRB144、146的 源主机标识。另外或可选地,DRA 142可作为重定向代理或者通过形成适当应答消息并发 送该应答消息到适当的请求设备的方式来直接响应请求消息。
[0063] 图2示出示例性Diameter路由代理(DRA) 200。DRA 200可以是独立设备或另一 系统的组成部分。例如,DRA 200可以对应于示例性环境100的DRA 142。在这样的实施例 中,0狀142可以支持由36--所定义的各种0丨&!^七61'的应用,例如61、6乂乂、1^、或5?。应 当理解的是,DRA 200可以部署在各种支持附加或替代应用的替代实施例中。因此,显而易 见的是,本文所描述的方法和系统可以一般性地适用于支持任何Diameter应用。
[0064] DRA 200可以包括若干组件,例如Diameter堆栈205、消息处理器210、规则引擎 215、规则存储器220、用户接口 225、上下文创建器230、上下文工件存储器240、消息词典 245、路由决策数据库250、清理模块255、或订户记录检索器260。
[0065] Diameter堆栈205可以包括硬件和机器可读存储介质上被配置为根据Diameter 协议与其他设备交换信息的或可执行指令。Diameter堆栈205可以包括接口,所述接口包 括硬件和编码在机器可读存储介质上被配置为与其他设备进行通信的可执行指令。例如, Diameter堆栈205可以包括以太网或TCP/IP接口。在各种实施例中,Diameter堆栈205 可以包括多个物理端口。
[0066] Diameter堆栈205也可以被配置为读取并根据Diameter协议构造消息。例如, Diameter堆栈可以被配置为读取和构造 CCR、CCA、AAR、AAA、RAR和RAA消息。Diameter堆 栈205可以提供的应用程序编程接口(API),使得DRA 200的其他组件可以调用Diameter 堆栈功能。例如,规则引擎215能够利用API从接收的CCR读取属性值对(AVP)或者修改 新CCA的AVP。各种附加的功能从下列描述中将变得显而易见。
[0067] 消息处理器210可以包括硬件或机器可读存储介质上的可执行指令,所述可执行 指令被配置为解释接收的消息,并适当地调用规则引擎215。在各种实施例中,消息处理器 210可以提取Diameter堆栈205接收的消息的消息类型以及使用规则组调用适合于所提取 的消息类型的规则引擎。例如,该消息类型可以通过接收的消息的应用和指令来定义。在 规则引擎215评估完一个或多个规则后,消息处理器210可以基于由规则引擎215调用一 个或多个上下文对象动作经由Diameter堆栈发送一个或多个消息。
[0068] 规则引擎215可以包括硬件或机器可读存储介质上的可执行指令,所述可执行指 令被配置为通过评估一个或存储在规则存储器220的规则,处理接收到的消息。因此,规则 引擎215可以是处理引擎的类型。规则引擎215可以检索一个或多个规则、评估规则的标 准来确定该规则是否适用、以及指定任何适用规则的一个或多个结果。例如,规则引擎215 可以确定当收到的Gx CCR包括标识DRA 200的目标主机AVP时,规则适用。规则可以指定 消息在被转发之前,目标主机AVP应改为标识PCRB。
[0069] 规则存储器220可以是能够存储由规则引擎215评估的一个或多个规则的任何计 算机可读介质。因此,规则存储器220可以包括机器可读存储介质,如只读存储器(ROM)、随 机存取存储器(RAM)、磁盘存储介质、光存储介质、闪存设备、和/或类似的存储介质。在各 种实施例中,规则存储器220可以将一个或多个规则组存储为二元判定树数据结构。各种 用于存储规则组的其他数据结构,将是显而易见的。
[0070] 应当理解的是,尽管各种组件被描述为被配置为执行诸如评估规则或基于规则访 问上下文对象各种功能,这样的配置可以不要求任何规则存在于规则存储器中。例如,规则 引擎215可以被配置为评估包括上下文对象引用的规则,即使没有这样的规则存储在规则 存储器220中。此后,如果用户向规则存储器增加了这样的规则,规则引擎215可以如本文 所述地处理该规则。换言之,如本文所使用的,当相对于与规则有关的功能的进行使用时短 语"配置为"将被理解为是指该组件能够执行的适当功能相应,而不管请求这样功能的规则 是否实际存在。
[0071] 用户接口 225可以包括硬件或计算机可读存储介质上被配置为能够与用户通信 的可执行指令。这样,用户接口 225可以包括网络接口(如包括在Diameter堆栈205中的 网络接口)、显示器、键盘、鼠标、或触敏显示器。用户接口 225还可以提供用于促进用户交 互的图形用户接口(⑶I)。用户接口 225可以使用户能够定制的DRA 200的行为。例如,用 户接口 225使得用户能够定义在规则存储器220中的存储规则并通过规则引擎215进行评 估。对于本领域技术人员来说,让用户通过用户接口 225各种其他方法定制DRA200的行为 的将是显而易见的。
[0072] 根据各种实施例,规则存储器220可以包括引用一个或多个"上下文"或"上下文 对象"的规则。在这样的实施例中,上下文创建器230可以包括硬件和机器可读存储介质上 被配置为实例化上下文中的对象并向发出请求的组件提供上下文对象的元数据的可执行 指令。上下文对象可以在运行时被上下文创建器230实例化,并且可以包括用于支撑规则 引擎215和使用户能够通过用户接口 225定义复杂规则的属性或动作。例如,上下文创建 器230可以提供表示各种Diameter消息的上下文对象、先前的路由决策、或用户简档。
[0073] 当DRA 200接收Diameter消息进行处理时,消息处理器210可以向上下文创建器 230发送指示,以表明适当的上下文对象要被实例化。接着,上下文创建器230可以实例化 该上下文对象。在一些实施例中,上下文创建器230可以实例化所有已知的上下文对象或 者可以只实例化那些要由规则存储器220应用的规则组实际使用的上下文对象。在其他实 施例中,上下文创建器230可以不实例化上下文对象,直到它被规则引擎215实际上要求。
[0074] 上下文创建器230可以通过向用户接口 225提供上下文元数据额外地促进规则创 建。在各种实施例中,上下文创建器230可以向用户接口 225指示哪些上下文对象对于被 修改的规则组可用以及每个上下文对象可能拥有什么属性或动作。利用这些信息,用户接 口 225可以呈现出指向和点击界面(point-and-click interface),用于创建复杂规则。例 如,用户接口 225可以使用户能够从包含在正在建造或修改的规则的列表中选择上下文对 象的所需属性或者动作。
[0075] 上下文创建器230可以依赖于在建立上下文中的对象在上下文工件存储器240中 存储一个或多个上下文工件。因此,上下文工件存储器240可以是能够存储一个或多个上 下文工件的任何计算机可读介质。因此,上下文工件存储240可包括机器可读存储介质, 如只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质、光存储介质、闪存设备、和/ 或类似存储介质。上下文工件存储240可以用各种形式存储工件,例如,运行库(run-time libraries)。在各种实施例中,这样的运行库可以被存储为Java归档(.jar)文件。
[0076] 每个上下文工件可以限定可用于上下文对象的属性或动作。在各种实施例中,上 下文工件可以定义属性或动作被访问时要执行的一个或多个功能。这样的功能可以利用 DRA 200的其他功能,如访问Diameter堆栈的API,或可以将值返回调用该属性或动作的 部件。上下文工件还可以包括标签或上下文创建器230的其他元数据,以提供至用户接口 225,用于描述上下文对象的行为和属性。在示例性DRA 200中,上下文工件存储器240可 以存储限定消息上下文的上下文工件、路由决策上下文、或订户记录上下文。这些上下文工 件可以在运行时由上下文创建器230使用来实例化不同类型的上下文对象。因此,上下文 创建器230可以被视为包括消息上下文模块232、路由决策上下文模块236、和订户记录上 下文模块238。在各种实施例中,用户能够例如通过指定现有文件(如.jar文件)或通过 使用用户接口 225的文本编辑器定义新的上下文工件的方式,经由用户接口 225来定义新 的上下文工件以存储在上下文工件存储器中。
[0077] 消息上下文模块232可以表示上下文创建器230的生成上下文对象代表并提供访 问Diameter消息的能力。例如,消息上下文模块232可以生成表示所接收的消息的上下文 对象。在各种实施例中,适当地,消息上下文模块232还可以被配置为生成表示请求消息或 与接收到的Diameter消息相关的应答消息的上下文对象。这样,消息上下文模块232可以 被视为包括接收的消息子模块233、相关请求子模块234、和相关的应答子模块235。
[0078] Diameter消息的内容可以取决于应用和命令类型而有所不同。例如,RX RAA消息 可以包括与GX CCR消息不同的数据。这种差异可以通过管理相关Diameter应用的各种标 准来定义。此外,一些厂商可以包括各种消息的所有权或其他非标准定义。消息上下文模 块232可以依赖于存储在消息词典245中的消息定义,生成不同类型Diameter消息的消息 上下文。例如,当接收Diameter消息时,消息处理器210可以递送应用程序和指令类型至 上下文创建器230。消息上下文模块232然后可以在消息词典245中定位(locate)匹配 定义。这一定义可以指示可能存在于指定类型的消息中的AVP。然后,消息上下文模块232 可以实例化具有与信息定义中识别的AVP匹配的属性和行动的消息上下文对象。
[0079] 消息词典245可以是能够存储一个或多个上下文工件的任何计算机可读介质。 因此,消息词典245可以包括机器可读存储介质,例如只读存储器(ROM)、随机存取存储器 (RAM)、磁盘存储介质、光存储介质、闪存设备、和/或类似的存储媒体。消息词典245可以 包括例如XML文件的适当形式的各种消息定义。消息词典245可以包括多个包含在供应商 提供的DRA 200中的预定的定义。在各种实施例中,用户能够经由用户接口 225提供新的、 用户定义的消息定义。例如,如果用户希望支持还未由预定的定义限定的应用程序,用户可 以生成或以其他方式获得定义文件以存储在消息词典245中。在各种实施方式的定义文件 中,用户定义的定义可以与预定的定义存储在消息词典245的不同部分,例如不同的目录 中。
[0080] 在各种实施例中,用户还可以能够经由用户接口 225扩展预定的定义。用户可以 能够提供扩展定义,所述扩展定义新AVP或指定发生在特定消息类型中的附加 AVP。例如, 用户可能希望在Rx AAR内支持专有AVP。为了提供这样的支持,用户可以提供定义专有AVP 和指示该专有AVP可以存在于Rx AAR中的定义文件,如XML文件。这种扩展定义也可以存 储在消息词典245中与预定的定义不同的区域。消息上下文模块232可以被配置为在实 例化新的消息上下文对象或提供上下文元数据至用户接口 225时,应用任何适用的扩展定 义。
[0081] 如上所述,在接收Diameter消息时,消息处理器210可以提取应用和指令类型并 将此信息传递到上下文创建器230,上下文创建器230随后可以定位任何适用的定义,以实 例化新接收的消息上下文对象。接收的消息子模块233还可以被配置为将新的上下文对象 与接收的Diameter消息本身相关联。例如,接收的消息子模块233可以从Diameter堆栈 205复制接收的Diameter消息成私有或受保护变量。可替换地,接收的消息子模块233可 以存储对实现经由Diameter消息堆栈205的API访问Diameter消息时有用的Diameter 标识。
[0082] 在各种实施例中,DRA 200可以支持使用逆消息上下文。在这样的实施例中,在从 接收的Diameter消息提取命令类型时,消息处理器210也可以识别逆指令类型。在一些这 样的实施例中,消息处理器210可以实现识别每个消息命令的逆的查找表。例如,在确定接 收的Diameter消息是Gx CCR时,消息处理器可以确定逆消息会是Gx CCA。消息处理器210 也可以将此信息传递到上下文创建器230。
[0083] 在接收到逆消息类型时,消息上下文模块232可以用类似于上面描述的方式关于 接收到的消息上下文对象来实例化逆消息上下文对象。相关的请求子模块234或相关的应 答子模块235,适当时,也可以将新的上下文对象与消息数据相关联。如果逆消息是请求消 息,相关的请求模块234可以识别存储在Diameter堆栈205中的先前处理的请求并且将该 消息以类似于上面描述的方式与新的上下文对象关联。在各种实施例中,当接收应答消息 时,Diameter堆栈205可以定位先前处理和转发的对应于应答消息的请求消息。Diameter 堆栈205可以通过上下文创建器230或DRA 200的其他组件使用的API来呈现该相关的请 求消息。通过将先前的请求消息与相关请求上下文对象相关联,规则引擎215可以被提供 能够访问由请求消息携带的AVP的属性,其中所述请求消息促进了正被处理的应答消息的 发送。
[0084] 当所述逆消息是应答消息时,一方面,相关的应答模块235可以通过例如经由 Diameter堆栈205构造应答消息的API发起请求来构造新的应答消息。新应答消息可以是 完全空白的,或者可以包括从接收的Diameter请求消息复制过来的至少一些值。相关的应 答模块235可以用类似于上面描述的方式对接收的消息的模块233将新的上下文对象中于 新的应答消息相关联。然后,相关的应答上下文对象可以向规则引擎215提供到能够修改 新的应答消息的各种动作的访问。例如,规则引擎可以利用相关应答上下文对象的动作来 设定应答消息的结果码AVP,由此向消息处理器210表明应答应发送回发送接收的请求的 装置。然后,消息处理器210还可以避免转发所接收的请求消息到任何其他装置。
[0085] 如上文所述,上下文创建器230可以能够确定不表示Diameter消息的其他上下文 对象。这样的上下文对象可以被称为"计算上下文"(computational context),并且也可 以通过上下文工件存储240中的上下文工件来定义。例如,路由决策上下文模块236可以 被配置为实例化路由决策上下文对象。这样的路由决策上下文可以为每个接收的Diameter 消息识别可能适用于接收到的消息的先前作出的路由决策。这种先前作出的路由决策可以 被会话标识符一起存储在路由决策数据库250,用于将接收的消息与先前处理的消息相互 关联。路由决策数据库250可以是能够存储这样的路由决策的任何计算机可读介质。因此, 路由决策数据库250可以包括机器可读存储介质,例如只读存储器(ROM)、随机存取存储器 (RAM)、磁盘存储介质、光存储介质、闪存设备、和/或类似存储介质。
[0086] 计算上下文可通过其他DPA 200功能支持。例如,DPA200可以包括周期性地从路 由决策数据库250移除陈旧条目的清理模块255。在一些实施方案中,所述路由决策的上下 文对象可以不直接与清理模块255交互。相反,清理模块255可以独立地操作,同时通过修 改路由决策数据库250中的内容间接地影响路由决策上下文对象的行为。
[0087] 作为计算上下文的另一示例,订户记录上下文模块238可以生成订户记录上下文 对象。订户记录上下文对象可以利用其他的DRA 200功能,例如订户记录检索器260,对接 收的Diameter消息检索订户记录。订户记录检索器260可以包括硬件或者机器可读存储 介质上被配置为经由Diameter堆栈205与订户简档库(SPR)进行通信以对Diameter消息 检索订户记录的可执行指令。这样的通信可以例如根据Sp应用进行。执行订户记录检索 器260的各种方法将是显而易见的。通过该订户记录的检索,订户记录上下文对象可以向 规则引擎215可以提供对订户记录的访问。
[0088] 应当指出的是,虽然规则存储器220、上下文工件存储240、消息词典245、和路由 决策数据库250被示为单独设备,其中的一个或多个组件可以驻留在多个存储设备上。此 夕卜,这些组件中的一个或多个可以共享存储装置。例如,规则存储器、上下文工件存储器 240、消息词典245和路由决策数据库250可以全部指代相同硬盘或快闪存储器装置的多个 部分。
[0089] 图3示出用于处理Diameter消息的示例性方法300。方法300可通过诸如 Diameter堆栈205、消息处理器210、规则引擎215、或上下文创建器230的DRA 200的组件 来执行。
[0090] 方法300可开始于步骤305并继续进行到步骤310,在步骤310中,DRA200可以接 收要被处理的Diameter消息。接着,在步骤315中,DRA200可以从接收到的Diameter消 息提取消息类型。在各种实施例中,该消息类型可以通过应用和消息的指令的类型来定义。 然后,在步骤320中,DRA可以使用所提取的消息类型建立消息上下文对象以包裹(wrap)接 收的Diameter消息。以类似的方式,DRA 200可以在步骤325中为Diameter消息的逆建 立消息上下文对象。例如,DRA 200可以使用查找表来识别所提取的消息类型的逆消息类 型以及基于逆消息类型请求新的消息上下文。
[0091] 然后,DRA 200在步骤330中着手建立其他任何计算上下文对象,DRA 200对该计 算上下文对象存储上下文工件或者规则引擎可以请求该计算上下文对象。例如,DRA 200可 以建立路由决策上下文对象和订户记录上下文对象。在至少适当的上下文对象已经被实例 化之后,方法300可以进行到步骤335,在步骤335,DRA 200可以选择一个或多个适当的规 则组以在处理接收到的Diameter消息时评估。在各种实施例中,DRA 200可以为每个消息 类型存储一个规则组。在一些实施方案中,DRA 200可以另外或替代地存储普遍适用于所 有Diameter消息、特定应用的所有Diameter消息、或者Diameter消息的另一个子组的规 则组。
[0092] 识别适当的规则组后,DRA 200可以针对在步骤340中实例化的上下文评估所选 择的规则组或表。各个规则可以包括对上下文对象的各种组分引用,在本文中称为"上下文 对象引用"。这样的组分可以构成上下文对象的属性或动作。为了评估包括这类引用的规 贝IJ,DRA可以访问引用的组分。例如,可以在比较中使用上下文对象的属性,以确定规则是 否适用,或者上下文对象的动作是否可以在应用规则的结果时使用。对上下文对象的引用 的各种附加用途将是显而易见的。在应用适当的规则组后,DRA 200可以在步骤345中例 如发送一个或多个消息发送到其他设备。例如,DRA可以转发可以被修改的Diameter消息 到另一个设备,或者可以向接收的消息的设备回送应答。方法300可以进行到步骤350结 束。
[0093] 图4示出用于使用上下文工件的示例性方法400。例如,在系统启动时、经用户接 口请求、或者在接收Diameter消息时,方法400可以通过DRA 200的部件,例如,用户接口 225或上下文创建器230的来执行。应当理解的是,上下文工件可以被用来定义计算上下文 以及消息上下文。
[0094] 方法400可以开始在步骤405,进入步骤410,其中DRA可以扫描一个或多个上下 文工件的目录来处理。在各种实施例中,DRA可以处理位于存储设备或在特定目录中的所 有上下文工件,或者可以只处理要处理的工件列表中指定的上下文工件。定位上下文工件 之后,方法400可以前进到步骤415,其中DRA可以向系统添加上下文对象类型以由规则引 擎、用户接口或上下文创建器使用。在各种实施例中,例如上下文工件限定一个或多个Java 类的实施例,步骤415可以包括解释上下文工件,以实现具有由类定义的上下文对象类型 上下文对象的实例化。用于利用上下文工件以便能够使用新的上下文对象类型放入各种其 他方法将是显而易见的。
[0095] 接下来,在步骤420中,DRA可以提取上下文对象的上下文对象类型的任何元数 据。例如,如将要参照图5更详细地描述的,上下文工件可以包括为上下文对象类型、属性、 或动作指定用户友好名称的注释或标记。DRA可以存储该元数据以供用户接口或规则引擎 使用。接着,在步骤425中,DRA可以确定附加上下文工件是否留待处理。如果附加上下文 工件遗留,方法400可循环返回到步骤410,否则,方法400可进行到结束步骤430。
[0096] 如上文所述,上下文工件可以包括指定各种元数据的注释或标记用于通过由DRA 使用。例如,对于的上下文对象"Floober"的上下文工件可以部分地如下读出:
[0097]
【权利要求】
1. 一种由Diameter路由代理(DRA)执行的用于处理Diameter消息的方法: 在DRA上从源设备接收(310) Diameter消息; 响应于接收所述Diameter消息,建立(330, 700)路由决策上下文对象,其中所述路由 决策上下文对象与选择要接收先前消息的目标设备相关联; 评估(340)包括上下文对象引用的规则,其中,所述评估包括基于上下文对象引用来 访问路由决策上下文对象;以及 基于规则的评估发送(345)消息。
2. 如权利要求1所述的方法,其中,基于规则的评估发送(345)消息包括:发送所述 Diameter消息至所述目标设备。
3. 如权利要求1-2任一项所述的方法,其中,所述Diameter消息与第一 Diameter应用 相关联,并且所述先前消息与第二Diameter应用相关联。
4. 如权利要求1-3任一项所述的方法,进一步包括,在接收所述Diameter消息之前: 在DRA上接收(310)所述先前消息; 确定(340)所述先前消息应该被路由到所述目标设备; 发送(345)所述先前消息到所述目标设备;以及 将所述先前消息的标识和所述目标设备作为路由决策存储。
5. 如权利要求4所述的方法,其中访问所述路由决策上下文对象包括:更新与所述路 由决策相关联的时间戳。
6. 如权利要求4-5任一项所述的方法,进一步包括: 基于与所述路由决策相关联的时间戳,确定所述路由决策应该被删除;和 从所述DRA的存储器中删除所述路由决策。
7. 如权利要求1-6任一项所述的方法,其中,建立路由决策上下文对象以及访问路由 决策上下文对象的至少一个包括: 从所述Diameter消息提取(710)至少一条标识信息;以及 确定(720)所述至少一条标识信息对应于所述先前消息。
8. 一种用于处理Diameter消息的Diameter路由代理(DRA),所述DRA包括: 规则存储器(220),被配置为存储包括上下文对象引用的规则; 路由决策数据库(250),被配置为存储先前路由决策,其中所述先前路由决策包括为先 前消息所选择的目标设备的标识; Diameter堆栈(205),被配置为从源设备Diameter接收消息; 上下文创建器(230),被配置为基于接收Diameter消息建立路由决策上下文对象,其 中所述路由决策上下文对象与所述先前路由决策相关联; 规则引擎(215),被配置为评估该规则,其中,所述评估包括基于所述上下文对象引用 访问所述路由决策上下文对象;以及 消息处理器(210),被配置为基于该规则的评估经由所述Diameter堆栈发送消息。
9. 如权利要求8所述的DRA,其中,在基于该规则的评估发送消息时,所述消息处理器 (210)被配置为发送所述Diameter消息至所述目标设备。
10. 如权利要求8-9任一项所述的DRA,其中所述Diameter消息与第一 Diameter应用 相关联,所述先前消息与第二Diameter应用相关联。
11. 如权利要求8-10任一项所述的DRA,其中: 所述Diameter堆栈(205)进一步被配置为在接收所述Diameter消息之前接收所述先 前消息; 所述规则引擎(215)还被配置为确定所述先前消息应该被路由到所述目标设备;以及 路由决策上下文对象(620)被配置为,基于所述规则引擎的访问,存储所述先前消息 的标识和所述目标设备作为路由决策。
12. 如权利要求11所述的DRA,其中所述路由决策上下文对象(620)被配置为,基于所 述规则引擎的访问,更新与所述路由决策相关联的时间戳。
13. 如权利要求11-12任一项所述的DRA,进一步包括清理模块(255),所述清理模块 (255)被配置为: 基于与所述路由决策相关联的时间戳确定所述路由决策应被删除;以及 从DRA的存储器中删除所述路由决策。
14. 如权利要求8-13任一项所述的DRA,其中,所述路由决策上下文对象¢20)被配置 为: 从所述Diameter消息提取至少一条标识信息;以及 确定所述至少一条标识信息对应于所述先前消息。
【文档编号】H04L12/701GK104350713SQ201380028275
【公开日】2015年2月11日 申请日期:2013年5月28日 优先权日:2012年5月29日
【发明者】P·K·乔根森, R·A·曼 申请人:阿尔卡特朗讯公司