(57)【要約】【課題】ユーザごとまたはサービスごとにことなる仮想環境を構築するとともに高速にデータ・ストリーム処理をおこなう。【解決手段】ネットワークに接続されるパケット処理装置であって、前記パケット処理装置は、複数のプロセッサ・コアと、前記複数のプロセッサ・コアに接続されるメモリと、を備え、プログラムのロード要求を受信すると、前記複数のプロセッサ・コアのうち、まだプログラムがロードされていないプロセッサ・コアを選択し、前記選択されたプロセッサ・コアに前記プログラムをロードし、前記ロード要求によって指定された属性情報と、前記プログラムがロードされたプロセッサ・コアと、を対応付ける第１の対応付け情報を保持し、パケットを受信すると、前記受信したパケットに対応する属性情報を特定し、前記受信したパケットを、前記特定された属性情報に対応するプロセッサ・コアに転送する。【選択図】図８
2010193366.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークに接続されるパケット処理装置であって、
前記パケット処理装置は、
複数のプロセッサ・コアと、前記複数のプロセッサ・コアに接続されるメモリと、を備え、
プログラムのロード要求を受信すると、前記複数のプロセッサ・コアのうち、まだプログラムがロードされていないプロセッサ・コアを選択し、
前記選択されたプロセッサ・コアに前記プログラムをロードし、
前記ロード要求によって指定された属性情報と、前記プログラムがロードされたプロセッサ・コアと、を対応付ける第１の対応付け情報を保持し、
パケットを受信すると、前記受信したパケットに対応する属性情報を特定し、
前記受信したパケットを、前記特定された属性情報に対応するプロセッサ・コアに転送することを特徴とするパケット処理装置。
【請求項２】
前記パケット処理装置は、前記第１の対応付け情報に基づいて、前記まだプログラムがロードされていないプロセッサ・コアを選択することを特徴とする請求項１に記載のパケット処理装置。
【請求項３】
前記パケット処理装置は、
アドレス、ユーザの識別子およびサービスの識別子の少なくとも一つと、前記属性情報と、を対応付ける第２の対応付け情報を保持し、
前記パケットを受信すると、前記第２の対応付け情報に基づいて、前記受信したパケットに含まれるアドレス、ユーザの識別子およびサービスの識別子の少なくとも一つに対応する前記属性情報を特定することを特徴とする請求項１に記載のパケット処理装置。
【請求項４】
前記パケット処理装置は、前記パケットを転送するスイッチと、前記スイッチに接続される複数のパケット処理モジュールと、前記スイッチおよび前記ネットワークに接続される複数のネットワーク・インタフェースと、前記パケット処理装置を制御する制御部と、を備え、
前記各パケット処理モジュールは、複数のネットワーク処理ユニットを備え、
前記各ネットワーク処理ユニットは、複数の前記プロセッサ・コアを備え、
前記第１の対応付け情報は、第３の対応付け情報、第４の対応付け情報、第５の対応付け情報および第６の対応付け情報を含み、
前記第３の対応付け情報は、前記制御部によって保持され、前記属性情報と、前記プロセッサ・コアの識別情報と、前記プロセッサ・コアを含む前記ネットワーク処理ユニットの識別情報と、前記ネットワーク処理ユニットを含む前記パケット処理モジュールの識別情報と、を対応付け、
前記第４の対応付け情報は、前記第３の対応付け情報のうち、少なくとも、前記属性情報と、前記プロセッサ・コアの識別情報とを対応付ける情報と同一の情報を含み、
前記第５の対応付け情報は、前記第３の対応付け情報のうち、少なくとも、前記属性情報と、前記ネットワーク処理ユニットの識別情報とを対応付ける情報と同一の情報を含み、
前記第６の対応付け情報は、前記第３の対応付け情報のうち、少なくとも、前記属性情報と、前記パケット処理モジュールの識別情報とを対応付ける情報と同一の情報を含み、
前記各ネットワーク・インタフェースは、
前記第６の対応付け情報を保持し、
前記ネットワークから前記パケットを受信すると、前記第６の対応付け情報に基づいて、前記特定された属性情報に対応する前記パケット処理モジュールに、前記受信したパケットを転送し、
前記各パケット処理モジュールは、
前記第５の対応付け情報を保持し、
前記パケットを受信すると、前記第５の対応情報に基づいて、前記特定された属性情報に対応する前記ネットワーク処理ユニットに、前記受信したパケットを転送し、
前記各ネットワーク処理ユニットは、
前記第４の対応付け情報を保持し、
前記パケットを受信すると、前記第４の対応情報に基づいて、前記特定された属性情報に対応する前記プロセッサ・コアに、前記受信したパケットを転送することを特徴とする請求項１に記載のパケット処理装置。
【請求項５】
前記各ネットワーク・インタフェースは、
属性情報に対応する前記パケットのアドレスの変換または削除を定める情報をさらに保持し、
前記ネットワークから前記パケットを受信すると、前記特定された属性情報および前記アドレスの変換または削除を定める情報に基づいて、前記受信したパケットのアドレスを変換または削除し、
前記変換されたアドレスを含むパケットまたは前記アドレスを削除されたパケットを前記パケット処理モジュールに転送することを特徴とする請求項４に記載のパケット処理装置。
【請求項６】
前記パケット処理装置は、前記ネットワークに接続され、前記パケットを転送するスイッチと、前記スイッチに接続される複数のパケット処理モジュールと、前記パケット処理装置を制御する制御部と、を備え、
前記各パケット処理モジュールは、複数のネットワーク処理ユニットを備え、
前記各ネットワーク処理ユニットは、複数の前記プロセッサ・コアを備え、
前記第１の対応付け情報は、第３の対応付け情報、第４の対応付け情報および第５の対応付け情報を含み、
前記第３の対応付け情報は、前記制御部によって保持され、前記属性情報と、前記プロセッサ・コアの識別情報と、前記プロセッサ・コアを含む前記ネットワーク処理ユニットの識別情報と、前記ネットワーク処理ユニットを含む前記パケット処理モジュールの識別情報と、を対応付け、
前記第４の対応付け情報は、前記第３の対応付け情報のうち、少なくとも、前記属性情報と、前記プロセッサ・コアの識別情報とを対応付ける情報と同一の情報を含み、
前記第５の対応付け情報は、前記第３の対応付け情報のうち、少なくとも、前記属性情報と、前記ネットワーク処理ユニットの識別情報とを対応付ける情報と同一の情報を含み、
前記制御部は、前記第３の対応付け情報に基づいて、前記特定された属性情報と、前記パケット処理モジュールとを対応付けるコマンドを前記スイッチに転送し、
前記スイッチは、前記ネットワークから前記パケットを受信すると、前記コマンドに基づいて、前記特定された属性情報に対応する前記パケット処理モジュールに、前記受信したパケットを転送し、
前記各パケット処理モジュールは、
前記第５の対応付け情報を保持し、
前記パケットを受信すると、前記第５の対応情報に基づいて、前記特定された属性情報に対応する前記ネットワーク処理ユニットに、前記受信したパケットを転送し、
前記各ネットワーク処理ユニットは、
前記第４の対応付け情報を保持し、
前記パケットを受信すると、前記第４の対応情報に基づいて、前記特定された属性情報に対応する前記プロセッサ・コアに、前記受信したパケットを転送することを特徴とする請求項１に記載のパケット処理装置。
【請求項７】
前記パケット処理装置は、第１のネットワーク処理ユニット及び第２のネットワーク処理ユニットを備え、
第１のネットワーク処理ユニット及び第２のネットワーク処理ユニットは、それぞれ、複数の前記プロセッサ・コアを備え、
前記パケット処理装置は、
前記第１のネットワーク処理ユニットが備える前記複数のプロセッサ・コアの少なくとも一つに既にプログラムがロードされ、別の少なくとも一つにまだプログラムがロードされておらず、前記第２のネットワーク処理ユニットが備えるいずれの前記プロセッサ・コアにもまだプログラムがロードされていない時点で、プログラムのロード要求を受信すると、前記第１のネットワーク処理ユニットが備える複数の前記プロセッサ・コアの少なくとも一つにロードされているプログラムを、前記第２のネットワーク処理ユニットが備える前記複数のプロセッサ・コアの少なくとも一つにロードし、
さらに、前記受信したロード要求によって指定されたプログラムを、前記第２のネットワーク処理ユニットが備える前期複数のプロセッサ・コアのうち、まだプログラムがロードされていないプロセッサ・コアにロードすることを特徴とする請求項１に記載のパケット処理装置。
【請求項８】
前記パケット処理装置は、前記パケットを転送するスイッチと、前記スイッチに接続される複数のパケット処理モジュールと、前記スイッチおよび前記ネットワークに接続される複数のネットワーク・インタフェースと、前記パケット処理装置を制御する制御部と、を備え、
前記各パケット処理モジュールは、ネットワーク処理ユニットを備え、
前記各ネットワーク処理ユニットは、複数の前記プロセッサ・コアを備え、
前記第１の対応付け情報は、第３の対応付け情報、第４の対応付け情報、及び第５の対応付け情報を含み、
前記第３の対応付け情報は、前記制御部によって保持され、前記属性情報と、前記プロセッサ・コアの識別情報と、前記プロセッサ・コアを含む前記ネットワーク処理ユニットの識別情報と、前記ネットワーク処理ユニットを含む前記パケット処理モジュールの識別情報と、を対応付け、
前記第４の対応付け情報は、前記第３の対応付け情報のうち、少なくとも、前記属性情報と、前記プロセッサ・コアの識別情報とを対応付ける情報と同一の情報を含み、
前記第５の対応付け情報は、前記第３の対応付け情報のうち、少なくとも、前記属性情報と、前記パケット処理モジュールの識別情報とを対応付ける情報と同一の情報を含み、
前記各ネットワーク・インタフェースは、
前記第５の対応付け情報を保持し、
前記ネットワークから前記パケットを受信すると、前記第５の対応付け情報に基づいて、前記特定された属性情報に対応する前記パケット処理モジュールに、前記受信したパケットを転送し、
前記各パケット処理モジュールは、
前記ネットワーク処理ユニットに、前記受信したパケットを転送し、
前記ネットワーク処理ユニットは、
前記第４の対応付け情報を保持し、
前記パケットを受信すると、前記第４の対応情報に基づいて、前記特定された属性情報に対応する前記プロセッサ・コアに、前記受信したパケットを転送することを特徴とする請求項１に記載のパケット処理装置。
【請求項９】
ネットワークに接続されるパケット処理装置が実行するパケット処理方法であって、
前記パケット処理装置は、
複数のプロセッサ・コアと、前記複数のプロセッサ・コアに接続されるメモリと、を備え、
前記パケット処理方法は、
プログラムのロード要求を受信すると、前記複数のプロセッサ・コアのうち、まだプログラムがロードされていないプロセッサ・コアを選択する第１手順と、
前記選択されたプロセッサ・コアに前記プログラムをロードする第２手順と、
前記ロード要求によって指定された属性情報と、前記プログラムがロードされたプロセッサ・コアと、を対応付ける第１の対応付け情報を保持する第３手順と、
パケットを受信すると、前記受信したパケットに対応する属性情報を特定する第４手順と、
前記受信したパケットを、前記特定された属性情報に対応するプロセッサ・コアに転送する第５手順と、を含むことを特徴とするパケット処理方法。
【請求項１０】
前記第１手順は、前記第１の対応付け情報に基づいて、前記まだプログラムがロードされていないプロセッサ・コアを選択する手順を含むことを特徴とする請求項９に記載のパケット処理方法。
【請求項１１】
前記パケット処理装置は、アドレス、ユーザの識別子およびサービスの識別子の少なくとも一つと、前記属性情報と、を対応付ける第２の対応付け情報を保持し、
前記第４手順は、前記第２の対応付け情報に基づいて、前記受信したパケットに含まれるアドレス、ユーザの識別子およびサービスの識別子の少なくとも一つに対応する前記属性情報を特定する手順を含むことを特徴とする請求項９に記載のパケット処理方法。
【請求項１２】
前記パケット処理装置は、前記パケットを転送するスイッチと、前記スイッチに接続される複数のパケット処理モジュールと、前記スイッチおよび前記ネットワークに接続される複数のネットワーク・インタフェースと、前記パケット処理装置を制御する制御部と、を備え、
前記各パケット処理モジュールは、複数のネットワーク処理ユニットを備え、
前記各ネットワーク処理ユニットは、複数の前記プロセッサ・コアを備え、
前記第１の対応付け情報は、第３の対応付け情報、第４の対応付け情報、第５の対応付け情報および第６の対応付け情報を含み、
前記第３の対応付け情報は、前記制御部によって保持され、前記属性情報と、前記プロセッサ・コアの識別情報と、前記プロセッサ・コアを含む前記ネットワーク処理ユニットの識別情報と、前記ネットワーク処理ユニットを含む前記パケット処理モジュールの識別情報と、を対応付け、
前記第４の対応付け情報は、前記第３の対応付け情報のうち、少なくとも、前記属性情報と、前記プロセッサ・コアの識別情報とを対応付ける情報と同一の情報を含み、
前記第５の対応付け情報は、前記第３の対応付け情報のうち、少なくとも、前記属性情報と、前記ネットワーク処理ユニットの識別情報とを対応付ける情報と同一の情報を含み、
前記第６の対応付け情報は、前記第３の対応付け情報のうち、少なくとも、前記属性情報と、前記パケット処理モジュールの識別情報とを対応付ける情報と同一の情報を含み、
前記各ネットワーク処理ユニットは、前記第４の対応付け情報を保持し、
前記各パケット処理モジュールは、前記第５の対応付け情報を保持し、
前記各ネットワーク・インタフェースは、前記第６の対応付け情報を保持し、
前記第５手順は、
前記各ネットワーク・インタフェースが、前記ネットワークから前記パケットを受信すると、前記第６の対応付け情報に基づいて、前記特定された属性情報に対応する前記パケット処理モジュールに、前記受信したパケットを転送する第６手順と、
前記各パケット処理モジュールが、前記パケットを受信すると、前記第５の対応情報に基づいて、前記特定された属性情報に対応する前記ネットワーク処理ユニットに、前記受信したパケットを転送する第７手順と、
前記各ネットワーク処理ユニットが、前記パケットを受信すると、前記第４の対応情報に基づいて、前記特定された属性情報に対応する前記プロセッサ・コアに、前記受信したパケットを転送する第８手順と、を含むことを特徴とする請求項９に記載のパケット処理装置。
【請求項１３】
前記各ネットワーク・インタフェースは、属性情報に対応する前記パケットのアドレスの変換または削除を定める情報をさらに保持し、
前記第６手順は、前記各ネットワーク・インタフェースが、前記ネットワークから前記パケットを受信すると、前記特定された属性情報および前記アドレスの変換または削除を定める情報に基づいて、前記受信したパケットのアドレスを変換または削除し、前記変換されたアドレスを含むパケットまたは前記アドレスを削除されたパケットを前記パケット処理モジュールに転送する手順を含むことを特徴とする請求項１２に記載のパケット処理装置。
【請求項１４】
前記パケット処理装置は、前記ネットワークに接続され、前記パケットを転送するスイッチと、前記スイッチに接続される複数のパケット処理モジュールと、前記パケット処理装置を制御する制御部と、を備え、
前記各パケット処理モジュールは、複数のネットワーク処理ユニットを備え、
前記各ネットワーク処理ユニットは、複数の前記プロセッサ・コアを備え、
前記第１の対応付け情報は、第３の対応付け情報、第４の対応付け情報および第５の対応付け情報を含み、
前記第３の対応付け情報は、前記制御部によって保持され、前記属性情報と、前記プロセッサ・コアの識別情報と、前記プロセッサ・コアを含む前記ネットワーク処理ユニットの識別情報と、前記ネットワーク処理ユニットを含む前記パケット処理モジュールの識別情報と、を対応付け、
前記第４の対応付け情報は、前記第３の対応付け情報のうち、少なくとも、前記属性情報と、前記プロセッサ・コアの識別情報とを対応付ける情報と同一の情報を含み、
前記第５の対応付け情報は、前記第３の対応付け情報のうち、少なくとも、前記属性情報と、前記ネットワーク処理ユニットの識別情報とを対応付ける情報と同一の情報を含み、
前記各ネットワーク処理ユニットは、前記第４の対応付け情報を保持し、
前記各パケット処理モジュールは、前記第５の対応付け情報を保持し、
前記方法は、さらに、前記制御部が、前記第３の対応付け情報に基づいて、前記特定された属性情報と、前記パケット処理モジュールとを対応付けるコマンドを前記スイッチに転送する手順を含み、
前記第５手順は、
前記スイッチが、前記ネットワークから前記パケットを受信すると、前記コマンドに基づいて、前記特定された属性情報に対応する前記パケット処理モジュールに、前記受信したパケットを転送する手順と、
前記各パケット処理モジュールが、前記パケットを受信すると、前記第５の対応情報に基づいて、前記特定された属性情報に対応する前記ネットワーク処理ユニットに、前記受信したパケットを転送する手順と、
前記各ネットワーク処理ユニットが、前記パケットを受信すると、前記第４の対応情報に基づいて、前記特定された属性情報に対応する前記プロセッサ・コアに、前記受信したパケットを転送する手順と、を含むことを特徴とする請求項９に記載のパケット処理方法。
【請求項１５】
前記パケット処理装置は、第１のネットワーク処理ユニット及び第２のネットワーク処理ユニットを備え、
第１のネットワーク処理ユニット及び第２のネットワーク処理ユニットは、それぞれ、複数の前記プロセッサ・コアを備え、
前記第２手順は、
前記第１のネットワーク処理ユニットが備える前記複数のプロセッサ・コアの少なくとも一つに既にプログラムがロードされ、別の少なくとも一つにまだプログラムがロードされておらず、前記第２のネットワーク処理ユニットが備えるいずれの前記プロセッサ・コアにもまだプログラムがロードされていない場合、前記第１のネットワーク処理ユニットが備える複数の前記プロセッサ・コアの少なくとも一つにロードされているプログラムを、前記第２のネットワーク処理ユニットが備える前記複数のプロセッサ・コアの少なくとも一つにロードする手順と、
前記受信したロード要求によって指定されたプログラムを、前記第２のネットワーク処理ユニットが備える前期複数のプロセッサ・コアのうち、まだプログラムがロードされていないプロセッサ・コアにロードする手順と、を含むことを特徴とする請求項９に記載のパケット処理方法。
【請求項１６】
前記パケット処理装置は、前記パケットを転送するスイッチと、前記スイッチに接続される複数のパケット処理モジュールと、前記スイッチおよび前記ネットワークに接続される複数のネットワーク・インタフェースと、前記パケット処理装置を制御する制御部と、を備え、
前記各パケット処理モジュールは、ネットワーク処理ユニットを備え、
前記各ネットワーク処理ユニットは、複数の前記プロセッサ・コアを備え、
前記第１の対応付け情報は、第３の対応付け情報、第４の対応付け情報、および第５の対応付け情報を含み、
前記第３の対応付け情報は、前記制御部によって保持され、前記属性情報と、前記プロセッサ・コアの識別情報と、前記プロセッサ・コアを含む前記ネットワーク処理ユニットの識別情報と、前記ネットワーク処理ユニットを含む前記パケット処理モジュールの識別情報と、を対応付け、
前記第４の対応付け情報は、前記第３の対応付け情報のうち、少なくとも、前記属性情報と、前記プロセッサ・コアの識別情報とを対応付ける情報と同一の情報を含み、
前記第５の対応付け情報は、前記第３の対応付け情報のうち、少なくとも、前記属性情報と、前記パケット処理モジュールの識別情報とを対応付ける情報と同一の情報を含み、
前記各ネットワーク処理ユニットは、前記第４の対応付け情報を保持し、
前記各ネットワーク・インタフェースは、前記第５の対応付け情報を保持し、
前記第５手順は、
前記各ネットワーク・インタフェースが、前記ネットワークから前記パケットを受信すると、前記第５の対応付け情報に基づいて、前記特定された属性情報に対応する前記パケット処理モジュールに、前記受信したパケットを転送する第６手順と、
前記各パケット処理モジュールが、前記パケットを受信すると、前記ネットワーク処理ユニットに、前記受信したパケットを転送する第７手順と、
前記各ネットワーク処理ユニットが、前記パケットを受信すると、前記第４の対応情報に基づいて、前記特定された属性情報に対応する前記プロセッサ・コアに、前記受信したパケットを転送する第８手順と、を含むことを特徴とする請求項９に記載のパケット処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークにおけるパケット・ストリームなどのデータ・ストリーム処理に関する。
【背景技術】
【０００２】
ネットワークにおけるデータ・ストリーム処理のひとつの課題は、複数のユーザに対してネットワーク・ノード上で共存することができない複数の高度なサービスを提供し、さらに、ネットワークの運用中にサービスの追加・削除及びサービス内容の変更ができるようにすることである。このようなサービスをひとつの物理的なネットワークによって提供するためには、ネットワークの仮想化、すなわち、ユーザまたはユーザ・グループごとに独立したネットワークを使用しているかのようにみせることが必要である。しかも、各ネットワーク・ノードにおいて、高度なサービスの処理のために、通信線から入力され通信線に出力されるパケット・ストリームをできるだけその通信線の最大転送速度（ワイヤ・スピード）にちかい速度で処理する必要がある。
【０００３】
ネットワークにおけるデータ・ストリーム処理に使用できる従来技術として、つぎの４つがある。
【０００４】
第１の従来技術として、複数のユーザのプログラムを並列に、または、時分割すなわちタイムシェアリングによって並行的に実行することができるコンピュータをあげることができる。タイムシェアリング・システムに関する文献として非特許文献１がある。
【０００５】
Ｌｉｎｕｘ（登録商標）またはＭｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）など、タイムシェアリング・システムにもとづく汎用オペレーティング・システム（ＯＳ）を搭載したコンピュータにおいては、プロセッサおよびメモリなどの共有資源が仮想化され、各ユーザはそれらを占有しているかのように使用することができる。プロセッサ資源はタスクスイッチにもとづいて共有される。すなわち、複数のプロセスおよびスレッドが存在するとき、ＯＳがそれらのあいだのタスクスイッチをおこなう。このようなコンピュータを使用してネットワーク・ノード（いわゆるソフトウェア・ルータ）を構成したり、ストリーム・データ処理をおこなうことができる。
【０００６】
しかし、タスクスイッチの際にはレジスタ・ファイルおよびキャッシュがパージされるため、タスクスイッチの直後にはデータおよびプログラムをＤＲＡＭ（ダイナミック・ランダム・アクセス・メモリ）から再ロードする必要がある。このスイッチングによる遅延、データおよびプログラムの再ロードに要する遅延、および、膨大な処理ステップ数のため、ワイヤ・スピードにちかい処理は不可能である。
【０００７】
第２の従来技術として、１個のハードウェア上でユーザごとにことなるオペレーティング・システムを時分割によって動作させることによって、ユーザごとの仮想環境を構築する仮想化ソフトウェア技術がある。非特許文献２は、仮想化ソフトウェアＸｅｎ（登録商標）を使用してネットワーク・インタフェースなどのハードウェア資源を仮想化し、仮想化されたノードを実現する方法を記述している。
【０００８】
仮想化ソフトウェア技術においてもタイムシェアリング・システムと同様にプロセッサを時分割で使用するため、上記のようなタスクスイッチによって発生する問題は解決することができない。また、ネットワークにおいては通信に使用されるパケットに送信者と受信者の３層（ＩＰ層）のアドレスがふくまれるが、スイッチが２層の情報にもとづいてパケットを転送する際には、パケットを中継するスイッチのアドレスはパケットにふくまれない。ところが、仮想化ソフトウェア技術においては通信のためにネットワーク・インタフェースにアドレスをつける必要があり、パケットの宛先としてこのアドレスを指定する必要があるという問題がある。
【０００９】
第３の従来技術として、特許文献１に記載された物理デバイス仮想化技術がある。特許文献１は、単一の物理デバイスを仮想的に多重化することによって、入力または出力されるデータを複数のユーザのプログラムにふりわけて処理するための技術を開示している。その物理デバイスの一例がネットワーク・インタフェースである。
【００１０】
物理デバイス仮想化技術においてもタイムシェアリング・システムと同様にプロセッサを時分割で使用するため、上記のようなタスクスイッチによって発生する問題は解決することができない。また、パケットの宛先として仮想的に多重化されたネットワーク・インタフェースのアドレスを指定する必要がある点も同様に問題である。
【００１１】
第４の従来技術として、プログラマブルなルータおよびスイッチがある。従来のルータおよびスイッチがユーザによってプログラムすることができなかったのに対して、プログラマブルなルータ及びスイッチは、ネットワーク・プロセッサまたはＦＰＧＡ（Field Programmable Gate Array）を搭載することによって、外部からプログラムをあたえることができる。
【００１２】
特許文献２においては、入力されたパケットをこのようなプログラムが動作する複数のプロセッサ・コアにふりわける方法が記述されている。
【００１３】
しかし、この方法においてはプロセッサ・コアが実行するプログラムはあらかじめ固定され、パケットをふりわける先も固定されているため、ネットワークの運用中にサービスの追加・削除及びサービス内容の変更をおこなうことはできない。
【先行技術文献】
【特許文献】
【００１４】
【特許文献１】特表２００８−５０３０１５号公報
【特許文献２】特表２００８−５２３７２９号公報
【非特許文献】
【００１５】
【非特許文献１】John McCarthy, “REMINISCENCES ON THE HISTORY OF TIME SHARING”, Stanford University, 1983 Winter or Spring, http://www-formal.stanford.edu/jmc/history/timesharing/timesharing.html
【非特許文献２】Egi, N., Greenhalgh, A., Handley, M., Hoerdt, M., Mathy, L., and Schooley, T., “Evaluating Xen for Router Virtualization”, 16th Int’l Conference on Computer Communications and Networks (ICCCN 2007), pp. 1256-1261, August 2007.
【発明の概要】
【発明が解決しようとする課題】
【００１６】
ネットワーク・サービスの高度化にともなって、ネットワーク・プロバイダは、ユーザ・グループごとにことなる多様なビジネス指向の高速なサービスを短期に開発することがもとめられるようになっている。また、あたらしいネットワーク・アーキテクチャの研究開発のために、ユーザ（とくに研究者）ごとにことなるプロトコルまたはデータ処理を実現することがもとめられる。このようなサービスまたは開発環境を提供するためには、各ネットワーク・ノードにおいて、ユーザ・グループごとまたはサービスごとに仮想化された環境のもとで、仮想環境ごと（すなわちユーザ・グループごと）にことなるネットワーク・サービスを実現する柔軟なプログラムが動作するとともに、そのプログラムによってパケット・ストリームをワイヤ・スピードで処理することがつよくのぞまれる。
【００１７】
前記のように１台のハードウェアで複数の処理をおこなうときにはＯＳによるタスクスイッチが発生し、ワイヤ・スピードの処理が不可能になる。ワイヤ・スピードの処理を実現し、かつ柔軟なプログラミングを実現するためには、ユーザまたはサービスごとに仮想環境を構築することが必要である。
【００１８】
すなわち、第１に、ユーザまたはサービスからプログラムのロードが要求された際に、ネットワークの動作を停止させることも、動作遅延などによってパケットが損失することもなく、そのユーザまたはサービスが属するべき仮想環境に属するプロセッサにおいてそのプログラムが実行されるように設定（すなわちプログラムをロード）する必要がある。
【００１９】
第２に、ユーザまたはサービスからプログラムのアンロードが要求された際に、ネットワークの動作停止または遅延によるパケット損失なしに、そのユーザまたはサービスが属するべき仮想環境に属するプロセッサにロードされたプログラムを削除（すなわちプログラムをアンロード）する必要がある。
【００２０】
第３に、プログラムがロードされた仮想環境ごとにわりあてられたプロセッサにおいて、ソフトウェアによるタスクスイッチなしにプログラムが実行される必要がある。
【００２１】
第４に、当該のユーザまたはサービスに属するパケットが入力されたときに、そのユーザまたはサービスが属するべき仮想環境の識別子をもとめ、そのパケットがその仮想環境にわりあてられたプロセッサに、ワイヤ・スピードでかつ遅延なく、転送される必要がある。
【００２２】
この発明の目的は、上記の４つの課題を解決し、ユーザごとまたはサービスごとにことなる仮想環境を構築するとともに、高速にデータ・ストリーム処理をおこなうことができるネットワーク・ノード装置および方法を提供することである。
【課題を解決するための手段】
【００２３】
本願で開示する代表的な発明は、ネットワークに接続されるパケット処理装置であって、前記パケット処理装置は、複数のプロセッサ・コアと、前記複数のプロセッサ・コアに接続されるメモリと、を備え、プログラムのロード要求を受信すると、前記複数のプロセッサ・コアのうち、まだプログラムがロードされていないプロセッサ・コアを選択し、前記選択されたプロセッサ・コアに前記プログラムをロードし、前記ロード要求によって指定された属性情報と、前記プログラムがロードされたプロセッサ・コアと、を対応付ける第１の対応付け情報を保持し、パケットを受信すると、前記受信したパケットに対応する属性情報を特定し、前記受信したパケットを、前記特定された属性情報に対応するプロセッサ・コアに転送することを特徴とする。
【発明の効果】
【００２４】
本発明の一実施形態によれば、ユーザまたはサービスごとに仮想環境を構築され、ユーザのパケットはそのユーザのプログラムが動作しているコアに高速に転送される。このため、ワイヤ・スピードの処理が実現され、かつ柔軟なプログラミングが実現される。
【図面の簡単な説明】
【００２５】
【図１】本発明の第１の実施形態のパケット処理装置の全体構成を示すブロック図である。
【図２】本発明の第１の実施形態のネットワーク処理ユニットの構成を示すブロック図である。
【図３】本発明の第１の実施形態のネットワーク処理ユニットの構成の別の例を示すブロック図である。
【図４】本発明の第１の実施形態のコアわりあて表の説明図である。
【図５】本発明の第１の実施形態の制御ボードがユーザからのプログラム・ロード要求を受信した際に実行される処理を示すフローチャートである。
【図６】本発明の第１の実施形態の制御ボードがユーザからのプログラム・アンロード要求を受信した際に実行される処理を示すフローチャートである。
【図７Ａ】本発明の第１の実施形態のネットワーク・インタフェースが内蔵するユーザ／サービス識別情報と仮想環境識別子との第１の対応表の説明図である。
【図７Ｂ】本発明の第１の実施形態のネットワーク・インタフェースが内蔵するユーザ／サービス識別情報と仮想環境識別子との第２の対応表の説明図である。
【図７Ｃ】本発明の第１の実施形態のネットワーク・インタフェースが内蔵するユーザ／サービス識別情報と仮想環境識別子との第３の対応表の説明図である。
【図８】本発明の第１の実施形態において、パケットがネットワーク・インタフェースに到着した際の、パケットのコアへの転送処理を示す説明図である。
【図９】本発明の第１の実施形態の出力ディスパッチ表の説明図である。
【図１０】本発明の第２の実施形態のパケット処理システムの全体構成を示すブロック図である。
【発明を実施するための形態】
【００２６】
最初に、本発明の実施形態の概要を説明する。
【００２７】
上記の課題を解決するため、本発明の実施形態のパケット処理装置は、ユーザ／サービス識別情報と仮想環境識別子との対応表と、プログラム・ロード用およびパケット転送用の仮想環境識別子とボード、ＮＰＵ、コアとの対応表とを使用する。
【００２８】
仮想環境は、ユーザまたはサービスなどと対応づけられる。ユーザは、一つの仮想環境を、一つの独立したネットワークとして認識する。仮想環境は、仮想環境識別子によって識別される。すなわち、仮想環境識別子は、ユーザ識別情報またはサービス識別情報などと対応づけられる属性情報である。
【００２９】
たとえば、各ユーザが、互いに異なる処理をパケット処理装置に要求する場合がある。この場合、各ユーザが各仮想環境と対応づけられる。そして、各ユーザに要求される処理を実行するためのプログラムが、パケット処理装置内のプロセッサにロードされる。
【００３０】
あるいは、パケット処理装置が実行すべき処理が、ユーザに利用されるサービスごとに異なる場合がある。たとえば，各ユーザが同一のパケットに対して異なるプロトコル処理を要求する場合があるが，それは単一の環境においては実現することができない。この場合、各サービスが各仮想環境と対応付けられる。そして、各サービスにおいて要求される処理を実行するためのプログラムが、パケット処理装置内のプロセッサにロードされる。
【００３１】
パケット処理装置が実行する処理の概要はつぎのとおりである。
【００３２】
まず、パケット処理装置は、ユーザからのプログラム・ロード要求が発生するよりまえにユーザ／サービス識別情報と仮想環境識別子との対応表の内容を決定する。つぎに、ロード要求が発生すると、パケット処理装置は、第１に、プログラム・ロード用の仮想環境識別子とボード、ＮＰＵ（プロセッサ）、コア（プロセッサ・コア）との対応表にもとづいて、未わりあての１個または複数個のコア（およびそのコアが存在するボードおよびＮＰＵ）をその仮想環境（ユーザ／サービス）にわりあてる（すなわちそのようにわりあてたことをこの対応表に記入する）。第２に、パケット処理装置は、わりあてたコアにおいてプログラムが実行されるようにユーザ・プログラムをロードする。第３に、パケット処理装置は、パケット転送用の仮想環境識別子とボード、ＮＰＵ、コアとの対応表におけるその仮想環境に対応するエントリに、上記のボード、ＮＰＵ、およびコアの識別子を、前記の対応表と整合するように記入する。
【００３３】
そのユーザのパケットが処理装置に到着したとき、パケット処理装置は、まず、パケットの内容に基づいてユーザまたはサービスを識別し、ユーザ／サービス識別情報と仮想環境識別子との対応表を使用して仮想環境識別子をもとめる。つぎに、パケット処理装置は、その仮想環境識別子とパケット転送用の仮想環境識別子とボード、ＮＰＵ、コアとの対応表を使用して、当該コアにパケットを転送する。
【００３４】
アンロード要求時に、パケット処理装置は、要求情報にふくまれるユーザ／サービス識別情報をもとに、ユーザ／サービス識別情報と仮想環境識別子との対応表を使用して仮想環境識別子をもとめる。そして、パケット処理装置は、プログラム・ロード用およびパケット転送用の仮想環境識別子とボード、ＮＰＵ、コアとの対応表から、アンロードされるプログラムに関するエントリの内容を削除する。
【００３５】
次に、上記の処理を実現するための詳細な実施形態について説明する。
【００３６】
最初に、本発明の第１の実施形態について説明する。
【００３７】
図１は、本発明の第１の実施形態のパケット処理装置１０１の全体構成を示すブロック図である。
【００３８】
パケット処理装置１０１は、１個または複数個のパケット処理ボード（ＰＰＢ）１１１と、各々がネットワークに接続される１個または複数個のネットワーク・インタフェース（ＮＩＦ）１５１と、制御ボード（ＣＢ）１４１と、それらを接続するスイッチ・ファブリック１８１とによって構成される。
【００３９】
図１には、例として、ｎ個のパケット処理ボード１１１およびｍ個のネットワーク・インタフェース１５１を備えるパケット処理装置１０１を示す。ただし、図１には、ｎ個のパケット処理ボード１１１のうち３個のみを、パケット処理ボード１１１Ａ、１１１Ｂおよび１１１Ｃとして示し、ｍ個のネットワーク・インタフェース１５１のうち３個のみを、ネットワーク・インタフェース１５１Ａ、１５１Ｂおよび１５１Ｃとして示す。本実施形態において、パケット処理ボード１１１Ａ〜１１１Ｃのいずれにも共通する説明をする場合、これらを総称してパケット処理ボード１１１とも記載する。同様に、ネットワーク・インタフェース１５１Ａ、１５１Ｂおよび１５１Ｃのいずれにも共通する説明をする場合、これらを総称してネットワーク・インタフェース１５１とも記載する。
【００４０】
パケット処理ボード１１１は、１個または複数個のネットワーク処理ユニット（ＮＰＵ）１１２、および、仮想環境−ＮＰＵディスパッチ表（ＮＤＴ）１１３をふくむ。仮想環境−ＮＰＵディスパッチ表１１３は、仮想環境識別子と、ＮＰＵ識別子との組を要素としてふくむ表である。
【００４１】
図１には、例として、各パケット処理ボード１１１が２個のネットワーク処理ユニット１１２を含む例を示す。パケット処理ボード１１１Ａがネットワーク処理ユニット１１２Ａ及び１１２Ｂを、パケット処理ボード１１１Ｂがネットワーク処理ユニット１１２Ｃ及び１１２Ｄを、パケット処理ボード１１１Ｃがネットワーク処理ユニット１１２Ｅ及び１１２Ｆを、それぞれ備える。本実施形態において、ネットワーク処理ユニット１１２Ａ〜１１２Ｆのいずれにも共通する説明をする場合、これらを総称してネットワーク処理ユニット１１２とも記載する。
【００４２】
図１の例において、パケット処理ボード１１１Ａが仮想環境−ＮＰＵディスパッチ表１１３Ａを、パケット処理ボード１１１Ｂが仮想環境−ＮＰＵディスパッチ表１１３Ｂを、パケット処理ボード１１１Ｂが仮想環境−ＮＰＵディスパッチ表１１３Ｂを、それぞれふくむ。本実施形態において、仮想環境−ＮＰＵディスパッチ表１１３Ａ〜１１３Ｃのいずれにも共通する説明をする場合、これらを総称して仮想環境−ＮＰＵディスパッチ表１１３とも記載する。
【００４３】
各パケット処理ボード１１１には整数値による識別子があたえられ、各ネットワーク処理ユニット１１２にも整数値による識別子があたえられている。たとえば、図１のパケット処理ボード１１１Ａに表示されている「ＰＰＢ  ＃０」は、パケット処理ボード（ＰＰＢ）１１１Ａに識別子（この場合は識別番号）「０」があたえられていることを示す。
【００４４】
図１では省略されているが、各パケット処理ボード１１１は、さらに、各ネットワーク処理ユニット１１２に接続されたメモリをふくむ（後述する図２及び図３参照）。
【００４５】
図１には、各パケット処理ボード１１１が独立したボードとして実装される例を示す。しかし、各パケット処理ボード１１１は、それと同等の機能を有するいかなる形態のパケット処理モジュールとして実装されてもよい。
【００４６】
ネットワーク・インタフェース１５１は、仮想環境−ボード・ディスパッチ表（ＢＤＴ）１５２をふくむ。仮想環境−ボード・ディスパッチ表１５２は、仮想環境識別子とボード識別子との組を要素としてふくむ。
【００４７】
図１の例において、ネットワーク・インタフェース１５１Ａが仮想環境−ボード・ディスパッチ表１５２Ａを、ネットワーク・インタフェース１５１Ｂが仮想環境−ボード・ディスパッチ表１５２Ｂを、ネットワーク・インタフェース１５１Ｃが仮想環境−ボード・ディスパッチ表１５２Ｃを、それぞれ含む。本実施形態において、仮想環境−ボード・ディスパッチ表１５２Ａ〜１５２Ｃのいずれにも共通する説明をする場合、これらを総称して仮想環境−ボード・ディスパッチ表１５２とも記載する。
【００４８】
制御ボード１４１は、汎用ＣＰＵ１４２と、汎用ＣＰＵ１４２に接続される主記憶装置（メモリ）１４３とをふくむ。
【００４９】
図１において、仮想環境−ＮＰＵディスパッチ表１１３は、仮想環境識別子（ＥＩＤ）とＮＰＵとを１対１に対応づけ、仮想環境−ボード・ディスパッチ表１５２は、仮想環境識別子とボードとを１対１に対応づけている。たとえば、仮想環境−ＮＰＵディスパッチ表１１３Ａは、仮想環境識別子「８００」とＮＰＵ識別子「１」とを１対１に対応づけ、仮想環境−ボード・ディスパッチ表１５２Ａは、仮想環境識別子「８００」とボード識別子「０」とを１対１に対応づけている。しかし、仮想環境−ＮＰＵディスパッチ表１１３は、１個の仮想環境識別子に複数個のＮＰＵを対応づけることもできる。同様に、仮想環境−ボード・ディスパッチ表１５２は、１個の仮想環境識別子に複数個のボードを対応づけることもできる。
【００５０】
図１においては、パケット処理ボード１１１に入力されたパケットを複数個のネットワーク処理ユニット１１２にふりわける必要があるために、仮想環境−ＮＰＵディスパッチ表１１３が必要である。しかし、１個のパケット処理ボード１１１がただ１個のネットワーク処理ユニット１１２をふくむ場合、または、各パケット処理ボード１１１がネットワーク処理ユニット１１２の数だけのインタフェースによってスイッチ・ファブリック１８１と接続されている場合には、パケットのふりわけが不要であるため、仮想環境−ＮＰＵディスパッチ表１１３は不要である。
【００５１】
ネットワークから入力されるパケットは、ネットワーク・インタフェース１５１およびスイッチ・ファブリック１８１経由でパケット処理ボード１１１に転送されて処理される。その後、パケットは、スイッチ・ファブリック１８１経由で他のパケット処理ボード１１１に転送されるか、または、ネットワーク・インタフェース１５１経由でネットワークに出力される。ネットワーク・インタフェース１５１において入力されたパケットが複数個のパケット処理ボード１１１のうちのいずれに転送されるかは、ネットワーク・インタフェース１５１がふくむ仮想環境−ボード・ディスパッチ表１５２にもとづいて決定される。また、パケット処理ボード１１１において処理されるべきパケットが複数個のネットワーク処理ユニット１１２のうちのいずれに転送されるかは、仮想環境−ＮＰＵディスパッチ表１１３にもとづいて決定される。
【００５２】
なお、ネットワーク・インタフェース識別子が「０」のネットワーク・インタフェース１５１Ａ（ＮＩＦ  ＃０）の仮想環境−ボード・ディスパッチ表１５２Ａは、仮想環境識別子「６１７」とボード識別子「１」との対、および、仮想環境識別子「８００」とボード識別子「０」との対をふくんでいる。以下の説明において、たとえば、識別子「６１７」と識別子「１」との対を、「６１７−１」のように記載する。
【００５３】
ボード識別子が「０」のパケット処理ボード１１１Ａ（ＰＰＢ  ＃０）の仮想環境−ＮＰＵディスパッチ表１１３Ａは、仮想環境識別子とそれに対応するＮＰＵ識別子との対として、「８００−１」という対をふくんでいる。ボード識別子が「１」のパケット処理ボード１１１Ｂ（ＰＰＢ  ＃１）の仮想環境−ＮＰＵディスパッチ表１１３Ｂは、「６１７−２」という対をふくんでいる。
【００５４】
図１においては各パケット処理ボード１１１上に複数個のネットワーク処理ユニット１１２が存在するため、仮想環境−ＮＰＵディスパッチ表１１３を使用してネットワーク処理ユニット１１２を選択する必要があるが、１個のパケット処理ボード１１１が１個のネットワーク処理ユニット１１２だけをふくむ場合は仮想環境−ＮＰＵディスパッチ表１１３を省略することができる。
【００５５】
パケット処理ボード１１１上に複数個のネットワーク処理ユニット１１２が存在する場合であっても、パケット処理ボード１１１がネットワーク処理ユニット１１２ごとに独立にパケットを入出力することができる場合、すなわち、スイッチ・ファブリック１８１から各ネットワーク処理ユニット１１２への配線が独立である場合は、やはり仮想環境−ＮＰＵディスパッチ表１１３を省略することができる。
【００５６】
図２は、本発明の第１の実施形態のネットワーク処理ユニット（ＮＰＵ）１１２の構成を示すブロック図である。
【００５７】
図２に示すネットワーク処理ユニット１１２は、１個の汎用処理コア（ＧＰＣ）２１１、複数個のパケット処理コア（ＰＰＣ）２２１、Ｉ／Ｏ制御装置（Ｉ／Ｏ  Ｃｏｎｔｒｏｌｌｅｒ）２０２、ＳＲＡＭ（スタティック・ランダム・アクセス・メモリ）２３１、メモリ制御装置（Ｍｅｍｏｒｙ  Ｃｏｎｔｒｏｌｌｅｒ）２４１、および、これらを接続するバス２５１によって構成される。各パケット処理コア２２１には整数値による識別子があたえられている。
【００５８】
汎用処理コア２１１はおもに制御処理（たとえばプログラムのロード・アンロード処理）に使用され、データ処理はおもに複数のパケット処理コア２２１において並列に実行される。Ｉ／Ｏ制御装置２０２はネットワーク処理ユニット１１２の外部すなわちパケット処理ボード１１１上にあるスイッチ２６１に接続されている。また、Ｉ／Ｏ制御装置２０２は仮想環境識別子とコア識別子との対を要素とする表である仮想環境−コア・ディスパッチ表（ＣＤＴ）２０３をふくむ。
【００５９】
ネットワーク処理ユニット１１２が図２のように複数個のパケット処理コア２２１をふくむ場合、仮想環境−コア・ディスパッチ表２０３は、コア識別子としてパケット処理コア２２１の識別子を格納する。一方、ネットワーク処理ユニット１１２が図３のように複数個の汎用処理コア２１１をふくむ場合、仮想環境−コア・ディスパッチ表２０３は、コア識別子として汎用処理コア２１１の識別子を格納する。
【００６０】
ＳＲＡＭ２３１は、小容量だが遅延がちいさい主記憶装置である。メモリ制御装置２４１は、ネットワーク処理ユニット１１２の外部すなわちパケット処理ボード１１１上にあるＤＲＡＭ（ダイナミック・ランダム・アクセス・メモリ）２４２に接続されている。ＤＲＡＭ２４２は大容量だが遅延がややおおきい主記憶装置である。
【００６１】
図２において、仮想環境−コア・ディスパッチ表２０３は、仮想環境識別子とコアとを１対１に対応づけている。しかし、仮想環境−コア・ディスパッチ表２０３は、１個の仮想環境識別子を複数個のコアに対応づけることもできる。
【００６２】
スイッチ２６１は、スイッチ・ファブリック１８１を経由してパケット処理ボード１１１に到達するパケット・データをＩ／Ｏ制御装置２０２に転送する。Ｉ／Ｏ制御装置２０２は、バス２５１経由でパケット・データをＳＲＡＭ２３１に、または、メモリ制御装置２４１を経由してＤＲＡＭ２４２に転送する。ＳＲＡＭ２３１またはＤＲＡＭ２４２に格納されたデータは、パケット処理コア２２１において処理されて、再度ＳＲＡＭ２３１またはＤＲＡＭ２４２に格納されるか、または、Ｉ／Ｏ制御装置２０２経由でネットワーク処理ユニット１１２の外部に出力される。
【００６３】
たとえば、図２に示すＮＰＵ１１２が、ボード識別子が「０」のパケット処理ボード１１１Ａ（ＰＰＢ  ＃０）におけるＮＰＵ識別子「１」のＮＰＵ１１２である場合、Ｉ／Ｏ制御装置２０２の仮想環境−コア・ディスパッチ表２０３は、仮想環境識別子とそれに対応するコア識別子との対として、「８００−２」という対をふくんでいる。
【００６４】
図３は、本発明の第１の実施形態のネットワーク処理ユニット（ＮＰＵ）１１２の構成の別の例を示すブロック図である。
【００６５】
図３に示すネットワーク処理ユニット１１２は、複数個の汎用処理コア（ＧＰＣ）２１１、Ｉ／Ｏ制御装置（Ｉ／Ｏ  Ｃｏｎｔｒｏｌｌｅｒ）２０２、キャッシュ２７１、および、これらを接続するバス２５１によって構成される。
【００６６】
データ処理は、汎用処理コア２１１において並列に実行される。さらに、汎用処理コア２１１は制御処理（たとえばプログラムのロード・アンロード処理）もおこなう。キャッシュ２７１は、小容量だが遅延がちいさい記憶装置（たとえばＳＲＡＭ）であり、汎用処理コア２１１またはＩ／Ｏ制御装置２０２から主記憶に格納されたデータのうち最近アクセスされたものだけを格納する。それ以外のデータはメモリ制御装置２４１経由でＤＲＡＭ２４２に格納される。メモリ制御装置２４１は、通常、データのキャッシュ２７１からＤＲＡＭ２４２への転送およびキャッシュ２７１からの削除を自動的に制御するが、主記憶装置の特定のアドレス範囲についてこの操作を禁止する機能ももっている。
【００６７】
たとえば、図３に示すＮＰＵ１１２が、ボード識別子が「１」のパケット処理ボード１１１Ｂ（ＰＰＢ  ＃１）におけるＮＰＵ識別子「２」のＮＰＵ１１２である場合、Ｉ／Ｏ制御装置２０２の仮想環境−コア・ディスパッチ表２０３は、仮想環境識別子とそれに対応するコア識別子との対として、「６１７−１」という対をふくんでいる。
【００６８】
図４は、本発明の第１の実施形態のコアわりあて表４０１の説明図である。
【００６９】
コアわりあて表４０１は、制御ボード１４１上のメモリ１４３に格納され、プログラム・ロード用の仮想環境識別子と、ボード、ＮＰＵ及びコアとを対応づける。具体的には、コアわりあて表４０１は、仮想環境識別子（ＥＩＤ）４１４と、その環境にわりあてられるコアを識別するためのボード識別子（ＢＩＤ）４１１、ＮＰＵ識別子（ＮＩＤ）４１２及びコア識別子（ＣＩＤ）４１３と、を対応づける情報をふくむ。
【００７０】
コア（すなわちパケット処理コア２２１または汎用処理コア２１１）をネットワーク処理ユニット１１２内で一意に識別するコア識別子４１３、ネットワーク処理ユニット１１２をパケット処理ボード１１１内で一意に識別するＮＰＵ識別子４１２、及び、パケット処理ボード１１１をパケット処理装置１０１内で一意に識別するボード識別子４１１の組によって、各コアをパケット処理装置１０１内で一意に識別することができる。
【００７１】
コア割り当て表４０１においてはボード識別子「０」、ＮＰＵ識別子「１」およびコア識別子「２」によって識別されるコアに仮想環境識別子「８００」が対応し（行４２３）、ボード識別子「１」、ＮＰＵ識別子「２」およびコア識別子「１」によって識別されるコアに仮想環境識別子「６１７」が対応している（行４１４）。これは、ボード識別子「０」、ＮＰＵ識別子「１」及びコア識別子「２」によって識別されるコアが、仮想環境識別子「８００」によって識別される仮想環境にわりあてられていること、および、ボード識別子「１」、ＮＰＵ識別子「２」及びコア識別子「１」によって識別されるコアが、仮想環境識別子「６１７」によって識別される仮想環境にわりあてられていることを表現している。
【００７２】
一方、ボード識別子「０」、ＮＰＵ識別子「１」およびコア識別子「０」によって識別されるコア、ならびに、ボード識別子「０」、ＮＰＵ識別子「１」およびコア識別子「１」によって識別されるコアに対応する仮想環境識別子４１４は記入されていない（行４２１および行４２２）。これは、これらのコアが未使用である（すなわち、いずれの仮想環境にもわりあてられていない）ことを表現している。
【００７３】
コアわりあて表４０１は、ネットワーク処理ユニット１１２が図２のように複数個のパケット処理コア２２１をふくむ場合、コア識別子としてパケット処理コア２２１の識別子を格納する。一方、図３のようにネットワーク処理ユニット１１２が複数個の汎用処理コア２１１をふくむ場合、コアわりあて表４０１は、コア識別子として汎用処理コア２１１の識別子を格納する。
【００７４】
ユーザによるプログラム・ロード要求およびプログラム・アンロード要求は、パケット処理装置１０１の外部からネットワーク・インタフェース１５１を経由して制御ボード１４１に到着する。プログラム・ロード要求は、ユーザ／サービス識別情報または仮想環境識別子と、要求するコア数と、ロードするべきプログラムまたはその識別情報（ＵＲＬなど）をふくむ。プログラム・アンロード要求は、ユーザ／サービス識別情報または仮想環境識別子と、要求するコア数とをふくむ。ただし、要求コア数が「１」の場合は要求コア数を省略することができる。
【００７５】
図５は、本発明の第１の実施形態の制御ボード１４１がユーザからのプログラム・ロード要求を受信した際に実行される処理５０１を示すフローチャートである。
【００７６】
処理５０１の実行が開始されると、まずステップ５１１において、制御ボード１４１は、コアわりあて表４０１にもとづいて要求元仮想環境にコアをわりあて、そのわりあて結果をコアわりあて表４０１に記入する。すなわち、制御ボード１４１は、コアわりあて表４０１において仮想環境識別子（ＥＩＤ）４１４の欄が空欄になっている行を、要求されたコア数と同数特定し、特定された行の仮想環境識別子４１４に要求元の仮想環境識別子を記入する。この行の選択によって、ボード識別子４１１、ＮＰＵ識別子４１２及びコア識別子４１３の各値が選択される。
【００７７】
つぎに、ステップ５１２において、汎用処理コア２１１は、わりあてられたコア（すなわち、ステップ５１１において特定された行に対応する汎用処理コア２１１またはパケット処理コア２２１）にプログラムをロードして、わりあてられたコアを起動する。プログラムは通常、ＤＲＡＭ２４２およびメモリ制御装置２４１（図３の例ではさらにキャッシュ２７１）によって構成される主記憶、または、コアが内蔵する命令キャッシュに格納されるが、ＳＲＡＭ２３１に格納されてもよい。主記憶またはコアが複数のコアに共有されている場合、それらにプログラムを格納した後、対象のコアのレジスタに、プログラムが格納された領域の先頭アドレスをロードする。
【００７８】
図２の構成において、パケット処理コア２２１は、パケット処理に専用化されているため、プログラムのロードおよび起動をおこなうことができない場合がある。その場合、ネットワーク処理ユニット１１２にふくまれる汎用処理コア２１１がロードおよび起動処理をおこなえばよい。
【００７９】
つぎに、ステップ５１３において、仮想環境−コア・ディスパッチ表２０３、仮想環境−ＮＰＵディスパッチ表１１３、仮想環境−ボード・ディスパッチ表１５２にわりあて結果が記入される。すなわち、処理５０１において特定されたボード識別子、ＮＰＵ識別子およびコア識別子と仮想環境識別子との組に整合するように、これらの表のなかの１行の内容が決定される。この記入は、制御ボード１４１からの指示にもとづいて、Ｉ／Ｏ制御装置２０２、パケット処理ボード１１１およびネットワーク・インタフェース１５１によって実行される。
【００８０】
ここで、図４の行４２３の仮想環境識別子４１４として「８００」がまだ格納されていない時点において、仮想環境識別子「８００」および要求コア数「１」を指定するプログラム・ロード要求を受信した場合を例として、図５の処理を説明する。
【００８１】
この場合、ステップ５１１において、制御ボード１４１は、仮想環境識別子４１４の欄が空欄となっている１行、たとえば行４２３を特定し、その行４２３の仮想環境識別子４１４として「８００」を記入する。
【００８２】
上記のように行４２３が特定された場合、ステップ５１２において、制御ボード１４１は、行４２３に対応するコアにプログラムをロードする要求を、そのコアをふくむパケット処理ボード１１１に送信する。この場合、プログラムは、ボード識別子「０」によって識別されるパケット処理ボード１１１内の、ＮＰＵ識別子「１」によって識別されるネットワーク処理ユニット１１２がふくむ、コア識別子「２」によって識別されるコアにロードされる。そのコアが汎用処理コア２１１である場合、その汎用処理コア２１１自身がプログラムのロードを実行してもよい。そのコアがパケット処理コア２２１である場合、そのパケット処理コア２２１に接続された汎用処理コア２１１がプログラムのロードを実行する。
【００８３】
ステップ５１３において、制御ボード１４１は、行４２３の内容に整合するように各テーブルを更新する要求を、パケット処理装置１０１内の各部に送信する。ネットワーク・インタフェース１５１は、要求にしたがって、仮想環境識別子「８００」とボード識別子「０」とを対応づける行を仮想環境−ボード・ディスパッチ表１５２に追加する（図１の仮想環境−ボード・ディスパッチ表１５２Ａ〜１５２Ｃ参照）。ボード識別子「０」によって識別されるパケット処理ボード１１１（図１の例ではパケット処理ボード１１１Ａ）は、仮想環境識別子「８００」とＮＰＵ識別子「１」とを対応づける行を仮想環境−ＮＰＵディスパッチ表１１３に追加する。ＮＰＵ識別子「１」によって識別されるネットワーク処理ユニット１１２（図１の例ではネットワーク処理ユニット１１２Ｂ）内のＩ／Ｏ制御装置２０２は、仮想環境識別子「８００」とコア識別子「２」とを対応づける行を仮想環境−コア・ディスパッチ表２０３に追加する。その結果、各ディスパッチ表には、コアわりあて表４０１の少なくとも一部と同一の内容が格納される。
【００８４】
図６は、本発明の第１の実施形態の制御ボード１４１がユーザからのプログラム・アンロード要求を受信した際に実行される処理６０１を示すフローチャートである。
【００８５】
処理６０１の実行が開始されると、まずステップ６１１において、制御ボード１４１は、コアわりあて表４０１から、プログラム・アンロード要求によって指定された仮想環境のわりあて結果を削除する。
【００８６】
つぎにステップ６１２において、仮想環境−ボード・ディスパッチ表１５２、仮想環境−ＮＰＵディスパッチ表１１３、仮想環境−コア・ディスパッチ表２０３から当該仮想環境のわりあて結果が削除される。
【００８７】
最後にステップ６１３において、汎用処理コア２１１は、わりあてられたコア（すなわち汎用処理コア２１１またはパケット処理コア２２１）においてプログラムを停止してアンロードする。
【００８８】
図７Ａから図７Ｃは、本発明の第１の実施形態のネットワーク・インタフェース１５１が内蔵するユーザ／サービス識別情報と仮想環境識別子との対応表の説明図である。
【００８９】
ネットワーク・インタフェース１５１は、パケットを受信すると、図７に示す対応表に基づいて、そのパケットに対応する仮想環境識別子を特定する。既に説明したように、仮想環境は、ユーザ（たとえばパケットを送信したユーザまたはパケットを要求したユーザ）またはサービス（たとえばパケットを送信または要求したユーザが利用するサービス）と対応づけられる。このため、仮想環境識別子は、パケットに含まれるユーザ識別情報またはサービス識別情報と直接に対応づけられてもよい。あるいは、ユーザまたはサービスとパケットに含まれるアドレスとが対応する場合、仮想環境識別子は、パケットに含まれるアドレスと対応づけられてもよい。
【００９０】
図７Ａに示す対応表は仮想環境識別子とアドレスとを対応づける情報を、図７Ｂに示す対応表は仮想環境識別子とユーザ識別情報とを対応づける情報を、図７Ｃに示す対応表は仮想環境識別子とサービス識別情報とを対応づける情報を、それぞれ含む。以下、各対応表の詳細を説明する。
【００９１】
図７Ａに示す対応表７０１は、ＩＰアドレス、ＩＰプロトコル（ＴＣＰ、ＵＤＰなど）、およびポート（ＴＣＰポートまたはＵＤＰポート）の３つからなる組によってユーザまたはサービスが識別される（すなわち、上記の３つからなる組からユーザまたはサービスへの多対１の写像が存在する）ことを仮定している。パケットが制御ボード１４１に到着した際に、パケットにふくまれるＩＰアドレス、ＩＰプロトコルおよびポートを検索キーに使用して対応表７０１を検索することによって、仮想環境識別子欄（ＥＩＤ）に格納されている、対応する仮想環境識別子をもとめることができる。
【００９２】
なお、対応表７０１はつぎの内容をふくんでいる。ＩＰアドレス「１９２．１６８．１．２」、ＩＰプロトコル「ＴＣＰ」およびポート「８０」に対応する仮想環境識別子は「８００」である。また、ＩＰアドレス「１９２．１６８．２．３」、ＩＰプロトコル「ＵＤＰ」およびポート「４０５２」に対応する仮想環境識別子は「６１７」である。たとえば、到着したパケットにＩＰアドレス「１９２．１６８．１．２」、ＩＰプロトコル「ＴＣＰ」およびポート「８０」がふくまれる場合、仮想環境識別子「８００」が特定される。
【００９３】
図７Ｂに示す対応表７０２は、パケットにふくまれるユーザＩＤによってユーザが識別されることを仮定している。パケットが制御ボード１４１に到着した際に、パケットにふくまれるユーザＩＤを検索キーに使用して表７１１を検索することによって、仮想環境識別子欄（ＥＩＤ）に格納されている、対応する仮想環境識別子をもとめることができる。
【００９４】
パケットがＧＲＥ(Generic Routing Encapsulation)プロトコルによってカプセル化されている場合、ＧＲＥヘッダのＫｅｙ欄にユーザ識別子を格納することができる。このようなパケットが到着した際には、Ｋｅｙ欄からユーザＩＤをとりだすことによって、そのパケットが属するべき仮想環境の識別子をもとめることができる。パケットがＭＰＬＳまたは他のトンネリング・プロトコルによってコーディングされている場合にも、同様にしてトンネリング・プロトコルがふくむ情報からユーザやサービスを識別し、その情報を使用して仮想環境識別子をもとめることができる。
【００９５】
なお、対応表７０２はつぎの内容をふくんでいる。ユーザＩＤ「５００」に対応する仮想環境識別子は「８００」である。また、ユーザＩＤ「５０１」に対応する仮想環境識別子は「６１７」である。
【００９６】
図７Ｃに示す対応表７０３は、パケットにふくまれるサービスＩＤによってサービスが識別されることを仮定している。パケットが制御ボード１４１に到着した際に、パケットにふくまれるサービスＩＤを検索キーに使用して表７２１を検索することによって、仮想環境識別子欄（ＥＩＤ）に格納されている、対応する仮想環境識別子をもとめることができる。この場合も、パケットがＧＲＥプロトコルによってカプセル化されている場合、ＧＲＥヘッダのＫｅｙ欄にサービス識別子を格納することができる。このようなパケットが到着した際には、Ｋｅｙ欄からサービスＩＤをとりだすことによって、そのパケットが属するべき仮想環境の識別子をもとめることができる。
【００９７】
なお、対応表７０３はつぎの内容をふくんでいる。サービスＩＤ「Ｉｎｔｒａｎｅｔ００１」に対応する仮想環境識別子は「８００」である。また、サービスＩＤ「Ｗｅｂ１０１」に対応する仮想環境識別子は「６１７」である。
【００９８】
以下、対応表７０１、７０２および７０３におけるユーザ／サービス識別情報と、プログラム・ロード要求およびプログラム・アンロード要求におけるユーザ／サービス識別情報との関係について補足する。両者はかならずしも同一である必要はなく、両者の対応関係があらかじめテーブル等によってあたえられていれば、処理５０１および処理６０１の際に両者を対応づけることによって、プログラムがロードされたコアにパケットをディスパッチすることができる。
【００９９】
図８は、本発明の第１の実施形態において、パケットがネットワーク・インタフェース１５１に到着した際の、パケットのコアへの転送処理を示す説明図である。
【０１００】
パケットがネットワーク・インタフェース１５１に到着すると、まず、ネットワーク・インタフェース１５１が、対応表７０１、７１１、または７２１を使用して、パケットにふくまれるユーザ／サービス識別情報に対応する仮想環境識別子をもとめる（ステップ８０１）。たとえば、ユーザＩＤが「５００」の場合、図７Ｂにもとづいて、仮想環境識別子「８００」がもとめられる。
【０１０１】
つぎに、ネットワーク・インタフェース１５１は、ステップ８０１で特定された仮想環境識別子をキーとして仮想環境−ボード・ディスパッチ表（ＢＤＴ）１５２を検索することによって、仮想環境識別子に対応するボード識別子をもとめる。そして、ネットワーク・インタフェース１５１は、スイッチ・ファブリック１８１を制御することによって、特定されたボード識別子をもつパケット処理ボード（ＰＰＢ）１１１にパケットを転送する（ステップ８０２）。仮想環境識別子が「８００」の場合、ボード識別子として「０」がもとめられ、ボード識別子「０」のパケット処理ボード１１１（図１および図８の例では、「ＰＰＢ  ＃０」と表示されたパケット処理ボード１１１Ａ）にパケットが転送される。
【０１０２】
つぎに、パケット転送先のパケット処理ボード１１１が、仮想環境識別子をキーとしてそのパケット処理ボード１１１内の仮想環境−ＮＰＵディスパッチ表（ＮＤＴ）１１３を検索することによって、対応するＮＰＵ識別子をもとめ、そのＮＰＵ識別子をもつネットワーク処理ユニット（ＮＰＵ）１１２にパケットを転送する（ステップ８０３）。図８の例では仮想環境−ＮＰＵディスパッチ表１１３Ａが検索される。仮想環境識別子が「８００」の場合、ＮＰＵ識別子として「１」がもとめられ、ＮＰＵ識別子「１」のネットワーク処理ユニット１１２にパケットが転送される。
【０１０３】
さらに、パケット転送先のネットワーク処理ユニット（ＮＰＵ）１１２内のＩ／Ｏ制御装置２０２が、仮想環境識別子をキーとして仮想環境−コア・ディスパッチ表（ＣＤＴ）２０３を検索することによって、対応するコア識別子をもとめ、そのコア識別子をもつコアにパケットを転送する（ステップ８０４）。仮想環境識別子が「８００」の場合、コア識別子として「２」がもとめられ、コア識別子「２」のコアにパケットが転送される。
【０１０４】
転送先のコアにおいては、ユーザのロード要求にしたがってロードされたプログラムが動作している。このプログラムはＳＲＡＭ２３１またはキャッシュ２７１を使用することによって、すくない遅延で処理を実行することができるため、ワイヤ・スピードでの処理が可能になる。
【０１０５】
キャッシュ２７１にふくまれるデータおよびプログラムは自動的に削除されることがあり、そのためにワイヤ・スピードでの処理が阻害されることがある。この問題を防止するためには、前記のデータおよびプログラムのアドレス範囲を指定してキャッシュ２７１からの自動削除を禁止する設定をおこなえばよい。
【０１０６】
このプログラムは、パケットの処理を実行した後、そのパケットを他の特定のパケット処理ボード１１１に転送するか、または、特定のネットワーク・インタフェース１５１に転送することができる。転送先のパケット処理ボード１１１においても図８に示す処理が実行され、それによって、仮想環境識別子をキーとしてネットワーク処理ユニット１１２およびコアが決定される。
【０１０７】
なお、ボード選択、ＮＰＵ選択およびコア選択の際に、１個の仮想環境識別子に対応する複数のボード識別子、ＮＰＵ識別子またはコア識別子が存在する場合、それらのうちの任意の１個を選択し、選択されたボード、ＮＰＵ、またはコアにパケットを転送すればよい。その際に乱数を使用してパケットをふりわけてもよい。あるいは、そのボード、ＮＰＵ、またはコアの使用状況を検知して、それらが現在使用されていないか、またはそれらがもつ未処理のパケット数（入力キューにふくまれるパケット数など）がすくないものを選択してパケットをふりわけてもよい。
【０１０８】
また、１個のパケット処理ボード１１１がただ１個のネットワーク処理ユニット１１２をふくむ場合、または、各パケット処理ボード１１１がネットワーク処理ユニット１１２の数だけのインタフェースによってスイッチ・ファブリック１８１と接続されている場合には、パケットのふりわけが不要であるため、仮想環境−ＮＰＵディスパッチ表１１３は不要である。この場合、パケットがネットワーク・インタフェース１５１に到着すると、パケットのコアへの転送処理はつぎのように実行される。
【０１０９】
パケットがネットワーク・インタフェース１５１に到着すると、まず、ネットワーク・インタフェース１５１が、対応表７０１、７１１、または７２１を使用して、パケットにふくまれるユーザ／サービス識別情報に対応する仮想環境識別子をもとめる。
【０１１０】
つぎに、ネットワーク・インタフェース１５１は、ステップ８０１で特定された仮想環境識別子をキーとして仮想環境−ボード・ディスパッチ表（ＢＤＴ）１５２を検索することによって、仮想環境識別子に対応するボード識別子をもとめる。
【０１１１】
そして、ネットワーク・インタフェース１５１は、スイッチ・ファブリック１８１を制御することによって、特定されたボード識別子に対応するパケット処理ボード（ＰＰＢ）１１１にパケットを転送する。つぎに、転送されたパケット処理ボード（ＰＰＢ）１１１のネットワーク処理ユニット（ＮＰＵ）１１２にパケットを転送する。
【０１１２】
さらに、パケット転送先のネットワーク処理ユニット（ＮＰＵ）１１２内のＩ／Ｏ制御装置２０２が、仮想環境識別子をキーとして仮想環境−コア・ディスパッチ表（ＣＤＴ）２０３を検索することによって、対応するコア識別子をもとめ、そのコア識別子をもつコアにパケットを転送する。
【０１１３】
このように、第１の実施形態によれば、１個の仮想環境識別子に複数のボード識別子、ＮＰＵ識別子またはコア識別子を対応させることによって、ユーザごと、あるいはサービスごとに処理能力を自由に決定することができる。さらに、ボード、ＮＰＵ、またはコアの使用状況にもとづいてパケットの転送先を決定することによって、コアおよびそれに付随する計算資源をより有効に利用することができる。
【０１１４】
以上で本発明の第１の実施形態の基本部分の説明をおわり、以下、第１の実施形態に関する補足説明をおこなう。
【０１１５】
第１の補足説明はマイグレーション処理に関する。第１の実施形態においては１個のネットワーク処理ユニット１１２において複数のユーザ・グループまたは複数のサービスが同時に動作する場合がある。ところが、ネットワーク処理ユニット１１２の設計によっては、複数のコアのうちの一部を動作させたまま他の一部にプログラムをロードすることができない場合がある。このような場合には、プログラム・ロード要求時の処理５０１のかわりに、つぎのようなマイグレーション処理をおこなえばよい。
【０１１６】
たとえば、ネットワーク処理ユニット１１２Ａに含まれる複数のコアの一部にプログラムがロードされており、残りのコアにプログラムがまだロードされておらず、ネットワーク処理ユニット１１２Ｂのいずれのコアにもプログラムがまだロードされていない時点において、あらたなプログラムのロード要求を処理する場合について説明する。
【０１１７】
この場合、制御ボード１４１は、ネットワーク処理ユニット１１２Ａにおいて動作しているすべてのプログラムを、ネットワーク処理ユニット１１２Ｂにもロードする。ただし、すでに主記憶等にロードしたプログラムをネットワーク処理ユニット１１２Ｂがそのまま使用することができる場合は、あらたにロードする必要はない。
【０１１８】
なお、ネットワーク処理ユニット１１２Ｂのいずれのコアにもプログラムがまだロードされていないことは、コアわりあて表４０１にもとづいて確認することができる。すなわち、ネットワーク処理ユニット１１２Ｂは、コアわりあて表４０１にもとづいて選択される。
【０１１９】
上記のネットワーク処理ユニット１１２Ｂの選択が、図５のステップ５１１において説明したコアのわりあてのかわりに実行される。選択されたネットワーク処理ユニット１１２Ｂのコアへのプログラムのロードは、ステップ５１２同様の方法によって実行される。
【０１２０】
その後、ステップ５１３と同様に、各表が設定される。ただし、この時点で、ステップ５１３における仮想環境−ボード・ディスパッチ表（ＢＤＴ）１５２の設定だけはまだ実行されない。すなわち、ネットワーク処理ユニット１１２Ｂの各コアにプログラムがロードされたのちも、ネットワーク・インタフェース１５１に入力されたパケットはネットワーク処理ユニット１１２Ａにおいて処理されつづける。
【０１２１】
制御ボード１４１は、さらに、ロード要求されたプログラムを、ネットワーク処理ユニット１１２Ｂのまだプログラムがロードされていないコアにロードする。このロードは、ステップ５１２と同様に実行される。この処理ののちにネットワーク・インタフェース１５１に入力された当該仮想環境に属するパケットは、ネットワーク処理ユニット１１２Ｂにおいて処理される。
【０１２２】
ここで、遅延されていた仮想環境−ボード・ディスパッチ表１５２の設定をすべてのプログラムに関して実行することによって、これまでネットワーク処理ユニット１１２Ａにおいて処理されていたパケットは、すべてネットワーク処理ユニット１１２Ｂにおいて処理されるようになる。すなわち、これによってマイグレーションが実現する。
【０１２３】
マイグレーションが終了したのち、ネットワーク処理ユニット１１２Ａは使用されなくなる。このため、制御ボード１４１は、ネットワーク処理ユニット１１２Ａ内のすべてのコアを未使用状態に変更し、ロードされていたプログラムを処理６０１にしたがってアンロードする。この処理によってコアわりあて表４０１からもネットワーク処理ユニット１１２Ａのための設定が削除される。ただし、そのプログラムが第２のネットワーク処理ユニット１１２においても使用されている場合はアンロードしない。
【０１２４】
上記のマイグレーション処理によって、マルチコアのネットワーク処理ユニット１１２において、コアの動作中にプログラムをいれかえることができない場合であっても、プログラムの動作を継続したまま１個のネットワーク処理ユニット１１２を複数のユーザにわりあてることができる。
【０１２５】
第２の補足説明は仮想環境ごとにことなるネットワークへのパケット出力処理に関する。
【０１２６】
図９を使用して、第２の補足説明をする。
【０１２７】
図９は、本発明の第１の実施形態の出力ディスパッチ表の説明図である。
【０１２８】
パケット処理ボード１１１からネットワーク・インタフェース１５１を経由してネットワークに出力されるパケットに関して、ネットワーク・インタフェース１５１内に出力ディスパッチ表９１１を保持することによって、つぎのような処理が可能になる。
【０１２９】
出力ディスパッチ表９１１は、仮想環境と、その仮想環境において実行されるパケットのアドレスの削除または変換と、の対応を定める。具体的には、出力ディスパッチ表９１１は、仮想環境識別子（ＥＩＤ）、ネットワーク・インタフェースのポート番号（Ｐｏｒｔ）、パケット出力処理タイプ（ＴＹＰＥ）、および、アドレス変換テーブル（ＣＮＶ）の組をふくんでいる。
【０１３０】
図９の例において、仮想環境識別子「６１７」及びポート番号「０」に対応するパケット出力処理タイプは「１」である。この例において、ネットワーク・インタフェース１５１は、仮想環境識別子が「６１７」であるパケットをポート「０」に出力する場合、パケットがもつすべてのアドレス情報を削除して出力する。すなわち、ネットワーク・インタフェース１５１は、これから出力しようとするパケットがＩＰアドレスを含む場合、それを削除し、ＭＡＣアドレスを含む場合、それも削除する。
【０１３１】
たとえば、当該仮想環境識別子「６１７」に関しては、当該ポート「０」からただ１個の通信相手しか接続されていないため、アドレスづけが不要である場合、それらに対応するパケット出力処理タイプとして「１」が設定される。なお、上記の例では宛先および送信元のアドレスがともに削除されるが、パケット処理タイプを変更することによって、送信元のアドレスだけのこしてもよい。
【０１３２】
出力ディスパッチ表９１１において仮想環境識別子が「６１７」かつポート番号が「１」の場合、パケット出力処理タイプは「２」である。この例において、ネットワーク・インタフェース１５１は、仮想環境識別子が「６１７」であるパケットをポート「１」に出力する場合、パケットがもつ３層のアドレス情報を削除して出力する。３層がＩＰ層であれば、ＩＰヘッダが削除される。パケットが３層のアドレス情報をもっていない場合、そのまま出力される。
【０１３３】
パケット出力処理タイプが「１」の場合と同様に送信元アドレスだけをのこすことも可能だが、その場合はインターネット・プロトコルを使用することはできないので、送信元アドレスだけが指定できる、かわりのプロトコルが使用される。仮想環境識別子が「６１７」かつポート番号が「１」の場合、アドレス変換テーブルは指定されていないため、ネットワーク・インタフェース１５１はアドレス変換をおこなわない。
【０１３４】
出力ディスパッチ表９１１において仮想環境識別子が「８００」である場合、パケット出力処理タイプは「３」である。この場合、ポート番号が指定されていないので、すべてのポートに対しておなじパケット出力処理タイプが適用される。出力されるパケットの仮想環境識別子が「８００」である場合、ネットワーク・インタフェース１５１は、パケットがもつアドレス情報を削除せずに出力する。ネットワーク・インタフェース１５１は、パケットが３層のアドレス情報をもっていればそのまま出力するが、それをもっていない場合、２層のアドレス情報にもとづいて３層のアドレス情報をもとめて、３層ヘッダをパケットに挿入する。３層スイッチ（たとえば後述する３層スイッチ１０１２）においてＡＲＰ（Address Resolution Protocol）パケットの受信時に、ネットワーク・インタフェース１５１ごとに存在するＡＲＰテーブル（図示省略）にＭＡＣアドレスとＩＰアドレスとの対応を保持すれば、パケット出力時にＭＡＣアドレスに対応するＩＰアドレスをもとめて３層ヘッダを挿入することができる。仮想環境識別子が「８００」である場合、アドレス変換テーブルは指定されていないため、アドレス変換はおこなわれない。
【０１３５】
出力ディスパッチ表９１１において仮想環境識別子が「４５２」である場合、パケット出力処理タイプは「３」である。すなわち、ネットワーク・インタフェース１５１は、仮想環境識別子が「４５２」であるパケットを出力する場合、パケットにふくまれるアドレス情報を削除しない。
【０１３６】
出力ディスパッチ表９１１において、仮想環境識別子「４５２」に対応するアドレス変換テーブル９１２が指定されている。パケット処理タイプが「３」であるため、ネットワーク・インタフェース１５１は、３層のアドレスをつぎのように変換する。
【０１３７】
ネットワーク・インタフェース１５１は、まず、パケットがふくむアドレスをＩＡｄｄｒ欄において検索する。
【０１３８】
パケットが含むアドレスが「１９２．１６８．１．２」である場合、このアドレスに、ＩＡｄｄｒの値「１９２．１６８．１．＊」がマッチする（“＊”はワイルドカードである）。したがって、ネットワーク・インタフェース１５１は、パケットが含むアドレスを、上記の検索されたＩＡｄｄｒに対応するＯＡｄｄｒすなわち「１９２．１６８．３．２」にかきかえる。ただし、ＯＰｏｒｔ欄に“＊”が指定されているため、ネットワーク・インタフェース１５１は、アドレスの下８ビットの内容にしたがって、ポートを変更する。すなわち、ＮＡＰＴ変換（Network Address Port Translation）が実行される。
【０１３９】
パケットが含むアドレスが「１９２．１６８．２．３」である場合、検索の結果、ＩＡｄｄｒとして「１９２．１６８．２／２４」がマッチする（「２４」は有効なビット数である）。したがって、ネットワーク・インタフェース１５１は、検索されたＩＡｄｄｒの先頭２４ビットをそれに対応するＯＡｄｄｒすなわち「１９２．１６８．４」にかきかえる。ＯＰｏｒｔ欄は指定されていないので、ポートのかきかえはおこなわれない。
【０１４０】
パケットが含むアドレスが「１９２．１６８．３．２５５」である場合、検索の結果、ＩＡｄｄｒとして「１９２．１６８．＊．２５５」がマッチする。したがって、ネットワーク・インタフェース１５１は、アドレスの上位１６ビットを「１０．１」にかきかえ、アドレスの下位８ビットを「２５５」にかきかえる。のこりの８ビットはもとのままとする。この場合もＯＰｏｒｔ欄は指定されていないので、ポートのかきかえはおこなわれない。
【０１４１】
なお、パケットの高速転送のためにはアドレス変換テーブル９１２を高速メモリ上におく必要があるため、その総記憶量をおさえる必要がある。出力ディスパッチ表９１１の複数の欄から同一内容のアドレス変換テーブル９１２が指示されるときは、同一の出力ディスパッチ表９１１を指示することによって、記憶量をおさえることができる。ネットワーク・インタフェース１５１ごとにアドレス変換テーブル９１２をもつかわりに、複数のネットワーク・インタフェース１５１がアドレス変換テーブル９１２を共有することによって、さらに記憶量をおさえることができる。
【０１４２】
パケット処理タイプが「１」の場合、出力パケットにアドレスがふくまれないため、アドレス変換テーブルを指定することはできない。パケット処理タイプが２の場合、出力パケットに２層のアドレスがふくまれるため、アドレス変換テーブルは２層のアドレスを変換する。イーサネット（登録商標、以下同じ）において、ＭＡＣアドレスは１個ずつ独立にあつかわれるため、範囲指定はおこなわず、アドレス変換テーブルにおいては１個ずつアドレスの対が指定される。
【０１４３】
なお、パケット処理装置１０１においてはパケット処理ボード１１１とネットワーク・インタフェース１５１とが分離されていたが、パケット処理ボード１１１上にネットワーク・インタフェースが搭載されてもよい。この場合、パケット処理ボード１１１における処理において出力されたパケットを、ネットワーク・インタフェース１５１に送信することなく、パケット処理ボード１１１上のネットワーク・インタフェースからネットワークに送信することができる。この送信の際に、パケット処理ボード１１１上の出力ディスパッチ表９１１およびアドレス変換テーブル９１２を使用して、仮想環境ごとにことなるネットワークへのパケット出力処理をおこなうことができる。
【０１４４】
パケット処理ボード１１１からネットワーク・インタフェース１５１を経由してパケットを出力する場合には、ネットワーク・インタフェース１５１からは他のパケット処理ボード１１１または他のネットワーク・インタフェース１５１からのパケットもあわせて出力される可能性がある。しかし、上記のような構成を使用することによって、パケット処理ボード１１１において処理されたパケットだけをパケット処理ボード１１１上のネットワーク・インタフェースから出力することができる。そのため、パケット処理ボード１１１においては、パケット処理ボード１１１において処理されたトラフィック量を計測し、それにもとづいてシェイピングなどのトラフィック制御をおこなうことができる。
【０１４５】
以下、本発明の第２の実施形態について説明する。
【０１４６】
図１０は、本発明の第２の実施形態のパケット処理システムの全体構成を示すブロック図である。
【０１４７】
図１０に示すシステムは、第１の実施形態におけるパケット処理装置１０１と等価な機能を実現する。
【０１４８】
具体的には、図１０に示すシステムは、複数個のパケット処理装置（ＰＰＥ）１０１１、３層スイッチ１０１２および制御装置１０１３を備える。複数個のパケット処理装置（ＰＰＥ）１０１１は、３層スイッチ１０１２と１０Ｇｂｉｔイーサネットによって接続されている。３層スイッチ１０１２はさらに１０Ｇｂｉｔイーサネット・インタフェース（図示省略）を搭載し、それによって他の装置と接続されている。
【０１４９】
制御装置１０１３は、３層スイッチ１０１２と直接または間接に接続されている。制御装置１０１３は制御ボード１４１をふくみ、制御ボード１４１は汎用ＣＰＵ１４２および主記憶装置１４３をふくむ。
【０１５０】
パケット処理装置１０１１は、パケット処理ボード１１１と同様、１個または複数個のネットワーク処理ユニット（ＮＰＵ）１１２および仮想環境−ＮＰＵディスパッチ表（ＮＤＴ）１１３をふくむ。仮想環境−ＮＰＵディスパッチ表（ＮＤＴ）１１３は、仮想環境識別子と、ＮＰＵ識別子との組を要素とする表である。
【０１５１】
なお、パケット処理装置１０１１は、パケット処理ボード１１１と同様、いかなる形態の処理モジュールとして実装されてもよい。たとえば、第１の実施形態に示したパケット処理ボード１１１がパケット処理装置１０１１として使用されてもよい。
【０１５２】
図１０には、例として、ｎ個のパケット処理装置１０１１を示す。ただし、図１０には、ｎ個のパケット処理装置１０１１のうち３個のみを、パケット処理装置１０１１Ａ、１０１１Ｂおよび１０１１Ｃとして示す。本実施形態において、パケット処理装置１０１１Ａ〜１０１１Ｃのいずれにも共通する説明をする場合、これらを総称してパケット処理装置１０１１とも記載する。
【０１５３】
各パケット処理装置１０１１には整数値による識別子があたえられている。たとえば、図１０のパケット処理装置１０１１Ａに表示されている「ＰＰＥ  ＃０」は、パケット処理装置（ＰＰＥ）１０１１Ａに識別子「０」があたえられていることを示す。
【０１５４】
パケット処理装置１０１１Ａは、ネットワーク処理ユニット１１２Ａ、１１２Ｂおよび仮想環境−ＮＰＵディスパッチ表１１３Ａを、パケット処理装置１０１１Ｂは、ネットワーク処理ユニット１１２Ｃ、１１２Ｄおよび仮想環境−ＮＰＵディスパッチ表１１３Ｂを、パケット処理装置１０１１Ｃは、ネットワーク処理ユニット１１２Ｅ、１１２Ｆおよび仮想環境−ＮＰＵディスパッチ表１１３Ｃを、それぞれ備える。第１の実施形態と同様、ネットワーク処理ユニット１１２Ａ〜１１２Ｆは、ネットワーク処理ユニット１１２とも記載される。仮想環境−ＮＰＵディスパッチ表１１３Ａ〜１１３Ｃは、仮想環境−ＮＰＵディスパッチ表１１３とも記載される。ネットワーク処理ユニット１１２および仮想環境−ＮＰＵディスパッチ表１１３は、第１の実施形態において説明したものと同様である。
【０１５５】
３層スイッチ１０１２は、ポリシーベース・ルーティング機能をもつ。
【０１５６】
ネットワークから入力されるパケットは、３層スイッチ１０１２経由でパケット処理装置１０１１に転送されて処理され、さらに３層スイッチ１０１２経由で他のパケット処理装置１０１１に転送されるか、または、ネットワークに出力される。３層スイッチ１０１２に入力されたパケットが複数個のパケット処理装置１０１１のうちのいずれに転送されるかは、３層スイッチ１０１２がもつポリシーベース・ルーティングの設定内容によって決定される。すなわち、第１の実施形態では、プログラム・ロード要求を受信した際の処理５０１およびプログラム・アンロード要求を受信した際の処理６０１において、制御ボード１４１が仮想環境−ボード・ディスパッチ表１５２を設定していた。これにたいして、第２の実施形態では、制御ボード１４１が下記のようなポリシーベース・ルーティングの設定をおこなう。パケット処理装置１０１１において処理されるべきパケットが複数個のネットワーク処理ユニット１１２のうちのいずれに転送されるかは、第１の実施形態と同様、仮想環境−ＮＰＵディスパッチ表１１３によって決定される。
【０１５７】
ポリシーベース・ルーティングによるパケット処理装置１０１１の決定はつぎのようにおこなわれる。３層スイッチ１０１２は、ポリシーベース・ルーティングの設定のためにつぎのようなコマンドを使用する（このコマンドはＡｌａｘａｌａ（登録商標）社の３層スイッチＡＸ７８００Ｓに対するものとひとしい）。
【０１５８】
policy-list 10 ppe1 192.168.10.2 ………（１）
policy-group to_ppe1 list 10 ………（２）
flow filter user617 in list 100 any any action policy_group to_ppe1 ………（３）
【０１５９】
コマンド（１）は、パケット処理装置１０１１Ｂ（ＰＰＥ  ＃１）が３層スイッチ１０１２のネットワーク・インタフェース「ｐｐｅ１」に接続されていること、パケット処理装置１０１１Ｂ（ＰＰＥ  ＃１）にＩＰアドレス「１９２．１６８．１０．２」があたえられていること、および、識別番号として「１０」があたえられることを表現している。
【０１６０】
コマンド（２）は、ポリシーベース・ルーティングの設定が識別番号「１０」である１個の要素だけで構成され、その設定に対して「ｔｏ＿ｐｐｅ１」という名称があたえられることを表現している。
【０１６１】
コマンド（３）は、特定のユーザ・グループだけが使用するように設定されたＶＬＡＮインタフェース（ＶＬＡＮごとに仮想化されたネットワーク・インタフェース）「ｕｓｅｒ６１７」に達したパケットに対して「ｔｏ＿ｐｐｅ１」のポリシーベース・ルーティングを適用することを表現している。
【０１６２】
結局、コマンド（１）〜（３）によって、ＶＬＡＮ番号「６１７」と、識別子「１」によって識別されるパケット処理装置１０１１Ｂ（ＰＰＥ  ＃１）とが対応づけられる。「ｕｓｅｒ６１７」に対してＶＬＡＮ番号「６１７」がわりあてられている場合、ＶＬＡＮ番号６１７をもつパケットが入力されると、そのパケットはパケット処理装置１０１１Ｂ（ＰＰＥ  ＃１）に転送され、処理される。
【０１６３】
なお、本実施形態では、ＶＬＡＮが仮想環境と対応付けられる。
【０１６４】
当該のユーザ・グループに属するユーザのパケットにＶＬＡＮ番号「６１７」を設定するには、そのユーザの機器と３層スイッチ１０１２とのあいだのいずれかスイッチにＶＬＡＮ機能をもたせ、そのスイッチのタグＶＬＡＮ機能を使用してＶＬＡＮ番号「６１７」を設定すればよい。そのスイッチの特定のポートを当該のユーザ・グループだけが使用する場合は、そのポートに入力されたパケットのユーザまたはサービスを識別する必要はなく、すべてのパケットにＶＬＡＮ番号６１７を設定すればよい。
【０１６５】
３層スイッチ１０１２がコマンド（１）によって設定されると、ＶＬＡＮ番号「６１７」をもつパケットの転送先として、ネットワーク・インタフェース「ｐｐｅ１」に接続されたＩＰアドレス「１９２．１６８．１０．２」が選択される。すなわち、そのパケットの宛先ＭＡＣアドレスとして、３層スイッチ１０１２がＡＲＰ（Address Resolution Protocol）によって受信したＩＰアドレス「１９２．１６８．１０．２」に対応するＭＡＣアドレスを設定する。ネットワーク・インタフェース「ｐｐｅ１」に複数のパケット処理装置１０１１が接続されている場合、コマンド（１）においてＩＰアドレスを指定することが必須である。しかし、ネットワーク・インタフェース「ｐｐｅ１」に接続されたパケット処理装置１０１１が１個だけであれば、ＩＰアドレスを指定する必要はない。すなわち、コマンド（１）のかわりにつぎのコマンドを使用することができる。
【０１６６】
policy-list 10 ppe1 ………（１’）
【０１６７】
この場合３層スイッチ１０１２は、パケット処理装置１０１１からネットワーク・インタフェース「ｐｐｅ１」にパケットが到着した際に、その送信元のＭＡＣアドレスを「ｐｐｅ１」と対応づけて保持することによって、ＶＬＡＮ番号「６１７」をもつパケットの転送先ＭＡＣアドレスを一意に決定することができる。
【０１６８】
この方法によれば、パケット処理装置１０１１にＩＰアドレスを付与する必要がなくなり、ＩＰアドレスを節約することができる。さらに、場合によってはパケット処理装置１０１１にインターネット・プロトコルのスタックを搭載する必要がなくなるため、プログラムを軽量化できる。
【０１６９】
また、パケット処理装置１０１１が到着するパケットをその宛先アドレスによらずに受信するように設定されている場合（たとえばＬｉｎｕｘにおけるｐｒｏｍｉｓｃｕｏｕｓ  ｍｏｄｅに相当する設定がなされている場合）、３層スイッチ１０１２は、パケットをネットワーク・インタフェース「ｐｐｅ１」から出力する際にその宛先アドレスおよび送信元アドレスを変更することなしに送出しても、そのパケットをパケット処理装置１０１１にとどけることができる。この方法は特定の仮想環境識別子をもつパケットだけに適用することができる。すなわち、他の仮想環境識別子をもつパケットに関しては宛先アドレスをかきかえて、「ｐｐｅ１」以外のネットワーク・インタフェースから送出することができる。なお、この方法によれば、パケット処理装置１０１１はそのパケットにもともとつけられていた宛先アドレスおよび送信元アドレスを利用して処理をおこなうことができる。
【０１７０】
さらに、パケット処理装置１０１１が到着するパケットをその宛先アドレスによらずに受信するように設定されている場合、３層スイッチ１０１２が出力するパケットに宛先アドレスがふくまれていなくてもそのパケットをパケット処理装置１０１１にとどけることができる。このため、そのパケットの宛先アドレス欄を削除することができる。さらに、送信元アドレスが不要であれば、それも削除することができる。ただし、これらのアドレスを削除されたパケットは、イーサネット標準（ＩＥＥＥ標準）には準拠していない。この方法も、特定の仮想環境識別子をもつパケットだけに適用することができる。この方法によれば、アドレスのぶんだけ転送データ量をおさえることができる。
【０１７１】
以上の第２の実施形態によれば、すべての装置をあらたに開発するかわりにＡＸ７８００Ｓのような既存の３層スイッチを使用した場合にも、本発明の主要な効果をえることができる。
【符号の説明】
【０１７２】
１０１、１０１１  パケット処理装置
１１１Ａ〜１１１Ｃ  パケット処理ボード（ＰＰＢ）
１１２Ａ〜１１２Ｆ  ネットワーク処理ユニット（ＮＰＵ）
１１３Ａ〜１１３Ｃ  仮想環境−ＮＰＵディスパッチ表（ＮＤＴ）
１４１、１０１３  制御ボード（ＣＢ）
１４２  ＣＰＵ
１４３  メモリ
１５１Ａ〜１５１Ｃ  ネットワーク・インタフェース（ＮＩＦ）
１５２Ａ〜１５２Ｃ  仮想環境−ボード・ディスパッチ表（ＢＤＴ）
１８１、１０１２  スイッチ・ファブリック
２０２  Ｉ／Ｏ制御装置
２０３  仮想環境−コア・ディスパッチ表（ＣＤＴ）
２１１  汎用処理コア（ＧＰＣ）
２２１  パケット処理コア（ＰＰＣ）
２３１  スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）
２４１  メモリ制御装置
２４２  ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）
２５１  バス
２６１  スイッチ
２７１  キャッシュ
４０１  コアわりあて表
【図１】
2010193366.tif 000003
【図２】
2010193366.tif 000004
【図３】
2010193366.tif 000005
【図４】
2010193366.tif 000006
【図５】
2010193366.tif 000007
【図６】
2010193366.tif 000008
【図７Ａ】
2010193366.tif 000009
【図７Ｂ】
2010193366.tif 000010
【図７Ｃ】
2010193366.tif 000011
【図８】
2010193366.tif 000012
【図９】
2010193366.tif 000013
【図１０】
2010193366.tif 000014