(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-24
(45)【発行日】2024-11-01
(54)【発明の名称】複数のストリームを使用してデータを送受信する通信装置、通信方法、及びプログラム
(51)【国際特許分類】
H04L 69/14 20220101AFI20241025BHJP
H04L 45/243 20220101ALI20241025BHJP
【FI】
H04L69/14
H04L45/243
(21)【出願番号】P 2021161488
(22)【出願日】2021-09-30
【審査請求日】2023-08-03
(73)【特許権者】
【識別番号】000208891
【氏名又は名称】KDDI株式会社
(74)【代理人】
【識別番号】110003281
【氏名又は名称】弁理士法人大塚国際特許事務所
(72)【発明者】
【氏名】北辻 佳憲
【審査官】中川 幸洋
(56)【参考文献】
【文献】特開2015-050746(JP,A)
【文献】特表2020-524964(JP,A)
【文献】米国特許出願公開第2020/0128112(US,A1)
【文献】米国特許出願公開第2017/0187497(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 69/14
H04L 45/243
(57)【特許請求の範囲】
【請求項1】
データを含むパケットを、ネットワークを介して受信装置に送信する通信装置であって、
複数のストリームと、前記複数のストリーム
のそれぞれについて、
それぞれが1つ以上のサブストリームを
含む複数のサブストリームセットを割り当てる第1割当手段と、
前記パケットを前記複数のストリームの内のいずれかのストリームに割り当てる第2割当手段と、
前記ストリームに割り当てた前記パケットを、当該ストリーム
に割り当てた前記
複数のサブストリーム
セットにおいて送信する送信手段と、
Transmission Control Protocol(TCP)の輻輳制御アルゴリズムによって前記複数のストリームのそれぞれのウィンドウサイズを設定する第1設定手段と、
TCPの輻輳制御アルゴリズムによって
前記複数のサブストリームセットのそれぞれに含まれる前記1つ以上のサブストリームのそれぞれのウィンドウサイズを設定する第2設定手段と、
前記ストリームに割り当てた前記パケットの送信に失敗した場合に前記パケットの再送を行う再送手段と、
を備え
、
前記第1割当手段は、前記ストリームに割当てた前記複数のサブストリームセットのそれぞれについて、サブストリームセットに含まれる前記1つ以上のサブストリームのそれぞれのウィンドウサイズの合計またはそれぞれの通信速度の合計が、前記ストリームのウィンドウサイズまたは目標通信速度以上になるように前記複数のサブストリームセットを判定し、前記ストリームに割り当てられた前記パケットを前記複数のサブストリームセットによって送信するように前記ストリームに前記1つ以上のサブストリームを割り当て、
前記再送手段は、前記ストリームに割り当てた前記複数のサブストリームセットのいずれかで前記パケットの受信に成功した場合、受信に失敗したサブストリームセットで前記パケットの再送を行わないことを特徴とする通信装置。
【請求項2】
前記第2設定手段は、前記受信装置から受信した
前記複数のサブストリームセットに含まれる前記1つ以上のサブストリームのそれぞれの受信結果に応じて前記1つ以上のサブストリームのそれぞれのウィンドウサイズを設定することを特徴とする請求項1に記載の通信装置。
【請求項3】
前記第1設定手段は、前記受信装置から受信した
前記複数のサブストリームセットに含まれる前記1つ以上のサブストリーム
のそれぞれの受信結果に基づいて前記ストリームの受信結果を判定し、前記ストリームの前記受信結果に基づいて前記ストリームのウィンドウサイズを設定することを特徴とする請求項1または2に記載の通信装置。
【請求項4】
前記複数のサブストリームセットのうちの少なくともいずれかは、複数のサブストリームを含むことを特徴とする請求項1から3のいずれか1項に記載の通信装置。
【請求項5】
前記第1割当手段は、前記受信装置から受信した前記1つ以上のサブストリームのそれぞれの受信結果に基づいて前記ストリームの受信結果を判定し、前記ストリームの受信結果に基づいて前記パケットを送信する
複数のサブストリーム
セットの数を判定することを特徴とする
請求項1から4のいずれか1項に記載の通信装置。
【請求項6】
前記第1割当手段は、前記ストリームのウィンドウサイズが所定の目標値より小さい場合に、前記
複数のサブストリーム
セットの数を増やすことを特徴とする
請求項5に記載の通信装置。
【請求項7】
データを含むパケットを、ネットワークを介して受信装置に送信する通信装置の通信方法であって、
複数のストリームと、前記複数のストリーム
のそれぞれについて、
それぞれが1つ以上のサブストリームを
含む複数のサブストリームセットを割り当てることと、
前記パケットを前記複数のストリームの内のいずれかのストリームに割り当てることと、
前記ストリームに割り当てた前記パケットを、当該ストリーム
に割り当てた前記
複数のサブストリーム
セットにおいて送信することと、
Transmission Control Protocol(TCP)の輻輳制御アルゴリズムによって前記複数のストリームのそれぞれのウィンドウサイズを設定することと、
TCPの輻輳制御アルゴリズムによって
前記複数のサブストリームセットのそれぞれに含まれる前記1つ以上のサブストリームのそれぞれのウィンドウサイズを設定することと、
前記ストリームに割り当てた前記パケットの送信に失敗した場合に前記パケットの再送を行うことと、
を含
み、
前記ストリームに割当てた前記複数のサブストリームセットのそれぞれについて、サブストリームセットに含まれる前記1つ以上のサブストリームのそれぞれのウィンドウサイズの合計またはそれぞれの通信速度の合計が、前記ストリームのウィンドウサイズまたは目標通信速度以上になるように前記複数のサブストリームセットを判定し、前記ストリームに割り当てられた前記パケットを前記複数のサブストリームセットによって送信するように前記ストリームに前記1つ以上のサブストリームが割り当てられ、
前記ストリームに割り当てた前記複数のサブストリームセットのいずれかで前記パケットの受信に成功した場合、受信に失敗したサブストリームセットで前記パケットの再送が行われないことを特徴とする通信方法。
【請求項8】
1つ以上のプロセッサを有する装置の前記1つ以上のプロセッサで実行されると、前記装置を、
請求項1から6のいずれか1項に記載の通信装置として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数のストリームを使用してデータを送受信する技術に関する。
【背景技術】
【0002】
ネットワークを介したデータの送受信のためにTCP(伝送制御プロトコル)が使用されている。TCPによるデータの送受信においては輻輳制御が行われる。具体的には、データを受信する通信装置(以下、受信装置)は、データを送信する通信装置(以下、送信装置)からのパケットの受信状況を肯定応答(ACK)又は否定応答(NACK)で送信装置に通知する。なお、ACKはパケットを正常に受信していることを示し、NACKは損失パケットが生じたことを示す。なお、損失パケットとは、受信装置が正常に受信しなかったパケット、つまり、受信装置に到達しなかったパケットと、受信装置に到達したが誤りが発生していたパケットと、を含む。
【0003】
輻輳制御において、送信装置はウィンドウサイズを管理する。ウィンドウサイズは、送信装置が、受信装置からのACKを受信することなく送信できるパケット数を規定する。送信装置は、受信装置から報告される受信状況、つまり、ACK又はNACKに基づきウィンドウサイズを増減させる。一般的に、送信装置は、NACKを受信するとウィンドウサイズを減少させ、ACKのみを受信している間、所定のアルゴリズムに従いウィンドウサイズを増加させる。ウィンドウサイズに応じて送信装置が送信するパケット数がネットワークの状態に応じて調整され、輻輳制御が実現される。非特許文献1は、CUBICと呼ばれる輻輳制御方法を開示している。非特許文献1によると、送信装置は、ACKのみを受信している間、3次元関数に従いウィンドウサイズを増加させている。
【0004】
また、非特許文献2は、送信装置から受信装置へのデータ送信速度を増加させるため、複数のストリームを使用してデータを送受信するMPTCP(Multi-Path TCP)を開示している。MPTCPにおいては、ストリーム毎に輻輳制御が行われる。なお、ストリームは、コネクション又はパスとも呼ばれ得る。
【先行技術文献】
【非特許文献】
【0005】
【文献】"CUBIC:A New TCP-Friendly High-Speed TCP Variant",ACM SIGOPS Operating Systems Review,Volume42 Issue5,2008年7月
【文献】IEEE/ACM Transactions on Networking(Volume:14,Issue:6,Dec.2006),"Multi-Path TCP: A Joint Congestion Control and Routing Scheme to Exploit Path Diversity in the Internet"
【発明の概要】
【発明が解決しようとする課題】
【0006】
非特許文献2に記載の様に、複数のストリームを使用することで、単一のストリームを使用してデータを送信することと比較して、より高いデータ送信速度(スループット)を達成することができる。しかしながら、各ストリームにおいて損失パケットが発生することを考慮すると、さらに高いスループットを達成するためには膨大な量のストリームを設定する必要があり、送信設備および受信設備の処理負荷が増大する。この高いスループットを達成するために、輻輳制御を行わないデータ配信方法を用いる、若しくは非特許文献2のデータ送信手段に輻輳制御を行わないデータ配信方法を組み合わせると、送信データが経由するネットワーク中のボトルネック回線において、輻輳を引き起こす。
【0007】
本発明は、膨大な量のストリームの処理負荷を抑え、かつネットワーク中の通信輻輳を防ぐ技術を提供するものである。
【課題を解決するための手段】
【0008】
本発明の一態様によると、データを含むパケットを、ネットワークを介して受信装置に送信する通信装置は、
複数のストリームと、前記複数のストリームのそれぞれについて、それぞれが1つ以上のサブストリームを含む複数のサブストリームセットを割り当てる第1割当手段と、
前記パケットを前記複数のストリームの内のいずれかのストリームに割り当てる第2割当手段と、
前記ストリームに割り当てた前記パケットを、当該ストリームに割り当てた前記複数のサブストリームセットにおいて送信する送信手段と、
Transmission Control Protocol(TCP)の輻輳制御アルゴリズムによって前記複数のストリームのそれぞれのウィンドウサイズを設定する第1設定手段と、
TCPの輻輳制御アルゴリズムによって前記複数のサブストリームセットのそれぞれに含まれる前記1つ以上のサブストリームのそれぞれのウィンドウサイズを設定する第2設定手段と、
前記ストリームに割り当てた前記パケットの送信に失敗した場合に前記パケットの再送を行う再送手段と、
を備え、
前記第1割当手段は、前記ストリームに割当てた前記複数のサブストリームセットのそれぞれについて、サブストリームセットに含まれる前記1つ以上のサブストリームのそれぞれのウィンドウサイズの合計またはそれぞれの通信速度の合計が、前記ストリームのウィンドウサイズまたは目標通信速度以上になるように前記複数のサブストリームセットを判定し、前記ストリームに割り当てられた前記パケットを前記複数のサブストリームセットによって送信するように前記ストリームに前記1つ以上のサブストリームを割り当て、
前記再送手段は、前記ストリームに割り当てた前記複数のサブストリームセットのいずれかで前記パケットの受信に成功した場合、受信に失敗したサブストリームセットで前記パケットの再送を行わないことを特徴とする。
【発明の効果】
【0009】
本発明によると、送信設備および受信設備の処理負荷を抑え、かつネットワークの輻輳を抑えることができる。
【図面の簡単な説明】
【0010】
【
図1】実施形態の説明に使用する通信システムの構成図。
【
図2】一実施形態によるデータ送受信方法の説明図。
【
図3】一実施形態によるデータ送受信方法の説明図。
【
図4】一実施形態によるデータ送受信の開始時に行う処理のシーケンス図。
【
図5】一実施形態によるデータ送受信中に行う処理のシーケンス図。
【発明を実施するための形態】
【0011】
以下、添付図面を参照して実施形態を詳しく説明する。なお、以下の実施形態は特許請求の範囲に係る発明を限定するものでなく、また実施形態で説明されている特徴の組み合わせの全てが発明に必須のものとは限らない。実施形態で説明されている複数の特徴うち二つ以上の特徴が任意に組み合わされてもよい。また、同一若しくは同様の構成には同一の参照番号を付し、重複した説明は省略する。
【0012】
図1は、本実施形態の説明に使用する通信システムの構成図である。ネットワーク30には、複数の通信装置が接続される。通信装置のそれぞれは、データの送信及び受信が可能なものであるが、以下では、データを送信する通信装置(送信設備)を送信装置10と表記し、送信装置10が送信したデータを受信する通信装置(受信設備)を受信装置20と表記する。送信装置10、受信装置20は、それぞれ、1つ以上のインタフェースによりネットワークに接続され得る。1つ以上のインタフェースは、例えば、無線ローカルエリアネットワーク(LAN)に接続するためのインタフェース、有線LANに接続するためのインタフェース、3GPP(第3世代パートナシッププロジェクト)で標準化される無線インタフェース等であり得る。
図1のネットワーク30は、移動通信網、インターネット等の様々な種別のネットワークを含む。
【0013】
図2は、送信装置10による受信装置20へのデータ送信の説明図である。本実施形態においては、送信装置10は、受信装置20へ、ストリームを1つ以上のサブストリームの組み合わせによって所定の冗長レベルで送信する。
図2においては、冗長レベルは2であるものとして図示されているが、例示であり、ストリームごとに1以上の所定の冗長レベルが設定されてもよい。また、異なるストリームには異なる冗長レベルが設定されてもよい。
【0014】
例えば、
図2の例では、ストリーム201は、設定された冗長レベルに合わせてサブストリームセット211、212が割り当てられる。サブストリームセット211では、サブストリーム211-1が割り当てられ、サブストリームセット212では、サブストリーム212-1、212-2、212-3が割り当てられる。サブストリームセットの数は、設定された冗長レベルに応じて増減される。
【0015】
同一のストリームに関連付けられたサブストリームセットでは、同一のデータが送信される。例えば、サブストリームセット211と212とでは同一のデータが送信される。サブストリームセット212では複数のサブストリーム212-1、212-2、212-3によってデータを送信するため、パケットを分割したチャンクという単位ごとに複数のサブストリームのいずれで送信するかが判定される。
【0016】
また、ストリーム202に対応するサブストリームセット221、222については、それぞれサブストリーム221-1、221-2、222-1、222-2が割り当てられる。
【0017】
送信装置10は、アプリケーションプログラムから送信するパケット(データ)を受け取る度に、当該パケットをどのストリームで送信するかを決定、つまり、パケットをどのストリームに割り当てるかを決定する。この割り当てには、任意の方法を使用することができる。例えば、送信装置10は、新たなパケットを、ラウンドロビン形式で各ストリームに割り当てることができる。また、送信装置10は、各ストリームの送信待ちパケット数を判定し、送信待ちパケット数の少ないストリームに新たなパケットを割り当てることができる。一方、本実施形態において、送信装置10は、ストリームに割り当てられたパケットを、当該ストリームに対応付けられたすべてのサブストリームセットで送信する。
【0018】
図3は、上述した送信装置10によるパケットの送信方法を示している。
図3において、送信装置10は、データ(パケット)の送信のため、2つのストリーム#1及び#2を使用している。なお、ストリーム#1および#2はそれぞれ冗長レベルが2であるものとして説明する。すなわちストリーム#1にはサブストリームセット#1-1および#1-2が対応し、ストリーム#2にはサブストリームセット#2-1および#2-2が対応する。
図3において、送信装置10は、パケット#1~#6を、ラウンドロビン形式で各ストリームに割り当てている。したがって、パケット#1、#3及び#5は、ストリーム#1で送信され、パケット#2、#4及び#6は、ストリーム#2で送信される。ストリームに割り当てられたパケットは、当該ストリームに割り当てられたすべてのサブストリームセットで送信されるため、パケット#1、#3及び#5は、サブストリームセット#1-1及び#1-2で送信され、パケット#2、#4及び#6は、サブストリームセット#2-1及び#2-2で送信される。そして、サブストリームセット#1-1に対応付けられたサブストリーム301によってパケット#1、#3および#5が送信され、サブストリームセット#1-2に割り当てられたサブストリーム311によってパケット#5が送信され、サブストリーム312によってパケット#3が送信され、サブストリーム313によってパケット#1が送信される。
【0019】
同様に、サブストリームセット#2-1に対応付けられたサブストリーム321によってパケット#6および#4が送信され、サブストリーム322によってパケット#2が送信される。また、サブストリームセット#2-2に対応付けられたサブストリーム331によってパケット#6が送信され、サブストリーム332によってパケット#4および#2が送信される。なお、実際にネットワーク30に送信されるのはサブストリームであり、ネットワーク30は、ストリームを認識しない。
【0020】
本実施形態において、送信装置10及び受信装置20は、ストリームとサブストリームとのそれぞれとにTCP(Transmission Control Protocol)の輻輳制御アルゴリズムを用いた輻輳制御を行う。
図3において、網掛けのパケットは、損失パケット、つまり、受信装置20において誤りが検出されたパケット、或いは、受信装置20に届かなかったパケットを示している。サブストリームセット#1-1においては、パケット#1が損失パケットとなり、サブストリームセット#1-2においては、パケット#3が損失パケットとなっている。このため、受信装置20は、サブストリーム301、312に対してはACKを送信装置10に通知しない、またはNACKを送信装置10に通知する。そして、サブストリーム311、313に対してはACKを送信装置10に通知する。
【0021】
ここで、送信装置10は、受信したACKに基づいて、ストリーム単位での受信結果を判定する。
図3の例では、パケット#1はサブストリームセット#1-2で正常に受信され、パケット#3はサブストリームセット#1-1で正常に受信されている。したがって、受信装置20は、ストリーム#1では、損失パケットが無いと判定する。
【0022】
一方、サブストリームセット#2-1および#2-2の両方で、パケット#6が損失パケットとなっている。このため、受信装置20は、サブストリーム321、331に対してはACKを送信装置10に通知しない、またはNACKを送信装置10に通知する。そして、サブストリーム322、332に対してはACKを送信装置10に通知する。
【0023】
送信装置10は、受信したACKに基づいて、パケット#6はサブストリーム#2-1および#2-2の両方で受信に失敗したため、ストリーム#2では損失パケットがあると判定する。
【0024】
なお、本実施形態では、送信装置10は、サブストリームの受信結果に基づいてストリームの受信結果を判定するものとして説明を行ったが、受信装置20からサブストリームの受信結果に加え、ストリームの受信結果を受信してもよい。この場合、受信装置20は、サブストリームの受信結果に基づいて、ストリームごとの受信結果を判定し、判定したストリームごとの受信結果を送信装置10に通知する。
【0025】
図4は、送信装置10が受信装置20へのデータ送信を開始する際の処理を示すシーケンス図である。送信装置10は、S1において、目標速度Sに基づきストリーム数Nを決定する。目標速度Sは、データ送信を行うアプリケーションプログラムから通知される。例えば、送信装置10は、目標速度Sを、各ストリームの平均速度又はピーク速度で除した値の小数点以下を切り上げることで、ストリーム数Nを決定することができる。この場合、目標速度Sが10Gbpsであり、各ストリームの平均速度が2Gbpsであると、ストリーム数Nは5になる。また、マージンを見込むため、この値に所定数を乗ずることができる。例えば、所定数を2とすると、ストリーム数Nは10になる。なお、各ストリームの平均速度又はピーク速度は、過去の通信において測定された値を使用することができる。過去の通信において測定された値が無い場合、所定の初期値を使用することができる。また、送信装置10は、インタフェース数をストリーム数とすることができる。例えば、ネットワーク30にアクセスするためのインタフェース数が3である場合、送信装置10は、ストリーム数を3に決定することができる。
【0026】
S2において、送信装置10は、ストリームの目標損失率Lに基づき、各ストリームに対応するサブストリームセット数Mを決定する。ストリームの目標損失率Lは、当該ストリームで送信するパケット数に対する、当該ストリームの損失パケット数の比率の目標値である。ストリームの目標損失率Lは予め送信装置10に設定されている。例えば、送信装置10は、あるストリームのサブストリーム数Mを、
M=ceil(logxL) (1)
で求める。ここで、基数xは、サブストリームセットの損失率であり、ceil()は、天井関数である。通信の開始時において、xには所定の初期値を使用する。例えばx=0.001、かつ、L=0.000001の場合、サブストリームセット数Mは2となる。
【0027】
S3では、個々のストリームに配送するデータが割り当てられたとき、同一のストリームに関連付けられたサブストリームセット1~ksへ送信データのコピーを割り振る。また、サブストリームセットknの中のサブストリームに対しては、その送信速度に応じて割り当て送信データを分散して割り振り、送信する。例えば、サブストリームセットknのサブストリームJ本が速度(vk
1,vk
2, ...,vk
J)で登録されているとき、割り当て送信データサイズdkに対して、サブストリームjに割り当てる送信データサイズdk
jは
dk
j=dkvk
j/Σvk
j (2)
とする。もし送信データdkが少なく(サブストリームの送信ウィンドウサイズが大きく)、すべてのサブストリームを利用しない場合には、サブストリームをその送信速度vk
jに達するごとにラウンドロビンで切り替える。同一のサブストリームセット内のサブストリームは異なるパケット(データ)を送信するため、それに対するロスの識別を受信装置20で行えるようにするため、ストリームから割り当てられるデータの識別子Aと、サブストリームの個々における識別子Bの二つを用いる。識別子Aは、ストリーム別のフロー制御で用いるロスを判別する。識別子Bはサブストリーム別のフロー制御で用いる。
【0028】
送信装置10は、各ストリームの識別子と、各サブストリームの送信側識別子を決定する。例えば、サブストリームの送信側識別子は、当該サブストリームで送信するパケットの送信元IPアドレスと、パケット識別子と、TCPパケットの送信側ポート番号との組み合わせである。ストリームの識別子は、ストリームを識別するものであり、任意の値を使用することができる。送信するパケットの識別子は、
図3のパケット番号のように、データ全体を分割したパケットに対して割り振られる一時的な識別子であってよい。
【0029】
送信装置10は、S4で、各サブトトリ―ムそれぞれについて、サブストリームの送信側識別子と、当該サブストリームが属するストリームの識別子と、を受信装置20に通知する。なお、1つのストリームに属する複数のサブストリームの送信のためのインタフェースは、同じであっても異なるものであっても良い。
【0030】
受信装置20は、S4において、送信装置10からサブストリームの送信側識別子と、当該サブストリームが属するストリームの識別子と、を受け取ることで、ストリーム数と、各ストリームのサブストリーム数を認識する。受信装置20は、続いて、各サブストリームの送信側識別子に対応する受信側識別子を決定する。サブストリームの受信側識別子は、当該サブストリームで受信するパケットの宛先IPアドレスと、パケット識別子と、TCPパケットの受信側ポート番号の組み合わせである。なお、1つのストリームに属する複数のサブストリームの受信のためのインタフェースは、同じであっても異なるものであっても良い。受信装置20は、S5において、サブストリームの送信側識別子と受信側識別子との対応関係を送信装置10に通知する。送信装置10は、この通知により、各サブストリームにおいて使用する宛先IPアドレスと宛先ポート番号とを認識する。
【0031】
その後、送信装置10は、
図2及び
図3を用いて説明した様にデータを送信する。また、受信装置20は、サブストリームを単位として損失パケットを判定し、損失パケットが生じた場合には、送信装置10に通知を行う。
【0032】
図5は、データ送信中に実行されるサブストリーム変更処理のシーケンス図である。受信装置20は、サブストリームセットごとに損失パケット数をカウントする。受信装置20は、S10において所定周期毎に各サブストリームセットの損失パケット数を送信装置10に通知する。送信装置10は、各サブストリームセットの損失パケット数を受信すると、各サブストリームで送信したパケット数に基づき各サブストリームセットにおいて損失パケットが生じている比率である損失率を判定する。続いて、送信装置10は、同じストリーム内の各サブストリームセットの損失率の平均値を求める、送信装置10は、S11で、この平均値を式(1)のxとしてストリームに対応するサブストリームセットの数を求める。
【0033】
S11で求めたサブストリームセット数が、現在のサブストリームセット数と同じであると、送信装置10は、現在のサブストリームセット数を維持する。一方、S11で求めたサブストリームセット数が、現在のサブストリームセット数より多い場合、送信装置10は、サブストリームセット数がS11で求めたサブストリームセット数となる様に、サブストリームセットの追加を行う。なお、サブストリームセット数が減少する場合は、制御ヒステリシスを用いて、所定の差がでるまで現在のサブストリームセット数を維持してもよい。
【0034】
続いて、S12で決定したサブストリームセットに応じて、サブストリームセットに割り当てるサブストリームを決定する。例えば、サブストリームセットの追加を行った場合は、新たに追加したサブストリームセットにサブストリームを決定する。また、ストリーム単位では損失パケットがなく、より大きなウィンドウサイズが設定された場合であって、サブストリーム単位で損失パケットが発生してサブストリームにより小さなウィンドウサイズが設定された場合、現在のサブストリームではストリームに割り当てられたデータを送信することができない場合がある。このため、S12では送信装置10はストリームのウィンドウサイズとサブストリームのウィンドウサイズに基づいてストリームにサブストリームの再割り当てを行う。また、サブストリームの割り当ては、サブストリームの通信速度が特定可能な場合には、ストリームの目標速度を満たすよう、1つ以上のサブストリームの通信速度の合計が目標通信速度以上となるように1つ以上のサブストリームが割り当てられる。例えば、各ストリームの目標速度が2Gbpsである場合には、100Mbpsの通信速度のサブストリームが20本で1つのサブストリームセットとして割り当てられてもよい。
【0035】
続いて、送信装置10は、S13で、追加するサブストリームの送信側識別子を受信装置20に通知する。なお、当該通知は、同じストリームの現在のサブストリームを使用して行われるため、ストリームの識別子を通知する必要はない。受信装置20は、追加するサブストリームの受信側識別子を決定し、追加するサブストリームの送信側識別子と受信側識別子の対応関係をS14で送信装置10に通知する。これにより、ストリームには新たなサブストリームが追加される。また、S11で求めたサブストリームセット数が、現在のサブストリームセット数より少ない場合、送信装置10は、サブストリームセット数がS11で求めたサブストリームセット数となる様に、サブストリームの削除を行う。このため、送信装置10は、S13で、削除するサブストリームの送信側識別子を受信装置20に通知する。なお、S11で求めたサブストリームセット数が、現在のサブストリームセット数より少ない場合には、サブストリームセットの削除を行わず、現在のサブストリームセット数を維持する構成とすることもできる。
【0036】
図6は、本実施形態による送信装置10の構成図である。ストリーム決定部101は、上述した様に、目標速度Sに基づき設定するストリーム数を決定し、決定したストリーム数をサブストリームセット決定部102、サブストリーム決定部103及び通信部104に通知する。サブストリームセット決定部102は、上述したように、目標損失率Lに基づき、各ストリームを送信するサブストリームセットの数を決定する。サブストリーム決定部103は、サブストリームセットごとに、1つ以上のサブストリームを決定する。例えば、サブストリーム決定部103は、1つ以上のサブストリームのウィンドウサイズの合計がストリームのウィンドウサイズ以上となるようにサブストリームを割り当て、割り当てたサブストリームを通信部104に通知する。別の例では、サブストリーム決定部103は、複数のサブストリームの通信速度の合計がサブストリームの目標速度以上となるようにサブストリームを割り当てる。サブストリームの通信速度は、サブストリームの過去の通信速度に関する情報がない場合には所定値を用いてもよいし、過去の通信速度に関する情報がある場合には、過去の通信速度の平均に基づいて決定されてもよい。
【0037】
通信部104のフロー制御部106は、各ストリームの識別子と、サブストリームの識別子を決定して、それぞれのサブストリームがどの識別子のストリームに属するかを受信装置20に通知する。また、フロー制御部106は、パケットの損失率や、応答時間など、サブストリームの所定の通信パラメータの値に基づいて、各ストリームのウィンドウサイズと、各サブストリームのウィンドウサイズを別個に制御する。
【0038】
また、割当部105は、アプリケーションプログラムから受信するデータをパケット化し、各パケットを複数のストリームの何れかに割り当てる。
【0039】
通信部104の輻輳制御部106は、各ストリームの識別子と、各サブストリームの送信側識別子を決定して、各サブストリームの送信側識別子と、各サブストリームがどの識別子のストリームに属するかを受信装置20に通知する。また、輻輳制御部106は、受信装置20からサブストリームの送信側識別子と受信側識別子の対応関係を受信すると、各サブストリームでパケットの送信を開始する。
【0040】
割当部105は、アプリケーションプログラムから受信するデータをパケット化し、各パケットを複数のストリームのいずれかに割り当てる。また、ストリームに割り当てられたパケットを、そのストリームに対応付けられたサブストリームに割り当てる。
【0041】
データの送信中、輻輳制御部106は、ストリームごとにウィンドウサイズを管理し、サブストリームごとにウィンドウサイズを管理する。また、輻輳制御部106は、受信装置20からパケットの受信結果を示す受信結果情報を受信する。受信状況情報は、サブストリームレベルの受信状況を示す情報を含む。サブストリームレベルの受信状況は、各サブストリームで生じた損失パケット(第1損失パケット)の数を示す。輻輳制御部106は、受信装置20から通知された各サブストリームの第1損失パケット数に基づき、各サブストリームの損失率を求めてサブストリームセット決定部102に通知する。サブストリームセット決定部102は、各サブストリームの損失率に基づき、上述した様に、各ストリームの冗長レベル、すなわちサブストリームセットの数を決定する。そして、サブストリーム決定部103は各ストリームの各サブストリームセットのウィンドウサイズなどの通信パラメータに基づいてサブストリームセットに割り当てるサブストリームを決定する。
【0042】
また、輻輳制御部106は、各サブストリームで生じた第1損失パケットに応じて、各ストリームで生じた第2損失パケットを検出する。第2損失パケットは、ストリームに割り当てられたすべてのサブストリームセットにおいて第1損失パケットとなったパケットである。輻輳制御部106は、第2損失パケットを検出した場合、その第2損失パケットを、第2損失パケットを送信したすべてのサブストリームで再送する。例えば、
図3の例では、第2損失パケットとしてパケット#6を検出した輻輳制御部106は、パケット#6を送信したサブストリーム321,331でパケットの再送を行う。ここで、サブストリーム321、331でパケット#6の再送を行う。サブストリーム321、331の両方で、パケット#6のみを再送してもよいし、サブストリーム331は前回送信したパケットとしてパケット#6、#4を再送してもよい。
【0043】
なお、上記式(1)における目標損失率Lは、第2損失パケットの発生率の目標値である。目標損失率Lは、ストリーム毎に異なり得る。第1損失パケットとなったパケットでも、第2損失パケットとならなかったパケットは、再送されなくてもよい。
【0044】
図7は、受信装置20の構成図である。通信部701の輻輳制御部702は、送信装置10から各ストリームの識別子と、各ストリームに属する各サブストリームの送信側識別子を受信すると、各サブストリームの送信側識別子と対になる受信側識別子を決定し、各サブストリームの送信側識別子と受信側識別子の対応関係を送信装置10に通知する。
【0045】
データの受信中、輻輳制御部702は、ストリームと、サブストリームとを単位として輻輳制御を行う。輻輳制御部702は、ストリーム内のいずれかのサブストリームでパケットの損失(第1損失パケット)を検出すると、そのサブストリームに対してACKを送信しない、またはNACKを送信する。また、サブストリームのパケットの損失に基づいて、ストリームを単位とするパケットの損失(第2損失パケット)を検出する。輻輳制御部702は、この様に、サブストリームおよびストリームを単位として輻輳制御を行い、受信したパケットのデータをアプリケーションプログラムに出力する。
【0046】
さらに、輻輳制御部702は、ストリームごとの第2損失パケット数を所定期間ごとに集計し、受信状況情報として送信装置10に通知する。通知した受信状況情報に従い、送信装置10はストリームに対応付けるサブストリームセットの数の増加/減少を行う。送信装置10は、サブストリームセットの数の増加時/減少時、並びにデータの送信開始時に、サブストリームセットにサブストリームを割り当てる。送信装置10からサブストリームの識別子の通知を受信すると、受信装置20の輻輳制御部702は対応するサブストリームの受信側識別子を割り当てて送信装置10に通知する。
【0047】
さらに、輻輳制御部702は、サブストリーム毎の第1損失パケット数を所定期間毎に集計し、受信状況情報として送信装置10に通知する。通知した受信状況情報に従い送信装置10からサブストリームの追加/削除が通知されると、輻輳制御部702は、サブストリームの追加/削除を行う。
【0048】
以上、本実施形態では、ストリームを1つ以上のサブストリームセットで構成し、ストリームの同じパケットを複数のサブストリームセットで冗長的に送信する。さらに、サブストリームセットには1つ以上のサブストリームが割り当てられる。ストリームとサブストリームとは別個にフロー制御が行われ、サブストリームのウィンドウサイズを満たすようにサブストリームの組み合わせが選択される。これによって、通信環境などに起因するサブストリームごとのパケットロスや通信速度の影響を加味して、適切なサブストリームの組み合わせによってストリームのパケット損失率を制御することが可能になる。したがって、必要なストリームの数は、従来のMPTCPで必要なストリーム数より小さくできる。また、通信経路の状況に応じてサブストリームを組み合わせることができ、ネットワークへの負荷を抑えながら、MPTCPを使用した通信速度の向上を実現することができる。
【0049】
<その他の実施形態>
なお、本実施形態では、式(1)により各ストリームのサブストリーム数を求めるものとしたが、本発明は式(1)により各ストリームのサブストリーム数を求めることに限定されない。具体的には、ストリームにおける第2損失パケットの発生率(損失率)を、当該ストリームの目標値(式(1)におけるL)以下とするために必要なサブストリームセット数を求めるものであれば、他の方法を使用することができる。
【0050】
なお、本発明による通信装置、つまり、上述した送信装置10及び受信装置20は、デバイスの1つ以上のプロセッサで実行されると、当該デバイスを送信装置10及び/又は受信装置20として動作させるプログラムにより実現することができる。これらプログラムは、デバイス可読記憶媒体に格納されて、又は、ネットワーク経由で配布が可能なものである。
【0051】
上記構成により、処理負荷を抑えつつ高速なデータ転送を実現することができる。よって、国連が主導する持続可能な開発目標(SDGs)の目標9「レジリエントなインフラを整備し、持続可能な産業化を推進するとともに、イノベーションの拡大を図る」に貢献することが可能となる。
【0052】
発明は上記の実施形態に制限されるものではなく、発明の要旨の範囲内で、種々の変形・変更が可能である。
【符号の説明】
【0053】
105:割当部、106:フロー制御部