(57)【要約】【課題】ハードウェア・アクセラレータを有するネットワーク処理装置で、最小構成の計算機資源で必要な処理性能を提供する。【解決手段】受信したパケットを処理する通信装置を管理装置で管理し、通信装置はパケットをソフトウェアで処理する第１のネットワーク処理部と、パケットをハードウェアで処理する第２のネットワーク処理部と、を有し、通信装置が、第１のネットワーク処理部に、前記受信したパケットを振り分けて処理を実行し、管理装置が、通信装置の稼働状態の監視結果に基づいて、前記第１のネットワーク処理部と第２のネットワーク処理部の間で前記パケットの処理を切り替える指令を前記通信装置へ送信し、通信装置が受信した指令に基づいて、第１のネットワーク処理部と第２のネットワーク処理部の間で前記パケットの処理を切り替える。【選択図】図２
2016220126.tif 000002
【特許請求の範囲】
【請求項１】
受信したパケットを処理する通信装置と、
前記通信装置を管理する管理装置と、を有するネットワーク処理システムであって、
前記通信装置は、
前記パケットをソフトウェアで処理する第１のネットワーク処理部と、
前記パケットをハードウェアで処理する第２のネットワーク処理部と、
前記受信したパケットを第１のネットワーク処理部と第２のネットワーク処理部に振り分ける第１の振り分け部と、を有し、
前記管理装置は、
前記通信装置の稼働状態を監視する稼働状態監視部と、
前記稼働状態監視部の監視結果に基づいて、前記第１のネットワーク処理部と第２のネットワーク処理部の間で前記パケットの処理を切り替える指令を前記通信装置へ送信する構成管理部と、を有し、
前記通信装置は、
前記構成管理部からの指令に基づいて、前記第１のネットワーク処理部と第２のネットワーク処理部の間で前記パケットの処理を切り替えることを特徴とするネットワーク処理システム。
【請求項２】
請求項１に記載のネットワーク処理システムであって、
前記第１のネットワーク処理部は、
前記パケットを処理する複数の第１の処理部と、
前記パケットを前記複数の第１の処理部へ振り分ける第２の振り分け部と、を有し、
前記第２のネットワーク処理部は、
前記パケットを処理する複数の第２の処理部と、
前記パケットを前記複数の第２の処理部へ振り分ける第３の振り分け部と、を有することを特徴とするネットワーク処理システム。
【請求項３】
請求項１に記載のネットワーク処理システムであって、
前記構成管理部は、
前記稼働状態監視部の監視結果が、前記通信装置で処理したパケットの稼働実績が予め設定した閾値を超えたときに、前記通信装置へ前記第１のネットワーク処理部から前記第２のネットワーク処理部へ切り替える指令を送信し、
前記通信装置は、
前記構成管理部から受信した前記指令に基づいて、受信したパケットの処理を前記第１のネットワーク処理部から前記第２のネットワーク処理部へ切り替えることを特徴とするネットワーク処理システム。
【請求項４】
請求項３に記載のネットワーク処理システムであって、
前記閾値は、前記第１のネットワーク処理部のコストと、前記第２のネットワーク処理部のコストから予め設定された値であることを特徴とするネットワーク処理システム。
【請求項５】
請求項１に記載のネットワーク処理システムであって、
前記構成管理部は、
前記稼働状態監視部の監視結果が、前記通信装置で処理したパケットの稼働実績が予め設定した閾値よりも小さいときに、前記通信装置へ前記第２のネットワーク処理部から前記第１のネットワーク処理部へ切り替える指令を送信し、
前記通信装置は、
前記構成管理部から受信した前記指令に基づいて、受信したパケットの処理を前記第２のネットワーク処理部から前記第１のネットワーク処理部へ切り替えることを特徴とするネットワーク処理システム。
【請求項６】
受信したパケットを処理する通信装置を管理装置で管理するネットワークシステムの管理方法であって、
前記通信装置は、前記パケットをソフトウェアで処理する第１のネットワーク処理部と、前記パケットをハードウェアで処理する第２のネットワーク処理部と、を有し、
前記管理方法は、
前記通信装置が、第１のネットワーク処理部に、前記受信したパケットを振り分けて処理を実行する第１のステップと、
前記管理装置が、前記通信装置の稼働状態を監視する第２のステップと、
前記管理装置が、前記監視結果に基づいて、前記第１のネットワーク処理部と第２のネットワーク処理部の間で前記パケットの処理を切り替える指令を前記通信装置へ送信する第３のステップと、
前記通信装置が、前記管理装置からの指令に基づいて、前記第１のネットワーク処理部と第２のネットワーク処理部の間で前記パケットの処理を切り替える第４のステップと、
を含むことを特徴とするネットワークシステムの管理方法。
【請求項７】
請求項６に記載のネットワークシステムの管理方法であって、
前記第１のステップは、
前記第１のネットワーク処理部で前記パケットを処理する複数の第１の処理部へ前記パケットを振り分けるステップを含み、
前記第４のステップは、
前記第２のネットワーク処理部で前記パケットを処理する複数の第２の処理部へ前記パケットを振り分けるステップを含むことを特徴とするネットワークシステムの管理方法。
【請求項８】
請求項６に記載のネットワークシステムの管理方法であって、
前記第３のステップは、
前記監視結果が、前記通信装置で処理したパケットの稼働実績が予め設定した閾値を超えたときに、前記通信装置へ前記第１のネットワーク処理部から前記第２のネットワーク処理部へ切り替える指令を送信し、
前記第４のステップは、
前記管理装置から受信した前記指令に基づいて、受信したパケットの処理を前記第１のネットワーク処理部から前記第２のネットワーク処理部へ切り替えることを特徴とするネットワークシステムの管理方法。
【請求項９】
請求項８に記載のネットワークシステムの管理方法であって、
前記閾値は、前記第１のネットワーク処理部のコストと、前記第２のネットワーク処理部のコストから予め設定された値であることを特徴とするネットワークシステムの管理方法。
【請求項１０】
請求項６に記載のネットワークシステムの管理方法であって、
前記管理装置が、前記通信装置で処理したパケットの稼働実績が予め設定した閾値よりも小さいときに、前記通信装置へ前記第２のネットワーク処理部から前記第１のネットワーク処理部へ切り替える指令を送信する第５のステップと、
前記通信装置が、前記管理装置から受信した前記指令に基づいて、受信したパケットの処理を前記第２のネットワーク処理部から前記第１のネットワーク処理部へ切り替える第６のステップと、をさらに含むことを特徴とするネットワークシステムの管理方法。
【請求項１１】
受信したパケットを処理する通信装置であって、
前記パケットをソフトウェアで処理する第１のネットワーク処理部と、
前記パケットをハードウェアで処理する第２のネットワーク処理部と、
前記受信したパケットを第１のネットワーク処理部と第２のネットワーク処理部に振り分ける第１の振り分け部と、を有し、
前記第１のネットワーク処理部は、
前記パケットを処理する複数の第１の処理部と、
前記パケットを前記複数の第１の処理部へ振り分ける第２の振り分け部と、を有し、
前記第２のネットワーク処理部は、
前記パケットを処理する複数の第２の処理部と、
前記パケットを前記複数の第２の処理部へ振り分ける第３の振り分け部と、を有し、
前記第１の振り分け部は、受信した指令に基づいて、前記第１のネットワーク処理部と第２のネットワーク処理部の間で前記パケットの処理を切り替えることを特徴とする通信装置。
【請求項１２】
請求項１１に記載の通信装置であって、
前記第１のネットワーク処理部はネットワークインタフェースを介してネットワークに接続され、
前記第２のネットワーク処理部はネットワークインタフェースを介してネットワークに接続され、
前記第１のネットワーク処理部と前記第２のネットワーク処理部は並列的に前記第１の振り分け部に接続されたことを特徴とする通信装置。
【請求項１３】
請求項１１に記載の通信装置であって、
ネットワークに接続されたネットワークインタフェースカードを有し、前記第１のネットワーク処理部と前記第２のネットワーク処理部と前記ネットワークインタフェースカードは並列的に前記第１の振り分け部に接続され、前記第１のネットワーク処理部と前記第２のネットワーク処理部が前記ネットワークインタフェースカードを介してネットワークに接続されることを特徴とする通信装置。
【請求項１４】
請求項１１に記載の通信装置であって、
前記第１のネットワーク処理部と前記第２のネットワーク処理部は接続されてハイブリッドネットワーク処理部を構成し、複数のハイブリッドネットワーク処理部を並列的に前記第１の振り分け部に接続したことを特徴とする通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、要求されるネットワーク処理の機能や、性能ないしはコストによりネットワークを構成する通信装置を変更可能な通信ネットワークシステムに関する。
【背景技術】
【０００２】
近年、サーバをネットワーク処理装置として使用するＮＦＶ（ネットワーク機能仮想化：Network Functions Virtualization）の開発が進められている。ＮＦＶは、これまでハードウェアで開発されていたネットワーク処理機能をソフトウェア化し、サーバのＣＰＵ（中央演算処理装置）で実行するものである。また、１つのＣＰＵ上に複数のコンピュータを仮想的に構築するサーバの仮想化技術を適用すれば、複数のネットワーク処理機能をこれらの仮想的なコンピュータにそれぞれ実装できる。この仮想的なコンピュータはＶＭ（仮想マシン：Virtual Machine）とよばれる。
【０００３】
ＮＦＶはモバイルネットワークにも利用されつつある。ＮＦＶの利用により、大規模なハードウェア開発をせずともネットワーク処理装置を開発できるため、装置の開発期間を短縮できるメリットがある。また、汎用サーバをＮＦＶのプラットフォームにすれば、機器の調達性や保守性も高まる。特にメトロ・コアネットワークでは、ハードウェアで開発された専用装置と比べて装置１台あたりの価格が安く、また、消費電力も小さくなると期待されている。
【０００４】
ＮＦＶの採用については、処理性能に関しても、比較的高い処理能力をもつ高価なマルチコアＣＰＵを使い、さらに処理を工夫することで、数１０Ｇｂｉｔ／ｓの処理速度が実現されている。しかし、これまでネットワーク処理装置のプラットフォームとされてきたＦＰＧＡ（フィールドプログラマブルゲートアレイ）やＡＳＩＣ（特定用途向け集積回路）といったハードウェアに比べ、ＣＰＵは処理能力が低く、数１０Ｇｂｐｓを超す処理速度を実現するにはＦＰＧＡやＡＳＩＣなどのハードウェアを使用しなければならない。
【０００５】
もちろんＣＰＵの数を増やして並列化すれば処理速度を向上できるが、装置全体の価格もサイズも大きくなる。いずれにしても単位処理速度あたりの価格はＣＰＵの方がハードウェアより割高になってしまう。
【０００６】
サーバでは、ＣＰＵで実行するネットワーク処理の一部をハードウェア・アクセラレータに代行させるハードウェア・オフロードとよばれる構成が利用されている。これにより、サーバのＣＰＵにかかるネットワーク処理の負荷を減らし、他の処理を実行させることができる。
【０００７】
従来から行われているサーバのハードウェア・オフロードは、ハードウェア・アクセラレータに代行（オフロード）させるネットワーク処理が予め決められており、オフロード先のハードウェア・アクセラレータには書換えのできないＡＳＩＣを使用することが多い。また、このハードウェアはサーバに固定的に装着される。そのため、ハードウェアの機能と規模が固定されてしまい、サーバに要求される処理量が少ない場合には、ハードウェアの処理資源（リソース）が過剰になってしまう。
【０００８】
これに対して、特許文献１には、データセンタのサーバ内にプログラマブルなハードウェアであるプログラマブルハードウェアアクセラレータ（ＰＨＡ）を設け、ハードウェアで実行するソフトウェア（アプリケーション）を任意に選択する技術が開示されている。また、特許文献１では、ＰＨＡのパフォーマンスを所定の基準値と比較して、比較結果を管理者などに通知する機能を提供する。上記特許文献１では、ＰＨＡの機能を変更できるため、サーバの稼働状況に応じてＣＰＵ負荷の大きいネットワーク処理を選択し、ＰＨＡに代行させることが可能となる。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２０１４−１９１８２８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、上記特許文献１でもＰＨＡはサーバに固定的に装着されるため、サーバ全体の処理量が少なくなった場合には、サーバのハードウェアのリソースが過剰になる、という問題があった。
【００１１】
そこで本発明は、上記問題点に鑑みてなされたもので、ハードウェア・アクセラレータを有するネットワーク処理システムで、最小構成の資源で必要な処理性能を提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明は、受信したパケットを処理する通信装置と、前記通信装置を管理する管理装置と、を有するネットワーク処理システムであって、前記通信装置は、前記パケットをソフトウェアで処理する第１のネットワーク処理部と、前記パケットをハードウェアで処理する第２のネットワーク処理部と、前記受信したパケットを第１のネットワーク処理部と第２のネットワーク処理部に振り分ける第１の振り分け部と、を有し、前記管理装置は、前記通信装置の稼働状態を監視する稼働状態監視部と、前記稼働状態監視部の監視結果に基づいて、前記第１のネットワーク処理部と第２のネットワーク処理部の間で前記パケットの処理を切り替える指令を前記通信装置へ送信する構成管理部と、を有し、前記通信装置は、前記構成管理部からの指令に基づいて、前記第１のネットワーク処理部と第２のネットワーク処理部の間で前記パケットの処理を切り替える。
【発明の効果】
【００１３】
本発明によれば、ネットワーク処理システムの規模に応じて最適なネットワーク処理のリソースが配置されるため、ネットワーク処理システムの成長に伴った設備投資が可能となる。
【図面の簡単な説明】
【００１４】
【図１】本発明の第１の実施例を示し、ネットワーク処理システムの構成の一例を示すブロック図である。
【図２】本発明の第１の実施例を示し、通信装置の構成の一例を示すブロック図である。
【図３】本発明の第１の実施例を示し、ネットワークソフトウェア実行部の一例を示すブロック図である。
【図４】本発明の第１の実施例を示し、ネットワーク管理サーバの一例を示すブロック図である。
【図５】本発明の第１の実施例を示し、ネットワーク管理サーバのコア資源管理データベースの一例を示す図である。
【図６】本発明の第１の実施例を示し、ネットワーク管理サーバのコア機能管理データベースの一例を示す図である。
【図７】本発明の第１の実施例を示し、ネットワーク管理サーバの処理機能グループ管理データベースの一例を示す図である。
【図８】本発明の第１の実施例を示し、ネットワーク管理サーバのモジュールデータベースの一例を示す図である。
【図９Ａ】本発明の第１の実施例を示し、ネットワーク管理サーバで行われる処理の一例を示すフローチャートの前半部である。
【図９Ｂ】本発明の第１の実施例を示し、ネットワーク管理サーバで行われる処理の一例を示すフローチャートの後半部である。
【図１０】本発明の第１の実施例を示し、コアコスト管理データベースの一例を示す図である。
【図１１】本発明の第１の実施例を示し、ＣＰＵで処理を行う場合の価格と利用可能帯域の関係を示すグラフである。
【図１２】本発明の第１の実施例を示し、ＣＰＵとＦＰＧＡの価格と利用可能帯域の関係を示すグラフである。
【図１３】本発明の第２の実施例を示し、ネットワーク処理部の一例を示すブロック図である。
【図１４】本発明の第３の実施例を示し、通信装置の一例を示すブロック図である。
【図１５】本発明の第４の実施例を示し、通信装置の一例を示すブロック図である。
【図１６】本発明の第５の実施例を示し、通信装置の一例を示すブロック図である。
【発明を実施するための形態】
【００１５】
以下、本発明の実施例を添付図面に基づいて説明する。
【実施例１】
【００１６】
図１は、本発明の第１の実施例を示し、本発明を適用するネットワーク処理システムの一例を示すブロック図である。なお、本発明の実施例は、図１に示したようなネットワークにおける通信装置に適用した場合を一例として記載するが、本発明の実施例は以下に記載した構成に限定されるものではない。他のネットワークであっても本発明を適用することで同等の効果が得られる。
【００１７】
図１において、基地局（図中ｅＮＢ：ｅＮｏｄｅＢ）２は、図示しないユーザ端末と通信し、基地局２はネットワークを構成する通信装置３０−１〜３０−４を介してサーバ６との間でパケットを転送する。なお、以下では、通信装置３０−１〜３０−４の全体を指すときには「−」のない符号３０で示す。他の構成要素の符号も同様である。
【００１８】
ネットワーク処理システムは、ネットワーク管理サーバ２０と、管理ネットワーク４０と、４つの通信装置３０−１、３０−２、３０−３、３０−４から成る。各通信装置３０は、管理ネットワーク４０を介してネットワーク管理サーバ２０で管理される。ネットワーク管理サーバ２０は、保守端末２１に接続されて、設定情報等の受け付けや、演算結果の出力等を行う。
【００１９】
通信装置３０−１は、２つのネットワークソフトウェア実行部（図中ソフト実行部）３１−１、３１−２と、２つのプログラマブルネットワーク処理部（図中ＰＮＷ処理部）３２−１、３２−２と、１つのパケット振り分け部（第１の振り分け部）３３と、装置コントローラ３４とで構成される。他の通信装置３０−２、３０−３、３０−４については説明を省略するが、通信装置３０−１と同様の構成である。ただし、ネットワークソフトウェア実行部（第１のネットワーク処理部）３１とプログラマブルネットワーク処理部（第２のネットワーク処理部）３２の数は互いに異なっていてもよい。また、通信装置３０は、少なくともひとつのネットワークソフトウェア実行部３１を有し、必用に応じてプログラマブルネットワーク処理部３２やネットワークソフトウェア実行部３１を追加することができる。すなわち、通信装置３０内では、ネットワークソフトウェア実行部３１がネットワーク処理のサーバとして機能し、ネットワークソフトウェア実行部３１はアクセラレータとして機能する。なお、ネットワークソフトウェア実行部３１−１に加えてネットワークソフトウェア実行部３１−２を追加した場合、ネットワークソフトウェア実行部３１−２は、アクセラレータとして機能する。
【００２０】
これらの通信装置３０−１、３０−２、３０−３、３０−４は、それぞれが有するパケット振り分け部３３で接続されており、互いにパケットを送受信することでネットワークを構築している。
【００２１】
通信装置３０−１においては、ネットワーク処理リソースであるネットワークソフトウェア実行部３１−１、３１−２とプログラマブルネットワーク処理部３２−１、３２−２がそれぞれパケット振り分け部３３−１に接続される。そして、パケット振り分け部３３−１がパケット振分けテーブル（図示省略）に従ってパケットを上記ネットワーク処理リソースから選択して転送する。
【００２２】
また、これらのネットワーク処理リソースで処理されたパケットはパケット振り分け部３３に送られ、パケット振り分け部３３がパケット転送テーブルに従って他の通信装置などに転送される。
【００２３】
本実施例１のネットワーク処理システムの主な構成要素は、ネットワーク処理機能のソフトウェアプログラムを実行するネットワークソフトウェア実行部３１と、再構成可能な論理回路を用いてネットワーク処理を実行するプログラマブルネットワーク処理部３２と、これらのネットワーク処理リソースを接続するパケット振り分け部３３と、これらを管理及び制御するネットワーク管理サーバ２０、である。
【００２４】
ネットワークソフトウェア実行部３１には、ＣＰＵやＮＰ（ネットワークプロセッサ）などが使用される。汎用プロセッサであるＣＰＵは、プログラム化された複数の異なるネットワーク処理のうち任意の処理を選択して実行することができる。すなわち、ネットワークソフトウェア実行部３１は、実行するプログラムを変更することで、異なる処理を行うことが可能なソフトウェア・アクセラレータとして機能することができる。
【００２５】
プログラマブルネットワーク処理部３２には、回路の再構成が可能なＦＰＧＡが使用される。ＦＰＧＡは異なるネットワーク処理機能をもつ複数の回路プログラムから、任意のプログラムを選択して所定の回路構成を実現することができる。すなわち、プログラマブルネットワーク処理部３２は、適用する回路を変更することで、異なる処理を行うことが可能なハードウェア・アクセラレータとして機能する。
【００２６】
例えば、あるネットワーク処理機能に対してソフトウェアプログラムと回路プログラムの両方を用意しておけば、そのネットワーク処理機能を実行するネットワーク処理リソース（実行リソース）を増設でき、さらには実行リソースをネットワークソフトウェア実行部３１とプログラマブルネットワーク処理部３２のいずれかで切り替えることができる。
【００２７】
ネットワーク管理サーバ２０がパケット振り分け部３３の設定を変更し、増設や、切り替え後のネットワーク処理リソースにパケットを転送させれば、更新された実行リソースでパケットのネットワーク処理を継続することができる。
【００２８】
また、ネットワーク処理機能を実行するネットワーク処理リソースの削減も可能である。ただし、削減するネットワーク処理リソースに処理対象のパケットが設定されている場合は、当該パケットが他のネットワーク処理リソースで処理されるよう、ネットワーク処理の設定の移譲と、パケット振り分け部３３の設定の変更を行う。
【００２９】
図２は、通信装置３０−１の具体的な構成の一例を示すブロック図である。通信装置３０−１は、カードスロット３５−１〜３５−４に挿入されたネットワークソフトウェア実行部３１−１、３１−２及びプログラマブルネットワーク処理部３２−１、３２−２と、ネットワークソフトウェア実行部３１とプログラマブルネットワーク処理部３２へパケットを振り分けるパケット処理部５７と、ネットワーク管理サーバ２０からの指令に基づいてパケット処理部５７とネットワークソフトウェア実行部３１とプログラマブルネットワーク処理部３２を制御する装置コントローラ３４を含む。
【００３０】
なお、カードスロット３５−１〜３５−４は挿抜自在に構成され、管理者などによってカード状のネットワークソフトウェア実行部３１やプログラマブルネットワーク処理部３２を脱着することができる。また、カードスロット３５の数や装着するカードの種類は、上記に限定されるものではなく、所望の数と種類で構成することができる。また、ネットワークソフトウェア実行部３１とプログラマブルネットワーク処理部３２の総称を、カードとする。
【００３１】
パケット振り分け部３３は、外部の機器に接続される受信回路５１−１、５１−２、５１−３と送信回路５２−１、５２−２、５２−３とを有する。例えば、受信回路５１−１と送信回路５２−１が基地局２と接続され、受信回路５１−２と送信回路５２−２が通信装置３０−２と接続され、受信回路５１−３と送信回路５２−３が通信装置３０−３と接続される。
【００３２】
通信装置３０は、受信回路５１と送信回路５２を用いて、他の通信装置３０や基地局２と主信号のパケットを送受信する。なお、装置コントローラ３４は、内部にネットワークインタフェースを有して管理ネットワーク４０に接続される。
【００３３】
また、パケット振り分け部３３は、内部のパケット処理部５７に接続される受信回路５４−１、５４−２、５４−３と送信回路５３−１、５３−２、５３−３とを有する。例えば、送信回路５３−１と受信回路５４−１がネットワークソフトウェア実行部３１−１に接続され、送信回路５３−２、５３−３と受信回路５４−２、５４−３がネットワークソフトウェア実行部３１−１に接続される。なお、ネットワークソフトウェア実行部３１−２と、プログラマブルネットワーク処理部３２−２も同様であり、図示しない送信回路と受信回路によってパケット処理部５７に接続される。
【００３４】
ネットワークソフトウェア実行部３１−１、３１−２はカードの形態であり、カードコントローラ１６１と、受信回路１５５と、パケット振り分け部（第２の振り分け部）１５８と、複数の処理部５９−１、５９−２、…、５９−ｎと、パケット多重部１６０と、送信回路５６とを含む。なお、ネットワークソフトウェア実行部３１−１、３１−２は同一の構成であるので、ネットワークソフトウェア実行部３１−１のみについて説明する。
【００３５】
本実施例１では、処理部５９を、仮想計算機（ＶＭ：Virtual Machine）で構成した例を示す。すなわち、ネットワークソフトウェア実行部３１は、ＣＰＵとメモリを含んで、複数の仮想計算機が所定のソフトウェアを実行することでパケットを処理する。
【００３６】
受信回路１５５は、パケット振り分け部３３の送信回路５３−１から転送されたパケットを受信し、パケット振り分け部１５８に転送する。パケット振り分け部１５８は、受信したパケットを予め設定された内部の振分けテーブル（図示省略）に基づいて複数の処理部５９−１、５９−２、…、５９−ｎに振分ける。
【００３７】
処理部５９−１、５９−２、…、５９−ｎは、ネットワーク管理サーバ２０によって指定された処理を実行し、実行結果のパケットをパケット多重部１６０に出力する。パケット多重部１６０は、複数の処理部５９から受信したパケットをまとめて送信回路１５６に出力し、送信回路１５６からパケット振り分け部３３の受信回路５４−１に送信する。
【００３８】
ネットワークソフトウェア実行部３１のパケット振り分け部１５８とパケット多重部１６０は例えば、仮想スイッチを制御する。カードコントローラ１６１はこれらの設定や状態監視を行う。なお、ネットワークソフトウェア実行部３１の詳細については後述する。
【００３９】
次に、プログラマブルネットワーク処理部３２−１、３２−２もカードの形態である。本実施例１では、処理部６２−１〜６２−ｎをＦＰＧＡ等のハードウェアで構成した例を示す。なお、プログラマブルネットワーク処理部３２−１、３２−２は同一の構成であるので、プログラマブルネットワーク処理部３２−１のみについて説明する。
【００４０】
プログラマブルネットワーク処理部３２−１の内部は、受信回路２５５と送信回路２５６をそれぞれ２つ有し、パケット振り分け部３３とプログラマブルネットワーク処理部３２−１の間でより多くのパケットを転送することができる。
【００４１】
２つの受信回路２５５−１、２５５−２で受信されたパケットは、パケット振り分け部（第３の振り分け部）２５８に転送される。パケット振り分け部２５８は内部の振分けテーブル（図示省略）に基づいて受信したパケットを複数の処理部６２−１、６２−２、…、６２−ｎに振分ける。
【００４２】
これらの処理部６２は、１つのＦＰＧＡの中に設定される１以上の処理ブロックで構成される。処理部６２−１〜６２−ｎでそれぞれ処理されたパケットはパケット多重部２６０に転送される。パケット多重部２６０は、複数の処理部６２から受信したパケットをまとめてから２つの送信回路２５６−１、２５６−２に分配し、パケット振り分け部３３の受信回路５４−２、５４−３に送信する。カードコントローラ２６１は、上記機能部位の設定や状態の監視を行う。
【００４３】
この例ではプログラマブルネットワーク処理部３２の受信回路２５５と送信回路２５６の数を２つずつにしたが、１つずつでも３つずつ以上でも良い。パケット振り分け部３３には、これらの受信回路２５５、送信回路２５６と同数の送信回路５３、受信回路５４を持たなければならない。同様に、ネットワークソフトウェア実行部３１も受信回路１５５、送信回路１５６の数は１つずつより多くても良い。
【００４４】
上記通信装置３０−１の構成により、ネットワーク管理サーバ２０は、ネットワークソフトウェア実行部３１−１やプログラマブルネットワーク処理部３２−１を選択して、他の通信装置３０や基地局２、あるいは外部のサーバなどから送信されたパケットを処理することができる。
【００４５】
さらに、通信装置３０は、各ネットワーク処理リソース内の複数の処理部にパケットを振り分けて処理させることで、ネットワーク処理リソースを様々なネットワーク処理機能に利用することができる。
【００４６】
図３は、ネットワークソフトウェア実行部３１−１の一例を示すブロック図である。なお、ネットワークソフトウェア実行部３１−２も同様の構成であるので、重複した説明は省略する。
【００４７】
ネットワークソフトウェア実行部３１−１は、処理を実行するＣＰＵ３１０と、データやプログラムを格納するメモリ３１１と、パケット振り分け部３３と通信を行う受信回路１５５及び送信回路１５６を含む。なお、受信回路１５５と送信回路１５６は、ひとつのネットワークインタフェースで構成してもよい。他の受信回路と送信回路も同様であり、ひとつのネットワークインタフェースで構成することができる。
【００４８】
ＣＰＵ３１０は、複数のプロセッサコアを含むマルチコアプロセッサで構成することができる。メモリ３１１には、ネットワークソフトウェア実行部３１−１のネットワーク処理のリソースを仮想計算機３５０−１〜３５０−ｎに割り当てるハイパバイザ３２０が格納されて、ＣＰＵ３１０によって実行される。
【００４９】
仮想計算機３５０−１〜３５０−ｎでは、ＯＳやアプリケーションでパケットの処理を実行する処理部５９−１〜５９−ｎがそれぞれ稼働する。各処理部５９が行う処理は、ネットワーク管理サーバ２０で決定される。各処理部５９は、ネットワーク管理サーバ２０が配布したプログラムを実行して、パケットに所定の処理を行う。
【００５０】
ハイパバイザ３２０は、仮想ＮＩＣ（Network Interface Card）３４０−１〜３４０−ｎを仮想計算機３５０−１〜３５０−ｎに提供する。そして、仮想ＮＩＣ３４０−１〜３４０−ｎは、ハイパバイザ３２０が提供する仮想スイッチ３３０を介して、受信回路１５５や送信回路１５６と通信を行う。なお、上述のパケット振り分け部１５８とパケット多重部１６０はハイパバイザ３２０内に提供される機能の一つである。パケット振り分け部１５８は、装置コントローラ３４によって予め設定された振り分けテーブル１６２に基づいて、パケットを転送する処理部５９−１〜５９−ｎを選択する。
【００５１】
カードコントローラ１６１は、ハイパバイザ３２０内で各機能要素の管理と監視を実行する。本実施例１では、ハイパバイザ３２０がひとつの機能としてカードコントローラ１６１を提供する例を示す。カードコントローラ１６１は、装置コントローラ３４の指令に応じて各機能要素の設定や仮想計算機３５０−１〜３５０−ｎで行う処理を変更することができる。
【００５２】
プログラマブルネットワーク処理部３２−１は、パケット振り分け部２５８と、処理部６２−１〜６２−ｎと、パケット多重部２６０をＦＰＧＡで構成することができる。また、プログラマブルネットワーク処理部３２−１では、振り分けテーブルをカードコントローラ２６１内に保持するようにすればよい。
【００５３】
＜パケット振り分け部のパケット振分け処理＞
図２の通信装置３０−１を例として、パケット振り分け部３３、１５８におけるパケット振分け処理の実施形態の一例を説明する。なお、プログラマブルネットワーク処理部３２のパケット振り分け部２５８も、ネットワークソフトウェア実行部３１のパケット振り分け部１５８と同様の機能を有するので、重複した説明は省略する。
【００５４】
本実施例１では、パケットの振分けを行う構成要素が、パケット振り分け部３３のパケット処理部５７と、カード形態のネットワーク処理リソース内のパケット振り分け部１５８との多段構成となっている。前段のパケット処理部５７がパケットをカード単位（ネットワークソフトウェア実行部３１、プログラマブルネットワーク処理部３２）で振分け、後段のパケット振り分け部１５８がパケットを処理部５９の単位でパケットを振り分ける。
【００５５】
パケットには、当該パケットが受けるネットワーク処理機能を示すラベルがＶＬＡＮタグや宛先ＭＡＣアドレス、宛先ＩＰアドレスやポート番号などの形で付与されている。
【００５６】
パケット処理部５７は、ネットワーク処理機能を示すラベルに対し、当該ラベルに応じたネットワーク処理機能を実行するネットワーク処理リソースの対応を示した振分けテーブル５７１を参照し、パケットを当該ラベルに応じたネットワーク処理リソースに転送する。この振分けテーブル５７１はネットワーク管理サーバ２０によって管理される。
【００５７】
パケット振り分け部１５８は、ネットワーク処理機能を示すラベルに対し、ネットワーク処理機能を実行する処理部５９とラベルの対応を示した振分けテーブル１６２を参照し、パケットをラベルに応じた処理部５９に転送する。この振分けテーブル１６２はカードコントローラ１６１によって管理される。
【００５８】
パケット振り分け部１５８は、１つのネットワーク処理機能に複数の処理部５９−１〜５９−ｎを割り当てた場合、もし処理対象となるパケットのラベルが複数存在すれば、そのラベル群を分割してそれぞれを異なる処理部５９に振り分ける。
【００５９】
また、処理対象となるパケットの順序逆転が許容される場合などはパケットのラベルに応じて処理部５９を分ける必要のないため、パケット振り分け部１５８には、パケット振り分け部１５８が受信したパケットを到着順などで複数の処理部５９に振り分ける機能を実装することができる。
【００６０】
そして、パケット振り分け部１５８は、振分けテーブル１６２において、当該ネットワーク処理機能を受けるパケットのラベルに対する振分け処理と複数の振分け先を指定する。パケット振り分け部１５８はこの振分けテーブル１６２を参照して、受信したパケットのラベルに応じた複数の振分け先に指定された振分け内容でパケットを転送する。振分け内容には、到着順での振分けの他に、ランダムな振分けなど多種存在するが、いずれの振り分け内容であっても本実施例１のネットワーク処理システムに適用できる。
【００６１】
なお、プログラマブルネットワーク処理部３２では、ＦＰＧＡ等のハードウェアで処理部６２を構成するので、パケット振り分け部２５８が振り分けテーブル１６２を保持するようにしても良い。あるいは、カードコントローラ２６１が振り分けテーブル１６２を保持し、パケット振り分け部２５８が振り分けテーブル１６２を参照するようにしてもよい。
【００６２】
＜パケット多重部の振分け処理＞
図２の通信装置３０−１のプログラマブルネットワーク処理部３２−１を例として、パケット多重部２６０におけるパケット振分け処理の一例を説明する。なお、プログラマブルネットワーク処理部３２−２も同様の構成であるので重複した説明は省略する。
【００６３】
プログラマブルネットワーク処理部３２−１のパケット多重部２６０において、２つの送信回路２５６−１、２５６−２への振分けのポリシーや振分け方法は、例えば、受信回路２５５−１、２５５−２で受信したパケットをそれぞれ送信回路２５６−１、２５６−２から出力する場合、パケット振り分け部２５８が受信回路２５５−１、２５５−２に応じたヘッダをパケットに付与し、パケット多重部２６０が当該ヘッダに基づいて送信回路２５６−１、２５６−２に振り分ける。これ以外の振分けポリシーや振り分け方法を採用しても良い。
【００６４】
＜ネットワーク管理サーバの構成＞
図４はネットワーク管理サーバ２０の構成の一例を示すブロック図である。ネットワーク管理サーバ２０は、ＣＰＵ７０と、メモリ７１と、ストレージ装置７５と、通信装置制御インタフェース９１と、保守端末接続インタフェース９２とを含む。
【００６５】
メモリ７１には、利用状況監視部（稼働状態監視部）７２と、コア管理部（構成管理部）７３と、モジュール管理部７４から成るネットワーク処理部１７１が格納されて、ＣＰＵ７０によって実行される。ストレージ装置７５には、コア資源管理データベース８１と、コア機能管理データベース８２と、処理機能グループ管理データベース８３と、モジュールデータベース８４と、コアコスト管理データベース２３１と、コストルールデータベース２３２と、振り分けテーブル２３３から成るデータベースが格納される。
【００６６】
ネットワーク処理部１７１は、通信装置制御インタフェース９１と管理ネットワーク４０を介して通信装置３０の装置コントローラ３４に接続されている。装置コントローラ３４は通信装置３０の状態や設定を監視し、制御している。また、ネットワーク処理部１７１は、保守端末接続インタフェース９２を介して保守端末２１に接続されており、保守を行う管理者等が保守端末２１からネットワーク処理部１７１を介してデータベースの情報を読み書きできる。
【００６７】
コア管理部７３は、利用状況監視部７２の監視結果に基づいて、通信装置３０内のネットワーク処理実行リソースの性能や状態をコア資源管理データベース８１で管理する。新たにネットワーク処理実行リソース（プログラマブルネットワーク処理部３２やネットワークソフトウェア実行部３１）が通信装置３０に追加または削除されると、保守端末２１もしくは通信装置３０の装置コントローラ３４がコア管理部７３に追加または削除を通知する。コア管理部７３は、受信した通知に従ってコア資源管理データベース８１を更新する。
【００６８】
また、コア管理部７３は、処理機能グループ管理データベース８３に基づいてパケット処理部５７の振分けテーブル５７１を更新する。なお、コア管理部７３は、運用中の通信装置３０のネットワーク処理実行リソース（例えば、プログラマブルネットワーク処理部３２）が削除された場合には、他のネットワーク処理実行リソース（例えば、ネットワークソフトウェア実行部３１）に処理を移すようにモジュール管理部７４と通信装置３０に指令を出力する。
【００６９】
利用状況監視部７２は、通信装置３０の装置コントローラ３４に定期的にアクセスし、ネットワーク処理実行リソースを構成する処理部５９、６２の利用帯域や利用コア数等の利用状況を通信装置３０の稼働状態を示す稼働情報として取得する。利用状況監視部７２は、取得した処理部５９、６２の利用帯域から各通信装置３０のネットワーク処理機能の利用帯域を算出し、処理機能グループ管理データベース８３に格納する。
【００７０】
利用状況監視部７２は、図７で示すように、ネットワークの処理機能８３２ごとの利用帯域１２５が予め設定された閾値１２７、１２９の何れかを超過すると、処理部５９、６２の増設や、ネットワークソフトウェア実行部３１をプログラマブルネットワーク処理部３２に置き換える指示をコア管理部７３に出力する。
【００７１】
反対に、利用状況監視部７２は、図７で示すように、ネットワークの処理機能８３２ごとの利用帯域１２５が予め設定された閾値１２８、１３０の何れかを下回ると、処理部５９、６２の削減や、プログラマブルネットワーク処理部３２をネットワークソフトウェア実行部３１に置き換える指示をコア管理部７３に出力する。
【００７２】
利用状況監視部７２は、運用中の処理部５９、６２が削除される場合は、他の処理部５９、６２に処理を移すようにコア管理部７３に指示する。なお、上記閾値は保守を行う管理者等によって予め設定されてもよいし、ネットワーク管理サーバ２０が定められたルールに基づいて決定してもよい。この場合、このルールはコストルールデータベース２３２で管理される。
【００７３】
モジュール管理部７４は、各処理部５９、６２にインストールされたネットワーク処理機能と稼働状態をコア機能管理データベース８２で管理する。また、モジュール管理部７４は、コア管理部７３の指示に従い、各処理部５９にネットワーク処理プログラムをインストールさせ、また、各処理部６２にネットワーク処理回路の構築を指令する。
【００７４】
また、モジュール管理部７４は、ネットワーク処理プログラムやネットワーク処理回路のレイアウトが格納されるモジュールデータベース８４を管理しており、保守端末２１と保守端末接続インタフェース９２を介して受け付ける保守を行う管理者等からの指示に従い、ネットワーク処理プログラムやネットワーク処理回路の追加や削除を行う。
【００７５】
＜ネットワーク管理サーバのデータベースの構成＞
ネットワーク管理サーバ２０のコア資源管理データベース８１には、ネットワーク処理リソースの実体と処理性能が格納される。図５は、コア資源管理データベース８１の一例を示す図である。
【００７６】
コア資源管理データベース８１は、通信装置３０の識別子を格納する装置ＩＤ１０１と、通信装置３０内のカードの識別子を格納するカードＩＤ１０２と、カードの種別を格納するコア種別１０３と、当該コア種別１０３の処理部５９、６２の数を格納するコア数１０４と、コア数１０４のうち使用中の処理部５９、６２の数を格納する利用コア数１０５と、処理部５９、６２のひとつ当たりの処理性能を示す指標を格納するコアあたりの性能１０６からひとつのエントリが構成される。
【００７７】
装置ＩＤ１０１とカードＩＤ１０２は、ネットワーク処理リソースが格納された通信装置３０の識別子と、ネットワークソフトウェア実行部３１やプログラマブルネットワーク処理部３２等の通信装置３０内のネットワーク処理リソースの識別子である。これらの識別子により、ネットワーク処理リソースの物理的な位置を特定できる。
【００７８】
コア種別１０３は、当該ネットワーク処理リソースの種類を示し、本実施例１ではネットワークソフトウェア実行部３１（ＣＰＵ）とかプログラマブルネットワーク処理部３２（ＦＰＧＡ）の何れかで表す例を示した。
【００７９】
コア数１０４と、利用コア数１０５は、当該ネットワーク処理リソースが有する処理部の数と、現在利用されている処理部の数を示す。ネットワークソフトウェア実行部３１（ＣＰＵ）の場合、処理部５９は例えばＶＭで構成され、ＦＰＧＡの場合、処理部６２はＦＰＧＡ内に形成される処理ブロックである。
【００８０】
コアあたりの性能１０６は、当該ネットワーク処理リソースの処理部５９、６２の１つあたりが提供する最大処理性能である。本実施例１で、ネットワークソフトウェア実行部３１とプログラマブルネットワーク処理部３２の種類が１つずつしかない場合など、コア種別１０３によってコアあたりの性能１０６が一意に決まる場合は、コア種別１０３に格納された種別によって、コア数１０４の数に基づいて、カード１つあたりの最大処理性能をコア管理部７３等で決定することができる。図示の例では、コアあたりの性能１０６として、単位時間で処理可能なビット数（ｂｐｓ）で表す例示したが、これに限定されるものではない。他にも収容可能なパケットアドレスの数などがある。
【００８１】
コア資源管理データベース８１のコア数１０４及び利用コア数１０５は、利用状況監視部７２が所定のタイミングで通信装置３０の装置コントローラ３４から取得した値が設定される。また、コア種別１０３やコアあたりの性能１０６は、管理者などが予め設定した値である。
【００８２】
次に、コア機能管理データベース８２には、ネットワーク処理リソースの処理部５９、６２ごとに実行するネットワーク処理機能が格納される。図６は、コア機能管理データベース８２の一例を示す図である。
【００８３】
コア機能管理データベース８２は、通信装置３０の識別子を格納する装置ＩＤ８２１と、通信装置３０内のカードの識別子を格納するカードＩＤ８２２と、処理部５９、６２の識別子を格納するコアＩＤ１１１と、当該コアＩＤ１１１に割り当てた機能を格納する処理機能１１２と、当該コアＩＤ１１１の稼働状態を格納する状態１１３からひとつのエントリが構成される。
【００８４】
装置ＩＤ８２１とカードＩＤ８２２は、コア資源管理データベース８１と同じく、ネットワーク処理リソースの物理的な位置を示す装置ＩＤと、カードＩＤである。コアＩＤ１１１は、ネットワーク処理リソースを構成する処理部５９、６２の識別子である。
【００８５】
処理機能１１２は、各処理部５９、６２にインストールまたは設定されたネットワーク処理機能の識別子が格納される。図中ＥＰＣ（Ｅｖｏｌｖｅｄ  Ｐａｃｋｅｔ  Ｃｏｒｅ）は、コアネットワークの処理機能を示し、ＤＰＩ（Ｄｅｅｐ  Ｐａｃｋｅｔ  Ｉｎｓｐｅｃｔｉｏｎ）は、パケットの内容を参照して、フィルタリングなどの処理を決定する処理機能を示し、「未使用」は該処理部に処理機能が割り当てられていないことを示す。また、処理機能１１２は、モジュール管理部７４が処理部５９、６２にインストールまたは設定した機能（モジュールプログラム）が格納される。
【００８６】
状態１１３は、各処理部５９、６２にインストールされたネットワーク処理機能の状態を示す。「インストール中」は、割り当てた機能がまだインストール中（または設定中）であることを示し、「有効」は割り当てた機能が利用されていることを示し、「無効」は割り当てた機能が利用されていないことを示す。
【００８７】
処理機能グループ管理データベース８３には、通信装置３０のネットワーク処理機能ごとの処理性能や使用中のネットワーク処理リソースなどの情報が格納される。図７は、処理機能グループ管理データベース８３の一例を示す図である。
【００８８】
処理機能グループ管理データベース８３は、通信装置３０の識別子を格納する装置ＩＤ８３１と、通信装置３０内に割り当てられた処理機能の識別子（または名称）を格納する処理機能８３２と、使用中の処理部５９、６２の数を格納する利用コア数１２２と、処理を実行中の処理部の識別子を格納する処理コアＩＤ１２３と、当該処理部で利用可能な性能を格納する利用可能帯域１２４と、当該処理部が使用中の性能を格納する利用帯域１２５と、プログラマブルネットワーク処理部３２による処理の有効または無効を示すハードアシスト状態１２６と、処理性能の向上を決定する閾値を格納するスケールアウト閾値１２７と、処理性能の縮小を決定する閾値を格納するスケールイン閾値１２８と、処理コア種別をネットワークソフトウェア実行部３１からプログラマブルネットワーク処理部３２に変更する閾値を格納するハードアシスト有効化閾値１２９と、処理コアの種別をプログラマブルネットワーク処理部３２からネットワークソフトウェア実行部３１に変更する閾値を格納するハードアシスト無効化閾値１３０と、からひとつのエントリが構成される。
【００８９】
処理機能グループ管理データベース８３は、通信装置３０の識別子ごとにネットワーク処理機能を管理するものである。装置ＩＤ８３１の識別子は、コア機能管理データベース８２のカードＩＤ８２２と同様である。利用コア数１２２には、ネットワーク処理機能８３２に割り当てられた処理部の数が示され、処理コアＩＤ１２３には処理部の識別子が格納される。
【００９０】
利用可能帯域１２４には、当該処理部５９、６２で処理可能な最大の性能（帯域）が利用可能帯域として格納される。利用帯域１２５には、実際に使用されている帯域が使用帯域として格納される。なお、利用可能帯域１２４や各閾値１２７〜１３０は、予め設定した値を設定すればよい。また、利用コア数１２２、処理コアＩＤ１２３、利用帯域１２５、ハードアシスト状態１２６は、利用状況監視部７２が所定のタイミングで取得した値を格納する。
【００９１】
ハードアシスト状態１２６は、ネットワーク処理リソースをネットワークソフトウェア実行部３１（ＣＰＵ）からプログラマブルネットワーク処理部３２（ＦＰＧＡ＝ハードウェア）に変更しているか否かを示す。
【００９２】
ハードアシスト状態１２６が「有効」であれば、ＦＰＧＡ等のハードウェアで処理を実行するプログラマブルネットワーク処理部３２が使用されていることを示す。ハードアシスト状態１２６「無効」であれば、ハードアシストが実行されていない状態であり、ネットワーク処理リソースにネットワークソフトウェア実行部３１が使用されていることを示す。
【００９３】
スケールアウト閾値１２７には、利用帯域１２５が利用可能帯域１２４の何％に達すると処理部を追加するかを決定する値がスケールアウト閾値として格納される。スケールイン閾値１２８には、利用帯域１２５が利用可能帯域１２４の何％を下回ると処理部を減らすかがスケールイン閾値として格納される。
【００９４】
ハードアシスト有効化閾値１２９には、利用帯域が増大したときにハードアシストを実行することを決定する閾値が、ハードアシスト有効化閾値として格納される。ハードアシスト無効化閾値１３０には、利用帯域が低下したときにハードアシストを解除することを決定する閾値がハードアシスト無効化閾値として格納される。
【００９５】
モジュールデータベース８４には、ネットワーク処理リソースにインストールされるネットワーク処理機能についてモジュールプログラムの種類や格納場所が格納される。
【００９６】
図８は、モジュールデータベース８４の一例を示す図である。モジュールデータベース８４には、管理者などが予め設定した値が格納される。
【００９７】
モジュールデータベース８４は、カードの種類を示すモジュール種別１３１と、当該モジュールプログラムに割り当てた機能を格納する処理機能１３２と、当該モジュールプログラムを格納する形式１３３と、機能を供するための実行プログラムやソースコードなどの名称が格納されるファイル名１３４と、からひとつのエントリが構成される。
【００９８】
モジュール種別１３１には、ＣＰＵ（ネットワークソフトウェア実行部３１）またはＦＰＧＡ（プログラマブルネットワーク処理部３２）などカードで実行されるモジュールプログラムの種別が格納される。
【００９９】
処理機能１３２には、モジュールプログラムが提供するネットワーク処理機能の識別子が格納される。形式１３３には、モジュールプログラムが実行プログラムか、バイナリコードか、ソースコードかといったモジュールプログラムの形式が格納される。ファイル名１３４には、モジュールプログラムの格納場所を示すファイル名が記載される。ファイル名が示す格納場所にモジュールプログラムが保存される。
【０１００】
なお、ネットワーク管理サーバ２０は、ソースコードから実行プログラムを生成するコンパイラを有することができる。この場合、モジュールデータベース８４にはモジュールプログラムではなくソースコードが格納され、ソースコードから一部の機能を抽出したり、複数のソースコードを結合するなどしてからコンパイルすることで、所望の実行プログラムをカードに提供することができる。また、管理者などがソースコードを編集した後にコンパイルして所望の実行プログラムをカードに提供することも可能となる。
【０１０１】
次に、コアコスト管理データベース２３１は、コア資源管理データベース８１を補足するテーブルであり、ネットワーク処理実行リソースの価格（利用料金）に関する情報が格納される。
【０１０２】
図１０は、コアコスト管理データベース２３１の一例を示す図である。コアコスト管理データベース２３１は、通信装置３０の識別子を格納する装置ＩＤ２３１１と、通信装置３０内のカードの識別子を格納するカードＩＤ２３１２と、当該カードの導入価格を格納する初期コスト２４１と、当該カードのひとつの処理部５９、６２当たりの利用価格を格納するコアあたりのコスト２４２と、からひとつのエントリが構成される。なお、これらの値は、管理者などが予め設定した値である。
【０１０３】
装置ＩＤ２３１１とカードＩＤ２３１２は、コア資源管理データベース８１と同様である。初期コスト２４１には、各カードを導入（増設）するための価格が格納される。また、コアあたりのコスト２４２には、処理部５９、６２を１つ利用するための価格（運用コスト）が格納される。
【０１０４】
＜振り分けテーブル＞
どの処理機能１１２がいずれの処理部５９、６２で実行されるかは処理機能グループ管理データベース８３で管理される。これに基づいて各処理機能１１２で処理されるパケットが決められた処理部５９、６２に転送されるように、通信装置３０のパケット振り分け部３３の振り分けテーブル５７１と、ネットワークソフトウェア実行部３１のパケット振り分け部１５８、プログラマブルネットワーク処理部３２のパケット振り分け部２５８の振り分けテーブルが設定される。
【０１０５】
振り分けには、ＭＡＣアドレスやＩＰアドレス、ＩＰヘッダ内に格納されるサービス種別やプロトコル種別など様々なものが利用できる。例えば、サービス種別がＴＣＰでＩＰアドレスの上位８ｂｉｔが１２３のパケットを通信装置３０−１のソフトウェア実行部３１−１に転送するようにパケット振り分け部３３の振り分けテーブルに設定し、さらにＩＰアドレスの下位８ｂｉｔが０〜１２７のパケットを処理部５９−１、１２８〜２５５のパケットを処理部５９−２に転送するようにパケット振り分け部１５８の振り分けテーブルに設定する。他にも様々な組合せを各振り分けテーブルに設定することができる。
【０１０６】
この振り分けテーブル２３３は管理者などが保守端末２１を使って設定する他、ネットワークを流れる制御パケットを装置コントローラ３４が監視し、その制御パケットの情報に基づいて設定される。
【０１０７】
上記により、各通信装置３０毎にパケット処理部５７は振り分けテーブル５７１を参照して、パケットの内容に応じたカードにパケットを振り分ける。そして、各カードのパケット振り分け部１５８、２５８は、パケットの内容に応じて自カード内の処理部５９、６２へパケットを振り分ける。各パケット振り分け部３３、１５８、２５８は、１つのパケットに複数の宛先が割り当てられている場合には到着順にパケットを振り分ける。
【０１０８】
これらパケット振り分け部３３、１５８、２５８の振り分けテーブルは、ネットワーク管理サーバ２０の振り分けテーブル２３３で管理され、変更があった際には、該当の通信装置３０の装置コントローラ３４に管理サーバ２０のコア管理部７３から振り分けテーブルの変更が通知される。例えば、処理部５９、６２やカードのスケールアウトやスケールインを行う度に、各振り分けテーブル２３３は更新され、パケット振り分け部３３の振り分けテーブル５７１と、パケット振り分け部１５８、２５８の各振り分けテーブルが更新される。
【０１０９】
本実施例では、パケット振り分け部３３、１５８、２５８の振り分けテーブルを管理サーバ２０の振り分けテーブル２３３で一元管理しているが、管理サーバ２０において振り分けテーブル２３３を無くし、処理機能グループ管理データベース８３と各処理機能で処理すべきパケットの情報（ＭＡＣアドレスやＩＰアドレスなど）を通信装置３０の装置コントローラ３４に通知してもよい。この場合、装置コントローラ３４がパケット振り分け部３３、１５８、２５８の振り分けテーブルを生成する。
【０１１０】
＜ネットワーク処理リソースの制御＞
図９Ａ、図９Ｂは、ネットワーク管理サーバ２０のネットワーク処理部１７１（利用状況監視部７２、コア管理部７３、モジュール管理部７４）で行われる処理の一例を示すフローチャートである。この処理は、所定の周期で実行される。
【０１１１】
まず初めに、ステップ２１１では、利用状況監視部７２が、通信装置制御インタフェース９１を介して各通信装置３０の装置コントローラ３４にアクセスし、各通信装置３０のネットワーク処理リソースが有する処理部５９、６２の利用帯域を取得する。この時、併せて稼働状態等の情報を全て取得してもよい。利用状況監視部７２は、取得した情報で処理機能グループ管理データベース８３を更新する。同時に、他の各データベース（コア資源管理データベース８１、コア機能管理データベース８２）を更新してもよい。
【０１１２】
そして、利用状況監視部７２は、処理機能グループ管理データベース８３にアクセスし、処理機能８３２に対応付けられた処理コアＩＤの処理部５９、６２の利用帯域を合算して、処理機能８３２に対応する利用帯域（稼働情報）１２５を更新する。そして、次のステップ２０１に処理が移る。
【０１１３】
ステップ２０１では、利用状況監視部７２は、処理機能グループ管理データベース８３のハードアシスト状態１２６を処理機能８３２ごとに読み込んで、「無効」と「有効」の何れかであるかを判定する。「無効」であればステップ２０２へ進み、「有効」であれば図９Ｂのステップ２０５の処理へ進む。
【０１１４】
ステップ２０２では、利用状況監視部７２が、処理機能グループ管理データベース８３を参照し、利用帯域１２５の値がハードアシスト有効化閾値１２９よりも大きければステップ２１２へ進み、それ以外はステップ２０３の処理に進む。
【０１１５】
ステップ２１２は、コア管理部７３が後述するようにハードアシスト処理を実施する。この処理によって、ネットワーク処理実行リソースがネットワークソフトウェア実行部３１からプログラマブルネットワーク処理部３２に変更される。ネットワーク処理部１７１は、ハードアシスト処理が完了すると処理を終了する。
【０１１６】
ステップ２０３では、利用状況監視部７２が、処理機能グループ管理データベース８３を参照し、利用帯域１２５がスケールアウト閾値１２７よりも大きければステップ２１３、それ以外はステップ２０４に処理を移す。
【０１１７】
ステップ２１３では、後述するようにコア管理部７３が、ソフトスケールアウト処理を実施する。この処理により、ネットワーク処理に用いられるネットワークソフトウェア実行部３１の数が増大する。ネットワーク処理部１７１は、スケールアウト処理が完了すると処理を終了する。
【０１１８】
ステップ２０４では、利用状況監視部７２が、処理機能グループ管理データベース８３を参照し、利用帯域１２５がスケールイン閾値１２８よりも小さければステップ２１４へ進み、それ以外であればここまでの一連の処理を終了する。
【０１１９】
ステップ２１４は、後述するようにコア管理部７３が、ソフトスケールイン処理を実施する。この処理により、ネットワーク処理に用いられるネットワークソフトウェア実行部３１の数が減少される。ネットワーク処理部１７１は、スケールイン処理が完了すると処理を終了する。
【０１２０】
一方、ステップ２０１の判定結果が有効の場合の分岐先である図９Ｂのステップ２０５では、利用状況監視部７２が、処理機能グループ管理データベース８３を参照し、利用帯域１２５がハードアシスト無効化閾値１３０よりも小さければステップ２１５へ進み、それ以外はステップ２０６に処理を移す。
【０１２１】
ステップ２１５は、後述するようにコア管理部７３が、ハードアシスト解除処理を実施する。この処理によって、ネットワーク処理実行リソースをプログラマブルネットワーク処理部３２からネットワークソフトウェア実行部３１に変更する。ネットワーク処理部１７１は、ハードアシスト解除処理が完了すると処理を終了する。
【０１２２】
ステップ２０６では、利用状況監視部７２が、処理機能グループ管理データベース８３を参照し、利用帯域１２５がスケールアウト閾値１２７よりも大きければステップ２１６へ進み、それ以外はステップ２０７に処理を移す。
【０１２３】
ステップ２１６は、後述するようにコア管理部７３が、ハードスケールアウト処理を実施する。この処理により、ネットワーク処理に用いられるプログラマブルネットワーク処理部３２の数が増加される。
【０１２４】
ステップ２０７では、利用状況監視部７２が処理機能グループ管理データベース８３を参照し、利用帯域１２５がスケールイン閾値１２８よりも小さければステップ２１７へ進み、それ以外であればここまでの一連の処理を終了する。
【０１２５】
ステップ２１７は、後述するようにコア管理部７３が、ハードスケールイン処理を実施する。この処理により、ネットワーク処理に用いられるプログラマブルネットワーク処理部３２の数が減少される。
【０１２６】
以上の処理によって、各処理部５９、６２の利用帯域１２５の値の変化によって、スケールアウトとスケールインまたはハードアシストの有効と無効が動的に変更される。
【０１２７】
＜ハードアシスト処理＞
以下に、図９Ａのステップ２１２で行われるハードアシスト処理の詳細な例を説明する。
【０１２８】
まず、コア管理部７３が、コア資源管理データベース８１にアクセスし、コア種別１０３が「ＦＰＧＡ」で、且つコア数１０４が利用コア数１０５より大きいカードＩＤ１０２のプログラマブルネットワーク処理部３２を１つ選択して「アシストカード」とする。すなわち、図９Ａのステップ２０２で利用帯域１２５を比較したネットワークソフトウェア実行部３１の処理をオフロードするカードとして、プログラマブルネットワーク処理部３２を「アシストカード」として選択する。
【０１２９】
コア管理部７３は、カードＩＤ１０２を選択した「アシストカード」のエントリの利用コア数１０５の値に１を加算し、コア資源管理データベース８１を更新する。そして、コア管理部７３は、コア機能管理データベース８２にアクセスし、「アシストカード」のカードＩＤに該当するカードＩＤ８２２を選択する。コア管理部７３は、選択したカードＩＤ８２２が有するコアＩＤ１１１の中から状態１１３が「無効」となっているエントリの処理部６２を１つ「アシストコア」として選択する。
【０１３０】
次に、コア管理部７３は、コア機能管理データベース８２の現在選択中のエントリの処理機能１１２に、処理機能グループ管理データベース８３の処理機能８３２と同じネットワーク処理機能の識別子（名称）を上書きする。すなわち、処理をオフロードするネットワークソフトウェア実行部３１の処理部５９に割り当てていた機能を、コア機能管理データベース８２の「アシストカード」のエントリの処理機能１１２に設定する。そして、コア管理部７３は、現在選択中のコア機能管理データベース８２のエントリの状態１１３を「インストール中」に更新する。
【０１３１】
次に、モジュール管理部７４が、モジュールデータベース８４を参照し、モジュール種別１３１が「ＦＰＧＡ」で、且つ処理機能１３２が「アシストコア」にインストールされる処理機能であるモジュールプログラム（ネットワーク処理回路レイアウト）を、ファイル名１３４が示す格納場所から取得する。ただし、当該モジュールプログラムの形式１３３がソースコードやバイナリコードの場合、モジュール管理部７４はコンパイラなどを用いて実行プログラムに変換する。そして、モジュール管理部７４は、通信装置制御インタフェース９１を介して選択したモジュールプログラムを上記選択した「アシストコア」にインストールする指令と、実行プログラムを送信する。
【０１３２】
次に、コア管理部７３が、処理をオフロードする「アシストコア」の追加前から利用されているネットワークソフトウェア実行部３１の処理部（「被アシストコア」とする）の設定テーブル等を「アシストコア」に引き継がせる。
【０１３３】
「被アシストコア」の処理部５９の処理を「アシストコア」の処理部６２に引き継がせる手法としては、公知または周知の技術を適用すればよい。例えば、コア管理部７３が「被アシストコア」と「アシストコア」を管理する装置コントローラ３４にアクセスし、カードコントローラ１６１から「被アシストコア」の設定テーブル（図示省略）を読み出す指令を送信する。装置コントローラ３４はカードコントローラ１６１から取得した設定テーブルの内容をコア管理部７３に送信する。
【０１３４】
コア管理部７３は、装置コントローラ３４から受信した「被アシストコア」の設定テーブルの内容を「アシストコア」を管理するカードコントローラ２６１に通知することで、「アシストコア」の設定テーブルの内容を「被アシストコア」の設定テーブルの内容に同期させて、処理を引き継がせる。
【０１３５】
次に、処理を引き継ぐ「アシストコア」にパケットが転送されるようにパケット処理部５７の振り分けテーブル５７１と、パケット振り分け部１５８、２５８の振り分けテーブル１６２を変更する。以上の処理により、ネットワーク処理実行リソースがネットワークソフトウェア実行部３１の「被アシストコア」からプログラマブルネットワーク処理部３２の「アシストコア」に移行する。
【０１３６】
最後に、コア管理部７３が、コア機能管理データベース８２にアクセスし、「アシストコア」のエントリで状態１１３を「有効」に変更する。また、コア管理部７３は、「被アシストコア」のエントリで状態１１３を「無効」に変更し、カードコントローラ２６１に「被アシストコア」の設定テーブルを削除させる。
【０１３７】
さらに、コア管理部７３は、コア機能管理データベース８２にアクセスし、各カードで状態１１３が「有効」な処理部５９、６２の数を再度カウントしてコア資源管理データベース８１の利用コア数１０５を更新する。また、コア管理部７３は、処理機能グループ管理データベース８３にアクセスし、「アシストコア」の処理コアＩＤ１２３に対応するエントリでハードアシスト状態１２６を「有効」にする。
【０１３８】
また、コア管理部７３は、処理機能グループ管理データベース８３の現エントリで「被アシストコア」に対応する処理部５９のＩＤを処理コアＩＤ１２３から削除し、「アシストコア」の処理部６２のＩＤを追加する。
【０１３９】
そして、コア管理部７３は、処理機能グループ管理データベース８３の現エントリで利用コア数１２２を「１」に設定する。また、コア管理部７３は、利用可能帯域１２４を処理コアＩＤ１２３に基づいて変更する。なお、「アシストコア」の利用可能帯域１２４は、コア資源管理データベース８１のコアあたりの性能１０６を参照すればよい。
【０１４０】
以上の処理により、ネットワーク管理サーバ２０の各データベースにおいても、「被アシストコア」から「アシストコア」へのネットワーク処理実行リソースの移動が完了する。
【０１４１】
以上の処理により、ネットワークソフトウェア実行部３１の「被アシストコア」で行われていたネットワーク処理を、ＦＰＧＡを主体とするプログラマブルネットワーク処理部３２の「アシストコア」へ移動して、ネットワーク処理の高速化を図ることができる。
【０１４２】
この例では、全ての「被アシストコア」のネットワーク処理を１つの「アシストコア」に移すこととした。ハードアシスト処理時の通信断期間を抑えるためには、コアあたりの性能１０６がハードアシスト閾値よりも大きなカードを「ハードアシストコア」、その処理部６２を「アシストコア」として選択する必要がある。この必要条件を「ハードアシストコア」、「アシストコア」の選択条件に加えてもよい。
【０１４３】
また、１つの処理部６２では性能が不足する場合には、複数の処理部６２を同時に「アシストコア」として選択するようにしてもよい。
【０１４４】
また、ハードアシスト処理で「アシストカード」を選択する際、処理機能グループ管理データベース８３で各処理機能８３２の最大利用帯域も管理し、この最大利用帯域の値を収容可能であることを「アシストカード」として選択されるカードの条件に加えてもよい。
【０１４５】
また、「アシストカード」の未使用の処理部６２を予約する機能をもたせてもよい。これにより、他の処理機能８３２によって「アシストカード」の未使用の処理部６２を使用されないようにすることができる。これらにより、さらに利用帯域が増加した際にも同じ「アシストカード」の他の処理部６２に処理を移すこと（ハードスケールアウト処理）ができる。
【０１４６】
＜ソフトスケールアウト処理＞
以下に、図９Ａのステップ２１３で行われるソフトスケールアウト処理の詳細な例を説明する。
【０１４７】
まず、コア管理部７３が、コア資源管理データベース８１にアクセスし、コア種別１０３が「ＣＰＵ」で、且つコア数１０４が利用コア数１０５より大きいカードＩＤ１０２のネットワークソフトウェア実行部３１を１つ選択して「追加カード」とする。すなわち、図９Ａのステップ２０２で利用帯域１２５を閾値と比較したネットワークソフトウェア実行部３１の処理を分散するカードとして、ネットワークソフトウェア実行部３１を「追加カード」として選択する。ただし、「追加カード」としては現在使用中のネットワークソフトウェア実行部３１を優先する。
【０１４８】
コア管理部７３は、「追加カード」として選択したカードＩＤ１０２のエントリの利用コア数１０５の値に１を加算し、コア資源管理データベース８１を更新する。
【０１４９】
そして、コア管理部７３は、コア機能管理データベース８２にアクセスし、「追加カード」のカードＩＤに該当するエントリで、ネットワークソフトウェア実行部３１が有する処理部５９の中から状態１１３が「無効」となっている処理部５９を１つ「追加コア」として選択する。
【０１５０】
さらに  コア管理部７３は、「追加コア」を選択したエントリで処理機能１１２に、処理機能グループ管理データベース８３の処理機能１２１と同じネットワーク処理機能の識別子（名称）を上書きする。すなわち、処理を分散するネットワークソフトウェア実行部３１の処理部５９に割り当てた機能を、コア機能管理データベース８２の「追加コア」のエントリの処理機能１１２に設定する。そして、コア管理部７３は、現在選択中のコア機能管理データベース８２のエントリの状態１１３を「インストール中」に変更する。
【０１５１】
次に、モジュール管理部７４が、モジュールデータベース８４を参照し、モジュール種別１３１が「ＣＰＵ」で、且つ処理機能１３２が「追加コア」にインストールされる処理機能であるモジュールプログラムを、ファイル名１３４が示す格納場所から取得する。ただし、当該モジュールプログラムの形式１３３がソースコードやバイナリコードの場合、モジュール管理部７４はコンパイラなどを用いて実行プログラムに変換する。そして、モジュール管理部７４は、通信装置制御インタフェース９１を介して、上記選択したモジュールプログラムを「追加コア」にインストールする指令と、実行プログラムを送信する。
【０１５２】
次に、コア管理部７３が、処理を分散する「追加コア」の追加前から利用されているネットワークソフトウェア実行部３１の処理部（「保持コア」とする）の設定テーブルの内容の一部を「追加コア」に引き継がせ、「保持コア」にかかる負荷を削減する。「保持コア」の処理部５９の処理の一部を「追加コア」の処理部５９に引き継がせる手法としては、公知または周知の技術を適用すればよい。例えば、コア管理部７３が「保持コア」と「追加コア」を管理する装置コントローラ３４にアクセスし、カードコントローラ１６１から「保持コア」の設定テーブル（図示省略）を読み出す指令を送信する。装置コントローラ３４はカードコントローラ１６１から取得した設定テーブルの内容をコア管理部７３に送信する。
【０１５３】
コア管理部７３は、装置コントローラ３４から受信した「保持コア」の設定テーブルの一部を「追加コア」を管理するカードコントローラ１６１に通知することで、「保持コア」の設定テーブルの内容を「追加コア」の設定テーブルに移動させて、処理を引き継がせる。
【０１５４】
次に、処理の一部を引き継ぐ「追加コア」にパケットが転送されるようにパケット処理部５７の振り分けテーブル５７１と、パケット振り分け部１５８の振り分けテーブル１６２を変更する。以上の処理により、ネットワークソフトウェア実行部３１のネットワーク処理実行リソースに「追加コア」が加えられる。
【０１５５】
最後に、コア管理部７３が、コア資源管理データベース８１にアクセスし、「追加コア」のエントリで状態１１３を「有効」に変更する。さらに、コア管理部７３は、コア機能管理データベース８２にアクセスし、各カードで状態１１３が「有効」な処理部５９の数を再度カウントして、コア資源管理データベース８１の利用コア数１０５を更新する。
【０１５６】
また、コア管理部７３は、処理機能グループ管理データベース８３にアクセスし、処理コアＩＤ１２３に「追加コア」の識別子を追加する。そして、コア管理部７３は、当該エントリで利用コア数１２２に１を加算して更新する。また、コア管理部７３は、利用可能帯域１２４を処理コアＩＤ１２３に基づいて変更する。なお、「追加コア」の利用可能帯域１２４は、コア資源管理データベース８１のコアあたりの性能１０６を参照すればよい。
【０１５７】
以上の処理により、ネットワーク管理サーバ２０の各データベースにおいても、ネットワーク処理実行リソースに「保持コア」の処理の一部を負担するネットワークソフトウェア実行部３１として「追加コア」が追加される。
【０１５８】
以上の処理により、ネットワークソフトウェア実行部３１で行われていたネットワーク処理を、新たに追加した「追加コア」で分散して処理することにより、高価なＦＰＧＡを含むプログラマブルネットワーク処理部３２を用いずに、ネットワーク処理の高速化を図ることができる。
【０１５９】
＜ソフトスケールイン処理＞
以下に、図９Ａのステップ２１４で行われるソフトスケールイン処理の詳細な例を説明する。この処理は、ＣＰＵ３１０でネットワークソフトウェアを実行するネットワークソフトウェア実行部３１の処理部５９を縮退する処理である。
【０１６０】
まず、コア管理部７３が、処理機能グループ管理データベース８３にアクセスし、該当するネットワーク処理を実行している処理部５９から削除する１つの処理部（「削除コア」とする）を処理コアＩＤ１２３から選択する。また、コア管理部７３は、「削除コア」で行っていた処理を引き継ぐ処理部（「保持コア」とする）を、同一の処理機能８３２内の処理コアＩＤ１２３から選択する。
【０１６１】
次に、コア管理部７３が、「削除コア」の設定テーブル（図示省略）の内容を「保持コア」の処理部５９の設定テーブルに引き継がせる。「削除コア」の処理部５９の処理を「保持コア」の処理部５９に引き継がせる手法としては、公知または周知の技術を適用すればよい。例えば、コア管理部７３が「削除コア」と「保持コア」を管理する装置コントローラ３４にアクセスし、カードコントローラ１６１から「削除コア」の設定テーブル（図示省略）を読み出す指令を送信する。装置コントローラ３４はカードコントローラ１６１から取得した設定テーブルの内容をコア管理部７３に送信する。
【０１６２】
コア管理部７３は、装置コントローラ３４から受信した「削除コア」の設定テーブルの内容を「保持コア」を管理するカードコントローラ１６１に通知することで、「削除コア」の設定テーブルの内容を「保持コア」の設定テーブルに移動させて、処理を引き継がせる。
【０１６３】
次に、「削除コア」に転送されていたパケットが「保持コア」に転送されるようにパケット処理部５７の振り分けテーブル５７１と、パケット振り分け部１５８の振り分けテーブル１６２を変更する。以上の処理により、ネットワークソフトウェア実行部３１のネットワーク処理実行リソースから「削除コア」が削除される。
【０１６４】
最後に、コア管理部７３が、コア機能管理データベース８２にアクセスし、「削除コア」の状態１１３を「無効」に変更する。さらに、コア管理部７３は、コア機能管理データベース８２にアクセスし、各カードの状態１１３が「有効」な処理部５９の数を再度カウントして、コア資源管理データベース８１の利用コア数１０５を更新する。
【０１６５】
また、コア管理部７３は、処理機能グループ管理データベース８３にアクセスし、処理コアＩＤ１２３から「削除コア」のＩＤを削除する。そして、コア管理部７３は、当該エントリの利用コア数１２２から１を減算して更新する。また、コア管理部７３は、当該エントリの利用可能帯域１２４を処理コアＩＤ１２３に基づいて更新する。なお、「削除コア」の利用可能帯域１２４は、コア資源管理データベース８１のコアあたりの性能１０６を参照すればよい。
【０１６６】
以上の処理により、ネットワーク管理サーバ２０の各データベースにおいても、ネットワークソフトウェア実行部３１のネットワーク処理実行リソースから「削除コア」が削除される。
【０１６７】
なお、ソフトスケールイン処理前に、処理機能グループ管理データベース８３の利用コア数１２２が１の場合、「保持コア」がなく、設定テーブルを「保持コア」に引き継げない。このため、削除コアの設定テーブルが完全に削除されていなければ、ソフトスケールイン処理を実行しないこととする。
【０１６８】
以上の処理により、ネットワークソフトウェア実行部３１から削除コアを削減することで、利用帯域に応じてネットワーク処理リソースを解放することができ、他のネットワーク処理に使用することが可能となる。
【０１６９】
＜ハードアシスト解除処理＞
以下に、図９Ｂのステップ２１５で行われるハードアシスト解除処理の詳細な例を説明する。
【０１７０】
まず、コア管理部７３は、処理機能グループ管理データベース８３を参照してハードアシストの解除対象の処理コアＩＤ１２３の利用帯域１２５を取得し、利用帯域の総和を算出する。
【０１７１】
そして、コア管理部７３が、コア資源管理データベース８１にアクセスし、コア種別１０３が「ＣＰＵ」で、且つコア数１０４が利用コア数１０５より必要数以上大きいカードＩＤ１０２のネットワークソフトウェア実行部３１を選択して「移譲先カード」とする。
【０１７２】
ここで、必要数とは、ハードアシストの解除対象のプログラマブルネットワーク処理部３２が処理している利用帯域１２５を、ネットワークソフトウェア実行部３１で処理するために必要な処理部５９の数である。
【０１７３】
コア管理部７３は、コア資源管理データベース８１の「移譲先カード」のエントリに対し、利用コア数１０５の値を移譲先として使用する処理部５９の数だけ増加させる。すなわち、コア管理部７３は、利用帯域の総和を満たす必要数だけ利用コア数１０５を増加する。
【０１７４】
そして、コア管理部７３は、コア機能管理データベース８２にアクセスし、「移譲先カード」に該当するカードＩＤ８２２のネットワークソフトウェア実行部３１が有するコアＩＤ１１１の中から状態１１３が「無効」となっている処理部５９を必要数だけ「移譲先コア」として選択する。
【０１７５】
さらに、コア管理部７３は、処理機能１１２に、処理機能グループ管理データベース８３でハードアシストの解除対象のエントリの処理機能１２１と同じネットワーク処理機能の識別子（名称）を上書きし、状態１１３を「インストール中」に変更する。
【０１７６】
次に、モジュール管理部７４が、モジュールデータベース８４を参照し、モジュール種別１３１が「ＣＰＵ」で、且つ処理機能１３２が「移譲先コア」にインストールされる処理機能であるモジュールプログラムを、「ファイル名」１３４が示す格納場所から選択する。ただし、当該モジュールプログラムの形式１３３がソースコードやバイナリコードの場合は、上述のコンパイラなどを用いて実行プログラムに変換する。なお、「移譲先コア」にインストールされる処理機能は、ハードアシストの解除対象のプログラマブルネットワーク処理部３２が実行していた処理に対応する。
【０１７７】
そして、モジュール管理部７４は、通信装置制御インタフェース９１を介して、選択したモジュールプログラムを上記選択した「移譲先コア」にインストールする指令と、実行プログラムを送信する。
【０１７８】
次に、コア管理部７３は、ハードアシストの解除対象のプログラマブルネットワーク処理部３２内の処理部（「移譲元コア」とする）の設定テーブルの内容を「移譲先コア」に引き継がせる。「委譲元コア」の処理部６２の処理を「移譲先コア」の処理部５９に引き継がせる手法としては、公知または周知の技術を適用すればよい。例えば、コア管理部７３が「移譲元コア」と「移譲先コア」を管理する装置コントローラ３４にアクセスし、カードコントローラ２６１から「委譲元コア」の設定テーブル（図示省略）を読み出す指令を送信する。装置コントローラ３４はカードコントローラ２６１から取得した設定テーブルの内容をコア管理部７３に送信する。
【０１７９】
コア管理部７３は、装置コントローラ３４から受信した「委譲元コア」の設定テーブルの内容を「移譲先コア」を管理するカードコントローラ１６１に通知することで、「委譲元コア」の設定テーブルの内容を「移譲先コア」の設定テーブルに同期させて、処理を引き継がせる。
【０１８０】
次に、処理を引き継ぐ「移譲先コア」にパケットが転送されるようにパケット処理部５７の振り分けテーブル５７１と、パケット振り分け部１５８、２５８の振り分けテーブル１６２を変更する。
【０１８１】
以上の処理により、ネットワーク処理実行リソースがプログラマブルネットワーク処理部３２の「移譲元コア」からネットワークソフトウェア実行部３１の「移譲先コア」に移動して、ハードアシストが解除される。
【０１８２】
最後に、コア管理部７３が、コア機能管理データベース８２にアクセスし、「移譲先コア」のエントリで状態１１３を「有効」に変更する。また、コア管理部７３は「移譲元コア」のエントリで状態１１３を「無効」に変更する。
【０１８３】
さらに、コア管理部７３は、コア機能管理データベース８２にアクセスし、各カードで状態１１３が「有効」な処理部５９、６２の数を再度カウントして、コア資源管理データベース８１の利用コア数１０５の値を更新する。また、コア管理部７３は、処理機能グループ管理データベース８３にアクセスし、「委譲元コア」に対応するハードアシスト状態の１２６を「無効」に更新する。
【０１８４】
さらに、コア管理部７３は、処理機能グループ管理データベース８３で「移譲元コア」のエントリで処理コアＩＤ１２３を削除し、「移譲先コア」のエントリを追加する。そして、コア管理部７３は、処理機能グループ管理データベース８３の「移譲先コア」のエントリで、利用コア数１２２を「移譲先コア」の数に変更する。また、コア管理部７３は、利用可能帯域１２４を処理コアＩＤ１２３に基づいて変更する。なお、「移譲先コア」の利用可能帯域１２４は、コア資源管理データベース８１のコアあたりの性能１０６から算出することができる。
【０１８５】
以上の処理により、ネットワーク管理サーバ２０の各データベースにおいても、「委譲元コア」から「移譲先コア」へのネットワーク処理実行リソースの移動が完了する。
【０１８６】
以上の処理により、プログラマブルネットワーク処理部３２のネットワーク処理を、ネットワークソフトウェア実行部３１へ移動することで、利用帯域に応じてネットワーク処理リソースを解放することができ、余剰となったプログラマブルネットワーク処理部３２を他のネットワーク処理に使用することが可能となる。
【０１８７】
なお、通常、「委譲先コア」の数は「委譲元コア」の数より多く、「委譲元コア」で処理するパケットは複数の「委譲先コア」に配分される。これは管理サーバ２０の振り分けテーブル２３３やぱっと処理部５７の振り分けテーブル５７１、パケット振り分け部１５８、２５８の振り分けテーブル１６２で管理される。パケットを到着順で複数の「委譲先コア」に配分する場合、「移動元コア」の設定テーブルは各「委譲先コア」にそのまま転写する。処理対象となるパケットのラベル（ＭＡＣアドレスやＩＰアドレスなど）を複数の「委譲先コア」で分割する場合、「委譲元コア」の設定テーブルはこの分割（振り分けテーブル）に即して分割され、各「委譲先コア」の設定テーブルとなる。
【０１８８】
この例では、全ての「委譲元コア」のネットワーク処理を１つの「委譲先カード」の「アシストコア」に移すこととした。しかし、１つのカードでは処理部５９の数が足りないこともある。その場合には、複数のネットワークソフトウェア実行部３１を同時に「委譲先カード」として選択するようにしてもよい。
【０１８９】
また、ハードアシスト解除処理で「委譲先カード」を選択する際、処理機能グループ管理データベース８３で管理されるハードアシスト有効化閾値１２９の処理量を収容可能であることを「委譲先カード」として選択されるカードの条件に加えてもよい。
【０１９０】
また、「委譲先カード」の未使用の処理部５９を予約する機能をもたせてもよい。これにより、他の処理機能８３２によって「委譲先カード」の未使用の処理部５９を使用されないようにすることができる。これらにより、さらに利用帯域が増加した際にも同じ「委譲先カード」の他の処理部５９に処理を移すこと（ソフトスケールアウト処理）ができる。
【０１９１】
＜ハードスケールアウト処理＞
以下に、図９Ｂのステップ２１６で行われるハードスケールアウト処理の詳細な例を説明する。
【０１９２】
まず、コア管理部７３が、コア資源管理データベース８１にアクセスし、コア種別１０３が「ＦＰＧＡ」で、且つコア数１０４が利用コア数１０５よりも大きいカードＩＤ１０２のプログラマブルネットワーク処理部３２（ＦＰＧＡ）を１つ選択して「追加カード」とする。すなわち、図９Ａのステップ２０２で利用帯域１２５を閾値と比較したカード（プログラマブルネットワーク処理部３２）の処理を分散してハードウェアのアシストをスケールアウトするカードとして、ＦＰＧＡで構成されたプログラマブルネットワーク処理部３２を「追加カード」として選択する。ただし、「追加カード」としては現在使用中のプログラマブルネットワーク処理部３２を優先する。
【０１９３】
コア管理部７３は、「追加カード」として選択したカードＩＤ１０２のエントリの利用コア数１０５の値に「１」を加算し、コア資源管理データベース８１を更新する。
【０１９４】
そして、コア管理部７３は、コア機能管理データベース８２にアクセスし、「追加カード」のカードＩＤに該当するカードＩＤ８２２のエントリで、プログラマブルネットワーク処理部３２が有する処理部６２の中から状態１１３が「無効」となっている処理部６２のコアＩＤ１１１を１つ「追加コア」として選択する。
【０１９５】
さらに、コア管理部７３は、「追加コア」を選択したエントリで処理機能１１２に、処理機能グループ管理データベース８３の処理機能１２１と同じネットワーク処理機能の識別子（名称）を上書きする。
【０１９６】
すなわち、処理を分散するプログラマブルネットワーク処理部３２の処理部６２に割り当てた機能を、コア機能管理データベース８２の「追加コア」のエントリの処理機能１１２に設定する。そして、コア管理部７３は、現在選択中のコア機能管理データベース８２のエントリの状態１１３を「インストール中」に変更する。
【０１９７】
次に、モジュール管理部７４が、モジュールデータベース８４を参照し、モジュール種別１３１が「ＦＰＧＡ」で、且つ処理機能１３２が「追加コア」にインストールされる処理機能であるモジュールプログラム（ネットワーク処理回路レイアウト）を、ファイル名１３４が示す格納場所から取得する。ただし、当該モジュールプログラムの形式１３３がソースコードやバイナリコードの場合、モジュール管理部７４はコンパイラなどを用いて実行プログラムに変換する。そして、モジュール管理部７４は、通信装置制御インタフェース９１を介して、上記選択したモジュールプログラムを「追加コア」にインストールする指令と、実行プログラムを送信する。
【０１９８】
次に、コア管理部７３が、処理を分散する「追加コア」の追加前から利用されているプログラマブルネットワーク処理部３２の処理部（「保持コア」とする）の設定テーブルの一部を「追加コア」に引き継がせ、「保持コア」にかかる負荷を削減する。「保持コア」の処理部６２の処理の一部を「追加コア」の処理部６２に引き継がせる手法としては、公知または周知の技術を適用すればよい。
【０１９９】
例えば、コア管理部７３が「保持コア」と「追加コア」を管理する装置コントローラ３４にアクセスし、カードコントローラ２６１から「保持コア」の設定テーブル（図示省略）を読み出す指令を送信する。装置コントローラ３４はカードコントローラ２６１から取得した設定テーブルの内容をコア管理部７３に送信する。
【０２００】
コア管理部７３は、装置コントローラ３４から受信した「保持コア」の設定テーブルの一部を「追加コア」を管理するカードコントローラ２６１に通知することで、「保持コア」の設定テーブルの内容を「追加コア」の設定テーブルに反映させて、処理を引き継がせる。
【０２０１】
次に、コア管理部７３は、「追加コア」にパケットが転送されるようにパケット処理部５７の振り分けテーブル５７１と、パケット振り分け部２５８の振り分けテーブル１６２を変更する。以上の処理により、プログラマブルネットワーク処理部３２のネットワーク処理実行リソースに「追加コア」が追加される。
【０２０２】
最後に、コア管理部７３が、コア機能管理データベース８２にアクセスし、「追加コア」のエントリで状態１１３を「有効」に変更する。さらに、コア管理部７３は、コア機能管理データベース８２にアクセスし、各カードの処理機能１１２が「有効」な処理部６２の数を再度カウントして、コア資源管理データベース８１の利用コア数１０５を更新する。
【０２０３】
また、コア管理部７３は、処理機能グループ管理データベース８３にアクセスし、処理コアＩＤ１２３に「追加コア」の識別子を追加する。そして、コア管理部７３は、当該エントリで利用コア数１２２に「１」を加算する。また、コア管理部７３は、利用可能帯域１２４を処理コアＩＤ１２３に基づいて変更する。なお、「追加コア」の利用可能帯域１２４は、コア資源管理データベース８１のコアあたりの性能１０６を参照すればよい。
【０２０４】
以上の処理により、ネットワーク管理サーバ２０のデータベースにおいても、ネットワーク処理実行リソースに、「保持コア」の処理の一部を負担するプログラマブルネットワーク処理部３２として「追加コア」が加えられる。
【０２０５】
以上の処理により、プログラマブルネットワーク処理部３２で行われていたネットワーク処理を、新たに追加した「追加コア」で分散して処理することにより、高速なＦＰＧＡを含むプログラマブルネットワーク処理部３２による処理量を増大して、利用帯域が増大した場合でもネットワーク処理の高速化を図ることができる。
【０２０６】
＜ハードスケールイン処理＞
以下に、図９Ｂのステップ２１７で行われるハードスケールイン処理の詳細な例を説明する。この処理は、ＦＰＧＡでパケットの処理を行うプログラマブルネットワーク処理部３２の処理部６２を縮退する処理である。
【０２０７】
まず、コア管理部７３は、処理機能グループ管理データベース８３にアクセスし、該当するネットワーク処理を実行する処理部６２から削除する１つ（「削除コア」とする）を処理コアＩＤ１２３から選択する。
【０２０８】
次に、コア管理部７３が、「削除コア」の設定テーブルの内容を他の処理部（「保持コア」とする）６２の設定テーブルに引き継がせる。「削除コア」の処理部６２の処理を「保持コア」の処理部６２に引き継がせる手法としては、公知または周知の技術を適用すればよい。例えば、コア管理部７３が「削除コア」と「保持コア」を管理する装置コントローラ３４にアクセスし、カードコントローラ２６１から「削除コア」の設定テーブル（図示省略）の内容を読み出す指令を送信する。装置コントローラ３４はカードコントローラ２６１から取得した設定テーブルの内容をコア管理部７３に送信する。
【０２０９】
コア管理部７３は、装置コントローラ３４から受信した「削除コア」の設定テーブルの内容を「保持コア」を管理するカードコントローラ２６１に通知することで、「削除コア」の設定テーブルの内容を「保持コア」の設定テーブルに移動させて、処理を引き継がせる。
【０２１０】
次に、「削除コア」に転送されていたパケットが「保持コア」に転送されるようにパケット処理部５７の振り分けテーブル５７１と、パケット振り分け部２５８の振り分けテーブル１６２を変更する。以上の処理により、プログラマブルネットワーク処理部３２のネットワーク処理実行リソースから「削除コア」が削除される。
【０２１１】
最後に、コア管理部７３が、コア機能管理データベース８２にアクセスし、「削除コア」の状態１１３を「無効」に変更する。さらに、コア管理部７３は、コア機能管理データベース８２にアクセスし、各カードで状態１１３が「有効」な処理部６２の数を再度カウントしてコア資源管理データベース８１の利用コア数１０５を更新する。
【０２１２】
また、コア管理部７３は、処理機能グループ管理データベース８３にアクセスし、処理コアＩＤ１２３から「削除コア」のＩＤを削除する。そして、コア管理部７３は、当該エントリの利用コア数１２２から１を減算して更新する。また、コア管理部７３は、当該エントリの利用可能帯域１２４を処理コアＩＤ１２３に基づいて更新する。なお、「削除コア」の利用可能帯域１２４は、コア資源管理データベース８１のコアあたりの性能１０６を参照すればよい。
【０２１３】
以上の処理により、ネットワーク管理サーバ２０の各データベースにおいても、プログラマブルネットワーク処理部３２のネットワーク処理実行リソースから「削除コア」が削除される。
【０２１４】
以上の処理により、プログラマブルネットワーク処理部３２のネットワーク処理を縮退させることで、利用帯域に応じてネットワーク処理リソースを解放することができ、余剰となったプログラマブルネットワーク処理部３２を他のネットワーク処理に使用することが可能となる。
【０２１５】
＜スケールアウト閾値およびスケールイン閾値＞
ソフトスケールアウト処理（２１３）またはハードスケールアウト処理（２１６）の判定で使用されるステップ２０３、ステップ２０６のスケールアウト閾値は、処理機能グループ管理データベース８３の利用可能帯域１２４にスケールアウト閾値１２７（％）を積算した値である。下記に計算式を示す。
【０２１６】
【数１】
2016220126.tif 000003
【０２１７】
一方、ステップ２０４、２０７のスケールイン閾値は、ソフトスケールイン処理（２１４）またはハードスケールイン処理（２１７）の後に残る「保持コア」の利用可能帯域１２４が基準となる。そのため、コア管理部７３は、「削除コア」と「保持コア」を予め決めておき、すべての「保持コア」の利用帯域１２５の総計にスケールイン閾値１２７（％）を積算した値をスケールインの閾値とする。下記に計算式を示す。
【０２１８】
【数２】
2016220126.tif 000004
【０２１９】
また、スケールイン閾値（％）はスケールアウト閾値（％）未満とする。これにより、スケールイン処理とスケールアウト処理が交互に実行されるのを防いで、ネットワーク処理実行リソースの過大な変動を防止できる。
【０２２０】
＜ハードアシスト有効化閾値およびハードアシスト無効化閾値＞
処理機能グループ管理データベース８３のハードアシスト有効化閾値１２９の値はハードアシスト無効化閾値１３０よりも大きな値に設定される。これにより、ハードアシスト処理（２１２）とハードアシスト解除処理（２１５）が交互に実行されるのを防いで、ネットワーク処理実行リソースの過大な変動を防止できる。
【０２２１】
なお、ハードアシスト有効化閾値１２９は、「アシストコア」の利用可能帯域１２４にスケールアウト閾値１２７（％）を積算した値よりも大きいと、「アシストコア」の帯域が不足していることとなり、ハードアシスト処理後すぐにハードスケールアウト処理が実施されることに注意されたい。
【０２２２】
＜ハードアシスト有効化閾値およびハードアシスト無効化閾値＞
ハードアシスト処理（２１２）やハードアシスト解除処理（２１５）によって、ネットワーク処理実行リソースをネットワークソフトウェア実行部３１とプログラマブルネットワーク処理部３２との間で切り替える際のハードアシスト有効化閾値１２９およびハードアシスト無効化閾値１３０は、管理者などが保守端末２１からネットワーク管理サーバ２０に設定することができる。
【０２２３】
本実施例１のネットワーク処理システムにおいては、ネットワーク管理サーバ２０がネットワーク処理実行リソースの状態とコストルールデータベース２３２として予め設定されたルールに基づき、ハードアシスト閾値（ハードアシスト有効化閾値１２９およびハードアシスト無効化閾値１３０）を設定する。
【０２２４】
以下、ネットワーク管理サーバ２０のコア管理部７３がハードアシスト閾値を決定する処理について説明する。
【０２２５】
本実施例１では、コストルールデータベース２３２に、ネットワーク処理システム導入時の価格を最小化することがルールとして記載されている場合を考える。この場合、ネットワークソフトウェア実行部３１とプログラマブルネットワーク処理部３２との利用可能帯域と価格の違いに着目して、コア管理部７３が、必要な利用帯域に対して使用するネットワーク処理実行リソースをネットワークソフトウェア実行部３１とプログラマブルネットワーク処理部３２とで切り替える。これにより、本実施例１では、ネットワーク処理システムの導入時の価格を最小化できる。なお、以下では説明を簡単にするために、コアコスト管理データベース２３１のコアあたりのコスト２４２を無視し、初期コスト２４１のみを価格として扱う。
【０２２６】
ネットワークソフトウェア実行部３１とプログラマブルネットワーク処理部３２には利用可能帯域と導入価格（初期コスト）に大きな違いがある。ネットワークソフトウェア実行部３１の処理部５９であるＣＰＵと、プログラマブルネットワーク処理部３２の処理部６２であるＦＰＧＡを比較すると、ＣＰＵは汎用性が高く安価だが利用可能帯域が小さい。反対にＦＰＧＡは汎用性が低く高価だが利用可能帯域が大きい。
【０２２７】
そのため、利用帯域の小さいネットワーク処理を実行する場合には、ＦＰＧＡよりＣＰＵを使用した方が安価なシステムになる。しかし、ネットワーク処理の利用帯域がまとまった大きさになると、ＣＰＵよりもＦＰＧＡを使用した方が安価になる。そこで、ハードアシスト閾値を、例えば下記の式で決定する。
【０２２８】
【数３】
2016220126.tif 000005
なお、上記Ｑｕｏｔｉｅｎｔは割り算の商を算出する関数である。
【０２２９】
例として、利用可能帯域と価格が３Ｇｂｐｓ、＄３，０００のＣＰＵと、利用可能帯域と価格が８０Ｇｂｐｓ、＄１０，０００のＦＰＧＡについて、利用可能帯域と価格の推移を図１１、図１２にそれぞれ示す。図１１は、ＣＰＵで処理を行う場合の価格（導入コスト）と利用可能帯域の関係を示すグラフである。図１２は、ＣＰＵとＦＰＧＡで処理を行う場合の価格（導入コスト）と利用可能帯域の関係を示すグラフである。
【０２３０】
両者を比較すると、利用帯域が９ＧｂｐｓまではＣＰＵのみを使用した方が安価だが、利用帯域が９Ｇｂｐｓを超えると４つのＣＰＵが必要で価格が＄１２，０００となり、ＦＰＧＡの１個の価格＄１０，０００を超えてしまう。
【０２３１】
この場合、コア管理部７３はハードアシスト閾値を９Ｇｂｐｓとし、利用帯域が９Ｇｂｐｓを超えるとネットワーク処理リソースをＣＰＵからＦＰＧＡに切り替える。
【０２３２】
また、管理部７３は、ハードアシスト閾値＝ハードアシスト有効化閾値１２９として設定し、ハードアシスト閾値×所定比率＝ハードアシスト無効化閾値１３０として設定する。例えば、ハードアシスト有効化閾値１２９を９Ｇｂｐｓに設定し、ハードアシスト有効化閾値１２９の８０％の値である７．２Ｇｂｐｓをハードアシスト無効化閾値１３０に設定する。
【０２３３】
なお、コア管理部７３は、利用帯域１２５がハードアシスト有効化閾値１２９を超えて、且つ、利用可能なプログラマブルネットワーク処理部３２が存在しない場合には、保守端末２１に警告を表示するようにしても良い。
【０２３４】
このように、ＣＰＵを処理の主体とするネットワークソフトウェア実行部３１の数を増やして並列化すれば処理速度を向上できるが、全体の価格（導入コスト）も上昇し、単位処理速度あたりの価格はＣＰＵの方がハードウェア（ＦＰＧＡ）より割高になってしまう。このため、ハードアシスト閾値でハードウェアによる処理を主体とするプログラマブルネットワーク処理部３２の利用に切り替えることで、ネットワーク処理システムの導入コストを抑制することが可能となる。
【０２３５】
また、ＣＰＵを処理の主体とするネットワークソフトウェア実行部３１の場合、ＣＰＵ３１０内の処理資源がスケジューリングによって複数のプロセスでシェアされるため、処理遅延が不確定で且つ変動する。その結果、瞬間的に極めて大きな遅延が発生することもある。このため、並列化したＣＰＵ（または処理部５９）間で遅延量が一致せず、パケットを異なるＣＰＵで処理すると順序の逆転が発生する場合がある。これに対して、ハードウェアで処理を行うプログラマブルネットワーク処理部３２では、処理の遅延が発生しにくく、利用帯域が増大してもパケットの処理順序が逆転するのを抑制することができる。
【０２３６】
このようなネットワークソフトウェア実行部３１（ＣＰＵ）とプログラマブルネットワーク処理部３２（ＦＰＧＡ）の差異を鑑みて、特定のサービスに対しては遅延の安定性が必要な場合、処理量が少なくても価格（導入コスト）を無視してプログラマブルネットワーク処理部３２（ＦＰＧＡ）を使用する。このようなルールもコストルールデータベース２３２の中で管理される。
【０２３７】
以上のように、本実施例１によれば、ネットワーク処理システムの規模に応じて最適なネットワーク処理のリソースが配置され、ネットワーク処理システムの成長に伴った設備投資が可能となる。特にネットワーク処理システムのスモールスタートに適しており、ネットワークソフトウェア実行部３１で初期投資を抑えつつ、ネットワーク処理システムの成長時にはハードウェア・アクセラレータであるプログラマブルネットワーク処理部３２に移行することができる。ハードウェア・アクセラレータへ移行した後もネットワークソフトウェア実行部３１が適宜活用され、設備投資の最小化を行うことができる。
【０２３８】
上記実施例１ではネットワーク処理リソースのコストとしてカードの価格を例に挙げたが、他にも消費電力などをコストとして利用することができ、価格と同様にハードアシスト有効化閾値１２９およびハードアシスト無効化閾値１３０の設定に利用することができる。
【０２３９】
また、価格と消費電力の双方を考慮してハードアシスト有効化閾値およびハードアシスト無効化閾値を設定してもよい。この場合、価格と消費電力のそれぞれに異なる重みをかけて合算し、これをコストとしてハードアシスト有効化閾値１２９およびハードアシスト無効化閾値１３０の設定に利用する。例えば、価格に２／＄を、消費電力に１／Ｗを重みとして積算したものを合算し、コストを示すパラメータとすればよい。これらの重み付けなどもコストルールデータベース２３２の中で管理される。
【０２４０】
これらのコストルールデータベース２３２は導入時に設定されるが、それ以降も本発明のシステムに変更がある際に見直される。すなわち、ＣＰＵやＦＰＧＡの価格の変更や、性能や価格の異なるＣＰＵやＦＰＧＡの追加、新しい処理機能の追加、利用者の変化などがあった際に、管理者や作業者によって保守端末２１を介してコストルールデータベース２３２が更新され、管理サーバ２０においてスケールアウト閾値、スケールイン閾値、ハードアシスト有効化閾値、ハードアシスト無効化閾値が再設定される。
【０２４１】
また、利用可能帯域と価格が異なる複数のＣＰＵ、もしくはＦＰＧＡがある場合には、それぞれ別種のネットワーク処理リソースとする。そして、各種ネットワーク処理リソース間でネットワーク処理を切り替えるための判定閾値を設定する。もしくは、ネットワーク処理に必要なネットワークの処理性能を元に予め移譲先のＦＰＧＡないしはＣＰＵを選択し、移譲先と移譲前のネットワーク処理リソースの間でハードアシスト有効化閾値およびハードアシスト無効化閾値を設定してもよい。
【０２４２】
図３に示したネットワークソフトウェア実行部３１の例では、処理部５９が複数のＶＭで構成される。一連のネットワーク処理を分割してこれらのＶＭにインストールする。これにより、細分化されたネットワーク処理をそれぞれ独立して実行し、設定できるようになる。その結果、ネットワーク処理を他のネットワーク処理リソースに移譲する際、移譲先に適したネットワーク処理のみを選択して移譲できるようになる。パケット振分け装置はＶＭからＶＭに転送されていたパケットを途中で移譲先のネットワーク処理リソースに転送すればよい。
【０２４３】
モバイルネットワークにおいては、ネットワーク処理がＣ−Ｐｌａｎｅ処理とＵ−Ｐｌａｎｅ処理の２つに大別される。Ｃ−Ｐｌａｎｅ処理はネットワーク管理用パケットの処理であり、処理容量は少ないが、信号の種類が多く、処理が煩雑である。このような処理はハードウェアで処理を行うプログラマブルネットワーク処理部３２には適さない。一方、Ｕ−Ｐｌａｎｅ処理はユーザパケットの処理であり、処理容量が大きいが、単純なルーティング処理である。このような処理はハードウェアによる処理に適している。そこで、Ｃ−Ｐｌａｎｅ処理とＵ−Ｐｌａｎｅ処理を別のＶＭにインストールしておけば、Ｕ−Ｐｌａｎｅ処理を行うＶＭのみをプログラマブルネットワーク処理部３２に移譲させるだけで、ネットワーク処理の負荷の増大に対応できる。
【実施例２】
【０２４４】
図１３は、本発明の第２の実施例を示し、プログラマブルネットワーク処理部の一例を示すブロック図である。上記実施例１では、プログラマブルネットワーク処理部にＦＰＧＡを採用する例を示したが、他の形態でもよい。
【０２４５】
図１３のプログラマブルネットワーク処理部３２Ａ−１は、前記実施例１のプログラマブルネットワーク処理部３２−１に代わって、異なるネットワーク処理機能をもつ複数のＡＳＩＣ３０１−１、３０１−２と、スイッチ３０２とで構成される。
【０２４６】
ＡＳＩＣ３０１−１、３０１−２はスイッチ３０２に接続されており、外部のパケット処理部５７から入力されるパケットがこのスイッチ３０２によって所定のＡＳＩＣ３０１−１または３０１−２に転送され、転送先のＡＳＩＣ３０１−１または３０１−２で処理される。
【０２４７】
これにより、プログラマブルネットワーク処理部３２Ａ−１のネットワーク処理機能を切替えることができる。ＡＳＩＣ３０１−１、３０１−２の切り替えは、コア管理部７３がスイッチ３０２に使用するＡＳＩＣ３０１−１または３０１−２を指令することで行うことができる。
【０２４８】
また、スイッチ３０２は、パケットをＡＳＩＣ３０１−１に転送して処理した後、ＡＳＩＣ３０１−２に転送して別のネットワーク処理を行うこともできる。
【０２４９】
本実施例２も前記実施例１と同様に、ネットワーク処理システムの規模に応じて最適なネットワーク処理のリソースが配置され、ネットワーク処理システムの成長に伴った設備投資が可能となる。
【実施例３】
【０２５０】
図１４は、本発明の第３の実施例を示し、通信装置３０Ｂ−１の一例を示すブロック図である。
【０２５１】
本実施例３の通信装置３０Ｂ−１は、前記実施例１の図１の通信装置３０−１とは異なり、ネットワークソフトウェア実行部３１Ｂとプログラマブルネットワーク処理部３２Ｂのそれぞれに、外部の装置と通信を行うネットワークインタフェース４１を設けた点が相違する。
【０２５２】
通信装置３０Ｂ−１では、パケット振り分け部３３がネットワーク処理リソースであるネットワークソフトウェア実行部３１Ｂ−１、３１Ｂ−２と、プログラマブルネットワーク処理部３２Ｂ−１、３２Ｂ−２の後方に配置されている。
【０２５３】
そして、ネットワークソフトウェア実行部３１Ｂ−１、３１Ｂ−２と、プログラマブルネットワーク処理部３２Ｂ−１、３２Ｂ−２の前方には、ネットワークインタフェース４１がそれぞれ配置されて図１に示した基地局２や通信装置３０−２、３０−３に接続される。
【０２５４】
このパケット振り分け部３３の配置は通信ネットワークで広く利用されているシェルフ型のネットワーク装置に倣ったものである。
【０２５５】
この構成では、各ネットワーク処理リソースに図中下方から入力されたパケットは、当該ネットワーク処理リソースで処理される。ただし、当該ネットワーク処理リソースの処理性能に不足があれば、ネットワーク処理の一部又は全てを他のネットワーク処理リソースに移譲し、さらにパケット振り分け部３３を介して移譲先のネットワーク処理リソースにパケットを転送する。
【０２５６】
移譲先のネットワーク処理リソースでは、他にネットワーク処理が残っていれば、パケット振り分け部３３を介して元のネットワーク処理リソースにパケットを送り返す。これにより、ネットワーク処理のハードウェア・オフロードを実現することができる。
【実施例４】
【０２５７】
図１５は、本発明の第４の実施例を示し、通信装置３０Ｃ−１の一例を示すブロック図である。
【０２５８】
通信装置３０Ｃ−１は、前記実施例３の図１４と同様に、パケット振り分け部３３はネットワーク処理リソースであるネットワークソフトウェア実行部３１−１と、プログラマブルネットワーク処理部３２−１、３２−２の後方に配置されている。ただし、通信装置３０Ｃ−１には、図１４の通信装置３０Ｂ−１とは異なり、ネットワークインタフェースカード４２が追加され、パケット振り分け部３３に接続されている。なお、図１５では、ネットワークソフトウェア実行部３１−１のみを示したが、前記実施例１と同様に複数のネットワークソフトウェア実行部３１を有することができる。
【０２５９】
このネットワークインタフェースカード４２は、前記実施例３の図１４のネットワーク処理リソースがそれぞれ保持していたネットワークインタフェース４１の機能を集約したもので、通信装置３０Ｃ−１の外部とパケットの送受信を行う。
【０２６０】
大容量なネットワークインタフェースでは、ネットワーク処理機能を持たない例が多いため、ネットワークインタフェースカード４２は、接続されているパケット振り分け部３３を介して各ネットワーク処理リソースにパケットを転送する。転送先のネットワーク処理リソース（ネットワークソフトウェア実行部３１、プログラマブルネットワーク処理部３２）がパケット処理を行う。
【０２６１】
本実施例３も前記実施例１都同様に、ネットワーク処理システムの規模に応じて最適なネットワーク処理のリソースが配置され、ネットワーク処理システムの成長に伴った設備投資が可能となる。
【実施例５】
【０２６２】
図１６は、本発明の第５の実施例を示し、通信装置３０Ｄ−１の一例を示すブロック図である。本実施例５の通信装置３０Ｄ−１は、ネットワークソフトウェア実行部３１とプログラマブルネットワーク処理部３２の両方が実装されたハイブリッドネットワーク処理部５０１−１、５０１−２がパケット振り分け部３３に接続される。
【０２６３】
ハイブリッドネットワーク処理部５０１−１は、前記実施例４に示したネットワークソフトウェア実行部３１Ｂ−１がネットワーク処理リソースの主体であり、このネットワークソフトウェア実行部３１Ｂ−１に、前記実施例１に示したプログラマブルネットワーク処理部３２−１がネットワーク処理の一部をオフロードするために接続される。
【０２６４】
一方、ハイブリッドネットワーク処理部５０１−２は、前記実施例４に示したプログラマブルネットワーク処理部３２−１０がネットワーク処理リソースの主体であり、これに前記実施例１に示したネットワークソフトウェア実行部３１−２がネットワーク処理の一部をオフロードするために接続される。
【０２６５】
これらハイブリッドネットワーク処理部５０１−１、５０１−２は、ネットワークソフトウェア実行部３１（３１Ｂ）とプログラマブルネットワーク処理部３２（３２Ｂ）とが密接に接続されており、パケット振り分け部３３のパケット転送処理容量を逼迫せずに、ネットワークソフトウェア実行部３１（３１Ｂ）とプログラマブルネットワーク処理部３２（３２Ｂ）とでネットワーク処理のオフロードが相互に可能となる。
【０２６６】
さらに、本実施例５において、ネットワーク処理の一部をオフロードするためのプログラマブルネットワーク処理部３２−１や、ネットワークソフトウェア実行部３１−２をパケット振り分け部３３に接続すれば、他のネットワーク処理リソースがこれらオフロード用のネットワーク処理リソースに直接アクセス可能になる。
【０２６７】
なお、本実施例５に示したパケット振り分け部３３に対するネットワーク処理リソースの配置は混在してもよい。また、パケット振り分け部３３は複数のスイッチを多段に接続した構成となってもよい。この場合、ネットワーク管理サーバ２０がパケット振り分け部３３の設定を各スイッチに分散させることができる。
【実施例６】
【０２６８】
ネットワーク管理サーバ２０は、図３に限定されるものではなく、他の形態でもよい。例えば、ネットワーク処理システムにおいて管理対象となる通信装置３０が１つの場合、通信装置３０の装置コントローラ３４にネットワーク管理サーバ２０の機能を持たせることができる。
【０２６９】
また、通信装置３０が複数の場合でも、管理対象となる全ての通信装置３０の装置コントローラ３４にネットワーク管理サーバ２０の一部または全てを実装することができる。全ての装置コントローラ３４が管理ネットワーク４０を介して通信することで、互いに他の通信装置３０のもつネットワーク処理リソースの状態を把握し、利用することができる。
【０２７０】
さらに、各ネットワーク処理リソースにネットワーク管理サーバ２０を実装することも考えられる。この場合には、各ネットワーク処理リソースに実装されたネットワーク管理サーバ２０が管理ネットワーク４０などを介して互いの状態を把握し、利用する。
【実施例７】
【０２７１】
本実施例７では、前記実施例１に示したネットワーク管理サーバ２０のモジュールデータベース８４とモジュール管理部７４の他の構成例を示す。
【０２７２】
モジュールデータベース８４に格納されるネットワーク処理のソースコードやバイナリコードが、ネットワークソフトウェア実行部３１とプログラマブルネットワーク処理部３２とで共通のもので、モジュール管理部７４がソースコードやバイナリコードからネットワークソフトウェア実行部３１やプログラマブルネットワーク処理部３２の実行プログラムを生成する。なお、この場合、モジュール管理部７４は、ネットワークソフトウェア実行部３１のコンパイラと、プログラマブルネットワーク処理部３２のコンパイラをそれぞれ有する。
【０２７３】
また、保守端末２１では、保守要員や管理者等が複数のソースコードやバイナリコードから任意の処理を抜粋したり、組み合わせたりすることで、ネットワーク処理リソースにインストールするネットワーク処理機能の組み合わせや規模を変更することができる。また、管理サーバ２０のネットワーク処理部１７１がこれを自動で実施してもよい。
【０２７４】
＜まとめ＞
上記実施例１のネットワークソフトウェア実行部３１では、ＣＰＵ３１０を仮想化したＶＭの処理部５９でネットワーク処理を実行する例を示したが、これに限定されるものではない。例えば、ネットワーク処理をひとつのアプリケーションとして、ＶＭの仮想プロセッサまたはＣＰＵ３１０のプロセッサコアに直接割り当てる技術が、Intel（登録商標）社のＤＰＤＫ（Ｄａｔａ  Ｐｌａｎｅ  Ｄｅｖｅｌｏｐｍｅｎｔ  Ｋｉｔ）として知られている。
【０２７５】
上記実施例１にＤＰＤＫを利用したアプリケーション（モジュールプログラム）を採用することで、当該アプリケーションは、ＯＳのカーネルを介さずに、ネットワークソフトウェア実行部３１が受信したパケットを直接受け取って処理することができる。この場合、各処理部５９をプロセッサコアとして扱うことができる。
【０２７６】
また、上記実施例１では、通信装置３０−１〜３０−４を接続してネットワークを構成する例を示したが、通信装置３０−１〜３０−４は、通信ノードであってもよい。
【０２７７】
また、本発明は上記した各実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に記載したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加、削除、又は置換のいずれもが、単独で、又は組み合わせても適用可能である。
【０２７８】
また、上記の各構成、機能、処理部、及び処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、及び機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記録装置、または、ＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に置くことができる。
【０２７９】
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
【符号の説明】
【０２８０】
２０  ネットワーク管理サーバ
２１  保守端末
３０−１〜３０−４  通信装置
３１−１〜３１−ｎ  ネットワークソフトウェア実行部
３２−１〜３２−ｎ  プログラマブルネットワーク処理部
３３  パケット振り分け部
３４  装置コントローラ
４０  管理ネットワーク
５１−１〜５１−３、５４−１〜５４−３、１５５、２５５  受信回路
５２−１〜５２−３、５３−１〜５３−３、１５６、２５６  送信回路
５７  パケット処理部
１５８、２５８  パケット振り分け部
５９−１〜５９−ｎ  処理部
６２−１〜６２−ｎ  処理部
１６０、２６０  パケット多重部
１６１、２６１  カードコントローラ
１７１  ネットワーク処理部
７２  利用状況監視部
７３  コア管理部
７４  モジュール管理部
８１  コア資源管理データベース
８２  コア機能管理データベース
８３  処理機能グループ管理データベース
８４  モジュールデータベース
【図１】
2016220126.tif 000006
【図２】
2016220126.tif 000007
【図３】
2016220126.tif 000008
【図４】
2016220126.tif 000009
【図５】
2016220126.tif 000010
【図６】
2016220126.tif 000011
【図７】
2016220126.tif 000012
【図８】
2016220126.tif 000013
【図９Ａ】
2016220126.tif 000014
【図９Ｂ】
2016220126.tif 000015
【図１０】
2016220126.tif 000016
【図１１】
2016220126.tif 000017
【図１２】
2016220126.tif 000018
【図１３】
2016220126.tif 000019
【図１４】
2016220126.tif 000020
【図１５】
2016220126.tif 000021
【図１６】
2016220126.tif 000022