(57)【要約】【課題】振り分けロジックを柔軟に変更する。【解決手段】ネットワークからパケットを受信する通信部（ＮＩＣ２０）と、複数の仮想制御部（ＶＭ１ａ，１ｂ，１ｃ・・・）として機能する複数の第１制御部３ａ，３ｂ，３ｃ，３ｄと、受信したパケットを複数に振り分ける振分回路（Balancer１０ａ）と、振分回路が振り分けたパケットを複数の仮想制御部（ＶＭ１ａ，１ｂ，１ｃ・・・）に振り分ける複数の第２制御部（Dispatcher４ａ，４ｂ，４ｃ，４ｄ）とを備え、振分回路は、ＰＬＤで構成されている。【選択図】図１
2019153019.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークからパケットを受信する通信部と、
複数の仮想制御部として機能する複数の第１制御部と、
受信した前記パケットを複数に振り分ける振分回路と、
前記振分回路が振り分けたパケットを前記複数の仮想制御部に振り分ける複数の第２制御部とを備え、
前記振分回路は、ＰＬＤで構成されている
ことを特徴とする制御装置。
【請求項２】
請求項１に記載の制御装置であって、
前記振分回路は、切替え可能な複数種類の振分部を備え、
前記複数種類の振分部は、設定又は管理部の制御により、切り替えられる
ことを特徴とする制御装置。
【請求項３】
請求項１に記載の制御装置であって、
前記振分回路は、前記第２制御部と１対１接続されている複数の第１出力部と、前記第２制御部と接続されていない第２出力部とを有し、
前記第１出力部と前記第２出力部との何れを振り分け経路とするかを管理する管理部をさらに備える
ことを特徴とする制御装置。
【請求項４】
請求項１に記載の制御装置であって、
前記振分回路は、前記第２制御部と１対１接続されている複数の第１出力部と、前記第２制御部と接続されていない第２出力部とを有し、
前記第２出力部の出力信号経路が遮断される
ことを特徴とする制御装置。
【請求項５】
請求項３又は請求項４に記載の制御装置であって、
前記振分回路は、前記第２出力部に送信されるべきパケットを、ラウンドロビンを用いて第１出力部に振り分け直す
ことを特徴とする制御装置。
【請求項６】
請求項１に記載の制御装置であって、
前記振分回路は、何れか複数の前記第２制御部と１対１接続されている複数の第１出力部と、他の前記第２制御部と接続されている複数の第２出力部とを有し、
他の何れかの前記第２制御部は、複数の前記第２出力部からの信号をマージする
ことを特徴とする制御装置。
【請求項７】
請求項１に記載の制御装置であって、
何れかの前記第２制御部は、自身に接続される前記仮想制御部にパケットを振り分けると共に、他の第２制御部に接続されている他の前記仮想制御部にパケットを振り分ける
ことを特徴とする制御装置。
【請求項８】
ネットワークからパケットを受信する通信部と、
受信した前記パケットを複数に振り分け、ＰＬＤで構成された振分回路と、
前記振分回路が振り分けたパケットを処理する複数の制御部を備える制御装置が実行される制御方法であって、
前記ＰＬＤが異なる種類の振分部に再構成させられるステップを有することを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御装置、及び制御方法に関する。
【背景技術】
【０００２】
ロードバランサ（Balancer）が処理要求（パケット）を複数に振り分け、振り分けられた処理要求を、複数のディスパッチャ（Dispatcher）が、該ディスパッチャと同数のサーバ（ＣＰＵ）に振り分け、振り分けられたサーバが処理を実行する技術が開示されている（特許文献１参照）。また、特許文献１には、「ロードバランサＢは、外部装置５から処理要求を取得すると、ラウンドロビン等によりその処理要求を複数のディスパッチャＤ（Ｄ１，Ｄ２，Ｄ３）のいずれかに振り分ける」と記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１４−０３２５３０号公報（段落００３３、図２）
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ここで、特許文献１に記載のロードバランサは、物理ＣＰＵを搭載し、ソフトウェアで実現しているのか、物理ＣＰＵを搭載することなく、ハードウェアロジックで実現しているのかまでは記載されていない。仮に、ロードバランサを専用ハードウェアで構成すれば、ソフトウェアで実現するよりも、高速になる一方、振り分けロジックや振り分け先の数が固定されてしまう。
【０００５】
本発明は、このような問題点を解決するためになされたものであり、振り分けロジックを柔軟に変更することができる制御装置、及び制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
請求項１に係る発明の制御装置は、ネットワークからパケットを受信する通信部（例えば、ＮＩＣ）と、複数の仮想制御部（例えば、ＶＭ１ａ，１ｂ，・・・）として機能する複数の第１制御部と、受信した前記パケットを複数に振り分ける振分回路（例えば、Balancer１０ａ）と、前記振分回路が振り分けたパケットを前記複数の仮想制御部に振り分ける複数の第２制御部（例えば、Dispatcher４ａ，・・・）とを備え、前記振分回路は、ＰＬＤ（Programmable Logic Device）で構成されていることを特徴とする。
【０００７】
これによれば、振分回路が受信したパケットを第２制御部に振り分ける。そして、第２制御部は、振り分けられたパケットを複数の仮想制御部に振り分ける。振分回路によって、第２制御部を複数備えられるので、複数の仮想制御部を構成する第１制御部の数を増加させることができる。
ここで、ＰＬＤで構成された振分回路が複数の第２制御部にパケットを振り分けるので、専用ハードウェアで構成するよりも、柔軟性が高く、ケースバイケースで振り分けロジックを変更することができる。また、ソフトウェアでパケットを振り分けるよりも、高速化を実現することができる。なお、第１制御部及び第２制御部の何れか一方又は双方は、ＣＰＵコアやＣＰＵデバイスの機能部として構成することができる。
【０００８】
請求項２に係る発明は、請求項１に記載の制御装置であって、前記振分回路は、切替え可能な複数種類の振分部を備え、前記複数種類の振分部は、設定又は管理部の制御により、切り替えられることを特徴とする。
【０００９】
これによれば、複数種類の振分部は、その何れかにケースバイケースで切り替えられる。つまり、振り分けロジックを柔軟に変更することができる。
【００１０】
請求項３に係る発明は、請求項１に記載の制御装置であって、前記振分回路は、前記第２制御部と１対１接続されている複数の第１出力部と、前記第２制御部と接続されていない第２出力部とを有し、前記第１出力部と前記第２出力部との何れを振り分け経路とするかを管理する管理部をさらに備えることを特徴とする。
【００１１】
これによれば、振分回路は、第２制御部（例えば、Dispatcher）の数よりも多い数の出力部（例えば、CPU_IF機能部１１の出力部）を備えておくことができる。つまり、振分回路は、ハードウェア上の限界まで、最大数の出力部（第１出力部又は第２出力部）を構成することができる。
【００１２】
請求項４に係る発明は、請求項１に記載の制御装置であって、前記振分回路は、前記第２制御部と１対１接続されている複数の第１出力部と、前記第２制御部と接続されていない第２出力部とを有し、前記第２出力部の出力信号経路が遮断されることを特徴とする。
【００１３】
これによれば、振分回路は、ハードウェア上の限界まで、最大数の出力部（第１出力部又は第２出力部）を構成することができる。
【００１４】
請求項５に係る発明は、請求項３又は請求項４に記載の制御装置であって、前記振分回路は、前記第２出力部に送信されるべきパケットを、ラウンドロビンを用いて第１出力部に振り分け直すことを特徴とする。
【００１５】
これによれば、複数の第１出力部は、１対１接続されている第２制御部を負荷分散する。また、第２出力部は、負荷を有さない。
【００１６】
請求項６に係る発明は、請求項１に記載の制御装置であって、前記振分回路は、前記第２制御部と１対１接続されている複数の第１出力部と、他の前記第２制御部と接続されている複数の第２出力部とを有し、他の何れかの前記第２制御部は、複数の前記第２出力部からの信号をマージすることを特徴とする。
【００１７】
これによれば、第１出力部の数と第２出力部の数との和が第２制御部の数よりも多くても、全ての出力部（第１出力部及び第２出力部）を使用することができる。
【００１８】
請求項７に係る発明は、請求項１に記載の制御装置であって、何れかの前記第２制御部（例えば、Dispatcher）は、自身に接続される前記仮想制御部にパケットを振り分けると共に、他の第２制御部に接続されている他の前記仮想制御部にパケットを振り分けることを特徴とする。
【００１９】
これによれば、何れかの第２制御部は、他の第２制御部を介して、他の前記仮想制御部にパケットを振り分けたり、他の第２制御部を介することなく、他の仮想制御部にパケットを振り分けたりする。
【００２０】
請求項８に係る発明は、ネットワークからパケットを受信する通信部と、受信した前記パケットを複数に振り分け、ＰＬＤで構成された振分回路と、前記振分回路が振り分けたパケットを処理する複数の制御部を備える制御装置が実行される制御方法であって、前記ＰＬＤが異なる種類の振分部に再構成させられるステップを有することを特徴とする。
【００２１】
これによれば、ＰＬＤは、複数種類の振分部（例えば、Balancer機能部Ａ１２ａ、Balancer機能部Ｂ１２ｂ、Balancer機能部Ｃ１２ｃ、Balancer機能部Ｄ１２ｄ）の何れかに再構成させられる。つまり、振分回路は、ケースバイケースで振り分けロジックを変更することができる。
【００２２】
なお、振分回路は、パケットの特定のフィールドの内容に基づいて、何れかの第１出力部に切り替え、各々の第２制御部は、識別子を用いて、各々の仮想制御部に振り分ける振分機能を実現することができる。
【発明の効果】
【００２３】
本発明によれば、振り分けロジックを柔軟に変更することが可能な制御装置を構成することができる。
【図面の簡単な説明】
【００２４】
【図１】本発明の第１実施形態である制御装置の構成図である。
【図２】本発明の第２実施形態である制御装置の構成図である。
【図３】本発明の第３実施形態である制御装置の構成図である。
【図４】本発明の第４実施形態である制御装置の構成図である。
【図５】本発明の第５実施形態である制御装置の構成図である。
【図６】本発明の比較例である制御装置の構成図である。
【発明を実施するための形態】
【００２５】
以下、図面を参照して、本発明の実施の形態（以下、「本実施形態」と称する）につき詳細に説明する。なお、各図は、本発明を十分に理解できる程度に、概略的に示してあるに過ぎない。また、各図において、共通する構成要素や同様な構成要素については、同一の符号を付し、それらの重複する説明を省略する。
【００２６】
（第１実施形態）
図１は、本発明の第１実施形態である制御システムの全体構成図である。
制御装置１００ａは、複数の第１制御部３ａ，３ｂ，３ｃ，３ｄと、該第１制御部と同数の第２制御部６ａ，６ｂ，６ｃ，６ｄと、振分回路としてのBalancer１０ａと、通信部としてのＮＩＣ２０とを備えて構成される。
【００２７】
第１制御部３ａは、物理ＣＰＵ（Central Processing Unit）としてのＣＰＵコアであり、プログラム（プログラムモジュール）を実行することにより、複数のＶＭ（Virtual Machine）である仮想制御部１ａ，１ｂと、複数のキューである第１バッファ２ａ，２ｂとの機能を実現する。仮想制御部１ａ，１ｂは、ハイパバイザ上で動作する仮想的なコンピュータである。第１バッファ２ａ，２ｂは、第２制御部６ａから振り分けられた信号（パケット）を先入れ先出しで仮想制御部１ａ，１ｂに出力するキューである。
【００２８】
第２制御部６ａは、物理ＣＰＵとしてのＣＰＵコアであり、プログラムを実行することにより、Dispatcher４ａと、キューである第２バッファ５ａとの機能を実現する。なお、複数の第１制御部３ａ，３ｂ，３ｃ，３ｄと、該第１制御部と同数の第２制御部６ａ，６ｂ，６ｃ，６ｄとの何れか一方又は双方は、ＣＰＵコアの機能部としても実現可能であり、また、複数のＣＰＵコアを内蔵するＣＰＵデバイスの機能部としても実現可能である。
【００２９】
Dispatcher４ａは、例えば、宛先ＩＰアドレス等の識別子に基づいて、仮想制御部１ａ，１ｂに振り分ける機能を有する。同様に、第１制御部３ｂは、複数の仮想制御部１ｃ，１ｄと、複数の第１バッファ２ｃ，２ｄとの機能を実現する。第２制御部６ｂは、Dispatcher４ｂと、第２バッファ５ｂとの機能を実現する。また、第１制御部３ｃは、複数の仮想制御部１ｅ，１ｆと、複数の第１バッファ２ｅ，２ｆとの機能を実現する。第２制御部６ｃは、Dispatcher４ｃと、第２バッファ５ｃとの機能を実現する。また、第１制御部３ｄは、複数の仮想制御部１ｇ，１ｈと、複数の第１バッファ２ｇ，２ｈとの機能を実現する。第２制御部６ｄは、Dispatcher４ｄと、第２バッファ５ｄとの機能を実現する。ＮＩＣ２０は、Network Interface Cardであり、ＬＡＮ(Local Area Network)やＷＡＮ(Wide Area Network)等のネットワークに接続される通信部である。
【００３０】
Balancer１０ａは、CPU_IF機能部１１と、Balancer機能部１２と、NIC_IF機能部１３と、汎用ＩＦ１４ａ，１４ｂとを備えて構成される振分回路である。CPU_IF機能部１１は、４つの出力部を有し、第２制御部６ａ，６ｂ，６ｃ，６ｄとのインタフェースを司るハードウェアである。なお、後記する第５実施形態である制御装置１００ｅ（図５）のように、CPU_IF機能部１１は、ラウンドロビン等の機能を実現するＣＰＵで構成されることもある。
【００３１】
NIC_IF機能部１３は、ＮＩＣ２０とのインタフェースを司るハードウェアである。汎用ＩＦ１４ａ，１４ｂは、汎用のキューである。特に、汎用ＩＦ１４ａは、CPU_IF機能部１１とBalancer機能部１２との間を中継するＦＩＦＯ（First In First Out）メモリ（ハードウェア）である。汎用ＩＦ１４ｂは、Balancer機能部１２とNIC_IF機能部１３との間を中継するＦＩＦＯメモリである。
【００３２】
Balancer機能部１２は、ＮＩＣ２０が受信したパケットを複数に振り分けるハードウェアであり、ＰＬＤ（Programmable Logic Device）、例えば、ＦＰＧＡ（Field Programmable Gate Array）で構成される振分部である。そして、振り分けられたパケットは、汎用ＩＦ１４ａ、及びCPU_IF機能部１１を介して、４つの第２バッファ５ａ，５ｂ，５ｃ，５ｄに出力される。Balancer機能部１２は、ＰＬＤを用いることにより、任意の振り分けロジックを実現することができる。つまり、Balancer機能部１２は、Balancer機能部Ａ１２ａ、Balancer機能部Ｂ１２ｂ、Balancer機能部Ｃ１２ｃ、Balancer機能部Ｄ１２ｄ等の異なる種類のBalancer機能部（振分部）の何れかに機能変更することができる。また、Balancer機能部１２は、ＦＰＧＡを用い、Gate Arrayを再構成することにより、ケースバイケースで機能変更することができる。
【００３３】
例えば、Balancer機能部１２は、パケットの特定のフィールドを見て、同等のフローで処理可能であれば、同じ振り分け先に振り分けるものであったり、ラウンドロビンのように、パケットの性質に無関係に振り分けるものであったりする。なお、同じ振り分け先に振り分けるものは、指向性が高いということができ、振り分け先がランダムなラウンドロビンは、指向性が低いということができる。また、同等のフローを示したものを同じ振り分け先に振り分ければ、ランダム性が低く、静的な仮想制御部（ＶＭ）に振り分けることができる。また、パケットの性質によらずに振り分ければ、ランダム性が高く、仮想制御部（ＶＭ）の数や配置場所が動的に変動する場合に有効に振り分けることができる。
【００３４】
また、Balancer機能部１２は、Balancer機能部Ａ１２ａ、Balancer機能部Ｂ１２ｂ、Balancer機能部Ｃ１２ｃ、Balancer機能部Ｄ１２ｄ等の異なる機能のBalancerを有し、オプション設定により、各機能部を切り替えることができるように構成しても構わない。
【００３５】
以上説明したように、本実施形態の制御装置１００ａは、Balancer機能部１２をＦＰＧＡのハードウェアで構成するので、ケースバイケースで再構成したり、オプション設定することにより、複数のBalancer機能部１２ａ，１２ｂ，１２ｃ，１２ｄの何れかに切り替えることができる。
【００３６】
（第２実施形態）
前記第１実施形態の制御装置１００ａのBalancer１０ａは、Balancer機能部１２を備え、Balancer機能部１２が振り分けることができる数と、第２制御部６ａ，６ｂ，６ｃ，６ｄの数とが等しいことを前提としていた。本実施形態では、Balancer機能部１２が振り分け可能な数の方が第２制御部６ａ，６ｂ，６ｃ，６ｄの数よりも多いことを前提とする。
【００３７】
図２は、本発明の第２実施形態である制御装置の構成図である。
制御装置１００ｂは、前記第１実施形態の制御装置１００ａと同様に、複数の第１制御部３ａ，３ｂ，３ｃと、該第１制御部と同数の第２制御部６ａ，６ｂ，６ｃと、振分回路としてのBalancer１０ａと、通信部としてのＮＩＣ２０とを備える。ここで、第１制御部３ｃは、複数の仮想制御部１ｅ，１ｆ，１ｇ，１ｈと、複数の第１バッファ２ｅ，２ｆ，２ｇ，２ｈとの機能を実現する。第１制御部３ａ，３ｂよりも仮想制御部の数が多いので、処理が軽い制御を並列処理することができる。第２制御部６ｃは、Dispatcher４ｃと、第２バッファ５ｃとの機能を実現する。
【００３８】
ここで、Balancer１０ａは、振り分け可能な数が第２制御部６ａ，６ｂ，６ｃの数よりも多いBalancer機能部１２（図１）を備えているものとする。つまり、Balancer１０ａは、第２制御部６ａ，６ｂ，６ｃと１対１接続する第１出力部（振り分け経路）と、第２制御部６ａ，６ｂ，６ｃに接続されない第２出力部（振り分け経路）とを有している。さらに、制御装置１００ｂは、第２制御部６ａ，６ｂ，６ｃを管理する管理部３０ａと、Balancer１０ａを管理する管理部３０ｂと、管理部３０ａと管理部３０ｂとを通信可能に接続する通知用ＩＦとを備えて構成される。
【００３９】
管理部３０ａ，３０ｂは、Balancer１０ａの機能を指定する。具体的には、管理部３０ａ，３０ｂは、振分部としてのBalancer機能部１２（図１）の第２出力部を指定する機能を有する。ここでは、管理部３０ａ，３０ｂは、第２制御部６ａ，６ｂ，６ｃの数が３つであるので、Balancer機能部１２は、第２制御部６ａ，６ｂ，６ｃに接続されている３つの第１出力部を使用する。つまり、管理部３０ａ，３０ｂは、Balancer１０ａの回路を変更することなく、インタフェース（出力部）の数を変更する。また、Balancer機能部１２は、Balancer機能部Ａ１２ａ、Balancer機能部Ｂ１２ｂ、Balancer機能部Ｃ１２ｃ、Balancer機能部Ｄ１２ｄ等の異なる機能のBalancerを有し、管理部３０ａ，３０ｂが各機能部を切り替えるように構成しても構わない。
【００４０】
制御装置１００ｂによれば、Balancer１０ａは、最大限の振り分け可能数のBalancer機能部１２を、ＦＰＧＡで構成することができる。そして、第２制御部６ａ，６ｂ，６ｃに接続されている第１出力部を使用し、第２制御部６ａ，６ｂ，６ｃに接続されていない第２出力部が未使用になる。
【００４１】
（第３実施形態）
前記第２実施形態では、管理部３０ａ，３０ｂがBalancer機能部１０ａの振り分けインタフェースの一部を未使用にしたが、Balancer１０ａに接続される第２制御部６ａ，６ｂ，６ｃの何れかまでパケットが送信されないように構成することができる。
【００４２】
図３は、本発明の第３実施形態である制御装置の構成図である。
制御装置１００ｃは、前記第２実施形態と同様に、複数の第１制御部３ａ，３ｂ，３ｃと、該第１制御部と同数の第２制御部６ａ，６ｂ，６ｃと、Balancer機能部１２（図１）を有するBalancer１０ａと、機能部としてのバッファ５ｅと、通信部としてのＮＩＣ２０とを備える。ここで、Balancer機能部１２の振り分け可能な数は、ＦＰＧＡの能力の最大数に設定されているものとする。第２制御部６ｃは、Dispatcher４ｃと、第２バッファ５ｃとの機能を実現する。なお、バッファ５ｅは、新たな制御部が実現しても、第１制御部３ａ，３ｂ，３ｃ及び第２制御部６ａ，６ｂ，６ｃ何れが実現しても構わない。
【００４３】
Balancer１０ａは、４つの出力部を有し、第２制御部６ａの第２バッファ５ａと、第２制御部６ｂの第２バッファ５ｂと、第２制御部６ｃの第２バッファ５ｃと、バッファ５ｅと接続されている。また、バッファ５ｅは、ダミー「full」が格納されており、Balancer１０ａからパケット（情報）が伝送されないように構成されている。
【００４４】
この構成により、Balancer１０ａは、第２制御部６ａの第２バッファ５ａと、第２制御部６ｂの第２バッファ５ｂと、第２制御部６ｃの第２バッファ５ｃとに対して、パケットを３つに振り分ける。Balancer１０ａは、その回路を変更することなく、インタフェースの数が減少する。
【００４５】
（第４実施形態）
前記第３実施形態の制御装置１００ｃは、第２バッファ５ｃ及びバッファ５ｅの一方の第２バッファ５ｃを使用したが、第２バッファ５ｃ及びバッファ５ｅを使用することもできる。
【００４６】
図４は、本発明の第４実施形態である制御装置の構成図である。
制御装置１００ｄは、前記第３実施形態と同様に、複数の第１制御部３ａ，３ｂ，３ｃと、該第１制御部と同数の第２制御部６ａ，６ｂ，６ｃと、Balancer機能部１２（図１）を有するBalancer１０ａと、通信部としてのＮＩＣ２０とを備える。ここで、Balancer機能部１２の振り分け可能な数は、ＦＰＧＡの能力の最大数に設定されている。第２制御部６ｃは、Dispatcher４ｃと、複数の第２バッファ５ｃ，５ｄとの機能を実現する。
【００４７】
Balancer１０ａは、４つの出力部を有し、第２制御部６ａの第２バッファ５ａと、第２制御部６ｂの第２バッファ５ｂと、第２制御部６ｃの２つの第２バッファ５ｃ，５ｄと接続されている。Dispatcher４ｃは、２つの第２バッファ５ｃ，５ｄから受け取るパケット（信号）をマージ（併合）し、マージされた信号を第１制御部３ｃの第１バッファ２ｅ，２ｆ，２ｇ，２ｈに振り分ける。
【００４８】
このため、Balancer１０ａのBalancer機能部１２（図１）は、Balancer機能部１０ａの振り分けインタフェースの一部を未使用にすることなく、パケットを振り分けることができる。
【００４９】
（第５実施形態）
前記第２実施形態の制御装置１００ｂは、Balancer１０ａの回路を変更することなく、インタフェースの数を減少させた。また、前記第３実施形態の制御装置１００ｃは、第２バッファ５ｅにダミー「full」を格納し、情報（パケット）伝送不可になるように構成していた。制御装置１００ｃの場合において、パケットは、第２バッファ５ａ，５ｂ，５ｃに送信される。
【００５０】
図５は、本発明の第５実施形態である制御装置の構成図である。
制御装置１００ｅは、前記第３実施形態と同様に、複数の第１制御部３ａ，３ｂ，３ｃと、該第１制御部と同数の第２制御部６ａ，６ｂ，６ｃと、Balancer機能部１２（図１）を有するBalancer１０ａと、機能部としてのバッファ５ｅと、通信部としてのＮＩＣ２０とを備える。Balancer機能部１２の振り分け可能な数は、ＦＰＧＡの能力の最大数に設定されている。第２制御部６ｃは、Dispatcher４ｃと、第２バッファ５ｃとの機能を実現する。
【００５１】
Balancer１０ａは、４つの出力部を有し、第２制御部６ａの第２バッファ５ａと、第２制御部６ｂの第２バッファ５ｂと、第２制御部６ｃの第２バッファ５ｃと、バッファ５ｅと接続されている。但し、バッファ５ｅは、前記第３実施形態のように、ダミー「full」が格納されており、Balancer１０ａから情報（パケット）が伝送されないように構成されている。
【００５２】
Balancer１０ａは、複数の第３バッファ１５ａ，１５ｂ，１５ｃ，１５ｄと、複数の第４バッファ１５ｅ，１５ｆ，１５ｇ，１５ｈと、振分機能部１６とを備えて構成される。ここで、複数の第３バッファ１５ａ，１５ｂ，１５ｃ，１５ｄ、及び複数の第４バッファ１５ｅ，１５ｆ，１５ｇ，１５ｈは、前記第１実施形態のＣＰＵ_ＩＦ機能１１（図１）に相当する。第４バッファ１５ｈは、ダミー「full」が格納されているバッファ５ｅに接続されているので、パケットを第２制御部６ｃに送信することができない。
【００５３】
振分機能部１６は、ＮＩＣ２０から受信したパケットを複数の第３バッファ１５ａ，１５ｂ，１５ｃ，１５ｄに振り分ける。つまり、振分機能部１６は、前記第１実施形態のBalancer機能部１２（図１）に相当する。第３バッファ１５ａ，１５ｂ，１５ｃ，１５ｄに振り分けられたパケットは、原則的に、第４バッファ１５ｅ，１５ｆ，１５ｇ，１５ｈに送信される。しかしながら、第３バッファ１５ｈは使用不可なので、第３バッファ１５ａ，１５ｂ，１５ｃ，１５ｄに振り分けられたパケットは、ラウンドロビン等の振り分けロジックに基づいて、第４バッファ１５ｅ，１５ｆ，１５ｇに振り分けられる。
【００５４】
例えば、第３バッファ１５ａ，１５ｂ，１５ｃに振り分けられたパケットは、原則通り、第４バッファ１５ｅ，１５ｆ，１５ｇに送信される。さらに、また、第３バッファ１５ｄに振り分けられたパケットは、第４バッファ１５ｈに振り分けられるべきであるが、他の第４バッファ１５ｅ，１５ｆ，１５ｇにラウンドロビンで振り分けられる。そして、第４バッファ１５ｅ，１５ｆ，１５ｇに振り分けられたパケットは、第２バッファ５ａ，５ｂ，５ｃに送信される。
【００５５】
つまり、Balancer１０ａは、振分機能部１６の機能数と、出力数（第４バッファ１５ｅ，１５ｆ，１５ｇ，１５ｈの数）との不一致を回避する。
【００５６】
また、前記第２実施形態では、管理部３０ａ，３０ｂ（図２）が未使用な振り分けインタフェースを指定していた。具体的に、管理部３０ａ，３０ｂは、バッファ１５ｈを未使用に指定する。これにより、第３バッファ１５ｄに振り分けられたパケットは、第４バッファ１５ｅ，１５ｆ，１５ｇにラウンドロビンで振り分けられる。
【００５７】
（比較例）
図６は、本発明の比較例である制御装置の構成図である。
以下、制御装置１００ｆを用いて、前記実施形態の制御装置１００ａ〜１００ｅと比較する。制御装置１００ｆは、複数の第１制御部３ａ，３ｂ，３ｄ，３ｅと、該第１制御部と同数の第２制御部６ａ，６ｂ，６ｄ，６ｅと、振分回路としてのBalancer１０ｂと、通信部としてのＮＩＣ２０とを備えて構成される。
【００５８】
第１制御部３ａは、物理ＣＰＵとしてのＣＰＵコアであり、複数の仮想制御部１ａ，１ｂと、複数の第１バッファ２ａ，２ｂとの機能を実現する。仮想制御部１ａ，１ｂは、ハイパバイザ上で動作する仮想的なコンピュータである。第１バッファ２ａ，２ｂは、第２制御部６ａから振り分けられた信号（パケット）を先入れ先出しで仮想マシン１ａ，１ｂに出力する。
【００５９】
第２制御部６ａは、物理ＣＰＵとしてのＣＰＵコアであり、プログラムを実行することにより、Dispatcher４ａと、第２バッファ５ａとの機能を実現する。同様に、第１制御部３ｂは、複数の仮想制御部１ｃ，１ｄと、複数の第１バッファ２ｃ，２ｄとの機能を実現する。第２制御部６ｂは、Dispatcher４ｂと、第２バッファ５ｂとの機能を実現する。また、第１制御部３ｄは、複数の仮想制御部１ｅ，１ｆと、複数の第１バッファ２ｅ，２ｆとの機能を実現する。第２制御部６ｄは、Dispatcher４ｄと、第２バッファ５ｄとの機能を実現する。また、第１制御部３ｅは、複数の仮想制御部１ｇ，１ｈと、複数の第１バッファ２ｇ，２ｈとの機能を実現する。第２制御部６ｅは、Dispatcher４ｅと、第２バッファ５ｅとの機能を実現する。ＮＩＣ２０は、Network Interface Cardであり、ネットワークに接続される通信部である。
【００６０】
Balancer１０ｂは、ＰＬＤでなく、専用ハードウェアで実現されており、単一の振分機能のみを実現する。Balancer１０ｂは、ＮＩＣ２０が受信したパケットを固定された単一ロジックで第２制御部６ａ，６ｂ，６ｄ，６ｅに振り分ける。
【００６１】
Balancer１０ｂは、専用ハードウェアで実現されているので、高速である一方、振り分けロジックや振り分け先の数が固定されている。しかしながら、前記第１実施形態の制御装置１００ａのBalancer１０ａはＰＬＤ、例えばＦＰＧＡで構成されている。このため、Balancer機能部１２は、Gate Arrayを再構成することにより、Balancer機能部Ａ１２ａ、Balancer機能部Ｂ１２ｂ、Balancer機能部Ｃ１２ｃ、Balancer機能部Ｄ１２ｄ等の何れかに機能変更することができる。また、Balancer機能部１２は、Balancer機能部Ａ１２ａ、Balancer機能部Ｂ１２ｂ、Balancer機能部Ｃ１２ｃ、Balancer機能部Ｄ１２ｄ等を有し、オプション設定により、各機能部を切り替えることができる。
【００６２】
また、前記第２，３，４実施形態の制御装置１００ｂ，１００ｃ，１００ｄは、Balancer１０ａの振り分け機能の数と、振り分け先である第２制御部６ａ，６ｂ，６ｃの数とが異なっている。
【００６３】
（変形例）
本発明は前記した実施形態に限定されるものではなく、例えば、以下のような種々の変形が可能である。
（１）前記各実施形態の第１バッファ２ａ，２ｂ，２ｃ，２ｄ，２ｅ，２ｆ，２ｇ，２ｈや、第２バッファ５ａ，５ｂ，５ｃ，５ｄ，５ｅは、先入れ先だしを行う機能を有していたが、所定のアドレスにデータを書き込み、それを取り出すものであっても構わない。
【００６４】
（２）前記各実施形態のDispatcher４ａ，４ｂ，４ｃ，４ｄは、それぞれに接続している第１制御部３ａ，３ｂ，３ｃ，３ｄの複数の仮想制御部（例えば、第１制御部３ａの仮想制御部１ａ，１ｂ）に振り分けていた。Dispatcher４ａは、全ての仮想制御部１ａ，１ｂ，１ｃ，１ｄ，１ｅ，１ｆ，１ｇ，１ｈの何れかに振り分け、他のDispatcher４ｂ，４ｃ，４ｄも全ての仮想制御部１ａ，１ｂ，１ｃ，１ｄ，１ｅ，１ｆ，１ｇ，１ｈの何れかに振り分けるように構成しても構わない。
【００６５】
（３）前記各実施形態のDispatcher４ａ，４ｂ，４ｃ，４ｄは、それぞれに接続している第１制御部３ａ，３ｂ，３ｃ，３ｄの複数の仮想制御部（例えば、第１制御部３ａの仮想制御部１ａ，１ｂ）に振り分けていた。各々のDispatcher４ａ，４ｂ，４ｃ，４ｄは、それぞれに接続している第１制御部３ａ，３ｂ，３ｃ，３ｄの複数の仮想制御部だけでなく、他のDispatcher（例えば、Dispatcher４ａがDispatcher４ｂ，４ｃ，４ｄ）に振り分けることもある。
【符号の説明】
【００６６】
１，１ａ，１ｂ，１ｃ，１ｄ，１ｅ，１ｆ，１ｇ，１ｈ  仮想制御部
２，２ａ，２ｂ，２ｃ，２ｄ，２ｅ，２ｆ，２ｇ，２ｈ  第１バッファ（キュー）
３，３ａ，３ｂ，３ｃ  第１制御部
４，４ａ，４ｂ，４ｃ，４ｄ  Dispatcher
５，５ａ，５ｂ，５ｃ，５ｄ  第２バッファ（キュー）
５ｅ  バッファ（full）
６，６ａ，６ｂ，６ｃ，６ｄ  第２制御部
７ａ，７ｂ，７ｃ，  第３制御部
１０ａ  Balancer（振分回路、ＰＬＤ，ＦＰＧＡ）
１０ｂ  Balancer（専用ハードウェア）
１１  CPU_IF機能部（第１出力部，第２出力部）
１２  Balancer機能部
１２ａ，１２ｂ，１２ｃ，１２ｄ  Balancer機能部（振分部）
１３  NIC_IF機能部
１４ａ，１４ｂ  汎用ＩＦ（キュー）
１５ａ，１５ｂ，１５ｃ，１５ｄ  第３バッファ
１５ｅ，１５ｆ，１５ｇ，１５ｈ  第４バッファ
１６  振分機能部
２０  ＮＩＣ（通信部）
３０ａ，３０ｂ  管理部
１００ａ，１００ｂ，１００ｃ，１００ｄ，１００ｅ，１００ｆ，１００ｇ  制御装置
【図１】
2019153019.tif 000003
【図２】
2019153019.tif 000004
【図３】
2019153019.tif 000005
【図４】
2019153019.tif 000006
【図５】
2019153019.tif 000007
【図６】
2019153019.tif 000008