以下、本発明の実施例について、図面を参照して説明する。以下に述べる実施例は本発明の一例であって、本発明を制限するものではない。
(実施例1)
以下、実施例1について図1〜図13を用いて説明する。
<通信装置の構成例>
図1は、実施例1の通信装置1の物理的な構成及び論理回路(102)を示すブロック図である。通信装置1は、パケットを他の通信装置へ転送する装置である。通信装置1は、複数のネットワークインタフェースボード(NIF)(100−1〜100−K、150−1〜150−L)(K、及び、Lは任意の自然数)、スイッチ部106、及び、装置管理部111を備える。
NIF100(100−1〜100−K)及びNIF150(150−1〜150−L)は、それぞれ、ネットワークからパケットを受信し、ネットワークへパケットを送信するためのインタフェースである。スイッチ部106は、各NIF100及び各NIF150に接続される装置であり、NIF100及びNIF150から受信したパケットを、パケットを送信すべきNIF100あるいはNIF150に振り分ける装置である。
装置管理部111は、制御ネットワーク経由でネットワーク管理システム(保守者)等に接続され、制御情報を通信する。また、装置管理部111は、各NIF(100−1〜100−K、150−1〜150−L)及びスイッチ部106からの情報を収集する。さらに、装置管理部111は、ネットワーク管理システム(保守者)からの指示に従って、各NIF(100−1〜100−K、150−1〜150−L)及びスイッチ部106へのパラメータ設定(後述するNIF管理部110を経由してレジスタ109や各種テーブルを設定)や、各NIF(100−1〜100−K、150−1〜150−L)のパケット処理モジュールへの処理回路のインストール処理等を実施する。
各NIF100は、複数の入出力回線インタフェース101(101−1〜101−J)(Jは任意の自然数)、論理回路102、SWインタフェース105、及び、NIF管理部110を備える。
各NIF150は、入出力回線インタフェース101、論理回路102、SWインタフェース105、及び、NIF管理部110を備える。
入出力回線インタフェース101は、通信ポート(以後、入出力回線インタフェースのことを「ポート」と記載)である。通信装置1は、ポート101及びネットワークを介して、他の通信装置と接続する。実施例1におけるポート101は、例えば、イーサネット(登録商標)用の回線インタフェースである。
SWインタフェース105は、スイッチ部106に接続するための装置である。NIF管理部110は、例えば、CPU等のプロセッサである。NIF管理部110は、装置管理部111の設定に従って、論理回路102における処理を制御する。論理回路102は、実施例1のパケットに対する処理を行う回路である。論理回路102は、少なくとも一つのメモリ及び少なくとも一つの演算装置(例えば、プロセッサ)を備える。
論理回路102は、MUX103、入力パケット制御部104、出力パケット制御部107、及び、DMX108等のパケット処理部を有し、設定レジスタ109を備える。
ここで、NIF150は、1つのポート101を備えるのみであるため、論理回路102にはMUX103及びDMX108の記載を省略している。以降では、NIF100を中心に説明するが、NIF150においても同様である。
NIF100が受信するパケットは、ポート101、MUX103、入力パケット制御部104、SWインタフェース105、及び、スイッチ部106の順に転送され、NIF100から送信されるパケットは、スイッチ部106、SWインタフェース105、出力パケット制御部107、DMX108、及び、ポート101の順に転送される。
NIF管理部110は、レジスタ109を制御する。レジスタ109は、データを一時的に格納する記憶領域を有し、論理回路102に備わる各処理部のレジスタ値を保持する。
レジスタ109は、論理回路102を介して論理回路102に備わる各処理部と接続する。論理回路102が有する処理部は、レジスタ109の設定用のレジスタ値を用いて処理を実行する。また、論理回路102が有する処理部は、処理結果をレジスタ109の通知用のレジスタ値に格納する。
ポート101は、受信したパケットに後述する装置内ヘッダを付加する。
ここで、パケットのフォーマットの一例を示す。イーサネットのパケット(フレーム)は、宛先MACアドレス、送信元MACアドレス、VLANヘッダ、イーサタイプ値、ペイロード、及び、フレームチェックシーケンス(FCS)を含む。宛先MACアドレス、又は、送信元MACアドレスには、通信装置1のMACアドレスが設定される。イーサタイプ値には、パケットが運ぶ上位層のプロトコルの識別子が設定される。VLANヘッダには、フローの識別子となるVLAN IDが設定される。フレームチェックシーケンス(FCS)には、フレームの誤りを検出するための値が設定される。なお、パケットには、MPLS(Multi−Protocol Label Switching)ヘッダ、IP(Internet Protocol)ヘッダ、あるいは、他のプロトコルのヘッダがパケットに使用されてもよい。
次に、パケットに付加される装置内ヘッダのフォーマットについて説明する。装置内ヘッダは、出力NIF ID、受信ポートID、送信ポートID、フローID、WRアドレス、及び、パケット長を含む。
出力NIF IDは、内部ルーティング情報であり、通信装置1が受信したパケットを、通信装置1のいずれのNIF100(あるいはNIF150)から出力するかを示す情報である。スイッチ部106は、この内部ルーティング情報に従い、スイッチ部106に送信された入力パケットを特定のNIF100(あるいは150)の特定のSWインタフェース105に転送する。
受信ポートIDは、通信装置1がどのポート101からパケットを受信したかを示す識別子である。送信ポートIDは、スイッチ部106から転送されてきたパケットを、NIF100(あるいは150)のどのポート101から送信するかを示す識別子である。
フローIDは、パケットのフローの識別子であり、VLAN IDやMPLSラベルの値から識別される。
WRアドレスは、後述する入力パケットバッファ205にパケット情報を書き込んだアドレスを示す識別子である。
装置内ヘッダは、受信したパケットを通信装置1において処理するため、ポート101により受信したパケットに付加される。装置内ヘッダが付加され、ポート101からスイッチ部106に向けて送信されるパケットを、以降において、「入力パケット」と記載する。
ポート101は、受信したパケットに装置内ヘッダを付加する際、出力NIF ID、送信ポートID、フローID、及び、WRアドレスにnull値等の値を格納する(すなわち、格納される値を決定しない)。出力NIF ID、送信ポートID、フローID、及び、WRアドレスには、入力パケット制御部104によって値が格納される。なお、送信ポートID、フローID、及び、WRアドレス等には、出力パケット制御部107によって値が格納されても良い。
ポート101は、受信したパケットのパケット長を取得し、装置内ヘッダのフレーム長に、取得されたパケット長を格納する。その後、ポート101は、パケットをMUX103に送信する。
MUX103は、複数のポート101から受信したパケットを多重し、入力パケット制御部104に送信する。
入力パケット制御部104は、MUX103から受信したパケットに関して、後述するパケット処理を実行する。本パケット処理時に、装置内ヘッダの出力NIF ID、送信ポートID、フローID、及び、WRアドレスを追加する。パケット処理後、入力パケット制御部104は、入力パケットをSWインタフェース105に送信する。SWインタフェース105は、受信した入力パケットをスイッチ部106に転送する。
スイッチ部106は、各NIF100(及び各NIF150)のSWインタフェース105から入力パケットを受信した後、入力パケットの出力NIF IDを参照することによって、受信した入力パケットの転送先であるNIF100(あるいはNIF150)を特定する。次に、スイッチ部106は、特定されたNIF100(あるいはNIF150)に対応するSWインタフェース105に、受信した入力パケットを、出力パケットとして転送する。なお、実施例1において、スイッチ部106からポート101へ送信されるパケットを出力パケットと記載する。
SWインタフェース105は、受信した出力パケットを出力パケット制御部107に転送する。前述の例では、入力パケット制御部104がパケット処理を実行したが、出力パケット制御部107が、入力パケット制御部104の代わりにパケット処理を実行してもよい。
出力パケット制御部107がパケット処理を実行する場合、パケット処理後、出力パケット制御部107は、出力パケットをDMX108に送信する。出力パケット制御部107がパケット処理を実施しない場合、出力パケット制御部107は、SWインタフェース105から受信した出力パケットを、そのままDMX108に転送する。
DMX108は、出力パケット制御部107から受信したパケットを、装置内ヘッダの送信ポートIDに従って、各ポート101に振分けて送信する。
ポート101は、受信した出力パケットから装置内ヘッダを除去し、出力パケットを他の装置へ転送する。
<入力パケット制御部104の構成例>
図2は、実施例1の入力パケット制御部104の論理的な構成を示すブロック図である。
入力パケット制御部104は、パケット振分部201、M個のモジュール振分部202(202−1〜202−M)(Mは1〜Nの自然数)(Nは任意の自然数)、N個のパケット処理モジュール203(203−11〜203−1P、・・・、203−M1〜203−MQ)(P、Qは1〜Nの自然数)、パケット多重部204、及び、入力パケットバッファ205を備える。
パケット振分部201は、入力パケット制御部104がMUX103から入力パケットを受信した場合、後述するパケット振分管理テーブル3を参照して、パケット種別を識別し、パケット種別毎に備えるモジュール振分部202(202−1〜202−M)にパケットのヘッダ情報を切り出して振分ける。また、パケット振分部201は、入力パケットバッファ205にパケット情報を転送する。詳細は、後述するパケット振分処理S650(図6参照)に示す。
ここで、実施例1では、パケット振分部201は、パケットのヘッダ情報を切り出してモジュール振分部202に振分けたが、これにより、振分けるヘッダ情報が少ないパケット種別においては、後述するパケット処理モジュール203が処理する量が少なくなるため、1つのパケット処理モジュール203あたりの処理量(例えばパケット/秒)を増やすことができる。言い換えれば、パケット種別毎に同じ性能とする場合に、振分けるヘッダ情報が少ないパケット種別においては、必要はパケット処理モジュール203の数が少なくて良い。
なお、パケット振分部201は、ヘッダ情報のみではなく、ペイロードまで情報を切り出してモジュール振分部202に転送しても良い。また、パケット振分部201は、識別したパケット種別に関わらず、一定サイズのデータ量を切り出してモジュール振分部202に転送しても良い。
モジュール振分部202(202−1〜202−M)は、パケット振分部201からヘッダ情報を受信した場合、後述するモジュール振分管理テーブル4を参照して、パケット処理を実行するパケット処理モジュール203を、複数のパケット処理モジュール203の中から決定し、決定したパケット処理モジュール203にヘッダ情報を振分ける。
例えば、モジュール振分部202−1がパケット処理モジュール203−11〜パケット処理モジュール203−1Pを利用している場合、モジュール振分部202−1は、パケット処理モジュール203−11〜パケット処理モジュール203−1Pの中からパケット処理を実行するパケット処理モジュール203を決定する。同様に、モジュール振分部202−Mがパケット処理モジュール203−M1〜パケット処理モジュール203−MQを利用している場合、モジュール振分部202−Mは、パケット処理モジュール203−M1〜パケット処理モジュール203−MQの中からパケット処理を実行するパケット処理モジュール203決定する。詳細は、後述するモジュール振分部202の論理構成(図5参照)、及び、モジュール振分部202のスケジューリング処理S751(図7B参照)に示す。
パケット処理モジュール203(203−11〜203−1P、・・・、203−M1〜203−MQ)は、任意のパケット処理機能を有するパケット処理回路であり、NIF管理部110を経由してインストールが実施される。
パケット処理モジュール203は、モジュール振分部202からヘッダ情報を受信した場合、インストールされているパケット処理回路ごとに異なる処理を実施し、パケット多重部204にヘッダ情報を転送する。
一例として、パケット処理モジュール203にインストールされたパケット処理回路がVLAN回路の場合の動作を説明する。
パケット処理モジュール203は、受信したヘッダ情報のVLANヘッダに基づいて、パケットのフローIDを識別し、識別したフローIDによって、出力NIF ID及び送信ポート等の転送先を決定する。また、パケット処理モジュール203は、装置内ヘッダの出力NIF ID、送信ポート、及び、フローIDに値を格納する。さらに、パケット処理モジュール203は、ポリシング(Policing)やカラーリング(Coloring)等のトラヒック制御を行うこともできる。
パケット処理モジュール203は、ヘッダ情報に上記の一例で示したパケット処理を実施し、受信した順番に、ヘッダ情報をパケット多重部204に転送する。
また、パケット処理モジュール203は、ヘッダ情報の処理中(あるいはヘッダ情報をこれ以上処理できない場合)は、バックプレッシャ(BP)をモジュール振分部202に出力し、モジュール振分部202のヘッダ情報の転送処理を抑制する。
また、パケット処理モジュール203は、故障を検出した場合、その故障検出情報をモジュール振分部202に出力し、モジュール振分部202がヘッダ情報を故障中のパケット処理モジュール203に転送しないように抑制する。パケット処理モジュール203は、故障が復旧した場合、その復旧情報をモジュール振分部202に出力する。
なお、パケット処理モジュール203は、一度インストールされたパケット処理回路をアンインストールすることができる。また、パケット処理モジュール203は、パケット処理回路を更新(上書き)しても良い。
パケット多重部204は、N個の各パケット処理モジュール203(203−11〜203−1P、・・・、203−M1〜203−MQ)から受信したヘッダ情報と、入力パケットバッファ205から読み出したパケット情報を多重し、ヘッダ情報の到着順にSWインタフェース105に送信する。詳細は、後述するパケット多重処理S850(図8参照)に示す。
入力パケットバッファ205は、パケット振分部201から受信するパケット情報を格納し、パケット多重部204からの読み出しに従って、パケット情報をパケット多重部204に出力する。
通信装置1が複数のパケット種別を収容する場合、各パケット処理モジュール203には異なるパケット処理回路がインストールされ、処理するヘッダ情報量等に応じてパケット処理モジュール203がヘッダ情報の処理に要する時間は異なる。このため、実施例1においては、入力パケットバッファ205は、ランダムアクセス用にバッファを構成し、パケット多重部204から任意のタイミングで読み出し出来ることが望ましい。
なお、通信装置1が、1つのパケット種別を収容する場合や、全パケット種別でヘッダ情報処理に要する時間を同じにする場合は、パケット処理モジュール203がヘッダ情報の処理に要する時間があらかじめ定められるため、入力パケットバッファ205をシフトレジスタ(固定の遅延時間だけパケット情報を格納)のように使用しても良い。
<パケット振分管理テーブル3の記憶内容例>
図3は、実施例1の各パケット振分部201が保持するパケット振分管理テーブル3を示す説明図である。パケット振分管理テーブル3は、通信装置1が受信したパケットに関して、パケットを振分ける方法を示す振分識別IDと、パケットの振分け先のモジュール振分部202を示すパケット処理モジュールのグループID(モジュールグループID)の情報を有するテーブルである。
パケット振分管理テーブル3は、NIF管理部110から設定される。図3では、受信ポートIDを設定してパケットを振分ける場合と、イーサタイプを設定してパケットを振分ける場合との2つの例を示す。
受信ポートIDでパケットを振分ける場合、パケット振分管理テーブル3は、ポートIDフィールド301、及び、モジュールグループIDフィールド302を含み、ポートIDごとに、各フィールド301、302の値を記憶する。ポートIDフィールド301は、入力パケットを受信するポートIDを含む。モジュールグループIDフィールド302は、ポートIDフィールド301にしたがって振分けたパケットを処理するモジュールグループIDの情報を含む。
イーサタイプでパケットを振分ける場合、パケット振分管理テーブル3は、イーサタイプフィールド351、及び、モジュールグループIDフィールド302を含み、イーサタイプごとに、各フィールド351、302の値を記憶する。イーサタイプフィールド351は、入力パケットのイーサタイプを含む。
<モジュール振分管理テーブル4の記憶内容例>
図4は、実施例1の各モジュール振分部202が保持するモジュール振分管理テーブル4を示す説明図である。モジュール振分管理テーブル4は、モジュール振分部202がパケット処理に利用するパケット処理モジュール203のID一覧と、モジュール振分部202に転送されたパケット数、及び、そのバイト数を利用帯域情報として有するテーブルである。モジュール振分管理テーブル4は、利用モジュールIDフィールド401(401−1〜401−N)、及び、モジュールグループ利用帯域フィールド(受信パケットフィールド402及び受信バイト数403フィールド)を含み、モジュール振分部201ごとに各フィールド401、402、403の値を記憶する。なお、利用モジュールID401(401−1〜401−N)は、NIF管理部110から設定される。受信パケット数402及び受信バイト数403は、後述する図7AのS703において更新される。
<モジュール振分部202の構成例>
図5は、実施例1のモジュール振分部202の論理的な構成を示すブロック図である。ここでは、図2に示したモジュール振分部202−1を一例として、モジュール振分部202(202−1〜202−M)の詳細を説明する。
モジュール振分部202−1は、待合せバッファ501、スケジューラ502、及び、前述のモジュール振分管理テーブル4を備える。
待合せバッファ501は、パケット振分部201から転送されるヘッダ情報を格納し、スケジューラ502からの読み出しに従って、ヘッダ情報をスケジューラ502に出力する。スケジューラ502は、待合せバッファ501からヘッダ情報を読み出し、モジュール振分管理テーブル4の利用モジュールID401に従って、利用するパケット処理モジュール203にラウンドロビンで順番にヘッダ情報を転送する。
ここで、図2では、便宜上、モジュール振分部202−1は、利用するパケット処理モジュール203(203−11〜203−1P)とのみ接続するように示したが、実際には、図5に示すように、N個の全てのパケット処理モジュール203(203−11〜203−1P、・・・、203−M1〜203−MQ)と接続される。モジュール振分部202−1は、スケジューラ502において、ヘッダ情報の振分け対象となる利用パケット処理モジュール203(203−11〜203−1P)を決定する。同様に、モジュール振分部202−1は、利用するパケット処理モジュール203(203−11〜203−1P)からの受信情報(BP、故障情報、及び、復旧情報)のみを受け付ける。
以下に、パケット振分部201が実行するパケット振分処理S650について説明する。
<パケット振分処理S650>
図6は、実施例1のパケット振分部201が実行するパケット振分処理S650を示すフローチャートである。実施例1では、パケット振分部201は、受信ポートIDを用いてモジュール振分部202(202−1〜202−M)にパケットを振分ける例を示す。
パケット振分部201は、MUX103からパケットを受信した場合(S600)、装置内ヘッダから受信ポートIDを取得する(S601)。S601の後、パケット振分部201は、受信ポートIDを検索キーとしてパケット振分管理テーブル3を検索し、モジュールグループIDを取得する(S602)。S602の後、パケット振分部201は、受信したパケットを入力パケットバッファ205に格納する(S603)。なお、ここでは詳細な記載は省略するが、S603において、入力パケットバッファ205にパケットを格納出来ない場合は、オーバフローを検出してレジスタ109に通知し、以降の処理を終了する。
S603の後、パケット振分部201は、取得したモジュールグループIDに対応するモジュール振分部202に装置内ヘッダ及びパケットのヘッダ部分をヘッダ情報として転送する。また、この際、パケット振分部201は、装置内ヘッダのWRアドレスフィールドに、パケットを入力パケットバッファ205に格納したWRアドレスを付与し(S604)、パケット振分処理S650を終了する(S605)。
以下に、モジュール振分部202が実行するバッファ格納処理S750、及び、スケジューリング処理S751について説明する。
<バッファ格納処理S750>
図7Aは、実施例1のモジュール振分部202が実行するバッファ格納処理S750を示すフローチャートである。
モジュール振分部202は、パケット振分部201からヘッダ情報を受信した場合(S700)、受信したヘッダ情報の装置内ヘッダからパケット長情報を取得する(S701)。S701の後、モジュール振分部202は、モジュール振分管理テーブル4を検索し、受信パケット数及び受信バイト数を取得する(S702)。S702の後、モジュール振分部202は、S700において受信したヘッダ情報の数、及び、S701において取得したパケット長情報を用いて受信パケット数及び受信バイト数を更新し、モジュール振分管理テーブル4に書き戻す(S703)。S703の後、モジュール振分部202は、受信したヘッダ情報を待合せバッファ501に格納し(S704)、バッファ格納処理S750を終了する(S705)。なお、S704において、待合せバッファ501にパケットを格納出来ない場合は、モジュール振分部202は、オーバフローを検出してレジスタ109に通知し、バッファ格納処理S750を終了する(S705)。
<スケジューリング処理S751>
図7Bは、実施例1のモジュール振分部202が実行するスケジューリング処理S751を示すフローチャートである。
モジュール振分部202は、周期毎(例えば1クロック毎)に(S720)、モジュール振分管理テーブル4を検索して利用モジュールID一覧の情報を取得する(S721)。S721の後、モジュール振分部202は、利用するモジュールIDを内部カウンタで管理し、次にヘッダ情報を送信するパケット処理モジュール203をラウンドロビンで順番に選択する(S722)。ラウンドロビンでヘッダ情報を振分けることにより、パケット処理モジュール203の処理負荷を分散することができる。
S722の後、選択したパケット処理モジュール203から故障を検出している場合、モジュール振分部202は、内部カウンタを更新し、次の順番のパケット処理モジュール203を選択する(S723)。すなわち、故障しているパケット処理モジュール203は選択の対象外であり、モジュール振分部202は、復旧指示を受信するまでそのパケット処理モジュール203を選択しない。
S723の後、モジュール振分部202は、選択したパケット処理モジュール203からBPを受信しているか否かを判定する(S724)。
S724において、選択したパケット処理モジュール203からBPを受信していると判定された場合(ステップS724:Yes)、次にヘッダ情報を送信するべきパケット処理モジュール203は、本処理以前に送信したヘッダ情報の処理を実行中であるため、モジュール振分部202は、スケジューリング処理S751を終了し、BPが解除されるのを待つ(S727)。
また、S724において、選択したパケット処理モジュール203からBPを受信していないと判定された場合(ステップS724:No)、モジュール振分部202は、待合せバッファ501にヘッダ情報が格納されているか否かを判定する(S725)。
S725において、待合せバッファ501にヘッダ情報が格納されていないと判定された場合(ステップS725:No)、次に処理するべきヘッダ情報がないため、モジュール振分部202は、スケジューリング処理S751を終了する(S727)。
また、S725において、待合せバッファ501にヘッダ情報が格納されていると判定された場合(ステップS725:Yes)、モジュール振分部202は、待合せバッファ501からヘッダ情報を読み出し、S722あるいはS723において選択したパケット処理モジュール203にヘッダ情報を転送する。さらに、転送後、モジュール振分部202は、内部カウンタを更新して次のパケット処理モジュール203を選択し、次のヘッダ情報の転送に備える(S726)。S726の後、モジュール振分部202は、スケジューリング処理S751を終了する(S727)。
以下に、パケット多重部204が実行するパケット多重処理S850について説明する。
<パケット多重処理S850>
図8は、実施例1のパケット多重部204が実行するパケット多重処理S850を示すフローチャートである。
パケット多重部204は、パケット処理モジュール203(203−11〜203−1P、・・・、203−M1〜203−MQ)からヘッダ情報を受信した場合(S800)、装置内ヘッダからWRアドレスを取得する(S801)。S801の後、パケット多重部204は、取得したWRアドレスをRDアドレスとして入力パケットバッファ205からパケット情報を読み出す(S802)。S802の後、パケット多重部204は、受信したヘッダ情報と、入力パケットバッファ205から読み出したパケット情報を組み合わせてパケットを再構成し、SWインタフェース105にパケットを転送する(S803)。S803の後、パケット多重部204は、パケット多重処理S850を終了する(S804)。
以下に、実施例1の通信装置1が機能あるいは性能を柔軟に変更する例を、図9から図13を用いて説明する。
<同一モジュールグループ内のモジュール拡張シーケンス>
図9は、実施例1の通信装置1における同一モジュールグループ内のモジュール拡張の例を示すシーケンス図である。図9では、モジュール振分部202がオーバフローを検出した場合において、同一モジュールグループに利用するパケット処理モジュール203の数を拡張するまでのシーケンスを示す。
はじめに、モジュール振分部202は、バッファ格納処理S750(図7A参照)に示したように、オーバフローを検出すると(S901)、レジスタ109にオーバフローの検出を通知する(S902)。
次に、レジスタ109は、オーバフローレジスタを検出に設定し(S903)、NIF管理部110にオーバフローの検出を通知する(S904)。なお、S904において、NIF管理部110が、レジスタ110に周期的にアクセスしてオーバフローの検出情報を読み出しても良い。
次に、NIF管理部110は、装置管理部111にオーバフローの検出を通知する(S905)。なお、S905において、装置管理部111が、NIF管理部110に周期的にアクセスしてオーバフローの検出情報を読み出しても良い。
次に、装置管理部111は、制御ネットワーク経由でネットワーク管理システム(保守者)にオーバフロー検出情報を付与した制御情報を通知する(S906)。制御情報は、例えば、当該通信装置1を示す装置ID、オーバフローを検出したNIFIDを含む。オーバフローを検出したモジュールグループのモジュールグループIDを含んでもよい。
ここで、保守者は、オーバフローを検出している通信サービス(同一モジュールグループ)の処理性能を高めてオーバフローが起きないようにするため、通信装置1が同通信サービスに利用するパケット処理モジュール203を追加する指示を入力する(S907)。
次に、装置管理部111は、利用するパケット処理モジュール203の追加指示を付与した制御情報を受信する(S908)。制御情報には、例えば、通信装置1を示す装置ID、パケット処理モジュール203を追加すべきNIFのNIFID、パケット処理モジュール203を追加すべきモジュールグループのモジュールグループIDを含む。パケット処理回路プログラムをインストールすべきパケット処理モジュール203を識別するパケット処理モジュールIDを含んでもよい。なお、S908において、追加インストールするパケット処理回路プログラムを同時にダウンロードしても良い。装置管理部111は、制御情報に含まれるNIFIDに対応するNIFにパケット処理モジュール203の追加設定を送信する。
次に、NIF管理部110は、利用するパケット処理モジュール203の追加設定を受信する(S909)。なお、S909において、追加インストールするパケット処理回路プログラムを同時に受信しても良い。
次に、NIF管理部110は、パケット処理モジュール203のうち、追加設定に含まれるモジュールグループIDに対応するモジュールグループとして管理するパケット処理モジュール203の数を追加し(S910)、追加先のパケット処理モジュール203のパケット処理回路プログラムの更新を開始する(S911)。追加先のパケット処理モジュール203は、パケット処理回路プログラムを更新する(S912)。
次に、NIF管理部110は、追加したパケット処理モジュール203に対する設定をレジスタ109に施す(S913)。ここで、追加したパケット処理モジュール203にヘッダ情報を振分ける準備が完了する。
そして、NIF管理部110は、オーバフローを検出している同一モジュールグループに該当するモジュール振分部202が備えるモジュール振分管理テーブル4の利用モジュールID一覧の情報に、追加したパケット処理モジュール203のIDを追加するよう設定する(S914)。S914以降、モジュール振分部202は、スケジューリング処理S751(図7B参照)を実施することで、追加したパケット処理モジュール203を振分対象に追加する(S915)。
通信装置1は、前述したように、同一モジュールグループに利用するパケット処理モジュール203の数を追加することで、通信サービスの運用を継続したまま、その通信サービスの処理性能を拡張することができる。
なお、図9では、追加インストールするパケット処理回路を保守者サイドから受信したが、装置管理部111やNIF管理部110にパケット処理回路を予め格納しておいても良い。
<同一モジュールグループ内のモジュール縮退シーケンス>
図10は、実施例1の通信装置1における同一モジュールグループ内のモジュール縮退の例を示すシーケンス図である。図10では、モジュール振分部202のモジュールグループ利用帯域が少ないことを検出した場合において、同一モジュールグループに利用するパケット処理モジュール203の数を縮退するまでのシーケンスを示す。
はじめに、NIF管理部110は、モジュール振分管理テーブル4に周期的にアクセスし、モジュール振分部202がバッファ格納処理S750(図7A参照)で更新するモジュールグループ利用帯域の受信パケット数402及び受信バイト数403を読み出す(S1001)。
次に、NIF管理部110は、読み出した受信パケット数402及び受信バイト数403から利用帯域(スループット)を計算し(S1002)、装置管理部111に通知する(S1003)。
次に、装置管理部111は、制御ネットワーク経由でネットワーク管理システム(保守者)に利用帯域情報を付与した制御情報を通知する(S1004)。制御情報は、例えば、通信装置1を示す装置ID、NIFID、モジュールグループID、及び、計算した利用帯域を含む。
ここで、保守者が、受信した利用帯域情報からサービスの利用量が少ない(つまり、必要十分以上のパケット処理回路を使用している)と判断した場合、保守者は、通信装置1が利用するサービス(同一モジュールグループ)のパケット処理モジュール203数を削減する指示を入力する(S1005)。
次に、装置管理部111は、利用するパケット処理モジュール203の削減指示を付与した制御情報を受信する(S1006)。制御情報は、例えば、通信装置1を示す装置ID、NIFID、モジュールグループIDを含む。削除対象のパケット処理モジュール203を示すパケット処理モジュールIDを含んでもよい。装置管理部111は、制御情報に含まれるNIFIDに対応するNIFのNIF管理部110へ利用するパケット処理モジュール203の削減設定を通知する(S1007)。削減設定は、例えばパケット処理モジュール203数を削減すべきモジュールグループのモジュールグループID及び削除対象のパケット処理モジュール203を示すパケット処理モジュールIDを含む。
次に、NIF管理部110は、削減設定に含まれるモジュールグループIDのパケット処理モジュール203を特定し(S1008)、同一モジュールグループに該当するモジュール振分部202が備えるモジュール振分管理テーブル4の利用モジュールID一覧の情報に、削減するパケット処理モジュール203の情報を除くよう設定する(S1009)。S1009以降、モジュール振分部202は、スケジューリング処理S751(図7B参照)を実施することで、削減したパケット処理モジュール203を振分対象から除去する(S1010)。
なお、ここでは、削減対象のパケット処理モジュール203をモジュール振分部202の振分対象から除去するまでを説明したが、S1010の後、削減対象のパケット処理モジュール203からパケット処理回路プログラムをアンインストールしても良い。NIF管理部110は、S1010の後、削減対象のパケット処理モジュール203からパケット処理回路プログラムをアンインストールさせるため、通信サービスの運用を継続したまま、その通信サービスの処理性能を縮退することができる。
以上の通り、通信装置1は、同一モジュールグループに利用するパケット処理モジュール203の数を削減することで、通信サービスの運用を継続したまま、その通信サービスの処理性能を縮退することができる。
また、通信装置1は、各パケット処理モジュール203にインストールされたパケット処理回路プログラムの有効/無効を切り替えることで、パケット処理モジュール203の拡張及び縮退を行ってもよい。その場合、通信装置1は、各パケット処理モジュール203にインストールされたパケット処理回路プログラムが有効か無効かの状態を管理する。NIF管理部110は、S909において追加設定を受信すると、S911の処理において、追加対象のパケット処理モジュール203のパケット処理回路を有効に設定する。また、NIF管理部110は、S1007において削減設定を受信すると、S1008乃至S1010の処理を行い、その後、削除対象のパケット処理モジュール203のパケット処理回路を無効に設定する。
<プロトコル(モジュールグループ)の追加シーケンス>
図11は、実施例1の通信装置1におけるプロトコル(モジュールグループ)の追加の例を示すシーケンス図である。図11では、ネットワーク管理システム(保守者)が、通信サービスを追加するために、新しいプロトコル(モジュールグループ)を追加するシーケンスを示す。
はじめに、保守者が通信サービスを追加すると判断した場合、保守者は、通信装置1が利用するその通信サービスに該当するプロトコル(モジュールグループ)を追加する指示を入力する(S1101)。なお、この指示には、追加するプロトコルの処理性能が含まれていても良い。
次に、装置管理部111は、利用するモジュールグループの追加指示を付与した制御情報を受信する(S1102)。制御情報には、例えば、通信装置1を示す装置ID、パケット処理モジュール203を追加すべきNIFのNIFID、パケット処理モジュール203を追加すべきモジュールグループのモジュールグループIDが含まれる。パケット処理回路プログラムをインストールすべきパケット処理モジュール203を識別するパケット処理モジュールIDを含んでもよい。なお、S1102において、追加するモジュールグループ用にインストールするパケット処理回路プログラムを同時にダウンロードしても良い。装置管理部111は、制御情報に含まれるNIFIDに対応するNIFのNIF管理部110に利用するモジュールグループの追加設定を送信する。
次に、NIF管理部110は、利用するモジュールグループの追加設定を受信する(S1103)。なお、S1103において、追加するモジュールグループ用にインストールするパケット処理回路プログラムを同時に受信しても良い。
次に、NIF管理部110は、管理する各モジュールグループに新たにモジュールグループを作成する(S1104)。また、NIF管理部110は、新たに作成されるモジュールグループに含まれるパケット処理モジュール203のパケット処理回路プログラムの更新を開始し(S1105)、各パケット処理モジュール203は、パケット処理回路プログラムを更新する(S1106)。
次に、NIF管理部110は、新たに作成されるモジュール振分部202及びパケット処理モジュール203に対する設定をレジスタ109に施す(S1107)。
次に、NIF管理部110は、新たに作成するモジュールグループに該当するモジュール振分部202に備えるモジュール振分管理テーブル4の利用モジュールID一覧の情報に、追加するパケット処理モジュール203の情報を設定する(S1108)。S1108以降、モジュール振分部202は、スケジューリング処理S751(図7B参照)を実施することで、追加するパケット処理モジュール203を振分対象に追加する(S1109)。ここで、新たに作成したモジュールグループにヘッダ情報を振分ける準備が完了する。
そして、NIF管理部110は、パケット振分部201が備えるパケット振分管理テーブル3の振分識別ID(ポートID301あるいはイーサタイプ351等)の情報に、新たに追加するモジュールグループID302の情報を設定する(S1110)。S1110以降、パケット振分部201は、パケット振分処理S650(図6参照)を実施することで、追加したモジュールグループID302に該当する振分識別ID(ポートID301あるいはイーサタイプ351等)をもったパケットを振分対象に追加する(S1111)。
通信装置1は、前述したように、新たにモジュールグループを追加することで、その他の通信サービスの運用は継続したまま、新たなサービスを追加することができる。
なお、図11では、追加インストールするパケット処理回路を保守者サイドから受信したが、装置管理部111やNIF管理部110にパケット処理回路を予め格納しておいても良い。
<プロトコル(モジュールグループ)の削減シーケンス>
図12は、実施例1の通信装置1におけるプロトコル(モジュールグループ)の削減の例を示すシーケンス図である。図12では、ネットワーク管理システム(保守者)が、通信サービスを停止するために既存のプロトコル(モジュールグループ)を削減するシーケンスを示す。
はじめに、保守者が通信サービスを停止すると判断した場合、保守者は、通信装置1が利用するその通信サービスに該当するプロトコル(モジュールグループ)を削減する指示を入力する(S1201)。
次に、装置管理部111は、利用するモジュールグループの削減指示を付与した制御情報を受信し(S1202)する。制御情報は、例えば、通信装置1を示す装置ID、NIFID、モジュールグループIDを含む。装置管理部111は、制御情報に含まれるNIFIDに対応するNIFのNIF管理部110へ利用するモジュールグループの削減設定を通知する(S1203)。
そして、NIF管理部110は、管理する各モジュールグループから削減対象であるモジュールグループを除去し(S1204)、パケット振分部201が備えるパケット振分管理テーブル3の振分識別ID(ポートID301あるいはイーサタイプ351等)の情報から、削減するモジュールグループID302の情報を除くよう設定する(S1205)。S1205以降、パケット振分部201は、パケット振分処理S650(図6参照)を実施することで、削減したモジュールグループID302に該当する振分識別ID(ポートID301あるいはイーサタイプ351等)をもったパケットを振分対象から除去する(S1206)。
なお、ここでは、削減対象のモジュールグループID302をパケット振分部201の振分対象から除去するまでを説明したが、S1206の後、削減対象のモジュールグループID302で管理していた各パケット処理モジュール203からパケット処理回路プログラムをアンインストールしても良い。
通信装置1は、前述したように、該当するモジュールグループのみを削減することで、その他の通信サービスの運用は継続したまま、既存の通信サービスを停止することができる。
<障害検出及び復旧時のモジュール自動縮退及び自動拡張シーケンス>
図13は、実施例1の通信装置1における障害検出及び復旧時のモジュール自動縮退及び自動拡張の例を示すシーケンス図である。図13では、モジュール振分部202がパケット処理モジュール203の故障あるいは復旧を検出した場合において、同一モジュールグループに利用するパケット処理モジュール203の数を縮退あるいは拡張するまでのシーケンスを示す。
はじめに、パケット処理モジュール203は、故障を検出すると(S1301)、モジュール振分部202に故障を通知する(S1302)。モジュール振分部202は、スケジューリング処理S751(図7B参照)を実施することで、故障を検出したパケット処理モジュール203を振分対象から除去する(S1304)。
また、パケット処理モジュール203は、レジスタ109に故障の検出を通知し(S1303)、レジスタ109は、装置故障レジスタに検出を設定する(S1305)。
次に、詳細な説明は省略するが、レジスタ109からNIF管理部110及び装置管理部111を経由してネットワーク管理システム(保守者)に故障の検出情報を通知する(S1306〜1308)。故障の検出情報は、例えば、通信装置1を識別する装置ID、NIFID、及び、故障が検出されたパケット処理モジュール203の属するモジュールグループのモジュールグループIDを含む。故障を検出したパケット処理モジュール203を識別するパケット処理モジュールIDを含んでもよい。
ここで、保守者は、故障を検出している通信サービスのパケット処理回路を復旧するため、通信装置1が利用するパケット処理モジュール203を復旧する指示を入力する(S1309)。指示には、例えば、通信装置1を識別する装置ID、NIFID、及び、復旧が指示されたパケット処理モジュール203の属するモジュールグループのモジュールグループIDを含む。復旧が指示されたパケット処理モジュール203を識別するパケット処理モジュールIDを含んでもよい。
次に、詳細な説明は省略するが、保守者は、装置管理部111を経由してNIF管理部110に復旧指示を通知する(S1310〜S1311)。NIF管理部110は、パケット処理モジュール203のパケット処理回路プログラムを更新するなどにより、パケット処理モジュール203の復旧作業を実施する(S1312)。
そして、パケット処理モジュール203は、故障から復旧すると(S1313)、モジュール振分部202に故障からの復旧を通知(S1314)する。モジュール振分部202は、スケジューリング処理S751(図7B参照)を実施することで、故障から復旧したパケット処理モジュール203を振分対象に追加する(S1316)。
また、パケット処理モジュール203は、レジスタ109に故障の復旧を通知し(S1315)、レジスタ109には、装置故障レジスタが未検出に設定される(S1317)。
なお、詳細な説明は省略するが、レジスタ109からNIF管理部110及び装置管理部111を経由してネットワーク管理システム(保守者)に故障の復旧情報を通知しても良い(S1318〜1320)。
通信装置1は、前述したように、故障状況あるいは復旧状況に応じて同一モジュールグループに利用するパケット処理モジュール203の数を増減することで、通信サービスの運用を継続したまま、その通信サービスの処理性能を縮退あるいは拡張することができる。
前述のとおり、実施例1によれば、通信装置1は、受信するパケットの量を処理するだけに必要十分な処理回路を備えるために、通信装置1が備える処理回路を増減設することが可能である。また、通信装置1は、新サービスを提供する場合に、利用中のサービスには影響を与えることなく、その新サービスで利用する通信プロトコルの処理回路を通信装置に追加導入することが可能である。
従って、実施例1によれば、通信装置に流れ込むパケット量、パケット種別に応じて、必要最低限のパケット処理回路で通信装置を構成することができる。
(実施例2)
実施例1におけるパケット制御部104は、全てのパケット種別のパケットに対して入力パケットバッファ205を共用した。実施例2におけるパケット制御部144は、モジュール振分部1402(1402−1〜1402−M)に振分けたパケット種別ごとのパケットに対して、それぞれ入力パケットバッファ1405(1405−1〜1405−M)を備える。
以下、実施例2について図14から図20を用いて説明する。
<入力パケット制御部の構成例>
図14は、実施例2の入力パケット制御部144の論理的な構成を示すブロック図である。入力パケット制御部144は、パケット振分部1401、M個のモジュール振分部1402(1402−1〜1402−M)、N個のパケット処理モジュール203(203−11〜203−1P、・・・、203−M1〜203−MQ)、パケット多重部1404、M個の入力パケットバッファ1405(1405−1〜1405−M)、及び、M個のモジュール多重部1406(1406−1〜1406−M)を備える。実施例2におけるパケット処理モジュール203は、実施例1におけるパケット処理モジュール203と同じである。
パケット振分部1401は、入力パケット制御部144がMUX103から入力パケットを受信した場合、実施例1と同様にパケット振分管理テーブル3を参照してパケット種別を識別し、パケット種別毎に備えるモジュール振分部1402(1402−1〜1402−M)にパケットを振分ける。詳細は、後述するパケット振分処理S1750(図17参照)に示す。
モジュール振分部1402(1402−1〜1402−M)は、パケット振分部1401からパケットを受信した場合、実施例1と同様に、モジュール振分管理テーブル4を参照して、パケット処理を実行するパケット処理モジュール203を、複数のパケット処理モジュール203の中から決定し、決定したパケット処理モジュール203にヘッダ情報を振分ける。また、モジュール振分部1402は、入力パケットバッファ1405にパケット情報を転送する。詳細は、後述するモジュール振分部1402の論理構成(図15参照)、及び、モジュール振分部1402のスケジューリング処理S1851(図18B参照)に示す。
なお、モジュール振分部1402は、実施例1と同様に、ヘッダ情報のみではなく、ペイロードまで情報を切り出してパケット処理モジュール203に転送しても良い。また、モジュール振分部1402は、識別したパケット種別に関わらず、一定サイズのデータ量を切り出してパケット処理モジュール203に転送しても良い。また、モジュール振分部1402は、パケット種別に応じて、切り出すパケットのデータ量を変更してもよい。例えば、NIF管理部110は、モジュール追加時(S910)やプロトコル追加時(S110)に、モジュールト振分部1402に、パケット種別に応じて、切り出すパケットのデータ量を設定する。切り出すパケットのデータ量は、例えば、外部から受信する制御情報に含まれる。パケット処理モジュール203で処理するデータ量が少ない方が、処理時間を短縮できる。
モジュール多重部1406は、例えばモジュール多重部1406−1の場合、P個の各パケット処理モジュール203(203−11〜203−1P)から受信したヘッダ情報と、入力パケットバッファ1405−1から読み出したパケット情報を多重し、ヘッダ情報の到着順にパケット多重部1404に送信する。この際、モジュール多重部1406−1は、後述するモジュール多重管理テーブル20を参照し、多重処理を施す対象のパケット処理モジュール203(203−11〜203−1P)からヘッダ情報を受信しているかどうかを確認する。詳細は、後述するモジュール多重処理S1950(図19参照)に示す。
パケット多重部1404は、M個の各モジュール多重部1406(1406−1〜1406−M)から受信したパケット情報を多重し、到着順にSWインタフェース105に送信する。
ここで、実施例2では、パケット種別ごとのパケットに対して、それぞれの入力パケットバッファ1405を備えており、例えばP個の各パケット処理モジュール203(203−11〜203−1P)は同じパケット処理回路であるため、パケット処理に要する時間はあらかじめ定められる。そのため、入力パケットバッファ1405は、シフトレジスタで構成され、モジュール振分部1402から受信するパケット情報を格納し、格納順にパケット情報をモジュール多重部1406に出力する。なお、入力パケットバッファ1405は、実施例1と同様に、ランダムアクセスを構成してパケット情報を管理しても良い。
<モジュール多重管理テーブル20の記憶内容例>
図20は、実施例2のモジュール多重管理テーブル20を示す説明図である。モジュール多重管理テーブル20は、モジュール多重部1406がパケット処理に利用するパケット処理モジュール203のID一覧を有するテーブルである。モジュール多重管理テーブル20は、利用モジュールIDフィールド2001(2001−1〜2001−N)を含み、モジュール多重部1406ごとに各フィールド2001の値を記憶する。なお、利用モジュールID2001(2001−1〜2001−N)は、NIF管理部110から設定される。
<モジュール振分部1402の構成例>
図15は、実施例2のモジュール振分部1402の論理的な構成を示すブロック図である。ここでは、実施例1と同様に、図14に示したモジュール振分部1402−1を一例として、モジュール振分部1402(1402−1〜1402−M)を説明する。
モジュール振分部1402−1は、待合せバッファ1501、スケジューラ1502、及び、モジュール振分管理テーブル4を備える。
待合せバッファ1501は、パケット振分部1401から転送されるパケット情報を格納し、スケジューラ1502からの読み出しに従って、パケットのヘッダ情報をスケジューラ1502に出力する。この際、読み出されたパケット情報は、入力パケットバッファ1405に格納される。スケジューラ1502は、待合せバッファ501からパケット情報を読み出してヘッダ情報を取得し、モジュール振分管理テーブル4の利用モジュールID401に従って、利用するパケット処理モジュール203にラウンドロビンで順番にヘッダ情報を転送する。
実施例1と同様に、実際には、モジュール振分部1402−1は、N個の全てのパケット処理モジュール203(203−11〜203−1P、・・・、203−M1〜203−MQ)と接続される。モジュール振分部1402−1は、スケジューラ1502において、ヘッダ情報の振分け対象となる利用パケット処理モジュール203(203−11〜203−1P)を決定する。同様に、モジュール振分部1402−1は、利用するパケット処理モジュール203(203−11〜203−1P)からの受信情報(BP、故障情報、及び、復旧情報)のみを受け付ける。
<モジュール多重部1406の構成例>
図16は、実施例2のモジュール多重部1406の論理的な構成を示すブロック図である。ここでは、図14に示したモジュール多重部1406−1を一例として、モジュール多重部1406(1406−1〜1406−M)を説明する。
モジュール多重部1406−1は、多重論理1601、及び、前述のモジュール多重管理テーブル20を備える。
多重論理1601は、モジュール多重管理テーブル20の利用モジュールID2001に従って、利用するパケット処理モジュール203から受信したヘッダ情報と、入力パケットバッファ1405から読み出したパケット情報を多重し、再構成したパケットをパケット多重部1404に転送する。
ここで、図14では、便宜上、モジュール多重部1406−1は、利用するパケット処理モジュール203(203−11〜203−1P)、及び、入力パケットバッファ1405−1とのみ接続するように示したが、実際には、モジュール多重部1406−1は、N個の全てのパケット処理モジュール203(203−11〜203−1P、・・・、203−M1〜203−MQ)、及び、M個の入力パケットバッファ1405(1405−1〜1405−M)と接続される。モジュール多重部1406−1は、多重論理1601において、ヘッダ情報及びパケット情報の多重対象となる利用パケット処理モジュール203(203−11〜203−1P)及び入力パケットバッファ1405(1405−1〜1405−M)を決定する。
以下に、パケット振分部1401が実行するパケット振分処理S1750について説明する。
<パケット振分処理S1750>
図17は、実施例2のパケット振分部1401が実行するパケット振分処理S1750を示すフローチャートである。実施例2では、パケット振分部1401は、パケットのイーサタイプを用いてモジュール振分部1402(1402−1〜1402−M)にパケットを振分ける例を示す。
パケット振分部1401は、MUX103からパケットを受信した場合(S1700)、パケットヘッダからイーサタイプを取得する(S1701)。S1701の後、パケット振分部1401は、イーサタイプを検索キーとしてパケット振分管理テーブル3を検索し、モジュールグループIDを取得する(S1702)。S1702の後、パケット振分部1401は、受信したパケットを取得したモジュールグループIDに対応するモジュール振分部1402に転送し(S1703)、パケット振分処理S1750を終了する(S1704)。
以下に、モジュール振分部1402が実行するバッファ格納処理S1850、及び、スケジューリング処理S1851について説明する。
<バッファ格納処理S1850>
図18Aは、実施例2のモジュール振分部1402が実行するバッファ格納処理S1850を示すフローチャートである。
モジュール振分部1402は、パケット振分部1401からパケットを受信した場合(S1800)、受信したパケット情報の装置内ヘッダからパケット長情報を取得する(S1801)。S1801の後、モジュール振分部1402は、モジュール振分管理テーブル4を検索し、受信パケット数及び受信バイト数を取得する(S1802)。S1802の後、モジュール振分部1402は、S1800において受信したパケットの数、及び、S1801において取得したパケット長情報を用いて受信パケット数及び受信バイト数を更新し、モジュール振分管理テーブル4に書き戻す(S1803)。S1803の後、モジュール振分部1402は、受信したパケット情報を待合せバッファ1501に格納し(S1804)、バッファ格納処理S1850を終了する(S1805)。なお、S1804において、待合せバッファ1501にパケットを格納出来ない場合は、モジュール振分部1402は、オーバフローを検出してレジスタ109に通知し、バッファ格納処理S1850を終了する(S1805)。
<スケジューリング処理S1851>
図18Bは、実施例2のモジュール振分部1402が実行するスケジューリング処理S1851を示すフローチャートである。実施例2におけるS1821〜S1824は、実施例1におけるS721〜S724(図7B参照)と処理が同様であるため、説明は省略する。
S1824において、選択したパケット処理モジュール203からBPを受信していないと判定された場合(ステップS1824:No)、モジュール振分部1402は、待合せバッファ1501にパケット情報が格納されているか否かを判定する(S1825)。
S1825において、待合せバッファ1501にパケット情報が格納されていないと判定された場合(ステップS1825:No)、モジュール振分部1402は、スケジューリング処理S1851を終了する(S1827)。
また、S1825において、待合せバッファ1501にパケット情報が格納されていると判定された場合(ステップS1825:Yes)、モジュール振分部1402は、待合せバッファ1501からヘッダ情報を読み出し、S1822あるいはS1823において選択したパケット処理モジュール203にヘッダ情報(装置内ヘッダ及びパケットのヘッダ部分を含む)を転送する。また、モジュール振分部1402は、各モジュール振分部1402に対応する入力パケットバッファ1405にパケット情報を格納する。さらに、上記処理後、モジュール振分部1402は、内部カウンタを更新して次のパケット処理モジュール203を選択し、次のヘッダ情報の転送に備える(S1826)。S1826の後、モジュール振分部1402は、スケジューリング処理S1851を終了する(S1827)。
ここで、実施例2では、入力パケットバッファ1405はシフトレジスタで構成されるため、モジュール振分部1402は、パケット処理モジュール203にヘッダ情報を転送する時、入力パケットバッファ1405にパケット情報を格納したWRアドレスを装置内ヘッダに付与していない。なお、モジュール振分部1402は、装置内ヘッダにWRアドレスを付与しても良い。
以下に、モジュール多重部1406が実行するモジュール多重処理S1950について説明する。
<モジュール多重処理S1950>
図19は、実施例2のモジュール多重部1406が実行するモジュール多重処理S1950を示すフローチャートである。
モジュール多重部1406は、パケット処理モジュール203(203−11〜203−1P、・・・、203−M1〜203−MQ)からヘッダ情報を受信した場合(S1900)、モジュール多重管理テーブル20を検索し、利用モジュールID一覧の情報を取得する(S1901)。S1901の後、モジュール多重部1406は、S1900において受信したヘッダ情報が、S1901において取得した利用モジュールIDが示すパケット処理モジュール203から受信しているか否かを判定する(S1902)。
S1902において、利用モジュールIDが示すパケット処理モジュール203からヘッダ情報を受信していないと判定された場合(ステップS1902:No)、多重非対象のパケットであるため、モジュール多重部1406は、処理を終了する(S1905)。
S1902において、利用モジュールIDが示すパケット処理モジュール203からヘッダ情報を受信していると判定された場合(ステップS1902:Yes)、多重対象のパケットであるため、モジュール多重部1406は、入力パケットバッファ1405の先頭からパケット情報を読み出す(S1903)。S1903の後、モジュール多重部1406は、受信したヘッダ情報と、入力パケットバッファ1405から読み出したパケット情報を組み合わせてパケットを再構成し、パケット多重部1404にパケットを転送する(S1904)。S1904の後、モジュール多重部1406は、モジュール多重処理S1950を終了する(S1905)。
前述のとおり、実施例2によれば、実施例1と同様に、通信装置1は、受信するパケットの量を処理するだけに必要十分な処理回路を備えるために、通信装置1が備える処理回路を増減設することが可能である。また、通信装置1は、新規通信サービスを提供する場合に、利用中の通信サービスには影響を与えることなく、その新規通信サービスで利用する通信プロトコルの処理回路を通信装置に追加導入することが可能である。
従って、実施例2によれば、通信装置に流れ込むパケット量、パケット種別に応じて、必要最低限のパケット処理回路で通信装置を構成することができる。
なお、本発明は前述した実施例に限定されるものではなく、添付した特許請求の範囲の趣旨内における様々な変形例及び同等の構成が含まれる。例えば、前述した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに本発明は限定されない。また、ある実施例の構成の一部を他の実施例の構成に置き換えてもよい。また、ある実施例の構成に他の実施例の構成を加えてもよい。また、各実施例の構成の一部について、他の構成の追加・削除・置換をしてもよい。
また、前述した各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等により、ハードウェアで実現してもよく、プロセッサがそれぞれの機能を実現するプログラムを解釈し実行することにより、ソフトウェアで実現してもよい。
また、制御線や情報線は説明上必要と考えられるものを示しており、実装上必要な全ての制御線や情報線を示しているとは限らない。実際には、ほとんど全ての構成が相互に接続されていると考えてもよい。