(57)【要約】【課題】パケットのフローの帯域を測定し、ルックアップテーブルの割り当て容量を動的に変更することにより、パケットの処理効率を向上させる。【解決手段】CPU及びアクセラレータを用いて、受信したパケットに対して、予め決められた複数の機能のうち少なくとも１つの機能を適用するパケット処理装置は、パケットを受信する受信部と、前記受信したパケットのフローの帯域を、フロー毎に、且つ、適用される機能毎に測定する帯域測定機能部と、前記測定されたフローの帯域に基づいて、前記アクセラレータ上で処理するフローを機能毎に登録するルックアップテーブルの割り当て容量を計算する割り当て計算機能部と、前記計算されたルックアップテーブルの割り当て容量に基づいて、前記ルックアップテーブルの割り当て容量を変更するルックアップテーブル容量割り当て変更機能部とを有する。【選択図】図２
2019033351.tif 000002
【特許請求の範囲】
【請求項１】
CPU及びアクセラレータを用いて、受信したパケットに対して、予め決められた複数の機能のうち少なくとも１つの機能を適用するパケット処理装置であって、
パケットを受信する受信部と、
前記受信したパケットのフローの帯域を、フロー毎に、且つ、適用される機能毎に測定する帯域測定機能部と、
前記測定されたフローの帯域に基づいて、前記アクセラレータ上で処理するフローを機能毎に登録するルックアップテーブルの割り当て容量を計算する割り当て計算機能部と、
前記計算されたルックアップテーブルの割り当て容量に基づいて、前記ルックアップテーブルの割り当て容量を変更するルックアップテーブル容量割り当て変更機能部と、
を有するパケット処理装置。
【請求項２】
前記ルックアップテーブルに登録されていないフローが当該パケット処理装置内に設定された複数のコンテナのうち少なくとも１つのコンテナにおいて処理される場合、
前記割り当て計算機能部は、前記測定されたフローの帯域に基づいて、各コンテナに対するCPUコアの割り当て数を計算し、
当該パケット処理装置は、前記計算されたCPUコアの割り当て数に基づいて、CPUコアの割り当てを変更するコア割り当て変更機能部を更に有する、請求項１に記載のパケット処理装置。
【請求項３】
前記ルックアップテーブルに登録されていないフローが当該パケット処理装置内に設定された複数のコンテナのうち少なくとも１つのコンテナにおいて処理される場合、
当該パケット処理装置は、各コンテナに流入するトラヒックの帯域を測定するコンテナ流入トラヒック帯域測定機能部を更に有し、
前記割り当て計算機能部は、前記測定されたトラヒックの帯域に基づいて、各コンテナに対するCPUコアの割り当て数を計算し、
当該パケット処理装置は、前記計算されたCPUコアの割り当て数に基づいて、CPUコアの割り当てを変更するコア割り当て変更機能部を更に有する、請求項１に記載のパケット処理装置。
【請求項４】
前記測定されたフローの帯域に基づいて、フローの帯域分布を推定する帯域分布推定機能部を更に有し、
前記割り当て計算機能部は、前記推定されたフローの帯域分布に基づいて、ルックアップテーブルの割り当て容量を計算する、請求項１乃至３のうちいずれか１項に記載のパケット処理装置。
【請求項５】
前記ルックアップテーブル容量割り当て変更機能部は、帯域の大きい方のフローが優先的にアクセラレータ上で処理されるようにルックアップテーブルを変更する、請求項１乃至４のうちいずれか１項に記載のパケット処理装置。
【請求項６】
CPU及びアクセラレータを用いて、受信したパケットに対して、予め決められた複数の機能のうち少なくとも１つの機能を適用するパケット処理装置におけるパケット処理方法であって、
パケットを受信するステップと、
前記受信したパケットのフローの帯域を、フロー毎に、且つ、適用される機能毎に測定するステップと、
前記測定されたフローの帯域に基づいて、前記アクセラレータ上で処理するフローを機能毎に登録するルックアップテーブルの割り当て容量を計算するステップと、
前記計算されたルックアップテーブルの割り当て容量に基づいて、前記ルックアップテーブルの割り当て容量を変更するステップと、
を有するパケット処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケット処理装置及びパケット処理方法に関し、特に、サーバ及びアクセラレータを用いて処理を行うパケット処理装置及びパケット処理方法に関する。
【背景技術】
【０００２】
キャリアネットワークにおいて、コンピュータリソースやネットワークリソースを仮想化することで、より高いスケーラビリティを経済的に実現するネットワーク仮想化技術（NFV：Network Function Virtualization）が検討されている。NFVでは、ネットワーク機能やサービス機能をソフトウェア化し、汎用のサーバ上で動作させることができる。
【０００３】
これらのネットワーク機能やサービス機能は、通常ではサーバのCPU（Central Processing Unit）において処理されるが、CPUに加えてアクセラレータを用いて高速な処理を実現する方法が提案されている。例えば、FPGA（Field Programmable Gate Array）のようなアクセラレータをCPUと組み合わせて用いることで、性能向上を図ることが提案されている（非特許文献１〜３参照）。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Zvika Bronstein, et. al., "Uniform Handling and Abstraction of NFV Hardware Accelerators", インターネット, http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=7113221&tag=1, ２０１７年７月７日取得
【非特許文献２】Koji Yamazaki, et. al., "Accelerating SDN/NFV with transparent offloading architecture", インターネット, https://www.usenix.org/system/files/conference/ons2014/ons2014-paper-yamazaki.pdf, ２０１７年７月７日取得
【非特許文献３】Leonhard Nobach, "Open, Elastic Provisioning of Hardware Acceleration in NFV Environments", インターネット, http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=7089057, ２０１７年７月７日取得
【発明の概要】
【発明が解決しようとする課題】
【０００５】
図１は、従来技術においてアクセラレータを用いてネットワーク機能やサービス機能等の様々な処理機能を実現する装置の構成例である。
【０００６】
図１に示す装置では、FPGAのようなアクセラレータがCPUと組み合わせて用いられる。CPUでは、必要に応じて様々な機能を実現することができ、機能毎に独立した実行環境を提供する複数のコンテナが設定される。アクセラレータにおいても、必要に応じて様々な機能を提供することができる。受信したパケットのフローがコンテナにおいて処理されるか、アクセラレータ上で処理されるかは、アクセラレータ上のルックアップテーブルに定義される。このように一部の処理をアクセラレータ上で処理するカットスルーによって、CPU負荷を軽減することができる。
【０００７】
CPU及びアクセラレータで複数の機能を分割して持つ場合、各機能に対するCPUコアの割り当て数や、ルックアップテーブルの割り当て容量は固定的に決められる。例えば、ネットワーク機能を実現するためにDPDK（Data Plane Development Kit）が用いられる場合、PMD（Poll Mode Driver）というデバイスドライバが提供される。このドライバは、基本的にCPUコアを占有して動作させるという前提で設計されており、CPUコアからNIC（Network Interface Card）に対して細かい周期でパケットを取得する。
【０００８】
例えば、機能Aを提供するコンテナAに１つのCPUコアが割り当てられると、機能Aを必要とするパケットが増加又は減少しても、１つのCPUコアが用いられる。また、特定のサーバへのパケットがアクセラレータ上の機能Cで処理されるようにルックアップテーブルCを定義した場合、特定のサーバへのパケットが少ない場合には、アクセラレータ上のリソースが余ってしまい、ルックアップテーブルCの割り当て容量が有効に利用されなくなる。
【０００９】
このように、パケットのフローの帯域には時間的なゆらぎがあるので、CPUコアの割り当て数やルックアップテーブルの割り当て容量を固定的に決めてしまうと、パケットの処理効率が低下する可能性がある。
【００１０】
本発明は、パケットのフローの帯域を測定し、ルックアップテーブルの割り当て容量を動的に変更することにより、パケットの処理効率を向上させることを目的とする。
【課題を解決するための手段】
【００１１】
本発明の一形態に係るパケット処理装置は、
CPU及びアクセラレータを用いて、受信したパケットに対して、予め決められた複数の機能のうち少なくとも１つの機能を適用するパケット処理装置であって、
パケットを受信する受信部と、
前記受信したパケットのフローの帯域を、フロー毎に、且つ、適用される機能毎に測定する帯域測定機能部と、
前記測定されたフローの帯域に基づいて、前記アクセラレータ上で処理するフローを機能毎に登録するルックアップテーブルの割り当て容量を計算する割り当て計算機能部と、
前記計算されたルックアップテーブルの割り当て容量に基づいて、前記ルックアップテーブルの割り当て容量を変更するルックアップテーブル容量割り当て変更機能部と、
を有することを特徴とする。
【００１２】
また、本発明の一形態に係るパケット処理方法は、
CPU及びアクセラレータを用いて、受信したパケットに対して、予め決められた複数の機能のうち少なくとも１つの機能を適用するパケット処理装置におけるパケット処理方法であって、
パケットを受信するステップと、
前記受信したパケットのフローの帯域を、フロー毎に、且つ、適用される機能毎に測定するステップと、
前記測定されたフローの帯域に基づいて、前記アクセラレータ上で処理するフローを機能毎に登録するルックアップテーブルの割り当て容量を計算するステップと、
前記計算されたルックアップテーブルの割り当て容量に基づいて、前記ルックアップテーブルの割り当て容量を変更するステップと、
を有することを特徴とする。
【発明の効果】
【００１３】
本発明によれば、パケットのフローの帯域を測定し、ルックアップテーブルの割り当て容量を動的に変更することにより、パケットの処理効率を向上させることが可能になる。
【図面の簡単な説明】
【００１４】
【図１】従来技術においてアクセラレータを用いて様々な処理機能を実現する構成例である。
【図２】本発明の実施例に係るパケット処理装置の構成を示す図である。
【図３】本発明の実施例に係るパケット処理装置における処理を示すシーケンス図である。
【図４】本発明の別の実施例に係るパケット処理装置の構成を示す図である。
【発明を実施するための形態】
【００１５】
以下、図面を参照して本発明の実施例について説明する。
【００１６】
図２に、本発明の実施例に係るパケット処理装置の構成を示す。パケット処理装置は、CPU及びアクセラレータを用いて、受信したパケットに対して、予め決められた複数の機能のうち少なくとも１つの機能を適用する装置であり、例えば、エッジルータ等の伝送装置でもよい。
【００１７】
図２に示すパケット処理装置は、図１に示す装置に加えて、機能・フロー毎帯域測定機能部１０１と、帯域分布推定機能部１０３と、最適割り当て計算機能部１０５と、ルックアップテーブル容量割り当て変更機能部１０７と、コア割り当て変更機能部１０９とを有する。例えば、機能・フロー毎帯域測定機能部１０１及びルックアップテーブル容量割り当て変更機能部１０７は、アクセラレータ上で実現され、帯域分布推定機能部１０３、最適割り当て計算機能部１０５及びコア割り当て変更機能部１０９は、CPU上で実現される。なお、各機能部１０１〜１０９は、アクセラレータ及びCPUのいずれにおいて実現されてもよい。例えば、パケット処理装置の各機能部は、記憶装置又はメモリ装置（図示せず）に格納されているデータやプログラムをアクセラレータ又はCPUが実行することによって実現されてもよい。
【００１８】
図１を参照して説明した通り、パケット処理装置では、FPGAのようなアクセラレータがCPUと組み合わせて用いられる。CPUでは、様々な機能（機能A、機能B、機能C）を実現することができ、機能毎に独立した実行環境を提供する複数のコンテナ（コンテナA、コンテナB、コンテナC）が設定される。また、コンテナは、仮想マシン（Virtual Machine）によって実現されてもよい。アクセラレータにおいても、必要に応じて様々な機能（機能A、機能B、機能C）を提供することができる。機能A、機能B、機能Cの例として、NAPT（Network Address Port Translation）、VLAN（Virtual Local Area Network）カプセル化、暗号化等がある。
【００１９】
パケット処理装置が受信したパケットのフローがコンテナにおいて処理されるか、アクセラレータ上で処理されるかは、アクセラレータ上のルックアップテーブル（ルックアップテーブルA、ルックアップテーブルB、ルックアップテーブルC）に定義される。ルックアップテーブルは、アクセラレータ上で処理するフローを機能毎に登録する。例えば、ルックアップテーブルAに登録された識別子を持つパケットは、アクセラレータ上に設定された機能部Aで処理され、ルックアップテーブルAに登録されていない識別子を持つパケットは、コンテナAにおいて、CPUリソースを論理的に分割したCPUコアを用いて処理される。例えば、パケットの5tuple（宛先IPアドレス、送信元IPアドレス、宛先ポート、送信元ポート、プロトコル番号）が識別子として用いられてもよく、アクセラレータ上でNAPT、VLANカプセル化、暗号化等の機能を適用するか否かは、パケットの5tupleによって決められてもよい。なお、１つのパケットに対して複数の機能が適用されてもよい。
【００２０】
本発明の実施例では、CPUコアの割り当て数やルックアップテーブルの割り当て容量を固定的に決めてしまうと、パケットのフローの帯域（例えば、5tupleフロー毎の帯域）の時間的なゆらぎによって、アクセラレータ上のリソースが余る可能性があるため、CPUコアの割り当て数やルックアップテーブルの割り当て容量を動的に変更する。
【００２１】
機能・フロー毎帯域測定機能部１０１は、インタフェース部（I/F）において受信したパケットのフローの帯域を、フロー毎に、且つ、適用される機能毎に測定する。
【００２２】
帯域分布推定機能部１０３は、機能・フロー毎帯域測定機能部１０１において測定されたフローの帯域に基づいて、フローの帯域分布を推定する。
【００２３】
最適割り当て計算機能部１０５は、機能・フロー毎帯域測定機能部１０１において測定されたフローの帯域又は帯域分布推定機能部１０３において推定されたフローの帯域分布に基づいて、ルックアップテーブルの割り当て容量を計算する。ルックアップテーブルの割り当て容量とは、アクセラレータ上でルックアップテーブルに割り当てられるリソース量を示す。ルックアップテーブルがSRAM（Static Random Access Memory）等のメモリに保存される場合、ルックアップテーブルの割り当て容量は、メモリ内においてルックアップテーブルが使用できるメモリリソース量に相当する。ルックアップテーブルの割り当て容量を変更することで、ルックアップテーブルによって定義されるオフロード対象のパケットの量を制御することができる。例えば、ルックアップテーブルCの割り当て容量を増やすことで、そのルックアップテーブルCに対応する機能Cを必要とするパケットがアクセラレータ上で処理される可能性が高くなる。一方、ルックアップテーブルA、B及びCは同じアクセラレータ上のリソースを共有しているため、ルックアップテーブルCの割り当て容量を増やした結果、ルックアップテーブルA及びBの割り当て容量が減ることになり、ルックアップテーブルA及びBに対応する機能A及びBを必要とするパケットがコンテナA及びBにおいて処理される可能性が高くなる。
【００２４】
また、最適割り当て計算機能部１０５は、機能・フロー毎帯域測定機能部１０１において測定されたフローの帯域に基づいて、各コンテナに対するCPUコアの割り当て数を計算する。最適割り当て計算機能部１０５は、コンテナに流入するトラヒックの帯域を推定し、CPU処理量を多く必要とするコンテナに対してCPUコアの割り当てを増やし、CPU処理量をあまり必要としないコンテナに対してCPUコアの割り当てを減らす。
【００２５】
ルックアップテーブル容量割り当て変更機能部１０７は、最適割り当て計算機能部１０５において計算されたルックアップテーブルの割り当て容量に基づいて、ルックアップテーブルの割り当て容量を変更する。また、ルックアップテーブル容量割り当て変更機能部１０７は、例えば、帯域の大きい方のフローから順にフローの識別子をルックアップテーブルに登録することにより、帯域の大きい方のフローが優先的にアクセラレータ上で処理されるようにルックアップテーブルを変更する。
【００２６】
コア割り当て変更機能部１０９は、最適割り当て計算機能部１０５において計算されたCPUコアの割り当て数に基づいて、CPUコアの割り当てを変更する。
【００２７】
図３に、本発明の実施例に係るパケット処理装置における処理を示す。図３に示す処理は、予め決められた周期で繰り返されてもよく、予め決められた量のパケットを受信したときに繰り返されてもよい。
【００２８】
まず、機能・フロー毎帯域測定機能部１０１は、受信したパケットのフローの帯域を、フロー毎に、且つ、適用される機能毎に測定し、帯域分布推定機能部１０３に対して出力する（Ｓ１０１）。
【００２９】
帯域分布推定機能部１０３は、フロー毎且つ機能毎の帯域情報から帯域分布を推定し（Ｓ１０３）、帯域分布を最適割り当て計算機能部１０５に対して出力する（Ｓ１０５）。
【００３０】
最適割り当て計算機能部１０５は、帯域分布からパケットの処理効率を最大化するCPUコアの割り当て数及びルックアップテーブルの割り当て容量を計算する（Ｓ１０７）。最適割り当て計算機能部１０５は、例えば、帯域の大きいフローを多く含む機能に対して優先的にルックアップテーブルの容量を割り当てる。さらに、ルックアップテーブルの割り当て容量を変更することで、コンテナに流入するトラヒック量が変化するため、最適割り当て計算機能部１０５は、コンテナに流入するトラヒックの帯域を推定し、CPUコアの割り当て数を計算する。
【００３１】
最適割り当て計算機能部１０５は、コア割り当て変更機能部１０９に対してコア割り当ての変更を指示し、コア割り当て変更機能部１０９は、CPUコアの割り当てを変更する（Ｓ１０９）。
【００３２】
最適割り当て計算機能部１０５は、ルックアップテーブル容量割り当て変更機能部１０７に対してルックアップテーブルの割り当て容量の変更を指示し、ルックアップテーブル容量割り当て変更機能部１０７は、ルックアップテーブルの割り当て容量を変更する（Ｓ１１１）。また、ルックアップテーブル容量割り当て変更機能部１０７は、帯域の大きい方のフローが優先的にアクセラレータ上で処理されるようにルックアップテーブルを変更する。
【００３３】
なお、上記の実施例では、コンテナとアクセラレータ上の機能とが１対１の関係にあるが、コンテナとアクセラレータ上の機能とは、１対１の関係に限られず、１対多、多対１、多対多の関係でもよい。
【００３４】
図４に、本発明の別の実施例に係るパケット処理装置の構成を示す。図４では、機能Aを提供するために、コンテナA1及びコンテナA2が用いられ、機能Bを提供するためにコンテナB1及びコンテナB2が用いられる例が示されている。
【００３５】
図４に示すパケット処理装置は、図２に示すパケット処理装置に加えて、コンテナ流入トラヒック帯域測定機能部１１１を更に有する。
【００３６】
コンテナ流入トラヒック帯域測定機能部１１１は、各コンテナに流入するトラヒックの帯域を測定する。
【００３７】
また、最適割り当て計算機能部１０５は、コンテナ流入トラヒック帯域測定機能部１１１において測定されたトラヒックの帯域に基づいて、各コンテナに対するCPUコアの割り当て数を計算する。
【００３８】
このように、コンテナ毎にトラヒックの帯域を測定することで、コンテナとアクセラレータ上の機能とが１対１の関係にない場合に、CPUコアの割り当てをより適切に行うことが可能になる。
【００３９】
＜本発明の実施例の効果＞
一般的に、ルックアップテーブルの割り当て容量の変更に対するカットスルートラヒック量の変化はフロー毎の帯域に依存し、フローの帯域は各フローで均一でなく、その分布も不明である。したがって、CPUコアの割り当て数やルックアップテーブルの割り当て容量を固定的に決めてしまうと、パケットの処理効率が低下する。
【００４０】
本発明の実施例によれば、パケットのフローの帯域を測定し、CPUコアの割り当て数やルックアップテーブルの割り当て容量を動的に変更することにより、パケットの処理効率を向上させることが可能になる。その結果、本発明の実施例に係るパケット処理装置がエッジルータ等の伝送装置に用いられる場合、パケットの転送効率を向上させることが可能になる。
【００４１】
また、コンテナとアクセラレータ上の機能とが１対１の関係にない場合であっても、コンテナ毎にトラヒックの帯域を測定することで、CPUコアの割り当てをより適切に行うことが可能になる。
【００４２】
＜補足＞
説明の便宜上、本発明の実施例に係るパケット処理装置は機能的なブロック図を用いて説明しているが、本発明の実施例に係るパケット処理装置は、ハードウェア、ソフトウェア又はそれらの組み合わせで実現されてもよい。例えば、本発明の実施例は、コンピュータに対して本発明の実施例に係るパケット処理装置の機能を実現させるプログラム、コンピュータに対して本発明の実施例に係る方法の各手順を実行させるプログラム等により、実現されてもよい。また、各機能部が必要に応じて組み合わせて使用されてもよい。また、本発明の実施例に係る方法は、実施例に示す順序と異なる順序で実施されてもよい。
【００４３】
以上、パケットのフローの帯域を測定し、ルックアップテーブルの割り当て容量を動的に変更することにより、パケットの処理効率を向上させるための手法について説明したが、本発明は、上記の実施例に限定されることなく、特許請求の範囲内において、種々の変更・応用が可能である。
【符号の説明】
【００４４】
１０１  機能・フロー毎帯域測定機能部
１０３  帯域分布推定機能部
１０５  最適割り当て計算機能部
１０７  ルックアップテーブル容量割り当て変更機能部
１０９  コア割り当て変更機能部
１１１  コンテナ流入トラヒック帯域測定機能部
【図１】
2019033351.tif 000003
【図２】
2019033351.tif 000004
【図３】
2019033351.tif 000005
【図４】
2019033351.tif 000006