(57)【特許請求の範囲】
【請求項１】
受信側がパケットロスを認識した時に紛失したパケットを指定して送信側に再送を要求するウィンドウ制御方式を用いる通信システムであって、
前記送信側に、前記受信側から通知された情報と輻輳制御の状態の一つ以上の情報とによってネットワークの輻輳状態を推定する推定手段と、前記推定手段で推定された輻輳状態に応じて重輻輳状態であるか前記重輻輳状態でないかを区別する手段と、前記重輻輳状態でないと区別された時に前記パケットの送信量を決めるためのウィンドウを増加しつつ紛失したパケットを再送する手段とを有することを特徴とする通信システム。
【請求項２】
前記送信側が前記パケットの再々送を行い、
前記推定手段が前記ネットワークの輻輳状態を推定するのに用いる前記輻輳制御の状態が前記パケットの再々送の回数であることを特徴とする請求項１に記載の通信システム。
【請求項３】
前記推定手段が前記ネットワークの輻輳状態を推定するのに用いる前記輻輳制御の状態が前記パケットの到着間隔の伸び方であることを特徴とする請求項１または請求項２に記載の通信システム。
【請求項４】
前記送信側が前記受信側から通知された情報が、セグメントのロス箇所及び前記パケットの到着時間のいずれか一つ以上であることを特徴とする請求項１から請求項３のいずれかに記載の通信システム。
【請求項５】
前記推定手段が前記ネットワークの輻輳状態を推定することに、新規セグメントの到着パターンの変動を用いることを特徴とする請求項４に記載の通信システム。
【請求項６】
前記推定手段が前記ネットワークの輻輳状態を推定することに、セグメントの非連続区間の開始シーケンスと終了シーケンスとの差を用いることを特徴とする請求項４または請求項５に記載の通信システム。
【請求項７】
前記推定手段が前記ネットワークの輻輳状態を推定することに、セグメントの非連続区間の量を用いることを特徴とする請求項４から請求項６のいずれかに記載の通信システム。
【請求項８】
前記推定手段が前記ネットワークの輻輳状態を推定することに、前記パケットの到着遅延時間の伸び方を用いることを特徴とする請求項４から請求項７のいずれかに記載の通信システム。
【請求項９】
前記推定手段が前記ネットワークの輻輳状態を推定することに、前記パケットの到着間隔の伸び方を用いることを特徴とする請求項４から請求項８のいずれかに記載の通信システム。
【請求項１０】
前記送信側に、前記重輻輳状態であると区別された時に前記ウィンドウを減少しつつ前記紛失したパケットを再送する手段を含むことを特徴とする請求項１から請求項９のいずれかに記載の通信システム。
【請求項１１】
前記送信側に、前記重輻輳状態であると区別された時に前記ウィンドウを維持しつつ前記紛失したパケットを再送する手段を含むことを特徴とする請求項１から請求項９のいずれかに記載の通信システム。
【請求項１２】
前記送信側に、前記重輻輳状態であると区別された時に前記ウィンドウを重輻輳状態でない場合に比べて低い増加幅で、前記紛失したパケットを再送する手段を含むことを特徴とする請求項１から請求項９のいずれかに記載の通信システム。
【請求項１３】
前記送信側に、軽輻輳状態であると区別された時に前記ウィンドウを上昇させながら、再送を要求されたセグメントのうちの再送していないセグメントの再送を行う軽輻輳再送手段を含むことを特徴とする請求項１から請求項１２のいずれかに記載の通信システム。
【請求項１４】
前記送信側に、軽輻輳状態であると区別された時に前記ウィンドウを維持しながら、再送を要求されたセグメントのうちの再送していないセグメントの再送を行う軽輻輳再送手段を含むことを特徴とする請求項１から請求項１２のいずれかに記載の通信システム。
【請求項１５】
前記送信側に、軽輻輳状態であると区別された時に再送パケットのセグメントサイズ分のウィンドウを小さくして、再送を要求されたセグメントのうちの再送していないセグメントの再送を行う軽輻輳再送手段を含むことを特徴とする請求項１から請求項１２のいずれかに記載の通信システム。
【請求項１６】
前記送信側に、軽輻輳状態であると区別された時に新たに送信可能なシーケンス番号の最大値を増加させる最大送信可能シーケンス番号補正手段を含むことを特徴とする請求項１から請求項１５のいずれかに記載の通信システム。
【請求項１７】
前記送信側に、軽輻輳状態であると区別された時に新たに送信可能なシーケンス番号の最大値を“受信側の最大受信シーケンス番号＋輻輳ウィンドウサイズ”とする最大送信可能シーケンス番号補正手段を含むことを特徴とする請求項１から請求項１５のいずれかに記載の通信システム。
【請求項１８】
前記送信側に、前記ネットワークが輻輳状態にない時に前記ウィンドウを増加しつつ新規送信パケットを送信する通常転送手段と、再送を要求されたセグメントの中で再送を行っていない未再送セグメントがないと判断された時に前記通常転送手段より低い上げ幅で前記ウィンドウを増加しつつ前記新規送信パケットを送信する軽輻輳転送手段とを含むことを特徴とする請求項１から請求項１７のいずれかに記載の通信システム。
【請求項１９】
前記送信側に、前記ネットワークが輻輳状態にない時に前記ウィンドウを増加しつつ新規送信パケットを送信する通常転送手段と、再送を要求されたセグメントの中で再送を行っていない未再送セグメントがないと判断された時に前記ウィンドウを所定時間維持した後に前記ウィンドウを増加しつつ前記新規送信パケットを送信する軽輻輳転送手段とを含むことを特徴とする請求項１から請求項１７のいずれかに記載の通信システム。
【請求項２０】
受信側がパケットロスを認識した時に紛失したパケットを指定して送信側に再送を要求するウィンドウ制御方式を用いる通信装置であって、
前記送信側の処理手段に、前記受信側から通知された情報と輻輳制御の状態の一つ以上の情報とによってネットワークの輻輳状態を推定する推定手段と、前記推定手段で推定された輻輳状態に応じて重輻輳状態であるか前記重輻輳状態でないかを区別する手段と、前記重輻輳状態でないと区別された時に前記パケットの送信量を決めるためのウィンドウを増加しつつ紛失したパケットを再送する手段とを有することを特徴とする通信装置。
【請求項２１】
前記送信側の処理手段において前記パケットの再々送を行い、
前記推定手段が前記ネットワークの輻輳状態を推定するのに用いる前記輻輳制御の状態が前記パケットの再々送の回数であることを特徴とする請求項２０に記載の通信装置。
【請求項２２】
前記推定手段が前記ネットワークの輻輳状態を推定するのに用いる前記輻輳制御の状態が前記パケットの到着間隔の伸び方であることを特徴とする請求項２０または請求項２１に記載の通信装置。
【請求項２３】
前記送信側の処理手段に前記受信側から通知された情報が、セグメントのロス箇所及び前記パケットの到着時間のいずれか一つ以上であることを特徴とする請求項２０から請求項２２のいずれかに記載の通信装置。
【請求項２４】
前記推定手段が前記ネットワークの輻輳状態を推定することに、新規セグメントの到着パターンの変動を用いることを特徴とする請求項２３に記載の通信装置。
【請求項２５】
前記推定手段が前記ネットワークの輻輳状態を推定することに、セグメントの非連続区間の開始シーケンスと終了シーケンスとの差を用いることを特徴とする請求項２３または請求項２４に記載の通信装置。
【請求項２６】
前記推定手段が前記ネットワークの輻輳状態を推定することに、セグメントの非連続区間の量を用いることを特徴とする請求項２３から請求項２５のいずれかに記載の通信装置。
【請求項２７】
前記推定手段が前記ネットワークの輻輳状態を推定することに、前記パケットの到着遅延時間の伸び方を用いることを特徴とする請求項２３から請求項２６のいずれかに記載の通信装置。
【請求項２８】
前記推定手段が前記ネットワークの輻輳状態を推定することに、前記パケットの到着間隔の伸び方を用いることを特徴とする請求項２３から請求項２７のいずれかに記載の通信装置。
【請求項２９】
前記送信側の処理手段に、前記重輻輳状態であると区別された時に前記ウィンドウを減少しつつ前記紛失したパケットを再送する手段を含むことを特徴とする請求項２０から請求項２８のいずれかに記載の通信装置。
【請求項３０】
前記送信側の処理手段に、前記重輻輳状態であると区別された時に前記ウィンドウを維持しつつ前記紛失したパケットを再送する手段を含むことを特徴とする請求項２０から請求項２８のいずれかに記載の通信装置。
【請求項３１】
前記送信側の処理手段に、前記重輻輳状態であると区別された時に前記ウィンドウを重輻輳状態でない場合に比べて低い増加幅で、前記紛失したパケットを再送する手段を含むことを特徴とする請求項２０から請求項２８のいずれかに記載の通信装置。
【請求項３２】
前記送信側の処理手段に、軽輻輳状態であると区別された時に前記ウィンドウを上昇させながら、再送を要求されたセグメントのうちの再送していないセグメントの再送を行う軽輻輳再送手段を含むことを特徴とする請求項２０から請求項３１のいずれかに記載の通信装置。
【請求項３３】
前記送信側の処理手段に、軽輻輳状態であると区別された時に前記ウィンドウを維持しながら、再送を要求されたセグメントのうちの再送していないセグメントの再送を行う軽輻輳再送手段を含むことを特徴とする請求項２０から請求項３１のいずれかに記載の通信装置。
【請求項３４】
前記送信側の処理手段に、軽輻輳状態であると区別された時に再送パケットのセグメントサイズ分のウィンドウを小さくして、再送を要求されたセグメントのうちの再送していないセグメントの再送を行う軽輻輳再送手段を含むことを特徴とする請求項２０から請求項３１のいずれかに記載の通信装置。
【請求項３５】
前記送信側の処理手段に、軽輻輳状態であると区別された時に新たに送信可能なシーケンス番号の最大値を増加させる最大送信可能シーケンス番号補正手段を含むことを特徴とする請求項２０から請求項３４のいずれかに記載の通信装置。
【請求項３６】
前記送信側の処理手段に、軽輻輳状態であると区別された時に新たに送信可能なシーケンス番号の最大値を“受信側の最大受信シーケンス番号＋輻輳ウィンドウサイズ”とする最大送信可能シーケンス番号補正手段を含むことを特徴とする請求項２０から請求項３４のいずれかに記載の通信装置。
【請求項３７】
前記送信側の処理手段に、前記ネットワークが輻輳状態にない時に前記ウィンドウを増加しつつ新規送信パケットを送信する通常転送手段と、再送を要求されたセグメントの中で再送を行っていない未再送セグメントがないと判断された時に前記通常転送手段より低い上げ幅で前記ウィンドウを増加しつつ前記新規送信パケットを送信する軽輻輳転送手段とを含むことを特徴とする請求項２０から請求項３６のいずれかに記載の通信装置。
【請求項３８】
前記送信側の処理手段に、前記ネットワークが輻輳状態にない時に前記ウィンドウを増加しつつ新規送信パケットを送信する通常転送手段と、再送を要求されたセグメントの中で再送を行っていない未再送セグメントがないと判断された時に前記ウィンドウを所定時間維持した後に前記ウィンドウを増加しつつ前記新規送信パケットを送信する軽輻輳転送手段とを含むことを特徴とする請求項２０から請求項３６のいずれかに記載の通信装置。
【請求項３９】
受信側がパケットロスを認識した時に紛失したパケットを指定して送信側に再送を要求するウィンドウ制御方式をとる通信システムに用いる輻輳制御方法であって、
前記送信側の装置が、前記受信側から通知された情報と輻輳制御の状態の一つ以上の情報とによってネットワークの輻輳状態を推定する推定処理と、前記推定手段で推定された輻輳状態に応じて重輻輳状態であるか前記重輻輳状態でないかを区別する処理と、前記重輻輳状態でないと区別された時に前記パケットの送信量を決めるためのウィンドウを増加しつつ紛失したパケットを再送する処理とを実行することを特徴とする輻輳制御方法。
【請求項４０】
前記送信側の装置が前記パケットの再々送を行い、
前記推定処理において前記ネットワークの輻輳状態を推定するのに用いる前記輻輳制御の状態が前記パケットの再々送の回数であることを特徴とする請求項３９に記載の輻輳制御方法。
【請求項４１】
前記推定処理において前記ネットワークの輻輳状態を推定するのに用いる前記輻輳制御の状態が前記パケットの到着間隔の伸び方であることを特徴とする請求項３９または請求項４０に記載の輻輳制御方法。
【請求項４２】
前記送信側の装置に前記受信側から通知された情報が、セグメントのロス箇所及び前記パケットの到着時間のいずれか一つ以上であることを特徴とする請求項３９から請求項４１のいずれかに記載の輻輳制御方法。
【請求項４３】
前記推定処理において前記ネットワークの輻輳状態を推定することに、新規セグメントの到着パターンの変動を用いることを特徴とする請求項４２に記載の輻輳制御方法。
【請求項４４】
前記推定処理において前記ネットワークの輻輳状態を推定することに、セグメントの非連続区間の開始シーケンスと終了シーケンスとの差を用いることを特徴とする請求項４２または請求項４３に記載の輻輳制御方法。
【請求項４５】
前記推定処理において前記ネットワークの輻輳状態を推定することに、セグメントの非連続区間の量を用いることを特徴とする請求項４２から請求項４４のいずれかに記載の輻輳制御方法。
【請求項４６】
前記推定処理において前記ネットワークの輻輳状態を推定することに、前記パケットの到着遅延時間の伸び方を用いることを特徴とする請求項４２から請求項４５のいずれかに記載の輻輳制御方法。
【請求項４７】
前記推定処理において前記ネットワークの輻輳状態を推定することに、前記パケットの到着間隔の伸び方を用いることを特徴とする請求項４２から請求項４６のいずれかに記載の輻輳制御方法。
【請求項４８】
前記送信側の装置が、前記重輻輳状態であると区別された時に前記ウィンドウを減少しつつ前記紛失したパケットを再送する処理を実行することを特徴とする請求項３９から請求項４７のいずれかに記載の輻輳制御方法。
【請求項４９】
前記送信側の装置が、前記重輻輳状態であると区別された時に前記ウィンドウを維持しつつ前記紛失したパケットを再送する処理を実行することを特徴とする請求項３９から請求項４７のいずれかに記載の輻輳制御方法。
【請求項５０】
前記送信側の装置が、前記重輻輳状態であると区別された時に前記ウィンドウを重輻輳状態でない場合に比べて低い増加幅で、前記紛失したパケットを再送する処理を実行することを特徴とする請求項３９から請求項４７のいずれかに記載の輻輳制御方法。
【請求項５１】
前記送信側の装置が、軽輻輳状態であると区別された時に前記ウィンドウを上昇させながら、再送を要求されたセグメントのうちの再送していないセグメントの再送を行う軽輻輳再送処理を実行することを特徴とする請求項３９から請求項５０のいずれかに記載の輻輳制御方法。
【請求項５２】
前記送信側の装置が、軽輻輳状態であると区別された時に前記ウィンドウを維持しながら、再送を要求されたセグメントのうちの再送していないセグメントの再送を行う軽輻輳再送処理を実行することを特徴とする請求項３９から請求項５０のいずれかに記載の輻輳制御方法。
【請求項５３】
前記送信側の装置が、軽輻輳状態であると区別された時に再送パケットのセグメントサイズ分のウィンドウを小さくして、再送を要求されたセグメントのうちの再送していないセグメントの再送を行う軽輻輳再送処理を実行することを特徴とする請求項３９から請求項５０のいずれかに記載の輻輳制御方法。
【請求項５４】
前記送信側の装置が、軽輻輳状態であると区別された時に新たに送信可能なシーケンス番号の最大値を増加させる最大送信可能シーケンス番号補正処理を実行することを特徴とする請求項３９から請求項５３のいずれかに記載の輻輳制御方法。
【請求項５５】
前記送信側の装置が、軽輻輳状態であると区別された時に新たに送信可能なシーケンス番号の最大値を“受信側の最大受信シーケンス番号＋輻輳ウィンドウサイズ”とする最大送信可能シーケンス番号補正処理を実行することを特徴とする請求項３９から請求項５３のいずれかに記載の輻輳制御方法。
【請求項５６】
前記送信側の装置が、前記ネットワークが輻輳状態にない時に前記ウィンドウを増加しつつ新規送信パケットを送信する通常転送処理と、再送を要求されたセグメントの中で再送を行っていない未再送セグメントがないと判断された時に前記通常転送処理より低い上げ幅で前記ウィンドウを増加しつつ前記新規送信パケットを送信する軽輻輳転送処理とを実行することを特徴とする請求項３９から請求項５５のいずれかに記載の輻輳制御方法。
【請求項５７】
前記送信側の装置が、前記ネットワークが輻輳状態にない時に前記ウィンドウを増加しつつ新規送信パケットを送信する通常転送処理と、再送を要求されたセグメントの中で再送を行っていない未再送セグメントがないと判断された時に前記ウィンドウを所定時間維持した後に前記ウィンドウを増加しつつ前記新規送信パケットを送信する軽輻輳転送処理とを実行することを特徴とする請求項３９から請求項５５のいずれかに記載の輻輳制御方法。
【請求項５８】
受信側がパケットロスを認識した時に紛失したパケットを指定して送信側に再送を要求するウィンドウ制御方式をとる通信システムに用いる輻輳制御方法のプログラムであって、
前記送信側の処理を行うコンピュータに、前記受信側から通知された情報と輻輳制御の状態の一つ以上の情報とによってネットワークの輻輳状態を推定する推定処理と、前記推定手段で推定された輻輳状態に応じて重輻輳状態であるか前記重輻輳状態でないかを区別する処理と、前記重輻輳状態でないと区別された時に前記パケットの送信量を決めるためのウィンドウを増加しつつ紛失したパケットを再送する処理とを実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は通信システム、通信装置及びそれらに用いる輻輳制御方法並びにそのプログラムに関し、特にパケット交換による通信システムにおける輻輳制御機能を有するプロトコル層のセッション制御技術に関する。
【背景技術】
【０００２】
パケット交換において、セッションを張るプロトコルの中には、受信側の受信処理能力を超えないように送信側の速度を制御するフロー制御、及び途中のネットワークの輻輳を起こさないように、送信側の速度を制御する輻輳制御の両方の機能（以下、両方の機能を合わせてレート制御とする）を持つものが存在する。
【０００３】
一般に、このレート制御機能はＯＳＩ（Ｏｐｅｎ  Ｓｙｓｔｅｍｓ  Ｉｎｔｅｒｃｏｎｎｅｃｔｉｏｎ）参照モデルのトランスポート層で実現されることが多い。レート制御方式には、ウィンドウ制御型がある。ウィンドウ制御型は、１ＲＴＴ（Ｒｏｕｎｄ  Ｔｒｉｐ  Ｔｉｍｅ）辺りにネットワークに滞留する量を調節する方法である。現在、インタネットで広く用いられているＴＣＰも、ウィンドウ制御型トランスポート層プロトコルであり、輻輳制御機能を持っている。
【０００４】
ＴＣＰでは、輻輳制御を送信側で行い、受信側からの応答確認パケット［ＡＣＫ（ＡＣＫｎｏｗｌｅｄｇｅｍｅｎｔ）パケット］によって、輻輳制御の状態を遷移させて、パケット送出量を増加、もしくはパケット紛失を検知し、パケット送出量を減少させて、パケットを再送する。パケット送出量は、１ＲＴＴ辺りに送信できるパケット量であるＣＷＮＤ（輻輳ウィンドウ）で決まり、送信側は、ＡＣＫパケットで通知されたシーケンス番号（ＡＣＫ番号）の最大値から、ＣＷＮＤ分のデータを受信側へおくることができる。
【０００５】
受信側からのＡＣＫパケット内のシーケンス番号が増加している場合、送信側はＣＷＮＤを上げ続けて、パケット送出量を上げ続ける。ＣＷＮＤの上昇幅は、ＣＷＮＤとＳＳＴＨＲＥＳＨ（スロースタート閾値）との関係で変わり、ＣＷＮＤ≦ＳＳＴＨＲＥＳＨ（スロースタート状態：Ｓｌｏｗ  Ｓｔａｒｔ  Ｐｈａｓｅ）の場合は、１つのＡＣＫにつきＣＷＮＤの上昇幅は、１パケットであり、ＣＷＮＤ＞ＳＳＴＨＲＥＳＨ（輻輳回避状態：Ｃｏｎｇｅｓｔｉｏｎ  Ａｖｏｉｄａｎｃｅ  Ｐｈａｓｅ）の場合は、１つのＡＣＫにつきＣＷＮＤの上昇幅は、１／ＣＷＮＤパケットとなる。
【０００６】
一方、受信側でパケット損失を検知した場合、連続して受け取ったパケットの最大シーケンス番号＋１（すなわち、パケットロスを検知したシーケンス番号の最小値）をＡＣＫパケットによって送信側へ通知する。受信側ではＡＣＫパケット内のシーケンス番号（ＡＣＫ番号）が重複した場合（重複ＡＣＫ）は、ＡＣＫ番号からのセグメント（データの１区間）が紛失したと判断して、紛失したセグメントを再送信する。これを高速再送という。
【０００７】
この時、ＳＳＴＨＲＥＳＨ＝ＣＷＮＤ／２となり、ＣＷＮＤ＝ＳＳＴＨＲＥＳＨ＋３＊セグメントサイズとなる。別の重複ＡＣＫが到着するたびに、ＣＷＮＤをセグメントサイズ単位で増加させ、ＣＷＮＤの値によって新規パケットの転送が許可されたら新しいパケットを送信する。送信済の全てのデータの対するＡＣＫが帰ってきたら、ＣＷＮＤ＝ＳＳＴＨＲＥＳＨとする。高速再送後、ここまでが、高速回復と呼ばれる。高速回復中のスループットは、ロス直前の半分以下となる。その後、輻輳回避状態となる。
【０００８】
また、ＡＣＫが一定時間帰ってこなかった場合も、パケットが紛失したと判断して（タイムアウト）、ＣＷＮＤを１パケットにして、紛失したパケットを再送信する。輻輳制御に関しては、非特許文献１に記載されている。
【０００９】
また、迅速なパケット再送のために、ＴＣＰのオプションとして、ＳＡＣＫ（Ｓｅｌｅｃｔｉｖｅ  ＡＣＫ）オプションが規定されている（例えば、非特許文献２参照）。このオプションは、パケット紛失によって非連続となった区間のうち、連続している区間を受信側から送信側へ通知するための情報をＡＣＫパケットに付加するものである。ＳＡＣＫオプションは、一度に複数のブロックで連続区間を通知可能であり、最初のブロックには、最新の受信シーケンス番号を格納する。このため、送信側には、受信側に到着した最大のシーケンス番号（受信側の最大受信シーケンス番号）が通知されることとなる。
【００１０】
送信側は、通知された連続している区間より非連続区間を算出して、非連続区間のセグメントを再送する。送信側は、非連続区間のみを再送すればよく、再送効率がよい。非連続区間を再送することができたかどうかは、ＡＣＫ番号が非連続区間を越えていたかどうかで判断することができる。非連続区間を再送することができた場合には、非連続区間より前の連続区間の情報を破棄する。
【００１１】
このＳＡＣＫオプションの用いても、既存の輻輳制御は、上述した従来の方法と同様であり、重複ＡＣＫを検出したら、パケット再送を行い、ＣＷＮＤを半分にするという動作を行っている。このＳＡＣＫオプションは、現在、広く実装されており、標準のＴＣＰの一部を構成しているといえる。
【００１２】
従来のＴＣＰの問題として、ひとつのパケットロスに対しても、ＣＷＮＤを半分にしてしまい、スループットが減少するため、ランダムロスが発生するとネットワークの帯域が空いていても、使い切ることができないという点がある。また、第２の問題としては、パケットロスが高い頻度で発生する状態では、輻輳回避状態に入ることがなく、高速再送、高速回復を繰り返す状態となり、スループットがあがらなくなるという点がある。
【００１３】
上述した従来のＴＣＰの第１の問題に対処するために、受信側で、受信したパケットのチェックサムを計算して、チェックサムが合わなかったら、ランダムロスが発生したことを送信側に通知し、送信側において、ランダム誤りが発生したことを通知されると、輻輳回避のためのフロー制御を行わないという手順を含むデータ転送制御方法がある（例えば、特許文献１参照）。
【００１４】
この方法は、送信側、受信側の両方で、ＴＣＰの実装を変更する必要がある。また、パケットロスが高い頻度で発生する状態では、輻輳回避状態に入ることがなく、ランダムパケットの再送分のＡＣＫを待つ状態が繰り返し発生して、結果としてスループットが出なくなり、従来のＴＣＰの第２の問題を解決していない。
【００１５】
さらに、この方法は、ランダムロスパケットの再送を行い、その再送したパケットのＡＣＫが返ってくるまで１ＲＴＴの間、パケットを新たに送出することができないため、この間、スループットが減少するという問題点がある。この問題点について、送信側で受信した最大ＡＣＫ番号と最大送信可能シーケンス番号の変動を、図１２を用いて説明する。
【００１６】
説明を簡略化するために、最大送信可能シーケンス番号は受信側の最大ＡＣＫ番号＋ｃｗｎｄに等しいものとし、受信側のバッファは十分大きいものとする。輻輳回避状態中の時間Ａまでは、送信側は最大送信可能シーケンス番号までのデータを受信側に送っているものとする。
【００１７】
時間Ａに、送信側がシーケンス番号ｘのパケットがランダムロスをしたと検知するものとし、このパケット以外は紛失していないものとする。この時、送信側はシーケンス番号ｘのパケットを再送し、ｃｗｎｄを下げない動作を行う。この後、再送パケットに対応するＡＣＫが返ってくる時間Ｂ（＝時間Ａ＋１ＲＴＴ）まで、送信側から送信されるＡＣＫ番号が進むことがない（重複ＡＣＫ）であるため、最大送信可能シーケンス番号は、ｘ＋ＣＷＮＤのまま変化しない。
【００１８】
よって、この区間において、送信側は、受信側に新規シーケンス番号を持つパケットを送出することができない。時間Ｂに、シーケンス番号ｘの再送パケットに対応するＡＣＫのシーケンス番号はｘ＋ＣＷＮＤとなり、最大送信可能シーケンス番号はｘ＋２ＣＷＮＤとなるため、この時点でＣＷＮＤ分のデータが送信可能となり、バースト的に通信が行われる。
【００１９】
また、他の技術としては、パケットロス検出時に、ＣＷＮＤを直ちに削減せずにそのまま保持して、その後のパケット紛失状況が悪化した場合にのみＣＷＮＤを減少させる手順を含む帯域制御方法がある（例えば、特許文献２参照）。
【００２０】
この方法は、パケットロスがひとつでもあると、ＣＷＮＤを維持しながらロス数の変化を監視する状態に入ってしまいスループットが上昇しなくなるという問題点がある。また、パケットロスが高い頻度で発生する状態では、輻輳回避状態に入ることがなく、ロスパケットの再送分のＡＣＫを待つ状態が繰り返し発生して、結果としてスループットが出なくなり、従来のＴＣＰの第２の問題を解決していない。
【００２１】
さらに、この方法は、ロスパケットの再送を行い、その再送したパケットのＡＣＫが返ってくるまで１ＲＴＴの間、パケットを新たに送出することができないため、この間、スループットが減少するという問題点がある。この問題点について、送信側で受信した最大ＡＣＫ番号と最大送信可能シーケンス番号の変動を、図１３を用いて説明する。
【００２２】
説明を簡略化するために、受信側のバッファは十分大きいものとして、最大送信可能シーケンス番号は受信側から通知された最大ＡＣＫ番号＋ＣＷＮＤに等しいものとする。輻輳回避状態中の時間Ａまでは、送信側は、最大送信可能シーケンス番号までのデータを受信側に送っているものとする。
【００２３】
時間Ａに、送信側がシーケンス番号ｘのパケットが紛失をしたことを検知したものとし、このパケット以外は紛失していないものとする。この時、送信側はシーケンス番号ｘのパケットを再送し、ＣＷＮＤを下げない動作を行う。この後、再送パケットに対応するＡＣＫが返ってくる時間Ｂ（＝時間Ａ＋１ＲＴＴ）まで、送信側から送信されるＡＣＫ番号が進むことがない（重複ＡＣＫ）であるため、最大送信可能シーケンス番号は、ｘ＋ＣＷＮＤのまま変化しない。よって、この区間において、送信側は、受信側に新規シーケンス番号を持つパケットを送出することができない。
【００２４】
時間Ｂに、シーケンス番号ｘの再送パケットに対応するＡＣＫのシーケンス番号は、ｘ＋ＣＷＮＤとなり、最大送信可能シーケンス番号は、ｘ＋２ＣＷＮＤとなるため、この時点でＣＷＮＤ分のデータが送信可能となり、バースト的に通信が行われる。
【００２５】
【特許文献１】特許第３５７２１１１号公報
【特許文献２】特許第３１６３４７９号公報
【非特許文献１】Ｗ．Ｒｉｃｈａｒｄ  Ｓｔｅｖｅｎｓ著、「ＴＣＰ／ＩＰ  イラスレイテッド：ザ・プロトコルズ（ＴＣＰ／ＩＰ  Ｉｌｌｕｓｔｒａｔｅｄ：Ｔｈｅ  Ｐｒｏｔｏｃｏｌｓ）」、Ａｄｄｉｓｏｎ−Ｗｅｓｌｅｙ，１９９４
【非特許文献２】Ｍ．Ｍａｔｈｉｓ、Ｊ．Ｍａｈｄａｖｉ、Ｓ．Ｆｌｏｙｄ、Ａ．Ｒｏｍａｎｏｗ著、「ＲＦＣ  ２０１８−ＴＣＰセレクティブ  アクナレッジメント  オプションズ（ＲＦＣ  ２０１８−ＴＣＰ  Ｓｅｌｅｃｔｉｖｅ  Ａｃｋｎｏｗｌｅｄｇｅｍｅｎｔ  Ｏｐｔｉｏｎｓ）」、ＩＥＴＦ、１９９６
【発明の開示】
【発明が解決しようとする課題】
【００２６】
上述した従来の輻輳制御技術では、輻輳があったことを、単純なロス数変化やネットワークから通知される明示的な輻輳情報を基づいて行っているため、ある特定の輻輳状況の変化に応じた輻輳制御を行うことができるが、より広範囲の輻輳状況の変化に応じた輻輳制御の変更を行うことができない。
【００２７】
また、従来の輻輳制御技術では、輻輳回避状態に入ることなく、ロスパケット再送とその後の回復状態とが繰り返し発生するため、ロス率の高い状態ではスループットが減少するという問題がある。
【００２８】
さらに、従来の輻輳制御技術では、パケットロス後、受信側のＣＷＮＤと最大ＡＣＫ番号とが変わらず、最大送信可能シーケンス番号が変化しないため、パケットを送信することができないので、ロスパケットの再送後、スループットが減少するという問題がある。
【００２９】
そこで、本発明の目的は上記の問題点を解消し、受信側端末の実装の変更やネットワークからの特別な情報を入手することなく、送信側端末の実装の変更だけで、ロス率が高い状態でもスループットを増加させることができる通信システム、通信装置及びそれらに用いる輻輳制御方法並びにそのプログラムを提供することにある。
【課題を解決するための手段】
【００３０】
本発明による通信システムは、受信側がパケットロスを認識した時に紛失したパケットを指定して送信側に再送を要求するウィンドウ制御方式を用いる通信システムであって、
前記送信側に、前記受信側から通知された情報と輻輳制御の状態の一つ以上の情報とによってネットワークの輻輳状態を推定する推定手段と、前記推定手段で推定された輻輳状態に応じて重輻輳状態であるか前記重輻輳状態でないかを区別する手段と、前記重輻輳状態でないと区別された時に前記パケットの送信量を決めるためのウィンドウを増加しつつ紛失したパケットを再送する手段とを備えている。
【００３１】
本発明による通信装置は、受信側がパケットロスを認識した時に紛失したパケットを指定して送信側に再送を要求するウィンドウ制御方式を用いる通信装置であって、
前記送信側の処理手段に、前記受信側から通知された情報と輻輳制御の状態の一つ以上の情報とによってネットワークの輻輳状態を推定する推定手段と、前記推定手段で推定された輻輳状態に応じて重輻輳状態であるか前記重輻輳状態でないかを区別する手段と、前記重輻輳状態でないと区別された時に前記パケットの送信量を決めるためのウィンドウを増加しつつ紛失したパケットを再送する手段とを備えている。
【００３２】
本発明による輻輳制御方法は、受信側がパケットロスを認識した時に紛失したパケットを指定して送信側に再送を要求するウィンドウ制御方式をとる通信システムに用いる輻輳制御方法であって、
前記送信側の装置が、前記受信側から通知された情報と輻輳制御の状態の一つ以上の情報とによってネットワークの輻輳状態を推定する推定処理と、前記推定手段で推定された輻輳状態に応じて重輻輳状態であるか前記重輻輳状態でないかを区別する処理と、前記重輻輳状態でないと区別された時に前記パケットの送信量を決めるためのウィンドウを増加しつつ紛失したパケットを再送する処理とを実行している。
【００３３】
本発明による輻輳制御方法のプログラムは、受信側がパケットロスを認識した時に紛失したパケットを指定して送信側に再送を要求するウィンドウ制御方式をとる通信システムに用いる輻輳制御方法のプログラムであって、
前記送信側の処理を行うコンピュータに、前記受信側から通知された情報と輻輳制御の状態の一つ以上の情報とによってネットワークの輻輳状態を推定する推定処理と、前記推定手段で推定された輻輳状態に応じて重輻輳状態であるか前記重輻輳状態でないかを区別する処理と、前記重輻輳状態でないと区別された時に前記パケットの送信量を決めるためのウィンドウを増加しつつ紛失したパケットを再送する処理とを実行させている。
【００３４】
すなわち、本発明の第１の通信システムは、通信装置に、パケットロスの状態やパケットの到着時間の情報、輻輳制御の状態を用いて、ネットワークの輻輳状態を推定するネットワーク状態推定部と、輻輳状態が軽輻輳であるか、重輻輳中であるかを判断する軽・重輻輳判定部と、軽輻輳時に再送するか、通常転送するかを判断する再送判定部と、軽輻輳時の再送を行う軽輻輳再送部とを有している。
【００３５】
本発明の第１の通信システムは、上記のような構成を採用し、軽輻輳時にもウィンドウを継続的に上昇させることで、受信側端末の実装の変更やネットワークからの特別な情報を入手することなく、送信側端末の実装の変更だけで、ロス率が高い状態でもスループットを増加させることが可能となる。
【００３６】
また、本発明の第２の通信システムは、通信装置に、上記の構成に加えて、最大送信可能シーケンス番号を増やして補正する最大送信可能シーケンス番号補正部を有している。本発明の第２の通信システムでは、上記のような構成を採用し、軽輻輳時にも、新たなパケットを送信するように促すことで、受信側端末の実装の変更やネットワークからの特別な情報を入手することなく、送信側端末の実装の変更だけで、ロス率が高い状態でもスループットを増加させることが可能となり、ロスパケットの再送後、スループットを増加させることが可能となる。
【発明の効果】
【００３７】
本発明は、上記のような構成及び動作とすることで、受信側端末の実装の変更やネットワークからの特別な情報を入手することなく、送信側端末の実装の変更だけで、ロス率が高い状態でもスループットを増加させることができるという効果が得られる。
【発明を実施するための最良の形態】
【００３８】
次に、本発明の実施の形態について図面を参照して説明する。図１は本発明の実施の形態による通信システムの構成を示すブロック図である。図１において、本発明の実施の形態による通信システムは送信端末１と、受信端末２と、送信端末１から受信端末２へとデータを送るための通信網１００とから構成されている。
【００３９】
本発明の実施の形態による通信システムでは、送信端末１に、パケットロスの状態やパケットの到着時間の情報、輻輳制御の状態を用いて、ネットワークの輻輳状態を推定するネットワーク状態推定部と、輻輳状態が軽輻輳であるか、重輻輳中であるかを判断する軽・重輻輳判定部と、軽輻輳時に再送するか、通常転送するかを判断する再送判定部と、軽輻輳時の再送を行う軽輻輳再送部とを設けている。
【００４０】
本発明の実施の形態による通信システムでは、上記のような構成を採用し、軽輻輳時にもウィンドウを継続的に上昇させることで、受信端末２の実装の変更やネットワークからの特別な情報を入手することなく、送信端末１の実装の変更だけで、ロス率が高い状態でもスループットを増加させることができる。
【００４１】
また、本発明の実施の形態による通信システムでは、送信端末１に、上記の構成に加えて、最大送信可能シーケンス番号を増やして補正する最大送信可能シーケンス番号補正部を設けている。本発明の実施の形態による通信システムでは、上記のような構成を採用し、軽輻輳時にも、新たなパケットを送信するように促すことで、受信端末２の実装の変更やネットワークからの特別な情報を入手することなく、送信端末１の実装の変更だけで、ロス率が高い状態でもスループットを増加させることができ、ロスパケットの再送後、スループットを増加させることができる。
【実施例１】
【００４２】
図２は本発明の第１の実施例による送信端末のセッション処理部の構成を示すブロック図である。図２において、セッション処理部１０はデータ入力部１１と、パケット入力部１２と、輻輳制御部１３と、データ出力部１４と、パケット出力部１５と、セッション状態記憶部１６と、セグメントバッファ部１７とから構成されている。
【００４３】
このセッション処理部１０を備える送信端末は、上記の図１に示す本発明の実施の形態による通信システムの送信端末１であり、本発明の実施の形態と同様に、通信網１００を通して受信端末２にデータを送っている。尚、送信端末１においては説明を簡略化するためにセッション処理部１０のみについて説明するが、このセッション処理部１０以外の処理部は公知であるので、その説明を省略する。
【００４４】
また、セッション処理部１０については、確認応答（ＡＣＫ：ＡＣＫｎｏｗｌｅｄｇｅｍｅｎｔ）パケットによってウィンドウ型の輻輳制御を行う方式で、送信側の輻輳制御にかかわる部分のみについて記述し、セッション開設・終了、データ送受信、ＡＣＫ送信に関する部分の説明を省略して、セッションのデータが一方向に流れるものとする。
【００４５】
データ入力部１１はデータを保持する端末内部資源３からのデータを入力し、パケット入力部１２は通信網１００からパケットを入力する。輻輳制御部１３はデータ入力部１１及びパケット入力部１２からの信号を処理する。データ出力部１４は輻輳制御部１３からのデータを端末内部資源３へ送り、パケット出力部１５は輻輳制御部１３からのパケットを通信網１００へ送る。
【００４６】
セッション状態記憶部１６は輻輳制御部１３で処理するセッションの情報を保持し、セグメントバッファ部１７はデータ入力部１１からデータ出力部１４へのデータを、パケットの中のデータ部分であるセグメントの区切りで保持する。
【００４７】
輻輳制御部１３については、セッション処理における確認応答（ＡＣＫ）パケット処理に関する処理を記述し、データ送受信処理やタイマ処理に関する部分についての説明を省略する。
【００４８】
図３は図２の輻輳制御部１３の構成を示すブロック図である。図３において、輻輳制御部１３は、輻輳判定部２１と、ネットワーク状態推定部２２と、軽・重輻輳判定部２３と、再送判定部２４と、重輻輳再送部２５と、軽輻輳再送部２６と、通常転送部２７と、状態更新部２８とを備えている。
【００４９】
輻輳判定部２１はＡＣＫパケット及びセッション状態記憶部１６の記憶内容から、現在の状態が軽・重輻輳中であるかを判断し、軽・重輻輳中であればネットワーク状態推定部２２に処理を渡し、そうでなければ通常状態と判断して通常転送部２７に処理を渡す。ネットワーク状態推定部２２はＡＣＫパケット及びセッション状態記憶部１６の記憶内容からネットワーク輻輳状態を推定する。
【００５０】
軽・重輻輳判定部２３はネットワーク状態推定部２２の推定結果から軽輻輳であるか、重輻輳であるかを判断し、軽輻輳であれば再送判定部２４へ処理を渡し、重輻輳であれば重輻輳再送部２５へ処理を渡す。再送判定部２４は受信側からＡＣＫによって再送が要求されたセグメントの中で再送を行っていない未再送セグメントがあるかを判断し、未再送セグメントがあれば軽輻輳再送部２６に処理を渡し、なければ通常転送部２７に処理を渡す。
【００５１】
重輻輳再送部２５は輻輳ウィンドウを減少させて、再送対象となるセグメントをセグメントバッファ部１７のセグメントから探し、再送対象となるセグメントがあればパケット出力部１５へ処理を渡す。軽輻輳再送部２６は輻輳ウィンドウを上げる、もしくは維持して、あるいは再送パケットのセグメントのサイズ分輻輳ウィンドウを下げて、再送対象となるセグメントをセグメントバッファ部１７のセグメントから探し、再送対象となるセグメントがあればパケット出力部１５へ処理を渡す。
【００５２】
通常転送部２７は輻輳ウィンドウを上げて、セグメントバッファ部１７の新規送信セグメントがあればパケット出力部１５へ処理を渡す。状態更新部２８は通常転送部２７、軽輻輳再送部２６、重輻輳再送部２５各々の処理の後、セッションの状態を更新する。尚、再送判定部２４においては、１度再送したセグメントを、再々送してもよく、再々送の回数に制限はない。
【００５３】
再々送のタイミングは、新規送出シーケンス番号が、再送、もしくはｎ回再々送した時の新規シーケンス番号からｘ番号増加した時となる。ｘ番号は複数の値でもよく、輻輳ウィンドウサイズから算出される値でもよい。ｘ番号として最もよい値は、ｘ番号を輻輳ウィンドウとする場合である。なぜなら、ウィンドウ制御方式の制御間隔として効果的な値のうち、最小の値であるからである。
【００５４】
また、再々送のタイミングは、再送、もしくはｎ回再々送してから、時間ｔ経った場合に行ってもよい。ｙは複数の値でもよい。また、ｔは遅延時間、パケットの到着間隔から算出される値でもよい。最もよい値は、ｙを往復遅延時間とする場合である。なぜなら、ウィンドウ制御方式の制御間隔として効果的な値のうち、最小の値であるからである。
【００５５】
ネットワーク状態推定部２２においては、ＡＣＫパケットやセッション状態記憶部１６の記憶内容からのセグメントロスの情報やパケットの到着時間、輻輳制御の状態の情報を用いて、ネットワークの輻輳状態を推定する。セグメントロスの情報とは、受信側に到着したセグメントから受信側で認識したセグメントロス箇所情報を指す。パケットの時間の情報とは、パケットの到着遅延時間、パケットの到着間隔を指す。
【００５６】
セグメントロスの情報からのネットワーク輻輳状態の推定方法としては、（ａ１）新規セグメントの到着パターンの変動による推定、（ａ２）セグメントの非連続区間の開始シーケンスと終了シーケンスの差からの推定、（ａ３）セグメントの非連続区間の量による推定の３つがある。
【００５７】
（ａ１）の推定方法では、新規セグメントが受信側に連続して到着しているのか、非連続になって到着しているのかに基づいてネットワーク輻輳状態を推定しており、新規セグメントが非連続になって到着する場合に、新規セグメントが連続して到着する場合に比べて輻輳が悪化していると推定する。
【００５８】
（ａ２）の推定方法では、セグメントの非連続区間の開始シーケンスと終了シーケンスとの差が増加した場合に、輻輳が悪化していると推定する。増加の判断としては、シーケンスの差が、ｘとなったかどうかで判断してもよい。ｘは固定値でもよいし、輻輳ウィンドウから算出される値でもよい。また、この推定方法では、シーケンスの差を一定時間毎に計測し、その値が増加しているかどうかでネットワーク輻輳状態を判断してもよい。
【００５９】
（ａ３）の推定方法では、セグメントの非連続区間の量が増加した場合に、輻輳が悪化していると推定する。セグメントの非連続区間の量とは、送信側で把握しているセグメントの非連続区間の量、もしくは受信側からの通知毎のセグメントの非連続区間の量である。増加の判断としては、非連続区間の量がｘとなったかどうかで判断してもよい。ｘは固定値でもよいし、輻輳ウィンドウから算出される値でもよい。また、この推定方法では、非連続区間の量を一定時間毎に計測し、その値が増加しているかどうかでネットワーク輻輳状態を判断してもよい。さらに、この推定方法では、一つあたりの非連続区間の量が増加している場合に、輻輳が悪化していると推定してもよい。
【００６０】
パケットの到着時間の情報からのネットワーク輻輳状態の推定方法としては、（ｂ１）パケットの到着遅延時間の伸び方による推定、（ｂ２）パケットの到着間隔の伸び方による推定の２つがある。
【００６１】
（ｂ１）の推定方法では、パケットの到着遅延時間が増加している場合に、輻輳が悪化していると推定する。到着遅延時間が増加の傾向にあるかどうかの判断は、閾値を超えた、もしくは単位時間あたりの平均値や偏差をとり、平均値や偏差、もしくはそれらの両方が閾値を超えた、あるいは増加していたら、到着遅延時間が増加の傾向にあると判断する。到着遅延時間で用いる値として最もよい値は、往復遅延時間である。これは応答確認パケットを用いることで、容易に計測可能だからである。
【００６２】
（ｂ２）の推定方法では、パケットの到着間隔が増加の傾向にある場合に、輻輳が悪化していると推定する。到着間隔が増加の傾向にあるかどうかの判断は、閾値を超えた、もしくは単位時間あたりの平均値や偏差をとり、平均値や偏差、もしくはそれらの両方が閾値を超えた、あるいは増加していたら、到着間隔が増加の傾向にあると判断する。
【００６３】
輻輳制御の状態からのネットワーク輻輳状態の推定方法としては、（ｃ１）再々送の回数の変動による推定、（ｃ２）輻輳の継続時間による推定の２つがある。
【００６４】
（ｃ１）の推定方法では、再々送の回数が増加した場合に、輻輳が悪化していると推定する。再々送の回数の増加の判断としては、回数がｘ回となったかどうかで判断してもよい。ｘは固定値でもよいし、輻輳ウィンドウから算出される値でもよい。また、この推定方法では、再々送回数を一定時間毎に計測し、その値が増加しているかどうかでネットワーク輻輳状態を判断してもよい。
【００６５】
（ｃ２）の推定方法では、輻輳の継続時間が増加して続けている場合に、輻輳が悪化していると推定する。輻輳の継続時間の増加の判断としては、継続時間が時間ｔとなったかどうかで判断してもよい。ｔは固定値でもよいし、到着遅延時間、到着間隔から算出される値でもよい。また、この推定方法では、過去の輻輳継続時間と比較し、現在の輻輳継続時間が増加しているかどうかでネットワーク輻輳状態を判断してもよい。
【００６６】
ネットワーク状態推定部２２においては、上述したネットワーク輻輳状態の推定方法のいずれか一つ以上を用いてもよい。最もよい推定方法としては、上述したすべての推定方法を用いる方法である。
【００６７】
図４は図３の輻輳制御部１３の動作を示すフローチャートである。これら図１〜図４を参照して本発明の第１の実施例による輻輳制御部１３の動作について説明する。
【００６８】
パケット入力部１２からのＡＣＫパケットは、輻輳判定部２１に供給され、輻輳判定部２１で、ネットワークの輻輳状態が軽・重輻輳中であるかどうかを判断し（図４ステップＳ１）、軽・重輻輳中であれば，軽・重輻輳判定部２３に処理を渡し、そうでなければ通常状態と判断して通常パケット転送部２７に処理を渡す。
【００６９】
ネットワーク状態推定部２２はＡＣＫパケット及びセッション状態記憶部１６の記憶内容からネットワークの輻輳状態を推定する（図４ステップＳ２）。軽・重輻輳判定部２３はネットワーク状態推定部２２の推定結果から、現在の状態が軽輻輳であるか、重輻輳であるかを判断し（図４ステップＳ３）、軽輻輳であれば、再送判定部２４へ処理を渡し、重輻輳であれば重輻輳再送部２５へ処理を渡す。
【００７０】
再送判定部２４では、受信側からＡＣＫパケットで再送を要求されたセグメントの中で再送を行っていない未再送セグメントがあるかを判断し（図４ステップＳ５）、再送すべきセグメントがあれば、軽輻輳再送部２６へ処理を渡し、なければ通常転送部２７へ処理を渡す。
【００７１】
重輻輳再送部２５では、輻輳ウィンドウを減少させて、再送対象となるセグメントをセグメントバッファ部１７のセグメントの中から探し、再送対象となるセグメントがあれば、パケット出力部１５へ処理を渡す（図４ステップＳ４）。
【００７２】
軽輻輳再送部２６は輻輳ウィンドウを上げる、もしくは維持して、あるいは再送パケットのセグメントのサイズ分輻輳ウィンドウを下げて、再送対象となるセグメントをセグメントバッファ部１７のセグメントの中から探し、再送対象となるセグメントがあればパケット出力部１５へ処理を渡す（図４ステップＳ６）。
【００７３】
通常転送部２７は輻輳ウィンドウを上げて、セグメントバッファ部１７の新規送信セグメントがあればパケット出力部１５へ処理を渡す（図４ステップＳ７）。状態更新部２８は通常転送部２７、軽輻輳再送部２６、重輻輳再送部２５各々の処理の後、セッションの状態を更新する（図４ステップＳ８）。その後、パケット出力部１５は通常転送部２７、軽輻輳再送部２６、重輻輳再送部２５各々の処理に基づいて、パケットを通信網１００に出力する（図４ステップＳ９）。
【００７４】
本実施例では、上記の輻輳判定部２１と軽・重輻輳判定部２３とを別々に設けているが、それらの判定部を統合して一つの判定部とし、通常状態・軽・重輻輳判定部としてもよい。また、本実施例では、通常状態・軽輻輳と重輻輳とを判定する部位と、通常と軽輻輳とを判定する部位とに分割してもよい。つまり、本実施例では、結果的に３つの状態を判別することができればよい。
【００７５】
また、本実施例では、軽輻輳再送部２６において、軽輻輳再送処理の後、引き続き、通常転送部２７の処理を行ってもよい。さらに、本実施例では、重輻輳再送部２５において、ウィンドウを維持してもよい。さらにまた、本実施例では、ウィンドウを通常転送部２７に比べて低い増加幅で増加させてもよく、軽輻輳の場合と同様に、再々送を行ってもよい。
【００７６】
次に、本発明の第１の実施例において、輻輳制御方式としてＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ、Ｔｒａｎｓｐｏｒｔ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌとも呼ばれる）を用いる場合について説明する。
【００７７】
輻輳判定部２１では、セッション状態記憶部１６で保持された状態が通常状態であれば、渡されたＡＣＫパケットが重複ＡＣＫであり、重複ＡＣＫの閾値を超えたか否かを判断し、重複ＡＣＫの閾値を超えた場合、輻輳状態へ遷移して、軽・重輻輳判定部２３へ処理を渡す。
【００７８】
また、輻輳判定部２１では、セッション状態記憶部１６に保持された状態が輻輳状態であれば、ＳＡＣＫ（Ｓｅｌｅｃｔｉｖｅ  ＡＣＫ）オプションによって受信側から通知されたシーケンス非連続区間がなくなったかどうかを判断する。
【００７９】
輻輳判定部２１では、シーケンス非連続区間がなくなった場合、通常状態となったと判断し、通常転送部２７に処理を渡す。輻輳判定部２１では、シーケンス非連続区間がなくなっていない場合、軽・重輻輳判定部２３に処理を渡す。
【００８０】
シーケンス非連続区間がなくなったかの判断方法としては、ＡＣＫパケットにＳＡＣＫ情報が含まれなくなった、またはセッション状態記憶部１６に保持されているＳＡＣＫの連続区間のうち、ＡＣＫパケットのＡＣＫシーケンス番号以上ものがないことで判断する。
【００８１】
ネットワーク状態推定部２２では、ＡＣＫパケットやセッション状態記憶部１６の記憶内容から、セグメントロスの情報やパケットの到着時間、輻輳制御の状態の情報を用いて、ネットワークの輻輳状態を推定する。
【００８２】
セグメントロスの情報からのネットワーク輻輳状態の推定方法としては、（ｄ１）ＳＡＣＫオプションで受信側から通知された最新の受信シーケンス番号が重複し、閾値を超えた場合、輻輳が悪化したとする、（ｄ２）送信側で送出されたシーケンスの中で送信済みシーケンス番号の最大値（最大送信シーケンス番号）とＡＣＫ番号との差が、Ｘ×輻輳ウィンドウサイズを超えた場合、輻輳が悪化したとする（Ｘは、１以上の任意の値である）、（ｄ３）ＳＡＣＫオプションで受信側から通知された最新の受信シーケンス番号とＡＣＫ番号との差が、Ｙ×輻輳ウィンドウサイズを超えた場合、輻輳が悪化したとする（Ｙは、０より大きい任意の値である）、（ｄ４）ＳＡＣＫオプションで受信側から通知された連続区間から算出される非連続区間の量が、Ｚ×輻輳ウィンドウサイズを超えた場合、輻輳が悪化したとする（Ｚは、０より大きく、１未満より大きい任意の値である）の４つがある。
【００８３】
パケットの到着時間の情報からのネットワーク輻輳状態の推定方法としては、（ｅ１）パケットの往復遅延時間の偏差が、Ｘ×平均値を超えた場合、輻輳が悪化したとする（Ｘは、０より大きい任意の値である）、（ｅ２）パケットの到着間隔の偏差が、Ｙ×平均値を超えた場合、輻輳が悪化したとする（Ｙは、０より大きい任意の値である）の２つがある。
【００８４】
輻輳制御の状態からのネットワーク輻輳状態の推定方法としては、（ｆ１）再々送回数の変動が、Ｘ回を超えた場合、輻輳が悪化したとする（Ｘは、０より大きい整数値である）、（ｆ２）輻輳の継続時間が、時間Ｙ×往復遅延時間を超えた場合、輻輳が悪化したとする（Ｙは、０より大きい値である）の２つがある。
【００８５】
本実施例では、ネットワーク状態推定部２２において、上述したネットワーク輻輳状態の推定方法のうちのいずれか一つ以上を用いてもよい。最もよい方法は、すべてを用いる方法である。
【００８６】
軽・重輻輳判定部２３では、セッション状態記憶部１６で保持された状態が重輻輳でなければ、ネットワーク状態推定部２２の推定結果を基に、重輻輳になったか否かを判断し、重輻輳になった場合、重輻輳再送部２５へ処理を渡し、重輻輳にならない場合、再送判定部２４に処理を渡す。また、軽・重輻輳判定部２３では、セッション状態記憶部１６で保持された状態が重輻輳であれば、ネットワーク状態推定部２２の推定結果を基に、重輻輳が継続しているか否かを判断し、重輻輳が継続している場合、重輻輳再送部２５へ処理を渡し、重輻輳が継続していなければ、再送判定部２４に処理を渡す。
【００８７】
再送判定部２４では、受信側から再送を要求されたセグメントの中で再送を行っていない未再送のセグメントがあるか否かを判断し、未再送のセグメントがあれば、軽輻輳再送部２６に処理を渡し、未再送のセグメントがなければ、通常転送部２７に処理を渡す。
【００８８】
送信側は、ＡＣＫのシーケンス番号、ＳＡＣＫオプションから受信側の再送の要求区間を算出する。ＡＣＫのシーケンス番号は連続して受信した最大のシーケンス番号を指し、ＳＡＣＫオプションはパケット紛失によって非連続となった区間のうち、連続している区間を受信側から送信側へ通知するため、これら情報から、送信側で受信側が受信できていないセグメントの区間を算出することができる。
【００８９】
軽輻輳再送部２６では、再送もしくは再々送するパケットをセグメントバッファ部１７に保持されたセグメントから作成する。この時、輻輳ウィンドウは、変更しないか、作成したセグメントサイズ分減少させ、スロースタート閾値を更新せず、通常の再送中であるというフラグを立てない。すなわち、パケットのみが再送もしくは再々送される。重輻輳再送部２５では、輻輳ウィンドウを半分にして、高速再送、高速再転送を行う。
【実施例２】
【００９０】
図５は本発明の第２の実施例による輻輳制御部の構成を示すブロック図である。図５において、本発明の第２の実施例による輻輳制御部１３ａは、最大送信可能シーケンス番号補正部２９を追加した以外は、図３に示す本発明の第１の実施例による輻輳制御部１３の構成と同様の構成となっており、同一構成要素には同一符号を付してある。また、同一構成要素の動作は本発明の第１の実施例と同様である。尚、本発明の第２の実施例による通信システムは図１に示す本発明の実施の形態による通信システムと同様の構成であり、本発明の第２の実施例によるセッション処理部は図２に示す本発明の第１の実施例によるセッション処理部１０と同様の構成である。
【００９１】
本発明の第２の実施例では、再送判定部２４で再送しないと判断された後、通常転送部２７の処理をする前に、最大送信可能シーケンス番号補正部２９の処理が実行される。最大送信可能シーケンス番号補正部２９は、最大送信可能シーケンス番号を増やして補正することによって、軽輻輳時にも、通常転送部２７で新たなパケットを送信するように促す。補正された最大送信可能シーケンス番号は、通常転送部２７内での処理のために用いられ、状態更新部２８で保持されることはない。
【００９２】
図６は図５の輻輳制御部１３ａの動作を示すフローチャートである。これら図１と図２と図５と図６とを参照して本発明の第２の実施例による輻輳制御部１３ａの動作について説明する。尚、図６のステップＳ１１〜Ｓ１６，Ｓ１８〜Ｓ２０の処理は、図４のステップＳ１〜Ｓ９の処理と同様であるので、それらの処理の説明は省略する。
【００９３】
最大送信可能シーケンス番号補正部２９は、再送判定部２４で、受信側からＡＣＫパケットで再送を要求されたセグメントの中で再送を行っていない未再送セグメントがないと判断されると（図６ステップＳ１５）、最大送信可能シーケンス番号を増やして補正し（図６ステップＳ１７）、通常転送部２７へ処理を渡す。
【００９４】
次に、本発明の第２の実施例において、セッションプロトコルとしてＴＣＰを用いる場合について説明する。
【００９５】
最大送信可能シーケンス番号補正部２９における最大送信可能シーケンス番号補正の仕方としては、通常の最大送信可能シーケンス番号が、“送信から通知された最大のＡＣＫシーケンス番号＋輻輳ウィンドウサイズ”であるのに対して、“最大のＡＣＫシーケンス番号＋輻輳ウィンドウサイズ＋Ｘ”と、任意のＸを加えることによって補正する。Ｘは正の固定値でもよいし、輻輳ウィンドウに比例した値でもよい。
【００９６】
また、本実施例では、最大送信可能シーケンス番号を“ＳＡＣＫオプションで受信側から通知された最新の受信シーケンス番号＋輻輳ウィンドウサイズ”としてもよい。
【実施例３】
【００９７】
図７は本発明の第３の実施例による輻輳制御部の構成を示すブロック図である。図７において、本発明の第３の実施例による輻輳制御部１３ｂは、軽輻輳転送部３０を設けた以外は、図３に示す本発明の第１の実施例による輻輳制御部１３の構成と同様の構成となっており、同一構成要素には同一符号を付してある。また、同一構成要素の動作は本発明の第１の実施例と同様である。尚、本発明の第３の実施例による通信システムは図１に示す本発明の実施の形態による通信システムと同様の構成であり、本発明の第３の実施例によるセッション処理部は図２に示す本発明の第１の実施例によるセッション処理部１０と同様の構成である。
【００９８】
本発明の第３の実施例では、再送判定部２４で、受信側からＡＣＫによって再送を要求されたセグメントの中で再送を行っていない未再送セグメントがないと判断されると、軽輻輳転送部３０へ処理が渡される。軽輻輳転送部３０は、通常転送部２７と異なる輻輳制御を行う。この異なる輻輳制御とは、通常転送部２７に比べて、輻輳ウィンドウの上げ幅が低い、もしくはしばらく輻輳ウィンドウを維持して、その後、輻輳ウィンドウを上げるという制御を指している。
【００９９】
図８は図７の輻輳制御部１３ｂの動作を示すフローチャートである。これら図１と図２と図７と図８とを参照して本発明の第３の実施例による輻輳制御部１３ｂの動作について説明する。尚、図８のステップＳ２１〜Ｓ２６，Ｓ２８〜Ｓ３０の処理は、図４のステップＳ１〜Ｓ９の処理と同様であるので、それらの処理の説明は省略する。
【０１００】
軽輻輳転送部３０は、再送判定部２４で、受信側からＡＣＫパケットで再送を要求されたセグメントの中で再送を行っていない未再送セグメントがないと判断されると（図８ステップＳ２６）、軽輻輳用の転送処理を行う（図８ステップＳ２７）。
【実施例４】
【０１０１】
図９は本発明の第４の実施例による輻輳制御部の構成を示すブロック図である。図９において、本発明の第４の実施例による輻輳制御部１３ｃは、最大送信可能シーケンス番号補正部２９を設けた以外は、図７に示す本発明の第３の実施例による輻輳制御部１３ｂの構成と同様の構成となっており、同一構成要素には同一符号を付してある。また、同一構成要素の動作は本発明の第３の実施例と同様である。尚、本発明の第４の実施例による通信システムは図１に示す本発明の実施の形態による通信システムと同様の構成であり、本発明の第４の実施例によるセッション処理部は図２に示す本発明の第１の実施例によるセッション処理部１０と同様の構成である。
【０１０２】
本発明の第４の実施例では、再送判定部２４で、受信側からＡＣＫによって再送を要求されたセグメントの中で再送を行っていない未再送セグメントがないと判断された後、軽輻輳転送部３０の処理をする前に、最大送信可能シーケンス番号補正部２９の処理が実行される。
【０１０３】
最大送信可能シーケンス番号補正部２９は、最大送信可能シーケンス番号を増やして補正することによって、軽輻輳時に、軽輻輳転送部３０で通常転送部２７と異なる輻輳制御を行うに促す。補正された最大送信可能シーケンス番号は、軽輻輳転送部３０内での処理のために用いられ、状態更新部２８で保持されることはない。
【０１０４】
図１０は図９の輻輳制御部１３ｃの動作を示すフローチャートである。これら図１と図２と図９と図１０とを参照して本発明の第４の実施例による輻輳制御部１３ｃの動作について説明する。尚、図１０のステップＳ３１〜Ｓ３６，Ｓ３８〜Ｓ４１の処理は、図８のステップＳ２１〜Ｓ３０の処理と同様であるので、それらの処理の説明は省略する。
【０１０５】
最大送信可能シーケンス番号補正部２９は、再送判定部２４で、受信側からＡＣＫパケットで再送を要求されたセグメントの中で再送を行っていない未再送セグメントがないと判断されると（図１０ステップＳ３６）、最大送信可能シーケンス番号を増やして補正し（図１０ステップＳ３７）、軽輻輳転送部３０へ処理を渡す。軽輻輳転送部３０は軽輻輳用の転送処理を行う（図１０ステップＳ３８）。
【実施例５】
【０１０６】
図１１は本発明の第５の実施例による送信端末の構成を示すブロック図である。図１１において、本発明の第５の実施例による送信端末は、パケット入力装置４と、パケット出力装置５と、データ処理装置６と、記憶装置７と、輻輳制御プログラム８とを備えている。
【０１０７】
輻輳制御プログラム８はデータ処理装置６に読込まれ、データ処理装置６の動作を制御し、記憶装置７にセグメントバッファ１７、セッション状態記憶部１６を生成し、端末内部資源３とデータをやり取りし、パケット入力装置４、パケット出力装置５とパケットをやりとりする。
【０１０８】
データ処理装置６は輻輳制御プログラム８の制御によって、上述した本発明の第１〜第４の実施例におけるデータ入力部１１、データ出力部１４、輻輳制御部１３、パケット入力部１２、パケット出力部１５による処理と同一の処理を実行する。
【０１０９】
このように、上述した本発明の第１〜第４の実施例による処理動作は、データ処理装置６が輻輳制御プログラム８の制御に基づいて処理動作を行うことで実現される。
【０１１０】
尚、本発明は、上記の各実施例において、輻輳状態が２種類の場合について説明しているが、３種類以上あっても問題ない。すなわち、軽輻輳が２種類以上に分かれていても問題ない。また、重輻輳が２種類以上に分かれていても問題ない。
【０１１１】
また、本発明は、上記の各実施例において、２つの端末を用いる場合について説明しているが、端末の数に制限はない。さらに、本発明は、上記の各実施例において、通信方向が片方向の場合について説明しているが、双方向であってもよい。さらにまた、本発明は、上記の各実施例において、送信端末１と受信端末２とがそれぞれ分かれている場合について説明しているが、送信端末１及び受信端末２の機能が同一の端末にあってよい。この場合、送信端末１及び受信端末２がそれぞれセッション中継器であってもよい。
【０１１２】
また、本発明において、もし実際の輻輳の原因がランダムロスであっても、ランダムロスを軽輻輳と判断するため、このような環境下において本発明は目的を達成することができる。
【産業上の利用可能性】
【０１１３】
本発明は、端末のセッション通信、特にＴＣＰ通信の用途に適用可能である。また、本発明は、プロキシや暗号化装置といったセッション中継器の用途にも適用可能である。
【図面の簡単な説明】
【０１１４】
【図１】本発明の実施の形態による通信システムの構成を示すブロック図である。
【図２】本発明の第１の実施例による送信端末のセッション処理部の構成を示すブロック図である。
【図３】図２の輻輳制御部の構成を示すブロック図である。
【図４】図３の輻輳制御部の動作を示すフローチャートである。
【図５】本発明の第２の実施例による輻輳制御部の構成を示すブロック図である。
【図６】図５の輻輳制御部の動作を示すフローチャートである。
【図７】本発明の第３の実施例による輻輳制御部の構成を示すブロック図である。
【図８】図７の輻輳制御部の動作を示すフローチャートである。
【図９】本発明の第４の実施例による輻輳制御部の構成を示すブロック図である。
【図１０】図９の輻輳制御部の動作を示すフローチャートである。
【図１１】本発明の第５の実施例による送信端末の構成を示すブロック図である。
【図１２】特許文献１の再送時におけるスループットの減少問題を示すシーケンス図である。
【図１３】特許文献２の再送時におけるスループットの減少問題を示すシーケンス図である。
【符号の説明】
【０１１５】
１  送信端末
２  受信端末
３  端末内部資源
４  パケット入力装置
５  パケット出力装置
６  データ処理装置
７  記憶装置
８  輻輳制御プログラム
１０  セッション処理部
１１  データ入力部
１２  パケット入力部
１３，１３ａ，
１３ｂ，１３ｃ  輻輳制御部
１４  データ出力部
１５  パケット出力部
１６  セッション状態記憶部
１７  セグメントバッファ部
２１  輻輳判定部
２２  ネットワーク状態推定部
２３  軽・輻輳判定部
２４  再送判定部
２５  重輻輳再送部
２６  軽輻輳再送部
２７  通常転送部
２８  状態更新部
２９  最大送信可能シーケンス番号補正部
３０  軽輻輳転送部
１００  通信網
【図１】
0004654926.tif 000002
【図２】
0004654926.tif 000003
【図３】
0004654926.tif 000004
【図４】
0004654926.tif 000005
【図５】
0004654926.tif 000006
【図６】
0004654926.tif 000007
【図７】
0004654926.tif 000008
【図８】
0004654926.tif 000009
【図９】
0004654926.tif 000010
【図１０】
0004654926.tif 000011
【図１１】
0004654926.tif 000012
【図１２】
0004654926.tif 000013
【図１３】
0004654926.tif 000014