(57)【要約】【課題】最適な転送性能の下での情報転送ができる送信装置、通信システム、送信方法及び送信プログラムを提供する。【解決手段】送信装置１００は、受信装置に対してデータ送信を行い、受信装置がさらに受信可能なデータ量である受信許容量が第１の閾値以下である場合に、受信装置に対する前記データ送信を停止する。この送信装置１００は、複数のデータパケットを所定のスループットで送信することによりデータ送信を行う送信部１０２、複数のデータパケットを受信している受信装置から受信許容量を受信する受信部１０１、受信許容量が第１の閾値を超える第２の閾値以下である場合に、スループットを低下させるスループット調整部１０３とを含む。【選択図】図１
2013081131.tif 000002
【特許請求の範囲】
【請求項１】
受信装置に対してデータ送信を行い、前記受信装置がさらに受信可能なデータ量である受信許容量が第１の閾値以下である場合に、前記受信装置に対する前記データ送信を停止する送信装置であって、
複数のデータパケットを所定のスループットで送信することにより前記データ送信を行う送信部と、
前記複数のデータパケットを受信している前記受信装置から前記受信許容量を受信する受信部と、
前記受信許容量が前記第１の閾値を超える第２の閾値以下である場合に、前記スループットを低下させるスループット調整部とを含む
送信装置。
【請求項２】
前記スループット調整部はさらに、前記受信許容量が前記第２の閾値を超える第３の閾値以上である場合に、前記スループットを上昇させる
請求項１記載の送信装置。
【請求項３】
前記第２の閾値を設定する閾値調整部をさらに含み、
前記閾値調整部は、前記受信許容量が所定の頻度を超えて前記第１の閾値以下となった場合に、前記第２の閾値を上昇させる
請求項１記載の送信装置。
【請求項４】
前記第２の閾値を設定する閾値調整部をさらに含み、
前記閾値調整部は、前記第２の閾値と、前記第２の閾値を用いて前記データパケットを一定数連続的に送信した際の所要時間との組を複数記憶しており、前記所要時間に基づいて適切な前記第２の閾値を選択する
請求項１記載の送信装置。
【請求項５】
前記第２の閾値及び前記第３の閾値を設定する閾値調整部をさらに含み、
前記閾値調整部は、前記受信許容量が所定の頻度を超えて前記第１の閾値以下となった場合に、前記第２の閾値及び前記第３の閾値を上昇させる
請求項２記載の送信装置。
【請求項６】
前記第２の閾値及び前記第３の閾値を設定する閾値調整部をさらに含み、
前記閾値調整部は、前記第２の閾値、前記第３の閾値、並びに前記第２の閾値及び前記第３の閾値を用いて前記データパケットを一定数連続的に送信した際の所要時間との組を複数記憶しており、前記所要時間に基づいて適切な前記第２の閾値及び前記第３の閾値を選択する
請求項２記載の送信装置。
【請求項７】
前記スループット調整部は、単位時間あたりに送信される前記データパケットの数である送信頻度を低下又は上昇させることにより、前記スループットを低下又は上昇させる
請求項１乃至６いずれか１項記載の送信装置。
【請求項８】
前記スループット調整部は、前記データパケット間に挿入される時間である送信間隔を延長又は短縮することにより、前記送信頻度を低下又は上昇させ、前記スループットを低下又は上昇させる
請求項７記載の送信装置。
【請求項９】
前記受信許容量は、前記受信装置が受信した前記データパケットを処理前に一時的に格納するバッファの空き容量を示す値である
請求項１乃至８いずれか１項記載の送信装置。
【請求項１０】
ＵＳＢ３．０規格に準拠したことを特徴とする
請求項１乃至９いずれか１項記載の送信装置。
【請求項１１】
前記受信許容量は、前記受信装置が前記データパケットを受信した際に前記送信装置に送信するＡＣＫパケットに含まれる
請求項１乃至１０いずれか１項記載の送信装置。
【請求項１２】
請求項１乃至１１いずれか１項記載の送信装置と、
前記送信装置が送信するデータパケットを受信する受信装置であって、前記受信装置がさらに受信可能なデータ量である受信許容量を前記送信装置に対して送信する受信装置とを含む
通信システム。
【請求項１３】
複数のデータパケットを所定のスループットで送信することによりデータ送信を行うステップと、
前記複数のデータパケットを受信している受信装置から、前記受信装置がさらに受信可能なデータ量である受信許容量を受信するステップと、
前記受信許容量が第２の閾値以下である場合に、前記スループットを低下させるステップとを含む
送信方法。
【請求項１４】
前記受信許容量が前記第２の閾値を超える第３の閾値以上である場合に、前記スループットを上昇させるステップをさらに含む
請求項１３記載の送信方法。
【請求項１５】
前記受信許容量が所定の頻度を超えて前記第２の閾値より小さい第１の閾値以下となった場合に、前記第２の閾値を上昇させるステップをさらに含む
請求項１３記載の送信方法。
【請求項１６】
前記第２の閾値と、前記第２の閾値を用いて前記データパケットを一定数連続的に送信した際の所要時間との組を複数記憶しており、前記所要時間に基づいて適切な前記第２の閾値を選択するステップをさらに含む
請求項１３記載の送信方法。
【請求項１７】
前記受信許容量が所定の頻度を超えて前記第２の閾値より小さい第１の閾値以下となった場合に、前記第２の閾値及び前記第３の閾値を上昇させるステップをさらに含む
請求項１４記載の送信方法。
【請求項１８】
前記第２の閾値、前記第３の閾値、並びに前記第２の閾値及び前記第３の閾値を用いて前記データパケットを一定数連続的に送信した際の所要時間との組を複数記憶しており、前記所要時間に基づいて適切な前記第２の閾値及び前記第３の閾値を選択するステップをさらに含む
請求項１４記載の送信方法。
【請求項１９】
前記スループットを低下又は上昇させるステップにおいては、単位時間あたりに送信される前記データパケットの数である送信頻度を低下又は上昇させる
請求項１３乃至１８いずれか１項記載の送信方法。
【請求項２０】
前記スループットを低下又は上昇させるステップにおいては、前記データパケット間に挿入される時間である送信間隔を延長又は短縮することにより、前記送信頻度を低下又は上昇させる
請求項１９記載の送信方法。
【請求項２１】
コンピュータに、請求項１３乃至２０いずれか１項記載の方法を実行させる
送信プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、送信装置、通信システム、送信方法及び送信プログラムに関し、特に最適な転送性能による情報転送技術に関する。
【背景技術】
【０００２】
従来より、情報転送能力の異なる装置間における情報転送方法が種々提案されている。
【０００３】
例えば、ＵＳＢ３．０（Ｓｕｐｅｒ  Ｓｐｅｅｄ）規格では、データパケットを連続的に送受信するバースト転送が定義されている。このバースト転送のうちＯＵＴ転送、すなわちホストからデバイスへのバースト転送においては、通常、ホストはデータパケットの間隔を可能な限り最短にして、すなわち最速で、複数のデータパケットを連続的に送信し、スループットを最大化する。
【０００４】
このとき、データパケットを受信する側のデバイスにおいては、受信したデータパケットをいったん動作速度の速い受信バッファに格納し、受信バッファから順次データパケットを取り出してから、所定の処理を実施する。ここで、デバイスにおけるデータパケットの受信速度（スループット）が、ホストのデータパケットの送信速度（スループット）より低い場合、デバイスの受信バッファの空き容量が徐々に減少する。最終的に、デバイスの受信バッファがフルになると、それ以上のデータパケットの受信は不能になる。このとき、ホストがデータパケットの送信を続ければパケットのロス等が発生し、様々な問題が発生しかねない。そこで、ホストとしては、かかる問題を回避するため、一時的にデータ送信を中断する等の措置を講じる必要がある。
【０００５】
例えばＵＳＢ３．０規格では、デバイスの受信バッファがフルになった時点で、デバイスはホストに、バッファフル状態を通知するためのパケットを送信する。これを契機に、ホストはフローコントロール状態に遷移し、一時的にデータ送信は中断される。フローコントロールとは、ホストがデータパケットの送信を中断し、デバイスから送信再開の指示を示すＥＲＤＹパケットを受信するまで、さらなるデータパケットの送信を停止することである。受信バッファに空きが出た時点で、デバイスはホストに上述のＥＲＤＹとよばれるパケットを送信し、これを契機に、ホストはフローコントロール状態を脱する、すなわちデータパケットの送信を再開することとなっている。
【０００６】
また、特許文献１には、受信部内の受信バッファの空き容量が第１の容量以下になった場合に、送信部によるデータブロックの送信を停止させ、前記空き容量が第２の容量以上になった場合に、前記送信を再開させる構成が開示されている。
【０００７】
また、特許文献２には、送信モジュールが次に転送しようとするデータのデータ長が、受信モジュール内の受信データバッファの残容量以下である場合、受信モジュールは送信モジュールに対し受信データバッファビジー信号を送出し、送信モジュールはデー手転送を中断する構成が記載されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００５−１８４３５４号公報
【特許文献２】特開平１０−０４９３４４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、上述のＵＳＢ３．０規格や特許文献記載の技術のように、デバイスのバッファの容量不足を検出したときに、ホストがデータ送信を一時停止する機能を有する場合においては、限界転送性能の高いホストを用いてデータ送信を行うよりも、限界転送性能の低いホストを用いてデータ送信を行うほうが、全体として高い通信速度、すなわち転送性能が得られるケースがある。
【００１０】
出願人は、この原因を調査した結果、データ送信の一時停止及び再開の際に、ホストが実行する各種処理のための処理時間（オーバヘッド）が発生し、これが転送性能に影響していることが判明した。
【００１１】
例えば、図７に示すように、ＵＳＢ３．０のＳｕｐｅｒ  Ｓｐｅｅｄ転送では、デバイスがデータパケットを正常受信した際ホストに送信するＡＣＫパケット内に、ＮｕｍＰと呼ばれるフィールドが定義されている。これは、デバイスの受信バッファにおいて、残り何パケット分の空きがあるかを示す値である。ホストは、このＮｕｍＰが１以上である場合はその数を上限とするパケットを連続送信することが可能であるが、ＮｕｍＰが０となった場合はフローコントロール状態へ遷移する。フローコントロール状態に遷移したホストは、データパケットのバースト転送を一時停止する。その後、フローコントロール状態を解除するためのＥＲＤＹパケットをデバイスから受信したときに、データパケットの送信を再開する。このとき、ホストコントローラ内部では転送情報の取得や転送データの取得など、転送再開に必要な一連の処理を行うが、この際に一定のオーバヘッドが発生するのである。このオーバヘッドが頻繁に発生するならば、全体としての通信速度に悪影響を及ぼす。
【００１２】
フローコントロール状態への遷移は、ホストコントローラの限界転送性能が高く、デバイス側の受信性能とのギャップが大きい場合ほど、より頻繁に発生する。そのため、結果的に、限界転送性能の低いホストコントローラのほうが、ホスト側のスループットとデバイス側のスループットが適度に拮抗し、フローコントロール状態へ遷移する頻度が少なくなるため、転送の一時停止ないし再開によるオーバヘッドが少ない分、全体としては高い転送性能が得られる場合があるのである。
【００１３】
そこで、最適な転送速度を得るため、ホストがフローコントロール状態に遷移する頻度を低下させ、転送の一時停止ないし再開によるオーバヘッドを極小化することが求められる。
【課題を解決するための手段】
【００１４】
本発明に係る送信装置は、受信装置に対してデータ送信を行い、前記受信装置がさらに受信可能なデータ量である受信許容量が第１の閾値以下である場合に、前記受信装置に対する前記データ送信を停止する送信装置であって、複数のデータパケットを所定のスループットで送信することにより前記データ送信を行う送信部と、前記複数のデータパケットを受信している前記受信装置から前記受信許容量を受信する受信部と、前記受信許容量が前記第１の閾値を超える第２の閾値以下である場合に、前記スループットを低下させるスループット調整部とを含むものである。
【００１５】
本発明においては、受信部が受信した受信許容量に基づいて、スループット調整部が、スループットを低下させるよう送信部を制御することにより、フローコントロール状態に遷移する頻度を下げ、又はフローコントロール状態への遷移を回避することができる。
【００１６】
本発明に係る通信システムは、上述の送信装置と、前記送信装置が送信するデータパケットを受信する受信装置であって、前記受信装置がさらに受信可能なデータ量である受信許容量を前記送信装置に対して送信する受信装置とを含むものである。
【００１７】
本発明においては、受信装置が送信した受信許容量に基づいて、送信装置のスループット調整部が、スループットを低下させるよう送信部を制御することにより、フローコントロール状態に遷移する頻度を下げ、又はフローコントロール状態への遷移を回避することができる。
【００１８】
本発明にかかる送信方法は、複数のデータパケットを所定のスループットで送信することによりデータ送信を行うステップと、前記複数のデータパケットを受信している受信装置から、前記受信装置がさらに受信可能なデータ量である受信許容量を受信するステップと、前記受信許容量が第２の閾値以下である場合に、前記スループットを低下させるステップとを含むものである。
【００１９】
本発明においては、受信部が受信した受信許容量に基づいて、スループット調整部が、スループットを低下させるよう送信部を制御することにより、フローコントロール状態に遷移する頻度を下げ、又はフローコントロール状態への遷移を回避する方法を提供することができる。
【００２０】
本発明に係る送信プログラムは、コンピュータに、上述の送信方法を実行させるものである。
【００２１】
本発明においては、受信部が受信した受信許容量に基づいて、スループット調整部が、スループットを低下させるよう送信部を制御することにより、フローコントロール状態に遷移する頻度を下げ、又はフローコントロール状態への遷移を回避するプログラムを提供することができる。
【発明の効果】
【００２２】
本発明により、特に最適な転送性能の下での情報転送ができる送信装置、通信システム、送信方法及び送信プログラムを提供することができる。
【図面の簡単な説明】
【００２３】
【図１】実施の形態１の構成を示す図である。
【図２】実施の形態１の処理を示すシーケンス図である。
【図３】実施の形態１の処理を示すフローチャートである。
【図４】実施の形態２の構成を示す図である。
【図５】実施の形態２の処理を示すシーケンス図である。
【図６】実施の形態２の処理を示すフローチャートである。
【図７】従来の処理を示すシーケンス図である。
【発明を実施するための形態】
【００２４】
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。
【００２５】
＜実施の形態１＞
図１を用いて、本発明の実施の形態１にかかる送信装置１００の構成について説明する。
【００２６】
送信装置１００は、図示しない受信装置に対してデータパケットを送信する装置であり、典型的にはＵＳＢホストコントローラである。また、典型的な受信装置はＵＳＢ３．０デバイスである。以下、本実施の形態においては、送信装置１００として主にＵＳＢホストコントローラを、受信装置として主にＵＳＢデバイスを例として説明を行う。
【００２７】
送信装置１００は、受信装置に対してデータパケットを送信する送信部１０２、受信装置からパケットを受信する受信部１０１、及び送信部１０２を制御するスループット調整部１０３を有する。
【００２８】
送信部１０２は、受信装置に対してデータパケットを送信する機能を備える。例えばＵＳＢホストコントローラの場合であれば、送信部１０２は、ＵＳＢホスト処理を実行するＵＳＢホスト処理部、ＵＳＢホスト処理部の指示に従ってデータパケットの送信を実行する送信処理部を含む。また、送信処理部は、送信すべきデータパケットを一時的に格納する送信バッファを備えることが望ましい。
【００２９】
受信部１０１は、受信装置からデータパケットを受信する機能を備える。例えばＵＳＢホストコントローラの場合であれば、受信部１０１は、データパケットを受信処理を実行する受信処理部、受信処理部が受信したデータパケットの内容を解析し、その情報を送信部１０２のＵＳＢホスト処理部及び後述のスループット調整部１０３に転送する解析処理部を含む。本実施の形態では、解析処理部は、受信装置から受信したＡＣＫパケットの情報、例えばＮｕｍＰ情報をスループット調整部１０３に転送する。
【００３０】
スループット調整部１０３は、送信部１０２に対して、データパケットの送信処理を制御するための指示を出力する機能を備える。本実施の形態では、スループット調整部１０３は、受信部１０１から、より具体的には解析処理部から、受信装置から受信したＡＣＫパケットに含まれるＮｕｍＰフィールドの情報を受信する。スループット調整部１０３は、このＮｕｍＰ情報を基に、受信装置が現時点でさらに受信可能なデータ量を確認し、必要に応じて送信部１０２を制御する。具体的には、本実施の形態のスループット調整部１０３は、データパケットの送信速度すなわちスループットを低下させるよう送信部１０２を制御する。
【００３１】
ここで、受信装置について説明する。受信装置は、送信装置１００からデータパケットを受信して所定の処理を行う機能を備える。典型的な受信装置は、受信装置と送信装置１００との通信速度のギャップを緩和するため、受信バッファを備えている。データパケットは、いったんこの受信バッファに格納されたのち、必要に応じて取り出され、所定の処理に供される。また、受信装置は、受信装置が現時点でさらに受信可能なデータ量を送信装置１００に通知する機能を備える。例えばＵＳＢ３．０デバイスの場合であれば、受信装置は送信装置１００からデータパケットを受信すると、これに対応するＡＣＫパケットを送信装置１００に送信するところ、このＡＣＫパケットのＮｕｍＰと呼ばれるフィールドに、受信バッファの空き容量、より具体的には現時点で受信バッファにさらに格納可能なデータパケットの数を設定する。なお、このＡＣＫパケットは、データパケットを受信する度に送信しても良く、あるいは複数のデータパケットを連続受信した後に複数のＡＣＫパケットを送信することとしても良い。いずれの場合であっても、１つのデータパケットに対して、１つの対応するＡＣＫパケットが送信される。
【００３２】
つづいて、図２のシーケンス図及び図３のフローチャートを用いて、本発明の実施の形態１にかかる送信装置１００の処理について説明する。
【００３３】
Ｓ１０１（図３）：まず、送信装置１００の送信部１０２は、受信装置に対して、バースト転送によるデータパケット送信を開始する。通常、バースト転送においては、送信部１０２は、データパケットの送信間隔を可能な限り短くし、複数のデータパケットを連続的に高速で送信する。
【００３４】
受信装置は、データパケットを受信すると、送信装置１００に対して、受信装置が現時点でさらに受信可能なデータ量を送信する。具体的には、ＮｕｍＰフィールドに受信バッファの空き容量を設定したＡＣＫパケットを送信装置１００に対して送信する。
【００３５】
ここで、送信装置１００に比較して受信装置のスループットが低い場合、受信装置の受信バッファの空き容量は徐々に減少する。これに伴い、受信装置が送信装置１００に通知するＮｕｍＰの値も、徐々に低下する（図２参照）。
【００３６】
Ｓ１０２（図３）：送信装置１００の受信部１０１は、受信装置からＡＣＫパケットを受信する。受信部１０１は、このＡＣＫパケットの内容を解析し、ＮｕｍＰフィールドの値を参照する。
【００３７】
Ｓ１０３（図３）：ここで、ＮｕｍＰ＝０、すなわち受信バッファの空き容量が０であった場合、送信装置１００はＵＳＢ３．０の仕様に従いフローコントロール状態に遷移することになる。すなわち、送信装置１００は、データパケットの送信を中断し、受信装置から送信再開の指示を示すＥＲＤＹパケットを受信するまで、さらなるデータパケットの送信を停止する。
【００３８】
なお、ここでは、ＵＳＢ３．０規格にならい、フローコントロール状態に遷移するＮｕｍＰの閾値を０として説明したが、この閾値は０以外の任意の値であってもよい。この場合、送信装置１００は、ＮｕｍＰが当該閾値以下になったとき、フローコントロール状態に遷移する。
【００３９】
Ｓ１０４（図３）：一方、ＮｕｍＰが予め定められた閾値Ｘ以下であった場合、送信装置１００のスループット調整部１０３は、送信部１０２を制御して、データパケットのスループットを低下させる。ここで、閾値Ｘは、受信バッファの容量がこれ以下である場合は、残り容量が少なく、バースト転送を続行するならばフローコントロール状態に遷移する蓋然性が高いことを意味する。そこで、閾値Ｘは、フローコントロール状態への遷移の契機となるＮｕｍＰの閾値（本実施の形態では、当該閾値が０である場合を例として説明するが、当該閾値は０以外の任意の値であってもよい）を超える値に設定される。送信装置１００は、ＮｕｍＰがＸ以下であるときにはスループットを低下させる処理を行うため、通常のバースト転送を行う場合に比較して、ＮｕｍＰが０に達してフローコントロール状態に遷移する頻度が低下する。
【００４０】
ここで、送信装置１００のスループット調整部１０３がスループットを低下させる処理について説明する。この処理は、具体的には、単位時間あたりに送信されるデータパケットの数を低下させることにより実現できる。より具体的には、例えばデータパケットを送信後、次のデータパケットを送信するまでの間に所定の待ち時間を挿入する、すなわち送信間隔を設定することにより実現可能である。通常のバースト転送時には、この送信間隔は０である。一方、ＮｕｍＰが閾値Ｘ以下である場合には、スループット調整部１０３は送信間隔として時間Ｎを設定する。このとき、データパケットの送信は、前のデータパケットが送信されてからＮ時間後に開始される。また、スループット調整部１０３はこの送信間隔Ｎを記憶しておき、ＮｕｍＰが再度閾値Ｘ以下であった場合には、送信間隔をＮより長い時間、例えば２Ｎに更新することができる。これにより、ＮｕｍＰが閾値Ｘ以下である間は送信間隔が順次延長されてゆくため、フローコントロール状態に遷移する頻度をより低下させるか、フローコントロール状態に遷移することを回避することができるようになる。
【００４１】
なお、もし受信部１０１が受信したＮｕｍＰの値が、前回受信したＮｕｍＰの値と一致するものであった場合には、スループット調整部１０３は、送信間隔Ｎを変更しないことが望ましい。ＮｕｍＰが変動しない場合、送信装置１００と受信装置とのスループットが均衡しており、送信間隔Ｎが最適値であると考えられるからである。
【００４２】
他方、ＮｕｍＰが閾値Ｘ以下となっていない場合は、スループット調整部１０３はスループット制御をおこなわず、通常のバースト転送を行うことができる。
【００４３】
本実施の形態においては、受信部１０１が受信したＮｕｍＰの値に基づいて、スループット調整部１０３が、スループットを低下させるよう送信部１０２を制御することにより、フローコントロール状態に遷移する頻度を下げ、又はフローコントロール状態への遷移を回避することができる。
【００４４】
＜実施の形態２＞
つぎに、本発明の実施の形態２にかかる送信装置１００の構成について説明する。
【００４５】
実施の形態２にかかる送信装置１００は、実施の形態１と同様の構成を備える。ただし、実施の形態２におけるスループット調整部１０３は以下の特徴を有する。
【００４６】
スループット調整部１０３は、データパケットの送信速度すなわちスループットを低下させる制御に加え、ＮｕｍＰの値に応じて、スループットを上昇させる制御を行うことができる。これにより、送信装置１００は、スループットを低下させすぎることなく、最適なスループットを維持することが可能になる。
【００４７】
図５のシーケンス図及び図６のフローチャートを用いて、本発明の実施の形態２にかかる送信装置１００の処理について説明する。
【００４８】
Ｓ１０１〜Ｓ１０４（図６）：送信装置１００は、実施の形態１と同様に動作する。すなわち、送信部１０２は、通常、バースト転送によるデータパケット送信を行う。受信部１０１は、受信したＡＣＫパケットを解析し、ＮｕｍＰフィールドの値をスループット調整部１０３に転送する。スループット調整部１０３は、ＮｕｍＰが閾値Ｘ以下であった場合、送信部１０２を制御してスループットを低下させる。これに伴い、受信装置が送信装置１００に通知するＮｕｍＰの値も、徐々に上昇する（図５参照）。
【００４９】
Ｓ１０５（図６）：ＮｕｍＰが閾値Ｘ以下でない場合、スループット調整部１０３は以下の処理を行う。ＮｕｍＰが予め定められた閾値Ｙ以上であるなら、スループット調整部１０３は、送信部１０２を制御して、データパケットのスループットを上昇させる。ここで、閾値Ｙは、受信バッファの容量がこれ以上となった場合は、受信バッファの残り容量が十分に増加していることを意味する。そこで、閾値Ｙは、閾値Ｘを超える値に設定される。これにより、スループット調整部１０３が過度に頻繁に作動することを防ぎ、安定したデータ送信を実現することができる。本実施の形態の送信装置１００は、ＮｕｍＰがＹ以上であるときにはスループットを上昇させる処理を行うため、受信バッファの空き容量の状態に応じてスループットを調整し、最適なスループットを維持することが可能である。
【００５０】
ここで、スループット調整部１０３がスループットを上昇させる処理について説明する。この処理は、具体的には、実施の形態１における処理とは反対に、単位時間あたりに送信されるデータパケットの数を上昇させることにより実現できる。より具体的には、例えばデータパケットを送信後、次のデータパケットを送信するまでの間に挿入される所定の待ち時間、すなわち送信間隔を短縮させることにより実現可能である。ＮｕｍＰが閾値Ｙ以上である場合には、スループット調整部１０３は送信間隔２Ｎを、２Ｎより短い時間、例えばＮに設定する。また、スループット調整部１０３はこの送信間隔を記憶しておき、ＮｕｍＰが再度閾値Ｘ以下であった場合には、送信間隔をさらに短い時間、例えば０に更新することができる。なお、送信間隔が既に０である場合には、スループット調整部１０３は、送信間隔短縮の処理を行う必要はない。これにより、ＮｕｍＰが閾値Ｙ以上である間は送信間隔が順次短縮されてゆくため、受信バッファの状態に応じてスループットを漸次回復させ、適切なスループットでデータ送信を行うことができる。
【００５１】
本実施の形態においては、受信部１０１が受信したＮｕｍＰの値に基づいて、スループット調整部１０３が、スループットを上昇させるよう送信部１０２を制御することにより、状況に応じてスループットを回復させ、適切なスループットでデータ送信を行うことができる。
【００５２】
＜実施の形態３＞
つぎに、本発明の実施の形態３にかかる送信装置１００の構成について説明する。
【００５３】
実施の形態３にかかる送信装置１００は、実施の形態１又は２と同様の構成に加え、閾値Ｘ又はＹの少なくとも一方を変化させる閾値調整部１０４を備える。以下、本実施の形態では、主に実施の形態２の構成を備え、閾値Ｘ及びＹを調整する閾値調整部１０４を有する送信装置１００を例として説明を行う。
【００５４】
閾値調整部１０４は、スループット調整部１０３がスループットを調整する際に参照する閾値Ｘ及びＹを、状況に応じて適切な値に設定する機能を備える。ここで、適切な閾値の値は、例えば以下のような方法により決定することができる。
【００５５】
適切な閾値を決定する第１の方法は、送信装置１００がフローコントロール状態に遷移する頻度が一定以上である場合に、閾値調整部１０４が、閾値Ｘ及びＹを上昇させることである。頻繁にフローコントロール状態に遷移するのは、閾値Ｘが低すぎるためと考えられるからである。
【００５６】
具体的には、送信装置１００が現在の閾値のもとでデータ送信を実行し、フローコントロール状態に遷移する頻度が所定の頻度以上、例えば単位時間内に２回以上となった場合、閾値調整部１０４は、閾値Ｘ及びＹを現在の値より大きな値で更新する。例えば、現在の閾値Ｘが１であれば２に、閾値Ｙが３であれば４に上昇させることができる。ここで、所定の頻度、閾値Ｘ及びＹの初期値及び上昇幅等は適宜決定することができる。例えば、閾値Ｘの初期値を高く設定すれば、フローコントロール状態に遷移する頻度は低くなると期待できるが、仮に高すぎれば送信装置１００の転送性能を生かし切ることができなくなる。そこで、稼働環境等を考慮しつつ、これらのパラメータを適切に設定する必要がある。
【００５７】
かかる処理により、ＮｕｍＰが閾値Ｘ以下に達してからフローコントロール状態に遷移するまでの幅を自在に設定することができるので、フローコントロール状態に遷移する頻度を下げ、又はフローコントロール状態への遷移を回避することができる。
【００５８】
適切な閾値を決定する第２の方法は、閾値ＸとＹとの組合せを予め複数用意しておき、これらの組の中から最適な組を１つ選択して、閾値Ｘ及びＹを決定することである。すなわち、閾値ＸとＹとの組合せのうち、全体としての通信性能が最も良くなる組合せを試行錯誤により決定する。
【００５９】
具体的には、（Ｘ，Ｙ）の組合せを予め複数準備する。一例として、（Ｘ，Ｙ）＝（１，２）、（２，３）、及び（３，４）の３つの組を、図示しない記憶領域に予め格納しておく。以下、これらの組をそれぞれｓｅｔｔｉｎｇ１、ｓｅｔｔｉｎｇ２及びｓｅｔｔｉｎｇ３と呼ぶ。
【００６０】
つぎに、送信装置１００が、それぞれの組を用いて一定数のパケット送信を試行し、閾値調整部１０４が、それぞれに要した転送時間を計測、保存する。例えば、まずｓｅｔｔｉｎｇ１を用いてＭ個のパケットの転送を行い、転送時間Ｔ１を保存する。つぎにｓｅｔｔｉｎｇ２を用いてＭ個のパケットの転送を行い、転送時間Ｔ２を保存する。同様にｓｅｔｔｉｎｇ３を用いてＭ個のパケットの転送を行い、転送時間Ｔ３を保存する。
【００６１】
つづいて、閾値調整部１０４は、保存された前記転送時間を比較し、最も短い転送時間に対応する（Ｘ，Ｙ）の組を特定する。以後、閾値調整部１０４は、かかる（Ｘ，Ｙ）の組を用いてデータ転送を実行する。
【００６２】
なお、閾値調整部１０４は、以後のデータ転送においても同様に転送時間を計測、保管し、当該転送時間を、現在利用している（Ｘ，Ｙ）の組に対応する転送時間に随時反映することとしても良い。この場合、閾値調整部１０４は、保存されている前記転送時間を随時比較し、その時点において最も最も短い転送時間に対応する（Ｘ，Ｙ）の組を再度特定し、以後、かかる（Ｘ，Ｙ）の組を用いてデータ転送を実行することとしても良い。
【００６３】
また、上記説明においては、閾値調整部１０４は転送時間を計測、保存することとしたが、スループットを示す別の指標、例えば転送速度等を計測、保存しても良い。また、上記説明においては、閾値調整部１０４は（Ｘ，Ｙ）の組に対応する転送時間を計測、保存し、最適値を決定することとしたが、実施の形態１のように閾値Ｙを用いない場合には、閾値Ｘのみについて転送時間を計測、保存し、最適なＸを決定することとしても良い。
【００６４】
かかる処理により、最も転送時間が短くなる閾値Ｘ及びＹを用いてデータ転送を行うことが可能となる。
【００６５】
本実施の形態においては、閾値調整部１０４が適切な閾値Ｘ及びＹを設定することにより、適切なスループットでデータ送信を行うことができる。
【００６６】
＜その他の実施の形態＞
なお、本発明は上述した実施の形態のみに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
【００６７】
また、上述の実施の形態では、ハードウェアの構成として説明したが、これに限定されるものではなく、任意の処理を、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）にコンピュータプログラムを実行させることにより実現することも可能である。この場合、コンピュータプログラムは、様々なタイプの非一時的なコンピュータ可読媒体（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（ｔａｎｇｉｂｌｅ  ｓｔｏｒａｇｅ  ｍｅｄｉｕｍ）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  ＰＲＯＭ）、フラッシュＲＯＭ、ＲＡＭ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【符号の説明】
【００６８】
１００  送信装置
１０１  受信部
１０２  送信部
１０３  スループット調整部
１０４  閾値調整部
【図１】
2013081131.tif 000003
【図２】
2013081131.tif 000004
【図３】
2013081131.tif 000005
【図４】
2013081131.tif 000006
【図５】
2013081131.tif 000007
【図６】
2013081131.tif 000008
【図７】
2013081131.tif 000009