(57)【要約】【課題】高スループットなソフトウェアパケット処理を、低コストで容易に実現する。【解決手段】ネットワーク処理装置１にハードウェアで構成されたＮＩＣ部１０を設け、このＮＩＣ部１０において、パース処理部１１が入力されたパケットから特定ビット列を取得し、ハッシュ演算部１２が特定ビット列のハッシュ値を計算し、データ付与部１３がハッシュ値をパケットに付与し、データ送出部１４がハッシュ値が付与されたパケットをサーバ部２０へ転送し、ソフトウェアで構成されたサーバ部２０が、ＮＩＣ部１０から受け取ったパケットに付与されているハッシュ値に基づいて、パケットに対応するパケット処理を実行する。【選択図】  図１
2018033017.tif 000002
【特許請求の範囲】
【請求項１】
ハードウェアで構成されて、接続された通信回線を介してパケットの入出力を行うＮＩＣ部と、ソフトウェアで構成されて、ドライバを介して前記ＮＩＣ部から受け取ったパケットに含まれる特定ビット列に関するハッシュ値に基づいて、前記パケットに実行すべき対応パケット処理を実行するサーバ部とを備えるネットワーク処理装置であって、
前記ＮＩＣ部は、
入力されたパケットから前記特定ビット列を取得するパース処理部と、
前記特定ビット列のハッシュ値を計算するハッシュ演算部と、
前記ハッシュ値を前記パケットに付与するデータ付与部と、
前記ハッシュ値が付与された前記パケットを前記サーバ部へ転送するデータ送出部とを備え、
前記サーバ部は、前記ＮＩＣ部から受け取った前記パケットに付与されている前記ハッシュ値に基づいて、前記パケットに対応する前記パケット処理を実行する
ことを特徴とするネットワーク処理装置。
【請求項２】
請求項１に記載のネットワーク処理装置において、
前記ハッシュ演算部は、再構成可能なハードウェアで構成され、任意の処理方式および任意の処理手順に基づいて前記ハッシュ値を計算することを特徴とするネットワーク処理装置。
【請求項３】
請求項１または請求項２に記載のネットワーク処理装置において、
前記パース処理部は、再構成可能なハードウェアで構成され、任意のオフセット位置および任意のビット長に基づいて前記特定ビット列を取得することを特徴とするネットワーク処理装置。
【請求項４】
請求項１〜請求項３のいずれかに記載のネットワーク処理装置において、
前記サーバ部は、
前記ＮＩＣ部とパケットをやり取りする前記ドライバと、
前記ドライバを介して前記ＮＩＣ部から受け取った前記パケットに付与されている前記ハッシュ値を取得するパース処理部と、
前記ハッシュ値に基づいて前記パケットに実行すべき対応パケット処理を判定する制御部と、
前記パケットに対して前記対応パケット処理を実行するパケット処理部と
を備えることを特徴とするネットワーク処理装置。
【請求項５】
請求項４に記載のネットワーク処理装置において、
前記ＮＩＣ部のパース処理部は、前記パケットから前記パケットが属するフローに関するビット列を前記特定ビット列として取得し、
前記サーバ部の前記制御部は、前記ハッシュ値に基づいて前記パケットが属するフローを特定し、前記フローに対して予め割り当てられているパケット処理を前記対応パケット処理として判定することを特徴とするネットワーク処理装置。
【請求項６】
ハードウェアで構成されて、接続された通信回線を介してパケットの入出力を行うＮＩＣ部と、ソフトウェアで構成されて、ドライバを介して前記ＮＩＣ部から受け取ったパケットに含まれる特定ビット列に関するハッシュ値に基づいて、前記パケットに実行すべき対応パケット処理を実行するサーバ部とを備えるネットワーク処理装置で用いられるパケット処理方法であって、
前記ＮＩＣ部が、
受信したパケットから前記特定ビット列を取得するパース処理ステップと、
前記特定ビット列のハッシュ値を計算するハッシュ演算ステップと、
前記ハッシュ値を前記パケットに付与するデータ付与ステップと、
前記ハッシュ値が付与された前記パケットを前記サーバ部へ転送するデータ送出ステップとを備え、
前記サーバ部が、前記ＮＩＣ部から受け取った前記パケットに付与されている前記ハッシュ値に基づいて、前記パケットに対応する前記パケット処理を実行するステップを備える
ことを特徴とするパケット処理方法。
【請求項７】
入力されたパケットに対して、実施すべき対応パケット処理を実行するパケット処理方法であって、
ハードウェアが、前記パケットから前記パケットが属するフローに関する特定ビット列を取得し、前記特定ビット列に関するハッシュ値を計算するステップと、
ソフトウェアが、前記ハードウェアで得られた前記ハッシュ値に基づいて前記パケットが属するフローを特定し、前記フローに対して予め設定されている対応パケット処理を前記パケットに対して実行するステップと
を備えることを特徴とするパケット処理方法。
【請求項８】
請求項７に記載のパケット処理方法において、
前記ハードウェアが、前記ハッシュ値を前記パケットに付与して前記ソフトウェアに送出するステップと、
前記ソフトウェアが、前記ハードウェアから受け取った前記パケットから前記ハッシュ値をパース処理して取得するステップと
をさらに備えることを特徴とするパケット処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハードウェア回路を用いて各パケットが属するフローを識別するハッシュ（hash）演算を実行するためのパケット処理技術に関する。
【背景技術】
【０００２】
特定のデータ処理に特化したハードウェアをコンピュータに装着し、ＣＰＵ処理の負荷を軽減するオフロード技術は、パケットに対するネットワーク処理にも広く利用されている。従来より利用されているパケット処理に関するオフロード技術の典型的な例として、ＯＳのカーネルドライバが提供するＮＩＣ（Network Interface Controller：ネットワークインターフェースコントローラー）によるハッシュ演算に関する適用例がある。例えば、非特許文献１にはその処理ブロック図を含む概要が示されている。
【０００３】
このように、典型的には、ハードウェアでのフロー識別は、マルチキューという形で提供され、演算されたハッシュ値は別途ドライバを介して予め決められた変数でソフトウェアへ通知される。これらの方式は非特許文献２に示されている。ネットワークの仮想化技術である、ＳＤＮ（Software-defined networking）やＮＦＶ（network functions virtualization）で、一般的に利用されるネットワークドライバも、これらと同様の機能を実装している。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】"Receive-Side Scaling Enhancements in Windows Server 2008"，Microsoft，http://download.microsoft.com/download/a/d/f/adf1347d-08dc-41a4-9084-623b1194d4b2/RSS_Server2008.docx
【非特許文献２】"TCP_OFFLOAD_STATE_CONST structure(Windows Driver)"，Microsoft，https://msdn.microsoft.com/en-us/library/windows/hardware/ff570938(v=vs.85).aspx
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、このような典型的な方式でハードウェアオフロードを開発するためには、ハードウェアで提供される機能に対して、それに対応したドライバＡＰＩ（Application Programming Interface）、またドライバの変更に合わせたソフトウェアのインターフェースなど多岐にわたり手を加える必要がある。また、別のソフトウェアが同様の機能を利用する際にも再開発する必要がある。したがって、開発コストや要する時間が膨大になるという問題点があった。
【０００６】
本発明はこのような課題を解決するためのものであり、高スループットなソフトウェアパケット処理を、低コストで容易に実現できるパケット処理技術を提供することを目的としている。
【課題を解決するための手段】
【０００７】
このような目的を達成するために、本発明にかかるネットワーク処理装置は、ハードウェアで構成されて、接続された通信回線を介してパケットの入出力を行うＮＩＣ部と、ソフトウェアで構成されて、ドライバを介して前記ＮＩＣ部から受け取ったパケットに含まれる特定ビット列に関するハッシュ値に基づいて、前記パケットに実行すべき対応パケット処理を実行するサーバ部とを備えるネットワーク処理装置であって、前記ＮＩＣ部は、入力されたパケットから前記特定ビット列を取得するパース処理部と、前記特定ビット列のハッシュ値を計算するハッシュ演算部と、前記ハッシュ値を前記パケットに付与するデータ付与部と、前記ハッシュ値が付与された前記パケットを前記サーバ部へ転送するデータ送出部とを備え、前記サーバ部は、前記ＮＩＣ部から受け取った前記パケットに付与されている前記ハッシュ値に基づいて、前記パケットに対応する前記パケット処理を実行するようにしたものである。
【０００８】
また、本発明にかかる上記ネットワーク処理装置の一構成例は、前記ハッシュ演算部が、再構成可能なハードウェアで構成され、任意の処理方式および任意の処理手順に基づいて前記ハッシュ値を計算するようにしたものである。
【０００９】
また、本発明にかかる上記ネットワーク処理装置の一構成例は、前記パース処理部が、再構成可能なハードウェアで構成され、任意のオフセット位置および任意のビット長に基づいて前記特定ビット列を取得するようにしたものである。
【００１０】
また、本発明にかかる上記ネットワーク処理装置の一構成例は、前記サーバ部が、前記ＮＩＣ部とパケットをやり取りする前記ドライバと、前記ドライバを介して前記ＮＩＣ部から受け取った前記パケットに付与されている前記ハッシュ値を取得するパース処理部と、前記ハッシュ値に基づいて前記パケットに実行すべき対応パケット処理を判定する制御部と、前記パケットに対して前記対応パケット処理を実行するパケット処理部とを備えている。
【００１１】
また、本発明にかかる上記ネットワーク処理装置の一構成例は、前記ＮＩＣ部のパース処理部が、前記パケットから前記パケットが属するフローに関するビット列を前記特定ビット列として取得し、前記サーバ部の前記制御部は、前記ハッシュ値に基づいて前記パケットが属するフローを特定し、前記フローに対して予め割り当てられているパケット処理を前記対応パケット処理として判定するようにしたものである。
【００１２】
また、本発明にかかるパケット処理方法は、ハードウェアで構成されて、接続された通信回線を介してパケットの入出力を行うＮＩＣ部と、ソフトウェアで構成されて、ドライバを介して前記ＮＩＣ部から受け取ったパケットに含まれる特定ビット列に関するハッシュ値に基づいて、前記パケットに実行すべき対応パケット処理を実行するサーバ部とを備えるネットワーク処理装置で用いられるパケット処理方法であって、前記ＮＩＣ部が、受信したパケットから前記特定ビット列を取得するパース処理ステップと、前記特定ビット列のハッシュ値を計算するハッシュ演算ステップと、前記ハッシュ値を前記パケットに付与するデータ付与ステップと、前記ハッシュ値が付与された前記パケットを前記サーバ部へ転送するデータ送出ステップとを備え、前記サーバ部が、前記ＮＩＣ部から受け取った前記パケットに付与されている前記ハッシュ値に基づいて、前記パケットに対応する前記パケット処理を実行するステップを備えている。
【００１３】
また、本発明にかかる他のパケット処理方法は、入力されたパケットに対して、実施すべき対応パケット処理を実行するパケット処理方法であって、ハードウェアが、前記パケットから前記パケットが属するフローに関する特定ビット列を取得し、前記特定ビット列に関するハッシュ値を計算するステップと、ソフトウェアが、前記ハードウェアで得られた前記ハッシュ値に基づいて前記パケットが属するフローを特定し、前記フローに対して予め設定されている対応パケット処理を前記パケットに対して実行するステップとを備えている。
また、本発明にかかる上記パケット処理方法の一構成例は、前記ハードウェアが、前記ハッシュ値を前記パケットに付与して前記ソフトウェアに送出するステップと、前記ソフトウェアが、前記ハードウェアから受け取った前記パケットから前記ハッシュ値をパース処理して取得するステップとをさらに備えている。
【発明の効果】
【００１４】
本発明によれば、パケット処理用のソフトウェアが元々備えているパーサ処理機能を利用して、ハッシュ値でパケットデータをカプセル化することで、ドライバとソフトウェアに変更を加えずにＮＩＣ上にハッシュ演算をオフロードすることができる。このため、ドライバとソフトウェアを変更することなく、ハードウェアで演算されたハッシュ値をネットワーク処理へ受け渡すことができる。
【００１５】
したがって、ソフトウェアによるパケット処理においてボトルネックとなるハッシュ演算処理を、パケットの入り口に位置するハードウェア回路であるＮＩＣ上にオフロードでき、ドライバによる機能のサポート如何にかかわらず、ハッシュ演算処理によりパケットから得られたハッシュ値をソフトウェア処理に通知することができ、高スループットなソフトウェアパケット処理を、低コストで容易に実現することが可能となる。
【図面の簡単な説明】
【００１６】
【図１】ネットワーク処理装置の構成を示すブロック図である。
【図２】ネットワーク処理装置でのネットワーク処理を示すフローチャートである。
【図３】ネットワーク処理装置に対するオフロード適用例を示す説明図である。
【発明を実施するための形態】
【００１７】
次に、本発明の一実施の形態について図面を参照して説明する。
［ネットワーク処理装置］
まず、図１を参照して、本実施の形態にかかるネットワーク処理装置１について説明する。図１は、ネットワーク処理装置の構成を示すブロック図である。
【００１８】
このネットワーク処理装置１は、ハードウェアで構成されて、通信ネットワークとの間で通信回線を介してパケットの入出力を行うＮＩＣ（Network Interface Controller：ネットワークインターフェースコントローラー）部１０と、ソフトウェアで構成されて、ドライバを介して前記ＮＩＣ部から受け取ったパケットに含まれる特定ビット列に関するハッシュ（hash）値に基づいて、前記パケットに実行すべき対応パケット処理を実行するサーバ部２０とを備え、例えばパケット受信端で利用されて、通信ネットワークから受信したパケットに対して、パケットが属するフローに応じた対応パケット処理を実行する機能を有している。
【００１９】
［ＮＩＣ部］
ＮＩＣ部１０は、典型的には、再構成可能なハードウェアである、ＦＰＧＡ（Field Programmable Gate Array）やＡＳＩＣ（Application Specific Integrated Circuit）上に構成されるプログラム、あるいは回路データとして実装されるが、これに限定されるものではなく、一般に利用されるスイッチまたはルータのような汎用デバイス上でのプログラムあるいは汎用サーバ上の仮想スイッチなどを利用して構成することもできる。
【００２０】
ＮＩＣ部１０には、主な機能部として、パース処理部１１、ハッシュ演算部１２、データ付与部１３、およびデータ送出部１４が設けられている。
【００２１】
パース処理部１１は、通信回線から入力されたパケットから、パケットが属するフローに関するビット列を、パース処理により特定ビット列として取得する機能を有している。パース処理とは、パケットを解析する際に用いられる一般的な処理であり、具体的には、予め設定された処理内容に基づいて、規定のプロトコルに従って構成されているパケットを解析し、パケットに含まれる一部のビット列を取得して、データ処理で利用できる形式に変換して出力する、一連の処理から構成されている。
【００２２】
ハッシュ演算部１２は、予め設定されているハッシュ関数に基づいて、パース処理部１１で取得した特定ビット列のハッシュ値を計算する機能を有している。
データ付与部１３は、ハッシュ演算部１２で得られたハッシュ値を、予め設定されているオフセット位置とデータ長とに基づいてパケットに挿入することにより、元のパケットにハッシュ値を付与する機能を有している。
データ送出部１４は、データ付与部１３でハッシュ値が付与されたパケットを、サーバ部２０へ転送する機能を有している。
【００２３】
［サーバ部］
サーバ部２０は、典型的には、ＣＰＵで実行されるソフトウェアにより構成されており、具体的には、ＮＩＣ部１０との間でパケットなどの各種データをやり取りするためのドライバと、ＮＩＣ部１０から受け取ったパケットに対する対応パケット処理を実行するサーバ処理とから構成されている。
【００２４】
サーバ部２０には、主な処理部として、ドライバ２１、パース処理部２２、制御部２３、およびパケット処理部２４が設けられている。
【００２５】
ドライバ２１は、ＮＩＣ部１０との間でパケットなどの各種データをやり取りする機能を有している。ドライバとは、ソフトウェアとハードウェアとの間で各種データをやり取りするためのプログラムであり、特にＯＳ上で実行されるアプリケーションとハードウェアとの間で用いられるドライバをドライバＡＰＩ（Application Programming Interface）という。
【００２６】
パース処理部２２は、ドライバ２１を介してＮＩＣ部１０から受け取ったパケットから、予め設定されているオフセット位置とデータ長とに基づいて、ＮＩＣ部１０でパケットに付与したハッシュ値を取得する機能を有している。
【００２７】
制御部２３は、パース処理部２２で取得したハッシュ値に基づいて、ＮＩＣ部１０から受け取ったパケットが属するフローを特定する機能と、特定されたフローに対して予め割り当てられているパケット処理を、パケットに対して実行すべき対応パケット処理として判定する機能とを有している。
パケット処理部２４は、制御部２３での判定結果に基づいて、ＮＩＣ部１０から受け取ったパケットに対して、対応パケット処理を実行する機能を有している。
【００２８】
［本実施の形態の動作］
次に、図２を参照して、本実施の形態にかかるネットワーク処理装置１の動作について説明する。図２は、ネットワーク処理装置でのネットワーク処理を示すフローチャートである。
ネットワーク処理装置１は、通信回線を介してパケットが入力された場合、図２のネットワーク処理を実行する。
【００２９】
まず、ＮＩＣ部１０において、パース処理部１１は、通信回線から入力されたパケットから、パケットが属するフローに関するビット列を、パース処理により特定ビット列として取得する（ステップ１００）。一般に、パケットのヘッダデータには、フローを識別可能なフィールド値が含まれており、パース処理部１１は、このようなフィールド値を特定ビット列として取得する。
【００３０】
次に、ハッシュ演算部１２は、予め設定されているハッシュ関数に基づいて、パース処理部１１で取得した特定ビット列のハッシュ値を計算する（ステップ１０１）。
続いて、データ付与部１３は、ハッシュ演算部１２で得られたハッシュ値を、予め設定されているオフセット位置とデータ長とに基づいてパケットに挿入することにより、元のパケットにハッシュ値を付与する（ステップ１０２）。
この後、データ送出部１４は、データ付与部１３でハッシュ値が付与されたパケットを、サーバ部２０へ転送する（ステップ１０３）。
【００３１】
一方、サーバ部２０において、パース処理部２２は、ドライバ２１を介してＮＩＣ部１０から受け取ったパケットから、予め設定されているオフセット位置とデータ長とに基づいて、ＮＩＣ部１０でパケットに付与したハッシュ値を取得する（ステップ１０４）。
【００３２】
続いて、制御部２３は、パース処理部２２で取得したハッシュ値に基づいて、ＮＩＣ部１０から受け取ったパケットが属するフローを特定し（ステップ１０５）、特定されたフローに対して予め割り当てられているパケット処理を、パケットに対して実行すべき対応パケット処理として判定する（ステップ１０６）。
【００３３】
この後、パケット処理部２４は、制御部２３での判定結果に基づいて、ＮＩＣ部１０から受け取ったパケットに対して、対応パケット処理を実行し（ステップ１０７）、一連のネットワーク処理を終了する。
【００３４】
［オフロード適用例］
次に、図３を参照して、本実施の形態にかかるネットワーク処理装置１におけるオフロード適用例について説明する。図３は、ネットワーク処理装置に対するオフロード適用例を示す説明図である。ここでは、ＭＰＬＳ（Multi Protocol Label Switching）処理機能を持つパケット処理用のソフトウェア（サーバ部２０）に対して、ＩＰによるフロー識別のハッシュ演算を行うハードウェア（ＮＩＣ部１０）をオフロードして実施した際の実施例が示されている。
【００３５】
ハードウェア（ＮＩＣ部１０）に入力されたパケットは、ハッシュ演算対象となるＩＰフィールドのＩＰ値がパース処理される。パースされたＩＰ値は、ハッシュ演算によりハッシュ値「Ｈａｓｈ」に変換されて、パケットの「Ｌａｙｅｒ２」ヘッダと「Ｌａｙｅｒ３」ヘッダの間にデータ付与される。この後、ソフトウェア側のドライバごとに定められた方式で、ハッシュ値を付与したパケットがデータ送出される。
【００３６】
ソフトウェア（サーバ部２０）では、ドライバによりＮＩＣ部１０から受け取ったパケットから、ＭＰＬＳヘッダをパース処理して、パケットの「Ｌａｙｅｒ２」ヘッダと「Ｌａｙｅｒ３」ヘッダの間からハッシュ値「Ｈａｓｈ」が取得されるとともに、元のパケットとが取得される。これにより、ハードウェアで演算されたＩＰのハッシュ値をパケット処理に利用できる。
【００３７】
［本実施の形態の効果］
このように、本実施の形態は、ネットワーク処理装置１にハードウェアで構成されたＮＩＣ部１０を設け、このＮＩＣ部１０において、パース処理部１１が入力されたパケットから特定ビット列を取得し、ハッシュ演算部１２が特定ビット列のハッシュ値を計算し、データ付与部１３がハッシュ値をパケットに付与し、データ送出部１４がハッシュ値が付与されたパケットをサーバ部２０へ転送し、ソフトウェアで構成されたサーバ部２０が、ＮＩＣ部１０から受け取ったパケットに付与されているハッシュ値に基づいて、パケットに対応するパケット処理を実行するようにしたものである。
【００３８】
これにより、パケット処理用のソフトウェアが元々備えているパーサ処理機能を利用して、ハッシュ値でパケットデータをカプセル化することで、ドライバとソフトウェアに変更を加えずにＮＩＣ上にハッシュ演算をオフロードすることができる。このため、ドライバとソフトウェアを変更することなく、ハードウェアで演算されたハッシュ値をネットワーク処理へ受け渡すことができる。
【００３９】
したがって、ソフトウェアによるパケット処理においてボトルネックとなるハッシュ演算処理を、パケットの入り口に位置するハードウェア回路であるＮＩＣ上にオフロードでき、ドライバによる機能のサポート如何にかかわらず、ハッシュ演算処理によりパケットから得られたハッシュ値をソフトウェア処理に通知することができ、高スループットなソフトウェアパケット処理を、低コストで容易に実現することが可能となる。
【００４０】
［実施の形態の拡張］
以上、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解しうる様々な変更をすることができる。また、各実施形態については、矛盾しない範囲で任意に組み合わせて実行することができる。
【符号の説明】
【００４１】
１…ネットワーク処理装置、１０…ＮＩＣ部、１１…パース処理部、１２…ハッシュ演算部、１３…データ付与部、１４…データ送出部、２０…サーバ部、２１…ドライバ、２２…パース処理部、２３…制御部、２４…パケット処理部。
【図１】
2018033017.tif 000003
【図２】
2018033017.tif 000004
【図３】
2018033017.tif 000005