(57)【要約】【課題】ｐｉｐｅ値の適切な推定を行うとともに、再送パケットの失敗を検出し、廃棄された再送パケットを再度再送し、スループットが低下するのを防止する。【解決手段】送信局にあって、パケット送信制御装置は、ネットワーク上に存在する転送中のパケットの数をカウントする手段と、該転送中のパケット数とウインドウサイズを比較し、転送中のパケット数がウインドウサイズより大きい場合、パケットを送信する手段を有する。また、あるパケットの後続の再送パケットが先に選択的に送達確認された時、該パケットの廃棄を検出する手段と、該廃棄パケットを再送する手段を有する。【選択図】図１
2007243447.tif 000002
【特許請求の範囲】
【請求項１】
送信局ではパケットに順序番号を付与して送信し、受信局では、累積的に順序正しく受信したパケットの順序番号を前記送信局に通知し、前記受信局では、順序抜けのあったパケットを保存し、前記送信局では、前記送信局と前記受信局の間のネットワーク上に存在する累積的な送達未確認のパケットの数であるウインドウサイズを制限する通信システムにおいて、
送信局にあって、
前記ネットワーク上に存在する転送中のパケットの数をカウントする手段と
該転送中のパケット数とウインドウサイズを比較し、転送中のパケット数がウインドウサイズより大きい場合、パケットを送信する手段
を有するパケット送信制御装置。
【請求項２】
累積的もしくは選択的に送達未確認のパケットにおいて、
廃棄が確認されていないパケットをカウントする手段と、
該カウント結果を前記転送パケット数として設定する手段と
をさらに有する、請求項１に記載のパケット送信制御装置。
【請求項３】
累積的に送達確認されているパケットの最大の順序番号であるｈｉｇｈＡＣＫを取得する手段と、
送信したパケットにおいて最大の順序番号であるｈｉｇｈＤＡＴＡを取得する手段と、
順序番号がｈｉｇｈＡＣＫ以上でｈｉｇｈＤＡＴＡ以下であり、廃棄が確認されていないパケットの総数を検出する手段と、
該総数を前記転送パケット数として設定する手段と
をさらに有する、請求項２に記載のパケット送信制御装置。
【請求項４】
送信局ではパケットに順序番号を付与して送信し、受信局では、累積的に順序正しく受信したパケットの順序番号を前記送信局に通知し、前記受信局では、順序抜けのあったパケットを保存し、前記送信局では、前記送信局と前記受信局の間のネットワーク上に存在する累積的な送達未確認のパケットの数であるウインドウサイズを制限する通信システムにおいて、
送信局にあって、再送パケットの廃棄を検出する手段を有するパケット送信制御装置。
【請求項５】
前記送信局が、
ある再送パケットにおいて、その後続の再送パケットが先に選択的に送達確認されたかどうかを検出する手段と、
選択的に送達確認された時、該再送パケットが廃棄されたことを認識する手段と
をさらに有する、請求項４に記載のパケット送信制御装置。
【請求項６】
各パケットごとに再送回数を求める手段と、
直近に新たに選択的に送達確認したパケットの順序番号であるｒｅｃｅｎｔＳＡＣＫを取得する手段と、
前記ｒｅｃｅｎｔＳＡＣＫの順序番号を持つパケットの再送回数であるｒｅｃｅｎｔＲｘｔＮｕｍを取得する手段と、
パケットの廃棄を確認する手段と、
再送回数が１以上でかつ前記ｒｅｃｅｎｔＲｘｔＮｕｍ以下であり、廃棄が確認されておらず、順序番号が前記ｒｅｃｅｎｔＳＡＣＫより小さいパケットを検出する手段と、
該パケットの再送が失敗したと認識する手段と
を含む、請求項５に記載のパケット送信制御装置。
【請求項７】
前記送信局が、再送が失敗したと認識した前記パケットを送信する手段を含む、請求項６に記載のパケット送信制御装置。
【請求項８】
前記送信局が、再送が失敗したと認識されたパケットのうち、順序番号が小さいパケットから順次再送する手段を含む、請求項７に記載のパケット送信制御装置。
【請求項９】
前記送信局が、
累積的もしくは選択的に送達確認されていないパケットにおいて、
該パケットの順序番号より大きい順序番号が持つパケットがある決められた回数以上、選択的に送達確認された時、該パケットの廃棄が確認されたと認識する手段を含む、請求項２から８のいずれかに記載のパケット送信制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ウインドウフロー制御と選択再送誤り回復が実行されている通信システムにおいて、転送パケット数制御装置の高性能化の技術に関する。
【背景技術】
【０００２】
コンピュータネットワークでは、輻輳もしくはビット誤りにより廃棄されたパケットに対して再送などの処理を行って、コンピュータユーザに対して信頼性のある通信サービスを提供するとともに、ルータもしくは受信局で発生した輻輳への対処もしくはその発生を防止する機能が必要となる。
【０００３】
コンピュータネットワークの代表的なプロトコルであるＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）−ＳＡＣＫ（Ｓｅｌｅｃｔｉｖｅ  Ａｃｋｎｏｗｌｅｄｇｅｍｅｎｔ）（非特許文献１参照）では、受信局が廃棄パケットの情報を送信局に通知し、送信局は指定された廃棄パケットのみを再送する誤り回復（選択再送誤り回復と呼ぶ）を行い、コンピュータユーザに対して信頼性のある通信サービスを提供している。さらに、累積的に送達未確認のパケット数を、ある決められた数（ウインドウサイズと呼ぶ）に制限するウインドウフロー制御により、往復応答時間当たりに送信できるパケット数を調節して、輻輳へ対処している。ここで、「あるパケットが累積的に送達確認されている」とは、そのパケットを含み、そのパケットまでに送信したすべてのパケットを送達確認していることを意味する。
【０００４】
以下の説明では、送信局と受信局は、非特許文献１で規定されているＴＣＰ−ＳＡＣＫが実行されているものとする。
【０００５】
ここでは、非特許文献２に記載されている早期回復手順に関する転送パケット数制御装置を以下に示す。なお、実際のＴＣＰではバイト単位でデータに順序番号を付与するが、以下の説明では、パケット単位で付与されているとする。
【０００６】
まず、送信局により管理されている変数を説明する。
ｃｗｎｄ：輻輳ウインドウサイズ。送信局が、累積的に送達確認なしで送信できる最大パケット数。
ｐｉｐｅ：送信局と受信局上に設定されたコネクション上において、ネットワークに存在するパケット数。受信局の受信バッファにおいて待っている順序誤りのパケット数は含まれない。
ｈｉｇｈＡＣＫ：累積的送達確認順序番号。累積的に送達確認されたパケットにおいて最大の順序番号。
ｈｉｇｈＤＡＴＡ：送信済順序番号。送信したパケットにおいて最大の順序番号。
ｈｉｇｈＲｘｔ：再送済最大順序番号。再送済のパケットにおいて最大の順序番号。
【０００７】
次に、受信局により管理されている変数を定義する。
ｒｃｖＮｘｔ：受信期待順序番号。受信局が、次に順序正しく受信を期待する順序番号。つまり、累積的に順序正しく受信したパケットでの最大の順序番号の値に１を加算した値である。
【０００８】
図２にコンピュータネットワークシステムの構成を示す。図２に示すように、ネットワーク１を介して送信局２と受信局３が接続されている。送信局２と受信局３は、非特許文献１で規定されているＳＡＣＫオプションを具備するＴＣＰを実行し、ネットワーク１で発生したパケット廃棄、輻輳に対処している。
【０００９】
ネットワーク１では、輻輳もしくはビット誤りなどによるパケット廃棄が発生するものとする。
【００１０】
図３に送信局２の機能ブロックを示す。
【００１１】
送信局２内のスコアボード２０４の例を表１に示す。
【００１２】
【表１】
2007243447.tif 000003
【００１３】
スコアボードは、次の２つの属性から構成される。
順序番号：パケットの順序番号。ｈｉｇｈＡＣＫ＋１からｈｉｇｈＤＡＴＡ以下の値をとる。
選択的送達確認数：受信したＡＣＫパケット内のＳＡＣＫ情報を基に選択的に送達確認された数。例えばＳＡＣＫオプションフィールド内に含まれるＳＡＣＫブロック内に、該当する順序番号が含まれていれば、その順序番号の選択的送達確認数を１つ加算する。ここで、「あるパケットが選択的に送達確認されている」とは、「そのパケットのみが送達確認されている」ことを意味する。
【００１４】
送信局２はパケット送信処理部１０１とＡＣＫ受信処理部１０２とフロー制御部１０３とスコアボード管理部１０４とパケット廃棄確認部１０５と次送信パケット決定部１０６と転送パケット数推定部１０７と初送パケットバッファ２０１と再送パケットバッファ２０２と輻輳ウインドウサイズレジスタ２０３とスコアボード２０４と転送パケット数レジスタ２０５と累積的送達確認順序番号レジスタ２０６と送信済順序番号レジスタ２０７と再送済最大順序番号レジスタ２０８から構成されている。
【００１５】
パケット送信処理部１０１は最初の送信のパケット（初送パケットと呼ぶ）を保存している初送パケットバッファ２０１もしくは、再送に備え元のパケットを保存している再送パケットバッファ２０２に保存されたパケットを取り出し、そのパケットをネットワーク１に送信する。
【００１６】
また、送信したパケットの種別に応じて、以下の処理を行う。
【００１７】
初送パケットを送信した時、初送パケットの順序番号を取得し、その値をｈｉｇｈＤＡＴＡとし、送信済順序番号レジスタ２０７に書き込む。
【００１８】
再送パケットを送信した時、再送パケットの順序番号を取得し、もしその順序番号が再送済最大順序番号レジスタ２０８内の値ｈｉｇｈＲｘｔより大きい場合、その値をｈｉｇｈＲｘｔとして更新し、再送済最大順序番号レジスタ２０８に書き込む。
【００１９】
ＡＣＫ受信処理部１０２はネットワーク１を介して受信局３から受け取ったＡＣＫを受信し、ＡＣＫ内の情報に応じて処理を行う。ＡＣＫ受信処理部１０２の詳細手順については、後で説明する。
【００２０】
フロー制御部１０３は輻輳ウインドウサイズレジスタ２０３内の輻輳ウインドウサイズｃｗｎｄの情報と転送パケット数推定値が保存されている転送パケット数レジスタ２０５の情報ｐｉｐｅを使って、ｃｗｎｄ≧ｐｉｐｅの場合を“真”を返す。それ以外は、“偽”を返す。これにより、送信局２と受信局３の間に存在するパケット数はｃｗｎｄに制限される。
【００２１】
スコアボード管理部１０４はＡＣＫ受信部１０２が受信したＡＣＫ内にあるＳＡＣＫ情報を基にスコアボード２０４を管理する。具体的には、ＳＡＣＫブロック内で選択的に送達確認されたパケットの順序番号を取得し、スコアボード２０４において該当する順序番号の選択的送達確認数を１つ増加させる。
【００２２】
パケット廃棄確認部１０５は指定されたパケット（順序番号をＮとする）が廃棄されているか調べる。以下の２つの条件Ａ１とＡ２をともに満たす場合、順序番号がＮのパケットの廃棄が確認されたとする。
Ａ１：順序番号Ｎのパケットが、累積的もしくは選択的に送達確認されていない。
Ａ２：ＤｕｐＴｈｒｅｓｈ（通常３）回以上、Ｎより大きい順序番号を持つパケットが選択的に送達確認されている。ここで、「ＤｕｐＴｈｒｅｓｈ」は管理者が設定可能なパラメータである。
【００２３】
次送信パケット決定部１０６は次に（再）送信すべきパケットを決定する。
【００２４】
従来技術では、以下の条件を満たすパケットを求める。
Ｂ１：順序番号がｈｉｇｈＲｘｔより大きく、パケット廃棄確認機能により廃棄が確認されたパケットの内、最小の順序番号を持つ。
Ｂ２：条件Ｂ１を満たすパケットがない場合、ｈｉｇｈＲｘｔの順序番号を持つ。
【００２５】
転送パケット数推定部１０７は以下の算出アルゴリズムにより、ｐｉｐｅ値を求め、その値を転送パケット数レジスタ２０５に書き込む。
【００２６】
ｐｉｐｅ算出アルゴリズム
順序番号がｈｉｇｈＡＣＫ＋１以上かつｈｉｇｈＤＡＴＡ以下のパケットにおいて、以下の処理を行う。
Ｃ１：パケット廃棄確認部１０５での処理により、廃棄が確認されていないパケットの場合：ｐｉｐｅを１つ増加させる。
Ｃ２：順序番号がｈｉｇｈＲｘｔ以下のパケットの場合：ｐｉｐｅを１つ増加させる。
【００２７】
送信局２でのＡＣＫ受信処理
前述したＡＣＫ受信処理部１０２の処理手順を説明する。
【００２８】
ケース１：ＤｕｐＴｈｒｅｓｈ回、続けて重複ＡＣＫ（送信局がすでに受信したＡＣＫの送達確認順序番号と同一のそれを持つＡＣＫ）を受信した時、送信局２と受信局３との間でパケット廃棄が発生したとみなし、早期回復処理を開始する。ただし、すでに、早期回復処理中（つまり、早期回復状態中）の場合は、以下の処理をスキップする。
１．早期回復状態となる。
２．ｃｗｎｄ←ｃｗｎｄ／２とし、輻輳ウインドウサイズレジスタ２０３を更新する。
３．累積的に送達未確認のパケットのうち、最小の順序番号を持つパケットを再送する。具体的には、
（ａ）累積的送達確認順序番号レジスタ２０６内の値に１を加えた順序番号をもつパケットの順序番号を取得する。
（ｂ）パケット送信処理部１０１を使って、該順序番号の再送パケットを再送パケットバッファ２０２から見つけ、そのパケットを再送する。
４．転送パケット数推定部１０７を使ってｐｉｐｅ値を計算する。
５．フロー制御部１０３に問い合わせ、“真”つまりｃｗｎｄ≧ｐｉｐｅである限り、以下の処理Ａを行う。
（ａ）次送信パケット決定部１０６を使って、次に（再）送信すべきパケットを求める。
（ｂ）パケット送信処理部１０１を使って、初送パケットバッファ２０１もしくは再送パケットバッファ２０２から該当するパケットを取り出し、そのパケットを送信するとともに、関連するレジスタ（送信済順序番号レジスタ２０７もしくは再送済最大順序番号レジスタ２０８）を更新する。
（ｃ）ｐｉｐｅ値を１つ増加させ、その値を転送パケット数レジスタ２０５に格納する。
【００２９】
ケース２：早期回復状態で、ＳＡＣＫ情報を含むＡＣＫパケットを受信した時
１．スコアボード管理部１０４を使ってスコアボード２０４を更新する。
２．転送パケット数推定部２０５を使ってｐｉｐｅ値を計算し、その値を転送パケット数レジスタ２０５に格納する。
３．フロー制御部１０３に問い合わせ、“真”つまりｃｗｎｄ≧ｐｉｐｅである限り、前述の処理Ａを行う。
【００３０】
ケース３：早期回復状態であり、早期回復処理を開始した時最後に送信したパケットが送達確認するＡＣＫを受信した時、早期回復処理を終了する（早期回復状態を脱する）。
【００３１】
図３に受信局３内の機能ブロックを示す。受信局３はパケット受信処理部３０１とＡＣＫ送信処理部３０２とＳＡＣＫ情報作成部３０３と受信バッファ４０１と受信期待順序番号レジスタ４０２から構成されている。
【００３２】
パケット受信処理部３０１は送信局２からパケットを受信した場合、以下の処理を行う。
１．受信パケットの順序番号と受信期待順序番号レジスタ４０２に保存されている受信期待順序番号ｒｃｖＮｘｔを比較し、その結果に応じて、以下の処理を行う。
（ａ）受信パケットの順序番号とｒｃｖＮｘｔが等しい場合、受信パケットを受信バッファ４０１に保存し、順序正しく整列させ、すべての順序正しいパケットを上位層に転送するごとにｒｃｖＮｘｔを１つ加算していく。
（ｂ）受信パケットの順序番号とｒｃｖＮｘｔが異なる場合、受信パケットを受信バッファ４０１に保存する。
２．ＡＣＫ送信処理部３０２に対しＡＣＫ送信を依頼する。
【００３３】
ＡＣＫ送信処理部３０２はパケット受信処理部３０１からＡＣＫ送信依頼があった場合、以下の処理を行う。
１．ＳＡＣＫ情報作成部３０３に受信バッファ４０１で保存されているパケット情報の作成を依頼し、その結果をもとに、ＳＡＣＫフィールドを作成する。
２．受信期待順序番号レジスタ４０２に保存されている受信期待順序番号ｒｃｖＮｘｔを取得し、その値を送達確認順序番号フィールドに設定する。
３．作成したＡＣＫを送信局２に送信する。
【００３４】
ＳＡＣＫ情報作成部３０３はＡＣＫ送信処理部３０２からＳＡＣＫ情報作成依頼があった場合、受信バッファ４０１にアクセスして、保存されているパケットの順序番号を調べ、ＳＡＣＫフィールドの作成に必要な情報を返す。
【非特許文献１】Ｍ．Ｍａｔｈｉｓ，  Ｊ．Ｍａｈｄａｖｉ，  Ｓ．Ｆｌｏｙｄ，  Ａ．Ｒｏｍａｎｏｗ著、“ＴＣＰ  ｓｅｌｅｃｔｉｖｅ  ａｃｋｎｏｗｌｅｄｇｍｅｎｔ  ｏｐｔｉｏｎ”，  ＲＦＣ  ２０１８，  Ｏｃｔｏｂｅｒ，  １９９６．
【非特許文献２】Ｅ．Ｂｌａｎｔｏｎ，  Ｍ．Ａｌｌｍａｎ，  Ｋ．Ｆａｌｌ，  Ｌ．Ｗａｎｇ著、“Ａ  ｃｏｎｓｅｒｖａｔｉｖｅ  ｓｅｌｅｃｔｉｖｅ  ａｃｋｎｏｗｌｅｄｇｍｅｎｔ  （ＳＡＣＫ）−ｂａｓｅｄ  ｌｏｓｓ  ｒｅｃｏｖｅｒｙ  Ａｌｇｏｒｉｔｈｍ  ｆｏｒ  ＴＣＰ”，  ＲＦＣ  ３５１７，  Ａｐｒｉｌ，  ２００３．
【発明の開示】
【発明が解決しようとする課題】
【００３５】
前述した従来技術の問題点を明確にするため、以下のシナリオを例にあげる（図５参照）。
１．順序番号が５〜１２のパケットが送信された。
２．上記のパケットの内、順序番号が６−９のパケットが廃棄された。
３．再送された上記のパケットの内、順序番号が７−９のパケットが再度廃棄された。
【００３６】
ここで、この例で用いるＡＣＫに付与されている情報は、
送達確認順序番号。ｒｃｖＮｘｔの値が入り、図５の例では、ＡＣＫ＝ＸのＸに対応する。
ＳＡＣＫ順序番号ブロック。受信バッファ４０１に、連続的に存在するパケットの順序番号の集合（ブロック）の情報を示す。図５での（Ｙ，Ｚ）でのＹは、ブロックの左端パケットの順序番号、Ｚは、右端ブロックの順序番号＋１が入る。
である。
【００３７】
以下、ＤｕｐＴｈｒｅｓｈを１とした場合を考える。
【００３８】
順序番号が１０の初送パケットに対するＡＣＫの受信時
まず、順序番号が１０のパケットに対するＡＣＫ（図５での５０１）を受信した時を考える。
【００３９】
このＡＣＫの受信により、送信局２は連続してＤｕｐＴｈｒｅｓｈ（＝１）個の重複ＡＣＫを受信したこととなり、前述のケース１の処理を行う。つまり、早期回復状態となり、順序番号がｈｉｇｈＡＣＫ＋１であるつまり６のパケットを再送し、ｈｉｇｈＲｘｔを６に設定する。
【００４０】
送信局２がＡＣＫ５０１を受信し、順序番号が６のパケットを再送した後のスコアボードを表２に示す。
【００４１】
【表２】
2007243447.tif 000004
この時、順序番号がｈｉｇｈＡＣＫ＋１（＝６）以上で、ｈｉｇｈＤＡＴＡ（＝１２）以下のパケットで、累積的もしくは選択的に送達確認されていないパケットの順序番号の集合は｛１１，１２｝である。よって、ｐｉｐｅ算出アルゴリズムＣ１でのｐｉｐｅ値は２となる。一方、ｈｉｇｈＲｘｔ=６であるため、ｐｉｐｅ算出アルゴリズムＣ２の条件でのｐｉｐｅ値は１となる。ゆえに、最終的なｐｉｐｅ値は３（＝２＋１）となる。
【００４２】
図５からわかるように、順序番号が５のパケットは受信局３により順序正しく受信されたため、ネットワーク１上にはなく、順序番号が６のパケットは廃棄されたが再送され、順序番号７−９のパケットは廃棄され、順序番号が１０のパケットは受信局３に届いたが順序誤りのため受信バッファ４０１にあり、順序番号が１１と１２のパケットは送信したが送達確認されていない。
【００４３】
よって、この時点では、順序番号が｛６，１１，１２｝のパケットが、送信局２と受信局３の間のネットワーク１上に存在している。
【００４４】
この時点では、転送パケット数推定部１０７の処理に得られた値と実際の転送パケット数は一致する。
【００４５】
もし、順序番号が１０のパケットに対するＡＣＫの受信前の輻輳ウインドウサイズｃｗｎｄを１２とした場合、このＡＣＫの受信後、ケース１の手順によりｃｗｎｄは半減され６となる。
【００４６】
よって、送信局は、ｃｗｎｄ−ｐｉｐｅ＝６−３＝３個の再送パケットもしくは初送パケットを送信することができる。
【００４７】
ゆえに、この例では、７−９のパケットを再送している。
【００４８】
順序番号が１１の初送パケットに対するＡＣＫの受信時
次に、順序番号が１１のパケットに対するＡＣＫ（図４での５０２）を受信した時を考える。
【００４９】
ＡＣＫ５０２の受信後のスコアボードを表３に示す。
【００５０】
【表３】
2007243447.tif 000005
転送パケット数推定部１０７の処理でのｐｉｐｅ算出アルゴリズムＣ１の条件でのｐｉｐｅ値は１となり、Ｃ２の条件でのｐｉｐｅ値は４となるため、最終的なｐｉｐｅ値は５となり、実際の転送パケット数と一致する。
【００５１】
なお、ｃｗｎｄ−ｐｉｐｅ＝６−５＝１個のパケットを送信できるが、次送信パケット決定部１０６での処理結果では、送信すべきパケットはないため、送信局２は何も送信していない。
【００５２】
順序番号が１２の初送パケットに対するＡＣＫの受信時
この場合も前節と同様に、正しく動作する。
【００５３】
順序番号が９の再送パケットに対するＡＣＫの受信時
次に、順序番号が９の再送パケットに対するＡＣＫ（図５の５０３）を受信した時の処理について説明する。
【００５４】
ＡＣＫ５０３の受信後のスコアボードを表４に示す。
【００５５】
【表４】
2007243447.tif 000006
スコアボードの表４より、累積的もしくは選択的に送達確認されていないパケットの順序番号の集合は、｛６，７，８｝である。また、上記のパケットの廃棄は、パケット廃棄確認処理により、確認されている。よって、ｐｉｐｅ値算出アルゴリズムＣ１の条件でのｐｉｐｅ値は０となる。
【００５６】
ｈｉｇｈＲｘｔ＝８であるから、ｐｉｐｅ算出アルゴリズムＣ２の条件でのｐｉｐｅ値は３となり、最終的なｐｉｐｅ値は３となる。
【００５７】
しかし、再送パケット６−８は、すべて廃棄されているため、実際のｐｉｐｅ値は０である。
【００５８】
つまり、廃棄された再送パケットが加算されているため、ｐｉｐｅ値は過大に見積もられてしまった。
【００５９】
よって、ｐｉｐｅ値が正しく推定されておれば、６（＝ｃｗｎｄ）個のパケットを送信できたが、ＲＦＣ３５１７の仕様では、３（＝６−３）個のパケットしか送信できない。
【００６０】
もし、早期回復状態に新たにパケットが到着しておれば、従来の技術ではそれらのパケットを送信することができない。つまり、スループット下落現象が発生する。
【００６１】
タイムアウトの発生
従来の技術では、再送パケットの失敗を検出する機能がないため、一度再送されたパケットが廃棄された場合、早期回復フェーズ中にそのパケットを再度再送することができない。この再送パケットの廃棄は再送タイマのタイムアウトを引き起こす（図５参照）。一般に、タイムアウト値は往復応答時間より大きく設定されるため、タイムアウトにより大きくスループットが下落してしまう。もし、タイムアウトごとに１つのパケットしか再送しない従来技術の場合、さらにスループットが下落してしまう。
【００６２】
以上より、従来のシステムで推定されるｐｉｐｅ値が過大推定値となり、スループット抑制状態となることがわかる。
【００６３】
さらに、再送パケットの廃棄はタイムアウトでしか回復できないため、パケット廃棄が頻繁に発生するネットワーク環境のもとでは、スループットがさらに下落してしまう問題点があった。
【００６４】
本発明の目的は、ｐｉｐｅ値の適切な推定を行うとともに、再送パケットの失敗を検出し、廃棄された再送パケットを再度再送し、スループットが低下するのを防止することにある。
【課題を解決するための手段】
【００６５】
ｐｉｐｅ値推定アルゴリズムの修正
従来の方法では、廃棄が確認された再送パケットもｐｉｐｅ値としてカウントしているため、本発明では従来のｐｉｐｅ値のカウントを次のように修正する。
【００６６】
累積的もしくは選択的に送達未確認のパケットにおいて、廃棄が確認されていないパケットをカウントし、ｐｉｐｅ値をそのカウント結果値とする。
【００６７】
つまり、累積的もしくは選択的に送達未確認のパケットにおいて、廃棄が確認されていないパケットをカウントする手段と、そのカウント結果を転送パケット数として設定する手段を追加する。
【００６８】
再送失敗確認機能の追加
従来のシステムでは、早期回復手順中に、再送されたパケットの失敗を送信局が検出することができなかった。そこで、再送失敗確認機能を追加する。
【００６９】
本発明では、ある再送パケットの後続の再送パケットが先に選択的に送達確認されたとき、そのパケットの再送が失敗したとみなして、該再送パケットの廃棄を検出することにする。つまり、ある再送パケットにおいて、その後続の再送パケットが先に選択的に送達確認されたかどうかを検出する手段を追加する。
【００７０】
上記の手段を具体的に実現するために、次の変数を追加する。
ｒｅｃｅｎｔＳＡＣＫ：直近選択的送達確認順序番号。直近に新たに選択的送達確認したパケットの順序番号
ｒｅｃｅｎｔＲｘｔＮｕｍ：直近選択的送達確認再送回数。ｒｅｃｅｎｔＳＡＣＫの順序番号を持つパケットの再送回数
さらに、次の手段を追加すれば、再送パケットの失敗を確認することができる。
【００７１】
破棄が確認されていないパケットの総数を転送パケット数として設定する手段
選択的に送達確認された時、該再送パケットが廃棄されたことを認識する手段
順序番号がｈｉｇｈＡＣＫ以上でｈｉｇｈＤＡＴＡ以下であり、廃棄が確認されていないパケットの総数を転送パケット数として設定する手段
各パケットごとに再送回数を求める手段と、
直近に新たに選択的送達確認したパケットの順序番号であるｒｅｃｅｎｔＳＡＣＫを取得する手段と、
ｒｅｃｅｎｔＳＡＣＫの順序番号を持つパケットの再送回数であるｒｅｃｅｎｔＲｘｔＮｕｍを取得する手段と、
パケットの廃棄を検出する手段と、
再送回数が１以上でかつｒｅｃｅｎｔＲｘｔＮｕｍ以下であり、廃棄が確認されておらず、順序番号がｒｅｃｅｎｔＳＡＣＫより小さいパケットを検出する手段
該パケットの再送が失敗したと認識する手段
廃棄再送パケット送信機能の追加
従来の技術では、早期回復手順中に廃棄されたパケットの再送ができなかった。そこで、廃棄再送送信機能を追加した。
【００７２】
ＳＡＣＫ情報を含むＡＣＫパケットを受信した時、再送が失敗したパケットを優先的に送信すればよい。つまり、再送が失敗したパケットのうち、順序番号が小さいパケットから順次再送する手段を追加する。
【発明の効果】
【００７３】
本発明によれば、転送パケット数を精度高く推定できるため従来の方式より高いスループットが期待できる。また、無意味なタイムアウトが発生する確率は従来の方式より小さくなる効果を有する。さらに、受信局側の実装の変更ならびにパケット構成の変更を必要としない。
【発明を実施するための最良の形態】
【００７４】
次に、本発明の実施の形態について図面を参照して説明する。
【００７５】
本実施形態では、受信局３は従来と同じ機能を有している。図１は本実施形態での送信局２の機能ブロック図である。
【００７６】
本実施例での送信局では、図３の従来技術での送信局において、パケット送信処理部１０１、転送パケット数推定部１０７、スコアボード２０４をそれぞれパケット送信処理部１１０１、転送パケット数推定部１１０７、スコアボード１２０４に置き換え、再送パケットの再送失敗を確認する再送失敗確認検出部１１０８と、ｒｅｃｅｎｔＳＡＣＫの値が保持されている直近選択的送達確認順序番号レジスタ１２０１と、ｒｅｃｅｎｔＲｘｔＮｕｍの値が保持されている直近選択的送達確認順序番号レジスタ１２０２が追加されている。
【００７７】
スコアボード１２０４では、再送回数を意味する要素を追加している。
【００７８】
転送パケット数推定部１１０６内のｐｉｐｅ算出アルゴリズムを従来のｐｉｐｅ算出アルゴリズムでの条件（ｂ）を外す。
【００７９】
次に、追加した機能ブロックである再送失敗確認部１１０８の機能を説明する。
【００８０】
指定されたパケット（順序番号をＭとする）の再送が失敗しているか調べる。
１．累積的送達確認順序番号レジスタ２０６からｈｉｇｈＡＣＫを取得する。
２．直近選択的送達確認順序番号レジスタ１２０１からｒｅｃｅｎｔＳＡＣＫを取得する。
３．直近選択的送達確認再送回数レジスタ１２０２からｒｅｃｅｎｔＲｘｔＮｕｍを取得する。
４．以下の条件を満たす時、真を返す。
【００８１】
パケット廃棄確認部１０５での処理により廃棄が確認されていない。
【００８２】
順序番号ＭがｈｉｇｈＡＣＫ＋１以上であり、ｒｅｃｅｎｔＳＡＣＫ未満
スコアボード１２０４において、順序番号Ｍの再送回数が１以上であり、ｒｅｃｅｎｔＲｘｔＮｕｍ以下である。
【００８３】
次に、修正した機能ブロックの機能を説明する。
【００８４】
次送信パケット決定部１１０６
従来の技術での条件Ｂ１の前に、次の条件Ｂ０を追加する。
Ｂ０：再送失敗確認部１１０８での処理により再送の失敗が確認されたパケットの内、最小の順序番号を持つ。
上記の条件Ｂ０の追加により、再送パケットが再度廃棄されても早期回復状態中に再送可能となる。
【００８５】
パケット送信処理部１１０１
従来技術の処理において、以下の処理を追加する。
再送パケットを送信した時：スコアボード１２０４での再送回数を１つ追加する。
【００８６】
転送パケット数推定部１１０６：前述のｐｉｐｅ算出アルゴリズムにより、ｐｉｐｅ値を求め、その値を転送パケット数レジスタ２０５に書き込む。
【００８７】
本実施形態で、図５で示したシナリオに適用した時のＡＣＫ５０３を受信した時の処理を説明する。
・順序番号が１０の初送パケットに対するＡＣＫを受信した時
従来の機能と同じ動作をするが、スコアボードの更新処理が異なる。ただし、スコアボードは表５のようになる。
【００８８】
【表５】
2007243447.tif 000007
・次に、順序番号が９の再送パケットに対するＡＣＫを受信した時
この時、新たに選択的送達確認したパケットの順序番号は９である。よって、ｒｅｃｅｎｔＳＡＣＫは９となる。表５より、順序番号が９の再送回数値は１であるため、ｒｅｃｅｎｔＲｘｔＮｕｍは１となる。
【００８９】
再送失敗確認部１１０８での処理により、順序番号が６から８までのパケットの再送の失敗が確認される。
【００９０】
また、本発明のｐｉｐｅ算出アルゴリズムにより、転送パケット推定部１１０７で得られたｐｉｐｅ値は０となり、実際の値と一致する。よって、修正された次送信パケット決定部１１０６での処理により、６から８までのパケットはタイムアウトが発生することなく順次再送することができる。
【００９１】
次に、順序番号が６から８までの再送パケットのうち、順序番号が７だけのパケットが破棄された場合を考える。順序番号が６のパケットを累積的に送達確認し、順序番号が８のパケットを選択的に送達確認しているＡＣＫを受信した後のスコアボードを表６に示す。
【００９２】
【表６】
2007243447.tif 000008
この時、ｒｅｃｅｎｔＳＡＣＫは８となり、表６よりｒｅｃｅｎｔＲｘｔＮｕｍは２となる。再送失敗確認部１１０８での処理により、順序番号が７のパケットの廃棄が確認される。次送信パケット決定部１１０６により、このパケットは再送される。
【図面の簡単な説明】
【００９３】
【図１】本発明の一実施形態によるコンピュータネットワークシステムの送信局のブロック図である。
【図２】従来のコンピュータネットワークシステムの構成図である。
【図３】図１のコンピュータネットワークシステムにおける送信局のブロック図である。
【図４】図１のコンピュータネットワークシステムにおける受信局のブロック図である。
【図５】図１のコンピュータネットワークシステムにおけるパケットとＡＣＫの流れを示すシーケンス図（その１）である。
【図６】図１のコンピュータネットワークシステムにおけるパケットとＡＣＫの流れを示すシーケンス図である。
【符号の説明】
【００９４】
１    コンピュータネットワーク
２    送信局
３    受信局
１０１，１１０１    パケット送信処理部
１０２    ＡＣＫ受信処理部
１０３    フロー制御部
１０４    スコアボード管理部
１０５    パケット廃棄確認部
１０６，１１０６    次送信パケット送信部
１０７，１１０７    転送パケット数推定部
１１０８    再送失敗確認部
２０１    初送パケットバッファ
２０２    再送パケットバッファ
２０３    輻輳ウインドウサイズレジスタ
２０４，１２０４    スコアボード
２０５    転送パケット数レジスタ
２０６    累積的確認順序番号レジスタ
２０７    送信済順序番号レジスタ
２０８    再送済最大順序番号レジスタ
３０１    パケット受信処理部
３０２    ＡＣＫ送信処理部
３０３    ＳＡＣＫ情報作成部
４０１    受信バッファ
４０２    受信期待順序番号レジスタ
１２０１    直近選択的送達確認順序番号レジスタ
１２０２    直近選択的送達確認再送回数レジスタ
【図１】
2007243447.tif 000009
【図２】
2007243447.tif 000010
【図３】
2007243447.tif 000011
【図４】
2007243447.tif 000012
【図５】
2007243447.tif 000013
【図６】
2007243447.tif 000014