(57)【要約】      （修正有）【課題】ＶＮＦの高スループットを維持しながら、複数のＶＭ毎にパケットの振分け制御手法を変更可能とし、システム全体の高機能化・高スループット化を実現するネットワーク負荷分散装置を提供する。【解決手段】ネットワーク負荷分散装置は、受信したパケットの転送先の通信経路ごとに設けられ、仮想ファンクションに対応づけられたデータバッファを有し、受信したパケットのフィールド値に基づいて宛先仮想ファンクションを決定し、フィールド値を用いて演算した第１のハッシュ値に基づいて、優先制御の対象となるパケットの転送先の通信経路を決定し、第１のハッシュ値に基づく第２のハッシュ値に基づいて、予め設定したデータバッファの負荷分散状況と合致するように、負荷分散制御の対象となるパケットの転送先の通信経路を決定し、決定した宛先仮想ファンクションと転送先の通信経路に従って、パケットを送信する。【選択図】図２
2020010190.tif 000002
【特許請求の範囲】
【請求項１】
受信したパケットの転送先の通信経路ごとに設けられ、仮想ファンクションに対応づけられたデータバッファと、
前記受信したパケットのフィールド値またはフィールド値を用いて演算したハッシュ値に基づいて宛先仮想ファンクションを決定するファンクション転送制御部と、
前記フィールド値を用いて第１のハッシュ値を演算するハッシュ値演算部と、
前記第１のハッシュ値に基づいて、優先制御の対象となるパケットの転送先の通信経路を決定する優先制御部と、
前記第１のハッシュ値または前記第１のハッシュ値に基づく第２のハッシュ値に基づいて、予め設定した前記データバッファの負荷分散状況と合致するように、負荷分散制御の対象となるパケットの転送先の通信経路を決定する負荷分散制御部と、
前記ファンクション転送制御部が決定した前記宛先仮想ファンクションと、前記優先制御部および前記負荷分散制御部の少なくともいずれかが決定した前記転送先の通信経路に従って、前記宛先仮想ファンクションおよび前記転送先の通信経路に対応するデータバッファに前記パケットを送信するパケット転送制御部とを備える
ネットワーク負荷分散装置。
【請求項２】
前記ファンクション転送制御部は、
複数の前記仮想ファンクションごとに、前記宛先仮想ファンクションのフィールド値またはフィールド値を用いて演算したハッシュ値が予め記憶されている宛先ファンクション選択テーブルと、
複数の前記仮想ファンクションごとに、前記受信したパケットのフィールド値と前記宛先ファンクション選択テーブルのフィールド値との照合、または、前記受信したパケットのフィールド値を用いて演算したハッシュ値と前記宛先ファンクション選択テーブルのハッシュ値との照合を行い、前記照合の結果に応じて前記宛先仮想ファンクションを決定する宛先ファンクション制御部とを備えること
を特徴とする請求項１記載のネットワーク負荷分散装置。
【請求項３】
前記ファンクション転送制御部は、
前記受信したパケットのフィールド値またはフィールド値を用いて演算したハッシュ値が、予め設定した所定のブロードキャストアドレスに相当する値であった場合に、全ての前記仮想ファンクションを前記宛先仮想ファンクションとして決定すること
を特徴とする請求項１または２記載のネットワーク負荷分散装置。
【請求項４】
前記ファンクション転送制御部は、
複数の前記仮想ファンクションごとに、プロミスキャスモードの設定の有無を判定し、前記プロミスキャスモードが設定されている前記仮想ファンクションを、全てのパケットが転送される前記宛先仮想ファンクションとして決定すること
を特徴とする請求項１乃至３のいずれか１項に記載のネットワーク負荷分散装置。
【請求項５】
受信したパケットの転送先の通信経路ごとに設けられ、仮想ファンクションに対応づけられたデータバッファへの転送を制御するネットワーク負荷分散方法であって、
前記受信したパケットに含まれるフィールド値またはフィールド値を用いて演算したハッシュ値に基づいて宛先仮想ファンクションを決定するファンクション転送制御ステップと、
前記フィールド値を用いて第１のハッシュ値を演算するハッシュ値演算ステップと、
前記第１のハッシュ値に基づいて、優先制御の対象となるパケットの転送先の通信経路を決定する優先制御ステップと、
前記第１のハッシュ値または前記第１のハッシュ値に基づく第２のハッシュ値に基づいて、予め設定した前記データバッファの負荷分散状況と合致するように、負荷分散制御の対象となるパケットの転送先の通信経路を決定する負荷分散制御ステップと、
前記ファンクション転送制御ステップにおいて決定された前記宛先仮想ファンクションと、前記優先制御ステップおよび前記負荷分散制御ステップの少なくともいずれかにおいて決定された前記転送先の通信経路に従って、前記宛先仮想ファンクションおよび前記転送先の通信経路に対応するデータバッファに前記パケットを送信するパケット転送制御ステップとを含むこと
を特徴とするネットワーク負荷分散方法。
【請求項６】
前記ファンクション転送制御ステップは、
複数の前記仮想ファンクションごとに、前記宛先仮想ファンクションのフィールド値またはフィールド値を用いて演算したハッシュ値が予め記憶されている宛先ファンクション選択テーブルを参照するステップと、
複数の前記仮想ファンクションごとに、前記受信したパケットのフィールド値と前記宛先ファンクション選択テーブルのフィールド値との照合、または、前記受信したパケットのフィールド値を用いて演算したハッシュ値と前記宛先ファンクション選択テーブルのハッシュ値との照合を行い、前記照合の結果に応じて前記宛先仮想ファンクションを決定するステップとを含むこと
を特徴とする請求項５記載のネットワーク負荷分散方法。
【請求項７】
前記ファンクション転送制御ステップは、
前記受信したパケットのフィールド値またはフィールド値を用いて演算したハッシュ値が、予め設定した所定のブロードキャストアドレスに相当する値であった場合に、全ての前記仮想ファンクションを前記宛先仮想ファンクションとして決定すること
を特徴とする請求項５または６記載のネットワーク負荷分散方法。
【請求項８】
前記ファンクション転送制御ステップは、
複数の前記仮想ファンクションごとに、プロミスキャスモードの設定の有無を判定し、前記プロミスキャスモードが設定されている前記仮想ファンクションを、全てのパケットが送信される前記宛先仮想ファンクションとして決定すること
を特徴とする請求項５乃至７のいずれか１項に記載のネットワーク負荷分散方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケットの送出先を制御するための装置に係り、特に通信サーバ補助装置内での特定のパケットに対する優先制御、負荷分散および複数のＶＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）への振分けを統合的に具備させることによってＱｏＳ（Ｑｕａｌｉｔｙ  ｏｆ  Ｓｅｒｖｉｃｅ）の確保とスループット性能の向上とを実現しながら複数のＶＭへの振分けを可能とするネットワーク負荷分散装置および方法に関するものである。
【背景技術】
【０００２】
通常、ＳＤＮ（Ｓｏｆｔｗａｒｅ  Ｄｅｆｉｎｅｄ  Ｎｅｔｗｏｒｋｉｎｇ）／ＮＦＶ（Ｎｅｔｗｏｒｋ  Ｆｕｎｃｔｉｏｎ  Ｖｉｒｔｕａｌｉｚａｔｉｏｎ）に基づいて構成されるネットワークは、複数の汎用サーバで構成される。汎用サーバ内に複数のＶＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）を構築し、それらを用いて1つのアプリケーションの処理をさせたり、それぞれのＶＭを用いて複数のアプリケーションの処理をさせる場合もある。
【０００３】
このように、ＶＭ上で動作する仮想化された通信アプリケーションのソフトウェアはＶＮＦ（Ｖｉｒｔｕａｌ  Ｎｅｔｗｏｒｋ  Ｆｕｎｃｔｉｏｎ）と呼ばれる。ひとつの汎用サーバで様々なＶＮＦを運用できるため、専用装置を使用する従来のネットワーク構成と比べてＣＡＰＥＸ／ＯＰＥＸを低減できる。従来専用ハードウェアによる構成が一般的であった負荷分散装置においても、ＶＮＦを活用したより柔軟な構成を有する装置が公知となっている。
【０００４】
一方、汎用サーバのパケット送受信インタフェースとしては、汎用のネットワークアダプタ（ＮＩＣ：Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）が搭載される。非特許文献１に開示される一般的なＮＩＣでは、受信パケットをデータバッファに蓄積し、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）転送を用いてサーバ内の主記憶へ受信パケットを格納する。
【０００５】
ＮＩＣ内でのデータバッファへのパケット振分け制御手法はパケット転送性能やサーバシステム全体で実現できる機能に大きく影響するため、データバッファの個数や複数のデータバッファへのパケット振分け制御手法はＮＩＣによってそれぞれ異なる。例えば、複数のデータバッファを備え、受信パケットに対して負荷分散制御を行うことで複数のＣＰＵコアで分散処理をさせ、スループットが向上できる。また、１つのデータバッファを占有し、フローを持った受信パケットに対して優先制御を行うことでフロー内でのパケット順序逆転を防止することができる。
【０００６】
また、汎用サーバ・汎用ＮＩＣおよびＶＮＦの構成を有する負荷分散装置では、前述の一般的なＮＩＣが備えるハードウェアのＩ／Ｏ仮想化支援機能ＳＲ−ＩＯＶ（Ｓｉｎｇｌｅ  Ｒｏｏｔ−ＩＯ  Ｖｉｒｔｕａｌｉｚａｔｉｏｎ）を用いてＣＰＵとの通信ボトルネックを低減する構成が主流である。しかしながら、従来の負荷分散装置では、複数の外部サーバに向けた大量のパケットの振り分けをＶＮＦ側で処理するため、振り分け対象となるトラヒックが一定量以上を超えた場合、ＳＲ−ＩＯＶを用いたとしても大量のパケット廃棄が発生するという問題がある。そのため、ＶＮＦ側で予め流すことができる最大トラヒック量の制限をかける場合もある。
【０００７】
上記課題を解決するため、受信パケットを効率的に振り分けることにより、ＣＰＵ負荷を低減する装置が提案されている。例えば、特許文献１では、受信パケットの負荷分散制御や優先制御を両立させるパケット振分け手法を実現している。図５、６は、特許文献１のネットワーク負荷分散装置の構成例と動作例を示す図である。
【０００８】
特許文献１では、受信したパケットの特定領域に対してハッシュ演算が行われ、演算されたハッシュ値を優先経路選択テーブルに登録されているハッシュ値と比較し、一致した場合には、受信したパケットを優先経路選択テーブルに登録されているデータバッファ(４−１〜４−３)へ転送することにより優先制御を実現する。一方、演算されたハッシュ値が優先経路選択テーブルに登録されているハッシュ値と一致しない場合には、ハッシュ値を負荷分散制御部３０へ通知し、負荷分散経路選択テーブルに登録されているデータバッファへ、パケットを負荷分散しながら転送する。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２０１７−１３９５９７号公報
【非特許文献】
【００１０】
【非特許文献１】“Intel Ethernet（登録商標） Controller XL710 Datasheet”，2015，＜http://www.intel.com/content/dam/www/public/us/en/documents/datasheets/xl710-10-40-controller-datasheet.pdf＞
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかしながら、特許文献１のネットワーク負荷分散装置では、ＮＩＣから複数ＶＭへそれぞれパケットを送信することを考えた際に、宛先ＶＭを考慮してパケットを送信する構成となっていないため、受信パケットを各ＶＭへ振分けるブリッジ機能をソフトウェアで実装する必要がある。ブリッジ機能をソフトウェアで実装する場合、ＶＭ数の増加に伴いスループットが低下するという問題がある。また、特許文献１のネットワーク負荷分散装置で各ＶＭへの振分けをソフトウェアで行った場合には、ＶＭ毎に優先度振分けや負荷分散振分けの制御手法を変更することが不可能である。優先度振分け等制御機能はＮＩＣに備えられ、ＶＭへの振分け機能はソフトウェアに備えられており、各機能が完全に分離されて配置されているからである。
【００１２】
ここで、複数ＶＭ毎に異なるアプリケーションを実行させる場合、アプリケーション毎に振分け制御手法を変更できれば、サーバの柔軟な運用が可能となる。例えば、画像処理などフローを重視するアプリケーションの場合は優先制御を設定したＶＭ、その他のアプリケーションの場合は負荷分散制御を設定したＶＭを使用できるようにすれば、システム全体の高機能化、高スループット化を実現することができる。一方、アプリケーション毎に振分け制御手法を変更できない場合には、システム全体の高機能化・高スループット化が期待できない。
【００１３】
本発明は、上記課題を解決するためになされたものであり、ＶＮＦの高スループットを維持しながら、複数のＶＭ毎にパケットの振分け制御手法を変更可能とし、システム全体の高機能化・高スループット化を実現するネットワーク負荷分散装置を提供することを目的とする。
【課題を解決するための手段】
【００１４】
上記課題を解決するために、本発明のネットワーク負荷分散装置は、受信したパケットの転送先の通信経路ごとに設けられ、仮想ファンクションに対応づけられたデータバッファと、前記受信したパケットのフィールド値またはフィールド値を用いて演算したハッシュ値に基づいて宛先仮想ファンクションを決定するファンクション転送制御部と、前記フィールド値を用いて第１のハッシュ値を演算するハッシュ値演算部と、前記第１のハッシュ値に基づいて、優先制御の対象となるパケットの転送先の通信経路を決定する優先制御部と、前記第１のハッシュ値または前記第１のハッシュ値に基づく第２のハッシュ値に基づいて、予め設定した前記データバッファの負荷分散状況と合致するように、負荷分散制御の対象となるパケットの転送先の通信経路を決定する負荷分散制御部と、前記ファンクション転送制御部が決定した前記宛先仮想ファンクションと、前記優先制御部および前記負荷分散制御部の少なくともいずれかが決定した前記転送先の通信経路に従って、前記宛先仮想ファンクションおよび前記転送先の通信経路に対応するデータバッファに前記パケットを送信するパケット転送制御部とを備える。
【００１５】
また、前記ファンクション転送制御部は、複数の前記仮想ファンクションごとに、前記宛先仮想ファンクションのフィールド値またはフィールド値を用いて演算したハッシュ値が予め記憶されている宛先ファンクション選択テーブルと、複数の前記仮想ファンクションごとに、前記受信したパケットのフィールド値と前記宛先ファンクション選択テーブルのフィールド値との照合、または、前記受信したパケットのフィールド値を用いて演算したハッシュ値と前記宛先ファンクション選択テーブルのハッシュ値との照合を行い、前記照合の結果に応じて前記宛先仮想ファンクションを決定する宛先ファンクション制御部とを備えてもよい。
【００１６】
また、前記ファンクション転送制御部は、前記受信したパケットのフィールド値またはフィールド値を用いて演算したハッシュ値が、予め設定した所定のブロードキャストアドレスに相当する値であった場合に、全ての前記仮想ファンクションを前記宛先仮想ファンクションとして決定してもよい。
【００１７】
また、前記ファンクション転送制御部は、複数の前記仮想ファンクションごとに、プロミスキャスモードの設定の有無を判定し、前記プロミスキャスモードが設定されている前記仮想ファンクションを、全てのパケットが転送される前記宛先仮想ファンクションとして決定してもよい。
【００１８】
上記課題を解決するために、本発明のネットワーク負荷分散方法は、受信したパケットの転送先の通信経路ごとに設けられ、仮想ファンクションに対応づけられたデータバッファへの転送を制御するネットワーク負荷分散方法であって、前記受信したパケットに含まれるフィールド値またはフィールド値を用いて演算したハッシュ値に基づいて宛先仮想ファンクションを決定するファンクション転送制御ステップと、前記フィールド値を用いて第１のハッシュ値を演算するハッシュ値演算ステップと、前記第１のハッシュ値に基づいて、優先制御の対象となるパケットの転送先の通信経路を決定する優先制御ステップと、前記第１のハッシュ値または前記第１のハッシュ値に基づく第２のハッシュ値に基づいて、予め設定した前記データバッファの負荷分散状況と合致するように、負荷分散制御の対象となるパケットの転送先の通信経路を決定する負荷分散制御ステップと、前記ファンクション転送制御ステップにおいて決定された前記宛先仮想ファンクションと、前記優先制御ステップおよび前記負荷分散制御ステップの少なくともいずれかにおいて決定された前記転送先の通信経路に従って、前記宛先仮想ファンクションおよび前記転送先の通信経路に対応するデータバッファに前記パケットを送信するパケット転送制御ステップとを含む。
【００１９】
また、前記ファンクション転送制御ステップは、複数の前記仮想ファンクションごとに、前記宛先仮想ファンクションのフィールド値またはフィールド値を用いて演算したハッシュ値が予め記憶されている宛先ファンクション選択テーブルを参照するステップと、複数の前記仮想ファンクションごとに、前記受信したパケットのフィールド値と前記宛先ファンクション選択テーブルのフィールド値との照合、または、前記受信したパケットのフィールド値を用いて演算したハッシュ値と前記宛先ファンクション選択テーブルのハッシュ値との照合を行い、前記照合の結果に応じて前記宛先仮想ファンクションを決定するステップとを含んでもよい。
【００２０】
また、記ファンクション転送制御ステップは、前記受信したパケットのフィールド値またはフィールド値を用いて演算したハッシュ値が、予め設定した所定のブロードキャストアドレスに相当する値であった場合に、全ての前記仮想ファンクションを前記宛先仮想ファンクションとして決定してもよい。
【００２１】
また、前記ファンクション転送制御ステップは、複数の前記仮想ファンクションごとに、プロミスキャスモードの設定の有無を判定し、前記プロミスキャスモードが設定されている前記仮想ファンクションを、全てのパケットが送信される前記宛先仮想ファンクションとして決定してもよい。
【発明の効果】
【００２２】
本発明によれば、ＶＮＦの高スループットを維持しながら、ＶＭ毎にパケットの振分け制御手法を変更可能とし、システム全体の高機能化・高スループット化を実現するネットワーク負荷分散装置を提供することが可能となる。
【図面の簡単な説明】
【００２３】
【図１】図１は、本発明の実施の形態に係るネットワーク負荷分散装置の構成例を示すブロック図である。
【図２】図２は、本発明の実施の形態に係るネットワーク負荷分散装置の動作例を示すフローチャートである。
【図３】図３は、本発明の第１の実施の形態に係るネットワーク負荷分散装置の動作例を示すフローチャートである。
【図４】図４は、本発明の第２の実施の形態に係るネットワーク負荷分散装置の動作例を示すフローチャートである。
【図５】図５は、従来のネットワーク負荷分散装置の構成例を示すブロック図である。
【図６】図６は、従来のネットワーク負荷分散装置の動作例を示すフローチャートである。
【発明を実施するための形態】
【００２４】
以下、本発明の実施形態について図面を参照して説明する。本発明は様々な実施形態で実施することが可能であり、以下に示す実施形態に限定されるものではない。
【００２５】
＜ネットワーク負荷分散装置＞
図１は、本発明の実施の形態に係るネットワーク負荷分散装置の構成例を示すブロック図である。本発明のネットワーク負荷分散装置はパケット受信端での利用を想定しており、ネットワーク負荷分散装置にはパケット形式のデータが入力される。パケットは、一般にヘッダデータとして、パケットのフィールド値等のパケットの属性を表す付加データを有している。
【００２６】
ネットワーク負荷分散装置１は、ファンクション転送制御部４０、ハッシュ値演算部１０、ハッシュ値演算制御部１１、優先制御部２０、負荷分散制御部３０、データバッファ(４−１〜４−Ｍ)、テーブル割り当て制御部５０、およびパケット転送制御部３を備えている。従来構成との差分は、ファンクション転送制御部４０を備えている点である。
【００２７】
ネットワーク負荷分散装置１は、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）やＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）等のデバイスと、当該デバイス上で動作するプログラムあるいはデバイスの回路データを用いて実現することができる。プログラムで実現する場合、デバイスのプロセッサが、メモリに格納されたプログラムに従って処理を実行し、ネットワーク負荷分散装置として機能する。また、ネットワーク負荷分散装置１は、一般に利用されるスイッチまたはルータのような装置上のプログラムあるいは汎用サーバ上の仮想スイッチなどを利用して実現することもできる。
【００２８】
＜ファンクション転送制御部＞
ファンクション転送制御部４０は、受信したパケット２をどのＶＮＦに転送するかを決定するためのブロックである。ファンクション転送制御部４０において、受信パケットの宛先仮想ファンクションが決定される。
【００２９】
ここで、サーバ上に構築されたＶＭとＶＮＦはＯＳ内で対応付けがされているものとする。例えば、１ＶＮＦを１ＶＭに割り当てたり、複数ＶＮＦを１ＶＭに割り当てることができる。また、図１の構成例では、各ファンクションには２つのデータバッファが対応づけられているが、これに限られるものではない。１ファンクションに１データバッファを割り当ててもよいし、１ファンクションに３つ以上のデータバッファを対応づけても良い。
【００３０】
ファンクション転送制御部４０は、宛先ファンクション制御部４１と宛先ファンクション選択テーブル４２とから構成されている。宛先ファンクション制御部４１は、受信したパケット２内に含まれるフィールド値である宛先ＭＡＣアドレスを抽出し、宛先ファンクションテーブル４２には仮想ファンクション毎にパケットの転送有無（ＯＮ／ＯＦＦ）を示す数値情報と宛先仮想ファンクションのＭＡＣアドレスとが対応付けて予め記憶されている。この宛先ファンクション選択テーブルは、外部からテーブル割当て制御部５０を介して予め設定することができる。
【００３１】
宛先ファンクション制御部４１は、パケット２を受信すると、受信したパケット２内に含まれる宛先ＭＡＣアドレスを抽出し、抽出した宛先ＭＡＣアドレスが宛先ファンクション選択テーブルに登録されているＭＡＣアドレスと一致しているか照合し、一致していた場合は対応する仮想ファンクションへ受信したパケット２を転送するものとして、当該ファンクション番号をパケット転送制御部３へ通知する。また、仮想ファンクション毎（ファンクション番号＝０〜Ｎ）にこの宛先ファンクション処理を繰り返すことにより、宛先ＭＡＣアドレスに対応するファンクション番号を検索し、パケット転送制御部３へ通知する。
【００３２】
＜ハッシュ演算部＞
ネットワーク負荷分散装置１のハッシュ値演算部１０は、パケット２を受信すると、受信したパケット２のヘッダデータ中の所定の位置にあるフィールド値を取得し、取得したフィールド値と予め設定されたキー（ｋｅｙ）値とからパケットの属性に固有のハッシュ値を演算する。演算したハッシュ値は、優先制御部２０等に通知される。
【００３３】
ここで、パケット２のヘッダデータ中の取得するフィールド値の位置は、ハッシュ値演算部１０に対して外部からハッシュ値演算制御部１１を介して予め設定される。同様に、キー値についても、外部からハッシュ値演算制御部１１を介して予め設定することができる。
【００３４】
取得するヘッダデータ中のフィールド値の位置を外部から指定できるようにすれば、非特許文献１に開示されたような固定のフィールド値ではなく、任意の長さを持つ任意のフィールド値に対するパケット識別処理を実現することができる。また、特殊な条件、例えば、複数のフィールドからのフィールド値の取得等に対応することも可能となり、将来の拡張性を確保することができる。
【００３５】
＜優先制御部＞
優先制御部２０は、優先経路制御部２１と優先経路選択テーブル２２とから構成される。優先制御部２０の優先経路選択テーブル２２には、仮想ファンクション毎にハッシュ値演算部１０が演算するハッシュ値のとり得る値と送出先の通信経路とが対応付けて予め記憶されている。この優先経路選択テーブルの内容は、テーブル割り当て制御部５０を介して予め設定される。
【００３６】
優先制御部２０の優先経路制御部２１は、ハッシュ値演算部１０が演算したハッシュ値（第１のハッシュ値）と優先経路選択テーブル２２とを照合し、ハッシュ値演算部１０が演算したハッシュ値と同一の値が優先経路選択テーブル２２に登録されている場合には、このハッシュ値に対応する送出先の通信経路の情報を優先経路選択テーブル２２から取得して、送出先の通信経路の情報をパケット転送制御部３へ通知する。一方、ハッシュ値演算部１０が演算したハッシュ値と同一の値が優先経路選択テーブル２２に登録されていない場合には、ハッシュ値演算部１０が演算したハッシュ値は負荷分散制御部３０へ通知される。
【００３７】
＜負荷分散制御部＞
負荷分散制御部３０は、負荷分散経路制御部３１と、負荷分散経路選択テーブル３２と、負荷分散ハッシュ値演算部３３とから構成される。負荷分散制御部３０の負荷分散経路選択テーブル３２には、仮想ファンクション毎に負荷分散ハッシュ値演算部３３が演算するハッシュ値のとり得る値と送出先の通信経路とが対応付けて予め記憶されている。
【００３８】
負荷分散制御部３０の負荷分散ハッシュ値演算部３３は、ハッシュ値演算部１０が演算したハッシュ値と、負荷分散制御で利用可能な所定の送出先の情報とから負荷分散処理に利用するハッシュ値（第２のハッシュ値）を演算する。具体的には、例えば、ハッシュ値演算部１０が演算したハッシュ値を負荷分散制御で利用可能な送出先の通信経路の数（仮想ファンクションごとに、全データバッファの数−優先制御に使用するデータバッファの数）で除算すればよい。
【００３９】
ハッシュ値演算部１０が演算するハッシュ値は、パケットの属性に固有の値である。一方、負荷分散ハッシュ値演算部３３が演算するハッシュ値は、パケットの属性に固有の値であるとは限らないため、異なるパケットの属性について同一のハッシュ値が算出される場合が有り得る。
【００４０】
負荷分散制御部３０の負荷分散経路制御部３１は、負荷分散ハッシュ値演算部３３が演算したハッシュ値と負荷分散経路選択テーブル３２とを参照し、負荷分散ハッシュ値演算部３３が演算したハッシュ値に対応する送出先の通信経路の情報を負荷分散経路選択テーブル３２から取得して、パケット転送制御部３へ通知する。
【００４１】
＜パケット転送制御部＞
パケット転送制御部３は、受信したパケット２を、ファンクション転送制御部４０で決定される転送先ファンクション番号と、優先制御部２０あるいは負荷分散制御部３０から通知される送出先の通信経路の情報に従って、通信経路に対応するデータバッファ(４−１〜４−Ｍ)のいずれかへ送信する。この際、ファンクション転送制御部４０から通知されるファンクション番号が複数あった場合は、対象パケットを重複分複製し、各データバッファへ送信する。
【００４２】
＜ネットワーク負荷分散装置の動作＞
図２は、本発明の実施の形態に係るネットワーク負荷分散装置の動作例を示すフローチャートである。ネットワーク負荷分散装置では、パケットを受信する（Ｓ１−１）と、受信したパケットのフィールド値を用いてハッシュ値を演算し（Ｓ１−２）、受信パケット内に含まれる宛先ＭＡＣアドレスを抽出し（Ｓ１−３）、パケットのＭＡＣアドレスに基づいて受信パケットの宛先仮想ファンクションを決定する宛先ファンクション制御を行う（Ｓ１−４、Ｓ１−５）。
【００４３】
図２の動作例では、ハッシュ値演算はパケットの受信と宛先ＭＡＣアドレス抽出の間に行われるが、これに限ることはなく、宛先ファンクション制御の前、または優先経路選択テーブルの確認の前に行ってもよい。宛先ファンクション制御の前、または優先経路選択テーブルの確認の前にハッシュ値演算を行うことにより、宛先仮想ファンクション毎にハッシュ演算の条件を変更することも可能となる。
【００４４】
図３は、本発明の第１の実施の形態に係るネットワーク負荷分散装置の動作例を示すフローチャートである。図３では、受信したパケットの宛先ＭＡＣアドレスに対応する宛先仮想ファンクションを決定する処理を仮想ファンクション毎（ファンクション番号＝０〜Ｎ）に繰り返すことにより、宛先ＭＡＣアドレスに対応するファンクション番号を検索する。
【００４５】
宛先ファンクション制御部では、宛先ファンクションテーブルの転送設定がＯＮかを確認する（Ｓ２−１）。転送設定＝ＯＮの場合、抽出した宛先ＭＡＣアドレスが宛先ファンクションテーブルに登録されているＭＡＣアドレスと一致しているか照合し（Ｓ２−２）、一致していた場合は対応する仮想ファンクションへ受信パケットを転送するものとして、対応するファンクション番号をパケット転送制御部へ通知する（Ｓ２−３）。その後、図２における優先制御転送か負荷分散制御転送かを選択するための処理（Ｓ１−６）へ遷移する。
【００４６】
一方、転送設定＝ＯＦＦまたは抽出した宛先ＭＡＣアドレスが登録されている宛先ＭＡＣアドレスに一致しない場合には、現在の仮想ファンクションがいくつかを確認し（Ｓ２−４）、仮想ファンクションがＮに達していない場合は、当該仮想ファンクションへのパケット転送をしないものとし、次の仮想ファンクションへ転送するかを確認する。仮想ファンクションがＮまで達成していた場合において、全ての仮想ファンクションに対してパケット転送をしないか確認し（Ｓ２−５）、全ての仮想ファンクションに対してパケット転送をしない場合には、受信したパケットを廃棄して終了する（Ｓ２−６）。一方、１つでも転送する仮想ファンクションが存在する場合は、図２の繰り返し終了処理（Ｓ１−１１）に遷移しパケット振分け処理（Ｓ１−１２）を実行する。
【００４７】
図２において、受信したパケットが当該仮想ファンクションに転送すると決定された場合には、優先制御転送か負荷分散制御転送かを選択し、送出先の通信経路をパケット転送制御部へ通知する処理が行われる。
【００４８】
優先制御部は、ハッシュ値演算部が演算したハッシュ値と優先経路選択テーブルとを照合し（Ｓ１−６）、ハッシュ値演算部が演算したハッシュ値と同一の値が優先経路選択テーブルに登録されている場合には、このハッシュ値と対応する送出先の通信経路の情報を優先経路選択テーブルから取得して、その情報をパケット転送制御部へ通知する（Ｓ１−７）。ハッシュ値演算部が演算したハッシュ値と同一の値が優先経路選択テーブルに登録されていない場合には、負荷分散を行うためハッシュ値を負荷分散制御部へ通知する（Ｓ１−８）。
【００４９】
負荷分散制御部は、ハッシュ値演算部が演算したハッシュ値と負荷分散制御で利用可能な所定の送出先の情報とから負荷分散処理に利用するハッシュ値を演算する（Ｓ１−９）。具体的には、ハッシュ値演算部が演算したハッシュ値を負荷分散制御で利用可能なデータバッファの通信経路の数（仮想ファンクションごとに、全データバッファの数−優先制御に使用するデータバッファの数）で除算すればよい。
【００５０】
上記のとおり、ハッシュ値演算部が演算するハッシュ値は、パケットの属性に固有の値である。一方、負荷分散ハッシュ値演算部が演算するハッシュ値は、パケットの属性に固有の値であるとは限らず、異なる属性について同一の値が算出される場合が有り得る。
【００５１】
負荷分散制御部は、演算したハッシュ値と負荷分散経路選択テーブルとを照合し、演算したハッシュ値と対応する送出先の通信経路の情報を負荷分散経路選択テーブルから取得して、送出先の通信経路の情報をパケット転送制御部へ通知する（Ｓ１−１０）。
【００５２】
パケット転送制御部は、受信したパケットを、ファンクション転送制御部で決定される転送先ファンクション番号と、優先制御部あるいは負荷分散制御部から通知される送出先の通信経路の情報に従って、対応するデータバッファへ送信し、パケット振り分けを行う（Ｓ１−１２）。この際、ファンクション転送制御部から通知されるファンクション番号が複数あった場合は、複数の対象パケットを複製し、各データバッファへ送信すればよい。
【００５３】
このように、本実施の形態によれば、宛先ファンクション選択テーブル、優先経路選択テーブル、負荷分散経路選択テーブルの設定により任意の仮想ファンクションに対して、全て優先制御で振分ける手法、全て負荷分散制御で振分ける手法、優先制御と負荷分散制御を混ぜて振分ける手法を割当てながら、受信パケットの高速転送が可能となり、ＶＮＦの高スループットを維持しながら、ＶＭ毎にパケットの振分け制御手法を変更可能となり、システム全体の高機能化・高スループット化を実現することが可能となる。
【００５４】
また、本実施の形態では、仮想ファンクションへの振分けを受信したパケットのフィールド値であるＭＡＣアドレスに基づいて行ったが、これに限られることはない。例えば、受信したパケットのフィールド値であるＩＰアドレスに基づいて振り分けを行っても良いし、受信パケットのフィールド値を用いて演算したハッシュ値に基づいて振分けを行っても良い。ハッシュ値を用いて振分けを行う場合には、ハッシュ値演算部１０で演算したハッシュ値をもちいてもよいし、ファンクション転送制御部においてハッシュ値を演算するようにしてもよい。
【００５５】
また、本実施の形態では、負荷分散制御部３０の負荷分散ハッシュ値演算部でハッシュ値を演算したが、負荷分散ハッシュ値演算部でハッシュ値を演算せずに、優先制御部２０の優先経路制御部から通知されたハッシュ値をそのまま用いて負荷分散制御を行ってもよい。
【００５６】
＜第２の実施の形態＞
第２の実施の形態では、第１の実施の形態の動作に加え、受信パケットを複製して複数の仮想ファンクションへ転送するブロードキャスト転送およびプロミスキャスモード転送を行う。図４は、本発明の第２の実施の形態に係るネットワーク負荷分散装置の動作例を示すフローチャートである。なお、第２の実施の形態におけるパケットを受信してからの基本的な処理フローは、第１の実施の形態と同一（図２）であり、宛先ファンクション制御の処理が異なっている。
【００５７】
図４では、ファンクション転送制御部において、宛先ファンクション選択テーブルを参照した結果（Ｓ３−１）、転送設定＝ＯＮだった場合には、抽出した宛先ＭＡＣアドレスが特定のアドレスかを判定する（Ｓ３−２）。特定アドレスとは、例えば、ａｌｌ”１”のブロードキャストアドレスが該当する。宛先ＭＡＣアドレスがａｌｌ”１”のブロードキャストアドレスだった場合には、受信パケットはブロードキャストパケットとみなされ、受信したパケットを当該仮想ファンクションへ転送する旨のファンクション番号の情報がパケット転送制御部へ通知される（Ｓ３−５）。
【００５８】
一方、受信したパケットから抽出したＭＡＣアドレスが特定のアドレスでない場合には、現在の仮想ファンクションで、プロミスキャスモードの設定が有効かを確認する（Ｓ３−３）。プロミスキャスモードの設定が有効の場合には、当該仮想ファンクションは入力されたパケットの宛先ＭＡＣアドレスに関わらず全てのパケットを受信する仮想ファンクションとみなされ、当該仮想ファンクションへ転送する旨のファンクション番号の情報がパケット転送制御部へ通知される（Ｓ３−５）。一方、プロミスキャスモードの設定が無効の場合には、以後、第１の実施の形態と同様の処理フローとなる（Ｓ３−４〜Ｓ３−８）。
【００５９】
ここで、プロミスキャスモードの設定の有効／無効の判断は、例えば、宛先ファンクション選択テーブルに記憶した仮想ファンクション毎の有効／無効を示す数値情報に基づいて判断してもよいし、宛先ファンクション選択テーブルに記憶されている宛先仮想ファンクションのＭＡＣアドレスがプロミスキャスモードを示す特定アドレス（例えば、通常使用されないａｌｌ”０”アドレス）かどうかで判断してもよいが、これに限られず他の方法を用いてもよい。
【００６０】
なお、プロミスキャスモードの設定の有効／無効の判断に、宛先ファンクション選択テーブルに記憶した仮想ファンクション毎の有効／無効を示す数値情報に基づいて判断する場合は、例えば、２進数表記で００（及び０１）の場合は「転送設定＝ＯＦＦ」（プロミスキャスモードも無効）、１０の場合は「転送設定＝ＯＮ」だが、プロミスキャスモードは無効、１１の場合は「転送設定＝ＯＮ」でプロミスキャスモードも有効と判断する。
【００６１】
このように、本実施の形態によれば、第１の実施の形態に加え、ブロードキャストパケットの対応や任意のパケットに対して任意のファンクションへ複製転送する機能を備えているため、より高度なパケット振分け処理を可能とするネットワーク負荷分散装置を提供することができる。
【００６２】
また、本実施の形態においては、受信パケットの複製転送をするかを判定する際に、受信したパケットの宛先ＭＡＣアドレスを使用する説明をしたが、これに限ることはない。例えば、受信パケットのＩＰアドレスを使用して複製転送をするかを判定しても良い。また、宛先アドレスの一部にマスクをかけ、宛先アドレスの一部のみを使用して判定するようにしても良い。
【００６３】
本発明の実施の形態のネットワーク負荷分散装置は、回路であってもよいし、機器であってもよい。本発明の実施の形態で示したネットワーク負荷分散装置が、ＱｏＳ機能を実現する優先制御処理機能と高スループットを実現する負荷分散処理機能とを具備する構成の最良の形態であるが、ネットワーク負荷分散装置は、ＲＯＭに記憶されたファームウェアおよび再構成型デバイス、素子、基板、配線などのハードウェアで実現することもできる。また、本発明のネットワーク負荷分散装置は、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで構成することもできる。
【００６４】
ここで、ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、ＤＶＤ等の記録媒体に記憶される。プログラムはＣＰＵにより読み出されて実行される。プログラムは、本発明のネットワーク負荷分散装置としてコンピュータを機能させるものであり、あるいは、ネットワーク負荷分散装置の各ステップをコンピュータに実行させるものである。
【産業上の利用可能性】
【００６５】
本発明は、小資源のハードウェア上で実施されるパケットの送出先制御に適用することができる。
【符号の説明】
【００６６】
１…ネットワーク負荷分散装置、２…パケット、３…パケット転送制御部、４−１〜４−Ｍ…データバッファ、１０…ハッシュ値演算部、１１…ハッシュ値演算制御部、２０…優先制御部、２１…優先経路制御部、２２…優先経路選択テーブル、３０…負荷分散制御部、３１…負荷分散経路制御部、３２…負荷分散経路選択テーブル、３３…負荷分散ハッシュ値演算部、４０…ファンクション転送制御部、４１…宛先ファンクション制御部、４２…宛先ファンクション選択テーブル、５０…テーブル割り当て制御部。
【図１】
2020010190.tif 000003
【図２】
2020010190.tif 000004
【図３】
2020010190.tif 000005
【図４】
2020010190.tif 000006
【図５】
2020010190.tif 000007
【図６】
2020010190.tif 000008