(57)【要約】【課題】小資源のハードウェア上で柔軟な優先制御と高スループットおよび負荷量に応じた柔軟な制御の共存を実現する。【解決手段】ネットワーク負荷分散装置は、パケットからハッシュ値を演算するハッシュ値演算部１と、ハッシュ値に基づいて特定のパケットを検出し、パケットの送出先の通信経路を決定する優先制御部２と、ハッシュ値に基づく負荷分散ハッシュ値により優先制御の対象外のパケットの送出先の通信経路を決定する負荷分散制御部３と、優先制御部２および負荷分散制御部３で未使用の通信経路の範囲において、上位処理装置９の負荷量の増減に応じて送出先の通信経路の割り当てを増減させる動的分散制御部４と、優先制御部２、負荷分散制御部３あるいは動的分散制御部４が決定した送出先の通信経路に従ってデータバッファ５−１〜５−３にパケットを送信するパケット転送制御部８を備える。【選択図】  図１
2019009630.tif 000002
【特許請求の範囲】
【請求項１】
上位処理装置から受信したパケットに含まれるフィールド値を基に第１のハッシュ値を演算するハッシュ値演算部と、
前記パケットの送出先の通信経路ごとに設けられるデータバッファと、
前記第１のハッシュ値に基づいて優先制御の対象となる特定のパケットを検出し、このパケットの送出先の通信経路を決定する優先制御部と、
前記第１のハッシュ値に基づく第２のハッシュ値により前記優先制御の対象外のパケットの送出先の通信経路を、前記データバッファの負荷分散を満たしつつ決定する負荷分散制御部と、
前記優先制御部および前記負荷分散制御部で未使用の通信経路の範囲において、前記上位処理装置の負荷量の増減に応じて送出先の通信経路の割り当てを増減させる動的分散制御部と、
前記優先制御部、前記負荷分散制御部あるいは前記動的分散制御部が決定した送出先の通信経路に従って、この通信経路に対応するデータバッファに前記パケットを送信するパケット転送制御部とを備えることを特徴とするネットワーク負荷分散装置。
【請求項２】
請求項１記載のネットワーク負荷分散装置において、
前記動的分散制御部は、
前記上位処理装置の負荷量を監視し、負荷量に応じた動的な経路制御の入力条件を与える負荷量検出部と、
前記優先制御部および前記負荷分散制御部で未使用の通信経路の情報を記憶する動的経路選択テーブルと、
前記負荷量検出部で得られた入力条件と前記動的経路選択テーブルに記憶されている未使用の通信経路の情報とを基に、前記上位処理装置の負荷量が規定量を超えたときに動的分散制御の対象となるパケットに前記未使用の通信経路を送出先の通信経路として割り当て、前記上位処理装置の負荷量が規定量を超えた状態から規定量以下の状態になったときに前記通信経路の割り当てを解除する動的経路制御部とを備えることを特徴とするネットワーク負荷分散装置。
【請求項３】
請求項１または２記載のネットワーク負荷分散装置において、
前記ハッシュ値演算部は、前記パケット内の、外部から予め指定された位置にあるフィールド値を取得し、このフィールド値と外部から予め設定されたキー値とに基づいて前記第１のハッシュ値を演算することを特徴とするネットワーク負荷分散装置。
【請求項４】
請求項１乃至３のいずれか１項に記載のネットワーク負荷分散装置において、
前記優先制御部は、
前記ハッシュ値演算部が演算する第１のハッシュ値のとり得る値と送出先の通信経路とを対応付けて予め記憶する優先経路選択テーブルと、
前記第１のハッシュ値と同一の値が前記優先経路選択テーブルに登録されている場合に、前記第１のハッシュ値と対応する送出先の通信経路の情報を前記優先経路選択テーブルから取得する優先経路制御部とを備えることを特徴とするネットワーク負荷分散装置。
【請求項５】
請求項１乃至４のいずれか１項に記載のネットワーク負荷分散装置において、
前記負荷分散制御部は、
前記ハッシュ値演算部が演算した第１のハッシュ値と負荷分散制御で利用可能な所定の送出先の情報とから第２のハッシュ値を演算する負荷分散ハッシュ値演算部と、
この負荷分散ハッシュ値演算部が演算する第２のハッシュ値のとり得る値と外部から設定される負荷分散設定データと負荷分散制御で利用可能な送出先の通信経路とから予め設定される負荷分散経路選択テーブルと、
前記負荷分散ハッシュ値演算部が演算した第２のハッシュ値と対応する送出先の通信経路の情報を前記負荷分散経路選択テーブルから取得する負荷分散経路制御部とを備えることを特徴とするネットワーク負荷分散装置。
【請求項６】
上位処理装置から受信したパケットに含まれるフィールド値を基に第１のハッシュ値を演算する第１のステップと、
前記第１のハッシュ値に基づいて優先制御の対象となる特定のパケットを検出し、このパケットの送出先の通信経路を決定する第２のステップと、
前記第１のハッシュ値に基づく第２のハッシュ値により前記優先制御の対象外のパケットの送出先の通信経路を、データバッファの負荷分散を満たしつつ決定する第３のステップと、
前記第２のステップおよび前記第３のステップで未使用の通信経路の範囲において、前記上位処理装置の負荷量の増減に応じて送出先の通信経路の割り当てを増減させる第４のステップと、
前記第２のステップ、前記第３のステップあるいは前記第４のステップで決定した送出先の通信経路に従って、この通信経路に対応するデータバッファに前記パケットを送信する第５のステップとを含むことを特徴とするネットワーク負荷分散方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケットの送出先を制御するための装置に係り、特に通信サーバ補助装置内での特定のパケットに対する優先制御と負荷分散とを両立させることによってＱｏＳ（Quality of Service）の確保とスループット性能の向上とを実現しながら上位処理装置の負荷量に応じて柔軟な制御を可能とするネットワーク負荷分散装置および方法に関するものである。
【背景技術】
【０００２】
一般的なＳＤＮ（Software Defined Networking）／ＮＦＶ（Network Functions Virtualization）の考え方に基づいて構成されるネットワークにおいて利用される汎用ネットワーク機器のフロントエンドハードウェアにおいて実現されている優先制御の構成例が非特許文献１に開示されている。
【０００３】
図５は非特許文献１に開示された優先制御技術の一部を説明する図である。図５の例では、着信パケットのイーサタイプ値が所定値と一致すれば（図５ステップＳ２００においてＹｅｓ）、着信パケットを優先制御対象のフローであるとしてキュー２００に分類する（図５ステップＳ２０１）。また、着信パケットのＦＣｏＥ（Fibre Channel over Ethernet）のタイプ値が所定値と一致すれば（図５ステップＳ２０２においてＹｅｓ）、着信パケットを優先制御対象のフローであるとしてキュー２０１に分類する（図５ステップＳ２０３）。
【０００４】
このように一般的に汎用のＮＩＣ（Network Interface Card）を利用した優先制御では、各プロトコル毎に固有のキューに優先制御対象のフローがフィルタリングされる。しかしながら、非特許文献１に開示された技術では、予め用意されたプロトコル毎に固定のフィールド値に対するフィルタリングのみを実施するため、特殊な条件（例えば複数フィールドにまたがるフィルタリング条件）への対応が難しく、また将来の拡張性に問題があった。また、非特許文献１に開示された技術では、各プロトコルに割り当てられたキューの数が固定であるため、特定のサービスに特化してリソースを利用することが困難であった。さらに、非特許文献１に開示された技術では、所定のフィルタリング条件に該当しなかったパケットを単一のキューに分類するため、フィルタリング条件に該当しないパケットが多いユースケースにおいて転送性能が悪化する懸念があり、高スループットの実現が困難であった。
【０００５】
また、非特許文献１に開示された技術では、優先制御装置と外部装置間で行われる送受信の負荷量の変動に応じて柔軟な負荷分散の制御を実施することが困難であるため、外部装置との通信量が急激に増加した場合、キューのバッファ能力を超過し、パケットロスが発生するという課題があった。
【０００６】
一方、マルチキューを用いて高スループットを実現する負荷分散の一般例としてはロードバランサなどで利用されているラウンドロビン制御があげられる。しかし、一般的なラウンドロビン制御では、各キュー内における処理時間に変動があり、結果としてフロー内での順序逆転が発生してしまう。この問題に対する解決策としてルータ上で提案されている負荷分散制御が挙げられる。
【０００７】
図６は従来の負荷分散制御技術を説明する図である。この図６に示した例では、パケットの宛先を決定し、宛先への経路に対応するデータバッファにパケットを転送する。パケットは、データバッファから適宜読み出されて宛先へ送信される。このとき、制御部３００は、それぞれ経路I，II，IIIに対応するデータバッファ３００−１，３００−２，３００−３の負荷状況を監視して経路を選択する動的な経路割り当てを行い、選択した経路に対応するデータバッファにパケットを転送する。
【０００８】
このようなルータ上で提案されているフロー内順序を保障する負荷分散制御では、ラウンドロビン制御における課題を解決することができる。しかしながら、図６に示した負荷分散制御技術では、データバッファの負荷状況を監視して動的な経路割り当てを行うため、バッファ切り替えのタイミングでフロー内での順序逆転が起こり得るという問題点があった。また、図６に示した負荷分散制御技術では、専用ハードウェアを用いることを前提としており、装置内に十分大きなハードウェア資源が存在するため、優先制御などとの協調制御は考慮されておらず、ＮＩＣ上の限られたハードウェアでの実装に適していないという問題点があった。
【先行技術文献】
【非特許文献】
【０００９】
【非特許文献１】“Intel Ethernet（登録商標） Controller XL710 Datasheet”，2015，＜http://www.intel.com/content/dam/www/public/us/en/documents/datasheets/xl710-10-40-controller-datasheet.pdf＞
【発明の概要】
【発明が解決しようとする課題】
【００１０】
以上のように汎用のＮＩＣを利用した、非特許文献１に開示された技術では、柔軟な優先制御が難しく、また高スループットの実現やパケットロスの回避が困難であった。
また、従来技術では、パケットの送信順序の保証と優先制御とを実現できず、またＮＩＣ上の限られたハードウェアに実装し難いという問題点があった。
【００１１】
本発明は、上記課題を解決するためになされたもので、ＳＤＮ／ＮＦＶのフロントエンドハードウェアであるＮＩＣ上に実装できる小資源のハードウェア上で柔軟な優先制御と高スループットおよび負荷量に応じた柔軟な制御の共存を実現することを目的とする。
【課題を解決するための手段】
【００１２】
本発明のネットワーク負荷分散装置は、上位処理装置から受信したパケットに含まれるフィールド値を基に第１のハッシュ値を演算するハッシュ値演算部と、前記パケットの送出先の通信経路ごとに設けられるデータバッファと、前記第１のハッシュ値に基づいて優先制御の対象となる特定のパケットを検出し、このパケットの送出先の通信経路を決定する優先制御部と、前記第１のハッシュ値に基づく第２のハッシュ値により前記優先制御の対象外のパケットの送出先の通信経路を、前記データバッファの負荷分散を満たしつつ決定する負荷分散制御部と、前記優先制御部および前記負荷分散制御部で未使用の通信経路の範囲において、前記上位処理装置の負荷量の増減に応じて送出先の通信経路の割り当てを増減させる動的分散制御部と、前記優先制御部、前記負荷分散制御部あるいは前記動的分散制御部が決定した送出先の通信経路に従って、この通信経路に対応するデータバッファに前記パケットを送信するパケット転送制御部とを備えることを特徴とするものである。
【００１３】
また、本発明のネットワーク負荷分散装置の１構成例において、前記動的分散制御部は、前記上位処理装置の負荷量を監視し、負荷量に応じた動的な経路制御の入力条件を与える負荷量検出部と、前記優先制御部および前記負荷分散制御部で未使用の通信経路の情報を記憶する動的経路選択テーブルと、前記負荷量検出部で得られた入力条件と前記動的経路選択テーブルに記憶されている未使用の通信経路の情報とを基に、前記上位処理装置の負荷量が規定量を超えたときに動的分散制御の対象となるパケットに前記未使用の通信経路を送出先の通信経路として割り当て、前記上位処理装置の負荷量が規定量を超えた状態から規定量以下の状態になったときに前記通信経路の割り当てを解除する動的経路制御部とを備えることを特徴とするものである。
また、本発明のネットワーク負荷分散装置の１構成例において、前記ハッシュ値演算部は、前記パケット内の、外部から予め指定された位置にあるフィールド値を取得し、このフィールド値と外部から予め設定されたキー値とに基づいて前記第１のハッシュ値を演算することを特徴とするものである。
【００１４】
また、本発明のネットワーク負荷分散装置の１構成例において、前記優先制御部は、前記ハッシュ値演算部が演算する第１のハッシュ値のとり得る値と送出先の通信経路とを対応付けて予め記憶する優先経路選択テーブルと、前記第１のハッシュ値と同一の値が前記優先経路選択テーブルに登録されている場合に、前記第１のハッシュ値と対応する送出先の通信経路の情報を前記優先経路選択テーブルから取得する優先経路制御部とを備えることを特徴とするものである。
また、本発明のネットワーク負荷分散装置の１構成例において、前記負荷分散制御部は、前記ハッシュ値演算部が演算した第１のハッシュ値と負荷分散制御で利用可能な所定の送出先の情報とから第２のハッシュ値を演算する負荷分散ハッシュ値演算部と、この負荷分散ハッシュ値演算部が演算する第２のハッシュ値のとり得る値と外部から設定される負荷分散設定データと負荷分散制御で利用可能な送出先の通信経路とから予め設定される負荷分散経路選択テーブルと、前記負荷分散ハッシュ値演算部が演算した第２のハッシュ値と対応する送出先の通信経路の情報を前記負荷分散経路選択テーブルから取得する負荷分散経路制御部とを備えることを特徴とするものである。
なお、前記負荷分散経路選択テーブルに登録される送出先の通信経路は、前記負荷分散ハッシュ値演算手段が演算する第２のハッシュ値のとり得る全ての値と外部から設定される負荷分散設定データと負荷分散制御で利用可能な送出先の通信経路の情報とから、前記負荷分散ハッシュ値演算手段が演算する第２のハッシュ値に応じてパケットを負荷分散制御で利用可能なデータバッファに振り分けたときの各データバッファの負荷状況が前記負荷分散設定データで規定される負荷状況と合致するように決定されている。
【００１５】
また、本発明のネットワーク負荷分散方法は、上位処理装置から受信したパケットに含まれるフィールド値を基に第１のハッシュ値を演算する第１のステップと、前記第１のハッシュ値に基づいて優先制御の対象となる特定のパケットを検出し、このパケットの送出先の通信経路を決定する第２のステップと、前記第１のハッシュ値に基づく第２のハッシュ値により前記優先制御の対象外のパケットの送出先の通信経路を、データバッファの負荷分散を満たしつつ決定する第３のステップと、前記第２のステップおよび前記第３のステップで未使用の通信経路の範囲において、前記上位処理装置の負荷量の増減に応じて送出先の通信経路の割り当てを増減させる第４のステップと、前記第２のステップ、前記第３のステップあるいは前記第４のステップで決定した送出先の通信経路に従って、この通信経路に対応するデータバッファに前記パケットを送信する第５のステップとを含むことを特徴とするものである。
【発明の効果】
【００１６】
本発明によれば、パケットの振り分け処理を優先制御と負荷分散制御と動的分散制御に分け、優先制御と負荷分散制御と動的分散制御を協調させることで限られたデータバッファを効率的に活用することができ、小資源のハードウェア上で柔軟な優先制御と負荷分散による高スループットの共存を実現しながら上位処理装置の負荷量に応じて柔軟な制御を可能とすることができる。
【図面の簡単な説明】
【００１７】
【図１】図１は、本発明の実施例に係るネットワーク負荷分散装置の構成を示すブロック図である。
【図２】図２は、本発明の実施例に係るネットワーク負荷分散装置の動作を説明するフローチャートである。
【図３】図３は、本発明の実施例におけるデータバッファの割り付けの概念を説明する図である。
【図４】図４は、本発明の実施例に係るネットワーク負荷分散装置の動的分散制御部の動作を説明するフローチャートである。
【図５】図５は、従来の優先制御技術を説明する図である。
【図６】図６は、従来の負荷分散制御技術を説明する図である。
【発明を実施するための形態】
【００１８】
以下、本発明の実施例について図面を参照して説明する。図１は本発明の実施例に係るネットワーク負荷分散装置の構成を示すブロック図である。ネットワーク負荷分散装置は、ハッシュ値演算部１と、優先制御部２と、負荷分散制御部３と、動的分散制御部４と、データバッファ５−１〜５−３と、ハッシュ値演算制御部６と、テーブル割り当て制御部７と、パケット転送制御部８とを備えている。なお、図１の例では、パケットの送出先の通信経路ごとに設けられるデータバッファを、データバッファ５−１〜５−３の３個としているが、データバッファの個数はこれに限るものではない。また、上位処理装置９は、本発明の実施例にかかるネットワーク負荷分散装置と通信する通信機能が仮想化された外部装置である。
【００１９】
優先制御部２は、優先経路選択テーブル２０と、優先経路制御部２１とから構成され、負荷分散制御部３は、負荷分散ハッシュ値演算部３０と、負荷分散経路選択テーブル３１と、負荷分散経路制御部３２とから構成される。動的分散制御部４は、負荷量検出部４０と、動的経路選択テーブル４１と、動的経路制御部４２とから構成される。
【００２０】
ネットワーク負荷分散装置は、典型的にはＦＰＧＡ（Field Programmable Gate Array）やＡＳＩＣ（Application Specific Integrated Circuit）等のデバイスと、当該デバイス上で動作するプログラムあるいはデバイスの回路データを用いて実現される。プログラムで実現する場合、デバイスのプロセッサは、メモリに格納されたプログラムに従って以下のような処理を実行し、ネットワーク負荷分散装置として機能する。また、これに限るものではなく一般に利用されるスイッチまたはルータのような汎用デバイス上でのプログラムあるいは汎用サーバ上の仮想スイッチなどを利用して本実施例のネットワーク負荷分散装置を実現することもできる。
【００２１】
以下、本実施例のネットワーク負荷分散装置の動作を図２のフローチャートを用いて説明する。本実施例はパケット受信端での利用を想定しており、ネットワーク負荷分散装置にはパケット形式のデータが入力される。パケットは、一般にヘッダデータとして、そのパケットの属性を表す付加データを有している。
【００２２】
ネットワーク負荷分散装置のハッシュ値演算部１は、上位処理装置９からパケットを受信すると（図２ステップＳ１）、このパケットのヘッダデータ中の所定の位置にあるフィールド値を取得し、取得したフィールド値と予め設定されたキー（key）値とからパケットの属性に固有のハッシュ値を演算する（図２ステップＳ２）。ハッシュ値演算部１が演算したハッシュ値は、優先制御部２に通知される。
【００２３】
パケットのヘッダデータ中の取得するフィールド値の位置は、ハッシュ値演算部１に対して外部からハッシュ値演算制御部６を介して予め指定される。同様に、キー値についても、外部からハッシュ値演算制御部６を介して予め設定される。
【００２４】
次に、優先制御部２の優先経路選択テーブル２０には、ハッシュ値演算部１が演算するハッシュ値のとり得る値と送出先の通信経路とが対応付けて予め記憶されている。この優先経路選択テーブル２０は、外部からテーブル割り当て制御部７を介して予め設定される。
【００２５】
優先制御部２の優先経路制御部２１は、ハッシュ値演算部１が演算したハッシュ値と優先経路選択テーブル２０とを照合し、ハッシュ値演算部１が演算したハッシュ値と同一の値が優先経路選択テーブル２０に登録されている場合（図２ステップＳ３においてＹＥＳ）、このハッシュ値と対応する送出先の通信経路の情報を優先経路選択テーブル２０から取得して、送出先の通信経路の情報をパケット転送制御部８へ通知する（図２ステップＳ４）。
【００２６】
優先経路制御部２１は、ハッシュ値演算部１が演算したハッシュ値と同一の値が優先経路選択テーブル２０に登録されていない場合（ステップＳ３においてＮＯ）、ハッシュ値演算部１が演算したハッシュ値を負荷分散制御部３へ通知する（図２ステップＳ５）。
【００２７】
負荷分散制御部３の負荷分散経路選択テーブル３１には、後述する負荷分散ハッシュ値演算部３０が演算するハッシュ値のとり得る値と送出先の通信経路とが対応付けて予め記憶されている。この負荷分散経路選択テーブル３１の作成方法については後述する。
【００２８】
負荷分散制御部３の負荷分散ハッシュ値演算部３０は、ハッシュ値演算部１が演算したハッシュ値と負荷分散制御で利用可能な所定の送出先の情報とから負荷分散処理に利用するハッシュ値を演算する（図２ステップＳ６）。具体的には、負荷分散ハッシュ値演算部３０は、ハッシュ値演算部１が演算したハッシュ値を負荷分散制御で利用可能な送出先の通信経路の数（負荷分散制御で利用可能なデータバッファ５−１〜５−３の数）で除算すればよい。
【００２９】
送出先の通信経路（データバッファ５−１〜５−３）には、優先制御のみで利用されるものと、負荷分散制御のみで利用されるものと、優先制御と負荷分散制御で共有されるものとがある。したがって、負荷分散制御で利用可能な送出先の通信経路としては、負荷分散制御のみで利用されるものと、優先制御と負荷分散制御で共有されるものとがある。負荷分散制御で利用可能な送出先の通信経路（負荷分散制御で利用可能なデータバッファ５−１〜５−３）の情報は、外部からテーブル割り当て制御部７を介して予め通知される。
【００３０】
上記のとおり、ハッシュ値演算部１が演算するハッシュ値は、パケットの属性に固有の値である。一方、負荷分散ハッシュ値演算部３０が演算するハッシュ値は、パケットの属性に固有の値であるとは限らず、異なる属性について同一の値が算出される場合が有り得る。
【００３１】
負荷分散制御部３の負荷分散経路制御部３２は、負荷分散ハッシュ値演算部３０が演算したハッシュ値と負荷分散経路選択テーブル３１とを照合し、負荷分散ハッシュ値演算部３０が演算したハッシュ値と対応する送出先の通信経路の情報を負荷分散経路選択テーブル３１から取得して、送出先の通信経路の情報をパケット転送制御部８へ通知する（図２ステップＳ７）。
【００３２】
次に、動的分散制御部４は、テーブル割り当て制御部７と連携し、ステップＳ６までの通信経路を考慮して動的分散制御を実施する（図２ステップＳ８）。この動的分散制御の詳細については後述する。
【００３３】
次に、パケット転送制御部８は、受信したパケットを、優先制御部２、負荷分散制御部３あるいは動的分散制御部４から通知される送出先の通信経路の情報に従って、データバッファ５−１〜５−３のいずれかへ送信する（図２ステップＳ９）。具体的には、パケット転送制御部８は、優先制御部２の優先経路制御部２１から送出先の通信経路の情報を受け取った場合には、データバッファ５−１〜５−３のうち、優先経路制御部２１から通知された送出先の通信経路に対応するデータバッファにパケットを送信する。パケット転送制御部８は、負荷分散制御部３の負荷分散経路制御部３２から送出先の通信経路の情報を受け取った場合には、負荷分散経路制御部３２から通知された送出先の通信経路に対応するデータバッファにパケットを送信する。パケットは、データバッファ５−１〜５−３から対応する通信経路へ適宜出力されて宛先へ送信される。
【００３４】
また、パケット転送制御部８は、後述する動的分散制御部４の動的経路制御部４２から動的分散制御の対象となるパケットの送信元ＭＡＣアドレスまたは送信元ＩＰアドレスと送出先の通信経路の情報とを受け取った時点以降に、これら送信元ＭＡＣアドレスまたは送信元ＩＰアドレスに該当するパケットを受信した場合には、このパケットを動的経路制御部４２から通知された送出先の通信経路に対応するデータバッファに送信する。
パケットは、データバッファ５−１〜５−３から対応する通信経路へ適宜出力されて宛先へ送信される。
【００３５】
なお、同一のパケットについて、優先制御部２または負荷分散制御部３だけでなく、動的分散制御部４から送出先の通信経路の情報を通知された場合には、動的分散制御部４から通知された通信経路を優先する。
【００３６】
次に、負荷分散制御部３の負荷分散経路選択テーブル３１の作成方法について説明する。負荷分散経路選択テーブル３１を作成するためには、負荷分散ハッシュ値演算部３０が演算するハッシュ値のとり得る全ての値と、外部から設定される負荷分散設定データと、負荷分散制御で利用可能な送出先の通信経路（負荷分散制御で利用可能なデータバッファ５−１〜５−３）の情報とから、負荷分散ハッシュ値演算部３０が演算するハッシュ値に応じてパケットを負荷分散制御で利用可能なデータバッファに振り分けたときの各データバッファの負荷状況が負荷分散設定データで規定される負荷状況と合致するように、送出先の通信経路を決定すればよい。こうして、負荷分散ハッシュ値演算部３０が演算するハッシュ値と送出先の通信経路とが対応付けられ、負荷分散経路選択テーブル３１を設定することが可能になる。
【００３７】
負荷分散設定データとしては、各データバッファの所望の利用率データと、各データバッファの共有設定データ（例えば優先制御によるデータバッファの利用と負荷分散制御によるデータバッファの利用の所望の割合）とがある。
【００３８】
負荷分散経路選択テーブル３１は、基本的には負荷分散制御で利用可能なデータバッファについて全てのデータバッファの利用率が一定となる均一なパケットの振り分けが実現されるように予め作成されるが、外部から設定される負荷分散設定データによっては、必ずしも全てのデータバッファの利用率が同一になるとは限らない。また、本実施例のネットワーク負荷分散装置が上位処理装置９と通信する際に、上位処理装置側の管理運用上の必要性によっては、負荷量が特定のデータバッファに大きく偏り、処理能力を超えることによりパケットロスが発生する恐れがあるが、このような場合において柔軟に負荷を分散させる制御方法が考えられる。このようなデータバッファの割り付けの概念を表したものが図３である。
【００３９】
図３の例では、データバッファ５−１，５−２が優先制御のみで利用されるバッファであり、データバッファ５−３が優先制御と負荷分散制御で共有されるバッファであり、データバッファ５−４〜５−６が負荷分散制御のみで利用されるバッファであり、データバッファ５−７〜５−９が動的分散制御で利用されるバッファである。ただし、データバッファ５−７〜５−９は設定によって優先制御で利用されることも有り得るし、負荷分散制御で利用されることも有り得るが、動的分散制御で利用されるバッファは基本的には優先制御と負荷分散制御で利用されていない未使用の空きバッファを利用して動作する。そのため、動的分散制御では、前期優先制御と負荷分散制御とバッファの共有は行わない。ある属性を有するフロー（パケット）＃１は優先制御によりデータバッファ５−１に送信され、別の属性を有するフロー＃２は優先制御によりデータバッファ５−２または５−３に送信され、その他のフローは負荷分散制御によりデータバッファ５−３〜５−６のいずれかに送信される。
【００４０】
なお、負荷分散経路選択テーブル３１は以上の方法により負荷分散経路制御部３２が作成して設定してもよいし、外部で作成した負荷分散経路選択テーブル３１をテーブル割り当て制御部７を介して負荷分散制御部３に設定するようにしてもよい。
【００４１】
また、負荷分散制御部３では、優先制御部２の優先経路制御部２１から通知された全てのハッシュ値に対して、負荷分散経路選択テーブル３１と合致するように新たなハッシュ値が演算される。このときの演算方法は、上記のとおり、通知されたハッシュ値を負荷分散制御で利用可能な送出先の通信経路の数（負荷分散制御で利用可能なデータバッファの数）で除算すればよい。
【００４２】
ただし、負荷分散ハッシュ値演算部３０でハッシュ値を演算せずに、優先制御部２の優先経路制御部２１から通知されたハッシュ値をそのまま用いてもよい。この場合、負荷分散経路選択テーブル３１を作成するためには、ハッシュ値演算部１が演算するハッシュ値のとり得る全ての値と、外部から設定される負荷分散設定データと、負荷分散制御で利用可能な送出先の通信経路の情報とから、ハッシュ値演算部１が演算するハッシュ値に応じてパケットを負荷分散制御で利用可能なデータバッファに振り分けたときの各データバッファの負荷状況が負荷分散設定データで規定される負荷状況と合致するように、送出先の通信経路を決定すればよい。
【００４３】
また、図３においてＶＮＦ（Virtualized Network Function）＃１，ＶＮＦ＃２，ＶＮＦ＃３，…，ＶＮＦ＃Ｎは、上位処理装置９のインスタンスである仮想ネットワーク機能をそれぞれ示している。データバッファ５−１〜５−６は、ＶＮＦ＃１との通信に利用される。一方、図３のデータバッファ５−７〜５−９とＶＮＦ＃２，ＶＮＦ＃３，…，ＶＮＦ＃Ｎとは、これらＶＮＦ＃２，ＶＮＦ＃３，…，ＶＮＦ＃Ｎの各インスタンスが増減するに従い、データバッファの数を調停してパケットロスを防止する制御の概念を表している。以下、本実施例のネットワーク負荷分散装置の動的分散制御部４の動作を図４のフローチャートを用いて説明する。
【００４４】
動的分散制御部４の負荷量検出部４０は、上位処理装置９の各ＶＮＦ（ＶＮＦ＃１，ＶＮＦ＃２，ＶＮＦ＃３，…，ＶＮＦ＃Ｎ）の負荷量を監視する（図４ステップＳ１０１）。ここで、負荷量の変化の監視には、例えばライフサイクルフックのような既知の情報やそれに類する仕組みを用いても良いし、負荷量の変化に備えて各ＶＮＦが保有する固有の情報、例えば上位処理装置９が受信したパケットの送信元を示す送信元ＭＡＣ（Media Access Control）アドレスの変化や送信元ＩＰ（Internet Protocol）アドレスの変化を直接検知することで負荷量に応じた動的な経路制御の入力条件としても良い。これにより、選択し得る多数のパケットのうち、どのＶＮＦのパケットかを特定して動的分散制御の対象を選択することができる。
【００４５】
負荷量検出部４０は、上位処理装置９の負荷量が規定量を超え、負荷量の十分な増加を検出すると（図４ステップＳ１０２においてＹＥＳ）、対応する通信経路を確保するため負荷量に応じた動的な経路制御の入力条件を算出して動的経路制御部４２に通知する（図４ステップＳ１０３）。負荷量検出部４０は、例えばライフサイクルフック機能により、各ＶＮＦの中に、起動しているインスタンスの数が閾値を超えたＶＮＦが存在することを検出したときに、上位処理装置９の負荷量が規定量を超えたと判定する。また、負荷量検出部４０は、各ＶＮＦの中に、保有している送信元ＭＡＣアドレスの数または保有している送信元ＩＰアドレスの数が閾値を超えたＶＮＦが存在することを検出したときに、上位処理装置９の負荷量が規定量を超えたと判定してもよい。
【００４６】
動的な経路制御の入力条件には、動的分散制御の対象となるパケットの情報が含まれる。ここで、動的分散制御の対象となるパケットとは、起動しているインスタンスの数が閾値を超えたＶＮＦに関して、閾値を超えた分のインスタンスに対応するパケット、または保有している送信元ＭＡＣアドレスの数または保有している送信元ＩＰアドレスの数が閾値を超えたＶＮＦに関して、閾値を超えた分の送信元ＭＡＣアドレスまたは送信元ＩＰアドレスに対応するパケットのことを言う。
【００４７】
上位処理装置９の負荷量が規定量を下回り、負荷量の増加がそれほどでもなく優先制御部２あるいは負荷分散制御部３が利用するデータバッファで事足りる場合（ステップＳ１０２においてＮＯ）、動的分散制御部４は処理を終える。これにより、ネットワーク負荷分散装置は図２のステップＳ９に進む。
【００４８】
次に、動的分散制御部４の動的経路制御部４２は、負荷量検出部４０が上位処理装置９の負荷量の増加を検出すると、優先制御部２および負荷分散制御部３が未使用の通信経路を特定し、特定した未使用の通信経路の情報を動的経路選択テーブル４１に登録する（図４ステップＳ１０４）。
【００４９】
ここでは、８つの通信経路（データバッファ）を仮定してステップＳ１０４の処理を説明する。優先経路選択テーブル２０に登録されている通信経路の使用状況を“１０００１０１０”とし、負荷分散経路選択テーブル３１に登録されている通信経路の使用状況を“０００１００１０”とする。このとき、“１”は通信経路が使用されていることを示し、“０”は通信経路が使用されていないことを示す。これらの否定論理和をとると、“０１１００１０１”となる。すなわち、未使用の通信経路に対応する値が“１”となるので、優先制御部２および負荷分散制御部３で未使用の通信経路を特定することができる。
【００５０】
次に、動的経路制御部４２は、負荷量検出部４０で得られた入力条件および動的経路選択テーブル４１に登録された未使用の通信経路の情報を基に、動的分散制御の対象となるパケットに、動的経路選択テーブル４１に登録された未使用の通信経路を送出先の通信経路として割り当てる（図４ステップＳ１０５）。
【００５１】
上記のとおり、負荷量検出部４０で得られた入力条件には、動的分散制御の対象となるパケットの情報が含まれる。したがって、動的経路制御部４２は、この動的分散制御の対象となるパケットに未使用の通信経路を割り当てるようにすればよい。このとき、通信経路の割り当て順は、動的経路選択テーブル４１に登録された未使用の通信経路のうち、下位のものから順に割り当ててもよいし、上位のものから順に割り当ててもよい。一方、対応づけられるＶＮＦのパケットは前記ステップＳ１０２で検知した送信元ＭＡＣアドレスや送信元ＩＰアドレスを直接指定してもよいし、負荷分散ハッシュ値演算部３０のハッシュ値をさらに除算して再演算したハッシュ値を指定してもよい。いずれの方法によっても、１つの未使用の通信経路（データバッファ）には１つのフローが割り当てられることになるため、フロー内でパケットの順序逆転等が発生しないことを保証できる。
【００５２】
そして、動的経路制御部４２は、動的分散制御の対象となるパケットの送信元ＭＡＣアドレスまたは送信元ＩＰアドレスと、ステップＳ１０５で当該パケットに割り当てた送出先の通信経路の情報とをパケット転送制御部８へ通知する（図４ステップＳ１０６）。これにより、上位処理装置９の負荷量の増加への準備が完了する。
【００５３】
次に、動的分散制御部４の負荷量検出部４０は、上位処理装置９の各ＶＮＦの負荷量を再度監視する（図４ステップＳ１０７）。負荷量検出部４０は、上位処理装置９の負荷量が規定量を超えた状態から規定量以下の状態になると、動的分散制御部４の動的経路制御部４２に上位処理装置９の負荷量の減少を通知する（図４ステップＳ１０８においてＹＥＳ）。負荷量検出部４０は、各ＶＮＦの中に、起動しているインスタンスの数が閾値を超えるＶＮＦがなくなると、上位処理装置９の負荷量が規定量以下の状態になったと判定する。また、負荷量検出部４０は、各ＶＮＦの中に、保有している送信元ＭＡＣアドレスの数または保有している送信元ＩＰアドレスの数が閾値を超えるＶＮＦがなくなると、上位処理装置９の負荷量が規定量以下の状態になったと判定してもよい。
【００５４】
動的分散制御部４の動的経路制御部４２は、負荷量検出部４０が上位処理装置９の負荷量の減少を検出すると、ステップＳ１０５で割り当てた通信経路が不要となるので、割り当て済経路を解除するため、動的経路選択テーブル４１に登録した通信経路の情報（エントリ）を削除し、Ｓ１０６で通知した通信経路の割り当てを解除（無効）するようパケット転送制御部８へ通知する（図４ステップＳ１０９）。以上で、動的分散制御部４は処理を終える。これにより、ネットワーク負荷分散装置は図２のステップＳ９に進む。
また、負荷量検出部４０が上位処理装置９の負荷量の減少を検出しない場合には、動的分散制御部４は何もせずに処理を終える。
【００５５】
本実施例では、パケットのヘッダデータ中の取得するフィールド値の位置を外部から指定できるようにしたことにより、非特許文献１に開示されたような固定のフィールド値ではなく、任意の長さを持つ任意のフィールド値に対するパケット識別処理を実現することができる。また、本実施例では、特殊な条件（例えば複数のフィールドからのフィールド値の取得）に対応することが可能であり、将来の拡張性を確保することができる。
【００５６】
また、本実施例では、非特許文献１に開示された技術と異なり、優先制御に利用するデータバッファと負荷分散に利用するデータバッファの自由な割り当てを実現することができ、これによりＮＩＣ等の省資源なオンチップ上での効率的なサ−ビスを実現することができる。
【００５７】
また、本実施例では、優先制御でのデータバッファの割り当てのためのハッシュ演算に加えて、負荷分散制御で利用可能なデータバッファに適したハッシュ演算を再度実施することで、負荷分散制御の対象外になるパケットを無くすことができ、パケットが単一のデータバッファに振り分けられることによるスループットの低下を回避することができる。また、本実施例では、ハッシュ演算によるパケット識別とデータバッファ割り当てによりパケットの順序逆転が起こらないことを保障することができる。
【００５８】
また、本実施例では、動的分散制御により上位処理装置９のインスタンスである仮想ネットワーク機能の負荷量に応じて、フローとデータバッファと一意に対応づけながら通信経路として確保することができるため、負荷分散制御と同様にパケットの順序逆転を防止しながら、パケットのトラヒック量の増減に応じて適応的に動作するネットワーク負荷分散装置を実現することができる。
【００５９】
以上で本発明の実施例が示され、説明がなされた。本実施例のネットワーク負荷分散装置は、回路であってもよいし、機器であってもよい。本実施例で示したネットワーク負荷分散装置が、ＱｏＳ機能実現の優先制御処理機能と高スループットを実現する負荷分散処理機能とを具備する構成を最良の形態と見なしているものの、本実施例のネットワーク負荷分散装置は、ＲＯＭに記憶されたファームウェアおよび再構成型デバイス、素子、基板、配線などのハードウェアで実現されていても構わない。或いは、ネットワーク負荷分散装置は、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで構成されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、ＤＶＤ等の記録媒体に記憶される。プログラムはＣＰＵにより読み出されて実行される。すなわち、プログラムは、本実施例のネットワーク負荷分散装置としてコンピュータを機能させるものである。あるいは、ネットワーク負荷分散装置の各ステップをコンピュータに実行させるものである。
【産業上の利用可能性】
【００６０】
本発明は、小資源のハードウェア上で実施されるパケットの送出先制御に適用することができる。
【符号の説明】
【００６１】
１…ハッシュ値演算部、２…優先制御部、３…負荷分散制御部、４…動的分散制御部、５−１〜５−６…データバッファ、６…ハッシュ値演算制御部、７…テーブル割り当て制御部、８…パケット転送制御部、９…上位処理装置、２０…優先経路選択テーブル、２１…優先経路制御部、３０…負荷分散ハッシュ値演算部、３１…負荷分散経路選択テーブル、３２…負荷分散経路制御部、４０…負荷量検出部、４１…動的経路選択テーブル、４２…動的経路制御部。
【図１】
2019009630.tif 000003
【図２】
2019009630.tif 000004
【図３】
2019009630.tif 000005
【図４】
2019009630.tif 000006
【図５】
2019009630.tif 000007
【図６】
2019009630.tif 000008