(57)【要約】【課題】クラスタシステムにおいて、同一のセッションに含まれるパケットを処理するサーバの一意性を保つ。【解決手段】通信装置は、抽出部と、算出部と、生成部と、通信部とを有する。抽出部は、処理の実行要求が受信されると、当該実行要求から送信元を示す識別子であって、値が固定の固定識別子を抽出する。算出部は、所定のハッシュ関数を用いて、抽出部が抽出した固定識別子のハッシュ値を算出する。生成部は、送信元を示す識別子であって、処理の実行状況に応じて値を変更する暫定識別子として、算出部が算出したハッシュ値を一部に含む値を生成する。通信部は、生成部が生成した暫定識別子を用いて、送信元と通信を行う。【選択図】図１１
2016213604.tif 000002
【特許請求の範囲】
【請求項１】
処理の実行要求が受信されると、当該実行要求から送信元を示す識別子であって、値が固定の固定識別子を抽出する抽出部と、
所定のハッシュ関数を用いて、前記抽出部が抽出した固定識別子のハッシュ値を算出する算出部と、
前記送信元を示す識別子であって、前記処理の実行状況に応じて値を変更する暫定識別子として、前記算出部が算出したハッシュ値を一部に含む値を生成する生成部と、
前記生成部が生成した暫定識別子を用いて、前記送信元と通信を行う通信部と
を有することを特徴とする通信装置。
【請求項２】
前記算出部は、前記処理の実行要求が割り当てられる通信装置の数に応じた表現長のハッシュ値を算出するハッシュ関数を用いて、前記固定識別子のハッシュ値を算出することを特徴とする請求項１に記載の通信装置。
【請求項３】
前記生成部は、前記暫定識別子として、前記算出部が算出したハッシュ値を暗号化した値を一部に含む値を生成することを特徴とする請求項１または２に記載の通信装置。
【請求項４】
前記生成部は、前記暫定識別子として、前記通信部が通信を行う際に用いるプロトコルに応じた位置に、前記算出部が算出したハッシュ値を埋め込んだ値を生成することを特徴とする請求項１〜３のいずれか１つに記載の通信装置。
【請求項５】
前記生成部は、一連の処理を含むシグナリングセッション毎に異なる値を、前記暫定識別子として生成する
ことを特徴とする請求項１〜４のいずれか１つに記載の通信装置。
【請求項６】
前記生成部が生成した暫定識別子が前記実行要求に含まれる場合は、当該暫定識別子を用いて、所定の処理を実行する処理部を有することを特徴とする請求項１〜５のいずれか１つに記載の通信装置。
【請求項７】
前記生成部は、１つ又は複数の外部システムを用いて実行される処理の実行要求が受信された場合は、前記算出部が算出したハッシュ値を一部に含む複数の暫定識別子であって、前記処理を実行する前記外部システムごとに異なる値の暫定識別子を生成し、
前記通信部は、前記生成部が前記外部システムごとに生成した暫定識別子を用いて、各外部システムと通信を行う
ことを特徴とする請求項１〜６のいずれか１つに記載の通信装置。
【請求項８】
前記生成部は、前記処理の実行要求の送信先となるアドレス毎に異なるハッシュ関数を用いて、前記固定識別子のハッシュ値を算出することを特徴とする請求項１〜７のいずれか１つに記載の通信装置。
【請求項９】
前記通信装置は、前記処理の実行要求の送信先となるアドレス毎に異なるハッシュ関数を用いて前記処理の実行要求を複数の通信装置に振り分ける振分装置から、前記処理の実行要求を受信することを特徴とする請求項８に記載の通信装置。
【請求項１０】
前記生成部は、所定のハッシュ関数を用いて前記固定識別子から算出されたハッシュ値を含む暫定識別子が使用中である場合、前記所定のハッシュ関数とは異なるハッシュ関数を用いて前記固定識別子から算出されたハッシュ値を含む暫定識別子の中に未使用の暫定識別子が存在するか否かを判定し、未使用の暫定識別子が存在すると判定した場合は、前記所定のハッシュ関数とは異なるハッシュ関数を用いて前記振り分けが行われる前記アドレスを、前記送信元に通知することを特徴とする請求項９に記載の通信装置。
【請求項１１】
前記生成部は、前記所定のハッシュ関数とは異なるハッシュ関数を用いて前記固定識別子から算出されたハッシュ値を含む暫定識別子の中に未使用の暫定識別子が存在しない場合、前記処理の実行要求の振り分け先となる他の通信装置に問い合わせ、いずれかの他の通信装置で、前記未使用の暫定識別子が存在すると判定された場合は、前記所定のハッシュ関数とは異なるハッシュ関数を用いて前記振り分けが行われる前記アドレスを、前記送信元に通知することを特徴とする請求項１０に記載の通信装置。
【請求項１２】
前記生成部は、前回の使用が終了してから所定の期間が経過した暫定識別子を、前記未使用の暫定識別子とすることを特徴とする請求項１０または１１に記載の通信装置。
【請求項１３】
前記通信部は、前記送信元へ送信する情報のうち、前記通信装置に前記実行要求を送信する際に用いられるアドレス若しくはポート番号の一部に、前記暫定識別子の一部を埋め込むことを特徴とする請求項１〜１２のいずれか１つに記載の通信装置。
【請求項１４】
通信装置が実行する管理方法であって
処理の実行要求が受信されると、当該実行要求から送信元を示す識別子であって、値が固定の固定識別子を抽出し、
所定のハッシュ関数を用いて、前記抽出された固定識別子のハッシュ値を算出し、
前記送信元を示す識別子であって、前記処理の実行状況に応じて値を変更する暫定識別子として、前記算出されたハッシュ値を一部に含む値を生成し、
前記生成された暫定識別子を用いて、前記送信元との通信を行う
ことを特徴とする管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置及び管理方法に関する。
【背景技術】
【０００２】
近年、汎用のサーバ上で網機能アプリケーションを実行することで、専用のハードウェアにより実現されていた網機能を仮想化する網機能仮想化（NFV:Network  Function  Virtualization）の技術が知られている。そのような網機能アプリケーションの一例として、Ｓ／Ｐ−ＧＷ（Serving/Packet  data  network  GateWay）やＭＭＥ（Mobility  Management  Entity）等の機能を実現するアプリケーションが検討されている。
【０００３】
また、網機能アプリケーションをクラウドシステムに適用することで、需要の変動に応じたリソース割り当てや障害に対する柔軟な対応の実現が期待されている。そのような網機能アプリケーションの適用先として、ユーザ識別子等、クライアントを示す固定の識別子（以下、固定識別子と記載する。）に応じて、パケットを複数の情報処理サーバに振り分けるスケールアウト型のクラスタシステムが検討されている。
【０００４】
例えば、クラスタシステムは、複数の情報処理サーバと、パケットの振分を行う振分サーバとを有する。また、振分サーバは、クライアントからパケットを受信すると、受信したパケットから固定識別子を抽出し、抽出した固定識別子のハッシュ値を算出する。そして、振分サーバは、算出したハッシュ値に応じた情報処理サーバへパケットを転送する。その結果、クラスタシステムは、クライアントごとに一意な情報処理サーバへパケットを転送し、継続したサービスの提供を実現する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第５５４４５２２号公報
【特許文献２】特開２０１４−６７３１７号公報
【特許文献３】特開２０１３−１８２５７５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述したクラスタシステムでは、固定識別子のハッシュ値に応じた情報処理サーバにパケットを振り分けるので、クライアントを示す識別子が処理の状況に応じて変化する網機能アプリケーションの実行が困難であるという問題がある。
【０００７】
例えば、３ＧＰＰ（Third  Generation  Partnership  Project）では、固定識別子の剽窃を防ぐため、シグナリングセッションが継続する間のみ有効な暫定識別子が用いられる場合がある。例えば、情報処理サーバは、固定識別子を含むパケットを受信すると、パケットの送信元となるクライアントを示す暫定識別子を生成し、生成した暫定識別子をクライアントに通知する。そして、情報処理サーバおよびクライアントは、情報処理サーバが生成した暫定識別子を用いて、パケットの送受信を行う。
【０００８】
しかしながら、そのような暫定識別子が用いられた場合、暫定識別子に基づいてハッシュ値が算出されるため、同一のセッションに含まれるパケットが、同一の情報処理サーバに転送されるとは限らない。そのため、上述したクラスタシステムでは、パケットの転送先となる情報処理サーバの一意性を保証することが困難となり、継続したサービスを提供することが難しい。
【０００９】
１つの側面では、クラスタシステムにおいて、同一のセッションに含まれるパケットを処理するサーバの一意性を保つことができる通信装置及び管理方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
一つの態様では、通信装置は、抽出部と、算出部と、生成部と、通信部とを有する。抽出部は、処理の実行要求が受信されると、当該実行要求から送信元を示す識別子であって、値が固定の固定識別子を抽出する。算出部は、所定のハッシュ関数を用いて、前記抽出部が抽出した固定識別子のハッシュ値を算出する。生成部は、前記送信元を示す識別子であって、前記処理の実行状況に応じて値を変更する暫定識別子として、前記算出部が算出したハッシュ値を一部に含む値を生成する。通信部は、前記生成部が生成した暫定識別子を用いて、前記送信元と通信を行う。
【発明の効果】
【００１１】
１つの側面では、クラスタシステムにおいて、同一のセッションに含まれるパケットを処理するサーバの一意性を保つことができる。
【図面の簡単な説明】
【００１２】
【図１】図１は、実施例１に係る通信システムの一例を示す説明図である。
【図２】図２は、ＭＭＥの内部構成の一例を示すブロック図である。
【図３】図３は、振分サーバの機能構成の一例を示すブロック図である。
【図４】図４は、ハッシュ値振分テーブルに格納される情報の一例を説明する図である。
【図５】図５は、振分先管理テーブルに格納される情報の一例を説明する図である。
【図６】図６は、埋め込み値管理テーブルに格納される情報の一例を説明する図である。
【図７】図７は、ルール特定テーブルに格納される情報の一例を説明する図である。
【図８】図８は、ルールテーブルに格納される情報の一例を説明する図である。
【図９】図９は、データサーバが有する機能構成の一例を示すブロック図である。
【図１０】図１０は、未使用ＴＩＤリストに格納される情報の一例を説明する図である。
【図１１】図１１は、振分サーバとデータサーバとが実行する処理の一例を示すシーケンス図である。
【図１２】図１２は、振分サーバが実行する処理の流れの一例を示すフローチャートである。
【図１３】図１３は、データサーバが実行する処理の流れの一例を示すフローチャートである。
【図１４】図１４は、実施例２に係るデータサーバが有する機能構成の一例を示すブロック図である。
【図１５】図１５は、実施例２に係る振分サーバとデータサーバとが実行する処理の一例を示すシーケンス図である。
【図１６】図１６は、実施例２に係る振分サーバが実行する処理の流れの一例を示すフローチャートである。
【図１７】図１７は、実施例２に係るデータサーバが実行する処理の流れの一例を示すフローチャートである。
【図１８】図１８は、実施例３に係る振分サーバが有する機能構成の一例を示すブロック図である。
【図１９】図１９は、実施例３に係るハッシュ関数テーブルに格納される情報の一例を示す図である。
【図２０】図２０は、実施例３に係るデータサーバが有する機能構成の一例を示すブロック図である。
【図２１】図２１は、実施例３に係るデータサーバリストに格納される情報の一例を示す図である。
【図２２】図２２は、実施例３に係る振分サーバとデータサーバとが実行する処理の一例を示すシーケンス図である。
【図２３】図２３は、実施例３に係る振分サーバが実行する処理の流れの一例を示すフローチャートである。
【図２４】図２４は、実施例３に係るデータサーバが実行する処理の流れの一例を示すフローチャートである。
【図２５】図２５は、ｅＮＢやＳ／Ｐ−ＧＷの内部構成の一例を示すブロック図である。
【図２６】図２６は、振分サーバおよびデータサーバのハードウェア構成例を示すブロック図である。
【図２７】図２７は、従来の振分サーバとデータサーバとが実行する処理の第１の例を示すシーケンス図である。
【図２８】図２８は、従来の振分サーバとデータサーバとが実行する処理の第２の例を示すシーケンス図である。
【発明を実施するための形態】
【００１３】
以下に図面を参照して、本発明にかかる通信装置及び管理方法の実施形態を詳細に説明する。実施形態において同一の機能を有する構成には同一の符号を付し、重複する説明は省略する。なお、以下の実施例は、一例を示すに過ぎず、本願の開示する通信装置及び管理方法の実施形態が限定されるものではない。また、以下の各実施形態は、矛盾しない範囲内で適宜組み合わせてもよい。
【実施例１】
【００１４】
図１は、実施例１に係る通信システムの一例を示す説明図である。図１に示すように、通信システム１は、移動端末２、無線アクセス網３、移動コア網４、およびインターネット５を有する。また、無線アクセス網３は、ｅＮＢ（evolved  Node  B）６、およびｅＮＢ７を有する。また、移動コア網４は、ＭＭＥ８、ＭＭＥ９、およびＳ／Ｐ−ＧＷ１０を有する。
【００１５】
なお、通信システム１は、任意の数の移動端末２が収容可能であるものとする。また、無線アクセス網３は、他にも複数のｅＮＢを有するものとする。また、移動コア網４は、他にも複数のＭＭＥを有するものとする。また、図１に示す例では、通信システム１の一例として、ＬＴＥ（Long  Term  Evolution）のネットワーク構成例を示したが、開示の技術はこれに限定されるものではなく、他にも任意のネットワーク構成が適用可能である。
【００１６】
例えば、移動端末２は、利用者が使用するスマートフォン、フィーチャーフォン、およびタブレット端末等の端末装置であり、ＬＴＥにおけるＵＥ（User  Equipment）である。移動端末２は、移動コア網４のＭＭＥが提供する各種サービスの提供を受けるため、無線アクセス網３に含まれるｅＮＢ６、７のいずれかを介して、処理の実行要求が格納されたパケットやトランザクションメッセージを移動コア網４に送信する。なお、以下の説明では、移動端末２から送信されたパケットやトランザクションメッセージを単にメッセージと記載する場合がある。また、以下の説明では、移動端末２がｅＮＢ６に接続して通信を行う例について説明するが、実施形態は、これに限定されるものではない。例えば、移動端末２は、移動した結果、接続対象をｅＮＢ６からｅＮＢ７に変更してもよい。
【００１７】
ｅＮＢ６は、移動端末２との間でＬＴＥに基づく無線通信を行う基地局装置である。例えば、ｅＮＢ６は、移動通信網の機能を実現するアプリケーション（以下、網アプリと記載する。）を実行し、移動端末２からメッセージを受信すると、所定の通信プロトコルを用いて、移動コア網４が有するＭＭＥ８やＭＭＥ９等へメッセージを転送する。また、ｅＮＢ６は、ＭＭＥ８やＭＭＥ９等から、各種サービスの提供に係るメッセージを受信すると、受信したメッセージを移動端末２へ送信する。なお、ｅＮＢ６、７は、Ｓ／Ｐ−ＧＷ１０と通信可能に接続され、後述するＭＭＥ８、９が所定の信号手順をｅＮＢ６、７とＳ／Ｐ−ＧＷ１０とに対して用いることで、移動端末２とインターネット５との間の通信に必要な信号路の重畳設定してもよい。また、ｅＮＢ６は、移動コア網４が有する各ＭＭＥと通信可能に接続されているものとする。また、ｅＮＢ７はｅＮＢ６と同様の機能を発揮するものとして、説明を省略する。また、以下の説明では、ｅＮＢ６は、網アプリＡを実行するものとする。
【００１８】
ＭＭＥ８は、移動端末２に対して各種サービスの提供を行う。例えば、ＭＭＥ８は、網機能アプリケーションを実行し、移動端末２からメッセージを受信すると、受信したメッセージに関する各種処理を実行し、実行結果を移動端末２へ出力する。また、ＭＭＥ８は、Ｓ／Ｐ−ＧＷ１０を介して、インターネット５にアクセスし、インターネット５上のサーバ等と協調して処理を実行する場合がある。なお、ＭＭＥ９は、ＭＭＥ８と同様の機能を発揮するものとして、説明を省略する。
【００１９】
Ｓ／Ｐ−ＧＷ１０は、移動コア網４の通信プロトコルとインターネット５の通信プロトコルとの中継を行うゲートウェイ装置であり、例えば、ＬＴＥのＳ−ＧＷ（Serving  GateWay）およびＰ−ＧＷ（Packet  GateWay）である。なお、以下の説明では、Ｓ／Ｐ−ＧＷ１０は、インターネット５と移動コア網４との間の通信を実現するための網アプリを実行するものとする。
【００２０】
ここで、ＭＭＥ８は、複数のデータサーバを有し、送信元の移動端末２を使用する利用者や、メッセージの送信元となるアプリケーション等、メッセージの送信元に応じて、受信したデータをデータサーバに振り分ける。そして、ＭＭＥ８は、データサーバに処理を実行させることで、ＭＭＥの機能を発揮する。すなわち、ＭＭＥ８は、ＬＴＥのＭＭＥの機能を発揮させる網機能アプリケーションをスケールアウト型のクラスタシステムに適用することで実現される。
【００２１】
以下、実施例１に係るＭＭＥ８の一例について説明する。図２は、ＭＭＥの内部構成の一例を示すブロック図である。図２に示すように、ＭＭＥ８は、ロードバランサ１１、複数の振分サーバ１２〜１４、および複数のデータサーバ１５〜１７を有する。なお、図２に示すＭＭＥ８の内部構成は、あくまで一例であり、ＭＭＥ８は、任意の数の振分サーバおよびデータサーバを有しても良い。また、以下の説明では、振分サーバ１３、１４は、振分サーバ１２と同様の機能を発揮するものとして説明を省略する。また、データサーバ１６、１７は、データサーバ１５と同様の機能を発揮するものとして、説明を省略する。
【００２２】
ロードバランサ１１は、移動端末２やインターネット５等の外部システムに対する代表アドレスを１つ又は複数有するインタフェースサーバである。また、ロードバランサ１１は、メッセージを受信すると、固定的な規則に従って、メッセージをいずれかの振分サーバ１２〜１４へ振り分けることで、各振分サーバ１２〜１４の処理負荷を分散する。なお、ロードバランサ１１がメッセージを振り分ける規則については、ラウンドロビンや低負荷の振分サーバにメッセージを振り分ける等、任意の規則が適用可能である。
【００２３】
振分サーバ１２は、メッセージを受信すると、メッセージの送信元に応じて、受信したメッセージをいずれかのデータサーバ１５〜１７へ振り分ける。より具体的には、振分サーバ１２は、メッセージの送信元に対し、振分先のデータサーバ１５〜１７が一意に定まるように、メッセージの振り分けを行う。その結果、ロードバランサ１１と振分サーバ１２とは、通信セッションに関する状態情報を保持せずとも、メッセージの振り分けを行うことができるので、スケーラビリティにおけるボトルネックの発生を防ぐことができる。
【００２４】
データサーバ１５は、受信したメッセージに基づいて、各種のサービスを提供するサーバである。例えば、データサーバ１５は、振分サーバ１２〜１４からメッセージを受信すると、受信したメッセージの送信元を識別し、識別した送信元に対応する各種の処理を実行する。
【００２５】
上述したように、ＭＭＥ８が有する各データサーバ１５〜１７は、ロードバランサ１１及び振分サーバ１２〜１４によって、メッセージが振り分けられる。そのため、ＭＭＥ８は、サービスを実行しない予備系を有するＡＣＴ−ＳＢＹ（ACTive-StandBY）方式と比較して、信頼性や冗長性を担保しつつリソースを無駄なく使用することができる。また、ＭＭＥ８は、ＩＰアドレスの付け替えや経路の変更により、予備系へメッセージを振り分けずとも、振分サーバ１２の共通規則の変更のみで、メッセージの振り分けを実現するので、運用性を向上させることができる。
【００２６】
ここで、従来のクラスタシステムでは、メッセージの送信元となる利用者を識別するユーザ識別子等、値が固定である固定識別子のハッシュ値を算出し、算出したハッシュ値に応じたデータサーバへメッセージの振り分けを行う。その結果、従来のクラスタシステムは、ＳＩＰ（Session  Initiation  Protocol）プロトコル等、固定識別子を用いた通信プロトコルでは、送信元ごとに一意なデータサーバへメッセージを振り分けるので、各種サービスを継続して利用者に提供することができた。しかしながら、３ＧＰＰ等、シグナリングセッションが継続する間のみ有効な暫定識別子を用いる通信プロトコルでは、送信元を示す識別子の値が変化する。そのため、従来のクラスタシステムは、３ＧＰＰ等の通信プロトコルで送受信されるメッセージを、送信元ごとに一意なデータサーバへ振り分けることができない。
【００２７】
例えば、図２７は、従来の振分サーバとデータサーバとが実行する処理の第１の例を示すシーケンス図である。なお、図２７に示す例では、ロードバランサ１００、振分サーバ１０１、データサーバ１０２、１０３を有する従来のクラスタシステムが、ｅＮＢ６が実行する網アプリＡからのメッセージを振り分ける処理の一例について記載されている。
【００２８】
なお、図２７に示す例では、振分サーバ１０１は、所定のハッシュ関数を用いて固定識別子であるユーザ識別子のハッシュ値を算出する。そして、振分サーバ１０１は、算出した値が「０〜Ｘ」の範囲内となる場合に、メッセージをデータサーバ１０２に振り分け、算出した値が「Ｘ＋１〜Ｙ」の範囲内となる場合に、メッセージをデータサーバ１０３に振り分ける。
【００２９】
例えば、網アプリＡは、ユーザ識別子「Ｕｓｅｒ＃ｎ」、ＴＩＤ（Tunnel  ID）＿Ａ「ＴＩＤ＿Ａ＃ａ」、ＴＩＤ＿Ｘ「０」を含むメッセージをロードバランサ１００に送信する（ステップＳ１）。ここで、ＴＩＤ＿Ａとは、メッセージの送信元を識別するための識別子であって、網アプリＡが払い出す暫定識別子である。また、ＴＩＤ＿Ｘとは、メッセージの宛先を識別する識別子であって、メッセージを受信したデータサーバ１０２、１０３が払い出す暫定識別子である。
【００３０】
ロードバランサ１００は、所定の規則に従い、網アプリＡから受信したメッセージを振分サーバ１０１に転送する（ステップＳ２）。また、振分サーバ１０１は、メッセージを受信すると、ユーザ識別子「Ｕｓｅｒ＃ｎ」のハッシュ値「Ｈａｓｈ（Ｕｓｅｒ＃ｎ）」の値を算出する（ステップＳ３）。図２７に示す例では、振分サーバ１０１は、ハッシュ値「Ｈａｓｈ（Ｕｓｅｒ＃ｎ）」として値「Ｘ−５」を算出するので、受信したメッセージをデータサーバ１０２へ送信する（ステップＳ４）。
【００３１】
データサーバ１０２は、メッセージを受信すると、サービスを提供するための処理を実行することで、網アプリＡへ返送するサービスデータを生成する（ステップＳ５）。また、データサーバ１０２は、受信用のＴＩＤ＿Ｘとして「ＴＩＤ＿Ｘ＃ｂ」を生成する（ステップＳ６）。そして、データサーバ１０２は、生成した「ＴＩＤ＿Ｘ＃ｂ」を網アプリＡに払い出す（ステップＳ７）。より具体的には、データサーバ１０２は、ステップＳ５で生成したサービスデータと共に、網アプリＡから受信した「ＴＩＤ＿Ａ＃ａ」と、生成した「ＴＩＤ＿Ｘ＃ｂ」とを網アプリＡへ送信する（ステップＳ８）。
【００３２】
また、網アプリＡは、さらなる処理を実行させるためにメッセージを送信する場合は、ユーザ識別子の剽窃を防ぐためにメッセージにユーザ識別子を格納せずに送信する。具体的には、網アプリＡは、「ＴＩＤ＿Ａ＃ａ」と、ステップＳ８で受信した「ＴＩＤ＿Ｘ＃ｂ」とをメッセージと共にロードバランサ１００へ送信する（ステップＳ９）。かかる場合、ロードバランサ１００は、受信したメッセージを振分サーバ１０１に転送する（ステップＳ１０）。
【００３３】
ここで、ステップＳ９で送信されたメッセージには、ユーザ識別子が格納されていないので、振分サーバ１０１は、ユーザ識別子を用いた振分を行うことができない（ステップＳ１１）。そこで、振分サーバ１０１は、例えばＴＩＤ＿Ｘの値のハッシュ値「Ｈａｓｈ（ＴＩＤ＿Ｘ＃ｂ）」を算出する。しかしながら、ＴＩＤ＿Ｘの値は、ユーザ識別子とは異なる値であるため、図２７に示す例では、振分サーバ１０１は、ハッシュ値「Ｈａｓｈ（ＴＩＤ＿Ｘ＃ｂ）」として値「Ｘ＋６」を算出する（ステップＳ１２）。
【００３４】
その結果、振分サーバ１０１は、受信したメッセージをデータサーバ１０３へ送信する（ステップＳ１３）。しかしながら、データサーバ１０３は、前回網アプリＡが送信したメッセージに関する処理を実行しておらず、サービスデータを記憶していないので、メッセージを受信しても、継続するサービスを提供することができない（ステップＳ１４）。
【００３５】
そこで、実施例１に係るＭＭＥ８は、以下の管理処理を実行する。まず、データサーバ１５は、網アプリＡからメッセージを受信すると、受信したメッセージから固定識別子であるユーザ識別子を抽出する。そして、データサーバ１５は、所定のハッシュ関数を用いて、抽出したユーザ識別子のハッシュ値を算出する。ここで、データサーバ１５が用いる所定のハッシュ関数は、振分サーバ１２がメッセージの振り分けを行う際に用いるハッシュ関数と同じハッシュ空間を有するハッシュ関数であるものとする。
【００３６】
また、データサーバ１５は、メッセージの送信元を示す識別子であって、一連の処理を含むシグナリングセッション毎に異なる値の暫定識別子、すなわち、データサーバ１５が払い出すＴＩＤ＿Ｘの値として、ユーザ識別子のハッシュ値を一部に含む値を生成する。例えば、データサーバ１５は、ＴＩＤ＿Ｘのビット長がｎ＋ｍビットであり、ユーザ識別子から算出されるハッシュ値のビット長がｍビットよりも長い場合は、算出したハッシュ値のうち下位ｍビットをＴＩＤ＿Ｘの下位ｍビットとする。また、データサーバ１５は、ＴＩＤ＿Ｘの上位ｎビットに乱数を格納したＴＩＤ＿Ｘの値を暫定識別子として生成する。そして、データサーバ１５は、生成した暫定識別子をメッセージの送信元である網アプリＡへ送信し、生成した暫定識別子を用いた通信を行う。
【００３７】
上述した処理を実行した場合、データサーバ１５から網アプリＡへ通知されるＴＩＤ＿Ｘには、固定識別子のハッシュ値の一部が格納されることとなる。その結果、振分サーバ１２は、網アプリＡから続けて受信したメッセージに固定識別子が含まれていなくとも、そのメッセージに含まれる暫定識別子から固定識別子のハッシュ値の一部を抽出することができる。そして、振分サーバ１２は、受信したメッセージに含まれる暫定識別子から抽出したハッシュ値に応じてメッセージの振り分けを行うことで、メッセージの振り分け先となるデータサーバの一意性を保証することができる。
【００３８】
なお、データサーバ１５は、固定識別子から算出されたハッシュ値の全体を含む暫定識別子を生成してもよい。すなわち、データサーバ１５は、算出したハッシュ値のうち、振分サーバ１２がメッセージの振り分け先を一意に保てる値を暫定識別子に埋め込めばよい。
【００３９】
なお、上述した管理処理以外にも、例えば、暫定識別子から特定の一意のユーザ識別子への変換機能を振分サーバに実行させることで、スケールアウト型のクラスタシステムに、暫定識別子を用いる通信プロトコルを適用する手法が考えられる。しかしながら、暫定識別子の値は、シグナリングセッション毎に異なる値が割り当てられるので、各振分サーバが処理の状態を示す情報を保持しなくてはならず、ボトルネックが生じてしまう。また、対向するシステムごとに同じ暫定識別子を払い出す手法が考えらえるが、インタフェースごとに使用される通信プロトコルが異なる場合があるため、通信プロトコルに応じた暫定識別子の様式を対応させることが難しい。また、サービスデータを全データサーバに同期させる手法も考えられるが、かかる手法では、同期に伴いリソースの使用効率が悪化し、運用性が低下してしまう。
【００４０】
一方、実施例１に係るＭＭＥ８は、上述した管理処理を実行することで、メッセージに暫定識別子が含まれていえば、そのメッセージの送信元に応じたデータサーバに振り分けることができる。この結果、ＭＭＥ８は、ボトルネックの発生、リソースの使用効率の低下、および運用性の悪化を防ぎつつ、スケールアウト型のクラスタシステムに対し、処理に応じて値が変わる暫定識別子を用いた網アプリの適用を実現できる。
【００４１】
以下、図を用いて、上述した管理処理を実現する振分サーバ１２およびデータサーバ１５の機能構成について説明する。図３は、振分サーバの機能構成の一例を示すブロック図である。図３に示す例では、振分サーバ１２は、ネットワークインタフェース１８、通信データ処理部１９、通信路制御部２０、負荷分散処理部２１、および記憶部２２を有する。また、記憶部２２は、ハッシュ値振分テーブル２３、振分先管理テーブル２４、埋め込み値管理テーブル２５、ルール特定テーブル２６、およびルールテーブル２７を有する。また、負荷分散処理部２１は、判定部２８、抽出部２９、および振分部３０を有する。
【００４２】
まず、記憶部２２が記憶する各テーブル２３〜２７について説明する。ハッシュ値振分テーブル２３には、固定識別子から算出されたハッシュ値とメッセージの振分先データサーバとが対応付けて登録される。図４は、ハッシュ値振分テーブルに格納される情報の一例を説明する図である。ハッシュ値振分テーブル２３には、例えば図４に示すように、ハッシュ値範囲と、振分先データサーバＩＤ（Identifier）とが対応付けて登録されている。ここで、ハッシュ値範囲とは、固定識別子から算出されたハッシュ値の範囲を示す情報である。また、振分先データサーバＩＤとは、メッセージの転送先となるデータサーバを示す情報である。
【００４３】
例えば、図４に示す例では、ハッシュ値振分テーブル２３には、ハッシュ値範囲「０〜Ｘ」と振分先データサーバＩＤ「＃α」とを対応付けたエントリが含まれる。かかるエントリは、固定識別子から算出されたハッシュ値がハッシュ値範囲「０〜Ｘ」に含まれる場合は、振分先データサーバＩＤ「＃α」が示すデータサーバ（例えば、データサーバ１５）にメッセージを振り分ける旨を示す。
【００４４】
また、図４に示す例では、ハッシュ値振分テーブル２３には、ハッシュ値範囲「Ｘ＋１〜Ｙ」と振分先データサーバＩＤ「＃β」とを対応付けたエントリが含まれる。該エントリは、固定識別子から算出されたハッシュ値、又は、暫定識別子に含まれるハッシュ値がハッシュ値範囲「Ｘ＋１〜Ｙ」に含まれる場合、振分先データサーバＩＤ「＃β」が示すデータサーバにメッセージを振り分ける旨を示す。
【００４５】
振分先管理テーブル２４には、メッセージの振り分け先となるデータサーバ１５〜１７にメッセージを送信するための宛先が格納される。図５は、振分先管理テーブル２４に格納される情報の一例を説明する図である。振分先管理テーブル２４には、例えば図５に示すように、振分先データサーバＩＤと、その振分先データサーバＩＤが示すデータサーバのＩＰ（Internet  Protocol）アドレスとが対応付けて登録される。
【００４６】
例えば、図５に示す例では、振分先管理テーブル２４には、振分先データサーバＩＤ「＃α」と、振分先データサーバＩＤ「＃α」が示すデータサーバのＩＰアドレス「ａ．ｂ．ｃ．ｄ」とが対応付けて登録されている。また、例えば、図５に示す例では、振分先管理テーブル２４には、振分先データサーバＩＤ「＃β」と、振分先データサーバＩＤ「＃β」が示すデータサーバのＩＰアドレス「ａ．ｂ．ｃ．ｅ」とが対応付けて登録されている。
【００４７】
埋め込み値管理テーブル２５には、データサーバ１５〜１７が固定識別子から算出したハッシュ値のうち、下位ｍビット分の値であるＦ（ｘ）の値と、そのＦ（ｘ）の値が含まれる暫定識別子が付与されたメッセージの振り分け先とが対応付けて登録される。図６は、埋め込み値管理テーブルに格納される情報の一例を説明する図である。埋め込み値管理テーブル２５には、例えば図６に示すように、Ｆ（ｘ）の値の範囲であるＦ（ｘ）値範囲と、そのＦ（ｘ）が埋め込まれた暫定識別子が付与されたメッセージの振り分け先となるデータサーバの振分先データサーバＩＤとが対応付けて登録される。図６に示す例では、埋め込み値管理テーブル２５には、Ｆ（ｘ）値範囲「０〜ｈ」と、振分先データサーバＩＤ「＃α」とが対応付けて登録され、Ｆ（ｘ）値範囲「ｈ＋１〜ｉ」と、振分先データサーバＩＤ「＃β」とが対応付けて登録されている。
【００４８】
ルール特定テーブル２６には、暫定識別子の中のどこにＦ（ｘ）が埋め込まれるかを示すルールであるＦ（ｘ）埋込／抽出ルールが格納される。例えば、図７は、ルール特定テーブルに格納される情報の一例を説明する図である。図７に示す例では、ルール特定テーブル２６には、アプリケーション論理インタフェースと、暫定識別子の中のどこにＦ（ｘ）が埋め込まれるかを示すルールを識別するＦ（ｘ）埋込／抽出ルールＩＤとが対応付けて登録される。
【００４９】
ここで、アプリケーション論理インタフェースとは、メッセージに係る処理をデータサーバ１５が実行する際に用いる論理インタフェースの番号である。例えば、図７に示す例では、ルール特定テーブル２６は、メッセージに係る処理を実行する際のアプリケーション論理インタフェースが「０」や「１」である場合は、Ｆ（ｘ）埋込／抽出ルールＩＤ「＃０」が示すルールが用いられる旨を示す。
【００５０】
ルールテーブル２７には、暫定識別子の中のどこにＦ（ｘ）が埋め込まれるかを示すルールの内容が格納される。例えば、図８は、ルールテーブルに格納される情報の一例を説明する図である。図８に示す例では、ルールテーブル２７には、Ｆ（ｘ）埋込／抽出ルールＩＤと、そのＩＤが示すルールの内容とが対応付けて格納される。例えば、図８に示すルールテーブル２７では、Ｆ（ｘ）埋込／抽出ルールＩＤ「＃０」には、「宛先ＴＩＤの下位ｘビット」にＦ（ｘ）の値が埋め込まれる旨のルールが対応付けられている。
【００５１】
図３に戻り、説明を続ける。ネットワークインタフェース１８は、固有のレイヤ１、レイヤ２、およびレイヤ３プロトコルの終端処理を実行し、移動端末２、ｅＮＢ６、又はＳ／Ｐ−ＧＷ１０との間でメッセージの送受信を行う。なお、ネットワークインタフェース１８は、例えば、ＮＩＣ（Network  Interface  Controller）等により実現される。
【００５２】
通信データ処理部１９は、通信路の設定情報に基づいて、振分サーバ１２が送受信するメッセージのルーティングや、メッセージを転送する際に用いられる通信プロトコルに関する各種の処理を実行する。例えば、通信データ処理部１９は、ネットワークインタフェース１８を介して、ＭＭＥ８が有する代表アドレスを宛先とするメッセージを受信した場合に、受信したメッセージを負荷分散処理部２１に出力する。
【００５３】
また、通信データ処理部１９は、ｅＮＢ６、７やＳ／Ｐ−ＧＷ１０が宛先となるメッセージを受信した場合は、ネットワークインタフェース１８を介して、受信したメッセージを宛先へ送信する。また、通信データ処理部１９は、負荷分散処理部２１から受信したメッセージを、ネットワークインタフェース１８から、ｅＮＢ６やＳ／Ｐ−ＧＷ１０、データサーバ１５〜１７等に出力する。また、通信データ処理部１９は、振分サーバ１２へ送信されたシグナリング情報を受信すると、通信路制御部２０にシグナリング情報を出力する。
【００５４】
通信路制御部２０は、振分サーバ１２が受信したシグナリング情報を用いて、負荷分散に関する各種の処理を実行する。なお、シグナリング情報を用いて実行される負荷分散に関する処理については、ＬＴＥ等で実行される各種の処理が適用可能であるものとし、詳細な説明を省略する。
【００５５】
判定部２８は、通信データ処理部１９からメッセージを受信すると、受信したメッセージにユーザ識別子等の固定識別子が付されているか否かを判定する。また、判定部２８は、受信したメッセージに固定識別子が付されていると判定した場合は、所定のハッシュ関数を用いて、メッセージに付された固定識別子のハッシュ値を算出する。そして、判定部２８は、メッセージと算出したハッシュ値とを振分部３０に出力する。一方、判定部２８は、受信したメッセージに固定識別子が付されていない場合は、受信したメッセージを抽出部２９に出力する。
【００５６】
抽出部２９は、メッセージに付された暫定識別子から固定識別子のハッシュ値を抽出する。例えば、抽出部２９は、判定部２８からメッセージを受信すると、受信したメッセージに付されている暫定識別子から、Ｆ（ｘ）の値を抽出する。例えば、抽出部２９は、受信したメッセージの送信元のアプリケーションのアプリケーション論理インタフェースの番号に対応付けられたＦ（ｘ）埋込／抽出ルールＩＤをルール特定テーブル２７から特定する。続いて、抽出部２９は、特定したＦ（ｘ）埋込／抽出ルールＩＤと対応付けられたルール内容をルールテーブル２７から特定する。そして、抽出部２９は、特定したルール内容に基づいて、暫定識別子からＦ（ｘ）の値を抽出する。そして、抽出部２９は、抽出したＦ（ｘ）の値とメッセージとを振分部３０に出力する。
【００５７】
振分部３０は、受信したメッセージの振り分けを行う。例えば、振分部３０は、判定部２８から、ハッシュ値とメッセージとを受信した場合は、ハッシュ値振分テーブル２３を参照し、受信したハッシュ値を含むハッシュ値範囲に対応付けられた振分先データサーバＩＤを特定する。そして、振分部３０は、特定した振分先データサーバＩＤに対応付けられたＩＰアドレスを振分先管理テーブル２４から特定し、特定したＩＰアドレスを宛先として、判定部２８から受付けたメッセージを送信する。
【００５８】
例えば、振分部３０は、判定部２８からハッシュ値「Ｘ−５」を受信した場合は、ハッシュ値「Ｘ−５」を含むハッシュ値範囲「０〜Ｘ」と対応付けられた振分先データサーバＩＤ「＃α」をハッシュ値振分テーブル２３から特定する。続いて、振分部３０は、振分先データサーバＩＤ「＃α」と対応付けられたＩＰアドレス「ａ．ｂ．ｃ．ｄ」を振分先管理テーブル２４から特定し、特定したＩＰアドレス「ａ．ｂ．ｃ．ｄ」を宛先として、判定部２８から受信したメッセージを送信する。
【００５９】
一方、振分部３０は、抽出部２９から、Ｆ（ｘ）の値とメッセージとを受信した場合は、埋め込み値管理テーブル２５を参照し、受信したＦ（ｘ）の値を含むＦ（ｘ）値範囲に対応付けられた振分先データサーバＩＤを特定する。そして、振分部３０は、特定した振分先データサーバＩＤに対応付けられたＩＰアドレスを振分先管理テーブル２４から特定し、特定したＩＰアドレスを宛先として、判定部２８から受付けたメッセージを送信する。
【００６０】
例えば、振分部３０は、抽出部２９からＦ（ｘ）の値「ｈ＋１」を受信した場合は、Ｆ（ｘ）の値「ｈ＋１」を含むＦ（ｘ）値範囲「ｈ＋１〜ｉ」と対応付けられた振分先データサーバＩＤ「＃β」を埋め込み値管理テーブル２５から特定する。続いて、振分部３０は、振分先データサーバＩＤ「＃β」と対応付けられたＩＰアドレス「ａ．ｂ．ｃ．ｅ」を振分先管理テーブル２４から特定し、特定したＩＰアドレス「ａ．ｂ．ｃ．ｅ」を宛先として、判定部２８から受信したメッセージを送信する。
【００６１】
次に、図９を用いて、データサーバ１５が有する機能構成の一例について説明する。図９は、データサーバが有する機能構成の一例を示すブロック図である。図９に示す例では、データサーバ１５には、ネットワークインタフェース３１、通信データ処理部３２、通信路制御部３３、記憶部３４、アプリケーション処理部３７、および埋め込み処理部３８を有する。また、記憶部３４は、ＭＭＥデータ３５、ルール特定テーブル２６、ルールテーブル２７、および未使用ＴＩＤリスト３６が格納される。また、埋め込み処理部３８は、算出部３９、および生成部４０を有する。
【００６２】
なお、以下の説明では、ネットワークインタフェース３１、通信データ処理部３２、通信路制御部３３は、図３に示したネットワークインタフェース１８、通信データ処理部１９、通信路制御部２０と同様の機能を発揮するものとして、説明を省略する。また、以下の説明では、記憶部３４が記憶するＭＭＥデータ３５、ルール特定テーブル２６、ルールテーブル２７、未使用ＴＩＤリスト３６について説明し、その後、アプリケーション処理部３７および埋め込み処理部３８が実行する処理について説明する。
【００６３】
ＭＭＥデータ３５は、データサーバ１５がＭＭＥとしての機能を発揮するためのデータであり、例えば、網機能アプリケーションや外部対向網機能アプリケーションを実行するために必要な各種情報が格納されている。
【００６４】
ルール特定テーブル２６には、例えば図７を用いて説明したルール特定テーブル２６と同様の情報が格納される。また、ルールテーブル２７には、例えば図８を用いて説明したルールテーブル２７と同様の情報が格納される。
【００６５】
未使用ＴＩＤリスト３６には、使用されていない暫定識別子、すなわち、使用されていない宛先ＴＩＤの値が、その宛先ＴＩＤに埋め込まれるＦ（ｘ）の値ごとに登録される。例えば、図１０は、未使用ＴＩＤリストに格納される情報の一例を説明する図である。図１０に示す例では、未使用ＴＩＤリスト３６には、Ｆ（ｘ）の値と空き番号リストとが対応付けて登録されている。ここで、空き番号リストとは、対応付けられたＦ（ｘ）の値を含む宛先ＴＩＤのうち、使用が終了してから所定以上の時間が経過したＴＩＤが登録されたリストである。例えば、図１０に示す例では、未使用ＴＩＤリスト３６は、Ｆ（ｘ）の値「０」を含む宛先ＴＩＤが「Ｎ」、「Ｇ」、「Ｋ」であり、「Ｎ」、「Ｇ」、「Ｋ」は、一度も使用されていないか、使用が終了してから所定以上の時間が経過したＴＩＤであることを示す。
【００６６】
図９に戻り、説明を続ける。アプリケーション処理部３７は、ＭＭＥデータ３５に登録された情報等を用いて、網機能アプリケーションや、外部対向網機能アプリケーション等を実行する。例えば、アプリケーション処理部３７は、通信データ処理部３２を介してメッセージを受信すると、受信したメッセージに付された固定識別子若しくは暫定識別子を抽出する。そして、アプリケーション処理部３７は、抽出した固定識別子若しくは暫定識別子を用いて、継続したサービスを提供するための各種処理を実行し、処理の実行結果としてサービスデータを生成する。
【００６７】
また、アプリケーション処理部３７は、シグナリングセッションの確立時に、固定識別子が含まれるメッセージを受信する。そして、アプリケーション処理部３７は、受信したメッセージから固定識別子を抽出し、抽出した固定識別子と、受信したメッセージに係る処理をデータサーバ１５が実行する際に用いる論理インタフェースの番号とを埋め込み処理部３８に出力する。そして、アプリケーション処理部３７は、暫定識別子を埋め込み処理部３８から受信すると、受信した暫定識別子を付したサービスデータを、メッセージの送信元となるｅＮＢ６、Ｓ／Ｐ−ＧＷ１０、若しくは移動端末２へ送信する。以降、アプリケーション処理部３７は、同一にシグナリングセッションについては、埋め込み処理部３８から受信した暫定識別子を用いて処理を継続する。
【００６８】
算出部３９は、所定のハッシュ関数を用いて、アプリケーション処理部３７が抽出した固定識別子のハッシュ値を算出する。より具体的には、算出部３９は、ＭＭＥ８が有するデータサーバ１５〜１７の数、すなわち、メッセージの振り分けが行われるデータサーバ１５〜１７の数に応じた表現長のハッシュ関数を用いて、固定識別子のハッシュ値を算出する。例えば、算出部３９は、メッセージを各データサーバ１５〜１７に対して振り分けることができる数のハッシュ値や、メッセージを各データサーバ１５〜１７に対して振り分けることができるビット長のハッシュ値を固定識別子から算出可能なハッシュ関数を用いる。例えば、算出部３９は、アプリケーション処理部３７から固定識別子を受信すると、所定のハッシュ関数を用いて、固定識別子のハッシュ値を算出する。続いて、算出部３９は、アプリケーション処理部３７から受信したアプリケーション論理インタフェースの番号に対応付けられたＦ（ｘ）埋込／抽出ルールＩＤをルール特定テーブル２６から特定する。続いて、生成部４０は、特定したＦ（ｘ）埋込／抽出ルールＩＤと対応付けられたルール内容をルールテーブル２７から特定する。
【００６９】
そして、算出部３９は、ルールテーブル２７から特定したルール内容に従って、Ｆ（ｘ）の値を生成する。例えば、算出部３９は、特定したルール内容が「宛先ＴＩＤの下位ｘビット」である場合は、算出したハッシュ値のうち下位ｘビットをＦ（ｘ）として生成部４０に出力する。
【００７０】
生成部４０は、算出部３９が算出したハッシュ値を一部に含む暫定識別子の候補を生成する。より具体的には、生成部４０は、シグナリングセッションごとに、以下の処理を実行する。まず、生成部４０は、暫定識別子の値のうち、アプリケーション処理部３７がメッセージの送受信を行う際に用いる通信プロトコルに応じた位置に、算出部３９が算出したＦ（ｘ）の値を含む暫定識別子の値を生成する。
【００７１】
例えば、生成部４０は、アプリケーション処理部３７から受信したアプリケーション論理インタフェースの番号に対応付けられたＦ（ｘ）埋込／抽出ルールＩＤをルール特定テーブル２６から特定する。続いて、生成部４０は、特定したＦ（ｘ）埋込／抽出ルールＩＤと対応付けられたルール内容をルールテーブル２７から特定する。
【００７２】
そして、生成部４０は、算出部３９が算出したＦ（ｘ）の値を受信した場合は、ルールテーブル２７から特定したルール内容に従って、Ｆ（ｘ）の値を埋め込んだ暫定識別子を生成する。例えば、生成部４０は、特定したルール内容が「宛先ＴＩＤの下位ｘビット」である場合は、算出部３９が算出したＦ（ｘ）の値を下位ｘビットに格納し、他の領域に他のデータ（例えば乱数値）を格納した暫定識別子の候補を生成する。
【００７３】
続いて、生成部４０は、未使用ＴＩＤリスト３６を参照し、生成した暫定識別子の候補が使用可能であるか否かを判定する。例えば、生成部４０は、生成した暫定識別子の候補が、算出部３９が算出したＦ（ｘ）に対応付けられた空き番号リストに登録されている場合に、生成した暫定識別子の候補が使用可能であると判定する。すなわち、生成部４０は、生成した暫定識別子の候補の値が、使用が終了してから所定以上の時間が経過したＴＩＤの中に含まれる場合、生成した暫定識別子の候補を使用可能であると判定する。
【００７４】
そして、生成部４０は、使用可能であると判定した暫定識別子の候補と同じ値のＴＩＤを、算出部３９が算出したＦ（ｘ）に対応付けられた空き番号リストから削除する。そして、生成部４０は、使用可能な暫定識別子の候補を、生成した暫定識別子として、アプリケーション処理部３７に出力する。
【００７５】
また、生成部４０は、暫定識別子を生成する際に、生成した暫定識別子の候補が使用可能ではないと判定した場合は、新たに乱数を生成し直し、暫定識別子の候補に含まれるＦ（ｘ）の値とを新たに生成した乱数値とを用いて、新たな暫定識別子の候補を生成する。そして、生成部４０は、新たに生成した暫定識別子の候補が使用可能であるか否かを判定する。
【００７６】
なお、生成部４０は、Ｆ（ｘ）の値を、暫定識別子の任意の位置に埋め込むことができる。かかる埋め込み位置は、予め設定されていてもよく、メッセージを送受信する際に用いる通信プロトコルに応じた位置に設定されていてもよい。例えば、生成部４０は、ｅＮＢ６と送受信するメッセージについては、暫定識別子の下位ｘビットにＦ（ｘ）の値を埋め込み、Ｓ／Ｐ−ＧＷ１０と送受信するメッセージについては、暫定識別子の上位ｘビットにＦ（ｘ）の値を埋め込んでもよい。また、生成部４０は、通信プロトコルに応じて、異なる桁数のＦ（ｘ）の値を埋め込んでもよい。
【００７７】
次に、図１１を用いて、実施例１に係る振分サーバ１２とデータサーバ１５とが実行する処理の一例について説明する。図１１は、振分サーバとデータサーバとが実行する処理の一例を示すシーケンス図である。なお、図１１に示す例では、実施例１に係るロードバランサ１１、振分サーバ１２、データサーバ１５、１６が、ｅＮＢ６が実行する網アプリＡからのメッセージを振り分ける処理の一例について記載した。
【００７８】
なお、以下の説明では、振分サーバ１２は、図４〜図８に示した各種情報を記憶するものとし、データサーバ１５は、図７〜図８および図１０に示した各種情報を記憶するものとする。また、以下の説明では、振分先データサーバＩＤ「＃α」は、データサーバ１５を示し、振分先データサーバＩＤ「＃β」は、データサーバ１６を示すものとする。
【００７９】
例えば、網アプリＡは、ユーザ識別子「Ｕｓｅｒ＃ｎ」、ＴＩＤ＿Ａ「ＴＩＤ＿Ａ＃ａ」、ＴＩＤ＿Ｘ「０」を含むメッセージをロードバランサ１１に送信する（ステップＳ１０１）。ロードバランサ１１は、所定の規則に従い、メッセージを振分サーバ１２に転送する（ステップＳ１０２）。
【００８０】
ここで、ステップＳ１０２にて転送されたメッセージには、固定識別子であるユーザ識別子「Ｕｓｅｒ＃ｎ」が付されている。そこで、振分サーバ１２は、メッセージを受信すると、ユーザ識別子「Ｕｓｅｒ＃ｎ」のハッシュ値「Ｈａｓｈ（Ｕｓｅｒ＃ｎ）」を算出する（ステップＳ１０３）。例えば、図１１に示す例では、振分サーバ１２は、ハッシュ値「Ｈａｓｈ（Ｕｓｅｒ＃ｎ）」として「Ｘ−５」の値を算出する。そのため、振分サーバ１２は、ハッシュ値振分テーブル２３から、値「Ｘ−５」を含むハッシュ値範囲と対応付けて格納された振分先データサーバＩＤ「＃α」を特定する。そして、振分サーバ１２は、特定した振分先データサーバＩＤ「＃α」が示すデータサーバ１５に受信したメッセージを送信する（ステップＳ１０４）。
【００８１】
一方、データサーバ１５は、メッセージを受信すると、サービスを提供するための処理を実行することで、網アプリＡへ返送するサービスデータを生成する（ステップＳ１０５）。また、データサーバ１５は、ユーザ識別子「Ｕｓｅｒ＃ｎ」のハッシュ値「Ｈａｓｈ（Ｕｓｅｒ＃ｎ）」の値を算出する。また、データサーバ１５は、算出したハッシュ値「Ｈａｓｈ（Ｕｓｅｒ＃ｎ）」の下位ｍビットであるＦ（ｘ）を所定の位置に含む未使用の暫定識別子であるＴＩＤ＿Ｘ「ＴＩＤ＿Ｘ＃Ａ」を生成する（ステップＳ１０６）。
【００８２】
そして、データサーバ１５は、ＴＩＤ＿Ｘ「ＴＩＤ＿Ｘ＃Ａ」を網アプリＡに払い出す（ステップＳ１０７）。より具体的には、データサーバ１５は、Ｆ（ｘ）に対応付けられて未使用ＴＩＤリスト３６に登録されているＴＩＤの中から、払い出したＴＩＤ＿Ｘ「ＴＩＤ＿Ｘ＃Ａ」を削除する。そして、データサーバ１５は、ステップＳ１０５にて生成したサービスデータと共に、ＴＩＤ＿Ａ「ＴＩＤ＿Ａ＃ａ」と、ＴＩＤ＿Ｘ「ＴＩＤ＿Ｘ＃Ａ」とを網アプリＡへ送信する（ステップＳ１０８）。
【００８３】
ここで、網アプリＡは、さらなる処理を実行させる場合は、ユーザ識別子を付さずに、ＴＩＤ＿Ａ「ＴＩＤ＿Ａ＃ａ」と、ＴＩＤ＿Ｘ「ＴＩＤ＿Ｘ＃Ａ」とをメッセージに付して送信する（ステップＳ１０９）。このような場合、ロードバランサ１１を介してメッセージを受信した振分サーバ１２は、ルール特定テーブル２２０およびルールテーブル２２１を参照して、ＴＩＤ＿Ｘ「ＴＩＤ＿Ｘ＃Ａ」に埋め込まれたＦ（ｘ）の値を抽出する（ステップＳ１１０）。そして、振分サーバ１２は、埋め込み値管理テーブル２５を参照して、Ｆ（ｘ）の値、すなわち、メッセージの送信元となるユーザ識別子のハッシュ値の一部を用いて、メッセージの振り分け先を決定する（ステップＳ１１１）。そして、振分サーバ１２は、決定した振り分け先へメッセージを転送する（ステップＳ１１２）。
【００８４】
次に、図１２を用いて、振分サーバ１２が実行する処理の流れについて説明する。図１２は、振分サーバが実行する処理の流れの一例を示すフローチャートである。例えば、振分サーバ１２は、メッセージを受信すると（ステップＳ２０１）、受信したメッセージにユーザ識別子、すなわち固定識別子が付されているか判定する（ステップＳ２０２）。そして、振分サーバ１２は、メッセージにユーザ識別子が付されている場合（ステップＳ２０２：Ｙｅｓ）、所定のハッシュ関数を用いてユーザ識別子の値からハッシュ値を計算し、ハッシュ値に対応する振り分け先のデータサーバを決定する（ステップＳ２０３）。そして、振分サーバ１２は、決定した振り分け先のデータサーバへ、受信したメッセージを転送し（ステップＳ２０５）、処理を終了する。
【００８５】
一方、振分サーバ１２は、メッセージにユーザ識別子が付されていない場合は（ステップＳ２０２：Ｎｏ）、ルール特定テーブル２２０およびルールテーブル２２１を参照して、暫定識別子からＦ（ｘ）の値を抽出する。そして、振分サーバ１２は、抽出したＦ（ｘ）の値に応じて振り分け先のデータサーバを決定する（ステップＳ２０４）。そして、振分サーバ１２は、ステップＳ２０５に示した処理を実行する。
【００８６】
次に、図１３を用いて、データサーバ１５が実行する処理の流れを説明する。図１３は、データサーバが実行する処理の流れの一例を示すフローチャートである。例えば、データサーバ１５は、メッセージを受信すると（ステップＳ３０１）、受信したメッセージにユーザ識別子が存在せず、かつ、宛先ＴＩＤの値が０（null）以外であるか否かを判定する（ステップＳ３０２）。
【００８７】
そして、データサーバ１５は、受信したメッセージにユーザ識別子が付されておらず、かつ、宛先ＴＩＤの値が０（null）以外である場合（ステップＳ３０２：Ｙｅｓ）、以下の処理を実行する。まず、データサーバ１５は、宛先ＴＩＤの値から送信元を特定し、特定した送信元ごとのデータ処理を実行して（ステップＳ３０３）、処理を終了する。すなわち、データサーバ１５は、固定識別子がメッセージに付されておらず、送信元に払い出した暫定識別子がメッセージに付されている場合は、その暫定識別子で示されるシグナリングセッションにおいて、サービスデータの生成等の処理を引き続き実行する。
【００８８】
一方、データサーバ１５は、受信したメッセージにユーザ識別子が付されている場合、若しくは、宛先ＴＩＤの値が０（null）である場合は（ステップＳ３０２：Ｎｏ）、以下の処理を実行する。まず、データサーバ１５は、サービスデータを生成する（ステップＳ３０４）。続いて、データサーバ１５は、固定識別子「Ｕｓｅｒ＃ｎ」のハッシュ値「Ｈａｓｈ（Ｕｓｅｒ＃ｎ）」を算出し、算出したハッシュ値の下位ｍビットをＦ（ｘ）とし、Ｆ（ｘ）を所定の位置に含む未使用のＴＩＤを生成する（ステップＳ３０５）。そして、データサーバ１５は、ステップＳ３０５で生成したＴＩＤを埋め込んだ応答のメッセージを送信し（ステップＳ３０６）、処理を終了する。
【００８９】
［実施例１の効果］
上述したように、データサーバ１５は、網アプリＡからメッセージを受信すると、受信したメッセージから固定識別子であるユーザ識別子を抽出する。また、データサーバ１５は、所定のハッシュ関数を用いて、抽出したユーザ識別子のハッシュ値を算出する。そして、データサーバ１５は、シグナリングセッション毎に値の異なる暫定識別子、すなわち、ユーザ識別子のハッシュ値の一部と乱数とを含む値を生成する。
【００９０】
この結果、振分サーバ１２は、メッセージに固定識別子が付加されなくても、シグナリングセッション毎に値の異なる暫定識別子を用いて、メッセージの振り分け先となるデータサーバの一意性を保証することができる。このため、データサーバ１５は、一つのシグナリングセッションを異なるシステム間で連携して処理する網機能アプリケーションを、スケールアウト型のクラスタシステムで実行することができる。
【００９１】
また、データサーバ１５は、処理の実行要求が割り当てられるデータサーバの数に応じた表現長のハッシュ値を算出するハッシュ関数を用いて、固定識別子のハッシュ値を算出する。このため、データサーバ１５は、ＭＭＥ８が有する各データサーバ１５〜１７にメッセージを振り分けさせることができるので、リソースの無駄を抑制することができる。
【００９２】
また、データサーバ１５は、メッセージを送受信する際の通信プロトコルに応じた位置に、Ｆ（ｘ）の値を埋め込んだ暫定識別子値を生成する。このため、データサーバ１５は、複数の通信プロトコルを用いてメッセージの送受信を行う場合にも、網機能アプリケーションを、スケールアウト型のクラスタシステムで実行することができる。
【００９３】
また、データサーバ１５は、シグナリングセッション毎に値の異なる暫定識別子を生成する。このため、データサーバ１５は、複数のシグナリングセッションを処理する網機能アプリケーションを、スケールアウト型のクラスタシステムで実行することができる。
【００９４】
また、データサーバ１５は、受信したメッセージに暫定識別子が含まれる場合は、その暫定識別子を用いて、所定の処理を実行する。このため、データサーバ１５は、一連のシグナリングセッションで送受信されるメッセージに基づいて、継続したサービスの提供を行うことができる。
【００９５】
また、データサーバ１５は、使用が終了してから所定の期間が経過した暫定識別子を、使用可能な暫定識別子とする。このため、データサーバ１５は、サービスに不具合が生じるリスクを軽減することができる。
【００９６】
例えば、ユーザＡが使用していた暫定識別子Ｘを、ユーザＡのサービス終了後、直ぐに別のユーザＢに割当てた場合を考える。その場合、ユーザＢは、ユーザＡの通信を盗み見することが可能となる場合がある。また、暫定識別子Ｘが使用中であることを認識した悪意の第３のユーザＣは、剽窃した暫定識別子Ｘを用いて、通信を起動することにより、ユーザＢへのサービスを切断等、妨害することができる。しかしながら、本実施例のデータサーバ１５は、暫定識別子Ｘの使用が終了してから所定以上の時間が経過した場合に、該暫定識別子の使用を可能とする。これにより、使用が終了してから所定時間未満の期間のユーザＣの通信は、不正または異常な通信として認識される。これにより、本実施例のデータサーバ１５は、他の真正のユーザのサービスへの悪影響を回避できる。
【００９７】
また、メッセージの損失や、送信側と受信側の通信手順の行き違いにより、制御状態の不一致が生じた場合には、サービス提供元のシステムでは、ユーザＡへのサービスが終了したと認識され、ユーザＡでは、サービスが継続していると認識される。その場合、ユーザＡは、すでにユーザＢに割当てられた暫定識別子Ｘを使い続けることで、ユーザＢへのサービスに影響を与えてしまう。しかしながら、データサーバ１５は、上述した処理を実行することで、暫定識別子Ｘの未使用時間を十分にとることができるので、他の真正のユーザのサービスへの悪影響を回避できる。
【実施例２】
【００９８】
例えば、データサーバ１５は、網アプリＡからメッセージを受信した際に、網アプリＡとは異なる網アプリＢに処理の実行を依頼し、網アプリＢによる処理の実行結果を網アプリＡへ送信する場合がある。しかしながら、そのような処理を実行する場合、従来のクラスタシステムでは、網アプリＢに処理を依頼したデータサーバに対し、網アプリＢからのメッセージを振り分けることが困難であり、サービスの継続が困難であった。
【００９９】
例えば、図２８は、従来の振分サーバとデータサーバとが実行する処理の第２の例を示すシーケンス図である。なお、図２８に示す例では、図２７と同様の従来のクラスタシステムが、網アプリＡからのメッセージを受信すると、網アプリＢに処理を要求し、網アプリＢから受信した処理の実行結果を網アプリＡへ送信する処理の一例について示されている。また、図２８に示す処理のうち、図２７に示した処理と同一の処理については、図２７と同一の符号を付し、説明を省略する。
【０１００】
例えば、データサーバ１０２は、メッセージを網アプリＡから受信すると、網アプリＢとの通信に用いるＴＩＤ＿Ｘの値を決定する（ステップＳ２０）。そして、データサーバ１０２は、決定したＴＩＤ＿Ｘを網アプリＢに払い出す（ステップＳ２１）。より具体的には、データサーバ１０２は、ステップＳ５で生成したサービスデータと共に、ユーザ識別子「Ｕｓｅｒ＃ｎ」と、ＴＩＤ＿Ｘ「ＴＩＤ＿Ｘ＃ａ」とを網アプリＢに送信する（ステップＳ２２）。ここで、ステップＳ２２に示すＴＩＤ＿Ｂとは、網アプリＢが生成する暫定識別子であり、ステップＳ２２に示す時点では、値「０」が格納される。
【０１０１】
その場合、網アプリＢは、ＴＩＤ＿Ｂ「ＴＩＤ＿Ｂ＃ａ」を生成し、処理結果と共に、ＴＩＤ＿Ｂ「ＴＩＤ＿Ｂ＃ａ」と、ステップＳ２２で受信したＴＩＤ＿Ｘ「ＴＩＤ＿Ｘ＃ａ」とをロードバランサ１００へ送信する（ステップＳ２３）。ロードバランサ１００は、受信したメッセージを振分サーバ１０１に転送する（ステップＳ２４）。
【０１０２】
ここで、ステップＳ２３で送信されたメッセージには、ユーザ識別子が格納されていないので、振分サーバ１０１は、ユーザ識別子を用いた振り分けを行うことができない（ステップＳ２５）。そこで、振分サーバ１０１は、ＴＩＤ＿Ｘの値のハッシュ値「Ｈａｓｈ（ＴＩＤ＿Ｘ＃ａ）」を算出する。しかしながら、ＴＩＤ＿Ｘの値は、ユーザ識別子とは異なる値であるため、図２８に示す例では、振分サーバ１０１は、ハッシュ値「Ｈａｓｈ（ＴＩＤ＿Ｘ＃ａ）」として値「Ｘ＋１１」を算出する（ステップＳ２６）。
【０１０３】
その結果、振分サーバ１０１は、受信したメッセージをデータサーバ１０３へ送信する（ステップＳ２７）。しかしながら、データサーバ１０３は、ステップＳ５にて生成したサービスデータを記憶していないので、網アプリＢから処理結果を受信しても、網アプリＡへサービスを提供することができない（ステップＳ２８）。
【０１０４】
そこで、実施例２に係るデータサーバ１５ａは、以下の管理処理を実行する。データサーバ１５ａは、複数の外部システムを用いて実行される処理の実行要求を受信した場合は、外部システムごとに異なる値の暫定識別子を生成する。そして、データサーバ１５ａは、外部システムごとに生成した暫定識別子を用いて、各外部システムとの通信を行う。
【０１０５】
また、データサーバ１５ａは、一連のシグナリングセッションにおいて、異なる通信プロトコルを用いたパケットの送受信が発生する場合、それぞれの通信プロトコルに応じた表現長の暫定識別子を生成する。この場合、それぞれの暫定識別子には、固定識別子から算出されたハッシュ値の一部であるＦ（ｘ）が共通に含まれる。また、データサーバ１５ａは、一連のシグナリングセッションにおいて使用されるいずれの通信プロトコルの暫定識別子にも含めることが可能な長さのビット数を、Ｆ（ｘ）のビット数として使用する。即ち、Ｆ（ｘ）のビット数は、一連のシグナリングセッションにおいて使用されるいずれの通信プロトコルの暫定識別子のビット数よりも少ない。これにより、データサーバ１５ａは、それぞれのシグナリングセッションで使用される別々の固定識別子には、固定識別子から算出されたハッシュ値の一部であるＦ（ｘ）を共通に含めることができる。これにより、データサーバ１５ａは、一連のシグナリングセッションにおいて、各通信プロトコルで使用される暫定識別子のビット長が異なる場合であっても、メッセージの振り分け先の一意性を保証することができる。
【０１０６】
次に、図１４を用いて、データサーバ１５ａが有する機能構成の一例について説明する。図１４は、実施例２に係るデータサーバが有する機能構成の一例を示すブロック図である。図１４に示す例では、データサーバ１５ａは、ネットワークインタフェース３１、通信データ処理部３２、通信路制御部３３、記憶部３４、アプリケーション処理部３７ａ、および埋め込み処理部３８ａを有する。また、埋め込み処理部３８ａは、算出部３９ａ、および生成部４０ａを有する。
【０１０７】
アプリケーション処理部３７ａは、図９に示すアプリケーション処理部３７と同様の機能を発揮する。より具体的には、アプリケーション処理部３７ａは、一連のシグナリングセッションにおいて、複数の外部システム（例えば網アプリ）との間でメッセージを送受信し、各網アプリと協調してメッセージに基づく処理を実行する。アプリケーション処理部３７ａは、一連のシグナリングセッションの確立時に、固定識別子と共に、該セッションにおいてメッセージの送受信を行う外部システムが使用する通信プロトコルの情報を埋め込み処理部３８ａに通知する。そして、アプリケーション処理部３７ａは、外部システムの通信プロトコル毎の暫定識別子を埋め込み処理部３８ａから取得し、取得した暫定識別子を用いて、それぞれの通信プロトコルで各外部システムとメッセージの送受信を行う。
【０１０８】
例えば、アプリケーション処理部３７ａは、網アプリＡから受信したメッセージに関する処理が、例えば、網アプリＢに処理を依頼するものである場合、埋め込み処理部３８ａから取得した暫定識別子を用いてメッセージを網アプリＢに送信する。そして、アプリケーション処理部３７ａは、網アプリＢから処理の実行結果を受信すると、受信した実行結果を用いて処理を実行し、埋め込み処理部３８ａから取得した暫定識別子を用いて処理の実行結果を網アプリＡに送信する。
【０１０９】
算出部３９ａは、図９に示した算出部３９と同様の機能を発揮する。より具体的には、算出部３９ａは、固定識別子と共に、外部システムの通信プロトコルの情報をアプリケーション処理部３７ａから通知された場合に、固定識別子のハッシュ値を算出する。そして、算出部３９ａは、アプリケーション処理部３７ａから通知されたいずれの通信プロトコルの暫定識別子にも含めることが可能なビット数を特定する。そして、算出部３９ａは、算出したハッシュ値のうち、特定したビット数をＦ（ｘ）として抽出する。そして、算出部３９ａは、抽出したＦ（ｘ）の値を生成部４０ａに出力する。
【０１１０】
生成部４０ａは、図９に示した生成部４０と同様の処理を実行し、メッセージに関する処理を行う外部システムの数だけ異なる暫定識別子を生成する。より具体的には、生成部４０ａは、暫定識別子の値のうち、アプリケーション処理部３７ａがメッセージの送受信を行う際に用いる通信プロトコルに応じた位置に、算出部３９ａが算出したＦ（ｘ）の値を挿入した暫定識別子を生成する。その際、生成部４０ａは、生成した暫定識別子の値が、該暫定識別子に含まれたＦ（ｘ）に対応付けて未使用ＴＩＤリスト３６に登録されていなければ、暫定識別子を再生成する。
【０１１１】
例えば、生成部４０ａは、メッセージの送信先となる外部システムのアプリケーション論理インタフェースに対応付けられた情報をルール特定テーブル２６およびルールテーブル２７から特定する。そして、生成部４０ａは、ルール特定テーブル２６およびルールテーブル２７から特定した情報を用いて、暫定識別子を生成する。そして、生成部４０ａは、生成した暫定識別子の値を未使用ＴＩＤリスト３６から削除する。
【０１１２】
次に、図１５を用いて、振分サーバ１２ａとデータサーバ１５ａとが実行する処理の流れについて説明する。図１５は、実施例２に係る振分サーバとデータサーバとが実行する処理の一例を示すシーケンス図である。なお、図１５に示す処理のうち、図１１に示す処理と同様の処理については、同一の符号を付し、説明を省略する。
【０１１３】
例えば、データサーバ１５ａは、サービスデータを生成すると、網アプリＡおよび網アプリＢを使用するためのＴＩＤを決定する（ステップＳ４０１）。例えば、データサーバ１５ａは、固定識別子のハッシュ値を算出する。そして、データサーバ１５ａは、網アプリＡおよび網アプリＢのいずれの通信プロトコルの暫定識別子にも含めることが可能なビット数を特定する。そして、データサーバ１５ａは、算出したハッシュ値のうち、特定したビット数（例えば下位ｍビット）をＦ（ｘ）として抽出する。そして、データサーバ１５ａは、「Ｈａｓｈ（Ｕｓｅｒ＃ｎ）」の下位ｍビットの値Ｆ（ｘ）を所定の位置に含む未使用のＴＩＤ＿Ｘ「ＴＩＤ＿Ｘ＃Ａ」、ＴＩＤ＿Ｘ「ＴＩＤ＿Ｘ＃Ｂ」を生成する（ステップＳ４０２）。そして、データサーバ１５ａは、生成したＴＩＤ＿Ｘ「ＴＩＤ＿Ｘ＃Ｂ」を網アプリＢに払い出す（ステップＳ４０３）。より具体的には、データサーバ１５ａは、ステップＳ１０５にて生成したサービスデータと共に、ユーザ識別子「Ｕｓｅｒ＃ｎ」とＴＩＤ＿Ｘ「ＴＩＤ＿Ｘ＃Ｂ」とを網アプリＢへ送信する（ステップＳ４０４）。
【０１１４】
そして、網アプリＢは、処理の実行結果に、ＴＩＤ＿Ｂ「ＴＩＤ＿Ｂ＃ａ」およびＴＩＤ＿Ｘ「ＴＩＤ＿Ｘ＃Ｂ」を付したメッセージを出力する（ステップＳ４０５）。振分サーバ１２ａは、ルール特定テーブル２６およびルールテーブル２７を参照して、ＴＩＤ＿Ｘ「ＴＩＤ＿Ｘ＃Ｂ」の値からＦ（ｘ）の値を抽出する（ステップＳ４０６）。そして、振分サーバ１２ａは、Ｆ（ｘ）の値に応じた振り分け先として、データサーバ１５ａを決定し、データサーバ１５ａに網アプリＢから受信したメッセージを送信する（ステップＳ４０７）。
【０１１５】
一方、データサーバ１５ａは、網アプリＢからのメッセージを受信すると、網アプリＢによる処理の実行結果を用いて、サービスデータを更新する（ステップＳ４０８）。そして、データサーバ１５ａは、更新したサービスデータと共に、ステップＳ４０２において生成済みのＴＩＤ＿Ｘ「ＴＩＤ＿Ｘ＃Ａ」を網アプリＡに払い出す（ステップＳ１０７）。そして、データサーバ１５ａは、暫定識別子であるＴＩＤ＿Ｘ「ＴＩＤ＿Ｘ＃Ａ」を用いて、網アプリＡと通信を行い、継続したサービスを提供することができる。
【０１１６】
次に、図１６を用いて、振分サーバ１２ａが実行する処理の流れについて説明する。図１６は、実施例２に係る振分サーバが実行する処理の流れの一例を示すフローチャートである。なお、図１６に示す処理のうち、図１２に示す処理と同様の処理については、同一の符号を付し、説明を省略する。
【０１１７】
例えば、振分サーバ１２ａは、受信メッセージにユーザ識別子が付されていない場合は（ステップＳ２０２：Ｎｏ）、メッセージの送信元が網アプリＡであり、網アプリＢではないか否かを判定する（ステップＳ５０１）。メッセージの送信元が網アプリＢではなく網アプリＡである場合（ステップＳ５０１：Ｙｅｓ）、振分サーバ１２ａは、以下の処理を実行する。すなわち、振分サーバ１２ａは、ルール特定テーブル２６およびルールテーブル２７を参照して、ＴＩＤ＿Ｘ「ＴＩＤ＿Ｘ＃Ａ」の値から、網アプリＡについてのＦ（ｘ）の埋込ルールに基づいて、Ｆ（ｘ）の値を抽出する（ステップＳ５０２）。そして、振分サーバ１２ａは、埋め込み値管理テーブル２５を参照して、抽出したＦ（ｘ）の値から、振り分け先のデータサーバを決定する（ステップＳ５０４）。そして、振分サーバ１２ａは、ステップＳ２０５に示した処理を実行する。
【０１１８】
一方、メッセージの送信元が網アプリＡではなく網アプリＢである場合（ステップＳ５０１：Ｎｏ）、振分サーバ１２ａは、ルール特定テーブル２６およびルールテーブル２７を参照して、ＴＩＤ＿Ｘ「ＴＩＤ＿Ｘ＃Ｂ」の値から、網アプリＢについてのＦ（ｘ）埋込／抽出ルールに基づいて、Ｆ（ｘ）の値を抽出する（ステップＳ５０３）。そして、振分サーバ１２ａは、ステップＳ５０４に示した処理を実行する。
【０１１９】
次に、図１７を用いて、データサーバ１５ａが実行する処理の流れについて説明する。図１７は、実施例２に係るデータサーバが実行する処理の流れの一例を示すフローチャートである。なお、図１７に示す処理のうち、図１３に示す処理と同様の処理については、同一の符号を付し、説明を省略する。
【０１２０】
例えば、データサーバ１５ａは、サービスデータを生成すると（ステップＳ３０４）、メッセージの送信先に対応するＴＩＤを生成済であるか否かを判定する（ステップＳ６０１）。そして、データサーバ１５ａは、ＴＩＤを生成済である場合（ステップＳ６０１：Ｙｅｓ）、メッセージ送信先の網アプリに対応する生成済のＴＩＤを払い出す（ステップＳ６０２）。
【０１２１】
一方、データサーバ１５ａは、メッセージの送信先に対応するＴＩＤを生成済していない場合（ステップＳ６０１：Ｎｏ）、網アプリＡ用のＴＩＤを生成する（ステップＳ６０３）。続いて、データサーバ１５ａは、網アプリＢ用のＴＩＤを生成する（ステップＳ６０４）。そして、データサーバ１５ａは、ステップＳ６０２に示した処理を実行する。
【０１２２】
［実施例２の効果］
上述したように、データサーバ１５ａは、複数の外部システムを用いて実行される処理の実行要求を受信した場合は、外部システムごとに異なる値の暫定識別子を生成する。そして、データサーバ１５ａは、外部システムごとに生成した暫定識別子を用いて、各外部システムとの通信を行う。このため、データサーバ１５ａは、複数の外部システムと協調して処理を実行する際にも、各メッセージの転送先の一意性を保証することができる。
【０１２３】
また、データサーバ１５ａは、暫定識別子のうち、メッセージを送受信する際の通信プロトコルに応じた位置に、Ｆ（ｘ）の値を埋め込んだ暫定識別子を生成する。このため、データサーバ１５ａは、暫定識別子の参照方法が通信プロトコルによって異なる場合にも、メッセージの振り分け先の一意性を保証することができる。
【０１２４】
また、データサーバ１５ａは、各外部システムが使用する通信プロトコルに応じた表現長の暫定識別子に共通に含めることが可能なビット数で、固定識別子から算出されたハッシュ値の一部であるＦ（ｘ）を算出する。これにより、データサーバ１５ａは、一連のシグナリングセッションにおいて、ある通信プロトコルで使用される暫定識別子に含めたハッシュ値の一部が、他の通信プロトコルで使用される暫定識別子のビット数を超えることを防止することができる。そのため、データサーバ１５ａは、一連のシグナリングセッションにおいて、各通信プロトコルで使用される暫定識別子のビット長が異なる場合であっても、メッセージの振り分け先の一意性を保証することができる。
【実施例３】
【０１２５】
本実施例のデータサ−バ１５ｂは、使用可能な暫定識別子を全て払い出し、未使用の暫定識別子がない場合に、メッセージの送信元との通信を、他の代表アドレスにリダイレクトする。例えば、各データサーバ１５ｂでは、複数の代表アドレスのそれぞれに異なるハッシュ関数を対応付けられている。未使用の暫定識別子がない場合に、データサーバ１５ｂは、他のハッシュ関数を用いて固定識別子から算出されたハッシュ値の一部であるＦ（ｘ）を算出する。そして、データサーバ１５ｂは、自装置で使用可能なＴＩＤの中で、算出したＦ（ｘ）を含む未使用の暫定識別子が存在するか否かを判定する。自装置で使用可能なＴＩＤの中に未使用の暫定識別子が存在する場合、データサーバ１５ｂは、該Ｆ（ｘ）の算出に用いたハッシュ関数に対応付けられている代表アドレスをメッセージの送信元に通知することにより、送信元にリダイレクトさせる。これにより、送信元の外部システムは、通知された代表アドレスにリダイレクトすることにより、暫定識別子の割り当てを受けることができる。
【０１２６】
また、自装置で使用可能なＴＩＤの中に未使用の暫定識別子が存在しない場合、データサーバ１５ｂは、他のデータサーバに対して固定識別子およびメッセージの送信元の情報と共に、該固定識別子に基づく割り当て可能な暫定識別子が存在するか否かを問い合せる。問い合わせを受けた他のデータサーバは、自装置に割り当てられている代表アドレス毎のハッシュ関数を用いて、通知された固定識別子からハッシュ値の一部であるＦ（ｘ）を算出する。そして、問い合わせを受けた他のデータサーバは、自装置で使用可能なＴＩＤの中で、代表アドレス毎に、算出したＦ（ｘ）を含む未使用の暫定識別子が存在するか否かを判定する。自装置で使用可能なＴＩＤの中に未使用の暫定識別子が存在する場合、他のデータサーバは、該Ｆ（ｘ）の算出に用いたハッシュ関数に対応付けられている代表アドレスを、メッセージの送信元に通知することにより、送信元にリダイレクトさせる。これにより、送信元の外部システムは、通知された代表アドレスにリダイレクトすることにより、暫定識別子の割り当てを受けることができる。
【０１２７】
以下、実施例３に係る振分サーバ１２ａおよびデータサーバ１５ｂについて説明する。まず、図１８を用いて、振分サーバ１２ａが有する機能構成の一例について説明する。図１８は、実施例３に係る振分サーバが有する機能構成の一例を示すブロック図である。
【０１２８】
図１８に示す例では、振分サーバ１２ａは、ネットワークインタフェース１８、通信データ処理部１９、通信路制御部２０、負荷分散処理部２１ａ、記憶部２２ａを有する。また、記憶部２２ａは、ハッシュ値振分テーブル２３ａ、振分先管理テーブル２４ａ、埋め込み値管理テーブル２５ａ、ルール特定テーブル２６ａ、ルールテーブル２７ａ、およびハッシュ関数テーブル４１を有する。また、負荷分散処理部２１ａは、判定部２８ａ、抽出部２９ａ、および振分部３０ａを有する。
【０１２９】
まず、記憶部２２ａが記憶する情報について説明する。ハッシュ値振分テーブル２３ａには、例えば図４に示したハッシュ値振分テーブル２３と同様の情報が、振分サーバ１２ａに割り当てられた代表アドレスごとに登録される。振分先管理テーブル２４ａには、例えば図５に示した振分先管理テーブル２４と同様の情報が、振分サーバ１２ａに割り当てられた代表アドレスごとに登録される。埋め込み値管理テーブル２５ａには、例えば図６に示した埋め込み値管理テーブル２５と同様の情報が、振分サーバ１２ａに割り当てられた代表アドレスごとに登録される。ルール特定テーブル２６ａには、例えば図７に示したルール特定テーブル２６と同様の情報が、振分サーバ１２ａに割り当てられた代表アドレスごとに登録される。ルールテーブル２７ａには、例えば図８に示したルールテーブル２７と同様の情報が、振分サーバ１２ａに割り当てられた代表アドレスごとに登録される。
【０１３０】
また、ハッシュ関数テーブル４１には、振分サーバ１２ａに割り当てられた代表アドレスごとに、固定有識別子からＦ（ｘ）の値を算出する際に用いるハッシュ関数が格納されている。例えば、図１９は、ハッシュ関数テーブルに格納される情報の一例を示す図である。図１９に示す例では、ハッシュ関数テーブル４１には、振分サーバ１２ａに割り当てられた代表アドレスであるＩＰアドレスと、かかるＩＰアドレスを宛先とするメッセージを受信した際に用いるハッシュ関数とが対応付けて登録される。例えば、図１９に示す例では、ＩＰアドレス「ａ．ｂ．ｃ．ｘ」とハッシュ関数「関数＃１」とが対応付けてハッシュ関数テーブル４１に登録されている。
【０１３１】
判定部２８ａは、判定部２８と同様の機能を発揮する。より具体的に、判定部２８ａは、判定部２８と同様に、振分サーバ１２ａに割り当てられた代表アドレスに応じたハッシュ関数を用いて、固定識別子のハッシュ値を算出する。例えば、判定部２８ａは、振分サーバ１２ａに割り当てられた代表アドレスに対応付けられたハッシュ関数を、ハッシュ関数テーブル４１から特定する。そして、判定部２８ａは、特定したハッシュ関数を用いて、固定識別子のハッシュ値を算出する。
【０１３２】
抽出部２９ａは、抽出部２９と同様の処理を行う。より具体的に、抽出部２９ａは、振分サーバ１２ａに割り当てられた代表アドレスと対応付けられた情報を、ルール特定テーブル２６ａおよびルールテーブル２７ａから特定する。また、抽出部２９ａは、メッセージに関する処理を実行する際のアプリケーション論理インタフェースの番号と紐付けられたルール内容を特定する。そして、抽出部２９ａは、ルール内容に従って、暫定識別子からＦ（ｘ）の値を抽出する。
【０１３３】
振分部３０ａは、振分部３０と同様の処理を行う。より具体的には、振分部３０ａは、振分サーバ１２ａに割り当てられた代表アドレスと対応付けられた情報を、ハッシュ値振分テーブル２３ａ、振分先管理テーブル２４ａ、および埋め込み値管理テーブル２５ａから特定する。そして、振分部３０ａは、特定した情報を用いて、受信したメッセージの振り分けを行う。すなわち、振分部３０ａは、振分サーバ１２ａに割り当てられた代表アドレスごとに異なるハッシュ関数を用いて、メッセージの振り分けを行う。
【０１３４】
次に、図２０を用いて、データサーバ１５ｂが有する機能構成の一例について説明する。図２０は、実施例３に係るデータサーバが有する機能構成の一例を示すブロック図である。図２０に示す例では、データサーバ１５ｂには、ネットワークインタフェース３１、通信データ処理部３２、通信路制御部３３、アプリケーション処理部３７ａ、埋め込み処理部３８ｂ、および記憶部３４ａを有する。また、記憶部３４ａは、ＭＭＥデータ３５、ルール特定テーブル２６ａ、ルールテーブル２７ａ、未使用ＴＩＤリスト３６ａ、ハッシュ関数テーブル４１、及びデータサーバリスト４２が格納される。また、埋め込み処理部３８ｂは、算出部３９ａ、および生成部４０ｂを有する。
【０１３５】
データサーバリスト４２は、メッセージの振り分け先となる他のデータサーバ（例えば図１に示したデータサーバ１６、１７）に対して問合せを行うためのＩＰアドレスが登録されている。例えば、図２１は、データサーバリストに格納される情報の一例を示す図である。図２１に示すように、データサーバリスト４２には、問合先となるデータサーバの識別子である問合先データサーバＩＤと、そのデータサーバのＩＰアドレスとが対応付けて登録されている。例えば、図２１に示す例では、問合先データサーバＩＤ「＃α」とＩＰアドレス「ａ．ｂ．ｃ．ｄ」とが対応付けて登録され、問合先データサーバＩＤ「＃β」とＩＰアドレス「ａ．ｂ．ｃ．ｅ」とが対応付けて登録されている。
【０１３６】
図２０に戻り、説明を続ける。算出部３９ａは、図１４に示した算出部３９ａと同様の機能を発揮する。より具体的には、算出部３９ａは、ハッシュ関数テーブル４１を参照し、代表アドレスと対応付けられたハッシュ関数を特定する。そして、算出部３９ａは、特定したハッシュ関数を用いて、ハッシュ値を算出し、算出したハッシュ値からＦ（ｘ）を抽出する。
【０１３７】
生成部４０ｂは、生成部４０若しくは生成部４０ａと同様の機能を発揮する。より具体的には、生成部４０ｂは、未使用ＴＩＤリスト３６ａに登録された情報のうち、代表アドレスに対応する情報を参照し、算出部３９ａが算出したＦ（ｘ）の値に対応付けられている未使用のＴＩＤが存在するか否かを判定する。未使用のＴＩＤが存在しない場合、生成部４０ｂは、ハッシュ関数テーブル４１を参照して、Ｆ（ｘ）の値を算出する際に用いられたハッシュ関数とは異なるハッシュ関数を選択する。そして、生成部４０ｂは、選択したハッシュ関数を用いたＦ（ｘ）の算出を算出部３９ａに指示する。そして、算出部３９ａが算出したＦ（ｘ）の値に対応付けられている未使用のＴＩＤが未使用ＴＩＤリスト３６ａ内に見つかった場合、生成部４０ｂは、該Ｆ（ｘ）の値を算出する際に用いられたハッシュ関数に対応付けられた代表アドレスを特定する。そして、生成部４０ｂは、特定した代表アドレスを、メッセージの送信元へ通知することにより、通知した代表アドレスへのリダイレクトを送信元に指示する。
【０１３８】
一方、自装置のハッシュ関数テーブル４１に登録されたいずれのハッシュ関数を用いても、未使用のＴＩＤが見つからなかった場合、生成部４０ｂは、データサーバリスト４２を参照し、全てのデータサーバのＩＰアドレスを特定する。そして、生成部４０ｂは、特定したＩＰアドレスを宛先として、固定識別子およびメッセージの送信元の情報と共に、該固定識別子に基づく割り当て可能な暫定識別子が存在するか否かを問い合せるメッセージを送信する。問い合わせを受けた他のデータサーバの生成部４０ｂは、ハッシュ関数テーブル４１を参照し、自装置に割り当てられている代表アドレス毎のハッシュ関数を用いたＦ（ｘ）の算出を算出部３９ａに指示する。そして、問い合わせを受けた他のデータサーバの生成部４０ｂは、自装置で使用可能なＴＩＤの中で、代表アドレス毎に、算出されたＦ（ｘ）を含む未使用の暫定識別子が存在するか否かを判定する。未使用の暫定識別子が存在する場合、問い合わせを受けた他のデータサーバの生成部４０ｂは、該Ｆ（ｘ）の算出に用いたハッシュ関数に対応付けられている代表アドレスを、メッセージの送信元に通知することにより、送信元にリダイレクトさせる。
【０１３９】
一方、自装置で使用可能なＴＩＤの中に未使用の暫定識別子が存在しない場合、問い合わせを受けた他のデータサーバの生成部４０ｂは、問い合わせの送信元のデータサーバ１５ｂに、暫定識別子の割り当て失敗を通知する。全ての他のデータサーバから割り当て失敗が通知された場合、データサーバ１５ｂは、セッションの確立失敗を示すメッセージと、ＭＭＥ８が提供するサービスと同種のサービスを提供するシステムへのリダイレクトを誘導するメッセージを送信元へ送信する。
【０１４０】
次に、図２２を用いて、振分サーバ１２ａとデータサーバ１５ｂとが実行する処理の流れについて説明する。図２２は、実施例３に係る振分サーバとデータサーバとが実行する処理の一例を示すシーケンス図である。なお、図２２に示す処理のうち、図１１、図１５に示す処理と同様の処理については、同一の符号を付し、説明を省略する。
【０１４１】
例えば、データサーバ１５ｂは、固定識別子に基づいて算出したＦ（ｘ）の値を含む未使用のＴＩＤが存在しない場合（ステップＳ７０１）、以下の処理を実行する。すなわち、データサーバ１５ｂは、別のハッシュ関数を用いて算出されたＦ（ｘ）を含む未使用のＴＩＤが存在するか否かを、自装置を含めて全てのデータサーバに問い合わせる（ステップＳ７０２）。別のハッシュ関数を用いて算出されたＦ（ｘ）を含むＴＩＤの中に、未使用のＴＩＤが存在する場合（ステップＳ７０３：Ｙｅｓ）、データサーバ１５ｂは、別の代表アドレスへのリダイレクト指示を網アプリＡに送信する（ステップＳ７０４）。一方、別のハッシュ関数を用いて算出されたＦ（ｘ）を含む未使用のＴＩＤが存在しない場合（ステップＳ７０３：Ｎｏ）、データサーバ１５ｂは、以下の処理を実行する。すなわち、データサーバ１５ｂは、セッションの確立失敗を示すメッセージと共に、他の同種アプリへのリダイレクトを誘導するメッセージを網アプリＡに送信する（ステップＳ７０５）。
【０１４２】
次に、図２３を用いて、振分サーバ１２ａが実行する処理の流れについて説明する。図２３は、実施例３に係る振分サーバが実行する処理の流れの一例を示すフローチャートである。なお、図２３に示す処理のうち、図１２に示す処理と同様の処理については、同一の符号を付し、説明を省略する。
【０１４３】
例えば、振分サーバ１２ａは、メッセージを受信すると（ステップＳ２０１）、メッセージの宛先の代表アドレスに対応付けられたハッシュ関数を選択する（ステップＳ８０１）。そして、振分サーバ１２ｂは、選択したハッシュ関数を用いて、ステップＳ２０２〜Ｓ２０５に示した処理を実行する。
【０１４４】
次に、図２４を用いて、データサーバ１５ｂが実行する処理の流れについて説明する。図２４は、実施例３に係るデータサーバが実行する処理の流れの一例を示すフローチャートである。なお、図２４には、データサーバ１５ｂが、固定識別子に基づいて算出したＦ（ｘ）の値を含む未使用のＴＩＤが存在するか否かに応じた処理の流れを記載した。
【０１４５】
例えば、データサーバ１５ｂは、固定識別子に基づいて算出したＦ（ｘ）の値を含む未使用のＴＩＤが存在するか否かを判定する（ステップＳ９０１）。固定識別子に基づいて算出したＦ（ｘ）を含む未使用のＴＩＤが存在する場合（ステップＳ９０１：Ｙｅｓ）、データサーバ１５ｂは、以下の処理を実行する。すなわち、データサーバ１５ｂは、Ｆ（ｘ）を含むＴＩＤの候補を生成し、生成したＴＩＤの候補が未使用のＴＩＤであれば、該候補をＴＩＤとして生成する（ステップＳ９０２）。そして、データサーバ１５ｂは、生成したＴＩＤを対向側の網アプリに払い出して（ステップＳ９０３）、処理を終了する。
【０１４６】
一方、固定識別子に基づいて算出したＦ（ｘ）の値を含む未使用のＴＩＤが存在しない場合（ステップＳ９０１：Ｎｏ）、データサーバ１５ｂは、自装置で使用可能なＴＩＤの中に、別のハッシュ関数を使用して算出されたＦ（ｘ）を含む未使用のＴＩＤが存在するか否かを判定する（ステップＳ９０４）。自装置で使用可能なＴＩＤの中に、別のハッシュ関数を使用して算出されたＦ（ｘ）を含む未使用のＴＩＤが存在する場合（ステップＳ９０４：Ｙｅｓ）、データサーバ１５ｂは、ステップＳ９０９に示す処理を実行する。
【０１４７】
一方、自装置に未使用のＴＩＤが存在しない場合（ステップＳ９０４：Ｎｏ）、データサーバ１５ｂは、他のデータサーバに、別のハッシュ関数を使用して算出されたＦ（ｘ）を含む未使用のＴＩＤがあるか問い合わせる（ステップＳ９０５）。
【０１４８】
そして、データサーバ１５ｂは、問合せの回答を待ち（ステップＳ９０６）、問合せの回答を他のすべてのデータサーバから受信する（ステップＳ９０７）。いずれかのデータサーバから未使用のＴＩＤが存在する旨が通知された場合（ステップＳ９０８：Ｙｅｓ）、データサーバ１５ｂは、以下の処理を実行する。すなわち、データサーバ１５ｂは、別のハッシュ関数に対応付けられている代表アドレスへのリダイレクト指示をメッセージの送信元へ送信し（ステップＳ９０９）、処理を終了する。
【０１４９】
一方、全てのデータサーバから未使用のＴＩＤが存在しない旨が通知された場合（ステップＳ９０８：Ｎｏ）、データサーバ１５ｂは、メッセージの送信元に対してセッションの確立失敗を示すメッセージと共に、他の同種アプリへのリダイレクトを誘導するメッセージを送信し（ステップＳ９１０）、処理を終了する。
【０１５０】
［実施例３の効果］
上述したように、データサーバ１５ｂは、振分サーバ１２ａに割り当てられた代表アドレスごとに異なるハッシュ関数を用いて、固定識別子から暫定識別子を算出する。また、データサーバ１５ｂは、振分サーバ１２ａに割り当てられた代表アドレスごとに異なるハッシュ関数を用いてメッセージの振り分けを行う振分サーバ１２ａから、メッセージの振り分けを受付ける。このため、データサーバ１５ｂは、生成可能な暫定識別子空間を拡張することができるので、暫定識別子の枯渇を防止することができる。
【０１５１】
また、データサーバ１５ｂは、使用可能な暫定識別子を全て払い出し、未使用の暫定識別子がない場合に、他のハッシュ関数を用いて算出されたＦ（ｘ）を含む未使用の暫定識別子が存在するか否かを判定する。そして、データサーバ１５ｂは、未使用の暫定識別子が存在すると判定した場合は、かかる他のハッシュ関数を用いてメッセージの振り分けが行われる代表アドレスを、メッセージの送信元に通知する。
【０１５２】
すなわち、暫定識別子の一部に固定識別子のハッシュ値を埋め込んだ場合は、割り当て可能な暫定識別子の数が減少してしまう。しかしながら、データサーバ１５ｂは、代表アドレスごとに異なるハッシュ関数を適用し、あるハッシュ関数のハッシュ空間で使用可能な暫定識別子が枯渇した場合は、他のハッシュ関数のハッシュ空間に空きが存在するか否かを判定する。そして、データサーバ１５ｂは、他のハッシュ関数のハッシュ空間に空きが存在する場合は、かかる他のハッシュ関数を用いて割り当てを行う代表アドレスをメッセージの送信元に通知する。このため、データサーバ１５ｂは、暫定識別子の枯渇を防ぐことができる。
【０１５３】
また、データサーバ１５ｂは、他のハッシュ関数を用いて算出されたＦ（ｘ）を含む未使用の暫定識別子が存在するか否かを他のデータサーバに問い合わせる。そして、データサーバ１５ｂは、いずれかの他のデータサーバで、未使用の暫定識別子が存在すると判定された場合は、かかる他のハッシュ関数を用いてメッセージの振り分けが行われる代表アドレスを、メッセージの送信元に通知する。このため、データサーバ１５ｂは、暫定識別子を無駄なく使用することができるので、暫定識別子の枯渇を防ぐことができる。
【実施例４】
【０１５４】
これまで本発明の実施例について説明したが、実施例は、上述した実施例以外にも様々な異なる形態にて実施されてよいものである。そこで、以下では実施例４として他の実施例を説明する。
【０１５５】
［ハッシュ値の暗号化について］
上述したデータサーバ１５は、算出したハッシュ値の一部を含む暫定識別子を生成した。しかしながら、開示の技術は、これに限定されるものではない。例えば、データサーバ１５は、算出したハッシュ値の全てを含む暫定識別子を生成してもよく、算出したハッシュ値を所定の手法で暗号化し、暗号化したハッシュ値を含む暫定識別子を生成してもよい。このような処理を実行した場合は、データサーバ１５は、暫定識別子が剽窃された場合にも、ハッシュ値から固定識別子を推測するといった処理を困難にすることができる。この結果、データサーバ１５は、セキュリティリスクを軽減することができる。
【０１５６】
［ハッシュ値の埋め込み位置について］
また、データサーバ１５は、算出したハッシュ値の一部を暫定識別子に埋め込み、算出したハッシュ値の残りの値を、メッセージの他の領域に埋め込んでもよい。例えば、データサーバ１５は、メッセージを送受信する際のパケットに代表アドレスを格納する場合、かかる代表アドレスの下位ビットに、算出したハッシュ値の残りの値を埋め込んでもよい。また、データサーバ１５は、トランスポート層で用いるポート番号の下位ビットに、算出したハッシュ値の残りの値を埋め込んでもよい。
【０１５７】
このような処理を実行した場合は、複数の代表アドレスを、メッセージを振り分けるための帯域として確保できる場合や、トランスポート層のポート番号が自由に使える場合は、代表アドレスやポート番号等の一部にハッシュ値の一部を埋め込むことができる。この結果、データサーバ１５は、暫定識別子に埋め込むハッシュ値の桁数を減少させることができるので、使用可能な暫定識別子の数を増大させることができる。また、データサーバ１５は、暫定識別子のビット長が短い通信プロトコルが適用される場合であっても、収容できるユーザ数の減少を抑えるので、処理を適用可能な通信プロトコルの範囲を拡大することができる。
【０１５８】
［他の装置への適用について］
なお、上述したＭＭＥ８の構成は、３ＧＰＰの他のサービスノード、例えば、ｅＮＢ６、Ｓ／Ｐ−ＧＷ１０にも適用可能である。また、ＭＭＥ８の構成は、ＨＳＳ（Home  Subscriber  Server）、ＰＣＲＦ（Policy  and  Charging  Rules  Function）、ＲＮＣ（Radio  Network  Controller）等にも適用可能である。また、ＭＭＥ８の構成は、ＳＧＳＮ（Serving  GPRS  Support  Node）、ＧＧＳＮ（Gateway  GPRS  Support  Node）等にも適用可能である。
【０１５９】
例えば、図２５は、ｅＮＢやＳ／Ｐ−ＧＷの内部構成の一例を示すブロック図である。図２５に示すように、ｅＮＢ７は、ＭＭＥ８と同様に、ロードバランサ、複数の振分サーバ、複数のｅＮＢデータサーバにより構成され、ＭＭＥ８と同様の管理処理を実行することで、ｅＮＢとしての機能を発揮してもよい。Ｓ／Ｐ−ＧＷ１０は、ＭＭＥ８と同様に、ロードバランサ、複数の振分サーバ、複数のＧＷデータサーバにより構成され、ＭＭＥ８と同様の管理処理を実行することで、Ｓ／Ｐ−ＧＷとしての機能を発揮してもよい。
【０１６０】
［ハードウェア］
図２６は、振分サーバおよびデータサーバのハードウェア構成例を示すブロック図である。ここで示すハードウェア構成例は、図２で説明した振分サーバ１２やデータサーバ１５などの構成例であり、ここでは情報処理装置９００として説明する。
【０１６１】
図２６に示すように、情報処理装置９００は、通信インタフェース９００ａ、入力装置９００ｂ、表示装置９００ｃ、記憶部９００ｄ、およびプロセッサ９００ｅを有する。なお、図２６に示したハードウェア構成は一例であり、他のハードウェアを有していてもよい。
【０１６２】
通信インタフェース９００ａは、他の装置との間で通信経路を確立して、データの送受信を実行するインタフェースであり、例えばネットワークインタフェースカードや無線インタフェースなどである。
【０１６３】
入力装置９００ｂは、ユーザ等からの入力を受け付ける装置であり、例えばマウスやキーボードなどである。表示装置９００ｃは、各種情報を表示するディスプレイやタッチパネルなどである。
【０１６４】
記憶部９００ｄは、振分サーバ１２やデータサーバ１５の各種機能を実行するためのデータや各種プログラムを格納する記憶装置である。例えば、記憶部９００ｄは、図３に示す記憶部２２や、図９に示す記憶部３４と同様の情報を記憶する。記憶部９００ｄの一例としては、ＲＯＭ、ＲＡＭ、ハードディスクなどがある。
【０１６５】
プロセッサ９００ｅは、記憶部９００ｄに記憶されるプログラムやデータを用いて、情報処理装置９００で実行される処理を制御する。プロセッサ９００ｅの一例としては、例えばＣＰＵやＭＰＵなどがある。このプロセッサ９００ｅは、ＲＯＭ等に記憶されるプログラムをＲＡＭに展開して、各種処理に対応する各種プロセスを実行する。例えば、プロセッサ９００ｅは、図３に示す負荷分散処理部２１や、図９に示す埋め込み処理部３８と同様の処理を実行するプロセスを動作させる。
【０１６６】
［機能構成について］
上述した処理のうち、自動的に行われるものとして説明した処理の全部又は一部を手動的におこなうこともできる。あるいは、手動的におこなわれるものとして説明した処理の全部又は一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【０１６７】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散や統合の具体的形態は図示のものに限られない。つまり、その全部又は一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。
【０１６８】
また、各装置にて行なわれる各処理機能は、その全部又は任意の一部が、ＣＰＵ及び当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【符号の説明】
【０１６９】
１  通信システム
２  移動端末
３  無線アクセス網
４  移動コア網
５  インターネット
６、７  ｅＮＢ
８、９  ＭＭＥ
１０  Ｓ／Ｐ−ＧＷ
１１  ロードバランサ
１２〜１４  振分サーバ
１５〜１７  データサーバ
１８、３１  ネットワークインタフェース
１９、３２  通信データ処理部
２０、３３  通信路制御部
２１、２１ａ  負荷分散処理部
２２、２２ａ、３４、３４ａ  記憶部
２３、２３ａ  ハッシュ値振分テーブル
２４、２４ａ  振分先管理テーブル
２５、２５ａ  埋め込み値管理テーブル
２６、２６ａ  ルール特定テーブル
２７、２７ａ  ルールテーブル
２８、２８ａ  判定部
２９、２９ａ  抽出部
３０、３０ａ  振分部
３５  ＭＭＥデータ
３６、３６ａ  未使用ＴＩＤリスト
３７、３７ａ  アプリケーション処理部
３８、３８ａ、３８ｂ  埋め込み処理部
３９、３９ａ  算出部
４０、４０ａ、４０ｂ  生成部
４１  ハッシュ関数テーブル
４２  データサーバリスト
【図１】
2016213604.tif 000003
【図２】
2016213604.tif 000004
【図３】
2016213604.tif 000005
【図４】
2016213604.tif 000006
【図５】
2016213604.tif 000007
【図６】
2016213604.tif 000008
【図７】
2016213604.tif 000009
【図８】
2016213604.tif 000010
【図９】
2016213604.tif 000011
【図１０】
2016213604.tif 000012
【図１１】
2016213604.tif 000013
【図１２】
2016213604.tif 000014
【図１３】
2016213604.tif 000015
【図１４】
2016213604.tif 000016
【図１５】
2016213604.tif 000017
【図１６】
2016213604.tif 000018
【図１７】
2016213604.tif 000019
【図１８】
2016213604.tif 000020
【図１９】
2016213604.tif 000021
【図２０】
2016213604.tif 000022
【図２１】
2016213604.tif 000023
【図２２】
2016213604.tif 000024
【図２３】
2016213604.tif 000025
【図２４】
2016213604.tif 000026
【図２５】
2016213604.tif 000027
【図２６】
2016213604.tif 000028
【図２７】
2016213604.tif 000029
【図２８】
2016213604.tif 000030