(57)【要約】【課題】アプリケーションの要求が分散される複数の制御装置について、制御装置間のメッセージの転送を低減させる。【解決手段】情報処理装置は、複数の制御装置それぞれについて、所定の処理の要求の振り分けに用いられる重みを、制御対象とする宛先装置の数が多い制御装置ほど当該制御装置に振り分けられる所定の処理の要求量が多くなるように、決定する処理部を備える。複数の制御装置それぞれは、複数の制御装置間で振り分けられた要求のうち自装置に振り分けられた要求を受信する第１の受信部と、要求に応じて所定の処理を実行し、メッセージを生成し、メッセージの宛先装置を制御対象とする制御装置が自装置である場合にはメッセージを当該宛先装置に送信し、メッセージの宛先装置を制御対象とする制御装置が他の制御装置である場合にはメッセージを当該他の制御装置に転送する制御部と、を備える。【選択図】図１
2017215933.tif 000002
【特許請求の範囲】
【請求項１】
複数の制御装置間で振り分けられた要求のうち自装置に振り分けられた要求を受信する第１の受信部と、要求に応じて所定の処理を実行し、メッセージを生成し、前記メッセージの宛先装置を制御対象とする制御装置が自装置である場合には前記メッセージを前記宛先装置に送信し、前記メッセージの宛先装置を制御対象とする制御装置が他の制御装置である場合には前記メッセージを前記他の制御装置に転送する制御部と、を備える前記複数の制御装置それぞれについて、前記所定の処理の要求の振り分けに用いられる重みを、制御対象とする宛先装置の数が多い制御装置ほど当該制御装置へ振り分けられる前記所定の処理の要求量が多くなるように、決定する処理部、
を備える情報処理装置。
【請求項２】
前記複数の制御装置それぞれについて、制御対象とする宛先装置の情報を記憶する記憶部をさらに備え、
前記処理部は、前記複数の制御装置それぞれについて、宛先装置の総数に対する前記複数の制御装置それぞれが制御対象とする宛先装置の数の割合を、前記重みとして決定する、
請求項１に記載の情報処理装置。
【請求項３】
前記情報処理装置は、
前記複数の制御装置それぞれから、前記複数の制御装置それぞれが受信した複数種類の所定の処理それぞれの要求量を受信する受信部をさらに備え、
前記処理部は、線形計画法において、前記複数種類の所定の処理のうちの種類ｉの所定の処理（１≦ｉ≦所定の処理の種類の数）のメッセージの宛先装置の総数に対する制御装置ｊ（１≦ｊ≦制御装置の数）の制御対象の宛先装置の数の割合を定数Ａｉｊとし、前記制御装置ｊに振り分けられる前記種類ｉの所定の処理の要求量を変数Ｘｉｊとして、Σj
Ｘｉｊ（Σj：ｊに関する足し合わせ）を前記制御装置ｊに振り分け可能な要求量の上限
値とし、ΣiＸｉｊ（Σi：ｉに関する足し合わせ）を前記種類ｉの所定の処理についての前記複数の制御装置それぞれが受信した要求量の総和とする制約条件のもとで、目的関数ΣＡｉｊ*Ｘｉｊ（＊は乗算記号）を最大化させる、前記制御装置ｊに振り分けられる前
記種類ｉの所定の処理の要求量Ｘｉｊの値を取得し、取得された前記Ｘｉｊの値の、前記種類ｉの所定の処理についての前記複数の制御装置それぞれが受信した要求量の総和に対する割合を、前記種類ｉの所定の処理の要求の前記制御装置ｊへの振り分けに用いられる重みとして決定する、
請求項１に記載の情報処理装置。
【請求項４】
複数の制御装置間で振り分けられた要求のうち自装置に振り分けられた要求を受信する第１の受信部と、要求に応じて所定の処理を実行してメッセージを生成し、前記メッセージの宛先装置を制御対象とする制御装置が自装置である場合には前記メッセージを前記宛先装置に送信し、前記メッセージの宛先装置を制御対象とする制御装置が他の制御装置である場合には前記メッセージを前記他の制御装置に転送する制御部と、を備える前記複数の制御装置それぞれから、前記複数の制御装置それぞれが前記所定の処理を実行することによって生成されたメッセージについて、前記複数の制御装置それぞれから宛先装置に送信された第１のメッセージの量と、前記複数の制御装置それぞれから他の制御装置に転送された第２のメッセージの量と、を受信する受信部と、
前記複数の制御装置それぞれの、前記複数の制御装置それぞれによる前記所定の処理によって生成されたメッセージ総量に対する前記第１のメッセージの量の第１の比率又は前記第２のメッセージの量の第２の比率に基づいて、前記第１の比率が高い又は前記第２の比率が低い制御装置ほど当該制御装置へ振り分けられる前記所定の処理の要求量が多くなるように、前記複数の制御装置それぞれについて、前記所定の処理の要求の振り分けに用
いられる重みを決定する処理部と、
を備える情報処理装置。
【請求項５】
前記複数の制御装置それぞれは、複数種類の所定の処理を実行して、メッセージを生成し、
前記受信部は、前記複数の制御装置それぞれから、前記複数種類の所定の処理それぞれについての、前記第１のメッセージの量と、前記第２のメッセージの量とを受信し、
前記処理部は、前記複数の制御装置それぞれによって実行される前記複数種類の所定の処理それぞれについて、前記第１の比率又は第２の比率を求め、前記複数種類の所定の処理それぞれについて、前記複数の制御装置それぞれへの前記要求の振り分けに用いられる重みを決定する、
請求項４に記載の情報処理装置。
【請求項６】
前記処理部は、前記複数の制御装置それぞれについて振り分け可能な要求量の上限値を決定し、前記第１の比率又は第２の比率と、前記要求量の上限値とに基づいて、前記第１の比率が高い又は前記第２の比率が低い制御装置ほど当該制御装置へ振り分けられる前記所定の処理の要求量が多くなるように、且つ、前記複数の制御装置それぞれに振り分けられる要求量が前記複数の制御装置それぞれの前記上限値を超えないように、前記複数の制御装置それぞれへの前記要求の振り分けに用いられる重みを決定する、
請求項４又は５に記載の情報処理装置。
【請求項７】
前記受信部は、前記複数の制御装置それぞれから、前記複数の制御装置それぞれが受信した前記複数種類の所定の処理のそれぞれの要求量をさらに受信し、
前記処理部は、線形計画法において、制御装置ｊ（１≦ｊ≦制御装置の数）が実行する前記複数種類の所定の処理のうちの種類ｉの所定の処理（１≦ｉ≦処理の種類の数）についての前記第１の比率又は前記第２の比率を定数Ａｉｊとし、前記制御装置ｊに振り分けられる前記種類ｉの所定の処理の要求量を変数Ｘｉｊとして、ΣjＸｉｊ（Σj：ｊに関する足し合わせ）を前記制御装置ｊが処理可能な要求量の上限値とし、ΣiＸｉｊ（Σi：ｉに関する足し合わせ）を前記種類ｉの所定の処理についての前記複数の制御装置それぞれが受信した要求量の総和とする制約条件のもとで、目的関数ΣＡｉｊ*Ｘｉｊ（＊は乗算
記号）を最大化又は最小化させる、前記制御装置ｊに振り分けられる前記種類ｉの所定の処理の要求量Ｘｉｊの値を取得し、取得された前記Ｘｉｊの値の、前記種類ｉの所定の処理についての前記複数の制御装置それぞれが受信した要求量の総和に対する割合を、前記複数の制御装置ｊへの前記種類ｉの所定の処理の要求の振り分けに用いられる重みとして決定する、
請求項６に記載の情報処理装置。
【請求項８】
前記受信部は、前記複数の制御装置それぞれから、前記複数の制御装置それぞれが受信した前記複数種類の所定の処理のそれぞれの要求量をさらに受信し、
前記処理部は、前記複数の制御装置それぞれの処理可能な要求量の上限値と、前記複数種類の所定の処理それぞれの、前記複数の制御装置への要求の総量とに基づいて、前記複数種類の所定の処理それぞれについて、前記複数の制御装置のそれぞれが実行する前記複数種類の所定の処理それぞれについての前記第１の比率のうち最も高い値の第１の比率に対応する制御装置ｊ（１≦ｊ≦制御装置の数）に種類ｉの所定の処理（１≦ｉ≦所定の処理の種類の数）の要求を割り当てる第１の処理を行い、前記第１の比率の高い順番で当該第１の比率Ａｉｊについて、前記制御装置ｊに割り当てられる要求量が前記要求量の上限値に達したら、前記制御装置ｊを除外した残りの制御装置について、前記複数種類の所定の処理それぞれの要求量の総数が０になるまで前記第１の処理を繰り返し実行し、前記複数の制御装置それぞれに割り当てられた前記複数種類の所定の処理それぞれの要求量の比率を、前記複数種類の所定の処理それぞれについて、前記複数の制御装置それぞれへの前
記要求の振り分けに用いられる重みとして決定する、
請求項６に記載の情報処理装置。
【請求項９】
前記処理部は、前記決定された重みが所定の閾値よりも低い制御装置について、前記決定された重みに対応する制御装置による前記決定された重みに対応する所定の処理の停止を判定する、
請求項４から８のいずれか一項に記載の情報処理装置。
【請求項１０】
前記処理部は、前記複数の制御装置のそれぞれの前記要求量の上限値を、所定の許容範囲を有する値として決定する、
請求項３、７、８のいずれか一項に記載の情報処理装置。
【請求項１１】
前記受信部は、前記複数の制御装置それぞれから、前記複数の制御装置それぞれが受信した前記複数種類の所定の処理それぞれの要求量をさらに受信し、
前記処理部は、前記複数の制御装置のそれぞれの前記要求量の上限値を、前記複数の制御装置それぞれが受信した前記複数種類の所定の処理それぞれの要求量の総和を前記複数の制御装置の台数で割った値とする、
請求項３、７、８のいずれか一項に記載の情報処理装置。
【請求項１２】
前記処理部は、前記複数の制御装置それぞれの前記要求量の上限値を、前記複数の制御装置それぞれの処理性能に応じて決定する、
請求項３、７、８のいずれか一項に記載の情報処理装置。
【請求項１３】
コンピュータが、
複数の制御装置間で振り分けられた要求のうち自装置に振り分けられた要求を受信する第１の受信部と、要求に応じて所定の処理を実行し、メッセージを生成し、前記メッセージの宛先装置を制御対象とする制御装置が自装置である場合には前記メッセージを前記宛先装置に送信し、前記メッセージの宛先装置を制御対象とする制御装置が他の制御装置である場合には前記メッセージを前記他の制御装置に転送する制御部と、を備える前記複数の制御装置それぞれについて、制御対象である宛先装置の情報を記憶する記憶部と、
前記複数の制御装置それぞれについて、前記所定の処理の要求の振り分けに用いられる重みを、制御対象とする宛先装置の数が多い制御装置ほど当該制御装置へ振り分けられる前記所定の処理の要求量が多くなるように、決定する処理部、
を備える負荷分散制御方法。
【請求項１４】
コンピュータが、
複数の制御装置間で振り分けられた要求のうち自装置に振り分けられた要求を受信する第１の受信部と、要求に応じて所定の処理を実行してメッセージを生成し、前記メッセージの宛先装置を制御対象とする制御装置が自装置である場合には前記メッセージを前記宛先装置に送信し、前記メッセージの宛先装置を制御対象とする制御装置が他の制御装置である場合には前記メッセージを前記他の制御装置に転送する制御部と、を備える前記複数の制御装置それぞれから、前記複数の制御装置それぞれが前記所定の処理を実行することによって生成されたメッセージについて、前記複数の制御装置それぞれから宛先装置に送信された第１のメッセージの量と、前記複数の制御装置それぞれから他の制御装置に転送された第２のメッセージの量と、を受信し、
前記複数の制御装置それぞれの、前記複数の制御装置それぞれによる前記所定の処理によって生成されたメッセージ総量に対する前記第１のメッセージの量の第１の比率又は前記第２のメッセージの量の第２の比率に基づいて、前記第１の比率が高い又は前記第２の比率が低い制御装置ほど当該制御装置に振り分けられる前記所定の処理の要求量が多くなるように、前記複数の制御装置それぞれについて、前記所定の処理の要求の振り分けに用
いられる重みを決定する、
負荷分散制御方法。
【請求項１５】
前記処理部は、
前記複数の制御装置それぞれが制御対象とする複数の宛先装置から１又は複数の宛先装置を選択し、
選択された宛先装置を制御対象とする制御装置が他の制御装置に変更された場合に、前記複数の制御装置間で転送されるメッセージ量が削減され、且つ、前記複数の制御装置それぞれから前記複数の宛先装置へ送信されるメッセージ量が前記複数の制御装置間で均等であることを含む条件を前記選択された宛先装置が満たすか否かを判定し、
前記選択された宛先装置が前記条件を満たす場合に、前記選択された宛先装置を制御対象とする制御装置を他の制御装置に変更することを判定する、
請求項１−１２のいずれか一項に記載の情報処理装置。
【請求項１６】
前記処理部は、
前記複数の宛先装置から、１又は複数の宛先装置を選択する事例を示す事例情報を複数生成し、
生成した前記複数の事例情報のそれぞれについて、選択された宛先装置を制御対象とする制御装置を他の制御装置に変更した場合について、前記重みを決定し、決定した重みに基づいて前記所定の処理の要求の振り分けをシミュレートして、前記複数の制御装置間で転送されるメッセージ量と、前記複数の制御装置それぞれから制御対象とする複数の宛先装置へ送信されるメッセージ量の前記複数の制御装置間でのばらつきを示す指標値と、を取得し、
前記条件として、前記ばらつきを示す指標値が所定の閾値以下である事例情報のうち最も制御装置間で転送されるメッセージ量が少ない事例情報を抽出し、抽出された事例情報において選択された１又は複数の宛先装置を制御対象とする制御装置を他の制御装置に変更することを判定する、
請求項１５に記載の情報処理装置。
【請求項１７】
前記複数の制御装置それぞれは、複数種類の所定の処理を実行して、メッセージを生成し、
前記処理部は、前記複数種類の所定の処理から、前記複数の制御装置それぞれから前記制御対象の複数の宛先装置に送信されたメッセージ量が前記複数の制御装置間で均等である第１の種類を取得し、前記第１の種類の所定の処理のメッセージの受信メッセージ量の多い上位の１又は複数の宛先装置を取得し、前記複数の宛先装置から前記取得した１又は複数の宛先装置を選択する事例情報を生成する、
請求項１６に記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、及び、負荷分散制御方法に関する。
【背景技術】
【０００２】
ネットワークの設定変更を柔軟に行えるようにすることを目的として、ＳＤＮ（Software Defined Networking）技術が開発されている。ＳＤＮでは、通信装置と、通信装置を
管理する通信制御装置と、通信装置と通信制御装置とを接続する制御ネットワークとが含まれる。ＳＤＮでは、通信装置は転送機能に特化している。通信装置は、通信制御装置によって管理されている。以降、ＳＤＮにおける通信装置をスイッチと称する。また、ＳＤＮにおける通信制御装置をコントローラと称する。
【０００３】
ＳＤＮでは、パス算出等のネットワーク制御ロジックは、コントローラ上の通信制御ソフトウェアに実装されている。例えば、通信制御ソフトウェアはパスを算出してコントローラにパスを通知し、コントローラがスイッチに対してパスの設定を行うソフトウェアである。以降、通信制御ソフトウェアを、アプリケーションと称する。
【０００４】
ＳＤＮにおけるアプリケーションの一つは、例えば、利用者から２点間のパス設定要求が入力された場合に、指定された２点間をつなぐスイッチへの制御メッセージを生成するパス設定アプリケーションである。
【０００５】
図２４は、分散型通信制御システムＰ１００の一例を示す図である。ＳＤＮにおいて、コントローラが１台である場合には、ネットワークの規模の拡大にコントローラの性能が追い付かなくなることがある。分散型通信制御システムＰ１００は、複数のコントローラを有し、複数のコントローラ間でスイッチ（図中、ＳＷ）の管理を分担することで、処理性能を向上させる。スイッチを制御するコントローラは、制御されるスイッチの「マスタ」と称される。１台のスイッチに対して、マスタとなるコントローラは１台である。また、１台のコントローラは、複数のスイッチのマスタとなり得る。図２４では、コントローラは、サーバＰ１とサーバＰ２上に実装されており、サーバＰ１とサーバＰ２とに備えられるコントローラは、それぞれ３台のスイッチのマスタを担っている。
【０００６】
例えば、利用者の組織又はエリア毎に、サービスのポリシや帯域制御に対する要望が異なるため、利用者の組織又はエリアそれぞれについて、パス設定アプリケーションが用意される。すなわち、分散型通信制御システムＰ１００では、複数種類のパス設定アプリケーションが存在し、同種のアプリケーションのインスタンスが１つ又は複数のサーバ上で動作する。インスタンスとは、サーバ上のアプリケーションのことである。図２４に示される例では、１種類のパス設定アプリケーションのインスタンスが、サーバＰ１とサーバＰ２上で動作している。
【０００７】
図２５は、分散型通信制御システムＰ１００内のパス設定アプリケーションに対してパス設定要求が入力された場合の制御メッセージの流れの一例を示す図である。図２５では、図２４と同じ分散型通信制御システムＰ１００が示されている。図２４に示される例は、サーバＰ１上のパス設定アプリケーションに、拠点Ｈａ−Ｈｂ間のパス設定要求が入力された場合の例である。
【０００８】
サーバＰ１上のパス設定アプリケーションによって、拠点Ｈａ−Ｈｂ間のパスとして、スイッチ＃１、スイッチ＃２を通過する経路が算出され、スイッチ＃１、スイッチ＃２宛てに、拠点Ｈａ−Ｈｂ間のパスを設定するための制御メッセージが生成される。スイッチ
＃１のマスタは、サーバＰ１上のコントローラである。スイッチ＃２のマスタはサーバＰ２上のコントローラである。
【０００９】
スイッチ＃１のマスタは制御メッセージを生成したインスタンスと同じサーバＰ１上のコントローラであるで、スイッチ＃１への制御メッセージは、サーバＰ１から宛先のスイッチ＃１に送信される。以降、制御メッセージを、単に、メッセージと称する。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２０００−２６８００４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかしながら、分散型通信制御システムＰ１００では、以下のような問題が生じることがある。分散型通信制御システムＰ１００では、１台のスイッチに対して複数のコントローラからメッセージが送信されると、スイッチの設定の整合性が取れなくなる可能性がある。スイッチの設定の整合性が取れなくなる可能性を低減するため、スイッチに対するメッセージは、該当のスイッチのマスタのコントローラから送信される仕様である。スイッチ＃２のマスタのコントローラは、メッセージを生成したインスタンスのサーバＰ１とは異なるサーバＰ２上のコントローラである。したがって、スイッチ＃２へのメッセージは、サーバＰ１からサーバＰ２に転送され、サーバＰ２からスイッチ＃２に送信される。
【００１２】
例えば、メッセージがスイッチ＃２に届くまでの時間は、コントローラ間のメッセージの転送の分、スイッチ＃１にメッセージが届くまでの時間よりも長くなる。これによって、スイッチ＃１には、拠点Ｈａ−Ｈｂ間のパスの設定が完了しているにもかかわらず、スイッチ＃２には拠点Ｈａ−Ｈｂ間のパスの設定がない状態が生じ、データ転送に悪影響が生じる恐れがある。したがって、コントローラ間のメッセージの転送は、分散型通信制御システムＰ１００の性能劣化の要因となるので、少ない方が好ましい。
【００１３】
図２６は、負荷分散装置を備える分散型通信制御システムの一例を示す図である。負荷分散装置Ｐ３は、各アプリケーションへの要求を受け付け、各サーバに均等に要求を振り分ける。これによって、各サーバのアプリケーションの処理負荷を平準化することができる。しかしながら、コントローラ間の制御メッセージの転送については考慮されておらず、アプリケーションへの要求を各サーバに均等に振り分けることによって、コントローラ間のメッセージの転送を低減させることができるとは限らない。
【００１４】
本発明の一態様は、アプリケーションの要求が分散される複数の制御装置について、制御装置間のメッセージの転送を低減可能な情報処理装置、及び、負荷分散制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１５】
本発明の態様の一つは、情報処理装置である。情報処理装置は、複数の制御装置それぞれについて、所定の処理の要求の振り分けに用いられる重みを、制御対象とする宛先装置の数が多い制御装置ほど当該制御装置に振り分けられる所定の処理の要求量が多くなるように、決定する処理部を備える。複数の制御装置それぞれは、複数の制御装置間で振り分けられた要求のうち自装置に振り分けられた要求を受信する第１の受信部と、要求に応じて所定の処理を実行し、メッセージを生成し、メッセージの宛先装置を制御対象とする制御装置が自装置である場合にはメッセージを当該宛先装置に送信し、メッセージの宛先装置を制御対象とする制御装置が他の制御装置である場合にはメッセージを当該他の制御装置に転送する制御部と、を備える。
【発明の効果】
【００１６】
開示の情報処理装置、及び、負荷分散制御方法によれば、アプリケーションの要求が分散される複数の制御装置について、制御装置間のメッセージの転送を低減することができる。
【図面の簡単な説明】
【００１７】
【図１】図１は、第１実施形態に係る分散型通信制御システムのシステム構成の一例を示す図である。
【図２】図２は、サーバのハードウェア構成の一例である。
【図３】図３は、サーバの機能構成の一例を示す図である。
【図４】図４は、負荷分散装置によって用いられる重みの決定処理の具体例において想定される分散型通信制御システムの一例を示す図である。
【図５】図５は、図４に示される例におけるサーバ１の要求量及びメッセージ量の計測結果の一例である。
【図６】図６は、図４に示される例におけるサーバ２の要求量及びメッセージ量の計測結果の一例である。
【図７】図７は、具体例における、各サーバにおける各アプリケーションについての直接比率を示す図である。
【図８】図８は、具体例における、各アプリケーションの発生要求量の一例である。
【図９】図９は、具体例に係る各サーバの収容量の一例である。
【図１０】図１０は、具体例に係る線形計画問題の解Ｘｉｊの一例を示す図である。
【図１１】図１１は、具体例に係る、負荷分散装置に通知されるラウンドロビンの重みＷｉｊの一例である。
【図１２】図１２は、制御部の、負荷分散装置のラウンドロビンの重みの決定処理のフローチャートの一例である。
【図１３】図１３は、各アプリケーションの要求量の状態が同条件の場合の、比較例の各サーバのメッセージ量と、具体例で算出された重みＷｉｊを用いた場合の各サーバのメッセージ量との一例を示す図である。
【図１４】図１４は、第１実施形態の変形例に係る線形計画問題の定数Ａｉｊの一例を示す図である。
【図１５】図１５は、第２実施形態に係る、負荷分散装置のラウンドロビンの重みの決定処理の一例を示す図である。
【図１６】図１６は、第２実施形態に係る制御部の、負荷分散装置のラウンドロビンの重みの決定処理のフローチャートの一例である。
【図１７】図１７は、第３実施形態に係るサーバの収容量Ｃｊの一例を示す図である。
【図１８】図１８は、図１７のサーバの収容量Ｃｊの値の設定について、線形計画法で算出された、サーバｊに割り当てられるアプリケーションｉの要求量Ｘｉｊの値の一例を示す図である。
【図１９】図１９は、図１８のサーバｊに割り当てられるアプリケーションｉの要求量Ｘｉｊの値に対応する、負荷分散装置のラウンドロビンの重みの一例を示す図である。
【図２０】図２０は、各アプリケーションの要求量の状態が同条件の場合の、図１９で示される重みＷｉｊが用いられて、各アプリケーションの要求がサーバ１とサーバ２とに振り分けられた場合の、サーバ１とサーバ２とのメッセージ量の一例を示す図である。
【図２１】図２１は、第４実施形態に係る制御部の処理の、負荷分散装置のラウンドロビンの重みの決定処理のフローチャートの一例である。
【図２２】図２２は、第５実施形態に係る各アプリケーションについて、直接比率が最も高いサーバの一例を示す図である。
【図２３】図２３は、各アプリケーションの要求量の状態が同条件の場合の、比較例での各サーバのメッセージ量と、各アプリケーションについて、図２２で示されるサーバに要求が振り分けられた場合の、各サーバのメッセージ量の一例を示す図である。
【図２４】図２４は、分散型通信制御システムの一例を示す図である。
【図２５】図２５は、分散型通信制御システム内のパス設定アプリケーションに対してパス設定要求が入力された場合の制御メッセージの流れの一例を示す図である。
【図２６】図２６は、負荷分散装置を備える分散型通信制御システムの一例を示す図である。
【図２７】図２７は、第６実施形態に係る具体例において想定される分散型通信制御システムの一例を示す図である。
【図２８】図２８は、第６実施形態の具体例に係るマスタ情報の一例である。
【図２９】図２９は、第６実施形態の具体例に係るマスタ変更情報の一例を示す図である。
【図３０】図３０は、第６実施形態の具体例に係るスイッチリストの一例を示す図である。
【図３１】図３１は、第６実施形態の具体例に係るアプリケーションｉのコントローラｊにおける直接比率Ａｉｊの一例を示す図である。
【図３２】図３２は、第６実施形態の具体例に係るアプリケーションの発生要求量の一例を示す図である。
【図３３】図３３は、第６実施形態の具体例に係る負荷分散装置のラウンドロビンの重みＷｉｊの一例である。
【図３４】図３４は、第６実施形態の具体例に係るシミュレーション結果の一例を示す図である。
【図３５】図３５は、第６実施形態の具体例に係るマスタ変更情報＃２の適用後のマスタ情報の一例を示す図である。
【図３６】図３６は、第６実施形態に係るマスタ変更決定処理のフローチャートの一例である。
【図３７Ａ】図３７Ａは、シミュレーション処理のフローチャートの一例である。
【図３７Ｂ】図３７Ｂは、シミュレーション処理のフローチャートの一例である。
【図３８】図３８は、第７実施形態の具体例に係るアプリケーションｉのコントローラｊにおける直接比率Ａｉｊの一例を示す図である。
【図３９】図３９は、第７実施形態の具体例に係る各アプリケーションの直接比率の分散値の一例を示す図である。
【図４０】図４０は、第７実施形態の具体例に係るアプリケーション＃１の各スイッチへの送信メッセージ量の一例である。
【図４１】図４１は、第７実施形態に係るマスタ変更決定処理の一例を示す図である。
【発明を実施するための形態】
【００１８】
以下、図面に基づいて、本発明の実施の形態を説明する。以下の実施形態の構成は例示であり、本発明は実施形態の構成に限定されない。
【００１９】
＜第１実施形態＞
図１は、第１実施形態に係る分散型通信制御システム１００のシステム構成の一例を示す図である。分散型通信制御システム１００は、サーバ１、サーバ２、負荷分散装置３、複数のスイッチ９、外部クライアント８を備える。サーバ１、サーバ２には、それぞれ、アプリケーションとコントローラとが実装されている。負荷分散装置３は、サーバ１、サーバ２に対して、外部クライアント８からのアプリケーションへの要求を、重みづけラウンドロビンで振り分けて送信する。サーバ１、サーバ２は、それぞれ、複数台のスイッチ９のマスタとして動作する。
【００２０】
コントローラ間のメッセージの転送は、メッセージを生成するインスタンスと、メッセージの宛先スイッチ９のマスタであるコントローラとが、異なるサーバ上に存在する場合に発生する。したがって、メッセージを生成するインスタンスが存在するサーバと、メッセージの宛先スイッチ９のマスタであるコントローラが存在するサーバとが同じサーバになる可能性が高いほど、コントローラ間のメッセージの転送が発生する可能性は低くなる。
【００２１】
メッセージを生成するインスタンスと、メッセージの宛先スイッチ９のマスタであるコントローラと、が存在するサーバが同じである可能性を左右する要因の一つは、各コントローラの、各コントローラがマスタとして制御対象とするスイッチの数である。したがって、制御対象とするスイッチの数が多いコントローラに、より多くの要求が振り分けられることによって、メッセージを生成するインスタンスと、メッセージの宛先スイッチ９のマスタであるコントローラと、が存在するサーバが同じになる可能性を高くすることができる。
【００２２】
また、メッセージを生成するインスタンスと、メッセージの宛先スイッチ９のマスタであるコントローラと、が存在するサーバが同じになる可能性を左右する他の要因の一つは、アプリケーションの制御対象のスイッチ９がマスタとするコントローラの偏りがある。アプリケーションは複数種類存在し、種類ごとに、制御対象とするスイッチ９に偏りがある。例えば、所定のアプリケーションが、特定のエリアに存在するスイッチを制御対象とする場合には、当該エリア内のスイッチ９がマスタとするコントローラに偏りが生じる。
【００２３】
アプリケーションの制御対象のスイッチがマスタとするコントローラの偏りと、コントローラがマスタとして制御対象とするスイッチの数とは、スイッチに直接転送されるメッセージ、又は、他のコントローラに転送されるメッセージ、の比率に投影される。第１実施形態では、線形計画法を用いて、各サーバにおける、スイッチに直接転送されるメッセージ量の比率に基づいて、スイッチに直接転送されるメッセージ量が最大となるような、負荷分散装置３のラウンドロビンで用いられる重みを決定する。ラウンドロビンの重みは、各アプリケーションについて決定される。
【００２４】
第１実施形態では、ラウンドロビンの重みの決定をサーバ１が行う。ただし、これに限定されず、ラウンドロビンの重みの決定は、サーバ２、負荷分散装置３のいずれが行ってもよい。ラウンドロビンの重みを決定する装置は、「情報処理装置」の一例である。第１実施形態のサーバ１は、「情報処理装置」の一例である。また、サーバ１、サーバ２は、「制御装置」の一例である。スイッチ９は、「宛先装置」の一例である。
【００２５】
＜装置構成＞
図２は、サーバ１のハードウェア構成の一例である。サーバ１は、例えば、専用のコンピュータである。サーバ１は、ＣＰＵ（Central Processing Unit）１０１、主記憶装置
１０２、補助記憶装置１０３、ネットワークインタフェース１０４を備える。また、これらはバス１０５により互いに接続されている。
【００２６】
補助記憶装置１０３は、ＯＳ（Operating System）、様々なプログラムや、各プログラムの実行に際してＣＰＵ  １０１が使用するデータを格納する。補助記憶装置１０３は、例えば、ＥＰＲＯＭ（Erasable Programmable ROM）、フラッシュメモリ、又はハードデ
ィスクドライブ（Hard Disk Drive）等の不揮発性のメモリである。補助記憶装置１０３
は、例えば、コントローラ用のプログラム１０３Ｐ、パス設定のアプリケーションを記憶する。
【００２７】
主記憶装置１０２は、ＣＰＵ  １０１に、補助記憶装置１０３に格納されているプログ
ラムをロードする記憶領域および作業領域を提供したり、バッファとして用いられたりする記憶装置である。主記憶装置１０２は、例えば、ＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）のような半導体メモリを含む。主記憶装置１０２は、「記憶部」の一例である。
【００２８】
ＣＰＵ  １０１は、補助記憶装置１０３に保持されたＯＳや様々なアプリケーションプログラムを主記憶装置１０２にロードして実行することによって、様々な処理を実行する。ＣＰＵ  １０１は、１つに限られず、複数備えられてもよい。ＣＰＵ  １０１は、制御装置」の「制御部」、「情報処理装置」の「処理部」の一例である。
【００２９】
ネットワークインタフェース１０４は、制御ネットワークとの情報の入出力を行うインタフェースである。ネットワークインタフェース１０４は、有線のネットワークと接続するインタフェースであってもよいし、無線のネットワークと接続するインタフェースであってもよい。ネットワークインタフェース１０４は、例えば、ＮＩＣ（Network Interface Card）等である。ネットワークインタフェース１０４は、「制御装置」の「第１の受信部」、「情報処理装置」の「受信部」の一例である。
【００３０】
なお、図２に示されるサーバ１のハードウェア構成は、一例であり、上記に限られず、実施の形態に応じて適宜構成要素の省略や置換、追加が可能である。例えば、サーバ１は、可搬記録媒体駆動装置を備え、可搬記録媒体に記録されたプログラムを実行してもよい。可搬記録媒体は、例えば、ＳＤカード、ｍｉｎｉＳＤカード、ｍｉｃｒｏＳＤカード、ＵＳＢ（Universal Serial Bus）フラッシュメモリ、ＣＤ（Compact Disc）、ＤＶＤ(Digital Versatile Disc)、Ｂｌｕ−ｒａｙ（登録商標）  Ｄｉｓｃ、又はフラッシュメモリカードのような記録媒体である。なお、サーバ２、負荷分散装置３も、図２に示されるハードウェア構成と同様に、ＣＰＵ、主記憶装置、補助記憶装置、ネットワークインタフェースを備える。
【００３１】
図３は、サーバ１の機能構成の一例を示す図である。サーバ１は、機能構成要素として、要求受信部１１、メッセージ転送部１２、スイッチ設定部１３、情報収集部１４、制御部１５、計測結果受信部１６、重み通知部１７、アプリ要求量記憶部１８Ａ、メッセージ量記憶部１８Ｂ、マスタ情報記憶部１８Ｃ、アプリケーション１９を備える。要求受信部１１、メッセージ転送部１２、スイッチ設定部１３、情報収集部１４、制御部１５、計測結果受信部１６、重み通知部１７、アプリ要求量記憶部１８Ａ、メッセージ量記憶部１８Ｂ、マスタ情報記憶部１８Ｃは、例えば、ＣＰＵ  １０１がコントローラ用プログラム１０３Ｐを実行することによって達成される機能構成要素である。
【００３２】
要求受信部１１は、負荷分散装置３によってサーバ１に振り分けられる、アプリケーション１９のいずれかに対する要求を受信する。要求受信部１１は、要求を該当するアプリケーション１９に出力する。また、要求受信部１１は、アプリケーション１９ごとに、受信した要求量をアプリケーション要求量記憶部１８Ａに記録する。
【００３３】
アプリケーション１９は、例えば、パス設定アプリケーションである。例えば、各利用組織、各エリアのポリシや帯域制御の要望に応じて、各利用組織、各エリアについてアプリケーション１９は備えられる。アプリケーション１９は、要求受信部１１から要求の入力を受ける。アプリケーション１９は、要求に応じて所定の処理を行い、処理結果に応じて、設定対象となるスイッチ９の識別情報を含むメッセージを生成し、メッセージ転送部１２に出力する。
【００３４】
第１実施形態では、アプリケーション１９は、パス設定アプリケーションであることが想定されている。したがって、アプリケーション１９への要求は、例えば、２拠点間のパ
スの設定要求である。また、アプリケーション１９は、要求によって指定された２拠点かのパスの経路を算出する処理を行う。アプリケーション１９の処理結果は、算出した経路情報である。経路情報には、例えば、経路上のスイッチ９の識別情報と、経路上の各スイッチ９の出力インタフェース等が含まれる。したがって、アプリケーション１９によって生成されるメッセージには、第１実施形態では、パス計算の結果得られた経路上のスイッチ９の識別情報が含まれる。なお、経路上のスイッチは、１又は複数台であるので、１つの要求について生成されるメッセージの数は、経路上のスイッチの数となる。
【００３５】
また、第１実施形態では、スイッチ９を制御するプロトコルとして、ＯｐｅｎＦｌｏｗが用いられていることが想定されている。そのため、アプリケーション１９によって生成されるメッセージは、ＯｐｅｎＦｌｏｗのメッセージである。
【００３６】
メッセージ転送部１２は、アプリケーション１９からメッセージの入力を受ける。メッセージ転送部１２は、マスタ情報を参照して、メッセージの宛先スイッチ９に応じて、メッセージをスイッチ設定部１３又はサーバ２に送信する。マスタ情報は、スイッチの識別情報と当該スイッチのマスタとなるコントローラの識別情報との対応情報である。スイッチの識別情報、及び、マスタとなるコントローラの識別情報は、例えば、スイッチ名／コントローラ名、ＩＰ（Internet Protocol）アドレスである。
【００３７】
メッセージの宛先スイッチ９のマスタであるコントローラが、自サーバ１に搭載されている場合には、メッセージ転送部１２は、メッセージをスイッチ設定部１３に出力する。メッセージの宛先スイッチ９のマスタであるコントローラが、他のサーバ２に搭載されている場合には、メッセージ転送部１２は、メッセージをサーバ２に転送する。
【００３８】
メッセージ転送部１２は、スイッチ設定部１３に転送したメッセージ量と、サーバ２に転送したメッセージ量とを、アプリケーション１９ごとに、メッセージ量記憶部１８Ｂに記録する。以降、スイッチ設定部１３に転送されるメッセージを、直接メッセージ、と称する。また、他のサーバ２に転送されるメッセージを、間接メッセージ、と称する。
【００３９】
スイッチ設定部１３は、メッセージ転送部１２又は他のサーバ２から、メッセージの入力を受ける。スイッチ設定部１３は、自装置がマスタである制御対象のスイッチ９に、メッセージを送信する。
【００４０】
情報収集部１４は、所定の周期で、アプリケーション要求量記憶部１８Ａ、メッセージ量記憶部１８Ｂから、アプリケーション毎の、要求量と直接メッセージ量と間接メッセージ量とを取得し、制御部１５に出力する。アプリケーション毎の、要求量と直接メッセージ量と間接メッセージ量との取得周期は、例えば、分散型通信制御システム１００の管理者によって、秒単位で設定される。
【００４１】
計測結果受信部１６は、所定の周期で他のサーバ２から送信される、サーバ２のアプリケーション毎の要求量と直接メッセージ量と間接メッセージ量とを受信し、制御部１５に出力する。
【００４２】
制御部１５は、情報収集部１４からサーバ１におけるアプリケーション毎の要求量と直接メッセージ量と間接メッセージ量との入力を受ける。また、制御部１５は、計測結果受信部１６から、サーバ２におけるアプリケーション毎の要求量と直接メッセージ量と間接メッセージ量との入力を受ける。
【００４３】
制御部１５は、サーバ１、サーバ２それぞれにおけるアプリケーション毎の要求量と直接メッセージ量と間接メッセージ量とに基づいて、負荷分散装置３のラウンドロビンの重
みを決定する。重みの決定の処理の詳細については、後述される。制御部１５は、決定した重みを重み通知部１７に出力する。
【００４４】
重み通知部１７は、制御部１５から、負荷分散装置３のラウンドロビンの重みの入力を受け、負荷分散装置３に通知する。
【００４５】
アプリケーション要求量記憶部１８Ａ、メッセージ量記憶部１８Ｂ、マスタ情報記憶部１８Ｃは、それぞれ、サーバ１の主記憶装置１０２の記憶領域内の所定の領域に相当する。アプリケーション要求量記憶部１８Ａは、負荷分散装置３からサーバ１に入力される要求量をアプリケーション毎に記憶する。メッセージ量記憶部１８Ｂは、直接メッセージ量、間接メッセージ量を、アプリケーション毎に記憶する。アプリケーション要求量記憶部１８Ａ、メッセージ量記憶部１８Ｂがそれぞれ保持する値は、例えば、情報収集部１４による情報の取得によって、リセットされてもよいし、リセットされずに保持されてもよい。アプリケーション要求量記憶部１８Ａ及びメッセージ量記憶部１８Ｂがそれぞれ保持する値が情報収集部１４による情報の取得によってリセットされない場合には、情報収集部１４は、前回の読み出した値との差分を、所定周期内の、要求量、直接メッセージ量、間接メッセージ量として取得する。
【００４６】
マスタ情報記憶部１８Ｃは、マスタ情報を記憶する。マスタ情報は、例えば、分散型通信制御システム１００の管理者によって、予め設定される。または、マスタ情報は、コントローラ間のネゴシエーションによって決定されてもよい。マスタ情報の決定方法は、これらに限定されない。  
【００４７】
なお、サーバ２の機能構成は、サーバ１の機能構成のうち、制御部１５、計測結果受信部１６、重み通知部１７以外の構成要素を含む構成である。サーバ２において、情報収集部１４は、所定の周期でアプリケーション要求量記憶部１８Ａとメッセージ量記憶部１８Ｂとから取得した情報を、サーバ１に送信する。
【００４８】
＜ラウンドロビンの重みの決定処理の詳細＞
図４は、負荷分散装置３によって用いられる重みの決定処理の具体例において想定される分散型通信制御システム１００の一例を示す図である。スイッチ９によって形成されるネットワークは、データセンタ（ＤＣ）＃１、データセンタ＃２、ＷＡＮの３つのエリアに分けられる。ＤＣ＃１、ＤＣ＃２、ＷＡＮそれぞれのエリアに対して、アプリケーションが用意されている。負荷分散装置３、サーバ１、サーバ２には、ＤＣ＃１、ＤＣ＃２、ＷＡＮそれぞれに向けたＤＣ＃１制御アプリケーション、ＤＣ＃２制御アプリケーション、ＷＡＮ制御アプリケーションのインスタンスが存在する。
【００４９】
（ステップ１）
サーバ１の制御部１５は、サーバ１、サーバ２の要求量及びメッセージ量の計測結果を取得する。具体例では、図５、図６の結果が取得されたことを想定する。
【００５０】
図５は、図４に示される例におけるサーバ１の要求量及びメッセージ量の計測結果の一例である。図５から、サーバ１のＤＣ＃１制御アプリケーションは、２０の要求量を受信し、２０の要求量に対して合計で６０のメッセージを生成していることが示される。サーバ１のＤＣ＃１制御アプリケーションが生成したメッセージのうち、４０は直接メッセージであり、２０は間接メッセージである。
【００５１】
サーバ１のＤＣ＃２制御アプリケーションは、１０の要求量を受信し、１０の要求量に対して合計で４０のメッセージを生成していることが示される。サーバ１のＤＣ＃２制御アプリケーションが生成したメッセージのうち、１０は直接メッセージであり、３０は間
接メッセージである。
【００５２】
サーバ１のＷＡＮ制御アプリケーションは、５の要求量を受信し、５の要求量に対して合計で１０のメッセージを生成していることが示される。サーバ１のＷＡＮ制御アプリケーションが生成したメッセージのうち、５は直接メッセージであり、５は間接メッセージである。
【００５３】
図６は、図４に示される例におけるサーバ２の要求量及びメッセージ量の計測結果の一例である。図６から、サーバ２のＤＣ＃１制御アプリケーションは、２０の要求量を受信し、２０の要求量に対して合計で６０のメッセージを生成していることが示される。サーバ２のＤＣ＃１制御アプリケーションが生成したメッセージのうち、２０は直接メッセージであり、４０は間接メッセージである。
【００５４】
サーバ２のＤＣ＃２制御アプリケーションは、１０の要求量を受信し、１０の要求量に対して合計で４０のメッセージを生成していることが示される。サーバ２のＤＣ＃２制御アプリケーションが生成したメッセージのうち、３０は直接メッセージであり、１０は間接メッセージである。
【００５５】
サーバ２のＷＡＮ制御アプリケーションは、５の要求量を受信し、５の要求量に対して合計で１０のメッセージを生成していることが示される。サーバ１のＷＡＮ制御アプリケーションが生成したメッセージのうち、５は直接メッセージであり、５は間接メッセージである。
【００５６】
なお、要求量、メッセージ量の単位は、それぞれ、例えば、個数であってもよいし、単位時間における流入／流出量（ｋｂｐｓ）等であってもよい。
【００５７】
（ステップ２）
サーバ１の制御部１５は、サーバ１及びサーバ２から収集された要求量とメッセージ量とに基づいて、アプリケーションとサーバとの各組合せについて、メッセージ総量に対する直接メッセージ量の比率を算出する。所定のサーバ上の所定のアプリケーションのメッセージの総量に対する直接メッセージ量の比率を、直接比率、と称する。
【００５８】
図７は、具体例における、各サーバ上の各アプリケーションについての直接比率を示す図である。図５に示される例において、サーバ１のＤＣ＃１制御アプリケーションのメッセージ総数は６０であり、直接メッセージ量は４０であるので、サーバ１上のＤＣ＃１制御アプリケーションについての直接比率は、４０／６０＝２／３となる。図５に示される例において、サーバ２のＤＣ＃１制御アプリケーションのメッセージ総数は６０であり、直接メッセージ量は２０であるので、サーバ２上のＤＣ＃１制御アプリケーションについての直接比率は、２０／６０＝１／３となる。ＤＣ＃２制御アプリケーション、ＷＡＮアプリケーションについても同様に、各サーバについて、直接比率が求められる。
【００５９】
（ステップ３）
サーバ１の制御部１５は、サーバ１及びサーバ２から収集されたアプリケーション毎の要求量に基づいて、各アプリケーションから発生した要求量を求める。アプリケーションから発生した要求量を、以降、発生要求量、と称する。
【００６０】
図８は、具体例における、各アプリケーションの発生要求量の一例である。各アプリケーションの発生要求量は、各サーバから収集された当該アプリケーションの要求量の総和として求められる。例えば、ＤＣ＃１制御アプリケーションについて、図５より、サーバ１へ振り分けられた要求量は２０、図６より、サーバ２へ振り分けられた要求量は２０で
あるので、ＤＣ＃１制御アプリケーションの発生要求量は、２０＋２０＝４０と求められる。ＤＣ＃２制御アプリケーション、ＷＡＮ制御アプリケーションについても同様にして、発生要求量が求められる。
【００６１】
（ステップ４）
サーバ１の制御部１５は、サーバ１及びサーバ２から収集されたアプリケーション毎の要求量に基づいて、各サーバが収容可能な要求量を求める。サーバが収容可能な要求量を、以降、収容量、と称する。
【００６２】
図９は、具体例に係る各サーバの収容量の一例である。第１実施形態では、各サーバの収容量は、分散型通信制御システム１００内の全アプリケーションの発生要求量の総量をサーバの台数で割った値として求められる。
【００６３】
具体例では、図８から、全アプリケーションの発生要求量の総量は、ＤＣ＃１制御アプリケーション、ＤＣ＃２制御アプリケーション、ＷＡＮアプリケーションそれぞれの発生要求量を足し合わせて、４０＋２０＋１０＝７０と求められる。具体例では、サーバの台数は、サーバ１とサーバ２との２台である。したがって、具体例の各サーバの収容量は、７０／２＝３５と求められる。
【００６４】
（ステップ５）
サーバ１の制御部１５は、直接比率、各アプリケーションの発生要求量、各サーバの収容量を用いて、線形計画問題を解く。第１実施形態では、目的関数と制約条件とは以下の通りに設定される。
【数１】
2017215933.tif 000003
【００６５】
目的関数は、各サーバ及び各アプリケーションの直接メッセージの総量を推定する関数である。制約条件１は、各サーバに割り当てられる要求量に上限の制約を与えるものである。制約条件２は、各アプリケーションの発生要求量を計測時と同じ状態に制限するものである。
【００６６】
サーバ１の制御部１５は、上記制約条件のもとで、目的関数が最大となる線形計画問題を解く。線形計画問題の解として、目的関数が最大となる場合のＸｉｊの値が得られる。すなわち、サーバ１の制御部１５は、計測時と同じ要求の発生状態であり、サーバの収容量に上限がある状態において、直接メッセージの総量が最大となるように、各アプリケーションについて、各サーバへ割り当てられる要求量を求める。直接メッセージの総量が最大となる場合には、間接メッセージ、すなわち、コントローラ間で転送されるメッセージの量が最小となる。
【００６７】
具体例では、Ａｉｊの値は、図７に示される各サーバ上の各アプリケーションについて
の直接比率の値となる。Ｒｉの値は、図８に示される各アプリケーションの発生要求量の値となる。Ｃの値は、図９に示される各サーバの収容量の値となる。
【００６８】
図１０は、具体例に係る線形計画問題の解Ｘｉｊの一例を示す図である。サーバ１には、ＤＣ＃１制御アプリケーションの要求が３５割り当てられる。サーバ２には、ＤＣ＃１制御アプリケーションの要求が５、ＤＣ＃２制御アプリケーションの要求が２０、ＷＡＮ制御アプリケーションの要求が１０割り当てられる。
【００６９】
（ステップ６）
サーバ１の制御部１５は、線形計画問題の解Ｘｉｊから、各アプリケーションについて、各サーバへ割り当てられる要求の割合を求める。サーバ１の制御部１５は、各アプリケーションについての、各サーバへ割り当てられる要求の割合を、負荷分散装置３がラウンドロビンで用いる重みとして、重み通知部１７を通じて、負荷分散装置３に通知する。
【００７０】
アプリケーションｉについてサーバｊへの要求の振り分けの重みＷｉｊは、Ｗｉｊ＝Ｘｉｊ／Ｒｉで求められる。Ｒｉは、アプリケーションｉの発生要求量である。
【００７１】
図１１は、具体例に係る、負荷分散装置３に通知されるラウンドロビンの重みＷｉｊの一例である。負荷分散装置３は、以降、ＤＣ＃１制御アプリケーションの要求を、サーバ１に重み７／８で、サーバ２に重み１／８で、振り分け、ＤＣ＃２制御アプリケーション及びＷＡＮ制御アプリケーションの要求を、すべてサーバ２に振り分けるようになる。
【００７２】
サーバ１の制御部１５は、以上のステップ１〜６を所定の周期で繰り返し実行する。発生する要求量の変化に応じて、負荷分散装置３のラウンドロビンの重みも変化するので、要求量の変化に応じて、コントローラ間で転送されるメッセージが最小となるように調整される。直接メッセージは「第１のメッセージ」の一例である。間接メッセージは、「第２のメッセージ」の一例である。「直接比率」は、「第１の比率」の一例である。
【００７３】
＜処理の流れ＞
図１２は、サーバ１の制御部１５の、負荷分散装置３のラウンドロビンの重みの決定処理のフローチャートの一例である。図１２に示される処理は、サーバ１の制御部１５に、サーバ１及びサーバ２の要求量及びメッセージ量の情報が入力される周期と同じ周期で繰り返し実行される。図１２に示される処理の実行主体は、ＣＰＵ  １０１であるが、便宜上、機能構成要素である制御部１５を主体として説明する。
【００７４】
ＯＰ１では、制御部１５は、サーバとアプリケーションとの組合せごとの、要求量、直接メッセージ量、間接メッセージ量、を情報収集部１４から取得する。
【００７５】
ＯＰ２では、制御部１５は、サーバとアプリケーションとの組合せごとの直接比率Ａｉｊを求める。ＯＰ３では、制御部１５は、アプリケーションごとに発生要求量Ｒｉを求める。ＯＰ４では、制御部１５は、サーバの収容量Ｃを求める。ＯＰ５では、制御部１５は、線形計画問題を解く。
【００７６】
ＯＰ６では、制御部１５は、アプリケーションｉについて、サーバｊへの要求の振り分けの重みＷｉｊを算出し、負荷分散装置３に通知する。その後、図１２に示される処理が終了する。
【００７７】
＜第１実施形態の作用効果＞
図１３は、各アプリケーションの要求量の状態が同条件の場合の、比較例のサーバ１とサーバ２とのメッセージ量と、具体例で算出された重みＷｉｊを用いた場合のサーバ１と
サーバ２とのメッセージ量との一例を示す図である。図１３における比較例は、要求が、サーバ１とサーバ２との間で均等に振り分けられた場合の例である。図１３における比較例のサーバ１、サーバ２の計測結果は、それぞれ、図５、図６で示されるものと同じである。
【００７８】
比較例では、サーバ１における全アプリケーションの間接メッセージの量の合計は５５、サーバ２における全アプリケーションの間接メッセージの量の合計は５５である。比較例でのサーバ１とサーバ２との間接メッセージ量の合計は、５５＋５５＝１１０である。
【００７９】
具体例で算出された重みＷｉｊが用いられた場合では、サーバ１における全アプリケーションの間接メッセージの量の合計は３５、サーバ２における全アプリケーションの間接メッセージの量の合計は４０である。具体例では、サーバ１とサーバ２との間接メッセージ量の合計は、３５＋４０＝７５である。
【００８０】
したがって、第１実施形態によれば、負荷分散装置３のラウンドロビンの重みを変えることによって、コントローラ間で転送されるメッセージ（間接メッセージ）の量を低減できる。また、図１３では、具体例のサーバ１の要求量の合計とサーバ２の要求量の合計とは同じである。これは、線形計画問題において、サーバの収容量の上限を制約条件として設けたことに起因する。したがって、第１実施形態によれば、コントローラ間で転送されるメッセージの量を低減しつつ、サーバ間の処理負荷を分散させることができる。また、線形計画法は既存のライブラリを利用可能であるので、実装が比較的容易である。
【００８１】
なお、第１実施形態では、直接比率を線形計画問題の定数Ａｉｊとし、目的関数を最大にするような解Ｘｉｊを求め、解Ｘｉｊに基づいて、負荷分散装置３のラウンドロビンの重みが決定される。これに代えて、サーバｊにおけるアプリケーションｉのメッセージ総量に対する間接メッセージの比率である間接比率を線形計画問題の定数Ａｉｊとしてもよい。この場合には、目的関数は、コントローラ間で転送されるメッセージの量（間接メッセージ量）となるので、解Ｘｉｊは目的関数を最小にするものとして算出される。負荷分散装置３のラウンドロビンの重みは、解Ｘｉｊから得られた各アプリケーションについて各サーバに割り当てられる要求の割合となる。
【００８２】
＜第１実施形態の変形例＞
第１実施形態では、線形計画問題の定数Ａｉｊに、各アプリケーションにおける各サーバの直接比率が用いられる。これに代えて、線形計画問題の定数として、各アプリケーションの設定対象となるスイッチ９が予め判明しているのであれば、その中での各コントローラがマスタであるスイッチの割合を、線形計画問題の定数Ａｉｊとしてもよい。例えば、図４に示される例では、ＤＣ＃１制御アプリケーションにおいて、設定対象のスイッチ３台のうち、サーバ１がマスタであるスイッチは２台、サーバ２がマスタであるスイッチは１台である。ＤＣ＃２制御アプリケーションにおいて、設定対象のスイッチ４台のうち、サーバ１がマスタであるスイッチは１台、サーバ２がマスタであるスイッチは３台である。ＷＡＮ制御アプリケーションにおいて、設定対象のスイッチ４台のうち、サーバ１がマスタであるスイッチは２台、サーバ２がマスタであるスイッチは２台である。
【００８３】
図１４は、第１実施形態の変形例に係る線形計画問題の定数Ａｉｊの一例を示す図である。図１４に示される例は、図４のシステム構成を前提とする。図１４に示される例の線形計画問題の定数Ａｉｊは、各アプリケーションにおける、各コントローラがマスタであるスイッチの割合である。図１４に示される例の線形計画問題の定数Ａｉｊの値は、図７に示される第１実施形態に係る線形計画問題の定数Ａｉｊの値と一致しているので、線形計画問題の解として、図１０に示される例と同じ値が得られる。したがって、第１実施形態の変形例によっても、コントローラ間で転送されるメッセージ量を低減させることがで
きる。
【００８４】
＜第２実施形態＞
第２実施形態では、線形計画法ではなく、ヒューリスティックアルゴリズムを用いて、負荷分散装置３が、各アプリケーションについて要求を各サーバに割り当てる際に用いるラウンドロビンの重みが決定される。ヒューリスティックアルゴリズムとは、必ずしも正しい答えを導けるわけではないが、ある程度のレベルで正解に近い解を得ることができる方法である。
【００８５】
第２実施形態では、第１実施形態と共通する説明は省略される。第２実施形態では、システム構成、各装置のハードウェア構成、及び、機能構成は、第１実施形態と同様である。第２実施形態では、機能構成のうち、制御部１５の処理が第１実施形態と異なる。
【００８６】
図１５は、第２実施形態に係る、負荷分散装置３のラウンドロビンの重みの決定処理の一例を示す図である。図１５では、図４に示される具体例が想定されている。第２実施形態では、制御部１５は、第１実施形態のラウンドロビンの重み決定処理のステップ１（情報収集）、ステップ２（直接比率）、ステップ３（各アプリケーションの発生要求量算出）、ステップ４（各サーバの収容量算出）を実行する。以降の処理は、以下の通りである。
【００８７】
図１５に示されるテーブルは、各アプリケーションｉについて、要求量ｒ（ｉ）と、各サーバｊの直接比率ａ（ｉ，ｊ）とを含むテーブルが示されている。各サーバｊの直接比率ａ（ｉ，ｊ）は、値の大きい順位でソートされている。アプリケーションｉの要求量ｒ（ｉ）の初期値は、アプリケーションｉの要求発生量Ｒｉである。さらに、図１５では、サーバｊの収容量ｃ（ｊ）が示されている。サーバｊの収容量ｃ（ｊ）の初期値は、全アプリケーションの要求量の総量をコントローラの台数で割って得られる収容量Ｃである。直接比率ａ（ｉ，ｊ）、要求量ｒ（ｉ）の初期値Ｒｉ、サーバの収容量ｃ（ｊ）の初期値Ｃは、それぞれ、図７、図８、図９に示される例と同じ値である。
【００８８】
まず、制御部１５は、最も高い直接比率ａ（２，２）（＝３／４）の、ＤＣ＃２制御アプリケーションとサーバ２との組合せを選択し、サーバ２に、サーバ２が収容できるだけのＤＣ＃２制御アプリケーションの要求量を割り当てる。図１５では、サーバ２の収容量ｃ（２）は３５で、ＤＣ＃２制御アプリケーションの要求量ｒ（２）は２０であるので、サーバ２にＤＣ＃２制御アプリケーションの要求量ｒ（２）＝２０すべてが割り当てられる。ＤＣ＃２制御アプリケーションの要求量ｒ（２）は、２０から０に書き換えらえる。ＤＣ＃２制御アプリケーションの要求量ｒ（２）が０になったので、ＤＣ＃２制御アプリケーションについての処理は終了する。
【００８９】
次に、制御部１５は、２番目に高い直接比率ａ（１，１）（＝２／３）の、ＤＣ＃１制御アプリケーションとサーバ１との組合せを選択し、サーバ１に、サーバ１が収容できるだけのＤＣ＃１制御アプリケーションの要求量を割り当てる。図１５では、サーバ１の収容量ｃ（１）は３５で、ＤＣ＃１制御アプリケーションの要求量ｒ（１）は４０であるので、サーバ１には、サーバ１の収容量ｃ（１）の３５までＤＣ＃１制御アプリケーションの要求量が割り当てられる。ＤＣ＃１制御アプリケーションの要求量ｃ（１）は、４０から５に書き換えらえる。サーバ１には収容量の上限までＤＣ＃１制御アプリケーションの要求が割り当てられているので、以降、サーバ１については、処理対象から除外される。
【００９０】
次に、制御部１５は、直接比率ａ（３，２）（＝１／２）の、ＷＡＮ制御アプリケーションとサーバ２との組合せを選択し、サーバ２に、サーバ２が収容できるだけのＷＡＮ制御アプリケーションの要求量を割り当てる。サーバ２にはすでにＤＣ＃２制御アプリケー
ションの要求が２０割り当てられているので、サーバ２の収容量ｃ（２）は１５である。ＷＡＮ制御アプリケーションの要求量ｒ（３）は１０であるので、サーバ２にＷＡＮ制御アプリケーションの要求量ｒ（３）＝１０すべてが割り当てられる。ＷＡＮ制御アプリケーションの要求量ｒ（３）は、１０から０に書き換えらえる。ＷＡＮ制御アプリケーションの要求量ｒ（３）が０になったので、ＷＡＮ制御アプリケーションについての処理は終了する。
【００９１】
次に、制御部１５は、直接比率ａ（１，２）（＝１／３）の、ＤＣ＃１制御アプリケーションとサーバ２との組合せを選択し、サーバ２に、サーバ２が収容できるだけのＤＣ＃１制御アプリケーションの要求量を割り当てる。サーバ２にはすでにＤＣ＃２制御アプリケーションの要求が２０と、ＷＡＮ制御アプリケーションの要求が１０とが割り当てられているので、サーバ２の収容量ｃ（２）は５である。図１５では、サーバ２の収容量ｃ（２）は５で、ＤＣ＃１制御アプリケーションの要求量ｒ（１）は５であるので、サーバ２にＤＣ＃１制御アプリケーションの残りの要求量ｒ（１）＝５すべてが割り当てられる。ＤＣ＃１制御アプリケーションの要求量ｒ（１）は、５から０に書き換えらえる。ＤＣ＃１制御アプリケーションの要求量ｒ（１）が０になり、すべてのアプリケーションの要求量が０になったので、処理が終了する。
【００９２】
図１５での、各アプリケーションについて各サーバへ割り当てられる要求量の割合は、第１実施形態の線形計画法を用いた場合の結果と同じになる（図１０参照）。
【００９３】
図１６は、第２実施形態に係るサーバ１の制御部１５の、負荷分散装置３のラウンドロビンの重みの決定処理のフローチャートの一例である。図１６に示される処理は、サーバ１の制御部１５に、サーバ１及びサーバ２の要求量及びメッセージ量の情報が入力される周期と同じ周期で繰り返し実行される。図１６に示される処理の実行主体は、ＣＰＵ  １０１であるが、便宜上、機能構成要素である制御部１５を主体として説明する。
【００９４】
ＯＰ１１では、制御部１５は、サーバとアプリケーションとの組合せごとの、要求量、直接メッセージ量、間接メッセージ量、を情報収集部１４から取得する。
【００９５】
ＯＰ１２では、制御部１５は、サーバｊ上のアプリケーションｉにおける直接比率ａ（ｉ，ｊ）、アプリケーションｉの要求量ｒ（ｉ）の初期値Ｒｉ、サーバｊの収容量Ｃ（ｊ）の初期値Ｃを求める。それぞれの求め方は、第１実施形態と同様である。
【００９６】
ＯＰ１３では、制御部１５は、サーバｊ上のアプリケーションｉに割り当てられる要求量ｘ（ｉ，ｊ）、サーバｊ上のアプリケーションｉに対応したフラグｆ（ｉ，ｊ）を、それぞれ、０で初期化する。サーバｊ上のアプリケーションｉに対応したフラグｆ（ｉ，ｊ）は、０である場合には未処理、１である場合には処理済みであることが示される。
【００９７】
ＯＰ１４では、制御部１５は、アプリケーションｉの要求量ｒ（ｉ）がすべて０であるか否かを判定する。アプリケーションｉの要求量ｒ（ｉ）がすべて０である場合には（ＯＰ１４：ＹＥＳ）、図１６に示されている処理が終了する。アプリケーションｉの要求量ｒ（ｉ）のいずれかが０でない場合には（ＯＰ１４：ＮＯ）、処理がＯＰ１５に進む。
【００９８】
ＯＰ１５では、制御部１５は、フラグｆ（ｉ，ｊ）が０である、アプリケーションｉとサーバｊとの組合せのうち、直接比率ａ（ｉ，ｊ）が最大のアプリケーションｉとサーバｊとを求める。ＯＰ１５で求められたアプリケーションｉ、サーバｊを、それぞれ、以降、アプリケーションｉｉ、サーバｊｊと表記する。
【００９９】
ＯＰ１６では、制御部１５は、アプリケーションｉｉの要求量ｒ（ｉｉ）、サーバｊｊ
の収容量ｃ（ｊｊ）、サーバｊｊ上のアプリケーションｉｉに割り当てられる要求量ｘ（ｉｉ，ｊｊ）を更新する。ｍは、ｒ（ｉｉ）とｃ（ｊｊ）のうちの小さい方の値である。
【０１００】
アプリケーションｉｉの要求量ｒ（ｉｉ）は、ｒ（ｉｉ）からｍを差し引いた値に更新される。サーバｊｊ上のアプリケーションｉｉに割り当てられる要求量ｘ（ｉｉ，ｊｊ）は、ｘ（ｉｉ，ｊｊ）からｍを差し引いた値に更新される。サーバｊｊ上のアプリケーションｉｉに割り当てられる要求量ｘ（ｉｉ，ｊｊ）は、ｘ（ｉｉ，ｊｊ）にｍを加算した値に更新される。
【０１０１】
ＯＰ１７では、制御部１５は、アプリケーションｉｉの要求量ｒ（ｉｉ）が０となるアプリケーションｉｉについて、全サーバｊｊのフラグｆ（ｉｉ，ｊ）（ｊは全サーバ）を０にする。アプリケーションｉｉの要求量ｒ（ｉｉ）が０とならない場合には、ＯＰ１７の処理は省略される。
【０１０２】
ＯＰ１８では、制御部１５は、サーバｊｊの収容量ｃ（ｊｊ）が０となるサーバｊｊについて、全アプリケーションｉｉのフラグｆ（ｉ，ｊｊ）（ｉは全サーバ）を０にする。サーバｊｊの収容量ｃ（ｊｊ）が０とならない場合には、ＯＰ１８の処理は省略される。その後、処理がＯＰ１４に進み、ＯＰ１４からの処理が繰り返し実行される。
【０１０３】
第２実施形態では、ヒューリスティックアルゴリズムによって、各アプリケーションについて、各サーバに割り当てられる要求量が決定される。その結果は、線形計画法で各アプリケーションについて、各サーバに割り当てられる要求量が求められる場合と同じである。したがって、第２実施形態によっても、サーバ間の処理負荷を分散させつつ、コントローラ間のメッセージの転送を低減させることができる。
【０１０４】
また、ヒューリスティックアルゴリズムを用いることによって、より高速に、各アプリケーションについて、各サーバに割り当てられる要求量を求めることができる。
【０１０５】
＜第３実施形態＞
第１実施形態では、線形計画問題の制約条件の一つであるサーバの収容量Ｃは、全アプリケーションの要求量の総和をコントローラ台数で割った、サーバ間で均等になるような値の定数である。また、第２実施形態においても、サーバｊの収容量ｃ（ｊ）の初期値は、全アプリケーションの要求量をコントローラ台数で割った、サーバ間で均等な値である。第３実施形態では、サーバの収容量について、許容範囲を設定する。なお、第３実施形態では、第１実施形態、第２実施形態と共通する説明については、省略される。第３実施形態は、システム構成、ハードウェア構成、および、機能構成は、第１実施形態と同じであることを想定する。
【０１０６】
第３実施形態のサーバの収容量の制約条件は以下の通りである。
【数２】
2017215933.tif 000004
【０１０７】
αは誤差の許容範囲を表す係数である。なお、誤差の表現は、Ｃに対する倍率で指定する方法に限られず、例えば、Ｃに誤差の許容範囲αを加算又は減算して表現してもよい。
【０１０８】
図１７は、第３実施形態に係るサーバｊの収容量Ｃｊの一例を示す図である。図１７の前提は、第１実施形態の具体例と同じである。例えば、サーバ１の収容量Ｃ１は４０、サ
ーバ２の収容量Ｃ２は３５と求められる。
【０１０９】
図１８は、図１７のサーバｊの収容量Ｃｊの値の設定について、線形計画法で算出された、サーバｊ上のアプリケーションｉに割り当てられる要求量Ｘｉｊの値の一例を示す図である。
【０１１０】
図１９は、図１８のサーバｊ上のアプリケーションｉに割り当てられる要求量Ｘｉｊの値に対応する、負荷分散装置３のラウンドロビンの重みの一例を示す図である。
【０１１１】
図２０は、各アプリケーションの要求量の状態が同条件の場合の、図１９で示される重みＷｉｊが用いられて、各アプリケーションの要求がサーバ１とサーバ２とに振り分けられた場合の、サーバ１とサーバ２とのメッセージ量の一例を示す図である。
【０１１２】
図１９で示される重みＷｉｊが用いられた場合では、サーバ１における全アプリケーションの間接メッセージの量の合計は４０、サーバ２における全アプリケーションの間接メッセージの量の合計は３０である。具体例では、サーバ１とサーバ２との間接メッセージ量の合計は、３０＋３０＝７０である。例えば、図１３に示される比較例の計測結果と比較すると、比較例の計測結果での間接メッセージ量の合計は、１１０であるので、コントローラ間で転送されるメッセージ量が削減されていることが分かる。
【０１１３】
したがって、第３実施形態によれば、サーバの収容量に誤差の許容範囲を持たせることによって、より効率よく、コントローラ間で転送されるメッセージ（間接メッセージ）の量を低減できる。
【０１１４】
また、第３実施形態では、第１実施形態の線形計画法による例が説明されたが、第２実施形態のヒューリスティックアルゴリズムを用いる場合にも第３実施形態で説明された技術を適用可能である。
【０１１５】
＜第３実施形態の変形例＞
サーバ間の性能差が事前に判明している場合には、サーバ間の性能差に応じて収容量Ｃｊを変化させてもよい。サーバ間の性能差に応じて収容量Ｃｊを変化させる場合には、サーバの収容量の制約条件は以下のようになる。
【数３】
2017215933.tif 000005
【０１１６】
αｊは、サーバｊの性能を表す係数である。最も性能の低いサーバｊの係数αｊの値が１に設定される。なお、サーバ間の性能差に応じて収容量Ｃｊを変化させる場合のサーバの収容量の制約条件は、サーバの収容量Ｃに対する倍率で指定する方法に限定されない。例えば、サーバ間の性能差に応じて収容量Ｃｊを変化させる場合のサーバの収容量の制約条件は、サーバの収容量Ｃに対する加算又は減算で表現されてもよい。
【０１１７】
＜第４実施形態＞
第１実施形態、第２実施形態、第３実施形態では、負荷分散装置３のラウンドロビンの重みＷｉｊが０と算出されたアプリケーションｉのインスタンスは、要求が入力されないにもかかわらず、サーバｊ上で動作し続ける。要求が入力されないアプリケーションｉのサーバｊ上のインスタンスによって、サーバｊ上のリソースが消費される。
【０１１８】
第４実施形態では、算出された負荷分散装置３のラウンドロビンの重みＷｉｊが所定の
閾値δ未満であるサーバｊ上のアプリケーションｉのインスタンスについては、動作が停止される。第４実施形態では、第１実施形態、第２実施形態、第３実施形態と共通する説明は省略される。第４実施形態では、システム構成、ハードウェア構成、及び、機能構成は、第１実施形態と同じものが想定される。
【０１１９】
例えば、図１１で示される例の負荷分散装置３のラウンドロビンの重みＷｉｊが取得され、閾値δ＝０．０１である場合には、制御部１５は、サーバ１上のＤＣ＃２制御アプリケーションとＷＡＮ制御アプリケーションとのインスタンスの動作の停止を判定する。制御部１５は、重み通知部１７を通じて、重みＷｉｊとともに、サーバ１上のＤＣ＃２制御アプリケーションとＷＡＮ制御アプリケーションとのインスタンスの動作の停止を、負荷分散装置３に通知する。
【０１２０】
図２１は、第４実施形態に係る制御部１５の処理の、負荷分散装置３のラウンドロビンの重みの決定処理のフローチャートの一例である。図２１に示される処理は、サーバ１の制御部１５に、サーバ１及びサーバ２の要求量及びメッセージ量の情報が入力される周期と同じ周期で繰り返し実行される。図２１に示される処理の実行主体は、ＣＰＵ  １０１であるが、便宜上、機能構成要素である制御部１５を主体として説明する。
【０１２１】
ＯＰ２１では、制御部１５は、サーバとアプリケーションとの組合せごとの、要求量、直接メッセージ量、間接メッセージ量、を情報収集部１４から取得する。
【０１２２】
ＯＰ２２では、制御部１５は、サーバとアプリケーションとの組合せごとの直接比率Ａｉｊを求める。ＯＰ２３では、制御部１５は、アプリケーションごとに発生要求量Ｒｉを求める。ＯＰ２４では、制御部１５は、サーバの収容量Ｃを求める。ＯＰ２５では、制御部１５は、線形計画問題を解く。ＯＰ２６では、制御部１５は、線形計画問題を解いて得られた各アプリケーションの各サーバへ割り当てる要求量から、各アプリケーションについて、各サーバへ割り当てられる要求の割合を、負荷分散装置３のラウンドロビンの重みＷｉｊとして、算出する。
【０１２３】
ＯＰ２７では、制御部１５は、閾値δ未満の重みＷｉｊがあるか否かを判定する。閾値δ未満の重みＷｉｊがある場合には（ＯＰ２７：ＹＥＳ）、処理がＯＰ２８に進む。閾値δ未満の重みＷｉｊがない場合には（ＯＰ２７：ＮＯ）、処理がＯＰ２９に進む。
【０１２４】
ＯＰ２８では、制御部１５は、閾値δ未満の重みＷｉｊに対応するサーバｊ上のアプリケーションｉのインスタンスの停止を負荷分散装置３に通知する。
【０１２５】
ＯＰ２９では、制御部１５は、ラウンドロビンの重みＷｉｊを負荷分散装置３に通知する。その後、図２１に示される処理が終了する。
【０１２６】
第４実施形態では、算出された負荷分散装置３のラウンドロビンの重みＷｉｊが閾値δ未満である場合には、該当のサーバｊ上のアプリケーションｉのインスタンスの動作が停止される。これによって、サーバｊのリソースの消費を低減することができる。
【０１２７】
なお、第４実施形態では、第１実施形態に対して適用する場合について説明されたが、これに限定されず、第４実施形態で説明された技術は、第２実施形態、第３実施形態にも適用可能である。
【０１２８】
＜第５実施形態＞
第５実施形態では、各アプリケーションの要求は、各アプリケーションについて直接比率が最も高いサーバに割り当てられるように、負荷分散装置３のラウンドロビンの重みが
決定される。
【０１２９】
図２２は、第５実施形態に係る各アプリケーションについて、直接比率が最も高いサーバの一例を示す図である。図２２に示される図は、各アプリケーションについて、各セーバの直接比率が図７に示される値である場合の例である。制御部１５は、各アプリケーションについて、各サーバの直接比率を算出すると、各アプリケーションについて、直接比率が最も高いサーバを選択する。直接比率が最も高いサーバが複数存在する場合には、例えば、制御部１５は、ランダムにいずれかのサーバを選択する。
【０１３０】
図７において、ＤＣ＃１制御アプリケーションで直接比率が最も高いのは、サーバ１であるので、図２２ではサーバ１が選択されている。図７において、ＤＣ＃２制御アプリケーションで直接比率が最も高いのは、サーバ２であるので、図２２ではサーバ２が選択されている。図７において、ＷＡＮ制御アプリケーションでは、サーバ１、サーバ２でともに直接比率１／２と同じ値であるので、図２２では、ランダムに選択された結果、サーバ１が選択されている。
【０１３１】
したがって、図２２では、ＤＣ＃１制御アプリケーションの要求はすべてサーバ１に割り振られることが示される。ＤＣ＃２制御アプリケーションの要求はすべてサーバ２に割り振られることが示される。ＷＡＮ制御アプリケーションの要求はすべてサーバ１に割り振られることが示される。
【０１３２】
図２３は、各アプリケーションの要求量の状態が同条件の場合の、比較例でのサーバ１とサーバ２とのメッセージ量と、各アプリケーションについて、図２２で示されるサーバに要求が振り分けられた場合の、サーバ１とサーバ２とのメッセージ量の一例を示す図である。図２３に示される比較例は、図１３に示される比較例と同じ、要求が、サーバ１とサーバ２との間で均等に振り分けられた場合の例である。
【０１３３】
各アプリケーションについて、図２２で示されるサーバに要求が割り振られた場合では、サーバ１における全アプリケーションの間接メッセージの量の合計は５０、サーバ２における全アプリケーションの間接メッセージの量の合計は２０である。具体例では、サーバ１とサーバ２との間接メッセージ量の合計は、５０＋２０＝７０である。比較例のサーバ１とサーバ２との間接メッセージ量の合計は、１１０であるので、第５実施形態では、コントローラ間のメッセージの転送が低減されていることが示されている。
【０１３４】
したがって、第５実施形態によれば、各アプリケーションについて、直接比率が最も高いサーバにすべての要求を割り当てる、コントローラ間で転送されるメッセージ（間接メッセージ）の量を低減できる。
【０１３５】
＜その他＞
負荷分散装置３のラウンドロビンの重みを、分散型通信制御システム１００全体での、各コントローラがマスタとなっているスイッチの数の割合としてもよい。この場合には、例えば、制御部１５は、マスタ情報から、各サーバについて、マスタとなっているスイッチの割合を算出し、算出した割合を負荷分散装置３に通知する。これによって、マスタとなっているスイッチの数が多いコントローラほどより多くの要求が振り分けられるようになる。また、この場合には、アプリケーションが設定対象とするスイッチのマスタであるコントローラの偏りは考慮されない。
【０１３６】
＜第６実施形態＞
第６実施形態では、スイッチ９のマスタとなるコントローラを他のコントローラに変更させることによって、アプリケーションの設定領域内のスイッチ９において、コントロー
ラがマスタを担当するスイッチ９の数に偏りを生じさせる。第６実施形態では、第１〜第５実施形態と重複する説明は省略される。
【０１３７】
例えば、図４に示される分散型通信制御システム１００において、ＷＡＮ制御アプリケーションの設定領域内には、サーバ１をマスタとするスイッチが２台、サーバ２をマスタとするスイッチが２台存在している。この場合、ＷＡＮ制御アプリケーションの設定領域内では、サーバ１とサーバ２との間でコントローラがマスタを担当するスイッチの数に偏りがない。
【０１３８】
コントローラがマスタを担当するスイッチ９の数に偏りがない場合には、負荷分散装置３のＷＡＮ制御アプリケーションについてのラウンドロビンの重みがどのように設定されても、コントローラ間のメッセージ量の削減効果が小さい。なぜなら、例えば、各スイッチ９へメッセージが均等に送信されることを想定する場合、ラウンドロビンの重みがどのような値であっても、各コントローラにおいて、振り分けられた要求量に応じたメッセージ量が均等にコントローラ間で分配されるためである。
【０１３９】
第６実施形態では、スイッチ群のマスタを特定のコントローラに意図的に偏らせることによって、コントローラ間のメッセージの削減効果を大きくする。ただし、システム内には、複数のアプリケーションが動作している。そのため、第６実施形態では、全てのアプリケーションのコントローラ間メッセージの総量が削減されるように、マスタを変更する対象となるスイッチが決定される。
【０１４０】
また、スイッチ９のマスタを変更してコントローラ間メッセージ量が削減されても、特定のコントローラにメッセージの処理が集中してしまうと、当該コントローラの負荷が大きくなる。この場合、システム全体としてのパフォーマンスが低下してしまう可能性がある。したがって、第６実施形態では、コントローラ間の負荷が均等になるように、マスタを変更する対象となるスイッチと当該スイッチの変更後のマスタとが決定される。
【０１４１】
具体的には、各コンローラからスイッチ９へ送信されるメッセージ数が均等になるように、さらに、各コントローラに振り分けられる要求量が均等になるように、マスタを変更する対象となるスイッチ９と当該スイッチ９の変更後のマスタとが決定される。
【０１４２】
第６実施形態では、マスタを変更する対象となるスイッチと当該スイッチの変更後のマスタとの決定を、サーバ１が行う。ただし、マスタを変更する対象のスイッチと当該スイッチの変更後のマスタとの決定を行うのは、サーバ１に限定されず、サーバ２、負荷分散装置３のいずれが行ってもよい。
【０１４３】
第６実施形態では、分散型通信制御システム１００のシステム構成、サーバ１のハードウェア構成及び機能構成は、第１実施形態と同様である。ただし、第６実施形態で説明される技術は、第２〜第５実施形態のサーバ１にも適用可能である。
【０１４４】
第６実施形態では、サーバ１の制御部１５は、マスタを変更する対象となるスイッチ９と、当該スイッチ９の変更後のマスタとを決定する。具体的には、制御部１５は、システム内の全スイッチからマスタの変更対象となる１又は複数のスイッチ９と変更後のマスタとの組み合わせの事例全てについて、負荷分散装置３のラウンドロビンの重みＷｉｊを求め、求めた重みＷｉｊに従った各アプリケーションの要求の振り分けのシミュレーションを行う。シミュレーションの結果として、コントローラ間メッセージ量、コントローラ間におけるコンローラからスイッチ９への送信メッセージ量の偏りが取得される。
【０１４５】
シミュレーションは、所定の期間内に発生した、各アプリケーションの、発生要求量、
スイッチ９へ送信されたメッセージの情報に基づいて行われる。シミュレーションに用いられる上述の情報は、他のコントローラ及び情報収集部１４によって収集される。
【０１４６】
制御部１５は、シミュレーション結果から、コントローラからスイッチ９への送信メッセージ量のコントローラ間での偏りが所定の閾値より小さい事例のうち、コントローラ間メッセージ量が少ない事例を選択する。制御部１５は、選択した事例に基づいて、マスタを変更する対象となるスイッチ９と当該スイッチ９の変更後のマスタとを決定する。マスタを変更する対象となるスイッチ９と当該スイッチ９の変更後のマスタとを決定する処理を、以降、マスタ変更決定処理と称する。
【０１４７】
＜マスタ変更決定処理の詳細＞
図２７は、第６実施形態に係る具体例において想定される分散型通信制御システム１００Ａの一例を示す図である。具体例に係る分散型通信制御システム１００Ａには、２台のコントローラ＃１、コントローラ＃２が含まれる。また、分散型通信制御システム１００Ａには、７台のスイッチ＃１〜＃７が含まれる。
【０１４８】
コントローラ＃１、コントローラ＃２は、それぞれ、サーバ１、サーバ２に存在するインスタンスであるとする。また、コントローラ＃１、コントローラ＃２を搭載するサーバ１、サーバ２には、ともに、アプリケーション＃１、アプリケーション＃２のインスタンスが存在することとする。以降、サーバとコントローラとの文言を区別することなく用いる。例えば、コントローラ＃１と称する場合には、サーバ１を示すこととする。サーバ１と称する場合には、コントローラ＃１が示されることとする。
【０１４９】
また、第６実施形態の具体例では、サーバ１、すなわち、コントローラ＃１を搭載するサーバ１が、マスタ変更決定処理を行うことを想定する。マスタ変更決定処理は、マスタであるコントローラを変更する対象となるスイッチ９と当該スイッチ９の変更後のマスタとを決定する処理である。ただし、マスタ変更決定処理を実行する装置は、サーバ１に限定されず、サーバ２、負荷分散装置３であってもよい。
【０１５０】
図２８は、第６実施形態の具体例に係るマスタ情報の一例である。マスタ情報には、分散型通信制御システム１００Ａ内の各スイッチのマスタとなるコントローラの情報が格納されている。マスタ情報は、サーバ１のマスタ情報記憶部１８Ｃに格納されている。マスタ情報は、分散型通信制御システム１００Ａの管理者によって予め設定されてもよいし、コントローラ間のネゴシエーションによって取得されてもよい。
【０１５１】
図２８中では、コントローラ＃１、コントローラ＃２は、それぞれ、Ｃ＃１、Ｃ＃２と表記されている。スイッチ＃１〜スイッチ＃７は、それぞれ、ＳＷ＃１〜ＳＷ＃７と表記されている。以降の図においても同様である。
【０１５２】
具体例に係る分散型通信制御システム１００Ａでは、コントローラ＃１をマスタとするスイッチは、スイッチ＃１、＃２、＃５、＃６である。コントローラ＃２をマスタとするスイッチ９は、スイッチ＃３、＃４、＃７である。
【０１５３】
具体例に係るマスタ変更決定処理において、分散型通信制御システム１００Ａにおいてマスタが変更されるスイッチ数を１台に限定することを前提とする。ただし、マスタが変更されるスイッチ数は１台に限定されず、複数台のスイッチについてマスタが変更されるようにしてもよい。
【０１５４】
（ステップ１）
サーバ１の制御部１５は、現在のマスタ情報に基づいて、マスタの変更の対象となるス
イッチの選択と選択されたスイッチの変更後のマスタとの組み合わせの事例全てについて、各事例を示すマスタ変更情報を生成する。具体例では、コントローラが２台、スイッチが７台、マスタが変更されるスイッチは１台であることが前提であるので、マスタ変更情報は、（スイッチ数）×（コントローラ数−１）＝７×１＝７個作成される。マスタ変更情報は「事例情報」の一例である。ステップ１の処理は、「前記複数の宛先装置から、１又は複数の宛先装置を選択する事例を示す事例情報を複数生成」することの一例である。
【０１５５】
図２９は、第６実施形態の具体例に係るマスタ変更情報の一例を示す図である。マスタ変更情報は、マスタとなるコントローラを変更する対象となるスイッチ９の選択と当該選択されたスイッチ９の変更後のマスタとの組み合わせの事例に関する情報である。図２９に示される例では、マスタ変更情報には、マスタ変更情報の識別情報、マスタを変更する対象となるスイッチ９の識別情報と、当該スイッチ９の変更後のマスタとなるコントローラの識別情報とが含まれている。
【０１５６】
図２９に示される例では、マスタ変更情報＃１では、マスタ変更対象のスイッチ９はスイッチ＃１であり、スイッチ＃１の変更後のマスタはコントローラ＃２である。マスタ変更情報＃２では、マスタ変更対象のスイッチ９はスイッチ＃２であり、スイッチ＃２の変更後のマスタはコントローラ＃２である。マスタ変更情報＃３では、マスタ変更対象のスイッチ９はスイッチ＃３であり、スイッチ＃３の変更後のマスタはコントローラ＃１である。マスタ変更情報＃４では、マスタ変更対象のスイッチ９はスイッチ＃４であり、スイッチ＃４の変更後のマスタはコントローラ＃１である。マスタ変更情報＃５では、マスタ変更対象のスイッチ９はスイッチ＃５であり、スイッチ＃５の変更後のマスタはコントローラ＃２である。マスタ変更情報＃６では、マスタ変更対象のスイッチ９はスイッチ＃６であり、スイッチ＃６の変更後のマスタはコントローラ＃２である。マスタ変更情報＃７では、マスタ変更対象のスイッチ９はスイッチ＃７であり、スイッチ＃７の変更後のマスタはコントローラ＃１である。
【０１５７】
例えば、コントローラが２台、マスタ変更対象のスイッチの数が最大で２台と設定されている場合には、図２９に示されるマスタ変更情報に加えて、7台から２台のスイッチ９
を選ぶ組合せの数（２１通り）のマスタ変更情報が作成される。なお、マスタ変更情報は、一時的に主記憶装置１０２内の記憶領域に保持され、マスタ変更決定処理が終了すると、削除される。
【０１５８】
（ステップ２）
サーバ１の制御部１５は、ステップ１で求めたマスタ変更情報全てについて、マスタ変更情報が適用された場合、すなわち、マスタ変更対象のスイッチ９のマスタをマスタ変更情報が示すコントローラに変更した場合のアプリケーションの要求の振り分けのシミュレーションを行う。制御部１５は、シミュレーションの結果として、例えば、コントローラ間メッセージ量と、コントローラからスイッチ９への送信メッセージ量の分散値とを取得する。シミュレーションの手順は以下の通りである。コントローラからスイッチ９への送信メッセージ量の分散値、標準偏差、最大値と最小値との差等のばらつきを示す指標値は、「前記複数の制御装置それぞれから制御対象とする複数の宛先装置へ送信されるメッセージ量の前記複数の制御装置間でのばらつきを示す指標値」の一例である。
【０１５９】
（ステップ２−１）
サーバ１の制御部１５は、スイッチリストを取得する。スイッチリストは、アプリケーションが所定期間内に設定したスイッチのリストである。アプリケーションが設定したスイッチとは、例えば、アプリケーションの要求に応じてコントローラによって作成されたメッセージの送信先のスイッチである。または、アプリケーションが設定したスイッチとは、例えば、アプリケーションの要求に応じてコントローラによって作成されたメッセー
ジを受信したスイッチである。
【０１６０】
図３０は、第６実施形態の具体例に係るスイッチリストの一例を示す図である。具体例ではアプリケーションは２つであることが想定されているので、図３０では、アプリケーション＃１とアプリケーション＃２とのスイッチリストが示されている。
【０１６１】
スイッチリストに含まれるスイッチの識別情報は、該当するアプリケーションの要求に応じてコントローラで作成されてスイッチ９に送信された１つのメッセージにつき１つ含まれる。スイッチリストに含まれるスイッチの識別情報は、該当するアプリケーションの要求に応じてコントローラで作成されたメッセージの送信先のスイッチの識別情報である。例えば、図３０に示される例において、アプリケーション＃１のスイッチリストには、ＳＷ＃１、ＳＷ＃１、ＳＷ＃５、ＳＷ＃４．．．が格納されている。これは、アプリケーション＃１において、ＳＷ＃１に送信されたメッセージ、ＳＷ＃１に送信されたメッセージ、ＳＷ＃５に送信されたメッセージ、ＳＷ＃４に送信されたメッセージが発生したことを示す。
【０１６２】
各アプリケーションのスイッチリストに含まれるメッセージの送信先のスイッチの情報のうち、自コントローラに関するメッセージの送信先のスイッチの情報は、例えば、メッセージ量記憶部１８Ｂに蓄積されている。自コントローラに関するメッセージの送信先のスイッチの情報とは、自コントローラが送信したメッセージの送信先のスイッチ９の情報である。情報収集部１４は、メッセージ量記憶部１８Ｂから、自コントローラに関するメッセージの送信先のスイッチの情報を読み出し、制御部１５に出力する。
【０１６３】
各アプリケーションのメッセージの送信先のスイッチの情報のうち、他のコントローラに関するメッセージの送信先のスイッチの情報は、例えば、各コントローラから計測結果受信部１６を通じて受信されることによって取得される。他のコントローラに関するメッセージの送信先のスイッチの情報は、他コントローラが送信したメッセージの送信先のスイッチ９の情報である。なお、スイッチリストは、一時的に主記憶装置１０２内の記憶領域に保持され、マスタ変更決定処理が終了すると、削除される。
【０１６４】
スイッチリストに含まれるスイッチの識別情報は、１つのメッセージの送信先を示す情報であり、１つのメッセージに対応している。したがって、スイッチリストには、該当するアプリケーションの要求に応じて作成されたメッセージに関する情報が含まれている、と言ってもよい。そのため、以降、スイッチリストに含まれる要素（スイッチの識別情報）を、メッセージと表現することもある。
【０１６５】
（ステップ２−２）
サーバ１の制御部１５は、アプリケーションｉとコントローラｊとの全ての組合せについて、直接比率Ａｉｊを求める。第６実施形態では、直接比率Ａｉｊは、第１実施形態と同様にして求められる。
【０１６６】
図３１は、第６実施形態の具体例に係るアプリケーションｉのコントローラｊにおける直接比率Ａｉｊの一例を示す図である。具体例では、コントローラは２台、アプリケーションは２つであるので、直接比率Ａｉｊは２×２の行例となる。
【０１６７】
図３１に示される例では、アプリケーション＃１のコントローラ＃１における直接比率Ａ１１は、１／４である。アプリケーション＃１のコントローラ＃２における直接比率Ａ１２は、３／４である。アプリケーション＃２のコントローラ＃１における直接比率Ａ２１は、３／５である。アプリケーション＃２のコントローラ＃２における直接比率Ａ２２は、２／５である。
【０１６８】
（ステップ２−３）
サーバ１の制御部１５は、所定期間内の各アプリケーションの発生要求量と直接比率Ａｉｊとに基づいて、コントローラ間メッセージ量を最小とする負荷分散装置３のラウンドロビンの重みＷｉｊを求める。所定期間内の各アプリケーションの発生要求量は、情報収集部１４から取得される。負荷分散装置３のラウンドロビンの重みＷｉｊは、第１実施形態又は第２実施形態と同様にして求められる。ステップ２−３の処理は、「生成した前記複数の事例情報のそれぞれについて、選択された宛先装置を制御対象とする制御装置を他の制御装置に変更した場合について、前記重みを決定」することの一例である。
【０１６９】
図３２は、第６実施形態の具体例に係るアプリケーションの発生要求量の一例を示す図である。具体例では、アプリケーション＃１の発生要求量を２０とする。アプリケーション＃２の発生要求量を１０とする。
【０１７０】
図３３は、第６実施形態の具体例に係る負荷分散装置３のラウンドロビンの重みＷｉｊの一例である。具体例では、アプリケーション＃１に関して、コントローラ＃１への重みＷ１１は１／４、コントローラ＃２への重みＷ１２は３／４である。アプリケーション＃２に関して、コントローラ＃１への重みＷ２１は１、コントローラ＃２への重みＷ２２は０である。
【０１７１】
（ステップ２−４）
サーバ１の制御部１５は、スイッチリスト、負荷分散装置３のラウンドロビンの重みＷｉｊを用いて、各マスタ変更情報が適用された場合について、各アプリケーションからの要求の振り分けのシミュレーションを行う。例えば、シミュレーションは、以下のように行われる。
【０１７２】
制御部１５は、アプリケーションｉについて、スイッチリスト内の対象メッセージの送信先であるスイッチ９のマスタであるコントローラｋ（ｋ：０を含まない正の整数）を、対象のマスタ変更情報とマスタ情報とに基づいて取得する。すなわち、対象メッセージの送信先であるスイッチ９のマスタであるコントローラｋは、マスタ変更情報を適用した場合の変更後のマスタ情報に基づいて取得される。対象のメッセージは、いずれのコントローラにおいて作成されたとしても、マスタのコントローラｋから送信先であるスイッチ９に送信される。したがって、スイッチリスト内の対象メッセージは、コントローラｋからスイッチ９への送信メッセージであるので、制御部１５は、コントローラからスイッチ９への送信メッセージ量ＣＭｉｋに１をインクリメントする。
【０１７３】
制御部１５は、アプリケーションｉに対するコントローラｋのラウンドロビンの重みＷｉｋを用いて乱数を発生させ、発生した乱数に基づいて負荷分散装置３の要求の振り分け先となるコントローラｊを選択する。
【０１７４】
コントローラｋとコントローラｊとが一致しない場合には、当該メッセージの作成要因となった要求は負荷分散装置３によってコントローラｋ以外のコントローラに振り分けられることが示される。対象メッセージのマスタはコントローラｋであるので、対象メッセージは振分先のコントローラｊ（ｊ≠ｋ）で作成されてマスタのコントローラｋに送信され、マスタのコントローラｋから送信先のスイッチ９に送信されることになる。したがって、コントローラｋとコントローラｊとが一致しない場合には、対象メッセージはコントローラ間メッセージとなるので、制御部１５は、コントローラ間メッセージ量ｉｎｔｅｒＭｓｇｓに１をインクリメントする。
【０１７５】
なお、コントローラｋとコントローラｊとが一致する場合には、対象メッセージの作成
要因となる要求は負荷分散装置３によってコントローラｋに振り分けられることが示される。対象メッセージのマスタはコントローラｋであるので、対象メッセージは振分先のコントローラｊ（ｊ＝ｋ）によって作成されて送信先のスイッチ９に送信されることになる。この場合には、コントローラ間メッセージは発生しないので、コントローラ間メッセージ量ｉｎｔｅｒＭｓｇｓは更新されない。
【０１７６】
サーバ１の制御部１５は、上記の処理を、各アプリケーションのスイッチリストに含まれる全てのメッセージについて行う。各アプリケーションのスイッチリストに含まれる全てのメッセージについて上記の処理が行われると、制御部１５は、コントローラｋからスイッチ９への送信メッセージ量ＣＭｉｋに基づいて、コントローラからスイッチ９への送信メッセージ量の分散値を求める。分散値の求め方は、周知の方法のいずれであってもよい。
【０１７７】
なお、コントローラからスイッチ９への送信メッセージ量の偏りを示す値は、分散値に限定されない。コントローラ間における直接送信されるメッセージ量の偏りを示す値として、例えば、標準偏差、最大値と最小値との差等が用いられてもよい。
【０１７８】
制御部１５は、各マスタ変更情報が適用された全ての場合について、シミュレーションが行われ、コントローラ間メッセージ量ｉｎｔｅｒＭｓｇｓとコントローラからスイッチ９への送信メッセージ量の分散値とを求める。ステップ２−４の処理は、「決定した重みに基づいて前記所定の処理の要求の振り分けをシミュレートして、前記複数の制御装置間で転送されるメッセージ量と、前記複数の制御装置それぞれから制御対象とする複数の宛先装置へ送信されるメッセージ量の前記複数の制御装置間でのばらつきを示す指標値と、を取得」することの一例である。
【０１７９】
（ステップ３）
サーバ１の制御部１５は、シミュレーション結果に基づいて、採用するマスタ変更情報を選択する。具体的には、例えば、制御部１５は、コントローラからスイッチ９への送信メッセージ量の分散値が閾値以下であるマスタ変更情報のうち、最もコントローラ間メッセージ量の少ないマスタ変更情報を採用する。採用するマスタ変更情報が決定すると、当該マスタ変更情報に含まれるマスタ変更対象のスイッチ９が、マスタ変更対象のスイッチとして選択される。
【０１８０】
コントローラからスイッチ９への送信メッセージ量の分散値が閾値以下であるマスタ変更情報のうち、最もコントローラ間メッセージ量の少ないマスタ変更情報を採用することは、「前記複数の制御装置間で転送されるメッセージ量が削減され、且つ、前記複数の制御装置それぞれから前記制御対象とする複数の宛先装置へ送信されるメッセージ量が前記複数の制御装置間で均等であることを含む条件」の一例である。コントローラからスイッチ９への送信メッセージ量の分散値が閾値以下であることは、「前記複数の制御装置それぞれから前記制御対象とする複数の宛先装置へ送信されるメッセージ量が前記複数の制御装置間で均等であること」の一例である。
【０１８１】
ステップ３の処理は、「前記ばらつきを示す指標値が所定の閾値以下である事例情報のうち最も制御装置間で転送されるメッセージ量が少ない事例情報を抽出し、抽出された事例情報において選択された１又は複数の宛先装置を制御対象とする制御装置を他の制御装置に変更することを判定する」ことの一例である。
【０１８２】
図３４は、第６実施形態の具体例に係るシミュレーション結果の一例を示す図である。例えば、コントローラからスイッチ９への送信メッセージ量の分散値の閾値が５であるとする。
【０１８３】
図３４に示される例の場合、制御部１５は、コントローラからスイッチ９への送信メッセージ量の分散値が閾値（５）以下のマスタ変更情報＃１、＃２、＃５、＃６、＃７を抽出する。次に、制御部１５は、マスタ変更情報＃１、＃２、＃５、＃６、＃７のうち、コントローラ間メッセージ量が１０で最も少ないマスタ変更情報＃２を選択する。すなわち、制御部１５は、マスタを変更するスイッチをスイッチ＃２に決定する。
【０１８４】
図３５は、第６実施形態の具体例に係るマスタ変更情報＃２を適用後のマスタ情報の一例を示す図である。マスタ変更情報＃２は、スイッチ＃２のマスタをコントローラ＃１からコントローラ＃２へと変更することを示す。したがって、制御部１５は、マスタ情報記憶部１８Ｃ内のマスタ情報を、スイッチ＃２のマスタをコントローラ＃１からコントローラ＃２へと変更したものに更新する。
【０１８５】
また、制御部１５は、例えば、他のコントローラにマスタ変更情報＃２を通知する。マスタ変更情報は、例えば、図３には示されていない機能構成要素である、コントローラ間インタフェース部を通じて他のコントローラに通知される。マスタ変更情報を受信したコントローラは、マスタ変更情報に従って、マスタ情報を更新する。これは、システム内のコントローラ間でマスタ情報の整合性を保つ方法の一例である。
【０１８６】
＜処理の流れ＞
図３６は、第６実施形態に係るマスタ変更決定処理のフローチャートの一例である。図３６に示される処理は、例えば、所定の周期で実行されてもよいし、所定のイベントの発生を契機に実行されてもよい。図３６に示される処理の実行契機となるイベントは、例えば、アプリケーションｉについて、コントローラ間で直接比率Ａｉｊの偏りが閾値未満となること、である。図３６に示される例の実行主体は、サーバ１のＣＰＵ  １０１であるが、便宜上、機能構成要素である制御部１５を主体として説明する。
【０１８７】
ＯＰ３１では、制御部１５は、マスタを変更するスイッチ９と当該スイッチ９の変更後のマスタとの組合せの全てのパターンについて、マスタ変更情報を生成する。例えば、コントローラが２台で、７台中１台のスイッチ９のマスタを変更する場合には、マスタ変更情報は７つ生成される。コントローラが２台で、７台中２台のスイッチ９のマスタを変更する場合には、マスタ変更情報は２１個生成される。
【０１８８】
ＯＰ３２では、制御部１５は、全てのマスタ変更情報について、適用した場合のシミュレーションを行う。シミュレーションによって、各マスタ変更情報を適用した場合について、コントローラ間メッセージ量ｉｎｔｅｒＭｓｇｓとコントローラからスイッチ９への送信メッセージ量の分散値とが取得される。シミュレーションの処理の詳細は後述される。
【０１８９】
ＯＰ３３では、制御部１５は、シミュレーション結果から、コントローラからスイッチ９への送信メッセージ量の分散値が閾値以下のマスタ変更情報を抽出する。
【０１９０】
ＯＰ３４では、制御部１５は、ＯＰ３３において抽出したマスタ変更情報のうち、コントローラ間メッセージが最も少ないマスタ変更情報を、採用するマスタ変更情報として取得する。制御部１５は、取得したマスタ変更情報においてマスタを変更する対象となっているスイッチ９を、マスタ変更対象のスイッチとして決定する。その後、図３６に示される処理が終了する。
【０１９１】
なお、ＯＰ３３において、コントローラからスイッチ９への送信メッセージ量の分散値が閾値以下のマスタ変更情報が存在しない場合には、いずれのスイッチ９のマスタも変更
しないことが判定されてもよい。または、コントローラからスイッチ９への送信メッセージ量の分散値が最も小さいマスタ変更情報が選択されてもよい。
【０１９２】
なお、制御部１５は、ＯＰ３３、ＯＰ３４の処理に代えて、以下の処理を実行してもよい。例えば、制御部１５は、シミュレーション結果から、最もコントローラ間メッセージ量が少ないマスタ変更情報を選択する。次に、制御部１５は、選択したマスタ変更情報の、コントローラからスイッチ９への送信メッセージ量の分散値が閾値以下であるか否かを判定する。
【０１９３】
選択したマスタ変更情報の、コントローラからスイッチ９への送信メッセージ量の分散値が閾値以下である場合に、制御部１５は、選択したマスタ変更情報を採用するマスタ変更情報として取得する。選択したマスタ変更情報の、コントローラからスイッチ９への送信メッセージ量の分散値が閾値より大きい場合には、制御部１５は、次にコントローラ間メッセージ量が少ないマスタ変更情報を選択し、同様の処理を行う。
【０１９４】
図３６のＯＰ３１の処理は、マスタ変更決定処理の（ステップ１）に相当する。図３６のＯＰ３２の処理は、マスタ変更決定処理の（ステップ２）に相当する。図３６のＯＰ３３、ＯＰ３４の処理は、マスタ変更決定処理の（ステップ３）に相当する。
【０１９５】
図３７Ａ及び図３７Ｂは、シミュレーションの処理のフローチャートの一例である。図３７Ａ及び図３７Ｂに示される処理は、図３６のＯＰ３２において実行される処理である。図３７Ａ及び図３７Ｂに示される例の実行主体は、サーバ１のＣＰＵ  １０１であるが、便宜上、機能構成要素である制御部１５を主体として説明する。図３７Ａ及び図３７Ｂに示される処理は、所定期間に発生したアプリケーションの要求に応じてスイッチ９に送信されるメッセージに基づいて行われる。
【０１９６】
ＯＰ４１では、制御部１５は、各アプリケーションについて、スイッチリストを取得する。スイッチリストは、例えば、計測結果受信部１６を通じて他のコントローラから受信される情報、及び、メッセージ量記憶部１８Ｂに格納されている情報から取得される。
【０１９７】
ＯＰ４２では、制御部１５は、各アプリケーションの発生要求量を取得する。各アプリケーションの発生要求量は、制御部１５がアプリケーション要求量記憶部１８Ａを参照することで取得される。
【０１９８】
ＯＰ４３〜ＯＰ５０の処理は、各マスタ変更情報について繰り返し実行される。ＯＰ４３では、制御部１５は、全てのアプリケーションｉ、全てのコントローラｊについて、直接比率Ａｉｊを取得する。直接比率Ａｉｊは、例えば、第１実施形態と同様にして求められる。
【０１９９】
ＯＰ４４では、制御部１５は、負荷分散装置３のラウンロビンの重みＷｉｊを、全てのアプリケーションｉ、全てのコントローラｊについて、取得する。負荷分散装置３のラウンロビンの重みＷｉｊは、第１実施形態〜第５実施形態のいずれかと同様にして求められる。
【０２００】
図３７ＢのＯＰ４５〜ＯＰ４９の処理は、全アプリケーションについて繰り返し行われる。また、図３７ＢのＯＰ４５〜ＯＰ４９の処理は、１つのアプリケーションのスイッチリストに含まれるメッセージの送信先であるスイッチの数分繰り返し実行される。すなわち、図３７ＢのＯＰ４５〜ＯＰ４９の処理は、（１つのアプリケーションのスイッチリストに含まれるメッセージの数）×（アプリケーションの数）×（マスタ変更情報の数）に相当する回数繰り返される。
【０２０１】
以降、処理対象のアプリケーションをアプリケーションｉとする。アプリケーションｉのスイッチリスト内の処理対象のメッセージを、対象メッセージ、と称する。
【０２０２】
ＯＰ４５では、制御部１５は、アプリケーションｉのスイッチリスト内の対象メッセージの送信先であるスイッチ９のマスタであるコントローラｋを、対象のマスタ変更情報とマスタ情報とに基づいて、取得する。すなわち、アプリケーションｉのスイッチリスト内の対象メッセージの送信先であるスイッチ９のマスタであるコントローラｋは、対象のマスタ変更情報が適用された後のマスタ情報に基づいて求められる。
【０２０３】
ＯＰ４６では、制御部１５は、コントローラｋからスイッチ９への送信メッセージ量ＣＭｉｋに１を加算して更新する。
【０２０４】
ＯＰ４７では、制御部１５は、アプリケーションｉに対するコントローラｋの重みＷｉｋに基づいて乱数を発生させ、発生した乱数に基づいて、対象メッセージの振り分け先となるコントローラｊを決定する。
【０２０５】
ＯＰ４８では、制御部１５は、対象メッセージのマスタであるコントローラｋと、対象メッセージの振り分け先であるコントローラｊとが一致するか否かを判定する。コントローラｋとコントローラｊとが一致する場合には（ＯＰ４８：ＹＥＳ）、処理が、対象のアプリケーションｉのスイッチリスト内の次のメッセージ又は次のアプリケーションについてＯＰ４５に、又は、ＯＰ５０に進む。コントローラｋとコントローラｊとが一致しない場合には（ＯＰ４８：ＮＯ）、処理がＯＰ４９に進む。
【０２０６】
ＯＰ４９では、対象メッセージがコントローラ間メッセージとなることが示されるので、制御部１５は、コントローラ間メッセージ量ｉｎｔｅｒＭｓｇｓに１を加算して更新する。その後、処理が、対象のアプリケーションｉのスイッチリスト内の次のメッセージ、又は、次のアプリケーションについて、ＯＰ４５に、又は、ＯＰ５０に進む。
【０２０７】
１つのマスタ変更情報について、全アプリケーションのスイッチリスト内の全メッセージについて、ＯＰ４５〜ＯＰ４９の処理が終了すると、処理がＯＰ５０に進む。
【０２０８】
ＯＰ５０では、制御部１５は、各コントローラからスイッチ９への送信メッセージ量の分散値を求める。その後、次のマスタ変更情報について処理がＯＰ４５に進む。または、全てのマスタ変更情報についての処理が終了した場合には、処理が図３６のＯＰ３３に進む。
【０２０９】
図３７ＡのＯＰ４１の処理は、マスタ変更決定処理の（ステップ２−１）に相当する。図３７ＡのＯＰ４３の処理は、マスタ変更決定処理の（ステップ２−２）に相当する。図３７ＡのＯＰ４２、ＯＰ４４の処理は、マスタ変更決定処理の（ステップ２−３）に相当する。図３７Ｂの処理は、マスタ変更決定処理の（ステップ２−４）に相当する。
【０２１０】
＜第６実施形態の作用効果＞
第６実施形態では、スイッチ９のマスタを変更させることによって、スイッチ９のマスタを担当するコントローラに偏りを生じさせる。スイッチ９のマスタを担当するコントローラの偏りに応じて、第１〜第５実施形態に係る負荷分散装置３のラウンドロビンの重みＷｉｊの決定処理によってラウンドロビンの重みＷｉｊが決定される。これによって、コントローラ間メッセージ量の削減効果を向上させることができる。
【０２１１】
マスタの変更対象のスイッチ９は、シミュレーションによって、各コントローラからス
イッチ９への送信メッセージ量の偏りが少なく、且つ、コントローラ間メッセージ量が少なくなるように決定される。これによって、分散型通信制御システム１００全体の処理効率を向上させることができる。
【０２１２】
また、マスタ変更情報を適用した場合の、アプリケーションの要求の振り分けのシミュレーションでは、マスタ変更情報の適用後のマスタ情報に基づいて、負荷分散装置３のラウンドロビンの重みＷｉｊが求められる。求められるラウンドロビンの重みＷｉｊは、各アプリケーションのコントローラ間メッセージの総量を最小とするように求められる。したがって、第６実施形態によれば、全てのアプリケーションのコントローラ間メッセージの総量が削減されるように、マスタを変更するスイッチが決定される。
【０２１３】
＜第７実施形態＞
第６実施形態では、全てのマスタ変更情報について、マスタ変更情報が適用された場合のシミュレーションが行われる。第７実施形態では、シミュレーションを実行するマスタ変更情報を絞り込むことによって、シミュレーションの処理に係る負荷を削減し、処理を高速化させる。第７実施形態では、第６実施形態と重複する説明は省略される。第７実施形態では、分散型通信システム１００のシステム構成、サーバ１のハードウェア構成及び機能構成は、第６実施形態と同様である。
【０２１４】
＜マスタ変更情報の絞り込み処理＞
マスタ変更情報の絞り込み処理は、マスタ変更決定処理における、（ステップ１）のマスタ変更情報の作成の処理の前に実行される処理である。したがって、マスタ変更情報の絞り込み処理は、マスタ変更決定処理における（ステップ１）の処理のサブステップとして説明する。なお、以降、第６実施形態と同様の分散型通信制御システム１００Ａが想定された具体例とともに説明される。
【０２１５】
（ステップ１−１）
サーバ１の制御部１５は、全てのアプリケーションとコントローラとの組み合わせについて、直接比率Ａｉｊを取得する。なお、直接比率Ａｉｊは、例えば、第１実施形態と同様にして取得される。
【０２１６】
図３８は、第７実施形態の具体例に係るアプリケーションｉのコントローラｊにおける直接比率Ａｉｊの一例を示す図である。第７実施形態の具体例では、コントローラは２台、アプリケーションは２つであるので、直接比率Ａｉｊは２×２の行例となる。
【０２１７】
図３８に示される例では、アプリケーション＃１のコントローラ＃１における直接比率Ａ１１は、１／２である。アプリケーション＃１のコントローラ＃２における直接比率Ａ１２は、１／２である。アプリケーション＃２のコントローラ＃１における直接比率Ａ２１は、２／３である。アプリケーション＃２のコントローラ＃２における直接比率Ａ２２は、１／３である。
【０２１８】
（ステップ１−２）
サーバ１の制御部１５は、ステップ１−１で求めた直接比率Ａｉｊについて、各アプリケーションについて、分散値を求める。ただし、分散値に限定されず、ばらつきを表す指標であればよく、例えば、標準偏差、最大値と最小値との差等が用いられてもよい。
【０２１９】
図３９は、第７実施形態の具体例に係る各アプリケーションの直接比率の分散値の一例を示す図である。図３９に示される各アプリケーションの直接比率の分散値は、図３８に示される例の直接比率Ａｉｊに基づいて求められたものである。
【０２２０】
図３９に示される例では、アプリケーション＃１の直接比率の分散値は、０である。アプリケーション＃２の直接比率の分散値は、約０．２８である。
【０２２１】
（ステップ１−３）
サーバ１の制御部１５は、直接比率の分散値が閾値以下のアプリケーションを抽出する。直接比率の分散値が小さいほど、アプリケーションの設定領域内におけるスイッチ９がマスタとするコントローラの偏りが小さいことが示される。そのため、直接比率の分散値が閾値以下のアプリケーションに、スイッチ９がマスタとするコントローラに偏りを生じさせることで、コントローラ間メッセージの削減により大きな効果が得られる。
【０２２２】
例えば、アプリケーションの直接比率の分散値が図３９に示される例の値であり、閾値が０．１である場合には、制御部１５は、アプリケーション＃１を抽出する。ステップ１−１〜１−３の処理は、「前記複数種類の所定の処理から、前記複数の制御装置それぞれから前記制御対象の複数の宛先装置に送信されたメッセージ量が前記複数の制御装置間で均等である第１の種類を取得」することの一例である。アプリケーションの直接比率の分散値が閾値以下であることは、「前記複数の制御装置それぞれから前記制御対象の複数の宛先装置に送信されたメッセージ量が前記複数の制御装置間で均等である」ことの一例である。
【０２２３】
（ステップ１−４）
サーバ１の制御部１５は、ステップ１−３で抽出したアプリケーションについて、最も送信メッセージ量が多いスイッチ９を抽出する。各スイッチ９への所定のアプリケーションの送信メッセージ量は、当該所定のアプリケーションのスイッチリストに含まれるスイッチの識別情報を集計することで取得される。そのため、第７実施形態では、ステップ１−４の処理より前にスイッチリストの取得が行われる。ステップ１−４の処理は、「前記第１の種類の所定の処理のメッセージの受信メッセージ量の多い上位の１又は複数の宛先装置を取得」することの一例である。
【０２２４】
図４０は、第７実施形態の具体例に係るアプリケーション＃１の各スイッチ９への送信メッセージ量の一例である。図４０に示される例では、ＳＷ＃４への送信メッセージ量が一番多いので、スイッチ＃４が抽出される。
【０２２５】
（ステップ１−５）
サーバ１の制御部１５は、現在のマスタ情報に基づいて、ステップ１−４において抽出したスイッチをマスタの変更対象とするマスタ変更情報を生成する。例えば、図４０に示される第７実施形態の具体例では、スイッチ＃４が抽出されるので、制御部１５は、スイッチ＃４のマスタをコントローラ＃１（図２８参照）からコントローラ＃２に変更するマスタ変更情報を作成する。ステップ１−５の処理は、「複数の宛先装置から前記取得した１又は複数の宛先装置を選択する事例情報を生成する」ことの一例である。
【０２２６】
これによって、シミュレーションが実行されるマスタ変更情報の数を減らすことができる。なお、具体例では、７台のスイッチ９のうち１台のスイッチ９のマスタを変更することが前提とされているため、ステップ１−４では、最も送信メッセージ量の多いスイッチ９が抽出されるが、これに限られない。例えば、複数台のスイッチ９のマスタを変更する場合には、送信メッセージ量の多い該当数のスイッチ９が抽出されてもよい。ステップ２以降の処理は、第６実施形態と同様である。
【０２２７】
図４１は、第７実施形態に係るマスタ変更決定処理の一例を示す図である。図４１に示される処理は、図３６に示される処理同様、例えば、所定の周期で実行されてもよいし、所定のイベントの発生を契機に実行されてもよい。処理の実行契機となるイベントは、例
えば、アプリケーションｉについて、コントローラ間で直接比率Ａｉｊの偏りが閾値未満となること、である。図４１に示される例の実行主体は、サーバ１のＣＰＵ  １０１であるが、便宜上、機能構成要素である制御部１５を主体として説明する。
【０２２８】
ＯＰ６０では、制御部１５は、各アプリケーションについて、スイッチリストを作成する。
【０２２９】
ＯＰ６１では、制御部１５は、コントローラｊとアプリケーションｉとの全ての組合せについて、直接比率Ａｉｊを求める。直接比率Ａｉｊの求め方は、例えば、第１実施形態と同様である。
【０２３０】
ＯＰ６２では、制御部１５は、各アプリケーションの直接比率の分散値を求める。ＯＰ６３では、制御部１５は、直接比率の分散値が閾値以下のアプリケーションを抽出する。
【０２３１】
ＯＰ６４では、制御部１５は、ＯＰ６３で抽出したアプリケーションの各スイッチ９への送信メッセージ量を取得する。ＯＰ６５では、制御部１５は、送信メッセージ量が最も多いスイッチをマスタ変更対象に設定する。ただし、マスタ変更対象となるスイッチ９の数が複数である場合には、送信メッセージ量の多い上位のスイッチ９が該当数選択される。
【０２３２】
ＯＰ６６では、制御部１５は、ＯＰ６５においてマスタ変更対象に設定されたスイッチ９のマスタを変更するマスタ変更情報を作成する。ＯＰ６７〜ＯＰ６９では、ＯＰ６６で作成されたマスタ変更情報について、図３６のＯＰ３２〜ＯＰ３４と同様の処理が行われる。
【０２３３】
なお、ＯＰ６６において作成されるマスタ変更情報が１つであり、当該マスタ変更情報のコントローラからスイッチ９への送信メッセージ量の分散が閾値より大きい場合には、例えば、以下のようにしてもよい。ＯＰ６５に処理が進み、制御部１５は、次に送信メッセージ量が多いスイッチをマスタ変更対象に設定して、マスタ変更情報を作成し（ＯＰ６６）、当該マスタ変更情報についてシミュレーションを行う。
【０２３４】
＜第７実施形態の作用効果＞
第７実施形態では、マスタが変更されるスイッチの全てのパターンについてではなく、条件を満たすスイッチのマスタが変更されるマスタ変更情報が作成される。これによって、シミュレーションの処理を削減することができ、マスタ変更決定処理を高速化することができる。また、シミュレーションに係るサーバ１の処理負荷を低減することができる。
【０２３５】
また、マスタとなるコントローラの偏りが小さいアプリケーションについて、送信メッセージ量が多いスイッチ９がマスタ変更対象として設定されるので、よりコントローラ間メッセージを削減可能なマスタ変更情報を作成することができる。
【０２３６】
＜記録媒体＞
コンピュータその他の機械、装置（以下、コンピュータ等）に上記いずれかの機能を実現させるプログラムをコンピュータ等が読み取り可能な記録媒体に記録することができる。コンピュータ等に、この記録媒体のプログラムを読み込ませて実行させることにより、その機能を提供させることができる。
【０２３７】
ここで、コンピュータ等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータ等から読み取ることができる非一時的な記録媒体をいう。このような記録媒体のうちコンピ
ュータ等から取り外し可能なものとしては、例えばフレキシブルディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ／Ｗ、ＤＶＤ、ブルーレイディスク、ＤＡＴ、８ｍｍテープ、フラッシュメモリなどのメモリカード等がある。また、コンピュータ等に固定された記録媒体としてハードディスク、ＲＯＭ（リードオンリーメモリ）等がある。さらに、ＳＳＤ（Solid State Drive）は、コンピュータ等から取り外し可能な記録媒体としても、コ
ンピュータ等に固定された記録媒体としても利用可能である。
【符号の説明】
【０２３８】
１      サーバ
２      サーバ
３      負荷分散装置
９      スイッチ
１１    要求受信部
１２    メッセージ転送部
１３    スイッチ設定部
１４    情報収集部
１５    制御部
１６    計測結果受信部
１７    重み通知部
１８Ａ  アプリケーション要求量記憶部
１８Ｂ  メッセージ量記憶部
１８Ｃ  マスタ情報記憶部
１０１  ＣＰＵ
１０２  主記憶装置
１０３  補助記憶装置
１０４  ネットワークインタフェース
【図１】
2017215933.tif 000006
【図２】
2017215933.tif 000007
【図３】
2017215933.tif 000008
【図４】
2017215933.tif 000009
【図５】
2017215933.tif 000010
【図６】
2017215933.tif 000011
【図７】
2017215933.tif 000012
【図８】
2017215933.tif 000013
【図９】
2017215933.tif 000014
【図１０】
2017215933.tif 000015
【図１１】
2017215933.tif 000016
【図１２】
2017215933.tif 000017
【図１３】
2017215933.tif 000018
【図１４】
2017215933.tif 000019
【図１５】
2017215933.tif 000020
【図１６】
2017215933.tif 000021
【図１７】
2017215933.tif 000022
【図１８】
2017215933.tif 000023
【図１９】
2017215933.tif 000024
【図２０】
2017215933.tif 000025
【図２１】
2017215933.tif 000026
【図２２】
2017215933.tif 000027
【図２３】
2017215933.tif 000028
【図２４】
2017215933.tif 000029
【図２５】
2017215933.tif 000030
【図２６】
2017215933.tif 000031
【図２７】
2017215933.tif 000032
【図２８】
2017215933.tif 000033
【図２９】
2017215933.tif 000034
【図３０】
2017215933.tif 000035
【図３１】
2017215933.tif 000036
【図３２】
2017215933.tif 000037
【図３３】
2017215933.tif 000038
【図３４】
2017215933.tif 000039
【図３５】
2017215933.tif 000040
【図３６】
2017215933.tif 000041
【図３７Ａ】
2017215933.tif 000042
【図３７Ｂ】
2017215933.tif 000043
【図３８】
2017215933.tif 000044
【図３９】
2017215933.tif 000045
【図４０】
2017215933.tif 000046
【図４１】
2017215933.tif 000047