(57)【要約】【課題】ＴＣＰ／ＩＰに関するデータ転送装置において、複数の汎用プロセッサ（ＣＰＵ）を用いて同一の機能を負荷分散する場合に、同じセッションに属するパケットを常に同じ汎用プロセッサで処理する。【解決手段】任意のＣＰＵに引き渡すパケットを受信した時、受信側セッション管理部３−４は、セッション管理テーブル３−５に、上記パケットが属するセッションのセッション特定情報と対応付けて引き渡し先にするＣＰＵの識別子が登録されていなければ、汎用プロセッサ選択部３−６が選択したＣＰＵの識別子を上記セッション特定情報と対応付けて登録すると共に、上記ＣＰＵにパケットを引き渡す。その後、上記セッションに属するパケットを受信した場合は、セッション管理テーブル３−５に、上記セッションのセッション特定情報と対応付けて引き渡し先にするＣＰＵの識別子が登録されているので、上記識別子のＣＰＵにパケットが引き渡される。【選択図】      図３
2004350188.tif 000002
【特許請求の範囲】
【請求項１】
複数の汎用プロセッサと、ネットワークプロセッサとを備えたデータ転送装置において、
前記ネットワークプロセッサが、
受信したパケットの内の汎用プロセッサによる処理を必要とするパケットに関し、同一セッションに属するパケットは、同一汎用プロセッサに引き渡す手段を備えたことを特徴とするデータ転送装置。
【請求項２】
複数の汎用プロセッサと、ネットワークプロセッサとを備えたデータ転送装置において、
前記ネットワークプロセッサが、
セッションを特定するセッション特定情報に対応付けて、そのセッションに属するパケットの引き渡し先にする汎用プロセッサの識別子が登録されるセッション管理テーブルと、
前記複数の汎用プロセッサの内の１つを選択する汎用プロセッサ選択部と、
前記複数の汎用プロセッサの内の任意の汎用プロセッサによる処理が必要なパケットを受信した時、前記セッション管理テーブルに、前記パケットが属するセッションのセッション特定情報と対応付けて汎用プロセッサの識別子が登録されていない場合は、前記汎用プロセッサ選択部が選択した汎用プロセッサの識別子を、前記パケットが属するセッションのセッション特定情報と対応付けて前記セッション管理テーブルに登録すると共に、前記汎用プロセッサ選択部が選択した汎用プロセッサに前記パケットを引き渡し、前記セッション管理テーブルに、前記パケットが属するセッションのセッション特定情報と対応付けて汎用プロセッサの識別子が登録されている場合は、該登録されている識別子が示す汎用プロセッサに前記パケットを引き渡す受信側セッション管理部とを備えたことを特徴とするデータ転送装置。
【請求項３】
複数の汎用プロセッサと、複数のネットワークプロセッサとを備えたデータ転送装置において、
前記各ネットワークプロセッサが、それぞれ、
複数のセッション管理エントリを有するセッション管理テーブルと、
前記複数の汎用プロセッサの内の１つを選択する汎用プロセッサ選択部と、
前記複数の汎用プロセッサの内の任意の汎用プロセッサによる処理が必要なパケットを受信したとき、該パケットの送信元ＩＰアドレス、宛先ＩＰアドレス、送信元ポート、宛先ポートとハッシュ関数とからセッション番号を求め、該求めたセッション番号に前記パケットの送信側ネットワークプロセッサの識別子を付加することによりエントリ番号を求め、前記セッション管理テーブル中の前記求めたエントリ番号に対応するセッション管理エントリが無効になっている場合は、該セッション管理エントリに、前記汎用プロセッサ選択部が選択した汎用プロセッサの識別子を登録すると共に、前記汎用プロセッサ選択部が選択した汎用プロセッサに前記パケットを引き渡し、前記求めたエントリ番号に対応するセッション管理エントリが有効になっている場合は、該セッション管理エントリに登録されている汎用プロセッサの識別子が示す汎用プロセッサに前記パケットを引き渡す受信側セッション管理部と、
汎用プロセッサからパケットが引き渡されたとき、該パケットの送信元ＩＰアドレス、宛先ＩＰアドレス、送信元ポート、宛先ポートとハッシュ関数とからセッション番号を求め、該求めたセッション番号に前記パケットの受信側ネットワークプロセッサの識別子を付加することによりエントリ番号を求め、前記セッション管理テーブル中の前記求めたエントリ番号と対応するセッション管理エントリに、前記汎用プロセッサの識別子を登録する送信側セッション管理部とを備えたことを特徴とするデータ転送装置。
【請求項４】
請求項２または３記載のデータ転送装置において、
前記複数の汎用プロセッサの内の特定の汎用プロセッサによる処理が必要なパケットを受信したとき、該受信したパケットを前記特定の汎用プロセッサに引き渡す受信側パケット処理部を備えたことを特徴とするデータ転送装置。
【請求項５】
請求項３記載のデータ転送装置において、
前記セッション管理テーブルの各セッション管理エントリは、エージカウンタを備え、且つ、
前記各セッション管理エントリのエージカウンタを、一定時間毎に一定値ずつ更新するエージング部を備え、且つ、
前記受信側セッション管理部が、エージカウンタの値に基づいてセッション管理エントリが有効であるか否かを判定する構成を有すると共に、セッション管理エントリに汎用プロセッサの識別子を登録する際、該セッション管理エントリのエージカウンタに所定値を設定する構成を有し、
前記送信側セッション管理部が、セッション管理エントリに汎用プロセッサの識別子を登録する際、該セッション管理エントリのエージカウンタに所定値を設定する構成を有することを特徴とするデータ転送装置。
【請求項６】
請求項２または３記載のデータ転送装置において、
前記汎用プロセッサ選択部が、
前記複数の汎用プロセッサの内の最も負荷の低い汎用プロセッサを選択する構成、予め定められている順番に従って前記複数の汎用プロセッサの内の１つを選択する構成、もしくは、自ネットワークプロセッサと同一ボード上の汎用プロセッサを優先的に選択する構成を有することを特徴とするデータ転送装置。
【請求項７】
複数の汎用プロセッサと、ネットワークプロセッサとを備えたデータ転送装置の構成要素であるネットワークプロセッサを、
受信したパケットの内の汎用プロセッサによる処理を必要とするパケットに関し、同一セッションに属するパケットは、同一汎用プロセッサに引き渡す手段として機能させるためのプログラム。
【請求項８】
複数の汎用プロセッサと、ネットワークプロセッサとを備えたデータ転送装置の構成要素であるネットワークプロセッサを、
セッションを特定するセッション特定情報に対応付けて、そのセッションに属するパケットの引き渡し先にする汎用プロセッサの識別子が登録されるセッション管理テーブル、
前記複数の汎用プロセッサの内の１つを選択する汎用プロセッサ選択部、
前記複数の汎用プロセッサの内の任意の汎用プロセッサによる処理が必要なパケットを受信した時、前記セッション管理テーブルに、前記パケットが属するセッションのセッション特定情報と対応付けて汎用プロセッサの識別子が登録されていない場合は、前記汎用プロセッサ選択部が選択した汎用プロセッサの識別子を、前記パケットが属するセッションのセッション特定情報と対応付けて前記セッション管理テーブルに登録すると共に、前記汎用プロセッサ選択部が選択した汎用プロセッサに前記パケットを引き渡し、前記セッション管理テーブルに、前記パケットが属するセッションのセッション特定情報と対応付けて汎用プロセッサの識別子が登録されている場合は、該登録されている識別子が示す汎用プロセッサに前記パケットを引き渡す受信側セッション管理部として機能させるためのプログラム。
【請求項９】
複数の汎用プロセッサと、複数のネットワークプロセッサとを備えたデータ転送装置の構成要素であるネットワークプロセッサを、
複数のセッション管理エントリを有するセッション管理テーブル、
前記複数の汎用プロセッサの内の１つを選択する汎用プロセッサ選択部、
前記複数の汎用プロセッサの内の任意の汎用プロセッサによる処理が必要なパケットを受信したとき、該パケットの送信元ＩＰアドレス、宛先ＩＰアドレス、送信元ポート、宛先ポートとハッシュ関数とからセッション番号を求め、該求めたセッション番号に前記パケットの送信側ネットワークプロセッサの識別子を付加することによりエントリ番号を求め、前記セッション管理テーブル中の前記求めたエントリ番号に対応するセッション管理エントリが無効になっている場合は、該セッション管理エントリに、前記汎用プロセッサ選択部が選択した汎用プロセッサの識別子を登録すると共に、前記汎用プロセッサ選択部が選択した汎用プロセッサに前記パケットを引き渡し、前記求めたエントリ番号に対応するセッション管理エントリが有効になっている場合は、該セッション管理エントリに登録されている汎用プロセッサの識別子が示す汎用プロセッサに前記パケットを引き渡す受信側セッション管理部、
汎用プロセッサからパケットが引き渡されたとき、該パケットの送信元ＩＰアドレス、宛先ＩＰアドレス、送信元ポート、宛先ポートとハッシュ関数とからセッション番号を求め、該求めたセッション番号に前記パケットの受信側ネットワークプロセッサの識別子を付加することによりエントリ番号を求め、前記セッション管理テーブル中の前記求めたエントリ番号と対応するセッション管理エントリに、前記汎用プロセッサの識別子を登録する送信側セッション管理部として機能させるためのプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、パケットを中継、終端するデータ転送装置に関し、特に、ネットワークプロセッサと複数の汎用プロセッサとを備えたデータ転送装置において、同じセッションに属するパケットは常に同じ汎用プロセッサで処理されるようにするセッション管理技術に関する。
【０００２】
【従来の技術】
従来から、データ転送装置においては、セッション管理テーブルの内容に基づいて同一セッションに属するパケットを同一出力先に出力する等のセッション管理を行なっている（例えば、特許文献１参照）。ところで、このようなデータ転送装置の実現方法としては種々の方法が考えられるが、例えば、ネットワークプロセッサと汎用プロセッサの２種類のプロセッサを使用する方法が考えられる。
ネットワークプロセッサ、汎用プロセッサはそれぞれ次のような特徴を有する。
【０００３】
ネットワークプロセッサは、高速なパケット転送処理をソフトウェアによって実装できるため、ＡＳＩＣ等の専用のハードウェアと比較して高い柔軟性を持つ。しかし、プログラムメモリの容量が少ないことや低級言語によるプログラミングのため、複雑な処理の実装が困難である。例えば以下のような処理が問題となる。
【０００４】
（ａ）レイヤー３のパケット転送においてパケットヘッダの中にオプション情報を含む場合、オプションの解析および処理の実装が必要となる。これらを実装することはプログラムメモリを圧迫する。
【０００５】
（ｂ）セッション単位のフィルタリングを必要とする場合、各パケットに対する処理が過去に受信したパケットの処理結果に依存する。これを実装するためにはセッションごとの状態管理が必要となり、ネットワークプロセッサのプログラムメモリ、検索用メモリ、処理時間を圧迫する。
【０００６】
（ｃ）本装置においてアプリケーションレイヤによる処理を必要とする場合、一連のパケットをレイヤー４（セッション層）のプロトコルで終端する必要がある。これらの処理を実装することはプログラムメモリ及びデータメモリを圧迫する。
【０００７】
一方、汎用プロセッサは、ネットワークプロセッサに比べて処理速度が大きく劣るが、十分なメモリ容量を持ち、また、汎用のオペレーティングシステムが動作することから、高級言語を用いて複雑な機能を実装することが容易である。また、汎用プロセッサ上で動作する多くのオペレーティングシステムは、ＴＣＰ／ＩＰのプロトコル処理を実装し、更に、フィルタリング、アドレス変換、暗号化等の機能を実装するものも存在する。また、各種オペレーティングシステム上で動作する多くのアプリケーションソフトウェアが利用できる。
【０００８】
そこで、ＴＣＰ／ＩＰを処理するデータ転送装置の構成として、レイヤ３以下の単純なパケット転送処理をネットワークプロセッサ上に実装し、オプション処理及びレイヤ４（セッション層）以上の複雑な処理を汎用プロセッサ上に実装することが考えられる。但し、ネットワークプロセッサに比べて汎用プロセッサの処理速度は大きく劣るため、１つの装置内に複数の汎用プロセッサを搭載し、負荷分散を行なうことで性能を向上させる。
【０００９】
【特許文献１】
特開２００２−３５９６３７号公報
【００１０】
【発明が解決しようとする課題】
上記したように、１つのデータ転送装置内に複数の汎用プロセッサを搭載し、負荷分散を行なうことで性能を向上させると、以下の課題が発生する。
【００１１】
ＩＰパケット転送では、同じセッションに属するパケットの追い越しを防ぐことが望ましい。そのため、同じセッションに属するパケットは常に同じ汎用プロセッサで処理させる必要がある。同じセッションに属するパケットを複数の汎用プロセッサで別々に処理すれば、パケットの追い越しが頻繁に発生する。
【００１２】
セッション単位のフィルタリングでは、セッションの状態管理を伴うため、同じセッションに属するパケットは同じ汎用プロセッサで処理させる必要がある。
【００１３】
１つの汎用プロセッサが終端するセッションに属するパケットは全て、同じ汎用プロセッサで処理させる必要がある。アプリケーションゲートウェイ機能はＴＣＰのセッションを終端するため、この課題を解決する必要がある。
【００１４】
そこで、本発明は、ＴＣＰ／ＩＰに関するデータ転送装置において、複数の汎用プロセッサを用いて負荷分散する場合に、ネットワークプロセッサによって、同じセッションに属するパケットを常に同じ汎用プロセッサへ転送することを可能とする。
【００１５】
【課題を解決するための手段】
本発明のデータ転送装置は、上記目的を達成するため、
複数の汎用プロセッサと、ネットワークプロセッサとを備えたデータ転送装置において、
前記ネットワークプロセッサが、
受信したパケットの内の汎用プロセッサによる処理を必要とするパケットに関し、同一セッションに属するパケットは、同一汎用プロセッサに引き渡す手段を備えたことを特徴とする。
【００１６】
より具体的には、本発明のデータ転送装置は、
複数の汎用プロセッサと、ネットワークプロセッサとを備えたデータ転送装置において、
前記ネットワークプロセッサが、
セッションを特定するセッション特定情報に対応付けて、そのセッションに属するパケットの引き渡し先にする汎用プロセッサの識別子が登録されるセッション管理テーブルと、
前記複数の汎用プロセッサの内の１つを選択する汎用プロセッサ選択部と、
前記複数の汎用プロセッサの内の任意の汎用プロセッサによる処理が必要なパケットを受信した時、前記セッション管理テーブルに、前記パケットが属するセッションのセッション特定情報と対応付けて汎用プロセッサの識別子が登録されていない場合は、前記汎用プロセッサ選択部が選択した汎用プロセッサの識別子を、前記パケットが属するセッションのセッション特定情報と対応付けて前記セッション管理テーブルに登録すると共に、前記汎用プロセッサ選択部が選択した汎用プロセッサに前記パケットを引き渡し、前記セッション管理テーブルに、前記パケットが属するセッションのセッション特定情報と対応付けて汎用プロセッサの識別子が登録されている場合は、該登録されている識別子が示す汎用プロセッサに前記パケットを引き渡す受信側セッション管理部とを備えたことを特徴とする。
【００１７】
また、本発明のデータ転送装置は、セッション管理テーブルのエントリ数を少なくするため、
複数の汎用プロセッサと、複数のネットワークプロセッサとを備えたデータ転送装置において、
前記各ネットワークプロセッサが、それぞれ、
複数のセッション管理エントリを有するセッション管理テーブルと、
前記複数の汎用プロセッサの内の１つを選択する汎用プロセッサ選択部と、
前記複数の汎用プロセッサの内の任意の汎用プロセッサによる処理が必要なパケットを受信したとき、該パケットの送信元ＩＰアドレス、宛先ＩＰアドレス、送信元ポート、宛先ポートとハッシュ関数とからセッション番号を求め、該求めたセッション番号に前記パケットの送信側ネットワークプロセッサの識別子を付加することによりエントリ番号を求め、前記セッション管理テーブル中の前記求めたエントリ番号に対応するセッション管理エントリが無効になっている場合は、該セッション管理エントリに、前記汎用プロセッサ選択部が選択した汎用プロセッサの識別子を登録すると共に、前記汎用プロセッサ選択部が選択した汎用プロセッサに前記パケットを引き渡し、前記求めたエントリ番号に対応するセッション管理エントリが有効になっている場合は、該セッション管理エントリに登録されている汎用プロセッサの識別子が示す汎用プロセッサに前記パケットを引き渡す受信側セッション管理部と、
汎用プロセッサからパケットが引き渡されたとき、該パケットの送信元ＩＰアドレス、宛先ＩＰアドレス、送信元ポート、宛先ポートとハッシュ関数とからセッション番号を求め、該求めたセッション番号に前記パケットの受信側ネットワークプロセッサの識別子を付加することによりエントリ番号を求め、前記セッション管理テーブル中の前記求めたエントリ番号と対応するセッション管理エントリに、前記汎用プロセッサの識別子を登録する送信側セッション管理部とを備えたことを特徴とする。
【００１８】
また、本発明のデータ転送装置は、特定の汎用プロセッサでの処理が必要になるパケットを該当する汎用プロセッサに引き渡すため、
前記複数の汎用プロセッサの内の特定の汎用プロセッサによる処理が必要なパケットを受信したとき、該受信したパケットを前記特定の汎用プロセッサに引き渡す受信側パケット処理部を備えたことを特徴とする。
【００１９】
また、本発明のデータ転送装置は、セッション管理エントリの有効、無効を管理するため、
前記セッション管理テーブルの各セッション管理エントリは、エージカウンタを備え、且つ、
前記各セッション管理エントリのエージカウンタを、一定時間毎に一定値ずつ更新するエージング部を備え、且つ、
前記受信側セッション管理部が、エージカウンタの値に基づいてセッション管理エントリが有効であるか否かを判定する構成を有すると共に、セッション管理エントリに引き渡し先情報を登録する際、該セッション管理エントリのエージカウンタに所定値を設定する構成を有し、
前記送信側セッション管理部が、セッション管理エントリに引き渡し先情報を登録する際、該セッション管理エントリのエージカウンタに所定値を設定する構成を有することを特徴とする。
【００２０】
また、本発明のデータ転送装置における汎用プロセッサ選択部としては、
前記複数の汎用プロセッサの内の最も負荷の低い汎用プロセッサを選択する構成、予め定められている順番に従って前記複数の汎用プロセッサの内の１つを選択する構成、もしくは、自ネットワークプロセッサと同一ボード上の汎用プロセッサを優先的に選択する構成を有するものを採用することができる。
【００２１】
【作用】
任意の汎用プロセッサによる処理を必要とするパケットを受信したとき、受信側セッション管理部は、セッション管理テーブルに、上記パケットが属するセッションのセッション特定情報と対応付けてパケットの引き渡し先にする汎用プロセッサの識別子が登録されていなければ、汎用プロセッサ選択部によって選択された汎用プロセッサの識別子を、上記セッション特定情報と対応付けてセッション管理テーブルに登録すると共に、選択された汎用プロセッサにパケットを引き渡す。このような処理は、セッションに属する最初のパケットの受信時等において行われる。その後、上記セッションに属するパケットを受信した場合には、セッション管理テーブルに、上記セッションのセッション特定情報と対応付けてパケットの引き渡し先にする汎用プロセッサの識別子が登録されているので、受信側セッション管理部は、登録されている識別子によって示される汎用プロセッサにパケットを引き渡す。従って、同一セッションに属するパケットは、常に同一汎用プロセッサに引き渡すことが可能になる。
【００２２】
また、本発明では、セッション管理テーブルのエントリ数を少なくするため、ハッシュ関数を利用している。即ち、パケットの送信元ＩＰアドレス、宛先ＩＰアドレス、送信元ポート、宛先ポートとハッシュ関数とから求まるセッション番号（ハッシュ値）に、上記パケットの送信側あるいは受信側ネットワークプロセッサの識別子を付加することにより得られるエントリ番号を、上記パケットが属するセッション用のセッション番号としているので、セッション管理テーブルのエントリ数を少なくすることができる。また、ハッシュ値をそのままエントリ番号とするのではなく、ハッシュ値に送信側あるいは受信側ネットワークプロセッサの識別子を付加したものをエントリ番号としているので、異なるセッションに同一エントリ番号が付与される危険性を極めて低くすることができる。
【００２３】
【発明の実施の形態】
次に本発明の実施の形態について図面を参照して詳細に説明する。
【００２４】
・全体構成
本発明が対象とするＴＣＰ／ＩＰに関するデータ転送装置は、ＩＰパケット転送、フィルタリング、アドレス変換、アプリケーションゲートウェイ等のデータ転送機能を有し、ネットワークプロセッサと、同一のソフトウェアを実装する複数の汎用プロセッサから構成される。
【００２５】
図１は本発明の実施例のブロック図であり、本発明が対象とするデータ転送装置１の全体構成と、本装置１を用いて構成されたネットワークの接続例を示す。データ転送装置１は、複数の汎用プロセッサＣＰＵ１、ＣＰＵ２、ＣＰＵ３と、複数のネットワーウプロセッサＮＰ４、ＮＰ５、ＮＰ６と、物理回線インタフェースＩＦ４１、ＩＦ４２、ＩＦ５１、ＩＦ５２、ＩＦ６１、ＩＦ６２とから構成される。
【００２６】
データ転送装置１内の全ての汎用プロセッサＣＰＵ１〜ＣＰＵ３及びネットワークプロセッサＮＰ４〜ＮＰ６には、データ転送装置１内で固有のデバイス番号が割り当てられる。本実施例では、汎用プロセッサＣＰＵ１、ＣＰＵ２、ＣＰＵ３にそれぞれデバイス番号１、２、３を割り当て、ネットワークプロセッサＮＰ４、ＮＰ５、ＮＰ６にそれぞれデバイス番号４、５、６を割り当てるものとする。
【００２７】
同様に、ネットワークプロセッサＮＰ４、ＮＰ５、ＮＰ６が収容する物理回線インタフェースＩＦ４１〜ＩＦ６２には、データ転送装置１内で固有の回線番号が割り当てられる。本実施例では、物理回線インタフェースＩＦ４１、ＩＦ４２、ＩＦ５１、ＩＦ５２、ＩＦ６１、ＩＦ６２にそれぞれ回線番号４１、４２、５１、５２、６１、６２を割り当てるものとする。また、各物理回線インタフェースＩＦ４１〜ＩＦ６２には、汎用プロセッサの個数＋１個（図１では４個）のＩＰアドレスを割り当てる。
【００２８】
ネットワークプロセッサＮＰ４は、ネットワークＮ１、Ｎ２を介してホストコンピュータ（ホスト）Ｈ４１、Ｈ４２と接続され、ネットワークプロセッサＮＰ５は、ネットワークＮ３、Ｎ４を介してホストＨ５１、Ｈ５２と接続され、ネットワークプロセッサＮＰ６は、ネットワークＮ５、Ｎ６を介してホストＨ６１、Ｈ６２と接続されている。
【００２９】
・汎用プロセッサ
汎用プロセッサＣＰＵ１、ＣＰＵ２、ＣＰＵ３は、ＴＣＰ／ＩＰに関する各種データ転送機能を有する。具体的には、ＩＰパケットルーティング、セッションフィルタリング、アドレス変換、各種アプリケーションゲートウェイ等が挙げられる。これらの機能はソフトウェアによって実装されるものとする。これらの機能を提供するために汎用プロセッサＣＰＵ１〜ＣＰＵ３上に実装されるソフトウェアの構成例を図２に示す。
【００３０】
本実施例では、アプリケーション処理部２−１−１〜２−１−３とプロトコル処理部２−２は既存のソフトウェアモジュールを流用し、装置内インタフェース処理部２−４のみ新規に実装する。
【００３１】
アプリケーション処理部２−１−１、２−１−２、２−１−３は、ＩＰネットワークに接続された他のホストとの間でＴＣＰまたはＵＤＰのセッションを用いて双方向のデータ通信を行なう。アプリケーションゲートウェイ機能は、アプリケーション処理部２−１−１、２−１−２、２−１−３に実装される。
【００３２】
プロトコル処理部２−２は、アプリケーション処理部２−１−１、２−１−２、２−１−３に対してＴＣＰ、ＵＤＰセッションの終端機能を提供する。また、本データ転送装置１が終端しないＩＰパケットに対してはルーティングテーブル２−３の設定に従いＩＰパケット転送を行なう。これらの機能に加え、セッション単位のフィルタリング機能、アドレス変換機能、ＩＰＳｅｃＶＰＮなどを提供する場合もある。
【００３３】
ルーティングテーブル２−３は、複数のルーティングエントリから構成され、１つのルーティングエントリは、宛先ＩＰアドレスの集合に対して、送信側回線の識別子（回線番号）、次の転送先ノードのＩＰアドレス等を格納する。ルーティングテーブル２−３の内容は、ユーザまたはアプリケーション処理部２−１−１、２−１−２、２−１−３から設定される。
【００３４】
装置内インタフェース処理部２−４は、プロトコル処理部２−２に対し物理回線へのパケットの送受信機能を提供する。具体的には、プロトコル処理部２−２と装置内インタフェースとの間でデータ構造の変換等を行なう。
【００３５】
・ネットワークプロセッサ
ネットワークプロセッサＮＰ４、ＮＰ５、ＮＰ６は、複数の物理回線インタフェースを収容し、物理回線へのパケットの送受信、及び、ルーティングテーブルの設定に基づくＩＰパケット転送機能を持つ。これに加え、汎用プロセッサＣＰＵ１〜ＣＰＵ３の処理を必要とするパケットに対し、同一のセッションに属するパケットを常に同一の汎用プロセッサへ転送するよう、セッションの管理を行なう。これらの機能は、主にソフトウェアによって実装される。
【００３６】
図３は、本実施例においてネットワークプロセッサＮＰ４〜ＮＰ６上に実装されるソフトウェア構成を示す。
【００３７】
ネットワークプロセッサＮＰ４〜ＮＰ６のソフトゥエアは、回線インタフェース処理部３−１、受信側パケット処理部３−２、ルーティングテーブル３−３、受信側セッション管理部３−４、セッション管理テーブル３−５、汎用プロセッサ選択部３−６、装置内インタフェース処理部３−７、送信側セッション管理部３−８、送信側パケット処理部３−９、及び、エージング部３−１０から構成される。言い換えれば、ネットワークプロセッサＮＰ４〜ＮＰ６は、記録媒体（ディスク、半導体メモリ、その他のメモリ）に記録された、上記各部３−１〜３−１０を実現するためのプログラムを読み込み、読み込んだプログラムに従って自ネットワークプロセッサＮＰ４〜ＮＰ６の動作を制御することにより、自ネットワークプロセッサＮＰ４〜ＮＰ６に上記各部３−１〜３−１０を実現する。
【００３８】
回線インタフェース処理部３−１は、物理回線インタフェースに対しパケットの送受信を行なう。即ち、物理回線から受信した信号からパケットを抽出し、パケットと受信回線番号を受信側パケット処理部３−２へ引き渡す。また、送信側パケット処理部３−９から引き渡されたパケットを送信回線番号で指定された物理回線へ送出する。
【００３９】
受信側パケット処理部３−２は、図４のフローチャートに従い、回線インタフェース処理部３−１からパケットを引き取り、各種パケット処理を行ない、ルーティングテーブル３−３から宛て先ＩＰアドレスに対応する送信側デバイス番号と送信回線番号を転送情報として取得し、それらの結果に基づいて装置内インタフェース処理部３−７または受信側セッション管理部３−４へパケットとその転送情報を引き渡す。
【００４０】
ルーティングテーブル３−３は、複数のルーティングエントリから構成される。各ルーティングエントリには、宛先ＩＰアドレスの集合、送信側デバイス番号、送信回線番号が格納される。送信側デバイス番号には、特定のネットワークプロセッサまたは汎用プロセッサを示すデバイス番号、または、任意の汎用プロセッサを示す値として０が格納される。図１１は、ルーティングテーブル３−３の設定例を示す。
【００４１】
受信側セッション管理部３−４は、図５のフローチャートに従い、任意の汎用プロセッサへ転送する必要のあるパケットとその転送情報とを受信側パケット処理部３−２からを引き取り、セッション管理テーブル３−５、汎用プロセッサ選択部３−６を用いて転送先の汎用プロセッサを決定し、セッション管理テーブル３−５のエントリを更新し、装置内インタフェース処理部３−７へパケットとその転送情報を引き渡す。その処理において、図７のフローチャートに示す計算方法により、パケットヘッダの各種情報からセッション番号を計算する。図７の計算方法は、同一セッションに属するパケットを常に同一のセッション番号に対応付ける。セッション番号と送信側デバイス番号から、セッション管理テーブル３−５のエントリ番号を決定する。
【００４２】
セッション管理テーブル３−５は、エントリ番号をアドレスとする複数のセッション管理エントリから構成される。セッション管理エントリは、転送先デバイス番号、及び、エージカウンタから構成される。転送先デバイス番号には、パケットの転送先となる汎用プロセッサのデバイス番号が格納される。エージカウンタが０のとき、そのエントリは無効であることを示す。エージカウンタが０以外のとき、そのエントリは有効であることを示す。エージカウンタは、受信側セッション管理部３−４または送信側セッション管理部３−８によって最大値（全ビットを１）に設定され、エージング部３−１０によって、一定時間ごとに１ずつ減少され、０になったらそのエントリに格納されたデバイス番号が無効になる。図１１に、セッション管理テーブル３−５の内容例を示す。
【００４３】
汎用プロセッサ選択部３−６は、新しいセッションに次に割り当てるべき汎用プロセッサを選択し、そのデバイス番号を受信側セッション管理部３−４へ通知する。例えば、その時点で最も負荷の低い汎用プロセッサを選択する方式、複数の汎用プロセッサを順に選択する方式などがある。また、装置内の構成により、受信側ネットワークプロセッサまたは送信側ネットワークプロセッサと同じボード上に実装された汎用プロセッサの中から選択する方式も考えられる。
【００４４】
装置内インタフェース処理部３−７は、図８のフローチャートに従い、受信側パケット処理部３−２または受信側セッション管理部３−４からパケットとその転送情報を引き取り、転送先デバイス番号に基づき、送信側パケット処理部３−９、または、他のネットワークプロセッサの装置内インタフェース処理部３−７、または、汎用プロセッサの装置内インタフェース処理部２−４へパケットとその転送情報を引き渡す。
【００４５】
また、装置内インタフェース処理部３−７は、図９のフローチャートに従い、他のネットワークプロセッサまたは汎用プロセッサからパケットとその転送情報を引き取り、転送元デバイス番号に基づき、送信側セッション管理部３−８、または、送信側パケット処理部３−９へパケットと転送情報を引き渡す。
【００４６】
送信側セッション管理部３−８は、図６のフローチャートに従い、装置内インタフェース部３−７からパケットとその転送情報を引き取り、セッション管理テーブル３−５を更新し、パケットと送信回線番号を送信側パケット処理部３−９へ引き渡す。受信側セッション管理部３−４と同様に、図７のフローチャートの計算により、パケットヘッダ情報からセッション番号を計算し、セッション番号と受信側デバイス番号からセッション管理テーブル３−５のエントリ番号を決定する。
【００４７】
送信側パケット処理部３−９は、装置内インタフェース処理部３−７または送信側セッション管理部３−８からパケットと送信回線番号を引き取り、パケット転送情報の内容に従い必要な処理を行ない、それらを回線インタフェース処理部３−１へ引き渡す。
【００４８】
・設定内容
図１のネットワーク構成例において、汎用プロセッサＣＰＵ１〜ＣＰＵ３のプロトコル処理部２−２に設定するＩＰアドレスを図１０に示す。
【００４９】
汎用プロセッサＣＰＵ１、ＣＰＵ２、ＣＰＵ３は、各物理回線インタフェースに対して同一のサブネットに属する２種類のＩＰアドレスを割り当てる。プライマリＩＰアドレスは、データ転送装置１が要求元ホストとなるセッションにおいて使用される。セカンダリＩＰアドレスは、データ転送装置１が要求先ホストとなるセッションにおいて本装置１の代表ＩＰアドレスとして使用される。プライマリＩＰアドレスは、汎用プロセッサごとに異なる値を設定し、セカンダリＩＰアドレスは、全ての汎用プロセッサで同じ値を設定する。従って、各物理回線インタフェースには、汎用プロセッサの個数＋１個のＩＰアドレスを割り当てることになる。
【００５０】
図１のネットワーク構成例において、ネットワークプロセッサＮＰ４〜ＮＰ６のルーティングテーブル３−３に設定される内容を図１１に示す。
【００５１】
宛先ＩＰアドレスが１９２．４１．＊．＊〜１９２．６２．＊．＊のエントリは、ＩＰパケット転送のためのルーティングエントリであり、送信側デバイス番号は、ネットワークプロセッサを示す値（４、５、６）となる。これらのルーティングエントリは、汎用プロセッサＣＰＵ１、ＣＰＵ２、ＣＰＵ３のルーティングテーブル２−３に設定される内容と同一である。それ以外のエントリは、本データ転送装置１宛てのパケットを汎用プロセッサへ転送するためのルーティングエントリである。
【００５２】
送信側デバイス番号が１、２、３のエントリは、特定の汎用プロセッサへ転送することを示しており、このルーティングエントリの宛先ＩＰアドレスは、汎用プロセッサに設定したプライマリＩＰアドレスに一致する。
【００５３】
送信側デバイス番号が０のエントリは、任意の汎用プロセッサへ転送することを示しており、これらのルーティングエントリの宛先ＩＰアドレスは、汎用プロセッサに設定したセカンダリＩＰアドレスに一致する。また、これらの送信側デバイス番号が０のエントリにマッチしたパケットは、ネットワークプロセッサの受信側セッション管理部３−４及び汎用プロセッサ選択部３−６の処理によって転送先の汎用プロセッサが決定される。
【００５４】
【実施例の動作の説明】
次に本実施例の動作について詳細に説明する。以下の説明では、次のことを仮定する。
【００５５】
図７のフローチャートの中のハッシュ関数は、引数Ａ１、Ａ２、Ａ３、Ａ４の和の下位８ビットを返すものとする。セッション管理テーブル３−５のエントリ番号は１２ビット幅とし、図５、図６のフローチャートにおいて、エントリ番号の上位８ビットにセッション番号を設定し、下位４ビットに送信側デバイス番号または受信側デバイス番号を設定するものとする。ネットワークプロセッサＮＰ４、ＮＰ５、ＮＰ６の受信側パケット処理部３−２は、ここで説明する全ての受信パケットについて、汎用プロセッサによる処理が必要であると判定し、全てのパケットを受信側セッション管理部３−４へ引き渡すものとする。
【００５６】
・セッションＳ１順方向
図１２は、図１のネットワークにおいて、ホストＨ４１とホストＨ５１の間で確立されたＴＣＰセッションＳ１（セッションＳ１）、及び、ホストＨ４２とホストＨ６１の間で確立されたＴＣＰセッションＳ２（セッションＳ２）を示す。
【００５７】
最初に、セッションＳ１について、動作を説明する。セッションＳ１では、要求元ホストＨ４１、要求先ホストＨ５１の間で、要求元ＩＰアドレス１９２．４１．１．１、要求元ポート５６３２、要求先ＩＰアドレス１９２．５１．１．１、要求先ポート２５を用いてＴＣＰによるデータ転送が行なわれるものとする。
【００５８】
最初に、ホストＨ４１は、ホストＨ５１へ向けて、送信元ＩＰアドレス１９２．４１．１．１、宛先ＩＰアドレス１９２．５１．１．１、送信元ポート５６３２、宛先ポート２５を持つＩＰパケットを送信する。このパケットは、ネットワークＮ１を経由してデータ転送装置１のネットワークプロセッサＮＰ４へ配送される。
【００５９】
ネットワークプロセッサＮＰ４の回線インタフェース処理部３−１は、物理回線インタフェースＩＦ４１からこのパケットを受信し、このパケットと受信回線番号４１を受信側パケット処理部３−２へ引き渡す。
【００６０】
受信側パケット処理部３−２は、図４のフローチャートに示すように、パケットと受信回線番号４１を引き取ると、各種パケット処理を行う（Ａ１、Ａ２）。その後、受信側パケット処理部３−２は、ルーティングテーブル３−３（図１１参照）から、パケットの宛先ＩＰアドレス１９２．５１．１．１に対応する送信側デバイス番号５と送信回線番号５１を取得する（Ａ３）。受信側パケット処理部３−２は、ステップＡ３で取得したのが送信側デバイス番号５であることから、引き取ったパケットを特定のネットワークプロセッサＮＰ５に引き渡す必要があると判定する（Ａ４）。更に、ステップＡ５においては、パケットヘッダ部のオプションフィールドの内容に基づいて、汎用プロセッサによる処理が必要であるか否かを判断する。この例の場合、上述の仮定から汎用プロセッサによる処理が必要であると判定し、このパケットと受信回線番号４１、送信側デバイス番号５を受信側セッション管理部３−４へ引き渡す（Ａ５、Ａ８）。なお、汎用プロセッサによる処理が不要であると判定した場合は、ステップＡ６、Ａ７の処理を行なう。
【００６１】
受信側セッション管理部３−４は、このパケットの送信元ＩＰアドレス１９２．４１．１．１、宛先ＩＰアドレス１９２．５１．１．１、送信元ポート５６３２、宛先ポート２５から図７のフローチャートに従いセッション番号を計算する（図５のＢ１、Ｂ２）。上述の仮定により、ハッシュ関数が各引数の和の下位８ビットを返すものとすると、セッション番号０ｘ１Ｂが計算から得られる。更に、上述の仮定により、セッション管理テーブル３−５のエントリ番号の上位８ビットをセッション番号、下位４ビットを送信側デバイス番号とすると、エントリ番号０ｘ１Ｂ５が得られる（Ｂ３）。ここで、図７のフローチャートについて説明しておく。先ず、引数Ａ１〜Ａ４を次のように決定する（Ｄ１）。引数Ａ１を送信元ＩＰアドレス、宛先ＩＰアドレスの内の小さい方とし、引数Ａ２を送信元ＩＰアドレス、宛先ＩＰアドレスの内の大きい方とする。また、引数Ａ３，Ａ４を０とする。その後、パケット種別を判定し（Ｄ２、Ｄ３、…）、パケット種別に応じた引数Ａ３、Ａ４を決定する（Ｄ４、Ｄ５、…）。この例の場合、パケット種別はＴＣＰであるので、ステップＤ４の処理が行われ、送信元ポート、宛先ポートの内の小さい方が引数Ａ３とされ、大きい方が引数Ａ４とされる。そして、最後に、ハッシュ関数と引数Ａ１〜Ａ４とを用いてセッション番号を計算する（Ｄ６）。
【００６２】
再び図５に戻り、受信側セッション管理部３−４は、エントリ番号０ｘ１Ｂ５を求めると、セッション管理エントリへのアクセス権を獲得した後、セッション管理テーブル３−５の０ｘ１Ｂ５のエントリからエージカウンタを読み出す（Ｂ４、Ｂ５）。エージカウンタは初期値０であることから、本エントリは無効である（Ｂ６）。そこで、汎用プロセッサ選択部３−６を利用して転送先となる汎用プロセッサのデバイス番号を取得する。ここでは、デバイス番号１、即ち汎用プロセッサＣＰＵ１が選択されるものとする。次に、このデバイス番号１をセッション管理テーブル３−５の０ｘ１Ｂ５番目のエントリに書き込み、同時に、エージカウンタを最大値に設定し、このエントリを有効にする（Ｂ７、Ｂ９）。エージカウンタの値は、エージング部３−１０によって、一定時間ごとに１ずつ減少される。
【００６３】
その後、受信側セッション管理部３−４は、セッション管理エントリへのアクセス権を返却し、最後に、このパケットと受信回線番号４１、転送先デバイス番号１を装置内インタフェース処理部３−７へ引き渡す（Ｂ１０、Ｂ１１）。
【００６４】
装置内インタフェース処理部３−７は、パケットと受信回線番号４１、受信側デバイス番号としてこのネットワークプロセッサＮＰ４のデバイス番号４を、装置内インタフェースを介して、転送先デバイスである汎用プロセッサＣＰＵ１の装置内インタフェース処理部２−４へ引き渡す（図８のＥ１〜Ｅ３、Ｅ５）。なお、この例では、転送先デバイス番号１が汎用プロセッサを示すものであるので、ステップＥ５の処理が行なわれるが、もし、転送先デバイス番号が自ネットワークプロセッサＮＰ４を示すものである場合には、ステップＥ４の処理を行い、他のネットワークプロセッサを示すものである場合は、ステップＥ６、Ｅ７の処理を行なう。ステップＥ４では、送信側パケット処理部３−９へパケットと送信回線番号を引き渡す処理を行なう。ステップＥ６では、受信側デバイス番号を転送元デバイス番号とする処理を行い、次のステップＥ７では、転送先デバイス番号で示されるネットワークプロセッサの装置内インタフェース部３−７へ、パケット、送信回線番号、転送元デバイス番号、受信側デバイス番号を引き渡す処理を行なう。
【００６５】
汎用プロセッサＣＰＵ１の装置内インタフェース処理部２−４は、引き取ったパケットと受信側デバイス番号４、受信回線番号４１をプロトコル処理部２−２で規定されるデータ構造へ格納し、プロトコル処理部２−２へ引き渡す。
【００６６】
プロトコル処理部２−２は、このパケットに対し各種処理を行ない、ルーティングテーブル２−３より宛先ＩＰアドレス１９２．５１．１．１に対応する送信回線ＩＦ５１の識別子５１及びデバイス番号５を取得し、これらの情報を装置内インタフェース処理部２−４へ引き渡す。
【００６７】
装置内インタフェース処理部２−４は、プロトコル処理部２−２から渡されたデータ構造から、受信側デバイス番号４、送信回線番号５１を取得し、自汎用プロセッサＣＰＵ１のデバイス番号１を転送元デバイス番号とし、これらの情報とともにパケットをネットワークプロセッサＮＰ５の装置内インタフェース処理部３−７へ引き渡す。
【００６８】
ネットワークプロセッサＮＰ５の装置内インタフェース処理部３−７は、図９のフローチャートに示すように、引き取ったパケットと送信回線番号５１、受信側デバイス番号４、転送元デバイス番号１を送信側セッション管理部３−８へ引き渡す（Ｆ１〜Ｆ４）。即ち、転送元デバイス番号１が汎用プロセッサＣＰＵ１に対応し（Ｆ２）、受信側デバイス番号４が０でないので（Ｆ３）、装置内インタフェース処理部３−７は、ステップＦ４の処理を行うことになる。
【００６９】
送信側セッション管理部３−８は、図６のフローチャートに示すように、装置内インタフェース処理部３−７からパケット、受信側デバイス番号４及び転送元デバイス番号１を引き取ると、図７のフローチャートに従い、パケットの送信元ＩＰアドレス１９２．４１．１．１、宛先ＩＰアドレス１９２．５１．１．１、送信元ポート５６３２、宛先ポート２５からセッション番号０ｘ１Ｂを求める（Ｃ１、Ｃ２）。次に、セッション管理テーブル３−５のエントリ番号の上位８ビットをセッション番号、下位４ビットを受信側デバイス番号とし、エントリ番号０ｘ１Ｂ４を求める（Ｃ３）。
【００７０】
次に、送信側セッション管理部３−８は、セッション管理エントリへのアクセス権を取得し、装置内インタフェース処理部３−７から引き取った転送元デバイス番号１を、セッション管理テーブル３−５の０ｘ１Ｂ４番目のエントリの転送先デバイス番号へ書き込む（Ｃ４、Ｃ５）。同時に、同エントリのエージカウンタに最大値を設定し、このエントリを有効にする（Ｃ６）。
【００７１】
その後、送信側セッション管理部３−８は、セッション管理エントリへのアクセス権を返却し、最後に、パケットと送信回線番号５１を送信側パケット処理部３−９へ引き渡す（Ｃ７、Ｃ８）。
【００７２】
送信側パケット処理部３−９は、パケット転送に関する処理を行なった後、回線インタフェース処理部３−１へパケットと送信回線番号５１を引き渡す。回線インタフェース処理部３−１は、このパケットを物理回線インタフェースＩＦ５１へ送信する。物理回線インタフェースＩＦ５１から送信されたパケットは、ネットワークＮ３を経由して、ホストＨ５１へ配送される。
【００７３】
・セッションＳ１逆方向
次に、ホストＨ５１は、ホストＨ４１へ向けて、送信元ＩＰアドレス１９２．５１．１．１、宛先ＩＰアドレス１９２．４１．１．１、送信元ポート２５、宛先ポート５６３２を持つＩＰパケットを送信する。このパケットは、ネットワークＮ３を経由してデータ転送装置１のネットワークプロセッサＮＰ５へ配送される。
【００７４】
ネットワークプロセッサＮＰ５の回線インタフェース処理部３−１は、物理回線インタフェースＩＦ５１からこのパケットを受信し、このパケットと受信回線番号５１を受信側パケット処理部３−２へ引き渡す。
【００７５】
受信側パケット処理部３−２は、ルーティングテーブル３−３（図１１参照）から、パケットの宛先ＩＰアドレス１９２．４１．１．１に対応する送信側デバイス番号４と送信回線番号４１を取得する（図４のＡ１〜Ａ３）。受信側パケット処理部３−２は、このパケットは特定のネットワークプロセッサＮＰ４に引き渡すことが必要であり、且つ汎用プロセッサによる処理が必要であると判定し（Ａ４、Ａ５）、このパケットと受信回線番号５１、送信側デバイス番号４を受信側セッション管理部３−４へ引き渡す（Ａ８）。
【００７６】
受信側セッション管理部３−４は、このパケットの送信元ＩＰアドレス１９２．５１．１．１、宛先ＩＰアドレス１９２．４１．１．１、送信元ポート２５、宛先ポート５６３２から図７のフローチャートに従いセッション番号０ｘ１Ｂを求める（図５のＢ１、Ｂ２）。このセッション番号０ｘ１Ｂは、前述したセッションＳ１順方向時に求めたセッション番号と同一値となる。即ち、図７のステップＤ１において、送信元ＩＰアドレス、宛先ＩＰアドレスの内の小さい方、大きい方をそれぞれ引数Ａ１、Ａ２とし、ステップＤ４において送信元ポート、宛先ポートの内の小さい方、大きい方をそれぞれ引数Ａ３、Ａ４としているので、セッションＳ１順方向時とでは送信元、宛先が入れ代わったセッションＳ１逆方向時においても、同一のセッション番号０ｘ１Ｂが得られる。その後、セッション管理テーブル３−５のエントリ番号の上位８ビットをセッション番号、下位４ビットを送信側デバイス番号とし、エントリ番号０ｘ１Ｂ４が得られる（Ｂ３）。
【００７７】
次に、受信側セッション管理部３−４は、セッション管理テーブル３−５の０ｘ１Ｂ４番目のエントリを読み出す（Ｂ４、Ｂ５）。先にホストＨ４１からホストＨ５１へ転送されたパケットにより、このエントリには転送先デバイス番号１が書き込まれており、エージカウンタには０以外の値が格納されているため、この転送先デバイス番号１を使用する（Ｂ６、Ｂ８）。
【００７８】
その後、受信側セッション管理部３−４は、エージカウンタに最大値を設定し、セッション管理エントリへのアクセス権を返却する（Ｂ９、Ｂ１０）。そして、最後に受信側セッション管理部３−４は、このパケットと受信回線番号５１、転送先デバイス番号１を装置内インタフェース処理部３−７へ引き渡す（Ｂ１１）。
【００７９】
装置内インタフェース処理部３−７は、パケットと受信回線番号５１、受信側デバイス番号としてこのネットワークプロセッサＮＰ５のデバイス番号５を、装置内インタフェースを介して、転送先デバイスである汎用プロセッサＣＰＵ１の装置内インタフェース処理部２−４へ引き渡す（図８、Ｅ１〜Ｅ３、Ｅ５）。
【００８０】
汎用プロセッサＣＰＵ１の装置内インタフェース処理部２−４は、引き取ったパケットと受信側デバイス番号５、受信回線番号５１をプロトコル処理部２−２で規定されるデータ構造へ格納し、プロトコル処理部２−２へ引き渡す。
【００８１】
プロトコル処理部２−２は、このパケットに対し各種処理を行ない、ルーティングテーブル２−３より宛先ＩＰアドレス１９２．４１．１．１に対応する送信回線ＩＦ４１の識別子４１及びデバイス番号４を取得し、これらの情報を装置内インタフェース処理部２−４へ引き渡す。
【００８２】
装置内インタフェース処理部２−４は、プロトコル処理部２−２から渡されたデータ構造から、受信側デバイス番号５、送信回線番号４１を取得し、自汎用プロセッサＣＰＵ１のデバイス番号１を転送元デバイス番号とし、これらの情報とともにパケットをネットワークプロセッサＮＰ４の装置内インタフェース処理部３−７へ引き渡す。
【００８３】
ネットワークプロセッサＮＰ４の装置内インタフェース処理部３−７は、図９のフローチャートに示すように、引き取ったパケットと送信回線番号４１、受信側デバイス番号５、転送元デバイス番号１を送信側セッション管理部３−８へ引き渡す（Ｆ１〜Ｆ４）。
【００８４】
送信側セッション管理部３−８は、図６のフローチャートに示すように、パケットの送信元ＩＰアドレス１９２．５１．１．１、宛先ＩＰアドレス１９２．４１．１．１、送信元ポート２５、宛先ポート５６３２からセッション番号０ｘ１Ｂを求める（Ｃ１、Ｃ２）。次に、セッション管理テーブル３−５のエントリ番号の上位８ビットをセッション番号、下位４ビットを受信側デバイス番号とし、エントリ番号０ｘ１Ｂ５を求める（Ｃ３）。
【００８５】
次に、送信側セッション管理部３−８は、装置内インタフェース処理部３−７から引き取った転送元デバイス番号１を、セッション管理テーブル３−５の０ｘ１Ｂ５番目のエントリの転送先デバイス番号へ書き込み（Ｃ４、Ｃ５）、同時に、同エントリのエージカウンタに最大値を設定する（Ｃ６）。そして、最後に、パケットと送信回線番号４１を送信側パケット処理部３−９へ引き渡す（Ｃ７、Ｃ８）。
【００８６】
送信側パケット処理部３−９は、パケット転送に関する処理を行なった後、回線インタフェース処理部３−１へパケットと送信回線番号４１を引き渡す。回線インタフェース処理部３−１は、このパケットを物理回線インタフェースＩＦ４１へ送信する。物理回線インタフェースＩＦ４１から送信されたパケットは、ネットワークＮ１を経由して、ホストＨ４１へ配送される。
【００８７】
この時点で、ネットワークプロセッサＮＰ４のセッション管理テーブルの０ｘ１Ｂ５番目のエントリと、ネットワークプロセッサＮＰ５のセッション管理テーブルの０ｘ１Ｂ４番目のエントリには、共に、転送先デバイス番号１が書き込まれている。これらのエントリが有効の間（即ちエージカウンタが０以外の間）、ホストＨ４１とホストＨ５１の間で転送されるセッションＳ１に属するパケットは全て、汎用プロセッサＣＰＵ１を経由する。なお、本セッションのパケットの転送が一定時間停止すると、エージング部３−１０によってセッション管理テーブル３−５のエージングカウンタが０にされ、エントリが無効になる。この場合、再び同一セッションのパケットが転送されても、受信側セッション管理部３−４によって新たに転送先の汎用プロセッサが選択される。
【００８８】
次に、セッションＳ２について、本発明の動作を説明する。
【００８９】
・セッションＳ２順方向
セッションＳ２では、要求元ホストＨ４２と要求先ホストＨ６１の間で、要求元ＩＰアドレス１９２．４２．１．１、要求元ポート１７５３、要求先ＩＰアドレス１９２．６１．１．１、要求先ポート１１０を用いてＴＣＰによるデータ転送が行なわれるものとする。
【００９０】
最初に、ホストＨ４２は、ホストＨ６１へ向けて、送信元ＩＰアドレス１９２．４２．１．１、宛先ＩＰアドレス１９２．６１．１．１、送信元ポート１７５３、宛先ポート１１０を持つＩＰパケットを送信する。このパケットは、ネットワークＮ２を経由してデータ転送装置１のネットワークプロセッサＮＰ４へ配送される。
【００９１】
ネットワークプロセッサＮＰ４の回線インタフェース処理部３−１は、物理回線インタフェースＩＦ４２からこのパケットを受信し、このパケットと受信回線番号４２を受信側パケット処理部３−２へ引き渡す。
【００９２】
受信側パケット処理部３−２は、図４のフローチャートに示すように、ルーティングテーブル３−３（図１１参照）から、パケットの宛先ＩＰアドレス１９２．６１．１．１に対応する送信側デバイス番号６と送信回線番号６１を取得する。（Ａ１〜Ａ３）。
受信側パケット処理部３−２は、このパケットは特定のネットワークプロセッサＮＰ６に引き渡すことが必要であり、且つ汎用プロセッサによる処理が必要であると判定し（Ａ４、Ａ５）、このパケットと受信回線番号４２、送信側デバイス番号６を受信側セッション管理部３−４へ引き渡す（Ａ８）。
【００９３】
受信側セッション管理部３−４は、図５のフローチャートに示すように、このパケットの送信元ＩＰアドレス１９２．４２．１．１、宛先ＩＰアドレス１９２．６１．１．１、送信元ポート１７５３、宛先ポート１１０からセッション番号０ｘ４９を求める（Ｂ１、Ｂ２）。次に、セッション管理テーブル３−５のエントリ番号の上位８ビットをセッション番号、下位４ビットを送信側デバイス番号とし、エントリ番号０ｘ４９６を求める（Ｂ３）。
【００９４】
次に、受信側セッション管理部３−４は、セッション管理テーブル３−５の０ｘ４９６番目のエントリを読み出す（Ｂ４、Ｂ５）。エージカウンタは初期値０であることから、本エントリは無効である（Ｂ６）。そこで、汎用プロセッサ選択部３−６から転送先となる汎用プロセッサのデバイス番号を取得する。ここでは、デバイス番号３、即ち汎用プロセッサＣＰＵ３が選択されるものとする。次に、このデバイス番号３をセッション管理テーブル３−６の０ｘ４９６番目のエントリに書き込み、同時に、エージカウンタを最大値に設定し、このエントリを有効にする（Ｂ７、Ｂ９）。その後、受信側セッション管理部３−４は、セッション管理エントリへのアクセス権を返却し、最後に、このパケットと受信回線番号４２、転送先デバイス番号３を装置内インタフェース処理部３−７へ引き渡す（Ｂ１０、Ｂ１１）。
【００９５】
装置内インタフェース処理部３−７は、図８のフローチャートに示すように、パケットと受信回線番号４２、受信側デバイス番号として自ネットワークプロセッサＮＰ４のデバイス番号４を、装置内インタフェースを介して、転送先デバイスである汎用プロセッサＣＰＵ３の装置内インタフェース処理部２−４へ引き渡す（Ｅ１〜Ｅ３、Ｅ５）。
【００９６】
汎用プロセッサＣＰＵ３の装置内インタフェース処理部２−４は、引き取ったパケットと受信側デバイス番号４、受信回線番号４２をプロトコル処理部２−２で規定されるデータ構造へ格納し、プロトコル処理部２−２へ引き渡す。
【００９７】
プロトコル処理部２−２は、このパケットに対し各種処理を行ない、ルーティングテーブル２−３より宛先ＩＰアドレス１９２．６１．１．１に対応する送信回線ＩＦ６１の識別子６１及びデバイス番号６を取得し、これらの情報を装置内インタフェース処理部２−４へ引き渡す。
【００９８】
装置内インタフェース処理部２−４は、プロトコル処理部２−２から渡されたデータ構造から、受信側デバイス番号４、送信回線番号６１を取得し、自汎用プロセッサＣＰＵ３のデバイス番号３を転送元デバイス番号とし、これらの情報とともにパケットをネットワークプロセッサＮＰ６の装置内インタフェース処理部３−７へ引き渡す。
【００９９】
ネットワークプロセッサＮＰ６の装置内インタフェース処理部３−７は、図９のフローチャートに示すように、引き取ったパケットと送信回線番号６１、受信側デバイス番号４、転送元デバイス番号３を送信側セッション管理部３−８へ引き渡す（Ｆ１〜Ｆ４）。
【０１００】
送信側セッション管理部３−８は、図６のフローチャートに示すように、図７のフローチャートに従い、パケットの送信元ＩＰアドレス１９２．４２．１．１、宛先ＩＰアドレス１９２．６１．１．１、送信元ポート１７５３、宛先ポート１１０からセッション番号０ｘ４９を求める（Ｃ１、Ｃ２）。次に、セッション管理テーブル３−５のエントリ番号の上位８ビットをセッション番号、下位４ビットを受信側デバイス番号とし、エントリ番号０ｘ４９４を求める（Ｃ３）。
【０１０１】
次に、送信側セッション管理部３−８は、装置内インタフェース処理部３−７から引き取った転送元デバイス番号３を、セッション管理テーブル３−５の０ｘ４９４番目のエントリの転送先デバイス番号へ書き込む（Ｃ４、Ｃ５）。同時に、同エントリのエージカウンタに最大値を設定し、このエントリを有効にする（Ｃ６）。そして、最後に、パケットと送信回線番号６１を送信側パケット処理部３−９へ引き渡す（Ｃ７、Ｃ８）。
【０１０２】
送信側パケット処理部３−９は、パケット転送に関する処理を行なった後、回線インタフェース処理部３−１へパケットと送信回線番号６１を引き渡す。回線インタフェース処理部３−１は、このパケットを物理回線インタフェースＩＦ６１へ送信する。物理回線インタフェースＩＦ６１から送信されたパケットは、ネットワークＮ５を経由して、ホストＨ６１へ配送される。
【０１０３】
・セッションＳ２逆方向
次に、ホストＨ６１は、ホストＨ４２へ向けて、送信元ＩＰアドレス１９２．６１．１．１、宛先ＩＰアドレス１９２．４２．１．１、送信元ポート１１０、宛先ポート１７５３を持つＩＰパケットを送信する。このパケットは、ネットワークＮ５を経由してデータ転送装置１のネットワークプロセッサＮＰ６へ配送される。
【０１０４】
ネットワークプロセッサＮＰ６の回線インタフェース処理部３−１は、物理回線インタフェースＩＦ６１からこのパケットを受信し、このパケットと受信回線番号６１を受信側パケット処理部３−２へ引き渡す。
【０１０５】
受信側パケット処理部３−２は、図４のフローチャートに示すように、ルーティングテーブル３−３（図１１参照）から、パケットの宛先ＩＰアドレス１９２．４２．１．１に対応する送信側デバイス番号４と送信回線番号４２を取得する（Ａ１〜Ａ３）。受信側パケット処理部３−２は、このパケットは特定のネットワークプロセッサＮＰ４に受け渡す必要があり、且つ汎用プロセッサによる処理が必要であると判定し（Ａ４、Ａ５）、このパケットと受信回線番号６１、送信側デバイス番号４を受信側セッション管理部３−４へ引き渡す（Ａ８）。
【０１０６】
受信側セッション管理部３−４は、図５のフローチャートに示すように、このパケットの送信元ＩＰアドレス１９２．６１．１．１、宛先ＩＰアドレス１９２．４２．１．１、送信元ポート１１０、宛先ポート１７５３から図７のフローチャートに従いセッション番号０ｘ４９を求める（Ｂ１、Ｂ２）。セッション管理テーブル３−５のエントリ番号の上位８ビットをセッション番号、下位４ビットを送信側デバイス番号とし、エントリ番号０ｘ４９４が得られる（Ｂ３）。
【０１０７】
次に、受信側セッション管理部３−４は、セッション管理テーブル３−５の０ｘ４９４番目のエントリを読み出す（Ｂ４、Ｂ５）。先にホストＨ４２からホストＨ６１へ転送されたパケットにより、このエントリには転送先デバイス番号３が書き込まれており、エージカウンタは０以外の値が格納されているため、この転送先デバイス番号３を取得する（Ｂ６、Ｂ８）。その後、セッション管理エントリへのアクセス権を返却し、最後に、このパケットと受信回線番号６１、転送先デバイス番号３を装置内インタフェース処理部３−７へ引き渡す。
【０１０８】
装置内インタフェース処理部３−７は、パケットと受信回線番号６１、受信側デバイス番号としてこのネットワークプロセッサＮＰ６のデバイス番号６を、装置内インタフェースを介して、転送先デバイスである汎用プロセッサＣＰＵ３の装置内インタフェース処理部２−４へ引き渡す（図８のＥ１〜Ｅ３、Ｅ５）。
【０１０９】
汎用プロセッサＣＰＵ３の装置内インタフェース処理部２−４は、引き取ったパケットと受信側デバイス番号６、受信回線番号６１をプロトコル処理部２−２で規定されるデータ構造へ格納し、プロトコル処理部２−２へ引き渡す。
【０１１０】
プロトコル処理部２−２は、このパケットに対し各種処理を行ない、ルーティングテーブル２−３より宛先ＩＰアドレス１９２．４２．１．１に対応する送信回線ＩＦ４２の識別子４２及びデバイス番号４を取得し、これらの情報を装置内インタフェース処理部２−４へ引き渡す。
【０１１１】
装置内インタフェース処理部２−４は、プロトコル処理部２−２から渡されたデータ構造から、受信側デバイス番号６、送信回線番号４２を取得し、自汎用プロセッサＣＰＵ３のデバイス番号３を転送元デバイス番号とし、これらの情報とともにパケットをネットワークプロセッサＮＰ４の装置内インタフェース処理部３−７へ引き渡す。
【０１１２】
ネットワークプロセッサＮＰ４の装置内インタフェース処理部３−７は、引き取ったパケットと送信回線番号４２、受信側デバイス番号６、転送元デバイス番号３を送信側セッション管理部３−８へ引き渡す（図９のＦ１〜Ｆ４）。
【０１１３】
送信側セッション管理部３−８は、図７のフローチャートに従い、パケットの送信元ＩＰアドレス１９２．６１．１．１、宛先ＩＰアドレス１９２．４２．１．１、送信元ポート１１０、宛先ポート１７５３からセッション番号０ｘ４９を求める（図６のＣ１、Ｃ２）。次に、セッション管理テーブル３−５のエントリ番号の上位８ビットをセッション番号、下位４ビットを受信側デバイス番号とし、エントリ番号０ｘ４９６を求める（Ｃ３）。
【０１１４】
次に、送信側セッション管理部３−８は、装置内インタフェース処理部３−７から引き取った転送元デバイス番号３を、セッション管理テーブル３−５の０ｘ４９６番目のエントリの転送先デバイス番号へ書き込み、同時に、同エントリのエージカウンタに最大値を設定する（Ｃ４〜Ｃ６）。そして、最後に、送信側セッション管理部３−８は、パケットと送信回線番号４２を送信側パケット処理部３−９へ引き渡す（Ｃ７、Ｃ８）。
【０１１５】
送信側パケット処理部３−９は、パケット転送に関する処理を行なった後、回線インタフェース処理部３−１へパケットと送信回線番号４２を引き渡す。回線インタフェース処理部３−１は、このパケットを物理回線インタフェースＩＦ４２へ送信する。物理回線インタフェースＩＦ４２から送信されたパケットは、ネットワークＮ２を経由して、ホストＨ４２へ配送される。
【０１１６】
この時点で、ネットワークプロセッサＮＰ４のセッション管理テーブル３−５の０ｘ４９６番目のエントリと、ネットワークプロセッサＮＰ６のセッション管理テーブル３−５の０ｘ４９４番目のエントリには、共に、転送先デバイス番号３が書き込まれている。これらのエントリが有効の間（即ちエージカウンタが０以外の間）、ホストＨ４２とホストＨ６１の間で転送されるセッションＳ２に属するパケットは全て、汎用プロセッサＣＰＵ３を経由する。なお、本セッションのパケットの転送が一定時間停止すると、エージング部３−１０によってセッション管理テーブルのエージングカウンタが０にされ、エントリが無効になる。この場合、再び同一セッションのパケットが転送されても、受信側セッション管理部３−４によって新たに転送先の汎用プロセッサが選択される。
【０１１７】
・セッションＳ３順方向
図１３は、図１のネットワークにおいて、ホストＨ５２と汎用プロセッサＣＰＵ２の間で確立されたＴＣＰセッションＳ３、及び、汎用プロセッサＣＰＵ２とホストＨ６２の間で確立されたＴＣＰセッションＳ４を示す。これらのセッションは、データ転送装置１をアプリケーションゲートウェイとして使用し、ホストＨ５２とホストＨ６２の間でデータ転送を行なった場合を想定している。
【０１１８】
最初に、セッションＳ３について、動作を説明する。
【０１１９】
セッションＳ３では、要求元ホストＨ５２とデータ転送装置１の間で、要求元ＩＰアドレス１９２．５２．１．１、要求元ポート１９５９、要求先ＩＰアドレス１９２．５２．０．４、要求先ポート８０８０を用いてＴＣＰによるデータ転送が行なわれるものとする。
【０１２０】
最初に、ホストＨ５２は、データ転送装置１へ向けて、送信元ＩＰアドレス１９２．５２．１．１、宛先ＩＰアドレス１９２．５２．０．４、送信元ポート１９５９、宛先ポート８０８０を持つＩＰパケットを送信する。このパケットは、ネットワークＮ４を経由してデータ転送装置１のネットワークプロセッサＮＰ５へ配送される。なお、上記宛先ＩＰアドレス１９２．５２．０．４は、セカンダリＩＰアドレスである。
【０１２１】
ネットワークプロセッサＮＰ５の回線インタフェース処理部３−１は、物理回線インタフェースＩＦ５２からこのパケットを受信し、このパケットと受信回線番号５２を受信側パケット処理部３−２へ引き渡す。
【０１２２】
受信側パケット処理部３−２は、図４のフローチャートに示すように、ルーティングテーブル３−３（図１１参照）から、パケットの宛先ＩＰアドレス１９２．５２．０．４に対応する送信側デバイス番号０を取得する（Ａ１〜Ａ３）。送信側デバイス番号０は、任意の汎用プロセッサ宛てのパケットであることをから、このパケットと、受信回線番号５２及び送信側デバイス番号０とを受信側セッション管理部３−４へ引き渡す（Ａ４、Ａ８）。
【０１２３】
受信側セッション管理部３−４は、このパケットの送信元ＩＰアドレス１９２．５２．１．１、宛先ＩＰアドレス１９２．５２．０．４、送信元ポート１９５９、宛先ポート８０８０から図７のフローチャートに従いセッション番号０ｘ３Ｃを求める（図５のＢ１、Ｂ２）。次に、セッション管理テーブル３−５のエントリ番号の上位８ビットをセッション番号、下位４ビットを送信側デバイス番号とし、エントリ番号０ｘ３Ｃ０を求める（Ｂ２）。
【０１２４】
次に、受信側セッション管理部３−４は、セッション管理テーブル３−５の０ｘ３Ｃ０番目のエントリを読み出す（Ｂ４、Ｂ５）。エージカウンタは初期値０であることから、本エントリは無効である。そこで、汎用プロセッサ選択部３−６から転送先となる汎用プロセッサのデバイス番号を取得する。ここでは、デバイス番号２、即ち汎用プロセッサＣＰＵ２が選択されるものとする。次に、このデバイス番号２をセッション管理テーブル３−６の０ｘ３Ｃ０番目のエントリに書き込み、同時に、エージカウンタを最大値に設定し、このエントリを有効にする（Ｂ６〜Ｂ９）。そして、最後に、受信側セッション管理部３−４は、このパケットと受信回線番号５２、転送先デバイス番号２を装置内インタフェース処理部３−７へ引き渡す（Ｂ１０、Ｂ１１）。
【０１２５】
装置内インタフェース処理部３−７は、図８のフローチャートに示すように、パケットと受信回線番号５２、受信側デバイス番号としてこのネットワークプロセッサＮＰ５のデバイス番号５を、装置内インタフェースを介して、転送先デバイスである汎用プロセッサＣＰＵ２の装置内インタフェース処理部２−４へ引き渡す（Ｅ１〜Ｅ３、Ｅ５）。
【０１２６】
汎用プロセッサＣＰＵ２の装置内インタフェース処理部２−４は、引き取ったパケットと受信側デバイス番号５、受信回線番号５２をプロトコル処理部２−２で規定されるデータ構造へ格納し、プロトコル処理部２−２へ引き渡す。
【０１２７】
プロトコル処理部２−２は、このパケットの宛先ＩＰアドレス１９２．５２．０．４がこの汎用プロセッサＣＰＵ２に設定された物理回線インタフェースＩＦ５２のセカンダリＩＰアドレスに一致することから、ＴＣＰを終端し、宛先ポート番号８０８０に対応するアプリケーション処理部（例えば、アプリケーション処理部２−１−１）へデータを引き渡す。
【０１２８】
・セッションＳ３逆方向
次に、汎用プロセッサＣＰＵ２のアプリケーション処理部２−１−１は、セッションＳ１順方向で、ホストＨ５２から送られてきたパケットに対する応答として、送信元ＩＰアドレス１９２．５２．０．４、宛先ＩＰアドレス１９２．５２．１．１、送信元ポート８０８０、宛先ポート１９５９を用いてホストＨ５２へ向けてデータを送信する。
【０１２９】
プロトコル処理部２−２は、アプリケーション処理部２−１−１から受け渡されたデータから、送信元ＩＰアドレス１９２．５２．０．４、宛先ＩＰアドレス１９２．５２．１．１、送信元ポート８０８０、宛先ポート１９５９を持つＴＣＰ／ＩＰパケットを生成する。
【０１３０】
プロトコル処理部２−２は、このパケットに対し各種処理を行ない、ルーティングテーブル２−３より宛先ＩＰアドレス１９２．５２．１．１に対応する送信回線ＩＦ５２の識別子５２及びデバイス番号５を取得し、これらの情報を装置内インタフェース処理部２−４へ引き渡す。
【０１３１】
装置内インタフェース処理部２−４は、プロトコル処理部２−２から渡されたデータ構造から、送信回線番号５２を取得し、受信側デバイス番号を０とし、この汎用プロセッサＣＰＵ２のデバイス番号２を転送元デバイス番号とし、これらの情報とともにパケットをネットワークプロセッサＮＰ５の装置内インタフェース処理部３−７へ引き渡す。
【０１３２】
ネットワークプロセッサＮＰ５の装置内インタフェース処理部３−７は、受信側デバイス番号が０であることから、引き取ったパケットと送信回線番号５２を送信側パケット処理部３−９へ引き渡す（図９のＦ１〜Ｆ３、Ｆ５）。
【０１３３】
送信側パケット処理部３−９は、パケット転送に関する処理を行なった後、回線インタフェース処理部３−１へパケットと送信回線番号５２を引き渡す。回線インタフェース処理部３−１は、このパケットを物理回線インタフェースＩＦ５２へ送信する。物理回線インタフェースＩＦ５２から送信されたパケットは、ネットワークＮ４を経由して、ホストＨ５２へ配送される。
【０１３４】
この時点で、ネットワークプロセッサＮＰ５のセッション管理テーブル３−５の０ｘ３Ｃ０番目のエントリには、転送先デバイス番号２が書き込まれている。このエントリが有効の間（即ちエージカウンタが０以外の間）、ホストＨ５２から送信されるセッションＳ３に属するパケットは全て、汎用プロセッサＣＰＵ２へ配送される。
【０１３５】
・セッションＳ４順方向
次に、セッションＳ４について、動作を説明する。
【０１３６】
汎用プロセッサＣＰＵ２のアプリケーション処理部（例えば、アプリケーション処理部２−１−１）は、送信元ＩＰアドレス１９２．６２．０．２、宛先ＩＰアドレス１９２．６２．１．１、送信元ポート６７０９、宛先ポート８０を用いてホストＨ６２へ向けてデータを送信する。
ここで、送信元ＩＰアドレス１９２．６２．０．２は、この汎用プロセッサＣＰＵ２において物理回線インタフェースＩＦ６２に設定されたプライマリＩＰアドレスである。
【０１３７】
プロトコル処理部２−２は、アプリケーション処理部２−１−１から受け渡されたデータから、送信元ＩＰアドレス１９２．６２．０．２、宛先ＩＰアドレス１９２．６２．１．１、送信元ポート６７０９、宛先ポート８０を持つＴＣＰ／ＩＰパケットを生成する。
【０１３８】
プロトコル処理部２−２は、このパケットに対し各種処理を行ない、ルーティングテーブル２−３より宛先ＩＰアドレス１９２．６２．１．１に対応する送信回線ＩＦ６２の識別子６２及びデバイス番号６を取得し、これらの情報を装置内インタフェース処理部２−４へ引き渡す。
【０１３９】
装置内インタフェース処理部２−４は、プロトコル処理部２−２から渡されたデータ構造から、送信回線番号６２を取得し、受信側デバイス番号を０とし、この汎用プロセッサＣＰＵ２のデバイス番号２を転送元デバイス番号とし、これらの情報とともにパケットをネットワークプロセッサＮＰ６の装置内インタフェース処理部３−７へ引き渡す。
【０１４０】
ネットワークプロセッサＮＰ６の装置内インタフェース処理部３−７は、受信側デバイス番号が０であることから、引き取ったパケットと送信回線番号６２を送信側パケット処理部３−９へ引き渡す（図９のＦ１〜Ｆ３、Ｆ５）。
【０１４１】
送信側パケット処理部３−９は、パケット転送に関する処理を行なった後、回線インタフェース処理部３−１へパケットと送信回線番号６２を引き渡す。回線インタフェース処理部３−１は、このパケットを物理回線インタフェースＩＦ６２へ送信する。物理回線インタフェースＩＦ６２から送信されたパケットは、ネットワークＮ６を経由して、ホストＨ６２へ配送される。
【０１４２】
・セッションＳ４逆方向
次に、ホストＨ６２は、セッションＳ４順方向で、データ転送装置１から送られてきたパケットに対する応答として、データ転送装置１へ向けて、送信元ＩＰアドレス１９２．６２．１．１、宛先ＩＰアドレス１９２．６２．０．２、送信元ポート８０、宛先ポート６７０９を持つＩＰパケットを送信する。このパケットは、ネットワークＮ６を経由してデータ転送装置１のネットワークプロセッサＮＰ６へ配送される。
【０１４３】
ネットワークプロセッサＮＰ６の回線インタフェース処理部３−１は、物理回線インタフェースＩＦ６２からこのパケットを受信し、このパケットと受信回線番号６２を受信側パケット処理部３−２へ引き渡す。
【０１４４】
受信側パケット処理部３−２は、ルーティングテーブル３−３（図１１参照）から、パケットの宛先ＩＰアドレス１９２．６２．０．２に対応する送信側デバイス番号２を取得する（図４のＡ１〜Ａ３）。これは、特定の汎用プロセッサＣＰＵ２へ転送するパケットであることから、転送先デバイス番号に送信側デバイス番号２を設定し、パケットと受信回線番号６２、転送先デバイス番号２を装置内インタフェース処理部３−７へ引き渡す（Ａ４、Ａ６、Ａ７）。
【０１４５】
装置内インタフェース処理部３−７は、パケットと受信回線番号６２、受信側デバイス番号として自ネットワークプロセッサＮＰ６のデバイス番号６を、装置内インタフェースを介して、転送先デバイスである汎用プロセッサＣＰＵ２の装置内インタフェース処理部２−４へ引き渡す（図８、Ｅ１〜Ｅ３、Ｅ５）。
【０１４６】
汎用プロセッサＣＰＵ２の装置内インタフェース処理部２−４は、引き取ったパケットと受信側デバイス番号６、受信回線番号６２をプロトコル処理部２−２で規定されるデータ構造へ格納し、プロトコル処理部２−２へ引き渡す。
【０１４７】
プロトコル処理部２−２は、このパケットの宛先ＩＰアドレス１９２．６２．０．２がこの汎用プロセッサＣＰＵ２に設定された物理回線インタフェースＩＦ６２のプライマリＩＰアドレスに一致することから、ＴＣＰを終端し、宛先ポート番号６７０９対応するアプリケーション処理部へデータを引き渡す。
【０１４８】
セッションＳ４では、セッション管理テーブル３−５を使用しないが、ＩＰアドレスが特定の汎用プロセッサＣＰＵ２を示すことから、ホストＨ６２から送信される本セッションに属するパケットは全て、汎用プロセッサＣＰＵ２へ配送される。
【０１４９】
以上で説明したセッションＳ１、Ｓ２、Ｓ３、Ｓ４が全てが使用されているとき、ネットワークプロセッサＮＰ４、ＮＰ５、ＮＰ６におけるセッション管理テーブル３−３の内容を図１４に示す。但し、エージカウンタの値は常時変動するため、この限りではない。
【０１５０】
なお、上述した実施例においては、セッションを特定するセッション特定情報として、パケットの送信元ＩＰアドレス、宛先ＩＰアドレス、送信元ポート、宛先ポートとハッシュ関数とから求まるセッション番号（ハッシュ値）に、上記パケットの送信側あるいは受信側ネットワークプロセッサのデバイス番号を付加することにより得られるエントリ番号を使用するようにしたが、これに限られるものではない。
【０１５１】
また、上述した実施例では、ネットワークプロセッサの台数を複数台としたが、１台であっても良い。なお、ネットワークプロセッサの台数を１台とした場合には、受信側セッション管理部３−４が行なう処理、送信側セッション管理部３−８が行なう処理を次のように変更しても良い。
【０１５２】
（受信側セッション管理部３−４側の変更点）
・図５のステップＢ３において、ステップＢ２で計算したセッション番号をそのままエントリ番号とする。
【０１５３】
（送信側セッション管理部３−８側の変更点）
・図６のステップＣ３において、ステップＣ２で計算したセッション番号をそのままエントリ番号とする。
・図６のステップＣ５の処理を削除する。
【０１５４】
【発明の効果】
第１の効果は、同じセッションに属するパケットを同じ汎用プロセッサで処理させるので、パケットの追い越しを防止することが可能になるという点である。
【０１５５】
第２の効果は、セッション単位のフィルタリングにおいて、同じセッションに属するパケットを常に同じ汎用プロセッサで処理させるので、フィルタリングルールの動的な変更を行なうための状態管理を正しく機能させることが可能になるという点である。例えば、或るセッションに属する第１番目のパケット（開始フラグを含むパケット）が第１の汎用プロセッサに引き渡され、上記第１番目のパケットに対する応答パケットが第２の汎用プロセッサに引き渡され、第２の汎用プロセッサにおいて第２番目のパケットを破棄してしまうという事態の発生を防ぐことができる。
【０１５６】
第３の効果は、アプリケーションゲートウェイにおいて、本発明のデータ転送装置が終端する同じセッションに属するパケットを常に同じ汎用プロセッサで処理させるので、セッションを正しく機能させることが可能になるという点である。
【０１５７】
第４の効果は、パケットの送信元ＩＰアドレス、宛先ＩＰアドレス、送信元ポート、宛先ポートとハッシュ関数とから求まるセッション番号（ハッシュ値）に、上記パケットの送信側あるいは受信側ネットワークプロセッサの識別子を付加することにより得られるエントリ番号を、上記パケットが属するセッション用のセッション番号としているので、エントリ管理テーブルのエントリ数を少なくすることができ、且つ、異なるセッションに同一エントリ番号が付与される危険性を極めて少なくできるという点である。
【図面の簡単な説明】
【図１】本発明の実施例のブロック図である。
【図２】汎用プロセッサＣＰＵ１〜ＣＰＵ３の構成例を示すブロック図である。
【図３】ネットワークプロセッサＮＰ４〜ＮＰ６の構成例を示すブロック図である。
【図４】受信側パケット処理部３−２の処理例を示すフローチャートである。
【図５】受信側セッション管理部３−４の処理例を示すフローチャートである。
【図６】送信側セッション管理部３−８の処理例を示すフローチャートである。
【図７】セッション番号の計算方法の一例を示すフローチャートである。
【図８】受信側パケット処理部３−２、受信側セッション管理部３−４からパケットが渡されたときの装置内インタフェース処理部３−７の処理例を示すフローチャートである。
【図９】汎用プロセッサＣＰＵ１〜ＣＰＵ３からパケットが渡されたときの装置内インタフェース処理部３−７の処理例を示すフローチャートである。
【図１０】汎用プロセッサＣＰＵ１〜ＣＰＵ３におけるＩＰアドレスの設定内容の一例を示す図である。
【図１１】ネットワークプロセッサＮＰ４〜ＮＰ６内のルーティングテーブル３−３の内容例を示す図である。
【図１２】動作を説明するために、セッションの具体例を挙げた図である。
【図１３】動作を説明するために、セッションの他の具体例を挙げた図である。
【図１４】ネットワークプロセッサＮＰ４〜ＮＰ６内のセッション管理テーブル３−５の内容例を示す図である。
【符号の説明】
１…データ転送装置
ＣＰＵ１〜ＣＰＵ３…汎用プロセッサ
２−１−１〜２−１−３…アプリケーション処理部
２−２…プロトコル処理部
２−３…ルーティングテーブル
２−４…装置内インタフェース処理部
ＮＰ４〜ＮＰ６…ネットワークプロセッサ
３−１…回線インタフェース処理部
３−２…受信側パケット処理部
３−３…ルーティングテーブル
３−４…受信側セッション管理部
３−５…セッション管理テーブル
３−６…汎用プロセッサ選択部
３−７…装置内インタフェース処理部
３−８…送信側セッション管理部
３−９…送信側パケット処理部
Ｎ１〜Ｎ６…ネットワーク
Ｈ４１〜Ｈ６２…ホストコンピュータ
ＩＦ４１〜ＩＦ６２…物理回線インタフェース
【図１】
2004350188.tif 000003
【図２】
2004350188.tif 000004
【図３】
2004350188.tif 000005
【図４】
2004350188.tif 000006
【図５】
2004350188.tif 000007
【図６】
2004350188.tif 000008
【図７】
2004350188.tif 000009
【図８】
2004350188.tif 000010
【図９】
2004350188.tif 000011
【図１０】
2004350188.tif 000012
【図１１】
2004350188.tif 000013
【図１２】
2004350188.tif 000014
【図１３】
2004350188.tif 000015
【図１４】
2004350188.tif 000016