JP2008053888A - 通信装置、プログラム、情報記憶媒体および通信制御方法 - Google Patents
通信装置、プログラム、情報記憶媒体および通信制御方法 Download PDFInfo
- Publication number
- JP2008053888A JP2008053888A JP2006226174A JP2006226174A JP2008053888A JP 2008053888 A JP2008053888 A JP 2008053888A JP 2006226174 A JP2006226174 A JP 2006226174A JP 2006226174 A JP2006226174 A JP 2006226174A JP 2008053888 A JP2008053888 A JP 2008053888A
- Authority
- JP
- Japan
- Prior art keywords
- data
- communication device
- performance
- packet
- ack
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Communication Control (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
【課題】受信側装置の受信可能な性能に合わせた送信レートで送信することを可能とすることによって、スループットの向上を図った通信装置を提供することを目的とする。
【解決手段】本発明の通信装置は、データを送信する相手通信装置の性能を推定し、相手通信装置の性能に合わせた送信レートでデータを送信する通信装置であって、相手通信装置の確認応答パケットの到着時間、確認応答パケットに含まれる受信可能データ量より相手通信装置の性能を推定する性能推定部を備えることを特徴とする。
【選択図】図6
【解決手段】本発明の通信装置は、データを送信する相手通信装置の性能を推定し、相手通信装置の性能に合わせた送信レートでデータを送信する通信装置であって、相手通信装置の確認応答パケットの到着時間、確認応答パケットに含まれる受信可能データ量より相手通信装置の性能を推定する性能推定部を備えることを特徴とする。
【選択図】図6
Description
本発明は、ネットワークを介して、TCP/IPプロトコルを用いて通信を行なう通信装置に関する。
通信プロトコルとしてTCP/IPプロトコルが広く用いられている。TCP/IPプロトコルを用いた通信では、多くの場合、通信装置において階層的に処理が行なわれる。非特許文献1では、通信処理における階層モデル(OSI参照モデル)として、物理層、データリンク層、ネットワーク層、トランスポート層、セッション層、アプリケーション層の7階層が定義されている。TCP/IPがよく用いられているLAN(Local Area Network)などでは、物理層、および、データリンク層として、Ethernet(登録商標)が多く用いられている。データリンク層をMAC層と呼ぶこともある。TCP/IPでは、ネットワーク層としてIP、トランスポート層としてTCPを用いる。また、多くの場合、セッション層は、ソケットAPI呼ばれるAPIとして定義できる。
MAC層において用いられる電文形式をMACフレームと呼ぶ。また、IPにおいて用いられる電文形式をIPパケットと呼ぶ。さらに、TCPにおいて用いられる電文形式をTCPパケットと呼ぶ。送信時において、TCPパケットは一つのIPパケットに格納される。IPパケットは、必要に応じて一つ、あるいは複数のMACフレームに分割されて格納される。受信時において、一つ、あるいは複数のMACフレームからIPパケットが抽出され、IPパケットからTCPパケットが抽出される。なお、ここでは、各層において、他のプロトコル、例えば、トランスポート層においてUDPを使用する通信が混在した場合などは省略する。
TCPは、通信装置間において、TCPパケットが何らかの影響で正常に送達できなかった場合でも、再送機能により、確実なデータの転送を実現するプロトコルである。また、TCPは、通信装置間のネットワークにおいて、無駄なトラヒックの増大を抑制するためのウィンドウ制御と呼ばれるフロー制御機能を持つ。
<TCPの動作概要>
図1は、ネットワーク3を介して接続された2つの通信装置1、通信装置2の間において、一方の通信装置1から他方の通信装置2へデータを転送する例を示した図である。以降の説明では、通信装置1はデータを送信する装置であり、通信装置2は、通信装置1が送信したデータを受信する装置とする。
図1は、ネットワーク3を介して接続された2つの通信装置1、通信装置2の間において、一方の通信装置1から他方の通信装置2へデータを転送する例を示した図である。以降の説明では、通信装置1はデータを送信する装置であり、通信装置2は、通信装置1が送信したデータを受信する装置とする。
通信装置1から通信装置2へデータを転送する場合、データに転送のための情報を付加したパケットと呼ばれるものを使用する。この1つのパケットに格納できるデータには最大量(最大セグメントサイズ。以降、MSS)があり、MSSは、TCP通信の最初の通信路(コネクション)確立時に決定され、より具体的には、通信装置1と通信装置2がお互いに自身のMSSをTCPパケットに乗せて通知し、通信装置1が小さい方のMSSに決定する。TCPコネクション確立後、通信装置1から通信装置2へ実際にデータを転送できる状態となるが、転送するデータがMSSを超える場合などにおいては、複数のパケットに分割して格納し、通信装置1から通信装置2に送られる。このパケットには、格納したデータを識別するための情報であるシーケンスナンバー(以下、Seq)、TCPのデータ長(以下、LEN)、および、次に受信すべきデータのシーケンス番号を示す確認応答番号(以下、Num)などが含まれる。
通信装置2はパケットを受信した場合、所定のタイミングにより、パケットを受信したことを示すACK(ACKnowledgement:確認応答パケット。以下、単にACK)を通信装置2が全て受け取ったか否かを通信装置1が確認することを可能としている。通信装置1が送信したパケットが、何らかの影響で通信装置2が正常に受信できず(以下、パケットが消失したと表現する)、その結果、通信装置1が送信したパケットに対する通信装置2からのACKを所定の条件で受信しなかった場合、通信装置1は、該当するパケットを再送する。これにより、確実に全てのデータを転送することを可能としている。ACKは、受信したパケットを識別できる情報を含んでいる。この情報は、受信したパケットのSeqを元に算出される。通信装置2は、主として送信側装置からパケットを受け取った時に、それまで順序どおり受信したパケットの次のパケット、すなわち、受信を期待するパケットを識別できる情報を含んだACKを送信側装置へ送信する。あるパケットが消失した(あるいはなんらかの原因で通信装置2への到達が遅れた)後、この消失したパケットが再送などにより通信装置2に受信される前に、通信装置2が新たな別のパケットを受信した場合、通信装置2は、先に送信したAckと同じパケットを識別できる情報を含んだAckを送信することとなる。このAckをDupAck(Duplicate Acknoledgement:即時確認応答。以下、単にDupAck)と呼ぶ。通信装置1は、通信装置2から送られるDupAckを連続で3つ受け取ることにより、DupAckに含まれる情報に該当するパケットを再送する。
また、ACKを全てのパケットを受信する度に送信するのは、効率的でないため、遅延確認応答(Delayed ACK)を呼ばれる方法が用いられることが一般的である(例えば、非特許文献1に記載)。多くの場合、遅延確認応答は、2つのTCPパケットを受信したらACKを送信し、あるいは、1つのTCPパケットを受信してから所定の時間経過しても次のTCPパケットを受信しなかった場合に送信する。
さらにTCPのウィンドウ制御について説明を行なう。TCPでは、ウィンドウ(TCP Window)という概念を取り入れることにより、通信装置1から送信されるTCPパケットのデータ量を制御し、通信装置2によって受信できないために無駄となるパケットがネットワークに流れ、ネットワークの通信許容量が低下することを防ぐことを可能としている。具体的には、通信装置2(データを受信する装置)は、ACKの1つのパラメータとして、ACKを送信する時点にて、受信可能なデータ量を受信可能なTCP Windowサイズ(以下Win)として通信装置1(データを送信する装置)に通知する。このACKを受けた通信装置1は、新たなACKを受けるまでに追加して送信可能なデータ量を、受け取ったACKに含まれるWinが上限であると認識し、それ以上のデータ送信を新たなACK受信まで行なわない。なお、非特許文献2では、「ACKは、正しく受け取ったセグメントとさらに受入れ可能なシーケンス番号の範囲を示す。」と記載されている。
TCPのウィンドウ制御の概要について、図2の通信シーケンスを用いて説明する。
ここでは、説明を簡略化するために1パケット内に格納されるデータ長(以下、LEN)を1KBにし、SeqやWinの単位や値も、これに合わせている。ただし、データを受信する通信装置2からのACKに含まれるSeqは、常に1であるため省略する。これらの実際の値は、通信装置や通信装置間の伝送路の特性に依存し、TCPの接続時において決定されるが、この説明は省略する。また、図2は通信装置1と通信装置2とのTCP接続時のコネクション確立後、通信装置1および通信装置2の通信処理の途中であり、通信装置2が通知するACKのWin(Win=4)が少ないのは説明をわかりやすくするための例としての設定である。通常のPC(CPU 2.5GHz搭載)などは、Win=64KBなどに設定されていることが多い。図2の例において、通信装置1のWin状態を図の左側に示す(Windowの状態:W11、W12、W13)。Windowの状態W11、W12、W13内の数値は、Seqを示しており、通信装置2に送達確認を行なっていないため、通信装置1で該当するSeqの送信データの領域を、未到達であった場合の再送に備えて、通信装置1のメモリ内に確保していることを示している。例えば、W12は、通信装置1がP22のACKを受信した場合のWindow状態であり、P22のACKに含まれるパラメータ(Num=3、Win=4)より、Num=3よりSeqが2までは送達確認ができたため、Seqが2までの送信データ用のデータを保持する必要がなくなったため領域を開放し、Seqが3から始まるデータを、Win=4より4KB分Seqが3から6までの送信データ用に領域を確保していることを示している。
(1)Winの通知
図2の例において、通信装置2は、P21に示すACKより、次に受信すべきデータのシーケンス番号を示す確認応答番号(Num)と、Winを通信装置1に通知する。この例ではNumを1、Winを4としている。
図2の例において、通信装置2は、P21に示すACKより、次に受信すべきデータのシーケンス番号を示す確認応答番号(Num)と、Winを通信装置1に通知する。この例ではNumを1、Winを4としている。
(2)Winの設定とデータ送信
P21を受信した通信装置1は、P21によって通知されたNumとWinにより、送信データの領域をウィンドウとして設定する(W11)。具体的には、Numで示されるデータからWinで示される量の分だけ進んだ箇所までを、ウィンドウとして設定する。図2の例においては、Seqが1から4までに設定することとなる。通信装置1は、ウィンドウの範囲でデータを順に送信する。P21を受信した段階においては、通信装置1は、他のACKを受け取るまでに、Seqが1から4までのデータを送信することができる。従って、Seqが1、2、3、4のパケットを送信する(それぞれ、P11、P12、P13、P14)。
P21を受信した通信装置1は、P21によって通知されたNumとWinにより、送信データの領域をウィンドウとして設定する(W11)。具体的には、Numで示されるデータからWinで示される量の分だけ進んだ箇所までを、ウィンドウとして設定する。図2の例においては、Seqが1から4までに設定することとなる。通信装置1は、ウィンドウの範囲でデータを順に送信する。P21を受信した段階においては、通信装置1は、他のACKを受け取るまでに、Seqが1から4までのデータを送信することができる。従って、Seqが1、2、3、4のパケットを送信する(それぞれ、P11、P12、P13、P14)。
(3)データ受信とWinの更新、通知
図2の例において、通信装置2は、P11、P12を受信した時点で、これらのパケットに含まれる受信したデータ2KBをプロトコル処理が終了してアプリケーション層であるアプリケーションに渡す(Q21)場合を想定する。この例において通信装置2は、Q21の処理完了時点で、さらに受信可能なデータ領域を2KB確保することができる。この時点において、通信装置2が送信するACKに設定されるNumは3、Winは4となる(P22)。また、通信装置2において、P13、P14の受信したパケットも同様に、プロトコル処理を実施し、アプリケーションにデータを渡し(Q22)、Numは5、受信可能なデータ量であるWinは4のACKを送信側装置に送信する(P23)。
図2の例において、通信装置2は、P11、P12を受信した時点で、これらのパケットに含まれる受信したデータ2KBをプロトコル処理が終了してアプリケーション層であるアプリケーションに渡す(Q21)場合を想定する。この例において通信装置2は、Q21の処理完了時点で、さらに受信可能なデータ領域を2KB確保することができる。この時点において、通信装置2が送信するACKに設定されるNumは3、Winは4となる(P22)。また、通信装置2において、P13、P14の受信したパケットも同様に、プロトコル処理を実施し、アプリケーションにデータを渡し(Q22)、Numは5、受信可能なデータ量であるWinは4のACKを送信側装置に送信する(P23)。
なお、Q21において、プロトコル処理が終了しても直ちにアプリケーションにデータを渡さない(アプリケーションへの受信動作が処理されない)場合は、受信したデータ領域を保持しつづけるため、次のデータを受信するデータ領域を確保することができず、Winは4よりも少ない値を通知する場合もある。
(4)Winの更新
P22を受信した通信装置1は、受信したNumが3とWinが4により、自身のウィンドウをSeqが3から6までに更新する(W12)。この後、Seqが4までは送信済みであるため、Seq5から6まで順にデータを送信することが可能になる。また同様に、P23のACK受信で、自身のウィンドウサイズをSeqが5から8までに設定し(W13)、Seqが5から6までの送信が完了していれば、Seqが7から8までのデータを順次送信する。
P22を受信した通信装置1は、受信したNumが3とWinが4により、自身のウィンドウをSeqが3から6までに更新する(W12)。この後、Seqが4までは送信済みであるため、Seq5から6まで順にデータを送信することが可能になる。また同様に、P23のACK受信で、自身のウィンドウサイズをSeqが5から8までに設定し(W13)、Seqが5から6までの送信が完了していれば、Seqが7から8までのデータを順次送信する。
以上のように制御することで、TCPパケットのデータ量の制御を実現するウィンドウ制御を可能としている。
<受信側装置が低速CPUの場合のWinの制限>
通信装置2が低リソースの場合、パケットを受信するのに十分なメモリが搭載できない場合や、通信装置2に搭載できるメモリが大きい場合でも連続受信(バースト受信)するパケットを随時処理できるだけのCPUの能力がないために確保できるメモリ量を制限する必要があったりすることなどにより、Winの値は比較的小さく設定されることが多い。
通信装置2が低リソースの場合、パケットを受信するのに十分なメモリが搭載できない場合や、通信装置2に搭載できるメモリが大きい場合でも連続受信(バースト受信)するパケットを随時処理できるだけのCPUの能力がないために確保できるメモリ量を制限する必要があったりすることなどにより、Winの値は比較的小さく設定されることが多い。
図19は、通信装置2(受信側)の構成の一例を示すブロック図である。この図16に示すように、通信装置2は、CPU101、通信部100および記憶部102を備え、システムバス103に通信部100、CPU101および記憶部102が接続されている。
通信部100は、ネットワーク3から受信したパケット10を一時的に保持するFIFO(First−In First−Out)メモリ151を有する。通信装置2は、ネットワーク3から例えばEthernet(登録商標)などの有線ケーブル5を通して受信したパケット10を一時的に通信部100のFIFOメモリ151に蓄積する。蓄積されたパケット10は、CPU101によって、通信部100のFIFOメモリ151から記憶部102にシステムバス103を通して移動される。リソースの乏しい通信装置2において逐次処理できずにパケット消失するという現象は、移動処理よりも蓄積処理の方が速く行なわれるために発生する。即ち、通信装置2のCPU101が低速である場合、CPU101がデータを通信部100のFIFOメモリ151から記憶部102に移動する処理よりも、ネットワーク3から受信したパケット10が通信部100のFIFOメモリ151に蓄積される処理のほうが速い。その結果、通信部100のFIFOメモリ151からデータが溢れてしまうために、パケット消失が発生する(以後、この現象をMACの受信オーバーランともいう)。
なお、上記通信部100のFIFOメモリ151から記憶部102へのデータの移動において、DMA(Direct Memory Access)コントローラを通信装置2に備え、CPUではなく、DMAコントローラによりデータが移動される場合もある。この場合においても、バスおよびDMAコントローラの処理能力が低ければ、同様にFIFOメモリ960におけるMACの受信オーバーランは発生しうる。
そのため、パケット消失によって再送が発生しないように、通信装置2におけるTCPのACKのWinを最大でもFIFOメモリの容量と同等もしくはより小さい値とする方法がある。
また、通信装置2が通信装置1にパケットを送信して通信装置1から通信装置2にパケットの応答が返ってくる時間(RTT:ラウンドトリップタイム)が長い場合、低リソースの通信装置では、Winの値を小さく設定する必要があるため、RTT内に送信できるデータ量がWin(4KB程度)の値となってしまう。それらの要因により低リソースの通信装置にTCPでのデータ送信に時間がかかってしまい、スループットが低下してしまうという問題がある。
これら上記問題を解決するために、通信装置(送信側)において、低リソース通信装置(受信側)の受信能力を推定し、通信装置(受信側)にあわせたレートで送信を行なう必要がある。
<先行技術(先行文献)の説明>
通信装置(送信側)において、通信装置(受信側)の受信能力を推定する方法として、特許文献1「通信システム、通信装置および通信方法」に開示されている方法が挙げられる。特許文献1では通信装置(送信側)は、送信したデータと送信データに対するACKの到着時刻からスループットを推定して、推定したスループットでレート制御を随時行なう。図4は、特許文献1の通信装置1(送信側)と通信装置2(受信側)のシーケンスを示す図である。通信装置1は、送信したデータに対する通信装置2からのACK(P22)の到着時間(Tr1)と、P22の後に受信するACK(P23)の到着時間(Tr2)のACKの到着時間の差(Tr2−Tr1)と返答のあったACK(P22)の受信確認データ量から求められる送信データ量(図4の例では、P22のNum=3であるためSeq=1、2の受信確認でデータ2個分)を基に、以下のような推定式で推定スループットを算出する。
通信装置(送信側)において、通信装置(受信側)の受信能力を推定する方法として、特許文献1「通信システム、通信装置および通信方法」に開示されている方法が挙げられる。特許文献1では通信装置(送信側)は、送信したデータと送信データに対するACKの到着時刻からスループットを推定して、推定したスループットでレート制御を随時行なう。図4は、特許文献1の通信装置1(送信側)と通信装置2(受信側)のシーケンスを示す図である。通信装置1は、送信したデータに対する通信装置2からのACK(P22)の到着時間(Tr1)と、P22の後に受信するACK(P23)の到着時間(Tr2)のACKの到着時間の差(Tr2−Tr1)と返答のあったACK(P22)の受信確認データ量から求められる送信データ量(図4の例では、P22のNum=3であるためSeq=1、2の受信確認でデータ2個分)を基に、以下のような推定式で推定スループットを算出する。
推定スループット = データ2個分/(Tr2−Tr1)
また、随時RTTを計測し、RTTの値を通信装置1で保持しておき、送信ウィンドウサイズを最小RTT×推定スループットとする。通信中にネットワークの負荷が増大してRTTが延びた場合でも、最小RTTで計算したウィンドウサイズで送信するため、スループットの低下を抑制することができる。
「マスタリングTCP/IP 入門偏 第3版」、竹下隆史、村山公保、荒井透、苅田幸雄[平成14年2月25日] 標準仕様書「RFC793」、IETF、[平成17年5月18日検索]、インターネット<URL:http://www.ietf.org/rfc/rfc793.txt> 特開平11−225166号公報
また、随時RTTを計測し、RTTの値を通信装置1で保持しておき、送信ウィンドウサイズを最小RTT×推定スループットとする。通信中にネットワークの負荷が増大してRTTが延びた場合でも、最小RTTで計算したウィンドウサイズで送信するため、スループットの低下を抑制することができる。
「マスタリングTCP/IP 入門偏 第3版」、竹下隆史、村山公保、荒井透、苅田幸雄[平成14年2月25日] 標準仕様書「RFC793」、IETF、[平成17年5月18日検索]、インターネット<URL:http://www.ietf.org/rfc/rfc793.txt>
特許文献1の構成では、受信確認データ量(Num)を基に推定スループットを算出しているが、通信装置2(受信側)が高速なCPUを保持していたために受信処理において、受信したデータを即座に処理し、受信可能なデータ容量(Win)の減少することは考慮する必要はなかった。しかしながら、通信装置2が低リソースである場合には、通信装置2はデータの受信確認を優先して行ない、次のデータであるNumを通知することはできるが、受信したデータをすぐにアプリケーションに渡す処理まで完了までに至っていないため、受信可能なデータ領域を示すWinは減少させて通知する必要がある。
以下に、具体的シーケンスを用いてこの課題をより詳細に説明する。
図3に、通信装置2の性能が低い(例えば、ネットワークが100M−Etherで通信装置1が通常のPC(例えばCPUの性能が2.5GHz)に対し、CPUの性能が133MHz)場合の通信シーケンスの例を示す。図3と同様に、説明を簡略化するために1パケット内に格納されるデータ長(LEN)を1KBにし、SeqやWinの単位や値も、これに合わせている。また、図3では通信装置2のWinを4KBとしている。通信装置1と通信装置2とのTCP接続時のコネクション設立し、通信装置2がACK(P21)を送信するまでの通信シーケンスを省略する。
なお、通信装置2が低リソースの場合、パケットを受信するのに十分なメモリが搭載できない場合や、通信装置2に搭載できるメモリが大きい場合でも連続受信(バースト受信)するパケットを随時処理できるだけのCPUの能力がないために確保できるメモリ量を制限する必要があったりすることなどにより、Winの値は比較的小さく設定されることが多く、図3の例では4KBとしている(図2の例は、図3の例と比較しやすいように、敢えて4KBに統一して説明した。)。
通信装置1において、通信装置2からのACK(P21)を受信したときのWindow状態はW11になり、Seq=1のデータからWin=4(4KB)であることより、Seqが1〜4のパケット(P11〜P14)を通信装置2に送信する。
通信装置2は、P11〜P14の連続で到着するパケットを随時処理するCPUの能力がないため、連続で到着したパケットに対して、アプリケーションに渡す受信処理まで行なわず、先にACKのみを通信装置1に送信する。そのため、通信装置2が通信装置1に送信するACK(P22、P23)は、アプリケーションに渡す処理を行なっていないため、Winの値は減少したままになってしまう。ACK送信後、受信したデータ4KB分をアプリケーションに渡す受信処理を行なう(Q21)。通信装置2は、受信処理が完了し、受信可能なデータ領域が確保できた場合に、それを通知するためのACK(WinUpdate)を、通信装置1に送信する(P24)。
通信装置1は、P24のACKを受信した場合のWindowの状態はW14となり、W11の場合と同じである。次に送信装置1が送信するP15〜P18のデータに対する送信装置1および送信装置2の動作は、P11〜P14と同様である。
通信装置2の性能が低い場合、通信装置1は通信装置2からのACKに受け取ったときに次のパケットを送信するWinがないため、ACKを受信した直後に次のデータを送信することができないため、通信装置1は通信装置2のWinが回復するAck(WinUpdate)を待ってから、次のデータを送信する必要がある。
つまり、通信装置2が低リソースである場合は、特許文献1の構成で算出した推定スループットでは通信装置2の受信可能なデータ領域を確保するための処理性能は考慮されておらず、算出したスループットでの送信レートでは、通信装置2の受信可能なデータ領域が不足し、パケットロスを引き起こし、パケットロスによる再送が多発し、スループットが低下してしまう可能性があるという課題を有していた。
本発明は、上記の課題に鑑みなされたものであり、受信側装置の受信可能な性能に合わせた送信レートで送信することを可能とすることによって、スループットの向上を図った通信装置を提供することを目的とする。
前記従来の課題を解決するために、本発明の通信装置は、データを送信する相手通信装置の性能を推定し、相手通信装置の性能に合わせた送信レートでデータを送信する通信装置であって、相手通信装置の確認応答パケットの到着時間、確認応答パケットに含まれる受信可能データ量より相手通信装置の性能を推定する性能推定部を備えることを特徴とする。
例えば、汎用のTCPを用いてデータを送信する通信装置と相手通信装置と2つの通信装置間の通信において、性能推定部は、通信装置が送信した4KBのデータ(1KB×4パケット)に対する相手通信装置からの始めに到着するACKの到着時間(t1)と、通信可能なデータ容量がないことを示すACK(Win=0のACK)の後に受信側装置で4KBのデータ受信処理が完了して通信可能なデータ容量を確保できたことを示すACK(WinUpdate)が到着するまでの時間(t2)とを測定する。WinUpdateにより処理が完了したデータ量(4KB)と、測定したt1-t2間に4KBのデータが受信側装置で処理されたことと推測する。また、送信レート制御部は前記性能推定部が測定した受信側装置の性能より、4KBのデータをt1−t2間に間隔をあけて2パケット単位(1KB×2)で送信する。
第一の発明は、ネットワークを介してデータを相手端末と送受信する通信装置であって、相手端末は通信装置に対して、受信したデータを確認するための確認応答パケットを返送し、相手端末からの確認応答パケットに含まれる受信可能なデータ容量および次に要求するデータの情報に応じて、相手端末にデータを順次送信する通信装置であって、確認応答パケットに含まれる受信可能なデータ容量を基に相手端末の性能を推定する性能推定部を具備し、前記性能推定部によって推定した相手端末の性能に合わせた送信レートで相手端末にデータを送信する送信レート制御部を具備することを特徴とする。
第一の発明によれば、相手通信装置のリソースが十分でない場合であっても、相手通信装置の性能が推定することができる。その結果、相手通信装置の性能にあったレート制御を行なうことができる。
第二の発明は、前記性能推定部は、相手通信装置が通信装置から受信したデータの処理が完了し受信可能なデータ容量が確保できたことを通知する第二の確認応答パケットが通信装置に到着する時間および前記第二の確認応答パケットに含まれる受信可能なデータ容量と、第二の確認応答パケットの直前に受信した相手端末からの第一の確認応答パケットの受信可能な容量と到着時間の差分を基に相手端末の受信性能を推定することを特徴とする。
第二の発明によれば、相手通信装置がデータを受信して受信可能なバッファ容量を確保するまでの処理性能を推定できる。その結果、相手端末が低リソースであってもパケットロスを発生させないスループットを算出でき、パケットロスによるスループット低下を抑えることができる。
第三の発明は、前記性能推定部は前記第一の確認応答パケットのデータ容量が0の場合には、前記第二の確認応答パケットの受信可能なデータ容量と、第一の確認応答パケットおよび第二の確認応答パケットが通信装置に到着する時間の差分から相手通信装置の性能を推定することを特徴とする。
第三の発明によれば、相手通信装置が前記第二の確認応答パケットの受信可能なデータ容量分を確保するまでのより正確な処理性能を推定できる。その結果、受信可能なデータ量が不足であるために送信するWIN=0のACK後に、受信処理完了後に受信可能なデータ容量が確保できたことを通知するWinUpdateを送るような事象がなくなり、ネットワークのトラフィックを軽減することができる。
第四の発明は、前記性能推定部は相手通信装置からの確認応答パケットが順次到着する到着時間の間隔と受信可能なデータ容量の変動から相手端末の受信性能を推定することを特徴とする。
第四の発明によれば、相手通信装置が受信確認応答パケットを作成する処理の処理性能を推定できる。その結果、相手端末が低リソースであってもパケットロスを発生させないスループットを算出でき、パケットロスによるスループット低下を抑えることができる。
第五の発明は、前記送信レート制御部は、送信したデータに対する相手通信側装置からのACKの数に応じて1度に送るパケット数を決定する。例えば、送信したデータに2つに対するACKの数が1であった場合、送信レート制御は間隔をあけて2パケット連続送信を繰り返すことを特徴とする。
第五の発明によれば、相手通信装置はACK処理1回を行なうデータをまとめて受信処理できるため、受信側装置で受信処理を効率よくすることができる。その結果、受信可能なデータ量が常に確保することができるため、バースト受信が原因で発生するパケットロスをなくすことにより、再送制御によるスループットの低下を抑えることができる。
第六の発明は、前記送信レート制御部は、相手通信側装置による次のデータ(Num)の送信指示を含んだACKの到着を待たずに、決定した送信レートで順次データを送信する。
第六の発明によれば、通信装置と相手通信装置間の往復遅延時間(RTT:ラウンドトリップタイム)が長い場合において、RTTが長い場合に発生する送信側装置のACKの到着待ち時間と受信側装置のデータ到着待ち時間をなくすことができる。その結果、相手通信装置を最大限に活かしたスループットで通信することができる。
第七の発明は、データ管理部をさらに具備し、前記データ管理部は、確認応答パケットが再送を要求するパケット(DupAck)であった場合に、再送要求に該当するデータを再送し、さらに該当したデータに受信可能データ量を追加したデータから順次送信を行なうことを特徴とする。
第七の発明によれば、相手通信装置からのDupAckを3つの到着を待たずに再送することができる。その結果、パケットロス時の再送によるスループット低下を抑えることができる。
第八の発明は、前記データ管理部は、確認応答パケットが再送を要求するパケットであった場合に、前記送信レート制御部に送信レートを落とすように通知することを特徴とする。
第八の発明によれば、パケットロスを低減することができる。その結果、パケットロス発生率を抑え再送によるスループット低下を抑えることができる。
第九の発明は、前記データ管理部は、確認応答パケットの到着時刻遅延や再送を要求するパケットから連続でのパケットロスを検出した場合、ロスしたパケットから順次送信することを特徴とする。
第九の発明によれば、連続パケットロスによる再送の多発を防止することができる。その結果、再送の発生を最小限に抑え、再送によるスループット低下を抑えることができる。
なお、第十、第十一および第十二の発明は、このような通信装置として実現することができるだけでなく、その方法やプログラム、そのプログラムを格納する記憶媒体、集積回路としても実現することができる。
本発明の通信装置は、相手通信装置からのACKより取得した受信可能なデータ容量や到着時間より、他の通信装置の性能を推定して、他の通信装置の性能に合わせたレート制御を行なうことにより、相手通信装置が低リソースであっても、他の通信装置の性能にあったロスしない効率のよいスループットでのデータ送信ができるという作用効果を奏する。
以下本発明の実施の形態について、図面を参照しながら説明する。なお、本発明は、実施の形態における説明においては、TCPを用いた通信を例に説明を行うが、TCP同様のパラメータを用いた通信を行う同種のプロトコルにおいても適用可能である。
(実施の形態)
<<ネットワーク構成および構成図>>
図5は、本発明の一実施形態に係るネットワーク構成例および通信装置の構成例を示す。図5において、通信装置2が、ネットワーク3を経由し、通信装置1と通信する。通信装置1および通信装置2はネットワーク3と有線または無線で接続する通信機能を持つ装置であり、例えば、Ethernet(登録商標)インタフェースを備えた装置(例えばPCや、ネットワーク通信が可能な家電装置など)である。ネットワーク3は有線または無線を含むネットワークであり、インターネットなどの公衆ネットワークなどが例として挙げられる。
<<ネットワーク構成および構成図>>
図5は、本発明の一実施形態に係るネットワーク構成例および通信装置の構成例を示す。図5において、通信装置2が、ネットワーク3を経由し、通信装置1と通信する。通信装置1および通信装置2はネットワーク3と有線または無線で接続する通信機能を持つ装置であり、例えば、Ethernet(登録商標)インタフェースを備えた装置(例えばPCや、ネットワーク通信が可能な家電装置など)である。ネットワーク3は有線または無線を含むネットワークであり、インターネットなどの公衆ネットワークなどが例として挙げられる。
実施の形態では、通信装置1と相手端末にあたる通信装置2の間でTCPのコネクションを確立し、通信装置1から通信装置2にデータを送信することを想定する。例えば、FTP(File Transfer Protocol)サーバである送信装置1(例えばPC)からFTPクライアントとして動作するアプリケーションが動作する通信装置2がファイルをダウンロードする場合や、POP(Post Office Protocol)サーバである通信装置1から、電子メールを扱うアプリケーションが動作する通信装置2で電子メールを受信する場合などを想定する。
通信装置1は、CPU101、記憶部102、システムバス103、および通信部100を備える。
通信部100は、システムバス103上に接続されたハードウェアである。CPU101によって渡されたデータをネットワーク3に送信する機能とネットワーク3から受信したデータを受信し、CPU101に渡す機能を有する。
また、通信部100は、ネットワーク3から受信したデータを一時的に保持する受信用FIFOメモリ151と、CPU101から渡されたデータを一時的に保持する送信用FIFOメモリ152をもつ。
CPU101は、通信部100の受信用FIFOメモリ151に格納されたデータを記憶部102に移動する(読み出し)機能と、記憶部102に格納されているデータを通信部100の送信用FIFOメモリ152に移動する(書き込み)機能をもつ。また、記憶部102に格納さているデータに対してデータの解析や送信用データの作成処理など、TCPを含むプロトコル処理も行なう。また、通信アプリケーション、必要に応じてその他のプログラムを、記憶部102を使用しながら実行する機能を持つ。
なお、記憶部102は、通信部100の送信用FIFOメモリ152または通信部100の受信用FIFOメモリ151から記憶部102のデータの転送において、別途DMAコントローラを具備し、CPUではなく、DMAコントローラによりデータの移動を行なう場合もある。さらに、各プロトコル処理は、CPU101により実施されるのではなく、別途ハードウェアでそれぞれ実施されてもよい。
<<通信装置1の機能構成>>
図7に示した機能構成図は、図5に示したCPU101上で動作するソフトウェアとして実現可能である。なお、図7の機能構成図は、本発明に係るTCPデータの送信処理を中心として記載しているが、通信装置1は、TCPデータの受信処理を行なう機能部を具備していてもよい。また、通信装置2は、受信側装置として、本発明が適用されていない従来の通信装置であってもよいし、本発明が適用された送信処理の機能部を持つ通信装置であってもよい。また、本発明に直接関係のないTCP通信を実現するためのその他の構成についても説明を省略する。
図7に示した機能構成図は、図5に示したCPU101上で動作するソフトウェアとして実現可能である。なお、図7の機能構成図は、本発明に係るTCPデータの送信処理を中心として記載しているが、通信装置1は、TCPデータの受信処理を行なう機能部を具備していてもよい。また、通信装置2は、受信側装置として、本発明が適用されていない従来の通信装置であってもよいし、本発明が適用された送信処理の機能部を持つ通信装置であってもよい。また、本発明に直接関係のないTCP通信を実現するためのその他の構成についても説明を省略する。
なお、図7においては、データの流れをいくつかの種類の線を用いてあらわしている。実線はパケットまたはデータの流れを示すデータフロー、点線は制御信号(通知またはパラメータ)の流れを示す制御フローである。
図7において、通信装置1は、受信または送信するパケットを処理するパケット処理部の詳細な構成として、送信部1101、受信部1102、ACK処理部1103、データ管理部1104、性能推定部1105、レート制御部1106を有する。
送信部1101は、データ管理部1104に渡されたデータを送信するために必要なプロトコル処理(TCPヘッダ、IPヘッダ、MACフレームなどをヘッダ付与、チェックサム計算など)を行ない、構築したパケットを図5のCPU101を介して記憶部102から通信部100の送信用FIFOメモリ151に渡す。
受信部1102は、図5のCPU101を介して受信用FIFOメモリ151から記憶部102に渡されたパケットを各種プロトコル処理ヘッダ解析・除去を行なう。ヘッダ解析処理を行なった結果、送信したデータに対するTCPパケットに関しては、ACK処理部1103にTCPパケットをわたす。
ACK処理部1103は、受信部から渡されたTCPパケットを解析し、受信可能な容量(Win)および次に要求するデータ(Num)を性能推定部1105およびデータ管理部1104に渡す。
データ管理部1104は、送信するデータが配置されるメモリ領域管理し、送信するデータを送信部1101に渡す。データを送信部1101渡すタイミングは、レート制御部1106に送信通知をされたとき(レート制御ステップ)またはレート制御部1106が動作していない場合(性能推定ステップ)にACK処理部1103から、NumおよびWinを受け取ったときである。データ管理方法に関しては、後述する。また、連続パケットの消失を検知し、レート制御部1106にレートを落とすように通知する。
性能推定部1105は、ACK処理部から渡されたWinとNumおよびACK処理部からそれらを受け取った時間を測定する。また、測定した時間とWinの変動、Numを基に通信装置2の性能を推定し、送信量および送信間隔時間(Δt)をレート制御部1106に渡す。性能推定部1105における性能推定処理は後述する。
レート制御部1106は、性能推定部1105より送信量および送信間隔時間を渡され、送信間隔で送信量を送信するようにデータ管理部1104に通知を行なうレート制御機能を持つ。また、データ管理部1104にレートを落とすように通知された場合に、送信間隔を長くしたりする。レート制御部1106のレート制御処理に関しては後述する。
<<通信装置1(送信側)と通信装置2(受信側)のシーケンス>>
図6は、本実施の形態に係わる通信装置間のシーケンス例を示す図である。通信装置1を送信側装置、通信装置2を受信側装置として動作させたときを例として図7を用いて説明する。
図6は、本実施の形態に係わる通信装置間のシーケンス例を示す図である。通信装置1を送信側装置、通信装置2を受信側装置として動作させたときを例として図7を用いて説明する。
通信装置2の性能が低い(例えばCPUの性能が133MHz)場合に、受信側装置にあわせた送信レート制御を行なった場合のシーケンス例を示す。説明を簡略化するために1パケット内に格納されるデータ長(LEN)を1KBにし、SeqやWinの単位や値も、これに合わせている。また、図6は、通信装置1と通信装置2とのTCP接続時のコネクション設立後、受信側装置の受信可能なデータ容量が最大の値(Win=4)のACKを送信側装置に送った場面であり、それにいたるまでの通信のシーケンスは本発明に直接関係のないTCP通信を実現するための方法であるため省略する。
図7において、通信装置1の動作は、性能推定ステップとレート制御ステップと2つのステップからなる。性能推定ステップでは、通信装置2の性能を推定する。また、レート制御ステップでは、性能推定ステップで推定した通信装置2の性能に合わせたレート制御でデータ送信を行なう。
性能推定ステップは、図6において、通信装置1がWin=4のACK(P21)を受信した場面から、WinUpdate(P24)の受信処理を行なうまでにあたる。通信装置1は、通信装置2の受信能力を以下の2つの処理時間から推定する。
ACKの処理時間(AT)
通信装置2が受信したデータに対するACK作成するのに要する時間とACKのSeq量(P22とP23の到着間隔と含まれるSeqから推定)
受信可能なデータ領域を確保できるのに要する時間(DT)
通信装置2が、受信可能なデータ量が確保できたことを示すACK(WinUpdate)とその直前に到着したACKの到着間隔とWinの増加量より推定)
以下に、通信装置1における性能推定ステップのP21〜P24のACK受信し通信装置2の性能推定を行なうまでの処理を説明する。
通信装置2が受信したデータに対するACK作成するのに要する時間とACKのSeq量(P22とP23の到着間隔と含まれるSeqから推定)
受信可能なデータ領域を確保できるのに要する時間(DT)
通信装置2が、受信可能なデータ量が確保できたことを示すACK(WinUpdate)とその直前に到着したACKの到着間隔とWinの増加量より推定)
以下に、通信装置1における性能推定ステップのP21〜P24のACK受信し通信装置2の性能推定を行なうまでの処理を説明する。
通信装置1は、P21のACKのパラメータ(Win=4、Num=1)より、Seq=1〜Seq=4(P11〜P14)のデータを通信装置2に送信する。さらに、性能推定するために、Num=1の値を保持する。また、Win=4を通信装置2の受信可能な最大データ量(MAX_DATA)として保持する。
次に、通信装置2は通信装置1から送られたデータ(P11〜P14)を受信し、P22および、P23のACKを返す。P11、P12のデータを受信した通信装置1は、受信したデータに対するACKを作成し、受信したデータをアプリケーションに渡す処理を行なわずにP13およびP14のデータの受信処理を行なう。そのため、P11およびP12のデータを保持するためにメモリを2KB使用しているためWinをWin=2とし、P11、P12のデータ(Seq=1、Seq=2)の受信を確認しているため、Num=3としてACK(P22)を通信装置1に送信する。また、P13およびP14の受信もその後に行なわれ、データをアプリケーションに渡す前にACKを返すため、2KBのデータを保持しているためWin=0となり、P13、P14のデータ(Seq=3、Seq=4)を確認しているため、Seq=5としてACK(P23)を通信装置1に送信する。通信装置2は、ACK(P23)を送信後、P11〜P14のデータをアプリケーションに渡し、4KB分の受信可能なデータ領域を確保する。よって、Num=5、Win=4のACK(P24)を通信装置1に送信する。
通信装置1は、P22のACKの受信処理において、ACKのパラメータ(Win=2、Num=3)に対して、Seq=1〜Seq=4までは送信済みであるためにデータを送信しない。また、Win=2より、通信装置2の受信可能なデータ量がMAX_DATAより減少していることより、通信装置2で受信可能なデータ領域が減少していることがわかる。また、Num=3であることよりSeq=1およびSeq=2のデータの送達確認ができている。よって、P21のACK受信で保持していたNum=1より、通信装置2が送信データ4つに対して2個のACKを返す(Delayed Ackである)ことがわかる。これにより、レート制御におけるデータ量(SEND_SIZE)を2(1KB×2)に決定する。また、ACKの到着時間(t1)を計測する。さらに、Win=2の値を最小のWin(MIN_WIN)として値を保持する。
通信装置1は、P23のACK受信処理において、P23のACKのパラメータ(Win=0、Num=5)より、Num=5であるが、Win=0であるため通信装置2にデータの空き容量がないため、次のデータを送信しない。また、ACKの到着時間(t2)を計測する。P22の到着時刻(t1)とP23の到着時刻(t2)の差分は、通信装置2がP13、P14の2KB(SEND_SIZE)のデータを受信し、ACKを作成する処理時間(AT)にあたる。これと先ほど計測したP22の到着時間(t1)より、通信装置2の2パケットの処理時間(AT)を
AT=t2−t1
より推定できる。さらに、Win=0の値を最小のWin(MIN_WIN)として値を保持する。
AT=t2−t1
より推定できる。さらに、Win=0の値を最小のWin(MIN_WIN)として値を保持する。
次に、通信装置1はP24のACK(WinUpdate)を受信し、ACKのパラメータ(Win=4、Num=5)P23のACK受信時よりもWinが増加していることにより、通信装置2の性能推定を行なう。通信装置1で、P24のACK到着時の時刻(t3)を測定し、P23のACKが到着した時間(t2)との差分が、通信装置2が4KB(MAX_DATA)分のデータを処理した処理時間(DT)を
DT=t3−t2
より推定できる。
DT=t3−t2
より推定できる。
また、通信装置2において、MAX_DATA(4KB)のデータを処理して受信可能なデータ領域を確保するのに要する時間は、通信装置2がデータを処理する時間(DT)とACKを作成する時間(AT)を足したものとなる。よって、通信装置2の性能として単位時間あたりの処理できるデータ量(th)は、
th=MAX_DATA/(DT+(AT×DATA_SIZE/MAX_DATA))
となる。ATに(SEND_SIZE/MAX_DATA)としているのは、2KB(SEND_SIZE)を4KB(MAX_DATA)に換算するためである。thより2KB送信するのに要する時間(Δt)を求める。レート制御で用いる送信間隔Δtは
Δt=SEND_DATA/th
となる。
th=MAX_DATA/(DT+(AT×DATA_SIZE/MAX_DATA))
となる。ATに(SEND_SIZE/MAX_DATA)としているのは、2KB(SEND_SIZE)を4KB(MAX_DATA)に換算するためである。thより2KB送信するのに要する時間(Δt)を求める。レート制御で用いる送信間隔Δtは
Δt=SEND_DATA/th
となる。
なお、本実施例では、通信装置2が2つのデータに対して1つのACK(Delayed Ack)を返しているが、1つのデータに対して1つのACKを返す通信装置も想定される。そういった場合は、ACKのパラメータであるNumより1つのデータに対して1つのACKを返す装置と判断し、送信量(SEND_SIZE)を1KBとしてもよい。
通信装置1において、P24を受信し通信装置2の性能を推定するまでの性能推定ステップを示した。通信装置2の性能を推定した後は、推定した性能でレート制御を行なうレート制御ステップに移行する。
レート制御ステップは、図6において、通信装置1においてP15以降の処理に相当する。
通信装置1では、性能推定ステップで推定した通信装置の性能から送信間隔(Δt)とデータ量(SEND_SIZE)より、送信レートが決定される。P15、P16を送信した後、Δtの間隔をあけて次の2KBのデータ(P17、P18)を送信する。
また、通信装置1は、通信装置2からの確認応答であるACK(Num=9)を待たずにP17、P18送信後Δt後にP19、P20のデータ(Seq=9、Seq=10)を送信する。
<<通信シーケンスにおける通信装置1の各機能部の動作概要>>
以下、通信装置1の各機能部の動作概要を、図7のシーケンス例を参照しながら、説明する。
以下、通信装置1の各機能部の動作概要を、図7のシーケンス例を参照しながら、説明する。
通信装置1と通信装置2のシーケンス(図6参照)の中で、性能推定ステップとレート制御ステップがある。性能推定ステップでレート制御ステップと動作する機能部がそれぞれ異なる。
性能推定ステップでは、通信装置1においてレート制御部1106は動作せず、送信部1101、受信部1102、ACK処理部1103、性能推定部1105、データ管理部1104で処理が行なう。受信部1102は、通信装置2から送信されたACKを受信し、ヘッダ解析・除去を行なう。ヘッダ解析など各種プロトコル処理を行なった結果、TCPのACKであるために、受信したデータをACK処理部1103に渡す。ACK処理部1103は、ACKのWinおよびNumを性能推定部1105とデータ管理部1104に渡す。性能推定部1105は、ACK処理部より受け取ったWinとNumを受け取り、性能推定の処理を行なう。性能推定部1105における性能推定方法は後で説明する。また、データ管理部1104は、ACK処理部1103から受け取ったWinとNumより、管理しているデータのうち送信するデータを管理しているメモリ上から選択し、送信部1101に渡す。データ管理部1104におけるデータ管理方法は後で説明する。送信部1101は、データ管理部1104に渡されたデータに対してTCPヘッダの、IPヘッダ、MACヘッダを加えるプロトコル処理をしてデータを送信する。
レート制御ステップでは、性能推定部1105が送信量(SEND_DATA)および送信間隔(Δt)をレート制御部1106に渡すことにより開始される。レート制御部1106は、性能推定部1105から受け取ったSEND_DATAおよびΔtを受け取り、Δt間隔でデータ量(SEND_DATA)をデータ管理部1104に通知する。データ管理部1104は、レート制御部1106に、通知された場合にSEND_DATAのデータを送信部1101に渡す。レート制御ステップでは、通信装置2からのACK受信時は、受信部1102のパケット処理、ACK処理部1103によるWinおよびNumのACK処理部1103およびデータ管理部1104への通知は性能推定ステップと同様に行なわれる。ただし、データ管理部1104による送信部へのデータの受け渡しは、レート制御部1106からのSEND_DATAの通知のタイミングで行われ、ACK処理部1103からNumおよびWinを受け取ったタイミングでの送信部1101へのデータの受け渡しはなく、NumおよびWinはデータ管理の情報として使用される。
また、レート制御ステップが開始した場合でも、ACK受信時に性能推定部1105はACK処理部1103よりNum、Winを受け取り、性能推定処理を行ない、SEND_DATAおよびΔtの更新を行ない、通信装置2の性能に合わせたレート制御を行なうために、通信装置2を随時監視しながら行なう。
<<通信装置1の性能推定処理>>
通信装置1の性能推定部1105における性能推定処理について説明する。性能推定処理は、図7において、性能推定部1105が、ACK処理部1103からのACKのパラメータであるNumおよびWinとACK到着時刻から、送信レート制御で用いる送信間隔(Δt)と送信量(SEND_SIZE)を求め、レート制御部1106に渡す処理である。
通信装置1の性能推定部1105における性能推定処理について説明する。性能推定処理は、図7において、性能推定部1105が、ACK処理部1103からのACKのパラメータであるNumおよびWinとACK到着時刻から、送信レート制御で用いる送信間隔(Δt)と送信量(SEND_SIZE)を求め、レート制御部1106に渡す処理である。
性能推定処理は、以下の3つの機能を含むことができる。
・最大送信サイズ推定機能
通信装置1が、送信レート制御ステップ(図6参照)で、間隔をかけずに連続で送信する最大送信サイズ(SEND_SIZE)を推定する
・ACK処理性能推定機能
データの受信と、受信したデータに対するACKを作成し送信する処理時間(AT)の推定
・受信データ処理性能推定機能
受信したデータを処理し、処理したデータの領域を開放することにより、次に受信可能なデータ領域を確保するまでの時間(DT)の推定
本発明における性能推定処理は、これら3つの機能をそれぞれ取捨選択することによって実現することが可能である。以下では、まず、これら3つの機能をすべて具備した場合について全体の処理の流れを、図8を用いて説明し、次にそれぞれ3つの処理の詳細な説明を図9の通信装置1と通信装置2のシーケンス例に従って行なう。最大送信サイズ推定機能を具備しない構成においては、受信可能であるデータサイズ(SEND_SIZE)を所定値(例えばMSS)などにするとよい。また、ACK処理性能推定機能を具備しない構成において、ACKを作成し送信する処理時間(AT)を0、受信データ処理性能推定機能を具備しない構成においては、次に受信可能なデータ領域を確保するまでの時間(DT)を0などにするとよい。以下の説明においては、性能推定処理は上記3つの機能をすべて具備した場合を例として記述するが、これらのうち1つのみ、あるいはいずれか2つの機能のみを具備した場合の説明は、単にそれぞれに相当するステップが含まれるか否か以外は同様であり、説明を省略する。
通信装置1が、送信レート制御ステップ(図6参照)で、間隔をかけずに連続で送信する最大送信サイズ(SEND_SIZE)を推定する
・ACK処理性能推定機能
データの受信と、受信したデータに対するACKを作成し送信する処理時間(AT)の推定
・受信データ処理性能推定機能
受信したデータを処理し、処理したデータの領域を開放することにより、次に受信可能なデータ領域を確保するまでの時間(DT)の推定
本発明における性能推定処理は、これら3つの機能をそれぞれ取捨選択することによって実現することが可能である。以下では、まず、これら3つの機能をすべて具備した場合について全体の処理の流れを、図8を用いて説明し、次にそれぞれ3つの処理の詳細な説明を図9の通信装置1と通信装置2のシーケンス例に従って行なう。最大送信サイズ推定機能を具備しない構成においては、受信可能であるデータサイズ(SEND_SIZE)を所定値(例えばMSS)などにするとよい。また、ACK処理性能推定機能を具備しない構成において、ACKを作成し送信する処理時間(AT)を0、受信データ処理性能推定機能を具備しない構成においては、次に受信可能なデータ領域を確保するまでの時間(DT)を0などにするとよい。以下の説明においては、性能推定処理は上記3つの機能をすべて具備した場合を例として記述するが、これらのうち1つのみ、あるいはいずれか2つの機能のみを具備した場合の説明は、単にそれぞれに相当するステップが含まれるか否か以外は同様であり、説明を省略する。
図8は、性能推定処理のフローチャートの例を示す図である。性能推定処理は、最大受信可能容量ステップ(S1)と、到着時刻測定ステップ(S2)と、性能推定値算出ステップ(S3)からなる。
最大受信可能容量ステップ(S1)では、ACK処理部1103(図7参照)から性能推定部1105に渡されるWinとNumから通信装置2の最大受信可能なデータ量保持する。
到着時刻測定ステップ(S2)では、ACKが到着する時刻を計測し、レート制御ステップ(図6参照)において「最大送信サイズ推定機能」により推定して求めた送信量(SEND_SIZE)と、「ACK処理性能推定機能」によりACKを作成し送信する処理時間(AT)の推定を行なう。さらに、通信装置2の性能推定を行なうのに必要な値を保持する。
性能推定値算出ステップ(S3)では、「受信データ処理性能推定機能」を用いて次に受信可能なデータ領域を確保するまでの時間(DT)の推定を行ない、(AT)および(DT)を用いて通信装置2の性能(th)の推定と、データを送信する送信間隔(Δt)を算出する。さらに、「到着時刻推定ステップ(S2)で保持している送信データ量(SEND_SIZE)と送信間隔(Δt)をレート制御部1106(図7参照)に渡し、性能推定処理は終了する。
なお、性能推定処理が終了し、性能推定ステップ終了後にレート制御ステップが開始された場合においても、通信装置2の性能を常に監視するために性能推定処理を行なってもよい。そのために、性能推定値算出ステップ(S3)の後、最大受信可能容量ステップ(S1)に遷移することによって、性能推定処理を継続させることもできる。
次に、最大受信可能容量ステップ(S1)、到着時刻測定ステップ(S2)および性能推定値算出ステップ(S3)の処理のフローチャートの詳細な例を図9、図10および図11に示す。
最大受信可能容量ステップでは、通信装置2の最大受信可能容量を保持し、送信レート制御で用いる最大送信サイズを求めるための情報を保持する。最大受信可能容量ステップ(S1)の処理を、図9を用いて以下に説明する。
図9において、S11でWinおよびNumを待つ。そして、WinおよびNumを取得した(つまり、ACKが到着した)場合に、S12に遷移する。S12では、S3の性能推定算出ステップで通信装置2の性能を推定するための通信装置2の最大受信可能な容量(MAX_DATA)保持するため、MAX_DATAが到着したACKのWinであるかの判定を行なう。MAX_DATAの値がWin同じまたは小さい場合に、到着時刻推定ステップ(S2)へ遷移する。MAX_DATAの値がない場合(最初のACKを受信した場合や性能推定処理が一度完了して値がクリアされた場合)またはMAX_DATAの値よりもWinの値が大きい場合、S13においてMAX_DATAにWinを代入し保持する。また、S13において、最大送信サイズを決定するために必要な情報として、到着したNumを保持する。次に、S11に遷移し、次のACKを待つためにWinおよびNum待ちとなる。
到着時刻推定ステップ(S2)は、ACKが到着した時刻(t)の測定を行い、最大送信サイズ(SEND_SIZE)と、通信装置2のACK処理時間(AT)を推定する。到着時刻測定ステップ(S2)は、最大受信可能容量ステップ(S1)より、MAX_DATAの値がWin同じまたは小さい場合に開始される。到着時刻測定ステップ(S2)の処理の詳細を、図10を用いて以下に説明する。ただし、取捨選択可能な機能のうち、「最大送信サイズ推定機能」、「ACK処理性能推定機能」を含むが、これらの機能の詳細に関しては後述する。
図10において、S21で到着した時刻(t)を測定し、S22に遷移する。S22では、最小Windowサイズ(MIN_WIN)の判断を行なう。MIN_WINよりもWinが大きい場合(ACKがWinUpdateである場合)は、性能推定値算出ステップ(S3)に遷移する。また、MIN_WINに値がない場合やMIN_WINよりもWinが小さい場合はS23に遷移する。S23では、MIN_WINにWinを代入して保持し、S24に遷移する。S24では、最大送信サイズ推定機能より、最大送信サイズ推定処理が行なわれ、S25に遷移する。最大送信サイズ推定機能を具備しない構成ではS24はスキップする。S26では、ACK処理性能推定機能より、ACK処理性能であるACKを処理する時間(AT)を推定するためのしょりが行われ、S26に遷移する。ACK処理性能推定機能を具備しない構成ではS25はスキップされる。S26では、WinUpdateではないACKの到着した最後のACKの到着時刻を保持するため、t2にtを代入し保持する。そして、最大受信可能容量ステップに図9のS11に遷移し、次のACK待ちとなる。
性能推定値算出ステップ(S3)は、WinUpdateのACKを受信した場合に開始される。性能推定値算出ステップ(S3)の処理を、図11を用いて以下に説明する。ただし、取捨選択可能な機能のうち、「受信データ処理性能推定機能」を含むが、この機能に関する詳細は後述する。
図11において、S31で受信データ処理性能推定機能より、通信装置2が処理したデータの領域を開放することにより、次に受信可能なデータ領域を確保するまでの時間(DT)を推定しS32に遷移する。受信データ処理性能推定機能を具備しない構成である場合は、S31はスキップされる。S32では、相手通信装置の性能(th)を推定する。性能推定処理機能で求めたACKを作成し送信する処理時間(AT)とS31のステップで求めた受信可能なデータ領域を確保するまでの時間(DT)を用いてスループット(th)を計算する。単位時間のデータ量として計算するため、
th=MAX_DATA/(DT+(AT×SEND_SIZE/MAX_DATA))
となる。ATに(SEND_SIZE/MAX_DATA)としているのは、SEND_SIZEをMAX_DATAに換算するためである。最大送信サイズ推定機能を具備しない構成においては、受信可能であるデータサイズ(SEND_SIZE)を所定値(例えばMSS)などにするとよい。また、ACK処理性能推定機能を具備しない構成において、ACKを作成し送信する処理時間(AT)を0、受信データ処理性能推定機能を具備しない構成においては、次に受信可能なデータ領域を確保するまでの時間(DT)を0などにするとよい。S32でthを推定後、S33に遷移する。S33は、レート制御ステップ(図6参照)の送信間隔(Δt)を推定する。送信レートは、SEND_SIZEのデータをΔt間隔開けて送信するため、算出するΔtは、
Δt=SEND_SIZE/th
となる。Δt推定後、S34に遷移する。S34では、性能推定処理でもとめたΔtおよびSEND_SIZEを、図7の性能推定部1105からレート制御部1106に渡し、S35に遷移する。S35では、性能推定処理で保持していた変数をクリアし、性能推定値算出ステップ(S3)は終了する。
th=MAX_DATA/(DT+(AT×SEND_SIZE/MAX_DATA))
となる。ATに(SEND_SIZE/MAX_DATA)としているのは、SEND_SIZEをMAX_DATAに換算するためである。最大送信サイズ推定機能を具備しない構成においては、受信可能であるデータサイズ(SEND_SIZE)を所定値(例えばMSS)などにするとよい。また、ACK処理性能推定機能を具備しない構成において、ACKを作成し送信する処理時間(AT)を0、受信データ処理性能推定機能を具備しない構成においては、次に受信可能なデータ領域を確保するまでの時間(DT)を0などにするとよい。S32でthを推定後、S33に遷移する。S33は、レート制御ステップ(図6参照)の送信間隔(Δt)を推定する。送信レートは、SEND_SIZEのデータをΔt間隔開けて送信するため、算出するΔtは、
Δt=SEND_SIZE/th
となる。Δt推定後、S34に遷移する。S34では、性能推定処理でもとめたΔtおよびSEND_SIZEを、図7の性能推定部1105からレート制御部1106に渡し、S35に遷移する。S35では、性能推定処理で保持していた変数をクリアし、性能推定値算出ステップ(S3)は終了する。
次に、取捨選択可能な機能である「最大送信サイズ推定機能」、「ACK処理性能推定機能」および「受信データ処理性能推定機能」の詳細な説明を図12、図13および図14のフローチャートの例を用いて説明する。
<最大送信サイズ推定機能>
最大送信サイズ推定機能は、送信レート制御ステップ(図6参照)で、間隔をかけずに通信装置1が連続で送信する最大送信サイズ(SEND_SIZE)を推定する。通信装置2からのACKのNumを確認することにより、通信装置1の複数回のパケット送信に対して、通信装置2が何回に1回にACKを送信しているかを調査する。最大送信サイズ推定機能の処理を、図12を用いて以下に説明する。
最大送信サイズ推定機能は、送信レート制御ステップ(図6参照)で、間隔をかけずに通信装置1が連続で送信する最大送信サイズ(SEND_SIZE)を推定する。通信装置2からのACKのNumを確認することにより、通信装置1の複数回のパケット送信に対して、通信装置2が何回に1回にACKを送信しているかを調査する。最大送信サイズ推定機能の処理を、図12を用いて以下に説明する。
図12において、S241はSEND_SIZEの判断を行なう。SEND_SIZEにすでに値がある場合は、図10のS25へ遷移する。SEND_SIZEの値がない場合は、S242に遷移し、SEND_SIZEを推定する。S242で、最大受信可能容量ステップ(S1)で保持しているNum1とNumを減算することによりSEND_SIZEを推定する。
SEND_SIZE=Num−Num1
これにより、最大送信サイズ推定機能の処理は終了し、図10のS25へ遷移する。
これにより、最大送信サイズ推定機能の処理は終了し、図10のS25へ遷移する。
<ACK処理性能推定機能>
ACK処理性能推定機能は、通信装置2のデータの受信と、受信したデータに対するACKを作成し送信する処理時間(AT)を推定する。通信装置1が連続で送信したデータに対して、どれだけの間隔でACKを返答しているかによって、通信装置2のACK処理性能を推定する。ACK処理性能推定機能の処理を、図13を用いて以下に説明する。
ACK処理性能推定機能は、通信装置2のデータの受信と、受信したデータに対するACKを作成し送信する処理時間(AT)を推定する。通信装置1が連続で送信したデータに対して、どれだけの間隔でACKを返答しているかによって、通信装置2のACK処理性能を推定する。ACK処理性能推定機能の処理を、図13を用いて以下に説明する。
図13において、S251でATに値があるかないかの判断を行なう。AT値がある場合は、すでにACK処理性能を推定済であるため、ACK処理推定機能の処理は終了し、図10のS26に遷移する。S251でATに値がない場合、S252においてACKの到着時間(t1)に値があるかの判定を行なう。t1に値がない場合は、S253に遷移し、ACKの到着時間(t1)に今回のACK到着時間(t)を代入し、保持する。ここで、ACK処理性能推定機能の処理は終了し、図10のS26に遷移する。また、S252のACKの到着時間(t1)に値がある場合は、S254に遷移する。S254で、今回のACKの到着時間(t)と前回のACKの到着時間(t1)の差分より、受信したデータに対するACKを作成し送信する処理時間(AT)を推定する。
AT=t−t1
これにより、ACK処理性能推定機能の処理は終了し、図10のS26に遷移する。
これにより、ACK処理性能推定機能の処理は終了し、図10のS26に遷移する。
<受信データ処理性能推定機能>
受信データ処理性能推定機能は、通信装置2が通信装置1から受信したデータを処理し、処理したデータの領域を開放することにより、次に受信可能なデータ領域を確保するまでの時間(DT)を推定する。通信装置2からの、WinUpdateのACKとWinUpdateの前に到着したACKの到着時間より受信データ処理性能を推定する。受信データ処理性能推定機能の処理の詳細を、図14のフローチャートの例を用いて説明する。
受信データ処理性能推定機能は、通信装置2が通信装置1から受信したデータを処理し、処理したデータの領域を開放することにより、次に受信可能なデータ領域を確保するまでの時間(DT)を推定する。通信装置2からの、WinUpdateのACKとWinUpdateの前に到着したACKの到着時間より受信データ処理性能を推定する。受信データ処理性能推定機能の処理の詳細を、図14のフローチャートの例を用いて説明する。
図14において、ACKの到着時刻(t)をt3に代入し保持する。そして、前回のACK受信時に図8の到着時刻測定ステップ(S2)で測定し保持してある到着時刻(t2)との差分より推定する。
DT=t3−t2
これにより、受信データ処理性能推定機能の処理は終了し、図11のS32に遷移する。
これにより、受信データ処理性能推定機能の処理は終了し、図11のS32に遷移する。
[最大送信サイズ推定機能の効果]
最大送信サイズ推定機能を具備することによって、相手端末がACK処理を行なうのに一番効率のよい送信サイズで送信することが可能である。本実施の形態では、通信装置2が送信データを2つ受信するのに対し、1回のACKを返す(Delayed ACK)を用いるため、2つ分のデータサイズがSEND_SIZEとなり、これにより通信装置2のACK処理の効率を向上させることが可能となる。
最大送信サイズ推定機能を具備することによって、相手端末がACK処理を行なうのに一番効率のよい送信サイズで送信することが可能である。本実施の形態では、通信装置2が送信データを2つ受信するのに対し、1回のACKを返す(Delayed ACK)を用いるため、2つ分のデータサイズがSEND_SIZEとなり、これにより通信装置2のACK処理の効率を向上させることが可能となる。
[ACK処理性能推定機能の効果]
ACK処理性能推定機能を具備することによって、相手端末の受信したデータに対するACKを作成するまでの処理性能を推定できることができ、相手端末の性能をより正確に推定できる。
ACK処理性能推定機能を具備することによって、相手端末の受信したデータに対するACKを作成するまでの処理性能を推定できることができ、相手端末の性能をより正確に推定できる。
[受信データ処理性能推定機能の効果]
受信データ処理性能推定機能を具備することによって、処理したデータの領域を開放することにより、次に受信可能なデータ領域を確保するまでの性能が推定することができ、相手端末の性能をより正確に推定できる。
受信データ処理性能推定機能を具備することによって、処理したデータの領域を開放することにより、次に受信可能なデータ領域を確保するまでの性能が推定することができ、相手端末の性能をより正確に推定できる。
以上、性能推定処理を行なうことで、相手通信装置の性能を推定することが可能となる。本発明の性能推定処理のうち、ACK処理性能推定機能および受信データ処理性能推定機能を取捨選択して使用することも可能である。相手通信装置のリソースが十分ある場合に関しては、相手通信装置のデータを処理する性能やACKを処理する性能を考慮する必要がないため、どちらかまたは両方の機能を制限して使ってもよい。相手通信装置のリソースが十分でない場合は、両方の機能を有効にし、相手通信装置の正確な性能を推定し相手通信装置性能を最大限に活かした送信レートで送信することができる。
<<通信装置1のレート制御処理(レート制御機能)>>
以下、通信装置1のレート制御処理(レート制御機能)を説明する。
以下、通信装置1のレート制御処理(レート制御機能)を説明する。
レート制御処理は、通信装置1と通信装置2のシーケンス例(図6参照)のレート制御ステップにおける送信レート制御を行う。レート制御処理は、性能推定ステップで推定された通信装置2の性能を基に、データ量、送信間隔を制御することにより通信装置1から送信されるデータのレート制御行なうレート制御機能を持つ。
<レート制御機能>
レート制御機能は、図7において、性能推定部1105より送信データ量(SEND_SIZE)と送信間隔(Δt)をレート制御部1106に渡されることにより処理が開始し、レート制御を行なう。また、データ管理部1104においてパケットロスを検知した場合に、データ管理部1104からレート制御部1106にレートを下げるように通知されることによって、送信レートを変更する処理を行なう。
レート制御機能は、図7において、性能推定部1105より送信データ量(SEND_SIZE)と送信間隔(Δt)をレート制御部1106に渡されることにより処理が開始し、レート制御を行なう。また、データ管理部1104においてパケットロスを検知した場合に、データ管理部1104からレート制御部1106にレートを下げるように通知されることによって、送信レートを変更する処理を行なう。
次に、レート制御処理を図15のフローチャートを用いて説明する。性能推定部1105(図7参照)より、送信データ量(SEND_SIZE)および送信間隔(Δt)の通知を受けることにより(S52)、SEND_SIZEを設定する(S53)。また、タイマにΔtを設定し(S54)、タイマが起動する(S60)。タイマ起動後は、通知待ちに戻り(S51)、次の通知を待つ状態になる。タイマは起床間隔(Δt)間隔で動作し(S61)、起床したタイミングで、送信データ(SEND_SIZE)をデータ管理部1104(図7参照)にデータ量(SEND_SIZE)を通知する(S62)。また、データ管理部(図7参照)により通知があった場合は(S52)、タイマに設定してあるΔtを増加させて再設定し(S54)、タイマは起床間隔(Δt)を再設定し再起動する(S54)。タイマ再起動後は、通知待ちに戻る(S51)。タイマは再設定した起床間隔(Δt)間隔で動作し(S61)、起床したタイミングで、送信データ(SEND_SIZE)をデータ管理部1104(図7参照)にデータ量(SEND_SIZE)を通知する(S62)。
[レート制御機能の効果]
レート制御機能を具備することにより、相手通信装置が受信可能な間隔で送信することができる。そのため、相手通信装置の性能を最大限に活かしたレートでの送信を行なうことが可能である。
レート制御機能を具備することにより、相手通信装置が受信可能な間隔で送信することができる。そのため、相手通信装置の性能を最大限に活かしたレートでの送信を行なうことが可能である。
以上、レート制御処理を行なうことで、相手通信装置が受信可能なタイミングで送信することができる。これにより、相手通信装置の性能を最大限に活かした性能での通信が可能になる。
<<通信装置1のデータ管理方法>>
本発明の通信装置1のデータ管理部1104におけるデータ管理方法は、図6に示す通信シーケンスで性能推定ステップにおいては、従来のTCPのWindow制御のデータ管理方法と同じである。しかし、性能推定ステップが終了し、レート制御ステップに移行した場合、通信装置2からのACKの受信を待たないレート制御を行なうため、従来のTCPのWindow制御のデータ管理方法とは異なる。性能推定ステップではデータ管理部1104(図7参照)は、ACK受信時にACK処理部からACKのパラメータであるNum、Winを受け取ってから、送信するタイミング決定している。それとは異なり、レート制御ステップでは、レート制御部に任意のタイミング(Δt)間隔で送信を指示されるタイミングでデータを送信するためである。
本発明の通信装置1のデータ管理部1104におけるデータ管理方法は、図6に示す通信シーケンスで性能推定ステップにおいては、従来のTCPのWindow制御のデータ管理方法と同じである。しかし、性能推定ステップが終了し、レート制御ステップに移行した場合、通信装置2からのACKの受信を待たないレート制御を行なうため、従来のTCPのWindow制御のデータ管理方法とは異なる。性能推定ステップではデータ管理部1104(図7参照)は、ACK受信時にACK処理部からACKのパラメータであるNum、Winを受け取ってから、送信するタイミング決定している。それとは異なり、レート制御ステップでは、レート制御部に任意のタイミング(Δt)間隔で送信を指示されるタイミングでデータを送信するためである。
データ管理方法に関して、レート制御ステップにおいてパケット消失が発生しない場合の通常時の例と、レート制御ステップにおいてパケット消失が発生した場合の例を以下に説明する。
<<データ管理方法(パケットが消失しない場合)>>
通信装置1と通信装置2のシーケンス例を示す図(図6)に従って、データ管理方法について図9を参照しながら説明する。図16では、通信装置1のWindow状態で番号は、Seqを示しており、通信装置2に送達確認を行なっていないため、通信装置1で該当するSeqの送信データの領域を、未到達であった場合の再送に備えて、通信装置1のメモリ内に確保していることを示している。また、点線で囲んである部分は拡張したWindowである。
通信装置1と通信装置2のシーケンス例を示す図(図6)に従って、データ管理方法について図9を参照しながら説明する。図16では、通信装置1のWindow状態で番号は、Seqを示しており、通信装置2に送達確認を行なっていないため、通信装置1で該当するSeqの送信データの領域を、未到達であった場合の再送に備えて、通信装置1のメモリ内に確保していることを示している。また、点線で囲んである部分は拡張したWindowである。
P21(図6参照)を受信した場合の通信装置1のWindow状態をW21に示す。P21のACKのパラメータはWin=4、Num=1であるため通信装置1はSeq=1〜Seq=4の送信するデータのメモリ領域を獲得し、データを保持する。
次に、P22(図6参照)を受信した場合の通信装置1のWindow状態をW22に示す。P22のACKのパラメータはWin=2、Num=3であるため、Num=3よりも前のSeq(Seq=1、Seq=2)は送達確認を行なったため、Seq=1、Seq=2のメモリ領域の開放処理を行なう。
同様に、P23(図6参照)を受信した場合の通信装置1のWindow状態をW23に示す。P22のACKのパラメータはWin=0、Num=5であるため、Num=5よりも前のSeq(Seq=3、Seq=4)は送達確認を行なったため、P22と同様にメモリ領域の開放を行なう。
次に、P24(図6参照)を受信した場合の通信装置1のWindow状態をW24に示す。P22のACKのパラメータはWin=4、Num=5であるため、Seq=5〜Seq=8のメモリ領域4KBを獲得する。
ここまでは、従来のTCPと同様のWindow制御におけるメモリ管理方法と同じである。以下、レート制御ステップにおけるデータ管理方法を示す。
P15、P16、P17、P18(図6参照)送信時の、Window状態はW24と同様である。
P19、P20送信は、通信装置2からのデータ受信確認のACKを待たずに行なう。次におくるデータのメモリ領域を確保していないため、W19の点線で示すようにメモリ領域を新たに送信する2KB分のメモリを獲得し、獲得したメモリ領域に関してもデータ管理を行なう。
また、P25の受信時はACK処理部(図6参照)よりNum=7、Win=2を受け取り、Seq=6、Seq=7のメモリ領域を開放し、W25の状態になる。このように、データ受信確認のACKを待たずにデータ送信を行なう場合は、通信装置2から通知されたACKのWinを超える場合であっても、新たにメモリを獲得しデータ管理を行なう。また、通信装置2からのデータ受信確認を受けた場合に、送達確認をしたSeqのデータに対してメモリの開放を行なう。
<<データ管理方法(パケット消失が発生した場合)>>
次に、図6に示すシーケンス例のレート制御ステップにおいて、パケットが消失した場合の、通信装置1のデータ管理部1104におけるデータ管理方法について通信装置1と通信装置2のシーケンス(図17)を用いて説明する。説明を簡略化するために1パケット内に格納されるデータ長(LEN)を1KBにし、SeqやWinの単位や値も、これに合わせている。また、図17において、通信装置1での性能推定ステップに関しては、前述と同様であるため、ここでは省略し、レート制御ステップが始まったところを示す。送信レートの送信間隔(Δt)、送信量(SEND_SIZE)、通信装置2の最大受信可能なメモリ量(MAX_DATA)は先ほどの説明と全く同じ値を用いる。図の左側は、通信装置1における通信装置1のWindow状態を示している。先ほど説明した図6の例と同様に、Window状態で番号は、Seqを示しており、通信装置2に送達確認を行なっていないため、通信装置1で該当するSeqの送信データの領域を、未到達であった場合の再送に備えて、通信装置1のメモリ内に確保していることを示している。また、点線で囲んである部分は拡張したWindowである。
次に、図6に示すシーケンス例のレート制御ステップにおいて、パケットが消失した場合の、通信装置1のデータ管理部1104におけるデータ管理方法について通信装置1と通信装置2のシーケンス(図17)を用いて説明する。説明を簡略化するために1パケット内に格納されるデータ長(LEN)を1KBにし、SeqやWinの単位や値も、これに合わせている。また、図17において、通信装置1での性能推定ステップに関しては、前述と同様であるため、ここでは省略し、レート制御ステップが始まったところを示す。送信レートの送信間隔(Δt)、送信量(SEND_SIZE)、通信装置2の最大受信可能なメモリ量(MAX_DATA)は先ほどの説明と全く同じ値を用いる。図の左側は、通信装置1における通信装置1のWindow状態を示している。先ほど説明した図6の例と同様に、Window状態で番号は、Seqを示しており、通信装置2に送達確認を行なっていないため、通信装置1で該当するSeqの送信データの領域を、未到達であった場合の再送に備えて、通信装置1のメモリ内に確保していることを示している。また、点線で囲んである部分は拡張したWindowである。
図17において、通信装置1がレート制御を開始し、2KBずつΔt間隔を空けて送信していることを示している。ネットワークが負荷状態であったため、通信装置1から送信されるP11のデータが通信装置2に到達せず、パケットが消失している。その場合についてのデータ管理方法を説明する。
パケット消失が発生した場合、データ管理方法は、以下の3つの機能が含まれる。
・即時再送機能
DupAckを受信した場合に、即時に再送を行なう
・ロスデータ推定機能
ロスしたデータを推定し、再送要求が来る前に先に再送する
・レート低下機能
ロス発生時にレート制御部にレートをおとすようにレート制御部に通知する
本発明においてパケット消失が発生した場合のみ、これら3つの機能が有効になる。それぞれ機能は取捨選択することによって実現することが可能である。以下の説明においては、性能推定処理は上記3つの機能をすべて具備した場合を例として記述するが、これらのうち1つのみ、あるいはいずれか2つの機能のみを具備した場合の説明も同様であり、ここでは説明を省略する。パケット消失が発生したシーケンス例を用いて各機能部に関する詳細を以下に説明する。
DupAckを受信した場合に、即時に再送を行なう
・ロスデータ推定機能
ロスしたデータを推定し、再送要求が来る前に先に再送する
・レート低下機能
ロス発生時にレート制御部にレートをおとすようにレート制御部に通知する
本発明においてパケット消失が発生した場合のみ、これら3つの機能が有効になる。それぞれ機能は取捨選択することによって実現することが可能である。以下の説明においては、性能推定処理は上記3つの機能をすべて具備した場合を例として記述するが、これらのうち1つのみ、あるいはいずれか2つの機能のみを具備した場合の説明も同様であり、ここでは説明を省略する。パケット消失が発生したシーケンス例を用いて各機能部に関する詳細を以下に説明する。
<即時再送機能>
通信装置1のデータ管理部1104における即時再送機能に関して、図17の通信装置1および通信装置2のシーケンス例を用いて説明する。
通信装置1のデータ管理部1104における即時再送機能に関して、図17の通信装置1および通信装置2のシーケンス例を用いて説明する。
図17において、通信装置1において、送信したP11が消失したことを検知するのは、P15およびP16を送信後、通信装置2からの、DupAck(P21)を受信した時である。通信装置1は、DupAckの情報にふくまれるNumがNum=1であるため、Seq=1のデータを即時に再送する(P17)。その後、Δt×2倍の間隔をあけて、Seq=5のデータから随時送信を始める。従来のTCPでは、DupAckを3つ受信してから、DupAckのNumに該当するSeqのデータを再送するが、通信装置1は、再送によるスループット低下を最小限に抑えるために、DupAckを1つ受信してから該当するNumのSeq=5のデータ(P17)をすぐに再送を行なう。
以上、DupAckを受信した場合に、該当するパケットを即時に再送する即時再送機能である。
なお、即時再送機能を無効にする場合は、従来のTCP同様に、DupAckを3つ受信してから、該当するデータの再送を行なうようにするとよい。
<ロスデータ推定機能>
通信装置1のデータ管理部1104におけるロスデータ推定機能に関して、図17の通信装置1および通信装置2のシーケンス例を用いて説明する。
通信装置1のデータ管理部1104におけるロスデータ推定機能に関して、図17の通信装置1および通信装置2のシーケンス例を用いて説明する。
通信装置1は、再送パケット(P17)の次に、P15、P16ですでに送信しているにもかかわらず、Seq=5から順次送信を再開する。これは、通信装置2の最大のWinが4であるため、Seq=1〜Seq=4までしか保持できないと推測できる。そのため、Seq=1のパケットを消失した場合、通信装置2は4KBの受信可能なデータ量のうちSeq=2〜4までを保持し、さらに消失したSeq=1を受信するために1つのデータ領域を確保しているため、Seq=5以降のパケットは受信できないと予想できる。つまり、通信装置1で拡張したSeq=5以降のデータを通信装置2では受信できない。よって、再送パケット(P17)を送信後、Seq=5から随時送信を開始する必要がある。
<レート低下機能>
さらに、再送パケットを送信した後、次のパケットを送信するのにΔt×2の間隔をあけるのは、通信装置2が送信量(SEND_SIZE=2KB)を処理する(受信可能なメモリ領域を確保する)のにかかる処理時間がΔtであるため、Seq=1のデータを受信した後にSeq=1〜Seq=4までの4KBのデータを処理すると推定し、Δtを2倍にしている。
さらに、再送パケットを送信した後、次のパケットを送信するのにΔt×2の間隔をあけるのは、通信装置2が送信量(SEND_SIZE=2KB)を処理する(受信可能なメモリ領域を確保する)のにかかる処理時間がΔtであるため、Seq=1のデータを受信した後にSeq=1〜Seq=4までの4KBのデータを処理すると推定し、Δtを2倍にしている。
次に、図6に示すシーケンス例のレート制御ステップにおいて、連続でパケットが消失した場合の通信装置1と通信装置2のシーケンス例を図18に示す。連続でパケット消失が発生した場合の通信装置1データ管理方法を図18の通信装置1と通信装置2のシーケンス例を用いて以下に説明する。
図18において、通信装置1がレート制御を開始し、2KBずつΔt間隔を空けて送信していることを示している。ネットワークが負荷状態であったため、通信装置1から送信されるP11、P12のデータが通信装置2に到達せず、連続でパケットが消失している。その場合についてのデータ管理方法を説明する。図18は、図17と同様に説明を簡略化するために1パケット内に格納されるデータ長(LEN)を1KBにし、SeqやWinの単位や値も、これに合わせている。また、図18において、通信装置1での性能推定ステップに関しては、ここでは省略し、レート制御ステップが始まったところを示し、送信レートの送信間隔(Δt)、送信量(SEND_SIZE)、通信装置2の最大受信可能なメモリ量(MAX_WIN)は先ほどの説明と全く同じ値を用いる。図の左側は、通信装置1における通信装置1のWindow状態を、Window状態で番号はSeqを示しており、通信装置2に送達確認を行なっていないため、通信装置1で該当するSeqの送信データの領域を、未到達であった場合の再送に備えて、通信装置1のメモリ内に確保していることを示している。また、点線で囲んである部分は拡張したWindowである。
通信装置1において、送信したP11が消失したことを検知するのは、P15およびP16を送信後、通信装置2からの、DupAck(P21)を受信した時である。さらに、P12を消失することを検知するのは、通信装置2からのDupAck(P25)を受信した後である。通信装置1は、DupAckの情報にふくまれるNumがNum=1であるため、即時再送機能によりSeq=1のデータを即時に再送する(P17)。その後、Δt×2倍の間隔をあけて、ロスデータ推定機能よりSeq=5のデータから随時送信を始める。また、P25受信時に、Num=2のDupAckでるため連続でパケットを消失したことを通信装置1は検知する。この場合、Seq=3もパケットロスが発生していると予想できるため、通信装置1は、再送要求のあったSeq=2(P101)から順次送信を開始する。
なお、通信装置1において、データ管理部(図7参照)は、パケット消失を検知した場合にレート制御部1106にレート低下を通知し、レート制御部1106は通知を受けた場合に送信間隔(Δt)を長くする(レート低下機能)などして、レートを落としてもよい。
[即時再送機能の効果]
即時再送機能を具備することによって、通信装置1においてDupAckの所定数の到着を待たずに再送を行ない、再送を早期に解決することができる。これによって、再送によるスループットの低下をおさえることができる。
即時再送機能を具備することによって、通信装置1においてDupAckの所定数の到着を待たずに再送を行ない、再送を早期に解決することができる。これによって、再送によるスループットの低下をおさえることができる。
[ロスデータ推定機能の効果]
ロスデータ推定機能を具備することによって、通信装置2が受信できていないデータを先読みし、通信装置2から再送要求を受け取る前に再送を行なうことができる。これによって、輻輳制御を削減し、再送によるスループットの低下を抑えることができる。
ロスデータ推定機能を具備することによって、通信装置2が受信できていないデータを先読みし、通信装置2から再送要求を受け取る前に再送を行なうことができる。これによって、輻輳制御を削減し、再送によるスループットの低下を抑えることができる。
[レート低下機能の効果]
レート低下機能を具備することによって、パケット消失が発生することにより、レートを低下させることができる。これにより、ロス発生率を防止し、パケット消失の再発を抑えることができる。
レート低下機能を具備することによって、パケット消失が発生することにより、レートを低下させることができる。これにより、ロス発生率を防止し、パケット消失の再発を抑えることができる。
以上、レート制御処理を行うことで、相手通信装置が受信可能な最大のレートで送信することができる。これにより、相手通信装置の性能を最大限に活かした性能での通信が可能になる。
[効果]
以上の処理を行なうことで、相手通信装置のリソースが十分でない場合であっても、相手通信装置の性能を最大限に活かしたスループットで通信を可能にする効果と、RTTが長い場合でもスループットを低下させない効果と、パケット消失時に再送が発生することによるスループットの低下を最小限に抑える効果とがある。実施の形態で示した例が、本発明の効果すべてを発揮することができる一例である。一方、効果は制限されるが、本発明を使用する用途によっては、機能を制限したり構成要素を縮小することによる実施も可能である。
以上の処理を行なうことで、相手通信装置のリソースが十分でない場合であっても、相手通信装置の性能を最大限に活かしたスループットで通信を可能にする効果と、RTTが長い場合でもスループットを低下させない効果と、パケット消失時に再送が発生することによるスループットの低下を最小限に抑える効果とがある。実施の形態で示した例が、本発明の効果すべてを発揮することができる一例である。一方、効果は制限されるが、本発明を使用する用途によっては、機能を制限したり構成要素を縮小することによる実施も可能である。
本発明は、TCPに基づく送信処理を行なうあらゆる通信装置に適用可能である。
1 通信装置1(送信側)
2 通信装置2(受信側)
3 ネットワーク
10 パケット
100 通信部
101 CPU
102 記憶部
103 システムバス
151 受信用FIFOメモリ
152 送信用FIFOメモリ
1101 送信部
1102 受信部
1103 ACK処理部
1104 データ管理部
1105 性能推定部
1106 レート制御部
2 通信装置2(受信側)
3 ネットワーク
10 パケット
100 通信部
101 CPU
102 記憶部
103 システムバス
151 受信用FIFOメモリ
152 送信用FIFOメモリ
1101 送信部
1102 受信部
1103 ACK処理部
1104 データ管理部
1105 性能推定部
1106 レート制御部
Claims (12)
- データの送信に対して相手端末が確認応答パケットを返送する通信プロトコルを用いる通信を行う通信装置であって、確認応答パケットに含まれる情報を用いて送信レートを制御する通信装置であって、
確認応答パケットに含まれる受信可能なデータ容量を基に相手端末の性能を推定する性能推定部を具備し、
前記性能推定部によって推定した相手端末の性能に合わせた送信レートで相手端末にデータを送信する送信レート制御部を具備する
ことを特徴とする通信装置。 - 前記性能推定部は、
相手端末が通信装置から受信したデータの処理が完了し受信可能なデータ容量が確保できたことを通知する第二確認応答パケットが通信装置に到着する時間および第二の確認応答パケットに含まれる受信可能なデータ容量と、第二の確認応答パケットの直前に受信した相手端末からの第一の確認応答パケットの受信可能な容量と到着時間の差分を基に相手端末の受信性能を推定する
ことを特徴とする請求項1記載の通信装置。 - 前記性能推定部は、
前記第一の確認応答パケットのデータ容量が0の場合には、第二の確認応答パケットの受信可能なデータ容量と、第一の確認応答パケットおよび第二の確認応答パケットの到着時間の差分から相手端末の性能を推定する
ことを特徴とする請求項2記載の通信装置。 - 前記性能推定部は、
相手端末からの確認応答パケットが順次到着する到着時間の間隔と受信可能なデータ容量の変動から相手端末の受信性能を推定する
ことを特徴とする請求項1記載の通信装置。 - 前記送信レート制御部は、
確認応答パケットが送信した回数の2回に1回である場合は、前記性能推定部が推定した相手端末の性能にしたがって所定時間の間隔をあけて2パケット連続送信を繰り返すレート制御を行なう
ことを特徴とする請求項1記載の通信装置。 - 前記送信レート制御部は、
性能推定部が性能推定し送信レートが決定した場合に確認応答パケットが到着せず、相手端末が通知する確認応答の受信可能なデータ容量を越える場合であっても決定した送信レートに従ってデータを順次送信する
ことを特徴とする請求項1記載の通信装置。 - データ管理部をさらに具備し、
前記データ管理部は、確認応答パケットが再送を要求するパケットであった場合に、再送要求に該当するデータを再送し、さらに該当したデータに受信可能データ量を追加したデータから順次送信を行なう
ことを特徴とする請求項6記載の通信装置。 - 前記データ管理部は、確認応答パケットが再送を要求するパケットであった場合に、前記送信レート制御部に送信レートを落とすように通知する
ことを特徴とする請求項6記載の通信装置。 - 前記データ管理部は、確認応答パケットの到着時刻遅延や再送を要求するパケットから連続でのパケットロスを検出した場合、ロスしたパケットから順次送信する
ことを特徴とする請求項6記載の通信装置。 - ネットワークを介してデータを相手端末と送受信する通信装置であって、相手端末は通信装置に対して、受信したデータを確認するための確認応答パケットを返送し、相手端末からの確認応答パケットに含まれる受信可能なデータ容量および次に要求するデータの情報に応じて、相手端末にデータを順次送信する通信方法であって、
確認応答パケットに含まれる受信可能なデータ容量を基に相手端末の性能を推定する性能推定ステップと、
前記性能推定ステップによって推定した相手端末の性能に合わせた送信レートで相手端末にデータを送信する送信レート制御ステップと、
を含むことを特徴とする通信方法。 - ネットワークを介してデータを相手端末と送受信する通信装置であって、相手端末は通信装置に対して、受信したデータを確認するための確認応答パケットを返送し、相手端末からの確認応答パケットに含まれる受信可能なデータ容量および次に要求するデータの情報に応じて、相手端末にデータを順次送信する通信プログラムであって、
確認応答パケットに含まれる受信可能なデータ容量を基に相手端末の性能を推定する性能推定ステップと、
前記性能推定ステップによって推定した相手端末の性能に合わせた送信レートで相手端末にデータを送信する送信レート制御ステップと、
をコンピュータに実行させることを特徴とするプログラム。 - ネットワークを介してデータを相手端末と送受信する通信装置であって、相手端末は通信装置に対して、受信したデータを確認するための確認応答パケットを返送し、相手端末からの確認応答パケットに含まれる受信可能なデータ容量および次に要求するデータの情報に応じて、相手端末にデータを順次送信する集積回路であって、
確認応答パケットに含まれる受信可能なデータ容量を基に相手端末の性能を推定する性能推定手段と、
前記性能推定手段によって推定した相手端末の性能に合わせた送信レートで相手端末にデータを送信する送信レート制御手段と、
を具備することを特徴とする集積回路。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006226174A JP2008053888A (ja) | 2006-08-23 | 2006-08-23 | 通信装置、プログラム、情報記憶媒体および通信制御方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006226174A JP2008053888A (ja) | 2006-08-23 | 2006-08-23 | 通信装置、プログラム、情報記憶媒体および通信制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008053888A true JP2008053888A (ja) | 2008-03-06 |
Family
ID=39237519
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006226174A Pending JP2008053888A (ja) | 2006-08-23 | 2006-08-23 | 通信装置、プログラム、情報記憶媒体および通信制御方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2008053888A (ja) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010206608A (ja) * | 2009-03-04 | 2010-09-16 | Nec Corp | 送信装置、送信レート算出方法及び送信レート算出プログラム |
JP2010218063A (ja) * | 2009-03-13 | 2010-09-30 | Ricoh Co Ltd | データ送信装置、情報処理装置、及び動作周波数制御方法 |
JP2014131093A (ja) * | 2012-12-28 | 2014-07-10 | Fujitsu Ltd | プログラム、情報処理装置、及び通信方法 |
JP2014138304A (ja) * | 2013-01-17 | 2014-07-28 | Fujitsu Ltd | 分析装置、分析方法及び分析プログラム |
JP2016146517A (ja) * | 2015-02-06 | 2016-08-12 | 日本電気株式会社 | 通信端末、通信方法及びプログラム |
JP2019213004A (ja) * | 2018-06-01 | 2019-12-12 | 富士ゼロックス株式会社 | データ中継装置およびプログラム |
-
2006
- 2006-08-23 JP JP2006226174A patent/JP2008053888A/ja active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010206608A (ja) * | 2009-03-04 | 2010-09-16 | Nec Corp | 送信装置、送信レート算出方法及び送信レート算出プログラム |
JP2010218063A (ja) * | 2009-03-13 | 2010-09-30 | Ricoh Co Ltd | データ送信装置、情報処理装置、及び動作周波数制御方法 |
JP2014131093A (ja) * | 2012-12-28 | 2014-07-10 | Fujitsu Ltd | プログラム、情報処理装置、及び通信方法 |
JP2014138304A (ja) * | 2013-01-17 | 2014-07-28 | Fujitsu Ltd | 分析装置、分析方法及び分析プログラム |
JP2016146517A (ja) * | 2015-02-06 | 2016-08-12 | 日本電気株式会社 | 通信端末、通信方法及びプログラム |
JP2019213004A (ja) * | 2018-06-01 | 2019-12-12 | 富士ゼロックス株式会社 | データ中継装置およびプログラム |
JP7102952B2 (ja) | 2018-06-01 | 2022-07-20 | 富士フイルムビジネスイノベーション株式会社 | データ中継装置およびプログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5020076B2 (ja) | 低頻度ackのシステムに適した高性能tcp | |
US9641650B2 (en) | TCP proxy server | |
JP4256395B2 (ja) | 無線ネットワーク環境で伝送遅延による不要な再伝送を減少させるための方法及びそれを用いた通信装置 | |
WO2018121294A1 (zh) | 一种报文传输方法、终端、网络设备及通信系统 | |
JPWO2008023656A1 (ja) | 通信装置 | |
JP5867188B2 (ja) | 情報処理装置、輻輳制御方法および輻輳制御プログラム | |
US7496038B2 (en) | Method for faster detection and retransmission of lost TCP segments | |
EP2916521B1 (en) | Communication device, transmission data output control method, and program for same | |
JP2007534194A5 (ja) | ||
CN102148662B (zh) | 一种数据发送速率的调整方法及装置 | |
JPWO2005027456A1 (ja) | 通信システム、通信装置、およびデータの再送制御方法 | |
JP2006157918A (ja) | 高スループットを実現する通信システム、通信端末、セッション中継装置、及び通信プロトコル | |
US20150215214A1 (en) | Method and system for increasing data flow transmission | |
JP2012095190A (ja) | 通信装置、通信システム、プログラム及び通信方法 | |
JP2008053888A (ja) | 通信装置、プログラム、情報記憶媒体および通信制御方法 | |
CN102769520B (zh) | 基于sctp协议的无线网络拥塞控制方法 | |
JP4328794B2 (ja) | 通信システム、通信装置、及び送信制御方法 | |
CN108432287A (zh) | 一种数据传输方法及网络侧设备 | |
JP7067544B2 (ja) | 通信システム、通信装置、方法およびプログラム | |
JP6217424B2 (ja) | 制御装置及び制御方法 | |
JP2000216811A (ja) | フロ―制御方法 | |
JP6973511B2 (ja) | 通信装置、通信システム、通信方法及びプログラム | |
JP6010502B2 (ja) | パケット処理方法及びパケット処理装置 | |
JPH11225166A (ja) | フロー制御方法 | |
JP2003224547A (ja) | フロー制御方法 |