(57)【特許請求の範囲】
【請求項１】
入力されたパケットを処理又は転送するアクセラレータと、前記アクセラレータから転送されたパケットを処理するサーバと、を有するパケット処理システムにおいて、
前記アクセラレータは、
該アクセラレータのパケット処理対象であるパケットをバッファリングするバッファと、
前記入力されたパケットがオフロード対象として指定された識別子を有するか否かを判定し、少なくとも、前記オフロード対象として指定された識別子以外の識別子を有すると判定したパケットを前記サーバに転送するオフロード判定部と、
前記バッファのバッファ量が所定量を超えている場合には、前記オフロード対象として指定された識別子を有するパケットを前記サーバに転送し、前記バッファのバッファ量が前記所定量以下である場合には、前記オフロード対象として指定された識別子を有するパケットを前記バッファにバッファリングする振り分け処理部と、
前記バッファにバッファリングされたパケットを処理するアクセラレータ側パケット処理部と、
を有し、
前記サーバは、
前記アクセラレータから転送されたパケットを処理するサーバ側パケット処理部と、
前記アクセラレータから転送されたパケットの識別子のうち、前記オフロード対象のパケットとして指定された識別子を、該サーバに所定期間転送させるパケットの識別子として、前記アクセラレータに通知する通知部と、
を有することを特徴とするパケット処理システム。
【請求項２】
前記アクセラレータは、
前記オフロード対象として指定されたパケットの識別子と、前記通知部によって通知された、前記サーバに所定期間転送させるパケットの識別子とを記憶する記憶部と、
前記通知部によって通知された、前記サーバに所定期間転送させるパケットの識別子を前記記憶部に記録する記録制御部と、
を有することを特徴とする請求項１に記載のパケット処理システム。
【請求項３】
前記オフロード判定部は、前記入力されたパケットが、前記オフロード対象として指定された識別子以外の識別子を有するパケット、または、前記サーバに所定期間転送させるパケットの識別子を有するパケットであると判定した場合には、該入力されたパケットを前記サーバに転送し、前記入力されたパケットが、オフロード対象として指定された識別子を有するパケット、かつ、前記サーバに所定期間転送させるパケットの識別子以外の識別子を有するパケットであると判定したパケットを振り分け対象のパケットとして前記振り分け部に出力し、
前記振り分け処理部は、前記バッファのバッファ量が所定量を超えている場合には、前記振り分け対象のパケットを前記サーバに転送し、前記バッファのバッファ量が前記所定量以下である場合には、前記振り分け対象のパケットを前記バッファにバッファリングすることを特徴とする請求項１または２に記載のパケット処理システム。
【請求項４】
入力されたパケットを処理又は転送するアクセラレータと、前記アクセラレータから転送されたパケットを処理するサーバと、が実行するパケット処理方法おいて、
前記アクセラレータは、パケット処理対象であるパケットをバッファリングするバッファを有し、
前記アクセラレータが、前記入力されたパケットがオフロード対象として指定された識別子を有するか否かを判定する判定工程と、
前記アクセラレータが、前記判定工程において、少なくとも、前記オフロード対象として指定された識別子以外の識別子を有すると判定されたパケットを前記サーバに転送する第１の転送工程と、
前記アクセラレータが、前記バッファのバッファ量が所定量を超えている場合には、前記オフロード対象として指定された識別子を有するとパケットを前記サーバに転送する第２の転送工程と、
前記アクセラレータが、前記バッファのバッファ量が前記所定量以下である場合には、前記オフロード対象として指定された識別子を有するパケットを前記バッファにバッファリングするバッファ工程と、
前記アクセラレータが、前記バッファにバッファリングされたパケットを処理する第１のパケット処理工程と、
前記サーバが、前記アクセラレータから転送されたパケットを処理する第２のパケット処理工程と、
前記サーバが、前記アクセラレータから転送されたパケットの識別子のうち、前記オフロード対象のパケットとして指定された識別子を、該サーバに所定期間転送させるパケットの識別子として、前記アクセラレータに通知する通知工程と、
を含んだことを特徴とするパケット処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケット処理システム及びパケット処理方法に関する。
【背景技術】
【０００２】
従来、例えばハードウェア構成のアクセラレータをサーバに接続し、特定の処理をアクセラレータにオフロードすることで、パケット処理の負荷を分散させて、サーバのパケット処理の負荷を低減する方法がある。具体的には、ＯｖＳ（Open  vSwitch）などの転送機能を、サーバだけではなく、アクセラレータにも持たせ、サーバとアクセラレータとの両方でパケットを処理する方法が提案されている（例えば、非特許文献１〜３参照）。
【０００３】
この方法では、アクセラレータ側で処理されるパケットは、5tuple情報（宛先ＩＰアドレス、送信元ＩＰアドレス、宛先ポート、送信ポート及びプロトコルの組み合わせ）等の識別子によって、オフロード対象に指定される。アクセラレータは、入力されたパケットの識別子を基に、入力されたパケットがオフロード対象であるか否かを判定し、オフロード対象に指定されたパケットを処理し、オフロード対象に指定されていないパケットをサーバに転送する。サーバでは、オフロード対象に指定されていないパケットを処理する。したがって、この方法によれば、サーバとアクセラレータとの両方でパケットを処理するため、フローを効率的に処理することができる。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Z.  Bronstein，  E.  Roch，  J.  Xia，  and  A.  Molkho，  “Uniform  Handling  and  Abstraction  of  NFV  Hardware  Accelerators”  IEEE  Network,  Volume:29，  Issue:3，pp.22-29,  2015
【非特許文献２】Accelerating  SDN/NFV  with  transparent  offloading  architecture，［online］、［平成２８年１月２９日検索］、インターネット＜ＵＲＬ：https://www.usenix.org/system/files/conference/ons2014/ons2014-paper-yamazaki.pdf＞
【非特許文献３】L.  Nobach，  D.  Hausheer，  “Open,  Elastic  Provisioning  of  Hardware  Acceleration  in  NFV  Environment”，  IEEE  Networked  Systems  (NetSys),  2015  International  Conference  and  Workshops  on，  9-12，  March  2015
【発明の概要】
【発明が解決しようとする課題】
【０００５】
このように、従来では、オフロード対象のフローとして指定された識別子を持つパケットは、全てアクセラレータで処理していた。
【０００６】
しかしながら、アクセラレータでは、アクセラレータの処理能力を超えるパケットが入力された場合、該入力されたパケットを廃棄するため、システム全体のスループット性能が劣化するという問題があった。また、サーバでは、検索テーブルのキャッシュ容量に上限があるため、多種類のフローを処理するとサーバの処理能力が低下してしまうという問題があった。
【０００７】
本発明は、上記に鑑みてなされたものであって、パケット廃棄の影響を低減するとともに、サーバにおける効率的な処理を維持して、システム全体のスループット性能の劣化を抑制することができるパケット処理システム及びパケット処理方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するために、本発明に係るパケット処理システムは、入力されたパケットを処理又は転送するアクセラレータと、前記アクセラレータから転送されたパケットを処理するサーバと、を有するパケット処理システムにおいて、前記アクセラレータは、該アクセラレータのパケット処理対象であるパケットをバッファリングするバッファと、前記入力されたパケットがオフロード対象として指定された識別子を有するか否かを判定し、前記オフロード対象として指定された識別子以外の識別子を有すると判定したパケットを前記サーバに転送するオフロード判定部と、前記バッファのバッファ量が所定量を超えている場合には、前記オフロード対象として指定された識別子を有するパケットを前記サーバに転送し、前記バッファのバッファ量が前記所定量以下である場合には、前記オフロード対象として指定された識別子を有するパケットを前記バッファにバッファリングする振り分け処理部と、前記バッファにバッファリングされたパケットを処理するアクセラレータ側パケット処理部と、を有し、前記サーバは、前記アクセラレータから転送されたパケットを処理するサーバ側パケット処理部と、前記アクセラレータから転送されたパケットの識別子のうち、前記オフロード対象のパケットとして指定された識別子を、該サーバに所定期間転送させるパケットの識別子として、前記アクセラレータに通知する通知部と、を有することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、パケット廃棄の影響を低減するとともに、サーバにおける効率的な処理を維持して、システム全体のスループット性能の劣化を抑制することができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、実施の形態１に係るパケット処理システムの構成の一例を模式的に示す図である。
【図２】図２は、図１に示すオフロードテーブルのデータ構成を説明するための図である。
【図３】図３は、図１に示す一時停止テーブルのデータ構成を説明するための図である。
【図４】図４は、図１に示すパケット処理システムのパケット処理の流れを説明するシーケンス図である。
【図５】図５は、図１に示すパケット処理システムのパケット処理の流れを説明するための図である。
【図６】図６は、プログラムが実行されることにより、パケット処理システムが実現されるコンピュータの一例を示す図である。
【発明を実施するための形態】
【００１１】
以下、図面を参照して、本発明の一実施形態を詳細に説明する。なお、この実施形態により本発明が限定されるものではない。また、図面の記載において、同一部分には同一の符号を付して示している。
【００１２】
［実施の形態１］
実施の形態１に係るパケット処理システムについて、パケット処理システムの概略構成及びパケット処理システムにおける処理の流れ及び具体例を説明する。
【００１３】
［パケット処理システムの構成］
まず、図１を参照して、実施の形態１に係るパケット処理システムの構成について説明する。図１は、実施の形態１に係るパケット処理システムの構成の一例を説明するための図である。
【００１４】
図１に示すように、実施の形態１に係るパケット処理システム１は、パケット処理システムであり、入力されたパケットを受信するアクセラレータ１０と、該アクセラレータ１０の後段に設けられたサーバ２０とを有し、インターネットＮを介して、例えば、ユーザ端末５と接続される。
【００１５】
パケット処理システム１では、アクセラレータ１０をサーバ２０に接続させ、該アクセラレータ１０に特定の処理をオフロードすることで、サーバ２０によるパケット処理の負荷を分散させている。言い換えると、パケット処理システム１では、サーバ２０と、アクセラレータ１０との両方でパケットを処理する。そして、パケット処理システム１では、アクセラレータ１０は、アクセラレータ１０のバッファがバッファリングしているパケット量が所定量を超えている場合には、入力されたパケットを廃棄せず、サーバ２０に転送している。
【００１６】
［アクセラレータの構成］
アクセラレータ１０は、パケット処理システム１の処理能力を高めるために、サーバ２０に追加して利用されるハードウェア或いはソフトウェアである。アクセラレータ１０は、ＯｖＳ（Open  vSwitch）などのサーバ２０が有する転送機能と同様の転送機能を有し、入力されたパケットのうち、少なくともオフロード対象のパケットを処理する。アクセラレータ１０は、記憶部１１、入力部１２、制御部１３及び出力部１４を有する。
【００１７】
記憶部１１は、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ（Flash  Memory）等の半導体メモリ素子、又は、ハードディスク、光ディスク等の記憶装置によって実現され、アクセラレータ１０を動作させる処理プログラムや、処理プログラムの実行中に使用されるデータなどが記憶される。記憶部１１は、パケット処理部１３２におけるパケット処理に必要な情報を記憶する。
【００１８】
また、記憶部１１は、アクセラレータ１０の処理対象であるオフロード対象として指定されたパケットの識別子を記憶するオフロードテーブル１１１と、サーバ２０に所定期間転送させるパケットの識別子とを記憶する一時停止テーブル１１２とを記憶する。一時停止テーブル１１２には、オフロード対象として指定されたパケットのうち、アクセラレータ１０においてのパケット処理を一時停止し、サーバ２０に所定期間転送させるパケットの識別子が記憶される。
【００１９】
図２は、図１に示すオフロードテーブル１１１のデータ構成を説明するための図である。アクセラレータ１０に入力されたパケットは、該パケットの5tuple情報（宛先ＩＰアドレス、送信元ＩＰアドレス、宛先ポート、送信ポート及びプロトコルの組み合わせ）によって、オフロード対象であるか否かを判定される。このため、オフロードテーブル１１１は、図２に示すテーブルＴ１のように、オフロード対象の各5tuple情報を記憶する。
【００２０】
例えば、図２に示すテーブルＴ１では、5tuple＝ａ、5tuple＝ｃ及び5tuple＝ｄのフローのパケットが、オフロード対象とされている。したがって、入力されたパケットが5tuple＝ａのフローのパケットである場合には、オフロード対象となるため、アクセラレータ１０での処理対象のパケットであると判定される。これに対し、5tuple＝ｂのフローは、オフロード対象には含まれていない。したがって、入力されたパケットが5tuple＝ｂのフローのパケットである場合には、オフロード対象ではないため、アクセラレータ１０での処理対象外のパケット、すなわち、サーバ２０での処理対象のパケットであると判定される。オフロードテーブル１１１の更新は、サーバ２０による指示のもと、制御部１３が行う。
【００２１】
また、図３は、図１に示す一時停止テーブル１１２のデータ構成を説明するための図である。アクセラレータ１０に入力されたパケットは、該パケットの5tuple情報によって、アクセラレータ１０においてパケット処理を一時停止される一時停止対象であるか否かを判定される。このため、一時停止テーブル１１２は、図３に示すテーブルＴ２のように、一時停止対象の5tuple情報と停止期間とがそれぞれ対応付けられている。
【００２２】
例えば、図３に示すテーブルＴ２では、オフロード対象の5tuple＝ｃのフローのパケットが、「2016.2.5  17:00:00〜2016.2.5  17:03:00」の間にオフロード対象を停止する対象とされている。したがって、「2016.2.5  17:00:00〜2016.2.5  17:03:00」の間に入力されたパケットであってオフロード対象であると判定されたパケットのうち、5tuple＝ｃのフローのパケットは、一時停止対象となるため、アクセラレータ１０での処理対象から外れ、サーバ２０での処理対象となる。一時停止テーブル１１２の更新は、サーバ２０による指示のもと、制御部１３が行う。
【００２３】
入力部１２は、ネットワークを介して接続された装置と各種情報を受信する入力インターフェースである。具体的には、入力部１２は、インターネットＮを介して接続された装置（例えば、ユーザ端末５）から送信されたパケットを受信する。
【００２４】
制御部１３は、各種の処理手順などを規定したプログラム及び所要データを格納するための内部メモリを有し、これらによって種々の処理を実行する。例えば、制御部１３は、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などの電子回路である。制御部１３は、パケット判定部１３１、パケットバッファ１３２ａを有するパケット処理部１３２（アクセラレータ側パケット処理部）、及び、記録制御部１３３を有する。
【００２５】
パケット判定部１３１は、入力部１２を介して入力されたパケットが、アクセラレータ１０における処理対象のパケット（オフロード対象のパケット）であるか、或いは、サーバ２０における処理対象であるかを判定する。さらに、パケット判定部１３１は、パケット処理部１３２（後述）のパケットバッファ１３２ａ（後述）がバッファリングしているパケット量が所定量を超えている場合には、入力されたパケットがオフロード対象のパケットであっても、サーバ２０に転送する。パケット判定部１３１は、オフロード判定部１３１ａ及び振り分け処理部１３１ｂを有する。
【００２６】
オフロード判定部１３１ａは、入力されたパケットの識別子（例えば5tuple情報）を取得して、該入力されたパケットがオフロード対象として指定された識別子を有するか否かを判定し、少なくとも、オフロード対象として指定された識別子以外の識別子を有すると判定したパケットをサーバ２０に転送する。さらに、オフロード判定部１３１ａは、入力されたパケットが、オフロード対象として指定されたパケットの識別子を有するパケット、かつ、サーバ２０に所定期間転送させる一時停止対象のパケットの識別子以外の識別子を有するパケットであるか否かを判定する。
【００２７】
オフロード判定部１３１ａは、入力されたパケットが、オフロード対象として指定されたパケットの識別子を有するパケット、かつ、サーバ２０に所定期間転送させる一時停止対象のパケットの識別子以外の識別子を有するパケットであると判定した場合には、該入力されたパケットを振り分け対象のパケットとして振り分け部１３１ｂに出力する。
【００２８】
これに対し、オフロード判定部１３１ａは、入力されたパケットが、オフロード対象として指定された識別子以外の識別子を有するパケット、または、サーバ２０に所定期間転送させるパケットの識別子を有するパケットであると判定した場合には、該入力されたパケットをサーバ２０に転送する。
【００２９】
振り分け処理部１３１ｂは、パケット処理部１３２のパケットバッファ１３２ａのバッファ量を測定する。そして、振り分け処理部１３１ｂは、測定したバッファ量が所定量を超えている場合には、オフロード判定部１３１ａから振り分け対象のパケットとして出力されたパケットを、サーバ２０に転送する。一方、振り分け処理部１３１ｂは、測定したバッファ量が所定量以下の場合には、振り分け対象のパケットをパケット処理部１３２のパケットバッファ１３２ａにバッファリングする。
【００３０】
このパケットの転送先判定を行う際にバッファの測定量の比較対象となる所定量は、アプリケーションに応じて、予めサーバ２０等によって設定されており、記憶部１１に記憶されている。振り分け処理部１３１ｂは、このパケットバッファ１３２ａに対する所定量を記憶部１１から読み出して、パケットバッファ１３２ａの測定量との比較を行い、パケットの転送先を判定する。
【００３１】
なお、振り分け処理部１３１ｂは、パケットバッファ１３２ａのバッファリング可能量を測定し、測定したバッファリング可能量よりも、振り分け対象のパケット量の方が少ない場合には、振り分け対象のパケットをパケットバッファ１３２ａにバッファリングし、測定したバッファリング可能量よりも振り分け対象のパケット量の方が多い場合には、入力されたパケットをサーバ２０に転送してもよい。
【００３２】
パケット処理部１３２は、パケット処理部１３２の処理対象であるパケットをバッファリングするパケットバッファ１３２ａを有する。パケット処理部１３２は、パケットバッファ１３２ａにバッファリングされたパケットを読み出し、該パケットの処理に必要な情報を記憶部１１から取得し、その情報にしたがってパケットを処理して出力部１４に出力する。パケット処理部１３２は、例えば通信トラヒック（traffic）の内容を把握する場合であれば、パケットのペイロード部を解析するＤＰＩ(Deep  Packet  Inspection)等の処理を行う。
【００３３】
すなわち、パケット処理部１３２は、入力されたパケットのうち、パケットバッファ１３２ａにバッファリングされたパケット、すなわち、オフロード対象として指定されたパケットの識別子を有するパケット、かつ、サーバ２０に所定期間転送させるパケットの識別子以外の識別子を有するパケットであるとともに、パケットバッファ１３２ａがバッファリングしているパケット量が所定量以下の場合に入力されたパケットを処理する。
【００３４】
記録制御部１３３は、記憶部１１のオフロードテーブル１１１及び一時停止テーブル１１２への記録制御を行う。具体的には、サーバ２０からの指示に従って、オフロードテーブル１１１に、オフロード対象として指定されたパケットの識別子を記録、更新する。また、記録制御部１３３は、サーバ２０からの通知に従って、一時停止テーブル１１２に、一時停止対象のパケットの識別子及び一時停止期間を記録、更新する。
【００３５】
出力部１４は、ネットワークを介して接続された装置に各種情報を送信する入力インターフェースである。具体的には、出力部１４は、インターネットＮを介して接続された装置（例えば、ユーザ端末５）に、サーバ２０及びパケット処理部１３２が処理したパケットを出力する。出力部１４は、送信キュー機能を有し、出力対象のパケットの一時保存や、送信タイミング調整を行う。
【００３６】
このように、実施の形態１におけるアクセラレータ１０では、アクセラレータ１０の処理能力を超えるパケットの入力があった場合、その処理能力を超える分のパケットを廃棄せずにサーバ２０に転送している。
【００３７】
［サーバの構成］
次に、サーバ２０の構成について説明する。サーバ２０は、例えば、通信インターフェース、プロセッサ、メモリ、仮想スイッチ等を有する物理サーバであり、アクセラレータ１０のパケット振り分け処理を制御するとともに、アクセラレータ１０から転送されたパケットを処理する。図１に示すように、サーバ２０は、記憶部２１及び制御部２２を有する。
【００３８】
記憶部２１は、ＲＡＭ、フラッシュメモリ等の半導体メモリ素子、又は、ハードディスク、光ディスク等の記憶装置によって実現され、サーバ２０を動作させる処理プログラムや、処理プログラムの実行中に使用されるデータなどが記憶される。記憶部２１は、パケット処理部２２１におけるパケット処理に必要な情報を記憶する。
【００３９】
制御部２２は、各種の処理手順などを規定したプログラム及び所要データを格納するための内部メモリを有し、これらによって種々の処理を実行する。例えば、制御部２２は、ＣＰＵやＭＰＵなどの電子回路である。制御部２２は、パケット処理部２２１（サーバ側パケット処理部）及びオフロード指示部２２２（通知部）を有する。
【００４０】
パケット処理部２２１は、アクセラレータ１０から転送されたパケットを処理する。パケット処理部２２１は、パケットの処理に必要な情報を記憶部２１から取得し、その情報にしたがって、アクセラレータ１０から転送されたパケットを処理する。そして、パケット処理部２２１は、オフロード指示部２２２を介して、処理したパケットを、アクセラレータ１０の出力部１４に出力する。パケット処理部２２１は、例えば通信トラヒックの内容を把握する場合であれば、パケットのペイロード部を解析するＤＰＩ等の処理を行う。パケット処理部２２１は、アクセラレータ１０から転送されたパケットをバッファリングするバッファ（不図示）を有する。
【００４１】
オフロード指示部２２２は、アクセラレータ１０に、オフロード対象として指定したパケットの識別子を通知することによって、該オフロード対象として指定した識別子を有するパケットに対して所定の処理を実行させる。
【００４２】
また、オフロード指示部２２２は、パケット処理部２２１から出力されたパケットの識別子を判定する。ここで、パケット処理部２２１から出力されたパケットの中に、オフロード対象のパケットとして指定された識別子を有するパケットがあった場合には、このパケットは、パケットバッファ１３２ａのバッファ量が所定量を超えている場合に振り分け処理部１３１ｂから転送されたパケットであると判断できる。このため、オフロード指示部２２２は、アクセラレータ１０から転送されたパケットの識別子のうちオフロード対象のパケットとして指定された識別子を、該サーバ２０に所定期間転送させるパケットの識別子として、アクセラレータ１０に通知する該オフロード対象のパケットとして通知する。
【００４３】
このオフロード指示部２２２によって通知された通知に従い、アクセラレータ１０では、記録制御部１３３が、通知された識別子を、サーバ２０に所定期間転送させるパケットの識別子として一時停止テーブル１１２に記録する。これによって、アクセラレータ１０は、入力されたパケットのうち、オフロード指示部２２２によって通知された識別子を有するパケットを、サーバ２０に所定期間転送する処理を行う。
【００４４】
この結果、サーバ２０は、オフロード対象以外の識別子を有するパケットの他に、所定期間のみ転送を通知した識別子を有するパケットを処理する。言い換えると、サーバ２０は、オフロード対象以外の識別子を有するパケットの他に、一定の種類のフローのパケットのみを所定期間に限って処理する。このため、サーバ２０において、検索テーブルのキャッシュ容量の上限を超えた多種類のフローを長時間にわたって処理させる状態は回避されることとなる。
【００４５】
［パケット処理システムのパケット処理の流れ］
次に、図４及び図５を参照して、図１に示すパケット処理システム１のパケット処理の流れについて説明する。図４は、図１に示すパケット処理システム１のパケット処理の流れを説明するシーケンス図である。また、図５は、図１に示すパケット処理システム１のパケット処理の流れを説明するための図である。
【００４６】
図４に示すように、まず、アクセラレータ１０にパケットが入力されると（図４のステップＳ１）、オフロード判定部１３１ａは、入力されたパケットの識別子（例えば、5tuple）を取得する（図４のステップＳ２）。続いて、オフロード判定部１３１ａは、記憶部１１のオフロードテーブル１１１及び一時停止テーブル１１２を参照し、取得した5tupleが、オフロードテーブル１１１に登録あり、かつ、一時停止テーブル１１２に登録なしか否かを判定する（図４のステップＳ３）。
【００４７】
オフロード判定部１３１ａは、取得した5tupleが、オフロードテーブル１１１に登録があり、かつ、一時停止テーブル１１２に登録がないと判定した場合には（図４のステップＳ３：Ｙｅｓ）、この5tupleを有するパケットを、振り分け対象のパケットとして、振り分け処理部１３１ｂに出力する（図４のステップＳ４及び図５の（１）参照）。
【００４８】
一方、オフロード判定部１３１ａは、取得した5tupleが、オフロードテーブル１１１に登録があり、かつ、一時停止テーブル１１２に登録がないものではないと判定した場合には（図４のステップＳ３：Ｎｏ）、それ以外のパケットとして、入力されたパケットをサーバ２０に転送する（図４のステップＳ５及び図５の（２）参照）。言い換えると、オフロード判定部１３１ａは、入力されたパケットが、オフロード対象として指定されたパケットの5tuple以外の5tupleを有するパケット、または、サーバ２０に所定期間転送させるパケットの5tupleを有するパケットである場合に、該パケットをサーバ２０に転送する。
【００４９】
続いて、アクセラレータ１０では、振り分け処理部１３１ｂが、パケット処理部１３２のパケットバッファ１３２ａのバッファ量を測定する（図４のステップＳ６）。そして、振り分け処理部１３１ｂは、パケットバッファ１３２ａのバッファ量の測定値が、定数αを超えているか否かを判断する（図４のステップＳ７）。この定数αは、パケットの転送先判定を行う際にバッファの測定量の比較対象となる所定量を示すものである。
【００５０】
振り分け処理部１３１ｂは、パケットバッファ１３２ａのバッファ量の測定値が、定数αを超えていないと判断した場合（図４のステップＳ７：Ｎｏ）、すなわち、パケットバッファ１３２ａのバッファ量が所定量以下の場合（図５の（３）参照）、オフロード判定部１３１ａから出力された振り分け対象のパケットをパケット処理部１３２に出力して（図４のステップＳ８）、パケットバッファ１３２ａにバッファリングする（図４のステップＳ９）。
【００５１】
パケット処理部１３２では、パケットバッファ１３２ａにバッファリングされたパケットを読み出し、記憶部１１から取得した該パケットの処理に必要な情報にしたがってパケット処理（例えば、ＤＰＩ等）を実施する（図４のステップＳ１０）。そして、パケット処理部１３２は、パケット処理後のパケットを出力部１４に出力し（図４のステップＳ１１）、出力部１４は、インターネットＮ等を介して、外部装置にパケットを出力する（図４のステップＳ１２）。
【００５２】
また、振り分け処理部１３１ｂは、パケットバッファ１３２ａのバッファ量の測定値が、定数αを超えていると判断した場合には（図４のステップＳ７：Ｙｅｓ）、オフロード判定部１３１ａから出力された振り分け対象のパケットをサーバ２０に出力する（図４のステップＳ１３及び図５の（４）参照）。
【００５３】
そして、サーバ２０では、パケット処理部２２１が、アクセラレータ１０から転送されたパケットに対し、記憶部２１から取得した該パケットの処理に必要な情報にしたがってパケット処理（例えば、ＤＰＩ等）を実施する（図４のステップＳ１４）。そして、パケット処理部２２１は、パケット処理後のパケットをオフロード指示部２２２に出力する（図４のステップＳ１５）。続いて、オフロード指示部２２２は、パケット処理部２２１から出力されたパケットの5tupleを判別した（図４のステップＳ１６）後に、該パケットを出力部１４に出力する（図４のステップＳ１７）。出力部１４は、インターネットＮ等を介して、外部装置にパケットを出力する（図４のステップＳ１２）。
【００５４】
そして、オフロード指示部２２２は、パケットの5tupleを判別した結果、サーバ２０に転送されたパケットの中に、オフロード対象のパケットとして指定された5tupleを有するパケットがあった場合には、このパケットの5tupleを、一時停止対象の5tupleとしてアクセラレータ１０に通知する（図４のステップＳ１８）。具体的には、オフロード指示部２２２は、サーバ２０側で処理したパケットに含まれていたオフロード対象の識別子を一時停止テーブル１１２に登録するようにアクセラレータ１０の制御部１３に指示する（図５の（５）参照）。
【００５５】
これに応じて、アクセラレータ１０側では、記録制御部１３３が、登録を指示されたパケットの識別子を一時停止テーブル１１２に登録する（図４のステップＳ１９及び図５の（６）参照）。この結果、アクセラレータ１０は、次に入力されたパケットが、オフロード対象以外のパケット或いは一時停止対象のパケットである場合には、このパケットをサーバ２０に転送する。
【００５６】
［実施の形態１の効果］
このように、実施の形態１に係るパケット処理システム１では、アクセラレータ１０は、オフロード対象のパケットが入力された場合であっても、アクセラレータ１０のバッファがバッファリングしているパケット量が所定量を超えている場合には、入力されたパケットを廃棄せず、サーバ２０に転送している。このため、実施の形態１によれば、アクセラレータ１０において従来廃棄されてパケットを、サーバ２０で処理するため、パケット廃棄の影響を低減することができる。
【００５７】
また、実施の形態１では、サーバ２０は、パケット処理を行ったパケットのうち、本来アクセラレータ１０で処理するオフロード対象として指定された識別子を有するパケットが含まれていた場合には、該パケットが、アクセラレータ１０の処理能力超過によってアクセラレータ１０から転送されたパケットであると判断し、アクセラレータ１０に、該パケットの識別子と同じ識別子を有するパケットを所定期間に限ってサーバ２０に転送させている。
【００５８】
すなわち、サーバ２０は、オフロード対象以外の識別子を有するパケットの他に、一定の種類のフローのパケットのみを所定期間に限って処理している。したがって、サーバ２０は、多種類のフローを長時間にわたって処理することはないため、検索テーブルのキャッシュ容量の上限を超えた多種類のフローを長時間にわたってサーバ２０に処理させる状態は回避できる。この結果、サーバ２０における効率的な処理を維持できる。
【００５９】
以上のように、本実施の形態１によれば、パケット廃棄の影響を低減するとともに、サーバ２０における効率的な処理を維持して、システム全体のスループット性能の劣化を抑制することができる。
【００６０】
［他の実施の形態］
［システム構成等］
図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部又は任意の一部が、ＣＰＵ及び当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００６１】
また、本実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部又は一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部又は一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【００６２】
［プログラム］
図６は、プログラムが実行されることにより、パケット処理システムが実現されるコンピュータの一例を示す図である。コンピュータ１０００は、例えば、メモリ１０１０、ＣＰＵ１０２０を有する。また、コンピュータ１０００は、ハードディスクドライブインタフェース１０３０、ディスクドライブインタフェース１０４０、シリアルポートインタフェース１０５０、ビデオアダプタ１０６０、ネットワークインタフェース１０７０を有する。これらの各部は、バス１０８０によって接続される。
【００６３】
メモリ１０１０は、ＲＯＭ（Read  Only  Memory）１０１１及びＲＡＭ１０１２を含む。ＲＯＭ１０１１は、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース１０３０は、ハードディスクドライブ１０９０に接続される。ディスクドライブインタフェース１０４０は、ディスクドライブ１１００に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ１１００に挿入される。シリアルポートインタフェース１０５０は、例えばマウス１１１０、キーボード１１２０に接続される。ビデオアダプタ１０６０は、例えばディスプレイ１１３０に接続される。
【００６４】
ハードディスクドライブ１０９０は、例えば、ＯＳ１０９１、アプリケーションプログラム１０９２、プログラムモジュール１０９３、プログラムデータ１０９４を記憶する。すなわち、パケット処理システムの各処理を規定するプログラムは、コンピュータ１０００により実行可能なコードが記述されたプログラムモジュール１０９３として実装される。プログラムモジュール１０９３は、例えばハードディスクドライブ１０９０に記憶される。例えば、パケット処理システムにおける機能構成と同様の処理を実行するためのプログラムモジュール１０９３が、ハードディスクドライブ１０９０に記憶される。なお、ハードディスクドライブ１０９０は、ＳＳＤ（Solid  State  Drive）により代替されてもよい。
【００６５】
また、上述した実施形態の処理で用いられる設定データは、プログラムデータ１０９４として、例えばメモリ１０１０やハードディスクドライブ１０９０に記憶される。そして、ＣＰＵ１０２０が、メモリ１０１０やハードディスクドライブ１０９０に記憶されたプログラムモジュール１０９３やプログラムデータ１０９４を必要に応じてＲＡＭ１０１２に読み出して実行する。
【００６６】
なお、プログラムモジュール１０９３やプログラムデータ１０９４は、ハードディスクドライブ１０９０に記憶される場合に限らず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ１１００等を介してＣＰＵ１０２０によって読み出されてもよい。あるいは、プログラムモジュール１０９３及びプログラムデータ１０９４は、ネットワーク（ＬＡＮ、ＷＡＮ等）を介して接続された他のコンピュータに記憶されてもよい。そして、プログラムモジュール１０９３及びプログラムデータ１０９４は、他のコンピュータから、ネットワークインタフェース１０７０を介してＣＰＵ１０２０によって読み出されてもよい。
【００６７】
以上、本発明者によってなされた発明を適用した実施形態について説明したが、本実施形態による本発明の開示の一部をなす記述及び図面により本発明は限定されることはない。すなわち、本実施形態に基づいて当業者等によりなされる他の実施形態、実施例及び運用技術等は全て本発明の範疇に含まれる。
【符号の説明】
【００６８】
１  パケット処理システム
５  ユーザ端末
１０  アクセラレータ
２０  サーバ
１１，２１  記憶部
１２  入力部
１３，２２  制御部
１４  出力部
１１１  オフロードテーブル
１１２  一時停止テーブル
１３１  パケット判定部
１３１ａ  オフロード判定部
１３１ｂ  振り分け処理部
１３２，２２１  パケット処理部
１３２ａ  パケットバッファ
２２２  オフロード指示部
【図１】
0006396934.tif 000002
【図２】
0006396934.tif 000003
【図３】
0006396934.tif 000004
【図４】
0006396934.tif 000005
【図５】
0006396934.tif 000006
【図６】
0006396934.tif 000007