(57)【要約】【課題】ＡＣＫの頻度が減少しても、ネットワークの輻輳状態に応じた送信レートを決定するができる送信装置、送信レート算出方法及び送信レート算出プログラムを提供すること。【解決手段】本発明にかかる送信装置１０は、Ｍ個（Ｍは２以上の整数）のデータパケット受信毎に確認応答信号を送信する受信装置２０から確認応答信号を受信して送信レート制御を行う送信装置１０である。送信装置１０は、確認応答信号受信時に、確認応答信号が受信装置２０からＮ個（ＮはＭよりも小さい整数）のデータパケット受信毎に返信された場合の送信レート変化を推定する送信レート変化推定部１１、送信レート変化推定部１１によって推定された送信レート変化に基づいて送信レートを計算する送信レート計算部１２を備えるものである。【選択図】図１
2010206608.tif 000002
【特許請求の範囲】
【請求項１】
Ｍ個（Ｍは２以上の整数）のデータパケット受信毎に確認応答信号を送信する受信装置から前記確認応答信号を受信して送信レート制御を行う送信装置であって、
前記確認応答信号受信時に、前記確認応答信号が前記受信装置からＮ個（ＮはＭよりも小さい整数）のデータパケット受信毎に返信された場合の送信レート変化を推定する送信レート変化推定部と、
前記送信レート変化推定部によって推定された送信レート変化に基づいて送信レートを計算する送信レート計算部を備えた送信装置。
【請求項２】
前記送信レート計算部は、前記送信レート変化から次の確認応答信号を受信するまでに送信できるデータパケット量を計算し、前記データパケット量に応じて送信レートを計算することを特徴とする請求項１記載の送信装置。
【請求項３】
現在の送信レートと前記送信レート計算部によって計算された送信レートの大小関係に基づいて、次に設定する送信レートの増減量と前記現在の送信レートの変更タイミングを決定する送信レート変化制御部、をさらに備える請求項１又は２記載の送信装置。
【請求項４】
前記送信レート変化推定部は、前記現在の送信レートと、あらかじめ定められた送信レート閾値と、データパケット送信後確認応答信号を受信するまでのタイミングと、確認応答信号に含まれるデータパケット受信の成功もしくは失敗の情報とに基づいて、前記受信装置がＮ個のデータパケット受信毎に確認応答信号を返信する場合の前記送信レート変化を推定することを特徴とする請求項１乃至３のいずれか１項に記載の送信装置。
【請求項５】
前記送信レート変化推定部は、前記受信装置において、前記データパケットの受信が成功した場合に送信レートが増加すると推定することを特徴とする請求項１乃至４のいずれか1項に記載の送信装置。
【請求項６】
前記送信レート変化推定部は、前記送信レートが増加すると推定した場合に、前記送信レート閾値と比較し、推定中の送信レートが前記送信レート閾値以上の場合には、送信レートは線形的に増加し、推定中の送信レートが前記送信レート閾値よりも小さい場合には、送信レートは指数関数的に増加すると推定することを特徴とする請求項１乃至５のいずれか1項に記載の送信装置。
【請求項７】
前記送信レート変化推定部は、前記受信装置において、前記データパケットの受信に失敗した場合に送信レートが減少すると推定することを特徴とする請求項１乃至４のいずれか１項に記載の送信装置。
【請求項８】
前記送信レート変化推定部は、前記送信レートが減少すると推定した場合に、前記送信レートの減少に基づいて、前記送信レート閾値も減少すると推定することを特徴とする請求項１乃至４及び請求項７のいずれか１項に記載の送信装置。
【請求項９】
前記送信レート変化推定部は、前記送信レートが減少すると判定した場合に、前記データパケット送信後確認応答信号を受信するまでのタイミングに基づいて再送タイムアウト値を推定し、前記再送タイムアウトが発生しなければ前記推定中の送信レートが半減すると推定し、前記再送タイムアウトが発生すれば、送信レートが最小値になると推定することを特徴とする請求項１乃至４、請求項７及び請求項８のいずれか１項に記載の送信装置。
【請求項１０】
前記送信レート計算部は、前記送信レート変化の推定から前記推定した送信レートの平均値を算出し、送信レートを計算することを特徴とする請求項１乃至４のいずれか１項に記載の送信装置。
【請求項１１】
前記送信レート計算部は、前記送信レート変化の推定から推定した送信レートが減少する直前の前記推定した送信レート値の平均を送信レートとすることを特徴とする請求項１乃至４、及び請求項１０のいずれか１項に記載の送信装置。
【請求項１２】
前記送信レート変化制御部は、前記送信レート計算部から通知される送信レートが、現在の送信レートよりも大きくかつ前記送信レートと現在の送信レートとの差分が一定以上ある場合、前記送信レート増加量と前記送信レート変更タイミングを決定することを特徴とする請求項３記載の送信装置。
【請求項１３】
前記送信レート変化制御部は、前記送信レート変更タイミングを、前記受信装置が、確認応答信号を返信してから次の確認応答信号を返信するまでの推定タイミングに基づいて決定することを特徴とする請求項３又は請求項１２に記載の送信装置。
【請求項１４】
前記送信レート変化制御部は、前記送信レート計算部から通知される送信レートが、現在の送信レートよりも大きくかつ前記送信レートと現在の送信レートとの差分が一定以上ある場合、次に確認応答信号が到着するまでに前記送信レート計算部から通知される送信レートで送信可能なデータパケット数に基づいて、次に確認応答信号が到着する時の到達送信レートを決定することを特徴とする請求項３又は請求項１２又は請求項１３に記載の送信装置。
【請求項１５】
前記送信レート変化制御部は、前記送信レート変更タイミングと前記到達送信レートから送信レート増加量を決定することを特徴とする請求項１４に記載の送信装置。
【請求項１６】
Ｍ個（Ｍは２以上の整数）のデータパケット受信毎に生成される確認応答信号に基づいて、送信レートの算出を行う送信レート算出方法であって、
前記確認応答信号がＮ個（ＮはＭよりも小さい整数）のデータパケット受信毎に生成された場合に当該確認応答信号に基づいて送信レート変化を推定するステップと、
前記推定された送信レート変化に基づいて送信レートを計算するステップを備えた送信レート算出方法。
【請求項１７】
Ｍ個（Ｍは２以上の整数）のデータパケット受信毎に生成される確認応答信号に基づいて、送信レートの算出を行う送信レート算出プログラムであって、
前記確認応答信号がＮ個（ＮはＭよりも小さい整数）のデータパケット受信毎に生成された場合に当該確認応答信号に基づいて送信レート変化を推定するステップと、
前記推定された送信レート変化に基づいて送信レートを計算するステップを送信装置の制御コンピュータに実行させる送信レート算出プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は送信装置、送信レート算出方法及び送信レート算出プログラムに関し、特に確認応答信号を用いた送信レートの設定に関する。
【背景技術】
【０００２】
送受信端末間で、データパケットの送達確認を行いながら送信レート制御を行って通信するプロトコルとしてＴＣＰ（Transmission Control Protocol）が挙げられる。ＴＣＰのレート制御方法は、受信端末からのＡＣＫ（Acknowledgement）パケットを送信端末が受信するが、送信端末はＡＣＫパケットの受信を待たずに送出可能なデータパケット量を制御する。送信が成功すれば送出量を増加させ、失敗すると送出量を減少させる。
【０００３】
非特許文献１に記載されているＴＣＰの制御について図１２、図１３を用いて説明する。図１２はＴＣＰ通信を行う送信端末１００、受信端末２００の構成図である。
【０００４】
最初に、送信端末１００について説明する。データ送信部１０１は、送信データ蓄積部１０４からデータを取り出して、送信レート決定部１０３から通知される送信レートでデータパケットを送信する。ＡＣＫ受信部１０２は、受信端末２００からＡＣＫパケットを受信して、受信端末２００におけるパケットロスを検出すると、データ送信部１０１へ再送を要求する。また、送信レート決定部１０３に対して、データパケットの送信に成功したかどうか通知する。
【０００５】
送信レート決定部１０３は、ＡＣＫパケットを受信し、ＡＣＫパケットに含まれるＡＣＫ番号が進んでデータパケットの送信に成功したことがわかると、送出量を増加させる。増加させる方法としては、図１３に示すように現在の送出量が予め定めたｓｓｔｈｒｅｓｈ（slow start threshold）よりも小さい場合、ＡＣＫパケット受信毎に送信レートを２倍にする。現在の送出量がｓｓｔｈｒｅｓｈよりも大きい場合は、ＡＣＫパケット受信毎に1／（現在の送出レート）分増加させる。
【０００６】
また、同じＡＣＫ番号のＡＣＫパケットを重複して受信した場合には、受信端末２００においてパケットロスしたと判断して、送出量を半減させる。一定時間ＡＣＫパケットを受け取らない場合は、送出量を１データパケットまで減少させる。送信データ蓄積部１０４は、送信するデータを蓄積している。
【０００７】
次に、受信端末２００の説明をする。データ受信部２０１は、送信端末１００からのデータを受信して、ＡＣＫ送信部２０２へ受信で進んだシーケンス番号を通知し、データを受信データ蓄積部２０４へ蓄積する。ＡＣＫ送信部２０２は、ＡＣＫ頻度決定部２０３から通知される頻度で、データ受信部２０１から通知されるシーケンス番号から次に受信を期待するシーケンス番号をＡＣＫ番号としてＡＣＫパケットを作成し、返信する。ＡＣＫ頻度決定部２０３は、データパケットＸ（Ｘは１以上の整数）個受信毎にＡＣＫパケットの返信および一定時間経過すればＡＣＫパケットの返信をＡＣＫ送信部２０１へ指示する。ＴＣＰでは、Ｘ＝２が推奨されている。
【先行技術文献】
【非特許文献】
【０００８】
【非特許文献１】Ｍ．Ａｌｌｍａｎ，Ｖ．Ｐａｘｓｏｎ，Ｗ．Ｓｔｅｖｅｎｓ，"ＲＦＣ２５８１  ＴＣＰ  ｃｏｎｇｅｓｔｉｏｎ  Ｃｏｎｔｒｏｌ"ＩＥＴＦ，Ａｐｒｉｌ１９９９
【発明の概要】
【発明が解決しようとする課題】
【０００９】
ＡＣＫパケットの頻度を決めるＸが大きな値をとる場合や、一定時間が大きくなる場合、ＡＣＫパケットの頻度が減少し、送信レート制御の粒度が粗くなり、ネットワークの込み具合の変化に応じた送信レート制御が困難になる。
【００１０】
具体的に図１４を用いて説明する。図１４は、ＡＣＫの頻度が減少したときのレートの変化を表したものである。丸印のプロットは、データパケット受信毎にＡＣＫパケットを返信した場合の送信レートの変化を表し、四角印のプロットは、データパケット３個受信毎にＡＣＫパケットを返信した場合の送信レートの変化表している。図１４に示したように、データパケット３個受信毎にＡＣＫパケットを返信した場合は、ネットワークの輻輳に反応してレート減少させるタイミングが遅れるという問題や、送信レートの増加が鈍化するという問題がある。
【００１１】
本発明は、このような問題点を解決するためになされたものであり、ＡＣＫの頻度が減少しても、ネットワークの輻輳状態に応じた送信レートを決定するができる送信装置、送信レート算出方法及び送信レート算出プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明の第１の態様にかかる送信装置は、Ｍ個（Ｍは２以上の整数）のデータパケット受信毎に確認応答信号を送信する受信装置から前記確認応答信号を受信して送信レート制御を行う送信装置であって、前記確認応答信号受信時に、前記確認応答信号が前記受信装置からＮ個（ＮはＭよりも小さい整数）のデータパケット受信毎に返信された場合の送信レート変化を推定する送信レート変化推定部と、前記送信レート変化推定部によって推定された送信レート変化に基づいて送信レートを計算する送信レート計算部を備えたものである。
【００１３】
また、本発明の第２の態様にかかる送信レート算出方法は、Ｍ個（Ｍは２以上の整数）のデータパケット受信毎に生成される確認応答信号に基づいて、送信レートの算出を行う送信レート算出方法であって、前記確認応答信号がＮ個（ＮはＭよりも小さい整数）のデータパケット受信毎に生成された場合に当該確認応答信号に基づいて送信レート変化を推定するステップと、前記推定された送信レート変化に基づいて送信レートを計算するステップを備えることである。
【００１４】
また、本発明の第３の態様にかかる送信レート算出プログラムは、Ｍ個（Ｍは２以上の整数）のデータパケット受信毎に生成される確認応答信号に基づいて、送信レートの算出を行う送信レート算出プログラムであって、前記確認応答信号がＮ個（ＮはＭよりも小さい整数）のデータパケット受信毎に生成された場合に当該確認応答信号に基づいて送信レート変化を推定するステップと、前記推定された送信レート変化に基づいて送信レートを計算するステップを送信装置の制御コンピュータに実行させるものである。
【発明の効果】
【００１５】
本発明により、ＡＣＫの頻度が減少しても、ネットワークの輻輳状態に応じた送信レートを決定するができる送信装置、送信レート算出方法及び送信レート算出プログラムを提供することができる。
【図面の簡単な説明】
【００１６】
【図１】実施の形態１にかかる送信装置の構成図である。
【図２】実施の形態１にかかる送信装置及び受信装置の構成図である。
【図３】実施の形態１にかかるパケットロスの検出方法を示す図である。
【図４】実施の形態１にかかるＡＣＫパケットの構成図である。
【図５】実施の形態１にかかる送信レート変化を示す図である。
【図６】実施の形態１にかかる送信装置及び受信装置のフローチャートである。
【図７】実施の形態１にかかる送信レート変化の制御を示す図である。
【図８】実施の形態２にかかる送信装置及び受信装置の構成図である。
【図９】実施の形態２にかかる送信レート変化を示す図である。
【図１０】実施の形態２にかかる送信レート変化を示す図である。
【図１１】実施の形態２にかかる送信装置及び受信装置のフローチャートである。
【図１２】従来の送信装置及び受信装置の構成図である。
【図１３】従来の送信レート変化を示す図である。
【図１４】従来の送信レート変化を示す図である。
【発明を実施するための形態】
【００１７】
（実施の形態１）
以下、図面を参照して本発明の実施の形態について説明する。図１は本発明の実施の形態１にかかる送信装置の構成図である。ここで、送信装置１０は、受信装置２０に対して送信したデータパケットの送達結果を確認するために、受信装置２０から確認応答信号（ＡＣＫパケット）を受信する。受信装置２０は、Ｍ個（Ｍは２以上の整数）のデータパケットを受信する毎に確認応答信号を送信装置１０に送信する。送信装置１０は、受信した確認応答信号に基づいて、送信レート制御を実施する。送信装置１０は、送信レート変化推定部１１と、送信レート計算部１２を備えている。
【００１８】
送信レート変化推定部１１は、受信装置２０からの確認応答信号受信時に、確認応答信号が受信装置２０からＮ個（ＮはＭよりも小さい整数）のデータパケットを受信する毎に返信された場合の送信レートの変化を推定する。具体的には、受信装置２０がデータパケットの受信に成功した場合は、送信レートを増加させ、受信装置２０がデータパケットの受信に失敗した場合は、送信レートを減少させるとした場合の送信レート変化を推定する。受信装置２０がデータパケットの受信に成功したか否かの情報は、送信装置１０が受信装置２０から受信する確認信号に基づいて確認することができる。
【００１９】
送信レート計算部１２は、送信レート変化推定部１１によって推定された送信レート変化に基づいて送信レートを計算する。
【００２０】
次に、図２を用いて本発明の実施の形態１にかかる送信装置と受信装置の構成について詳細に説明する。送信装置１０は、パケットを一意に識別するシーケンス番号を含んだデータパケットを送信し、受信装置２０は、ＴＣＰ  ＳＡＣＫ（Selective ACK）オプションを用いて、ＡＣＫ番号として次に受信を期待するシーケンス番号を設定し、また、受信したデータパケットのシーケンス番号を含んだＡＣＫパケットを送信装置１０へ返信する。
【００２１】
送信装置１０は、送信レート変化推定部１１と、送信レート計算部１２と、データ送信部１３と、ＡＣＫ受信部１４と、ＲＴＴ（Round Trip Time）計測部１５と、送信データ蓄積部１６を備えている。
【００２２】
データ送信部１３は、送信データ蓄積部１６からデータを取得し、取得したデータをパケット化する。そして、送信レート計算部１２から通知される送信レートに従ってパケットを送信する。また、データパケットを送信したときにＲＴＴ計測部１５に送信時刻を通知する。
【００２３】
ＡＣＫ受信部１４は、ＡＣＫパケット受信時にＲＴＴ計測部１５に受信時刻を通知する。さらに、受信したＡＣＫパケットに含まれる情報からパケットロス発生を検出すると、データ送信部１３に対して、パケットロスしたパケットの再送を指示する。パケットロスの判定は、同じＡＣＫ番号のＡＣＫパケットを一定数以上受信するか、一定時間以上ＡＣＫパケットを受信しない場合である。パケットロス発生の検出方法は後に詳述する。また、ＡＣＫ受信部１４は、ＡＣＫパケットを送信レート変化推定部１１へ通知する。
【００２４】
ＲＴＴ計測部１５は、データ送信部１３からデータパケットの送信時刻、ＡＣＫ受信部１４からＡＣＫパケット受信時刻を取得する。これにより、データパケットを送信してから、当該データパケットに対するＡＣＫを受信するまでの時間を示すＲＴＴ値を計算する。これにより求められたＲＴＴ値を送信レート変化推定部１１へ通知する。
【００２５】
送信レート変化推定部１１は、ＡＣＫ受信部１４から通知されるＡＣＫパケットから、受信装置２０がデータパケットを正常に受信したか否かの情報を取得する。さらに、ＲＴＴ計測部１５から取得するＲＴＴ値に基づいて、受信装置２０がデータパケット受信毎にＡＣＫパケットが返信された場合に、変化する送信レートの変化を推定する。推定結果を送信レート計算部１２へ通知する。
【００２６】
次に、図３、図４、図５を用いて送信レート変化の推定方法について説明する。受信装置２０が、データパケットを受信するたびにＡＣＫパケットを返信し、送信装置１０がＡＣＫパケットを受信した場合の送信レートの変化を推定する。
【００２７】
図３は、データパケットとＡＣＫパケットの送信の様子を示しており、送信装置１０は、データパケットのサイズ１００Ｂｙｔｅでシーケンス番号１００から２４００までのデータパケットを送信している（実線の矢印）。例えば、送信装置１０から送信するデータパケット１００は、シーケンス番号１００から１９９までのデータより構成される。図３は、データパケット６００、７００、８００、１９００をロスしている様子を示している。
【００２８】
受信装置２０は、送信装置１０から２０個のデータパケットを受信して、図４に示すＡＣＫパケットを送信装置１０へ返信する（図３の受信装置２０から送信装置１０へ向かう実線の矢印）。具体的には、データパケット２４００を取得した時点で、データパケットが２０個に達するため、ＡＣＫパケットを返信する。受信装置２０が連続して受信できている最新のシーケンス番号が５９９までなので、ＡＣＫパケットのＡＣＫ番号は６００と設定される。また、受信できているデータパケットのシーケンス番号として９００〜１８９９、２０００〜２４９９が含まれる。
【００２９】
送信レート変化推定部１１は、ＡＣＫ受信部１４から、ＡＣＫパケットを受信すると、送信レート計算部１２から現在の送信レートを取得し、ＲＴＴ計測部１５からＲＴＴ値を取得する。さらに、ＡＣＫパケットに示されるシーケンス番号から、データパケット受信毎にＡＣＫが返信された場合の送信レートを推測する。図５は、受信装置２０がデータパケットを１個受信する毎にＡＣＫを返信した場合の送信レートの変化を示している。ＡＣＫパケット受信の時点で送信レートは図５に示すようにｒａｔｅ＿ａで、送信レート閾値よりも大きい値とする。図４に示すＡＣＫパケットからシーケンス番号１００から５９９までの５個のデータパケットが送信成功していることが分かるので、図５の送信レートｒａｔｅ＿ａから一定量で５回送信レートを増加させる。送信装置１０の送信レート制御は、データ送信が成功すれば送信レートを増加させ、データ送信が失敗すれば、送信レートを減少させる。
【００３０】
送信レートの増加方法は、送信レートの閾値を設定して、閾値以下であれば、データ送信が成功したＡＣＫパケット受信毎に送信データレートを例えば２倍にし、指数関数的に増加させる。送信レートが閾値以上になると、データ送信が成功したＡＣＫパケット受信毎に一定量増加させ、線形的に増加させる。
【００３１】
ここで、送信装置１０における受信装置２０のパケットロス検出方法とレート制御について説明する。受信装置２０が、データパケット受信毎にＡＣＫパケットを返信する場合のパケットロス検出方法は（１）同じＡＣＫ番号のＡＣＫパケットを複数受信した場合（２）一定時間ＡＣＫパケットを受信しない場合（再送タイムアウトの検出）、の２通りある。送信レート制御は、（１）の場合、パケットロス検出の直前の送信レートを半分にし、（２）の場合、次のＡＣＫを受信するまでに少なくとも１個のデータパケットを送信できるレートまで下げる。再送タイムアウト時間は、ＲＴＴ＋４×（ＲＴＴの平均偏差）で求める。ここでは、同じＡＣＫ番号のＡＣＫパケットを３つ受信するとロスしたと判断すると、送信装置１０が、図３の(7)のＡＣＫパケットを受信すると、３回連続でＡＣＫ番号６００のＡＣＫパケットを受信することになる。これにより、シーケンス番号６００番のデータパケットのロスが発生したと検知してシーケンス番号１３００のデータパケット送信に割り込んで再送を実施する。この再送パケットのデータ送信が成功するまで、ＡＣＫパケット受信毎に送信レートを一定量増加させる（図５の区間Ａ）。シーケンス番号６００のデータパケットの再送成功は、ＡＣＫ番号が７００に設定されている図３の(10)のＡＣＫパケット受信により検知する。このとき送信レートを半減させる（図５のタイミングＢ）。このとき、送信レート閾値を、半減させた送信レート値に更新する。
【００３２】
次に、図３の(12)のＡＣＫパケットを受信した時点で、３回連続でＡＣＫ番号７００のＡＣＫパケットを受信することになる。これにより、シーケンス番号７００のデータパケットのロスが発生したと検知してシーケンス番号１８００のデータ送信に割り込んで再送を実施する。図３の(14)のＡＣＫパケット受信までは、ＡＣＫパケット受信毎に一定量送信レートを増加させる（図５の区間Ｃ）。図３の(15)のＡＣＫパケットを受信により、シーケンス番号７００番の再送が成功したと検知し、シーケンス番号２２００の送信レートを半減させる（図５のタイミングＤ）。このとき、送信レート閾値を半減させた送信レート値に更新する。
【００３３】
次に、シーケンス番号２２００のデータパケット送信直前に、８００番のＡＣＫパケットを一定時間受信しなかったため、再送タイムアウトが発生したとする。このとき、送信レートを次のＡＣＫパケットを受信するまで少なくとも１個のデータパケットが送出可能な送信レートまで低減させる（図５のタイミングＥ）。その後、図３の(19)のＡＣＫパケットを受信するまで送信レートを増加させる。送信レートは、送信レート閾値よりも小さいため、ＡＣＫパケット受信毎に送信レートを２倍する（図５の区間Ｆ）。
【００３４】
前述のようにＡＣＫパケットの情報とＲＴＴから、データパケット送信成功の場合は、送信レート閾値よりも大きいかどうかを判断して、送信レートの増加幅を推定する。データパケットロスの場合、再送タイムアウトが発生するかどうかをＲＴＴから判断して減少幅を推定する。このようにして推定した送信レート変化の推定結果を送信レート計算部１２へ通知する。
【００３５】
１データパケット毎にＡＣＫパケットが返信される場合の送信レート変化を推定することで、送信装置１０は、単純にレートを増減させるのではなく、データパケットの送信成功および失敗からネットワークの輻輳状況に応じたレート制御を可能とさせる。つまり、ＡＣＫパケットの頻度は少ないにもかかわらず、制御粒度の細かいレート制御を実現することが可能となる。
【００３６】
送信レート計算部１２は、送信レート変化推定部１１から送信レート変化の推定情報を取得する。推定した送信レートの変化から、データパケット毎にＡＣＫパケットが返信された場合における、送信装置１０がデータパケットを送信してから、ＡＣＫパケットを受信するまでの送信データ量を算出することができる。このようにして算出した送信データ量を、次のＡＣＫパケットが到着するまでに送出できる送信データ量として推定する。この送信データ量を、次のＡＣＫパケットが到着するまでに、送信できるよう、送信レートを設定する。設定したレートは、データ送信部１３へ通知する。
【００３７】
また、送信レートは、送信レート変化推定部１１が推定した送信レートの平均送信レートを送信レートとしてもよく、ネットワークの帯域を使い切る指標値としてロス直前の送信レートの平均を計算し、送信レートとしてもよい。ロス直前の送信レートは、図５の丸で囲んだときの送信レートである。
【００３８】
送信データ蓄積部１６は、送信するデータを蓄積する。
【００３９】
以上説明したように、送信装置１０は、データパケットの送信成功時には、送信レートを増加させ、失敗時には送信レートを減少させる制御で説明したが、上記以外にもＡＣＫパケットをトリガーに送信レート制御している方式にも適用できる。また、以上の説明においては、送信装置１０における処理について説明したが、データパケットを受信した受信装置２０でも、生成するＡＣＫパケットの情報に基づいて、送信装置１０と同様の処理を行うことが可能である。
【００４０】
次に、図２の受信装置２０の構成について説明する。受信装置２０は、データ受信部２１、ＡＣＫ送信部２２、ＡＣＫ頻度決定部２３、受信データ蓄積部２４を備えている。
【００４１】
データ受信部２１は、送信装置１０からのデータパケットを受信する。データ受信部２１は、受信したデータの情報をＡＣＫ送信部２２へ通知する。具体的には、データパケットのシーケンス番号等である。さらに、データ受信部２１は、データパケットを受信データ蓄積部２４へ蓄積する。
【００４２】
ＡＣＫ送信部２２は、図４に示すように、受信したデータパケットを一意に識別するシーケンス番号を含んだＡＣＫパケットを作成して、ＡＣＫ頻度度決定部２３から通知される頻度に従って送信装置１０へ送信する。
【００４３】
ＡＣＫ頻度決定部２３は、送信装置１０に対して、ＡＣＫを送信する頻度を決定し、ＡＣＫ送信部２２へ通知する。前述のＡＣＫの頻度とは、データパケットＸ（Ｘは１以上の整数）個受信毎にＡＣＫパケットを送信装置１０へ返信するもしくは時間周期的にＡＣＫパケットを返信する。ＡＣＫ送信部２２へは、Ｘの値もしくは周期的にＡＣＫパケットを返信する時間を決定して、ＡＣＫ送信部２２に通知する。
【００４４】
次に、図６を用いて本発明の実施の形態１にかかる送信装置と受信装置の処理の流れにつき説明を行う。
【００４５】
はじめに、送信装置１０は、送信データ蓄積部１６からデータを取り出してパケット化する。さらに、送信レート計算部１２から通知される送信レートに従ってデータパケットを送信する。このとき、パケットサイズは１００Ｂｙｔｅとしている。また、データパケットには、データパケットを一意に識別するシーケンス番号を含める（Ｓ１００）。
【００４６】
次に、受信装置２０では、ＡＣＫ頻度決定部２３から、データパケットを２０個受信毎にＡＣＫパケットを生成して送出するよう通知がなされる。受信装置２０は、図３に示すように、シーケンス番号２４００のデータパケットを受信時にＡＣＫパケットを作成して返信し、送信装置１０はＡＣＫパケットを受信する（Ｓ１０１）。
【００４７】
次に、ＡＣＫ受信部１４は送信レート変化推定部１１へ、ＡＣＫ番号、受信したデータのシーケンス番号等を含むＡＣＫパケットの情報を通知する。また、ＡＣＫ受信部１４は、データ送信部１３へロスしたパケットの再送を指示する。ＲＴＴ計測部１５は、ＲＴＴを計算して送信レート変化推定部１１へＲＴＴを通知する（Ｓ１０２）。
【００４８】
次に、送信レート変化推定部１１は、送信レートの変化を推定し、送信レート計算部１２へ通知する（Ｓ１０３）。送信レート変化の推定方法は、図３乃至図５で説明したものと同様であるため、説明を省略する。
【００４９】
次に、送信レート計算部１２は、送信レート変化推定部１１から通知された送信レート変化と、次にＡＣＫパケットを受信するまでに送信する送信データ量から、送信レートを算出し（Ｓ１０４）、データ送信部１３に通知する（Ｓ１０５）。
【００５０】
次に、図７を用いて本発明の実施の形態１にかかる送信レート変化の推定処理の流れにつき説明を行う。ＡＣＫ受信部１４は、ＡＣＫパケットを受信してから受信装置２０におけるデータパケットのロスがあるか確認する（Ｓ２００）。データパケットのロスがあれば、再送タイムアウトが発生するかどうか確認する（Ｓ２０１）。再送タイムアウトが発生すれば送信レートを最小にする（Ｓ２０２）。再送タイムアウトが発生しないようであれば、送信レートを半減させる（Ｓ２０３）。
【００５１】
次に、Ｓ２００において、ロスがなければ、現在の送信レートが送信レート閾値よりも大きいか確認する（Ｓ２０４）。閾値よりも大きければ、送信レートを一定量増加させる（Ｓ２０５）。閾値よりも小さければ、送信レートを例えば２倍にする（Ｓ２０６）。
【００５２】
以上説明したように、本発明の実施の形態１にかかる送信装置をもちいることにより、ＡＣＫの頻度が減少しても、ＡＣＫが例えば１データパケット毎に返信される場合の送信レートの変化を推測して、送信レートを決定することで、よりネットワークの輻輳状態に応じた送信レート制御を実現できる。つまり、ＡＣＫの頻度を減少させることによりネットワークに送出されるＡＣＫパケットを減少させることが可能であり、送信装置及び受信装置のＡＣＫパケット処理に伴う処理負荷を軽減させることができる。さらに、ＡＣＫパケットが例えば１データパケット毎に返信された場合と同様に高精度な送信レート制御を行うことができる。
【００５３】
（実施の形態２）
図８を用いて本発明の実施の形態２にかかる送信装置１０の構成について説明する。送信装置１０は、図１の送信装置１０の構成に、送信レート変化制御部１７を加えた構成となる。その他の構成は図１と同様である。
【００５４】
送信レート変化制御部１７は、送信レート計算部１２から送信レートを取得する。また、ＡＣＫ受信部１４からＡＣＫパケットの受信時刻とＡＣＫパケット到着までに送出するデータパケット数を取得し、次のＡＣＫパケットを受信するまでに、ＡＣＫ受信部１４から取得したデータパケット数を送信できるように、到達送信レート、送信レートの増減およびタイミングを決定する。到達送信レートとは、次のＡＣＫパケットを受信する時に設定する送信レートである。送信レートが、現在の送信レートの値よりも一定値以上の場合、急激に送信レートを増加させるとネットワーク内で輻輳が発生する可能性があるため線形的に増加させる。ここで、送信レートの増減とタイミング制御方法について２つの場合に分けて説明する。
【００５５】
（１）現在の送信レート＋α≦送信レート計算部１２で計算される送信レート、の場合。αは任意の送信レート値を示す。
【００５６】
前述にあるとおり、この場合、送信レートが急激に増加し、ネットワーク中で輻輳が発生する可能性がある。このため、急激なレート増加による輻輳を抑制するため線形的に送信レートを増加させる。まず、増加させるタイミングについて説明する。送信レートを増加させるタイミングは、受信装置２０が、１データパケット受信毎にＡＣＫパケットを返信している場合の送信レート制御タイミングと合わせる。ＡＣＫパケットを受信するまでに送出しているデータパケット数に等しい回数のタイミングで増加させる。図９では、ＡＣＫパケットを受信するまでに４個のデータパケットを送信している場合の様子を示している。従って、増加させるタイミングは、ＡＣＫ受信部１４から通知される時刻から算出されるＡＣＫパケット到着間隔を４で除算した値となる。図９ではその値をＴとしている。
【００５７】
次に、４回の送信レート増加で到達させる送信レートについて説明する。次のＡＣＫパケットが到着するまで、送信レート計算部１２から通知される送信レートｒａｔｅ＿ｃで送信した場合のデータパケット量（図１１の斜線部の面積）を送信するため、次のＡＣＫパケット受信時までに到達する送信レートは２×ｒａｔｅ＿ｃ−ｒａｔｅ＿ａとなる。従って、１回での送信レート増加量βはβ＝２（ｒａｔｅ＿ｃ−ｒａｔ＿ａ）／４となる。図９は、現在の送信レートｒａｔｅ＿ａ＋αが、送信レート計算部１２で計算されたｒａｔｅ＿ｃよりも小さい値であることを示している。前述より、Ｔ時間毎に２（ｒａｔｅ＿ｃ−ｒａｔ＿ａ）／４送信レートを増加させる。本情報をデータ送信部１３へ通知する。
【００５８】
（２）送信レート計算部１２で計算される送信レート＜現在の送信レート＋α、の場合。αは任意の送信レート値を示す。
【００５９】
この場合、現在の送信レートを、送信レート計算部１２で計算される送信レートに変更しても、ネットワークにおいて輻輳が発生する可能性は低いため、図１０に示すように送信レートｒａｔｅ＿ｃで送信するようにデータ送信部１３へ通知する。
【００６０】
次に、図１１を用いて、本発明の実施の形態２にかかる送信装置と受信装置の処理の流れにつき説明する。なお、Ｓ３０４までは、図６のＳ１０４までと同様であるため、説明を省略する。
【００６１】
送信レート計算部１２は、送信レート変化推定部１１から通知された送信レート変化と、次にＡＣＫパケットを受信するまでに送信する送信データ量から、送信レートを算出し送信レート変化制御部１７に出力する。送信レート変化推定部１１から送信レート、ＡＣＫ受信部１４からＡＣＫパケット受信時刻とＡＣＫパケット到着までに送信したデータパケット数を取得し、前述のとおり、送信レートの増加量およびタイミングを求めて（Ｓ２０５）、データ送信部１３へ通知する（Ｓ２０６）。
【００６２】
以上説明したように、本発明の実施の形態２にかかる送信装置を用いることにより、現在の送信レートよりも算出された送信レートが大きい場合、急激に送信レートを増加させるのではなく、線形的に徐々に増加させることで、ネットワークの輻輳を回避することができる。
【００６３】
以上の説明は、本発明の実施の形態を説明するものであり、本発明が以上の実施の形態に限定されるものではない。また、当業者であれば、以上の実施の形態の各要素を本発明の範囲において容易に変更、追加、変換することが可能である。
【符号の説明】
【００６４】
１０  送信装置
１１  送信レート変化推定部
１２  送信レート計算部
１３  データ送信部
１４  ＡＣＫ受信部
１５  ＲＴＴ計測部
１６  送信データ蓄積部
１７  送信レート変化制御部
２０  受信装置
２１  データ受信部
２２  ＡＣＫ送信部
２３  ＡＣＫ頻度決定部
２４  受信データ蓄積部
【図１】
2010206608.tif 000003
【図２】
2010206608.tif 000004
【図３】
2010206608.tif 000005
【図４】
2010206608.tif 000006
【図５】
2010206608.tif 000007
【図６】
2010206608.tif 000008
【図７】
2010206608.tif 000009
【図８】
2010206608.tif 000010
【図９】
2010206608.tif 000011
【図１０】
2010206608.tif 000012
【図１１】
2010206608.tif 000013
【図１２】
2010206608.tif 000014
【図１３】
2010206608.tif 000015
【図１４】
2010206608.tif 000016