(57)【要約】【課題】データの種別毎に対応する振分方法でデータを振り分け、各ネットワーク機能が要求する条件を満たすことができる通信装置を提供することを目的とする。【解決手段】データを送受信する通信装置であって、受信したデータの少なくとも一部に所定の処理を実行する複数のモジュールと、複数のモジュールは処理可能なデータの種別ごとに複数のグループにグループ化されて、グループ化された一つのグループに属する複数のモジュールを管理する複数のモジュール振分部と、受信したデータの種別に基づいて受信したデータを決定したモジュール振分部に振り分けるデータ振分部と、を備え、モジュール振分部は、データ振分部によって振り分けられたデータを自身が管理するモジュールに自身に設定された振分方法で振り分ける。【選択図】図３
2016167673.tif 000002
【特許請求の範囲】
【請求項１】
データを送受信する通信装置であって、
受信したデータの少なくとも一部に所定の処理を実行する複数のモジュールと、
処理可能なデータの種別が同じ複数のモジュールを管理する複数のモジュール振分部と、
前記受信したデータの種別に基づいて前記複数のモジュール振分部の中から前記受信したデータの振分先となるモジュール振分部を決定し、前記受信したデータを前記決定したモジュール振分部に振り分けるデータ振分部と、を備え、
前記複数のモジュール振分部には、自身が管理するモジュールが処理可能なデータの種別に対応した振分方法が設定され、
前記モジュール振分部は、前記データ振分部によって振り分けられたデータを自身が管理するモジュールに自身に設定された振分方法で振り分けることを特徴とする通信装置。
【請求項２】
請求項１に記載の通信装置であって、
複数の振分方法から前記モジュール振分部に設定する振分方法を決定する振分方法決定部を備えることを特徴とする通信装置。
【請求項３】
請求項２に記載の通信装置であって、
前記複数の振分方法は異なる性能を優先するものであって、
前記振分方法決定部は、あるデータの種別を通信するサービスが登録された場合、当該種別のデータが振り分けられるモジュール振分部に設定する振分方法を、当該サービスが優先する性能を優先する振分方法に決定することを特徴とする通信装置。
【請求項４】
請求項３に記載の通信装置であって、
前記複数の振分方法は、前記データの少なくとも一部の値に対応する一つの振分先となるモジュールを決定する第１振分方法、及び前記データの振分先となるモジュールを順番に変える第２振分方法を含み、
前記第１振分方法は前記通信装置に収容されるユーザ数を優先し、前記第２振分方法は前記通信装置の転送性能を優先し、
前記サービスは所定のユーザ数を収容し、所定の転送性能が割り当てられるものであって、
前記振分方法決定部は、
一つのモジュール当たりの転送性能、及び前記一つのモジュール当たりの収容ユーザ数を管理し、
前記サービスの優先性能が転送性能である場合、前記サービスに割り当てられる転送性能を満たすために必要なモジュールの数を、前記一つのモジュール当たりの転送性能に基づいて算出し、
前記一つのモジュール当たりの収容ユーザ数が前記サービスが収容するユーザ数以上であれば、前記モジュール振分部が前記第２振分方法で前記サービスに割り当てられる転送性能を満たすために必要な数のモジュールの中から振分先となるモジュールを決定することを決定し、
前記サービスの優先性能が収容ユーザ数である場合、前記サービスが収容するユーザ数を満たすために必要なモジュールの数を、前記一つのモジュール当たりの収容ユーザ数に基づいて算出し、
前記一つのモジュール当たりの転送性能が前記サービスに割り当てられる転送性能以上であれば、前記モジュール振分部が前記第１振分方法で前記サービスが収容するユーザ数を満たすために必要な数のモジュールの中から振分先となるモジュールを決定することを決定することを特徴とする通信装置。
【請求項５】
請求項４に記載の通信装置であって、
前記複数の振分方法は、前記モジュール振分部が管理する複数のモジュールのグループから振分先となるグループを前記第１振分方法で決定し、前記振分先として決定されたグループに属するモジュールから振分先となるモジュールを前記第２振分方法で決定する第３振分方法を含み、
前記振分方法決定部は、
前記サービスの優先性能が転送性能である場合であって、かつ、前記一つのモジュール当たりの収容ユーザ数が前記サービスが収容するユーザ数未満である場合、前記サービスが収容するユーザ数を満たすために必要なモジュールの数を、前記一つのモジュール当たりの収容ユーザ数に基づいて算出し、前記モジュール振分部が前記受信したデータを前記第３振分方法で振り分けることを決定し、
前記サービスの優先性能が収容ユーザ数である場合であって、かつ、前記一つのモジュール当たりの転送性能が前記サービスに割り当てられる転送性能未満である場合、前記サービスに割り当てられる転送性能を満たすために必要なモジュールの数を、前記一つのモジュール当たりの転送性能に基づいて算出し、前記モジュール振分部が前記受信したデータを前記第３振分方法で振り分けることを決定し、
前記決定された第３振分方法においては、前記第１振分方法での振分先となるグループの数が前記サービスが収容するユーザ数を満たすために必要なモジュールの数であり、前記グループに属するモジュールの数が、前記サービスに割り当てられる転送性能を満たすために必要なモジュールの数であることを特徴とする通信装置。
【請求項６】
請求項２に記載の通信装置であって、
前記モジュール振分部は、前記振分方法決定部によって決定された振分方法を自身に設定することを特徴とする通信装置。
【請求項７】
請求項１に記載の通信装置であって、
前記通信装置は、前記通信装置を管理する管理装置に接続され、
前記管理装置は、複数の振分方法から前記モジュール振分部に設定する振分方法を決定し、
前記通信装置は、前記管理装置によって決定された振分方法を前記モジュール振分部に設定することを特徴とする通信装置。
【請求項８】
請求項１に記載の通信装置であって、
前記モジュール振分部に設定される振分方法は、第１振分方法、第２振分方法、及び第３振分方法のいずれかであり、
前記第１振分方法では、前記受信したデータの少なくとも一部の値に対応した一つの振分先となるモジュールが決定され、
前記第２振分方法では、前記受信したデータの振分先となるモジュールが順番に変えられ、
前記第３振分方法では、前記モジュール振分部が管理する複数のモジュールのグループから振分先となるグループが前記第１振分方法で決定され、前記振分先として決定されたグループに属するモジュールから振分先となるモジュールが前記第２振分方法で決定され、
前記モジュール振分部は、第１振分部と第２振分部とを有し、
前記第１振分部は、前記受信したデータを前記第１振分方法で前記第２振分部に振り分け、
前記第２振分部は、前記第１振分部から振り分けられたデータを前記第２振分方法で前記モジュールに振り分け、
前記第１振分方法が設定されたモジュール振分部の第１振分部は、利用可能に設定された複数の第２振分部の中から振分先となる一つの第２振分部を前記第１振分方法で決定し、前記受信したデータを前記振分先として決定された第２振分部に振り分け、
前記第１振分方法が設定されたモジュール振分部の第２振分部は、前記第１振分部から振り分けられたデータを、利用可能に設定された一つのモジュールに出力し、
前記第２振分方法が設定されたモジュール振分部の第１振分部は、利用可能に設定された一つの第２振分部に前記受信したデータを出力し、
前記第２振分方法が設定されたモジュール振分部の第２振分部は、利用可能に設定された複数のモジュールの中から振分先となる一つのモジュールを第２振分方法で決定し、前記第１振分部から振り分けられたデータを前記振分先として決定されたモジュールに振り分け、
前記第３振分方法が設定されたモジュール振分部の第１振分部は、利用可能に設定された複数の第２振分部の中から振分先となる一つの第２振分部を前記第１振分方法で決定し、前記受信したデータを前記振分先として決定された第２振分部に振り分け、
前記第３振分方法が設定されたモジュール振分部の第２振分部は、利用可能に設定された複数のモジュールの中から振分先となる一つのモジュールを第２振分方法で決定し、前記第１振分部から振り分けられたデータを前記振分先として決定されたモジュールに振り分けることを特徴とする通信装置。
【請求項９】
データを送受信する通信装置を管理する管理装置であって、
前記通信装置は、
受信したデータの少なくとも一部に所定の処理を実行する複数のモジュールと、
処理可能なデータの種別が同じ複数のモジュールを管理する複数のモジュール振分部と、
前記受信したデータの種別に基づいて前記複数のモジュール振分部から前記受信したデータの振分先となるモジュール振分部を決定し、前記受信したデータを前記決定したモジュール振分部に振り分けるデータ振分部と、を有し、
前記複数のモジュール振分部には、自身が管理するモジュールが処理可能なデータの種別に対応した振分方法が設定され、
前記モジュール振分部は、前記データ振分部によって振り分けられたデータを自身が管理するモジュールに自身に設定された振分方法で振り分け、
前記管理装置は、
複数の振分方法から前記通信装置が有するモジュール振分部に設定する振分方法を決定し、
前記決定した振分方法の設定を前記通信装置に指示することを特徴とする管理装置。
【請求項１０】
請求項９に記載の管理装置であって、
前記複数の振分方法は異なる性能に優先するものであって、
あるデータの種別を通信するサービスが登録された場合、当該種別のデータが振り分けられるモジュール振分部に設定する振分方法を、当該サービスが優先する性能を優先する振分方法に決定することを特徴とする管理装置。
【請求項１１】
請求項１０に記載の管理装置であって、
前記複数の振分方法は、前記データの少なくとも一部の値に対応する一つの振分先となるモジュールを決定する第１振分方法、及び前記データの振分先となるモジュールを順番に変える第２振分方法を含み、
前記第１振分方法は前記通信装置に収容されるユーザ数を優先し、前記第２振分方法は前記通信装置の転送性能を優先し、
前記サービスは所定のユーザ数を収容し、所定の転送性能が割り当てられるものであって、
前記管理装置は、
一つのモジュール当たりの転送性能、及び前記一つのモジュール当たりの収容ユーザ数を管理し、
前記サービスの優先性能が転送性能である場合、前記サービスに割り当てられる転送性能を満たすために必要なモジュールの数を、前記一つのモジュール当たりの転送性能に基づいて算出し、
前記一つのモジュール当たりの収容ユーザ数が前記サービスが収容するユーザ数以上であれば、前記モジュール振分部が前記第２振分方法で前記サービスに割り当てられる転送性能を満たすために必要な数のモジュールの中から振分先となるモジュールを決定することを決定し、
前記サービスの優先性能が収容ユーザ数である場合、前記サービスが収容するユーザ数を満たすために必要なモジュールの数を、前記一つのモジュール当たりの収容ユーザ数に基づいて算出し、
前記一つのモジュール当たりの転送性能が前記サービスに割り当てられる転送性能以上であれば、前記モジュール振分部が前記第１振分方法で前記サービスが収容するユーザ数を満たすために必要な数のモジュールの中から振分先となるモジュールを決定することを決定することを特徴とする管理装置。
【請求項１２】
請求項１１に記載の管理装置であって、
前記複数の振分方法は、前記モジュール振分部が管理する複数のモジュールのグループから振分先となるグループを前記第１振分方法で決定し、前記振分先として決定されたグループに属するモジュールから振分先となるモジュールを前記第２振分方法で決定する第３振分方法を含み、
前記管理装置は、
前記サービスの優先性能が転送性能である場合であって、かつ、前記一つのモジュール当たりの収容ユーザ数が前記サービスが収容するユーザ数未満である場合、前記サービスが収容するユーザ数を満たすために必要なモジュールの数を、前記一つのモジュール当たりの収容ユーザ数に基づいて算出し、前記モジュール振分部が前記受信したデータを前記第３振分方法で振り分けることを決定し、
前記サービスの優先性能が収容ユーザ数である場合であって、かつ、前記一つのモジュール当たりの転送性能が前記サービスに割り当てられる転送性能未満である場合、前記サービスに割り当てられる転送性能を満たすために必要なモジュールの数を、前記一つのモジュール当たりの転送性能に基づいて算出し、前記モジュール振分部が前記受信したデータを前記第３振分方法で振り分けることを決定し、
前記決定された第３振分方法においては、前記第１振分方法での振分先となるグループの数が前記サービスが収容するユーザ数を満たすために必要なモジュールの数であり、前記グループに属するモジュールの数が、前記サービスに割り当てられる転送性能を満たすために必要なモジュールの数であることを特徴とする管理装置。
【請求項１３】
データを送受信する通信装置と、前記通信装置を管理する管理装置とを備えるネットワークシステムであって、
前記通信装置は、
受信したデータの少なくとも一部に所定の処理を実行する複数のモジュールと、
処理可能なデータの種別が同じ複数のモジュールを管理する複数のモジュール振分部と、
前記受信したデータの種別に基づいて前記複数のモジュール振分部の中から前記受信したデータの振分先となるモジュール振分部を決定し、前記受信したデータを前記決定したモジュール振分部に振り分けるデータ振分部と、を有し、
前記複数のモジュール振分部には、自身が管理するモジュールが処理可能なデータの種別に対応した振分方法が設定され、
前記モジュール振分部は、前記データ振分部によって振り分けられたデータを自身が管理するモジュールに自身に設定された振分方法で振り分け、
前記管理装置は、複数の振分方法から前記通信装置が有するモジュール振分部に設定する振分方法を決定する振分方法決定部を有することを特徴とするネットワークシステム。
【請求項１４】
請求項１３に記載のネットワークシステムであって、
前記複数の振分方法は異なる性能に優先するものであって、
前記振分方法決定部は、あるデータの種別を通信するサービスが登録された場合、当該種別のデータが振り分けられるモジュール振分部に設定する振分方法を、当該サービスが優先する性能を優先する振分方法に決定することを特徴とするネットワークシステム。
【請求項１５】
請求項１４に記載のネットワークシステムであって、
前記複数の振分方法は、前記データの少なくとも一部の値に対応する一つの振分先となるモジュールを決定する第１振分方法、及び前記データの振分先となるモジュールを順番に変える第２振分方法を含み、
前記第１振分方法は前記通信装置に収容されるユーザ数を優先し、前記第２振分方法は前記通信装置の転送性能を優先し、
前記サービスは所定のユーザ数を収容し、所定の転送性能が割り当てられるものであって、
前記振分方法決定部は、
一つのモジュール当たりの転送性能、及び前記一つのモジュール当たりの収容ユーザ数を管理し、
前記サービスの優先性能が転送性能である場合、前記サービスに割り当てられる転送性能を満たすために必要なモジュールの数を、前記一つのモジュール当たりの転送性能に基づいて算出し、
前記一つのモジュール当たりの収容ユーザ数が前記サービスが収容するユーザ数以上であれば、前記モジュール振分部が前記第２振分方法で前記サービスに割り当てられる転送性能を満たすために必要な数のモジュールの中から振分先となるモジュールを決定することを決定し、
前記サービスの優先性能が収容ユーザ数である場合、前記サービスが収容するユーザ数を満たすために必要なモジュールの数を、前記一つのモジュール当たりの収容ユーザ数に基づいて算出し、
前記一つのモジュール当たりの転送性能が前記サービスに割り当てられる転送性能以上であれば、前記モジュール振分部が前記第１振分方法で前記サービスが収容するユーザ数を満たすために必要な数のモジュールの中から振分先となるモジュールを決定することを決定することを特徴とするネットワークシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、受信したデータを所定の処理を実行する複数のモジュールに振り分ける通信装置に関する。
【背景技術】
【０００２】
ネットワーク機能を仮想化して汎用サーバ上（具体的には、汎用サーバのＣＰＵ上）でネットワーク機能に対応する処理を実行するＮＦＶ（Ｎｅｔｗｏｒｋ  Ｆｕｎｃｔｉｏｎ  Ｖｉｒｔｕａｌｉｚａｔｉｏｎ）が流行しているが、ＮＦＶにおいては、ＣＰＵによるソフト処理性能の限界が懸念されている。このため、ネットワーク機能のソフト処理の一部を抽出し、抽出した処理をハード上にオフロードしてネットワーク機能を高速化するハードオフロードの検討が進んでおり、クラウド事業者のデータ検索等で利用され始めている。今後は複数のネットワーク機能をハード上にオフロードし、各ネットワーク機能の処理性能を向上する必要性が出てくる。
【０００３】
複数のネットワーク機能が提供される場合、各ネットワーク機能用に配備された処理回路（コア回路）にパケット等のデータを振り分けて処理することが一般的である。また、処理性能を向上させるために、複数のコア回路で処理を並列して実行する方法が採用される。複数のコア回路にデータを振り分ける方法としては、ハッシュ方法及びラウンドロビン方法がある。
【０００４】
ハッシュ方法では、各コア回路に必要なリソース（回路規模及びメモリ等）を均一に配分できるが、一つのコア回路の処理性能がボトルネックとなる可能性がある。ラウンドロビン方法では、全コア回路分の処理性能を常に提供できるので、処理性能を向上させることができるが、全コア回路で同じ機能を備える必要がありコア回路のリソース消費が大きくなる。
【０００５】
本技術分野の背景技術として、特開２０１４−１６４３５７号公報（特許文献１）がある。この公報には、「データ管理装置は、ホットゾーンに振り分けられた識別子により識別されるデータの要求に対する応答処理を、全ての要求処理サーバ装置のうちのいずれかの要求処理サーバ装置に割り当て、ノーマルゾーンに振り分けられた識別子により識別されるデータの要求に対する応答処理を、複数の要求処理サーバ装置のうちのいずれかの要求処理サーバ装置に割り当て、コールドゾーンに振り分けられた識別子により識別されるデータの要求に対する応答処理を、一つのサーバ装置に割り当てる。」ことが記載されている（要約参照）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１４−１６４３５７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１に記載の技術は、単一のアプリケーションの識別子の発生頻度に基づいて、ラウンドロビン方法及びハッシュ方法の振分アルゴリズムを切替え、複数のサーバ装置へ負荷分散するものである。したがって、特許文献１には、単一の種別のデータのサーバ装置への負荷分散については開示されている。
【０００８】
しかしながら、複数のネットワーク機能が提供される場合（さらにはネットワーク機能を追加又は変更をする場合）、ネットワーク機能毎に要求する条件（例えば、要求性能及びユーザ数等）が異なり、ネットワーク機能毎に条件を満たす振分アルゴリズムが必要である。このため、特許文献１に記載の技術では、単一の種別のデータしか想定しておらず、単一の種別のデータの振分方法を切り替えるだけであるため、各ネットワーク機能が要求する条件を満たすことはできないという問題がある。
【０００９】
そこで、本発明は、データの種別毎に対応する振分方法でデータを振り分け、各ネットワーク機能が要求する条件を満たすことができる通信装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記課題を解決するために、本発明は、データを送受信する通信装置であって、受信したデータの少なくとも一部に所定の処理を実行する複数のモジュールと、処理可能なデータの種別が同じ複数のモジュールを管理する複数のモジュール振分部と、前記受信したデータの種別に基づいて前記複数のモジュール振分部の中から前記受信したデータの振分先となるモジュール振分部を決定し、前記受信したデータを前記決定したモジュール振分部に振り分けるデータ振分部と、を備え、前記複数のモジュール振分部には、自身が管理するモジュールが処理可能なデータの種別に対応した振分方法が設定され、前記モジュール振分部は、前記データ振分部によって振り分けられたデータを自身が管理するモジュールに自身に設定された振分方法で振り分けることを特徴とする。
【発明の効果】
【００１１】
本発明によれば、データの種別毎に対応する振分方法でデータを振り分け、各ネットワーク機能が要求する条件を満たすことができる通信装置を提供できる。
【００１２】
上記した以外の課題、構成、及び効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【００１３】
【図１】実施例のネットワークシステムの構成図である。
【図２】実施例の通信装置のブロック図である。
【図３】実施例のパケット制御部のブロック図である。
【図４Ａ】実施例のイーサタイプを種別識別情報として用いるパケット振分管理テーブルの説明図である。
【図４Ｂ】実施例のポートの識別情報を種別識別情報として用いるパケット振分管理テーブルの説明図である。
【図５Ａ】実施例の振分関数を用いてパケットを振り分けるハッシュ論理部に対応する振分関数管理テーブルの説明図である。
【図５Ｂ】実施例の振分関数を用いずパケットを振り分けるハッシュ論理部に対応する振分関数管理テーブルの説明図である。
【図６】実施例の利用モジュール管理テーブルの説明図である。
【図７】実施例の多重モジュール管理テーブルの説明図である。
【図８】実施例の第１振分方法が設定されたモジュール振分部の説明図である。
【図９】実施例の第２振分方法が設定されたモジュール振分部の説明図である。
【図１０】実施例の第３振分方法が設定されたモジュール振分部の説明図である。
【図１１Ａ】実施例のイーサタイプに基づくパケット振分処理のフローチャートである。
【図１１Ｂ】実施例の受信ポートＩＤに基づくパケット振分処理のフローチャートである。
【図１２】実施例のハッシュ論理処理のフローチャートである。
【図１３】実施例のＲＲ論理処理のフローチャートである。
【図１４】実施例のモジュール多重処理のフローチャートである。
【図１５】実施例のネットワーク管理装置のブロック図である。
【図１６】実施例のサービス情報管理データベースの説明図である。
【図１７】実施例のモジュール利用状況管理データベースの説明図である。
【図１８】実施例の振分方法管理データベースの説明図である。
【図１９】実施例のネットワークが提供するサービスと振分方法との関係の説明図である。
【図２０Ａ】実施例の振分方法決定処理のフローチャートである。
【図２０Ｂ】実施例の振分方法決定処理のフローチャートである。
【発明を実施するための形態】
【００１４】
図１は、実施例のネットワークシステムの構成図である。
【００１５】
ネットワークシステムは、複数の通信装置２Ａ〜２Ｆ（総称する場合、通信装置２と記載する）、ネットワーク管理装置１０１、ネットワーク利用受付システム１０２、及び保守者端末１０３を備える。
【００１６】
複数の通信装置２は、物理ネットワークを構築する。物理ネットワークは、複数の種類のネットワークを収容する。本実施例では、物理ネットワークが、仮想専用線ネットワーク１０５及び仮想モバイルネットワーク１０６を収容する例について説明するが、これに限定されず、物理ネットワークに複数の種類のネットワークが収容されていればよい。
【００１７】
図１では、通信装置２Ａは、利用者端末１１０Ａに接続され、基地局１２０を介して利用者端末１１０Ｂに接続される。通信装置２Ａは、通信装置２Ｂ及び２Ｅに接続される。通信装置２Ｂは通信装置２Ｃに接続され、通信装置２Ｅは通信装置２Ｆに接続される。通信装置２Ｃ及び２Ｆは通信装置２Ｄに接続される。通信装置２Ｄは、データセンタ１３０及びインターネット１４０に接続される。なお、通信装置２の数は、図１に限定されない。
【００１８】
ネットワーク管理装置１０１は、複数の通信装置２を管理する計算機であって、制御ネットワーク１０４を介して各通信装置２に接続される。ネットワーク利用受付システム１０２は、利用者端末１１０Ａ及び１１０Ｂから利用申請を受け付ける。利用申請は、例えば、利用者端末１１０Ａ又は１１０Ｂの利用者が、仮想専用線ネットワーク１０５又は仮想モバイルネットワーク１０６を利用するための申請である。
【００１９】
保守者端末１０３は、物理ネットワーク、仮想専用線ネットワーク１０５、及び仮想モバイルネットワーク１０６の設定の入力を通信事業者から受け付け、また、物理ネットワーク、仮想専用線ネットワーク１０５、及び仮想モバイルネットワーク１０６の状況を通信事業者に通知する。
【００２０】
次に、通信装置２について図２を用いて説明する。図２は、実施例の通信装置２のブロック図である。
【００２１】
通信装置２は、データを他の通信装置２に転送する装置である。通信装置２は、複数のネットワークインタフェースボード（ＮＩＦ）２００Ａ〜２００Ｋ及び２５０Ａ〜２５０Ｌ（Ｋ及びＬは任意の自然数）、スイッチ部２０６、及び装置管理部２１２を有する。なお、ＮＩＦ２００Ａ〜２００Ｋ及び２５０Ａ〜２５０Ｌを総称する場合、ＮＩＦと記載する。
【００２２】
ＮＩＦは、他の通信装置２との間でデータを送受信するインタフェースである。スイッチ部２０６は、ＮＩＦに接続され、ＮＩＦが受信したデータを、当該データを送信すべきＮＩＦに転送する。
【００２３】
装置管理部２１２は、制御ネットワーク１０４を介してネットワーク管理装置１０１に接続され、ネットワーク管理装置１０１との間で制御情報を送受信する。また、装置管理部２１２は、所定のタイミングで、各ＮＩＦ及びスイッチ部２０６から各種情報を収集する。
【００２４】
また、装置管理部２１２は、ネットワーク管理装置１０１からの指示に基づいて、各ＮＩＦ２００Ａ〜２００Ｋ及び２５０Ａ〜２５０Ｌ並びにスイッチ部２０６のパラメータを設定し、各ＮＩＦ２００Ａ〜２００Ｋ及び２５０Ａ〜２５０Ｌのモジュール３０３に、モジュールがデータに対して所定の処理を実行するためのプログラムをインストールする。装置管理部２１２は、振分方法決定部１５０６を有してもよい。振分方法決定部１５０６の処理の詳細については図１５で説明する。
【００２５】
ＮＩＦ２００Ａ〜２００Ｋでは、ポート２０１と論理回路２０２とが接続され、これらの間でデータが入出力され、ＮＩＦ２５０Ａ〜２５０Ｌは、ポート２０１とＣＰＵ２０７とが接続され、これらの間でデータが入出力される点で異なる。ＮＩＦ２００Ａ〜２００Ｋを総称する場合、ＮＩＦ２００と記載し、ＮＩＦ２５０Ａ〜２５０Ｌを総称する場合、ＮＩＦ２５０と記載する。
【００２６】
まず、ＮＩＦ２００について説明する。
【００２７】
各ＮＩＦ２００は、複数の入出力回線インタフェース（ポート）２０１Ａ〜２０１Ｊ（Ｊは任意の自然数）、論理回路２０２、ＳＷインタフェース（ＳＷ  ＩＦ）２０５、及び、ＣＰＵ２０７を備える。なお、ポート２０１Ａ〜２０１Ｊを総称する場合、ポート２０１と記載する。ポート２０１は通信ポートであり、通信装置２は、ポート２０１及びポート２０１に接続されたネットワークを介して、他の通信装置２に接続される。本実施例におけるポート２０１は、例えば、イーサネット（登録商標）用の回線インタフェースである。
【００２８】
ＳＷインタフェース２０５は、ＮＩＦ２００をスイッチ部２０６に接続するためのインタフェースである。
【００２９】
ＣＰＵ２０７は、パケット処理部２１１、及びＮＩＦ管理部２１０を有する。図示しないメモリにパケット処理部２１１、及びＮＩＦ管理部２１０に対応するプログラムが格納され、ＣＰＵ２０７がこれらのプログラムを実行することによって、パケット処理部２１１、及びＮＩＦ管理部２１０は実現される。なお、別々のＣＰＵが、パケット処理部２１１、及びＮＩＦ管理部２１０をそれぞれ有してもよい。また、パケット処理部２１１、及びＮＩＦ管理部２１０の機能は、ＣＰＵ２０７がプログラムを実行する方法以外の方法で実現されてもよく、ハードウェアで実現されてもよい。
【００３０】
パケット処理部２１１は、論理回路２０２が有するパケット制御部２０４Ａ及び２０４Ｂからデータが入力された場合、入力されたデータに対して所定の処理を実行し、所定の処理が実行されたデータをパケット制御部２０４Ａ及び２０４Ｂに出力する。
【００３１】
ＮＩＦ管理部２１０は、装置管理部２１２からの指示に基づいて、論理回路２０２のレジスタ２０９を制御する。
【００３２】
論理回路２０２は、データに対して所定の処理を実行する回路である。論理回路２０２は、少なくとも一つのメモリ（不図示）と少なくとも一つのＣＰＵ（不図示）とを有する。
【００３３】
論理回路２０２は、マルチプレクサ（ＭＵＸ）２０３、パケット制御部２０４Ａ及び２０４Ｂ、並びにデマルチプレクサ（ＤＭＸ）２０８を含むパケット処理部と、レジスタ２０９とを有する。なお、パケット制御部２０４Ａ及び２０４Ｂを総称する場合、パケット制御部２０４と記載する。
【００３４】
ＮＩＦ２００が受信するデータは、ポート２０１、ＭＵＸ２０３、パケット制御部２０４Ａ、ＳＷインタフェース２０５、及びスイッチ部２０６の順に転送される。なお、パケット制御部２０４Ａは、ＭＵＸ２０３から入力されたデータを一度パケット処理部２１１に出力し、パケット処理部２１１によって所定の処理が実行されたデータを受け取り、当該データをＳＷインタフェース２０５に出力してもよい。
【００３５】
ＮＩＦ２００が送信するデータは、スイッチ部２０６、ＳＷインタフェース２０５、パケット制御部２０４Ｂ、ＤＭＸ２０８及びポート２０１の順に転送される。なお、パケット制御部２０４Ｂは、ＳＷインタフェース２０５から入力されたデータを一度パケット処理部２１１に出力し、パケット処理部２１１によって所定の処理が実行されたデータを受け取り、当該データをＤＭＸ２０８に出力してもよい。
【００３６】
レジスタ２０９は、データが一時的に格納される記憶領域を有し、論理回路２０２が有するのレジスタ値を保持する。
【００３７】
レジスタ２０９は、論理回路２０２が有する各処理部（ＭＵＸ２０３、パケット制御部２０４、及びＤＭＸ２０８）に図示しない制御線を介して接続される。論理回路２０２が有する各処理部は、レジスタ２０９の設定用のレジスタ値を用いて処理を実行し、処理結果をレジスタ２０９の通知用のレジスタ値に格納する。
【００３８】
ポート２０１は、受信したデータを通信装置２内で処理可能にするため、受信したデータに装置内ヘッダを付加する。
【００３９】
ここで、本実施例で通信装置２が送受信するデータのフォーマットの一例を説明する。本実施例のデータは、例えば、イーサネット（登録商標）のパケットであるとする。当該パケットは、宛先ＭＡＣアドレス、送信元ＭＡＣアドレス、ＶＬＡＮヘッダ、イーサタイプ値、ペイロード、及びフレームチェックシーケンス（ＦＣＳ）を含む。
【００４０】
宛先ＭＡＣアドレスには、宛先の通信装置２のＭＡＣアドレスが登録され、送信元ＭＡＣアドレスには、送信元の通信装置２のＭＡＣアドレスが設定される。イーサタイプ値には、パケットが運ぶ上位層のプロトコルの識別子が設定される。ＶＬＡＮヘッダには、フローの識別子となるＶＬＡＮ  ＩＤが設定される。フレームチェックシーケンス（ＦＣＳ）には、フレームの誤りを検出するための値が設定される。なお、パケットは、ＭＰＬＳ（Ｍｕｌｔｉ−Ｐｒｏｔｏｃｏｌ  Ｌａｂｅｌ  Ｓｗｉｔｃｈｉｎｇ）ヘッダ、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）ヘッダ、又は他のプロトコルのヘッダを含んでもよい。
【００４１】
次に、ポート２０１がパケットに付加する装置内ヘッダのフォーマットについて説明する。装置内ヘッダは、出力ＮＩＦ  ＩＤ、受信ポートＩＤ、送信ポートＩＤ、フローＩＤ、及びパケット長等を含む。
【００４２】
出力ＮＩＦ  ＩＤは、内部ルーティング情報であり、通信装置２が受信したパケットを、通信装置２のいずれのＮＩＦから出力するかを示す情報である。スイッチ部２０６は、パケットが入力された場合、入力されたパケットの装置内ヘッダの内部ルーティング情報に基づいて、出力するＮＩＦを決定し、決定したＮＩＦにパケットを出力する。
【００４３】
受信ポートＩＤは、通信装置２がどのポート２０１からパケットを受信したかを示す識別子である。送信ポートＩＤは、スイッチ部２０６から入力されたパケットを、ＮＩＦのどのポート２０１から送信するかを示す識別子である。
【００４４】
フローＩＤは、パケットのフローの識別子であり、ＶＬＡＮ  ＩＤ、ＭＰＬＳラベル、又は宛先ＩＰアドレス等の値が用いられる。
【００４５】
ポート２０１は、受信したパケットに付加する装置内ヘッダの出力ＮＩＦ  ＩＤ、送信ポートＩＤ、及びフローＩＤには、例えばｎｕｌｌ値を格納する。すなわち、ポートＩＤ２０１は、出力ＮＩＦ  ＩＤ、送信ポートＩＤ、及びフローＩＤに格納される値を決定しない。
【００４６】
パケット制御部２０４Ａは、装置内ヘッダの出力ＮＩＦ  ＩＤ、送信ポートＩＤ、及びフローＩＤの値を決定し、決定した値をそれぞれに格納する。なお、パケット制御部２０４Ｂが、送信ポートＩＤ及びフローＩＤ等の値を決定し、決定した値をそれぞれに格納してもよい。
【００４７】
ポート２０１は、受信したパケットのパケット長を取得し、装置内ヘッダのフレーム長に取得したパケット長を格納し、パケットをＭＵＸ２０３に出力する。
【００４８】
ＭＵＸ２０３は、複数のポート２０１から受信したパケットを多重し、パケット制御部２０４Ａに出力する。
【００４９】
パケット制御部２０４Ａは、ＭＵＸ２０３から入力されたパケットに対してパケット処理を実行する。パケット処理では、パケット制御部２０４Ａは、装置内ヘッダの出力ＮＩＦ  ＩＤ、送信ポートＩＤ、及びフローＩＤの値を決定し、決定した値を出力ＮＩＦ  ＩＤ、送信ポートＩＤ、及びフローＩＤに格納する。なお、パケット制御部２０４Ａは、パケット処理の一部の処理をパケット処理部２１１に実行させてもよい。
【００５０】
パケット制御部２０４Ａは、パケット処理の実行後、パケットをＳＷインタフェース２０５に出力する。ＳＷインタフェース２０５は、ＳＷインタフェース２０５から入力されたパケットをスイッチ部２０６に出力する。
【００５１】
スイッチ部２０６は、各ＮＩＦのＳＷインタフェース２０５からパケット入力された場合、パケットに付加された装置内ヘッダの出力ＮＩＦ  ＩＤを参照し、入力されたパケットの出力先のＮＩＦを決定する。次に、スイッチ部２０６は、決定されたＮＩＦのＳＷインタフェース２０５に、パケットを出力する。
【００５２】
ＳＷインタフェース２０５は、スイッチ部２０６から入力されたパケットをパケット制御部２０４Ｂに出力する。パケット制御部２０４Ａがパケット処理を実行する例について説明したが、パケット制御部２０４Ａがパケット処理を実行しなくてもよく、パケット制御部２０４Ａがパケット処理を実行しない場合には、パケット制御部２０４Ｂが、パケット制御部２０４Ａの代わりにパケット処理を実行する。
【００５３】
パケット制御部２０４Ｂがパケット処理を実行する場合、パケット制御部２０４Ｂは、パケット処理の実行後、パケットをＤＭＸ２０８に出力する。パケット制御部２０４Ｂがパケット処理を実行しない場合、パケット制御部２０４Ｂは、ＳＷインタフェース２０５から入力されたパケットを、そのままＤＭＸ２０８に出力する。
【００５４】
ＤＭＸ２０８は、パケット制御部２０４Ｂから入力されたパケットを、装置内ヘッダの送信ポートＩＤによって識別されるポート２０１に振り分ける。
【００５５】
ポート２０１は、ＤＭＸ２０８から入力されたパケットの装置内ヘッダを除去し、パケットを他の通信装置２へ転送する。
【００５６】
次に、ＮＩＦ２５０について説明する。
【００５７】
ＮＩＦ２５０は、一つのポート２０１とＣＰＵ２０７とが接続される。このため、ＮＩＦ２５０の論理回路２０２は、ＭＵＸ２０３及びＤＭＸ２０８を有さない。
【００５８】
ＮＩＦ２５０が受信したデータは、ポート２０１、パケット処理部２６１、ＳＷインタフェース２０５、及びスイッチ部２０６の順に転送される。ＮＩＦ２５０が送信するデータは、スイッチ部２０６、ＳＷインタフェース２０５、パケット処理部２６１、及びポート２０１の順に転送される。なお、パケット処理部２６１は、パケット処理の一部をパケット制御部２５４に実行させてもよい。
【００５９】
図３は、実施例のパケット制御部２０４のブロック図である。
【００６０】
パケット制御部２０４は、パケット振分部３０１、Ｍ個のモジュール振分部３０２Ａ〜３０２Ｍ、Ｎ個のモジュール３０３Ａ１〜３０３ＡＬ及び３０３Ｍ１〜３０３ＭＬ、Ｍ個のモジュール多重部３０４Ａ〜３０４Ｍ、並びにパケット多重部３０５を有する。モジュール振分部３０２Ａ〜３０２Ｍを総称する場合、モジュール振分部３０２と記載し、モジュール３０３Ａ１〜３０３ＡＬ及び３０３Ｍ１〜３０３ＭＬを総称する場合、モジュール３０３と記載し、モジュール多重部３０４Ａ〜３０４Ｍを総称する場合、モジュール多重部３０４と記載する。
【００６１】
また、パケット制御部２０４の図示しないメモリには、パケット振分管理テーブル４、振分関数管理テーブル５Ａ〜５Ｍ、利用モジュール管理テーブル６Ａ１〜６Ｍ１、及び多重モジュール管理テーブル７Ａ〜７Ｍが記憶される。振分関数管理テーブル５Ａ〜５Ｍを総称する場合、振分関数管理テーブル５と記載し、利用モジュール管理テーブル６Ａ１〜６Ｍ１を総称する場合、利用モジュール管理テーブル６と記載し、多重モジュール管理テーブル７Ａ〜７Ｍを総称する場合、多重モジュール管理テーブル７と記載する。なお、パケット振分管理テーブル４、振分関数管理テーブル５、利用モジュール管理テーブル６、及び多重モジュール管理テーブル７は、論理回路２０２のレジスタ２０９に格納されてもよい。
【００６２】
パケット振分部３０１にパケット制御部２０４からパケットが入力された場合、パケット振分部３０１は、パケット振分管理テーブル４を参照し、入力されたパケットを、当該パケットの種別に対応するモジュール振分部３０２に振り分ける。パケット振分管理テーブル４には、パケットの種別と振分先となるモジュール振分部３０２の識別情報とが対応付けて登録される。パケット振分管理テーブル４の詳細は図４Ａ及び図４Ｂで説明する。また、パケット振分部３０１の処理の詳細は、図１１Ａ及び図１１Ｂで説明する。
【００６３】
複数のモジュール３０３は処理可能なデータの種別ごとにグループ化され、各モジュール振分部３０２は、一つのグループに属する複数のモジュール３０３を管理し、自身に設定された方法に基づいて、パケット振分部３０１から入力されたパケットをモジュール３０３に振り分ける。図３では、モジュール３０３Ａ１〜３０３ＡＬのグループと、モジュール３０３Ｍ１〜３０３ＭＬのグループとにグループ化され、モジュール振分部３０２Ａは、モジュール３０３Ａ１〜３０３ＡＬのグループを管理し、モジュール振分部３０２Ｍは、モジュール３０３Ｍ１〜３０３ＭＬのグループを管理する。ここで、モジュール振分部３０２がモジュール３０３のグループを管理するとは、モジュール振分部３０２が当該グループに属するモジュール３０３を利用可能であることを意味する。
【００６４】
本実施例では、モジュール振分部３０２には、ハッシュを用いた振分方法（第１振分方法）、ラウンドロビンを用いた振分方法（第２振分方法）、並びにハッシュ及びラウンドロビンを用いた振分方法（第３振分方法）のいずれかが設定される。
【００６５】
第１振分方法が設定されたモジュール振分部３０２は、入力されたパケットに含まれる値を入力としてハッシュ関数を計算し、計算した値に対応するモジュール３０３に、入力されたパケットを出力する。なお、入力されたパケットに含まれる値に基づいて出力するモジュール３０３を決定できればよく、ハッシュ関数を用いなくてもよい。
【００６６】
第２振分方法が設定されたモジュール振分部３０２は、前回パケットを出力したモジュール３０３の次のモジュール３０３に入力されたパケットを出力する。
【００６７】
第３振分方法が設定されたモジュール振分部３０２は、入力されたパケットに含まれる値を入力としてハッシュ関数を計算し、計算した値に対応するモジュール３０３のグループを決定し、当該決定されたグループに属するモジュール３０３からラウンドロビンで出力先のモジュール３０３を決定し、決定したモジュール３０３に入力されたパケットを出力する。
【００６８】
モジュール振分部３０２Ａ〜３０２Ｍは、それぞれ、ハッシュ論理部３５２Ａ〜３５２Ｍとラウンドロビン（ＲＲ）論理部３６２Ａ１〜３６２ＡＡ及び３６２Ｍ１〜３６２ＭＢとを有する。ハッシュ論理部３５２Ａ〜３５２Ｍを総称する場合、ハッシュ論理部３５２と記載し、ＲＲ論理部３６２Ａ１〜３６２ＡＡ及び３６２Ｍ１〜３６２ＭＢを総称する場合、ＲＲ論理部３６２と記載する。なお、パケット制御部２０４の図示しないメモリ又はレジスタ２０９には、各ハッシュ論理部３５２Ａ〜３５２Ｍに対応する振分関数管理テーブル５Ａ〜５Ｍが格納され、各ＲＲ論理部３６２Ａ１〜３６２ＡＡ及び３６２Ｍ１〜３６２ＭＢに対応する利用モジュール管理テーブル６Ａ１〜６Ｍ１が格納される。
【００６９】
パケット振分部３０１からモジュール振分部３０２にパケットが入力された場合、ハッシュ論理部３５２は、自身に対応する振分関数管理テーブル５を参照し、振分先となるＲＲ論理部３６２を決定し、入力されたパケットを振分先として決定されたＲＲ論理部３６２に出力する。
【００７０】
第１振分方法又は第３振分方法が設定されたモジュール振分部３０２のハッシュ論理部３５２に対応する振分関数管理テーブル５には、ハッシュ関数の入力に用いるパケットに含まれる値、ハッシュ関数、及び振分先のＲＲ論理部３６２の識別情報が登録される。第２振分方法が設定されたモジュール振分部３０２のハッシュ論理部３５２に対応する振分関数管理テーブル５には、ハッシュ関数を使用しない旨、及び振分先となる一つのＲＲ論理部３６２の識別情報が登録される。なお、振分関数管理テーブル５の詳細は図５Ａ及び図５Ｂで説明する。
【００７１】
ＲＲ論理部３６２は、自身に対応する利用モジュール管理テーブル６を参照し、振分先のモジュール３０３を決定し、決定したモジュール３０３に入力されたパケットを出力する。利用モジュール管理テーブル６には、ＲＲ論理部３６２が出力できる少なくとも一つのモジュール３０３の識別情報が登録される。第１振分方法が設定されたモジュール振分部３０２のＲＲ論理部３６２に対応する利用モジュール管理テーブル６には、一つのモジュール３０３の識別情報しか登録されない。このため、ハッシュを用いる振分方法が設定されたモジュール振分部３０２のＲＲ論理部３６２は、ラウンドロビンによらず、当該一つのモジュール３０３に入力されたパケットを出力する。第２振分方法又は第３振分方法が設定されたモジュール振分部３０２のＲＲ論理部３６２に対応する利用モジュール管理テーブル６には、複数のモジュール３０３の識別情報が登録される。このため、第２振分方法又は第３振分方法が設定されたモジュール振分部３０２のＲＲ論理部３６２は、当該複数のモジュール３０３から順番に振分先のモジュール３０３を決定し、決定したモジュール３０３に入力されたパケットを出力する。
【００７２】
各ＲＲ論理部３６２が、全てのモジュール３０３に接続されている。モジュール振分部３０２Ａがモジュール３０３Ａ１〜３０３ＡＬＳＩ５２０を一つのグループとして管理し、自身に設定された振分方法に基づいて、モジュール３０３Ａ１〜３０３ＡＬの中から振分先のモジュール３０３を決定する。モジュール振分部３０２Ｍがモジュール３０３Ｍ１〜３０３ＭＬを一つのグループとして管理し、自身に設定された振分方法に基づいて、モジュール３０３Ｍ１〜３０３ＭＬの中から振分先のモジュール３０３を決定する。なお、モジュール振分部３０２の処理の詳細は、図１２及び図１３で詳細に説明する。
【００７３】
モジュール３０３は、任意のパケット処理を実行するパケット処理回路である。ＮＩＦ管理部２１０によって、パケット処理を実行するためのプログラムがインストールされる。モジュール３０３は、ＲＲ論理部３６２から入力されたパケットに対してインストールされたプログラムに対応する処理を実行し、パケットをモジュール多重部３０４に出力する。図３では、モジュール３０３Ａ１〜３０３ＡＬは同じ種別のデータにパケット処理を実行し、モジュール３０３Ｍ１〜３０３ＭＬは同じ種別のデータにパケット処理を実行する。モジュール３０３Ａ１〜３０３ＡＬがパケット処理を実行するデータの種別と、モジュール３０３Ｍ１〜３０３ＭＬがパケット処理を実行するデータの種別とは異なるものとする。
【００７４】
例えば、ＶＬＡＮ処理に対応するプログラムがインストールされたモジュール３０３の動作について説明する。モジュール３０３は、入力されたパケットのＶＬＡＮヘッダに基づいて、パケットのフローＩＤを識別し、識別したフローＩＤに基づいて、出力ＮＩＦ  ＩＤ及び送信ポート等の転送先を決定する。また、モジュール３０３は、装置内ヘッダの出力ＮＩＦ  ＩＤ、送信ポート、及びフローＩＤに決定した値を格納する。さらに、モジュール３０３は、ポリシング（Ｐｏｌｉｃｉｎｇ）及びカラーリング（Ｃｏｌｏｒｉｎｇ）等のトラヒック制御も実施できる。
【００７５】
なお、モジュール３０３は、一度インストールされたプログラムをアンインストールでき、インストールされたプログラムを更新してもよい。
【００７６】
モジュール多重部３０４は、自身に対応する多重モジュール管理テーブル７を参照し、多重化の対象のモジュール３０３から入力されたパケットを多重化して、パケット多重部３０５に出力する。多重モジュール管理テーブル７には、多重化の対象のモジュール３０３の識別情報が登録される。多重モジュール管理テーブル７の詳細は、図７で説明する。また、モジュール多重部３０４の処理の詳細は、図１４で説明する。モジュール多重部３０４Ａに対応する多重モジュール管理テーブル７Ａには、多重化の対象のモジュール３０３の識別情報としてモジュール３０３Ａ１〜３０３ＡＬの識別情報が登録され、モジュール多重部３０４Ｍに対応する多重モジュール管理テーブル７Ｍには、多重化の対象のモジュール３０３の識別情報としてモジュール３０３Ｍ１〜３０３ＭＬの識別情報が登録される。
【００７７】
パケット多重部３０５は、Ｍ個のモジュール多重部３０４Ａ〜３０４Ｍから入力されたパケット（すなわち、モジュール３０３が出力したパケット）を多重化して、到着順にＳＷインタフェース２０５に出力する。
【００７８】
通信装置２が複数のパケットの種別を収容する場合、パケットの種別に基づいてパケットがモジュール振分部３０２に振け分けられるため、各モジュール振分部３０２が一つのグループとして管理するモジュール３０３には同じプログラムがインストールされる。各モジュール振分部３０２が一つのグループとして管理するモジュール３０３の数を増減することによって、各種別のパケットを通信するサービスが要求する条件（処理性能及びユーザ数等）を満たすようにできる。
【００７９】
図４Ａは、実施例のイーサタイプを種別識別情報として用いるパケット振分管理テーブル４の説明図である。
【００８０】
パケット振分管理テーブル４は、パケット振分部３０１が入力されたパケットをモジュール振分部３０２に振り分ける場合に参照される。パケット振分管理テーブル４は、種別ＩＤ４０１及びモジュールグループＩＤ４０２を含む。種別ＩＤ４０１には、パケットの種別を識別する種別識別情報が登録され、図４Ａでは、種別ＩＤ４０１には、種別識別情報としてイーサータイプが登録される。モジュールグループＩＤ４０２には、振分先のモジュール振分部３０２の識別情報が登録される。
【００８１】
図４Ｂは、実施例のポート２０１の識別情報を種別識別情報として用いるパケット振分管理テーブル４の説明図である。
【００８２】
パケット振分管理テーブル４の種別ＩＤ４０１には、種別識別情報としてパケットを受信したポート２０１の識別情報が登録される。ポート２０１によって送受信するパケットの種別が異なる場合には、ポート２０１の識別情報を種別識別情報として利用できる。例えば、図４Ｂでは、「ＩＤ１」及び「ＩＤ２」のポート２０１では、同じ種別のパケットを送受信するため、ポート２０１の「ＩＤ１」及び「ＩＤ２」とモジュールグループＩＤ「１」とが対応付けられ、「ＩＤ３」のポート２０１は、「ＩＤ１」及び「ＩＤ２」のポート２０１と異なる種別のパケットを送受信するため、ポート２０１の「ＩＤ３」とモジュールグループＩＤ「２」とが対応付けられる。
【００８３】
パケット振分管理テーブル４は、ＮＩＦ管理部２１０によって設定される。
【００８４】
図５Ａは、実施例の振分関数を用いてパケットを振り分けるハッシュ論理部３５２に対応する振分関数管理テーブル５の説明図である。
【００８５】
振分関数を用いてパケットを振り分けるハッシュ論理部３５２とは、第１振分方法、又は第３振分方法が設定されたモジュール振分部３０２のハッシュ論理部３５２である。
【００８６】
振分関数管理テーブル５は、識別キー５０１、振分関数５０２、ＲＲ論理部ＩＤ５０３を含む。
【００８７】
識別キー５０１には、振分関数５０２に登録された関数に入力される値（パケットの一部の値）の種類が登録される。振分関数５０２には、ハッシュ論理部３５２が入力されたパケットをモジュール３０３に振り分けるために使用する関数の識別情報が登録される。ＲＲ論理部ＩＤ５０３には、ハッシュ論理部３５２が振り分け可能な（利用可能な）複数のＲＲ論理部３６２の識別情報が登録される。
【００８８】
図５Ａに示す振分関数管理テーブル５の識別キー５０１には、宛先ＩＰアドレスが登録され、振分関数５０２には、ＣＲＣ１６（ＣＣＩＴＴ）が登録される。
【００８９】
図５Ｂは、実施例の振分関数を用いずパケットを振り分けるハッシュ論理部３５２に対応する振分関数管理テーブル５の説明図である。
【００９０】
振分関数を用いずパケットを振り分けるハッシュ論理部３５２は、第２振分方法が設定されたモジュール振分部３０２のハッシュ論理部３５２である。
【００９１】
識別キー５０１には、任意の識別情報が登録される。振分関数５０２には、振分関数を用いないことを示す情報が登録される。ＲＲ論理部ＩＤ５０３には、一つのＲＲ論理部３６２の識別情報が登録される。すなわち、ハッシュ論理部３５２は、振分関数を用いず、ＲＲ論理部ＩＤ５０３に登録された識別情報によって識別されるＲＲ論理部３６２にパケットを出力する。
【００９２】
なお、振分関数管理テーブル５は、ＮＩＦ管理部２１０によって設定される。
【００９３】
図６は、実施例の利用モジュール管理テーブル６の説明図である。
【００９４】
利用モジュール管理テーブル６には、各ＲＲ論理部３６２の振分先の候補となる利用可能なモジュール３０３の識別情報と、各ＲＲ論理部３６２に入力されたパケットの数、及びバイト数とが登録される。
【００９５】
利用モジュール管理テーブル６は、利用モジュールＩＤ６０１、及びモジュールグループ利用帯域６０２を含む。
【００９６】
利用モジュールＩＤ６０１には、各ＲＲ論理部３６２の利用可能なモジュール３０３の識別情報が登録される。なお、第１振分方法が設定されたモジュール振分部３０２のＲＲ論理部３６２が利用可能なモジュール３０３は一つのみであるので、当該ＲＲ論理部３６２に対応する利用モジュール管理テーブル６の利用モジュールＩＤ６０１には、当該一つのモジュール３０３の識別情報が登録される。第２振分方法又は第３振分方法が設定されたモジュール振分部３０２のＲＲ論理部３６２が利用可能なモジュール３０３は複数であるので、当該ＲＲ論理部３６２に対応する利用モジュール管理テーブル６の利用モジュールＩＤ６０１には、当該複数のモジュール３０３の識別情報が登録される。
【００９７】
モジュールグループ利用帯域６０２は、受信パケット数及び受信バイト数を含み、受信バイト数には、各ＲＲ論理部３６２に入力されたパケットの数が登録され、受信バイト数には、各ＲＲ論理部３６２に入力されたパケットのバイト数が登録される。
【００９８】
なお、利用モジュールＩＤ６０１は、ＮＩＦ管理部２１０によって設定される。また、モジュールグループ利用帯域６０２に登録された値は、ＲＲ論理部３６２が振分先のモジュール３０３にパケットを出力した場合に更新される（図１３に示すＳ１３０５参照）。
【００９９】
図７は、実施例の多重モジュール管理テーブル７の説明図である。
【０１００】
多重モジュール管理テーブル７は、利用モジュールＩＤ７０１を含み、利用モジュールＩＤ７０１には、各モジュール多重部３０４が多重化するパケットを出力するモジュール３０３の識別情報が登録される。
【０１０１】
なお、多重モジュール管理テーブル７は、ＮＩＦ管理部２１０によって設定される。
【０１０２】
次に、第１振分方法、第２振分方法、又は第３振分方法が設定されたモジュール振分部３０２Ａについて、図８〜図１０を用いて説明する。
【０１０３】
図８は、実施例の第１振分方法が設定されたモジュール振分部３０２の説明図である。
【０１０４】
ハッシュ論理部３５２が振り分け可能な（利用可能な）ＲＲ論理部３６２は複数設定され、ＲＲ論理部３６２が振り分け可能な（利用可能な）モジュール３０３は一つに設定される。
【０１０５】
図８では、ハッシュ論理部３５２Ａは、ＲＲ論理部３６２Ａ１〜３６２Ａ３を利用可能に設定され、ＲＲ論理部３６２Ａ１はモジュール３０３Ａ１を利用可能に設定され、ＲＲ論理部３６２Ａ２はモジュール３０３Ａ２を利用可能に設定され、ＲＲ論理部３６２Ａ３はモジュール３０３Ａ３を利用可能に設定される。
【０１０６】
図８に示す振分関数管理テーブル５Ａでは、識別キー５０１に宛先ＩＰアドレスが登録され、振分関数５０２にはハッシュ関数の識別情報が登録され、ＲＲ論理部ＩＤ５０３にはＲＲ論理部３６２Ａ１（ＩＤ１）〜ＲＲ論理部３６２Ａ３（ＩＤ３）が利用可能である旨が登録される。また、ＲＲ論理部３６２Ａ１に対応する利用モジュール管理テーブル６Ａの利用モジュールＩＤ６０１にはモジュール３０３Ａ１（ＩＤ１）が利用可能である旨が登録され、ＲＲ論理部３６２Ａ２に対応する利用モジュール管理テーブル６Ｂの利用モジュールＩＤ６０１にはモジュール３０３Ａ２（ＩＤ２）が利用可能である旨が登録され、ＲＲ論理部３６２Ａ３に対応する利用モジュール管理テーブル６Ｃの利用モジュールＩＤ６０１にはモジュール３０３Ａ３（ＩＤ３）が利用可能である旨が登録される。
【０１０７】
したがって、モジュール振分部３０２Ａに第１振分方法が設定されている場合、ハッシュ論理部３５２Ａは、入力されたパケットに含まれる宛先ＩＰアドレスに基づいてハッシュ関数を計算する。そして、ハッシュ論理部３５２Ａは、入力されたパケットを、ＲＲ論理部３６２Ａ１〜３６２Ａ３の中から計算結果の値に対応するＲＲ論理部３６２に振り分ける。ここでは、ＲＲ論理部３６２Ａ１にパケットが振り分けられたものとする。ＲＲ論理部３６２Ａ１は、一つのモジュール３０３Ａ１が利用可能であるので、モジュール３０３Ａ１にパケットを出力する。
【０１０８】
図９は、実施例の第２振分方法が設定されたモジュール振分部３０２の説明図である。
【０１０９】
第２振分方法が設定されたモジュール振分部３０２においては、ハッシュ論理部３５２が利用可能なＲＲ論理部３６２は一つに設定され、ＲＲ論理部３６２が利用可能なモジュール３０３は複数設定される。
【０１１０】
図９では、ハッシュ論理部３５２Ａは、ＲＲ論理部３６２Ａ１を利用可能に設定され、ＲＲ論理部３６２Ａ１はモジュール３０３Ａ１〜モジュール３０３Ａ３を利用可能に設定される。
【０１１１】
ハッシュ論理部３５２は、ハッシュ関数を計算しないので、図９に示す振分関数管理テーブル５Ａでは、識別キー５０１にＭＰＬＳラベルが登録され、振分関数５０２にはハッシュ関数を使用しない旨が登録され、ＲＲ論理部ＩＤ５０３にはＲＲ論理部３６２Ａ１（ＩＤ１）が利用可能である旨が登録される。また、ＲＲ論理部３６２Ａに対応する利用モジュール管理テーブル６Ａの利用モジュールＩＤ６０１にはモジュール３０３Ａ１（ＩＤ１）〜モジュール３０３Ａ３（ＩＤ３）が利用可能である旨が登録される。
【０１１２】
したがって、モジュール振分部３０２Ａに第２振分方法が設定されている場合、ハッシュ論理部３５２Ａは、ハッシュ関数を計算せずに、入力されたパケットを、ＲＲ論理部３６２Ａ１に振り分ける。ＲＲ論理部３６２Ａ１は、前回入力されたパケットをモジュール３０３Ａ１に出力していたとすると、今回入力されたパケットをモジュール３０３Ａ１の次のモジュール３０３Ａ２に出力する。
【０１１３】
図１０は、実施例の第３振分方法が設定されたモジュール振分部３０２の説明図である。
【０１１４】
第３振分方法が設定されたモジュール振分部３０２においては、ハッシュ論理部３５２が利用可能なＲＲ論理部３６２は複数設定され、ＲＲ論理部３６２が利用可能なモジュール３０３は複数設定される。
【０１１５】
図１０では、ハッシュ論理部３５２Ａは、ＲＲ論理部３６２Ａ１及びＲＲ論理部３６２Ａ２を利用可能に設定され、ＲＲ論理部３６２Ａは、モジュール３０３Ａ１〜モジュール３０３Ａ３を利用可能に設定され、ＲＲ論理部３６２Ｂは、モジュール３０３Ａ４〜モジュール３０３Ａ６を利用可能に設定される。
【０１１６】
図１０に示す振分関数管理テーブル５Ａでは、識別キー５０１に宛先ＩＰアドレスが登録され、振分関数５０２にはハッシュ関数の識別情報が登録され、ＲＲ論理部ＩＤ５０３にはＲＲ論理部３６２Ａ１（ＩＤ１）及びＲＲ論理部３６２Ａ２（ＩＤ２）が利用可能である旨が登録される。また、ＲＲ論理部３６２Ａ１に対応する利用モジュール管理テーブル６Ａの利用モジュールＩＤ６０１にはモジュール３０３Ａ１（ＩＤ１）〜モジュール３０３Ａ３（ＩＤ３）が利用可能である旨が登録され、ＲＲ論理部３６２Ａ２に対応する利用モジュール管理テーブル６Ｂの利用モジュールＩＤ６０１にはモジュール３０３Ａ４（ＩＤ４）〜モジュール３０３Ａ６（ＩＤ６）が利用可能である旨が登録される。
【０１１７】
したがって、モジュール振分部３０２Ａに第３振分方法が設定されている場合、ハッシュ論理部３５２Ａは、入力されたパケットに含まれる宛先ＩＰアドレスに基づいてハッシュ関数を計算する。そして、ハッシュ論理部３５２Ａは、入力されたパケットを、ＲＲ論理部３６２Ａ１及び３６２Ａ２の中から計算結果の値に対応するＲＲ論理部３６２に振り分ける。ここでは、ＲＲ論理部３６２Ａ１にパケットが振り分けられたものとする。ＲＲ論理部３６２Ａ１は、モジュール３０３Ａ１〜モジュール３０３Ａ３が利用可能であり、前回入力されたパケットをモジュール３０３Ａ１に出力していたとすると、今回入力されたパケットをモジュール３０３Ａ１の次のモジュール３０３Ａ２に出力する。
【０１１８】
次に、パケット振分部３０１が実行するパケット振分処理について、図１１Ａ及び図１１Ｂを用いて説明する。
【０１１９】
図１１Ａは、実施例のイーサタイプに基づくパケット振分処理のフローチャートである。
【０１２０】
パケット振分処理は、ＭＵＸ２０３からパケット振分部３０１にパケットが入力された場合にパケット振分部３０１によって実行される。
【０１２１】
まず、パケット振分部３０１は、ＭＵＸ２０３から入力されたパケットのヘッダからイーサタイプを取得する（Ｓ１１０１）。次に、パケット振分部３０１は、パケット振分管理テーブル４を参照し、Ｓ１１０１で取得したイーサタイプに対応するモジュールグループＩＤを取得する（Ｓ１１０２）。具体的には、パケット振分部３０１は、図４Ａに示すパケット振分管理テーブル４の種別ＩＤ（イーサＴｙｐｅ）４０１にＳ１１０１で取得したイーサタイプが登録されたレコードを取得し、取得したレコードのモジュールグループＩＤ４０２に登録されたモジュールグループＩＤを取得する。
【０１２２】
次に、パケット振分部３０１は、Ｓ１１０２で取得したモジュールグループＩＤによって識別されるモジュール振分部３０２に、入力されたパケットを出力し（Ｓ１１０３）、パケット振分処理を終了する。
【０１２３】
図１１Ｂは、実施例の受信ポートＩＤに基づくパケット振分処理のフローチャートである。
【０１２４】
まず、パケット振分部３０１は、ＭＵＸ２０３から入力されたパケットの装置内ヘッダから受信ポートＩＤを取得する（Ｓ１１１１）。次に、パケット振分部３０１は、パケット振分管理テーブル４を参照し、Ｓ１１１１で取得した受信ポートＩＤに対応するモジュールグループＩＤを取得する（Ｓ１１１２）。具体的には、パケット振分部３０１は、図４Ｂに示すパケット振分管理テーブル４の種別ＩＤ（ポートＩＤ）４０１にＳ１１１１で取得した受信ポートＩＤが登録されたレコードを取得し、取得したレコードのモジュールグループＩＤ４０２に登録されたモジュールグループＩＤを取得する。
【０１２５】
次に、パケット振分部３０１は、Ｓ１１１２で取得したモジュールグループＩＤによって識別されるモジュール振分部３０２に、入力されたパケットを出力し（Ｓ１１１３）、パケット振分処理を終了する。
【０１２６】
次に、モジュール振分部３０２のハッシュ論理部３５２が実行するハッシュ論理処理について、図１２を用いて説明する。図１２は、実施例のハッシュ論理処理のフローチャートである。
【０１２７】
ハッシュ論理処理は、パケット振分部３０１からハッシュ論理部３５２にパケットが入力された場合、ハッシュ論理部３５２によって実行される。
【０１２８】
まず、ハッシュ論理部３５２は、振分関数管理テーブル５から識別キー５０１に登録された情報、振分関数５０２に登録された情報、及びＲＲ論理部ＩＤ５０３に登録された情報（ビットマップ）を取得する（Ｓ１２０１）。
【０１２９】
次に、ハッシュ論理部３５２は、Ｓ１２０１で取得した振分関数５０２に登録された情報を参照し、振分関数を使用するか否かを判定する（Ｓ１２０２）。ハッシュ論理部３５２は、振分関数５０２に使用する振分関数が登録されている場合、振分関数を使用すると判定し、振分関数５０２に振分関数を使用しない旨を示す情報が登録されている場合、振分関数を使用しないと判定する。
【０１３０】
Ｓ１２０２の処理で、振分関数を使用しないと判定された場合（Ｓ１２０２：Ｎｏ）、ハッシュ論理部３５２は、Ｓ１２０１で取得したＲＲ論理部ＩＤ５０３に登録された情報から利用可能なＲＲ論理部３６２の識別情報から、最も若番である識別情報を取得し、取得した識別情報によって識別されるＲＲ論理部３６２に、入力されたパケットを出力し（Ｓ１２０６）、ハッシュ論理処理を終了する。図９では、第２振分方法が設定されたモジュール振分部３０２のハッシュ論理部３５２に対応する振分関数管理テーブル５ＡのＲＲ論理部ＩＤ５０３では、一つのＲＲ論理部３６２が利用可能に設定されているとしたが、複数のＲＲ論理部３６２が利用可能に設定されてもよい。この場合であっても、Ｓ１２０６で、ハッシュ論理部３５２が、最も若番の識別情報によって識別されるＲＲ論理部３６２にパケットを出力するので、ハッシュ論理部３５２は、最も若番の識別情報によって識別されるＲＲ論理部３６２のみを利用可能である。
【０１３１】
一方、Ｓ１２０２の処理で、振分関数を使用すると判定された場合（Ｓ１２０２：Ｙｅｓ）、ハッシュ論理部３５２は、Ｓ１２０１で取得した識別キーに対応する情報を入力されたパケットから取得する（Ｓ１２０３）。そして、ハッシュ論理部３５２は、Ｓ１２０１で取得した振分関数５０２に登録された情報に基づいて、Ｓ１２０１で取得したＲＲ論理部ＩＤで利用可能に設定されたＲＲ論理部３６２の数の範囲内で、Ｓ１２０３で取得した情報を入力として振分関数を計算する（Ｓ１２０４）。
【０１３２】
次に、ハッシュ論理部３５２は、Ｓ１２０４での計算結果の値に対応するＲＲ論理部３６２の識別情報によって識別されるＲＲ論理部３６２に、入力されたパケットを出力し（Ｓ１２０５）、ハッシュ論理処理を終了する。
【０１３３】
次に、モジュール振分部３０２のＲＲ論理部３６２が実行するラウンドロビン（ＲＲ）論理処理について、図１３を用いて説明する。図１３は、実施例のＲＲ論理処理のフローチャートである。
【０１３４】
ＲＲ論理処理は、ハッシュ論理部３５２からＲＲ論理部３６２にパケットが入力された場合、ＲＲ論理部３６２によって実行される。
【０１３５】
まず、ＲＲ論理部３６２は、入力されたパケットの装置内ヘッダからパケット長を取得する（Ｓ１３０１）。次に、ＲＲ論理部３６２は、利用モジュール管理テーブル６を参照し、利用モジュールＩＤ６０１に登録された情報、並びに、モジュールグループ利用帯域６０２の受信パケット数及び受信バイト数に登録された情報を取得する（Ｓ１３０２）。
【０１３６】
次に、ＲＲ論理部３６２は、内部カウンタに基づいてパケットを出力するモジュール３０３をラウンドロビンで順番に選択する（Ｓ１３０３）。内部カウンタでは、パケットを出力するモジュールＩＤが管理される。例えば、図９に示す例では、ＲＲ論理部３６２Ａ１の内部カウンタは、「０」がモジュール３０３Ａ１に対応付いており、「１」がモジュール３０３Ａ２に対応付いており、「２」がモジュール３０３Ａ３に対応付いている。
【０１３７】
そして、ＲＲ論理部３６２は、Ｓ１３０３で選択したモジュール３０３にパケットを出力し、次にパケットを出力するモジュール３０３を示すように内部カウンタを更新し、次のパケットに備える（Ｓ１３０４）。例えば、Ｓ１３０３で内部カウンタが「０」であれば、Ｓ１３０４でモジュール３０３Ａ１にパケットが出力され、内部カウンタが「１」に更新される。
【０１３８】
次に、ＲＲ論理部３６２は、Ｓ１３０２で取得したモジュールグループ利用帯域６０２の受信パケット数に１を加算し、受信バイト数にＳ１３０１で取得したパケット長を加算し、加算した値をそれぞれ、利用モジュール管理テーブル６の受信パケット数及び受信バイト数に登録し（Ｓ１３０５）、ＲＲ論理処理を終了する。
【０１３９】
次に、モジュール多重部３０４が実行するモジュール多重処理について、図１４を用いて説明する。図１４は、実施例のモジュール多重処理のフローチャートである。
【０１４０】
モジュール多重処理は、モジュール３０３からモジュール多重部３０４にパケットが入力された場合、モジュール多重部３０４によって実行される。
【０１４１】
モジュール多重部３０４は、多重モジュール管理テーブル７の利用モジュールＩＤ７０１に登録された多重化の対象となるモジュール３０３の識別情報を取得する（Ｓ１４０１）。次に、モジュール多重部３０４は、パケットを出力したモジュール３０３の識別情報がＳ１４０１で取得したモジュール３０３の識別情報に含まれるか否かを判定する（Ｓ１４０２）。
【０１４２】
Ｓ１４０２で、パケットを出力したモジュール３０３の識別情報がＳ１４０１で取得したモジュール３０３の識別情報に含まれないと判定された場合（Ｓ１４０２：Ｎｏ）、モジュール多重部３０４は、入力されたパケットを廃棄し（Ｓ１４０４）、モジュール多重処理を終了する。
【０１４３】
一方、Ｓ１４０２で、パケットを出力したモジュール３０３の識別情報がＳ１４０１で取得したモジュール３０３の識別情報に含まれると判定された場合（Ｓ１４０２：Ｙｅｓ）、モジュール多重部３０４は、パケット多重部３０５にパケットを出力し（Ｓ１４０３）、モジュール多重処理を終了する。
【０１４４】
図１５は、実施例のネットワーク管理装置１０１のブロック図である。
【０１４５】
ネットワーク管理装置１０１は、サービス情報管理データベース（ＤＢ）１５０１、モジュール利用状況管理データベース（ＤＢ）１５０２、利用者管理データベース（ＤＢ）１５０３、ネットワーク（ＮＷ）リソース管理データベース（ＤＢ）１５０４、モジュールプログラムデータベース（ＤＢ）１５０５、ＣＰＵ１５０９、ネットワーク利用受付システム連携インタフェース１５１０、通信装置制御インタフェース１５１１、及び保守者端末接続インタフェース１５１２を有する。なお、各データベースは、図示しないメモリに格納される。
【０１４６】
サービス情報管理データベース１５０１には、物理ネットワークに収容されるネットワークのサービスが要求する条件（使用帯域、及び収容ユーザ数等）が登録される。サービス情報管理データベース１５０１の詳細は図１６で説明する。
【０１４７】
モジュール利用状況管理データベース１５０２には、通信装置２ごとのモジュール３０３の利用状況が登録される。モジュール利用状況管理データベース１５０２の詳細は図１７で説明する。
【０１４８】
利用者管理データベース１５０３には、物理ネットワークに収容されるネットワークのサービスを利用する利用者に関する情報が登録される。ネットワークリソース管理データベース１５０４には、通信装置２ごとのリソースに関する情報が登録される。モジュールプログラムデータベース１５０５には、各モジュール３０３にインストール可能なプログラムが登録される。
【０１４９】
ＣＰＵ１５０９は、図示しないメモリに格納されたプログラム等を実行することによって、ネットワーク管理装置１０１の機能を実装する演算装置である。ＣＰＵ１５０９は、振分方法決定部１５０６、モジュールダウンロード部１５０７、及びネットワークパス計算部１５０８を有する。図示しないメモリには、振分方法決定部１５０６、モジュールダウンロード部１５０７、及びネットワークパス計算部１５０８に対応するプログラムが格納され、ＣＰＵ１５０９がこれらのプログラムを実行することによって、振分方法決定部１５０６、モジュールダウンロード部１５０７、及びネットワークパス計算部１５０８は実現される。
【０１５０】
振分方法決定部１５０６は、サービス情報管理データベース１５０１及びモジュール利用状況管理データベース１５０２を参照して、通信装置２に設定されるパケット処理機能（使用モジュール数及び振分方法等）を決定する振分方法決定処理を実行する。振分方法決定処理の詳細は図２０Ａ及び図２０Ｂで説明する。
【０１５１】
モジュールダウンロード部１５０７は、通信装置２からのダウンロード要求に基づいて、通信装置２のモジュール３０３にインストールされるモジュールを送信する。ネットワークパス計算部１５０８は、ネットワークリソース管理データベース１５０４を参照し、物理ネットワーク内の通信経路を計算する。
【０１５２】
ネットワーク利用受付システム連携インタフェース１５１０は、ネットワーク管理装置１０１がネットワーク利用受付システム１０２と通信するためのインタフェースである。通信装置制御インタフェース１５１１は、ネットワーク管理装置１０１が通信装置２と通信するためのインタフェースである。保守者端末接続インタフェース１５１２は、ネットワーク管理装置１０１が保守者端末２１と通信するためのインタフェースである。
【０１５３】
図１６は、実施例のサービス情報管理データベース１５０１の説明図である。
【０１５４】
サービス情報管理データベース１５０１は、サービス種別１６０１、使用帯域１６０２、収容ユーザ数１６０３、及び優先性能１６０４を含む。サービス種別１６０１には、物理ネットワークに収容され、運用中のネットワークのサービスの種別を示す情報が登録される。使用帯域１６０２には、各ネットワークのサービスに割り当てられる処理性能を示す帯域が登録される。収容ユーザ数１６０３には、各ネットワークのサービスが収容するユーザ数が登録される。優先性能１６０４には、使用帯域及び収容ユーザ数のうち優先される性能が登録される。
【０１５５】
図１７は、実施例のモジュール利用状況管理データベース１５０２の説明図である。
【０１５６】
モジュール利用状況管理データベース１５０２は、装置ＩＤ１７０１、ラインカードＩＤ１７０２、搭載モジュール数１７０３、帯域／モジュール１７０４、収容ユーザ／モジュール１７０５、使用モジュール数１７０６、パケット種別１７０７、振分方法１７０８、及び未使用モジュール数１７０９を含む。
【０１５７】
装置ＩＤ１７０１には、通信装置２の識別情報が登録される。ラインカードＩＤ１７０２には、通信装置２に備わるＮＩＦの識別情報が登録される。搭載モジュール数１７０３には、ＮＩＦに搭載されたモジュール３０３の数が登録される。帯域／モジュール１７０４には、一つのモジュール３０３の処理性能を示す帯域が登録される。収容ユーザ／モジュール１７０５には、一つのモジュール３０３に収容可能なユーザ数が登録される。
【０１５８】
使用モジュール数１７０６には、ＮＩＦに搭載されるモジュール３０３のうち同じ種別のパケットに対してパケット処理を実行するグループに属するモジュール３０３の数が登録される。パケット種別１７０７には、各グループに属するモジュール３０３がパケット処理を実行するパケットの種別が登録される。振分方法１７０８には、モジュール振分部３０２に設定されたパケットの振分方法が登録される。未使用モジュール数１７０９には、ＮＩＦに搭載されるモジュール３０３のうち使用されていないモジュール３０３の数が登録される。
【０１５９】
なお、モジュール利用状況管理データベース１５０２には、モジュール３０３に関する情報のみならず、パケット処理部２１１に関する情報が登録されてもよい。
【０１６０】
通信装置２のＮＩＦ管理部２１０は、ＮＩＦに搭載された各モジュール振分部３０２が利用可能なモジュール３０３の数、及び各モジュール振分部３０２が利用可能なモジュール３０３がパケット処理を実行するパケットの種別、及び各モジュール振分部３０２に設定された振分方法を収集し、収集したデータを振分方法管理データベース１８００に登録する。振分方法管理データベース１８００は、ＮＩＦが有する図示しないメモリに格納される。
【０１６１】
図１８は、実施例の振分方法管理データベース１８００の説明図である。
【０１６２】
振分方法管理データベース１８００は、搭載モジュール数１８０１、モジュールグループＩＤ１８０２、使用モジュール数１８０３、モジュールＩＤ１８０４、パケット種別１８０５、及び振分方法１８０６を含む。
【０１６３】
搭載モジュール数１８０１には、ＮＩＦ管理部２１０を有するＮＩＦに搭載されたモジュールの数が登録される。モジュールグループＩＤ１８０２には、モジュール振分部３０２の識別情報が登録される。使用モジュール数１８０３には、モジュール振分部３０２が利用可能なモジュール３０３の数が登録される。モジュールＩＤ１８０４には、モジュール振分部３０２が利用可能なモジュール３０３の識別情報が登録される。パケット種別１８０５には、モジュール振分部３０２が利用可能なモジュール３０３がパケット処理を実行するパケットの種別が登録される。振分方法１８０６には、モジュール振分部３０２に設定された振分方法が登録される。
【０１６４】
なお、装置管理部２１２が、各ＮＩＦに対応する振分方法管理データベース１８００を有してもよい。
【０１６５】
図１９は、実施例のネットワークが提供するサービスと振分方法との関係の説明図である。
【０１６６】
図１５では、一つのモジュール３０３の処理性能を示す帯域及び収容ユーザ数は、それぞれ１０Ｇｂｉｔ／ｓ及び５００００であり、一つのパケット制御部２０４に搭載されるモジュール３０３の数は２０である場合の例について説明する。
【０１６７】
第１振分方法では、モジュール振分部３０２が利用可能な各モジュール３０３には、所定の宛先ＩＰアドレスのパケットのみが入力される。このため、各モジュール３０３は、自身に入力される宛先ＩＰアドレスのパケットに関する情報のみを保持していればよい。一方、第２振分方法では、モジュール振分部３０２が利用可能な各モジュール３０３にはどのパケットが入力されるか把握できないため、各モジュールは、全てのパケットに関する情報を保持しなければならない。このため、第１振分方法における収容ユーザ数は、第２振分方法における収容ユーザ数より多い。したげって、第１振分方法は、収容ユーザ数を優先するものである。
【０１６８】
また、第１振分方法では、あるモジュール３０３にパケットが集中して入力されてしまい、当該モジュール３０３が処理性能のボトルネックとなる可能性がある。一方、第２振分方法では、モジュール振分部３０２が利用可能な全てのモジュール３０３に均等にパケットが入力されるので、あるモジュール３０３が処理性能のボトルネックとはならない。このため、第２振分方法における処理性能は、第１振分方法における処理性能より高い。したがって、第２振分方法は、処理性能を優先するものである。
【０１６９】
仮想専用線ネットワーク１０５が提供するサービスは、収容ユーザ数より処理性能を優先する。このため、仮想専用線ネットワーク１０５のパケットを処理するモジュール３０３を利用可能なモジュール振分部３０２には、第２振分方法が設定されることが望ましい。第２振分方法が設定されたモジュール振分部３０２は利用可能な全てのモジュール３０３の処理性能を提供できる。第２振分方法が設定されたモジュール振分部３０２が利用可能なモジュールの数が２０である場合には、当該モジュール振分部３０２は、２００Ｇｂｉｔ／ｓ（１０Ｇｂｉｔ／ｓ×２０個）の処理性能を提供できる。
【０１７０】
一方、仮想モバイルネットワーク１０６が提供するサービスは、処理性能より収容ユーザ数を優先する。このため、仮想モバイルネットワーク１０６のパケットを処理するモジュール３０３を利用可能なモジュール振分部３０２には、第１振分方法が設定されることが望ましい。第１振分方法が設定されたモジュール振分部３０２は利用可能な全てのモジュール３０３の処理性能を提供できる。第２振分方法が設定されたモジュール振分部３０２が利用可能なモジュールの数が２０である場合には、当該モジュール振分部３０２は、１００００００（５００００ユーザ数×２０個）のユーザを収容できる。
【０１７１】
次に、振分方法決定部１５０６によって実行される振分方法決定処理について、図２０Ａ及び図２０Ｂを用いて説明する。図２０Ａ及び図２０Ｂは、実施例の振分方法決定処理のフローチャートである。
【０１７２】
振分方法決定処理は、保守者端末１０３からサービス情報管理データベース１５０１にサービスの条件が登録された場合に、振分方法決定部１５０６によって実行される。
【０１７３】
まず、振分方法決定部１５０６は、サービス情報管理データベース１５０１に登録されたサービスに対応するレコードの使用帯域１６０２、収容ユーザ数１６０３、及び優先性能１６０４に登録された情報を取得する（Ｓ２００１）。
【０１７４】
次に、振分方法決定部１５０６は、モジュール利用状況管理データベース１５０２を参照し、処理対象のＮＩＦを選択し、処理対象のＮＩＦの空き帯域及び空きユーザ数を算出する（Ｓ２００２）。
【０１７５】
例えば、振分方法決定部１５０６は、各ＮＩＦの未使用モジュール数が最も少ないＮＩＦを処理対象のＮＩＦとして選択してもよい。これによって、既に動作しているＮＩＦのモジュール３０３に新たなパケット処理を実行するプログラムをインストールでき、搭載された全てのモジュール３０３でパケット処理を実行しないＮＩＦを新たに動作させなくてもよいので、消費電力を低減できる。また、振分方法決定部１５０６は、各ＮＩＦの未使用モジュール数が最も多いＮＩＦを処理対象のＮＩＦとして選択してもよい。これによって、新たなサービスの条件を満たすことができるＮＩＦを一度目の振分方法決定処理で選択できる可能性が高くなる。なお、処理対象のＮＩＦの選択方法は複数の方法があり、例えば、保守者が保守者端末１０３を介して処理対象のＮＩＦを指定してもよい。
【０１７６】
処理対象のＮＩＦの空き帯域及び空きユーザ数の算出について説明する。まず、振分方法決定部１５０６は、モジュール利用状況管理データベース１５０２のラインカードＩＤ１７０２に、処理対象のＮＩＦの識別情報が登録されたレコードの帯域／モジュール１７０４、収容ユーザ／モジュール１７０５、及び未使用モジュール数１７０９に登録された値を取得する。そして、振分方法決定部１５０６は、帯域／モジュール１７０４に登録された値と未使用モジュール数１７０９に登録された値とを乗算して、空き帯域を算出する。また、振分方法決定部１５０６は、収容ユーザ／モジュール１７０５に登録された値と未使用モジュール数１７０９に登録された値とを乗算して、空きユーザ数を算出する。
【０１７７】
次に、振分方法決定部１５０６は、Ｓ２００１で取得した優先性能１６０４に登録された優先性能が処理性能であるか収容ユーザ数であるかを判定する（Ｓ２００３）。
【０１７８】
Ｓ２００３で優先性能が処理性能であると判定された場合（Ｓ２００３：処理性能）、振分方法決定部１５０６は、Ｓ２００２で算出した空き帯域がＳ２００１で取得した使用帯域以上であるか否かを判定する（Ｓ２００４）。
【０１７９】
Ｓ２００４で空き帯域が使用帯域より小さいと判定された場合（Ｓ２００４：Ｎｏ）、振分方法決定部１５０６は、サービスに必要な帯域を満たすことができない旨を保守者端末１０３に通知し（Ｓ２００８）、振分方法決定処理を終了する。
【０１８０】
一方、Ｓ２００４で空き帯域が使用帯域以上であると判定された場合（Ｓ２００４：Ｙｅｓ）、振分方法決定部１５０６は、Ｓ２００１で取得した使用帯域を満たすために必要なモジュール数（Ｅ）を算出する（Ｓ２００５）。具体的には、振分方法決定部１５０６は、Ｓ２００１で取得した使用帯域を一モジュール３０３当たりの処理性能を示す帯域で除算し、除算結果である商をモジュール数（Ｅ）とする。なお、余りがある場合には、商に１を加算した値をモジュール数（Ｅ）とする。
【０１８１】
次に、振分方法決定部１５０６は、一モジュール３０３当たりの収容ユーザ数がＳ２００１で取得した収容ユーザ数以上であるか否かを判定する（Ｓ２００６）。
【０１８２】
Ｓ２００６で、一モジュール３０３当たりの収容ユーザ数がＳ２００１で取得した収容ユーザ数以上であると判定された場合（Ｓ２００６：Ｙｅｓ）、Ｓ２００５で算出されたモジュール数（Ｅ）のモジュール３０３間でラウンドロビンでパケットを振り分けることによって、サービスの処理性能及び収容ユーザ数を満たすことができる。このため、振分方法決定部１５０６は、モジュール利用状況管理データベース１５０２に、処理対象のＮＩＦにおいて振分方法が第２振分方法でＥ個のモジュール３０３が利用可能となったことを登録し（Ｓ２００７）、振分方法決定処理を終了する。
【０１８３】
具体的には、振分方法決定部１５０６は、モジュール利用状況管理データベース１５０２に新たなレコードを追加し、追加したレコードの装置ＩＤ１７０１に処理対象のＮＩＦを有する通信装置２の識別情報を登録し、ラインカードＩＤ１７０２に処理対象のＮＩＦの識別情報を登録し、搭載モジュール数１７０３に処理対象のＮＩＦが搭載するモジュール３０３の数を登録し、帯域／モジュール１７０４に一つのモジュール３０３の処理性能を示す帯域を登録し、収容ユーザ／モジュール１７０５に一つのモジュール３０３に収容可能なユーザ数を登録する。そして、振分方法決定部１５０６は、追加したレコードの使用モジュール数１７０６にＳ２００５で算出したモジュール３０３の数を登録し、パケット種別１７０７に、サービス情報管理データベース１５０１に登録されたサービスにおけるパケットの種別を登録し、振分方法１７０８にラウンドロビンを登録し、未使用モジュール数１７０９に、処理対象のＮＩＦの未使用のモジュール３０３の数を登録する。
【０１８４】
一方、Ｓ２００６で、一モジュール３０３当たりの収容ユーザ数がＳ２００１で取得した収容ユーザ数未満であると判定された場合（Ｓ２００６：Ｎｏ）、第２振分方法では、サービス情報管理データベース１５０１に登録されたサービスの収容ユーザ数を満たすことができないので、第３振分方法が設定可能であるかを検討する。
【０１８５】
まず、振分方法決定部１５０６は、サービス情報管理データベース１５０１に登録されたサービスの収容ユーザ数を満たすために必要なモジュール３０３の数（Ｆ）を算出する（Ｓ２００９）。具体的には、振分方法決定部１５０６は、Ｓ２００１で取得した収容ユーザ数を一モジュール３０３当たりの収容ユーザ数で除算し、除算結果である商をモジュール数（Ｆ）とする。なお、余りがある場合には、商に１を加算した値をモジュール数（Ｆ）とする。
【０１８６】
次に、振分方法決定部１５０６は、処理対象のＮＩＦの未使用のモジュール数が、Ｓ２００５で算出したモジュールの数（Ｅ）とＳ２００９で算出したモジュールの数（Ｆ）とを乗算した値以上であるか否かを判定する（Ｓ２０１０）。
【０１８７】
Ｓ２０１０で、処理対象のＮＩＦの未使用のモジュール数が、Ｓ２００５で算出したモジュールの数（Ｅ）とＳ２００９で算出したモジュールの数（Ｆ）とを乗算した値未満であると判定された場合（Ｓ２０１０：Ｎｏ）、振分方法決定部１５０６は、Ｓ２００８でサービスに必要な収容ユーザ数を満たすことができない旨を保守者端末１０３に通知し、振分方法決定処理を終了する。
【０１８８】
一方、Ｓ２０１０で、処理対象のＮＩＦの未使用のモジュール数が、Ｓ２００５で算出したモジュールの数（Ｅ）とＳ２００９で算出したモジュールの数（Ｆ）とを乗算した値以上であると判定された場合（Ｓ２０１０：Ｙｅｓ）、振分方法決定部１５０６は、モジュール利用状況管理データベース１５０２に、処理対象のＮＩＦにおいて振分方法が第３振分方法でＥ×Ｆ個のモジュール３０３が利用可能となったことを登録し（Ｓ２０１１）、振分方法決定処理を終了する。
【０１８９】
具体的には、振分方法決定部１５０６は、モジュール利用状況管理データベース１５０２に追加したレコードの使用モジュール数１７０６に、Ｓ２００５で算出したモジュール３０３の数（Ｅ）とＳ２００９で算出したモジュールの数（Ｆ）とを乗算した値を登録し、振分方法１７０８にハッシュ及びラウンドロビンを登録する。その他のカラムに登録される情報は、Ｓ２００７と同じであるので、説明を省略する。
【０１９０】
Ｓ２００３で優先性能が収容ユーザ数であると判定された場合（Ｓ２００３：収容ユーザ数）、振分方法決定部１５０６は、Ｓ２００２で算出した空きユーザ数がＳ２００１で取得した収容ユーザ数以上であるか否かを判定する（Ｓ２０１２）。
【０１９１】
Ｓ２０１２で空きユーザ数が収容ユーザ数より小さいと判定された場合（Ｓ２０１２：Ｎｏ）、振分方法決定部１５０６は、サービスに必要な帯域を満たすことができない旨を保守者端末１０３に通知し（Ｓ２０１６）、振分方法決定処理を終了する。
【０１９２】
一方、Ｓ２０１２で空きユーザ数が収容ユーザ数以上であると判定された場合（Ｓ２０１２：Ｙｅｓ）、振分方法決定部１５０６は、Ｓ２００１で取得した収容ユーザ数を満たすために必要なモジュール数（Ｆ）を算出する（Ｓ２０１３）。具体的には、振分方法決定部１５０６は、Ｓ２００１で取得した収容ユーザ数を一モジュール３０３当たりの収容ユーザ数で除算し、除算結果である商をモジュール数（Ｆ）とする。なお、余りがある場合には、商に１を加算した値をモジュール数（Ｆ）とする。
【０１９３】
次に、振分方法決定部１５０６は、一モジュール３０３当たりの処理性能を示す帯域がＳ２００１で取得した使用帯域以上であるか否かを判定する（Ｓ２０１４）。
【０１９４】
Ｓ２０１４で、一モジュール３０３当たりの処理性能を示す帯域がＳ２００１で取得した使用帯域以上であると判定された場合（Ｓ２０１４：Ｙｅｓ）、Ｓ２０１３で算出されたモジュール数（Ｆ）のモジュール３０３間でハッシュ関数を用いてパケットを振り分けることによって、サービスの処理性能及び収容ユーザ数を満たすことができる。このため、振分方法決定部１５０６は、モジュール利用状況管理データベース１５０２に、処理対象のＮＩＦにおいて振分方法が第１振分方法でＦ個のモジュール３０３が利用可能となったことを登録し（Ｓ２０１５）、振分方法決定処理を終了する。
【０１９５】
具体的には、振分方法決定部１５０６は、モジュール利用状況管理データベース１５０２に追加したレコードの使用モジュール数１７０６に、Ｓ２０１３で算出したモジュール３０３の数（Ｆ）を登録し、振分方法１７０８にハッシュを登録する。その他のカラムに登録される情報は、Ｓ２００７と同じであるので、説明を省略する。
【０１９６】
一方、Ｓ２０１４で、一モジュール３０３当たりの処理性能を示す帯域がＳ２００１で取得した使用帯域未満であると判定された場合（Ｓ２０１４：Ｎｏ）、第１振分方法では、サービス情報管理データベース１５０１に登録されたサービスの使用帯域を満たすことができないので、第３振分方法が設定可能であるかを検討する。
【０１９７】
まず、振分方法決定部１５０６は、サービス情報管理データベース１５０１に登録されたサービスの使用帯域を満たすために必要なモジュール３０３の数（Ｅ）を算出する（Ｓ２０１７）。具体的には、振分方法決定部１５０６は、Ｓ２００１で取得した使用帯域を一モジュール３０３当たりの処理性能を示す帯域で除算し、除算結果である商をモジュール数（Ｅ）とする。なお、余りがある場合には、商に１を加算した値をモジュール数（Ｅ）とする。
【０１９８】
次に、振分方法決定部１５０６は、処理対象のＮＩＦの未使用のモジュール数が、Ｓ２０１３で算出したモジュールの数（Ｆ）とＳ２０１７で算出したモジュールの数（Ｅ）とを乗算した値以上であるか否かを判定する（Ｓ２０１８）。
【０１９９】
Ｓ２０１８で、処理対象のＮＩＦの未使用のモジュール数が、Ｓ２０１３で算出したモジュールの数（Ｆ）とＳ２０１７で算出したモジュールの数（Ｅ）とを乗算した値未満であると判定された場合（Ｓ２０１８：Ｎｏ）、振分方法決定部１５０６は、Ｓ２０１６でサービスに必要な使用帯域を満たすことができない旨を保守者端末１０３に通知し、振分方法決定処理を終了する。
【０２００】
一方、Ｓ２０１８で、処理対象のＮＩＦの未使用のモジュール数が、Ｓ２０１３で算出したモジュールの数（Ｆ）とＳ２０１７で算出したモジュールの数（Ｅ）とを乗算した値以上であると判定された場合（Ｓ２０１８：Ｙｅｓ）、振分方法決定部１５０６は、モジュール利用状況管理データベース１５０２に、処理対象のＮＩＦにおいて振分方法が第３振分方法でＦ×Ｅ個のモジュール３０３が利用可能となったことを登録し（Ｓ２０１９）、振分方法決定処理を終了する。
【０２０１】
具体的には、振分方法決定部１５０６は、モジュール利用状況管理データベース１５０２に追加したレコードの使用モジュール数１７０６に、Ｓ２０１３で算出したモジュール３０３の数（Ｆ）とＳ２０１７で算出したモジュールの数（Ｅ）とを乗算した値を登録し、振分方法１７０８にハッシュ及びラウンドロビンを登録する。その他のカラムに登録される情報は、Ｓ２００７と同じであるので、説明を省略する。
【０２０２】
未使用モジュール数が最も少ないＮＩＦが処理対象のＮＩＦとして選択されている場合、Ｓ２００８及びＳ２０１６において、振分方法決定部１５０６は、次に未使用モジュール数が少ないＮＩＦを処理対象のＮＩＦとして選択し、Ｓ２００２に戻ってもよい。
【０２０３】
振分方法決定部１５０６は、振分方法決定処理を実行した場合、処理対象のＮＩＦの識別情報、並びに、Ｓ２００７、Ｓ２０１１、Ｓ２０１５、又はＳ２０１９でモジュール利用状況管理データベース１５０２に登録された使用モジュール数、パケット種別、及び振分方法を含むモジュール設定情報を、処理対象のＮＩＦを有する通信装置２に送信する。なお、振分方法が第３振分方法である場合、モジュール設定情報は、使用帯域を満たすために必要なモジュール数（Ｅ）、及び収容ユーザ数を満たすために必要なモジュール数（Ｆ）を含む。
【０２０４】
通信装置２がモジュール設定情報を受信した場合、受信したモジュール設定情報に含まれる処理対象のＮＩＦの識別情報によって識別されるＮＩＦが有するＮＩＦ管理部２１０は、受信したモジュール設定情報に基づいて、振分関数管理テーブル５、及び利用モジュール管理テーブル６を更新する。
【０２０５】
具体的には、ＮＩＦ管理部２１０は、受信したモジュール設定情報に含まれる振分方法を設定するモジュール振分部３０２を決定する。
【０２０６】
振分方法が第１振分方法である場合、ＮＩＦ管理部２１０は、決定したモジュール振分部３０２のハッシュ論理部３５２に対応する振分関数管理テーブル５の識別キー５０１に宛先ＩＰアドレスを登録し、振分関数５０２にハッシュ関数を登録し、ＲＲ論理部ＩＤ５０３に、モジュール設定情報に含まれる使用モジュール数分のＲＲ論理部３６２の識別情報を、ハッシュ論理部３５２が利用可能なＲＲ論理部３６２の識別情報として登録する。例えば、ＲＲ論理部３６２の識別情報が小さい（又は大きい）順に、ハッシュ論理部３５２が利用可能なＲＲ論理部３６２が決定されてもよい。次に、ＮＩＦ管理部２１０は、ハッシュ論理部３５２が利用可能な各ＲＲ論理部３６２に対応する利用モジュール管理テーブル６の利用モジュールＩＤ６０１に、各ＲＲ論理部３６２が利用可能な一つのモジュール３０３の識別情報を登録する。
【０２０７】
振分方法が第２振分方法である場合、ＮＩＦ管理部２１０は、決定したモジュール振分部３０２のハッシュ論理部３５２に対応する振分関数管理テーブル５の識別キー５０１にＭＰＬＳラベルを登録し、振分関数５０２にハッシュ関数を使用しない旨を登録し、ＲＲ論理部ＩＤ５０３に、ハッシュ論理部３５２が利用可能な一つのＲＲ論理部３６２の識別情報を登録する。次に、ＮＩＦ管理部２１０は、ハッシュ論理部３５２が利用可能な一つのＲＲ論理部３６２に対応する利用モジュール管理テーブル６の利用モジュールＩＤ６０１に、モジュール設定情報に含まれる使用モジュール数分のモジュール３０３の識別情報を、ＲＲ論理部３６２が利用可能なモジュール３０３の識別情報として登録する。
【０２０８】
振分方法が第３振分方法である場合、ＮＩＦ管理部２１０は、決定したモジュール振分部３０２のハッシュ論理部３５２に対応する振分関数管理テーブル５の識別キー５０１に宛先ＩＰアドレスを登録し、振分関数５０２にハッシュ関数を登録し、ＲＲ論理部ＩＤ５０３に、モジュール設定情報に含まれる使用モジュール数のＦ個分のＲＲ論理部３６２の識別情報を、ハッシュ論理部３５２が利用可能なＲＲ論理部３６２の識別情報として登録する。次に、ＮＩＦ管理部２１０は、ハッシュ論理部３５２が利用可能なＥ個のＲＲ論理部３６２のそれぞれに対応する利用モジュール管理テーブル６の利用モジュールＩＤ６０１に、モジュール設定情報に含まれる使用モジュール数のＥ個分のモジュール３０３の識別情報を、ＲＲ論理部３６２が利用可能なモジュール３０３の識別情報として登録する。
【０２０９】
これによって、第３振分方法が設定されたモジュール振分部３０２は、サービスの収容ユーザ数を満たすために必要な数のモジュール３０３の数と同じ数のグループに第１振分方式でパケットを振り分け、パケットが振り分けられたグループでは、サービスの処理性能を示す帯域を満たすために必要な数のモジュール３０３で第２振分方法でパケットを振り分けるので、サービスが要求する条件を満たすことができる。
【０２１０】
そして、ＮＩＦ管理部２１０は、振分関数管理テーブル５及び利用モジュール管理テーブル６を更新した場合、受信したモジュール設定情報に含まれるパケット種別に対応する処理回路のダウンロード要求をネットワーク管理装置１０１に送信する。ネットワーク管理装置１０１は、ダウンロード要求を受信した場合、パケット種別に対応するプログラムを含むダウンロード情報を通信装置２に送信する。通信装置２がダウンロード情報を受信した場合、ＮＩＦ管理部２１０は、ダウンロード情報に含まれるプログラムを、モジュール振分部３０２が利用可能となったモジュール３０３にインストールする。
【０２１１】
なお、振分方法決定処理は、通信装置２の装置管理部２１２が実行してもよい。この場合、通信装置２は、サービス情報管理データベース１５０１を有し、振分方法管理データベース１８００を参照しながら、振分方法決定処理を実行する。なお、通信装置２によって実行される振分方法決定処理は、モジュール利用状況管理データベース１５０２の代わりに振分方法管理データベース１８００を参照する点以外は、図２０Ａ及び図２０Ｂに示す振分方法決定処理と同じであるので、説明を省略する。
【０２１２】
本実施例では、モジュール振分部３０２は、パケットのヘッダ部分（例えば、宛先ＭＡＣアドレスからＩＰヘッダまで）のみをモジュール３０３に振り分け、パケットの残りのペイロード部分はモジュール多重部３０４に出力し、モジュール多重部３０４が各モジュール３０３におけるパケット処理が終了するまでペイロード部分を保持しておいてもよい。モジュール多重部３０４は、モジュール３０３からパケットのヘッダ部分が入力された場合、入力されたヘッダ部分に保持しておいた残りのペイロード部分を付加し、パケットを再構築する。
【０２１３】
また、同様に、実施例では、パケット振分部３０１が、パケットのヘッダ部分のみをモジュール３０３へ振り分け、残りのペイロード部分はモジュール振分部３０２へ転送し、各モジュール多重部３０４までの処理が終了するまでペイロード部分を保持しておいてもよい。パケット多重部３０５は、モジュール多重部３０４からパケットのヘッダ部分が入力された場合、入力されたヘッダ部分にモジュール振分部３０２が保持しておいた残りのペイロード部分を付加し、パケットを再構築する。
【０２１４】
これによって、モジュール３０３が扱うデータの容量が減少するため、モジュール３０３の処理負荷を軽減し、モジュール３０３の処理性能（例えばパケット／秒）を向上させることができる。したがって、ヘッダ部分のみがモジュール３０３に入力される場合に利用可能なモジュール３０３の数は、パケット全部がモジュール３０３に入力される場合に利用可能なモジュール３０３の数より少なくすることができる。また、モジュール３０３には、ヘッダ部分のみならず、ペイロードの一部が入力されてもよいし、パケットの所定の容量が切り出されて入力されてもよい。
【０２１５】
本実施例によれば、データを送受信する通信装置２であって、受信したデータの少なくとも一部に所定の処理を実行する複数のモジュール３０３と、処理可能なデータの種別が同じ複数のモジュールを管理する複数のモジュール振分部３０２と、受信したデータの種別に基づいて複数のモジュール振分部３０２の中から受信したデータの振分先となるモジュール振分部３０２を決定し、受信したデータを決定したモジュール振分部３０２に振り分けるデータ振分部（パケット振分部３０１）と、を備え、複数のモジュール振分部３０２は、自身が管理するモジュール３０３が処理可能なデータの種別に対応した振分方法が設定され、モジュール振分部３０２は、データ振分部によって振り分けられたデータを自身が管理するモジュール３０３に自身に設定された振分方法で振り分ける。
【０２１６】
これによって、受信したデータの種別に対応した振分方法で受信したデータをモジュールに振り分けることができ、各データの種別に対応するサービスが通信装置２に要求する条件を満たすことができる。
【０２１７】
また、通信装置２は、複数の振分方法からモジュール振分部３０２に設定する振分方法を決定する振分方法決定部１５０６を備える。これによって、通信装置２がモジュール振分部３０２に振分方法を設定することができる。
【０２１８】
また、複数の振分方法はそれぞれ異なる性能を優先するものであって、振分方法決定部１５０６は、あるデータの種別を通信するサービスが登録された場合、当該種別のデータが振り分けられるモジュール振分部３０２に設定する振分方法を、当該サービスが優先する性能に特化した振分方法に決定することを特徴とする。これによって、振分方法決定部は、サービスが優先する性能を優先する振分方法をモジュール振分部３０２に設定することができる。
【０２１９】
また、複数の振分方法は、データの少なくとも一部の値に対応する一つの振分先となるモジュール３０３を決定する第１振分方法、及びデータの振分先となるモジュール３０３を順番に変える第２振分方法を含み、第１振分方法は通信装置２に収容される収容ユーザ数を優先し、第２振分方法は通信装置２の転送性能を優先し、サービスは所定のユーザ数を収容し、所定の転送性能が割り当てられるものであって、振分方法決定部１５０６は、一つのモジュール当たりの転送性能、及び一つのモジュール当たりの収容ユーザ数を管理し、サービスの優先性能が転送性能である場合、サービスに割り当てられる転送性能を満たすために必要なモジュールの数を、一つのモジュール当たりの転送性能に基づいて算出し（図２０Ａ  Ｓ２００５）、一つのモジュール当たりの収容ユーザ数がサービスが収容するユーザ数以上であれば（図２０Ａ  Ｓ２００６  Ｙｅｓ）、モジュール振分部が第２振分方法でサービスに割り当てられる転送性能を満たすために必要な数のモジュールの中から振分先となるモジュールを決定することを決定し、（図２０Ａ  Ｓ２００７）、サービスの優先性能が収容ユーザ数である場合、サービスが収容するユーザ数を満たすために必要なモジュールの数を、一つのモジュール当たりの収容ユーザ数に基づいて算出し（図２０Ｂ  Ｓ２０１３）、一つのモジュール当たりの転送性能がサービスに割り当てられる転送性能以上であれば（図２０Ｂ  Ｓ２０１４  Ｙｅｓ）、モジュール振分部が第１振分方法でサービスが収容するユーザ数を満たすために必要な数のモジュールの中から振分先となるモジュールを決定することを決定する（図２０Ｂ  Ｓ２０１５）ことを特徴とする。
【０２２０】
これによって、サービスが要求する条件を満たすために適切な振分方法、及び当該条件を満たすために必要な数のモジュール３０３をモジュール振分部３０２に設定することができる。
【０２２１】
複数の振分方法は、モジュール振分部が管理する複数のモジュールのグループから振分先となるグループを第１振分方法で決定し、振分先として決定されたグループに属するモジュールから振分先となるモジュールを第２振分方法で決定する第３振分方法を含み、振分方法決定部１５０６は、サービスの優先性能が転送性能である場合であって、かつ、一つのモジュール当たりの収容ユーザ数がサービスが収容するユーザ数未満である場合（図２０Ａ  Ｓ２００６  Ｎｏ）、サービスが収容するユーザ数を満たすために必要なモジュールの数を、一つのモジュール当たりの収容ユーザ数に基づいて算出し（図２０Ａ  Ｓ２００９）、モジュール振分部が受信したデータを第３振分方法で振り分けることを決定し（図２０Ａ  Ｓ２０１１）、サービスの優先性能が収容ユーザ数である場合であって、かつ、一つのモジュール当たりの転送性能がサービスに割り当てられる転送性能未満である場合（図２０Ａ  Ｓ２１４  Ｎｏ）、サービスに割り当てられる転送性能を満たすために必要なモジュールの数を、一つのモジュール当たりの転送性能に基づいて算出し（図２０Ｂ  Ｓ２０１７）、モジュール振分部が受信したデータを第３振分方法で振り分けることを決定し（図２０Ｂ  Ｓ２０１９）、決定された第３振分方法においては、第１振分方法での振分先となるグループの数がサービスが収容するユーザ数を満たすために必要なモジュールの数であり、各グループに属するモジュールの数が、サービスに割り当てられる転送性能を満たすために必要なモジュールの数である（図２０Ａ  Ｓ２０１１、図２０Ｂ  Ｓ２０１９）ことを特徴とする。
【０２２２】
また、第１振分方法及び第２振分方法のいずれもサービスが要求する条件を満たすことができない場合であっても、第３振分方法及びサービスが要求する条件を満たすために必要な数をモジュール３０３をモジュール振分部３０２に設定することによって、サービスが通信装置２に要求する条件を満たすことができる。
【０２２３】
また、モジュール振分部３０２は、振分方法決定部１５０６によって決定された振分方法を自身に設定することを特徴とする。これによって、モジュール振分部３０２に振分方法が設定できる。
【０２２４】
通信装置２は、通信装置２を管理する管理装置（ネットワーク管理装置１０１）に接続され、管理装置は、複数の振分方法からモジュール振分部３０２に設定する振分方法を決定し、通信装置２は、管理装置によって決定された振分方法をモジュール振分部３０２に設定することを特徴とする。これによって、管理装置が、振分方法を決定し、通信装置２は、決定された振分方法をモジュール振分部３０２に設定できる。
【０２２５】
モジュール振分部３０２に設定される振分方法は、第１振分方法、第２振分方法、及び第３振分方法のいずれかであり、第１振分方法では、受信したデータの少なくとも一部の値に基づいて一つの振分先となるモジュール３０３が決定され、第２振分方法では、受信したデータの振分先となるモジュール３０３が順番に変えられ、第３振分方法では、モジュール振分部３０２が管理する複数のモジュール３０３がのグループから振分先となるグループが第１振分方法で決定され、振分先として決定されたグループに属するモジュール３０３から振分先となるモジュール３０３が第２振分方法で決定され、モジュール振分部３０２は、第１振分部（ハッシュ論理部３５２）と第２振分部（ＲＲ論理部３６２）とを有し、第１振分部は、受信したデータを第１振分方法で第２振分部に振り分け、第２振分部は、第１振分部から振り分けられたデータを第２振分方法でモジュールに振り分け、第１振分方法が設定されたモジュール振分部の第１振分部は、利用可能に設定された複数の第２振分部の中から振分先となる一つの第２振分部を第１振分方法で決定し、受信したデータを振分先として決定された第２振分部に振り分け、第１振分方法が設定されたモジュール振分部の第２振分部は、第１振分部から振り分けられたデータを、利用可能に設定された一つのモジュールに出力し、第２振分方法が設定されたモジュール振分部の第１振分部は、利用可能に設定された一つの第２振分部に受信したデータを出力し、第２振分方法が設定されたモジュール振分部の第２振分部は、利用可能に設定された複数のモジュールの中から振分先となる一つのモジュールを第２振分方法で決定し、第１振分部から振り分けられたデータを振分先として決定されたモジュールに振り分け、第３振分方法が設定されたモジュール振分部の第１振分部は、利用可能に設定された複数の第２振分部の中から振分先となる一つの第２振分部を第１振分方法で決定し、受信したデータを振分先として決定された第２振分部に振り分け、第３振分方法が設定されたモジュール振分部の第２振分部は、利用可能に設定された複数のモジュールの中から振分先となる一つのモジュールを第２振分方法で決定し、第１振分部から振り分けられたデータを振分先として決定されたモジュールに振り分けることを特徴とする。
【０２２６】
これによって、モジュール振分部３０２は同じ構成で、第１振分方法、第２振分方法、及び第３振分方法のいずれもを設定することができる。
【０２２７】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることも可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【０２２８】
また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。また、上記の各構成、機能、処理部、処理手段等は、それらの一部または全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。
【０２２９】
また、前記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。
【０２３０】
各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、ＳＳＤ（Solid State Drive）等の記録装置、または、ＩＣ（Integrated Circuit）カード、ＳＤカード、ＤＶＤ（Digital Versatile Disc）等の記録媒体に置くことができる。
【０２３１】
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際にはほとんど全ての構成が相互に接続されていると考えてもよい。
【符号の説明】
【０２３２】
２    通信装置
４    パケット振分管理テーブル
５    振分関数管理テーブル
６    利用モジュール管理テーブル
７    モジュール多重管理テーブル
１０１    ネットワーク管理装置
２０４    パケット制御部
３０１    パケット振分部
３０２    モジュール振分部
３０３    モジュール
３５２    ハッシュ論理部
３６２    ＲＲ論理部
１５０１    サービス情報管理データベース
１５０２    モジュール利用状況管理データベース
１５０６    振分方法決定部
【図１】
2016167673.tif 000003
【図２】
2016167673.tif 000004
【図３】
2016167673.tif 000005
【図４Ａ】
2016167673.tif 000006
【図４Ｂ】
2016167673.tif 000007
【図５Ａ】
2016167673.tif 000008
【図５Ｂ】
2016167673.tif 000009
【図６】
2016167673.tif 000010
【図７】
2016167673.tif 000011
【図８】
2016167673.tif 000012
【図９】
2016167673.tif 000013
【図１０】
2016167673.tif 000014
【図１１Ａ】
2016167673.tif 000015
【図１１Ｂ】
2016167673.tif 000016
【図１２】
2016167673.tif 000017
【図１３】
2016167673.tif 000018
【図１４】
2016167673.tif 000019
【図１５】
2016167673.tif 000020
【図１６】
2016167673.tif 000021
【図１７】
2016167673.tif 000022
【図１８】
2016167673.tif 000023
【図１９】
2016167673.tif 000024
【図２０Ａ】
2016167673.tif 000025
【図２０Ｂ】
2016167673.tif 000026