(57)【要約】【課題】  サーバ装置が輻輳した場合，サーバ装置の処理に高い負荷が掛かる要求を優先的に規制する。【解決手段】  端末１０２とサーバ装置間の輻輳制御装置において，端末１０２からの要求に対するサーバ装置の応答を基に，該端末１０２からの次の通信シーケンスの要求がサーバ装置に与える負荷を予測して，端末１０２への応答に負荷情報として追加する。以降，端末１０２からの要求は該負荷情報を含み，輻輳制御装置が該負荷情報を基に要求の規制を制御する。【選択図】図１
2010171472.tif 000002
【特許請求の範囲】
【請求項１】
端末とサーバ装置とを接続するネットワーク通信路上に設けられた輻輳制御装置であって，
前記端末からの要求を前記サーバ装置に中継し，前記サーバ装置からの応答を前記端末に中継する中継部と，
前記サーバ装置からの前記応答を解析して，該前記端末からの前記要求の次ステートを判定する判定部と，
前記端末からの要求の宛先ごとに，前記サーバ装置の処理能力を計測する計測部と，
判定された前記要求の次ステートと，計測された前記要求の宛先となる前記サーバ装置の処理能力と，から，前記次の要求が前記サーバ装置に与える負荷を，前記サーバ装置別に予測し，予測した前記負荷の情報を前記サーバ装置の応答に付加する予測部と，
前記端末から受信した要求に付加された該負荷情報を解析し，当該負荷情報の内容に基づいて，前記端末からの要求をサーバ装置へ中継するか否かを判定し，中継せずに拒否する場合には，前記端末に，中継しないことを通知する規制部と，を備える
ことを特徴とする輻輳制御装置。
【請求項２】
請求項１に記載の輻輳制御装置において，
前記計測部は，前記サーバ装置の処理能力を，前記サーバ装置へ中継した要求に対する当該サーバ装置の応答時間を計測した結果に基づき決定する
ことを特徴とする輻輳制御装置。
【請求項３】
請求項１に記載の輻輳制御装置において，
前記予測部は，前記要求の各ステートがサーバ装置に与える負荷を，前記計測部が計測する前記各ステートの要求に対する前記サーバ装置の応答時間から推定する
ことを特徴とする輻輳制御装置。
【請求項４】
請求項１に記載の輻輳制御装置において，さらに，
前記サーバ装置の処理能力の情報と，各ステートの要求が前記サーバ装置に与える負荷とを，前記サーバ装置から受信するサーバ状態取得部を備える
ことを特徴とする輻輳制御装置。
【請求項５】
請求項１に記載の輻輳制御装置において，さらに，
前記サーバ装置の処理能力の情報と，各ステートの要求が前記サーバ装置に与える負荷とを，前記サーバ装置からの通知を契機として前記サーバ装置から受信するサーバ状態取得部を備える
ことを特徴とする輻輳制御装置。
【請求項６】
請求項１に記載の輻輳制御装置において，さらに，
前記端末への応答に含まれる前記負荷情報の暗号化と，前記端末からの要求に含まれる暗号化された負荷情報の復号化を行う暗号化・復号化部を備える
ことを特徴とする輻輳制御装置。
【請求項７】
請求項１に記載の輻輳制御装置において，
前記判定部は，要求の現ステートと，該要求が含む特定のタグの有無と，該要求が含む特定のタグの値と，当該要求の次ステートとの組み合わせを有する状態遷移表を備え，該状態遷移表に基づき前記要求の次ステートを判定する
ことを特徴とする輻輳制御装置。
【請求項８】
請求項１に記載の輻輳制御装置において，
前記規制部は，前記要求が含む負荷情報により当該要求の中継を拒否する場合，当該要求が含む前記負荷情報をに基づき，次の要求に含まれるべき負荷レベルの低い負荷情報を決定し，該負荷情報を含めた規制応答を返す
ことを特徴とする輻輳制御装置。
【請求項９】
請求項１に記載の輻輳制御装置において，さらに，
前記サーバ装置への前記要求の中継を，前記要求が含む負荷情報に基づいて遅延させる中継遅延部を備える
ことを特徴とする輻輳制御装置。
【請求項１０】
請求項９に記載の輻輳制御装置において，
前記規制部は，前記サーバ装置への中継遅延時間を，前記サーバの輻輳状況と，要求が含む負荷情報と，に基づき決定し，
前記中継遅延部は，決定された前記遅延時間に基づき，前記要求の中継を遅延させる
ことを特徴とする輻輳制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はＷＷＷ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ）等，サーバ装置と端末間でデータを通信するネットワークシステムにおいて，端末通信路上に設置される装置が備える輻輳制御機能に関する。
【背景技術】
【０００２】
携帯端末の普及により，携帯電話やＰＣなどの複数の端末間での，予定表などのデータ同期の需要がますます増えている。また，今後は端末の高機能化に伴い，写真や動画などの大容量コンテンツに対しても同様に，同期の需要が増えると予想されている。これらデータ同期は，間に設けた同期サーバがデータ同期処理を仲介することにより行われているが，データ同期に対する需要の増加に伴って，データ同期サーバに掛かる負荷が激増することが予測されるため，同期サーバを要求集中から保護し，安定したサービスを提供するための輻輳制御機能が必要となる。
【０００３】
従来の輻輳制御機能としては，例えば，特許文献１では、WebサーバとWebクライアントとの間の経路上に輻輳制御装置を設置し、当該Webサーバに対して推定した処理能力以上の要求を中継している場合には、Webサーバの推定処理能力に基づいて制御した接続規制時間をクライアントに応答することを提案している（カラム２，４８〜５９行）。
【０００４】
【特許文献１】米国特許第7239609号
【非特許文献１】L. Massoulie and J. Roberts, 「Arguments in favor of admission control for TCP FLOWS」，ITC16, 1999
【発明の開示】
【発明が解決しようとする課題】
【０００５】
端末と同期サーバとの間でデータの同期を行う通信プロトコル（例えばＳｙｎｃＭＬ）において，端末と同期サーバとの間のトランザクションは，複数回の端末からの要求とそれらに対する同期サーバからの応答からなり，図２５の例に示すように、各要求は状態遷移を伴う（以下、これらの各状態をステート（state）と呼称する）。例えば、通信が「未初期化」のステートＳ２００である時に、初期化処理の要求を行い正常に応答が返ると、通信は「初期化済み」のステートＳ２０２に遷移する。
【０００６】
要求のステート毎に同期サーバへ与える負荷は異なるので，要求のステートに応じて輻輳制御の内容を変えることは有効である（例えば，非特許文献１）が，受信した要求を解析してステートを判断すると，要求集中時に輻輳制御機能に掛かる負荷が非常に高くなり，輻輳制御機能を提供できなくなる。
【０００７】
また，同期サーバの輻輳の一因は，同期サーバのデータベース処理の遅延にあるが，同期に使用するデータベースは同期対象のデータによって異なるため，特定のデータベースを使用する要求が輻輳している可能性を考慮する必要がある。
【課題を解決するための手段】
【０００８】
本発明は，上記課題を解決する輻輳制御装置または，輻輳制御部を備えた同期サーバを提供する。
【０００９】
本発明は，上記課題を解決する，端末と同期サーバとの間のネットワーク通信路上に設置する輻輳制御装置，または同期サーバ装置内に備える輻輳制御部を提供する。
【００１０】
本発明による輻輳制御装置または輻輳制御部は，端末からの要求に対する同期サーバの応答を元に該端末からの次要求のステートを予測する機能を備え，要求の対象であるデータベース毎の輻輳状況と，予測した要求の次ステートの内容から，該端末からの要求の次ステートが同期サーバに与える負荷の度合い（以下，負荷レベルとする）を予測することを特徴とする。
【００１１】
また，該輻輳制御装置または輻輳制御部は予測した負荷レベルを負荷情報としてサーバからの応答に追加して端末へ中継し，端末は次回要求において該負荷情報を特定部分（例えばＨＴＴＰのリクエストアドレス）に含み，該輻輳制御装置または輻輳制御部は要求が含む該負荷情報を用いて要求を拒否したり遅延させたりといった規制制御を行うことを特徴とする。
【００１２】
さらに，要求を拒否する場合は，要求を拒否したことを示す応答を端末に送信し，利用者に通知することを特徴とする。
【００１３】
さらに，繰り返し取得する，同期サーバからの応答時間や，同期サーバから通知される情報に基づいて，データベース毎の処理能力や，要求のステートの負荷度合いを，判断し，調整することを特徴とする。
【００１４】
該輻輳制御装置または輻輳制御部は要求内容を全て解析せずに，容易に解析可能な特定の部分から該要求がサーバに与える負荷を判断するため，要求集中時にも高速に処理を実行できる。
【００１５】
また，該輻輳制御装置または輻輳制御部は同期サーバの処理に高い負荷が掛かる要求を優先的に規制することにより，要求集中時にもサービスを継続可能にする。
【００１６】
より具体的な本発明の一態様は，端末とサーバ装置とを接続するネットワーク通信路上に設けられた輻輳制御装置であって，端末からの要求をサーバ装置に中継し，サーバ装置からの応答を端末に中継する中継部と，サーバ装置からの応答を解析して，該端末からの要求の次ステートを判定する判定部と，端末からの要求の宛先ごとに，サーバ装置の処理能力を計測する計測部と，判定された要求の次ステートと，計測された要求の宛先となるサーバ装置の処理能力と，から，次の要求がサーバ装置に与える負荷を，サーバ装置別に予測し，予測した負荷の情報をサーバ装置の応答に付加する予測部と，端末から受信した要求に付加された該負荷情報を解析し，当該負荷情報の内容に基づいて，端末からの要求をサーバ装置へ中継するか否かを判定し，中継せずに拒否する場合には，端末に，中継しないことを通知する規制部と，を備える。
【００１７】
さらに，計測部は，サーバ装置の処理能力を，サーバ装置へ中継した要求に対する当該サーバ装置の応答時間を計測した結果に基づき決定してもよい。
【００１８】
さらに，予測部は，要求の各ステートがサーバ装置に与える負荷を，計測部が計測する各ステートの要求に対するサーバ装置の応答時間から推定してもよい。
【００１９】
さらに，サーバ装置の処理能力の情報と，各ステートの要求がサーバ装置に与える負荷とを，繰り返しサーバ装置から受信するサーバ状態取得部を備えてもよい。サーバ状態取得部は，また，サーバ装置の処理能力の情報と，各ステートの要求がサーバ装置に与える負荷とを，サーバ装置からの通知を契機として受信しても良い。
【００２０】
また，端末への応答に含まれる負荷情報の暗号化と，端末からの要求に含まれる暗号化された負荷情報の復号化を行う暗号化・復号化部を備えてもよい。
【００２１】
判定部は，要求の現ステートと，該要求が含む特定のタグの有無と，該要求が含む特定のタグの値と，当該要求の次ステートとの組み合わせを有する状態遷移表を備え，該状態遷移表に基づき要求の次ステートを判定してもよい。
【００２２】
規制部は，要求が含む負荷情報により当該要求の中継を拒否する場合，当該要求が含む負荷情報をに基づき，次の要求に含まれるべき負荷レベルの低い負荷情報を決定し，該負荷情報を含めた規制応答を返してもよい。
【００２３】
さらに，サーバ装置への要求の中継を，該要求が含む負荷情報に基づいて遅延させる中継遅延部を備えてもよい。
【００２４】
さらに，規制部は，サーバ装置への中継遅延時間を，サーバの輻輳状況と，要求が含む負荷情報と，に基づき決定し，中継遅延部は，決定された遅延時間に基づき，要求の中継を遅延させてもよい。
【発明の効果】
【００２５】
本発明により，データ同期要求の集中時にも，同期サービスの継続が可能になり，高速にまた，データ同期処理を実行できるようになる。
【発明を実施するための最良の形態】
【００２６】
以下，本発明の実施の形態について図面を参照して説明する。
【００２７】
なお，以下の各実施例では，輻輳制御機能をネットワーク通信路上の中継装置が備えた場合について説明するが，サーバ装置が本輻輳制御機能を備えてもよい。
【実施例１】
【００２８】
図１に示すように，本実施形態の通信システムは，データの同期を行う通信プロトコル（例えばＳｙｎｃＭＬ）を使用してデータの同期を要求する端末１０２と，該通信プロトコルを使用して端末１０２とデータを同期する同期サーバ１０４と，端末１０２と同期サーバ１０４との間のネットワーク通信路１４０，１４２上でデータを中継する中継装置１００を含んで構成される。中継装置１００と端末１０２と同期サーバ１０４はそれぞれ複数台であっても良い。
【００２９】
図１に示すように，中継装置１００は，端末１０２からの要求を受信し，応答を送信することが可能なネットワークインタフェース１１０と，同期サーバ１０４に要求を送信し，応答を受信することが可能なネットワークインタフェース１１２と，要求や応答を中継するトラフィック中継部１１４を備える。
【００３０】
要求管理情報記憶部１３０は，端末１０２との接続が確立している間，要求に関する情報を要求管理情報Ｄ８０に記憶する。
【００３１】
サーバ状態管理部１２２は，同期サーバ１０４の処理能力を計測する。具体的には，例えば，中継した要求に対する同期サーバ１０４からの応答時間を計測し，同期サーバ１０４の宛先と同期対象のデータベースとの組み合わせ毎に平均の応答時間を求める。組み合わせ毎の平均応答時間は，宛先管理情報記憶部１３４により宛先管理情報Ｄ２０として記憶される。また，同期サーバ１０４の応答の内容から，要求のステートを判定し，要求のステート毎の平均の応答時間を求める。ステート毎の平均応答時間は，ステート管理情報記憶部１３２によりステート管理情報Ｄ４０として記憶される。
【００３２】
次回負荷レベル決定・応答変更部１２４は，同期サーバ１０４の応答を解析し，その内容とステート遷移表Ｄ６０から，該応答に対する要求の次ステートを判定する。また，要求の次ステートと，ステート管理情報Ｄ４０と，宛先管理情報Ｄ２０とを基に，端末１０２からの要求の次ステートが与える負荷レベルを同期サーバ１０４毎に予測する。
【００３３】
さらに，予測した負荷レベルを含む情報を，同期サーバ１０４からの応答に付加する。なお，端末１０２は，該負荷情報が含まれる応答を受信した際，次に送信する要求に該負荷情報を含めて送信する。
【００３４】
負荷情報解析・変更部１１６は，端末１０２からの要求に含まれる負荷情報を取得し，解析する。
【００３５】
なお，負荷情報の改変などの規制に対する不正な操作を排除するため，暗号化・復号化部１１８を設けて，負荷情報を暗号化した後に応答に追加してもよい。暗号化アルゴリズムは，共通鍵，公開鍵のいずれでも良く，鍵の共有または取得は，公知の方法で行えば良い。負荷情報解析・変更部１１６は，取得した負荷情報が暗号化されている場合は，暗号化・復号化部１１８により復号した後に解析を行う。
【００３６】
要求規制判定・応答部１２０は，解析した負荷情報の内容と，宛先管理情報Ｄ２０を基に，要求を規制するかどうか判定し，要求を中継せずに拒否する場合には，中継しないことを通知するメッセージを応答として端末１０２に返す。
【００３７】
図２は本実施形態の中継装置１００を実現する電子計算機の物理構成を示した図である。本実施形態の中継装置１００は，プログラムを実行し，以下に説明する処理を実現するプロセッサ５０１と，実行するプログラムやデータを読み込んで一時的に保持するメモリ装置５０２と，外部からの指示や情報を入力するための入力装置５０３と，プログラムの実体，指示，情報等を格納し，データの記憶手段として使用されるディスク装置５０４と，中継装置１００の内部と外部との間でデータのやり取りを制御する通信制御装置５０５と，中継装置１００の内部でデータのやり取りを行うためのバスなどの内部通信線５０６と，中継装置１００の内部と外部装置との間でデータのやり取りを行うための外部通信回線５０７を備える。
【００３８】
プロセッサ５０１は，ディスク装置５０４に格納されるプログラムを実行し，必要に応じて各装置と連携しながら，図１に示す中継装置の各処理部を実現する。
【００３９】
上記プログラムは、あらかじめ、中継装置１００内のメモリ装置５０１またはディスク装置５０４に格納されていても良いし、必要なときに、上記中継装置１００が利用可能な、着脱可能な記憶媒体から、または通信媒体（ネットワーク１４０や１４２，またはこれらの上を伝搬する搬送波やデジタル信号など）を介して他の装置から、導入されてもよい。
【００４０】
図３は，本実施形態の中継装置１００が端末１０２とコネクションを確立している間，要求管理情報記憶部１３０が記憶する要求管理情報Ｄ８０の一例である。要求管理情報Ｄ８０は，項目として，要求のステートＤ８２と，要求が宛先とする同期サーバ１０４とデータベースを特定する宛先番号Ｄ８４と，要求のステートが同期サーバ１０４に与えるであろう負荷の度合いを示した負荷レベルＤ８６と，中継装置１００が端末１０２から受信した要求を同期サーバ１０４に送信した時刻である要求送信時刻Ｄ８８を有する。
【００４１】
図４は，宛先管理情報記憶部１３４が同期サーバ１０４とデータベースとの組み合わせ毎の平均応答時間を記憶する宛先管理情報Ｄ２０の一例である。宛先管理情報Ｄ２０は，項目として，同期サーバ１０４の宛先アドレスを示す宛先サーバＤ２２と，同期するデータベースを示す宛先データベースＤ２４と，宛先サーバＤ２２と宛先データベースＤ２４の組み合わせに対して与える固有の数値である宛先番号Ｄ２６と，各宛先番号Ｄ２６に対する同期サーバ１０４からの応答時間の平均である平均応答時間Ｄ２８を有する。
【００４２】
図５はステート管理情報記憶部１３２が要求のステート毎の同期サーバ１０４の平均応答時間を記憶するステート管理情報Ｄ４０の一例である。ステート管理情報Ｄ４０は，項目として，要求のステートを示すステート名Ｄ４２と，ステート毎のサーバからの応答時間の平均である平均応答時間Ｄ４４と，各ステートに手動で優先付けをおこなうための補正パラメータＤ４６を有する。
【００４３】
図１３は，次回負荷レベル決定・応答変更部１２４が，現在のステートと，応答に含まれる特定のタグの値から要求の次ステートを決定するためのステート遷移表Ｄ６０の一例である。ステート遷移表Ｄ６０は，項目として，現ステートＤ６２と，応答が含む特定のタグに関する条件Ｄ６４−Ｎと，要求の次ステートＤ６６を含む。
【００４４】
図６はデータ同期の通信プロトコルにＳｙｎｃＭＬ/ＨＴＴＰ（Ｈｙｐｅｒ Ｔｅｘｔ Ｔｒａｎｓｆｅｒ Ｐｒｏｔｏｃｏｌ）を使用して，端末１０２が同期サーバ１０４に送信する要求Ｍ１００の一例である。要求Ｍ１００はリクエストＵＲＩ(Ｍ１０２)を有する。
【００４５】
図７はデータ同期の通信プロトコルにＳｙｎｃＭＬ/ＨＴＴＰを使用して，同期サーバ１０４が端末１０２の要求に対して送信する応答Ｍ２００の一例である。応答Ｍ２００は，項目として，応答のシーケンス番号Ｍ２０２と，同期サーバ１０４のアドレスＭ２０４と，同期対象のデータベースのアドレスＭ２０６と，端末１０２が次回の要求でリクエストＵＲＩに使用するアドレス（以下，レスポンスＵＲＩ）Ｍ２０８を含む。
【００４６】
図８は第１の実施例における通信シーケンスの一例である。
【００４７】
まず，端末１０２がデータ同期のための初期化処理の要求を送信し，中継装置１００のネットワークインタフェース１１０が受信する（Ｓ１０２）。中継装置１００は，処理Ｆ２００（後述する）により，現在時刻を要求管理情報Ｄ８０の要求送信時刻Ｄ８８に記憶して，要求を同期サーバ１０４に送信する（Ｓ１０４）。同期サーバ１０４は初期化要求（Ｓ１００）に対する応答（Ｍ２００）を送信し，中継装置１００のネットワークインタフェース１１２が該応答を受信する（Ｓ１１０）。中継装置１００は，処理Ｆ３００（後述する）により，応答を受信した時刻と応答送信時刻Ｄ８８の差分から経過時間Ｓ１０８を求め，応答Ｍ２００が有する同期サーバ１０４のアドレスＭ２０４と，同期対象のデータベース名称Ｍ２０６と，経過時間Ｓ１０８を元に，宛先管理情報Ｄ２０の情報を追加する。
【００４８】
また，中継装置１００の次回負荷レベル決定・応答変更部１２４は応答Ｍ２００とステート遷移表Ｄ６０から次の要求のステートを判定し，判定した次の要求のステートと，ステート管理情報Ｄ４０と，宛先管理情報Ｄ２０とを使用して，端末１０２からの次の要求の負荷レベルを予測する。続いて，負荷レベルと，宛先の同期サーバ１０４とデータベースとを識別する識別番号と，次の要求のステートとを，含んで構成される負荷情報を，同期サーバ１０４からの応答が含むレスポンスＵＲＩ（Ｍ２０８）にパラメータとして追加し，応答を端末１０２に送信する（Ｓ１１２）。更に，暗号化・復号化部１１８を設け，上記負荷情報を暗号化してもよい。
【００４９】
なお，各実施例において，中継装置１００の制御は，端末からの要求に含まれる負荷情報に基づいて行われるため，各処理部は，端末から受信した複数の要求の異なるステートが同じ要求を構成するものか，違う要求に含まれるものか，を知る必要は無い。
【００５０】
端末１０２は応答Ｍ２００のレスポンスＵＲＩ（Ｍ２０８）の値をリクエストＵＲＩ（Ｍ１０２）に用いて要求Ｍ１００を送信し，中継装置１００のネットワークインタフェース１１０が該要求Ｍ１００を受信する（Ｓ１１４）。中継装置１００は，処理Ｆ２００（後述する）により，リクエストＵＲＩ（Ｍ１０２）が含む暗号化が施された負荷情報を復号化し，要求の負荷レベルと，要求の宛先の平均応答時間から，中継する/しないを判断して，要求を中継せずに拒否する場合は，中継しないことを示すメッセージ（規制メッセージ）を応答として端末１０２に返す。（Ｓ１１６）。規制メッセージを受けた端末１０２は、通信を中断し、後で通信を途中から再開することが可能である。
【００５１】
端末１０２が再び要求Ｍ１００を送信した場合，中継装置１００のネットワークインタフェース１１０が該要求を受信し（Ｓ１１８），処理Ｆ２００（後述する）により，要求の負荷レベルと，要求の宛先の平均応答時間から判断して，同期サーバ１０４に中継する場合，中継装置の負荷情報解析・変更部１１６は要求のリクエストＵＲＩ（Ｍ１０２）が含む負荷情報を除去して中継する（Ｓ１２０）。
【００５２】
図９は，中継装置１００のネットワークインタフェース１１０が端末１０２から要求を受信した際の中継装置１００の詳細な動作を示すフローチャートであり，図８のＦ２００に相当する。ネットワークインタフェース１１０が端末１０２からの要求を受信すると（Ｆ２００），負荷情報解析・変更部１１６が要求のリクエストＵＲＩ（Ｍ１０２）に負荷情報が存在するかどうか判定する（Ｆ２０２）。負荷情報が存在しない場合は，現在時刻を要求送信時刻Ｄ８８に記憶し，同期サーバ１０４へ要求を中継する（Ｆ２１２）。負荷情報が存在する場合は，秘密鍵を用いて負荷情報を復号化する。復号化した負荷情報は負荷レベルと、宛先番号と、ステートを含み、要求管理情報記憶部１３０が各値をそれぞれ要求管理情報Ｄ８０の負荷レベルＤ８６と、宛先番号Ｄ８４と、要求ステートＤ８２に設定する（Ｆ２０４）。なお、負荷情報は宛先番号を複数個含む可能性があり、その場合は宛先番号Ｄ８４も複数個設定する。
【００５３】
要求規制判定・応答部１２０は，宛先管理情報Ｄ２０において宛先番号Ｄ８４と同じ値を持つ宛先番号Ｄ２６の平均応答時間Ｄ２８と，負荷レベルＤ８６とを比較し，要求を規制するかどうか判定する（Ｆ２０６）。比較に用いる式の一例を次に示す。なお，式中のα，β，γはパラメータとして予め定めた定数である。
【００５４】
（負荷レベルＤ８６）×α＋（平均応答時間Ｄ２８）×β  ＜  γ          （式１）
宛先番号Ｄ２６が複数ある場合は，平均応答時間Ｄ２８が最大のものを使用する。式１の結果が偽の場合は，Ｓ１１６のように，端末１０２要求を同期サーバ１０４に中継せずに拒否して，中継しないことを示すメッセージを応答として要求元の端末１０２に返す（Ｆ２１０）。式１の結果が真の場合は，Ｓ１２０のように，要求のリクエストＵＲＩ（Ｍ１０２）から負荷情報を除去し（Ｆ２０８），現在時刻を要求送信時刻Ｄ８８に記憶し，同期サーバ１０４へ要求を中継する（Ｆ２１２）。
【００５５】
図１０と図１１と図１２はネットワークインタフェース１１２が同期サーバ１０４から応答を受信した際の中継装置１００の詳細な動作を示すフローチャートであり，図８のＦ３００に相当する。
【００５６】
ネットワークインタフェース１１２が同期サーバ１０４からの応答を受信すると（Ｆ３００），サーバ状態管理部１２２は要求送信時刻Ｄ８８から現在時刻までの経過時間を計測し，応答時間とする（Ｆ３０２）。次に，要求ステートＤ８２がＦ２０４で設定済みであるかどうかを判定する（Ｆ３０４）。設定済みであるならばサーバ状態管理部１２２は以下の処理を行う。
【００５７】
まず，ステート管理情報Ｄ４０において要求ステートＤ８２と同じ値のステート名Ｄ４２の平均応答時間を更新し（Ｆ３０６），宛先番号Ｄ８４が複数存在するかどうか判定し（Ｆ３０８），宛先番号Ｄ８４が複数でないならば宛先管理情報Ｄ２０において宛先番号Ｄ８４と同じ値の宛先番号Ｄ２６の平均応答時間を更新する。
【００５８】
Ｆ３０４において要求ステートＤ８２が設定されていない場合は，サーバからの応答Ｍ２００を解析して，シーケンス番号（Ｍ２０２）を取得して値が１かどうか判定し（図１１のＦ４０４），値が１以外の場合は処理を終了する。値が1であれば，要求ステートＤ８２を「Initialize」に設定し（Ｆ４０６），応答Ｍ２００を解析して，宛先サーバ（Ｍ２０４）と宛先データベース（Ｍ２０６）を取得する（Ｆ４０８）。取得した宛先サーバ（Ｍ２０４）と宛先データベース（Ｍ２０６）との組み合わせが１つで（Ｆ４１０），宛先管理情報Ｄ２０の宛先サーバＤ２２と宛先データベースＤ２４との組み合わせに存在すれば（Ｆ４１２），同じ組み合わせに対応する平均応答時間Ｄ２８を更新する。存在しなければ，宛先サーバ（Ｍ２０４）と宛先データベース（Ｍ２０６）との組み合わせを宛先管理情報Ｄ２０に追加し，ユニークな宛先番号Ｄ２６と平均応答時間Ｄ２８を設定する（Ｆ４１４）。
【００５９】
次に，サーバ状態管理部１２２は，宛先サーバ（Ｍ２０４）と宛先データベース（Ｍ２０６）との組み合わせに対応する宛先番号Ｄ２６を要求管理情報Ｄ８０の宛先番号Ｄ８４に設定し（Ｆ４１８），ステート管理情報Ｄ４０のステート名Ｄ４２が「Ｉｎｔｉａｌｉｚｅ」の平均応答時間Ｄ４４を更新する（Ｆ４２０）。
【００６０】
Ｆ３００以降の処理が正常に終了（Ｆ３１０）すると，次回負荷レベル決定・応答変更部１２４が，応答に含まれるレスポンスＵＲＩ（Ｍ２０８）を取得する（図１２のＦ５０２）。そして，ステート遷移表Ｄ６０において，要求ステートＤ８２と同じ値の現ステートＤ６２を有し，Ａｌｅｒｔタグのコード（Ｍ２１０）やＦｉｎａｌタグ（Ｍ２１２）の有無が一致する行を判定し，次ステートＤ６６を決定する（Ｆ５０４）。
【００６１】
また，次回負荷レベル決定・応答変更部１２４は，宛先管理情報Ｄ２０において，宛先番号Ｄ８４と同じ値の宛先番号Ｄ２６の平均応答時間Ｄ２８を求め（Ｆ５０６），ステート管理情報Ｄ４０において次ステートＤ６６と同じ値のステートＤ４２の平均応答時間Ｄ４４と，補正パラメータＤ４６と，Ｆ５０８で求めた平均応答時間Ｄ２８とを基に，該端末１０２からの次の要求の負荷レベルを予測する（Ｆ５０８）。なお，宛先番号Ｄ８４が複数存在する場合は，平均応答時間Ｄ２８が最大のものを使用する。負荷レベルを予測する式の一例を次に示す。なお，式中のα，β，γはパラメータとして予め定めた定数である。該定数の各値は式１のそれと異なっても良い。
【００６２】
（負荷レベル）＝（平均応答時間Ｄ４４）×α＋（補正パラメータＤ４６）×β
＋（平均応答時間Ｄ２８）×γ            （式２）
次回負荷レベル決定・応答変更部１２４は，暗号化・復号化部１１８により，求めた負荷レベルと，宛先番号Ｄ８４と，次ステートＤ６６に暗号化を施して負荷情報とし，該負荷情報をＦ５０２で取得したレスポンスＵＲＩ（Ｍ２０８）の値にＣＧＩパラメータとして追加する（Ｆ５１０）。なお，上述したとおり，暗号化は必須ではない。
【００６３】
以上，本実施例によれば，端末１０２からの要求に対する同期サーバ１０４の応答を基に，該端末１０２からの次の要求が同期サーバ１０４の処理に与える負荷レベルを予測して，端末１０２に負荷情報として応答し，端末１０２からの次回の要求が含む該負荷情報を用いて要求を制御する輻輳制御機能を提供できる。
【実施例２】
【００６４】
第２の実施例は，輻輳制御装置すなわち中継装置１００が，端末１０２からの要求が含む負荷レベルによって要求の中継を規制した場合に，該端末１０２からの次回の要求の負荷レベルを低下させる実施形態である。
【００６５】
図１４は，実施例２の通信システムの一構成例を示す。中継装置１００−Ｂは，端末１０２からの次回要求のリクエストＵＲＩに使用されるレスポンスＵＲＩを作成する，レスポンスＵＲＩ作成部１２８を備える。それ以外の構成は実施例１の中継装置１００と等しくてよい。また，プロセッサ５０１が，プログラムを実行し，必要に応じて各装置と連携しながら，各処理部を実現する点も同様である。
【００６６】
実施例２の中継装置１００−Ｂが端末１０２から要求を受信する際の詳細な動作を示すフローチャートは、実施例１の図９のフローチャートと次の点で異なる。Ｆ２０６で要求を中継せずに拒否して，中継しないことを示すメッセージを応答として端末１０２に返す場合，Ｆ２１０に代わり、レスポンスＵＲＩ作成部１２８が、現在の要求に含まれるレベルよりも負荷レベルを下げたレスポンスＵＲＩを作成し、該レスポンスＵＲＩを含む応答を端末１０２に返す。端末１０２は次回送信する要求のリクエストＵＲＩに，受信した，負荷レベルが下がった該レスポンスＵＲＩの値を使用する。その他のフローチャートＦ１００からＦ５００の処理は実施例１と等しい。
【００６７】
レスポンスＵＲＩ作成部１２８が負荷レベルを下げたレスポンスＵＲＩ（Ｍ３０２）を作成する手順を次に示す。まず、レスポンスＵＲＩ作成部１２８が負荷レベルＤ８６を、予め定めた割合だけ、または予め定めた値だけ低下させる。次に、暗号化・復号化部１１８により、要求ステートＤ８２と、宛先番号Ｄ８４と、負荷レベルＤ８６とを秘密鍵で暗号化して負荷情報を作成し、要求のリクエストＵＲＩのうち、負荷情報の部分を、新たに作成した負荷情報と置き換えた値をレスポンスＵＲＩの値とする。ただし，上述したとおり，暗号化・復号化は必須ではない。
【００６８】
図１５は，実施例２のＦ２１６で中継装置１００−Ｂが端末１０２に返す応答（Ｍ３００）の一例である。該応答（Ｍ３００）はレスポンスＵＲＩ（Ｍ３０２）を含む。
【００６９】
以上，本実施例によれば，中継装置１００−Ｂが端末１０２からの要求を中継しない場合，負荷レベルを低下させたレスポンスＵＲＩを含む規制応答を端末１０２に返し，該端末１０２からの次回の要求が含む負荷レベルを低下させる。これにより，中継が拒否された端末１０２からの要求は，前回の要求よりも負荷レベルが低く，規制の対象から優先的に除外される輻輳制御機能を提供できる。
【実施例３】
【００７０】
第３の実施例は，端末１０２と輻輳制御装置すなわち中継装置１００との間での負荷情報の交換にＨＴＴＰのクッキーを使用し，該負荷情報を用いて要求の中継を規制する実施形態である。
【００７１】
図１６は，実施例３の通信システムの一構成例を示す。中継装置１００−Ｃは，端末１０２からの要求が含むＨＴＴＰヘッダフィールド「Ｃｏｏｋｉｅ」の解析と除去を行うクッキー解析・除去部１３６と，次回の要求の負荷レベルを予測し，同期サーバ１０４からの応答に該負荷レベルの情報をＨＴＴＰヘッダフィールド「Ｓｅｔ−Ｃｏｏｋｉｅ」として追加する次回負荷レベル決定・クッキー追加部１３８を備える。それ以外の構成は実施例１の中継装置１００の構成と等しくてよい。また，プロセッサ５０１が，プログラムを実行し，必要に応じて各装置と連携しながら，各処理部を実現する点も同様である。
【００７２】
図１７は、実施例３において、中継装置１００−Ｃが、同期サーバ１０４からの応答に負荷情報をクッキーとして追加し、端末１０２に送信する応答（Ｍ４００）と、該応答を受けて端末１０２が送信する要求の一例である（Ｍ５００）。応答（Ｍ４００）は、負荷情報を記述した「Ｓｅｔ−Ｃｏｏｋｉｅ」ヘッダフィールド（Ｍ４０２）を有する。また、要求（Ｍ５００）は、負荷情報を記述した「Ｃｏｏｋｉｅ」ヘッダフィールド（Ｍ５００）を有する。
【００７３】
実施例３の中継装置１００−Ｃが端末１０２から要求を受信する際の詳細な動作を示すフローチャートは、実施例１の図９のフローチャートと次の点で異なる。まず、ネットワークインタフェース１１０が端末１０２からの要求を受信すると（Ｆ２００）、Ｆ２０２に代わり、クッキー解析・除去部１３６がＨＴＴＰのＣｏｏｋｉｅヘッダフィールド（Ｍ５０２）に負荷情報が存在するかどうか判定する。また、Ｆ２０６で要求を規制しない場合、Ｆ２０８に代わり、クッキー解析除去部１３６が、負荷情報を含む「Ｃｏｏｋｉｅ」ヘッダフィールドを除去する。それ以外の処理については、実施例１の処理と等しい。
【００７４】
実施例３の中継装置１００−Ｃが同期サーバ１０４からの応答を受信し、次回負荷レベル決定・クッキー追加部１３８が次回の要求の負荷レベルを決定し、クッキーを追加する際の詳細な動作を示すフローチャートは、実施例１の図１２のフローチャートと次の点で異なる。実施例３では、Ｆ５０８に代わり、次回負荷レベル決定・クッキー追加部１３８が、予測した負荷レベルを、同期サーバ１０４からの応答にＨＴＴＰの「Ｓｅｔ−Ｃｏｏｋｉｅ」ヘッダフィールド（Ｍ５０２）として追加する。それ以外の処理は、実施例１の処理と等しい。
【００７５】
以上、本実施例によれば、中継装置１００−Ｃが，次回要求の負荷レベルを同期サーバ１０４の応答に，ＨＴＴＰのクッキーとして追加し、端末１０２からの要求が含むＨＴＴＰのクッキーが有する負荷情報を用いて、要求の中継を規制する輻輳制御機能を提供できる。
【００７６】
また，本実施形態は，実施例２と組み合わせることも可能である。
【実施例４】
【００７７】
第４の実施例は，輻輳制御装置すなわち中継装置１００が，端末１０２からの要求が含む負荷情報の値によって，サーバ装置への要求の中継を一定時間遅延させる実施形態である。なお，本実施例では，要求の中継を拒否しないので，規制応答は返さない。
【００７８】
図１８は、実施例４の通信システムの一構成例を示す。中継装置１００−Ｄは、同期サーバ１０４への要求の中継を一定時間保留する中継遅延部１５０を備える。それ以外の構成は実施例１の中継装置１００と同じでよい。また，プロセッサ５０１が，プログラムを実行し，必要に応じて各装置と連携しながら，各処理部を実現する点も同様である。
【００７９】
実施例４の中継装置１００−Ｄが、端末１０２から要求を受信する際の詳細な動作を示すフローチャートは、実施例１の図９のフローチャートと次の点で異なる。実施例４では、Ｆ２０６に代わり、要求規制判定・応答部１２０が、宛先管理情報Ｄ２０において宛先番号Ｄ８４と同じ値を持つ宛先番号Ｄ２６の平均応答時間Ｄ２８と、負荷レベルＤ８６とを用いて、値γを求める。値γを求める式の一例を次に示す。なお，式中のα，β，γはパラメータとして予め定めた定数である。該定数の各値は式１，式２のそれと異なっても良い。
【００８０】
γ＝（負荷レベルＤ８６）×α＋（平均応答時間Ｄ２８）×β              （式３）
値γが、予め定めた数値（γ´）以上（γ´＜γ）ならば要求元の端末１０２に規制応答を返し（Ｆ２１０）、予め定めた，該値（γ´）よりも低い数値（γ´´）以下（γ＜γ´´）ならば要求を中継する。それ以外（γ´´＜γ＜γ´）ならば、中継遅延部１５０が該要求の中継を一定時間保留する。それ以外の処理は、実施例１処理と等しい。中継遅延部１５０が要求の中継を保留する時間は、予め定めた時間でも良いし、負荷レベルＤ８６と平均応答時間Ｄ２８から求めたγの値に応じて異なっても良い。
【００８１】
以上，本実施例に拠れば，端末１０２からの要求が含む負荷情報によって，中継装置１００−Ｄが，同期サーバ１０４への中継を遅延させて，同期サーバ１０４への要求の集中を避けることにより，輻輳を軽減させる輻輳制御機能を提供できる。
【００８２】
また，本実施形態は，実施例３と組み合わせることも可能である。
【実施例５】
【００８３】
第５の実施例は，同期サーバ１０４の輻輳状態と，各ステートのメッセージが同期サーバ１０４の処理に与える負荷の大きさとを，同期サーバ１０４の応答時間から予測するのではなく，同期サーバ１０４と通信して同期サーバ１０４から取得する実施形態である。
【００８４】
図１９は，実施例５の通信システムの一構成例を示す。同期サーバ１０４−Ｂは，データベース毎の処理能力と，各ステートのメッセージが同期サーバ１０４−Ｂの処理に与える負荷の大きさとを計測し，該情報（以下，輻輳情報とする）を中継装置１０４−Ｂに通信路を介して配信する機能を備える。中継装置１００−Ｅは，該輻輳情報を同期サーバ１０４−Ｂから通信路を介して受信するサーバ状態取得部１６０を備える。サーバ状態取得部１６０と同期サーバ１０４−Ｂとの通信プロトコルには，例えばＨＴＴＰを使用する。図２０はサーバ状態取得部１６０が同期サーバ１０４−Ｂから繰り返し（例えば定期的に）取得する，輻輳情報を含むＨＴＴＰメッセージＭ６００の一例である。
【００８５】
図２１は実施例５のステート管理情報記憶部１３２が記憶するステート管理情報Ｄ５０の一例である。実施例１のステート管理情報Ｄ４０の平均応答時間Ｄ４４に代わり，同期サーバ１０４−Ｂから取得する各ステートのメッセージが同期サーバ１０４の処理に与える負荷を負荷状態Ｄ５２として記憶する。
【００８６】
図２２は実施例５の宛先管理情報記憶部１３４が記憶する宛先管理情報Ｄ３０の一例である。実施例１の宛先管理情報Ｄ３０の平均応答時間Ｄ２８に代わり，同期サーバ１０４−Ｂから取得するデータベース毎の処理能力を負荷状態Ｄ３２として記憶する。
【００８７】
図２３は，繰り返し（例えば予め定めた時間の経過毎に），または同期サーバ１０４からの通知を契機として，宛先管理情報Ｄ３０とステート管理情報Ｄ５０の値を更新する際のフローチャートである。まず，サーバ状態取得部１６０が，同期サーバ１０４−Ｂが有する宛先データベース毎の負荷状態の情報を取得する（Ｆ７０２）。該情報は，サーバ状態取得部１６０から同期サーバ１０４−Ｂに要求をだして取得しても良いし，同期サーバ１０４−Ｂからプッシュ形式で配信しても良い。次に，宛先管理情報Ｄ３０において，取得した宛先データベースと等しい宛先データベースＤ２４の負荷状態Ｄ３２の値を更新する（Ｆ７０４）。同様に，サーバ状態取得部１６０は，同期サーバ１０４−Ｂが有するステート毎の負荷状態の情報を取得し（Ｆ７０６），ステート管理情報Ｄ５０において，取得したステート名と等しいステート名Ｄ４２の負荷状態Ｄ５２の値を更新する（Ｆ７０８）。なお，宛先データベース毎の負荷状態とステート毎の負荷状態とは一度の通信で併せて取得しても良い。
【００８８】
実施例５のネットワークインタフェース１１０が端末１０２から要求を受信した際の中継装置１００−Ｅの詳細な動作を示すフローチャートは、実施例１の図９のフローチャートと次の点で異なる。実施例１のＦ２１４が、実施例１の図９のＦ２０６が負荷レベルＤ８６と平均応答時間とを比較する代わりに、実施例５では負荷レベルＤ８６と負荷状態Ｄ３２を比較する。また、実施例１の図９のＦ２１２の処理は行わない。それ以外は実施例１の図９の処理に等しくてよい。また，プロセッサ５０１が，プログラムを実行し，必要に応じて各装置と連携しながら，各処理部を実現する点も同様である。
【００８９】
図２４は，中継装置１００−Ｅが中継した要求に対する応答を同期サーバ１０４−Ｂから受信する際のフローチャートである。Ｆ５１６は，実施例１の図１２のＦ５０６で使用する平均応答時間Ｄ２８の代わりに，宛先管理情報Ｄ３０の負荷状態Ｄ３２を使用する。Ｆ５１８は，実施例１の図１２のＦ５０８で使用する平均応答時間Ｄ４４との代わりに，ステート管理情報Ｄ５０の負荷状態Ｄ５２を使用する。それ以外の処理は，実施例１の図１０，１１，１２の処理に等しくてよい。
【００９０】
以上，本実施例に拠れば，中継装置１００−Ｅが，データベース毎の同期サーバ１０４の処理能力と，各ステートのメッセージが同期サーバ１０４の処理に与える負荷の情報を，同期サーバ１０４から取得し，該情報を用いて同期サーバ１０４の輻輳を軽減させる輻輳制御機能を提供できる。
【００９１】
また，本実施形態は，実施例２，実施例３，実施例４と組み合わせることも可能である。
【図面の簡単な説明】
【００９２】
【図１】実施例１の輻輳制御装置の構成図の一例である。
【図２】実施例１の輻輳制御装置として使用する情報処理装置の構成図の一例である。
【図３】実施例１の記憶装置に格納された要求管理情報の構成図の一例である。
【図４】実施例１の記憶装置に格納された宛先管理情報の構成図の一例である。
【図５】実施例１の記憶装置に格納されたステート管理情報の構成図の一例である。
【図６】実施例１における端末１０２からの要求の構成図の一例である。
【図７】実施例１におけるサーバ装置からの応答の構成図の一例である。
【図８】実施例１の端末１０２，中継装置，同期サーバ１０４間の通信シーケンスの模式図の一例である。
【図９】実施例１の輻輳制御装置が端末１０２から受信する要求を処理するフローチャートの一例である。
【図１０】実施例１の輻輳制御装置がサーバ装置から受信する応答を処理するフローチャートの一例である。
【図１１】実施例１の輻輳制御装置がサーバ装置から受信する応答を処理する，図１０から続くフローチャートの一例である。
【図１２】実施例１の輻輳制御装置がサーバ装置の応答に負荷情報を追加する処理のフローチャートの一例である。
【図１３】実施例１の記憶装置に格納されたステート遷移表の構成図の一例である。
【図１４】実施例２の輻輳制御装置の構成図の一例である。
【図１５】実施例２の輻輳制御装置が端末１０２に送信する規制応答の構成図の一例である。
【図１６】実施例３の輻輳制御装置の構成図の一例である。
【図１７】実施例３における端末１０２からの要求の構成図の一例である。
【図１８】実施例４の輻輳制御装置の構成図の一例である。
【図１９】実施例５の輻輳制御装置の構成図の一例である。
【図２０】実施例５においてサーバ装置から受信する輻輳情報の構成図の一例である。
【図２１】実施例５の記憶装置に格納された宛先管理情報の構成図の一例である。
【図２２】実施例５の記憶装置に格納されたステート管理情報の構成図の一例である。
【図２３】実施例５の輻輳制御がサーバ装置の輻輳情報を更新する処理のフローチャートの一例である。
【図２４】実施例５の輻輳制御装置がサーバ装置からの応答を受信する処理のフローチャートの一例である。
【図２５】データの同期における通信の状態遷移の一例である。
【符号の説明】
【００９３】
１００：中継装置（実施例１），１００−Ｂ：中継装置（実施例２），１００−Ｃ：中継装置（実施例３），１００−Ｄ：中継装置（実施例４），１００−Ｅ：中継装置（実施例５），１０２：端末１０２，１０４：同期サーバ１０４（実施例１，２，３，４），１０４−Ｂ：同期サーバ１０４（実施例５），１１０：ネットワークインタフェース，１１２：ネットワークインタフェース，１１４：トラフィック中継部，１１６：負荷情報解析・変更部，１１８：暗号化・復号化部，１２０：要求規制判定・応答部，１２２：サーバ状態管理部，１２４：次回負荷レベル決定・応答変更部，１２８：レスポンスURI作成部，１３０：要求管理情報記憶部，１３２：ステート管理情報記憶部，１３４：宛先管理情報記憶部，１３６：クッキー解析・除去部，１３８：次回負荷レベル決定・クッキー追加部，１４０：通信路，１４２：通信路，１５０：中継遅延，１６０：サーバ状態取得部，Ｄ２０：宛先管理情報，Ｄ４０：ステート管理情報，Ｄ６０：ステート遷移表。
【図１】
2010171472.tif 000003
【図２】
2010171472.tif 000004
【図３】
2010171472.tif 000005
【図４】
2010171472.tif 000006
【図５】
2010171472.tif 000007
【図６】
2010171472.tif 000008
【図７】
2010171472.tif 000009
【図８】
2010171472.tif 000010
【図９】
2010171472.tif 000011
【図１０】
2010171472.tif 000012
【図１１】
2010171472.tif 000013
【図１２】
2010171472.tif 000014
【図１３】
2010171472.tif 000015
【図１４】
2010171472.tif 000016
【図１５】
2010171472.tif 000017
【図１６】
2010171472.tif 000018
【図１７】
2010171472.tif 000019
【図１８】
2010171472.tif 000020
【図１９】
2010171472.tif 000021
【図２０】
2010171472.tif 000022
【図２１】
2010171472.tif 000023
【図２２】
2010171472.tif 000024
【図２３】
2010171472.tif 000025
【図２４】
2010171472.tif 000026
【図２５】
2010171472.tif 000027