(57)【要約】【課題】廃棄されたパケットを効率的に再送し、廃棄箇所の記憶容量を削減する。【解決手段】ネットワークに接続される通信装置であって、前記ネットワークに接続された対向通信装置にデータを送信し、前記対向通信装置が送信した確認応答を受信し、送信されたデータが廃棄された箇所を記憶するための記憶容量が、前記対向通信装置において不足しているかを監視し、前記記憶容量が不足している場合、廃棄箇所に再送の優先度を設定してデータを再送する。【選択図】図２
2014147011.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークに接続される通信装置であって、
前記ネットワークに接続された対向通信装置にデータを送信し、
前記対向通信装置が送信した確認応答を受信し、
送信されたデータが廃棄された箇所を記憶するための記憶容量が、前記対向通信装置において不足しているかを監視し、
前記記憶容量が不足している場合、廃棄箇所に再送の優先度を設定してデータを再送することを特徴とする通信装置。
【請求項２】
請求項１に記載の通信装置であって、
前記ネットワークを介して前記対向通信装置にパケットを送信する送信部と、
前記ネットワークを介して前記対向通信装置から選択的確認応答及び確認応答の情報を含む確認応答パケットを受信する受信部と、
前記受信した確認応答パケットから特定された再送すべき箇所を記憶するための再送管理テーブルと、
前記受信した確認応答パケットから、前記対向通信装置において前記記憶容量が不足していることを検出する検出部と、
前記検出部が前記対向通信装置において前記記憶容量の不足を検出した場合に再送すべきパケットを含む廃棄箇所に優先度を設定する優先度設定部と、
前記設定された優先度に従って、廃棄されたパケットを再送する再送部と、を備えることを特徴とする通信装置。
【請求項３】
請求項２に記載の通信装置であって、
前記優先度設定部は、再送すべきパケットの数が少ない廃棄箇所に高い優先度を設定することを特徴とする通信装置。
【請求項４】
請求項３に記載の通信装置であって、
前記優先度設定部は、
再送すべきパケットの数が１である廃棄箇所の優先度を高く設定し、
再送すべきパケットの数が２以上である廃棄箇所の優先度を０に設定することを特徴とする通信装置。
【請求項５】
請求項３に記載の通信装置であって、
前記優先度設定部は、再送すべきパケットの数が少なく、かつ、シーケンス番号が小さいパケットを含む廃棄箇所に高い優先度を設定することを特徴とする通信装置。
【請求項６】
請求項５に記載の通信装置であって、
前記優先度設定部は、
前記再送管理テーブルのエントリを示すポインタ、前記エントリのパケット数及び優先度を含む一時テーブルを生成し、
前記一時テーブル上で、前記パケット数の順に優先度を設定し、
前記設定された優先度を前記再送管理テーブルに書き戻すことを特徴とする通信装置。
【請求項７】
請求項２から６のいずれか一つに記載の通信装置であって、
前記検出部は、連続する確認応答パケットにおいて前記選択的確認応答及び前記確認応答の情報がすべて一致している場合、前記対向通信装置において前記記憶容量が不足していることを検出することを特徴とする通信装置。
【請求項８】
請求項２から６のいずれか一つに記載の通信装置であって、
送信したパケットの数を計数する第１のカウンタと、
前記選択的確認応答及び前記確認応答の情報がすべて一致している確認応答パケットの数を計数する第２のカウンタと、を有し、
前記検出部は、前記第１のカウンタで計数された送信パケットの数と、前記第２のカウンタで計数された確認応答パケットの数との比が所定の閾値以上である場合、前記対向通信装置において前記記憶容量が不足していることを検出することを特徴とする通信装置。
【請求項９】
請求項２から６のいずれか一つに記載の通信装置であって、
前記検出部は、前記再送管理テーブルのエントリ数が所定の閾値以上である場合、前記対向通信装置において前記記憶容量が不足することを予測し、
前記優先度設定部は、前記記憶容量が不足することが予測された場合、再送すべきパケットに優先度を設定することを特徴とする通信装置。
【請求項１０】
請求項２に記載の通信装置であって、
一般的な通信方式を用いる他の通信装置との通信を制御する一般通信機能と、
前記設定された優先度に従ってパケットを再送する通信機能との間でデータの交換を行うプロキシ機能と、を備えることを特徴とする通信装置。
【請求項１１】
ネットワークに接続された通信装置間でパケットを転送する方法であって、
第１の通信装置が、前記ネットワークを介して対向する第２の通信装置から選択的確認応答及び確認応答の情報を含む確認応答パケットを受信し、
前記第１の通信装置が、前記受信した確認応答パケットから特定された再送すべき箇所を再送管理テーブルに記憶し、
前記第１の通信装置が、前記受信した確認応答パケットから、前記第２の通信装置において送信されたデータが廃棄された箇所を記憶するための記憶容量が不足していることを検出し、
前記第１の通信装置が、前記第２の通信装置において前記記憶容量の不足を検出した場合に再送すべきパケットを含む廃棄箇所に優先度を設定し、
前記第１の通信装置が、前記設定された優先度に従って、廃棄された再送パケットの送信順序を制御するパケット転送方法。
【請求項１２】
請求項１１に記載の方法であって、
前記第１の通信装置が、再送すべきパケットの数が少ない廃棄箇所に高い優先的を設定し、前記設定された優先度に従ってパケットを再送することを特徴とするパケット転送方法。
【請求項１３】
請求項１２に記載の方法であって、
前記第１の通信装置が、再送すべきパケットの数が１である廃棄箇所の優先度を高く設定し、再送すべきパケットの数が２以上である廃棄箇所の優先度を０に設定し、
前記第１の通信装置が、前記設定された優先度に基づいて、前記再送すべきパケット数が１である廃棄箇所のパケットを優先的に再送することを特徴とするパケット転送方法。
【請求項１４】
請求項１２に記載の方法であって、
前記第１の通信装置が、前記廃棄箇所のうち再送すべきパケット数が少なく、かつ、シーケンス番号が小さいものから優先度を高く設定することを特徴とするパケット転送方法。
【請求項１５】
請求項１４に記載の方法であって、
前記第１の通信装置が、前記再送管理テーブルのエントリを示すポインタ、前記エントリのパケット数及び優先度を含む一時テーブルを生成し、
前記第１の通信装置が、前記一時テーブル上で、前記パケット数の順に優先度を設定し、
前記第１の通信装置が、前記設定された優先度を前記再送管理テーブルに書き戻すことを特徴とするパケット転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置に関する。
【背景技術】
【０００２】
クラウドコンピューティングでは、利用者は、利用者が存在する拠点ではなく外部のデータセンタの計算機資源を使用する。データセンタは利用者が使用するデータを保持するため、利用者の拠点とデータセンタと間で頻繁にデータを転送する。
【０００３】
データセンタは広く世界中に所在しており、利用者の拠点と同じ国内にない場合がある。例えば、利用料が安価な海外のデータセンタが利用される場合も多い。
【０００４】
海外のデータセンタを利用する場合、データの転送が低速になる場合がある。遠距離のデータセンタとの間の通信では、パケットが送信されてから応答が返されるまでの時間であるＲｏｕｎｄ  Ｔｒｉｐ  Ｔｉｍｅ（ＲＴＴ）が大きい。その場合、通常の通信方式では通信速度が遅くなるという問題がある。
【０００５】
本技術分野の背景技術として、国際公開２０１２／０６６８２４号パンフレット（特許文献１）がある。特許文献１には、「送信端末と受信端末間にプロキシ装置を用いるときに、送信端末から末尾のデータを受信し、その直後に故障した場合、送信端末では送信が完了している一方で、受信端末では受信が完了していないケースを防ぐ。  プロキシ装置内にＡＣＫ待ちの送信中データも整列待ちの受信中データも無い状態でデータパケットを受信した場合はＡＣＫ返信を行わず、プロキシ装置内にＡＣＫ待ちの送信中データ、或いは整列待ちの受信中データが有る状態でデータパケットを受信した場合は１つ前に受信したデータパケットに対するＡＣＫを返信し、受信端末側からＡＣＫを受信してＡＣＫ待ちの送信中データも整列待ちの受信中データも無い状態になったタイミングで通常のＡＣＫを返信するための手段を備える。」ことが記載されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】国際公開２０１２／０６６８２４号パンフレット
【発明の概要】
【発明が解決しようとする課題】
【０００７】
前述した特許文献１では、再送要求にＮＡＣＫを用いることによって、再送効率を向上させている。しかし、ＮＡＣＫを用いる場合、送信側及び受信側の双方の通信端末が特許文献１に記載された通信方式に対応している必要がある。しかし、ネットワーク内には、特許文献１に記載された通信方式に対応している端末と、一般的な通信方式を用いる端末とが混在しており、一般的な通信方式による通信も発生する。
【０００８】
例えば、ＲＦＣ３５１７では、選択的確認応答（Ｓｅｌｅｃｔｉｖｅ  Ａｃｋｎｏｗｌｅｄｇｅｍｅｎｔ：ＳＡＣＫ）を用いた再送制御方法が規定されている。しかし、高速通信においては下記の問題が発生し、ＲＦＣ３５１７に規定された方法によっては、このような問題に対応できない。
【０００９】
ＲＦＣ３５１７に既定された方法では、正常に受信されたパケットの番号を受信端末が送信端末に通知し、送信端末が通知されなかった箇所を検出することによって、廃棄されたパケットを再送する。そのため、受信端末及び送信端末がパケットの受信個所又は廃棄箇所を記憶する。
【００１０】
ネットワークにおけるパケット廃棄率が大きい場合、特に廃棄が不連続に発生した場合は、記憶される廃棄箇所の数が多くなるため、廃棄箇所を記憶するために多くの記憶容量が必要となる。受信端末及び送信端末の記憶容量は、実装方法によっては、上限がある。このため、所定量以上の廃棄が発生した場合、記憶容量が不足し、新たに送信されたパケットが受信できなくなるおそれがある。
【００１１】
そこで、本発明は、廃棄されたパケットを効率よく再送し、廃棄箇所の記憶容量を削減することを目的とする。
【課題を解決するための手段】
【００１２】
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、ネットワークに接続される通信装置であって、前記ネットワークに接続された対向通信装置にデータを送信し、前記対向通信装置が送信した確認応答を受信し、送信されたデータが廃棄された箇所を記憶するための記憶容量が、前記対向通信装置において不足しているかを監視し、前記記憶容量が不足している場合、廃棄箇所に再送の優先度を設定してデータを再送する。
【発明の効果】
【００１３】
本発明の代表的な実施の形態によれば、廃棄箇所の記憶容量を削減して、データ転送のスループットを向上することができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の第１の実施例のシステムの構成を示す図である。
【図２】本発明の第１の実施例の送信端末の機能ブロック図である。
【図３】ＳＡＣＫのパケットフォーマットを説明する図である。
【図４Ａ】第１の実施例の再送管理テーブルの構成例を説明する図である。
【図４Ｂ】第１の実施例の再送管理テーブルの構成例を説明する図である。
【図５】再送優先度を設定せずシーケンス番号の順に再送を行った場合の通信シーケンスを示す図である。
【図６】シーケンス番号の順によらず再送を行った場合の通信シーケンスを示す図である。
【図７】第１の実施例の優先度設定部が実行する処理のフローチャートである。
【図８】受信端末において廃棄箇所の記憶容量が不足している場合の通信シーケンスを示す図である。
【図９】第１の実施例の廃棄検出部が実行する処理のフローチャートである。
【図１０】第２の実施例の再送管理部の機能ブロック図である。
【図１１】第２の実施例の一時テーブルの構成例を説明する図である。
【図１２】第２の実施例の優先度設定部が実行する処理のフローチャートである。
【図１３Ａ】第２の実施例の再送管理テーブルの構成例を説明する図である。
【図１３Ｂ】第２の実施例の再送管理テーブルの構成例を説明する図である。
【図１４】第３の実施例における再送管理部の機能ブロック図である。
【図１５】第３の実施例の廃棄検出部が実行する処理のフローチャートである。
【図１６】第４の実施例の廃棄検出部が実行する処理のフローチャートである。
【図１７】第５の実施例のシステムの構成を示す図である。
【図１８】第５の実施例のプロキシ装置の機能ブロック図である。
【発明を実施するための形態】
【００１５】
＜実施例１＞
図１は、本発明の第１の実施例のシステムの構成を示す図である。
【００１６】
第１の実施例のシステムは、送信端末１、ＷＡＮ３及び受信端末２を含む。
【００１７】
送信端末１は、少なくともネットワークインターフェース（ＮＩＦ）５、主記憶３１、補助記憶装置３３、プロセッサ３４、及びそれらの装置を相互に接続しデータを転送するシステムバス３４を有する。主記憶３１は、プログラム及びデータを一時的に格納する。補助記憶装置３３は、プログラム及びデータを格納する。プロセッサ３４は、主記憶３１に格納されたプログラムを実行する。
【００１８】
主記憶３１は、独自ＴＣＰ機能６のためのプログラム、アプリケーションプログラム４、アプリケーションデータ３２などを格納する。
【００１９】
補助記憶装置３３は、例えば、フラッシュメモリ、磁気記憶装置等の不揮発性の記憶装置であり、プロセッサ３４が実行するプログラム及びプログラム実行時に使用されるデータを格納する。すなわち、プロセッサ３４が実行するプログラムは、補助記憶装置３３から読み出されて、主記憶３１にロードされて、プロセッサ３４によって実行される。
【００２０】
プロセッサ３４は、アプリケーションデータを用いてアプリケーションプログラム４を実行する。
【００２１】
また、プロセッサ３４が所定のプログラムを実行することによって、独自ＴＣＰ機能６が送信データを制御する。独自ＴＣＰ機能６は送信データをネットワークインターフェース５に送り、ネットワークインターフェース５が送信データをＷＡＮ３に送信する。
【００２２】
なお、図１では、独自ＴＣＰ機能６の全てをソフトウェアで構成した例を示したが、独自ＴＣＰ機能６の一部又は全てをロジック回路による専用ＬＳＩ又はネットワークインターフェース５に実装してもよい。
【００２３】
プロセッサ３４が実行するプログラムは、リムーバブルメディア（ＣＤ−ＲＯＭ、フラッシュメモリなど）又はネットワークを介して送信端末１に提供され、非一時的記憶媒体である補助記憶装置３３に格納される。このため、送信端末１は、リムーバブルメディアを読み込むインターフェース（例えば、光ディスクドライブ、ＵＳＢポートなど）を有するとよい。
【００２４】
図２は、第１の実施例の送信端末１の機能ブロック図であり、特に、独自ＴＣＰ機能６を詳細に示す。
【００２５】
送信端末１は、アプリケーションプログラム４、ネットワークインターフェース５及び独自ＴＣＰ機能６を有する。
【００２６】
独自ＴＣＰ機能６は、送信部７、受信部８、送信バッファ９、受信バッファ１０、送信制御部１１及び再送管理部１２を有する。
【００２７】
送信部７は、ネットワークインターフェース５よりＷＡＮ３にデータを送信する制御をする。送信制御部１１は、送信部７が送信バッファ９からデータを読み出すタイミングを制御することによって、送信部７から送信されるデータの量及び順序を制御する。送信バッファ９は、アプリケーションプログラム４から送信されるデータを一時的に格納する。送信部７は、送信バッファ９に格納されるデータのうち、送信すべきデータを読み出す。送信バッファ９に格納されるデータは、廃棄されたパケットを再送するために使用される。
【００２８】
受信部８は、ＷＡＮ３からネットワークインターフェース５に届いたデータを受信し、受信したデータの順序等の整合性を確保するために、受信バッファ１０に書き込む。受信バッファ１０は、アプリケーションプログラム４へ送られるデータを一時的に格納する。再送管理部１２は、パケットの破棄を検出し、破棄されたパケットの再送を制御する。
【００２９】
再送管理部１２は、廃棄検出部１３、優先度設定部１４、再送管理テーブル１５、再送部１６及び記憶部１７を有する。廃棄検出部１３は、受信した確認応答（Ａｃｋｎｏｗｌｅｄｇｅｍｅｎｔ：ＡＣＫ）パケットから、正しく受信された箇所又は廃棄された箇所を検出し、また、大量廃棄の発生を検出する。記憶部１７は、受信端末２から返信される確認応答の値を格納する。優先度設定部１４は、再送パケットの優先度を設定する。再送管理テーブル１５は、正しく受信されたパケット又は廃棄されたパケットを管理するためのテーブルである。再送部１６は、再送管理テーブル１５を参照して、設定された優先度に基づいてパケットを再送する。記憶部１７は、ＡＣＫの値及び四つのＳＡＣＫブロックを格納するため、ＡＣＫメモリ１８、ＳＬＥ１〜４メモリ１９〜２２及びＳＲＥ１〜４メモリ２３〜２６の記憶領域を有する。これらの記憶領域は、ＳＡＣＫパケットのフィールドに対応する（図３参照）。
【００３０】
受信端末２は、一般的な通信方式、例えば、ＲＦＣ２０１８に規定される標準方式を用いる。ＲＦＣ２０１８では、ＡＣＫに加えてＳＡＣＫを用いる。ＡＣＫは、シーケンスの先頭から連続して正しく受信されている箇所を示し、ＳＡＣＫは、廃棄により受信済みの箇所に隙間が生じた場合でも、受信された箇所を送信端末に通知する。
【００３１】
図３は、ＳＡＣＫを含むＡＣＫのパケットフォーマットを説明する図である。
【００３２】
ＳＡＣＫは、ＴＣＰヘッダ１０１のオプションフィールド１０２に付加され、何もしないことを示すＮＯＰ（Ｎｏ  Ｏｐｅｒａｔｉｏｎ）１０３の後に、種別１０４、長さ１０５を指定し、さらに第１ブロックの始端（ＳＡＣＫ  Ｌｅｆｔ  Ｅｄｇｅ：ＳＬＥ）１０６及び終端（ＳＡＣＫ  Ｒｉｇｈｔ  Ｅｄｇｅ：ＳＲＥ）１０７を指定する。終端１０７は受信済みデータのシーケンス番号に１を加えたものであり、受信端末２が送信端末１に対して次に送信することを要求するパケットのシーケンス番号を表す。例えば、パケット長が１００であるシーケンス番号１０００のパケットに対するＳＡＣＫは、パケットがシーケンス番号１０００から１０９９のデータを持っているため、始端が１０００、終端が１１００となる。
【００３３】
複数のパケットが廃棄された場合は、複数のＳＡＣＫブロックを通知するため、ブロックの始端（１０８、１１０、１１２）及び終端（１０９、１１１、１１３）を複数指定する。なお、オプション長の制限により、最大で４ブロックを送ることができるので、過去に通知済みのＳＡＣＫブロックも含め、最新の４ブロックが通知される。
【００３４】
図４Ａ及び図４Ｂは、第１の実施例の再送管理テーブル１５の構成例を説明する図であり、優先度が設定された後の状態を示す。
【００３５】
再送管理テーブル１５は、各エントリに、エントリ番号１２０、受信済みシーケンス番号の始端１２１及び終端１２２、及び再送優先度１２４を格納する。なお、再送管理テーブル１５は、パケット数１２３のフィールドを有してもよい。パケット数１２３は、当該エントリの再送箇所の再送パケット数を示す。なお、パケット数１２３は、シーケンス番号とパケット長から計算できるため、テーブル１５の必須の構成ではない。
【００３６】
再送管理テーブル１５が、受信端末２が受信済みであるシーケンス番号を保持しているため、再送管理テーブル１５に記載されていないパケットは再送すべきパケットである。具体的には、あるエントリの前のエントリの受信済終端から該当エントリの受信済始端までのシーケンスのパケットが再送すべきパケットである。ただし、エントリ番号１ではＡＣＫ番号から受信済始端までが再送すべきパケットである。これらのシーケンス番号の差をパケット長（例えば、１００）で除算した値がパケット数である。
【００３７】
また、再送管理テーブル１５は、図４Ｂのような構成でもよい。図４Ｂに示す再送管理テーブル１５では、図４Ａに示す再送管理テーブル１５のように受信済箇所の始端１２１及び終端１２２を管理するのではなく、再送すべき箇所の始端１２５及び終端１２６を管理する。よって、図４Ｂに示す再送管理テーブル１５に保持されている箇所のパケットを再送すればよい。
【００３８】
図４Ａに示す再送管理テーブル１５では、受信済箇所の始端１２１及び終端１２２を管理するので、確認応答パケット受信時の処理負荷を小さくすることができる。一方、図４Ｂに示す再送管理テーブル１５では、再送すべき箇所の始端１２５及び終端１２６を管理するので、再送時の処理負荷を低減することができる。
【００３９】
再送優先度設定の詳細について説明する前に、優先度設定の必要性について説明する。
【００４０】
通常、シーケンス番号が小さいパケットから順に再送される。図５は、再送優先度を設定せずシーケンス番号の順に再送する例を示す。受信端末２は、送信端末１の再送管理テーブル１３０ａと同じ情報を格納している。そのため、送信端末１の再送管理テーブル１５の記憶容量は、受信端末２の廃棄箇所の記憶容量に比例する。なお、実装によっては、送信端末１の再送管理テーブル１５の構成と、受信端末２の廃棄箇所の記憶領域の構成とは同一でなくてもよい。
【００４１】
送信端末１は、エントリ番号２の再送ブロックとして、シーケンス番号１２００から順に５パケットを再送した（１３１〜１３５）が、シーケンス番号１３００のパケットが廃棄された（１３２）。受信端末２は受信箇所に関してＡＣＫ又はＳＡＣＫを含むＡＣＫを返信する。まず、受信端末２は、１２００番のパケットを受信したため、ＳＡＣＫ１１００−１３００を含むＡＣＫを返信する（１３６）。これを受信した送信端末１は、エントリ１の終端を１３００に書き換える。次に受信端末２は、シーケンス番号１３００のパケットが廃棄されたため、シーケンス番号１４００のパケットを受信する（１３３）。受信端末２はＳＡＣＫ１４００−１５００及びＳＡＣＫ１１００−１３００を含むＡＣＫを返信する（１３７）。
【００４２】
これを受信した送信端末１は、新たなエントリ１４００−１５００を再送管理テーブルに記憶する（１３０ｂ）。続いて、受信端末２は、シーケンス番号１５００及び１６００のパケットを受信する（１３４、１３５）。これらのパケットにより、シーケンス番号１５００〜１７００のパケットが受信される。そのため、エントリ番号２及び３がつながることとなり、ＳＡＣＫ１４００−２０００を含むＡＣＫが返信される（１３８、１３９）。このＡＣＫを受信した送信端末１は、再送管理テーブル１３０ｂのエントリ２及び３を連結し、新たにエントリ２として１４００−２０００を記憶する（１３０ｃ）。
【００４３】
ここで、この再送の前後において再送管理テーブル１３０ａ及び１３０ｃのエントリ数は、変わらず、一時的に増加している（１３０ｂ）。つまり、再送中に再び廃棄が発生すると、再送管理テーブルのエントリ数は減らない。
【００４４】
一方、図６はシーケンス番号の順によらず再送を行った例を示す。
【００４５】
送信端末１が、シーケンス番号の順によらず、エントリ番号３のブロックとして、シーケンス番号２０００のパケットを再送する（１４１）。シーケンス番号２０００のパケットの送信が成功すると、受信端末２はＳＡＣＫ１７００−３０００を含むＡＣＫを返信する（１４２）。
【００４６】
送信端末１は、このＡＣＫを受信すると、エントリ２及び３を連結し、新たに１７００−３０００をエントリ２として記憶する（１４０ｂ）。よって、再送管理テーブルのエントリ数を減らすことができる。もし、シーケンス番号２０００のパケットの再送が失敗しても、エントリの数は変わらない。
【００４７】
このように、再送パケットが再び廃棄されるとエントリ数を減らすことができない。再送パケットが再び廃棄される確率が一定であれば、再送ブロック中一つでも廃棄される確率は、該当ブロックのパケット数に応じて大きくなる。よって、再送ブロックのパケット数が少ないエントリは、再送管理テーブル１５のエントリ数を減らしやすく、一方で、再送ブロックのパケット数が多いエントリは、再送管理テーブル１５のエントリ数を減らしにくい。
【００４８】
以上の例から分かるように、受信端末２において廃棄箇所の記憶容量が限られている場合、シーケンス番号の順に再送するのではなく、再送パケット数の少ない箇所を優先して再送した方が、受信端末２が廃棄箇所を記憶するための容量を削減することができる。特に、パケット数が少ないブロックほど、再送パケットの廃棄による記憶容量の増加を避けられるため、このようなブロックを優先的に再送すればよい。
【００４９】
第１の実施例では、パケット数が１である再送ブロックを優先して再送する場合の例を示す。図７は、第１の実施例の優先度設定部が実行する処理のフローチャートである。優先度設定部１４は、廃棄検出部１３が受信端末２における廃棄箇所記憶容量の不足が発生したこと検出し、それが通知されるまで待機する（１５０）。そして、優先度設定部１４は、廃棄箇所記憶容量の不足の発生が通知されれば、再送管理テーブル１５のエントリを順に調べる（１５１）。その結果、再送すべきパケットの数が１であれば優先度を１に設定し（１５２）、再送すべきパケットの数が１でなければ優先度を０に設定する（１５３）。その後、最後のエントリまで処理が完了したかを判定し（１５４）、最後のエントリまで処理が完了していれば、処理を終了する。
【００５０】
優先度設定後の再送管理テーブル１５における状態の例を図４Ａ及び図４Ｂに示す。パケット数が１であるエントリが優先度１に、パケット数が２以上であるエントリが優先度０に設定されている。
【００５１】
次に、受信端末２における廃棄箇所の記憶容量が不足している状態を検出する方法について説明する。
【００５２】
図８は、記憶容量が不足している場合の通信シーケンスを示す。
【００５３】
図８に示す例において、受信端末２は、図示するシーケンス以前に、シーケンス番号０から１０００のパケットを受信し、そこからいくつかの廃棄を挟んで、シーケンス番号が１５００、１６００、１８００及び２０００のパケットを受信している。この状態で、受信端末２では、廃棄箇所を記憶できる容量が一杯になっており、新たな廃棄を記憶できない。
【００５４】
送信端末１が、シーケンス番号が２０００のパケットに続いて、シーケンス番号が２１００及び２２００のパケットを送信し（１６０、１６１）、受信端末２が、この二つのパケットを受信した。これらのパケットは廃棄箇所を増加させないため、受信端末２は、ＳＡＣＫ２０００−２２００を含むＡＣＫ（１６６）及びＳＡＣＫ２０００−２３００を含むＡＣＫ（１６７）が送信される。
【００５５】
その後、次に送信されたシーケンス番号が２３００のパケットが廃棄され（１６２）、シーケンス番号が２４００番のパケットは受信端末２が受信した（１６３）。このとき受信端末２は、記憶容量の上限に達しているため、新たな廃棄箇所を記憶できない。このため、受信端末２は、パケットを受信したのでＡＣＫを送信するが、新たなパケット受信を記憶しないため、直前のＡＣＫパケットと同じＳＡＣＫを含むＡＣＫパケットを返信する。すなわち、ＳＡＣＫ２０００−２３００を含むＡＣＫが送信される（１６８）。以降、受信端末２は、新たなパケットを受信するたびに同じＡＣＫを送信する（１６９、１７０）。
【００５６】
つまり、送信端末１が、直前のＡＣＫパケットと同じＳＡＣＫを含むＡＣＫパケットを受信した場合、受信端末２の廃棄箇所の記憶容量が上限に達していることが分かる。
【００５７】
図９は、第１の実施例の廃棄検出部１３が実行する処理のフローチャートである。
【００５８】
廃棄検出部１３は、ＡＣＫ又はＳＡＣＫを含むＡＣＫパケットを受信すると（１８０）、ＡＣＫメモリ１８、ＳＬＥ１〜４メモリ１９〜２２及びＳＲＥ１〜４メモリ２３〜２６を記憶部１７からを読み出し（１８１）、直前に受信したＡＣＫパケットのＳＡＣＫと一致しているかを判定する（１８２）。
【００５９】
記憶部１７の記憶内容と直前に受信したＡＣＫパケットのＳＡＣＫとが一致している場合、優先度設定部１４へ通知する（１８３）。一方、記憶部１７の記憶内容と直前に受信したＡＣＫパケットのＳＡＣＫとが一致していない場合、変更点を再送管理テーブル１５に記憶する（１８４）。
【００６０】
再送部１６は、再送管理テーブル１５のエントリを調べ、優先度が高いエントリから順にパケットを再送する。優先度が同一のエントリはシーケンス番号の小さいパケットから再送する。
【００６１】
以上に説明したように、第１の実施例では、廃棄されたパケットを効率的に再送し、廃棄箇所の記憶容量を削減することができ、データ転送のスループットを向上することができる。また、再送すべきパケットの数が少ない廃棄箇所に高い優先度を設定するので、受信端末２の廃棄箇所の記憶容量の不足を緩和することができる。さらに、再送すべきパケットの数が１である廃棄箇所の優先度を高く設定し、再送すべきパケットの数が２以上である廃棄箇所の優先度を０に設定するので、再送すべきパケット数が１である廃棄箇所のパケットを優先的に再送することができ、再送を容易に制御することができる。
【００６２】
＜実施例２＞
本発明の第２の実施例では、第１の実施例とは異なる優先度設定方法を示す。
【００６３】
第１の実施例ではパケット数が１の再送ブロックのみを再送したが、第２の実施例ではパケット数が１以上（例えば、パケット数が２や３）のブロックも再送する。但し、パケット数が小さいブロックの優先度を高く設定するため、パケット数が１のブロックが先に再送される。連続してパケットの廃棄が発生する場合、第２の実施例の方法が有効である。なお、第２の実施例において、前述した実施例との相違点のみを説明し、第１の実施例と同じ構成及び処理については同じ符号を付し、それらの説明は省略する。
【００６４】
図１０は、第２の実施例の再送管理部１２の機能ブロック図である。
【００６５】
第２の実施例の再送管理部１２は、第１の実施例の構成に加え、優先度を設定するためにデータを並び替える一時テーブル３０を有する。
【００６６】
図１１は、第２の実施例の一時テーブル３０の構成例を説明する図である。
【００６７】
一時テーブル３０は、再送管理テーブル１５の各エントリへのポインタ（例えば、再送管理テーブルのエントリ番号）２１０、各ブロックのパケット数２１１及び各ブロックの優先度２１２を含む。
【００６８】
図１２は、第２の実施例の優先度設定部１４が実行する処理のフローチャートである。
【００６９】
優先度設定部１４は、廃棄検出部１３が受信端末２における廃棄箇所記憶容量の不足が発生したこと検出し、それが通知されるまで待機する（２００）。そして、優先度設定部１４は、廃棄箇所記憶容量の不足の発生が通知されれば、再送管理テーブル１５から一時テーブル３０を生成する（２０１）。その後、一時テーブル３０をパケット数２１１の昇順にソートする（２０２）。なお、パケット数２１１が同一のエントリはシーケンス番号が小さい順に並べるとよい。
【００７０】
そして、一時テーブル３０の先頭から末尾に向かって小さくなるように優先度２１２を設定して、パケット数が小さいものに高い優先度２１２を設定する（２０３）。例えば、（エントリ数−インデックス番号）とする。最後に、ポインタをたどって、設定した優先度２１２を再送管理テーブル１５に書き戻す（２０４）。なお、図１１は優先度２１２を設定した後の一時テーブル３０の状態を示す。
【００７１】
図１３Ａ及び図１３Ｂは、第２の実施例において優先度が設定された再送管理テーブル１５の構成例を説明する図である。
【００７２】
図１３Ａは、受信済の始端と終端を管理する場合の再送管理テーブル１５を示し、図１３Ｂは、再送すべき個所の始端と終端を管理する場合の再送管理テーブル１５を示す。再送部１６は、再送管理テーブル１５に含まれる優先度に従って、パケットを再送する。
【００７３】
以上に説明したように、第２の実施例では、前述した第１の実施例の効果に加え、再送すべきパケットの数が少なく、かつ、シーケンス番号が小さいパケットを含む廃棄箇所に高い優先度を設定するので、受信端末２の廃棄箇所の記憶容量をより確実に減らすことができ、記憶容量の不足を緩和する効果が大きい。さらに、一時テーブル３０を用いて、パケット数の順に優先度を設定するので、優先度を設定する処理の負荷を抑制することができる。
【００７４】
＜実施例３＞
本発明の第３の実施例では、第１の実施例とは異なる記憶容量の不足の検出方法を示す。
【００７５】
第１の実施例では、何らかの理由によって、直前のＡＣＫパケットと全てのＳＡＣＫが重複するＡＣＫパケットを受信した場合、受信端末２で記憶容量不足が発生していると誤って判定することがある。このような現象は、例えば、受信端末２がＲＦＣ２８８３に規定された標準方式を採用する場合、既に受信済のパケットと同一のパケットを再び受信された場合、同じＳＡＣＫによって、同じパケットを受信した旨を送信端末１に通知する。このとき、受信端末２が受信済のパケットを送信端末１が再送した後、さらに、タイムアウトなどによって送信端末１が同一のパケットを再送したか、又は、ネットワーク上でパケットの複製が発生した。この場合、受信端末２は、同一のＳＡＣＫを含むＡＣＫパケットを連続して返信する。
【００７６】
これに対する対策として、同一のＳＡＣＫを含むＡＣＫパケットを複数受信したことによって、受信端末２の記憶容量の不足を検出する方法が有効である。しかし、ある時間に送信されるパケットの数は、送信端末１の送信制御によって変動する。このため、単純にパケット数で判定すると、送信パケット数が少ないときは記憶容量の不足を過剰に検出しやすく、送信パケット数が多いときは記憶容量の不足を検出しにくくなる。そこで、第３の実施例では、送信パケット数に対して、同一のＳＡＣＫを含むＡＣＫパケットの数を基準として記憶容量の不足を検出することによって、送信パケット数によらず検出能力の変動を抑制する。
【００７７】
第３の実施例において、前述した実施例との相違点のみを説明し、第１及び第２の実施例と同じ構成及び処理については同じ符号を付し、それらの説明を省略する。
【００７８】
図１４は、第３の実施例における再送管理部１２の機能ブロック図である。
【００７９】
第３の実施例の再送管理部１２は、前述した第１の実施例の再送管理部の構成に加え、カウンタ４０を有する。カウンタ４０は、送信パケット数カウンタ（ｓｎｄ）４１及び、ＳＡＣＫの値が重複したパケット数をカウントする重複ＳＡＣＫカウンタ（ｓａｃｋ．ｄｕｐ）４２を有する。
【００８０】
図１５は、第３の実施例の廃棄検出部１３が実行する処理のフローチャートである。
【００８１】
廃棄検出部１３は、繰り返し（例えば、所定時刻ごとに）受信端末２における記憶容量の不足が発生していないか調べる。このため、現在時刻と基準時刻との差が、所定のインターバル以上であるかを判定する（３００）。
【００８２】
その結果、時刻差が所定のインターバル以上である場合、基準時刻を現在時刻に更新して（３０１）、カウンタの値を取得し（３０２）、ｓａｃｋ．ｄｕｐ／ｓｎｄを計算し、計算されたｓａｃｋ．ｄｕｐ／ｓｎｄと所定の閾値とを比較する（３０３）。
【００８３】
その結果、計算されたｓａｃｋ．ｄｕｐ／ｓｎｄが所定の閾値より大きければ（３０３でＹＥＳ）、受信端末２で記憶容量の不足が発生したと判定して、優先度設定部１４へ通知する（３０４）。
【００８４】
現在時刻と基準時刻との差が所定のインターバル未満であれば（３０３でＮＯ）、ＡＣＫ又はＳＡＣＫ付きのＡＣＫパケットを受信したかを判定する（３０７）。これによって、ＡＣＫ受信時のみ処理を実行することができる。ＡＣＫ又はＳＡＣＫ付きのＡＣＫパケットを受信すると（３０７でＹＥＳ）、再送管理テーブル１５を参照し（３０８）、新たなＡＣＫ又はＳＡＣＫを受信したかを判定する（３０９）。
【００８５】
その結果、新たなＡＣＫ又はＳＡＣＫを受信した箇所があれば（３０９でＹＥＳ）、受信したＡＣＫ及びＳＡＣＫを再送管理テーブル１５に格納し（３１０）、新たなＳＡＣＫ情報を記憶部１７に書き込む（３１１）。一方、新たなＡＣＫ又はＳＡＣＫを受信した箇所がなければ（３０９でＮＯ）、記憶部１７に格納された重複ＳＡＣＫカウンタ（ｓａｃｋ．ｄｕｐ）４２を１だけカウントアップする（３１２）。
【００８６】
最後に、送信すべきパケットがあれば、当該パケットを送信し（３０５）、送信パケット数カウンタ（ｓｎｄ）４１を１だけカウントアップする（３０６）。
【００８７】
第３の実施例の方法は、第１の実施例のみではなく、第２の実施例の方法とも組み合わせることができる。
【００８８】
以上に説明したように、第３の実施例では、送信パケットの数と確認応答パケットの数との比が所定の閾値以上である場合、廃棄箇所の記憶容量の不足を検出する。このため、受信端末２が誤って同じＳＡＣＫが返信した場合でも、廃棄箇所の記憶容量の不足を誤検出する可能性を低くすることができる。
【００８９】
＜実施例４＞
本発明の第４の実施例では、記憶容量の不足を事前に検出する方法を示す。
【００９０】
第１及び第３の実施例では、受信端末２での廃棄箇所記憶容量の不足が生じてから再送優先度を設定する。そのため、記憶容量の不足が解消するまでに送信された新規パケットは、受信側に届くにもかかわらず破棄される。そこで、第４の実施例では、廃棄箇所記憶容量の不足を事前に検出し、容量が不足しそうな場合には予め再送優先度を設定する。
【００９１】
第４の実施例において、前述した実施例との相違点のみを説明し、第１から第３の実施例と同じ構成及び処理については同じ符号を付し、それらの説明は省略する。
【００９２】
受信端末２の廃棄箇所記憶容量の不足を検出するため、廃棄検出部１３は再送管理テーブル１５のエントリ数を監視する。エントリ数が所定値を超えれば、記憶容量の不足が近いと判定し、優先度設定部１４に記憶容量不足を通知する。他の機能及び処理は、前述した他の実施例と同じである。
【００９３】
図１６は、第４の実施例の廃棄検出部１３が実行する処理のフローチャートである。
【００９４】
廃棄検出部１３は、再送管理テーブル１５のエントリ数を監視する（４００）。そして、再送管理テーブル１５のエントリ数が所定の閾値以上であれば、優先度設定部１４へ通知する（４０１）。一方、再送管理テーブル１５のエントリ数が所定の閾値より小さければ、ＡＣＫ（又は、ＳＡＣＫ）を受信した場合（４０２）、再送管理テーブル１５に記憶する（４０３）。
【００９５】
第４の実施例の方法は、第１から第３の実施例のいずれとも組み合わせることができる。
【００９６】
以上に説明したように、第４の実施例では、再送管理テーブル１５のエントリ数が所定の閾値以上である場合、廃棄箇所の記憶容量が不足することを予測するので、実際に記憶容量が不足する前に、記憶容量を削減することができ、データ転送のスループットの低下を抑制することができる。
【００９７】
＜実施例５＞
本発明の第５の実施例は、独自ＴＣＰ機能６を実装できない場合の例である。
【００９８】
第１から第４の実施例では、送信端末６１が独自ＴＣＰ機能６を実装する。しかし、送信端末６１に独自ＴＣＰ機能６を実装できない場合、図１７に示すように送信端末６１と同一のＬｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ  （ＬＡＮ）５４内に独自ＴＣＰ機能６を有するプロキシ装置５０を設置することができる。
【００９９】
第５の実施例において、前述した実施例との相違点のみを説明し、第１から第４の実施例と同じ構成及び処理については同じ符号を付し、それらの説明は省略する。
【０１００】
図１７は、第５の実施例のシステムの構成を示す図であり、図１８は、第５の実施例のプロキシ装置の機能ブロック図である。
【０１０１】
第１の実施例のシステムは、送信端末６１、プロキシ装置５０、ＷＡＮ３及び受信端末２を含む。
【０１０２】
プロキシ装置５０は、少なくともネットワークインターフェース（ＮＩＦ）５及び５１、主記憶２１、補助記憶装置１８、プロセッサ１９、及びそれらの装置を相互に接続しデータを転送するシステムバス２０を有する計算機である。主記憶２１は、プログラム及びデータを一時的に格納する。補助記憶装置１８は、プログラム及びデータを格納する。プロセッサ１９は、主記憶２１に格納されたプログラムを実行する。
【０１０３】
主記憶２１は、独自ＴＣＰ機能６のためのプログラム、一般ＴＣＰ機能５２のためのプログラム、プロキシ５３のためのプログラムなどを格納する。
【０１０４】
ネットワークインターフェース５１は、送信端末６１と接続するためにＬＡＮ５４用のインターフェースである。
【０１０５】
補助記憶装置１８は、例えば、フラッシュメモリ、磁気記憶装置等の不揮発性の記憶装置であり、プロセッサ１９が実行するプログラム及びプログラム実行時に使用されるデータを格納する。すなわち、プロセッサ１９が実行するプログラムは、補助記憶装置１８から読み出されて、主記憶２１にロードされて、プロセッサ３４によって実行される。
【０１０６】
プロセッサ３４は、所定のプログラムを実行する。これによって、独自ＴＣＰ機能６は送信端末６１から送信された送信データを制御する。独自ＴＣＰ機能６は送信データをネットワークインターフェース５に送り、ネットワークインターフェース５がＷＡＮ３に送信データを送信する。
【０１０７】
独自ＴＣＰ機能６は、前述したいずれかの実施例による再送制御を行って、パケットを転送する。独自ＴＣＰ機能６の構成は、例えば、図２を用いて第１の実施例において前述したとおりである。
【０１０８】
図１８に示すように、一般ＴＣＰ機能５２は、ＬＡＮ側受信部５５、ＬＡＮ側送信部５６、ＬＡＮ側受信バッファ５７、ＬＡＮ側送信バッファ５８及びＬＡＮ側制御部５９を有する。ＬＡＮ側制御部５９は、通常のＴＣＰプロトコルに従って、パケットを転送する。
【０１０９】
プロキシ５３は、独自ＴＣＰ機能６と一般ＴＣＰ機能５２との間でデータを交換する。
【０１１０】
なお、図１７では、独自ＴＣＰ機能６及び一般ＴＣＰ機能５２の全てをソフトウェアで構成した例を示したが、独自ＴＣＰ機能６及び一般ＴＣＰ機能５２の一部又は全てをロジック回路による専用ＬＳＩ又はネットワークインターフェース５に実装してもよい。
【０１１１】
プロセッサ１９が実行するプログラムは、リムーバブルメディア（ＣＤ−ＲＯＭ、フラッシュメモリなど）又はネットワークを介してプロキシ装置５０に提供され、非一時的記憶媒体である補助記憶装置１８に格納される。このため、プロキシ装置５０は、リムーバブルメディアを読み込むインターフェース（例えば、光ディスクドライブ、ＵＳＢポートなど）を有するとよい。
【０１１２】
送信端末６１は、少なくともネットワークインターフェース、主記憶装置、補助記憶装置、プロセッサ、及びそれらの装置を相互に接続しデータを転送するシステムバスを有する計算機である。主記憶は、プログラム及びデータを一時的に格納する。補助記憶装置は、プログラム及びデータを格納する。プロセッサは、主記憶に格納されたプログラムを実行する。
【０１１３】
主記憶は、アプリケーションプログラム、アプリケーションデータなどを格納する。
【０１１４】
補助記憶装置は、例えば、フラッシュメモリ、磁気記憶装置等の不揮発性の記憶装置であり、プロセッサが実行するプログラム及びプログラム実行時に使用されるデータを格納する。すなわち、プロセッサが実行するプログラムは、記憶部から読み出されて、主記憶にロードされて、プロセッサによって実行される。
【０１１５】
プロセッサは、アプリケーションデータを用いてアプリケーションプログラムを実行する。プロセッサが実行するプログラムは、リムーバブルメディア（ＣＤ−ＲＯＭ、フラッシュメモリなど）又はネットワークを介して送信端末に提供され、非一時的記憶媒体である補助記憶装置３３に格納される。このため、送信端末６１は、リムーバブルメディアを読み込むインターフェース（例えば、光ディスクドライブ、ＵＳＢポートなど）を有するとよい。
【０１１６】
第５の実施例は、前述した第２から第４の実施例と組み合わせることができる。すなわち、第１から第４の実施例においては、送信端末６１に独自ＴＣＰ機能６を実装したが、送信端末６１に独自ＴＣＰ機能６を実装せず、独自ＴＣＰ機能６を実装したプロキシ装置５０を用いる場合、各実施例と同様の独自ＴＣＰ機能６を用いることによって、同様の効果が得られる。
【０１１７】
以上に説明したように、第５の実施例では、独自ＴＣＰ機能６と一般ＴＣＰ機能５２との間でデータを交換するプロキシ機能を有するので、送信端末１に特別な実装をすることなく、データ転送のスループットを向上することができる。
【０１１８】
以上、本発明を添付の図面を参照して詳細に説明したが、本発明はこのような具体的構成に限定されるものではなく、添付した請求の範囲の趣旨内における様々な変更及び同等の構成を含むものである。
【符号の説明】
【０１１９】
１  送信端末
２  受信端末
３  ＷＡＮ
４  アプリケーションプログラム
５  ネットワークインターフェース
６  独自ＴＣＰ機能
７  送信部
８  受信部
９  送信バッファ
１０  受信バッファ
１１  送信制御部
１２  再送管理部
１３  廃棄検出部
１４  優先度設定部
１５  再送管理テーブル
１６  再送部
１７  記憶部
５０  プロキシ装置
５１  ＬＡＮ側ネットワークインターフェース
５２  一般ＴＣＰ機能
５３  プロキシ
５４  ＬＡＮ
５５  ＬＡＮ側受信部
５６  ＬＡＮ側送信部
５７  ＬＡＮ側受信バッファ
５８  ＬＡＮ側送信バッファ
５９  ＬＡＮ側制御部
６１  送信端末
【図１】
2014147011.tif 000003
【図２】
2014147011.tif 000004
【図３】
2014147011.tif 000005
【図４Ａ】
2014147011.tif 000006
【図４Ｂ】
2014147011.tif 000007
【図５】
2014147011.tif 000008
【図６】
2014147011.tif 000009
【図７】
2014147011.tif 000010
【図８】
2014147011.tif 000011
【図９】
2014147011.tif 000012
【図１０】
2014147011.tif 000013
【図１１】
2014147011.tif 000014
【図１２】
2014147011.tif 000015
【図１３Ａ】
2014147011.tif 000016
【図１３Ｂ】
2014147011.tif 000017
【図１４】
2014147011.tif 000018
【図１５】
2014147011.tif 000019
【図１６】
2014147011.tif 000020
【図１７】
2014147011.tif 000021
【図１８】
2014147011.tif 000022