(57)【要約】【課題】同一オリジナルパケットのフラグメントパケットを、選択された一つのパケット処理装置に迅速に転送する。【解決手段】通信装置は、複数パケット処理装置を含む処理装置冗長構成と、複数パケット受信装置を含む受信装置冗長構成と、を含む。第１オリジナルパケットから分割されたフラグメントパケットを、処理装置冗長構成に最初に転送した第１パケット受信装置は、転送先管理情報に、第１オリジナルパケットと第１転送先処理装置との対応関係を追加する。第１オリジナルパケットに属する他のフラグメントパケットを受信したパケット受信装置は、転送先管理情報が示す第１転送先処理装置に他のフラグメントパケットを転送する。転送先処理装置は、受信した第１オリジナルパケットのフラグメントパケットから、第１オリジナルパケットをリアセンブルする。【選択図】図１
2015226200.tif 000002
【特許請求の範囲】
【請求項１】
複数パケット処理装置を含む処理装置冗長構成と、
複数パケット受信装置を含み、振り分けポリシに基づいて前記複数パケット処理装置から選択した処理装置に、外部ネットワークから受信したパケットを転送する、受信装置冗長構成と、
前記受信装置冗長構成から前記処理装置冗長構成へ転送されたフラグメントパケットが属するオリジナルパケットと、転送先処理装置と、の対応関係を管理する転送先管理情報と、を含み、
第１オリジナルパケットから分割されたフラグメントパケットを、前記処理装置冗長構成に最初に転送した第１パケット受信装置は、前記転送先管理情報に、前記第１オリジナルパケットと第１転送先処理装置との対応関係を追加し、
前記第１オリジナルパケットに属する他のフラグメントパケットを受信したパケット受信装置は、前記転送先管理情報が示す前記第１転送先処理装置に前記他のフラグメントパケットを転送し、
前記転送先処理装置は、受信した前記第１オリジナルパケットのフラグメントパケットから、前記第１オリジナルパケットをリアセンブルする、通信装置。
【請求項２】
請求項１に記載の通信装置であって、
前記複数パケット受信装置と通信する転送先管理装置をさらに含み、
前記転送先管理情報は、前記転送先管理装置が保持する第１転送先情報を含み、
前記第１パケット受信装置は、前記第１オリジナルパケットと前記第１転送先処理装置との対応関係を示すエントリを、前記転送先管理情報に追加し、
前記他のフラグメントパケットを受信したパケット受信装置において、少なくとも前記第１パケット受信装置と異なるパケット受信装置は、前記第１転送先情報から前記第１転送先処理装置の情報を取得する、通信装置。
【請求項３】
請求項２に記載の通信装置であって、
前記転送先管理情報は、前記複数パケット受信装置の各パケット受信装置が保持する第２転送先情報を含み、
前記各パケット受信装置の第２転送先情報は、前記各パケット受信装置が転送したフラグメントパケットが属するオリジナルパケットと転送先処理装置との対応関係を管理し、
前記各パケット受信装置は、前記各パケット受信装置が保持する第２転送先情報が受信したフラグメントパケットの転送先パケット処理装置をさない場合に、前記転送先管理装置に当該受信したフラグメントパケットの転送先処理装置を問い合わせる、通信装置。
【請求項４】
請求項１に記載の通信装置であって、
前記第１オリジナルパケットから分割されたフラグメントパケットのそれぞれは、順序を示す情報をヘッダ内に含み、
前記受信装置冗長構成は、予め定められたＳ番目のフラグメントパケットを前記処理装置冗長構成に転送した後に、前記他のフラグメントパケットを転送し（Ｓは自然数）、
前記受信装置冗長構成は、前記振り分け先ポリシに従って、前記Ｓ番目のフラグメントパケットのヘッダ内の情報に基づき前記第１転送先処理装置を選択し、
前記複数パケット受信装置のそれぞれは、前記Ｓ番目のフラグメントパケットが前記処理装置冗長構成に転送される前に他のフラグメントパケットを受信すると、前記Ｓ番目のフラグメントパケットが転送されるまで当該受信した他のパケットを保持する、通信装置。
【請求項５】
請求項１に記載の通信装置であって、
オリジナルパケットは、ＩＰヘッダとＴＣＰ／ＵＤＰヘッダとを含み、
前記オリジナルパケットから分割された１番目のフラグメントパケットはＩＰヘッドとＴＣＰ／ＵＤＰヘッダとを含み、
前記オリジナルパケットから分割された２番目以降のフラグメントパケットは、ＴＣＰ／ＵＤＰヘッダを含まず、ＩＰヘッダを含み、
前記受信装置冗長構成は、前記振り分け先ポリシに従って、前記１番目のフラグメントパケットの送信元ＩＰアドレスとポート番号とに基づいて転送先処理装置を決定し、
前記受信装置冗長構成は、前記１番目のフラグメントパケットの転送先処理装置に、前記２番目以降のフラグメントパケットを転送する、通信装置。
【請求項６】
請求項１に記載の通信装置であって、
前記第１オリジナルパケットと第１転送先処理装置との対応関係は、当該対応関係が前記転送先管理情報に追加されてから所定時間経過後に削除される、通信装置。
【請求項７】
請求項１に記載の通信装置であって、
前記転送先管理情報は、オリジナルパケットにおける受信済みフラグメントパケットの情報を管理し、
第２オリジナルパケットの全てのフラグメントパケットを受信された後に、前記第２オリジナルパケットの情報が前記転送先管理情報から削除される、通信装置。
【請求項８】
請求項１に記載の通信装置であって、
前記転送先管理情報は、前記複数パケット受信装置のそれぞれが保持し、互いに同期している第３転送先情報を含み、
前記第１パケット受信装置は、前記第１オリジナルパケットと前記第１転送先処理装置との対応関係を示すエントリを、前記自装置が保持する第３情報に追加し、
前記第１オリジナルパケットに属する他のフラグメントパケットを受信したパケット受信装置は、それぞれ、自装置が保持する第３転送先情報から転送先処理装置の情報を取得する、通信装置。
【請求項９】
複数パケット処理装置を含む処理装置冗長構成と、
複数パケット受信装置を含み、振り分けポリシに基づいて前記複数パケット処理装置から選択した処理装置に、外部ネットワークから受信したパケットを転送する、受信装置冗長構成と、
前記受信装置冗長構成から前記処理装置冗長構成へ転送されたフラグメントパケットが属するオリジナルパケットと、転送先処理装置と、の対応関係を管理する転送先管理情報と、を含む通信装置、におけるパケット転送方法であって、
第１オリジナルパケットから分割されたフラグメントパケットを、前記処理装置冗長構成に最初に転送した第１パケット受信装置が、前記転送先管理情報に、前記第１オリジナルパケットと第１転送先処理装置との対応関係を追加し、
前記第１オリジナルパケットに属する他のフラグメントパケットを受信したパケット受信装置が、前記転送先管理情報が示す前記第１転送先処理装置に前記他のフラグメントパケットを転送し、
前記転送先処理装置が、受信した前記第１オリジナルパケットのフラグメントパケットから、前記第１オリジナルパケットをリアセンブルする、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置におけるパケット転送に関する。
【背景技術】
【０００２】
通信ネットワークにおいて、１回のパケット転送で転送できるパケットサイズには最大転送単位（ＭＴＵ）が定められている。送信元装置から宛先装置へのパケット転送において、送信元装置は、ＭＴＵを超えるサイズのパケット（オリジナルパケット）を、ＭＴＵを超えないようにフラグメントパケットに分割し、それらを送信する。宛先装置は、フラグメントパケットを受信すると、それらから分割前のオリジナルパケットをリアセンブルする。
【０００３】
特開２００７−１４１０８４号公報（特許文献１）は、「オリジナルパターンとオリジナルパターンの先頭から１文字ずつ削除してなる派生パターンとを含む複数のパターンが登録されるオートマトン記憶部２０６と、分割データに対して、パターンをそれぞれ照合させ、分割データの先頭部が派生パターンのいずれかと一致した際には、前に続く分割データとオリジナルパターンの残る部分との照合を行い、分割データの後端部がオリジナルパターンの先頭部と一致した際には、後に続く分割データとオリジナルパターンの残る部分との照合を行うパターン照合部６０１（２０３）とを有している」（要約）パターン照合装置を開示している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−１４１０８４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
宛先装置は、受信したパケットを、ＩＰヘッダに含まれるＩＰヘッダＩＤに基づいて分類する。同じオリジナルパケットから分割されたフラグメントパケットは、同一のＩＰヘッダＩＤを有する。受信した複数パケットがフラグメントパケットであり、かつ、当該複数パケットが同じＩＰヘッダＩＤを有する場合、当該複数パケットからリアセンブリング処理によりオリジナルパケットを生成する。
【０００６】
パケット処理速度向上を目的として、宛先装置が、複数のパケット受信装置（パケット受信装置冗長構成）と複数のパケット処理装置（パケット処理装置冗長構成）とを含むことがある。送信元装置が生成したオリジナルパケットは、複数のパケット受信装置を介して、いずれか一つの処理装置に転送される。当該一つのパケット処理装置は、取得したオリジナルパケットに基づいて処理を行う。複数のパケット処理装置間の負荷分散により、処理速度が向上する。
【０００７】
送信元装置は、オリジナルパケットを分割して生成した複数のフラグメントパケットを送信する。複数のパケット受信装置は、同一ＩＰヘッダＩＤを有するフラグメントパケットを、ある一つのパケット受信装置に集める。当該一つのパケット受信装置は、集められたフラグメントパケットからオリジナルパケットをリアセンブルする。
【０００８】
複数のパケット受信装置と複数のパケット処理装置との間のネットワークにおいても、ＭＴＵが定義されている。上記一つのパケット受信装置は、リアセンブルしたオリジナルパケットを複数のフラグメントパケットに分割し、それらを所定のパケット振分けポリシに従って選択した一つのパケット処理装置に送信する。当該一つの処理装置は、受信したフラグメントパケットからオリジナルパケットをリアセンブルする。
【０００９】
この構成では、受信装置がリアセンブリング処理を実行した後、処理装置においてもリアセンブリング処理が発生する。オリジナルパケットのリアセンブリングを繰り返すため、宛先装置内でのパケット転送が遅延する。ここで、特許文献１のパターン照合は、不正アクセスパケットを特定できるが、オリジナルパケット毎のフラグメントパケットの転送先の決定に適用することはできない。
【００１０】
したがって、パケット受信装置冗長構成及びパケット処理装置冗長構成を有する宛先装置において、同一オリジナルパケットのフラグメントパケットを、選択された一つのパケット処理装置に迅速に転送することができる技術が望まれる。
【課題を解決するための手段】
【００１１】
本発明の一態様の通信装置は、複数パケット処理装置を含む処理装置冗長構成と、複数パケット受信装置を含み、振り分けポリシに基づいて前記複数パケット処理装置から選択した処理装置に、外部ネットワークから受信したパケットを転送する、受信装置冗長構成と、前記受信装置冗長構成から前記処理装置冗長構成へ転送されたフラグメントパケットが属するオリジナルパケットと、転送先処理装置と、の対応関係を管理する転送先管理情報と、を含む。第１オリジナルパケットから分割されたフラグメントパケットを、前記処理装置冗長構成に最初に転送した第１パケット受信装置は、前記転送先管理情報に、前記第１オリジナルパケットと第１転送先処理装置との対応関係を追加する。前記第１オリジナルパケットに属する他のフラグメントパケットを受信したパケット受信装置は、前記転送先管理情報が示す前記第１転送先処理装置に前記他のフラグメントパケットを転送する。前記転送先処理装置は、受信した前記第１オリジナルパケットのフラグメントパケットから、前記第１オリジナルパケットをリアセンブルする。
【発明の効果】
【００１２】
本発明の一態様によれば、パケット受信装置冗長構成及びパケット処理装置冗長構成を有する通信装置において、同一オリジナルパケットのフラグメントパケットを、選択された一つのパケット処理装置に迅速に転送することができる。
【図面の簡単な説明】
【００１３】
【図１】実施例１のネットワーク構成例を示す。
【図２】受信装置のハードウェア構成例を示す。
【図３】転送先管理装置のハードウェア構成例を示す。
【図４】受信装置のソフトウェア構成例を示す。
【図５】転送先管理装置のソフトウェア構成を示す。
【図６】転送先情報データベースの構成例を示す。
【図７】フラグメントパケットの構成例を示す。
【図８】フラグメントパケット判定テーブルの構成例を示す。
【図９】フラグメントパケットの転送シーケンスの一例を示す。
【図１０】フラグメントパケットの転送シーケンスの一例を示す。
【図１１】フラグメントパケットの転送シーケンスの一例を示す。
【図１２】フラグメントパケットの転送シーケンスの一例を示す。
【図１３】同一ＩＰヘッダＩＤのフラグメントパケットにおける最後に受信したフラグメントパケットの転送シーケンス例を示す。
【図１４】転送先情報キャッシュに保持されたエントリがタイムアウトとなった場合の処理例を示す。
【図１５】受信装置による処理装置へのパケット転送のフローチャートを示す。
【図１６】転送先を決定するフローチャートを示す。
【図１７】転送先管理装置における管理プログラム郡のフローチャートを示す。
【図１８】転送先管理装置の転送先情報データベースにエントリを追加するフローチャートを示す。
【図１９】転送先情報キャッシュにエントリを追加するフローチャートを示す。
【図２０】転送先情報キャッシュからエントリを削除するフローチャートを示す。
【図２１】実施例２の受信装置の構成例を示す。
【発明を実施するための形態】
【００１４】
以下、添付図面を参照して本発明の実施例を説明する。本実施例は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではないことに注意すべきである。各図において共通の構成については同一の参照符号が付されている。
【実施例１】
【００１５】
本実施例において、宛先装置は、複数のパケット受信装置と複数のパケット処理装置とを含む。複数のパケット受信装置は、同一オリジナルパケットから分割された複数のフラグメントパケットを、一つのパケット処理装置に転送する。当該パケット処理装置は、受信したフラグメントパケットからオリジナルパケットをリアセンブルし、当該オリジナルパケットに基づく処理を実行する。
【００１６】
各パケット受信装置は、パケットを受信すると振り分けポリシに応じてパケット処理装置を選択し、当該選択したパケット処理装置にパケットを転送する。例えば、振り分けポリシは受信パケットのＩＰアドレスとＴＣＰ又はＵＤＰ（ＴＣＰ／ＵＤＰ）のポート番号とを用いる。ここで、パケットは、分割前のオリジナルパケットと、分割されたフラグメントパケットと、を含む上位語である。
【００１７】
同一のオリジナルパケットから分割された全てのフラグメントパケットは、同一の転送先パケット処理装置に転送される。これにより、パケット処理装置間でのパケット転送を不要とする。
【００１８】
ここで、各フラグメントパケットはＩＰヘッダを含むが、１番目のフラグメントパケット以外のフラグメントパケットは、ＴＣＰ／ＵＤＰヘッダを含まない。これは、パケットを中継するためにＩＰアドレスが必須だが、ＴＣＰ／ＵＤＰに関する情報は、最終的な宛先装置でのみ用いられるからである。なお、１番目のフラグメントパケットは、オリジナルパケットにおける先頭位置のフラグメントパケットである。
【００１９】
ＴＣＰ／ＵＤＰヘッダが含まれていない２番目以降のフラグメントパケットを、ＴＣＰ／ＵＤＰヘッダが含まれている１番目のフラグメントパケットと同一のパケット処理装置に転送することが必要である。ここで、フラグメントパケットの受信順序は不同である。また、複数パケット受信装置のいずれのパケット受信装置が、いずれのフラグメントパケットを受信するか不定である。
【００２０】
本実施例の宛先装置は、パケット受信装置から独立した、フラグメントパケットの転送先を管理する転送先管理装置を含む。各パケット受信装置は転送先管理装置に接続する。転送先管理装置は、フラグメントパケットの転送先を管理する情報を持ち、送信元ＩＰアドレス、ＩＰヘッダＩＤ、ＴＣＰ／ＵＤＰの宛先ポート番号、転送先処理装置、の対応関係を管理する。
【００２１】
１番目のフラグメントパケットを受信したパケット受信装置は、振り分けポリシに応じて転送先パケット処理装置を決定する。さらに、当該パケット受信装置は、１番目のフラグメントパケットの送信元ＩＰアドレス、ＩＰヘッダＩＤ、宛先ポート番号、及び決定した転送先パケット処理装置、ＴＣＰヘッダシーケンス番号、ＩＰヘッダパケット長、を示す情報を、転送先管理装置へ送信する。同一オリジナルパケットから分割されたフラグメントパケットは、同一の送信元ＩＰアドレス及びＩＰヘッダＩＤを有する。
【００２２】
転送先管理装置は、受信した情報を保持する。２番目以降のフラグメントパケットを受信した他のパケット受信装置は、転送先管理装置に、送信元ＩＰアドレス及びＩＰヘッダＩＤを指定して、転送先を問い合わせる。転送先管理装置は、転送先パケット処理装置を示す情報を返す。
【００２３】
フラグメントパケット受信の順序が逆転し、１番目のフラグメントパケットの前に、２番目以降のＫ番目のフラグメントパケットがいずれかのパケット受信装置に受信されることがある。Ｋ番目のフラグメントパケットを受信した受信装置は、転送先管理装置に、送信元ＩＰアドレス及びＩＰヘッダＩＤを指定して、転送先を問い合わせる。
【００２４】
転送先管理装置は、パケット受信装置に空の応答を返す。パケット受信装置は、当該応答に応じて、Ｋ番目のフラグメントパケットを一時的に保持し、１番目のフラグメントパケットが到着するのを待つ。いずれかのパケット受信装置が１番目のフラグメントパケットを受信した後、Ｋ番目のフラグメントパケットは、１番目のフラグメントパケットと同じパケット処理装置に転送される。
【００２５】
本実施例は、パケット受信装置とパケット処理装置の冗長構成を有する通信装置において、フラグメントパケットを受信するパケット受信装置及びフラグメントパケットの受信順序に拠らず、リアセンブリング処理を実行することなく、同一オリジナルパケットのフラグメントパケットを一つの処理装置に転送することができる。本実施例においては、パケット受信装置間でのフラグメントパケットの転送及びパケット処理装置間でのフラグメントパケットの転送は不要である。
【００２６】
以下において具体的に説明する。図１は、本実施例におけるネットワークシステムの構成を模式的に示す。パケット送信装置（以下において送信装置）１０１は、外部ネットワーク１０２を介して、パケット宛先装置（以下において宛先装置）１０８に接続する。送信装置１０１から送信されたパケットは、外部ネットワーク１０２を経由して、宛先装置１０８に転送される。
【００２７】
１回の送信で送信されるパケットは、分割されていないオリジナルパケット、又はオリジナルパケットから分割されたフラグメントパケットである。本実施例は、ＴＣＰ／ＩＰパケットの例を説明する。本実施例及び他の実施例におけるデータ転送は、他のプロトコルにおけるパケットの転送に適用することができる。パケットはデータ転送単位を意味する。
【００２８】
宛先装置１０８は、パケット受信装置冗長構成（以下において受信装置冗長構成）１０３と、パケット処理装置冗長構成（以下において処理装置冗長構成）１０６と、転送先管理装置１０５とを含む。受信装置冗長構成１０３は、複数のパケット受信装置（以下において受信装置）１０４−１〜１０４−Ｎを含む。処理装置冗長構成１０６は、複数のパケット処理装置（以下において処理装置）１０７−１〜１０７−Ｍを含む。Ｎ及びＭは、それぞれ２以上の整数である。
【００２９】
受信装置１０４−１〜１０４−Ｎ及び処理装置１０７−１〜１０７−Ｍは、全てアクティブである。受信装置１０４−１〜１０４−Ｎ及び処理装置１０７−１〜１０７−Ｍは、内部ネットワーク１０９を介して接続されている。受信装置１０４−１〜１０４−Ｎ及び処理装置１０７−１〜１０７−Ｍの任意の装置が、他の任意の装置とデータを通信できる。
【００３０】
受信装置１０４−１〜１０４−Ｎは、それぞれ、転送するパケットの振分けポリシ（以下において負荷分散ポリシ）を保持している。受信装置１０４−１〜１０４−Ｎのいずれか一つが、外部ネットワーク１０２から転送された一つのパケットを受信し、負荷分散ポリシに従って、処理装置１０７−１〜１０７−Ｍのいずれか一つに転送する。本例において、宛先装置１０８には、１又は複数のＩＰアドレスが割り当てられてよい。受信装置１０４−１〜１０４−ＮのＩＰアドレスは、同一又は異なっていてよい。
【００３１】
宛先装置１０８は、さらに、転送先管理装置１０５を含む。転送先管理装置１０５は、受信装置１０４−１〜１０４−Ｎ及び処理装置１０７−１〜１０７−Ｍのそれぞれと、内部ネットワーク１０９を介して通信する。転送先管理装置１０５は、フラグメントパケットの転送先を管理する。受信装置１０４−１〜１０４−Ｎは、それぞれ、フラグメントパケットの転送先を負荷分散ポリシに従って選択することができない場合、転送先管理装置１０５に転送先を問い合わせる。
【００３２】
図１のネットワークシステムは、一例において、ＬＴＥ通信ネットワークシステムに適用することができる。送信装置１０１は、携帯端末やパーソナルコンピュータであってよい。宛先装置１０８は、ＭＭＥ（Ｍｏｂｉｌｉｔｙ  Ｍａｎａｇｅｍｅｎｔ  Ｅｎｔｉｔｙ）であってよい。ＭＭＥは、端末の位置登録や、呼出、基地局間ハンドオーバなどの管理を行う。宛先装置１０８は、他のサービスを行うサーバ装置であってもよい。
【００３３】
図２は、受信装置１０４−１の構成例を模式的に示している。他の受信装置１０４−２〜１０４−Ｎも同様の構成を有する。受信装置１０４−１は、プロセッサであるＣＰＵ４０１、主メモリ４０２、キャッシュメモリ４０４、不揮発性メモリ４０６、ネットワークインターフェース（Ｉ/Ｆ）部４０８、及び、これらを接続するバス４０９を含む。受信装置１０４−１は、不図示の入力デバイスや出力デバイスを有してもよい。
【００３４】
ネットワークインターフェース部４０８は、外部Ｉ／Ｆ部４８１及び内部Ｉ／Ｆ部４８２を含む。外部Ｉ／Ｆ部４８１は、外部ネットワーク１０２を介して送信装置１０１からパケットを受信し、バス４０９を介して主メモリ４０２に送信する。内部Ｉ／Ｆ部４８２は、内部ネットワークを介して、転送先管理装置１０５及び処理装置１０７−１〜１０７−Ｍと通信を行う。内部Ｉ／Ｆ部４８２は、外部ネットワーク１０２を介して受信したパケットを、処理装置１０７−１〜１０７−Ｍの一つに転送する。
【００３５】
不揮発性メモリ４０６には受信プログラム４０３が格納される。また主メモリ４０２は、ＣＰＵ４０１によって不揮発性メモリ４０６からロードされた受信プログラム４０３を格納している。キャッシュメモリ４０４は、フラグメントパケットの転送先を示す転送先情報キャッシュ４０５を一時的に保持している。転送先情報キャッシュ４０５により、受信装置１０４−１と転送先管理装置１０５との間の通信量を低減できる。
【００３６】
ＣＰＵ４０１は、主メモリ４０２に記憶されているプログラムを実行することによって所定の機能を実現する。主メモリは４０２、プロセッサによって実行されるプログラム、及び、プログラムの実行に必要なデータを記憶する。プログラムは、不図示のＯＳの他、プログラムを含む。
【００３７】
図３は、転送先管理装置１０５の構成例を模式的に示している。転送先管理装置１０５は、プロセッサであるＣＰＵ４５１、主メモリ４５２、不揮発性メモリ４５５、ネットワークインターフェース部４５７、及びこれらを接続するバス４５８を含む。本実施例の転送先管理装置１０５は、不図示の入力デバイスや出力デバイスを有してもよい。
【００３８】
ネットワークインターフェース部４５７は、内部ネットワーク１０９を介して、受信装置１０４−１〜１０４−Ｎと通信を行う。ネットワークインターフェース部４５７は、受信装置１０４−１〜１０４−Ｎの構成台数と同数のパケット送受信部（例えばネットワークインタフェースカード）を含み、それぞれが、受信装置１０４−１〜１０４−Ｎと通信を行ってもよい。
【００３９】
不揮発性メモリ４５５は、管理プログラム群４５４を格納している。主メモリ４５２は、ＣＰＵ４５１によって不揮発性メモリ４５５からロードされた管理プログラム群４５４を格納している。主メモリ４５２内の転送先情報データベース４５３は、フラグメントパケットの転送先を一時的に保持している。
【００４０】
ＣＰＵ４５１は、主メモリ４５２に格納されている管理プログラム群４５４を実行することによって、パケット転送における所定の機能を実現する。主メモリ４５２は、管理プログラム群４５４に加え、ＯＳのような他の不図示のプログラム及びプログラムが使用するデータを格納している。
【００４１】
図２及び図３を参照して説明したように、プログラムは、プロセッサ（ＣＰＵ）によって実行されることで、定められた処理を行う。従って、本開示においてプログラムを主語とする説明は、プロセッサを主語とした説明でもよい。または、プログラムが実行する処理は、そのプログラムが動作する装置が行う処理である。
【００４２】
プロセッサは、プログラムに従って動作することによって、所定の機能を実現する機能部（手段）として動作する。例えば、ＣＰＵ４０１は、受信プログラム４０３に従って動作することで受信部（受信手段）として機能し、ＣＰＵ４５１は、管理プログラム群４５４に従って動作することで管理部（管理手段）として機能する。受信装置１０４−１〜１０４−Ｎ及び転送先管理装置１０５は、これらの機能部（手段）を含む装置である。
【００４３】
図４は、受信装置１０４−１のソフトウェア構成を模式的に示している。他の受信装置１０４−２〜１０４−Ｎも同様の構成を有する。受信プログラム４０３は、負荷分散ポリシ４３１、フラグメントパケット判定モジュール４３２、及びパケット保留バッファ４３３を含む。
【００４４】
パケット保留バッファ４３３は、外部ネットワーク２から転送されたパケットを一時的に格納する。フラグメントパケット判定モジュール４３２は、パケット保留バッファ４３３からパケットを取り出し、当該パケットを解析してフラグメントパケットか否か判定する。パケットがフラグメントパケットではない場合、フラグメントパケット判定モジュール４３２は、負荷分散ポリシ４３１に従って、転送先の処理装置を選択する。
【００４５】
パケットがフラグメントパケットである場合、フラグメントパケット判定モジュール４３２は、負荷分散ポリシ４３１、転送先情報キャッシュ４０５、又は転送先管理装置１０５から取得した情報に基づいて、転送先の処理装置を選択する。
【００４６】
フラグメントパケット判定モジュール４３２は、転送先情報キャッシュ４０５を更新する。転送先情報キャッシュ４０５は、オリジナルパケットのＩＤと、当該オリジナルパケットのフラグメントパケットの転送先処理装置のＩＤとを関連付ける。フラグメントパケット判定モジュール４３２は、転送先情報キャッシュ４０５が情報を格納していない新しいオリジナルパケットの、フラグメントパケットを受信すると、その転送先を示すエントリを追加する。フラグメントパケット判定モジュール４３２は、不要となったエントリを削除する。
【００４７】
図５は転送先管理装置１０５のソフトウェア構成を模式的に示している。管理プログラム群４５４は、管理プログラム４５４−１〜４５４−Ｎを含む。管理プログラム４５４−１〜４５４−Ｎは、それぞれ、受信装置１０４−１〜１０４−Ｎからの要求を処理する。管理プログラム４５４−１〜４５４−Ｎは、それぞれ、テーブル管理モジュール５４１−１〜５４１−Ｎ、抽出モジュール５４２−１〜５４２−Ｎを含む。
【００４８】
テーブル管理モジュール５４１−１〜５４１−Ｎは、それぞれ、転送先情報データベース４５３を参照して情報を取得し、さらに、転送先情報データベース４５３を更新する。抽出モジュール５４２−１〜５４２−Ｎは、それぞれ、受信装置１０４−１〜１０４−Ｎから受信したデータから必要なデータを抽出して、テーブル管理モジュール５４１−１〜５４１−Ｎに渡す。
【００４９】
転送先情報データベース４５３は、受信装置１０４−１〜１０４−Ｎから送信された、フラグメントパケットの転送先の情報を格納し、管理する。図６は、転送先情報データベース４５３の構成例を示す。
【００５０】
転送先情報データベース４５３は、ＩＰヘッダＩＤカラム５３１、送信元ＩＰアドレスカラム５３２、転送先（処理装置）ＩＰアドレスカラム５３３、ポート番号カラム５３４、タイマ値カラム５３５、ＴＣＰヘッダシーケンス番号カラム５３６、ＩＰヘッダパケット長カラム５３７を有する。転送先情報データベース４５３は、各エントリにおいて、カラム５３１〜５３７の値を関連付ける。
【００５１】
ＩＰヘッダＩＤカラム５３１は、フラグメントパケットのＩＰヘッダに含まれるＩＤを示す。同一のオリジナルパケットから生成されたフラグメントパケットは、同一のＩＰヘッダＩＤを有する。転送先情報データベース４５３のエントリは、それぞれ異なるＩＰヘッダＩＤを有する。
【００５２】
送信元ＩＰアドレスカラム５３２は、フラグメントパケットの送信元、図１に構成においては送信装置１０１、のＩＰアドレスを示す。転送先（処理装置）ＩＰアドレスカラム５３３は、フラグメントパケットの転送先処理装置のＩＰアドレスを示す。ポート番号カラム５３４は、フラグメントパケットのＴＣＰヘッダにおける宛先ポート番号を示す。タイマ値カラム５３５は、各エントリを消去する時刻タイミングを示す。例えば、タイマ値カラム５３５は、エントリが作成される時刻又は当該時刻から所定時間経過後の時刻を示す。
【００５３】
ＴＣＰヘッダシーケンス番号カラム５３６は、フラグメントパケットのデータの位置関係を示す。ＩＰヘッダパケット長カラム５３７は、オリジナルパケットの全体の大きさをバイト単位で示す。ＴＣＰヘッダシーケンス番号５３６とＩＰヘッダパケット長カラム５３７における、同一オリジナルパケットのフラグメントパケットの情報から、当該オリジナルパケットの未受信フラグメントパケットの有無を判定可能である。
【００５４】
図７は、フラグメントパケットのフォーマット例を示す。１番目のフラグメントパケット６０１は、それ以降のフラグメントパケット６０２とは異なるフォーマットを有する。具体的には、１番目のフラグメントパケット６０１は、データグラムに加え、ＴＣＰヘッダ及びＩＰヘッダを有する。一方、２番目以降のＫ番目のフラグメントパケット６０２は、データグラムとＩＰヘッダを有しているが、ＴＣＰヘッダを有していない。図７は、ＴＣＰヘッダを有するＩＰパケットを例示するが、ＵＤＰヘッダを有するＩＰパケットにおいても同様である。
【００５５】
転送先情報データベース４５３は、フラグメントパケットのポート番号を格納する。したがって、転送先情報データベース４５３は、１番目のフラグメントパケットの情報を格納する。転送先管理装置１０５は、１番目のフラグメントパケットを受信した受信装置から、当該１番目のフラグメントパケット及び転送先処理装置のＩＰアドレスを受信し、必要な情報を抽出して転送先情報データベース４５３に格納する。
【００５６】
例えば、受信装置１０４−１が、あるオリジナルパケットの１番目のフラグメントパケットを受信したとする。管理プログラム４５４−１の抽出モジュール５４２−１は、当該１番目のフラグメントパケットと転送先処理装置のＩＰアドレスを、受信装置１０４−１から受信する。
【００５７】
抽出モジュール５４２−１は、１番目のフラグメントパケットのＩＰヘッダからＩＰヘッダＩＤと送信元ＩＰアドレスとを抽出し、ＴＣＰヘッダから宛先ポート番号を抽出する。テーブル管理モジュール５４１−１は、１番目のフラグメントパケットから抽出された情報及び転送先処理装置のＩＰアドレスを、転送先情報データベース４５３に格納する。
【００５８】
転送先情報キャッシュ４０５は、転送先情報データベース４５３と同様のカラム構成を有してよい。転送先情報データベース４５３は、全ての受信装置１０４−１〜１０４−Ｎから収集した情報を格納している。転送先情報データベース４５３は、全ての受信装置が転送したオリジナルパケット（のフラグメントパケット）の情報を管理する。
【００５９】
転送先情報キャッシュ４０５は、当該転送先情報キャッシュ４０５を保持する受信装置が転送したオリジナルパケット（のフラグメントパケット）の情報のみを格納、管理する。後述するように、受信プログラム４０３は、当該受信プログラム４０３を実行する受信装置がオリジナルパケットの１番目のフラグメントパケットを受信及び転送する場合、自ら生成した情報を転送先情報キャッシュ４０５に格納する。２番目以降のＫ番目のフラグメントパケットを受信及び転送する場合、受信プログラム４０３は、転送先管理装置１０５から取得した情報を転送先情報キャッシュ４０５に格納する。
【００６０】
図８は、フラグメントパケット判定テーブル７０１の構成例を示す。受信プログラム４０３及び管理プログラム群４５５４のそれぞれは、当該フラグメントパケット判定テーブル７０１を含む。フラグメントフラグ（以下、ＦＦと呼称）、フラグメントオフセット（以下、ＦＯと呼称）はＩＰヘッダの情報である。これらの値は、後述のフラグメントパケット判定方法に用いられる。ＦＦが０、ＦＯが０であれば、フラグメント化されていないパケットである。
【００６１】
ＦＦが１、ＦＯが０であれば、１番目のフラグメントパケットであり、ＦＦが１、ＦＯが０であれば、２番目以降のフラグメントパケット、ＦＦが０、ＦＯが１以上であれば、末尾のフラグメントパケットとである。
【００６２】
以下において、図９〜１３を参照して、フラグメントパケットを転送するシーケンスのいくつかの例を説明する。本例は、１番目のフラグメントパケットから、同一オリジナルパケットの全てのフラグメントパケットの転送先を決定する。受信装置冗長構成１０３は、同一オリジナルパケットからの全てのフラグメントパケットを、同一処理装置に転送するため、処理の遅延が低減される。２番目以降のフラグメントパケットの処理装置への転送順序は、フラグメントパケットの順序と不一致でよい。
【００６３】
図９は、フラグメントパケットを転送するシーケンスの例を示している。本例において、受信装置１０４−１が、あるオリジナルパケットの１番目のフラグメントパケットＦＰ−１を受信し、処理装置１０７−１に転送する。さらに、当該受信装置１０４−１が、同一オリジナルパケットのＫ番目のフラグメントパケットＦＰ−Ｋを受信し、処理装置１０７−１に転送する。
【００６４】
具体的に説明する。受信装置１０４−１は、送信装置１０１から送出された１番目のフラグメントパケットＦＰ−１を、外部ネットワーク１０２を介して受信する（Ｓ１０１）。受信装置１０４−１は、負荷分散ポリシ４３１に基づき、フラグメントパケットＦＰ−１転送先を決定し、転送先管理装置１０５へ通知する（Ｓ１０２）。
【００６５】
本例において、受信装置１０４−１は、オリジナルパケットの送信元ＩＰアドレス及び宛先ポート番号に従って、当該オリジナルパケットの転送先処理装置を決定する。負荷分散ポリシ４３１は、送信元ＩＰアドレス及び宛先ポート番号の組と、転送先処理装置とを関連付ける。本例の受信装置１０４−１は、転送先管理装置１０５への転送先の通知（Ｓ１０２）において、フラグメントパケットＦＰ−１と決定した転送先のＩＰアドレスとを送信する。
【００６６】
次に、転送先管理装置１０５は、通知の内容を基に転送先情報データベース４５３を更新し、データベースへの保存時間となるタイマを設定する（Ｓ１０３）。転送先管理装置１０５は、転送先情報データベース４５３に、フラグメントパケットＦＰ−１及びその転送先処理装置の情報並びにタイマ値を含むエントリを追加する。フラグメントパケットＦＰ−１のＩＰヘッダ及びＴＣＰヘッダは、フラグメントパケットＦＰ−１の情報を示す。フラグメントパケットＦＰ１の転送先は、当該フラグメントパケットＦＰ１と同一のオリジナルパケットから生成された他の全てのフラグメントパケットの転送先である。
【００６７】
転送先管理装置１０５は、転送先情報データベース４５３を更新した後、受信装置１０４−１へ、転送先情報データベース更新完了のメッセージを送信する（Ｓ１０４）。受信装置１０４−１は、転送先情報データベース更新完了のメッセージを受信すると、フラグメントパケットＦＰ１を、転送先となる処理装置へ転送する（Ｓ１０５）。ここでは、処理装置１０７−１に転送されるとする。
【００６８】
フラグメントパケットＦＰ１を転送した後、受信装置１０４−１は、フラグメントパケットＦＰ１の転送先の情報を、転送先情報キャッシュ４０５に追加し、タイマ値を設定する（Ｓ１０６）。
【００６９】
次に受信装置１０４−１は、Ｋ番目のフラグメントパケットＦＰ−Ｋを受信する（Ｓ１０７）。フラグメントパケットＦＰ−Ｋは、フラグメントパケットＦＰ−１と、同じオリジナルパケットに含まれる。
【００７０】
受信装置１０４−１は、当該受信装置１０４−１内の転送先情報キャッシュ４０５を参照し、フラグメントパケットＦＰ−Ｋと同一のＩＰヘッダＩＤを示すエントリを検索する（Ｓ１０８）。本例では、受信装置１０４−１が、フラグメントパケットＦＰ−１を受信及び転送しており、転送先情報キャッシュ４０５は、当該フラグメントパケットＦＰ−１の転送先情報を格納している。
【００７１】
受信装置１０４−１は、転送先情報キャッシュ４０５から、フラグメントパケットＦＰ−Ｋの転送先処理装置のＩＰアドレスを取得する（Ｓ１０９）。ここでは、転送先処理装置は、処理装置１０７−１である。受信装置１０４−１は、フラグメントパケットＦＰ−Ｋを、転送先処理装置である処理装置１０７−１へ転送する（Ｓ１１０）。さらに、受信装置１０４−１は、転送先管理装置１０５へ、フラグメントパケットＦＰ−Ｋの受信を通知する（Ｓ１１１）。通知は、ＴＣＰヘッダシーケンス番号とＩＰヘッダＩＤとを含む。
【００７２】
転送先管理装置１０５は、通知の内容を基に転送先情報データベース４５３を更新する（Ｓ１１２）。具体的には、転送先管理装置１０５は、ＩＰヘッダＩＤをキーにした、シーケンス番号を含むエントリを、転送先情報データベース４５３に追加する。転送先管理装置１０５は、転送先情報データベース４５３を更新した後、受信装置１０４−１へ、転送先情報データベース更新完了を通知する（Ｓ１１３）。
【００７３】
図１０は、フラグメントパケットを転送するシーケンスの他例を示している。本例において、受信装置１０４−１が、あるオリジナルパケットの１番目のフラグメントパケットＦＰ−１を受信し、処理装置１０７−１に転送する。受信装置１０４−１と異なる受信装置である、受信装置１０４−２が、同一オリジナルパケットのＫ番目のフラグメントパケットＦＰ−Ｋを受信し、処理装置１０７−１に転送する。
【００７４】
図１０のシーケンスにおいて、フラグメントパケットＦＰ−１の転送に関するステップＳ１５１〜Ｓ１５６は、図９のシーケンスにおけるステップＳ１０１〜Ｓ１０６と同様である。
【００７５】
次に、受信装置１０４−２は、フラグメントパケットＦＰ−Ｋを受信する（Ｓ１５７）。受信装置１０４−２は、受信装置１０４−２が保持している転送先情報キャッシュ４０５を参照し、フラグメントパケットＦＰ−Ｋと同一のＩＰヘッダＩＤを示すエントリを検索する（Ｓ１５８）。
【００７６】
ここで、転送先情報キャッシュ４０５は、フラグメントパケットＦＰ−Ｋと同一のＩＰヘッダＩＤの情報を格納していないとする（Ｓ１５９）。つまり、受信装置１０４−２は、フラグメントパケットＦＰ−Ｋと同一のオリジナルパケットに含まれるフラグメントパケットを転送したことがなく、フラグメントパケットＦＰ−Ｋが、受信装置１０４−２が転送する当該オリジナルパケットの最初のフラグメントパケットであるとする。
【００７７】
受信装置１０４−２は、フラグメントパケットＦＰ−Ｋの転送先を、転送先管理装置１０５に問い合わせる（Ｓ１６０）。当該問合せは、フラグメントパケットＦＰ−ＫのＩＰヘッダＩＤを含む。
【００７８】
転送先管理装置１０５は、転送先情報データベース４５３において、フラグメントパケットＦＰ−ＫのＩＰヘッダＩＤの情報を検索し、当該ＩＰヘッダＩＤに関連づけられた転送先処理装置のＩＰアドレスを取得する。転送先管理装置１０５は、当該転送先処理装置のＩＰアドレスを受信装置１０４−２に返す（Ｓ１６１）。本例において、転送先処理装置は、処理装置１０７−１である。受信装置１０４−２は、転送先管理装置１０５から通知された転送先処理装置１０７−１のＩＰアドレスに、フラグメントパケットＦＰ−Ｋを転送する（Ｓ１６２）。
【００７９】
フラグメントパケットＦＰ−Ｋを転送した後、受信装置１０４−２は、フラグメントパケットＦＰ−Ｋの転送先の情報を、当該受信装置１０４−２が保持する転送先情報キャッシュ４０５に追加し、タイマ値を設定する（Ｓ１６３）。受信装置１０４−２が、この後、フラグメントパケットＦＰ−Ｋと同一のオリジナルパケットの他のフラグメントパケットを受信した場合、受信装置１０４−２は、転送先管理装置１０５に問い合わせることなく、転送先情報キャッシュ４０５から転送先のアドレスを取得できる。
【００８０】
ステップＳ１６４〜Ｓ１６６は、図９のシーケンスにおけるステップＳ１１１〜Ｓ１１３と同様である。
【００８１】
図１１は、フラグメントパケットを転送するシーケンスの他例を示している。本例において、受信装置１０４−１が、あるオリジナルパケットのＫ番目のフラグメントパケットＦＰ−Ｋを受信し、その後、同一オリジナルパケットの１番目のフラグメントパケットＦＰ−１を受信する。受信装置１０４−１は、フラグメントパケットＦＰ−１、ＦＰ−Ｋを処理装置１０７−１に転送する。
【００８２】
具体的に説明する。受信装置１０４−１は、送信装置１０１から送出されたＫ番目のフラグメントパケットＦＰ−Ｋを、外部ネットワーク１０２を介して受信する（Ｓ２０１）。受信装置１０４−１は、受信装置１０４−１が保持している転送先情報キャッシュ４０５を参照し、フラグメントパケットＦＰ−Ｋと同一のＩＰヘッダＩＤを示すエントリを検索する（Ｓ２０２）。
【００８３】
ここで、転送先情報キャッシュ４０５は、フラグメントパケットＦＰ−Ｋと同一のＩＰヘッダＩＤの情報を格納していないとする（Ｓ２０３）。つまり、受信装置１０４−１は、フラグメントパケットＦＰ−Ｋと同一のオリジナルパケットに含まれるフラグメントパケットを転送したことがないとする。受信装置１０４−１は、フラグメントパケットＦＰ−Ｋの転送先を、転送先管理装置１０５に問い合わせる（Ｓ２０４）。当該問合せは、フラグメントパケットＦＰ−ＫのＩＰヘッダＩＤを含む。
【００８４】
転送先管理装置１０５は、転送先情報データベース４５３において、フラグメントパケットＦＰ−ＫのＩＰヘッダＩＤの情報を検索する。１番目のフラグメントパケットＦＰ−１は未受信のため、転送先情報データベース４５３は、フラグメントパケットＦＰ−ＫのＩＰヘッダＩＤについての情報を格納していない。そのため、転送先管理装置１０５は、要求された情報を保持していないことを示す応答を返す（Ｓ２０５）。
【００８５】
受信装置１０４−１は、フラグメントパケットＦＰ−Ｋの転送先が不明のため、フラグメントパケットＦＰ−Ｋを、そのパケット保留バッファ４３３内において保持する（Ｓ２０６）。
【００８６】
その後、受信装置１０４−１は、フラグメントパケットＦＰ−１を受信する（Ｓ２０７）。ステップＳ２０７〜Ｓ２１２は、図９のシーケンスにおけるステップＳ１０１〜Ｓ１０６と同様である。
【００８７】
次に、受信装置１０４−１は、フラグメントパケットＦＰ−Ｋをパケット保留バッファ４３３から取り出す（Ｓ２１３）。受信装置１０４−１は、受信装置１０４−１が保持する転送先情報キャッシュ４０５を参照し、フラグメントパケットＦＰ−Ｋと同一のＩＰヘッダＩＤを有するエントリを検索する（Ｓ２１４）。
【００８８】
転送先情報キャッシュ４０５は、フラグメントパケットＦＰ−１の転送先情報を保持している。受信装置１０４−１は、フラグメントパケットＦＰ−Ｋの転送先処理装置のＩＰアドレスを転送先情報キャッシュ４０５から取得し（Ｓ２１５）、当該転送先にフラグメントパケットＦＰ−Ｋを転送する（Ｓ２１６）。
【００８９】
ステップＳ２１７〜Ｓ２１９は、図９のシーケンスにおけるステップＳ１１１〜Ｓ１１３と同様である。
【００９０】
なお、受信装置は、パケット保留バッファ４３３に全ての受信したパケットを一旦格納する。受信装置は、転送先が決定したパケットを、パケット保留バッファ４３３からは順次取り出す。
【００９１】
図１２は、フラグメントパケットを転送するシーケンスの他例を示している。本例において、受信装置１０４−１が、あるオリジナルパケットのＫ番目のフラグメントパケットＦＰ−Ｋを受信し、その後、受信装置１０４−１と異なる受信装置１０４−２が、同一オリジナルパケットの１番目のフラグメントパケットＦＰ−１を受信する。受信装置１０４−２は、フラグメントパケットＦＰ−１を処理装置１０７−１に転送し、その後、受信装置１０４−１は、フラグメントパケットＦＰ−Ｋを処理装置１０７−１に転送する。
【００９２】
ステップＳ２３１〜Ｓ２３６は、図１１のシーケンスにおけるステップＳ２０１〜２０６と同様である。ステップＳ２３７〜Ｓ２４２は、受信装置１０４−２が受信装置１０４−１と代わっている点を除き、図９のシーケンスにおけるステップＳ１０１〜Ｓ１０６と同様である。
【００９３】
本例において、受信装置１０４−１は、フラグメントパケットＦＰ−Ｋの転送先を知るために、定期的に転送先情報キャッシュ４０５を参照し、さらに、転送先情報キャッシュ４０５が転送先の情報を保持していない場合に、転送先管理装置１０５に問い合わせる。転送先管理装置１０５は、フラグメントパケットＦＰ−１の転送先の情報を受信した後の、受信装置１０４−１からの最初の問い合わせ（Ｓ２４３）に対して、当該転送先の情報を返す（Ｓ２４４）。本例は、処理装置１０７−１のＩＰアドレスを返す。
【００９４】
受信装置１０４−１は、ラグメントパケットＦＰ−Ｋをパケット保留バッファ４３３から取り出し（Ｓ２４５）、転送先管理装置１０５から通知された処理装置１０７−１にラグメントパケットＦＰ−Ｋを転送する（Ｓ２４６）。フラグメントパケットＦＰ−Ｋを転送した後、受信装置１０４−１は、フラグメントパケットＦＰ−Ｋの転送先の情報を、当該受信装置１０４−１が保持する転送先情報キャッシュ４０５に追加し、タイマ値を設定する（Ｓ２４７）。
【００９５】
ステップＳ２４８〜Ｓ２５０は、図９のシーケンスにおけるステップＳ１１１〜Ｓ１１３と同様である。
【００９６】
次に、同一ＩＰヘッダＩＤのフラグメントパケットがすべて揃った際の転送シーケンスを説明する。図１３は、同一ＩＰヘッダＩＤのフラグメントパケットにおける最後に受信したフラグメントパケットの転送シーケンス例を示す。最後に受信されるフラグメントパケットのオリジナルパケットにおける順序は、不定である。
【００９７】
本シーケンスは、最後のフラグメントパケットを受信したタイミングから開始する。受信装置冗長構成１０３は、既に、同一オリジナルパケットの１番目のフラグメントパケットＦＰ−１を受信し、受信装置１０４−１内の転送先情報キャッシュ４０５及び転送先情報データベース４５３は、フラグメントパケットＦＰ−１の転送先情報を格納しているものとする。
【００９８】
受信装置１０４−１は、最後のフラグメントパケットを受信する（Ｓ２５１）。受信装置１０４−１は、受信装置１０４−１内の転送先情報キャッシュ４０５を参照し、最後に受信したフラグメントパケットのＩＰヘッダＩＤを含むエントリを検索する（Ｓ２５２）。受信装置１０４−１は、転送先情報キャッシュ４０５から、フラグメントパケットＦＰ−１の転送先の情報を取得する（Ｓ２５３）。ここでは、転送先は処理装置１０７−１である。受信装置１０４−１は、最後のフラグメントパケットを、処理装置１０７−１に転送する（Ｓ２５４）。
【００９９】
ステップＳ２５５〜Ｓ２５７は、図９のシーケンスにおけるステップＳ１１１〜Ｓ１１３と同様である。
【０１００】
次に転送先管理装置１０５は、全ての受信装置Ｓ１０４−１、Ｓ１０４−２に対して、当該ＩＰヘッダＩＤを持つエントリの削除要求を送信する（Ｓ２５８、Ｓ２５９）。転送先管理装置１０５と全ての受信装置Ｓ１０４−１、Ｓ１０４−２とは、当該ＩＰヘッダＩＤの全エントリを削除する（Ｓ２６０）。当該シーケンスにより、全てのフラグメントパケットが転送されたオリジナルパケットの不要データを、全ての受信装置及び転送先管理装置から削除することができる。
【０１０１】
なお、上記複数シーケンスにおいて、転送先管理装置１０５は、フラグメントパケットの転送先の情報を受信すると、当該情報を、他の全ての受信装置に通知してもよい。転送先管理装置１０５は、同一ＩＰヘッダＩＤのフラグメントパケットの転送先について、過去に問合せがあった受信装置に対してのみ、上記情報を通知してもよい。
【０１０２】
受信装置におけるキャッシュは省略してもよい。Ｋ番目のフラグメントパケットを保持していた受信装置は、１番目のフラグメントパケットを受信した後、いつＫ番目のフラグメントパケットを転送してもよい。
【０１０３】
図１４は、転送先情報キャッシュ４０５に保持されたエントリがタイムアウトとなった場合の処理を示す。これにより、不要なエントリが残っていることを避けることができる。エントリの作成から所定時間が経過すると、当該エントリは削除される。例えば、タイマ値カラム５３５の値が削除すべき時刻である場合、現在時刻が当該タイマ値を過ぎている場合に、当該エントリが削除される。
【０１０４】
図１４の例において、受信装置１０４−１の転送先情報キャッシュ４０５において、転送先情報キャッシュ４０５のエントリがタイムアウトを発生させ、それに応答して、受信装置１０４−１が、当該エントリを転送先情報キャッシュから削除する（Ｓ３０１）。
【０１０５】
転送先情報データベース４５３におけるタイムアウトによるエントリ削除も、転送先情報キャッシュ４０５と同様である。転送先情報データベース４５３のエントリがタイムアウトを発生させると、転送先管理装置１０５は、当該エントリを転送先情報データベース４５３から削除する。
【０１０６】
図１５は、受信装置による処理装置へのパケット転送のフローチャートを示す。受信装置は、パケットの転送先（振分先）の処理装置を決定し、当該転送先処理装置にパケットを転送する。
【０１０７】
フラグメントパケット判定モジュール４３２は、パケットを、パケット保留バッファ４３３から取り出す（Ｓ３５１）。フラグメントパケット判定モジュール４３２は、取り出したパケットのＩＰヘッダから、フラグメントフラグとフラグメントオフセットを抽出する（Ｓ３５２）。
【０１０８】
フラグメントパケット判定モジュール４３２は、フラグメントパケット判定テーブル７０１を参照し、フラグメントフラグ及びフラグメントオフセットから、取り出したパケットが、フラグメントパケットであるか否か、そして、当該パケットがフラグメントパケットである場合には、何番目のフラグメントパケットであるか、判定する（Ｓ３５３）。
【０１０９】
取り出したパケットが、フラグメントパケットでない場合（Ｓ３５３：ＦＦ＝０、ＦＯ＝０）、フラグメントパケット判定モジュール４３２は、負荷分散ポリシ４３１に基づいて当該パケットの転送先処理装置を決定し（Ｓ３５４）、決定した転送先処理装置へ当該パケットを転送する（Ｓ３６１）。
【０１１０】
本例において、フラグメントパケット判定モジュール４３２は、送信元ＩＰアドレスと宛先ポート番号に従って転送先を決定する。例えば、送信元ＩＰアドレスと宛先ポート番号の組に対して、１又は複数の処理装置が対応付けられており、複数の処理装置が対応付けられている場合、例えば、ラウンロビンや処理装置の負荷状況に応じて一つの処理装置が選択される。これは、１番目のフラグメントパケットの転送先の決定において同様である。
【０１１１】
取り出したパケットが、１番目のフラグメントパケットの場合（Ｓ３５３：ＦＦ＝１、ＦＯ＝０）、フラグメントパケット判定モジュール４３２は、当該パケットのＩＰヘッダから、送信元ＩＰアドレス及びＩＰヘッダＩＤを抽出する（Ｓ３５６）。フラグメントパケット判定モジュール４３２は、負荷分散ポリシ４３１に基づいて、１番目のフラグメントパケットの転送先を決定する（Ｓ３５７）。
【０１１２】
フラグメントパケット判定モジュール４３２は、１番目のフラグメントパケットから抽出した情報を、転送先管理装置１０５に通知する（Ｓ３５８）。通知される情報は、送信元ＩＰアドレス、ＩＰヘッダＩＤ、シーケンス番号、パケット長、及び、１番目のフラグメントパケットの転送先の情報を含む。
【０１１３】
転送先管理装置１０５は、受信した情報により転送先情報データベース４５３を更新する。具体的には、受信した送信元ＩＰアドレス、ＩＰヘッダＩＤ及び転送先処理装置示す新たなエントリを追加する。更新の方法は後述する。フラグメントパケット判定モジュール４３２は、転送先管理装置１０５より転送先情報データベース４５３の変更完了応答を待つ（Ｓ３５９：ＮＯ）。
【０１１４】
変更完了応答を受信すると（Ｓ３５９：ＹＥＳ）、フラグメントパケット判定モジュール４３２は、転送先情報キャッシュ４０５に新たなエントリを追加する（Ｓ３６０）。当該エントリは、１番目のフラグメントパケットの送信元ＩＰアドレス、ＩＰヘッダＩＤ及び転送先処理装置を示す。その後、フラグメントパケット判定モジュール４３２は、決定した転送先処理装置へ当該パケットを転送する（Ｓ３６１）。
【０１１５】
取り出したパケットが、２番目以降のＫ番目のフラグメントパケットの場合（Ｓ３５３：ＦＦ＝１、ＦＯ≧０、又は、ＦＦ＝０、ＦＯ≧０）、フラグメントパケット判定モジュール４３２は、図１６に示すフローチャートに従って転送先を決定する（Ｓ３５５）。
【０１１６】
図１６に示すように、フラグメントパケット判定モジュール４３２は、転送先情報キャッシュ４０５を参照し、当該フラグメントパケットの送信元ＩＰアドレスとＩＰヘッダＩＤを含むエントリを検索する（Ｓ４０１）。該当するエントリが存在すれば（Ｓ４０２：ＹＥＳ）、フラグメントパケット判定モジュール４３２は、当該エントリから転送先処理装置のＩＰアドレスを取得し（Ｓ４０３）、当該フラグメントパケットを当該転送先処理装置に転送する（Ｓ４０４）。
【０１１７】
フラグメントパケット判定モジュール４３２は、フラグメントパケットから選択したＩＰヘッダＩＤ並びにＴＣＰヘッダのシーケンス番号を、転送先管理装置１０５に通知する（Ｓ４１０）。
【０１１８】
当該フラグメントパケットの送信元ＩＰアドレスとＩＰヘッダＩＤを含むエントリが転送先情報キャッシュ４０５に存在しない場合（Ｓ４０２：ＮＯ）は、フラグメントパケット判定モジュール４３２は、転送先管理装置１０５に、当該フラグメントパケットの送信元ＩＰアドレスとＩＰヘッダＩＤを示すエントリが存在するか問い合わせる（Ｓ４０５）。転送先管理装置１０５は、転送先情報データベース４５３において、指定されたエントリを検索する。
【０１１９】
指定されたエントリが転送先情報データベース４５３に存在する場合（Ｓ４０６：ＹＥＳ）、フラグメントパケット判定モジュール４３２は、転送先管理装置１０５から、転送先処理装置のＩＰアドレスを受信する（Ｓ４０７）。フラグメントパケット判定モジュール４３２は、当該処理装置へ、当該フラグメントパケットを転送する（Ｓ４０８）。
【０１２０】
転送後、フラグメントパケット判定モジュール４３２は、転送先情報キャッシュ４０５にエントリを追加する（Ｓ４０９）。当該エントリは、当該フラグメントパケットの送信元ＩＰアドレス、ＩＰヘッダＩＤ及び転送先の情報を示す。その後、フラグメントパケット判定モジュール４３２は、ステップＳ４１０に進む。
【０１２１】
指定されたエントリが転送先情報データベース４５３に存在しない場合（Ｓ４０６：ＮＯ）、フラグメントパケット判定モジュール４３２は、その旨の応答を転送先管理装置１０５から受信する。フラグメントパケット判定モジュール４３２は、当該フラグメントパケットを転送することなく、パケット保留バッファ４３３に再格納する（Ｓ４１２）。フラグメントパケット判定モジュール４３２は、予め規定されている時間の経過を待って（Ｓ４１３）、ステップＳ４０１に戻る。
【０１２２】
図１７は、転送先管理装置１０５における管理プログラム群４５４のフローチャートを示す。ここでは、管理プログラム４５４−Ｌ（Ｌは１〜Ｎのいずれかの整数）がフローチャートを実行するとする。
【０１２３】
管理プログラム４５４−Ｌは、受信装置１０４−Ｌから、フラグメントパケットの転送先情報の問い合わせを受信する。問い合わせは、送信元ＩＰアドレスとＩＰヘッダＩＤとを検索キーとして指定する。管理プログラム４５４−Ｌは、転送先情報データベース４５３において、指定されたキーを含むエントリを検索する（Ｓ４５１）。
【０１２４】
検索しているエントリが存在しない場合（Ｓ４５２：ＮＯ）、管理プログラム４５４−Ｌは、受信装置１０４−Ｌに、問い合わせされたエントリが存在しないことを示す応答を返す（Ｓ４５３）。
【０１２５】
検索しているエントリが存在する場合（Ｓ４５２：ＹＥＳ）、管理プログラム４５４−Ｌは、当該エントリが示す転送先ＩＰアドレスを、受信装置１０４−Ｌに通知する（Ｓ４５４）。
【０１２６】
例えば、受信装置１０４−Ｌからの問い合わせは、フラグメントパケットのフラグメントフラグ及びフラグメントオフセットを含む。例えば、問い合わせは、フラグメントパケット自体を含む。管理プログラム４５４−Ｌは、当該フラグメントのフラグメントフラグ及びフラグメントオフセット並びにフラグメントパケット判定テーブル７０１から、当該フラグメントパケットが最後のフラグメントであるか判定する。
【０１２７】
図１８は、転送先管理装置１０５の転送先情報データベース４５３にエントリを追加するフローチャートを示す。管理プログラム４５４−Ｌは、受信装置１０４−Ｌから、フラグメントパケットのシーケンス番号情報を受信する。管理プログラム４５４−Ｌは、転送先情報データベース４５３において、受信したＩＰヘッダＩＤをキーとして、当該ＴＣＰヘッダのシーケンス番号を含むエントリを追加する（Ｓ４５６）。
【０１２８】
次に、管理プログラム４５４−Ｌは、受信したＩＰヘッダのＩＤをキーとして、転送先情報データベース４５３を検索する。管理プログラム４５４−Ｌは、取得した結果からＩＰヘッダのパケット長とシーケンス番号の値を基に、全てのフラグメントパケットを受信したか判定する（Ｓ４５７）。
【０１２９】
全てのフラグメントパケットが揃った場合（Ｓ４５７：ＹＥＳ）、管理プログラム４５４−Ｌは、全ての受信装置に同一のＩＰヘッダＩＤを持つエントリを削除するよう要求メッセージを送信する（Ｓ４５８）。図２０は、受信装置におけるエントリ削除フローを示す。また、転送先情報データベース４５３においても、該当のエントリを削除する（Ｓ４５９）。全てのフラグメントパケットが揃っていない場合（Ｓ４５７：ＮＯ）、管理プログラム４５４−Ｌは、ステップＳ４５８、Ｓ４５９をスキップする。
【０１３０】
図１９は、転送先情報キャッシュ４０５にエントリを追加するフローチャートを示す。フラグメントパケット判定モジュール４３２は、外部Ｉ／Ｆ部４８１を介して、１番目のフラグメントパケットを受信する（Ｓ５０１）。
【０１３１】
フラグメントパケット判定モジュール４３２は、当該フラグメントパケットのＩＰヘッダから、送信元ＩＰアドレスとＩＰヘッダＩＤを取得する。フラグメントパケット判定モジュール４３２は、取得した送信元ＩＰアドレスとＩＰヘッダＩＤを含むエントリを、転送先情報キャッシュ４０５において検索する（Ｓ５０２）。
【０１３２】
検索しているエントリが存在する場合（Ｓ５０２：ＹＥＳ）、フラグメントパケット判定モジュール４３２は当該エントリを削除し（Ｓ５０４）、さらに、今回受信した１番目のフラグメントパケットのエントリを追加する（Ｓ５０５）。検索しているエントリが存在しない場合（Ｓ５０２：ＮＯ）、ステップＳ５０４はスキップされる。
【０１３３】
本フローにより、処理済みオリジナルパケットの情報（エントリ）を転送先情報キャッシュ４０５から削除し、転送先情報キャッシュ４０５を適切に最新情報で更新することができる。なお、なお、本フローは、転送先情報データベース４５３へのエントリ追加にも適用される。
【０１３４】
図２０は、転送先情報キャッシュ４０５からエントリを削除するフローチャートを示す。フラグメントパケット判定モジュール４３２は、外部Ｉ／Ｆ部４８１を介して、最後のフラグメントパケットを受信する（Ｓ５５１）。
【０１３５】
フラグメントパケット判定モジュール４３２は、当該フラグメントパケットのＩＰヘッダから、送信元ＩＰアドレスとＩＰヘッダＩＤを取得する。フラグメントパケット判定モジュール４３２は、取得した送信元ＩＰアドレスとＩＰヘッダＩＤを含むエントリを、転送先情報キャッシュ４０５において検索する（Ｓ５５２）。
【０１３６】
検索しているエントリが存在する場合（Ｓ５５２：ＹＥＳ）、フラグメントパケット判定モジュール４３２は当該エントリを削除する（Ｓ５５４）。検索しているエントリが存在しない場合（Ｓ５５２：ＮＯ）、ステップＳ５５４はスキップされる。
【０１３７】
以上のように、本実施例は、受信装置と処理装置が別装置であっても、受信装置におけるフラグメントパケットのリアセンブリングをすることなく、処理装置に同一オリジナルパケットの全フラグメントパケットを転送し、処理遅延を防ぐことができる。転送先管理装置により、受信装置の負荷を低減できる。
【０１３８】
本実施例は、転送先管理装置への問い合わせを減らし、パケット転送速度を向上するために、転送先情報キャッシュを使用する。転送先情報キャッシュは省略されてもよい。負荷分散ポリシは、上記例と異なる規則を示してもよい。例えば、負荷分散ポリシは、ＩＰアドレスのみから転送先を決定してもよいし、処理装置の現在負荷を参照してもよい。負荷分散ポリシは、受信順番に基づく振分け先決定方法を定義してもよい。一つの管理プログラムが、複数又は全ての受信装置のために実行されてもよい。
【実施例２】
【０１３９】
実施例１において、一つの転送先管理装置１０５が、転送先情報データベース４５３及び管理プログラム群４５４を有する。本例において、受信装置１０４−１〜１０４Ｎのそれぞれが、転送先情報データベース４５３−１〜４５３−Ｎ及び管理プログラム４５４−１〜４５４−Ｎを有する。本実施例によれば、フラグメントパケット転送先の決定のための負荷を分散することができる。以下においては、実施例１との相違点を主に説明する。
【０１４０】
図２１は、受信装置１０４−１、１０４−Ｎを例示している。他の受信装置の構成も同様である。受信装置１０４−１は、受信プログラム４０３−１、転送先情報データベース４５３−１、及び管理プログラム４５４−１を有している。受信プログラム４０３−１は、負荷分散ポリシ４３１−１、フラグメントパケット判定モジュール４３２−１、パケット保留バッファ４３３−１を含む。管理プログラム４５４−１は、テーブル管理モジュール５４１−１及び抽出モジュール５４２−１を含む。受信装置１０４−１は、転送先情報キャッシュ４０５を有していない。
【０１４１】
受信装置１０４−Ｎは、受信プログラム４０３−Ｎ、転送先情報データベース４５３−Ｎ、及び管理プログラム４５４−Ｎを有している。受信プログラム４０３−Ｎは、負荷分散ポリシ４３１−Ｎ、フラグメントパケット判定モジュール４３２−Ｎ、パケット保留バッファ４３３−Ｎを含む。管理プログラム４５４−Ｎは、テーブル参照モジュール５４１−Ｎ及び抽出モジュール５４２−Ｎを含む。受信装置１０４−Ｎは、転送先情報キャッシュ４０５を有していない。
【０１４２】
転送先情報データベース４５３−１〜４５３−Ｎは同期している。管理プログラム４５４−１〜４５４−Ｎは、それぞれ、自装置の転送先情報データベース４５３−１〜４５３−Ｎを更新すると、その更新を他の受信装置にブロードキャストにより通知する。管理プログラム４５４−１〜４５４−Ｎは、それぞれ、他の受信装置から受信した更新の通知に従って、自装置の転送先情報データベース４５３−１〜４５３−Ｎを更新する。
【０１４３】
本実施例は転送先情報キャッシュ４０５を保持していないため、フラグメントパケット判定モジュール４３２−Ｎは、それぞれ、転送先情報データベース４５３−１〜４５３−Ｎから、フラグメントパケット転送先の情報を取得する。
【０１４４】
転送先情報データベース４５３−１〜４５３−Ｎが同期している点及び転送先情報キャッシュ４０５に関する処理が省略される点を除き、各プログラムの動作は実施例１と基本的に同様である。受信プログラム４０３−１〜４０３−Ｎは、それぞれ、自装置の管理プログラム４５４−１〜４５４−Ｎと受信装置内で通信する。
【０１４５】
本実施例によれば、転送先管理装置を使用することなく、受信装置冗長構成が、リアセンブリングを行うことなくフラグメントパケットの転送先処理装置を決定することができる。なお、全ての受信装置が、データベースの全ての情報又は前回同期からの更新内容を示す情報を、定期的にブロードキャストしてもよい。
【０１４６】
上記実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明したすべての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【０１４７】
また、上記の各構成・機能・処理部等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記録装置、または、ＩＣカード、ＳＤカード等の記録媒体に置くことができる。
【符号の説明】
【０１４８】
１０１：パケット送信装置、１０２：外部ネットワーク、１０３：受信装置冗長構成、１０４−１〜１０４−Ｎ：パケット受信装置、１０５：転送先管理装置、１０６：処理装置冗長構成、１０７−１〜１０７−Ｍ：処理装置、４３３：パケット保留バッファ、４３２：フラグメントパケット判定モジュール、４３１：負荷分散ポリシ、４０５：転送先情報キャッシュ、４５４：管理プログラム郡、４５３：転送先情報データベース、５４１−１〜５４１−Ｎ：テーブル参照モジュール、５４２−１〜５４２−Ｎ：抽出モジュール
【図１】
2015226200.tif 000003
【図２】
2015226200.tif 000004
【図３】
2015226200.tif 000005
【図４】
2015226200.tif 000006
【図５】
2015226200.tif 000007
【図６】
2015226200.tif 000008
【図７】
2015226200.tif 000009
【図８】
2015226200.tif 000010
【図９】
2015226200.tif 000011
【図１０】
2015226200.tif 000012
【図１１】
2015226200.tif 000013
【図１２】
2015226200.tif 000014
【図１３】
2015226200.tif 000015
【図１４】
2015226200.tif 000016
【図１５】
2015226200.tif 000017
【図１６】
2015226200.tif 000018
【図１７】
2015226200.tif 000019
【図１８】
2015226200.tif 000020
【図１９】
2015226200.tif 000021
【図２０】
2015226200.tif 000022
【図２１】
2015226200.tif 000023