(57)【要約】【課題】  パケットを格納するバッファが削減されたパケット中継装置及びパケット中継方法を提供する。【解決手段】  パケット中継装置は、第１及び第２フローのパケットを受信するパケット受信部と、第１及び第２フローのパケットを第３フローのパケットに変換して送信するパケット送信部と、第１フローのパケットに付与された第１及び第３フロー内のシーケンス番号の対応関係と、第２フローのパケットに付与された第２及び第３フロー内のシーケンス番号の対応関係とが登録されたテーブルを記憶する記憶部と、第３フローにおいて損失したパケットのシーケンス番号の通知を受信する通知受信部と、そのシーケンス番号に対応する第１または第２フロー内のシーケンス番号を、テーブルから検索する検索処理部と、検索したシーケンス番号のパケットの損失の通知を、該当するフローのパケットの送信元に送信する通知送信部とを有する。【選択図】図２
2018074261.tif 000002
【特許請求の範囲】
【請求項１】
第１フローのパケットと第２フローのパケットを受信するパケット受信部と、
前記第１フローのパケット及び前記第２フローのパケットを第３フローのパケットに変換して送信するパケット送信部と、
前記第１フローのパケットに付与された前記第１フロー内のシーケンス番号及び前記第３フロー内のシーケンス番号の対応関係と、前記第２フローのパケットに付与された前記第２フロー内のシーケンス番号及び前記第３フロー内のシーケンス番号の対応関係とが登録されたテーブルを記憶する記憶部と、
前記第３フローにおいて損失したパケットのシーケンス番号の通知を受信する通知受信部と、
前記通知が示す前記第３フロー内のシーケンス番号に対応する前記第１フロー内のシーケンス番号または前記第２フロー内のシーケンス番号を、前記テーブルから検索する検索処理部と、
前記検索処理部が検索したシーケンス番号のパケットの損失の通知を、前記第１フローと前記第２フローのうち、前記検索したシーケンス番号に該当するフローのパケットの送信元に送信する通知送信部とを有することを特徴とするパケット中継装置。
【請求項２】
前記パケット送信部は、前記通知送信部が送信した通知に応じて前記第１フローのパケットの送信元または前記第２フローのパケットの送信元から再送されたパケットを前記第３フローのパケットに変換して送信することを特徴とする請求項１に記載のパケット中継装置。
【請求項３】
前記第１フローのパケットに付与された前記第１フロー内のシーケンス番号及び前記第３フロー内のシーケンス番号の対応関係と、前記第２フローのパケットに付与された前記第２フロー内のシーケンス番号及び前記第３フロー内のシーケンス番号の対応関係とを前記テーブルに登録する登録処理部と、
前記パケット受信部が受信したパケットに付与された前記第１フロー内のシーケンス番号または前記第２フロー内のシーケンス番号に基づきパケットの損失を検出する検出部とを有し、
前記登録処理部は、前記検出部がパケットの損失を検出した場合、該損失したパケットに付与された前記第１フロー内のシーケンス番号及び前記第３フロー内のシーケンス番号の対応関係、または前記損失したパケットに付与された前記第２フロー内のシーケンス番号及び前記第３フロー内のシーケンス番号の対応関係を前記テーブルに登録することを特徴とする請求項１または２に記載のパケット中継装置。
【請求項４】
前記通知受信部が受信した前記通知に基づきパケットの損失の頻度を算出する算出部と、
前記第３フローのパケットを蓄積する蓄積部と、
前記頻度が所定値以上である場合、前記パケット送信部が送信した前記第３フローのパケットを前記蓄積部に蓄積し、前記通知受信部が受信した前記通知に応じ、前記蓄積部に蓄積された前記第３フローのパケットが前記パケット送信部から再送されるように制御する再送制御部とを有することを特徴とする請求項１乃至３の何れかに記載のパケット中継装置。
【請求項５】
第４フローのパケットを受信するパケット受信部と、
前記第４フローのパケットに第５フロー内のシーケンス番号または第６フロー内のシーケンス番号を割り当てる割り当て処理部と、
前記割り当て処理部の割り当てに従い、前記第４フローのパケットを前記第５フローのパケットまたは前記第６フローのパケットに変換して送信するパケット送信部と、
前記第４フローのパケットに付与された前記第４フロー内のシーケンス番号と該パケットに割り当てられた前記第５フロー内のシーケンス番号または前記第６フロー内のシーケンス番号の対応関係とが登録されたテーブルを記憶する記憶部と、
前記第５フローまたは前記第６フローにおいて損失したパケットのシーケンス番号の通知を受信する通知受信部と、
前記通知が示す前記第５フロー内のシーケンス番号または前記第６フロー内のシーケンス番号に対応する前記第４フロー内のシーケンス番号を前記テーブルから検索する検索処理部と、
前記検索処理部が検索したシーケンス番号のパケットの損失の通知を、前記第４フローのパケットの送信元に送信する通知送信部とを有することを特徴とするパケット中継装置。
【請求項６】
第１フローのパケットと第２フローのパケットを受信し、
前記第１フローのパケット及び前記第２フローのパケットを第３フローのパケットに変換して送信し、
前記第１フローのパケットに付与された前記第１フロー内のシーケンス番号及び前記第３フロー内のシーケンス番号の対応関係と、前記第２フローのパケットに付与された前記第２フロー内のシーケンス番号及び前記第３フロー内のシーケンス番号の対応関係とをテーブルに登録し、
前記第３フローにおいて損失したパケットのシーケンス番号の通知を受信し、
前記通知が示す前記第３フロー内のシーケンス番号に対応する前記第１フロー内のシーケンス番号または前記第２フロー内のシーケンス番号を、前記テーブルから検索し、
該検索したシーケンス番号のパケットの損失の通知を、前記第１フローと前記第２フローのうち、前記検索したシーケンス番号に該当するフローのパケットの送信元に送信することを特徴とするパケット中継方法。
【請求項７】
第４フローのパケットを受信し、
前記第４フローのパケットに第５フロー内のシーケンス番号または第６フロー内のシーケンス番号を割り当てる割り当て、
該割り当てに従い、前記第４フローのパケットを前記第５フローのパケットまたは前記第６フローのパケットに変換して送信し、
前記第４フローのパケットに付与された前記第４フロー内のシーケンス番号と該パケットに割り当てられた前記第５フロー内のシーケンス番号または前記第６フロー内のシーケンス番号の対応関係とをテーブルに登録し、
前記第５フローまたは前記第６フローにおいて損失したパケットのシーケンス番号の通知を受信し、
前記通知が示す前記第５フロー内のシーケンス番号または前記第６フロー内のシーケンス番号に対応する前記第４フロー内のシーケンス番号を前記テーブルから検索し、
該検索したシーケンス番号のパケットの損失の通知を、前記第４フローのパケットの送信元に送信することを特徴とするパケット中継方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本件は、パケット中継装置及びパケット中継方法に関する。
【背景技術】
【０００２】
複数の通信回線を仮想的に１つの通信回線として扱う技術としてリンクアグリゲーションがある。リンクアグリゲーションによると、例えばＭＰＴＣＰ（Multi Path Transmission Control Protocol）を用いて複数の経路によりＴＣＰストリームの転送が可能である。
【０００３】
リンクアグリゲーションに対応する通信装置とリンクアグリゲーションに対応していない通信装置の間で通信を行う場合、ＴＣＰとＭＰＴＣＰの間でプロトコル変換が可能なパケット中継装置を各通信装置の間に設ける必要がある。なお、特許文献１には、プロトコル変換機能を備えた記憶システムが記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特表２００５−５０５０３７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
パケット中継装置は、各通信装置からのパケットの損失通知に応じて、ＴＣＰの通信区間またはＭＰＴＣＰの通信区間にパケットを再送する。このため、パケット中継装置には、パケットの正常受信が確認されるまでパケットを一時的に格納するための大容量のバッファが必要となり、コストダウンや小型化の妨げとなっている。
【０００６】
そこで本件は、パケットを格納するバッファが削減されたパケット中継装置及びパケット中継方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
１つの態様では、パケット中継装置は、第１フローのパケットと第２フローのパケットを受信するパケット受信部と、前記第１フローのパケット及び前記第２フローのパケットを第３フローのパケットに変換して送信するパケット送信部と、前記第１フローのパケットに付与された前記第１フロー内のシーケンス番号及び前記第３フロー内のシーケンス番号の対応関係と、前記第２フローのパケットに付与された前記第２フロー内のシーケンス番号及び前記第３フロー内のシーケンス番号の対応関係とが登録されたテーブルを記憶する記憶部と、前記第３フローにおいて損失したパケットのシーケンス番号の通知を受信する通知受信部と、前記通知が示す前記第３フロー内のシーケンス番号に対応する前記第１フロー内のシーケンス番号または前記第２フロー内のシーケンス番号を、前記テーブルから検索する検索処理部と、前記検索処理部が検索したシーケンス番号のパケットの損失の通知を、前記第１フローと前記第２フローのうち、前記検索したシーケンス番号に該当するフローのパケットの送信元に送信する通知送信部とを有する。
【０００８】
１つの態様では、他のパケット中継装置は、第４フローのパケットを受信するパケット受信部と、前記第４フローのパケットに第５フロー内のシーケンス番号または第６フロー内のシーケンス番号を割り当てる割り当て処理部と、前記割り当て処理部の割り当てに従い、前記第４フローのパケットを前記第５フローのパケットまたは前記第６フローのパケットに変換して送信するパケット送信部と、前記第４フローのパケットに付与された前記第４フロー内のシーケンス番号と該パケットに割り当てられた前記第５フロー内のシーケンス番号または前記第６フロー内のシーケンス番号の対応関係とが登録されたテーブルを記憶する記憶部と、前記第５フローまたは前記第６フローにおいて損失したパケットのシーケンス番号の通知を受信する通知受信部と、前記通知が示す前記第５フロー内のシーケンス番号または前記第６フロー内のシーケンス番号に対応する前記第４フロー内のシーケンス番号を前記テーブルから検索する検索処理部と、前記検索処理部が検索したシーケンス番号のパケットの損失の通知を、前記第４フローのパケットの送信元に送信する通知送信部とを有する。
【０００９】
１つの態様では、パケット中継方法は、第１フローのパケットと第２フローのパケットを受信し、前記第１フローのパケット及び前記第２フローのパケットを第３フローのパケットに変換して送信し、前記第１フローのパケットに付与された前記第１フロー内のシーケンス番号及び前記第３フロー内のシーケンス番号の対応関係と、前記第２フローのパケットに付与された前記第２フロー内のシーケンス番号及び前記第３フロー内のシーケンス番号の対応関係とをテーブルに登録し、前記第３フローにおいて損失したパケットのシーケンス番号の通知を受信し、前記通知が示す前記第３フロー内のシーケンス番号に対応する前記第１フロー内のシーケンス番号または前記第２フロー内のシーケンス番号を、前記テーブルから検索し、該検索したシーケンス番号のパケットの損失の通知を、前記第１フローと前記第２フローのうち、前記検索したシーケンス番号に該当するフローのパケットの送信元に送信する方法である。
【００１０】
１つの態様では、他のパケット中継方法は、第４フローのパケットを受信し、前記第４フローのパケットに第５フロー内のシーケンス番号または第６フロー内のシーケンス番号を割り当てる割り当て、該割り当てに従い、前記第４フローのパケットを前記第５フローのパケットまたは前記第６フローのパケットに変換して送信し、  前記第４フローのパケットに付与された前記第４フロー内のシーケンス番号と該パケットに割り当てられた前記第５フロー内のシーケンス番号または前記第６フロー内のシーケンス番号の対応関係とをテーブルに登録し、前記第５フローまたは前記第６フローにおいて損失したパケットのシーケンス番号の通知を受信し、前記通知が示す前記第５フロー内のシーケンス番号または前記第６フロー内のシーケンス番号に対応する前記第４フロー内のシーケンス番号を前記テーブルから検索し、該検索したシーケンス番号のパケットの損失の通知を、前記第４フローのパケットの送信元に送信する方法である。
【発明の効果】
【００１１】
１つの側面として、パケットを格納するバッファを削減することができる。
【図面の簡単な説明】
【００１２】
【図１】比較例のパケット中継装置の動作を示す図である。
【図２】実施例のパケット中継装置の動作を示す図である。
【図３】ＴＣＰパケットのフォーマットの一例を示す図である。
【図４】実施例のパケット中継装置を示す構成図である。
【図５】パケット管理テーブルの一例を示す図である。
【図６】サーバ装置から受信したデータパケットの処理の一例を示すフローチャートである。
【図７】クライアント装置から受信したＡＣＫ（ACKnowledge）パケットの処理の一例を示すフローチャートである。
【図８】サーバ装置からクライアント装置へのデータパケットの中継処理の一例を示すシーケンス図である。
【図９】サーバ装置からクライアント装置へのデータパケットの中継処理の他例を示すシーケンス図である。
【図１０】クライアント装置から受信したデータパケットの処理の一例を示すフローチャートである。
【図１１】サーバ装置から受信したＡＣＫパケットの処理の一例を示すフローチャートである。
【図１２】クライアント装置からサーバ装置へのデータパケットの中継処理の一例を示すシーケンス図である。
【図１３】クライアント装置からサーバ装置へのデータパケットの中継処理の他例を示すシーケンス図である。
【図１４】パケット中継装置からクライアント装置へのＡＣＫパケットの送信処理の一例を示すシーケンス図である。
【図１５】他の実施例のパケット中継装置を示す構成図である。
【図１６】動作の切り替え処理の一例を示すフローチャートである。
【図１７】サーバ装置から受信したデータパケットの処理の他例を示すフローチャートである。
【図１８】クライアント装置から受信したＡＣＫパケットの処理の一例を示すフローチャートである。
【図１９】サーバ装置からクライアント装置へのデータパケットの中継処理の他例を示すシーケンス図である。
【図２０】他の実施例のパケット中継装置を示す構成図である。
【図２１】サーバ装置からクライアント装置へのデータパケットの中継処理の他例を示すシーケンス図である。
【図２２】サーバ装置からクライアント装置へのデータパケットの中継処理の他例を示すシーケンス図である。
【発明を実施するための形態】
【００１３】
図１は、比較例のパケット中継装置１ａの動作を示す図である。パケット中継装置１ａは、例えばレイヤ２スイッチであり、サーバ装置２からクライアント装置３にパケットを中継する。なお、クライアント装置３としては、例えばパーソナルコンピュータなどの端末装置が挙げられるが、これに限定されない。
【００１４】
パケット中継装置１ａは、リンクアグリゲーションにより束ねられた例えば２本の通信回線ＬＡを介してサーバ装置２と接続されている。パケット中継装置１ａは、一方の通信回線によりフロー＃１のパケットを受信し、他方の通信回線によりフロー＃２のパケットを受信する。フロー＃１，＃２は、パケットの送信元ＩＰ（Internet protocol）アドレス及び送信元ポート番号などにより決定されるパケットのストリームである。
【００１５】
パケット中継装置１ａとサーバ装置２は、例えばＭＰＴＣＰに基づき通信する。つまり、パケット中継装置１ａとサーバ装置２の間の区間Ｋｂの通信ではＭＰＴＣＰが用いられる。
【００１６】
また、パケット中継装置１ａは、１本の通信回線を介してクライアント装置３に接続されている。パケット中継装置１ａは、その通信回線によりフロー＃３のパケットを送信する。パケット中継装置１ａとクライアント装置３は、例えばＴＣＰに基づき通信する。つまり、パケット中継装置１ａとクライアント装置３の間の区間Ｋａの通信ではＴＣＰが用いられる。また、各通信回線の種類としては、例えば１０ＧＢＡＳＥ−ＳＲなどが挙げられるが、これに限定されない。
【００１７】
サーバ装置２は、その上流側のネットワークから受信したパケット（ＰＫＴ参照）またはサーバ装置２内のアプリケーションで生成されたパケットを、２本の通信回線の送信用のバッファ２０，２１に分けて格納する。本例では、１０個のパケットがフロー＃１，＃２ごとにバッファ２０，２１に格納された場合を挙げる。一例として、一方のバッファ２０には４個のフロー＃１のパケットが格納され、他方のバッファ２１には６個のフロー＃２のパケットが格納されている。
【００１８】
フロー＃１のパケットのＴＣＰヘッダ内のシーケンス番号の領域には、フロー＃１内のシーケンス番号＃ａ１〜＃ａ４（正の整数）が付与されている。また、フロー＃１のパケットには、シーケンス番号＃ａ１〜＃ａ４に対応するフロー＃３内のシーケンス番号＃１，＃３，＃５，＃７も付与されている。なお、区間ＫｂのＴＣＰの通信では、フロー＃１内のシーケンス番号＃ａ１〜＃ａ４が用いられる。
【００１９】
フロー＃２のパケットのＴＣＰヘッダ内のシーケンス番号の領域には、フロー＃２内のシーケンス番号＃ｂ１〜＃ｂ３（正の整数）が付与されている。また、フロー＃２のパケットには、シーケンス番号＃ｂ１〜＃ｂ３に対応するフロー＃３内のシーケンス番号＃２，＃４，＃６も付与されている。なお、区間ＫｂのＴＣＰの通信では、フロー＃２内のシーケンス番号＃ｂ１〜＃ｂ３が用いられる。
【００２０】
サーバ装置２は、各バッファ２０，２１からパケットを順次に読み出してパケット中継装置１ａに送信する。パケット中継装置１ａは、サーバ装置２から受信したパケットをフロー＃３のパケットに変換してクライアント装置３に送信する。このとき、サーバ装置２は、再送に備えて、各パケットをバッファ１０ａに格納する。各パケットのＴＣＰヘッダ内のシーケンス番号の領域には、フロー＃１，＃２内のシーケンス番号＃ａ１〜＃ａ４，＃ｂ１〜ｂ３に代えて、フロー＃３内のシーケンス番号＃１〜＃１０が付与されている。
【００２１】
クライアント装置３は、パケット中継装置１ａから受信したパケットをバッファ３０に格納する。クライアント装置３は、例えばシーケンス番号＃３のパケットが損失した場合、その旨を通知する損失通知をパケット中継装置１ａに送信する。損失通知としては、例えば、ＴＣＰで規定されている選択確認応答のＳＡＣＫ（Selective ACKnowledgement）オプションを含むＡＣＫパケットが挙げられるが、これに限定されない。損失通知には、フロー＃３内で損失したパケットのシーケンス番号＃３が示されている。
【００２２】
パケット中継装置１ａは、シーケンス番号＃３のパケットの損失通知を受信すると、バッファ１０ａからそのパケットを読み出してクライアント装置３に再送する。これにより、クライアント装置３は、フロー＃３内のシーケンス番号＃１〜＃７のパケットを受信することができる。
【００２３】
このように、パケット中継装置１ａは、クライアント装置３からの損失通知に応じパケットを再送する。このため、パケット中継装置１ａには、パケットの正常受信が確認されるまでパケットを一時的に格納するための大容量のバッファ１０ａが必要となり、コストダウンや小型化の妨げとなっている。
【００２４】
そこで、実施例のパケット中継装置は、ＴＣＰの区間Ｋａからの損失通知に示されるフロー＃３内のシーケンス番号を、フロー＃１またはフロー＃２のうち、該当するフロー内のシーケンス番号に変換してＭＰＴＣＰの区間Ｋｂに中継する。これにより、サーバ装置２は、中継された損失通知に示されたフロー＃１，＃２内のシーケンス番号に基づきパケットを再送するため、パケット中継装置は再送処理が不要となる。したがって、パケット中継装置から再送用のバッファ１０ａが削減される。
【００２５】
図２は、実施例のパケット中継装置１の動作を示す図である。図２において、図１と共通する構成には同一の符号を付し、その説明を省略する。
【００２６】
パケット中継装置１には、再送用のバッファ１０ａが設けられておらず、各区間Ｋａ，Ｋｂのシーケンス番号の対応関係を示すパケット管理テーブル１０を有する。パケット管理テーブル１０には、区間ＫａのＴＣＰのシーケンス番号と区間ＫｂのＭＰＴＣＰのシーケンス番号が互いに対応付けられて登録されている。なお、パケット管理テーブル１０は、テーブルの一例であり、メモリなどの記憶手段に記憶されている。
【００２７】
パケット中継装置１は、サーバ装置２から受信したパケットからフロー＃１〜＃３内の各シーケンス番号を取得してパケット管理テーブル１０に登録する。つまり、パケット管理テーブル１０は、フロー＃１のパケットに付与されたフロー＃１内のシーケンス番号及びフロー＃３内のシーケンス番号の対応関係と、フロー＃２のパケットに付与されたフロー＃２内のシーケンス番号及びフロー＃３内のシーケンス番号の対応関係とが登録されている。
【００２８】
パケット中継装置１は、フロー＃３において損失したパケットのシーケンス番号＃３の損失通知をクライアント装置３から受信する。パケット中継装置１は、損失通知が示すフロー＃３内のシーケンス番号＃３に対応するフロー＃１内のシーケンス番号＃ａ２を、パケット管理テーブル１０から検索する。
【００２９】
パケット中継装置１は、検索結果から得たフロー＃１内のシーケンス番号＃ａ２を示す損失通知を生成して、サーバ装置２に送信する。サーバ装置２は、パケット中継装置１から損失通知を受信すると、損失通知が示すシーケンス番号＃ａ２に応じて、バッファ２０からシーケンス番号＃ａ２のパケットを読み出して再送する。パケット中継装置１は、再送されたパケットをクライアント装置３に中継する。
【００３０】
このように、パケット中継装置１は、クライアント装置３から受信した損失通知のシーケンス番号を変換してサーバ装置２に中継する。サーバ装置２は、パケット中継装置１から中継された損失通知が示すシーケンス番号に応じてパケットを再送する。したがって、パケット中継装置１には再送用のバッファ１０ａが必要ない。なお、本例では、サーバ装置２からクライアント装置３にパケットを中継する場合を挙げたが、クライアント装置３からサーバ装置２に中継する場合でも上記の動作は同様に行われる。
【００３１】
本例において、パケットとしてはＴＣＰパケットが用いられる。ＴＣＰパケットには、ペイロードとしてのデータを格納するデータパケットと、データパケットの受信確認に用いられる確認応答としてのＡＣＫパケットとがある。データパケットはパケットの一例であり、ＡＣＫパケットは、損失したデータパケットのシーケンス番号の通知の一例である。
【００３２】
図３は、ＴＣＰパケットのフォーマットの一例を示す図である。ＴＣＰパケットは、送信元ＩＰアドレス及び宛先ＩＰアドレスを含むＩＰヘッダと、ＴＣＰヘッダと、ペイロードとを有する。ＴＣＰヘッダには、ポート番号、シーケンス番号、確認応答番号、フラグ領域、及びオプション領域が含まれる。
【００３３】
ポート番号には、宛先ポート番号と送信元ポート番号が含まれる。シーケンス番号には、データパケットのフロー＃１〜＃３内のシーケンス番号がセットされる。上記の例の場合、区間Ｋｂのデータパケットのシーケンス番号には、フロー＃１内のシーケンス番号＃ａ１〜ａ４またはフロー＃２内のシーケンス番号＃ｂ１〜ｂ３がセットされている。また、区間Ｋａのデータパケットのシーケンス番号には、フロー＃１内のシーケンス番号＃１〜７がセットされている。
【００３４】
確認応答番号には、受信確認対象のデータパケットのシーケンス番号に、そのデータパケットのサイズを加えた値がセットされる。フラグ領域には、ＴＣＰパケットの種別を示すものが含まれる。例えば、ＡＣＫパケットのＡＣＫフラグは「１」を示す。
【００３５】
オプション領域には、オプション番号、データ長、及び各種のデータが含まれる。オプション番号＃５のデータは、選択確認応答のＳＡＣＫに用いられる。本実施例では、ＳＡＣＫが示す正常受信されたデータパケットのシーケンス番号の範囲に基づき、損失したデータパケットのシーケンス番号が検出される。
【００３６】
より具体的には、ＳＡＣＫのデータには、第１ブロック番号と第２ブロック番号が含まれる。第１ブロック番号には、シーケンス番号が抜けた後で最初に到着したデータパケットのシーケンス番号がセットされる。第２ブロック番号には、次に到着予定のデータパケットのシーケンス番号がセットされる。パケット中継装置１は、第１ブロック番号から、損失したデータパケットのシーケンス番号を検出する。
【００３７】
オプション番号＃３０のデータは、シーケンス番号及び確認応答番号の変換に用いられる。より具体的には、オプション番号＃３０のデータは、変換シーケンス番号及び変換確認応答番号が含まれる。上記の例の場合、区間Ｋｂのデータパケットの変換シーケンス番号には、フロー＃３内のシーケンス番号＃１〜７がセットされている。
【００３８】
例えば、フロー＃１内のシーケンス番号＃ａ１のデータパケットには、変換シーケンス番号として、フロー＃３内のシーケンス番号＃１が付与される。また、フロー＃２内のシーケンス番号＃ｂ１のデータパケットには、変換シーケンス番号として、フロー＃３内のシーケンス番号＃２が付与される。パケット中継装置１は、シーケンス番号に変換シーケンス番号をセットすることにより、フロー＃１のデータパケット及びフロー＃２のデータパケットをフロー＃３のデータパケットに変換してクライアント装置３に送信する。なお、パケット中継装置１は、クライアント装置３からサーバ装置２にデータパケットを中継する場合、フロー＃１，＃２内のシーケンス番号をデータパケットに割り当てて、割り当てたシーケンス番号を変換シーケンス番号にセットしてデータパケットを送信する。
【００３９】
また、変換確認応答番号は確認応答番号の変換後の値である。上記の例の場合、パケット中継装置１は、確認応答番号に変換確認応答番号をセットすることにより、フロー＃１のデータパケット及びフロー＃２のデータパケットをフロー＃３のデータパケットに変換してクライアント装置３に送信する。なお、パケット中継装置１は、クライアント装置３からサーバ装置２にデータパケットを中継する場合、フロー＃１，＃２内のシーケンス番号をデータパケットに割り当てて、割り当てたシーケンス番号に対応する確認応答番号を変換確認応答番号にセットしてデータパケットを送信する。
【００４０】
次にパケット中継装置１の構成について述べる。以下の説明では、クライアント装置３からサーバ装置２に向かう方向を「上り方向」と表記し、サーバ装置２からクライアント装置３に向かう方向を「下り方向」と表記する。図２には、下り方向のフロー＃１〜＃３のみが示されているが、これとは伝送方向が反対の上り方向のフロー＃１〜＃３も存在する。下り方向の中継処理において、フロー＃１〜＃３は、それぞれ、第１〜第３フローの一例であり、上り方向の中継処理において、フロー＃１〜＃３は、それぞれ、第５フロー、第６フロー及び第４フローの一例である。
【００４１】
図４は、実施例のパケット中継装置１を示す構成図である。パケット中継装置１は、送信ポートＰｓ＃１〜＃３、受信ポートＰｒ＃１〜＃３、分離部１１０，１２０、多重部１１８，１２７、データ処理部１１１，１２１、割り当て処理部１１２、登録処理部１１３，１２２、及び変換部１１４，１２３を有する。さらに、パケット中継装置１は、応答処理部１１５，１２４、応答生成部１１６，１１７，１２５，１２６、及びメモリＭを有する。
【００４２】
各部１１０〜１１８，１２０〜１２７は、例えば、ＣＰＵ（Central Processing Unit）を駆動するソフトウェアの機能、またはＦＰＧＡ（Field Programmable Gate Array）やＡＳＩＣ（Application Specific Integrated Circuit）により構成される。
【００４３】
メモリＭには、パケット管理テーブル１００ａ，１００ｂが記憶されている。一方のパケット管理テーブル１００ａには、下り方向に中継されるデータパケットのシーケンス番号の対応関係が登録され、他方のパケット管理テーブル１００ｂには、上り方向に中継されるデータパケットのシーケンス番号の対応関係が登録さている。なお、メモリＭは、パケット管理テーブル１００ａ，１００ｂを記憶する記憶部の一例である。記憶部としては、ハードディスクドライブなどが用いられてもよい。
【００４４】
図５は、パケット管理テーブル１００ａの一例を示す図である。パケット管理テーブル１００ａには、区間Ｋａのシーケンス番号ＳＥＱａ（つまりフロー＃３内のシーケンス番号）と区間Ｋｂのシーケンス番号ＳＥＱｂ（つまりフロー＃１，＃２内のシーケンス番号）の対応関係が登録されている。また、パケット管理テーブル１００ａには、区間Ｋｂのフロー＃１，＃２を識別するためのフローＩＤが登録されている。
【００４５】
例えば、区間Ｋａのシーケンス番号ＳＥＱａである「30001」は、区間Ｋｂのシーケンス番号ＳＥＱｂである「50001」に対応する。つまり、フロー＃１内のシーケンス番号「50001」のデータパケットは、フロー＃３内のシーケンス番号「30001」のデータパケットに変換されて送信される。
【００４６】
また、区間Ｋａのシーケンス番号ＳＥＱａである「31001」は、区間Ｋｂのシーケンス番号ＳＥＱｂである「70001」に対応する。つまり、フロー＃２内のシーケンス番号「70001」のデータパケットは、フロー＃３内のシーケンス番号「31001」のデータパケットに変換されて送信される。
【００４７】
また、パケット管理テーブル１００ａには、シーケンス番号ＳＥＱａの次のシーケンス番号ＳＥＱａ−ＮＸＴ及びシーケンス番号ＳＥＱｂの次のシーケンス番号ＳＥＱｂ−ＮＸＴが登録されている。パケット中継装置１は、シーケンス番号ＳＥＱａ−ＮＸＴ，ＳＥＱｂ−ＮＸＴに基づき、例えばデータパケットの損失を検出する。
【００４８】
また。パケット管理テーブル１００ａには、シーケンス番号ＳＥＱａ，ＳＥＱｂごとにフラグＦｎ，Ｆｄ，Ｆｌ，Ｆａ，Ｆｓが登録されている。フラグＦｎは、データパケットが送信され、そのＡＣＫパケットが未受信である状態を示す。フラグＦｄは、データパケットが損失したことを示す。フラグＦｌは、データパケットの損失をＡＣＫパケットにより通知済みであることを示す。フラグＦａは、データパケットが送信され、そのＡＣＫパケットが受信済みである状態を示す。Ｆｓは、データパケットのＳＡＣＫのＡＣＫパケットが送信済みであることを示す。
【００４９】
パケット中継装置１は、データパケットの状態をシーケンス番号ごとのフラグにより管理する。なお、本例ではパケット管理テーブル１００ａの構成を挙げたが、パケット管理テーブル１００ｂも上記と同様の構成を有する。
【００５０】
再び図４を参照すると、送信ポートＰｓ＃１〜＃３は、例えば変調器やレーザダイオードなどを含み、ＴＣＰパケットを送信する。送信ポートＰｓ＃１はフロー＃１のＴＣＰパケットをサーバ装置２に送信し、送信ポートＰｓ＃２はフロー＃２のＴＣＰパケットをサーバ装置２に送信する。送信ポートＰｓ＃３はフロー＃３のＴＣＰパケットをクライアント装置３に送信する。
【００５１】
受信ポートＰｒ＃１〜＃３は、例えば復調器やフォトダイオードなどを含み、ＴＣＰパケットを受信する。受信ポートＰｒ＃１は、サーバ装置２からフロー＃１のＴＣＰパケットを受信し、受信ポートＰｒ＃２は、サーバ装置２からフロー＃２のＴＣＰパケットを受信する。受信ポートＰｒ＃３は、クライアント装置３からフロー＃３のＴＣＰパケットを受信する。
【００５２】
受信ポートＰｒ＃１，＃２は、サーバ装置２から送信された下り方向のＴＣＰパケットを受信する。受信ポートＰｒ＃１，＃２は、下り方向の中継処理におけるパケット受信部の一例として、フロー＃１のデータパケットとフロー＃２のデータパケットを受信する。また、受信ポートＰｒ＃１，＃２は、上り方向に中継されるデータパケットに対する下り方向のＡＣＫパケットを受信する。つまり、受信ポートＰｒ＃１，＃２は、上り方向のデータパケットの中継処理における通知受信部の一例として、フロー＃１またはフロー＃２において損失したデータパケットのシーケンス番号を通知するＡＣＫパケットを受信する。さらに、ＡＣＫパケットには、正常に受信されたデータパケットのシーケンス番号も通知するものもある。
【００５３】
受信ポートＰｒ＃１，＃２で受信されたＴＣＰパケットは分離部１２０に入力される。分離部１２０は、例えばフラグ領域またはペイロード領域の有無（図３参照）に基づきＴＣＰパケットの種類を判定し、データパケットをデータ処理部１２１に出力し、ＡＣＫパケットを応答処理部１２４に出力する。
【００５４】
データ処理部１２１はデータパケットについて各種の処理を実行する。データ処理部１２１は、データパケットのフローＩＤ及びシーケンス番号を取得する。フローＩＤは、例えば受信元の受信ポートＰｒ＃２，＃３の番号（＃２、＃３）やデータパケットのＩＰアドレス及びポート番号などから特定される。また、シーケンス番号はデータパケットのＴＣＰヘッダから取得される。
【００５５】
データ処理部１２１は、フローＩＤ及びシーケンス番号に基づきパケット管理テーブル１００ａを検索する。データ処理部１２１は、検索の結果からデータパケットのシーケンス番号の登録の有無を判定し、その判定結果に応じて登録処理部１２２にシーケンス番号の登録を指示する。
【００５６】
また、データ処理部１２１は、検索の結果、シーケンス番号が未登録である場合、例えば、パケット管理テーブル１００ａのシーケンス番号ＳＥＱｂ−ＮＸＴに基づきデータパケットの損失の有無を判定する。つまり、データ処理部１２１は、データパケットのフロー＃１，＃２内のシーケンス番号の連続性の欠如からデータパケットの損失を検出する。データ処理部１２１は、データパケットの損失がある場合、その損失したデータパケットのシーケンス番号の登録を登録処理部１２２に指示する。
【００５７】
このように、データ処理部１２１は、検出部の一例として、受信ポートＰｒ＃２，＃３が受信したデータパケットに付与されたフロー＃１内のシーケンス番号またはフロー＃２内のシーケンス番号に基づきデータパケットの損失を検出する。
【００５８】
登録処理部１２２は、データ処理部１２１の指示に従い、データパケットのシーケンス番号をパケット管理テーブル１００ａに登録する。より具体的には、登録処理部１２２は、データパケットのオプション領域から変換シーケンス番号を取得し、シーケンス番号と変換シーケンス番号の対応関係を登録する。これにより、受信されたデータパケットのフロー＃１，＃２内のシーケンス番号とフロー＃３内のシーケンス番号の対応関係が登録される。このとき、登録処理部１２２は、フローＩＤもパケット管理テーブル１００ａに登録する。
【００５９】
また、登録処理部１２２は、データ処理部１２１がデータパケットの損失を検出した場合、そのデータパケットに付与されたフロー＃１，＃２内のシーケンス番号及びフロー＃３内のシーケンス番号の対応関係をパケット管理テーブル１００ａに登録する。これにより、損失したデータパケットのフロー＃１，＃２内のシーケンス番号とフロー＃３内のシーケンス番号の対応関係が登録される。このとき、登録処理部１２２は、フローＩＤもパケット管理テーブル１００ａに登録する。
【００６０】
また、登録処理部１２２は、データパケットのシーケンス番号及び変換シーケンス番号からその次のシーケンス番号ＳＥＱａ−ＮＸＴ，ＳＥＱｂ−ＮＸＴを生成してパケット管理テーブル１００ａに登録する。登録処理部１２２は、登録処理の完了後、データパケットを変換部１２３に出力する。
【００６１】
変換部１２３は、フロー＃１，＃２のデータパケットをフロー＃３のデータパケットに変換する。より具体的には、変換部１２３は、データパケットに対し、シーケンス番号を変換シーケンス番号に付け替え、確認応答番号を変換確認応答番号に付け替える。これにより、データパケットにおいて、シーケンス番号及び確認応答番号がフロー＃１，＃２のものからフロー＃３のものに変換される。変換部１２３は、フロー＃３のデータパケット（ＤＰ）を多重部１２７に出力する。
【００６２】
多重部１２７は、応答生成部１２５から入力された確認応答のＡＣＫパケット（ＡＣＫ）、応答生成部１２６から入力された選択確認応答を含むＡＣＫパケット（ＳＡＣＫ）、及び変換部１２３から入力されたデータパケット（ＤＰ）を時分割多重して送信ポートＰｓ＃３に出力する。送信ポートＰｓ＃３は、多重部１２７から入力された各種のＴＣＰパケットをクライアント装置３に送信する。
【００６３】
このように、送信ポートＰｓ＃３及び変換部１２３は、下り方向のデータパケットの中継処理におけるパケット送信部の一例として、フロー＃１のデータパケット及びフロー＃２のデータパケットをフロー＃３のデータパケットに変換して送信する。また、受信ポートＰｒ＃１，＃２は、下り方向のデータパケットの中継処理における受信部の一例として、フロー＃１のデータパケットとフロー＃２のデータパケットを受信する。
【００６４】
応答処理部１２４は、分離部１２０から入力されたＡＣＫパケットに対し各種の処理を実行する。このＡＣＫパケットは、上り方向のデータパケットに対応する確認応答である。応答処理部１２４は、ＡＣＫパケットから確認応答番号及びフローＩＤを取得し、確認応答番号及びフローＩＤに基づきパケット管理テーブル１００ｂのフラグを制御する。
【００６５】
また、応答処理部１２４は、ＡＣＫパケットのオプション領域からＳＡＣＫの有無を判定する。応答処理部１２４は、ＳＡＣＫが有る場合、第１ブロック番号（図３参照）から、損失したデータパケットのフロー＃１，＃２内のシーケンス番号を特定し、そのシーケンス番号に対応するフロー＃３内のシーケンス番号をパケット管理テーブル１００ｂから検索する。
【００６６】
応答処理部１２４は、検索されたフロー＃３内のシーケンス番号（損失データパケットのフロー＃３内のシーケンス番号）を応答生成部１２６に通知し、そのシーケンス番号に基づきＳＡＣＫを含む確認応答のＡＣＫパケット（ＳＡＣＫ）の生成を指示する。また、応答処理部１２４は、ＳＡＣＫがない場合（損失データパケットがない場合）、パケット管理テーブル１００ｂに基づき確認応答番号をフロー＃３のものに変換して応答生成部１２５に通知し、そのシーケンス番号に基づき複確認応答のＡＣＫパケット（ＡＣＫ）の生成を指示する。
【００６７】
応答生成部１２５，１２６は、応答処理部１２４の指示に従いＡＣＫパケットを生成して多重部１２７に出力する。応答生成部１２５は、データパケットの正常受信を通知する確認応答としてのＡＣＫパケット（ＡＣＫ）を生成し、応答生成部１２６は、データパケットの損失を通知する選択確認応答を含むＡＣＫパケット（ＳＡＣＫ）を生成する。
【００６８】
このように、応答処理部１２４は、上り方向のデータパケットの中継処理における検索処理部の一例として、ＡＣＫパケット（ＳＡＣＫ）が示すフロー＃１内のシーケンス番号またはフロー＃２内のシーケンス番号に対応するフロー＃３内のシーケンス番号をパケット管理テーブル１００ｂから検索する。また、送信ポートＰｓ＃３は、上り方向のデータパケットの中継処理における通知送信部の一例として、応答処理部１２４が検索したシーケンス番号を通知するＡＣＫパケットを、フロー＃３のデータパケットの送信元であるクライアント装置３に送信する。
【００６９】
受信ポートＰｒ＃３は、クライアント装置３から送信された上り方向のＴＣＰパケットを受信する。受信ポートＰｒ＃３は、上り方向の中継処理におけるパケット受信部の一例として、フロー＃３のデータパケットを受信する。また、受信ポートＰｒ＃３は、下り方向に中継されるデータパケットに対する上り方向のＡＣＫパケットを受信する。つまり、受信ポートＰｒ＃３は、下り方向の中継処理における通知受信部の一例として、フロー＃３において損失したパケットのシーケンス番号を通知するＡＣＫパケットを受信する。また、ＡＣＫパケットには、フロー＃３において正常に受信されたデータパケットのシーケンス番号を通知するものもある。
【００７０】
受信ポートＰｒ＃３で受信されたＴＣＰパケットは分離部１１０に入力される。分離部１１０は、例えばフラグ領域及びペイロード領域の有無（図３参照）に基づきＴＣＰパケットの種類を判定し、データパケットをデータ処理部１１１に出力し、ＡＣＫパケットを応答処理部１１５に出力する。
【００７１】
データ処理部１１１はデータパケットについて各種の処理を実行する。データ処理部１１１は、データパケットのシーケンス番号を取得する。シーケンス番号はデータパケットのＴＣＰヘッダから取得される。
【００７２】
データ処理部１１１は、シーケンス番号に基づきパケット管理テーブル１００ｂを検索する。データ処理部１１１は、検索の結果からデータパケットのシーケンス番号の登録の有無を判定し、その判定結果に応じて割り当て処理部１１２にフローＩＤ及びシーケンス番号の割り当てを指示する。
【００７３】
また、データ処理部１１１は、検索の結果、シーケンス番号が未登録である場合、例えば、パケット管理テーブル１００ｂのシーケンス番号ＳＥＱａ−ＮＸＴに基づきデータパケットの損失の有無を判定する。つまり、データ処理部１１１は、データパケットのフロー＃３内のシーケンス番号の連続性の欠如からデータパケットの損失を検出する。データ処理部１１１は、データパケットの損失がある場合、その損失したデータパケットのシーケンス番号の割り当てを割り当て処理部１１２に指示する。
【００７４】
このように、データ処理部１１１は、受信ポートＰｒ＃３が受信したデータパケットに付与されたフロー＃３内のシーケンス番号に基づきデータパケットの損失を検出する。
【００７５】
割り当て処理部１１２は、データ処理部１１１の指示に従い、受信されたデータパケットにフローＩＤ及びシーケンス番号を割り当てる。また、割り当て処理部１１２は、データ処理部１１１の指示に従い、損失したデータパケットにフローＩＤ及びシーケンス番号を割り当てる。これにより、フロー＃３のデータパケットは、フロー＃１のデータパケットとフロー＃２のデータパケットに振り分けられる。なお、データパケットの振り分け方法について限定はない。
【００７６】
このように、割り当て処理部１１２は、フロー＃３のパケットにフロー＃１内のシーケンス番号またはフロー＃２内のシーケンス番号を割り当てる。割り当て処理部１１２は、割り当てたフローＩＤ及びシーケンス番号の登録を登録処理部１１３に指示する。
【００７７】
登録処理部１１３は、割り当て処理部１１２の指示に従い、フロー＃３のデータパケットに付与されたフロー＃３内のシーケンス番号とそのデータパケットに割り当てられたフロー＃１内のシーケンス番号またはフロー＃２内のシーケンス番号の対応関係とをパケット管理テーブル１００ｂに登録する。登録処理部１１３は、登録処理部の完了したデータパケットを変換部１１４に出力する。
【００７８】
変換部１１４は、フロー＃３のデータパケットをフロー＃１，＃２のデータパケットに変換する。より具体的には、変換部１１４は、データパケットのシーケンス番号を、そのデータパケットに割り当てられたシーケンス番号に付け替え、これに応じて確認応答番号を付け替える。これにより、データパケットにおいて、シーケンス番号及び確認応答番号がフロー＃３のものからフロー＃１，＃２のものに変換される。変換部１１４は、フロー＃１，＃２のデータパケット（ＤＰ）を多重部１１８に出力する。
【００７９】
多重部１１８は、応答生成部１１６から入力された確認応答のＡＣＫパケット（ＡＣＫ）、応答生成部１１７から入力された選択確認応答を含むＡＣＫパケット（ＳＡＣＫ）、及び変換部１１４から入力されたデータパケット（ＤＰ）を時分割多重して送信ポートＰｓ＃１，＃２に振り分けて出力する。多重部１１８は、フロー＃１のデータパケット及びＡＣＫパケットを送信ポートＰｓ＃１に出力し、フロー＃２のデータパケット及びＡＣＫパケットを送信ポートＰｓ＃２に出力する。送信ポートＰｓ＃１，＃２は、多重部１２７から入力された各種のＴＣＰパケットをクライアント装置３に送信する。
【００８０】
このように、送信ポートＰｓ＃１，＃２及び変換部１１４は、上り方向のデータパケットの中継処理におけるパケット送信部の一例として、割り当て処理部１１２の割り当てに従い、フロー＃３のデータパケットをフロー＃１のデータパケット及びフロー＃２のデータパケットに変換して送信する。
【００８１】
応答処理部１１５は、分離部１１０から入力されたＡＣＫパケットに対し各種の処理を実行する。このＡＣＫパケットは、下り方向のデータパケットに対応する確認応答である。応答処理部１１５は、ＡＣＫパケットから確認応答番号を取得し、確認応答番号に基づきフロー＃１，＃２ごとにパケット管理テーブル１００ａのフラグを制御する。
【００８２】
また、応答処理部１１５は、ＡＣＫパケットのオプション領域からＳＡＣＫの有無を判定する。応答処理部１１５は、ＳＡＣＫが有る場合、第１ブロック番号（図３参照）から、損失したデータパケットのフロー＃３内のシーケンス番号を特定し、そのシーケンス番号に対応するフロー＃１，＃２内のシーケンス番号をパケット管理テーブル１００ａから検索する。
【００８３】
応答処理部１１５は、検索されたフロー＃１，＃２内のシーケンス番号（損失データパケットのフロー＃１，＃２内のシーケンス番号）を応答生成部１１７に通知し、そのシーケンス番号に基づき選択確認応答のＡＣＫパケット（ＳＡＣＫ）の生成を指示する。また、応答処理部１１５は、ＳＡＣＫがない場合（損失データパケットがない場合）、パケット管理テーブル１００ａに基づき確認応答番号をフロー＃１，＃２のものに変換して応答生成部１１６に通知し、そのシーケンス番号に基づき確認応答のＡＣＫパケット（ＡＣＫ）の生成を指示する。
【００８４】
このように、応答処理部１１５は、下り方向のデータパケットの中継処理における検索処理部の一例として、ＳＡＣＫを含むＡＣＫパケットが示すフロー＃３内のシーケンス番号に対応するフロー＃１内のシーケンス番号またはフロー＃２内のシーケンス番号をパケット管理テーブル１００ａから検索する。また、送信ポートＰｓ＃１，＃２は、下り方向のデータパケットの中継処理における通知送信部の一例として、応答処理部１１５が検索したシーケンス番号を通知するＡＣＫパケットを、そのシーケンス番号に該当するフロー＃１，＃２のデータパケットの送信元であるサーバ装置２に送信する。
【００８５】
次に、データパケット及びＡＣＫパケットの処理を説明する。まず、下り方向の処理について述べた後、上り方向の処理について述べる。
【００８６】
（下り方向の処理）
図６は、サーバ装置２から受信したデータパケットの処理の一例を示すフローチャートである。受信ポートＰｒ＃１，＃２は、リンクアグリゲーションＬＡを構成する２つの通信回線を介しサーバ装置２からデータパケットを受信する（ステップＳｔ１）。次に、データ処理部１２１は、データパケットのフローＩＤ及びフロー＃１，＃２内のシーケンス番号を取得する（ステップＳｔ２）。
【００８７】
次に、データ処理部１２１は、フローＩＤ及びシーケンス番号に基づきパケット管理テーブル１００ａを検索する（ステップＳｔ３）。データ処理部１２１は、フローＩＤ及びシーケンス番号がパケット管理テーブル１００ａに登録済みであるか否かを判定する（ステップＳｔ４）。データ処理部１２１は、フローＩＤ及びシーケンス番号が登録済みである場合（ステップＳｔ４のＹｅｓ）、受信したデータパケットを再送されたデータパケットであると判定し、パケット管理テーブル１００ａの該当フラグを「Ｆｎ」に更新する（ステップＳｔ１１）。
【００８８】
次に、変換部１２３は、シーケンス番号及び確認応答番号をフロー＃１，＃２の値からフロー＃３の値に変換する（ステップＳｔ９）。これにより、フロー＃１，＃２のデータパケットがフロー＃３のデータパケットに変換される。次に、送信ポートＰｓ＃３は、フロー＃３のデータパケットをクライアント装置３に送信する（ステップＳｔ１０）。
【００８９】
また、データ処理部１２１は、フローＩＤ及びシーケンス番号が未登録である場合（ステップＳｔ４のＮｏ）、受信したデータパケットのシーケンス番号が前回受信したデータパケットのシーケンス番号に連続するか否かを判定する（ステップＳｔ５）。これにより、データ処理部１２１は、フロー＃１，＃２におけるデータパケットの損失を検出する。
【００９０】
データ処理部１２１は、シーケンス番号が連続する場合（ステップＳｔ５のＹｅｓ）、データパケットの損失がないと判定し、登録処理部１２２にシーケンス番号の登録を指示する。この場合、登録処理部１２２は、受信したデータパケット（受信データパケット）に付与されたフロー＃１，＃２内のシーケンス番号及びフロー＃３内のシーケンス番号をパケット管理テーブル１００ａに登録する（ステップＳｔ８）。その後、ステップＳｔ９，Ｓｔ１０の各処理が実行される。
【００９１】
また、データ処理部１２１は、シーケンス番号が連続しない場合（ステップＳｔ５のＮｏ）、データパケットの損失があると判定し、損失したデータパケット（損失データパケット）のフローＩＤ及びシーケンス番号を特定する（ステップＳｔ６）。次に、登録処理部１２２は、データ処理部１２１の指示に従い、損失データパケットのフローＩＤ及びシーケンス番号をパケット管理テーブル１００ａに登録する（ステップＳｔ７）。このとき、登録処理部１２２はフラグに「Ｆｄ」をセットする。
【００９２】
このため、パケット管理テーブル１００ａには、正常受信されたデータパケットのシーケンス番号だけでなく、区間Ｋｂで損失したためにパケット中継装置１で受信されないデータパケットのシーケンス番号も登録される。
【００９３】
その後、ステップＳｔ８〜Ｓｔ１０の各処理が実行される。このようにして、データパケットの処理は実行される。
【００９４】
図７は、クライアント装置３から受信したＡＣＫパケットの処理の一例を示すフローチャートである。受信ポートＰｒ＃３は、クライアント装置３からＡＣＫパケットを受信する（ステップＳｔ２１）。
【００９５】
応答処理部１１５は、ＡＣＫパケットのＴＣＰヘッダから確認応答番号を取得する（ステップＳｔ２２）。次に、応答処理部１１５は、ＡＣＫパケットのオプション領域からＳＡＣＫの有無を判定する（ステップＳｔ２３）。
【００９６】
応答処理部１１５は、ＳＡＣＫがない場合（ステップＳｔ２３のＮｏ）、ＡＣＫパケットを確認応答であると判定し、フロー＃１，＃２の一方を選択する（ステップＳｔ２４）。以降の処理は、ステップＳｔ２４で選択されたフロー＃１，＃２について実行される。
【００９７】
次に、応答処理部１１５は、選択したフロー＃１、＃２のシーケンス番号についてパケット管理テーブル１００ａからＡＣＫパケットのシーケンス番号を検索する（ステップＳｔ２５）。応答処理部１１５は、該当するシーケンス番号がない場合（ステップＳｔ２６のＮｏ）、後述するステップＳｔ３０の処理を実行する。
【００９８】
また、応答処理部１１５は、該当するシーケンス番号がある場合（ステップＳｔ２６のＹｅｓ）、該当フラグを「Ｆａ」に更新する（ステップＳｔ２７）。次に、応答生成部１１６は、パケット管理テーブル１００ａを参照することにより、ＡＣＫパケットの確認応答番号を、選択したフロー＃１，＃２の値に変換する（ステップＳｔ２８）。次に、応答生成部１１６は、その確認応答番号を含むＡＣＫパケットを生成して、選択したフロー＃１，＃２に対応する送信ポートＰｓ＃１，＃２から送信する（ステップＳｔ２９）。
【００９９】
次に、応答処理部１１５は、未選択のフロー＃１、＃２の有無を判定する（ステップＳｔ３０）。応答処理部１１５は、未選択のフロー＃１、＃２がない場合（ステップＳｔ３０のＮｏ）、処理を終了する。また、応答処理部１１５は、未選択のフロー＃１、＃２がある場合（ステップＳｔ３０のＹｅｓ）、ステップＳｔ２４において他のフロー＃１，＃２を選択し、ステップＳｔ２５以降の処理を実行する。
【０１００】
また、応答処理部１１５は、ＳＡＣＫがある場合（ステップＳｔ２３のＹｅｓ）、オプション領域の第１ブロック番号から損失データパケットのシーケンス番号を特定する（ステップＳｔ３１）。なお、このとき、応答処理部１１５は、第１ブロック番号から受信の確認ができるデータパケットのシーケンス番号について、パケット管理テーブル１００ａのフラグを「Ｆａ」に更新する。
【０１０１】
次に、応答処理部１１５は、フロー＃１，＃２の一方を選択する（ステップＳｔ３２）。以降の処理は、ステップＳｔ３２で選択されたフロー＃１，＃２について実行される。
【０１０２】
次に、応答処理部１１５は、選択したフロー＃１、＃２のシーケンス番号についてパケット管理テーブル１００ａから損失データパケットのシーケンス番号を検索する（ステップＳｔ３３）。応答生成部１１６は、該当するシーケンス番号がない場合（ステップＳｔ３４のＮｏ）、選択したフロー＃１、＃２の受信確認済みのデータパケットの確認応答のＡＣＫパケット（ＡＣＫ）を生成し、選択したフロー＃１、＃２に対応する送信ポートＰｓ＃１，＃２からサーバ装置２に送信する（ステップＳｔ３９）。
【０１０３】
また、応答処理部１１５は、該当するシーケンス番号がある場合（ステップＳｔ３４のＹｅｓ）、パケット管理テーブル１００ａの該当するフラグを「Ｆｄ」に更新する（ステップＳｔ３５）。次に、応答処理部１１５は、損失データパケットのシーケンス番号に対応するフロー＃１，＃２内のシーケンス番号をパケット管理テーブル１００ａから検索する（ステップＳｔ３６）。これにより、フロー＃１，＃２の損失データパケットのシーケンス番号がフロー＃３内のシーケンス番号に変換される。
【０１０４】
次に、応答生成部１１７は、そのシーケンス番号を通知するための選択確認応答を生成する（ステップＳｔ３８）。より具体的には、応答生成部１１７は、図３に示される第１ブロック番号及び第２ブロック番号を生成する。次に、応答生成部１１７は、その選択確認応答を含むＡＣＫパケット（ＳＡＣＫ）を生成して、選択したフロー＃１，＃２に対応する送信ポートＰｓ＃１，＃２からサーバ装置２に送信する（ステップＳｔ３９）。このため、サーバ装置２に損失データパケットのシーケンス番号が通知されるので、サーバ装置２から損失データパケットが再送される。
【０１０５】
次に、応答処理部１１５は、未選択のフロー＃１、＃２の有無を判定する（ステップＳｔ４０）。応答処理部１１５は、未選択のフロー＃１、＃２がない場合（ステップＳｔ４０のＮｏ）、処理を終了する。また、応答処理部１１５は、未選択のフロー＃１、＃２がある場合（ステップＳｔ４０のＹｅｓ）、ステップＳｔ３２において他のフロー＃１，＃２を選択し、ステップＳｔ３３以降の処理を実行する。このようにして、ＡＣＫパケットの処理は実行される。
【０１０６】
図８は、サーバ装置２からクライアント装置３へのデータパケットの中継処理の一例を示すシーケンス図である。図８には、データパケットの流れが実線の矢印で示され、ＡＣＫパケットの流れが破線の矢印で示されている。また、図８には、中継処理におけるパケット管理テーブル１００ａの登録内容も示されている。
【０１０７】
また、図８において、シーケンス番号ＳＥＱａは、データパケットに付与されたフロー＃３内のシーケンス番号であり、シーケンス番号ＳＥＱｂは、データパケットに付与されたフロー＃１，＃２内のシーケンス番号である。また、ＡＣＫａは、フロー＃３のＡＣＫパケットに付与された確認応答番号であり、Ｓ−ＡＣＫａは、フロー＃３のＡＣＫパケットに付与された選択確認応答の第１ブロック番号及び第２ブロック番号である。また、ＡＣＫｂはフロー＃２のＡＣＫパケットの確認応答番号である。
【０１０８】
サーバ装置２は、符号Ｓ１〜Ｓ５で示されるように、フロー＃１，＃２のデータパケットを交互にパケット中継装置１に送信する。本例において、各データパケットの長さは、一例として、１０００（Byte）とする。フロー＃１のデータパケットには、フロー＃１内のシーケンス番号「50001」，「51001」，「52001」とフロー＃３内のシーケンス番号「3001」，「32001」，「34001」が付与されている。また、フロー＃２のデータパケットには、フロー＃２内のシーケンス番号「70001」，「71001」とフロー＃３内のシーケンス番号「31001」，「33001」が付与されている。
【０１０９】
パケット中継装置１は、データパケットを受信すると、データパケットに付与されたフロー＃３内のシーケンス番号ＳＥＱａ及びフロー＃１，＃２内のシーケンス番号ＳＥＱｂとフローＩＤをパケット管理テーブル１００ａに登録する。このとき、パケット中継装置１は、パケット管理テーブル１００ａのフラグに「Ｆｎ」をセットする。なお、フラグ欄の括弧内にはシーケンス内の符号（Ｓ１〜Ｓ５，Ｃ１，Ｃ２など）が示されており、その符号が示すデータパケットまたはＡＣＫパケットの到着タイミングで該当フラグが更新される。
【０１１０】
パケット中継装置１は、符号Ｔ１〜Ｔ５で示されるように、フロー＃１，＃２のデータパケットをフロー＃３のデータパケットに変換してクライアント装置３に送信する。フロー＃３のデータパケットには、フロー＃３内のシーケンス番号「31001」〜「34001」が付与されている。シーケンス番号「32001」のデータパケットは、バツ印で示されるように、区間Ｋａにおいて損失する。
【０１１１】
クライアント装置３は、シーケンス番号「32001」のデータパケットを除くデータパケットを受信する。クライアント装置３は、シーケンス番号「33001」のデータパケットを受信したとき、そのシーケンス番号に基づき、シーケンス番号「32001」のデータパケットの損失を検出する。このため、クライアント装置３は、シーケンス番号「33001」のデータパケットを受信後、符号Ｃ１で示されるように、選択確認応答を含むＡＣＫパケットをパケット中継装置１に送信する。ＡＣＫパケットには、ＡＣＫａ＝「32001」及びＳ−ＡＣＫａ＝「33001-34001」が付与されている。
【０１１２】
パケット中継装置１は、ＡＣＫパケットを受信すると、ＡＣＫａ＝「32001」から、シーケンス番号「31001」までのデータパケットが受信されたことを判定し、Ｓ−ＡＣＫａ＝「33001-34001」から、シーケンス番号「33001」のデータパケットが受信されたことを判定する。ここで、Ｓ−ＡＣＫａの第１ブロック番号及び第２ブロック番号は、それぞれ、「33001」及び「34001」である。このため、パケット中継装置１は、シーケンス番号「32001」のデータパケットの損失を検出する。
【０１１３】
パケット中継装置１は、パケット管理テーブル１００ａに対し、シーケンス番号「32001」に該当するフラグを「Ｆｄ」にセットし、シーケンス番号「30001」，「31001」，「33001」に該当するフラグを「Ｆａ」にセットする。また、パケット中継装置１は、シーケンス番号「34001」に該当するフラグを「Ｆｓ」にセットする。
【０１１４】
パケット中継装置１は、パケット管理テーブル１００ａを検索することにより、フロー＃３内のシーケンス番号「32001」がフロー＃１のシーケンス番号「51001」に対応すると判定する。パケット中継装置１は、符号Ｔ６で示されるように、フロー＃２のＡＣＫパケットをサーバ装置２に送信する。フロー＃２のデータパケットには損失がないため、フロー＃２のＡＣＫパケットは確認応答（ＡＣＫ）であり、ＡＣＫｂ＝「72001」を含む。サーバ装置２は、ＡＣＫパケットを受信すると、フロー＃２内のシーケンス番号「71001」のデータパケットの受信を確認する。
【０１１５】
また、クライアント装置３は、シーケンス番号「34001」のデータパケットを受信後、符号Ｃ２で示されるように、選択確認応答を含むＡＣＫパケットをパケット中継装置１に送信する。ＡＣＫパケットには、ＡＣＫａ＝「32001」及びＳ−ＡＣＫａ＝「33001-35001」が付与されている。
【０１１６】
パケット中継装置１は、ＡＣＫパケットを受信すると、ＡＣＫａ＝「32001」から、シーケンス番号「31001」までのデータパケットが受信されたことを判定し、Ｓ−ＡＣＫａ＝「33001-35001」から、シーケンス番号「33001」及び「34001」のデータパケットが受信されたことを判定する。
【０１１７】
パケット中継装置１は、パケット管理テーブル１００ａを検索することにより、フロー＃３内のシーケンス番号「32001」がフロー＃１のシーケンス番号「51001」に対応すると判定する。パケット中継装置１は、符号Ｔ７で示されるように、フロー＃１のＡＣＫパケットをサーバ装置２に送信する。フロー＃１のデータパケットには損失があるため、フロー＃１のＡＣＫパケットは選択確認応答を含み、ＡＣＫｂ＝「51001」及びＳ−ＡＣＫｂ＝「52001-53001」が付与されている。また、このＡＣＫパケットにより，シーケンス番号「32001」に相当するパケットの損失通知ができたので、パケット中継装置１は、パケット管理テーブル１００ａに対し、シーケンス番号「32001」に該当するフラグを「Ｆｌ」にセットする。
【０１１８】
サーバ装置２は、ＡＣＫパケットを受信すると、フロー＃１内のシーケンス番号「50001」及び「52001」のデータパケットの受信を確認するとともに、フロー＃１内のシーケンス番号「51001」のデータパケットの損失を検出する。このため、サーバ装置２は、パケット中継装置１から、例えば３回同一のＡＣＫ番号のＡＣＫパケットを受信すると、符号Ｓ３ｒで示されるように、損失したシーケンス番号「51001」のデータパケットを再送する。
【０１１９】
パケット中継装置１は、再送されたデータパケットを受信すると、符号Ｔ３ｒで示されるように、フロー＃３のデータパケットに変換してクライアント装置３に送信する。より具体的には、パケット中継装置１の送信ポートＰｓ＃３及び変換部１２３は、送信ポートＰｓ＃１が送信したＡＣＫパケット（符号Ｔ７）に応じてサーバ装置２から再送されたデータパケットをフロー＃３のデータパケットに変換して送信する。このため、パケット中継装置１は、再送されたデータパケットをクライアント装置３に中継することができる。
【０１２０】
このように、パケット中継装置１は、クライアント装置３から、フロー＃３で損失したデータパケットのシーケンス番号「32001」を通知するＡＣＫパケットを受信し、そのシーケンス番号に対応するフロー＃１内のシーケンス番号をパケット管理テーブル１００ａから検索する。パケット中継装置１は、検索したシーケンス番号を通知するＡＣＫパケットを、フロー＃１のデータパケットの送信元のサーバ装置２に送信する。
【０１２１】
このため、サーバ装置２は、損失したデータパケットをパケット中継装置１に再送し、パケット中継装置１は、再送されたデータパケットをクライアント装置３に送信することができる。したがって、パケット中継装置１には、データパケットを再送するためのバッファを設けなくてよい。
【０１２２】
本例では、データパケットの損失が区間Ｋａにおいて生じた場合を挙げたが、区間Ｋｂにおいてデータパケットの損失が生じた場合も上記の動作は同様に行われる。
【０１２３】
図９は、サーバ装置２からクライアント装置３へのデータパケットの中継処理の他例を示すシーケンス図である。図９において、図８と共通する事項には同一の符号を付し、その説明を省略する。
【０１２４】
本例では、フロー＃１内のシーケンス番号「51001」のデータパケットが、バツ印で示されるように、区間Ｋｂにおいて損失している。パケット中継装置１は、サーバ装置２から受信したデータパケットのシーケンス番号の連続性の欠如からデータパケットの損失を検出する。
【０１２５】
より具体的には、パケット中継装置１は、損失したデータパケットの次のデータパケットを受信したとき、そのシーケンス番号と前回受信したデータパケットのシーケンス番号の間のシーケンス番号の抜けからデータパケットの損失を検出する。パケット中継装置１は、パケット管理テーブル１００ａに対し、損失したデータパケットに付与されたフロー＃１内のシーケンス番号及びフロー＃３内のシーケンス番号の対応関係を登録する（点線枠参照）。また、パケット中継装置１は、該当フラグを「Ｆｄ」にセットする。
【０１２６】
このように、パケット中継装置１は、サーバ装置２からの受信前に損失したデータパケットのシーケンス番号もパケット管理テーブル１００ａに登録する。このため、パケット中継装置１は、上記の例と同様に、損失したデータパケットのシーケンス番号をパケット管理テーブル１００ａから検索して、サーバ装置２に通知することができる。なお、本例では、フロー＃１のデータパケットが損失した場合を挙げたが、フロー＃２のデータパケットが損失した場合も上記と同様の動作が行われる。
【０１２７】
上述したように、パケット中継装置１は、受信ポートＰｒ＃１〜＃３と、変換部１２３と、送信ポートＰｓ＃１〜＃３と、メモリＭと、応答処理部１１５とを有する。受信ポートＰｒ＃１，＃２はフロー＃１のデータパケットとフロー＃２のデータパケットを受信する。送信ポートＰｓ＃３及び変換部１２３は、フロー＃１のデータパケット及びフロー＃２のデータパケットをフロー＃３のデータパケットに変換して送信する。
【０１２８】
メモリＭはパケット管理テーブル１００ａを記憶する。パケット管理テーブル１００ａには、フロー＃１のデータパケットに付与されたフロー＃１内のシーケンス番号及びフロー＃３内のシーケンス番号の対応関係と、フロー＃２のデータパケットに付与されたフロー＃２内のシーケンス番号及びフロー＃３内のシーケンス番号の対応関係とが登録されている。
【０１２９】
受信ポートＰｒ＃１，＃２は、フロー＃３において損失したパケットのシーケンス番号を通知するＡＣＫパケットを受信する。応答処理部１１５は、ＡＣＫパケットが示すフロー＃３内のシーケンス番号に対応するフロー＃１内のシーケンス番号またはフロー＃２内のシーケンス番号を、パケット管理テーブル１００ａから検索する。送信ポートＰｓ＃１，＃２は、応答処理部１１５が検索したシーケンス番号のデータパケットの損失を通知するＡＣＫパケットを、そのシーケンス番号に該当するフロー＃１，＃２のデータパケットの送信元であるサーバ装置２に送信する。
【０１３０】
このため、パケット中継装置１は、損失したデータパケットのフロー＃１，＃２内のシーケンス番号をサーバ装置２に通知することができる。サーバ装置２は、パケット中継装置１からの通知に応じてデータパケットを再送するため、パケット中継装置１には、再送に備えてデータパケットを格納するバッファを設けなくてよい。したがって、パケット中継装置１のバッファが削減される。
【０１３１】
なお、パケット中継装置１には、データパケットのバッファに代えて、パケット管理テーブル１００ａ，１００ｂを記憶するメモリＭが設けられるが、メモリＭに必要な容量はデータパケットのバッファより小さい。データパケットの長さは最大で１５００（Byte）であるため、バッファの容量としては、１個のデータパケットに対し１５００（Byte）が必要となる。
【０１３２】
これに対し、パケット管理テーブル１００ａ，１００ｂの各項目（ＳＥＱａ，ＳＥＱｂ，フローＩＤ、フラグなど）には、それぞれ、最大でも３２（Bit）程度の容量があれば十分である。このため、パケット管理テーブル１００ａ，１００ｂの容量としては、１個のデータパケットに対し、およそ２０（Byte）（＝３２×５項目）である。したがって、メモリＭの容量は、データパケットのバッファを用いる場合の１／７５（＝２０／１５００）に削減される。
【０１３３】
（上り方向の処理）
図１０は、クライアント装置３から受信したデータパケットの処理の一例を示すフローチャートである。受信ポートＰｒ＃３は、サーバ装置２から通信回線を介しデータパケットを受信する（ステップＳｔ８１）。次に、データ処理部１１１は、データパケットのフロー＃３内のシーケンス番号を取得する（ステップＳｔ８２）。
【０１３４】
次に、データ処理部１１１は、シーケンス番号に基づきパケット管理テーブル１００ｂを検索する（ステップＳｔ８３）。データ処理部１１１は、シーケンス番号がパケット管理テーブル１００ｂに登録済みであるか否かを判定する（ステップＳｔ８４）。データ処理部１１１は、シーケンス番号が登録済みである場合（ステップＳｔ８４のＹｅｓ）、受信したデータパケットを再送されたデータパケットであると判定し、パケット管理テーブル１００ｂの該当フラグを「Ｆｎ」に更新する（ステップＳｔ９０）。
【０１３５】
次に、変換部１１４は、シーケンス番号及び確認応答番号をフロー＃３の値からフロー＃１，＃２の値に変換する（ステップＳｔ８８）。これにより、フロー＃３のデータパケットがフロー＃１，＃２のデータパケットに変換される。次に、送信ポートＰｓ＃１，＃２は、フロー＃１，＃２のデータパケットをクライアント装置３に送信する（ステップＳｔ８９）。
【０１３６】
また、データ処理部１１１は、シーケンス番号が未登録である場合（ステップＳｔ８４のＮｏ）、受信したデータパケットのシーケンス番号が前回受信したデータパケットのシーケンス番号に連続するか否かを判定する（ステップＳｔ８５）。これにより、データ処理部１２１は、フロー＃３におけるデータパケットの損失を検出する。
【０１３７】
データ処理部１１１は、シーケンス番号が連続する場合（ステップＳｔ８５のＹｅｓ）、データパケットの損失がないと判定し、割り当て処理部１１２にフローＩＤ及びシーケンス番号の割り当てを指示する。この場合、割り当て処理部１１２は、データパケットにフローＩＤとそのフロー＃１，＃２内のシーケンス番号を割り当てる（ステップＳｔ８６）。次に、登録処理部１１３は、受信データパケットに付与されたフロー＃３内のシーケンス番号及び割り当てられたフロー＃１またはフロー＃２内のシーケンス番号をパケット管理テーブル１００ｂに登録する（ステップＳｔ８７）。その後、ステップＳｔ８８，Ｓｔ８９の各処理が実行される。
【０１３８】
また、データ処理部１１１は、シーケンス番号が連続しない場合（ステップＳｔ８５のＮｏ）、データパケットの損失があると判定し、損失データパケットのシーケンス番号を特定する（ステップＳｔ９１）。次に、割り当て処理部１１２は、損失データパケットにフローＩＤとそのフロー＃１，＃２内のシーケンス番号を割り当てる（ステップＳｔ９２）。次に、登録処理部１１３は、データ処理部１１１の指示に従い、損失データパケットに付与されたフロー＃３内のシーケンス番号と、損失データパケットに割り当てられたフローＩＤ及びシーケンス番号をパケット管理テーブル１００ｂに登録する（ステップＳｔ９３）。このとき、登録処理部１２２はフラグに「Ｆｄ」をセットする。
【０１３９】
このため、パケット管理テーブル１００ｂには、正常受信されたデータパケットのシーケンス番号だけでなく、区間Ｋａで損失したためにパケット中継装置１で受信されないデータパケットのシーケンス番号も登録される。したがって、パケット中継装置１は、その損失データパケットのシーケンス番号を通知するＡＣＫパケットを受信したとき、ＡＣＫパケットが示すシーケンス番号をフロー＃３内のシーケンス番号に変換することができる。
【０１４０】
その後、ステップＳｔ８６〜Ｓｔ８９の各処理が実行される。このようにして、データパケットの処理は実行される。
【０１４１】
図１１は、サーバ装置２から受信したＡＣＫパケットの処理の一例を示すフローチャートである。受信ポートＰｒ＃１，＃２は、サーバ装置２からＡＣＫパケットを受信する（ステップＳｔ５１）。
【０１４２】
応答処理部１２４は、ＡＣＫパケットのＴＣＰヘッダから確認応答番号を取得するとともに、ＩＰアドレス及びポート番号などからフローＩＤを取得する（ステップＳｔ５２）。次に、応答処理部１２４は、ＡＣＫパケットのオプション領域からＳＡＣＫの有無を判定する（ステップＳｔ５３）。
【０１４３】
応答処理部１２４は、ＳＡＣＫがない場合（ステップＳｔ５３のＮｏ）、フロー＃３のシーケンス番号についてパケット管理テーブル１００ｂからＡＣＫパケットのシーケンス番号を検索する（ステップＳｔ５４）。次に、応答処理部１２４は、該当フラグを「Ｆａ」に更新する（ステップＳｔ５５）。
【０１４４】
次に、応答生成部１２５は、パケット管理テーブル１００ｂを参照することにより、ＡＣＫパケットの確認応答番号をフロー＃１，＃２の値に変換する（ステップＳｔ５６）。次に、応答生成部１２５は、その確認応答番号を含むＡＣＫパケットを生成して、フロー＃３に対応する送信ポートＰｓ＃３から送信する（ステップＳｔ５７）。
【０１４５】
また、応答処理部１２４は、ＳＡＣＫがある場合（ステップＳｔ５３のＹｅｓ）、オプション領域の第１ブロック番号から損失データパケットのシーケンス番号を特定する（ステップＳｔ５８）。なお、このとき、応答処理部１２４は、第１ブロック番号から受信の確認ができるデータパケットのシーケンス番号について、パケット管理テーブル１００ｂのフラグを「Ｆａ」に更新する。
【０１４６】
次に、応答処理部１２４は、フロー＃１，＃２のシーケンス番号についてパケット管理テーブル１００ｂから損失データパケットのシーケンス番号を検索する（ステップＳｔ５９）。次に、応答処理部１２４は、パケット管理テーブル１００ｂの該当するフラグを「Ｆｄ」に更新する（ステップＳｔ６０）。次に、応答処理部１２４は、損失データパケットのシーケンス番号に対応するフロー＃１，＃２内のシーケンス番号をパケット管理テーブル１００ｂから検索する（ステップＳｔ６１）。これにより、フロー＃３２の損失データパケットのシーケンス番号がフロー＃１，＃２内のシーケンス番号に変換される。
【０１４７】
次に、応答生成部１２６は、そのシーケンス番号を通知するための選択確認応答を生成する（ステップＳｔ６２）。より具体的には、応答生成部１２６は、図３に示される第１ブロック番号及び第２ブロック番号を生成する。次に、応答生成部１２６は、その選択確認応答を含むＡＣＫパケット（ＳＡＣＫ）を生成して、送信ポートＰｓ＃３からサーバ装置２に送信する（ステップＳｔ６３）。このため、クライアント装置３に損失データパケットのシーケンス番号が通知されるので、クライアント装置３から損失データパケットが再送される。
【０１４８】
図１２は、クライアント装置３からサーバ装置２へのデータパケットの中継処理の一例を示すシーケンス図である。図１２には、データパケットの流れが実線の矢印で示され、ＡＣＫパケットの流れが破線の矢印で示されている。また、図１２には、中継処理におけるパケット管理テーブル１００ｂの登録内容も示されている。なお、図１２において、図８と共通する事項の説明は省略する。
【０１４９】
クライアント装置３は、符号Ｃ１１〜Ｃ１５で示されるように、フロー＃３のデータパケットをパケット中継装置１に送信する。本例において、各データパケットの長さは、一例として、１０００（Byte）とする。フロー＃３のデータパケットには、フロー＃３内のシーケンス番号「100001」〜「104001」が付与されている。
【０１５０】
パケット中継装置１は、データパケットを受信すると、データパケットにフローＩＤ及びシーケンス番号を割り当てる。パケット中継装置１は、データパケットに付与されたフロー＃３内のシーケンス番号ＳＥＱａ及びデータパケットに割り当てたフロー＃１，＃２内のシーケンス番号ＳＥＱｂとフローＩＤをパケット管理テーブル１００ａに登録する。このとき、パケット中継装置１は、パケット管理テーブル１００ｂのフラグに「Ｆｎ」をセットする。
【０１５１】
パケット中継装置１は、符号Ｔ１１〜Ｔ１５で示されるように、フロー＃３のデータパケットをフロー＃１またはフロー＃２のデータパケットに変換してサーバ装置２に送信する。フロー＃１のデータパケットとフロー＃２のデータパケットは交互に送信される。フロー＃１のデータパケットには、フロー＃３内のシーケンス番号「101001」，「103001」とフロー＃１内のシーケンス番号「130001」，「131001」が付与されている。フロー＃２のデータパケットには、フロー＃３内のシーケンス番号「100001」，「102001」，「104001」とフロー＃２内のシーケンス番号「150001」，「151001」，「152001」が付与されている。フロー＃２内のシーケンス番号「151001」のデータパケットは、バツ印で示されるように、区間Ｋｂにおいて損失する。
【０１５２】
サーバ装置２は、シーケンス番号「151001」のデータパケットを除くデータパケットを受信する。サーバ装置２は、フロー＃１内のシーケンス番号「131001」のデータパケットを受信したとき、符号Ｓ１１で示されるように、選択確認応答を含むＡＣＫパケット（ＡＣＫ）をパケット中継装置１に送信する。ＡＣＫパケットの確認応答番号ＡＣＫｂは「132001」を示す。
【０１５３】
パケット中継装置１は、ＡＣＫパケットを受信すると、フロー＃１内のシーケンス番号「131001」のデータパケットの受信を確認し、パケット管理テーブル１００ｂに対し、該当フラグを「Ｆａ」にセットする。パケット中継装置１は、ＡＣＫパケットの確認応答番号「132001」を、フロー＃３の確認応答番号ＡＣＫａ「102001」に変換する。パケット中継装置１は、符号Ｔ１６で示されるように、その確認応答番号ＡＣＫａが付与されたＡＣＫパケットをクライアント装置３に送信する。クライアント装置３は、ＡＣＫパケットを受信すると、その確認応答番号ＡＣＫａから、シーケンス番号「101001」のデータパケットの受信を確認する。
【０１５４】
サーバ装置２は、シーケンス番号「152001」のデータパケットを受信したとき、そのシーケンス番号に基づき、シーケンス番号「151001」のデータパケットの損失を検出する。このため、サーバ装置２は、シーケンス番号「152001」のデータパケットを受信後、符号Ｓ１２で示されるように、選択確認応答を含むＡＣＫパケット（ＳＡＣＫ）をパケット中継装置１に送信する。ＡＣＫパケットには、ＡＣＫｂ＝「151001」及びＳ−ＡＣＫｂ＝「152001-153001」が付与されている。
【０１５５】
パケット中継装置１は、ＡＣＫパケットを受信すると、ＡＣＫａ＝「151001」から、フロー＃２内のシーケンス番号「150001」のデータパケットが受信されたことを判定し、Ｓ−ＡＣＫｂ＝「152001-153001」から、シーケンス番号「152001」のデータパケットが受信されたことを判定する。ここで、Ｓ−ＡＣＫｂの第１ブロック番号及び第２ブロック番号は、それぞれ、「152001」及び「153001」である。このため、パケット中継装置１は、シーケンス番号「151001」のデータパケットの損失を検出する。
【０１５６】
パケット中継装置１は、パケット管理テーブル１００ｂに対し、シーケンス番号「151001」に該当するフラグを「Ｆｌ」にセットし、シーケンス番号「150001」に該当するフラグを「Ｆａ」にセットする。また、パケット中継装置１は、シーケンス番号「152001」に該当するフラグを「Ｆｓ」にセットする。
【０１５７】
パケット中継装置１は、パケット管理テーブル１００ｂを検索することにより、フロー＃２内のシーケンス番号「151001」がフロー＃３のシーケンス番号「102001」に対応すると判定する。パケット中継装置１は、符号Ｔ１７で示されるように、フロー＃３のＡＣＫパケットをクライアント装置３に送信する。フロー＃３のデータパケットには損失があるため、フロー＃３のＡＣＫパケットはＡＣＫａ＝「102001」及びＳ−ＡＣＫａ＝「103001-105001」が付与されている。
【０１５８】
クライアント装置３は、ＡＣＫパケットを受信すると、フロー＃３内のシーケンス番号「101001」及び「103001」のデータパケットの受信を確認するとともに、フロー＃３内のシーケンス番号「102001」のデータパケットの損失を検出する。このため、クライアント装置３は、パケット中継装置１から例えば３回同一のＡＣＫ番号のＡＣＫパケットを受信すると、符号Ｃ１３ｒで示されるように、損失したシーケンス番号「102001」のデータパケットを再送する。
【０１５９】
パケット中継装置１は、再送されたデータパケットを受信すると、符号Ｔ１３ｒで示されるように、フロー＃２のデータパケットに変換してクライアント装置３に送信する。より具体的には、パケット中継装置１の送信ポートＰｓ＃２及び変換部１１４は、送信ポートＰｓ＃３が送信したＡＣＫパケット（符号Ｔ１７）に応じてクライアント装置３から再送されたデータパケットをフロー＃２のデータパケットに変換して送信する。このため、パケット中継装置１は、再送されたデータパケットをサーバ装置２に中継することができる。
【０１６０】
このように、パケット中継装置１は、サーバ装置２から、フロー＃２で損失したデータパケットのシーケンス番号「151001」を通知するＡＣＫパケットを受信し、そのシーケンス番号に対応するフロー＃３内のシーケンス番号をパケット管理テーブル１００ａから検索する。パケット中継装置１は、検索したシーケンス番号を通知するＡＣＫパケットを、フロー＃３のデータパケットの送信元のクライアント装置３に送信する。
【０１６１】
このため、クライアント装置３は、損失したデータパケットをパケット中継装置１に再送し、パケット中継装置１は、再送されたデータパケットをサーバ装置２に送信することができる。したがって、パケット中継装置１には、データパケットを再送するためのバッファを設けなくてよい。
【０１６２】
本例では、データパケットの損失が区間Ｋｂにおいて生じた場合を挙げたが、区間Ｋａにおいてデータパケットの損失が生じた場合も上記の動作は同様に行われる。
【０１６３】
図１３は、クライアント装置３からサーバ装置２へのデータパケットの中継処理の他例を示すシーケンス図である。図１３において、図１２と共通する事項には同一の符号を付し、その説明を省略する。
【０１６４】
本例では、フロー＃３内のシーケンス番号「102001」のデータパケットが、バツ印で示されるように、区間Ｋａにおいて損失している。パケット中継装置１は、クライアント装置３から受信したデータパケットのシーケンス番号の連続性の欠如からデータパケットの損失を検出する。
【０１６５】
より具体的には、パケット中継装置１は、損失したデータパケットの次のデータパケットを受信したとき、そのシーケンス番号と前回受信したデータパケットのシーケンス番号の間のシーケンス番号の抜けからデータパケットの損失を検出する。パケット中継装置１は、パケット管理テーブル１００ｂに対し、損失したデータパケットに付与されたフロー＃３内のシーケンス番号及びそのデータパケットに割り当てたフロー＃２内のシーケンス番号の対応関係を登録する（点線枠参照）。また、パケット中継装置１は、該当フラグを「Ｆｄ」にセットする。
【０１６６】
このように、パケット中継装置１は、クライアント装置３からの受信前に損失したデータパケットのシーケンス番号もパケット管理テーブル１００ｂに登録する。このため、パケット中継装置１は、上記の例と同様に、損失したデータパケットのシーケンス番号をパケット管理テーブル１００ｂから検索して、クライアント装置３に通知することができる。
【０１６７】
上述したように、パケット中継装置１は、受信ポートＰｒ＃１〜＃３と、割り当て処理部１１２と、送信ポートＰｓ＃１〜＃３と、メモリＭと、応答処理部１２４とを有する。受信ポートＰｒ＃３はフロー＃３のデータパケットを受信する。割り当て処理部１１２は、フロー＃３のデータパケットにフロー＃１内のシーケンス番号またはフロー＃２内のシーケンス番号を割り当てる。送信ポートＰｓ＃１，＃２及び変換部１１４は、割り当て処理部１１２の割り当てに従い、フロー＃３のデータパケットをフロー＃１のデータパケットまたはフロー＃２のデータパケットに変換して送信する。
【０１６８】
メモリＭはパケット管理テーブル１００ｂを記憶する。パケット管理テーブル１００ｂには、フロー＃３のデータパケットに付与されたフロー＃３内のシーケンス番号とそのデータパケットに割り当てられたフロー＃１内のシーケンス番号またはフロー＃２内のシーケンス番号の対応関係とが登録されている。
【０１６９】
受信ポートＰｒ＃１，＃２は、フロー＃１またはフロー＃２において損失したパケットのシーケンス番号を通知するＡＣＫパケットを受信する。応答処理部１２４は、ＡＣＫパケットが示すフロー＃１内のシーケンス番号またはフロー＃２内のシーケンス番号に対応するフロー＃３内のシーケンス番号をパケット管理テーブル１００ｂから検索する。送信ポートＰｓ＃３は、応答処理部１２４が検索したシーケンス番号のパケットの損失を通知するＡＣＫパケットを、フロー＃３のデータパケットの送信元であるクライアント装置３に送信する。
【０１７０】
このため、パケット中継装置１は、損失したデータパケットのフロー＃３内のシーケンス番号をクライアント装置３に通知することができる。クライアント装置３は、パケット中継装置１からの通知に応じてデータパケットを再送するため、パケット中継装置１には、再送に備えてデータパケットを格納するバッファを設けなくてよい。したがって、パケット中継装置１のバッファが削減される。
【０１７１】
本例において、中継装置１は、サーバ装置２から受信したＡＣＫパケットのシーケンス番号を変換してクライアント装置３に中継するが、これに限定されない。中継装置１は、サーバ装置２からＡＣＫパケットを受信する前にＡＣＫパケットを生成してクライアント装置３に送信してもよい。この場合、クライアント装置３は、上記の例の場合より早いタイミングで損失データパケットのシーケンス番号を検出することができる。
【０１７２】
図１４は、パケット中継装置１からクライアント装置３へのＡＣＫパケットの送信処理の一例を示すシーケンス図である。図１４において、図１３と共通する事項には同一の符号を付し、その説明を省略する。
【０１７３】
パケット中継装置１は、クライアント装置３からシーケンス番号「103001」のデータパケットを受信すると（符号Ｃ１４）、符号Ｔ１６’で示されるように、選択確認応答を含むＡＣＫパケットを生成してクライアント装置３に送信する。ＡＣＫパケットには、ＡＣＫａ＝「102001」及びＳ−ＡＣＫａ＝「103001-104001」が付与されている。
【０１７４】
また、パケット中継装置１は、クライアント装置３からシーケンス番号「104001」のデータパケットを受信すると（符号Ｃ１５）、符号Ｔ１７’で示されるように、選択確認応答を含むＡＣＫパケットを生成してクライアント装置３に送信する。ＡＣＫパケットには、ＡＣＫａ＝「102001」及びＳ−ＡＣＫａ＝「103001-105001」が付与されている。
【０１７５】
このように、パケット中継装置１は、サーバ装置２からＡＣＫパケットを受信する前にＡＣＫパケットを生成してクライアント装置３に送信する。このため、クライアント装置３は、図１３の例より早いタイミングでＡＣＫパケットを受信して、損失データパケットのシーケンス番号を検出できる。
【０１７６】
（他の実施例）
パケット中継装置１は、ネットワーク内のデータパケットの輻輳に備えてデータパケットの再送機能を有してもよい。
【０１７７】
図１５は、他の実施例のパケット中継装置１を示す構成図である。図１５において、図４と共通する構成には同一の符号を付し、その説明を省略する。
【０１７８】
パケット中継装置１は、送信ポートＰｓ＃１〜＃３、受信ポートＰｒ＃１〜＃３、分離部１１０，１２０、多重部１１８ａ，１２７ａ、データ処理部１１１，１２１、割り当て処理部１１２、登録処理部１１３，１２２、及び変換部１１４，１２３を有する。さらに、パケット中継装置１は、応答処理部１１５ａ，１２４ａ、応答生成部１１６，１１７，１２５，１２６、損失率算出部４０，４３、再送制御部４１，４４、バッファ４２，４５、及びメモリＭを有する。
【０１７９】
多重部１１８ａ，１２７ａ、応答処理部１１５ａ，１２４ａ、損失率算出部４０，４３、再送制御部４１，４４、及びバッファ４２，４５は、例えば、ＣＰＵを駆動するソフトウェアの機能、またはＦＰＧＡやＡＳＩＣにより構成される。
【０１８０】
損失率算出部４３は、算出部の一例として、受信ポートＰｒ＃１，＃２が受信したＡＣＫパケットに基づきデータパケットの損失の頻度を算出する。損失率算出部４３は、送信ポートＰｓ＃１，＃２からデータパケットの送信を検出し、また、応答処理部１２４ａからデータパケットの損失を検出する。応答処理部１２４ａは、上記の応答処理部１２４の機能に加えて、ＡＣＫパケットの確認応答番号及び選択確認応答番号からデータパケットの損失を検出する機能を有する。損失率算出部４３は、データパケットの送信数に対する損失数の比率を、損失率として周期的に算出する。
【０１８１】
再送制御部４４は、損失率算出部４３が算出したデータパケットの損失率に基づいて、上り方向の中継処理の動作状態を再送モードまたは非再送モードに制御する。再送制御部４４は、フロー＃１またはフロー＃２のデータパケットの損失率が所定の閾値ＴＨ以上である場合、動作状態を再送モードに切り替え、データパケットの損失率が所定の閾値ＴＨより小さい場合、対応するフローの動作状態を非再送モードに切り替える。バッファ４５は、再送モードにおいて、変換部１１４から変換済みのデータパケットを取得して格納するが、非再送モードではデータパケットを格納しない。
【０１８２】
再送制御部４４は、上り方向の中継処理における損失データパケットの再送制御を行う。再送制御部４４は、応答処理部１２４ａからの指示に従い、バッファ４５に格納された損失データパケットを多重部１１８ａに出力する。多重部１１８ａは、応答生成部１１６，１１７からのＡＣＫパケット、変換部１１４及びバッファ４５からのデータパケットを時分割多重し、該当する送信ポートＰｓ＃１，＃２から送信する。
【０１８３】
また、損失率算出部４０は、受信ポートＰｒ＃３が受信したＡＣＫパケットに基づきデータパケットの損失の頻度を算出する。損失率算出部４０は、送信ポートＰｓ＃３からデータパケットの送信を検出し、また、応答処理部１１５ａからデータパケットの損失を検出する。応答処理部１１５ａは、上記の応答処理部１１５の機能に加えて、選択確認応答を含むＡＣＫパケットからデータパケットの損失を検出する機能を有する。損失率算出部４０は、データパケットの送信数に対する損失数の比率を、損失率として周期的に算出する。なお、損失率は損失の頻度の一例である。
【０１８４】
再送制御部４１は、損失率算出部４０が算出したデータパケットの損失率に基づいて、下り方向の中継処理の動作状態を再送モードまたは非再送モードに制御する。再送制御部４１は、データパケットの損失率が所定の閾値ＴＨ以上である場合、動作状態を再送モードに切り替え、データパケットの損失率が所定の閾値ＴＨより小さい場合、動作状態を非再送モードに切り替える。バッファ４２は、再送モードにおいて、変換部１２３から変換済みのデータパケットを取得して格納するが、非再送モードではデータパケットを格納しない。なお、バッファ４２は、フロー＃３のデータパケットを蓄積する蓄積部として機能する。
【０１８５】
再送制御部４１は、下り方向の中継処理における損失データパケットの再送制御を行う。再送制御部４１は、応答処理部１１５ａからの指示に従い、バッファ４２に格納された損失データパケットを多重部１２７ａに出力する。多重部１２７ａは、応答生成部１２５，１２６からのＡＣＫパケット、変換部１２３及びバッファ４２からのデータパケットを時分割多重し、送信ポートＰｓ＃３から送信する。
【０１８６】
このように、再送制御部４１は、損失率が閾値ＴＨ以上である場合、送信ポートＰｓ＃３が送信したフロー＃３のデータパケットをバッファ４２に蓄積する。また、再送制御部４１は、受信ポートＰｒ＃３が受信したＡＣＫパケットに応じ、バッファ４２に蓄積されたフロー＃３のパケットが送信ポートＰｓ＃３から再送されるように制御する。
【０１８７】
次に、下り方向の中継処理における再送処理を説明する。なお、上り方向の中継処理における再送処理も下り方向と同様に行われる。
【０１８８】
図１６は、動作の切り替え処理の一例を示すフローチャートである。再送制御部４１は、例えばタイマにより測定周期が到来したか否かを判定する（ステップＳｔ７１）。再送制御部４１は、測定周期が到来していない場合（ステップＳｔ７１のＮｏ）、再びステップＳｔ７１の処理を実行する。
【０１８９】
また、再送制御部４１は、測定周期が到来した場合（ステップＳｔ７１のＹｅｓ）損失率算出部４０からデータパケットの損失率を取得する（ステップＳｔ７２）。再送制御部４１は、損失率を所定の閾値ＴＨと比較する（ステップＳｔ７３）。再送制御部４４は、損失率が閾値ＴＨ以上である場合（ステップＳｔ７３のＹｅｓ）、動作状態を再送モードに設定し（ステップＳｔ７４）、損失率が閾値ＴＨより小さい場合（ステップＳｔ７３のＮｏ）、動作状態を非再送モードに設定する（ステップＳｔ７５）。
【０１９０】
次に、再送制御部４１は、損失率算出部４０がカウントしているデータパケットの送信数及び損失数を０にリセットする（ステップＳｔ７６）。このようにして、動作の切り替え処理は実行される。
【０１９１】
図１７は、サーバ装置２から受信したデータパケットの処理の他例を示すフローチャートである。図１７において、図６と共通する処理には同一の符号を付し、その説明を省略する。
【０１９２】
変換部１２３による変換後（ステップＳｔ９）、バッファ４２は、動作状態が再送モードである場合（ステップＳｔ９ａのＹｅｓ）、変換部１２３から出力されるデータパケットを蓄積する（ステップＳｔ９ｂ）。また、バッファ４２は、動作状態が非再送モードである場合（ステップＳｔ９ａのＮｏ）、データパケットを蓄積しない。その後、送信ポートＰｓ＃３はデータパケットを送信する（ステップＳｔ１０）。このようにして、サーバ装置２から受信したデータパケットの処理は実行される。
【０１９３】
図１８は、クライアント装置３から受信したＡＣＫパケットの処理の一例を示すフローチャートである。図１８において、図７と共通する処理には同一の符号を付し、その説明を省略する。
【０１９４】
フラグの更新処理の後（ステップＳｔ３５）、再送制御部４１は、動作状態が再送モードであるか否かを判定する（ステップＳｔ３５ａ）。動作状態が非再送モードである場合（ステップＳｔ３５ａのＮｏ）、ステップＳｔ３６〜Ｓｔ４０の処理が実行される。再送制御部４１は、動作状態が再送モードである場合（ステップＳｔ３５ａのＹｅｓ）、シーケンス番号に基づき、バッファ４２に損失データパケットが格納済みであるか否かを判定する（ステップＳｔ３５ｂ）。損失データパケットが格納されていない場合（ステップＳｔ３５ｂのＮｏ）、ステップＳｔ３６〜Ｓｔ４０の処理が実行される。
【０１９５】
また、再送制御部４１は、損失データパケットが格納済みである場合（ステップＳｔ３５ｂのＹｅｓ）、バッファ４２内の損失データパケットを送信ポートＰｓ＃３から再送する（ステップＳｔ３５ｃ）。次に、応答生成部１１６は、確認応答のＡＣＫパケットを生成して送信する（ステップＳｔ３９）。その後、Ｓｔ４０の処理が実行される。このようにして、クライアント装置３から受信したＡＣＫパケットの処理は実行される。
【０１９６】
図１９は、サーバ装置２からクライアント装置３へのデータパケットの中継処理の他例を示すシーケンス図である。図１９において、図８と共通する事項には同一の符号を付し、その説明を省略する。
【０１９７】
サーバ装置２は、符号Ｓ１〜Ｓ６で示されるように、フロー＃１，＃２のデータパケットを交互にパケット中継装置１に送信する。本例において、各データパケットの長さは、一例として、１０００（Byte）とする。符号Ｓ６で示されるフロー＃２のデータパケットには、フロー＃２内のシーケンス番号「72001」とフロー＃３内のシーケンス番号「35001」が付与されている。
【０１９８】
パケット中継装置１は、データパケットを受信すると、データパケットに付与されたフロー＃３内のシーケンス番号ＳＥＱａ及びフロー＃１，＃２内のシーケンス番号ＳＥＱｂとフローＩＤをパケット管理テーブル１００ａに登録する。このとき、パケット中継装置１は、パケット管理テーブル１００ａのフラグに「Ｆｂ」をセットする。フラグ「Ｆｂ」は、データパケットがバッファ４２に格納済みであることを示す。
【０１９９】
パケット中継装置１は、符号Ｔ１〜Ｔ５，Ｔ６’で示されるように、フロー＃１，＃２のデータパケットをフロー＃３のデータパケットに変換してクライアント装置３に送信する。パケット中継装置１は、符号Ｓ６で示されるフロー＃２のデータパケットをシーケンス番号「35001」のデータパケットに変換してクライアント装置３に送信する。
【０２００】
パケット中継装置１は、符号Ｃ２で示されるＡＣＫパケットをクライアント装置３から受信すると、上記の実施例とは異なり、確認応答番号ＡＣＫｂ＝「51001」が付与されたフロー＃１のＡＣＫパケットをサーバ装置２に送信する（符号Ｔ７’）。このＡＣＫパケットは確認応答であるため、サーバ装置２は、フロー＃１内のシーケンス番号「50001」のデータパケットの受信を確認し、データパケットを再送しない。なお、パケット中継装置１は、上記の実施例と同様に、線タック確認応答を含むＡＣＫパケットをサーバ装置２に送信してもよい。
【０２０１】
また、クライアント装置３は、シーケンス番号「34001」のデータパケットを受信すると、符号Ｃ３で示されるように、ＡＣＫａ＝「32001」及び選択確認応答Ｓ−ＡＣＫａ＝「33001-36001」が付与されたＡＣＫパケットをパケット中継装置１に送信する。パケット中継装置１は、ＡＣＫパケットを受信すると、符号Ｔ８で示されるように、確認応答番号ＡＣＫｂ＝「73001」が付与されたフロー＃２のＡＣＫパケットをサーバ装置２に送信する。
【０２０２】
次に、パケット中継装置１は、符号Ｔ９で示されるように、損失データパケットのシーケンス番号「32001」が付与されたデータパケットをクライアント装置３に再送する。このとき、パケット中継装置１は、シーケンス番号「32001」（ＳＥＱａ）に該当するフラグを「Ｆｂ」に更新し、シーケンス番号「35001」（ＳＥＱａ）に該当するフラグを「Ｆａ」に更新する。
【０２０３】
このように、パケット中継装置１は、データパケットの損失率が閾値ＴＨ以上になった場合にデータパケットの再送処理を行うため、例えばネットワークが輻輳した場合に通信品質を改善することができる。
【０２０４】
上記の実施例において、パケット中継装置１は、ＴＣＰの区間ＫａとＭＰＴＣＰの区間Ｋｂの間でＴＣＰパケットを中継したが、これに限定されない。パケット中継装置１が、例えば、区間Ｋａにおいて複数の通信回線から構成されるリンクアグリゲーションによりクライアント装置３と接続される場合、ＭＰＴＣＰの区間Ｋａ及び区間Ｋｂの間でＴＣＰパケットを中継することもできる。
【０２０５】
図２０は、他の実施例のパケット中継装置１を示す構成図である。図２０において、図４と共通する構成には同一の符号を付し、その説明を省略する。
【０２０６】
パケット中継装置１は、送信ポートＰｓ＃１〜＃４、受信ポートＰｒ＃１〜＃４、分離部１１０ｂ，１２０、多重部１１８，１２７ｂ、データ処理部１１１ｂ，１２１ｂ、割り当て処理部１１２ｂ，１２９、登録処理部１１３ｂ，１２２ｂ、及び変換部１１４ｂ，１２３ｂを有する。さらに、パケット中継装置１は、応答処理部１１５ｂ，１２４ｂ、応答生成部１１６，１１７，１２５，１２６、及びメモリＭを有する。
【０２０７】
各部１１０ｂ２〜１１５ｂ，１１６〜１１８，１２０，１２１ｂ〜１２４ｂ，１２５，１２６，１２７ｂ，１２９は、例えば、ＣＰＵを駆動するソフトウェアの機能、またはＦＰＧＡやＡＳＩＣにより構成される。
【０２０８】
本例において、パケット中継装置１は、サーバ装置２からフロー＃１，＃２のデータパケットを受信し、フロー＃３またはフロー＃４のデータパケットに変換してクライアント装置３に送信する。また、パケット中継装置１は、クライアント装置３からフロー＃３，＃４のデータパケットを受信し、フロー＃１またはフロー＃２のデータパケットに変換してサーバ装置２に送信する。
【０２０９】
メモリＭには、パケット管理テーブル１００ｃ，１００ｄが記憶されている。一方のパケット管理テーブル１００ｃには、下り方向に中継されるデータパケットのフローＩＤ及びシーケンス番号の対応関係が登録され、他方のパケット管理テーブル１００ｂには、上り方向に中継されるデータパケットのフローＩＤ及びシーケンス番号の対応関係が登録さている。
【０２１０】
より具体的には、パケット管理テーブル１００ｃ，１００ｄには、フローＩＤ（＃１，＃２）及びフロー＃１，＃２内のシーケンス番号及びフローＩＤ（＃３，＃４）及びフロー＃３，＃４内のシーケンス番号の対応関係が登録されている。なお、メモリＭは、パケット管理テーブル１００ｃ，１００ｄを記憶する記憶部の一例である。記憶部としては、ハードディスクドライブなどが用いられてもよい。
【０２１１】
受信ポートＰｒ＃１〜＃４は、例えば復調器やフォトダイオードなどを含み、ＴＣＰパケットを受信する。送信ポートＰｓ＃１〜＃４は、例えば変調器やレーザダイオードなどを含み、ＴＣＰパケットを送信する。
【０２１２】
受信ポートＰｒ＃３，＃４は、クライアント装置３からフロー＃３，＃４のＴＣＰパケットをそれぞれ受信して分離部１１０ｂに出力する。分離部１１０ｂは、受信ポートＰｒ＃３，＃４から入力されたＴＣＰパケットのうち、データパケットをデータ処理部１１１ｂに出力し、ＡＣＫパケットを応答処理部１１５ｂに出力する。
【０２１３】
データ処理部１１１ｂはデータパケットについて各種の処理を実行する。データ処理部１１１ｂは、データパケットのフローＩＤ及びシーケンス番号を取得する。データ処理部１１１ｂは、検索の結果からデータパケットのフローＩＤ及びシーケンス番号の登録の有無を判定し、その判定結果に応じて割り当て処理部１１２ｂにフローＩＤ及びシーケンス番号の割り当てを指示する。
【０２１４】
また、データ処理部１１１ｂは、検索の結果、フローＩＤ及びシーケンス番号が未登録である場合、例えば、パケット管理テーブル１００ｄのシーケンス番号ＳＥＱａ−ＮＸＴに基づきデータパケットの損失の有無を判定する。つまり、データ処理部１１１ｂは、データパケットのフロー＃３，＃４内のシーケンス番号の連続性の欠如からデータパケットの損失を検出する。データ処理部１１１ｂは、データパケットの損失がある場合、その損失したデータパケットのシーケンス番号の割り当てを割り当て処理部１１２ｂに指示する。
【０２１５】
割り当て処理部１１２ｂは、データ処理部１１１ｂの指示に従い、受信されたデータパケットにフローＩＤ及びシーケンス番号を割り当てる。また、割り当て処理部１１２は、データ処理部１１１ｂの指示に従い、損失したデータパケットにフローＩＤ及びシーケンス番号を割り当てる。
【０２１６】
より具体的には、割り当て処理部１１２ｂは、フロー＃３，＃４のデータパケットにフローＩＤ（＃１または＃２）とシーケンス番号を割り当てる。これにより、フロー＃３，＃４のデータパケットは、フロー＃１のデータパケットとフロー＃２のデータパケットに振り分けられる。なお、データパケットの振り分け方法について限定はない。
【０２１７】
登録処理部１１３ｂは、割り当て処理部１１２ｂの指示に従い、フロー＃３，＃４のデータパケットのフローＩＤ（＃３，＃４）及びシーケンス番号とそのデータパケットに割り当てられたフローＩＤ（＃１，＃２）及びシーケンス番号の対応関係とをパケット管理テーブル１００ｄに登録する。登録処理部１１３ｂは、登録処理部の完了したデータパケットを変換部１１４ｂに出力する。
【０２１８】
変換部１１４ｂは、フロー＃３，＃４のデータパケットをフロー＃１，＃２のデータパケットに変換する。より具体的には、変換部１１４は、データパケットのシーケンス番号を、そのデータパケットに割り当てられたシーケンス番号に付け替え、これに応じて確認応答番号を付け替える。これにより、データパケットにおいて、シーケンス番号及び確認応答番号がフロー＃３，＃４のものからフロー＃１，＃２のものに変換される。変換部１１４ｂは、フロー＃１，＃２のデータパケット（ＤＰ）を多重部１１８に出力する。
【０２１９】
応答処理部１１５ｂは、分離部１１０ｂから入力されたＡＣＫパケットに対し各種の処理を実行する。このＡＣＫパケットは、下り方向のデータパケットに対応する確認応答である。応答処理部１１５ｂは、ＡＣＫパケットから確認応答番号を取得し、確認応答番号に基づきフロー＃１，＃２ごとにパケット管理テーブル１００ｃのフラグを制御する。
【０２２０】
また、応答処理部１１５ｂは、ＡＣＫパケットのオプション領域からＳＡＣＫの有無を判定する。応答処理部１１５ｂは、ＳＡＣＫが有る場合、第１ブロック番号（図３参照）から、損失したデータパケットのフローＩＤ及びフロー＃３，＃４内のシーケンス番号を特定し、そのシーケンス番号に対応するフロー＃１，＃２内のシーケンス番号をパケット管理テーブル１００ｃから検索する。
【０２２１】
応答処理部１１５ｂは、検索されたフローＩＤ及びフロー＃１，＃２内のシーケンス番号を応答生成部１１７に通知し、そのシーケンス番号に基づきＳＡＣＫを含むＡＣＫパケット（ＳＡＣＫ）の生成を指示する。また、応答処理部１１５ｂは、ＳＡＣＫがない場合、パケット管理テーブル１００ｃに基づき確認応答番号をフロー＃１，＃２のものに変換して応答生成部１１６に通知し、そのシーケンス番号に基づき確認応答のＡＣＫパケット（ＡＣＫ）の生成を指示する。
【０２２２】
このように、応答処理部１１５ｂは、確認応答のＡＣＫパケットが示すフロー＃３，＃４内のシーケンス番号に対応するフロー＃１内のシーケンス番号またはフロー＃２内のシーケンス番号をパケット管理テーブル１００ｃから検索する。
【０２２３】
分離部１２０は、受信ポートＰｒ＃１，＃２から入力されたＴＣＰパケットのうち、データパケットをデータ処理部１２１ｂに出力し、ＡＣＫパケットを応答処理部１２４ｂに出力する。
【０２２４】
データ処理部１２１ｂはデータパケットについて各種の処理を実行する。データ処理部１２１ｂは、データパケットのフローＩＤ及びシーケンス番号を取得する。データ処理部１２１ｂは、検索の結果からデータパケットのフローＩＤ及びシーケンス番号の登録の有無を判定し、その判定結果に応じて割り当て処理部１２９にフローＩＤ及びシーケンス番号の割り当てを指示する。
【０２２５】
また、データ処理部１２１ｂは、検索の結果、フローＩＤ及びシーケンス番号が未登録である場合、例えば、パケット管理テーブル１００ｃのシーケンス番号ＳＥＱａ−ＮＸＴに基づきデータパケットの損失の有無を判定する。つまり、データ処理部１２１ｂは、データパケットのフロー＃１，＃２内のシーケンス番号の連続性の欠如からデータパケットの損失を検出する。データ処理部１２１ｂは、データパケットの損失がある場合、その損失したデータパケットのシーケンス番号の割り当てを割り当て処理部１２９に指示する。
【０２２６】
割り当て処理部１２９は、データ処理部１２１ｂの指示に従い、受信されたデータパケットにフローＩＤ及びシーケンス番号を割り当てる。また、割り当て処理部１２９は、データ処理部１２１ｂの指示に従い、損失したデータパケットにフローＩＤ及びシーケンス番号を割り当てる。
【０２２７】
より具体的には、割り当て処理部１１２ｂは、フロー＃１，＃２のデータパケットにフローＩＤ（＃３または＃４）とシーケンス番号を割り当てる。これにより、フロー＃１，＃２のデータパケットは、フロー＃３のデータパケットとフロー＃４のデータパケットに振り分けられる。なお、データパケットの振り分け方法について限定はない。
【０２２８】
登録処理部１２２ｂは、割り当て処理部１２９の指示に従い、フロー＃１，＃２のデータパケットのフローＩＤ（＃１，＃２）及びシーケンス番号とそのデータパケットに割り当てられたフローＩＤ（＃３，＃４）及びシーケンス番号の対応関係とをパケット管理テーブル１００ｃに登録する。登録処理部１２２ｂは、登録処理部の完了したデータパケットを変換部１２３ｂに出力する。
【０２２９】
変換部１２３ｂは、フロー＃１，＃２のデータパケットをフロー＃３，＃４のデータパケットに変換する。より具体的には、変換部１２３ｂは、データパケットのシーケンス番号を、そのデータパケットに割り当てられたシーケンス番号に付け替え、これに応じて確認応答番号を付け替える。これにより、データパケットにおいて、シーケンス番号及び確認応答番号がフロー＃１，＃２のものからフロー＃３，＃４のものに変換される。変換部１２３ｂは、フロー＃３，＃４のデータパケット（ＤＰ）を多重部１２７ｂに出力する。
【０２３０】
多重部１２７ｂは、応答生成部１２５からの確認応答のＡＣＫパケット（ＡＣＫ）、応答生成部１２６からの選択確認応答を含むＡＣＫパケット（ＳＡＣＫ）、及び変換部１２３ｂからのデータパケット（ＤＰ）を、そのフロー＃３，＃４に応じた送信ポートＰｓ＃３，＃４にそれぞれ出力する。
【０２３１】
応答処理部１２４ｂは、分離部１２０から入力されたＡＣＫパケットに対し各種の処理を実行する。このＡＣＫパケットは、上り方向のデータパケットに対応する確認応答である。応答処理部１２４ｂは、ＡＣＫパケットから確認応答番号を取得し、確認応答番号に基づきフロー＃１，＃２ごとにパケット管理テーブル１００ｄのフラグを制御する。
【０２３２】
また、応答処理部１２４ｂは、ＡＣＫパケットのオプション領域からＳＡＣＫの有無を判定する。応答処理部１２４ｂは、ＳＡＣＫが有る場合、第１ブロック番号（図３参照）から、損失したデータパケットのフローＩＤ及びフロー＃１，＃２内のシーケンス番号を特定し、そのシーケンス番号に対応するフロー＃３，＃４内のシーケンス番号をパケット管理テーブル１００ｄから検索する。
【０２３３】
応答処理部１２４ｂは、検索されたフローＩＤ及びフロー＃３，＃４内のシーケンス番号を応答生成部１２６に通知し、そのシーケンス番号に基づき選択確認応答を含むＡＣＫパケット（ＳＡＣＫ）の生成を指示する。また、応答処理部１２４ｂは、ＳＡＣＫがない場合、パケット管理テーブル１００ｄに基づき確認応答番号をフロー＃３，＃４のものに変換して応答生成部１２５に通知し、そのシーケンス番号に基づき確認応答のＡＣＫパケット（ＡＣＫ）の生成を指示する。
【０２３４】
このように、応答処理部１２４ｂは、ＡＣＫパケットが示すフロー＃１，＃２内のシーケンス番号及びＳＡＣＫに対応するフロー＃３内のシーケンス番号またはフロー＃４内のシーケンス番号をパケット管理テーブル１００ｄから検索する。
【０２３５】
次に、本例のパケット中継装置１の下り方向の中継処理について説明する。なお、上り方向の中継処理については、フローＩＤ同士の対応関係が反転するが、同様の処理が行われるため、その説明を省略する。
【０２３６】
図２１は、サーバ装置２からクライアント装置３へのデータパケットの中継処理の他例を示すシーケンス図である。図２１において、図８と共通する事項には同一の符号を付し、その説明を省略する。また、ＳＥＱは、区間Ｋａ，Ｋｂ以外の区間における単一の通信回線のフロー内のシーケンス番号を示し、ＳＥＱｃは区間Ｋａにおけるフロー＃３，＃４内のシーケンス番号を示し、ＳＥＱｂは区間Ｋｂにおけるフロー＃１，＃２内のシーケンス番号を示す。
【０２３７】
パケット管理テーブル１００ｃには、区間ＫａにおけるフローＩＤ、シーケンス番号ＳＥＱｃ、及びそのシーケンス番号ＳＥＱｃの次のシーケンス番号ＳＥＱｃ−ＮＸＴと、区間ＫｂにおけるフローＩＤ、シーケンス番号ＳＥＱｂ、及びそのシーケンス番号ＳＥＱｂの次のシーケンス番号ＳＥＱｂ−ＮＸＴとが対応付けられて登録されている。また、パケット管理テーブル１００ｃには、シーケンス番号ＳＥＱｂ，ＳＥＱｃごとにフラグが登録されている。
【０２３８】
サーバ装置２は、符号Ｓ１〜Ｓ５で示されるように、フロー＃１，＃２のデータパケットを交互にパケット中継装置１に送信する。本例において、各データパケットの長さは、一例として、１０００（Byte）とする。フロー＃１のデータパケットには、シーケンス番号ＳＥＱとフロー＃１内のシーケンス番号ＳＥＱｂが付与され、フロー＃２のデータパケットには、シーケンス番号ＳＥＱとフロー＃２内のシーケンス番号ＳＥＱｂが付与されている。
【０２３９】
パケット中継装置１は、符号Ｓ１〜Ｓ５で示されるフロー＃１またはフロー＃２のデータパケットを受信すると、そのフローＩＤ（＃１，＃２）及びフロー＃１，＃２内のシーケンス番号ＳＥＱｂをパケット管理テーブル１００ｃに登録する。また、パケット中継装置１は、受信したデータパケットにフローＩＤ（＃３，＃４）及びフロー＃３，＃４内のシーケンス番号ＳＥＱｃを割り当てて、パケット管理テーブル１００ｃに登録する。このとき、パケット中継装置１は、パケット管理テーブル１００ｃのフラグに「Ｆｎ」をセットする。
【０２４０】
パケット中継装置１は、符号Ｔ２１〜Ｔ２５で示されるように、データパケットをフロー＃３またはフロー＃４のデータパケットに変換してクライアント装置３に送信する。フロー＃３のデータパケットには、フロー＃３内のシーケンス番号「60001」，「61001」，「62001」が付与されている。また、フロー＃４のデータパケットには、フロー＃４内のシーケンス番号「80001」，「81001」が付与されている。シーケンス番号「61001」のデータパケットは、バツ印で示されるように、区間Ｋａにおいて損失する。
【０２４１】
クライアント装置３は、シーケンス番号「61001」のデータパケットを除くデータパケットを受信する。クライアント装置３は、シーケンス番号「62001」のデータパケットを受信したとき、そのシーケンス番号に基づき、シーケンス番号「61001」のデータパケットの損失を検出する。このため、クライアント装置３は、シーケンス番号「62001」のデータパケットを受信後、符号Ｃ２１で示されるように、選択確認応答を含むＡＣＫパケット（ＳＡＣＫ）をパケット中継装置１に送信する。ＡＣＫパケットには、ＡＣＫａ＝「61001」及びＳ−ＡＣＫａ＝「62001-63001」が付与されている。
【０２４２】
パケット中継装置１は、ＡＣＫパケットを受信すると、ＡＣＫａ＝「61001」から、シーケンス番号「60001」のデータパケットが受信されたことを判定し、Ｓ−ＡＣＫａ＝「62001-63001」から、シーケンス番号「62001」のデータパケットが受信されたことを判定する。ここで、Ｓ−ＡＣＫａの第１ブロック番号及び第２ブロック番号は、それぞれ、「62001」及び「63001」である。このため、パケット中継装置１は、シーケンス番号「61001」のデータパケットの損失を検出する。
【０２４３】
パケット中継装置１は、パケット管理テーブル１００ｃに対し、シーケンス番号「61001」に該当するフラグを「Ｆｄ」にセットし、シーケンス番号「60001」，「62001」に該当するフラグを「Ｆａ」にセットする。
【０２４４】
パケット中継装置１は、パケット管理テーブル１００ｃを検索することにより、フロー＃３内のシーケンス番号「62001」がフロー＃１のシーケンス番号「71001」に対応すると判定する。パケット中継装置１は、符号Ｔ２６で示されるように、フロー＃１のＡＣＫパケットをサーバ装置２に送信する。フロー＃２のデータパケットには損失がないため、フロー＃２のＡＣＫパケットは確認応答（ＡＣＫ）であり、ＡＣＫｂ＝「72001」を含む。サーバ装置２は、ＡＣＫパケットを受信すると、フロー＃２内のシーケンス番号「71001」のデータパケットの受信を確認する。
【０２４５】
また、クライアント装置３は、シーケンス番号「81001」のデータパケットを受信後、符号Ｃ２２で示されるように、そのデータパケットに対する確認応答のＡＣＫパケットをパケット中継装置１に送信する。ＡＣＫパケットには、確認応答番号ＡＣＫｃ＝「82001」が付与されている。
【０２４６】
パケット中継装置１は、ＡＣＫパケットを受信するとＡＣＫｃ＝「82001」から、シーケンス番号「81001」のデータパケットが受信されたことを判定する。また、パケット中継装置１は、パケット管理テーブル１００ｃに対し、シーケンス番号「61001」に該当するフラグを「Ｆｌ」にセットし、シーケンス番号「81001」に該当するフラグを「Ｆｓ」にセットする。また、パケット中継装置１は、シーケンス番号「80001」に該当するフラグを「Ｆａ」にセットする。
【０２４７】
パケット中継装置１は、パケット管理テーブル１００ｃを検索することにより、フロー＃４内のシーケンス番号「81001」がフロー＃１のシーケンス番号「52001」に対応すると判定する。パケット中継装置１は、符号Ｔ２７で示されるように、フロー＃１のＡＣＫパケットをサーバ装置２に送信する。フロー＃１のデータパケットには損失があるため、フロー＃１のＡＣＫパケットは選択確認応答を含み、ＡＣＫｂ＝「51001」及びＳ−ＡＣＫｂ＝「52001-53001」が付与されている。
【０２４８】
サーバ装置２は、ＡＣＫパケットを受信すると、フロー＃１内のシーケンス番号「50001」及び「52001」のデータパケットの受信を確認するとともに、フロー＃１内のシーケンス番号「51001」のデータパケットの損失を検出する。このため、サーバ装置２は、パケット中継装置１から例えば３回同一のＡＣＫ番号のＡＣＫパケットを受信すると、符号Ｓ３ｒで示されるように、損失したシーケンス番号「51001」のデータパケットを再送する。
【０２４９】
パケット中継装置１は、再送されたデータパケットを受信すると、符号Ｔ２３ｒで示されるように、フロー＃３のデータパケットに変換してクライアント装置３に送信する。より具体的には、パケット中継装置１の送信ポートＰｓ＃３及び変換部１２３ｂは、送信ポートＰｓ＃１が送信したＡＣＫパケット（符号Ｔ２７）に応じてサーバ装置２から再送されたデータパケットをフロー＃３のデータパケットに変換して送信する。このため、パケット中継装置１は、再送されたデータパケットをクライアント装置３に中継することができる。
【０２５０】
このように、パケット中継装置１は、クライアント装置３から、フロー＃３で損失したデータパケットのシーケンス番号「61001」を通知するＡＣＫパケットを受信し、そのシーケンス番号に対応するフロー＃１内のシーケンス番号をパケット管理テーブル１００ｃから検索する。パケット中継装置１は、検索したシーケンス番号を通知するＡＣＫパケットを、フロー＃１のデータパケットの送信元のサーバ装置２に送信する。
【０２５１】
本例では、データパケットの損失が区間Ｋａにおいて生じた場合を挙げたが、区間Ｋｂにおいてデータパケットの損失が生じた場合も上記の動作は同様に行われる。
【０２５２】
図２２は、サーバ装置２からクライアント装置３へのデータパケットの中継処理の他例を示すシーケンス図である。図２２において、図２１と共通する事項には同一の符号を付し、その説明を省略する。
【０２５３】
本例では、フロー＃１内のシーケンス番号「51001」のデータパケットが、バツ印で示されるように、区間Ｋｂにおいて損失している。パケット中継装置１は、サーバ装置２から受信したデータパケットのシーケンス番号の連続性の欠如からデータパケットの損失を検出する。
【０２５４】
より具体的には、パケット中継装置１は、損失したデータパケットの次のデータパケットを受信したとき、そのシーケンス番号と前回受信したデータパケットのシーケンス番号の間のシーケンス番号の抜けからデータパケットの損失を検出する。パケット中継装置１は、パケット管理テーブル１００ｃに対し、損失したデータパケットに付与されたフロー＃１内のシーケンス番号及びそのデータパケットに割り当てたフロー＃３内のシーケンス番号の対応関係を登録する（点線枠参照）。また、パケット中継装置１は、該当フラグを「Ｆｄ」にセットする。
【０２５５】
このように、パケット中継装置１は、サーバ装置２からの受信前に損失したデータパケットのシーケンス番号もパケット管理テーブル１００ｃに登録する。このため、パケット中継装置１は、上記の例と同様に、損失したデータパケットのシーケンス番号をパケット管理テーブル１００ｃから検索して、サーバ装置２に通知することができる。なお、本例では、フロー＃１のデータパケットが損失した場合を挙げたが、フロー＃２のデータパケットが損失した場合も上記と同様の動作が行われる。
【０２５６】
上述した実施形態は本発明の好適な実施の例である。但し、これに限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変形実施可能である。
【０２５７】
なお、以上の説明に関して更に以下の付記を開示する。
（付記１）  第１フローのパケットと第２フローのパケットを受信するパケット受信部と、
前記第１フローのパケット及び前記第２フローのパケットを第３フローのパケットに変換して送信するパケット送信部と、
前記第１フローのパケットに付与された前記第１フロー内のシーケンス番号及び前記第３フロー内のシーケンス番号の対応関係と、前記第２フローのパケットに付与された前記第２フロー内のシーケンス番号及び前記第３フロー内のシーケンス番号の対応関係とが登録されたテーブルを記憶する記憶部と、
前記第３フローにおいて損失したパケットのシーケンス番号の通知を受信する通知受信部と、
前記通知が示す前記第３フロー内のシーケンス番号に対応する前記第１フロー内のシーケンス番号または前記第２フロー内のシーケンス番号を、前記テーブルから検索する検索処理部と、
前記検索処理部が検索したシーケンス番号のパケットの損失の通知を、前記第１フローと前記第２フローのうち、前記検索したシーケンス番号に該当するフローのパケットの送信元に送信する通知送信部とを有することを特徴とするパケット中継装置。
（付記２）  前記パケット送信部は、前記通知送信部が送信した通知に応じて前記第１フローのパケットの送信元または前記第２フローのパケットの送信元から再送されたパケットを前記第３フローのパケットに変換して送信することを特徴とする付記１に記載のパケット中継装置。
（付記３）  前記第１フローのパケットに付与された前記第１フロー内のシーケンス番号及び前記第３フロー内のシーケンス番号の対応関係と、前記第２フローのパケットに付与された前記第２フロー内のシーケンス番号及び前記第３フロー内のシーケンス番号の対応関係とを前記テーブルに登録する登録処理部と、
前記パケット受信部が受信したパケットに付与された前記第１フロー内のシーケンス番号または前記第２フロー内のシーケンス番号に基づきパケットの損失を検出する検出部とを有し、
前記登録処理部は、前記検出部がパケットの損失を検出した場合、該損失したパケットに付与された前記第１フロー内のシーケンス番号及び前記第３フロー内のシーケンス番号の対応関係、または前記損失したパケットに付与された前記第２フロー内のシーケンス番号及び前記第３フロー内のシーケンス番号の対応関係を前記テーブルに登録することを特徴とする付記１または２に記載のパケット中継装置。
（付記４）  前記通知受信部が受信した前記通知に基づきパケットの損失の頻度を算出する算出部と、
前記第３フローのパケットを蓄積する蓄積部と、
前記頻度が所定値以上である場合、前記パケット送信部が送信した前記第３フローのパケットを前記蓄積部に蓄積し、前記通知受信部が受信した前記通知に応じ、前記蓄積部に蓄積された前記第３フローのパケットが前記パケット送信部から再送されるように制御する再送制御部とを有することを特徴とする付記１乃至３の何れかに記載のパケット中継装置。
（付記５）  第４フローのパケットを受信するパケット受信部と、
前記第４フローのパケットに第５フロー内のシーケンス番号または第６フロー内のシーケンス番号を割り当てる割り当て処理部と、
前記割り当て処理部の割り当てに従い、前記第４フローのパケットを前記第５フローのパケットまたは前記第６フローのパケットに変換して送信するパケット送信部と、
前記第４フローのパケットに付与された前記第４フロー内のシーケンス番号と該パケットに割り当てられた前記第５フロー内のシーケンス番号または前記第６フロー内のシーケンス番号の対応関係とが登録されたテーブルを記憶する記憶部と、
前記第５フローまたは前記第６フローにおいて損失したパケットのシーケンス番号の通知を受信する通知受信部と、
前記通知が示す前記第５フロー内のシーケンス番号または前記第６フロー内のシーケンス番号に対応する前記第４フロー内のシーケンス番号を前記テーブルから検索する検索処理部と、
前記検索処理部が検索したシーケンス番号のパケットの損失の通知を、前記第４フローのパケットの送信元に送信する通知送信部とを有することを特徴とするパケット中継装置。
（付記６）  前記パケット送信部は、前記通知送信部が送信した通知に応じて前記第４フローのパケットの送信元から再送されたパケットを前記第５フローまたは前記第６フローのパケットに変換して送信することを特徴とする付記５に記載のパケット中継装置。
（付記７）  前記第４フローのパケットに付与された前記第４フロー内のシーケンス番号と該パケットに割り当てられた前記第５フロー内のシーケンス番号または前記第６フロー内のシーケンス番号の対応関係を前記テーブルに登録する登録処理部と、
前記パケット受信部が受信したパケットに付与された前記第４フロー内のシーケンス番号に基づきパケットの損失を検出する検出部とを有し、
前記登録処理部は、前記検出部がパケットの損失を検出した場合、該損失したパケットに付与された前記第４フロー内のシーケンス番号及び前記損失したパケットに割り当てられた前記第５フロー内のシーケンス番号の対応関係、または前記損失したパケットに付与された前記第４フロー内のシーケンス番号及び前記損失したパケットに割り当てられた前記第６フロー内のシーケンス番号の対応関係を前記テーブルに登録することを特徴とする付記５または６に記載のパケット中継装置。
（付記８）  前記通知受信部が受信した前記通知に基づきパケットの損失の頻度を算出する算出部と、
前記第５フローのパケット及び前記第６フローのパケットを蓄積する蓄積部と、
前記頻度が所定値以上である場合、前記パケット送信部が送信した前記第５フローのパケット及び前記第６フローのパケットを前記蓄積部に蓄積し、前記通知受信部が受信した前記通知に応じ、前記蓄積部に蓄積された前記第５フローのパケット及び前記第６フローのパケットが前記パケット送信部から再送されるように制御する再送制御部とを有することを特徴とする付記５乃至７の何れかに記載のパケット中継装置。
（付記９）  第１フローのパケットと第２フローのパケットを受信し、
前記第１フローのパケット及び前記第２フローのパケットを第３フローのパケットに変換して送信し、
前記第１フローのパケットに付与された前記第１フロー内のシーケンス番号及び前記第３フロー内のシーケンス番号の対応関係と、前記第２フローのパケットに付与された前記第２フロー内のシーケンス番号及び前記第３フロー内のシーケンス番号の対応関係とをテーブルに登録し、
前記第３フローにおいて損失したパケットのシーケンス番号の通知を受信し、
前記通知が示す前記第３フロー内のシーケンス番号に対応する前記第１フロー内のシーケンス番号または前記第２フロー内のシーケンス番号を、前記テーブルから検索し、
該検索したシーケンス番号のパケットの損失の通知を、前記第１フローと前記第２フローのうち、前記検索したシーケンス番号に該当するフローのパケットの送信元に送信することを特徴とするパケット中継方法。
（付記１０）  送信した通知に応じて前記第１フローのパケットの送信元または前記第２フローのパケットの送信元から再送されたパケットを前記第３フローのパケットに変換して送信することを特徴とする付記９に記載のパケット中継方法。
（付記１１）  受信したパケットに付与された前記第１フロー内のシーケンス番号または前記第２フロー内のシーケンス番号に基づきパケットの損失を検出し、
パケットの損失を検出した場合、該損失したパケットに付与された前記第１フロー内のシーケンス番号及び前記第３フロー内のシーケンス番号の対応関係、または前記損失したパケットに付与された前記第２フロー内のシーケンス番号及び前記第３フロー内のシーケンス番号の対応関係を前記テーブルに登録することを特徴とする付記９または１０に記載のパケット中継方法。
（付記１２）  受信した前記通知に基づきパケットの損失の頻度を算出し、
前記頻度が所定値以上である場合、送信した前記第３フローのパケットを蓄積部に蓄積し、受信した前記通知に応じ、前記蓄積部に蓄積された前記第３フローのパケットが再送されるように制御することを特徴とする付記９乃至１１の何れかに記載のパケット中継方法。
（付記１３）  第４フローのパケットを受信し、
前記第４フローのパケットに第５フロー内のシーケンス番号または第６フロー内のシーケンス番号を割り当てる割り当て、
該割り当てに従い、前記第４フローのパケットを前記第５フローのパケットまたは前記第６フローのパケットに変換して送信し、
前記第４フローのパケットに付与された前記第４フロー内のシーケンス番号と該パケットに割り当てられた前記第５フロー内のシーケンス番号または前記第６フロー内のシーケンス番号の対応関係とをテーブルに登録し、
前記第５フローまたは前記第６フローにおいて損失したパケットのシーケンス番号の通知を受信し、
前記通知が示す前記第５フロー内のシーケンス番号または前記第６フロー内のシーケンス番号に対応する前記第４フロー内のシーケンス番号を前記テーブルから検索し、
該検索したシーケンス番号のパケットの損失の通知を、前記第４フローのパケットの送信元に送信することを特徴とするパケット中継方法。
（付記１４）  送信した通知に応じて前記第４フローのパケットの送信元から再送されたパケットを前記第５フローまたは前記第６フローのパケットに変換して送信することを特徴とする付記１３に記載のパケット中継方法。
（付記１５）  受信したパケットに付与された前記第４フロー内のシーケンス番号に基づきパケットの損失を検出し、
パケットの損失を検出した場合、該損失したパケットに付与された前記第４フロー内のシーケンス番号及び前記損失したパケットに割り当てられた前記第５フロー内のシーケンス番号の対応関係、または前記損失したパケットに付与された前記第４フロー内のシーケンス番号及び前記損失したパケットに割り当てられた前記第６フロー内のシーケンス番号の対応関係を前記テーブルに登録することを特徴とする付記１３または１４に記載のパケット中継方法。
（付記１６）  受信した前記通知に基づきパケットの損失の頻度を算出し、
前記頻度が所定値以上である場合、送信した前記第５フローのパケット及び前記第６フローのパケットを蓄積部に蓄積し、受信した前記通知に応じ、前記蓄積部に蓄積された前記第５フローのパケット及び前記第６フローのパケットが再送されるように制御することを特徴とする付記１３乃至１５の何れかに記載のパケット中継方法。
【符号の説明】
【０２５８】
１                                              パケット中継装置
２                                              サーバ装置
３                                              クライアント装置
４０，４３                                      損失率算出部
４１，４４                                      再送制御部
４２，４５                                      バッファ
１００ａ〜１００ｄ                              パケット管理テーブル
１１１，１１１ｂ、１２１，１２１ｂ                     データ処理部
１１２，１１２ｂ，１２９                        割り当て処理部
１１３，１１３ｂ，１２２，１２２ｂ                     登録処理部
１１５，１１５ｂ，１２４，１２４ｂ                     応答処理部
１１４，１１４ｂ、１２３，１２３ｂ                     変換部
Ｍ                                              メモリ
Ｐｓ                                            送信ポート
Ｐｒ                                            受信ポート
【図１】
2018074261.tif 000003
【図２】
2018074261.tif 000004
【図３】
2018074261.tif 000005
【図４】
2018074261.tif 000006
【図５】
2018074261.tif 000007
【図６】
2018074261.tif 000008
【図７】
2018074261.tif 000009
【図８】
2018074261.tif 000010
【図９】
2018074261.tif 000011
【図１０】
2018074261.tif 000012
【図１１】
2018074261.tif 000013
【図１２】
2018074261.tif 000014
【図１３】
2018074261.tif 000015
【図１４】
2018074261.tif 000016
【図１５】
2018074261.tif 000017
【図１６】
2018074261.tif 000018
【図１７】
2018074261.tif 000019
【図１８】
2018074261.tif 000020
【図１９】
2018074261.tif 000021
【図２０】
2018074261.tif 000022
【図２１】
2018074261.tif 000023
【図２２】
2018074261.tif 000024