JP6291085B2 - 負荷分散装置、負荷分散方法及びプログラム - Google Patents

負荷分散装置、負荷分散方法及びプログラム Download PDF

Info

Publication number
JP6291085B2
JP6291085B2 JP2016566409A JP2016566409A JP6291085B2 JP 6291085 B2 JP6291085 B2 JP 6291085B2 JP 2016566409 A JP2016566409 A JP 2016566409A JP 2016566409 A JP2016566409 A JP 2016566409A JP 6291085 B2 JP6291085 B2 JP 6291085B2
Authority
JP
Japan
Prior art keywords
terminal
load
relay
relay device
identifier
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.)
Active
Application number
JP2016566409A
Other languages
English (en)
Other versions
JPWO2016104537A1 (ja
Inventor
聡哉 中蔵
聡哉 中蔵
奨 山村
奨 山村
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.)
NTT Communications Corp
Original Assignee
NTT Communications Corp
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 NTT Communications Corp filed Critical NTT Communications Corp
Publication of JPWO2016104537A1 publication Critical patent/JPWO2016104537A1/ja
Application granted granted Critical
Publication of JP6291085B2 publication Critical patent/JP6291085B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • H04L47/125Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • 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]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • 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]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0805Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
    • H04L43/0817Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability by checking functioning
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/24Multipath
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/7453Address table lookup; Address filtering using hashing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1027Persistence of sessions during load balancing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/16Threshold monitoring
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1008Server selection for load balancing based on parameters of servers, e.g. available memory or workload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1029Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers using data related to the state of servers by a load balancer

Description

本発明は、負荷分散装置、負荷分散方法及びプログラムに関する。
2つの端末の間で直接通信を行うP2P通信技術が知られている。ここで、P2P通信技術を用いて端末間で通信を行う場合、端末が接続されているネットワークの構成によっては端末間で直接通信することができない場合がある。例えば、2つの端末がそれぞれ異なるプライベートネットワークに属している場合、NAT(Network Address Translation)の仕様によってはパケットが破棄されてしまい、端末間で直接通信をすることが出来ない。
このような場合にP2P通信を可能とするため、パブリックネットワーク上に中継装置を設置し、端末間で行われるP2P通信を、中継装置を介して中継する技術が存在する。
しかしながら、端末間で映像又は音声のP2P通信を行う場合は一般的に大きな通信帯域が必要になる。従って、中継装置を介して映像又は音声のP2P通信を中継する場合は、中継装置の処理負荷が大きくなってしまう。さらに、中継装置の設置場所によっては、通信経路が長くなることで通信の遅延が大きくなり、P2P通信の長所であるリアルタイム性が損なわれることになる。
ここで、サーバの処理負荷の増加に対応する技術として、端末からのリクエストに対して、ハッシュ関数により算出された仮想ID(Identifier)に基づいて複数のサーバのいずれかにリクエストを振り分けることで負荷分散を行う負荷分散技術がある(例えば、特許文献1参照)。
特許第5544524号公報
しかしながら、従来の負荷分散技術では、P2P通信の長所であるリアルタイム性を損なわないようにするために、中継装置の設置場所を考慮して負荷分散を行うことはできていなかった。また、映像又は音声のP2P通信が行われる場合に要求される、中継装置の処理負荷を考慮した負荷分散を行うことはできていなかった。
開示の技術は上記に鑑みてなされたものであって、中継装置の設置場所又は処理負荷を考慮して適切な負荷分散を可能とする技術を提供することを目的とする。
開示の技術は、端末が行う通信を中継する複数の中継装置及び前記端末にネットワークを介して接続される負荷分散装置であって、前記複数の中継装置の各々を識別する中継装置識別子と、前記複数の中継装置の各々の設置拠点を示す設置拠点情報と、前記複数の中継装置の各々の負荷を示す負荷情報とを記憶する記憶手段と、前記複数の中継装置の各々から前記負荷情報を収集して前記記憶手段に格納する負荷管理手段と、前記端末からの要求を受けた場合に、前記設置拠点情報又は前記負荷情報に基づいて、前記端末が行う通信を中継する中継装置を前記複数の中継装置から選択する選択手段と、前記選択手段により選択された中継装置の中継装置識別子を、前記要求を送信した前記端末に送信する送信手段と、を有する負荷分散装置を提供する。
開示の技術によれば、中継装置の設置場所又は処理負荷を考慮して適切な負荷分散を可能とする技術を提供することができる。
第一の実施の形態に係る通信システムの構成の一例を示す図である。 第一の実施の形態に係る負荷分散装置のハードウェア構成の一例を示す図である。 第一の実施の形態に係る負荷分散装置のソフトウェア構成の一例を示す図である。 中継装置情報テーブルの一例を示す図である。 負荷管理情報テーブルの一例を示す図である。 第一の実施の形態に係る中継装置のソフトウェア構成の一例を示す図である。 第一の実施の形態に係る中継装置を選択する処理手順の一例を示すフローチャートである。 第一の実施の形態に係る通信システムの処理手順の一例を示すシーケンス図である。 第一の実施の形態に係る中継装置を増設する処理手順の一例を示すフローチャートである。 第一の実施の形態に係る中継装置を減設する処理手順の一例を示すフローチャートである。 第一の実施の形態に係る中継装置を選択する処理手順(変形例1)の一例を示すフローチャートである。 第一の実施の形態に係る中継装置を選択する処理手順(変形例2)の一例を示すフローチャートである。 対象エリア管理テーブルの一例を示す図である。 第二の実施の形態に係る中継装置を選択する処理手順の一例を示すフローチャートである。 特定端末管理テーブルの一例を示す図である。 第三の実施の形態に係る中継装置を選択する処理手順の一例を示すフローチャートである。
[第一の実施の形態]
以下、図面を参照して実施の形態について説明する。各図面において、同一構成部分には同一符号を付し、重複した説明を省略する場合がある。
なお、以下の説明においてはWebRTC(Web Real-Time Communication)技術によるP2P通信を例として説明するが、第一の実施の形態に係る通信システムは、WebRTC以外の技術を用いたP2P通信にも適用することができる。また、第一の実施の形態に係る通信システムは、P2P通信以外の通信にも適用することができる。
<概要>
図1は、第一の実施の形態に係る通信システムの構成の一例を示す図である。第一の実施の形態に係る通信システムは、サービス提供装置10と、負荷分散装置(20a、20b、20c)と、中継装置(30a、30a、30b、30b、30c、30c)と、端末(40a、40b、40c)と、NAT(60a、60b、60c)とを有する。
以下の説明において、負荷分散装置(20a、20b、20c)のうち任意の負荷分散装置は「負荷分散装置20」と表す。中継装置(30a、30a、30b、30b、30c、30c)のうち任意の中継装置は「中継装置30」と表す。端末(40a、40b、40c)のうち任意の端末は「端末40」と表す。NAT(60a、60b、60c)のうち任意のNATは「NAT60」と表す。
負荷分散装置(20a、20b、20c)と、中継装置(30a、30a、30b、30b、30c、30c)と、NAT(60a、60b、60c)とは、それぞれ外部ネットワーク50に接続されている。また、端末40a及びNAT60aは内部ネットワーク70aに接続されており、端末40b及びNAT60bは内部ネットワーク70bに接続されており、端末40c及びNAT60cは内部ネットワーク70cに接続されている。また、負荷分散装置(20a、20b、20c)は、専用のネットワークにより互いに通信できるように接続されている。
負荷分散装置20aと中継装置(30a、30a)とは、同一の拠点Aに設置されている。同様に、負荷分散装置20bと中継装置(30b、30b)とは、同一の拠点Bに設置されており、負荷分散装置20cと中継装置(30c、30c)とは、同一の拠点Cに設置されている。なお、第一の実施の形態に係る通信システムは3つの拠点から構成されているが、例えば、1又は2つの拠点から構成されていてもよいし、4つ以上の拠点から構成されていてもよい。
端末40aとNAT60aとは、同一のエリアAに存在している。同様に、端末40bとNAT60bとは、同一のエリアBに存在しており、端末40cとNAT60cとは、同一のエリアCに存在している。ここで、エリアA〜Cとは、世界全体のうちいずれかの地域を示している。また、エリアA〜Cにより、世界全体をカバーしているものとする。例えば、エリアAはアジア及びオセアニアであり、エリアBはヨーロッパ及びアフリカであり、エリアCは北米及び南米であるというように区分するようにしてもよい。また、例えば、エリアAは日本、韓国、中国・・・、エリアBはイギリス、ドイツ、フランス・・・、エリアCはアメリカ、カナダ、ブラジル・・・というように、国別に区分するようにしてもよい。
なお、図1は3つのエリアに区分されるように図示しているが、例えば、2つのエリアに区分されるようにしてもよいし、4つ以上のエリアに区分されるようにしてもよい。また、図1には各エリアの内部ネットワーク70に1台ずつ端末40が接続されているが、例えば、複数の端末40が接続されるようにしてもよい。
内部ネットワーク70a、内部ネットワーク70b及び内部ネットワーク70cは物理的に切り離されており、端末40a、端末40b及び端末40cは互いに直接通信することが出来ない前提とする。従って、端末40aは、外部ネットワーク50に接続されている装置と通信する場合、NAT60aを介して通信を行う。同様に、端末40bは、外部ネットワーク50に接続されている装置と通信する場合、NAT60bを介して通信を行い、端末40cは、外部ネットワーク50に接続されている装置と通信する場合、NAT60cを介して通信を行う。
サービス提供装置10は、WebRTC技術によるP2P通信を用いたサービスを端末40に対して提供する装置である。サービス提供装置10は、例えばWebサーバである。サービス提供装置10は、端末40からのアクセスに対して、所定のサービスを実現するクライアントモジュール(例えば、JavaScript(登録商標)含むHTMLファイル)を端末40に送信する。端末40は、受信したクライアントモジュールを実行して他の端末40と通信を行うことで、P2P通信を用いたサービスを受けることができる。P2P通信を用いたサービスの具体例として、例えば、2つの端末40の間で行われるビデオチャット、音声チャット、テキストチャットなどが挙げられる。
また、サービス提供装置10が端末40に送信するクライアントモジュールには、相手の端末40との間の通信を中継するために用いられる中継装置30を、負荷分散装置20に問い合わせるコードが含まれている。これにより、当該クライアントモジュールを実行する端末40は、プライベートネットワークに接続されている場合であっても、必要に応じて中継装置30を介して相手の端末40と通信を行うことが可能になる。
負荷分散装置20は、端末40からの問い合わせに対して、当該端末40とP2P通信を行う相手の端末40との間の通信を中継するのに最適な中継装置30を選択する装置である。負荷分散装置20は、負荷分散装置20自身と同一の拠点に設置されている中継装置30の中から、負荷の小さい中継装置30を選択する。なお、負荷の小さい中継装置30を選択することは例である。負荷の小さい中継装置30に限らずに、負荷情報に基づいて一の中継装置30を選択することとしてよい。
また、負荷分散装置(20a、20b、20c)は、端末40間で行われる通信とその通信を中継する中継装置30とを対応させる情報を互いに共有(同期)する機能を有している。
また、負荷分散装置20は、中継装置30の負荷が大きい場合に中継装置30の負荷を分散させるようにするため、同一拠点内に新たな中継装置30の増設を行う機能を有している。さらに、負荷分散装置20は、複数の中継装置30の各々の負荷が小さい場合に、中継装置30の運用コスト削減等を考慮して同一拠点内の中継装置30の減設を行う機能を有している。
また、負荷分散装置(20a、20b、20c)は、例えばIP Anycast又はDNS(Domain Name System)ロードバランシング等の技術を用いて構成されており、端末40から負荷分散装置20への問い合わせは、端末40が存在するエリアに近い拠点に設置されている負荷分散装置20にルーティングされるよう構成されている。
例えば、拠点Aは日本、拠点Cはアメリカであり、エリアAはアジア及びオセアニア、エリアCは北米及び南米であると仮定した場合を想定する。IP Anycast技術を用いた場合、負荷分散装置(20a、20b、20c)の各々は、同一のIPアドレスを有する。この場合において、日本に存在する端末40aが負荷分散装置20のIPアドレスを指定してアクセスすると、自動的に拠点Aに設置されている負荷分散装置20aにルーティングされることになる。また、ブラジルに存在する端末40cが負荷分散装置20にアクセスすると、自動的に拠点Cに設置されている負荷分散装置20cにルーティングされることになる。
これにより、負荷分散装置20は、自身にアクセスする端末40は自身の設置拠点に近いエリアに存在すると判断することができる。
ここで、「近い」とは、単に地図上の距離が近い場合に限られない。例えば、ルーティングのホップ数が少ない経路である場合、遅延が少ない経路である場合、帯域が広い経路である場合、通信品質が安定している経路である場合、及び経済的な経路である場合も含まれ得る。
中継装置30は、端末40の間で行われるP2P通信を中継する装置である。中継装置30は、例えば、WebRTC技術で用いられるTURN(Traversal Using Relays around NAT)サーバである。中継装置30は、端末40から通信を中継してほしい旨の要求を受けると、通信の中継に用いるIPアドレス及びポート番号を端末40に伝える。端末40は、相手の端末40に送信するパケットを、中継装置30から伝えられたIPアドレス及びポート番号宛に送信する。中継装置30は、受信したパケットを通信相手の端末40に転送することで、端末40の間で行われる通信の中継を行う。
端末40は、例えばWebブラウザを搭載したPC(Personal Computer)、携帯電話、スマートフォン、又はタブレット端末等の通信機器である。端末40は、サービス提供装置10から受信するクライアントモジュールを動作させることで、相手の端末40との間で所定のサービスを実現することができる。なお、端末40は、サービス提供装置10から受信するクライアントモジュールを実行可能であれば、どのような通信機器であってもよい。
NAT60は、内部ネットワーク70と外部ネットワーク50との境界点に設置され、内部ネットワーク70で用いられるIPアドレスと外部ネットワーク50で用いられるIPアドレスとを相互に変換する装置である。これにより、内部ネットワーク70に接続されている端末40から外部ネットワーク50に接続されている装置への通信、及び、外部ネットワーク50に接続されている装置から内部ネットワーク70に接続されている端末40への通信が可能になる。
外部ネットワーク50は、いわゆるパブリックネットワークであり、例えばLAN、WAN、又はインターネットである。
内部ネットワーク70は、企業又は家庭内等で構築されるプライベートネットワークであり、例えばLAN、WANである。
ここで、WebRTC技術について簡単に説明する。WebRTC技術は、2つの端末40の間でWebブラウザを用いたP2P通信を行うことで、Webブラウザ間でリアルタイムなP2P通信を実現するための技術である。一般的に、Webブラウザを搭載した端末40はプライベートネットワークに接続されており、2つの端末40の間で直接通信することができないことが多い。従って、WebRTC技術は、ICE(Interactive Connectivity Establishment)手順を用いることで、端末40がプライベートネットワークに接続されている場合であっても2つの端末40の間で直接通信することを可能にしている。
具体的には、ICE手順は、インターネット側に設置されるSTUN(Session Traversal Utilities for NAT)サーバを用いて、NAT60により変換されたIPアドレス及びポート番号(すなわち、インターネット側から見えるIPアドレス及びポート番号)を端末40に通知する仕組み、及び、インターネット側に設置されるTURNサーバを用いてP2P通信を中継させる仕組みを提供する。これにより、WebRTC技術は、2つの端末40の間で直接通信させることを可能にしている。なお、ICE手順の具体的な処理手順は、従来技術であるため説明は省略する。
次に、端末40aと端末40bとの間でWebRTCを用いたビデオチャットを行う場合を仮定し、第一の実施の形態に係る通信システムの動作概要について説明する。まず、端末40aの利用者は、端末40aをサービス提供装置10に接続し、ビデオチャットを行うための処理内容が記述されているHTMLファイルを取得する。同様に、端末40bの利用者も端末40bをサービス提供装置10に接続し、ビデオチャットを行うためのHTMLファイルを取得する。このHTMLファイルには、WebRTCで用いるTURNサーバのIPアドレス及びポート番号(又は、URL及びポート番号)を負荷分散装置20から取得するためのJavascript(登録商標)が含まれている。
続いて、端末40a及び端末40bに搭載されているWebブラウザにより当該HTMLファイルが実行される。端末40aは、HTMLファイルに含まれているJavaScript(登録商標)により、負荷分散装置20に対して端末40bとの通信に用いる中継装置30を問い合わせる。端末40aからの問い合わせ信号は、端末40aが存在するエリアに対応する拠点の負荷分散装置20aにルーティングされる。
負荷分散装置20は、同一拠点内の複数の中継装置30から適切な中継装置30を選択して端末40aに通知する。
続いて、端末40bは、端末40aと同様に、HTMLファイルに記述されているJavaScript(登録商標)により、負荷分散装置20に対して端末40aとの通信に用いる中継装置30を問い合わせる。端末40bからの問い合わせ信号は、端末40bが存在するエリアに対応する拠点の負荷分散装置20bにルーティングされる。
負荷分散装置20は、端末40の間で行われる通信とその通信を中継する中継装置30とを対応させる情報を互いに共有(同期)するように構成されている。従って、端末40bからの問い合わせを受けた負荷分散装置20は、端末40bからの要求に対して、端末40aに通知済みである中継装置30を端末40bに通知する。これは、TURNサーバを用いて通信を中継する場合、TURNプロトコルの仕様により、端末40a及び端末40bは同一のTURNサーバを用いる必要があるためである。
<ハードウェア構成>
図2は、第一の実施の形態に係る負荷分散装置のハードウェア構成の一例を示す図である。第一の実施の形態に係る負荷分散装置20は、CPU101と、ROM102と、RAM103と、HDD104と、操作部105と、表示部106と、ドライブ装置107と、NIC(Network Interface card)108とを有する。
CPU101は、負荷分散装置20の全体制御を行うプロセッサである。CPU101、HDD104等に記憶されたオペレーティングシステム、アプリケーション、各種サービス等のプログラムを実行し、負荷分散装置20の各種機能を実現する。ROM102には、各種のプログラムやプログラムによって利用されるデータ等が記憶される。RAM103は、プログラムをロードするための記憶領域や、ロードされたプログラムのワーク領域等として用いられる。HDD104には、各種情報及びプログラム等が記憶される。
操作部105は、ユーザからの入力操作を受け付けるためのハードウェアであり、例えばキーボード又はマウスである。表示部106は、ユーザに向けた表示を行うハードウェアである。
ドライブ装置107は、プログラムを記録した記憶媒体109からプログラムを読み取る。ドライブ装置107によって読み取られたプログラムは、例えば、HDD104にインストールされる。NIC108は、負荷分散装置20をネットワークに接続し、データの送受信を行うための通信インタフェースである。
なお、記憶媒体109とは、非一時的(non-transitory)な記憶媒体を言う。記憶媒体109の例としては、磁気記憶媒体、光ディスク、光磁気記憶媒体、不揮発性メモリなどがある。
サービス提供装置10、中継装置30、及び端末40のハードウェア構成は、例えば図2と同一であるため説明は省略する。
なお、負荷分散装置20及び中継装置30に用いるハードウェアリソースとして、例えばクラウドサービスにより提供されるハードウェアリソースを用いるようにしてもよい。クラウドサービスによっては、サーバを作成するハードウェアリソースの拠点を指定可能であり、第一の実施の形態に係る通信システムで用いる負荷分散装置20及び中継装置30を容易に実現することが可能である。
<ソフトウェア構成>
(負荷分散装置)
図3は、第一の実施の形態に係る負荷分散装置のソフトウェア構成の一例を示す図である。第一の実施の形態に係る負荷分散装置20は、通信手段201と、記憶手段202と、選択手段203と、負荷管理手段204と、増減設手段205と、同期手段206とを有する。これらの各手段は、負荷分散装置20にインストールされた1以上のプログラムが、CPU101に実行させる処理により実現され得る。
通信手段201は、NICを介して、中継装置30又は端末40と通信を行う。
記憶手段202は、RAM103、HDD104、又は負荷分散装置20にネットワークを介して接続される記憶装置等を用いて実現可能である。記憶手段202には、中継装置情報及び負荷管理情報が記憶される。中継装置情報は中継装置30を管理するための情報である。負荷管理情報は、中継装置30の負荷を管理する情報である。また、記憶手段202には、第一の実施の形態に係る通信システムに存在する全ての負荷分散装置20の設置拠点が記憶されている。
図4は、中継装置情報テーブルの一例を示す図である。中継装置情報テーブルは、中継装置識別子と、設置拠点と、セッション識別子とを有する。
中継装置識別子は、中継装置30を一意に識別するための識別子であり、例えば、中継装置30のIPアドレス及びTURNサーバが用いる通信ポートのポート番号(UDP/TCP:3478番)である。なお、中継装置識別子には、中継装置30を一意に識別できるものであれば、他の識別子を用いるようにしてもよい。
設置拠点は、中継装置30が設置されている地域である。セッション識別子は、2つの端末40の間で行われる通信(セッション)を一意に識別するための識別子である。セッション識別子は、例えば、端末40を一意に識別する端末識別子のペアで構成される。図4では、端末識別子をアルファベット一文字(A、B、・・、U)で表現しているが、端末40を一意に識別できるものであれば、他の識別子を用いてもよい。例えば端末40のIPアドレス、端末40の電話番号、端末40に登録されたメールアドレス等を用いてもよい。
中継装置情報テーブルにて、中継装置識別子に対応させてセッション識別子を記憶させることで、どの中継装置30が、どの端末40とどの端末40との間で行われる通信を中継する役割を与えられているかを管理することができる。例えば、図4では、「192.0.2.15:3478」である中継装置識別子を有するレコードに、「A−B」で表現されるセッション識別子が登録されている。これは、中継装置識別子が「192.0.2.15:3478」である中継装置30は、端末識別子がAである端末40と、端末識別子がBである端末40との間で行われる通信を中継する役割を与えられていることを示している。
図5は、負荷管理情報テーブルの一例を示す図である。負荷管理情報テーブルは、負荷分散装置20と同一の設置拠点に存在する中継装置30の負荷を管理するテーブルである。負荷管理情報テーブルは、中継装置識別子と負荷情報とを有する。
負荷情報は、中継装置30の処理負荷であり、例えばCPU使用率である。なお、負荷情報には、中継装置30の処理負荷を表す指標であれば他の指標を用いるようにしてもよい。
図3に戻り説明を続ける。
選択手段203は、通信に使用する中継装置30の問い合わせ(以下、「中継装置問合せ要求」という)を端末40から受信すると、中継装置情報テーブル及び負荷管理情報テーブルに記憶されている各種情報に基づいて、端末40の通信を中継する中継装置30を選択する。また、選択手段203は、選択した中継装置30の中継装置識別子を端末40に送信する。
負荷管理手段204は、負荷分散装置20と同一の設置拠点に存在する複数の中継装置30の各々に対して負荷の問い合わせを行い、問い合わせ結果を負荷管理情報テーブルに格納する。負荷管理手段204は、中継装置30に対して、例えば定期的に負荷を問い合わせるようにしてもよいし、端末40からの要求を受けたタイミングで負荷を問い合わせるようにしてもよい。
また、負荷管理手段204は、クラウドサービスを用いて中継装置30が実装されている場合、中継装置30の各々に対して直接負荷を問い合わせるのではなく、クラウドサービスにより提供されるAPI(Application Programming Interface)を介して負荷情報を問い合わせるようにしてもよい。
増減設手段205は、中継装置情報に管理されている中継装置30の各々の負荷情報を読出し、予め設定されている所定の閾値に基づいて、新たな中継装置30を増設する必要があるのか、又は、既に設置されている中継装置30を減設するのが望ましいのかを判断する。
例えば、同一の設置拠点に設置されている全ての中継装置30の処理負荷が所定の閾値以上(例えば、CPU使用率が80%)である場合、中継装置30の増設が必要であると判断し、その設置拠点に中継装置30を増設する。逆に、同一の設置拠点に設置されている全ての中継装置30の処理負荷が所定の閾値以下(例えば、CPU使用率が10%以下)である場合、中継装置30を減設するのが望ましいと判断し、その設置拠点に設置されている複数の中継装置30のうち任意の一台を選択して減設する。
なお、増減設手段205は、未使用のハードウェアリソースに対して、OS、ミドルウェア、及び中継装置30のアプリケーション等をインストールすることで、新たな中継装置30を増設する。また、増減設手段205は、既に設置されている中継装置30のアプリケーションを停止すると共に、OS、ミドルウェア、及び中継装置30のアプリケーションを削除することで中継装置30を減設する。なお、増減設手段205は、クラウドサービスを用いて中継装置30が実装されている場合、クラウドサービスにより提供されるAPI(Application Programming Interface)を介して中継装置30の増設又は減設を行ってもよい。
同期手段206は、2つの端末40の間で行われる通信(セッション)とその通信を中継する中継装置30とを対応させる情報を、負荷分散装置20の間で共有(同期)させる。具体的には、同期手段206は、セッション識別子と、当該セッション識別子に対応する中継装置識別子とを他の負荷分散装置20に送信することで同期を行う。
(中継装置)
図6は、第一の実施の形態に係る中継装置のソフトウェア構成の一例を示す図である。第一の実施の形態に係る中継装置30は、中継手段401と、負荷計測手段402とを有する。これらの各手段は、中継装置30にインストールされた1以上のプログラムが、CPU101に実行させる処理により実現され得る。
中継手段401は、NICを介して端末40と通信を行うことで、2つの端末40の間で行われる通信を中継する。
負荷計測手段402は、負荷分散装置20からの問い合わせを受けて、問い合わせを受けた時点の中継装置30の負荷を計測する。また、負荷計測手段402は、計測された値を負荷分散装置20に応答する。計測する値は、例えば中継装置30のCPU使用率である。なお、計測する値は、CPU使用率に限らず、他の指標で表される値でもよい。
<処理手順>
図7は、第一の実施の形態に係る中継装置を選択する処理手順の一例を示すフローチャートである。図7を用いて、負荷分散装置20が中継装置30を選択する処理手順を説明する。
ステップS501で、選択手段203は、中継装置問合せ要求を端末40から受信すると、中継装置問合せ要求を送信した端末40自身の端末識別子と、当該端末40の通信相手である端末40の端末識別子とを中継装置問合せ要求から抽出してセッション識別子を生成する。続いて、選択手段203は、生成したセッション識別子を有するレコードが中継装置情報テーブルに存在するかを確認する。
生成したセッション識別子を有するレコードが中継装置情報テーブルに存在する場合は、選択手段203は、既に中継装置30が割り当てられているセッションであると判断して、ステップS502の処理手順に進む。一方、生成したセッション識別子を有するレコードが中継装置情報テーブルに存在しない場合は、選択手段203は、新たに中継装置30を割り当てる必要があるセッションであると判断して、ステップS503の処理手順に進む。
ステップS502で、選択手段203は、中継装置情報テーブルを検索し、ステップS501で生成したセッション識別子を有するレコードから中継装置識別子を抽出することで中継装置30を選択する。
ステップS503で、選択手段203は、中継装置情報テーブル及び負荷管理情報テーブルを用いて、負荷分散装置20と同一の設置拠点に存在する複数の中継装置30のうち最も負荷の低い中継装置30を選択し、選択した中継装置30の中継装置識別子を、ステップS501で受信した中継装置問合せ要求の送信元である端末40に送信する。
なお、第一の実施の形態に係る通信システムはIP Anycast等の技術を用いている。これにより、選択手段203は、中継装置問合せ要求を送信した端末40は、自身の設置拠点に近いエリアに存在すると判断することができる。従って、選択手段203は、ステップS503の処理手順において、自身と同一の設置拠点に設置されている中継装置30のうち最も負荷の低い中継装置30を選択するようにしている。
ステップS504で、選択手段203は、ステップS501で生成したセッション識別子を、中継装置情報テーブルのレコードのうち、ステップS503で選択された中継装置30のレコードに格納する。
以上、選択手段203が、中継装置30を選択する処理手順について説明した。続いて、図8を用いて、端末40a及び端末40bの各々が、通信に使用する中継装置30を負荷分散装置20に問い合わせて通信を開始するまでの処理手順を説明する。
図8は、第一の実施の形態に係る通信システムの処理手順の一例を示すシーケンス図である。なお、図8は、端末40aが端末40bよりも先に負荷分散装置20に対して中継装置30の問い合わせを行った場合を想定したものであるが、端末40bが端末40aよりも先に負荷分散装置20に対して中継装置30の問い合わせを行った場合も、同様の処理手順を適用することができる。
ステップS601で、端末40aは、負荷分散装置20に対して中継装置問合せ要求を送信する。なお、中継装置問合せ要求には、端末40a自身の端末識別子(A)と、端末40aの通信相手である端末40bの端末識別子(B)とが含まれている。なお、第一の実施の形態に係る通信システムは、エリアAに存在する端末40からのアクセスは、拠点Aに設置されている負荷分散装置20aにルーティングされるように構成されている。従って、端末40aが送信した中継装置問合せ要求は、拠点Aに設置されている負荷分散装置20aにルーティングされる。
ステップS602で、負荷分散装置20aの選択手段203は、図7で説明した処理手順により、端末40aが端末40bと通信を行う際に用いる中継装置30を選択する。
ステップS603で、負荷分散装置20aの選択手段203は、端末40aに対して、中継装置問合せ応答を送信する。中継装置問合せ要求には、ステップS602で選択された中継装置30の中継装置識別子(192.0.2.15:3478)が含まれている。
ステップS604で、負荷分散装置20aの同期手段206は、自身以外の全ての負荷分散装置20にセッション識別子同期要求を送信する。セッション識別子同期要求には、ステップS602の処理にて中継装置情報テーブルに登録されたセッション識別子(A−B)と、ステップS602の処理にて選択された中継装置30の中継装置識別子(192.0.2.15:3478)とが含まれている。
ステップS605で、負荷分散装置20bの同期手段206は、受信したセッション識別子同期要求に含まれている中継装置識別子(192.0.2.15:3478)を有するレコードが中継装置情報テーブルに存在するかを確認する。レコードが存在する場合、負荷分散装置20bの同期手段206は、受信したセッション識別子(A−B)を当該レコードに格納する。レコードが存在しない場合、負荷分散装置20bの同期手段206は、中継装置情報テーブルに新たなレコードを追加する。また、負荷分散装置20bの同期手段206は、受信したセッション識別子同期要求に含まれている中継装置識別子(192.0.2.15:3478)と、受信したセッション識別子(A−B)と、セッション識別子同期要求の送信元である負荷分散装置20aの設置拠点(拠点A)とを当該レコードに格納する。負荷分散装置20aの設置拠点(拠点A)は、記憶手段202に記憶されている情報から判断することができる。
ステップS606で、負荷分散装置20bの同期手段206は、セッション識別子の同期が完了したことを負荷分散装置20aに伝えるために、セッション識別子同期完了応答を負荷分散装置20aに送信する。
ステップS607で、端末40bは、負荷分散装置20bに対して中継装置問合せ要求を送信する。中継装置問合せ要求には、端末40b自身の端末識別子(B)と、端末40bの通信相手である端末40aの端末識別子(A)とが含まれている。第一の実施の形態に係る通信システムは、エリアBに存在する端末40からのアクセスは、拠点Bに設置されている負荷分散装置20bにルーティングされるように構成されている。従って、端末40bが送信した中継装置問合せ要求は、拠点Bに設置されている負荷分散装置20bにルーティングされる。
ステップS608で、負荷分散装置20bの選択手段203は、図7で説明した処理手順により、端末40bが端末40aと通信を行う際に用いる中継装置30を選択する。なお、ステップS605の処理により、端末40aと端末40bとの間の通信を示すセッション識別子は、既に中継装置情報テーブルに格納されている。従って、負荷分散装置20bの選択手段203は、負荷分散装置20aから端末40aに通知された中継装置30と同一の中継装置30を選択することになる。
ステップS609で、負荷分散装置20bの選択手段203は、端末40bに対して、中継装置問合せ応答を送信する。中継装置問合せ要求には、ステップS608で選択された中継装置30の中継装置識別子(192.0.2.15:3478)が含まれている。
ステップS610及びステップS611で、端末40a及び端末40bは、中継装置識別子で指定されたIPアドレス及びポートに対し、TURNプロトコルで規定されている通信手順に従ってパケットを送信することで、中継装置30との間でトンネルを確立する。中継装置30は、端末40aから受信したデータ及び端末40bから受信したデータを、それぞれ端末40b及び端末40aに転送することで、端末40a及び端末40bの間で行われる通信を中継する。
以上、端末40a及び端末40bの各々が、通信に使用する中継装置30を負荷分散装置20に問い合わせて通信を開始するまでの処理手順について説明した。続いて、図9を用いて、負荷分散装置20が、中継装置30を増設する処理手順について説明する。
図9は、第一の実施の形態に係る中継装置を増設する処理手順の一例を示すフローチャートである。なお、負荷分散装置20の増減設手段205は、図9に示す処理手順を任意のタイミングで行うようにしてもよいし、定期的に行うようにしてもよい。
ステップS701で、増減設手段205は、負荷管理情報テーブルより、負荷分散装置20と同一の拠点に設置されている複数の中継装置30の各々の負荷を抽出する。続いて、増減設手段205は、抽出した負荷の平均値を算出することで平均負荷を求め、求めた平均負荷が閾値以上であるかを判断する。求めた平均負荷が閾値以上である場合、ステップS702の処理手順に進み、求めた平均負荷が閾値未満である場合、処理を終了する。
なお、増減設手段205は、平均負荷が閾値以上であるかを判断するのではなく、負荷分散装置20と同一の拠点に設置されている全ての中継装置30の各々の負荷が所定の閾値以上である場合にステップS702の処理手順に進むようにしてもよい。
ステップS702で、増減設手段205は、未使用のハードウェアリソースに対して、OS、ミドルウェア、中継装置30のアプリケーション等をインストールすることで、負荷分散装置20と同一の拠点に新たな中継装置30を増設する。
ステップS703で、増減設手段205は、中継装置情報テーブルに新たなレコードを追加し、ステップS702で増設した中継装置30の中継装置識別子及び設置拠点を当該レコードに格納する。また、増減設手段205は、負荷管理情報テーブルに新たなレコードを追加し、ステップS702で追加した中継装置30の中継装置識別子を当該レコードに格納する。
以上、負荷分散装置20が、中継装置30を増設する処理手順について説明した。続いて、図10を用いて負荷分散装置20が、中継装置30を減設する処理手順について説明する。
図10は、第一の実施の形態に係る中継装置を減設する処理手順の一例を示すフローチャートである。なお、負荷分散装置20の増減設手段205は、図10に示す処理手順を任意のタイミングで行うようにしてもよいし、定期的に行うようにしてもよい。
ステップS801で、増減設手段205は、負荷管理情報テーブルより、負荷分散装置20と同一の拠点に設置されている複数の中継装置30の各々の負荷を抽出する。続いて、増減設手段205は、抽出した負荷の平均値を算出することで平均負荷を求め、求めた平均負荷が閾値以下であるかを判断する。求めた平均負荷が閾値以下である場合、ステップS802の処理手順に進み、求めた平均負荷が閾値を超えている場合、処理を終了する。
ステップS802で、増減設手段205は、負荷分散装置20と同一の拠点に設置されている複数の中継装置30の中から、減設対象とする中継装置30を選択する。増減設手段205は、任意の中継装置30を減設する中継装置30として選択してもよいし、割り当てられているセッション識別子の数が最も少ない中継装置30を、減設する中継装置30として選択してもよい。
ステップS803で、増減設手段205は、中継装置情報テーブルより、減設する中継装置30として選択された中継装置30に割り当てられているセッション識別子が1つ以上存在するかを確認する。割り当てられているセッション識別子が1つ以上存在する場合は、割り当てられているセッション識別子がゼロになるまで待機する。当該中継装置30が減設されることで、端末40の間で行っている通信が切断されてしまう恐れがあるためである。割り当てられているセッション識別子がゼロである場合は、ステップS804の処理手順に進む。なお、増減設手段205は、ステップS803を処理手順を行わずに、強制的にステップS804の処理手順に進むようにしてもよい。
ステップS804で、増減設手段205は、中継装置30のアプリケーションを停止すると共に、OS、ミドルウェア、及び中継装置30のアプリケーションを削除することで、減設する中継装置30として選択された中継装置30を減設する。
以上、負荷分散装置20が、中継装置30を減設する処理手順について説明した。
<処理手順(変形例1)>
ここで、第一の実施の形態の変形例1に係る処理手順について説明する。第一の実施の形態の変形例1に係る負荷分散装置20は、端末40から中継装置問合せ要求を受けた場合、負荷分散装置20と同一の設置拠点に設置されている全ての中継装置30の各々の負荷を確認する。確認の結果、全ての中継装置30の各々の負荷(又は負荷の平均値)が所定の閾値を超える場合は、負荷分散装置20と同一の設置拠点に新たな中継装置30を増設し、増設された新たな中継装置30を選択して端末40に応答するようにする。
以下、具体的な処理手順について図を用いて説明する。
図11は、第一の実施の形態に係る中継装置を選択する処理手順(変形例1)の一例を示すフローチャートである。図11のステップS501乃至S504の処理手順は、図7と同一であるため説明は省略する。
ステップS513で、選択手段203は、中継装置情報テーブル及び負荷管理情報テーブルを用いて、負荷分散装置20と同一の設置拠点に設置されている全ての中継装置30の各々の負荷を確認する。全ての中継装置30の各々の負荷が所定の閾値を超えている場合、ステップS514の処理手順に進み、全ての中継装置30の負荷のうち少なくとも1つ以上の中継装置30の負荷が所定の閾値を超えていない場合は、ステップS503の処理手順に進む。
ステップS514で、選択手段203は、増減設手段205に対して、中継装置30の増設を指示する。指示を受けた増減設手段205は、未使用のハードウェアリソースに対して、OS、ミドルウェア、中継装置30のアプリケーション等をインストールすることで、負荷分散装置20と同一の拠点に新たな中継装置30を増設する。また、増減設手段205は、中継装置情報テーブルに新たなレコードを追加する。
ステップS515で、選択手段203は、ステップS501で生成したセッション識別子を、中継装置情報テーブルのレコードのうち、ステップS514で増設された中継装置30のレコードに格納する。
以上、第一の実施の形態の変形例1に係る処理手順について説明した。
<処理手順(変形例2)>
続いて、第一の実施の形態の変形例2に係る処理手順について説明する。
第一の実施の形態の変形例2に係る負荷分散装置20は、端末40から中継装置問合せ要求を受けた場合、負荷分散装置20と同一の設置拠点に設置されている全ての中継装置30の各々の負荷を確認する。確認の結果、全ての中継装置30の各々の負荷(又は負荷の平均値)が所定の閾値を超える場合は、負荷分散装置20と異なる設置拠点に設置されている複数の中継装置30のうち、負荷が所定の閾値以下である中継装置30を選択するようにする。
以下、具体的な処理手順について図を用いて説明する。
図12は、第一の実施の形態に係る中継装置を選択する処理手順(変形例2)の一例を示すフローチャートである。図12のステップS501乃至S504、及びステップS513の処理手順は、図7及び図11と同一であるため説明は省略する。
ステップS523で、選択手段203は、他の負荷分散装置20に対して、負荷が所定の閾値以下である中継装置30の中継装置識別子を問い合わせることで、他の設置拠点に存在する複数の中継装置30の中から中継装置30を選択する。
なお、他の全ての負荷分散装置20から、負荷が所定の閾値以下である中継装置30が存在しない旨の応答を受けた場合、選択手段203は、図11のステップS514に進むことで、新たな中継装置30を増設するようにしてもよい。
ステップS524で、選択手段203は、ステップS501で生成したセッション識別子を、中継装置情報テーブルのレコードのうち、ステップS523で選択された中継装置30のレコードに格納する。
以上、第一の実施の形態の変形例2に係る処理手順について説明した。
<効果>
以上、第一の実施の形態に係る通信システムは、IP Anycast等の技術を用いることで、端末40からの中継装置問合せ要求が、当該端末40が存在するエリアに近い設置拠点に設置されている負荷分散装置20に到達するようにした。また、端末40からの中継装置問合せ要求を受信した負荷分散装置20は、自身と同一の設置拠点に設置されている中継装置30を選択するようにした。これにより、第一の実施の形態に係る通信システムは、通信の遅延が少なくなるような中継装置30の選択が可能になり、中継装置30の負荷分散を適切に行うことができる。また、第一の実施の形態に係る通信システムは、中継装置30を選択する場合に、例えば、負荷の小さい中継装置30を選択するようにした。これにより、第一の実施の形態に係る通信システムは、中継装置30の負荷分散を適切に行うことができる。
また、第一の実施の形態に係る通信システムは、負荷分散装置自身と同一の設置拠点に設置されている中継装置30の負荷状態を監視し、負荷状態が閾値以上である場合に新たな中継装置30を増設するようにした。また、第一の実施の形態に係る通信システムは、中継装置30の負荷が閾値以下である場合に不要な中継装置30を減設するようにした。これにより、必要な拠点と必要な時間に応じて動的に中継装置30を稼働させることができ、予期不能な急激な負荷の増加や、時間帯による負荷の変化に対して柔軟に対応することができる。
また、第一の実施の形態に係る通信システムは、クラウドサービスを利用して中継装置30を増減設することができるようにした。これにより、必要最小限の中継装置30のみを稼働させることが可能になり、運用コストを抑えることができる。
また、第一の実施の形態に係る通信システムは、WebRTCを用いたサービスを受ける端末40に対して、適切なTURNサーバを通知するようにした。これにより、端末40に配布されるクライアントモジュール及びクライアントモジュールを配布するサービス提供装置10のプログラムに、予めTURNサーバを設定しておく必要がなく、柔軟なサービス運用が可能になる。
また、第一の実施の形態(変形例2)に係る通信システムは、負荷分散装置20と同一の設置拠点に設置されている全ての中継装置30の各々の負荷(又は負荷の平均値)が所定の閾値を超える場合、中継装置30を増設するのではなく、当該負荷分散装置20と異なる設置拠点に設置されている中継装置30を選択することができるようにした。これにより、中継装置30を増設する際に必要なコストを抑えることができる。
[第二の実施の形態]
続いて、第二の実施の形態に係る通信システムについて説明する。第二の実施の形態に係る通信システムは、負荷分散装置20が中継装置30を選択する際、中継装置問合せ要求に含まれるIPアドレスから端末40が存在するエリアを特定し、特定したエリアに対応する拠点に設置されている中継装置30を選択するようにする。なお、第一の実施の形態と同一構成部分についての説明は省略する。また、特に言及しない点については、第一の実施の形態と同様でよい。
図13は、対象エリア管理テーブルの一例を示す図である。対象エリア管理テーブルは、記憶手段202に記憶される。対象エリア管理テーブルは、設置拠点と、対象エリア情報とを含む。対象エリア情報は、中継装置30が、どのエリアに存在する端末40の通信を中継するかを管理する情報である。例えば、図13には、「拠点A」に対応する対象エリア情報として、「日本、韓国、中国」が格納されている。すなわち、拠点Aに設置されている中継装置30は、日本、韓国、及び中国に存在する端末40の通信を中継する役割を担うことになる。
なお、対象エリア情報には、設置拠点との距離が概ね一定範囲にあるエリア、設置拠点とルーティングのホップ数が少ない経路で通信可能なエリア、設置拠点と遅延が少ない経路で通信可能なエリア、設置拠点と帯域が広い経路で通信可能なエリア、設置拠点と通信品質が安定している経路で通信可能なエリア、又は、設置拠点と経済的な経路で通信可能なエリアなどが設定されるようにするのが望ましい。これにより、通信を行う2つの端末40のうち、少なくともいずれか一方の端末40が設置されている地域に適切な地域に設置されている中継装置30が選択されるようになり、中継装置30を介した端末40の間の通信が無駄に遠回りになることによる遅延の増加等を避けることができる。
図14は、第二の実施の形態に係る中継装置を選択する処理手順の一例を示すフローチャートである。図14を用いて、負荷分散装置20が中継装置30を選択する処理手順を説明する。なお、ステップS501及びステップS502の処理手順は、図7と同一であるため説明は省略する。
ステップS901で、選択手段203は、端末40から受信した中継装置問合せ要求に含まれるヘッダ情報から、端末40が存在するエリアを把握する。
ここで、中継装置問合せ要求に含まれるヘッダ情報の一例として、IPアドレスが挙げられる。IPアドレスは国ごとに割り当て範囲がある程度決まっており、割り当てられている範囲はインターネット等に公開されている。従って、選択手段203は、中継装置問合せ要求のヘッダ情報に含まれるIPアドレスを用いて、中継装置問合せ要求を送信した端末40がどのエリアに存在するのかを把握することが可能である。
続いて、選択手段203は、エリア管理テーブル及び中継装置管理テーブルにより、端末40が存在するエリアに対応する設置拠点を検索し、検索した設置拠点に設置されている中継装置30を抽出する。
ステップS902で、選択手段203は、負荷管理情報テーブルを用いて、ステップS901で抽出された中継装置30のうち最も負荷の低い中継装置30を選択し、選択した中継装置30の中継装置識別子を、ステップS501で受信した中継装置問合せ要求の送信元である端末40に送信する。
なお、第一の実施の形態とは異なり、ステップS901の処理手順にて検索した設置拠点が、負荷分散装置20自身の設置拠点とは一致しない場合が想定され得る。負荷分散装置20自身が記憶している負荷管理情報テーブルには、負荷分散装置20自身の設置拠点と異なる設置拠点に設置されている中継装置30に関する情報が含まれていないため、選択手段203は処理を継続できない。従って、この場合は、ステップS901の処理手順にて検索した設置拠点に設置されている他の負荷分散装置20にアクセスし、最も負荷の低い中継装置30を他の負荷分散装置20に選択させるようにしてもよい。
ステップS903で、選択手段203は、ステップS501で生成したセッション識別子を、中継装置情報テーブルのレコードのうち、ステップS902で選択した中継装置30のレコードに格納する。
<効果>
以上、第二の実施の形態に係る通信システムは、各中継装置30がどのエリアに存在する端末40の通信を中継するかを管理するようにしたことで、端末40からの中継装置問合せ要求に対して、当該端末40が存在するエリアに近い設置拠点に設置されている中継装置30を選択するようにした。これにより、第二の実施の形態に係る通信システムは、通信の遅延が少なくなるような中継装置30の選択が可能になり、中継装置30の負荷分散を適切に行うことができる。また、第二の実施の形態に係る通信システムは、中継装置30を選択する場合に、負荷の小さい中継装置30を選択するようにした。これにより、第二の実施の形態に係る通信システムは、中継装置30の負荷分散を適切に行うことができる。
[第三の実施の形態]
続いて、第三の実施の形態に係る通信システムについて説明する。第三の実施の形態に係る通信システムは、特定の端末40からの中継装置問合せ要求に対して、予め定められた拠点の中継装置30を選択するようにする。なお、第一の実施の形態と同一構成部分についての説明は省略する。また、特に言及しない点については、第一の実施の形態と同様でよい。
図15は、特定端末管理テーブルの一例を示す図である。特定端末管理テーブルは、記憶手段202に記憶される。特定端末管理テーブルは、設置拠点と、端末識別子とを含む。
図16は、第三の実施の形態に係る中継装置を選択する処理手順の一例を示すフローチャートである。図16を用いて、第三の実施の形態に係る負荷分散装置20が中継装置30を選択する処理手順を説明する。なお、ステップS501及びステップS502の処理手順は、図7と同一であるため説明は省略する。
ステップS1001で、選択手段203は、端末40から受信した中継装置問合せ要求に含まれる通信元の端末40の端末識別子を抽出し、特定端末管理テーブルにより、抽出した端末識別子に対応する設置拠点を検索する。抽出した端末識別子が特定端末管理テーブルに登録されている場合、選択手段203は、中継装置管理テーブルにより、検索した設置拠点に設置されている中継装置30を抽出し、ステップS1002の処理手順に進む。抽出した端末識別子が特定端末管理テーブルに登録されていない場合、選択手段203は、図7のステップS503の処理手順、又は図14のステップS901の処理手順に進む。
ステップS1002で、選択手段203は、負荷管理情報テーブルを用いて、ステップS1001で抽出された中継装置30のうち最も負荷の低い中継装置30を選択し、選択した中継装置30の中継装置識別子を、ステップS501で受信した中継装置問合せ要求の送信元である端末40に送信する。
なお、第一の実施の形態とは異なり、ステップS1001の処理手順にて検索した設置拠点が、負荷分散装置20自身の設置拠点と一致しない場合が想定され得る。負荷分散装置20自身が記憶している負荷管理情報テーブルには、負荷分散装置20自身の設置拠点と異なる設置拠点に設置されている中継装置30に関する情報が含まれていないため、選択手段203は処理を継続できない。従って、この場合は、ステップS1001の処理手順にて検索した設置拠点に設置されている他の負荷分散装置20にアクセスし、最も負荷の低い中継装置30を他の負荷分散装置20に選択させるようにしてもよい。
ステップS1003で、選択手段203は、ステップS501で生成したセッション識別子を、中継装置情報テーブルのレコードのうち、ステップS1002で選択した中継装置30のレコードに格納する。
<効果>
以上、第三の実施の形態に係る通信システムは、特定の端末40からの中継装置問合せ要求に対して、予め定められた拠点の中継装置30を選択するようにした。これにより、第三の実施の形態に係る通信システムは、特定の端末に対して予め設定された中継装置30を割り当てることが可能になる。また、例えば、特定のクライアント専用のTURNサーバを設置し、特定のクライアントが有する端末40からの中継装置問合せ要求に対しては固定的なTURNサーバを選択することが可能になる。これにより、一部のユーザニーズに対して柔軟なサービス展開を行うことができる。
<実施形態の補足>
以上、上記複数の実施の形態において、選択手段203は、同一のセッションに対して同一の中継装置30を選択するようにしたが、2つの端末40の各々が存在するエリアが離れている場合は、異なる中継装置30を選択するようにしてもよい。例えば、アメリカに存在する端末40と日本に存在する端末40との間でP2P通信が行われる場合において、選択手段203は、アメリカに存在する端末40からの中継装置問合せ要求に対しては、拠点Cに設置されている中継装置30を選択するようにし、日本に存在する端末40からの中継装置問合せ要求に対しては、拠点Aに設置されている中継装置30を選択するようにしてもよい。現状のTURNプロトコルでは、同一セッションに対しては同一のTURNサーバを選択する必要があるが、今後、異なるTURNサーバを選択することが可能になることも想定し得るためである。
以上、上記複数の実施の形態においては、先に中継装置問合せ要求を受信した端末40のエリアに応じて中継装置30を選択するようにしたが、負荷分散装置20は、端末40a及び端末40bの両方からの中継装置問合せ要求を受信するまで待機するようにして、端末40a及び端末40bのそれぞれのエリアの双方に対応する中継装置30の中から最も負荷の低い中継装置30を選択するようにしてもよい。
以上、上記複数の実施の形態においては、端末40は、他の端末40との通信を終了する際に、負荷分散装置20にその旨を通知するようにしてもよい。また、負荷分散装置20は、当該通知を受けた場合、中継装置情報テーブルに格納されているセッション識別子を削除するようにしてもよい。
以上、本発明は上記複数の実施の形態に限定されるものではなく、本発明の範囲内で種々の変形及び改良が可能である。
以上、上記複数の実施の形態で述べたシーケンス及びフローチャートは、矛盾の無い限り順序を入れ替えてもよい。
以上、上記複数の実施の形態の全部又は一部は、プログラムによって実装され得る。このプログラムは、記憶媒体に格納することができる。
以上、上記複数の実施の形態において、IPアドレスはヘッダ情報の一例であり、セッション識別子は通信識別子の一例である。
本特許出願は2014年12月24日に出願した日本国特許出願第2014−260297号に基づきその優先権を主張するものであり、日本国特許出願第2014−260297号の全内容を本願に援用する。
10 サービス提供装置
20 負荷分散装置
30 中継装置
40 端末
50 外部ネットワーク
60 NAT
70 内部ネットワーク
201 通信手段
202 記憶手段
203 選択手段
204 負荷管理手段
205 増減設手段
206 同期手段
401 中継手段
402 負荷計測手段

Claims (12)

  1. 端末が行う通信を中継する複数の中継装置及び前記端末にネットワークを介して接続される負荷分散装置であって、
    前記複数の中継装置の各々を識別する中継装置識別子と、前記複数の中継装置の各々の設置拠点を示す設置拠点情報と、前記複数の中継装置の各々の負荷を示す負荷情報とを記憶する記憶手段と、
    前記複数の中継装置の各々から前記負荷情報を収集して前記記憶手段に格納する負荷管理手段と、
    前記端末からの要求を受けた場合に、前記設置拠点情報又は前記負荷情報に基づいて、前記端末が行う通信を中継する中継装置を前記複数の中継装置から選択する選択手段と、
    前記選択手段により選択された中継装置の中継装置識別子を、前記要求を送信した前記端末に送信する送信手段と、
    を有する負荷分散装置。
  2. 前記選択手段は、
    前記端末からの前記要求に含まれるヘッダ情報、又は、当該負荷分散装置の設置拠点から前記端末が存在するエリアを判断し、
    前記端末が存在するエリア及び前記設置拠点情報に基づいて、前記端末が行う通信を中継する中継装置を前記複数の中継装置から選択する、請求項1に記載の負荷分散装置。
  3. 前記選択手段は、
    前記負荷情報に基づいて、同一の設置拠点に設置されている前記複数の中継装置から一の中継装置を選択する、請求項1又は2に記載の負荷分散装置。
  4. 前記負荷情報と予め定められた閾値とに基づき、新たな中継装置の増設又は設置されている中継装置の減設を行う増減設手段を有する請求項1乃至3のいずれか一項に記載の負荷分散装置。
  5. 前記選択手段は、
    所定の設置拠点に設置されている前記複数の中継装置の各々の負荷が、予め定められた閾値を超えている場合、前記所定の設置拠点に新たな中継装置を増設するように前記増減設手段に指示し、増設された新たな中継装置を選択する、請求項4に記載の負荷分散装置。
  6. 前記選択手段は、
    所定の設置拠点に設置されている前記複数の中継装置の各々の負荷が、予め定められた閾値を超えている場合、前記所定の設置拠点とは異なる設置拠点に設置されている前記複数の中継装置のうち、予め定められた閾値以下である中継装置を選択する、請求項1乃至4のいずれか一項に記載の負荷分散装置。
  7. 前記記憶手段は、前記端末の通信を識別する通信識別子を中継装置識別子に対応させて記憶し、
    前記選択手段は、
    前記端末からの前記要求を受けた場合において、前記端末からの前記要求に含まれる前記通信識別子が前記記憶手段に格納されている場合は、当該通信識別子に対応する中継装置識別子により識別される中継装置を選択し、前記端末からの前記要求に含まれる前記通信識別子が前記記憶手段に格納されていない場合は、前記端末が行う通信を中継する中継装置を前記複数の中継装置から選択し、前記端末からの前記要求に含まれる前記通信識別子を、選択した中継装置の中継装置識別子に対応させて前記記憶手段に格納する、請求項1乃至6のいずれか一項に記載の負荷分散装置。
  8. 前記記憶手段に格納される前記通信識別子と、当該通信識別子に対応する前記中継装置の中継装置識別子とを、当該負荷分散装置とは異なる他の負荷分散装置に送信する、同期手段を有する請求項7に記載の負荷分散装置。
  9. 前記同期手段は、前記他の負荷分散装置から前記通信識別子と前記中継装置の中継装置識別子とを受信した場合に、受信した前記通信識別子を、受信した中継装置識別子が示す前記中継装置に対応させて前記記憶手段に格納する、請求項8に記載の負荷分散装置。
  10. 前記記憶手段は、前記端末を識別する端末識別子と前記設置拠点情報とを対応させて記憶し、
    前記選択手段は、前記端末からの前記要求を受けた場合において、前記端末からの前記要求に含まれる前記端末識別子が前記記憶手段に格納されている場合、当該端末識別子に対応する設置拠点に設置されている中継装置を抽出し、前記負荷情報に基づき、前記端末が行う通信を中継する中継装置を前記抽出した中継装置から選択する、請求項1乃至9のいずれか一項に記載の負荷分散装置。
  11. 端末が行う通信を中継する複数の中継装置及び前記端末にネットワークを介して接続される負荷分散装置における負荷分散方法であって、
    前記複数の中継装置の各々を識別する中継装置識別子と、前記複数の中継装置の各々の設置拠点を示す設置拠点情報と、前記複数の中継装置の各々の負荷を示す負荷情報とを記憶手段に記憶する記憶ステップと、
    前記複数の中継装置の各々から前記負荷情報を収集して前記記憶手段に格納する負荷管理ステップと、
    前記端末からの要求を受けた場合に、前記設置拠点情報又は前記負荷情報に基づいて、前記端末が行う通信を中継する中継装置を前記複数の中継装置から選択する選択ステップと、
    前記選択ステップにより選択された中継装置の中継装置識別子を、前記要求を送信した前記端末に送信する送信ステップと、
    を有する負荷分散方法。
  12. 端末が行う通信を中継する複数の中継装置及び前記端末にネットワークを介して接続される負荷分散装置におけるプログラムであって、
    負荷分散装置に、
    前記複数の中継装置の各々を識別する中継装置識別子と、前記複数の中継装置の各々の設置拠点を示す設置拠点情報と、前記複数の中継装置の各々の負荷を示す負荷情報とを記憶手段に記憶する記憶ステップと、
    前記複数の中継装置の各々から前記負荷情報を収集して前記記憶手段に格納する負荷管理ステップと、
    前記端末からの要求を受けた場合に、前記設置拠点情報又は前記負荷情報に基づいて、前記端末が行う通信を中継する中継装置を前記複数の中継装置から選択する選択ステップと、
    前記選択ステップにより選択された中継装置の中継装置識別子を、前記要求を送信した前記端末に送信する送信ステップと、
    を実行させるためのプログラム。
JP2016566409A 2014-12-24 2015-12-22 負荷分散装置、負荷分散方法及びプログラム Active JP6291085B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2014260297 2014-12-24
JP2014260297 2014-12-24
PCT/JP2015/085887 WO2016104537A1 (ja) 2014-12-24 2015-12-22 負荷分散装置、負荷分散方法及びプログラム

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2018021318A Division JP6553760B2 (ja) 2014-12-24 2018-02-08 負荷分散装置、中継装置、負荷分散方法及びプログラム

Publications (2)

Publication Number Publication Date
JPWO2016104537A1 JPWO2016104537A1 (ja) 2017-10-05
JP6291085B2 true JP6291085B2 (ja) 2018-03-14

Family

ID=56150552

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2016566409A Active JP6291085B2 (ja) 2014-12-24 2015-12-22 負荷分散装置、負荷分散方法及びプログラム
JP2018021318A Active JP6553760B2 (ja) 2014-12-24 2018-02-08 負荷分散装置、中継装置、負荷分散方法及びプログラム

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2018021318A Active JP6553760B2 (ja) 2014-12-24 2018-02-08 負荷分散装置、中継装置、負荷分散方法及びプログラム

Country Status (4)

Country Link
US (1) US10757024B2 (ja)
EP (1) EP3240248B1 (ja)
JP (2) JP6291085B2 (ja)
WO (1) WO2016104537A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106656905B (zh) * 2015-10-28 2020-02-21 新华三技术有限公司 防火墙集群实现方法及装置
CN109787912A (zh) 2019-03-04 2019-05-21 南京邮电大学 一种dpdk环境下基于nat的负载均衡方法
KR102482518B1 (ko) * 2019-03-18 2022-12-29 에릭슨엘지엔터프라이즈 주식회사 TURN 서버를 할당하는 방법, WebRTC 서버 및 WebRTC 시스템
JP7209593B2 (ja) 2019-07-01 2023-01-20 株式会社ソラコム 中継方法、中継システム、及び中継用プログラム
US11128695B1 (en) * 2020-09-16 2021-09-21 Cloudflare, Inc. Traffic load balancing between a plurality of points of presence of a cloud computing infrastructure
JP2022127333A (ja) * 2021-02-19 2022-08-31 株式会社リコー 負荷分散システム、負荷分散方法、及びプログラム

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040260745A1 (en) * 2003-06-18 2004-12-23 Gage Christopher A. S. Load balancer performance using affinity modification
US7827279B2 (en) * 2004-01-30 2010-11-02 Hewlett-Packard Development Company, L.P. Selecting nodes close to another node in a network using location information for the nodes
US7458786B2 (en) 2004-03-04 2008-12-02 Robert George Mac Donald Oil well pumping unit and method therefor
US7301938B2 (en) * 2004-04-14 2007-11-27 Lucent Technologies Inc. Method of transferring a packet switched to a circuit switched call
JP4331090B2 (ja) 2004-11-05 2009-09-16 パナソニック株式会社 通信システム、情報処理装置、仲介サーバ、識別情報送信サーバ、通信方法及びプログラム
JP4672405B2 (ja) 2005-03-17 2011-04-20 パナソニック株式会社 通信システム、情報処理システム、接続サーバ、処理サーバ、情報処理装置、及び情報処理方法
US7694011B2 (en) * 2006-01-17 2010-04-06 Cisco Technology, Inc. Techniques for load balancing over a cluster of subscriber-aware application servers
US8332514B2 (en) * 2007-07-20 2012-12-11 At&T Intellectual Property I, L.P. Methods and apparatus for load balancing in communication networks
KR101430517B1 (ko) * 2008-01-31 2014-08-19 삼성전자주식회사 복수의 데이터 통신장치들 간의 데이터 동기 방법
JP5338555B2 (ja) * 2009-08-11 2013-11-13 富士通株式会社 負荷分散装置、負荷分散方法および負荷分散プログラム
US9960967B2 (en) * 2009-10-21 2018-05-01 A10 Networks, Inc. Determining an application delivery server based on geo-location information
US8533337B2 (en) * 2010-05-06 2013-09-10 Citrix Systems, Inc. Continuous upgrading of computers in a load balanced environment
JP5724498B2 (ja) * 2011-03-18 2015-05-27 株式会社リコー 割当装置、通信装置、仲介装置、仲介システム、割当方法、プログラム及び記録媒体
JP5544524B2 (ja) 2011-07-25 2014-07-09 日本電信電話株式会社 分散処理システム、分散処理方法、負荷分散装置、負荷分散方法、及び、負荷分散プログラム
US8874717B2 (en) * 2012-06-29 2014-10-28 Microsoft Corporation Techniques to discover services recursively in a distributed environment
US9148519B1 (en) * 2013-01-02 2015-09-29 8X8, Inc. Intelligent media relay selection
US9392050B2 (en) * 2013-03-15 2016-07-12 Cisco Technology, Inc. Automatic configuration of external services based upon network activity

Also Published As

Publication number Publication date
WO2016104537A1 (ja) 2016-06-30
JPWO2016104537A1 (ja) 2017-10-05
JP6553760B2 (ja) 2019-07-31
US10757024B2 (en) 2020-08-25
EP3240248A1 (en) 2017-11-01
JP2018085776A (ja) 2018-05-31
EP3240248B1 (en) 2023-12-06
US20180006952A1 (en) 2018-01-04
EP3240248A4 (en) 2018-08-08

Similar Documents

Publication Publication Date Title
JP6553760B2 (ja) 負荷分散装置、中継装置、負荷分散方法及びプログラム
EP3275162B1 (en) Systems and techniques for web communication
EP3208979B1 (en) Software-defined network-based method and system for implementing content distribution network
EP2112788A1 (en) A method, system and nodes for p2p content sharing
KR20150013860A (ko) 클라이언트 없는 클라우드 컴퓨팅
JP6082156B1 (ja) 通信システム、アドレス通知装置、通信制御装置、端末、通信方法、及びプログラム
KR20150121713A (ko) 네트워크 노드 기능을 제공하기 위한 네트워크 노드들 사이의 할당 리소스
CN112583618B (zh) 为业务提供网络服务的方法、装置和计算设备
JP5913258B2 (ja) 中継装置及びデータ転送方法
JP5937709B1 (ja) 通信制御装置、通信制御方法及び通信制御プログラム
CN111726400A (zh) 反向连接的方法、装置和服务端系统
KR20130107960A (ko) 컨텐츠 전송 시스템, 이를 위한 방법 및 장치
JP2015023453A (ja) ネットワークシステム、ネットワーク管理装置、及び、アプリケーション管理装置
JPWO2016042764A1 (ja) 接続方法、接続システム、携帯端末、およびプログラム
KR101445047B1 (ko) 토폴로지 서버의 지원으로 통신 아키텍처에 분산된 노드의 네트워크에 대한 기밀 또는 보호 액세스
JP6200033B2 (ja) 中継装置、中継方法及び中継プログラム
CN114598532A (zh) 连接建立方法、装置、电子设备和存储介质
JP5937708B1 (ja) 通信制御装置、通信制御方法及び通信制御プログラム
JP2004104357A (ja) ネットワークシステムおよび通信方法、情報処理装置および方法、並びにプログラム
KR101407934B1 (ko) 컨텐츠 전송 시스템, 이를 위한 방법 및 장치
JP2013126219A (ja) 転送サーバおよび転送プログラム
JP2015201758A (ja) 中継装置、通信システム、情報処理方法及びプログラム
WO2016121881A1 (ja) 通信制御装置、通信制御方法及び通信制御プログラム
JP2014003392A (ja) 制御ノード及び通信制御方法
JP2016144217A (ja) 中継装置、中継方法及び中継プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170619

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180109

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180208

R150 Certificate of patent or registration of utility model

Ref document number: 6291085

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250