(57)【要約】【課題】中継装置の設置場所又は処理負荷を考慮して適切な負荷分散を可能とする技術を提供することを目的とする。【解決手段】端末が行う通信を中継する複数の中継装置及び前記端末にネットワークを介して接続される負荷分散装置であって、前記複数の中継装置の各々を識別する中継装置識別子と、前記複数の中継装置の各々の設置拠点を示す設置拠点情報と、前記複数の中継装置の各々の負荷を示す負荷情報とを記憶する記憶手段と、前記設置拠点情報又は前記負荷情報に基づいて、前記端末が行う通信を中継する中継装置を前記複数の中継装置から選択する選択手段と、前記選択手段により選択された中継装置の中継装置識別子を、前記端末に送信する送信手段と、を有する。【選択図】図７
2018085776.tif 000002
【特許請求の範囲】
【請求項１】
端末が行う通信を中継する複数の中継装置及び前記端末にネットワークを介して接続される負荷分散装置であって、
前記複数の中継装置の各々を識別する中継装置識別子と、前記複数の中継装置の各々の設置拠点を示す設置拠点情報と、前記複数の中継装置の各々の負荷を示す負荷情報とを記憶する記憶手段と、
前記設置拠点情報又は前記負荷情報に基づいて、前記端末が行う通信を中継する中継装置を前記複数の中継装置から選択する選択手段と、
前記選択手段により選択された中継装置の中継装置識別子を、前記端末に送信する送信手段と、
を有する負荷分散装置。
【請求項２】
前記選択手段は、
前記負荷分散装置の設置拠点から前記端末が存在するエリアを判断し、
前記端末が存在するエリア及び前記設置拠点情報に基づいて、前記端末が行う通信を中継する中継装置を前記複数の中継装置から選択する、請求項１に記載の負荷分散装置。
【請求項３】
前記選択手段は、
前記負荷情報に基づいて、同一の設置拠点に設置されている前記複数の中継装置から一の中継装置を選択する、請求項１又は２に記載の負荷分散装置。
【請求項４】
前記負荷情報と予め定められた閾値とに基づき、新たな中継装置の増設又は設置されている中継装置の減設を行う増減設手段を有する請求項１乃至３のいずれか一項に記載の負荷分散装置。
【請求項５】
前記選択手段は、
所定の設置拠点に設置されている前記複数の中継装置の各々の負荷が、予め定められた閾値を超えている場合、前記所定の設置拠点に新たな中継装置を増設するように前記増減設手段に指示し、増設された新たな中継装置を選択する、請求項４に記載の負荷分散装置。
【請求項６】
前記選択手段は、
所定の設置拠点に設置されている前記複数の中継装置の各々の負荷が、予め定められた閾値を超えている場合、前記所定の設置拠点とは異なる設置拠点に設置されている前記複数の中継装置のうち、予め定められた閾値以下である中継装置を選択する、請求項１乃至４のいずれか一項に記載の負荷分散装置。
【請求項７】
請求項１ないし６のうちいずれか１項に記載の負荷分散装置に接続される前記複数の中継装置におけるいずれかの中継装置として使用される中継装置。
【請求項８】
端末が行う通信を中継する複数の中継装置及び前記端末にネットワークを介して接続される負荷分散装置における負荷分散方法であって、
前記複数の中継装置の各々を識別する中継装置識別子と、前記複数の中継装置の各々の設置拠点を示す設置拠点情報と、前記複数の中継装置の各々の負荷を示す負荷情報とを記憶手段に記憶する記憶ステップと、
前記設置拠点情報又は前記負荷情報に基づいて、前記端末が行う通信を中継する中継装置を前記複数の中継装置から選択する選択ステップと、
前記選択ステップにより選択された中継装置の中継装置識別子を、前記端末に送信する送信ステップと、
を有する負荷分散方法。
【請求項９】
端末が行う通信を中継する複数の中継装置及び前記端末にネットワークを介して接続される負荷分散装置におけるプログラムであって、
負荷分散装置に、
前記複数の中継装置の各々を識別する中継装置識別子と、前記複数の中継装置の各々の設置拠点を示す設置拠点情報と、前記複数の中継装置の各々の負荷を示す負荷情報とを記憶手段に記憶する記憶ステップと、
前記設置拠点情報又は前記負荷情報に基づいて、前記端末が行う通信を中継する中継装置を前記複数の中継装置から選択する選択ステップと、
前記選択ステップにより選択された中継装置の中継装置識別子を、前記端末に送信する送信ステップと、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、負荷分散装置、中継装置、負荷分散方法及びプログラムに関する。
【背景技術】
【０００２】
２つの端末の間で直接通信を行うＰ２Ｐ通信技術が知られている。ここで、Ｐ２Ｐ通信技術を用いて端末間で通信を行う場合、端末が接続されているネットワークの構成によっては端末間で直接通信することができない場合がある。例えば、２つの端末がそれぞれ異なるプライベートネットワークに属している場合、ＮＡＴ（Network Address Translation）の仕様によってはパケットが破棄されてしまい、端末間で直接通信をすることが出来ない。
【０００３】
このような場合にＰ２Ｐ通信を可能とするため、パブリックネットワーク上に中継装置を設置し、端末間で行われるＰ２Ｐ通信を、中継装置を介して中継する技術が存在する。
【０００４】
しかしながら、端末間で映像又は音声のＰ２Ｐ通信を行う場合は一般的に大きな通信帯域が必要になる。従って、中継装置を介して映像又は音声のＰ２Ｐ通信を中継する場合は、中継装置の処理負荷が大きくなってしまう。さらに、中継装置の設置場所によっては、通信経路が長くなることで通信の遅延が大きくなり、Ｐ２Ｐ通信の長所であるリアルタイム性が損なわれることになる。
【０００５】
ここで、サーバの処理負荷の増加に対応する技術として、端末からのリクエストに対して、ハッシュ関数により算出された仮想ＩＤ（Identifier）に基づいて複数のサーバのいずれかにリクエストを振り分けることで負荷分散を行う負荷分散技術がある（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特許第５５４４５２４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、従来の負荷分散技術では、Ｐ２Ｐ通信の長所であるリアルタイム性を損なわないようにするために、中継装置の設置場所を考慮して負荷分散を行うことはできていなかった。また、映像又は音声のＰ２Ｐ通信が行われる場合に要求される、中継装置の処理負荷を考慮した負荷分散を行うことはできていなかった。
【０００８】
開示の技術は上記に鑑みてなされたものであって、中継装置の設置場所又は処理負荷を考慮して適切な負荷分散を可能とする技術を提供することを目的とする。
【課題を解決するための手段】
【０００９】
開示の技術は、端末が行う通信を中継する複数の中継装置及び前記端末にネットワークを介して接続される負荷分散装置であって、
前記複数の中継装置の各々を識別する中継装置識別子と、前記複数の中継装置の各々の設置拠点を示す設置拠点情報と、前記複数の中継装置の各々の負荷を示す負荷情報とを記憶する記憶手段と、
前記設置拠点情報又は前記負荷情報に基づいて、前記端末が行う通信を中継する中継装置を前記複数の中継装置から選択する選択手段と、
前記選択手段により選択された中継装置の中継装置識別子を、前記端末に送信する送信手段と、
を有する負荷分散装置を提供する。
【発明の効果】
【００１０】
開示の技術によれば、中継装置の設置場所又は処理負荷を考慮して適切な負荷分散を可能とする技術を提供することができる。
【図面の簡単な説明】
【００１１】
【図１】第一の実施の形態に係る通信システムの構成の一例を示す図である。
【図２】第一の実施の形態に係る負荷分散装置のハードウェア構成の一例を示す図である。
【図３】第一の実施の形態に係る負荷分散装置のソフトウェア構成の一例を示す図である。
【図４】中継装置情報テーブルの一例を示す図である。
【図５】負荷管理情報テーブルの一例を示す図である。
【図６】第一の実施の形態に係る中継装置のソフトウェア構成の一例を示す図である。
【図７】第一の実施の形態に係る中継装置を選択する処理手順の一例を示すフローチャートである。
【図８】第一の実施の形態に係る通信システムの処理手順の一例を示すシーケンス図である。
【図９】第一の実施の形態に係る中継装置を増設する処理手順の一例を示すフローチャートである。
【図１０】第一の実施の形態に係る中継装置を減設する処理手順の一例を示すフローチャートである。
【図１１】第一の実施の形態に係る中継装置を選択する処理手順（変形例１）の一例を示すフローチャートである。
【図１２】第一の実施の形態に係る中継装置を選択する処理手順（変形例２）の一例を示すフローチャートである。
【図１３】対象エリア管理テーブルの一例を示す図である。
【図１４】第二の実施の形態に係る中継装置を選択する処理手順の一例を示すフローチャートである。
【図１５】特定端末管理テーブルの一例を示す図である。
【図１６】第三の実施の形態に係る中継装置を選択する処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００１２】
［第一の実施の形態］
以下、図面を参照して実施の形態について説明する。各図面において、同一構成部分には同一符号を付し、重複した説明を省略する場合がある。
【００１３】
なお、以下の説明においてはＷｅｂＲＴＣ（Web Real-Time Communication）技術によるＰ２Ｐ通信を例として説明するが、第一の実施の形態に係る通信システムは、ＷｅｂＲＴＣ以外の技術を用いたＰ２Ｐ通信にも適用することができる。また、第一の実施の形態に係る通信システムは、Ｐ２Ｐ通信以外の通信にも適用することができる。
【００１４】
＜概要＞
図１は、第一の実施の形態に係る通信システムの構成の一例を示す図である。第一の実施の形態に係る通信システムは、サービス提供装置１０と、負荷分散装置（２０ａ、２０ｂ、２０ｃ）と、中継装置（３０ａ１、３０ａ２、３０ｂ１、３０ｂ２、３０ｃ１、３０ｃ２）と、端末（４０ａ、４０ｂ、４０ｃ）と、ＮＡＴ（６０ａ、６０ｂ、６０ｃ）とを有する。
【００１５】
以下の説明において、負荷分散装置（２０ａ、２０ｂ、２０ｃ）のうち任意の負荷分散装置は「負荷分散装置２０」と表す。中継装置（３０ａ１、３０ａ２、３０ｂ１、３０ｂ２、３０ｃ１、３０ｃ２）のうち任意の中継装置は「中継装置３０」と表す。端末（４０ａ、４０ｂ、４０ｃ）のうち任意の端末は「端末４０」と表す。ＮＡＴ（６０ａ、６０ｂ、６０ｃ）のうち任意のＮＡＴは「ＮＡＴ６０」と表す。
【００１６】
負荷分散装置（２０ａ、２０ｂ、２０ｃ）と、中継装置（３０ａ１、３０ａ２、３０ｂ１、３０ｂ２、３０ｃ１、３０ｃ２）と、ＮＡＴ（６０ａ、６０ｂ、６０ｃ）とは、それぞれ外部ネットワーク５０に接続されている。また、端末４０ａ及びＮＡＴ６０ａは内部ネットワーク７０ａに接続されており、端末４０ｂ及びＮＡＴ６０ｂは内部ネットワーク７０ｂに接続されており、端末４０ｃ及びＮＡＴ６０ｃは内部ネットワーク７０ｃに接続されている。また、負荷分散装置（２０ａ、２０ｂ、２０ｃ）は、専用のネットワークにより互いに通信できるように接続されている。
【００１７】
負荷分散装置２０ａと中継装置（３０ａ１、３０ａ２）とは、同一の拠点Ａに設置されている。同様に、負荷分散装置２０ｂと中継装置（３０ｂ１、３０ｂ２）とは、同一の拠点Ｂに設置されており、負荷分散装置２０ｃと中継装置（３０ｃ１、３０ｃ２）とは、同一の拠点Ｃに設置されている。なお、第一の実施の形態に係る通信システムは３つの拠点から構成されているが、例えば、１又は２つの拠点から構成されていてもよいし、４つ以上の拠点から構成されていてもよい。
【００１８】
端末４０ａとＮＡＴ６０ａとは、同一のエリアＡに存在している。同様に、端末４０ｂとＮＡＴ６０ｂとは、同一のエリアＢに存在しており、端末４０ｃとＮＡＴ６０ｃとは、同一のエリアＣに存在している。ここで、エリアＡ〜Ｃとは、世界全体のうちいずれかの地域を示している。また、エリアＡ〜Ｃにより、世界全体をカバーしているものとする。例えば、エリアＡはアジア及びオセアニアであり、エリアＢはヨーロッパ及びアフリカであり、エリアＣは北米及び南米であるというように区分するようにしてもよい。また、例えば、エリアＡは日本、韓国、中国・・・、エリアＢはイギリス、ドイツ、フランス・・・、エリアＣはアメリカ、カナダ、ブラジル・・・というように、国別に区分するようにしてもよい。
【００１９】
なお、図１は３つのエリアに区分されるように図示しているが、例えば、２つのエリアに区分されるようにしてもよいし、４つ以上のエリアに区分されるようにしてもよい。また、図１には各エリアの内部ネットワーク７０に１台ずつ端末４０が接続されているが、例えば、複数の端末４０が接続されるようにしてもよい。
【００２０】
内部ネットワーク７０ａ、内部ネットワーク７０ｂ及び内部ネットワーク７０ｃは物理的に切り離されており、端末４０ａ、端末４０ｂ及び端末４０ｃは互いに直接通信することが出来ない前提とする。従って、端末４０ａは、外部ネットワーク５０に接続されている装置と通信する場合、ＮＡＴ６０ａを介して通信を行う。同様に、端末４０ｂは、外部ネットワーク５０に接続されている装置と通信する場合、ＮＡＴ６０ｂを介して通信を行い、端末４０ｃは、外部ネットワーク５０に接続されている装置と通信する場合、ＮＡＴ６０ｃを介して通信を行う。
【００２１】
サービス提供装置１０は、ＷｅｂＲＴＣ技術によるＰ２Ｐ通信を用いたサービスを端末４０に対して提供する装置である。サービス提供装置１０は、例えばＷｅｂサーバである。サービス提供装置１０は、端末４０からのアクセスに対して、所定のサービスを実現するクライアントモジュール（例えば、ＪａｖａＳｃｒｉｐｔ（登録商標）含むＨＴＭＬファイル）を端末４０に送信する。端末４０は、受信したクライアントモジュールを実行して他の端末４０と通信を行うことで、Ｐ２Ｐ通信を用いたサービスを受けることができる。Ｐ２Ｐ通信を用いたサービスの具体例として、例えば、２つの端末４０の間で行われるビデオチャット、音声チャット、テキストチャットなどが挙げられる。
【００２２】
また、サービス提供装置１０が端末４０に送信するクライアントモジュールには、相手の端末４０との間の通信を中継するために用いられる中継装置３０を、負荷分散装置２０に問い合わせるコードが含まれている。これにより、当該クライアントモジュールを実行する端末４０は、プライベートネットワークに接続されている場合であっても、必要に応じて中継装置３０を介して相手の端末４０と通信を行うことが可能になる。
【００２３】
負荷分散装置２０は、端末４０からの問い合わせに対して、当該端末４０とＰ２Ｐ通信を行う相手の端末４０との間の通信を中継するのに最適な中継装置３０を選択する装置である。負荷分散装置２０は、負荷分散装置２０自身と同一の拠点に設置されている中継装置３０の中から、負荷の小さい中継装置３０を選択する。なお、負荷の小さい中継装置３０を選択することは例である。負荷の小さい中継装置３０に限らずに、負荷情報に基づいて一の中継装置３０を選択することとしてよい。
【００２４】
また、負荷分散装置（２０ａ、２０ｂ、２０ｃ）は、端末４０間で行われる通信とその通信を中継する中継装置３０とを対応させる情報を互いに共有（同期）する機能を有している。
【００２５】
また、負荷分散装置２０は、中継装置３０の負荷が大きい場合に中継装置３０の負荷を分散させるようにするため、同一拠点内に新たな中継装置３０の増設を行う機能を有している。さらに、負荷分散装置２０は、複数の中継装置３０の各々の負荷が小さい場合に、中継装置３０の運用コスト削減等を考慮して同一拠点内の中継装置３０の減設を行う機能を有している。
【００２６】
また、負荷分散装置（２０ａ、２０ｂ、２０ｃ）は、例えばＩＰ  Ａｎｙｃａｓｔ又はＤＮＳ（Domain Name System）ロードバランシング等の技術を用いて構成されており、端末４０から負荷分散装置２０への問い合わせは、端末４０が存在するエリアに近い拠点に設置されている負荷分散装置２０にルーティングされるよう構成されている。
【００２７】
例えば、拠点Ａは日本、拠点Ｃはアメリカであり、エリアＡはアジア及びオセアニア、エリアＣは北米及び南米であると仮定した場合を想定する。ＩＰ  Ａｎｙｃａｓｔ技術を用いた場合、負荷分散装置（２０ａ、２０ｂ、２０ｃ）の各々は、同一のＩＰアドレスを有する。この場合において、日本に存在する端末４０ａが負荷分散装置２０のＩＰアドレスを指定してアクセスすると、自動的に拠点Ａに設置されている負荷分散装置２０ａにルーティングされることになる。また、ブラジルに存在する端末４０ｃが負荷分散装置２０にアクセスすると、自動的に拠点Ｃに設置されている負荷分散装置２０ｃにルーティングされることになる。
【００２８】
これにより、負荷分散装置２０は、自身にアクセスする端末４０は自身の設置拠点に近いエリアに存在すると判断することができる。
【００２９】
ここで、「近い」とは、単に地図上の距離が近い場合に限られない。例えば、ルーティングのホップ数が少ない経路である場合、遅延が少ない経路である場合、帯域が広い経路である場合、通信品質が安定している経路である場合、及び経済的な経路である場合も含まれ得る。
【００３０】
中継装置３０は、端末４０の間で行われるＰ２Ｐ通信を中継する装置である。中継装置３０は、例えば、ＷｅｂＲＴＣ技術で用いられるＴＵＲＮ（Traversal Using Relays around NAT）サーバである。中継装置３０は、端末４０から通信を中継してほしい旨の要求を受けると、通信の中継に用いるＩＰアドレス及びポート番号を端末４０に伝える。端末４０は、相手の端末４０に送信するパケットを、中継装置３０から伝えられたＩＰアドレス及びポート番号宛に送信する。中継装置３０は、受信したパケットを通信相手の端末４０に転送することで、端末４０の間で行われる通信の中継を行う。
【００３１】
端末４０は、例えばＷｅｂブラウザを搭載したＰＣ（Personal Computer）、携帯電話、スマートフォン、又はタブレット端末等の通信機器である。端末４０は、サービス提供装置１０から受信するクライアントモジュールを動作させることで、相手の端末４０との間で所定のサービスを実現することができる。なお、端末４０は、サービス提供装置１０から受信するクライアントモジュールを実行可能であれば、どのような通信機器であってもよい。
【００３２】
ＮＡＴ６０は、内部ネットワーク７０と外部ネットワーク５０との境界点に設置され、内部ネットワーク７０で用いられるＩＰアドレスと外部ネットワーク５０で用いられるＩＰアドレスとを相互に変換する装置である。これにより、内部ネットワーク７０に接続されている端末４０から外部ネットワーク５０に接続されている装置への通信、及び、外部ネットワーク５０に接続されている装置から内部ネットワーク７０に接続されている端末４０への通信が可能になる。
【００３３】
外部ネットワーク５０は、いわゆるパブリックネットワークであり、例えばＬＡＮ、ＷＡＮ、又はインターネットである。
【００３４】
内部ネットワーク７０は、企業又は家庭内等で構築されるプライベートネットワークであり、例えばＬＡＮ、ＷＡＮである。
【００３５】
ここで、ＷｅｂＲＴＣ技術について簡単に説明する。ＷｅｂＲＴＣ技術は、２つの端末４０の間でＷｅｂブラウザを用いたＰ２Ｐ通信を行うことで、Ｗｅｂブラウザ間でリアルタイムなＰ２Ｐ通信を実現するための技術である。一般的に、Ｗｅｂブラウザを搭載した端末４０はプライベートネットワークに接続されており、２つの端末４０の間で直接通信することができないことが多い。従って、ＷｅｂＲＴＣ技術は、ＩＣＥ（Interactive Connectivity Establishment）手順を用いることで、端末４０がプライベートネットワークに接続されている場合であっても２つの端末４０の間で直接通信することを可能にしている。
【００３６】
具体的には、ＩＣＥ手順は、インターネット側に設置されるＳＴＵＮ（Session Traversal Utilities for NAT）サーバを用いて、ＮＡＴ６０により変換されたＩＰアドレス及びポート番号（すなわち、インターネット側から見えるＩＰアドレス及びポート番号）を端末４０に通知する仕組み、及び、インターネット側に設置されるＴＵＲＮサーバを用いてＰ２Ｐ通信を中継させる仕組みを提供する。これにより、ＷｅｂＲＴＣ技術は、２つの端末４０の間で直接通信させることを可能にしている。なお、ＩＣＥ手順の具体的な処理手順は、従来技術であるため説明は省略する。
【００３７】
次に、端末４０ａと端末４０ｂとの間でＷｅｂＲＴＣを用いたビデオチャットを行う場合を仮定し、第一の実施の形態に係る通信システムの動作概要について説明する。まず、端末４０ａの利用者は、端末４０ａをサービス提供装置１０に接続し、ビデオチャットを行うための処理内容が記述されているＨＴＭＬファイルを取得する。同様に、端末４０ｂの利用者も端末４０ｂをサービス提供装置１０に接続し、ビデオチャットを行うためのＨＴＭＬファイルを取得する。このＨＴＭＬファイルには、ＷｅｂＲＴＣで用いるＴＵＲＮサーバのＩＰアドレス及びポート番号（又は、ＵＲＬ及びポート番号）を負荷分散装置２０から取得するためのＪａｖａｓｃｒｉｐｔ（登録商標）が含まれている。
【００３８】
続いて、端末４０ａ及び端末４０ｂに搭載されているＷｅｂブラウザにより当該ＨＴＭＬファイルが実行される。端末４０ａは、ＨＴＭＬファイルに含まれているＪａｖａＳｃｒｉｐｔ（登録商標）により、負荷分散装置２０に対して端末４０ｂとの通信に用いる中継装置３０を問い合わせる。端末４０ａからの問い合わせ信号は、端末４０ａが存在するエリアに対応する拠点の負荷分散装置２０ａにルーティングされる。
【００３９】
負荷分散装置２０は、同一拠点内の複数の中継装置３０から適切な中継装置３０を選択して端末４０ａに通知する。
【００４０】
続いて、端末４０ｂは、端末４０ａと同様に、ＨＴＭＬファイルに記述されているＪａｖａＳｃｒｉｐｔ（登録商標）により、負荷分散装置２０に対して端末４０ａとの通信に用いる中継装置３０を問い合わせる。端末４０ｂからの問い合わせ信号は、端末４０ｂが存在するエリアに対応する拠点の負荷分散装置２０ｂにルーティングされる。
【００４１】
負荷分散装置２０は、端末４０の間で行われる通信とその通信を中継する中継装置３０とを対応させる情報を互いに共有（同期）するように構成されている。従って、端末４０ｂからの問い合わせを受けた負荷分散装置２０は、端末４０ｂからの要求に対して、端末４０ａに通知済みである中継装置３０を端末４０ｂに通知する。これは、ＴＵＲＮサーバを用いて通信を中継する場合、ＴＵＲＮプロトコルの仕様により、端末４０ａ及び端末４０ｂは同一のＴＵＲＮサーバを用いる必要があるためである。
【００４２】
＜ハードウェア構成＞
図２は、第一の実施の形態に係る負荷分散装置のハードウェア構成の一例を示す図である。第一の実施の形態に係る負荷分散装置２０は、ＣＰＵ１０１と、ＲＯＭ１０２と、ＲＡＭ１０３と、ＨＤＤ１０４と、操作部１０５と、表示部１０６と、ドライブ装置１０７と、ＮＩＣ（Network Interface card）１０８とを有する。
【００４３】
ＣＰＵ１０１は、負荷分散装置２０の全体制御を行うプロセッサである。ＣＰＵ１０１、ＨＤＤ１０４等に記憶されたオペレーティングシステム、アプリケーション、各種サービス等のプログラムを実行し、負荷分散装置２０の各種機能を実現する。ＲＯＭ１０２には、各種のプログラムやプログラムによって利用されるデータ等が記憶される。ＲＡＭ１０３は、プログラムをロードするための記憶領域や、ロードされたプログラムのワーク領域等として用いられる。ＨＤＤ１０４には、各種情報及びプログラム等が記憶される。
【００４４】
操作部１０５は、ユーザからの入力操作を受け付けるためのハードウェアであり、例えばキーボード又はマウスである。表示部１０６は、ユーザに向けた表示を行うハードウェアである。
【００４５】
ドライブ装置１０７は、プログラムを記録した記憶媒体１０９からプログラムを読み取る。ドライブ装置１０７によって読み取られたプログラムは、例えば、ＨＤＤ１０４にインストールされる。ＮＩＣ１０８は、負荷分散装置２０をネットワークに接続し、データの送受信を行うための通信インタフェースである。
【００４６】
なお、記憶媒体１０９とは、非一時的（non-transitory）な記憶媒体を言う。記憶媒体１０９の例としては、磁気記憶媒体、光ディスク、光磁気記憶媒体、不揮発性メモリなどがある。
【００４７】
サービス提供装置１０、中継装置３０、及び端末４０のハードウェア構成は、例えば図２と同一であるため説明は省略する。
【００４８】
なお、負荷分散装置２０及び中継装置３０に用いるハードウェアリソースとして、例えばクラウドサービスにより提供されるハードウェアリソースを用いるようにしてもよい。クラウドサービスによっては、サーバを作成するハードウェアリソースの拠点を指定可能であり、第一の実施の形態に係る通信システムで用いる負荷分散装置２０及び中継装置３０を容易に実現することが可能である。
【００４９】
＜ソフトウェア構成＞
（負荷分散装置）
図３は、第一の実施の形態に係る負荷分散装置のソフトウェア構成の一例を示す図である。第一の実施の形態に係る負荷分散装置２０は、通信手段２０１と、記憶手段２０２と、選択手段２０３と、負荷管理手段２０４と、増減設手段２０５と、同期手段２０６とを有する。これらの各手段は、負荷分散装置２０にインストールされた１以上のプログラムが、ＣＰＵ１０１に実行させる処理により実現され得る。
【００５０】
通信手段２０１は、ＮＩＣを介して、中継装置３０又は端末４０と通信を行う。
【００５１】
記憶手段２０２は、ＲＡＭ１０３、ＨＤＤ１０４、又は負荷分散装置２０にネットワークを介して接続される記憶装置等を用いて実現可能である。記憶手段２０２には、中継装置情報及び負荷管理情報が記憶される。中継装置情報は中継装置３０を管理するための情報である。負荷管理情報は、中継装置３０の負荷を管理する情報である。また、記憶手段２０２には、第一の実施の形態に係る通信システムに存在する全ての負荷分散装置２０の設置拠点が記憶されている。
【００５２】
図４は、中継装置情報テーブルの一例を示す図である。中継装置情報テーブルは、中継装置識別子と、設置拠点と、セッション識別子とを有する。
【００５３】
中継装置識別子は、中継装置３０を一意に識別するための識別子であり、例えば、中継装置３０のＩＰアドレス及びＴＵＲＮサーバが用いる通信ポートのポート番号（ＵＤＰ／ＴＣＰ：３４７８番）である。なお、中継装置識別子には、中継装置３０を一意に識別できるものであれば、他の識別子を用いるようにしてもよい。
【００５４】
設置拠点は、中継装置３０が設置されている地域である。セッション識別子は、２つの端末４０の間で行われる通信（セッション）を一意に識別するための識別子である。セッション識別子は、例えば、端末４０を一意に識別する端末識別子のペアで構成される。図４では、端末識別子をアルファベット一文字（Ａ、Ｂ、・・、Ｕ）で表現しているが、端末４０を一意に識別できるものであれば、他の識別子を用いてもよい。例えば端末４０のＩＰアドレス、端末４０の電話番号、端末４０に登録されたメールアドレス等を用いてもよい。
【００５５】
中継装置情報テーブルにて、中継装置識別子に対応させてセッション識別子を記憶させることで、どの中継装置３０が、どの端末４０とどの端末４０との間で行われる通信を中継する役割を与えられているかを管理することができる。例えば、図４では、「１９２．０．２．１５：３４７８」である中継装置識別子を有するレコードに、「Ａ−Ｂ」で表現されるセッション識別子が登録されている。これは、中継装置識別子が「１９２．０．２．１５：３４７８」である中継装置３０は、端末識別子がＡである端末４０と、端末識別子がＢである端末４０との間で行われる通信を中継する役割を与えられていることを示している。
【００５６】
図５は、負荷管理情報テーブルの一例を示す図である。負荷管理情報テーブルは、負荷分散装置２０と同一の設置拠点に存在する中継装置３０の負荷を管理するテーブルである。負荷管理情報テーブルは、中継装置識別子と負荷情報とを有する。
【００５７】
負荷情報は、中継装置３０の処理負荷であり、例えばＣＰＵ使用率である。なお、負荷情報には、中継装置３０の処理負荷を表す指標であれば他の指標を用いるようにしてもよい。
【００５８】
図３に戻り説明を続ける。
【００５９】
選択手段２０３は、通信に使用する中継装置３０の問い合わせ（以下、「中継装置問合せ要求」という）を端末４０から受信すると、中継装置情報テーブル及び負荷管理情報テーブルに記憶されている各種情報に基づいて、端末４０の通信を中継する中継装置３０を選択する。また、選択手段２０３は、選択した中継装置３０の中継装置識別子を端末４０に送信する。
【００６０】
負荷管理手段２０４は、負荷分散装置２０と同一の設置拠点に存在する複数の中継装置３０の各々に対して負荷の問い合わせを行い、問い合わせ結果を負荷管理情報テーブルに格納する。負荷管理手段２０４は、中継装置３０に対して、例えば定期的に負荷を問い合わせるようにしてもよいし、端末４０からの要求を受けたタイミングで負荷を問い合わせるようにしてもよい。
【００６１】
また、負荷管理手段２０４は、クラウドサービスを用いて中継装置３０が実装されている場合、中継装置３０の各々に対して直接負荷を問い合わせるのではなく、クラウドサービスにより提供されるＡＰＩ（Application Programming Interface）を介して負荷情報を問い合わせるようにしてもよい。
【００６２】
増減設手段２０５は、中継装置情報に管理されている中継装置３０の各々の負荷情報を読出し、予め設定されている所定の閾値に基づいて、新たな中継装置３０を増設する必要があるのか、又は、既に設置されている中継装置３０を減設するのが望ましいのかを判断する。
【００６３】
例えば、同一の設置拠点に設置されている全ての中継装置３０の処理負荷が所定の閾値以上（例えば、ＣＰＵ使用率が８０％）である場合、中継装置３０の増設が必要であると判断し、その設置拠点に中継装置３０を増設する。逆に、同一の設置拠点に設置されている全ての中継装置３０の処理負荷が所定の閾値以下（例えば、ＣＰＵ使用率が１０％以下）である場合、中継装置３０を減設するのが望ましいと判断し、その設置拠点に設置されている複数の中継装置３０のうち任意の一台を選択して減設する。
【００６４】
なお、増減設手段２０５は、未使用のハードウェアリソースに対して、ＯＳ、ミドルウェア、及び中継装置３０のアプリケーション等をインストールすることで、新たな中継装置３０を増設する。また、増減設手段２０５は、既に設置されている中継装置３０のアプリケーションを停止すると共に、ＯＳ、ミドルウェア、及び中継装置３０のアプリケーションを削除することで中継装置３０を減設する。なお、増減設手段２０５は、クラウドサービスを用いて中継装置３０が実装されている場合、クラウドサービスにより提供されるＡＰＩ（Application Programming Interface）を介して中継装置３０の増設又は減設を行ってもよい。
【００６５】
同期手段２０６は、２つの端末４０の間で行われる通信（セッション）とその通信を中継する中継装置３０とを対応させる情報を、負荷分散装置２０の間で共有（同期）させる。具体的には、同期手段２０６は、セッション識別子と、当該セッション識別子に対応する中継装置識別子とを他の負荷分散装置２０に送信することで同期を行う。
【００６６】
（中継装置）
図６は、第一の実施の形態に係る中継装置のソフトウェア構成の一例を示す図である。第一の実施の形態に係る中継装置３０は、中継手段４０１と、負荷計測手段４０２とを有する。これらの各手段は、中継装置３０にインストールされた１以上のプログラムが、ＣＰＵ１０１に実行させる処理により実現され得る。
【００６７】
中継手段４０１は、ＮＩＣを介して端末４０と通信を行うことで、２つの端末４０の間で行われる通信を中継する。
【００６８】
負荷計測手段４０２は、負荷分散装置２０からの問い合わせを受けて、問い合わせを受けた時点の中継装置３０の負荷を計測する。また、負荷計測手段４０２は、計測された値を負荷分散装置２０に応答する。計測する値は、例えば中継装置３０のＣＰＵ使用率である。なお、計測する値は、ＣＰＵ使用率に限らず、他の指標で表される値でもよい。
【００６９】
＜処理手順＞
図７は、第一の実施の形態に係る中継装置を選択する処理手順の一例を示すフローチャートである。図７を用いて、負荷分散装置２０が中継装置３０を選択する処理手順を説明する。
【００７０】
ステップＳ５０１で、選択手段２０３は、中継装置問合せ要求を端末４０から受信すると、中継装置問合せ要求を送信した端末４０自身の端末識別子と、当該端末４０の通信相手である端末４０の端末識別子とを中継装置問合せ要求から抽出してセッション識別子を生成する。続いて、選択手段２０３は、生成したセッション識別子を有するレコードが中継装置情報テーブルに存在するかを確認する。
【００７１】
生成したセッション識別子を有するレコードが中継装置情報テーブルに存在する場合は、選択手段２０３は、既に中継装置３０が割り当てられているセッションであると判断して、ステップＳ５０２の処理手順に進む。一方、生成したセッション識別子を有するレコードが中継装置情報テーブルに存在しない場合は、選択手段２０３は、新たに中継装置３０を割り当てる必要があるセッションであると判断して、ステップＳ５０３の処理手順に進む。
【００７２】
ステップＳ５０２で、選択手段２０３は、中継装置情報テーブルを検索し、ステップＳ５０１で生成したセッション識別子を有するレコードから中継装置識別子を抽出することで中継装置３０を選択する。
【００７３】
ステップＳ５０３で、選択手段２０３は、中継装置情報テーブル及び負荷管理情報テーブルを用いて、負荷分散装置２０と同一の設置拠点に存在する複数の中継装置３０のうち最も負荷の低い中継装置３０を選択し、選択した中継装置３０の中継装置識別子を、ステップＳ５０１で受信した中継装置問合せ要求の送信元である端末４０に送信する。
【００７４】
なお、第一の実施の形態に係る通信システムはＩＰ  Ａｎｙｃａｓｔ等の技術を用いている。これにより、選択手段２０３は、中継装置問合せ要求を送信した端末４０は、自身の設置拠点に近いエリアに存在すると判断することができる。従って、選択手段２０３は、ステップＳ５０３の処理手順において、自身と同一の設置拠点に設置されている中継装置３０のうち最も負荷の低い中継装置３０を選択するようにしている。
【００７５】
ステップＳ５０４で、選択手段２０３は、ステップＳ５０１で生成したセッション識別子を、中継装置情報テーブルのレコードのうち、ステップＳ５０３で選択された中継装置３０のレコードに格納する。
【００７６】
以上、選択手段２０３が、中継装置３０を選択する処理手順について説明した。続いて、図８を用いて、端末４０ａ及び端末４０ｂの各々が、通信に使用する中継装置３０を負荷分散装置２０に問い合わせて通信を開始するまでの処理手順を説明する。
【００７７】
図８は、第一の実施の形態に係る通信システムの処理手順の一例を示すシーケンス図である。なお、図８は、端末４０ａが端末４０ｂよりも先に負荷分散装置２０に対して中継装置３０の問い合わせを行った場合を想定したものであるが、端末４０ｂが端末４０ａよりも先に負荷分散装置２０に対して中継装置３０の問い合わせを行った場合も、同様の処理手順を適用することができる。
【００７８】
ステップＳ６０１で、端末４０ａは、負荷分散装置２０に対して中継装置問合せ要求を送信する。なお、中継装置問合せ要求には、端末４０ａ自身の端末識別子（Ａ）と、端末４０ａの通信相手である端末４０ｂの端末識別子（Ｂ）とが含まれている。なお、第一の実施の形態に係る通信システムは、エリアＡに存在する端末４０からのアクセスは、拠点Ａに設置されている負荷分散装置２０ａにルーティングされるように構成されている。従って、端末４０ａが送信した中継装置問合せ要求は、拠点Ａに設置されている負荷分散装置２０ａにルーティングされる。
【００７９】
ステップＳ６０２で、負荷分散装置２０ａの選択手段２０３は、図７で説明した処理手順により、端末４０ａが端末４０ｂと通信を行う際に用いる中継装置３０を選択する。
【００８０】
ステップＳ６０３で、負荷分散装置２０ａの選択手段２０３は、端末４０ａに対して、中継装置問合せ応答を送信する。中継装置問合せ要求には、ステップＳ６０２で選択された中継装置３０の中継装置識別子（１９２．０．２．１５：３４７８）が含まれている。
【００８１】
ステップＳ６０４で、負荷分散装置２０ａの同期手段２０６は、自身以外の全ての負荷分散装置２０にセッション識別子同期要求を送信する。セッション識別子同期要求には、ステップＳ６０２の処理にて中継装置情報テーブルに登録されたセッション識別子（Ａ−Ｂ）と、ステップＳ６０２の処理にて選択された中継装置３０の中継装置識別子（１９２．０．２．１５：３４７８）とが含まれている。
【００８２】
ステップＳ６０５で、負荷分散装置２０ｂの同期手段２０６は、受信したセッション識別子同期要求に含まれている中継装置識別子（１９２．０．２．１５：３４７８）を有するレコードが中継装置情報テーブルに存在するかを確認する。レコードが存在する場合、負荷分散装置２０ｂの同期手段２０６は、受信したセッション識別子（Ａ−Ｂ）を当該レコードに格納する。レコードが存在しない場合、負荷分散装置２０ｂの同期手段２０６は、中継装置情報テーブルに新たなレコードを追加する。また、負荷分散装置２０ｂの同期手段２０６は、受信したセッション識別子同期要求に含まれている中継装置識別子（１９２．０．２．１５：３４７８）と、受信したセッション識別子（Ａ−Ｂ）と、セッション識別子同期要求の送信元である負荷分散装置２０ａの設置拠点（拠点Ａ）とを当該レコードに格納する。負荷分散装置２０ａの設置拠点（拠点Ａ）は、記憶手段２０２に記憶されている情報から判断することができる。
【００８３】
ステップＳ６０６で、負荷分散装置２０ｂの同期手段２０６は、セッション識別子の同期が完了したことを負荷分散装置２０ａに伝えるために、セッション識別子同期完了応答を負荷分散装置２０ａに送信する。
【００８４】
ステップＳ６０７で、端末４０ｂは、負荷分散装置２０ｂに対して中継装置問合せ要求を送信する。中継装置問合せ要求には、端末４０ｂ自身の端末識別子（Ｂ）と、端末４０ｂの通信相手である端末４０ａの端末識別子（Ａ）とが含まれている。第一の実施の形態に係る通信システムは、エリアＢに存在する端末４０からのアクセスは、拠点Ｂに設置されている負荷分散装置２０ｂにルーティングされるように構成されている。従って、端末４０ｂが送信した中継装置問合せ要求は、拠点Ｂに設置されている負荷分散装置２０ｂにルーティングされる。
【００８５】
ステップＳ６０８で、負荷分散装置２０ｂの選択手段２０３は、図７で説明した処理手順により、端末４０ｂが端末４０ａと通信を行う際に用いる中継装置３０を選択する。なお、ステップＳ６０５の処理により、端末４０ａと端末４０ｂとの間の通信を示すセッション識別子は、既に中継装置情報テーブルに格納されている。従って、負荷分散装置２０ｂの選択手段２０３は、負荷分散装置２０ａから端末４０ａに通知された中継装置３０と同一の中継装置３０を選択することになる。
【００８６】
ステップＳ６０９で、負荷分散装置２０ｂの選択手段２０３は、端末４０ｂに対して、中継装置問合せ応答を送信する。中継装置問合せ要求には、ステップＳ６０８で選択された中継装置３０の中継装置識別子（１９２．０．２．１５：３４７８）が含まれている。
【００８７】
ステップＳ６１０及びステップＳ６１１で、端末４０ａ及び端末４０ｂは、中継装置識別子で指定されたＩＰアドレス及びポートに対し、ＴＵＲＮプロトコルで規定されている通信手順に従ってパケットを送信することで、中継装置３０との間でトンネルを確立する。中継装置３０は、端末４０ａから受信したデータ及び端末４０ｂから受信したデータを、それぞれ端末４０ｂ及び端末４０ａに転送することで、端末４０ａ及び端末４０ｂの間で行われる通信を中継する。
【００８８】
以上、端末４０ａ及び端末４０ｂの各々が、通信に使用する中継装置３０を負荷分散装置２０に問い合わせて通信を開始するまでの処理手順について説明した。続いて、図９を用いて、負荷分散装置２０が、中継装置３０を増設する処理手順について説明する。
【００８９】
図９は、第一の実施の形態に係る中継装置を増設する処理手順の一例を示すフローチャートである。なお、負荷分散装置２０の増減設手段２０５は、図９に示す処理手順を任意のタイミングで行うようにしてもよいし、定期的に行うようにしてもよい。
【００９０】
ステップＳ７０１で、増減設手段２０５は、負荷管理情報テーブルより、負荷分散装置２０と同一の拠点に設置されている複数の中継装置３０の各々の負荷を抽出する。続いて、増減設手段２０５は、抽出した負荷の平均値を算出することで平均負荷を求め、求めた平均負荷が閾値以上であるかを判断する。求めた平均負荷が閾値以上である場合、ステップＳ７０２の処理手順に進み、求めた平均負荷が閾値未満である場合、処理を終了する。
【００９１】
なお、増減設手段２０５は、平均負荷が閾値以上であるかを判断するのではなく、負荷分散装置２０と同一の拠点に設置されている全ての中継装置３０の各々の負荷が所定の閾値以上である場合にステップＳ７０２の処理手順に進むようにしてもよい。
【００９２】
ステップＳ７０２で、増減設手段２０５は、未使用のハードウェアリソースに対して、ＯＳ、ミドルウェア、中継装置３０のアプリケーション等をインストールすることで、負荷分散装置２０と同一の拠点に新たな中継装置３０を増設する。
【００９３】
ステップＳ７０３で、増減設手段２０５は、中継装置情報テーブルに新たなレコードを追加し、ステップＳ７０２で増設した中継装置３０の中継装置識別子及び設置拠点を当該レコードに格納する。また、増減設手段２０５は、負荷管理情報テーブルに新たなレコードを追加し、ステップＳ７０２で追加した中継装置３０の中継装置識別子を当該レコードに格納する。
【００９４】
以上、負荷分散装置２０が、中継装置３０を増設する処理手順について説明した。続いて、図１０を用いて負荷分散装置２０が、中継装置３０を減設する処理手順について説明する。
【００９５】
図１０は、第一の実施の形態に係る中継装置を減設する処理手順の一例を示すフローチャートである。なお、負荷分散装置２０の増減設手段２０５は、図１０に示す処理手順を任意のタイミングで行うようにしてもよいし、定期的に行うようにしてもよい。
【００９６】
ステップＳ８０１で、増減設手段２０５は、負荷管理情報テーブルより、負荷分散装置２０と同一の拠点に設置されている複数の中継装置３０の各々の負荷を抽出する。続いて、増減設手段２０５は、抽出した負荷の平均値を算出することで平均負荷を求め、求めた平均負荷が閾値以下であるかを判断する。求めた平均負荷が閾値以下である場合、ステップＳ８０２の処理手順に進み、求めた平均負荷が閾値を超えている場合、処理を終了する。
【００９７】
ステップＳ８０２で、増減設手段２０５は、負荷分散装置２０と同一の拠点に設置されている複数の中継装置３０の中から、減設対象とする中継装置３０を選択する。増減設手段２０５は、任意の中継装置３０を減設する中継装置３０として選択してもよいし、割り当てられているセッション識別子の数が最も少ない中継装置３０を、減設する中継装置３０として選択してもよい。
【００９８】
ステップＳ８０３で、増減設手段２０５は、中継装置情報テーブルより、減設する中継装置３０として選択された中継装置３０に割り当てられているセッション識別子が１つ以上存在するかを確認する。割り当てられているセッション識別子が１つ以上存在する場合は、割り当てられているセッション識別子がゼロになるまで待機する。当該中継装置３０が減設されることで、端末４０の間で行っている通信が切断されてしまう恐れがあるためである。割り当てられているセッション識別子がゼロである場合は、ステップＳ８０４の処理手順に進む。なお、増減設手段２０５は、ステップＳ８０３を処理手順を行わずに、強制的にステップＳ８０４の処理手順に進むようにしてもよい。
【００９９】
ステップＳ８０４で、増減設手段２０５は、中継装置３０のアプリケーションを停止すると共に、ＯＳ、ミドルウェア、及び中継装置３０のアプリケーションを削除することで、減設する中継装置３０として選択された中継装置３０を減設する。
【０１００】
以上、負荷分散装置２０が、中継装置３０を減設する処理手順について説明した。
【０１０１】
＜処理手順（変形例１）＞
ここで、第一の実施の形態の変形例１に係る処理手順について説明する。第一の実施の形態の変形例１に係る負荷分散装置２０は、端末４０から中継装置問合せ要求を受けた場合、負荷分散装置２０と同一の設置拠点に設置されている全ての中継装置３０の各々の負荷を確認する。確認の結果、全ての中継装置３０の各々の負荷（又は負荷の平均値）が所定の閾値を超える場合は、負荷分散装置２０と同一の設置拠点に新たな中継装置３０を増設し、増設された新たな中継装置３０を選択して端末４０に応答するようにする。
【０１０２】
以下、具体的な処理手順について図を用いて説明する。
【０１０３】
図１１は、第一の実施の形態に係る中継装置を選択する処理手順（変形例１）の一例を示すフローチャートである。図１１のステップＳ５０１乃至Ｓ５０４の処理手順は、図７と同一であるため説明は省略する。
【０１０４】
ステップＳ５１３で、選択手段２０３は、中継装置情報テーブル及び負荷管理情報テーブルを用いて、負荷分散装置２０と同一の設置拠点に設置されている全ての中継装置３０の各々の負荷を確認する。全ての中継装置３０の各々の負荷が所定の閾値を超えている場合、ステップＳ５１４の処理手順に進み、全ての中継装置３０の負荷のうち少なくとも１つ以上の中継装置３０の負荷が所定の閾値を超えていない場合は、ステップＳ５０３の処理手順に進む。
【０１０５】
ステップＳ５１４で、選択手段２０３は、増減設手段２０５に対して、中継装置３０の増設を指示する。指示を受けた増減設手段２０５は、未使用のハードウェアリソースに対して、ＯＳ、ミドルウェア、中継装置３０のアプリケーション等をインストールすることで、負荷分散装置２０と同一の拠点に新たな中継装置３０を増設する。また、増減設手段２０５は、中継装置情報テーブルに新たなレコードを追加する。
【０１０６】
ステップＳ５１５で、選択手段２０３は、ステップＳ５０１で生成したセッション識別子を、中継装置情報テーブルのレコードのうち、ステップＳ５１４で増設された中継装置３０のレコードに格納する。
【０１０７】
以上、第一の実施の形態の変形例１に係る処理手順について説明した。
【０１０８】
＜処理手順（変形例２）＞
続いて、第一の実施の形態の変形例２に係る処理手順について説明する。
【０１０９】
第一の実施の形態の変形例２に係る負荷分散装置２０は、端末４０から中継装置問合せ要求を受けた場合、負荷分散装置２０と同一の設置拠点に設置されている全ての中継装置３０の各々の負荷を確認する。確認の結果、全ての中継装置３０の各々の負荷（又は負荷の平均値）が所定の閾値を超える場合は、負荷分散装置２０と異なる設置拠点に設置されている複数の中継装置３０のうち、負荷が所定の閾値以下である中継装置３０を選択するようにする。
【０１１０】
以下、具体的な処理手順について図を用いて説明する。
【０１１１】
図１２は、第一の実施の形態に係る中継装置を選択する処理手順（変形例２）の一例を示すフローチャートである。図１２のステップＳ５０１乃至Ｓ５０４、及びステップＳ５１３の処理手順は、図７及び図１１と同一であるため説明は省略する。
【０１１２】
ステップＳ５２３で、選択手段２０３は、他の負荷分散装置２０に対して、負荷が所定の閾値以下である中継装置３０の中継装置識別子を問い合わせることで、他の設置拠点に存在する複数の中継装置３０の中から中継装置３０を選択する。
【０１１３】
なお、他の全ての負荷分散装置２０から、負荷が所定の閾値以下である中継装置３０が存在しない旨の応答を受けた場合、選択手段２０３は、図１１のステップＳ５１４に進むことで、新たな中継装置３０を増設するようにしてもよい。
【０１１４】
ステップＳ５２４で、選択手段２０３は、ステップＳ５０１で生成したセッション識別子を、中継装置情報テーブルのレコードのうち、ステップＳ５２３で選択された中継装置３０のレコードに格納する。
【０１１５】
以上、第一の実施の形態の変形例２に係る処理手順について説明した。
【０１１６】
＜効果＞
以上、第一の実施の形態に係る通信システムは、ＩＰ  Ａｎｙｃａｓｔ等の技術を用いることで、端末４０からの中継装置問合せ要求が、当該端末４０が存在するエリアに近い設置拠点に設置されている負荷分散装置２０に到達するようにした。また、端末４０からの中継装置問合せ要求を受信した負荷分散装置２０は、自身と同一の設置拠点に設置されている中継装置３０を選択するようにした。これにより、第一の実施の形態に係る通信システムは、通信の遅延が少なくなるような中継装置３０の選択が可能になり、中継装置３０の負荷分散を適切に行うことができる。また、第一の実施の形態に係る通信システムは、中継装置３０を選択する場合に、例えば、負荷の小さい中継装置３０を選択するようにした。これにより、第一の実施の形態に係る通信システムは、中継装置３０の負荷分散を適切に行うことができる。
【０１１７】
また、第一の実施の形態に係る通信システムは、負荷分散装置自身と同一の設置拠点に設置されている中継装置３０の負荷状態を監視し、負荷状態が閾値以上である場合に新たな中継装置３０を増設するようにした。また、第一の実施の形態に係る通信システムは、中継装置３０の負荷が閾値以下である場合に不要な中継装置３０を減設するようにした。これにより、必要な拠点と必要な時間に応じて動的に中継装置３０を稼働させることができ、予期不能な急激な負荷の増加や、時間帯による負荷の変化に対して柔軟に対応することができる。
【０１１８】
また、第一の実施の形態に係る通信システムは、クラウドサービスを利用して中継装置３０を増減設することができるようにした。これにより、必要最小限の中継装置３０のみを稼働させることが可能になり、運用コストを抑えることができる。
【０１１９】
また、第一の実施の形態に係る通信システムは、ＷｅｂＲＴＣを用いたサービスを受ける端末４０に対して、適切なＴＵＲＮサーバを通知するようにした。これにより、端末４０に配布されるクライアントモジュール及びクライアントモジュールを配布するサービス提供装置１０のプログラムに、予めＴＵＲＮサーバを設定しておく必要がなく、柔軟なサービス運用が可能になる。
【０１２０】
また、第一の実施の形態（変形例２）に係る通信システムは、負荷分散装置２０と同一の設置拠点に設置されている全ての中継装置３０の各々の負荷（又は負荷の平均値）が所定の閾値を超える場合、中継装置３０を増設するのではなく、当該負荷分散装置２０と異なる設置拠点に設置されている中継装置３０を選択することができるようにした。これにより、中継装置３０を増設する際に必要なコストを抑えることができる。
【０１２１】
［第二の実施の形態］
続いて、第二の実施の形態に係る通信システムについて説明する。第二の実施の形態に係る通信システムは、負荷分散装置２０が中継装置３０を選択する際、中継装置問合せ要求に含まれるＩＰアドレスから端末４０が存在するエリアを特定し、特定したエリアに対応する拠点に設置されている中継装置３０を選択するようにする。なお、第一の実施の形態と同一構成部分についての説明は省略する。また、特に言及しない点については、第一の実施の形態と同様でよい。
【０１２２】
図１３は、対象エリア管理テーブルの一例を示す図である。対象エリア管理テーブルは、記憶手段２０２に記憶される。対象エリア管理テーブルは、設置拠点と、対象エリア情報とを含む。対象エリア情報は、中継装置３０が、どのエリアに存在する端末４０の通信を中継するかを管理する情報である。例えば、図１３には、「拠点Ａ」に対応する対象エリア情報として、「日本、韓国、中国」が格納されている。すなわち、拠点Ａに設置されている中継装置３０は、日本、韓国、及び中国に存在する端末４０の通信を中継する役割を担うことになる。
【０１２３】
なお、対象エリア情報には、設置拠点との距離が概ね一定範囲にあるエリア、設置拠点とルーティングのホップ数が少ない経路で通信可能なエリア、設置拠点と遅延が少ない経路で通信可能なエリア、設置拠点と帯域が広い経路で通信可能なエリア、設置拠点と通信品質が安定している経路で通信可能なエリア、又は、設置拠点と経済的な経路で通信可能なエリアなどが設定されるようにするのが望ましい。これにより、通信を行う２つの端末４０のうち、少なくともいずれか一方の端末４０が設置されている地域に適切な地域に設置されている中継装置３０が選択されるようになり、中継装置３０を介した端末４０の間の通信が無駄に遠回りになることによる遅延の増加等を避けることができる。
【０１２４】
図１４は、第二の実施の形態に係る中継装置を選択する処理手順の一例を示すフローチャートである。図１４を用いて、負荷分散装置２０が中継装置３０を選択する処理手順を説明する。なお、ステップＳ５０１及びステップＳ５０２の処理手順は、図７と同一であるため説明は省略する。
【０１２５】
ステップＳ９０１で、選択手段２０３は、端末４０から受信した中継装置問合せ要求に含まれるヘッダ情報から、端末４０が存在するエリアを把握する。
【０１２６】
ここで、中継装置問合せ要求に含まれるヘッダ情報の一例として、ＩＰアドレスが挙げられる。ＩＰアドレスは国ごとに割り当て範囲がある程度決まっており、割り当てられている範囲はインターネット等に公開されている。従って、選択手段２０３は、中継装置問合せ要求のヘッダ情報に含まれるＩＰアドレスを用いて、中継装置問合せ要求を送信した端末４０がどのエリアに存在するのかを把握することが可能である。
【０１２７】
続いて、選択手段２０３は、エリア管理テーブル及び中継装置管理テーブルにより、端末４０が存在するエリアに対応する設置拠点を検索し、検索した設置拠点に設置されている中継装置３０を抽出する。
【０１２８】
ステップＳ９０２で、選択手段２０３は、負荷管理情報テーブルを用いて、ステップＳ９０１で抽出された中継装置３０のうち最も負荷の低い中継装置３０を選択し、選択した中継装置３０の中継装置識別子を、ステップＳ５０１で受信した中継装置問合せ要求の送信元である端末４０に送信する。
【０１２９】
なお、第一の実施の形態とは異なり、ステップＳ９０１の処理手順にて検索した設置拠点が、負荷分散装置２０自身の設置拠点とは一致しない場合が想定され得る。負荷分散装置２０自身が記憶している負荷管理情報テーブルには、負荷分散装置２０自身の設置拠点と異なる設置拠点に設置されている中継装置３０に関する情報が含まれていないため、選択手段２０３は処理を継続できない。従って、この場合は、ステップＳ９０１の処理手順にて検索した設置拠点に設置されている他の負荷分散装置２０にアクセスし、最も負荷の低い中継装置３０を他の負荷分散装置２０に選択させるようにしてもよい。
【０１３０】
ステップＳ９０３で、選択手段２０３は、ステップＳ５０１で生成したセッション識別子を、中継装置情報テーブルのレコードのうち、ステップＳ９０２で選択した中継装置３０のレコードに格納する。
【０１３１】
＜効果＞
以上、第二の実施の形態に係る通信システムは、各中継装置３０がどのエリアに存在する端末４０の通信を中継するかを管理するようにしたことで、端末４０からの中継装置問合せ要求に対して、当該端末４０が存在するエリアに近い設置拠点に設置されている中継装置３０を選択するようにした。これにより、第二の実施の形態に係る通信システムは、通信の遅延が少なくなるような中継装置３０の選択が可能になり、中継装置３０の負荷分散を適切に行うことができる。また、第二の実施の形態に係る通信システムは、中継装置３０を選択する場合に、負荷の小さい中継装置３０を選択するようにした。これにより、第二の実施の形態に係る通信システムは、中継装置３０の負荷分散を適切に行うことができる。
【０１３２】
［第三の実施の形態］
続いて、第三の実施の形態に係る通信システムについて説明する。第三の実施の形態に係る通信システムは、特定の端末４０からの中継装置問合せ要求に対して、予め定められた拠点の中継装置３０を選択するようにする。なお、第一の実施の形態と同一構成部分についての説明は省略する。また、特に言及しない点については、第一の実施の形態と同様でよい。
【０１３３】
図１５は、特定端末管理テーブルの一例を示す図である。特定端末管理テーブルは、記憶手段２０２に記憶される。特定端末管理テーブルは、設置拠点と、端末識別子とを含む。
【０１３４】
図１６は、第三の実施の形態に係る中継装置を選択する処理手順の一例を示すフローチャートである。図１６を用いて、第三の実施の形態に係る負荷分散装置２０が中継装置３０を選択する処理手順を説明する。なお、ステップＳ５０１及びステップＳ５０２の処理手順は、図７と同一であるため説明は省略する。
【０１３５】
ステップＳ１００１で、選択手段２０３は、端末４０から受信した中継装置問合せ要求に含まれる通信元の端末４０の端末識別子を抽出し、特定端末管理テーブルにより、抽出した端末識別子に対応する設置拠点を検索する。抽出した端末識別子が特定端末管理テーブルに登録されている場合、選択手段２０３は、中継装置管理テーブルにより、検索した設置拠点に設置されている中継装置３０を抽出し、ステップＳ１００２の処理手順に進む。抽出した端末識別子が特定端末管理テーブルに登録されていない場合、選択手段２０３は、図７のステップＳ５０３の処理手順、又は図１４のステップＳ９０１の処理手順に進む。
【０１３６】
ステップＳ１００２で、選択手段２０３は、負荷管理情報テーブルを用いて、ステップＳ１００１で抽出された中継装置３０のうち最も負荷の低い中継装置３０を選択し、選択した中継装置３０の中継装置識別子を、ステップＳ５０１で受信した中継装置問合せ要求の送信元である端末４０に送信する。
【０１３７】
なお、第一の実施の形態とは異なり、ステップＳ１００１の処理手順にて検索した設置拠点が、負荷分散装置２０自身の設置拠点と一致しない場合が想定され得る。負荷分散装置２０自身が記憶している負荷管理情報テーブルには、負荷分散装置２０自身の設置拠点と異なる設置拠点に設置されている中継装置３０に関する情報が含まれていないため、選択手段２０３は処理を継続できない。従って、この場合は、ステップＳ１００１の処理手順にて検索した設置拠点に設置されている他の負荷分散装置２０にアクセスし、最も負荷の低い中継装置３０を他の負荷分散装置２０に選択させるようにしてもよい。
【０１３８】
ステップＳ１００３で、選択手段２０３は、ステップＳ５０１で生成したセッション識別子を、中継装置情報テーブルのレコードのうち、ステップＳ１００２で選択した中継装置３０のレコードに格納する。
【０１３９】
＜効果＞
以上、第三の実施の形態に係る通信システムは、特定の端末４０からの中継装置問合せ要求に対して、予め定められた拠点の中継装置３０を選択するようにした。これにより、第三の実施の形態に係る通信システムは、特定の端末に対して予め設定された中継装置３０を割り当てることが可能になる。また、例えば、特定のクライアント専用のＴＵＲＮサーバを設置し、特定のクライアントが有する端末４０からの中継装置問合せ要求に対しては固定的なＴＵＲＮサーバを選択することが可能になる。これにより、一部のユーザニーズに対して柔軟なサービス展開を行うことができる。
【０１４０】
＜実施形態の補足＞
以上、上記複数の実施の形態において、選択手段２０３は、同一のセッションに対して同一の中継装置３０を選択するようにしたが、２つの端末４０の各々が存在するエリアが離れている場合は、異なる中継装置３０を選択するようにしてもよい。例えば、アメリカに存在する端末４０と日本に存在する端末４０との間でＰ２Ｐ通信が行われる場合において、選択手段２０３は、アメリカに存在する端末４０からの中継装置問合せ要求に対しては、拠点Ｃに設置されている中継装置３０を選択するようにし、日本に存在する端末４０からの中継装置問合せ要求に対しては、拠点Ａに設置されている中継装置３０を選択するようにしてもよい。現状のＴＵＲＮプロトコルでは、同一セッションに対しては同一のＴＵＲＮサーバを選択する必要があるが、今後、異なるＴＵＲＮサーバを選択することが可能になることも想定し得るためである。
【０１４１】
以上、上記複数の実施の形態においては、先に中継装置問合せ要求を受信した端末４０のエリアに応じて中継装置３０を選択するようにしたが、負荷分散装置２０は、端末４０ａ及び端末４０ｂの両方からの中継装置問合せ要求を受信するまで待機するようにして、端末４０ａ及び端末４０ｂのそれぞれのエリアの双方に対応する中継装置３０の中から最も負荷の低い中継装置３０を選択するようにしてもよい。
【０１４２】
以上、上記複数の実施の形態においては、端末４０は、他の端末４０との通信を終了する際に、負荷分散装置２０にその旨を通知するようにしてもよい。また、負荷分散装置２０は、当該通知を受けた場合、中継装置情報テーブルに格納されているセッション識別子を削除するようにしてもよい。
【０１４３】
以上、本発明は上記複数の実施の形態に限定されるものではなく、本発明の範囲内で種々の変形及び改良が可能である。
【０１４４】
以上、上記複数の実施の形態で述べたシーケンス及びフローチャートは、矛盾の無い限り順序を入れ替えてもよい。
【０１４５】
以上、上記複数の実施の形態の全部又は一部は、プログラムによって実装され得る。このプログラムは、記憶媒体に格納することができる。
【０１４６】
以上、上記複数の実施の形態において、ＩＰアドレスはヘッダ情報の一例であり、セッション識別子は通信識別子の一例である。
【０１４７】
明細書には下記の事項が開示されている。
（第１項）
端末が行う通信を中継する複数の中継装置及び前記端末にネットワークを介して接続される負荷分散装置であって、
前記複数の中継装置の各々を識別する中継装置識別子と、前記複数の中継装置の各々の設置拠点を示す設置拠点情報と、前記複数の中継装置の各々の負荷を示す負荷情報とを記憶する記憶手段と、
前記複数の中継装置の各々から前記負荷情報を収集して前記記憶手段に格納する負荷管理手段と、
前記端末からの要求を受けた場合に、前記設置拠点情報又は前記負荷情報に基づいて、前記端末が行う通信を中継する中継装置を前記複数の中継装置から選択する選択手段と、
前記選択手段により選択された中継装置の中継装置識別子を、前記要求を送信した前記端末に送信する送信手段と、
を有する負荷分散装置。
（第２項）
前記選択手段は、
前記端末からの前記要求に含まれるヘッダ情報、又は、当該負荷分散装置の設置拠点から前記端末が存在するエリアを判断し、
前記端末が存在するエリア及び前記設置拠点情報に基づいて、前記端末が行う通信を中継する中継装置を前記複数の中継装置から選択する、第１項に記載の負荷分散装置。
（第３項）
前記選択手段は、
前記負荷情報に基づいて、同一の設置拠点に設置されている前記複数の中継装置から一の中継装置を選択する、第１項又は第２項に記載の負荷分散装置。
（第４項）
前記負荷情報と予め定められた閾値とに基づき、新たな中継装置の増設又は設置されている中継装置の減設を行う増減設手段を有する第１項乃至第３項のいずれか一項に記載の負荷分散装置。
（第５項）
前記選択手段は、
所定の設置拠点に設置されている前記複数の中継装置の各々の負荷が、予め定められた閾値を超えている場合、前記所定の設置拠点に新たな中継装置を増設するように前記増減設手段に指示し、増設された新たな中継装置を選択する、第４項に記載の負荷分散装置。
（第６項）
前記選択手段は、
所定の設置拠点に設置されている前記複数の中継装置の各々の負荷が、予め定められた閾値を超えている場合、前記所定の設置拠点とは異なる設置拠点に設置されている前記複数の中継装置のうち、予め定められた閾値以下である中継装置を選択する、第１項乃至第４項のいずれか一項に記載の負荷分散装置。
（第７項）
前記記憶手段は、前記端末の通信を識別する通信識別子を中継装置識別子に対応させて記憶し、
前記選択手段は、
前記端末からの前記要求を受けた場合において、前記端末からの前記要求に含まれる前記通信識別子が前記記憶手段に格納されている場合は、当該通信識別子に対応する中継装置識別子により識別される中継装置を選択し、前記端末からの前記要求に含まれる前記通信識別子が前記記憶手段に格納されていない場合は、前記端末が行う通信を中継する中継装置を前記複数の中継装置から選択し、前記端末からの前記要求に含まれる前記通信識別子を、選択した中継装置の中継装置識別子に対応させて前記記憶手段に格納する、第１項乃至第６項のいずれか一項に記載の負荷分散装置。
（第８項）
前記記憶手段に格納される前記通信識別子と、当該通信識別子に対応する前記中継装置の中継装置識別子とを、当該負荷分散装置とは異なる他の負荷分散装置に送信する、同期手段を有する第７項に記載の負荷分散装置。
（第９項）
前記同期手段は、前記他の負荷分散装置から前記通信識別子と前記中継装置の中継装置識別子とを受信した場合に、受信した前記通信識別子を、受信した中継装置識別子が示す前記中継装置に対応させて前記記憶手段に格納する、第８項に記載の負荷分散装置。
（第１０項）
前記記憶手段は、前記端末を識別する端末識別子と前記設置拠点情報とを対応させて記憶し、
前記選択手段は、前記端末からの前記要求を受けた場合において、前記端末からの前記要求に含まれる前記端末識別子が前記記憶手段に格納されている場合、当該端末識別子に対応する設置拠点に設置されている中継装置を抽出し、前記負荷情報に基づき、前記端末が行う通信を中継する中継装置を前記抽出した中継装置から選択する、第１項乃至第９項のいずれか一項に記載の負荷分散装置。
（第１１項）
端末が行う通信を中継する複数の中継装置及び前記端末にネットワークを介して接続される負荷分散装置における負荷分散方法であって、
前記複数の中継装置の各々を識別する中継装置識別子と、前記複数の中継装置の各々の設置拠点を示す設置拠点情報と、前記複数の中継装置の各々の負荷を示す負荷情報とを記憶手段に記憶する記憶ステップと、
前記複数の中継装置の各々から前記負荷情報を収集して前記記憶手段に格納する負荷管理ステップと、
前記端末からの要求を受けた場合に、前記設置拠点情報又は前記負荷情報に基づいて、前記端末が行う通信を中継する中継装置を前記複数の中継装置から選択する選択ステップと、
前記選択ステップにより選択された中継装置の中継装置識別子を、前記要求を送信した前記端末に送信する送信ステップと、
を有する負荷分散方法。
（第１２項）
端末が行う通信を中継する複数の中継装置及び前記端末にネットワークを介して接続される負荷分散装置におけるプログラムであって、
負荷分散装置に、
前記複数の中継装置の各々を識別する中継装置識別子と、前記複数の中継装置の各々の設置拠点を示す設置拠点情報と、前記複数の中継装置の各々の負荷を示す負荷情報とを記憶手段に記憶する記憶ステップと、
前記複数の中継装置の各々から前記負荷情報を収集して前記記憶手段に格納する負荷管理ステップと、
前記端末からの要求を受けた場合に、前記設置拠点情報又は前記負荷情報に基づいて、前記端末が行う通信を中継する中継装置を前記複数の中継装置から選択する選択ステップと、
前記選択ステップにより選択された中継装置の中継装置識別子を、前記要求を送信した前記端末に送信する送信ステップと、
を実行させるためのプログラム。
【０１４８】
本特許出願は２０１４年１２月２４日に出願した日本国特許出願第２０１４−２６０２９７号に基づきその優先権を主張するものであり、日本国特許出願第２０１４−２６０２９７号の全内容を本願に援用する。
【符号の説明】
【０１４９】
１０  サービス提供装置
２０  負荷分散装置
３０  中継装置
４０  端末
５０  外部ネットワーク
６０  ＮＡＴ
７０  内部ネットワーク
２０１  通信手段
２０２  記憶手段
２０３  選択手段
２０４  負荷管理手段
２０５  増減設手段
２０６  同期手段
４０１  中継手段
４０２  負荷計測手段
【図１】
2018085776.tif 000003
【図２】
2018085776.tif 000004
【図３】
2018085776.tif 000005
【図４】
2018085776.tif 000006
【図５】
2018085776.tif 000007
【図６】
2018085776.tif 000008
【図７】
2018085776.tif 000009
【図８】
2018085776.tif 000010
【図９】
2018085776.tif 000011
【図１０】
2018085776.tif 000012
【図１１】
2018085776.tif 000013
【図１２】
2018085776.tif 000014
【図１３】
2018085776.tif 000015
【図１４】
2018085776.tif 000016
【図１５】
2018085776.tif 000017
【図１６】
2018085776.tif 000018