理解を容易にするために、実質的に同じもしくは同様の構造または実質的に同じもしくは同様の機能を有する要素を示すために同一の参照番号が使用されている。
説明および図面は、単に本発明の原理を示すに過ぎない。したがって、当業者が、本明細書において明示的に説明または図示されていないが、本発明の原理を具現化し、本発明の範囲内に含まれるさまざまな構成に想到することができることが理解されるであろう。さらに、本明細書に示されたすべての例は、もっぱら、本発明の原理、および当技術分野の発展のために(1人または複数の)発明者によってもたらされた概念を読者が理解することを助けるための教示のみを目的とするように明確に意図されており、そのような具体的に示された例および条件に限定されないと解釈されるべきである。加えて、本明細書において使用されるとき、用語「または(or)」は、そうでないことが示され(例えば、「さもなくば(or else)」または「またはその代替として(or in the alternative)」)ていない限り非排他的なまたは(or)(すなわち、および/または(and/or))を指す。また、本明細書において説明されるさまざまな実施形態は、新しい実施形態を形成するために一部の実施形態が1つまたは複数のその他の実施形態と組み合わされ得るので、必ずしも互いに排他的であるとは限らない。本明細書において使用されるとき、用語「コンテキスト」および「コンテキストオブジェクト」は、そうでないことが示されない限り同義であると理解される。
今日利用可能なDiameterルーティングエージェント(DRA)は、典型的にはハードコーディングまたはスクリプティングで定義される基本的な機能だけを提供する。したがって、概して、ユーザは、DRAのより複雑な挙動を容易で柔軟に定義することができるようにされない可能性がある。以上のことに鑑みて、DRAメッセージ処理の挙動のユーザ定義および拡張を容易にする方法およびシステムを提供することが望ましい。
図1は、Diameterルーティングエージェント(DRA)142のための例示的なネットワーク環境100を示す。例示的なネットワーク環境100は、さまざまなサービスを提供するための加入者ネットワークである可能性がある。さまざまな実施形態において、加入者ネットワーク100は、公衆陸上モバイルネットワーク(PLMN:public land mobile network)である可能性がある。例示的な加入者ネットワーク100は、さまざまなサービスへのアクセスを提供するための電気通信ネットワークまたはその他のネットワークである可能性がある。例示的な加入者ネットワーク100は、ユーザ機器110、基地局120、進化型パケットコア(EPC)130、パケットデータネットワーク150、およびアプリケーション機能(AF)160を含み得る。
ユーザ機器110は、エンドユーザにデータサービスを提供するためにパケットデータネットワーク150と通信するデバイスである可能性がある。そのようなデータサービスは、例えば、音声通信、テキストメッセージング、マルチメディアストリーミング、およびインターネットアクセスを含み得る。より詳細には、さまざまな例示的な実施形態において、ユーザ機器110は、パーソナルもしくはラップトップコンピュータ、無線電子メールデバイス、セル電話、タブレット、テレビセットトップボックス、またはEPC130を介してその他のデバイスと通信することができる任意のその他のデバイスである。
基地局120は、ユーザ機器110とEPC130との間の通信を可能にするデバイスである可能性がある。例えば、基地局120は、関連する3GPP規格によって定義された進化型nodeB(eNodeB)などの無線基地局である可能性がある。したがって、基地局120は、電波などの第1の媒体を介してユーザ機器110と通信し、イーサネット(登録商標)ケーブルなどの第2の媒体を介してEPC130と通信するデバイスである可能性がある。基地局120は、EPC130と直接通信する可能性があるか、またはいくつかの中間ノード(図示せず)を介して通信する可能性がある。さまざまな実施形態においては、ユーザ機器110にモビリティを提供するために複数の基地局(図示せず)が存在する可能性がある。さまざまな代替的な実施形態において、ユーザ機器110は、EPC130と直接通信する可能性があることに留意されたい。そのような実施形態においては、基地局120は存在しない可能性がある。
進化型パケットコア(EPC)130は、ユーザ機器110にパケットデータネットワーク140へのゲートウェイアクセスを提供するデバイスまたはデバイスのネットワークである可能性がある。さらに、EPC130は、提供されるデータサービスの使用について加入者に課金し、特定の体感品質(QoE)の基準が満たされることを保証することができる。このように、EPC130は、少なくとも部分的に、関連する3GPP規格に準じて実装され得る。EPC130は、サービングゲートウェイ(SGW)132、パケットデータネットワークゲートウェイ(PGW)134、およびセッション制御デバイス140を含み得る。
サービングゲートウェイ(SGW)132は、EPC130へのゲートウェイアクセスを提供するデバイスである可能性がある。SGW132は、ユーザ機器110によって送信されたパケットを受信するEPC130内の第1のデバイスのうちの1つである可能性がある。さまざまな実施形態は、SGW132の前にパケットを受信するモビリティ管理エンティティ(MME)(図示せず)も含み得る。SGW132は、そのようなパケットをPGW134に転送することができる。SGW132は、例えば、複数の基地局(図示せず)間のユーザ機器110のモビリティの管理、および提供されている各フローに関する特定のサービス品質(QoS)特性の施行などのいくつかの機能を実行することができる。プロキシモバイルIP(Proxy Mobile IP)規格を実装する実装などのさまざまな実装において、SGW132は、ベアラバインディングおよびイベント報告機能(BBERF:Bearer Binding and Event Reporting Function)を含み得る。さまざまな例示的な実施形態において、EPC130は、複数のSGW(図示せず)を含む可能性があり、各SGWが、複数の基地局(図示せず)と通信する可能性がある。
パケットデータネットワークゲートウェイ(PGW)134は、パケットデータネットワーク140へのゲートウェイアクセスを提供するデバイスである可能性がある。PGW134は、ユーザ機器110によってSGW132を介してパケットデータネットワーク140に送信されたパケットを受信するEPC130内の最後のデバイスである可能性がある。PGW134は、各サービスデータフロー(SDF)に関するポリシーおよび課金制御(PCC)規則を施行するポリシーおよび課金施行機能(PCEF:policy and charging enforcement function)を含み得る。したがって、PGW134は、ポリシーおよび課金施行ノード(PCEN:policy and charging enforcement node)である可能性がある。PGW134は、例えば、パケットフィルタリング、ディープパケットインスペクション、および加入者課金のサポートなどのいくつかの追加的な特徴を含み得る。PGW134は、知られていないアプリケーションサービスに対するリソース割り当てを要求する役割を担う可能性もある。
セッション制御デバイス140は、EPC130内のさまざまな管理またはその他の機能を提供するデバイスである可能性がある。例えば、セッション制御デバイス140は、ポリシーおよび課金規則機能(PCRF:Policy and Charging Rules Function)を提供する可能性がある。さまざまな実施形態において、セッション制御デバイス140は、Alcatel Lucent 5780 Dynamic Services Controller(DSC)を含み得る。セッション制御デバイス140は、DRA142、複数のポリシーおよび課金規則ブレード(PCRB:policy and charging rules blade)144、146、ならびに加入者プロファイルリポジトリを含み得る。
以下でより詳細に説明されるように、DRA142は、インテリジェントなDiameterルーティングエージェントである可能性がある。したがって、DRA142は、さまざまなDiameterメッセージを受信、処理、および送信することができる。DRA142は、DRA142が出くわす可能性があるさまざまなDiameterメッセージに関するDRA142の挙動を管理するいくつかのユーザ定義の規則を含み得る。そのような規則に基づいて、DRA142は、リレーエージェント、プロキシエージェント、またはリダイレクトエージェントとして動作する可能性がある。例えば、DRA142は、受信されたメッセージを適切な受信側デバイスに中継する可能性がある。そのようなルーティングは、到着するメッセージおよび出て行くメッセージ、ならびにセッション制御デバイスの内部のメッセージに対して実行される可能性がある。
ポリシーおよび課金規則ブレード(PCRB)144、146は、それぞれ、アプリケーションサービスの要求を受信し、PCC規則を生成し、PCC規則をPGW134またはその他のPCEN(図示せず)に提供するデバイスまたはデバイスのグループである可能性がある。PCRB144、146は、RxインターフェースによってAF160と通信する可能性がある。AF160に関連して以下でさらに詳細に説明されるように、PCRB144、146は、AF160から認証および認可要求(AAR)の形態のアプリケーション要求を受信する可能性がある。AARを受信すると、PCRB144、146は、アプリケーション要求を満たすための少なくとも1つの新しいPCC規則を生成することができる。
PCRB144、146は、それぞれGxxおよびGxインターフェースによってSGW132およびPGW134とやはり通信する可能性がある。PCRB144、146は、SGW132またはPGW134からクレジット制御要求(CCR:credit control request)の形態でアプリケーション要求を受信する可能性がある。AARと同様に、CCRを受信すると、PCRB144、146は、アプリケーション要求を満たすための少なくとも1つの新しいPCC規則を生成することができる。さまざまな実施形態において、AARおよびCCRは、別々に処理されるべき2つの独立したアプリケーション要求を表す可能性があり、一方、その他の実施形態においては、AARおよびCCRは、単一のアプリケーション要求に関する情報を運ぶ可能性があり、PCRB144、146は、AARとCCRとの組み合わせに基づいて少なくとも1つのPCC規則を生成する可能性がある。さまざまな実施形態において、PCRB144、146は、単一のメッセージのアプリケーション要求と、対のメッセージのアプリケーション要求との両方を処理することができる可能性がある。
新しいPCC規則を生成すると、またはPGW134によって要求されると、PCRB144、146は、Gxインターフェースを介してPGW134にPCC規則を与える可能性がある。例えば、プロキシモバイルIP(PMIP)規格を実装する実施形態などのさまざまな実施形態において、PCRB144、146は、QoS規則も生成する可能性がある。新しいQoS規則を生成すると、またはSGW132によって要求されると、PCRB144、146は、Gxxインターフェースを介してSGW132にQoS規則を与える可能性がある。
加入者プロファイルリポジトリ(SPR)148は、加入者ネットワーク100への加入者に関連する情報を格納するデバイスである可能性がある。したがって、SPR148は、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスクストレージ媒体、光学式ストレージ媒体、フラッシュメモリデバイス、および/または同様のストレージ媒体などの機械可読ストレージ媒体を含み得る。SPR148は、PCRB144、146のうちの1つのコンポーネントである可能性があるか、またはEPC130またはセッション制御デバイス140内の独立したノードを構成する可能性がある。SPR138によって格納されるデータは、それぞれの加入者の識別子、帯域幅の制限、課金パラメータ、および加入者の優先度などの加入者情報を含み得る。
パケットデータネットワーク150は、ユーザ機器110と、AF160などのパケットデータネットワーク150に接続されたその他のデバイスとの間のデータ通信を提供するための任意のネットワークである可能性がある。パケットデータネットワーク150は、パケットデータネットワーク150と通信するさまざまなユーザデバイスに、例えば、電話またはインターネットサービスをさらに提供する可能性がある。
アプリケーション機能(AF)160は、ユーザ機器110に知られているアプリケーションサービスを提供するデバイスである可能性がある。したがって、AF160は、ユーザ機器110に、例えば、ビデオストリーミングまたは音声通信サービスを提供するサーバまたはその他のデバイスである可能性がある。さらに、AF160は、Rxインターフェースを介してEPC130のPCRB144、146と通信する可能性がある。AF160は、ユーザ機器110への知られているアプリケーションサービスの提供を開始すべきであるとき、Diameterプロトコルにしたがって認証および認可要求(AAR)などのアプリケーション要求メッセージを生成して、アプリケーションサービスにリソースが割り当てられるべきであることをPCRB144、146に知らせることができる。このアプリケーション要求メッセージは、アプリケーションサービスを使用する加入者の識別情報、加入者のIPアドレス、関連するIP−CANセッションに関するAPN、または要求されたサービスを提供するために確立されなければならない特定のサービスデータフローの識別情報などの情報を含み得る。
理解されるであろうように、さまざまなDiameterアプリケーションが、加入者ネットワーク100内で確立され、DRA142によってサポートされる可能性がある。例えば、Rxアプリケーションが、AF160とPCRB144、146のそれぞれとの間で確立される可能性がある。別の例として、Spアプリケーションが、SPR148とPCRB144、146のそれぞれとの間で確立される可能性がある。さらに別の例として、S9アプリケーションが、PCRB144、146のうちの1つまたは複数と、別のPCRFを実装する遠隔のデバイス(図示せず)との間で確立される可能性がある。理解されるであろうように、多数のその他のDiameterアプリケーションが、加入者ネットワーク100内で確立される可能性がある。
さまざまな潜在的なDiameterアプリケーションをサポートする際、DRA142は、Diameterメッセージを受信し、メッセージを処理し、処理に基づいてアクションを実行することができる。例えば、DRA142は、PGW134からGx CCRを受信し、Gx CCRを処理するための適切なPCRB144、146を識別し、識別されたPCRB144、146にGx CCRを転送する可能性がある。DRA142は、PCRB144、146によって送信された後続のGx CCAを、PCRB144、146の代わりにDRA142を指す送信元ホストの識別情報を運ぶように修正することによってプロキシとして動作する可能性もある。追加的にまたは代替的に、DRA142は、リダイレクトエージェントとして動作するか、またはそうでなければ、適切な応答メッセージを形成し、適切な要求元デバイスに応答メッセージを送信することによって要求メッセージに直接応答する可能性がある。
図2は、例示的なDiameterルーティングエージェント(DRA)200を示す。DRA200は、スタンドアロンのデバイス、または別のシステムの構成要素である可能性がある。例えば、DRA200は、例示的な環境100のDRA142に対応する可能性がある。そのような実施形態において、DRA142は、Gx、Gxx、Rx、またはSpなどの3GPPによって定義されたさまざまなDiameterアプリケーションをサポートする可能性がある。DRA200は、追加的なまたは代替的なアプリケーションがサポートされるさまざまな代替的な実施形態で配備され得ることが理解されるであろう。したがって、本明細書において説明される方法およびシステムが、概して、任意のDiameterアプリケーションをサポートすることに適用され得る可能性があることは、明らかであろう。
DRA200は、Diameterスタック205、メッセージハンドラ210、規則エンジン215、規則ストレージ220、ユーザインターフェース225、コンテキスト生成器230、コンテキストアーチファクトストレージ240、メッセージ辞書245、ルーティング決定データベース250、クリーンアップモジュール255、または加入者レコード取得器260などのいくつかの構成要素を含み得る。
Diameterスタック205は、Diameterプロトコルにしたがってその他のデバイスとメッセージを交換するように構成されたハードウェアまたは機械可読ストレージ媒体上の実行可能命令を含み得る。Diameterスタック205は、その他のデバイスと通信するように構成されたハードウェアまたは機械可読ストレージ媒体上に符号化された実行可能命令を含むインターフェースを含み得る。例えば、Diameterスタック205は、イーサネットまたはTCP/IPインターフェースを含む可能性がある。さまざまな実施形態において、Diameterスタック205は、複数の物理ポートを含み得る。
また、Diameterスタック205は、Diameterプロトコルにしたがってメッセージを読み、構築するように構成され得る。例えば、Diameterスタックは、CCR、CCA、AAR、AAA、RAR、およびRAAメッセージを読み、構築するように構成される可能性がある。Diameterスタック205は、DRA200のその他の構成要素がDiameterスタックの機能性を呼び出すことができるようにアプリケーションプログラムインターフェース(API)を提供する可能性がある。例えば、規則エンジン215は、APIを利用して、受信されたCCRから属性−値ペア(AVP)を読み、新しいCCAのAVPを修正することができる可能性がある。さまざまなさらなる機能が、以下の説明から明らかになるであろう。
メッセージハンドラ210は、受信されたメッセージを解釈し、必要に応じて規則エンジン215を呼び出すように構成されたハードウェアまたは機械可読ストレージ媒体上の実行可能命令を含み得る。さまざまな実施形態において、メッセージハンドラ210は、Diameterスタック205によって受信されたメッセージからメッセージタイプを抽出し、抽出されたメッセージタイプに適する規則の組を用いて規則エンジンを呼び出すことができる。例えば、メッセージタイプは、受信されたメッセージのアプリケーションおよびコマンドによって定義される可能性がある。規則エンジン215が1つまたは複数の規則の評価を終えた後、メッセージハンドラ210は、規則エンジン215によって呼び出された1つまたは複数のコンテキストオブジェクトのアクションに基づいてDiameterスタックを介して1つまたは複数のメッセージを送信することができる。
規則エンジン215は、規則ストレージ220に格納された1つまたは複数の規則を評価することによって受信されたメッセージを処理するように構成されたハードウェアまたは機械可読ストレージ媒体上の実行可能命令を含み得る。したがって、規則エンジン215は、ある種の処理エンジンである可能性がある。規則エンジン215は、1つまたは複数の規則を取り出し、規則の基準を評価して規則が適用可能であるかどうかを判定し、任意の適用可能な規則の1つまたは複数の結果を指定することができる。例えば、規則エンジン215は、受信されたGx CCRがDRA200を識別する送信先ホストAVPを含むときに、規則が適用可能であると判定する可能性がある。規則は、メッセージが転送される前に送信先ホストAVPがPCRBを識別するように変更されるべきであることを指定する可能性がある。
規則ストレージ220は、規則エンジン215による評価のための1つまたは複数の規則を格納することができる任意の機械可読媒体である可能性がある。したがって、規則ストレージ220は、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスクストレージ媒体、光学式ストレージ媒体、フラッシュメモリデバイス、および/または同様のストレージ媒体などの機械可読ストレージ媒体を含み得る。さまざまな実施形態において、規則ストレージ220は、1つまたは複数の規則の組を二分決定木データ構造として格納する可能性がある。規則の組を格納するためのさまざまなその他のデータ構造は、明らかであろう。
さまざまな構成要素は、規則を評価することまたは規則に基づいてコンテキストオブジェクトにアクセスすることなどの機能を実行するように構成されるものとして説明されるが、そのような構成は、任意の規則が規則ストレージに存在することを必要としない可能性があることが理解されるであろう。例えば、規則エンジン215が、たとえコンテキストオブジェクトの参照を含む規則が規則ストレージ220に格納されていないとしてもそのような規則を評価するように構成される可能性がある。その後、ユーザがそのような規則を規則ストレージに追加する場合、規則エンジン215は、本明細書において説明されるように規則を処理することができる。換言すれば、本明細書において使用されるとき、語句「〜ように構成された(configured to)」は、規則に関する機能性に関連して使用されるとき、構成要素が、そのような機能性を要求する規則が実際に存在するかどうかに関わらず必要に応じて機能性を実行することができることを意味すると理解される。
ユーザインターフェース225は、ユーザとのコミュニケーションを可能にするように構成されたハードウェアまたは機械可読ストレージ媒体上の実行可能命令を含み得る。したがって、ユーザインターフェース225は、(Diameterスタック205に含まれるネットワークインターフェースなどの)ネットワークインターフェース、モニタ、キーボード、マウス、またはタッチ感知式ディスプレイを含み得る。ユーザインターフェース225は、ユーザのインタラクションを容易にするためのグラフィカルユーザインターフェース(GUI)も提供する可能性がある。ユーザインターフェース225は、ユーザがDRA200の挙動をカスタマイズすることを可能にし得る。例えば、ユーザインターフェース225は、規則ストレージ220に格納し、規則エンジン215により評価するための規則をユーザが定義することを可能にし得る。ユーザがユーザインターフェース225を介してDRA200の挙動をカスタマイズするためのさまざまなさらなる方法は、当業者に明らかであろう。
さまざまな実施形態によれば、規則ストレージ220は、1つまたは複数の「コンテキスト」または「コンテキストオブジェクト」を参照する規則を含み得る。そのような実施形態において、コンテキスト生成器230は、コンテキストオブジェクトをインスタンス化し、要求元構成要素にコンテキストオブジェクトのメタデータを提供するように構成されたハードウェアまたは機械可読ストレージ媒体上の実行可能命令を含み得る。コンテキストオブジェクトは、コンテキスト生成器230によってランタイムでインスタンス化される可能性があり、規則エンジン215をサポートし、ユーザがユーザインターフェース225を介して複雑な規則を定義することを可能にするために有用な属性またはアクションを含む可能性がある。例えば、コンテキスト生成器230は、さまざまなDiameterメッセージ、前のルーティングの決定、または加入者プロファイルを示すコンテキストオブジェクトを提供する可能性がある。
DRA200が処理されるべきDiameterメッセージを受信すると、メッセージハンドラ210は、適切なコンテキストオブジェクトがインスタンス化されるべきであるという指示をコンテキスト生成器230に送信することができる。そのとき、コンテキスト生成器230は、そのようなコンテキストオブジェクトをインスタンス化することができる。一部の実施形態において、コンテキスト生成器230は、すべての知られているコンテキストオブジェクトをインスタンス化することができるか、または規則ストレージ220によって適用される規則の組によって実際に使用されるコンテキストオブジェクトのみをインスタンス化することができる。その他の実施形態において、コンテキスト生成器230は、コンテキストオブジェクトが規則エンジン215によって実際に要求されるまでそのコンテキストオブジェクトをインスタンス化しない可能性がある。
加えて、コンテキスト生成器230は、コンテキストのメタデータをユーザインターフェース225に提供することによって規則の生成を容易にする可能性がある。さまざまな実施形態において、コンテキスト生成器230は、どのコンテキストオブジェクトが規則の組が修正されるために利用可能である可能性があるか、およびどの属性またはアクションを各コンテキストオブジェクトが持っている可能性があるかをユーザインターフェース225に示すことができる。この情報を用いて、ユーザインターフェース225は、複雑な規則を生成するためのポイントアンドクリックインターフェースを表示することができる。例えば、ユーザインターフェース225は、構築または修正中の規則に含めるためにリストからコンテキストオブジェクトの所望の属性またはアクションをユーザが選択することを可能にする可能性がある。
コンテキスト生成器230は、コンテキストオブジェクトを確立する際に、コンテキストアーチファクトストレージ240に格納された1つまたは複数のコンテキストアーチファクトに依拠する可能性がある。したがって、コンテキストアーチファクトストレージ240は、1つまたは複数のコンテキストアーチファクトを格納することができる任意の機械可読媒体である可能性がある。したがって、コンテキストアーチファクトストレージ240は、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスクストレージ媒体、光学式ストレージ媒体、フラッシュメモリデバイス、および/または同様のストレージ媒体などの機械可読ストレージ媒体を含み得る。コンテキストアーチファクトストレージ240は、例えば、ランタイムライブラリなどのさまざまな形態でアーチファクトを格納する可能性がある。さまざまな実施形態において、そのようなランタイムライブラリは、Java(登録商標)アーカイブ(.jar)ファイルとして格納される可能性がある。
それぞれのコンテキストアーチファクトは、コンテキストオブジェクトのために利用可能な属性またはアクションを定義することができる。さまざまな実施形態において、コンテキストアーチファクトは、属性またはアクションがアクセスされるときに実行されるべき1つまたは複数の関数を定義することができる。そのような関数は、DiameterスタックのAPIにアクセスするなど、DRA200のその他の機能を利用する可能性があり、または属性またはアクションを呼び出した構成要素に値を返す可能性がある。コンテキストアーチファクトは、コンテキストオブジェクトのアクションおよび属性を記述するためにコンテキスト生成器230がユーザインターフェース225に提供するためのタグまたはその他のメタデータも含む可能性がある。例示的なDRA200において、コンテキストアーチファクトストレージ240は、メッセージコンテキスト、ルーティング決定コンテキスト、または加入者レコードコンテキストを定義するコンテキストアーチファクトを格納することができる。これらのコンテキストアーチファクトは、異なる種類のコンテキストオブジェクトをインスタンス化するためにコンテキスト生成器230によってランタイムで使用される可能性がある。したがって、コンテキスト生成器230は、メッセージコンテキストモジュール232、ルーティング決定コンテキストモジュール236、および加入者レコードコンテキストモジュール238を含むと見なされ得る。さまざまな実施形態において、ユーザは、既存のファイル(例えば、.jarファイル)を指定すること、またはユーザインターフェース225のテキストエディタを用いて新しいコンテキストアーチファクトを定義することによるなどして、コンテキストアーチファクトストレージに格納するために、ユーザインターフェース225を介して新しいコンテキストアーチファクトを定義することができる可能性がある。
メッセージコンテキストモジュール232は、Diameterメッセージを示し、Diameterメッセージへのアクセスを示し提供するコンテキストオブジェクトを生成するコンテキスト生成器230の能力を表す可能性がある。例えば、メッセージコンテキストモジュール232は、受信されたメッセージを示すコンテキストオブジェクトを生成する可能性がある。さまざまな実施形態において、メッセージコンテキストモジュール232は、必要に応じて、受信されたDiameterメッセージに関連する要求メッセージまたは応答メッセージを示すコンテキストオブジェクトを生成するようにやはり構成される可能性がある。したがって、メッセージコンテキストモジュール232は、受信メッセージサブモジュール233、関連要求サブモジュール234、および関連応答サブモジュール235を含むと見なされ得る。
Diameterメッセージの内容は、アプリケーションおよびコマンドの種類に応じて変わり得る。例えば、RX RAAメッセージは、GX CCRメッセージとは異なるデータを含む可能性がある。そのような違いは、関連するDiameterアプリケーションを管理するさまざまな規格によって定義される可能性がある。さらに、さまざまなベンダーが、プロプライエタリなまたはそうでなければ標準的でない定義を含む可能性がある。メッセージコンテキストモジュール232は、異なる種類のDiameterメッセージに関するメッセージコンテキストを生成するために、メッセージ辞書245に格納されたメッセージの定義に依拠する可能性がある。例えば、Diameterメッセージを受信すると、メッセージハンドラ210は、アプリケーションおよびコマンドタイプをコンテキスト生成器230に渡すことができる。そのとき、メッセージコンテキストモジュール232は、メッセージ辞書245内で一致する定義を見つけることができる。この定義は、指定された種類のメッセージに存在し得るAVPを示す可能性がある。そのとき、メッセージコンテキストモジュール232は、メッセージの定義で識別されたAVPに合致する属性およびアクションを有するメッセージコンテキストオブジェクトをインスタンス化することができる。
メッセージ辞書245は、1つまたは複数のコンテキストアーチファクトを格納することができる任意の機械可読媒体である可能性がある。したがって、メッセージ辞書245は、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスクストレージ媒体、光学式ストレージ媒体、フラッシュメモリデバイス、および/または同様のストレージ媒体などの機械可読ストレージ媒体を含み得る。メッセージ辞書245は、例えば、XMLファイルなどの適切な形態のさまざまなメッセージの定義を含み得る。メッセージ辞書245は、供給業者によってDRA200とともに含められたいくつかの予め定義された定義を含む可能性がある。さまざまな実施形態において、ユーザは、ユーザインターフェース225を介して新しいユーザ定義のメッセージの定義を与えることができる可能性がある。例えば、ユーザは、予め定義された定義によってまだ定義されていないアプリケーションをサポートしたい場合、メッセージ辞書245に格納するための定義ファイルを生成するかまたはそうでなければ取得することができる。さまざまな実施形態において、ユーザ定義の定義は、予め定義された定義とは異なるディレクトリなど、メッセージ辞書245の異なる部分に格納される可能性がある。
さまざまな実施形態において、ユーザは、ユーザインターフェース225を介して予め定義された定義を拡張することもできる可能性がある。ユーザは、特定のメッセージタイプに現れるべき新しいAVPを定義するか追加のAVPを指定する拡張定義を与えることができる可能性がある。例えば、ユーザは、Rx AAR内のプロプライエタリのAVPをサポートしたい可能性がある。そのようなサポートを提供するために、ユーザは、プロプライエタリのAVPを定義し、プロプライエタリのAVPがRx AARに存在する可能性があることを示すXMLファイルなどの定義ファイルを与える可能性がある。そのような拡張定義は、予め定義された定義とは異なるメッセージ辞書245の領域に格納される可能性もある。メッセージコンテキストモジュール232は、新しいメッセージコンテキストオブジェクトをインスタンス化するか、またはコンテキストのメタデータをユーザインターフェース225に提供するとき、任意の適用可能な拡張定義を適用するように構成され得る。
上述のように、Diameterメッセージを受信すると、メッセージハンドラ210は、アプリケーションおよびコマンドタイプを抽出し、この情報をコンテキスト生成器230に渡すことができ、次いで、コンテキスト生成器230が、新しい受信メッセージコンテキストオブジェクトをインスタンス化するために任意の適用可能な定義を見つけることができる。受信メッセージサブモジュール233は、新しいコンテキストオブジェクトを受信されたDiameterメッセージ自体に関連付けるようにさらに構成され得る。例えば、受信メッセージサブモジュール233は、受信されたDiameterメッセージをDiameterスタック205からprivateまたはprotected変数にコピーする可能性がある。代替的に、受信メッセージサブモジュール233は、Diameterスタック205のAPIを介してDiameterメッセージへのアクセスを可能にすることに役立つDiameterメッセージの識別情報を格納する可能性がある。
さまざまな実施形態において、DRA200は、逆(inverse)メッセージコンテキストの使用をサポートする可能性がある。そのような実施形態において、受信されたDiameterメッセージからコマンドタイプを抽出すると、メッセージハンドラ210は、逆コマンドタイプも識別することができる。一部のそのような実施形態において、メッセージハンドラ210は、それぞれのメッセージコマンドの逆を識別するルックアップテーブルを実装し得る。例えば、受信されたDiameterメッセージがGx CCRであると判定すると、メッセージハンドラは、逆メッセージがGx CCAであると判定する可能性がある。メッセージハンドラ210は、この情報もコンテキスト生成器230に渡すことができる。
逆メッセージタイプを受信すると、メッセージコンテキストモジュール232は、受信されたメッセージコンテキストオブジェクトに関連して上で説明されたのと同様にして逆メッセージコンテキストオブジェクトをインスタンス化することができる。関連要求サブモジュール234または関連応答サブモジュール235は、必要に応じて、新しいコンテキストオブジェクトをメッセージデータにやはり関連付けることができる。逆メッセージが要求メッセージである場合、関連要求モジュール234は、Diameterスタック205に格納された既に処理された要求メッセージを識別し、上で説明されたのと同様にしてメッセージを新しいコンテキストオブジェクトに関連付けることができる。さまざまな実施形態において、応答メッセージを受信すると、Diameterスタック205は、応答メッセージが対応する既に処理され、転送された要求メッセージを見つけることができる。Diameterスタック205は、コンテキスト生成器230またはDRA200のその他の構成要素による使用のためにAPIを通じてこの関連する要求メッセージを提示することができる。前の要求メッセージを関連する要求コンテキストオブジェクトに関連付けることによって、規則エンジン215は、処理されている応答メッセージの送信を促した要求メッセージによって運ばれたAVPにアクセスすることができる属性を与えられ得る。
一方、逆メッセージが応答メッセージであるとき、関連応答モジュール235は、例えば、APIを介して、Diameterスタック205が応答メッセージを構築することを要求することによって新しい応答メッセージを構築することができる。新しい応答メッセージは、全くの空である可能性があり、または受信されたDiameter要求メッセージからコピーされた少なくともいくつかの値を含む可能性がある。関連応答モジュール235は、受信メッセージモジュール233に関連して上で説明されたようにして新しいコンテキストオブジェクトを新しい応答メッセージに関連付けることができる。そのとき、関連する応答コンテキストオブジェクトは、新しい応答メッセージを修正することができるさまざまなアクションに規則エンジン215がアクセスすることができるようにする可能性がある。例えば、規則エンジンは、関連する応答コンテキストオブジェクトのアクションを利用して、応答メッセージの結果コード(result−code)AVPを設定する可能性があり、それによって、受信された要求を送信したデバイスに応答が返信されるべきであることをメッセージハンドラ210に示す。そのとき、メッセージハンドラ210は、受信された要求メッセージを任意のその他のデバイスに転送することを控える可能性もある。
上述のように、コンテキスト生成器230は、Diameterメッセージを示さないその他のコンテキストオブジェクトを定義することができる可能性がある。そのようなコンテキストオブジェクトは、「計算コンテキスト(computational context)」と呼ばれる可能性があり、コンテキストアーチファクトストレージ240のコンテキストアーチファクトによってやはり定義される可能性がある。例として、ルーティング決定コンテキストモジュール236は、ルーティング決定コンテキストオブジェクトをインスタンス化するように構成され得る。そのようなルーティング決定コンテキストは、それぞれの受信されたDiameterメッセージに関して、受信されたメッセージに適用することができる可能性がある前になされたルーティングの決定を識別することができる。そのような前になされたルーティングの決定は、受信されたメッセージを既に処理されたメッセージと相互に関連付けるためのセッション識別子とともにルーティング決定データベース250に格納され得る。ルーティング決定データベース250は、そのようなルーティングの決定を格納することができる任意の機械可読媒体である可能性がある。したがって、ルーティング決定データベース250は、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスクストレージ媒体、光学式ストレージ媒体、フラッシュメモリデバイス、および/または同様のストレージ媒体などの機械可読ストレージ媒体を含み得る。
計算コンテキストは、その他のDPA200の機能性によってサポートされる可能性がある。例えば、DPA200は、ルーティング決定データベース250から古いエントリを周期的に削除するクリーンアップモジュール255を含み得る。一部の実施形態において、ルーティング決定コンテキストオブジェクトは、クリーンアップモジュール255と直接インタラクションしない可能性がある。その代わりに、クリーンアップ255は、ルーティング決定データベース250の内容を修正することによって間接的にルーティング決定コンテキストオブジェクトの挙動に影響を与えながら独立して動作する可能性がある。
計算コンテキストの別の例として、加入者レコードコンテキストモジュール238は、加入者レコードコンテキストオブジェクトを生成することができる。加入者レコードコンテキストオブジェクトは、加入者レコード取得器260などのその他のDRA200の機能性を利用して、受信されたDiameterメッセージに関する加入者レコードを取り出すことができる。加入者レコード取得器260は、Diameterスタック205を介して加入者プロファイルリポジトリ(SPR)と通信してDiameterメッセージに関する加入者レコードを取り出すように構成されたハードウェアまたは機械可読ストレージ媒体上の実行可能命令を含み得る。そのような通信は、例えば、Spアプリケーションに応じて実行される可能性がある。加入者レコード取得器260を実装するさまざまな方法は、明らかであろう。加入者レコードのこの取り出しを通じて、加入者レコードコンテキストオブジェクトは、加入者レコードに規則エンジン215がアクセスできるようにする可能性がある。
規則ストレージ220、コンテキストアーチファクトストレージ240、メッセージ辞書245、およびルーティング決定データベース250は別々のデバイスとして示されているが、これらの構成要素のうちの1つまたは複数は、複数のストレージデバイスに存在する可能性があることに留意されたい。さらに、これらの構成要素のうちの1つまたは複数は、ストレージデバイスを共有する可能性がある。例えば、規則ストレージ、コンテキストアーチファクトストレージ240、メッセージ辞書245、およびルーティング決定データベース250は、すべて、同じハードディスクまたはフラッシュメモリデバイスの一部を指す可能性がある。
図3は、Diameterメッセージを処理するための例示的な方法300を示す。方法300は、例えば、Diameterスタック205、メッセージハンドラ210、規則エンジン215、またはコンテキスト生成器230などのDRA200の構成要素によって実行される可能性がある。
方法300は、ステップ305で始まり、DRA200が処理されるべきDiameterメッセージを受信することができるステップ310に進む可能性がある。次に、ステップ315において、DRA200が、受信されたDiameterメッセージからメッセージタイプを抽出する可能性がある。さまざまな実施形態において、メッセージタイプは、メッセージのアプリケーションおよびコマンドタイプによって定義される可能性がある。それから、ステップ320において、DRAが、抽出されたメッセージタイプを用いて、受信されたDiameterメッセージをラップするメッセージコンテキストオブジェクトを確立する可能性がある。同様にして、DRA200が、ステップ325において、Diameterメッセージの逆に関するメッセージコンテキストオブジェクトを確立する可能性がある。例えば、DRA200は、ルックアップテーブルを用いて、抽出されたメッセージタイプの逆メッセージタイプを識別し、逆メッセージタイプに基づいて新しいメッセージコンテキストを要求する可能性がある。
次いで、ステップ330において、DRA200が、DRA200がコンテキストアーチファクトを格納するかまたは規則エンジンが要求する可能性がある任意のその他の計算コンテキストオブジェクトを確立し始める可能性がある。例えば、DRA200は、ルーティング決定コンテキストオブジェクトおよび加入者レコードコンテキストオブジェクトを確立する可能性がある。適切なコンテキストオブジェクトが少なくともインスタンス化された後、方法300は、DRA200が受信されたDiameterメッセージを処理する際に評価すべき1つまたは複数の適切な規則の組を選択するステップ335に進む可能性がある。さまざまな実施形態において、DRA200は、それぞれのメッセージタイプに関する規則の組を格納することができる。一部の実施形態において、DRA200は、追加的にまたは代替的に、概して、すべてのDiameterメッセージ、特定のアプリケーションのすべてのDiameterメッセージ、またはDiameterメッセージの別のサブセットに適用可能な規則の組を格納することができる。
適切な規則の組を識別した後、DRA200が、ステップ340において、選択された規則の組またはテーブルを、インスタンス化されたコンテキストに対して評価する可能性がある。個々の規則は、本明細書においては「コンテキストオブジェクトの参照」と呼ばれるコンテキストオブジェクトのさまざまな構成要素に対する参照を含む可能性がある。そのような構成要素は、コンテキストオブジェクトの属性またはアクションを構成する可能性がある。そのような参照を含む規則を評価するために、DRAは、参照された構成要素にアクセスすることができる。例えば、コンテキストオブジェクトの属性が、規則が適用可能であるかどうかを判定するための比較に使用される可能性があり、またはコンテキストオブジェクトのアクションが、規則の結果を適用する際に使用される可能性がある。コンテキストオブジェクトに対する参照のさまざまなさらなる用途は、明らかであろう。適切な規則の組を適用した後、DRA200が、ステップ345において、1つまたは複数のメッセージをその他のデバイスに送信する可能性がある。例えば、DRAは、修正される可能性があるDiameterメッセージを別のデバイスに転送する可能性があり、または受信されたメッセージを送信したデバイスに応答を返送する可能性がある。方法300は、次に、ステップ350で終了する可能性がある。
上述のように、ステップ335および340は、異なる種類の規則の組の評価をともなう可能性がある。例えば、一部の実施形態においては、それぞれのメッセージタイプが、そのタイプのメッセージに当てはまる規則の組に関連付けられる可能性がある。したがって、1つの規則の組が、Gx CCRメッセージに適用される可能性がある一方、異なる規則の組は、Rx AARメッセージに適用される可能性がある。また、一部の実施形態は、概して、すべてのDiameterメッセージ、すべてのDiameter要求、またはすべてのDiameter応答に適用され得る規則の組を含む可能性がある。そのような実施形態において、DRA200は、複数の規則の組を順に評価する可能性がある。図4は、複数の規則の組を評価するための例示的な方法400を示す。方法400は、方法300のステップ335、340の代わりにDSC200の構成要素によって実行され得る。
方法400は、ステップ405で始まり、DRA200がステップ310で受信されたメッセージに適用可能である包括的な規則の組を識別することができるステップ410に進む可能性がある。例えば、DRA200は、概して、すべてのメッセージ、すべてのDiameterメッセージ、すべてのDiameter要求、またはすべてのDiameter応答に適用され得る規則の組を含む可能性がある。例えば、受信されたメッセージがGX CCRである場合、DRA200は、すべてのDiameter要求のための包括的な規則の組を識別する可能性がある。次いで、ステップ415において、DRA415が、識別された規則の組を評価する可能性がある。そのようにする際に、DRA200は、受信されたメッセージを修正するか、または送信元デバイスに返送されるべき異なるDiameterメッセージを生成する可能性がある。
包括的な規則の組を評価した後、方法400は、受信されたメッセージが要求メッセージであったかどうかをDRA200が判定することができるステップ420に進む可能性がある。メッセージが要求メッセージであった場合、方法400は、要求が応答されたかどうかをDRA200が判定することができるステップ425に進む可能性がある。例えば、ステップ415の間に、DRA200は、Diameter応答メッセージを生成または修正する可能性がある。ステップ425において、DRA200が、送信元デバイスへの送信のために応答メッセージが構築されたかどうかを判定するためにDiameter応答の結果コードAVPまたは試験結果(experimental−result)AVPが設定されたかどうかを判定する可能性がある。そうである場合、方法400は、次に、いかなる追加の規則も評価せずにステップ440で終了する可能性がある。DRA200は、次に、例えば、ステップ300のステップ345において、送信元デバイスに応答メッセージを送り返す可能性がある。
一方、受信されたメッセージが要求メッセージでないかまたはステップ415で応答されていない場合、方法400は、ステップ430に進む可能性がある。ステップ430で、DRA200が、受信されたメッセージに適用可能である第2の規則の組を選択する可能性がある。例えば、DRA200は、受信されたメッセージのアプリケーションおよびコマンドタイプに関連する規則の組を見つける可能性がある。例えば、受信されたDiameterメッセージがGx CCRである場合、DRA200は、Gx CCRメッセージに関連する規則の組を識別する可能性がある。それから、ステップ435において、DRA200が、規則エンジンを2度目に呼び出す可能性がある。この呼び出しは、ステップ410で識別された規則の組の代わりに、ステップ430において識別された規則の組を規則エンジンに渡すことをともなう可能性がある。したがって、DRA200は、ステップ435において、受信されたDiameterメッセージのメッセージタイプに特に関連する規則の組を評価する可能性がある。方法400は、次に、ステップ440で終了する可能性がある。さまざまな実施形態において、DRA200は、方法400を完了した後、方法300のステップ345に進む可能性がある。
方法400に関して、さまざまな修正が明らかであろう。例えば、一部の実施形態においては、3つ以上の規則の組が、受信されたDiameterメッセージに適用され得る可能性がある。そのような実施形態において、方法400は、3回以上規則エンジンを呼び出す可能性がある。別の例として、さまざまな実施形態は、要求が応答されたかどうかを判定する前にすべての適用可能な規則の組を評価する可能性があり、または要求が応答されたかどうかを全く判定しない可能性がある。
図5は、例示的な包括的な規則の組500を示す。包括的な規則の組500は、DRA200の規則ストレージ220などの規則ストレージに格納される可能性がある。さまざまな実施形態において、包括的な規則の組500は、示されるように、二分決定木として格納される可能性がある。さまざまな代替的な構成が規則の組を格納するために使用され得ることは、明らかであろう。例えば、規則の組500は、規則が適用可能であるかどうかを判定するための評価のための基準フィールドと、規則が適用可能であるときに行われるべき1つのアクションまたはアクションの組を格納する結果フィールドとをそれぞれが含む複数のレコードとして格納される可能性がある。さらに、包括的な規則の組500は、例えば、規則ストレージ220に格納されたデータベースのテーブルとして格納される可能性がある。代替的に、規則の組500は、一連のリンクされたリスト、配列、または同様のデータ構造である可能性がある。したがって、規則の組500が基礎をなすデータの抽象化である可能性があり、このデータの格納に好適な任意のデータ構造が使用され得ることは明らかであるに違いない。
包括的な規則の組500は、概して、すべてのDiameter要求に適用され得る可能性がある。DRAは、すべてのDiameter応答に適用可能である別の包括的な規則の組(図示せず)を格納する可能性がある。規則の組500は、基準ノード510などの基準ノードと、結果ノード520、530などの結果ノードとを含む可能性がある。規則の組500が例示的であり、さまざまな実施形態が示された規則の組500よりも複雑な規則の組(図示せず)を含み得ることは、明らかであろう。
基準ノードは、規則エンジンによって評価されるべき条件を提示する可能性がある。評価に基づいて、規則エンジンは、評価すべき別の基準ノードまたは結果ノードを選択することができる。例として、基準ノード510は、条件「Request.Peer−Origin−HostがFilterListにある」を格納する可能性がある。基準ノード510を評価すると、規則エンジンは、条件が真であるかまたは偽であるかを判定する可能性がある。例えば、規則エンジンは、受信されたメッセージまたは何らかのその他の要求メッセージを示す「Request」コンテキストオブジェクトの「Peer−Origin−Host」属性を読み、メッセージが遮断されるべきピア送信元ホストを一覧にする可能性がある別に定義された「FilterList」に値が載っているかどうかを判定する可能性がある。値が載っている場合、規則エンジンは、評価すべき次のノードとして結果ノード520を選択することができる。値が「FilterList」)に載っていない場合、規則エンジンは、評価されるべき次のノードとして結果ノード530を選択することができる。
結果ノードは、規則エンジンによって実行されるべき1つまたは複数のアクションを提示する可能性がある。そのようなアクションは、例えば、Diameterメッセージを修正すること、またはDiameterメッセージを特定のデバイスに送信することを含む可能性がある。例として、結果ノード520は、規則エンジンが値「0x12」を有する「Result−Code」AVPを「Answer」コンテキストオブジェクトに追加すべきであることを示す可能性がある。この「Answer」コンテキストオブジェクトは、DRA200の関連応答モジュール235に関連して上で検討されたように、Diameterスタックで生成された関連する応答メッセージを表す可能性がある。別の例として、結果ノード530は、規則エンジンが「Request」コンテキストオブジェクトの「remove」アクションにアクセスしてDiameterメッセージからRoute−Record AVPを削除すべきであることを示す可能性があり、それによって、Diameterメッセージを受信するための後続のデバイスから経路レコード(route record)を隠す。経路エンジンは、結果ノード520または結果ノード530はその他の子ノードを持たない葉ノードである可能性もあるので、それらのノードに遭遇した後、規則の組500を評価する規則エンジンが、終了される可能性がある。
規則の組500がさまざまな代替的な構造を持ち得ることは、明らかであろう。例えば、規則の組500は、より少ないまたはさらなる基準ノードまたは結果ノードを含む可能性がある。さらに、基準ノードが、別の基準ノードを子として含む可能性があり、または結果ノードが、別の結果ノードを子として含む可能性がある。
図6は、例示的なメッセージタイプに固有の規則の組600を示す。規則の組600は、DRA200の規則ストレージ220などの規則ストレージに格納される可能性がある。さまざまな実施形態において、規則の組600は、示されるように、二分決定木として格納される可能性がある。さまざまな代替的な構成が規則の組を格納するために使用され得ることは、明らかであろう。例えば、規則の組600は、規則が適用可能であるかどうかを判定するための評価のための基準フィールドと、規則が適用可能であるときに行われるべきアクションを格納する結果フィールドとをそれぞれが含む複数のレコードとして格納される可能性がある。さらに、規則の組600は、例えば、規則ストレージ220に格納されたデータベースのテーブルとして格納される可能性がある。代替的に、規則の組600は、一連のリンクされたリスト、配列、または同様のデータ構造である可能性がある。したがって、規則の組600が基礎をなすデータの抽象化である可能性があり、このデータの格納に好適な任意のデータ構造が使用され得ることは明らかであるに違いない。
メッセージタイプに固有の規則の組600は、例えば、Rx AARメッセージなどの特定のメッセージタイプのDiameterメッセージに適用され得る可能性がある。DRAは、いくつかの異なるメッセージタイプのために別々のメッセージタイプに固有の規則の組(図示せず)を格納する可能性がある。規則の組500と同様に、規則の組600は、基準ノード610、640などの基準ノードと、結果ノード620、630、650、660などの結果ノードとを含む可能性がある。
例として、基準ノード610は、「Rx AAR」コンテキストオブジェクトのSession−IDが0x0A未満であるかまたは0x2Aよりも大きいときに「真」と評価され得る条件「(Rx AAR.Session−ID<0x0A||Rx AAR.Session−ID>0x2A)」を格納する可能性がある。基準610が「真」と評価されるとき、規則エンジンは、結果ノード620を評価する可能性がある。そのような評価は、値0x10をSession−ID AVPの現在の値に足すことを含む可能性がある。
基準ノード610が偽と評価される場合、規則エンジンは、結果ノード630を評価する可能性がある。そのような評価は、Rx AARコンテキストオブジェクトのFlow−Description AVPに関する「remove」アクションにアクセスすることを含み得る。それから、規則エンジンは、基準ノード640に移る可能性がある。基準ノード640は、Rx AARオブジェクトがMedia−Component−Description AVPを含むときに真と評価され得る条件「Present(Rx AAR.Media−Component−Description」を含む可能性がある。基準ノード640が真と評価されるとき、規則エンジンは、規則エンジンがFlow−Description AVPを値「floober」に設定し得る結果ノード650に移る可能性がある。基準ノード640が偽と評価される場合、規則エンジンは、結果ノード660に移る可能性がある。結果ノード660は、評価中に行われるべき複数のアクションを指定する可能性がある。例えば、結果ノード660は、新しいMedia−Component−DescriptionがRx AARコンテキストオブジェクトに追加されるべきであり、Flow−Description「floober」がMedia−Sub−Component AVPに追加されるべきであることを示す可能性がある。
規則の組500、600がユーザ入力に基づいて生成される可能性があることは、明らかであろう。さまざまな実施形態において、ユーザインターフェースは、ユーザが示されたように木を構成することを可能にし得る。その他の実施形態において、ユーザインターフェースは、ユーザによって与えられた異なる木の定義に基づいて二分決定木またはその他の規則の表現を生成することができる。例えば、規則の組500、600は、ユーザによって与えられた以下の擬似コードの規則の定義に基づいて生成される可能性がある。
上記の擬似コードを受信すると、DRAは、ランタイムでより速くまたは効率的に評価され得る形態で規則の組を生成する可能性がある。ユーザが規則または規則の組を定義することを可能にするためのさまざまな代替的な方法は、明らかであろう。
例示的なネットワーク100およびDRA200の動作のための例示的な構成要素および方法を説明したので、以降で、DRAの動作の例が、図1−7を参照して与えられる。図7は、例示的なメッセージ交換700を示す。メッセージ交換700は、アプリケーション機能710と、DRA720と、PCRB730との間で行われる可能性がある。例示を目的として、アプリケーション機能710はアプリケーション機能160に対応する可能性があり、DRA720はDRA142およびDRA200に対応する可能性があり、PCRBはPCRB144に対応する可能性があり、方法300、400はDRA720の動作を示す可能性があり、規則の組500、600は規則ストレージ220の内容を示す可能性がある。
プロセスは、DRA720がAF710からDiameterメッセージ740を受信することができるステップ310で始まる可能性がある。メッセージハンドラ210が、ステップ315においてメッセージ740からコマンド「Rx AAR」およびアプリケーションを抽出し、次に、ステップ320−330において任意のコンテキストオブジェクトを確立する可能性がある。例えば、コンテキスト生成器230は、Rx AARコンテキストオブジェクトおよびRx AAAコンテキストオブジェクトをインスタンス化する可能性がある。
ステップ410において、メッセージハンドラが、メッセージ740がDiameter要求であるので規則の組500がメッセージ740に適用され得る可能性があると判定することができる。次いで、メッセージハンドラ210が、ステップ415において、規則の組500を用いて規則エンジン215を呼び出す可能性がある。ステップ415の一部として、規則エンジン215は、基準ノード510を評価し、Rx AAR740に関連するPeer−Origin−Host、「0x2」がFilterListに属する可能性があると判定することができる。結果として、規則エンジン215は、結果ノード520を評価し、値「0x12」を有するResultCode AVPをRx AAAコンテキストオブジェクトに加えることができる。それから、DRA720は、Result−Code AVPがAAAに設定されているので、ステップ420、425において、受信されたメッセージが要求メッセージであったと判定し、ステップ415において、要求が応答されたと判定することができる。DRA720は、次に、規則の組500の評価にのみ基づいてAF710にメッセージ750を送り返す可能性がある。
その後、AF710は、DRA720に別のRx AARメッセージ760を送信する可能性がある。上述のようにステップ310−330および410を実行した後。しかし、メッセージ760に関連して規則の組500を評価する際、規則エンジン215は、Peer−Origin−Host「0x5」がFilterListにないと判定する可能性がある。したがって、規則エンジン215は、RequestコンテキストオブジェクトのRoute−Recordオブジェクトに関するremoveアクションにアクセスすることによって結果ノード530を評価する可能性がある。
次に、ステップ415において要求が応答されていない可能性があるので、方法400は、ステップ425からステップ430に進む可能性があり、メッセージハンドラ210が、規則の組600がメッセージ760などのRx AARメッセージに適用可能であると識別することができる。次いで、メッセージハンドラ210が、ステップ435において、今回は規則の組600を用いて規則エンジンを2度目に呼び出す可能性がある。始めに、規則エンジンは、Session−ID) 0x1Aが0x0Aよりも大きいが0x2A未満であるので基準ノード610が「偽」と評価されると判定することができる。したがって、規則エンジン215は、メッセージ760からFlow−Description AVPを削除することによって結果ノード630を評価することができる。次に、Media−Component−Description)がメッセージ760に存在すると判定した後、規則エンジン215は、値「floober」を有するFlow−Description AVPをMedia−Sub−Componentに加えることによって結果ノード650を評価することができる。最後に、DRAは、ステップ345において、PCRB730に修正されたメッセージ770を送信することができる。示されたように、メッセージ770は、Flow−Description「floober」を含め、Route−Record AVPをもはや含めないように規則の組500、600に基づいて修正された。
以上により、さまざまな実施形態は、DiameterルーティングエージェントにおけるさまざまなDiameterメッセージの堅牢で動的な処理を可能にする。特に、広い部類のDiameterメッセージに概して適用可能である規則、および特定のDiameterメッセージタイプに関連する規則の組を含めることによって、DRAは、さまざまなDiameterメッセージの処理においてしたがわれるべき複雑な挙動を指定する際にユーザを楽にすることができる。例えば、ユーザは、異なるDiameterアプリケーションに適用されるべき異なる挙動を指定することができ、なおもその他のシステム全体のポリシーを効率的に施行することができる。さまざまなさらなる利益は、以上の開示から明らかであろう。
本発明のさまざまな例示的な実施形態がハードウェアまたはファームウェアで実装され得ることは、上述の説明から明らかであるに違いない。さらに、さまざまな例示的な実施形態は、本明細書において詳細に説明された動作を実行するために少なくとも1つのプロセッサによって読まれ、実行され得る、機械可読ストレージ媒体に格納された命令として実装される可能性がある。機械可読ストレージ媒体は、パーソナルもしくはラップトップコンピュータ、サーバ、またはその他のコンピューティングデバイスなどの機械によって読まれ得る形態で情報を格納するための任意のメカニズムを含む可能性がある。したがって、有形の非一時的機械可読ストレージ媒体は、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスクストレージ媒体、光学式ストレージ媒体、フラッシュメモリデバイス、および同様のストレージ媒体を含む可能性がある。
本明細書の任意のブロック図が本発明の原理を具現化する例示的な回路の概念図を示すことは、当業者に理解されるに違いない。同様に、任意のフローチャート、流れ図、状態遷移図、擬似コードなどは、機械可読媒体内に実質的に表現され、したがって、コンピュータまたはプロセッサによって、そのようなコンピュータまたはプロセッサが明示的に図示されているか否かに関わらず実行され得るさまざまなプロセスを表すことが理解されるであろう。
さまざまな例示的な実施形態がそれらの実施形態の特定の例示的な態様を特に参照して詳細に説明されたが、本発明は、その他の実施形態が可能であり、本発明の詳細はさまざまな明らかな観点で修正可能であることを理解されたい。当業者には容易に分かるように、変更および修正は、本発明の精神および範囲内にとどまったまま実現される可能性がある。したがって、上述の開示、説明、および図は、例示のみを目的とするものであり、本発明を全く限定せず、本発明は、特許請求の範囲によってのみ定義される。