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