JP2016213604A - 通信装置及び管理方法 - Google Patents

通信装置及び管理方法 Download PDF

Info

Publication number
JP2016213604A
JP2016213604A JP2015094104A JP2015094104A JP2016213604A JP 2016213604 A JP2016213604 A JP 2016213604A JP 2015094104 A JP2015094104 A JP 2015094104A JP 2015094104 A JP2015094104 A JP 2015094104A JP 2016213604 A JP2016213604 A JP 2016213604A
Authority
JP
Japan
Prior art keywords
identifier
value
data server
temporary identifier
distribution
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2015094104A
Other languages
English (en)
Inventor
直聰 渡邊
Naotoshi Watanabe
直聰 渡邊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2015094104A priority Critical patent/JP2016213604A/ja
Priority to US15/082,256 priority patent/US20160323082A1/en
Publication of JP2016213604A publication Critical patent/JP2016213604A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

【課題】クラスタシステムにおいて、同一のセッションに含まれるパケットを処理するサーバの一意性を保つ。
【解決手段】通信装置は、抽出部と、算出部と、生成部と、通信部とを有する。抽出部は、処理の実行要求が受信されると、当該実行要求から送信元を示す識別子であって、値が固定の固定識別子を抽出する。算出部は、所定のハッシュ関数を用いて、抽出部が抽出した固定識別子のハッシュ値を算出する。生成部は、送信元を示す識別子であって、処理の実行状況に応じて値を変更する暫定識別子として、算出部が算出したハッシュ値を一部に含む値を生成する。通信部は、生成部が生成した暫定識別子を用いて、送信元と通信を行う。
【選択図】図11

Description

本発明は、通信装置及び管理方法に関する。
近年、汎用のサーバ上で網機能アプリケーションを実行することで、専用のハードウェアにより実現されていた網機能を仮想化する網機能仮想化(NFV:Network Function Virtualization)の技術が知られている。そのような網機能アプリケーションの一例として、S/P−GW(Serving/Packet data network GateWay)やMME(Mobility Management Entity)等の機能を実現するアプリケーションが検討されている。
また、網機能アプリケーションをクラウドシステムに適用することで、需要の変動に応じたリソース割り当てや障害に対する柔軟な対応の実現が期待されている。そのような網機能アプリケーションの適用先として、ユーザ識別子等、クライアントを示す固定の識別子(以下、固定識別子と記載する。)に応じて、パケットを複数の情報処理サーバに振り分けるスケールアウト型のクラスタシステムが検討されている。
例えば、クラスタシステムは、複数の情報処理サーバと、パケットの振分を行う振分サーバとを有する。また、振分サーバは、クライアントからパケットを受信すると、受信したパケットから固定識別子を抽出し、抽出した固定識別子のハッシュ値を算出する。そして、振分サーバは、算出したハッシュ値に応じた情報処理サーバへパケットを転送する。その結果、クラスタシステムは、クライアントごとに一意な情報処理サーバへパケットを転送し、継続したサービスの提供を実現する。
特許第5544522号公報 特開2014−67317号公報 特開2013−182575号公報
しかしながら、上述したクラスタシステムでは、固定識別子のハッシュ値に応じた情報処理サーバにパケットを振り分けるので、クライアントを示す識別子が処理の状況に応じて変化する網機能アプリケーションの実行が困難であるという問題がある。
例えば、3GPP(Third Generation Partnership Project)では、固定識別子の剽窃を防ぐため、シグナリングセッションが継続する間のみ有効な暫定識別子が用いられる場合がある。例えば、情報処理サーバは、固定識別子を含むパケットを受信すると、パケットの送信元となるクライアントを示す暫定識別子を生成し、生成した暫定識別子をクライアントに通知する。そして、情報処理サーバおよびクライアントは、情報処理サーバが生成した暫定識別子を用いて、パケットの送受信を行う。
しかしながら、そのような暫定識別子が用いられた場合、暫定識別子に基づいてハッシュ値が算出されるため、同一のセッションに含まれるパケットが、同一の情報処理サーバに転送されるとは限らない。そのため、上述したクラスタシステムでは、パケットの転送先となる情報処理サーバの一意性を保証することが困難となり、継続したサービスを提供することが難しい。
1つの側面では、クラスタシステムにおいて、同一のセッションに含まれるパケットを処理するサーバの一意性を保つことができる通信装置及び管理方法を提供することを目的とする。
一つの態様では、通信装置は、抽出部と、算出部と、生成部と、通信部とを有する。抽出部は、処理の実行要求が受信されると、当該実行要求から送信元を示す識別子であって、値が固定の固定識別子を抽出する。算出部は、所定のハッシュ関数を用いて、前記抽出部が抽出した固定識別子のハッシュ値を算出する。生成部は、前記送信元を示す識別子であって、前記処理の実行状況に応じて値を変更する暫定識別子として、前記算出部が算出したハッシュ値を一部に含む値を生成する。通信部は、前記生成部が生成した暫定識別子を用いて、前記送信元と通信を行う。
1つの側面では、クラスタシステムにおいて、同一のセッションに含まれるパケットを処理するサーバの一意性を保つことができる。
図1は、実施例1に係る通信システムの一例を示す説明図である。 図2は、MMEの内部構成の一例を示すブロック図である。 図3は、振分サーバの機能構成の一例を示すブロック図である。 図4は、ハッシュ値振分テーブルに格納される情報の一例を説明する図である。 図5は、振分先管理テーブルに格納される情報の一例を説明する図である。 図6は、埋め込み値管理テーブルに格納される情報の一例を説明する図である。 図7は、ルール特定テーブルに格納される情報の一例を説明する図である。 図8は、ルールテーブルに格納される情報の一例を説明する図である。 図9は、データサーバが有する機能構成の一例を示すブロック図である。 図10は、未使用TIDリストに格納される情報の一例を説明する図である。 図11は、振分サーバとデータサーバとが実行する処理の一例を示すシーケンス図である。 図12は、振分サーバが実行する処理の流れの一例を示すフローチャートである。 図13は、データサーバが実行する処理の流れの一例を示すフローチャートである。 図14は、実施例2に係るデータサーバが有する機能構成の一例を示すブロック図である。 図15は、実施例2に係る振分サーバとデータサーバとが実行する処理の一例を示すシーケンス図である。 図16は、実施例2に係る振分サーバが実行する処理の流れの一例を示すフローチャートである。 図17は、実施例2に係るデータサーバが実行する処理の流れの一例を示すフローチャートである。 図18は、実施例3に係る振分サーバが有する機能構成の一例を示すブロック図である。 図19は、実施例3に係るハッシュ関数テーブルに格納される情報の一例を示す図である。 図20は、実施例3に係るデータサーバが有する機能構成の一例を示すブロック図である。 図21は、実施例3に係るデータサーバリストに格納される情報の一例を示す図である。 図22は、実施例3に係る振分サーバとデータサーバとが実行する処理の一例を示すシーケンス図である。 図23は、実施例3に係る振分サーバが実行する処理の流れの一例を示すフローチャートである。 図24は、実施例3に係るデータサーバが実行する処理の流れの一例を示すフローチャートである。 図25は、eNBやS/P−GWの内部構成の一例を示すブロック図である。 図26は、振分サーバおよびデータサーバのハードウェア構成例を示すブロック図である。 図27は、従来の振分サーバとデータサーバとが実行する処理の第1の例を示すシーケンス図である。 図28は、従来の振分サーバとデータサーバとが実行する処理の第2の例を示すシーケンス図である。
以下に図面を参照して、本発明にかかる通信装置及び管理方法の実施形態を詳細に説明する。実施形態において同一の機能を有する構成には同一の符号を付し、重複する説明は省略する。なお、以下の実施例は、一例を示すに過ぎず、本願の開示する通信装置及び管理方法の実施形態が限定されるものではない。また、以下の各実施形態は、矛盾しない範囲内で適宜組み合わせてもよい。
図1は、実施例1に係る通信システムの一例を示す説明図である。図1に示すように、通信システム1は、移動端末2、無線アクセス網3、移動コア網4、およびインターネット5を有する。また、無線アクセス網3は、eNB(evolved Node B)6、およびeNB7を有する。また、移動コア網4は、MME8、MME9、およびS/P−GW10を有する。
なお、通信システム1は、任意の数の移動端末2が収容可能であるものとする。また、無線アクセス網3は、他にも複数のeNBを有するものとする。また、移動コア網4は、他にも複数のMMEを有するものとする。また、図1に示す例では、通信システム1の一例として、LTE(Long Term Evolution)のネットワーク構成例を示したが、開示の技術はこれに限定されるものではなく、他にも任意のネットワーク構成が適用可能である。
例えば、移動端末2は、利用者が使用するスマートフォン、フィーチャーフォン、およびタブレット端末等の端末装置であり、LTEにおけるUE(User Equipment)である。移動端末2は、移動コア網4のMMEが提供する各種サービスの提供を受けるため、無線アクセス網3に含まれるeNB6、7のいずれかを介して、処理の実行要求が格納されたパケットやトランザクションメッセージを移動コア網4に送信する。なお、以下の説明では、移動端末2から送信されたパケットやトランザクションメッセージを単にメッセージと記載する場合がある。また、以下の説明では、移動端末2がeNB6に接続して通信を行う例について説明するが、実施形態は、これに限定されるものではない。例えば、移動端末2は、移動した結果、接続対象をeNB6からeNB7に変更してもよい。
eNB6は、移動端末2との間でLTEに基づく無線通信を行う基地局装置である。例えば、eNB6は、移動通信網の機能を実現するアプリケーション(以下、網アプリと記載する。)を実行し、移動端末2からメッセージを受信すると、所定の通信プロトコルを用いて、移動コア網4が有するMME8やMME9等へメッセージを転送する。また、eNB6は、MME8やMME9等から、各種サービスの提供に係るメッセージを受信すると、受信したメッセージを移動端末2へ送信する。なお、eNB6、7は、S/P−GW10と通信可能に接続され、後述するMME8、9が所定の信号手順をeNB6、7とS/P−GW10とに対して用いることで、移動端末2とインターネット5との間の通信に必要な信号路の重畳設定してもよい。また、eNB6は、移動コア網4が有する各MMEと通信可能に接続されているものとする。また、eNB7はeNB6と同様の機能を発揮するものとして、説明を省略する。また、以下の説明では、eNB6は、網アプリAを実行するものとする。
MME8は、移動端末2に対して各種サービスの提供を行う。例えば、MME8は、網機能アプリケーションを実行し、移動端末2からメッセージを受信すると、受信したメッセージに関する各種処理を実行し、実行結果を移動端末2へ出力する。また、MME8は、S/P−GW10を介して、インターネット5にアクセスし、インターネット5上のサーバ等と協調して処理を実行する場合がある。なお、MME9は、MME8と同様の機能を発揮するものとして、説明を省略する。
S/P−GW10は、移動コア網4の通信プロトコルとインターネット5の通信プロトコルとの中継を行うゲートウェイ装置であり、例えば、LTEのS−GW(Serving GateWay)およびP−GW(Packet GateWay)である。なお、以下の説明では、S/P−GW10は、インターネット5と移動コア網4との間の通信を実現するための網アプリを実行するものとする。
ここで、MME8は、複数のデータサーバを有し、送信元の移動端末2を使用する利用者や、メッセージの送信元となるアプリケーション等、メッセージの送信元に応じて、受信したデータをデータサーバに振り分ける。そして、MME8は、データサーバに処理を実行させることで、MMEの機能を発揮する。すなわち、MME8は、LTEのMMEの機能を発揮させる網機能アプリケーションをスケールアウト型のクラスタシステムに適用することで実現される。
以下、実施例1に係るMME8の一例について説明する。図2は、MMEの内部構成の一例を示すブロック図である。図2に示すように、MME8は、ロードバランサ11、複数の振分サーバ12〜14、および複数のデータサーバ15〜17を有する。なお、図2に示すMME8の内部構成は、あくまで一例であり、MME8は、任意の数の振分サーバおよびデータサーバを有しても良い。また、以下の説明では、振分サーバ13、14は、振分サーバ12と同様の機能を発揮するものとして説明を省略する。また、データサーバ16、17は、データサーバ15と同様の機能を発揮するものとして、説明を省略する。
ロードバランサ11は、移動端末2やインターネット5等の外部システムに対する代表アドレスを1つ又は複数有するインタフェースサーバである。また、ロードバランサ11は、メッセージを受信すると、固定的な規則に従って、メッセージをいずれかの振分サーバ12〜14へ振り分けることで、各振分サーバ12〜14の処理負荷を分散する。なお、ロードバランサ11がメッセージを振り分ける規則については、ラウンドロビンや低負荷の振分サーバにメッセージを振り分ける等、任意の規則が適用可能である。
振分サーバ12は、メッセージを受信すると、メッセージの送信元に応じて、受信したメッセージをいずれかのデータサーバ15〜17へ振り分ける。より具体的には、振分サーバ12は、メッセージの送信元に対し、振分先のデータサーバ15〜17が一意に定まるように、メッセージの振り分けを行う。その結果、ロードバランサ11と振分サーバ12とは、通信セッションに関する状態情報を保持せずとも、メッセージの振り分けを行うことができるので、スケーラビリティにおけるボトルネックの発生を防ぐことができる。
データサーバ15は、受信したメッセージに基づいて、各種のサービスを提供するサーバである。例えば、データサーバ15は、振分サーバ12〜14からメッセージを受信すると、受信したメッセージの送信元を識別し、識別した送信元に対応する各種の処理を実行する。
上述したように、MME8が有する各データサーバ15〜17は、ロードバランサ11及び振分サーバ12〜14によって、メッセージが振り分けられる。そのため、MME8は、サービスを実行しない予備系を有するACT−SBY(ACTive-StandBY)方式と比較して、信頼性や冗長性を担保しつつリソースを無駄なく使用することができる。また、MME8は、IPアドレスの付け替えや経路の変更により、予備系へメッセージを振り分けずとも、振分サーバ12の共通規則の変更のみで、メッセージの振り分けを実現するので、運用性を向上させることができる。
ここで、従来のクラスタシステムでは、メッセージの送信元となる利用者を識別するユーザ識別子等、値が固定である固定識別子のハッシュ値を算出し、算出したハッシュ値に応じたデータサーバへメッセージの振り分けを行う。その結果、従来のクラスタシステムは、SIP(Session Initiation Protocol)プロトコル等、固定識別子を用いた通信プロトコルでは、送信元ごとに一意なデータサーバへメッセージを振り分けるので、各種サービスを継続して利用者に提供することができた。しかしながら、3GPP等、シグナリングセッションが継続する間のみ有効な暫定識別子を用いる通信プロトコルでは、送信元を示す識別子の値が変化する。そのため、従来のクラスタシステムは、3GPP等の通信プロトコルで送受信されるメッセージを、送信元ごとに一意なデータサーバへ振り分けることができない。
例えば、図27は、従来の振分サーバとデータサーバとが実行する処理の第1の例を示すシーケンス図である。なお、図27に示す例では、ロードバランサ100、振分サーバ101、データサーバ102、103を有する従来のクラスタシステムが、eNB6が実行する網アプリAからのメッセージを振り分ける処理の一例について記載されている。
なお、図27に示す例では、振分サーバ101は、所定のハッシュ関数を用いて固定識別子であるユーザ識別子のハッシュ値を算出する。そして、振分サーバ101は、算出した値が「0〜X」の範囲内となる場合に、メッセージをデータサーバ102に振り分け、算出した値が「X+1〜Y」の範囲内となる場合に、メッセージをデータサーバ103に振り分ける。
例えば、網アプリAは、ユーザ識別子「User#n」、TID(Tunnel ID)_A「TID_A#a」、TID_X「0」を含むメッセージをロードバランサ100に送信する(ステップS1)。ここで、TID_Aとは、メッセージの送信元を識別するための識別子であって、網アプリAが払い出す暫定識別子である。また、TID_Xとは、メッセージの宛先を識別する識別子であって、メッセージを受信したデータサーバ102、103が払い出す暫定識別子である。
ロードバランサ100は、所定の規則に従い、網アプリAから受信したメッセージを振分サーバ101に転送する(ステップS2)。また、振分サーバ101は、メッセージを受信すると、ユーザ識別子「User#n」のハッシュ値「Hash(User#n)」の値を算出する(ステップS3)。図27に示す例では、振分サーバ101は、ハッシュ値「Hash(User#n)」として値「X−5」を算出するので、受信したメッセージをデータサーバ102へ送信する(ステップS4)。
データサーバ102は、メッセージを受信すると、サービスを提供するための処理を実行することで、網アプリAへ返送するサービスデータを生成する(ステップS5)。また、データサーバ102は、受信用のTID_Xとして「TID_X#b」を生成する(ステップS6)。そして、データサーバ102は、生成した「TID_X#b」を網アプリAに払い出す(ステップS7)。より具体的には、データサーバ102は、ステップS5で生成したサービスデータと共に、網アプリAから受信した「TID_A#a」と、生成した「TID_X#b」とを網アプリAへ送信する(ステップS8)。
また、網アプリAは、さらなる処理を実行させるためにメッセージを送信する場合は、ユーザ識別子の剽窃を防ぐためにメッセージにユーザ識別子を格納せずに送信する。具体的には、網アプリAは、「TID_A#a」と、ステップS8で受信した「TID_X#b」とをメッセージと共にロードバランサ100へ送信する(ステップS9)。かかる場合、ロードバランサ100は、受信したメッセージを振分サーバ101に転送する(ステップS10)。
ここで、ステップS9で送信されたメッセージには、ユーザ識別子が格納されていないので、振分サーバ101は、ユーザ識別子を用いた振分を行うことができない(ステップS11)。そこで、振分サーバ101は、例えばTID_Xの値のハッシュ値「Hash(TID_X#b)」を算出する。しかしながら、TID_Xの値は、ユーザ識別子とは異なる値であるため、図27に示す例では、振分サーバ101は、ハッシュ値「Hash(TID_X#b)」として値「X+6」を算出する(ステップS12)。
その結果、振分サーバ101は、受信したメッセージをデータサーバ103へ送信する(ステップS13)。しかしながら、データサーバ103は、前回網アプリAが送信したメッセージに関する処理を実行しておらず、サービスデータを記憶していないので、メッセージを受信しても、継続するサービスを提供することができない(ステップS14)。
そこで、実施例1に係るMME8は、以下の管理処理を実行する。まず、データサーバ15は、網アプリAからメッセージを受信すると、受信したメッセージから固定識別子であるユーザ識別子を抽出する。そして、データサーバ15は、所定のハッシュ関数を用いて、抽出したユーザ識別子のハッシュ値を算出する。ここで、データサーバ15が用いる所定のハッシュ関数は、振分サーバ12がメッセージの振り分けを行う際に用いるハッシュ関数と同じハッシュ空間を有するハッシュ関数であるものとする。
また、データサーバ15は、メッセージの送信元を示す識別子であって、一連の処理を含むシグナリングセッション毎に異なる値の暫定識別子、すなわち、データサーバ15が払い出すTID_Xの値として、ユーザ識別子のハッシュ値を一部に含む値を生成する。例えば、データサーバ15は、TID_Xのビット長がn+mビットであり、ユーザ識別子から算出されるハッシュ値のビット長がmビットよりも長い場合は、算出したハッシュ値のうち下位mビットをTID_Xの下位mビットとする。また、データサーバ15は、TID_Xの上位nビットに乱数を格納したTID_Xの値を暫定識別子として生成する。そして、データサーバ15は、生成した暫定識別子をメッセージの送信元である網アプリAへ送信し、生成した暫定識別子を用いた通信を行う。
上述した処理を実行した場合、データサーバ15から網アプリAへ通知されるTID_Xには、固定識別子のハッシュ値の一部が格納されることとなる。その結果、振分サーバ12は、網アプリAから続けて受信したメッセージに固定識別子が含まれていなくとも、そのメッセージに含まれる暫定識別子から固定識別子のハッシュ値の一部を抽出することができる。そして、振分サーバ12は、受信したメッセージに含まれる暫定識別子から抽出したハッシュ値に応じてメッセージの振り分けを行うことで、メッセージの振り分け先となるデータサーバの一意性を保証することができる。
なお、データサーバ15は、固定識別子から算出されたハッシュ値の全体を含む暫定識別子を生成してもよい。すなわち、データサーバ15は、算出したハッシュ値のうち、振分サーバ12がメッセージの振り分け先を一意に保てる値を暫定識別子に埋め込めばよい。
なお、上述した管理処理以外にも、例えば、暫定識別子から特定の一意のユーザ識別子への変換機能を振分サーバに実行させることで、スケールアウト型のクラスタシステムに、暫定識別子を用いる通信プロトコルを適用する手法が考えられる。しかしながら、暫定識別子の値は、シグナリングセッション毎に異なる値が割り当てられるので、各振分サーバが処理の状態を示す情報を保持しなくてはならず、ボトルネックが生じてしまう。また、対向するシステムごとに同じ暫定識別子を払い出す手法が考えらえるが、インタフェースごとに使用される通信プロトコルが異なる場合があるため、通信プロトコルに応じた暫定識別子の様式を対応させることが難しい。また、サービスデータを全データサーバに同期させる手法も考えられるが、かかる手法では、同期に伴いリソースの使用効率が悪化し、運用性が低下してしまう。
一方、実施例1に係るMME8は、上述した管理処理を実行することで、メッセージに暫定識別子が含まれていえば、そのメッセージの送信元に応じたデータサーバに振り分けることができる。この結果、MME8は、ボトルネックの発生、リソースの使用効率の低下、および運用性の悪化を防ぎつつ、スケールアウト型のクラスタシステムに対し、処理に応じて値が変わる暫定識別子を用いた網アプリの適用を実現できる。
以下、図を用いて、上述した管理処理を実現する振分サーバ12およびデータサーバ15の機能構成について説明する。図3は、振分サーバの機能構成の一例を示すブロック図である。図3に示す例では、振分サーバ12は、ネットワークインタフェース18、通信データ処理部19、通信路制御部20、負荷分散処理部21、および記憶部22を有する。また、記憶部22は、ハッシュ値振分テーブル23、振分先管理テーブル24、埋め込み値管理テーブル25、ルール特定テーブル26、およびルールテーブル27を有する。また、負荷分散処理部21は、判定部28、抽出部29、および振分部30を有する。
まず、記憶部22が記憶する各テーブル23〜27について説明する。ハッシュ値振分テーブル23には、固定識別子から算出されたハッシュ値とメッセージの振分先データサーバとが対応付けて登録される。図4は、ハッシュ値振分テーブルに格納される情報の一例を説明する図である。ハッシュ値振分テーブル23には、例えば図4に示すように、ハッシュ値範囲と、振分先データサーバID(Identifier)とが対応付けて登録されている。ここで、ハッシュ値範囲とは、固定識別子から算出されたハッシュ値の範囲を示す情報である。また、振分先データサーバIDとは、メッセージの転送先となるデータサーバを示す情報である。
例えば、図4に示す例では、ハッシュ値振分テーブル23には、ハッシュ値範囲「0〜X」と振分先データサーバID「#α」とを対応付けたエントリが含まれる。かかるエントリは、固定識別子から算出されたハッシュ値がハッシュ値範囲「0〜X」に含まれる場合は、振分先データサーバID「#α」が示すデータサーバ(例えば、データサーバ15)にメッセージを振り分ける旨を示す。
また、図4に示す例では、ハッシュ値振分テーブル23には、ハッシュ値範囲「X+1〜Y」と振分先データサーバID「#β」とを対応付けたエントリが含まれる。該エントリは、固定識別子から算出されたハッシュ値、又は、暫定識別子に含まれるハッシュ値がハッシュ値範囲「X+1〜Y」に含まれる場合、振分先データサーバID「#β」が示すデータサーバにメッセージを振り分ける旨を示す。
振分先管理テーブル24には、メッセージの振り分け先となるデータサーバ15〜17にメッセージを送信するための宛先が格納される。図5は、振分先管理テーブル24に格納される情報の一例を説明する図である。振分先管理テーブル24には、例えば図5に示すように、振分先データサーバIDと、その振分先データサーバIDが示すデータサーバのIP(Internet Protocol)アドレスとが対応付けて登録される。
例えば、図5に示す例では、振分先管理テーブル24には、振分先データサーバID「#α」と、振分先データサーバID「#α」が示すデータサーバのIPアドレス「a.b.c.d」とが対応付けて登録されている。また、例えば、図5に示す例では、振分先管理テーブル24には、振分先データサーバID「#β」と、振分先データサーバID「#β」が示すデータサーバのIPアドレス「a.b.c.e」とが対応付けて登録されている。
埋め込み値管理テーブル25には、データサーバ15〜17が固定識別子から算出したハッシュ値のうち、下位mビット分の値であるF(x)の値と、そのF(x)の値が含まれる暫定識別子が付与されたメッセージの振り分け先とが対応付けて登録される。図6は、埋め込み値管理テーブルに格納される情報の一例を説明する図である。埋め込み値管理テーブル25には、例えば図6に示すように、F(x)の値の範囲であるF(x)値範囲と、そのF(x)が埋め込まれた暫定識別子が付与されたメッセージの振り分け先となるデータサーバの振分先データサーバIDとが対応付けて登録される。図6に示す例では、埋め込み値管理テーブル25には、F(x)値範囲「0〜h」と、振分先データサーバID「#α」とが対応付けて登録され、F(x)値範囲「h+1〜i」と、振分先データサーバID「#β」とが対応付けて登録されている。
ルール特定テーブル26には、暫定識別子の中のどこにF(x)が埋め込まれるかを示すルールであるF(x)埋込/抽出ルールが格納される。例えば、図7は、ルール特定テーブルに格納される情報の一例を説明する図である。図7に示す例では、ルール特定テーブル26には、アプリケーション論理インタフェースと、暫定識別子の中のどこにF(x)が埋め込まれるかを示すルールを識別するF(x)埋込/抽出ルールIDとが対応付けて登録される。
ここで、アプリケーション論理インタフェースとは、メッセージに係る処理をデータサーバ15が実行する際に用いる論理インタフェースの番号である。例えば、図7に示す例では、ルール特定テーブル26は、メッセージに係る処理を実行する際のアプリケーション論理インタフェースが「0」や「1」である場合は、F(x)埋込/抽出ルールID「#0」が示すルールが用いられる旨を示す。
ルールテーブル27には、暫定識別子の中のどこにF(x)が埋め込まれるかを示すルールの内容が格納される。例えば、図8は、ルールテーブルに格納される情報の一例を説明する図である。図8に示す例では、ルールテーブル27には、F(x)埋込/抽出ルールIDと、そのIDが示すルールの内容とが対応付けて格納される。例えば、図8に示すルールテーブル27では、F(x)埋込/抽出ルールID「#0」には、「宛先TIDの下位xビット」にF(x)の値が埋め込まれる旨のルールが対応付けられている。
図3に戻り、説明を続ける。ネットワークインタフェース18は、固有のレイヤ1、レイヤ2、およびレイヤ3プロトコルの終端処理を実行し、移動端末2、eNB6、又はS/P−GW10との間でメッセージの送受信を行う。なお、ネットワークインタフェース18は、例えば、NIC(Network Interface Controller)等により実現される。
通信データ処理部19は、通信路の設定情報に基づいて、振分サーバ12が送受信するメッセージのルーティングや、メッセージを転送する際に用いられる通信プロトコルに関する各種の処理を実行する。例えば、通信データ処理部19は、ネットワークインタフェース18を介して、MME8が有する代表アドレスを宛先とするメッセージを受信した場合に、受信したメッセージを負荷分散処理部21に出力する。
また、通信データ処理部19は、eNB6、7やS/P−GW10が宛先となるメッセージを受信した場合は、ネットワークインタフェース18を介して、受信したメッセージを宛先へ送信する。また、通信データ処理部19は、負荷分散処理部21から受信したメッセージを、ネットワークインタフェース18から、eNB6やS/P−GW10、データサーバ15〜17等に出力する。また、通信データ処理部19は、振分サーバ12へ送信されたシグナリング情報を受信すると、通信路制御部20にシグナリング情報を出力する。
通信路制御部20は、振分サーバ12が受信したシグナリング情報を用いて、負荷分散に関する各種の処理を実行する。なお、シグナリング情報を用いて実行される負荷分散に関する処理については、LTE等で実行される各種の処理が適用可能であるものとし、詳細な説明を省略する。
判定部28は、通信データ処理部19からメッセージを受信すると、受信したメッセージにユーザ識別子等の固定識別子が付されているか否かを判定する。また、判定部28は、受信したメッセージに固定識別子が付されていると判定した場合は、所定のハッシュ関数を用いて、メッセージに付された固定識別子のハッシュ値を算出する。そして、判定部28は、メッセージと算出したハッシュ値とを振分部30に出力する。一方、判定部28は、受信したメッセージに固定識別子が付されていない場合は、受信したメッセージを抽出部29に出力する。
抽出部29は、メッセージに付された暫定識別子から固定識別子のハッシュ値を抽出する。例えば、抽出部29は、判定部28からメッセージを受信すると、受信したメッセージに付されている暫定識別子から、F(x)の値を抽出する。例えば、抽出部29は、受信したメッセージの送信元のアプリケーションのアプリケーション論理インタフェースの番号に対応付けられたF(x)埋込/抽出ルールIDをルール特定テーブル27から特定する。続いて、抽出部29は、特定したF(x)埋込/抽出ルールIDと対応付けられたルール内容をルールテーブル27から特定する。そして、抽出部29は、特定したルール内容に基づいて、暫定識別子からF(x)の値を抽出する。そして、抽出部29は、抽出したF(x)の値とメッセージとを振分部30に出力する。
振分部30は、受信したメッセージの振り分けを行う。例えば、振分部30は、判定部28から、ハッシュ値とメッセージとを受信した場合は、ハッシュ値振分テーブル23を参照し、受信したハッシュ値を含むハッシュ値範囲に対応付けられた振分先データサーバIDを特定する。そして、振分部30は、特定した振分先データサーバIDに対応付けられたIPアドレスを振分先管理テーブル24から特定し、特定したIPアドレスを宛先として、判定部28から受付けたメッセージを送信する。
例えば、振分部30は、判定部28からハッシュ値「X−5」を受信した場合は、ハッシュ値「X−5」を含むハッシュ値範囲「0〜X」と対応付けられた振分先データサーバID「#α」をハッシュ値振分テーブル23から特定する。続いて、振分部30は、振分先データサーバID「#α」と対応付けられたIPアドレス「a.b.c.d」を振分先管理テーブル24から特定し、特定したIPアドレス「a.b.c.d」を宛先として、判定部28から受信したメッセージを送信する。
一方、振分部30は、抽出部29から、F(x)の値とメッセージとを受信した場合は、埋め込み値管理テーブル25を参照し、受信したF(x)の値を含むF(x)値範囲に対応付けられた振分先データサーバIDを特定する。そして、振分部30は、特定した振分先データサーバIDに対応付けられたIPアドレスを振分先管理テーブル24から特定し、特定したIPアドレスを宛先として、判定部28から受付けたメッセージを送信する。
例えば、振分部30は、抽出部29からF(x)の値「h+1」を受信した場合は、F(x)の値「h+1」を含むF(x)値範囲「h+1〜i」と対応付けられた振分先データサーバID「#β」を埋め込み値管理テーブル25から特定する。続いて、振分部30は、振分先データサーバID「#β」と対応付けられたIPアドレス「a.b.c.e」を振分先管理テーブル24から特定し、特定したIPアドレス「a.b.c.e」を宛先として、判定部28から受信したメッセージを送信する。
次に、図9を用いて、データサーバ15が有する機能構成の一例について説明する。図9は、データサーバが有する機能構成の一例を示すブロック図である。図9に示す例では、データサーバ15には、ネットワークインタフェース31、通信データ処理部32、通信路制御部33、記憶部34、アプリケーション処理部37、および埋め込み処理部38を有する。また、記憶部34は、MMEデータ35、ルール特定テーブル26、ルールテーブル27、および未使用TIDリスト36が格納される。また、埋め込み処理部38は、算出部39、および生成部40を有する。
なお、以下の説明では、ネットワークインタフェース31、通信データ処理部32、通信路制御部33は、図3に示したネットワークインタフェース18、通信データ処理部19、通信路制御部20と同様の機能を発揮するものとして、説明を省略する。また、以下の説明では、記憶部34が記憶するMMEデータ35、ルール特定テーブル26、ルールテーブル27、未使用TIDリスト36について説明し、その後、アプリケーション処理部37および埋め込み処理部38が実行する処理について説明する。
MMEデータ35は、データサーバ15がMMEとしての機能を発揮するためのデータであり、例えば、網機能アプリケーションや外部対向網機能アプリケーションを実行するために必要な各種情報が格納されている。
ルール特定テーブル26には、例えば図7を用いて説明したルール特定テーブル26と同様の情報が格納される。また、ルールテーブル27には、例えば図8を用いて説明したルールテーブル27と同様の情報が格納される。
未使用TIDリスト36には、使用されていない暫定識別子、すなわち、使用されていない宛先TIDの値が、その宛先TIDに埋め込まれるF(x)の値ごとに登録される。例えば、図10は、未使用TIDリストに格納される情報の一例を説明する図である。図10に示す例では、未使用TIDリスト36には、F(x)の値と空き番号リストとが対応付けて登録されている。ここで、空き番号リストとは、対応付けられたF(x)の値を含む宛先TIDのうち、使用が終了してから所定以上の時間が経過したTIDが登録されたリストである。例えば、図10に示す例では、未使用TIDリスト36は、F(x)の値「0」を含む宛先TIDが「N」、「G」、「K」であり、「N」、「G」、「K」は、一度も使用されていないか、使用が終了してから所定以上の時間が経過したTIDであることを示す。
図9に戻り、説明を続ける。アプリケーション処理部37は、MMEデータ35に登録された情報等を用いて、網機能アプリケーションや、外部対向網機能アプリケーション等を実行する。例えば、アプリケーション処理部37は、通信データ処理部32を介してメッセージを受信すると、受信したメッセージに付された固定識別子若しくは暫定識別子を抽出する。そして、アプリケーション処理部37は、抽出した固定識別子若しくは暫定識別子を用いて、継続したサービスを提供するための各種処理を実行し、処理の実行結果としてサービスデータを生成する。
また、アプリケーション処理部37は、シグナリングセッションの確立時に、固定識別子が含まれるメッセージを受信する。そして、アプリケーション処理部37は、受信したメッセージから固定識別子を抽出し、抽出した固定識別子と、受信したメッセージに係る処理をデータサーバ15が実行する際に用いる論理インタフェースの番号とを埋め込み処理部38に出力する。そして、アプリケーション処理部37は、暫定識別子を埋め込み処理部38から受信すると、受信した暫定識別子を付したサービスデータを、メッセージの送信元となるeNB6、S/P−GW10、若しくは移動端末2へ送信する。以降、アプリケーション処理部37は、同一にシグナリングセッションについては、埋め込み処理部38から受信した暫定識別子を用いて処理を継続する。
算出部39は、所定のハッシュ関数を用いて、アプリケーション処理部37が抽出した固定識別子のハッシュ値を算出する。より具体的には、算出部39は、MME8が有するデータサーバ15〜17の数、すなわち、メッセージの振り分けが行われるデータサーバ15〜17の数に応じた表現長のハッシュ関数を用いて、固定識別子のハッシュ値を算出する。例えば、算出部39は、メッセージを各データサーバ15〜17に対して振り分けることができる数のハッシュ値や、メッセージを各データサーバ15〜17に対して振り分けることができるビット長のハッシュ値を固定識別子から算出可能なハッシュ関数を用いる。例えば、算出部39は、アプリケーション処理部37から固定識別子を受信すると、所定のハッシュ関数を用いて、固定識別子のハッシュ値を算出する。続いて、算出部39は、アプリケーション処理部37から受信したアプリケーション論理インタフェースの番号に対応付けられたF(x)埋込/抽出ルールIDをルール特定テーブル26から特定する。続いて、生成部40は、特定したF(x)埋込/抽出ルールIDと対応付けられたルール内容をルールテーブル27から特定する。
そして、算出部39は、ルールテーブル27から特定したルール内容に従って、F(x)の値を生成する。例えば、算出部39は、特定したルール内容が「宛先TIDの下位xビット」である場合は、算出したハッシュ値のうち下位xビットをF(x)として生成部40に出力する。
生成部40は、算出部39が算出したハッシュ値を一部に含む暫定識別子の候補を生成する。より具体的には、生成部40は、シグナリングセッションごとに、以下の処理を実行する。まず、生成部40は、暫定識別子の値のうち、アプリケーション処理部37がメッセージの送受信を行う際に用いる通信プロトコルに応じた位置に、算出部39が算出したF(x)の値を含む暫定識別子の値を生成する。
例えば、生成部40は、アプリケーション処理部37から受信したアプリケーション論理インタフェースの番号に対応付けられたF(x)埋込/抽出ルールIDをルール特定テーブル26から特定する。続いて、生成部40は、特定したF(x)埋込/抽出ルールIDと対応付けられたルール内容をルールテーブル27から特定する。
そして、生成部40は、算出部39が算出したF(x)の値を受信した場合は、ルールテーブル27から特定したルール内容に従って、F(x)の値を埋め込んだ暫定識別子を生成する。例えば、生成部40は、特定したルール内容が「宛先TIDの下位xビット」である場合は、算出部39が算出したF(x)の値を下位xビットに格納し、他の領域に他のデータ(例えば乱数値)を格納した暫定識別子の候補を生成する。
続いて、生成部40は、未使用TIDリスト36を参照し、生成した暫定識別子の候補が使用可能であるか否かを判定する。例えば、生成部40は、生成した暫定識別子の候補が、算出部39が算出したF(x)に対応付けられた空き番号リストに登録されている場合に、生成した暫定識別子の候補が使用可能であると判定する。すなわち、生成部40は、生成した暫定識別子の候補の値が、使用が終了してから所定以上の時間が経過したTIDの中に含まれる場合、生成した暫定識別子の候補を使用可能であると判定する。
そして、生成部40は、使用可能であると判定した暫定識別子の候補と同じ値のTIDを、算出部39が算出したF(x)に対応付けられた空き番号リストから削除する。そして、生成部40は、使用可能な暫定識別子の候補を、生成した暫定識別子として、アプリケーション処理部37に出力する。
また、生成部40は、暫定識別子を生成する際に、生成した暫定識別子の候補が使用可能ではないと判定した場合は、新たに乱数を生成し直し、暫定識別子の候補に含まれるF(x)の値とを新たに生成した乱数値とを用いて、新たな暫定識別子の候補を生成する。そして、生成部40は、新たに生成した暫定識別子の候補が使用可能であるか否かを判定する。
なお、生成部40は、F(x)の値を、暫定識別子の任意の位置に埋め込むことができる。かかる埋め込み位置は、予め設定されていてもよく、メッセージを送受信する際に用いる通信プロトコルに応じた位置に設定されていてもよい。例えば、生成部40は、eNB6と送受信するメッセージについては、暫定識別子の下位xビットにF(x)の値を埋め込み、S/P−GW10と送受信するメッセージについては、暫定識別子の上位xビットにF(x)の値を埋め込んでもよい。また、生成部40は、通信プロトコルに応じて、異なる桁数のF(x)の値を埋め込んでもよい。
次に、図11を用いて、実施例1に係る振分サーバ12とデータサーバ15とが実行する処理の一例について説明する。図11は、振分サーバとデータサーバとが実行する処理の一例を示すシーケンス図である。なお、図11に示す例では、実施例1に係るロードバランサ11、振分サーバ12、データサーバ15、16が、eNB6が実行する網アプリAからのメッセージを振り分ける処理の一例について記載した。
なお、以下の説明では、振分サーバ12は、図4〜図8に示した各種情報を記憶するものとし、データサーバ15は、図7〜図8および図10に示した各種情報を記憶するものとする。また、以下の説明では、振分先データサーバID「#α」は、データサーバ15を示し、振分先データサーバID「#β」は、データサーバ16を示すものとする。
例えば、網アプリAは、ユーザ識別子「User#n」、TID_A「TID_A#a」、TID_X「0」を含むメッセージをロードバランサ11に送信する(ステップS101)。ロードバランサ11は、所定の規則に従い、メッセージを振分サーバ12に転送する(ステップS102)。
ここで、ステップS102にて転送されたメッセージには、固定識別子であるユーザ識別子「User#n」が付されている。そこで、振分サーバ12は、メッセージを受信すると、ユーザ識別子「User#n」のハッシュ値「Hash(User#n)」を算出する(ステップS103)。例えば、図11に示す例では、振分サーバ12は、ハッシュ値「Hash(User#n)」として「X−5」の値を算出する。そのため、振分サーバ12は、ハッシュ値振分テーブル23から、値「X−5」を含むハッシュ値範囲と対応付けて格納された振分先データサーバID「#α」を特定する。そして、振分サーバ12は、特定した振分先データサーバID「#α」が示すデータサーバ15に受信したメッセージを送信する(ステップS104)。
一方、データサーバ15は、メッセージを受信すると、サービスを提供するための処理を実行することで、網アプリAへ返送するサービスデータを生成する(ステップS105)。また、データサーバ15は、ユーザ識別子「User#n」のハッシュ値「Hash(User#n)」の値を算出する。また、データサーバ15は、算出したハッシュ値「Hash(User#n)」の下位mビットであるF(x)を所定の位置に含む未使用の暫定識別子であるTID_X「TID_X#A」を生成する(ステップS106)。
そして、データサーバ15は、TID_X「TID_X#A」を網アプリAに払い出す(ステップS107)。より具体的には、データサーバ15は、F(x)に対応付けられて未使用TIDリスト36に登録されているTIDの中から、払い出したTID_X「TID_X#A」を削除する。そして、データサーバ15は、ステップS105にて生成したサービスデータと共に、TID_A「TID_A#a」と、TID_X「TID_X#A」とを網アプリAへ送信する(ステップS108)。
ここで、網アプリAは、さらなる処理を実行させる場合は、ユーザ識別子を付さずに、TID_A「TID_A#a」と、TID_X「TID_X#A」とをメッセージに付して送信する(ステップS109)。このような場合、ロードバランサ11を介してメッセージを受信した振分サーバ12は、ルール特定テーブル220およびルールテーブル221を参照して、TID_X「TID_X#A」に埋め込まれたF(x)の値を抽出する(ステップS110)。そして、振分サーバ12は、埋め込み値管理テーブル25を参照して、F(x)の値、すなわち、メッセージの送信元となるユーザ識別子のハッシュ値の一部を用いて、メッセージの振り分け先を決定する(ステップS111)。そして、振分サーバ12は、決定した振り分け先へメッセージを転送する(ステップS112)。
次に、図12を用いて、振分サーバ12が実行する処理の流れについて説明する。図12は、振分サーバが実行する処理の流れの一例を示すフローチャートである。例えば、振分サーバ12は、メッセージを受信すると(ステップS201)、受信したメッセージにユーザ識別子、すなわち固定識別子が付されているか判定する(ステップS202)。そして、振分サーバ12は、メッセージにユーザ識別子が付されている場合(ステップS202:Yes)、所定のハッシュ関数を用いてユーザ識別子の値からハッシュ値を計算し、ハッシュ値に対応する振り分け先のデータサーバを決定する(ステップS203)。そして、振分サーバ12は、決定した振り分け先のデータサーバへ、受信したメッセージを転送し(ステップS205)、処理を終了する。
一方、振分サーバ12は、メッセージにユーザ識別子が付されていない場合は(ステップS202:No)、ルール特定テーブル220およびルールテーブル221を参照して、暫定識別子からF(x)の値を抽出する。そして、振分サーバ12は、抽出したF(x)の値に応じて振り分け先のデータサーバを決定する(ステップS204)。そして、振分サーバ12は、ステップS205に示した処理を実行する。
次に、図13を用いて、データサーバ15が実行する処理の流れを説明する。図13は、データサーバが実行する処理の流れの一例を示すフローチャートである。例えば、データサーバ15は、メッセージを受信すると(ステップS301)、受信したメッセージにユーザ識別子が存在せず、かつ、宛先TIDの値が0(null)以外であるか否かを判定する(ステップS302)。
そして、データサーバ15は、受信したメッセージにユーザ識別子が付されておらず、かつ、宛先TIDの値が0(null)以外である場合(ステップS302:Yes)、以下の処理を実行する。まず、データサーバ15は、宛先TIDの値から送信元を特定し、特定した送信元ごとのデータ処理を実行して(ステップS303)、処理を終了する。すなわち、データサーバ15は、固定識別子がメッセージに付されておらず、送信元に払い出した暫定識別子がメッセージに付されている場合は、その暫定識別子で示されるシグナリングセッションにおいて、サービスデータの生成等の処理を引き続き実行する。
一方、データサーバ15は、受信したメッセージにユーザ識別子が付されている場合、若しくは、宛先TIDの値が0(null)である場合は(ステップS302:No)、以下の処理を実行する。まず、データサーバ15は、サービスデータを生成する(ステップS304)。続いて、データサーバ15は、固定識別子「User#n」のハッシュ値「Hash(User#n)」を算出し、算出したハッシュ値の下位mビットをF(x)とし、F(x)を所定の位置に含む未使用のTIDを生成する(ステップS305)。そして、データサーバ15は、ステップS305で生成したTIDを埋め込んだ応答のメッセージを送信し(ステップS306)、処理を終了する。
[実施例1の効果]
上述したように、データサーバ15は、網アプリAからメッセージを受信すると、受信したメッセージから固定識別子であるユーザ識別子を抽出する。また、データサーバ15は、所定のハッシュ関数を用いて、抽出したユーザ識別子のハッシュ値を算出する。そして、データサーバ15は、シグナリングセッション毎に値の異なる暫定識別子、すなわち、ユーザ識別子のハッシュ値の一部と乱数とを含む値を生成する。
この結果、振分サーバ12は、メッセージに固定識別子が付加されなくても、シグナリングセッション毎に値の異なる暫定識別子を用いて、メッセージの振り分け先となるデータサーバの一意性を保証することができる。このため、データサーバ15は、一つのシグナリングセッションを異なるシステム間で連携して処理する網機能アプリケーションを、スケールアウト型のクラスタシステムで実行することができる。
また、データサーバ15は、処理の実行要求が割り当てられるデータサーバの数に応じた表現長のハッシュ値を算出するハッシュ関数を用いて、固定識別子のハッシュ値を算出する。このため、データサーバ15は、MME8が有する各データサーバ15〜17にメッセージを振り分けさせることができるので、リソースの無駄を抑制することができる。
また、データサーバ15は、メッセージを送受信する際の通信プロトコルに応じた位置に、F(x)の値を埋め込んだ暫定識別子値を生成する。このため、データサーバ15は、複数の通信プロトコルを用いてメッセージの送受信を行う場合にも、網機能アプリケーションを、スケールアウト型のクラスタシステムで実行することができる。
また、データサーバ15は、シグナリングセッション毎に値の異なる暫定識別子を生成する。このため、データサーバ15は、複数のシグナリングセッションを処理する網機能アプリケーションを、スケールアウト型のクラスタシステムで実行することができる。
また、データサーバ15は、受信したメッセージに暫定識別子が含まれる場合は、その暫定識別子を用いて、所定の処理を実行する。このため、データサーバ15は、一連のシグナリングセッションで送受信されるメッセージに基づいて、継続したサービスの提供を行うことができる。
また、データサーバ15は、使用が終了してから所定の期間が経過した暫定識別子を、使用可能な暫定識別子とする。このため、データサーバ15は、サービスに不具合が生じるリスクを軽減することができる。
例えば、ユーザAが使用していた暫定識別子Xを、ユーザAのサービス終了後、直ぐに別のユーザBに割当てた場合を考える。その場合、ユーザBは、ユーザAの通信を盗み見することが可能となる場合がある。また、暫定識別子Xが使用中であることを認識した悪意の第3のユーザCは、剽窃した暫定識別子Xを用いて、通信を起動することにより、ユーザBへのサービスを切断等、妨害することができる。しかしながら、本実施例のデータサーバ15は、暫定識別子Xの使用が終了してから所定以上の時間が経過した場合に、該暫定識別子の使用を可能とする。これにより、使用が終了してから所定時間未満の期間のユーザCの通信は、不正または異常な通信として認識される。これにより、本実施例のデータサーバ15は、他の真正のユーザのサービスへの悪影響を回避できる。
また、メッセージの損失や、送信側と受信側の通信手順の行き違いにより、制御状態の不一致が生じた場合には、サービス提供元のシステムでは、ユーザAへのサービスが終了したと認識され、ユーザAでは、サービスが継続していると認識される。その場合、ユーザAは、すでにユーザBに割当てられた暫定識別子Xを使い続けることで、ユーザBへのサービスに影響を与えてしまう。しかしながら、データサーバ15は、上述した処理を実行することで、暫定識別子Xの未使用時間を十分にとることができるので、他の真正のユーザのサービスへの悪影響を回避できる。
例えば、データサーバ15は、網アプリAからメッセージを受信した際に、網アプリAとは異なる網アプリBに処理の実行を依頼し、網アプリBによる処理の実行結果を網アプリAへ送信する場合がある。しかしながら、そのような処理を実行する場合、従来のクラスタシステムでは、網アプリBに処理を依頼したデータサーバに対し、網アプリBからのメッセージを振り分けることが困難であり、サービスの継続が困難であった。
例えば、図28は、従来の振分サーバとデータサーバとが実行する処理の第2の例を示すシーケンス図である。なお、図28に示す例では、図27と同様の従来のクラスタシステムが、網アプリAからのメッセージを受信すると、網アプリBに処理を要求し、網アプリBから受信した処理の実行結果を網アプリAへ送信する処理の一例について示されている。また、図28に示す処理のうち、図27に示した処理と同一の処理については、図27と同一の符号を付し、説明を省略する。
例えば、データサーバ102は、メッセージを網アプリAから受信すると、網アプリBとの通信に用いるTID_Xの値を決定する(ステップS20)。そして、データサーバ102は、決定したTID_Xを網アプリBに払い出す(ステップS21)。より具体的には、データサーバ102は、ステップS5で生成したサービスデータと共に、ユーザ識別子「User#n」と、TID_X「TID_X#a」とを網アプリBに送信する(ステップS22)。ここで、ステップS22に示すTID_Bとは、網アプリBが生成する暫定識別子であり、ステップS22に示す時点では、値「0」が格納される。
その場合、網アプリBは、TID_B「TID_B#a」を生成し、処理結果と共に、TID_B「TID_B#a」と、ステップS22で受信したTID_X「TID_X#a」とをロードバランサ100へ送信する(ステップS23)。ロードバランサ100は、受信したメッセージを振分サーバ101に転送する(ステップS24)。
ここで、ステップS23で送信されたメッセージには、ユーザ識別子が格納されていないので、振分サーバ101は、ユーザ識別子を用いた振り分けを行うことができない(ステップS25)。そこで、振分サーバ101は、TID_Xの値のハッシュ値「Hash(TID_X#a)」を算出する。しかしながら、TID_Xの値は、ユーザ識別子とは異なる値であるため、図28に示す例では、振分サーバ101は、ハッシュ値「Hash(TID_X#a)」として値「X+11」を算出する(ステップS26)。
その結果、振分サーバ101は、受信したメッセージをデータサーバ103へ送信する(ステップS27)。しかしながら、データサーバ103は、ステップS5にて生成したサービスデータを記憶していないので、網アプリBから処理結果を受信しても、網アプリAへサービスを提供することができない(ステップS28)。
そこで、実施例2に係るデータサーバ15aは、以下の管理処理を実行する。データサーバ15aは、複数の外部システムを用いて実行される処理の実行要求を受信した場合は、外部システムごとに異なる値の暫定識別子を生成する。そして、データサーバ15aは、外部システムごとに生成した暫定識別子を用いて、各外部システムとの通信を行う。
また、データサーバ15aは、一連のシグナリングセッションにおいて、異なる通信プロトコルを用いたパケットの送受信が発生する場合、それぞれの通信プロトコルに応じた表現長の暫定識別子を生成する。この場合、それぞれの暫定識別子には、固定識別子から算出されたハッシュ値の一部であるF(x)が共通に含まれる。また、データサーバ15aは、一連のシグナリングセッションにおいて使用されるいずれの通信プロトコルの暫定識別子にも含めることが可能な長さのビット数を、F(x)のビット数として使用する。即ち、F(x)のビット数は、一連のシグナリングセッションにおいて使用されるいずれの通信プロトコルの暫定識別子のビット数よりも少ない。これにより、データサーバ15aは、それぞれのシグナリングセッションで使用される別々の固定識別子には、固定識別子から算出されたハッシュ値の一部であるF(x)を共通に含めることができる。これにより、データサーバ15aは、一連のシグナリングセッションにおいて、各通信プロトコルで使用される暫定識別子のビット長が異なる場合であっても、メッセージの振り分け先の一意性を保証することができる。
次に、図14を用いて、データサーバ15aが有する機能構成の一例について説明する。図14は、実施例2に係るデータサーバが有する機能構成の一例を示すブロック図である。図14に示す例では、データサーバ15aは、ネットワークインタフェース31、通信データ処理部32、通信路制御部33、記憶部34、アプリケーション処理部37a、および埋め込み処理部38aを有する。また、埋め込み処理部38aは、算出部39a、および生成部40aを有する。
アプリケーション処理部37aは、図9に示すアプリケーション処理部37と同様の機能を発揮する。より具体的には、アプリケーション処理部37aは、一連のシグナリングセッションにおいて、複数の外部システム(例えば網アプリ)との間でメッセージを送受信し、各網アプリと協調してメッセージに基づく処理を実行する。アプリケーション処理部37aは、一連のシグナリングセッションの確立時に、固定識別子と共に、該セッションにおいてメッセージの送受信を行う外部システムが使用する通信プロトコルの情報を埋め込み処理部38aに通知する。そして、アプリケーション処理部37aは、外部システムの通信プロトコル毎の暫定識別子を埋め込み処理部38aから取得し、取得した暫定識別子を用いて、それぞれの通信プロトコルで各外部システムとメッセージの送受信を行う。
例えば、アプリケーション処理部37aは、網アプリAから受信したメッセージに関する処理が、例えば、網アプリBに処理を依頼するものである場合、埋め込み処理部38aから取得した暫定識別子を用いてメッセージを網アプリBに送信する。そして、アプリケーション処理部37aは、網アプリBから処理の実行結果を受信すると、受信した実行結果を用いて処理を実行し、埋め込み処理部38aから取得した暫定識別子を用いて処理の実行結果を網アプリAに送信する。
算出部39aは、図9に示した算出部39と同様の機能を発揮する。より具体的には、算出部39aは、固定識別子と共に、外部システムの通信プロトコルの情報をアプリケーション処理部37aから通知された場合に、固定識別子のハッシュ値を算出する。そして、算出部39aは、アプリケーション処理部37aから通知されたいずれの通信プロトコルの暫定識別子にも含めることが可能なビット数を特定する。そして、算出部39aは、算出したハッシュ値のうち、特定したビット数をF(x)として抽出する。そして、算出部39aは、抽出したF(x)の値を生成部40aに出力する。
生成部40aは、図9に示した生成部40と同様の処理を実行し、メッセージに関する処理を行う外部システムの数だけ異なる暫定識別子を生成する。より具体的には、生成部40aは、暫定識別子の値のうち、アプリケーション処理部37aがメッセージの送受信を行う際に用いる通信プロトコルに応じた位置に、算出部39aが算出したF(x)の値を挿入した暫定識別子を生成する。その際、生成部40aは、生成した暫定識別子の値が、該暫定識別子に含まれたF(x)に対応付けて未使用TIDリスト36に登録されていなければ、暫定識別子を再生成する。
例えば、生成部40aは、メッセージの送信先となる外部システムのアプリケーション論理インタフェースに対応付けられた情報をルール特定テーブル26およびルールテーブル27から特定する。そして、生成部40aは、ルール特定テーブル26およびルールテーブル27から特定した情報を用いて、暫定識別子を生成する。そして、生成部40aは、生成した暫定識別子の値を未使用TIDリスト36から削除する。
次に、図15を用いて、振分サーバ12aとデータサーバ15aとが実行する処理の流れについて説明する。図15は、実施例2に係る振分サーバとデータサーバとが実行する処理の一例を示すシーケンス図である。なお、図15に示す処理のうち、図11に示す処理と同様の処理については、同一の符号を付し、説明を省略する。
例えば、データサーバ15aは、サービスデータを生成すると、網アプリAおよび網アプリBを使用するためのTIDを決定する(ステップS401)。例えば、データサーバ15aは、固定識別子のハッシュ値を算出する。そして、データサーバ15aは、網アプリAおよび網アプリBのいずれの通信プロトコルの暫定識別子にも含めることが可能なビット数を特定する。そして、データサーバ15aは、算出したハッシュ値のうち、特定したビット数(例えば下位mビット)をF(x)として抽出する。そして、データサーバ15aは、「Hash(User#n)」の下位mビットの値F(x)を所定の位置に含む未使用のTID_X「TID_X#A」、TID_X「TID_X#B」を生成する(ステップS402)。そして、データサーバ15aは、生成したTID_X「TID_X#B」を網アプリBに払い出す(ステップS403)。より具体的には、データサーバ15aは、ステップS105にて生成したサービスデータと共に、ユーザ識別子「User#n」とTID_X「TID_X#B」とを網アプリBへ送信する(ステップS404)。
そして、網アプリBは、処理の実行結果に、TID_B「TID_B#a」およびTID_X「TID_X#B」を付したメッセージを出力する(ステップS405)。振分サーバ12aは、ルール特定テーブル26およびルールテーブル27を参照して、TID_X「TID_X#B」の値からF(x)の値を抽出する(ステップS406)。そして、振分サーバ12aは、F(x)の値に応じた振り分け先として、データサーバ15aを決定し、データサーバ15aに網アプリBから受信したメッセージを送信する(ステップS407)。
一方、データサーバ15aは、網アプリBからのメッセージを受信すると、網アプリBによる処理の実行結果を用いて、サービスデータを更新する(ステップS408)。そして、データサーバ15aは、更新したサービスデータと共に、ステップS402において生成済みのTID_X「TID_X#A」を網アプリAに払い出す(ステップS107)。そして、データサーバ15aは、暫定識別子であるTID_X「TID_X#A」を用いて、網アプリAと通信を行い、継続したサービスを提供することができる。
次に、図16を用いて、振分サーバ12aが実行する処理の流れについて説明する。図16は、実施例2に係る振分サーバが実行する処理の流れの一例を示すフローチャートである。なお、図16に示す処理のうち、図12に示す処理と同様の処理については、同一の符号を付し、説明を省略する。
例えば、振分サーバ12aは、受信メッセージにユーザ識別子が付されていない場合は(ステップS202:No)、メッセージの送信元が網アプリAであり、網アプリBではないか否かを判定する(ステップS501)。メッセージの送信元が網アプリBではなく網アプリAである場合(ステップS501:Yes)、振分サーバ12aは、以下の処理を実行する。すなわち、振分サーバ12aは、ルール特定テーブル26およびルールテーブル27を参照して、TID_X「TID_X#A」の値から、網アプリAについてのF(x)の埋込ルールに基づいて、F(x)の値を抽出する(ステップS502)。そして、振分サーバ12aは、埋め込み値管理テーブル25を参照して、抽出したF(x)の値から、振り分け先のデータサーバを決定する(ステップS504)。そして、振分サーバ12aは、ステップS205に示した処理を実行する。
一方、メッセージの送信元が網アプリAではなく網アプリBである場合(ステップS501:No)、振分サーバ12aは、ルール特定テーブル26およびルールテーブル27を参照して、TID_X「TID_X#B」の値から、網アプリBについてのF(x)埋込/抽出ルールに基づいて、F(x)の値を抽出する(ステップS503)。そして、振分サーバ12aは、ステップS504に示した処理を実行する。
次に、図17を用いて、データサーバ15aが実行する処理の流れについて説明する。図17は、実施例2に係るデータサーバが実行する処理の流れの一例を示すフローチャートである。なお、図17に示す処理のうち、図13に示す処理と同様の処理については、同一の符号を付し、説明を省略する。
例えば、データサーバ15aは、サービスデータを生成すると(ステップS304)、メッセージの送信先に対応するTIDを生成済であるか否かを判定する(ステップS601)。そして、データサーバ15aは、TIDを生成済である場合(ステップS601:Yes)、メッセージ送信先の網アプリに対応する生成済のTIDを払い出す(ステップS602)。
一方、データサーバ15aは、メッセージの送信先に対応するTIDを生成済していない場合(ステップS601:No)、網アプリA用のTIDを生成する(ステップS603)。続いて、データサーバ15aは、網アプリB用のTIDを生成する(ステップS604)。そして、データサーバ15aは、ステップS602に示した処理を実行する。
[実施例2の効果]
上述したように、データサーバ15aは、複数の外部システムを用いて実行される処理の実行要求を受信した場合は、外部システムごとに異なる値の暫定識別子を生成する。そして、データサーバ15aは、外部システムごとに生成した暫定識別子を用いて、各外部システムとの通信を行う。このため、データサーバ15aは、複数の外部システムと協調して処理を実行する際にも、各メッセージの転送先の一意性を保証することができる。
また、データサーバ15aは、暫定識別子のうち、メッセージを送受信する際の通信プロトコルに応じた位置に、F(x)の値を埋め込んだ暫定識別子を生成する。このため、データサーバ15aは、暫定識別子の参照方法が通信プロトコルによって異なる場合にも、メッセージの振り分け先の一意性を保証することができる。
また、データサーバ15aは、各外部システムが使用する通信プロトコルに応じた表現長の暫定識別子に共通に含めることが可能なビット数で、固定識別子から算出されたハッシュ値の一部であるF(x)を算出する。これにより、データサーバ15aは、一連のシグナリングセッションにおいて、ある通信プロトコルで使用される暫定識別子に含めたハッシュ値の一部が、他の通信プロトコルで使用される暫定識別子のビット数を超えることを防止することができる。そのため、データサーバ15aは、一連のシグナリングセッションにおいて、各通信プロトコルで使用される暫定識別子のビット長が異なる場合であっても、メッセージの振り分け先の一意性を保証することができる。
本実施例のデータサ−バ15bは、使用可能な暫定識別子を全て払い出し、未使用の暫定識別子がない場合に、メッセージの送信元との通信を、他の代表アドレスにリダイレクトする。例えば、各データサーバ15bでは、複数の代表アドレスのそれぞれに異なるハッシュ関数を対応付けられている。未使用の暫定識別子がない場合に、データサーバ15bは、他のハッシュ関数を用いて固定識別子から算出されたハッシュ値の一部であるF(x)を算出する。そして、データサーバ15bは、自装置で使用可能なTIDの中で、算出したF(x)を含む未使用の暫定識別子が存在するか否かを判定する。自装置で使用可能なTIDの中に未使用の暫定識別子が存在する場合、データサーバ15bは、該F(x)の算出に用いたハッシュ関数に対応付けられている代表アドレスをメッセージの送信元に通知することにより、送信元にリダイレクトさせる。これにより、送信元の外部システムは、通知された代表アドレスにリダイレクトすることにより、暫定識別子の割り当てを受けることができる。
また、自装置で使用可能なTIDの中に未使用の暫定識別子が存在しない場合、データサーバ15bは、他のデータサーバに対して固定識別子およびメッセージの送信元の情報と共に、該固定識別子に基づく割り当て可能な暫定識別子が存在するか否かを問い合せる。問い合わせを受けた他のデータサーバは、自装置に割り当てられている代表アドレス毎のハッシュ関数を用いて、通知された固定識別子からハッシュ値の一部であるF(x)を算出する。そして、問い合わせを受けた他のデータサーバは、自装置で使用可能なTIDの中で、代表アドレス毎に、算出したF(x)を含む未使用の暫定識別子が存在するか否かを判定する。自装置で使用可能なTIDの中に未使用の暫定識別子が存在する場合、他のデータサーバは、該F(x)の算出に用いたハッシュ関数に対応付けられている代表アドレスを、メッセージの送信元に通知することにより、送信元にリダイレクトさせる。これにより、送信元の外部システムは、通知された代表アドレスにリダイレクトすることにより、暫定識別子の割り当てを受けることができる。
以下、実施例3に係る振分サーバ12aおよびデータサーバ15bについて説明する。まず、図18を用いて、振分サーバ12aが有する機能構成の一例について説明する。図18は、実施例3に係る振分サーバが有する機能構成の一例を示すブロック図である。
図18に示す例では、振分サーバ12aは、ネットワークインタフェース18、通信データ処理部19、通信路制御部20、負荷分散処理部21a、記憶部22aを有する。また、記憶部22aは、ハッシュ値振分テーブル23a、振分先管理テーブル24a、埋め込み値管理テーブル25a、ルール特定テーブル26a、ルールテーブル27a、およびハッシュ関数テーブル41を有する。また、負荷分散処理部21aは、判定部28a、抽出部29a、および振分部30aを有する。
まず、記憶部22aが記憶する情報について説明する。ハッシュ値振分テーブル23aには、例えば図4に示したハッシュ値振分テーブル23と同様の情報が、振分サーバ12aに割り当てられた代表アドレスごとに登録される。振分先管理テーブル24aには、例えば図5に示した振分先管理テーブル24と同様の情報が、振分サーバ12aに割り当てられた代表アドレスごとに登録される。埋め込み値管理テーブル25aには、例えば図6に示した埋め込み値管理テーブル25と同様の情報が、振分サーバ12aに割り当てられた代表アドレスごとに登録される。ルール特定テーブル26aには、例えば図7に示したルール特定テーブル26と同様の情報が、振分サーバ12aに割り当てられた代表アドレスごとに登録される。ルールテーブル27aには、例えば図8に示したルールテーブル27と同様の情報が、振分サーバ12aに割り当てられた代表アドレスごとに登録される。
また、ハッシュ関数テーブル41には、振分サーバ12aに割り当てられた代表アドレスごとに、固定有識別子からF(x)の値を算出する際に用いるハッシュ関数が格納されている。例えば、図19は、ハッシュ関数テーブルに格納される情報の一例を示す図である。図19に示す例では、ハッシュ関数テーブル41には、振分サーバ12aに割り当てられた代表アドレスであるIPアドレスと、かかるIPアドレスを宛先とするメッセージを受信した際に用いるハッシュ関数とが対応付けて登録される。例えば、図19に示す例では、IPアドレス「a.b.c.x」とハッシュ関数「関数#1」とが対応付けてハッシュ関数テーブル41に登録されている。
判定部28aは、判定部28と同様の機能を発揮する。より具体的に、判定部28aは、判定部28と同様に、振分サーバ12aに割り当てられた代表アドレスに応じたハッシュ関数を用いて、固定識別子のハッシュ値を算出する。例えば、判定部28aは、振分サーバ12aに割り当てられた代表アドレスに対応付けられたハッシュ関数を、ハッシュ関数テーブル41から特定する。そして、判定部28aは、特定したハッシュ関数を用いて、固定識別子のハッシュ値を算出する。
抽出部29aは、抽出部29と同様の処理を行う。より具体的に、抽出部29aは、振分サーバ12aに割り当てられた代表アドレスと対応付けられた情報を、ルール特定テーブル26aおよびルールテーブル27aから特定する。また、抽出部29aは、メッセージに関する処理を実行する際のアプリケーション論理インタフェースの番号と紐付けられたルール内容を特定する。そして、抽出部29aは、ルール内容に従って、暫定識別子からF(x)の値を抽出する。
振分部30aは、振分部30と同様の処理を行う。より具体的には、振分部30aは、振分サーバ12aに割り当てられた代表アドレスと対応付けられた情報を、ハッシュ値振分テーブル23a、振分先管理テーブル24a、および埋め込み値管理テーブル25aから特定する。そして、振分部30aは、特定した情報を用いて、受信したメッセージの振り分けを行う。すなわち、振分部30aは、振分サーバ12aに割り当てられた代表アドレスごとに異なるハッシュ関数を用いて、メッセージの振り分けを行う。
次に、図20を用いて、データサーバ15bが有する機能構成の一例について説明する。図20は、実施例3に係るデータサーバが有する機能構成の一例を示すブロック図である。図20に示す例では、データサーバ15bには、ネットワークインタフェース31、通信データ処理部32、通信路制御部33、アプリケーション処理部37a、埋め込み処理部38b、および記憶部34aを有する。また、記憶部34aは、MMEデータ35、ルール特定テーブル26a、ルールテーブル27a、未使用TIDリスト36a、ハッシュ関数テーブル41、及びデータサーバリスト42が格納される。また、埋め込み処理部38bは、算出部39a、および生成部40bを有する。
データサーバリスト42は、メッセージの振り分け先となる他のデータサーバ(例えば図1に示したデータサーバ16、17)に対して問合せを行うためのIPアドレスが登録されている。例えば、図21は、データサーバリストに格納される情報の一例を示す図である。図21に示すように、データサーバリスト42には、問合先となるデータサーバの識別子である問合先データサーバIDと、そのデータサーバのIPアドレスとが対応付けて登録されている。例えば、図21に示す例では、問合先データサーバID「#α」とIPアドレス「a.b.c.d」とが対応付けて登録され、問合先データサーバID「#β」とIPアドレス「a.b.c.e」とが対応付けて登録されている。
図20に戻り、説明を続ける。算出部39aは、図14に示した算出部39aと同様の機能を発揮する。より具体的には、算出部39aは、ハッシュ関数テーブル41を参照し、代表アドレスと対応付けられたハッシュ関数を特定する。そして、算出部39aは、特定したハッシュ関数を用いて、ハッシュ値を算出し、算出したハッシュ値からF(x)を抽出する。
生成部40bは、生成部40若しくは生成部40aと同様の機能を発揮する。より具体的には、生成部40bは、未使用TIDリスト36aに登録された情報のうち、代表アドレスに対応する情報を参照し、算出部39aが算出したF(x)の値に対応付けられている未使用のTIDが存在するか否かを判定する。未使用のTIDが存在しない場合、生成部40bは、ハッシュ関数テーブル41を参照して、F(x)の値を算出する際に用いられたハッシュ関数とは異なるハッシュ関数を選択する。そして、生成部40bは、選択したハッシュ関数を用いたF(x)の算出を算出部39aに指示する。そして、算出部39aが算出したF(x)の値に対応付けられている未使用のTIDが未使用TIDリスト36a内に見つかった場合、生成部40bは、該F(x)の値を算出する際に用いられたハッシュ関数に対応付けられた代表アドレスを特定する。そして、生成部40bは、特定した代表アドレスを、メッセージの送信元へ通知することにより、通知した代表アドレスへのリダイレクトを送信元に指示する。
一方、自装置のハッシュ関数テーブル41に登録されたいずれのハッシュ関数を用いても、未使用のTIDが見つからなかった場合、生成部40bは、データサーバリスト42を参照し、全てのデータサーバのIPアドレスを特定する。そして、生成部40bは、特定したIPアドレスを宛先として、固定識別子およびメッセージの送信元の情報と共に、該固定識別子に基づく割り当て可能な暫定識別子が存在するか否かを問い合せるメッセージを送信する。問い合わせを受けた他のデータサーバの生成部40bは、ハッシュ関数テーブル41を参照し、自装置に割り当てられている代表アドレス毎のハッシュ関数を用いたF(x)の算出を算出部39aに指示する。そして、問い合わせを受けた他のデータサーバの生成部40bは、自装置で使用可能なTIDの中で、代表アドレス毎に、算出されたF(x)を含む未使用の暫定識別子が存在するか否かを判定する。未使用の暫定識別子が存在する場合、問い合わせを受けた他のデータサーバの生成部40bは、該F(x)の算出に用いたハッシュ関数に対応付けられている代表アドレスを、メッセージの送信元に通知することにより、送信元にリダイレクトさせる。
一方、自装置で使用可能なTIDの中に未使用の暫定識別子が存在しない場合、問い合わせを受けた他のデータサーバの生成部40bは、問い合わせの送信元のデータサーバ15bに、暫定識別子の割り当て失敗を通知する。全ての他のデータサーバから割り当て失敗が通知された場合、データサーバ15bは、セッションの確立失敗を示すメッセージと、MME8が提供するサービスと同種のサービスを提供するシステムへのリダイレクトを誘導するメッセージを送信元へ送信する。
次に、図22を用いて、振分サーバ12aとデータサーバ15bとが実行する処理の流れについて説明する。図22は、実施例3に係る振分サーバとデータサーバとが実行する処理の一例を示すシーケンス図である。なお、図22に示す処理のうち、図11、図15に示す処理と同様の処理については、同一の符号を付し、説明を省略する。
例えば、データサーバ15bは、固定識別子に基づいて算出したF(x)の値を含む未使用のTIDが存在しない場合(ステップS701)、以下の処理を実行する。すなわち、データサーバ15bは、別のハッシュ関数を用いて算出されたF(x)を含む未使用のTIDが存在するか否かを、自装置を含めて全てのデータサーバに問い合わせる(ステップS702)。別のハッシュ関数を用いて算出されたF(x)を含むTIDの中に、未使用のTIDが存在する場合(ステップS703:Yes)、データサーバ15bは、別の代表アドレスへのリダイレクト指示を網アプリAに送信する(ステップS704)。一方、別のハッシュ関数を用いて算出されたF(x)を含む未使用のTIDが存在しない場合(ステップS703:No)、データサーバ15bは、以下の処理を実行する。すなわち、データサーバ15bは、セッションの確立失敗を示すメッセージと共に、他の同種アプリへのリダイレクトを誘導するメッセージを網アプリAに送信する(ステップS705)。
次に、図23を用いて、振分サーバ12aが実行する処理の流れについて説明する。図23は、実施例3に係る振分サーバが実行する処理の流れの一例を示すフローチャートである。なお、図23に示す処理のうち、図12に示す処理と同様の処理については、同一の符号を付し、説明を省略する。
例えば、振分サーバ12aは、メッセージを受信すると(ステップS201)、メッセージの宛先の代表アドレスに対応付けられたハッシュ関数を選択する(ステップS801)。そして、振分サーバ12bは、選択したハッシュ関数を用いて、ステップS202〜S205に示した処理を実行する。
次に、図24を用いて、データサーバ15bが実行する処理の流れについて説明する。図24は、実施例3に係るデータサーバが実行する処理の流れの一例を示すフローチャートである。なお、図24には、データサーバ15bが、固定識別子に基づいて算出したF(x)の値を含む未使用のTIDが存在するか否かに応じた処理の流れを記載した。
例えば、データサーバ15bは、固定識別子に基づいて算出したF(x)の値を含む未使用のTIDが存在するか否かを判定する(ステップS901)。固定識別子に基づいて算出したF(x)を含む未使用のTIDが存在する場合(ステップS901:Yes)、データサーバ15bは、以下の処理を実行する。すなわち、データサーバ15bは、F(x)を含むTIDの候補を生成し、生成したTIDの候補が未使用のTIDであれば、該候補をTIDとして生成する(ステップS902)。そして、データサーバ15bは、生成したTIDを対向側の網アプリに払い出して(ステップS903)、処理を終了する。
一方、固定識別子に基づいて算出したF(x)の値を含む未使用のTIDが存在しない場合(ステップS901:No)、データサーバ15bは、自装置で使用可能なTIDの中に、別のハッシュ関数を使用して算出されたF(x)を含む未使用のTIDが存在するか否かを判定する(ステップS904)。自装置で使用可能なTIDの中に、別のハッシュ関数を使用して算出されたF(x)を含む未使用のTIDが存在する場合(ステップS904:Yes)、データサーバ15bは、ステップS909に示す処理を実行する。
一方、自装置に未使用のTIDが存在しない場合(ステップS904:No)、データサーバ15bは、他のデータサーバに、別のハッシュ関数を使用して算出されたF(x)を含む未使用のTIDがあるか問い合わせる(ステップS905)。
そして、データサーバ15bは、問合せの回答を待ち(ステップS906)、問合せの回答を他のすべてのデータサーバから受信する(ステップS907)。いずれかのデータサーバから未使用のTIDが存在する旨が通知された場合(ステップS908:Yes)、データサーバ15bは、以下の処理を実行する。すなわち、データサーバ15bは、別のハッシュ関数に対応付けられている代表アドレスへのリダイレクト指示をメッセージの送信元へ送信し(ステップS909)、処理を終了する。
一方、全てのデータサーバから未使用のTIDが存在しない旨が通知された場合(ステップS908:No)、データサーバ15bは、メッセージの送信元に対してセッションの確立失敗を示すメッセージと共に、他の同種アプリへのリダイレクトを誘導するメッセージを送信し(ステップS910)、処理を終了する。
[実施例3の効果]
上述したように、データサーバ15bは、振分サーバ12aに割り当てられた代表アドレスごとに異なるハッシュ関数を用いて、固定識別子から暫定識別子を算出する。また、データサーバ15bは、振分サーバ12aに割り当てられた代表アドレスごとに異なるハッシュ関数を用いてメッセージの振り分けを行う振分サーバ12aから、メッセージの振り分けを受付ける。このため、データサーバ15bは、生成可能な暫定識別子空間を拡張することができるので、暫定識別子の枯渇を防止することができる。
また、データサーバ15bは、使用可能な暫定識別子を全て払い出し、未使用の暫定識別子がない場合に、他のハッシュ関数を用いて算出されたF(x)を含む未使用の暫定識別子が存在するか否かを判定する。そして、データサーバ15bは、未使用の暫定識別子が存在すると判定した場合は、かかる他のハッシュ関数を用いてメッセージの振り分けが行われる代表アドレスを、メッセージの送信元に通知する。
すなわち、暫定識別子の一部に固定識別子のハッシュ値を埋め込んだ場合は、割り当て可能な暫定識別子の数が減少してしまう。しかしながら、データサーバ15bは、代表アドレスごとに異なるハッシュ関数を適用し、あるハッシュ関数のハッシュ空間で使用可能な暫定識別子が枯渇した場合は、他のハッシュ関数のハッシュ空間に空きが存在するか否かを判定する。そして、データサーバ15bは、他のハッシュ関数のハッシュ空間に空きが存在する場合は、かかる他のハッシュ関数を用いて割り当てを行う代表アドレスをメッセージの送信元に通知する。このため、データサーバ15bは、暫定識別子の枯渇を防ぐことができる。
また、データサーバ15bは、他のハッシュ関数を用いて算出されたF(x)を含む未使用の暫定識別子が存在するか否かを他のデータサーバに問い合わせる。そして、データサーバ15bは、いずれかの他のデータサーバで、未使用の暫定識別子が存在すると判定された場合は、かかる他のハッシュ関数を用いてメッセージの振り分けが行われる代表アドレスを、メッセージの送信元に通知する。このため、データサーバ15bは、暫定識別子を無駄なく使用することができるので、暫定識別子の枯渇を防ぐことができる。
これまで本発明の実施例について説明したが、実施例は、上述した実施例以外にも様々な異なる形態にて実施されてよいものである。そこで、以下では実施例4として他の実施例を説明する。
[ハッシュ値の暗号化について]
上述したデータサーバ15は、算出したハッシュ値の一部を含む暫定識別子を生成した。しかしながら、開示の技術は、これに限定されるものではない。例えば、データサーバ15は、算出したハッシュ値の全てを含む暫定識別子を生成してもよく、算出したハッシュ値を所定の手法で暗号化し、暗号化したハッシュ値を含む暫定識別子を生成してもよい。このような処理を実行した場合は、データサーバ15は、暫定識別子が剽窃された場合にも、ハッシュ値から固定識別子を推測するといった処理を困難にすることができる。この結果、データサーバ15は、セキュリティリスクを軽減することができる。
[ハッシュ値の埋め込み位置について]
また、データサーバ15は、算出したハッシュ値の一部を暫定識別子に埋め込み、算出したハッシュ値の残りの値を、メッセージの他の領域に埋め込んでもよい。例えば、データサーバ15は、メッセージを送受信する際のパケットに代表アドレスを格納する場合、かかる代表アドレスの下位ビットに、算出したハッシュ値の残りの値を埋め込んでもよい。また、データサーバ15は、トランスポート層で用いるポート番号の下位ビットに、算出したハッシュ値の残りの値を埋め込んでもよい。
このような処理を実行した場合は、複数の代表アドレスを、メッセージを振り分けるための帯域として確保できる場合や、トランスポート層のポート番号が自由に使える場合は、代表アドレスやポート番号等の一部にハッシュ値の一部を埋め込むことができる。この結果、データサーバ15は、暫定識別子に埋め込むハッシュ値の桁数を減少させることができるので、使用可能な暫定識別子の数を増大させることができる。また、データサーバ15は、暫定識別子のビット長が短い通信プロトコルが適用される場合であっても、収容できるユーザ数の減少を抑えるので、処理を適用可能な通信プロトコルの範囲を拡大することができる。
[他の装置への適用について]
なお、上述したMME8の構成は、3GPPの他のサービスノード、例えば、eNB6、S/P−GW10にも適用可能である。また、MME8の構成は、HSS(Home Subscriber Server)、PCRF(Policy and Charging Rules Function)、RNC(Radio Network Controller)等にも適用可能である。また、MME8の構成は、SGSN(Serving GPRS Support Node)、GGSN(Gateway GPRS Support Node)等にも適用可能である。
例えば、図25は、eNBやS/P−GWの内部構成の一例を示すブロック図である。図25に示すように、eNB7は、MME8と同様に、ロードバランサ、複数の振分サーバ、複数のeNBデータサーバにより構成され、MME8と同様の管理処理を実行することで、eNBとしての機能を発揮してもよい。S/P−GW10は、MME8と同様に、ロードバランサ、複数の振分サーバ、複数のGWデータサーバにより構成され、MME8と同様の管理処理を実行することで、S/P−GWとしての機能を発揮してもよい。
[ハードウェア]
図26は、振分サーバおよびデータサーバのハードウェア構成例を示すブロック図である。ここで示すハードウェア構成例は、図2で説明した振分サーバ12やデータサーバ15などの構成例であり、ここでは情報処理装置900として説明する。
図26に示すように、情報処理装置900は、通信インタフェース900a、入力装置900b、表示装置900c、記憶部900d、およびプロセッサ900eを有する。なお、図26に示したハードウェア構成は一例であり、他のハードウェアを有していてもよい。
通信インタフェース900aは、他の装置との間で通信経路を確立して、データの送受信を実行するインタフェースであり、例えばネットワークインタフェースカードや無線インタフェースなどである。
入力装置900bは、ユーザ等からの入力を受け付ける装置であり、例えばマウスやキーボードなどである。表示装置900cは、各種情報を表示するディスプレイやタッチパネルなどである。
記憶部900dは、振分サーバ12やデータサーバ15の各種機能を実行するためのデータや各種プログラムを格納する記憶装置である。例えば、記憶部900dは、図3に示す記憶部22や、図9に示す記憶部34と同様の情報を記憶する。記憶部900dの一例としては、ROM、RAM、ハードディスクなどがある。
プロセッサ900eは、記憶部900dに記憶されるプログラムやデータを用いて、情報処理装置900で実行される処理を制御する。プロセッサ900eの一例としては、例えばCPUやMPUなどがある。このプロセッサ900eは、ROM等に記憶されるプログラムをRAMに展開して、各種処理に対応する各種プロセスを実行する。例えば、プロセッサ900eは、図3に示す負荷分散処理部21や、図9に示す埋め込み処理部38と同様の処理を実行するプロセスを動作させる。
[機能構成について]
上述した処理のうち、自動的に行われるものとして説明した処理の全部又は一部を手動的におこなうこともできる。あるいは、手動的におこなわれるものとして説明した処理の全部又は一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散や統合の具体的形態は図示のものに限られない。つまり、その全部又は一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。
また、各装置にて行なわれる各処理機能は、その全部又は任意の一部が、CPU及び当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
1 通信システム
2 移動端末
3 無線アクセス網
4 移動コア網
5 インターネット
6、7 eNB
8、9 MME
10 S/P−GW
11 ロードバランサ
12〜14 振分サーバ
15〜17 データサーバ
18、31 ネットワークインタフェース
19、32 通信データ処理部
20、33 通信路制御部
21、21a 負荷分散処理部
22、22a、34、34a 記憶部
23、23a ハッシュ値振分テーブル
24、24a 振分先管理テーブル
25、25a 埋め込み値管理テーブル
26、26a ルール特定テーブル
27、27a ルールテーブル
28、28a 判定部
29、29a 抽出部
30、30a 振分部
35 MMEデータ
36、36a 未使用TIDリスト
37、37a アプリケーション処理部
38、38a、38b 埋め込み処理部
39、39a 算出部
40、40a、40b 生成部
41 ハッシュ関数テーブル
42 データサーバリスト

Claims (14)

  1. 処理の実行要求が受信されると、当該実行要求から送信元を示す識別子であって、値が固定の固定識別子を抽出する抽出部と、
    所定のハッシュ関数を用いて、前記抽出部が抽出した固定識別子のハッシュ値を算出する算出部と、
    前記送信元を示す識別子であって、前記処理の実行状況に応じて値を変更する暫定識別子として、前記算出部が算出したハッシュ値を一部に含む値を生成する生成部と、
    前記生成部が生成した暫定識別子を用いて、前記送信元と通信を行う通信部と
    を有することを特徴とする通信装置。
  2. 前記算出部は、前記処理の実行要求が割り当てられる通信装置の数に応じた表現長のハッシュ値を算出するハッシュ関数を用いて、前記固定識別子のハッシュ値を算出することを特徴とする請求項1に記載の通信装置。
  3. 前記生成部は、前記暫定識別子として、前記算出部が算出したハッシュ値を暗号化した値を一部に含む値を生成することを特徴とする請求項1または2に記載の通信装置。
  4. 前記生成部は、前記暫定識別子として、前記通信部が通信を行う際に用いるプロトコルに応じた位置に、前記算出部が算出したハッシュ値を埋め込んだ値を生成することを特徴とする請求項1〜3のいずれか1つに記載の通信装置。
  5. 前記生成部は、一連の処理を含むシグナリングセッション毎に異なる値を、前記暫定識別子として生成する
    ことを特徴とする請求項1〜4のいずれか1つに記載の通信装置。
  6. 前記生成部が生成した暫定識別子が前記実行要求に含まれる場合は、当該暫定識別子を用いて、所定の処理を実行する処理部を有することを特徴とする請求項1〜5のいずれか1つに記載の通信装置。
  7. 前記生成部は、1つ又は複数の外部システムを用いて実行される処理の実行要求が受信された場合は、前記算出部が算出したハッシュ値を一部に含む複数の暫定識別子であって、前記処理を実行する前記外部システムごとに異なる値の暫定識別子を生成し、
    前記通信部は、前記生成部が前記外部システムごとに生成した暫定識別子を用いて、各外部システムと通信を行う
    ことを特徴とする請求項1〜6のいずれか1つに記載の通信装置。
  8. 前記生成部は、前記処理の実行要求の送信先となるアドレス毎に異なるハッシュ関数を用いて、前記固定識別子のハッシュ値を算出することを特徴とする請求項1〜7のいずれか1つに記載の通信装置。
  9. 前記通信装置は、前記処理の実行要求の送信先となるアドレス毎に異なるハッシュ関数を用いて前記処理の実行要求を複数の通信装置に振り分ける振分装置から、前記処理の実行要求を受信することを特徴とする請求項8に記載の通信装置。
  10. 前記生成部は、所定のハッシュ関数を用いて前記固定識別子から算出されたハッシュ値を含む暫定識別子が使用中である場合、前記所定のハッシュ関数とは異なるハッシュ関数を用いて前記固定識別子から算出されたハッシュ値を含む暫定識別子の中に未使用の暫定識別子が存在するか否かを判定し、未使用の暫定識別子が存在すると判定した場合は、前記所定のハッシュ関数とは異なるハッシュ関数を用いて前記振り分けが行われる前記アドレスを、前記送信元に通知することを特徴とする請求項9に記載の通信装置。
  11. 前記生成部は、前記所定のハッシュ関数とは異なるハッシュ関数を用いて前記固定識別子から算出されたハッシュ値を含む暫定識別子の中に未使用の暫定識別子が存在しない場合、前記処理の実行要求の振り分け先となる他の通信装置に問い合わせ、いずれかの他の通信装置で、前記未使用の暫定識別子が存在すると判定された場合は、前記所定のハッシュ関数とは異なるハッシュ関数を用いて前記振り分けが行われる前記アドレスを、前記送信元に通知することを特徴とする請求項10に記載の通信装置。
  12. 前記生成部は、前回の使用が終了してから所定の期間が経過した暫定識別子を、前記未使用の暫定識別子とすることを特徴とする請求項10または11に記載の通信装置。
  13. 前記通信部は、前記送信元へ送信する情報のうち、前記通信装置に前記実行要求を送信する際に用いられるアドレス若しくはポート番号の一部に、前記暫定識別子の一部を埋め込むことを特徴とする請求項1〜12のいずれか1つに記載の通信装置。
  14. 通信装置が実行する管理方法であって
    処理の実行要求が受信されると、当該実行要求から送信元を示す識別子であって、値が固定の固定識別子を抽出し、
    所定のハッシュ関数を用いて、前記抽出された固定識別子のハッシュ値を算出し、
    前記送信元を示す識別子であって、前記処理の実行状況に応じて値を変更する暫定識別子として、前記算出されたハッシュ値を一部に含む値を生成し、
    前記生成された暫定識別子を用いて、前記送信元との通信を行う
    ことを特徴とする管理方法。
JP2015094104A 2015-05-01 2015-05-01 通信装置及び管理方法 Pending JP2016213604A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015094104A JP2016213604A (ja) 2015-05-01 2015-05-01 通信装置及び管理方法
US15/082,256 US20160323082A1 (en) 2015-05-01 2016-03-28 Communication device and managing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015094104A JP2016213604A (ja) 2015-05-01 2015-05-01 通信装置及び管理方法

Publications (1)

Publication Number Publication Date
JP2016213604A true JP2016213604A (ja) 2016-12-15

Family

ID=57204250

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015094104A Pending JP2016213604A (ja) 2015-05-01 2015-05-01 通信装置及び管理方法

Country Status (2)

Country Link
US (1) US20160323082A1 (ja)
JP (1) JP2016213604A (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3201764A1 (en) * 2014-09-29 2017-08-09 Hewlett-Packard Enterprise Development LP Provisioning a service
US11196643B2 (en) 2018-04-04 2021-12-07 Hewlett Packard Enterprise Development Lp State transitions for a set of services
US11281491B2 (en) 2018-11-21 2022-03-22 Hewlett Packard Enterprise Development Lp Execution of services concurrently

Also Published As

Publication number Publication date
US20160323082A1 (en) 2016-11-03

Similar Documents

Publication Publication Date Title
US11659469B2 (en) Restoration of serving call session control and application server function
US11206291B2 (en) Session control logic with internet protocol (IP)-based routing
EP4247049A1 (en) Data processing method, network element device, and readable storage medium
US9419940B2 (en) IPv4 data center support for IPv4 and IPv6 visitors
CN107204873B (zh) 一种切换目标域名解析服务器的方法及相关设备
JP5794891B2 (ja) フロースイッチ装置を用いたシグナリングメッセージの経路制御方法及びネットワークシステム
KR102117434B1 (ko) 전기통신 네트워크와 적어도 하나의 사용자 장비 간의 적어도 하나의 통신 교환의 개선된 핸들링을 위한 방법, 전기통신 네트워크, 사용자 장비, 시스템, 프로그램 및 컴퓨터 프로그램 제품
CN103098437B (zh) 基于sip的呼叫会话服务器和消息路由选择方法
CN117397230A (zh) 用于在核心网中分发网络功能(nf)高可用性(ha)拓扑信息的方法、系统和计算机可读介质
JP2016213604A (ja) 通信装置及び管理方法
JP5526015B2 (ja) ゲートウェイシステム、ゲートウェイ装置、負荷分散方法
JP5828952B2 (ja) 通信システム、ノード、フロー制御ネットワーク及び通信制御方法
US11653395B2 (en) Method for establishing a connection of a mobile terminal to a mobile radio communication network and radio access network component
WO2016050133A1 (zh) 一种认证凭证更替的方法及装置
US10225191B2 (en) Service packet distribution method and apparatus
US20160302055A1 (en) Information processing system
US9763135B1 (en) Load balancing with mobile resources
CN108307442A (zh) 业务发送方法及装置
CN116438824A (zh) 用于无线网络中核心网装置重分配的方法、装置及系统
CN114222290A (zh) 通信方法、装置、设备及存储介质
US9807669B1 (en) Identifying communication paths based on packet data network gateway status reports
JP5809048B2 (ja) Ipサブシステムネットワークの切り替えに基づく端末認証方法及びプロキシ加入者情報サーバ
EP2891298B1 (en) Method and node for automatically exchanging network service provider information
CN104780533B (zh) D2d用户安全注册实现方法、系统及装置
US20220167318A1 (en) Systems and methods for reducing transcoding resource allocation during call setup to multiple terminations