(57)【要約】【課題】  通信設定を切り替えてパケットを送信する場合に、パケットが受信側に届けられるまでの時間差を実測していると、時間差を実測している期間は、送信側から送信する順序で受信側にパケットを届けさせるための設定が待たされてしまう。切り替え前の通信設定と切り替え後の通信設定との違いが、パケットが受信側に届けられるまでの時間差を発生させる。【解決手段】  パケット通信の通信設定を切り替える通信方法であって、送信側から送信する順序とは異なる順序で受信側にパケットが届けられると予測されると、前記通信設定の切り替える場合に、前記送信側から送信する前記順序で前記受信側に前記パケットが届けられるように、前記パケットの送信タイミングを調整する。【選択図】  図４
2014216679.tif 000002
【特許請求の範囲】
【請求項１】
パケット通信の通信設定を切り替える通信方法であって、
送信側から送信する順序とは異なる順序で受信側にパケットが届けられると予測されると、前記通信設定を切り替える場合に、前記送信側から送信する前記順序で前記受信側に前記パケットが届けられるように、前記パケットの送信タイミングを調整する
ことを特徴とする通信方法。
【請求項２】
第１通信設定で送信された送信済みパケットに対する送信要求が発生すると、前記送信側から送信された順序とは異なる順序で前記受信側にパケットが届けられると予測して、
調整される前記送信タイミングは、前記通信設定を前記第１通信設定から第２通信設定へ切り替える場合に、前記第２通信設定で送信されるパケットの送信タイミングである
ことを特徴とする請求項１に記載の通信方法。
【請求項３】
前記第１通信設定から前記第２通信設定へ切り替える場合に、前記第２通信設定で送信される前記パケットの送信を遅延させることによって、前記送信タイミングを調整する
ことを特徴とする請求項２に記載の通信方法。
【請求項４】
前記送信済みパケットに対する送信要求を最初に受信した第１時刻から、前記送信済みパケットに付与されたパケット順序を識別するための順序情報とは異なる順序情報が付与される予定のパケットに対する送信要求を受信した第２時刻までの時間に応じた遅延量に従って、前記第２通信設定で送信される前記パケットを遅延させる
ことを特徴とする請求項３に記載の通信方法。
【請求項５】
前記第１時刻から、前記送信済みパケットが前記受信側に届けられなかったと判定するための時間を過ぎても、前記異なる順序情報が付与されたパケットに対する送信要求を受信しない場合に、前記送信済みパケットを再送する
ことを特徴とする請求４に記載の通信方法。
【請求項６】
前記通信設定は、通信方式の異なる通信リンクの切り替えによって、切り替えられる
ことを特徴とする請求項１〜５に記載の通信方法。
【請求項７】
前記第１通信設定として設定された第１通信リンクを使用して送信された前記送信済みパケットに使用した変調方式と、前記第２通信設定として設定された前記第２通信リンクを使用して送信される前記パケットに使用した変調方式との差に応じて、前記遅延量を調整する
ことを特徴とする請求項６の何れか１項に記載の通信方法。
【請求項８】
前記送信済みのパケットに対する送信要求を、第１通信レイヤのプロトコルに従って発生させ、
前記通信設定の切り替えを、前記第１通信レイヤよりも下位の第２通信レイヤで実行する
ことを特徴とする請求項２〜７の何れか１項に記載の通信方法。
【請求項９】
パケット通信の通信設定を切り替えてパケットを送信する第１通信装置と、
前記第１通信装置によって送信されたパケットを受信する第２通信装置と
を有し、
前記第１通信装置は、前記第１通信装置から送信した順序とは異なる順序で前記第２通信装置にパケットが届けられると予測されると、前記通信設定を切り替える場合に、パケットの送信タイミングを調整することを特徴とする通信システム。
【請求項１０】
パケット通信の通信設定を切り替える通信装置であって、
送信側から送信した順序とは異なる順序で受信側にパケットが届けられると予測されると、前記通信設定を切り替える場合に、パケットの送信タイミングを調整する調整部
を有することを特徴とする通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信方法、通信システム、及び通信装置に関する。
【背景技術】
【０００２】
通信のスループットを向上させる技術として、リンクアグリゲーション技術が知られている。リンクアグリゲーション技術とは、送信側と受信側との間に、通信に使用可能な通信リンクを複数用意しておき、通信リンクの使用状況に合わせて、送信側からのデータを送信するための通信リンクを切り換えることによって、通信のスループットを向上させるという技術である。そして、送信側から送信されるデータは、主に、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）や、ＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）といったプロトコルに従って送信される。
【０００３】
ところで、リンクアグリゲーション技術を使用した場合、通信リンクの通信速度や通信遅延などの通信性能の差によって、送信側から送信された順序とは異なる順序で、受信側にパケットが届けられることがある。そして、ＴＣＰにリンクアグリゲーション技術を適用した場合には、このパケットの順序逆転によって、ＴＣＰの再送制御などが実行されることがある。
【０００４】
なお、ｐｉｎｇパケット等のプロブパケットを使用して、無線システム区間における無線通信方式毎の遅延差を実測し、遅延時間の短い無線通信方式で送信されるパケット全てを当該遅延差分だけ遅延させて、パケットの順序逆転を回避する技術が知られている。また、ＩＰ網で送信された複数のパケットの遅延時間の分布を記録して、パケットの送出時刻を算出する技術が知られている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１１−１３５１４５号公報
【特許文献２】国際公開第２００６−０７０４７１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
通信設定を切り替えてパケットを送信する場合に、パケットが受信側に届けられるまでの時間差を実測していると、時間差を実測している期間は、送信側から送信する順序で受信側にパケットを届けさせるための設定が待たされてしまう。切り替え前の通信設定と切り替え後の通信設定との違いが、パケットが受信側に届けられるまでの時間差を発生させる。
【０００７】
本願は、送信側から送信された順序とは異なる順序で受信側にパケットが届かないように設定させる通信方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
開示の通信方法は、パケット通信の通信設定を切り替える通信方法であって、送信側から送信する順序とは異なる順序で受信側にパケットが届けられると予測されると、前記通信設定を切り替える場合に、前記送信側から送信する前記順序で前記受信側に前記パケットが届けられるように、前記パケットの送信タイミングを調整する。
【発明の効果】
【０００９】
本開示の一側面によれば、送信側から送信する順序で受信側にパケットを届けさせるための設定までにかかる時間が短縮される。
【図面の簡単な説明】
【００１０】
【図１】実施例の通信システムの例。
【図２】実施例の通信システムにおける通信の例。
【図３】通信の比較例。
【図４】実施例の通信システムにおける通信の他の例。
【図５】実施例の通信装置のハードウェア構成の例。
【図６】実施例の基地局の機能ブロックの例。
【図７】実施例の通信装置が記憶する情報の例。
【図８】実施例の通信装置が記憶する情報の他の例。
【図９】実施例の通信装置が実行する処理の例。
【図１０】実施例の通信装置が実行する処理の他の例。
【図１１】実施例の通信装置が実行する処理の他の例。
【図１２】実施例の通信装置が実行する処理の他の例。
【図１３】実施例の通信装置が実行する処理の他の例。
【図１４】実施例の通信装置が実行する処理の他の例。
【図１５】実施例の通信装置が実行する処理の他の例。
【図１６】実施例の端末の機能ブロックの例。
【発明を実施するための形態】
【００１１】
図１に、実施例の通信システムの例が示される。通信システム１は、基地局１０及び端末２０及び２１を含む。マクロ基地局３０がカバーするネットワーク５０に含まれる基地局１０は、アプリケーションサーバであるサーバ４０から送信されたパケットを、基地局３０を介して受信し、このパケットを端末２０や端末２１へ送信する。なお、図１にはクライアント装置として端末２０及び２１が図示されているが、実施例はこれらに限定されない。基地局１０は、基地局１０がカバーするネットワーク６０における無線リソースの使用状況に応じて複数の無線リンクを切り替えながら、ネットワーク６０内に存在する端末２０及び２１のような複数のクライアント装置にパケットを送信する。また、実施例は、基地局１０と端末２０及び２１とが複数の無線リンクを使用して通信する場合を例に後述されるが、無線通信や有線通信に限定されずに、ホスト装置とクライアント装置との間でリンクアグリゲーションを実現させるための通信リンク一般に適用可能である。
【００１２】
図２に、実施例の通信システムにおける通信の例が示される。図２には、トランスポート層のプロトコルの一例であるＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）に従って、基地局１０と端末２０とが通信する例であって、基地局１０が、無線リソースの空き状況に応じて、ＴＣＰに従うパケットを送信するための無線リンクをＡからＢに切り換える通信の例が示される。ここで、無線リンクＡは、例えば、移動体通信の通信方式に従ってデータ通信を無線で行うための無線リンクであり、無線リンクＢは、例えば、無線ＬＡＮ方式に従ってデータ通信を無線で行うための無線リンクであるとする。通信方式の違いによって、一般には、無線リンクの通信速度や通信遅延が異なるが、図２に示される例は、そのような通信速度等の差があっても、端末２０によって受信されたパケットに順序逆転が発生しない例である。なお、送信側が基地局１０で、受信側が端末２０の例を示すが、実施例はこれに限定されず、送信側が端末２０で、受信側が基地局１０であってもよい。
【００１３】
ホスト装置であるサーバ４０と端末２０間におけるＴＣＰに従う通信では、受信側である端末２０がパケットを受信すると、端末２０は、サーバ４０によってパケットに付与された、パケットの順序を示すためのシーケンス番号に基づき、未受信のパケットを判定する。そして、まだ受信していないパケットの送信要求をするために、まだ到着していないパケットのうち順序が先頭のパケットのシーケンス番号をＡＣＫにおいて示して、これを送信側である基地局１０に送信する。ＡＣＫを受信した基地局１０は、ＡＣＫに示されているシーケンス番号のパケットの送信が要求されたとして、このパケットが未送信であれば、このシーケンス番号のパケットを端末２０へ送信する。他方、このパケットを基地局１０から送信済みであれば、その後、同じシーケンス番号のＡＣＫを所定回数受け取った場合に、このパケットが端末２０に届かなかったと判定して、再送する。なお、パケットを送信済みであるというのは、基地局１０から端末２０にはパケットを少なくとも送信したという意味である。例えば、サーバ４０から送信済みであっても、基地局１０に至るまでの通信経路でパケットロスが発生した場合には、基地局１０はパケットを直ちには送信できないことをここに補足しておく。
【００１４】
ところで、端末２０は、パケットを受信する度にＡＣＫを送信するのではなく、ＡＣＫの送信を所定時間待機することによって、複数の受信パケットに対して、１つのＡＣＫが送信されるようにする。そのため、基地局１０から送信された順序通りに端末２０にパケットが到着している場合には、基地局１０へ送信されるＡＣＫの数が減ることにより、パケット毎にＡＣＫが発生するよりも、通信帯域の利用効率を向上させることができる。なお、基地局１０は、パケット毎にＡＣＫを受信しなくても、受信したＡＣＫに示されているシーケンス番号より前までのパケットまでは、少なくとも端末２０によって受信されたと判定することができる。
【００１５】
また、端末２０は、基地局１０へＡＣＫを送信する場合に、まだ到着していないパケットのうち順序が先頭のパケットのシーケンス番号をＡＣＫに書き込むことに加えて、端末２０の受信バッファの空き容量などに応じて、連続して受信可能なデータ量をＡＣＫによって基地局１０に通知する。この連続して受信可能なデータ量がウィンドウサイズとよばれ、基地局１０は、ウィンドウサイズの範囲内に納まる数のパケットを所定の送信間隔で連続的に端末２０に送信する。
【００１６】
例えば、図２に示されるように、無線リンクＢを使用して基地局１０からパケット１（Ｂ）が端末２０へ送信される。ここで、パケットに続く数字がシーケンス番号を表し、（）によって示されるアルファベットが、パケットが送信される際に使用される無線リンクを識別するための情報であるとする。すなわち、図２に示される例では、パケット１は複数のパケットが送信される場合の１番目のパケットであって、無線リンク（Ｂ）によって送信されてることが示される。なお、無線リンクは後述される通信設定の一例である。
【００１７】
パケット１（Ｂ）を受信した端末２０は、端末２０にまだ到着していないパケットのうち順序が先頭のパケットのシーケンス番号として、１に次ぐ２をＡＣＫにおいて示して（図２にはＡＣＫ２として表示される）、このＡＣＫ２を基地局１０に送信することで、パケット２の送信要求をする。さらに、端末２０は連続して受信可能なデータサイズであるウィンドウサイズをＡＣＫ２によって基地局１０に通知する。なお、実施例はこの例に限定されないが、端末２０から基地局１０に送信されるＡＣＫに順序逆転が発生しないよう、受け取ったパケットに適用された無線リンクにかかわらず、同一の無線リンク（例えば無線リンクＢ）を使用して、基地局１０へ送信されるとする。これは、基地局１０から端末２０に送信されるパケットにはサーバ４０からのアプリケーションデータが含まれる場合があるのに対して、ＡＣＫのデータサイズが小さいため、ＡＣＫに対する無線リンクの割り当ての許容範囲が大きくとれるためである。
【００１８】
このＡＣＫ２を受信した基地局１０は、少なくともパケット１（Ｂ）が端末２０に届けられたことをＡＣＫ２によって確認し、送信が要求されたパケット２（Ａ）と、ウィンドウサイズ内で送信可能な、パケット３（Ｂ）及びパケット４（Ｂ）を端末２０に送信する。ここで、図２に示される例では、基地局１０における無線リンクに切り替え規則に従って、パケット２（Ａ）がパケット１（Ｂ）とは異なる無線リンクＡによって送信されており、パケット２（Ａ）が送信された後、無線リンクが切り換えられてパケット３（Ｂ）及びパケット４（Ｂ）が無線リンクＢによって送信された例が示される。
【００１９】
なお、無線リンクの切り替えは、例えば、無線リソースの空き状況に応じて実行される。例えば、無線リンクＢを複数の端末で共有して使用していた場合に、無線リンクＢの無線リソースの空きが所定よりも小さくなると、無線リンクＡの無線リソースに空きがある場合には、ある端末に送信するパケットの一部を、無線リンクＡを使用して送信する。これは、無線リンクＢの無線リソースが空くまでパケット送信を遅らせるよりも、単位時間あたりに基地局１０から送信されるパケットのデータ量と、端末によって受信されるパケットのデータ量を近づけることによって、良好なデータ通信となるからである。また、無線リンクＡから無線リンクＢへの切り替えも同様の理由によって実行される。ところで、ＡＣＫの送信が、トランスポート層のプロトコルであるＴＣＰに従って実行されるのに対して、通信設定の一例である無線リンクの切り替えは、トランスポート層よりも下位の通信レイヤである、例えば無線レイヤで実行される。
【００２０】
パケット２（Ａ）、パケット３（Ｂ）及びパケット４（Ｂ）を受信した端末２０は、受信バッファの空き容量に応じてウィンドウサイズを更新して、更新されたウィンドウサイズと共に、５番目のシーケンス番号を特定したＡＣＫ５を基地局１０に送信する。なお、実施例はこれに限定されないが、基地局１０から送信されるパケットのヘッダ部に、パケット送信に使用された通信設定である無線リンクの通信方式を識別する情報が含まれている。そのため、端末１０はこの情報に従って、通信方式に合わせて受信パケットを処理することができ、基地局１０へＡＣＫを送信できる。  基地局１０は、ＡＣＫ５を受信すると、更新されたウィンドウサイズに従い、パケット５（Ｂ）、パケット６（Ａ）、パケット７（Ｂ）及びパケット８（Ｂ）を端末２０に送信する。
【００２１】
図３に、通信の比較例が示される。図３には、トランスポート層のプロトコルの一例であるＴＣＰに従って、基地局１０と端末２０とが通信する場合の比較例が示される。そして、図３に示される例は、図２に示される例と異なり、基地局１０から端末２０にパケットが送信される場合に、パケットを送信するための無線リンクが切り換えられた結果、通信速度の遅い無線リンクＡと通信速度の速い無線リンクＢとの通信速度差によって、端末２０によって受信されたパケットに順序逆転が発生した場合の例である。
【００２２】
なお、図３に示されるようなパケットの順序逆転は、無線リンク間の通信速度に仮に差がなくても、無線リンクＡによる通信遅延が無線リンクＢによる通信遅延よりも大きい場合には発生しうる。また、無線リンクの通信方式が同じであっても、パケットに施される変調方式や符号化率が変更されることによって、無線リンクが切り替えられた場合と同じようにパケットの伝送レートが変わってしまい、パケットの順序逆転が発生する場合がある。このような種々の通信設定の切り替えや通信遅延差によってパケットの順序逆転が発生する可能性があるが、ここでは、無線リンクの切り替えによって、パケットの順序逆転が発生する場合を例示する。また、実施例はこれに限定されないが、端末２０では、処理負荷を極力下げるために、順序逆転が発生してしまったパケットの順序整列を実行しないものとして説明する。
【００２３】
図３に示されるように、無線リンクＢを使用して基地局１０からパケット１（Ｂ）が端末２０へ送信される。パケット１（Ｂ）を受信した端末２０は、端末２０にまだ到着していないパケットのうち順序が先頭のパケットのシーケンス番号として、１に次ぐ２をＡＣＫにおいて示して（図３にはＡＣＫ２として表示される）、このＡＣＫ２を基地局１０に送信することで、パケット２の送信要求をする。さらに、端末２０は連続して受信可能なデータサイズであるウィンドウサイズをＡＣＫ２によって基地局１０に通知する。
【００２４】
このＡＣＫ２を受信した基地局１０は、少なくともパケット１（Ｂ）が端末２０に届けられたことをＡＣＫ２によって確認し、送信が要求されたパケット２（Ａ）と、ウィンドウサイズ内で送信可能な、パケット３（Ｂ）及びパケット４（Ｂ）を端末２０に送信する。ここで、図３に示される例では、基地局１０における無線リンクに切り替え規則に従って、パケット２（Ａ）がパケット１（Ｂ）とは異なる無線リンクＡによって送信されており、パケット２（Ａ）が送信された後、無線リンクが切り換えられてパケット３（Ｂ）及びパケット４（Ｂ）が無線リンクＢによって送信された例が示される。
【００２５】
ここで、図３に示される例では、無線リンクＡの通信速度の方が、無線リンクＢの通信速度よりも遅く、無線リンクＡ及びＢとの通信速度差がある。そのため、端末２０は、パケット２（Ａ）を受信するよりも前に、パケット３（Ｂ）及びパケット４（Ｂ）を受信することとなる。パケット３（Ｂ）を受信した端末２０は、パケット１（Ｂ）に次いで受信したパケットがパケット３（Ｂ）であり、パケット２をまだ受信していないため、ＴＣＰのプロトコルに従い、パケット２の送信を基地局１０に要求するために、ＡＣＫ２を再び基地局１０へ送信する。そして、パケット４（Ｂ）を受信した端末２０は、パケット２をまだ受信していないため、ＴＣＰのプロトコルに従い、パケット２の送信を基地局１０に要求するために、ＡＣＫ２をあらためて基地局１０へ送信する。
【００２６】
つまり、端末２０は、パケットのシーケンス番号に基づき、パケットを順序通り受信できている場合には、パケットの受信の度にＡＣＫを送信せずに、ＡＣＫの送信を所定時間待つが、パケットを順序通り受信できていない場合には、ＴＣＰのプロトコルに従い、先に受け取ってしまったパケットの受信に応答して、未受信のパケットのシーケンス番号を示したＡＣＫを、基地局１０へ送信することとなる。
【００２７】
こうして、図３に示された例では、基地局１０は、パケット２（Ａ）を送信する前に受信したＡＣＫ２に加えて、同じシーケンス番号が示されたＡＣＫ２を２回受信することになる。このように、同じシーケンス番号のパケットが重複して要求された場合のＡＣＫがＤｕｐｌｉｃａｔｅ  ＡＣＫとよばれ、基地局１０は、既に受信したＡＣＫとシーケンス番号が重複していれば、そのＡＣＫをＤｕｐｌｉｃａｔｅ  ＡＣＫと判定する。なお、シーケンス番号が重複する場合のＡＣＫがＤｕｐｌｉｃａｔｅ  ＡＣＫであって、ＡＣＫとＤｕｐｌｉｃａｔｅ  ＡＣＫとは実質的には同じであるが、説明のために、ＡＣＫとＤｕｐｌｉｃａｔｅ  ＡＣＫとを区別して使用する。
【００２８】
上述したように、ＴＣＰのプロトコルに従う通信では、シーケンス番号通りにパケットが受信できていない場合に、受信側である端末２０は、先に到着してしまった各パケットを受信する度に、シーケンス番号が先であってまだ受け取っていないパケットの送信を要求するＡＣＫを基地局１０に送信する。例えば、パケット２（Ｂ）がパケットロスをしておらず、無線リンクの通信速度差によって端末２０への到着が遅れているだけであって、待っていれば端末２０にパケット２（Ｂ）が届けられる場合であっても、端末２０はパケットロスとパケットの順序逆転とをこの時点では区別できないため、上述のような重複したＡＣＫ送信が実行されてしまう。実行されてしまう。そして、パケットの順序逆転によって、端末２０からのＤｕｐｌｉｃａｔｅ  ＡＣＫの送信が増加してしまうと、端末２０から基地局１０への通信に使用される無線リソースが増加してしまう。
【００２９】
また、ＴＣＰのプロトコルに従う通信では、同じシーケンス番号を示すＤｕｐｌｉｃａｔｅ  ＡＣＫが、基地局１０によって所定数以上受信されると、基地局１０と端末２０との通信経路においてパケットロスが発生したと判定する。そして、基地局１０は、ＴＣＰのウィンドウサイズを小さくして、単位時間あたりに送信するデータ量を少なくする制御を行い、パケットを再送する。このため、待っていれば端末２０にパケットが届けられるにもかかわらず、パケットの順序逆転によってＤｕｐｌｉｃａｔｅ  ＡＣＫが増加すると、パケットロスが発生していない場合であっても、ウィンドウサイズが小さくされてしまうことで、スループットが下げられてしまう。さらには、再送される必要のなかったパケット２（Ｂ）がネットワークに再送されてしまう。
【００３０】
ところで、図３に示される例の説明の戻ると、パケット３（Ｂ）及びパケット４（Ａ）を受信した後にパケット２（Ａ）を受信した端末２０は、まだ受け取っていないパケットのシーケンス番号として５番目をＡＣＫにおいて示して、このＡＣＫ５を基地局１０に送信する。
【００３１】
ここで、基地局１０は、Ｄｕｐｌｉｃａｔｅ  ＡＣＫを複数受信したことで、ウィンドウサイズを小さくしているとする。そのため、図３に示される例では、ＡＣＫ５を受信した基地局１０は、送信するパケット数を少なくし、その結果としてパケット５（Ｂ）を１つ送信する。
【００３２】
パケット５（Ｂ）を受信した端末２０、まだ受け取っていないパケットのシーケンス番号として６番目をＡＣＫにおいて示して、このＡＣＫ６を基地局１０に送信する。なお、基地局１０が送信するパケット数は、正しくＡＣＫを受信できることを確認しながら徐々に増加するが、図３に示される例では、ＡＣＫ６を受信した基地局１０が、この後、３つのパケットを端末２０に送信することとする。
【００３３】
このＡＣＫ６を受信した基地局１０は、パケット５（Ｂ）が端末２０に受信されたことを確認して、送信が要求されたパケット６（Ａ）と、ウィンドウサイズ内で送信可能な、パケット７（Ｂ）及びパケット８（Ｂ）を端末２０に送信する。ここで、図３に示される例では、基地局１０における無線リンクの切り換え規則に従って、パケット６（Ａ）が無線リンクＡによって送信されており、パケット６（Ａ）が送信された後、無線リンクが切り換えられてパケット７（Ｂ）及びパケット８（Ｂ）が無線リンクＢによって送信されたとする。
【００３４】
図３に示される例では、依然として、無線リンクＡの通信速度の方が、無線リンクＢの通信速度よりも遅く、無線リンクＡ及びＢとの通信速度差があるため、端末２０は、パケット６（Ａ）を受信するよりも前に、パケット７（Ｂ）及びパケット８（Ｂ）を受信する。従って、端末２０は、パケット６をまだ受信していないため、パケット６の送信を要求するために、図３に図示されるように、基地局１０にＡＣＫ６を２回送信することになってしまう。
【００３５】
これは、無線リンクの切り替えが無線レイヤにおいて無線リソースの空き状況に応じて切り換えられるのに対して、これとは別に、ＴＣＰのプロトコルに従ってパケットが受信側に届けられるように送信制御されることによる。このように、異なる通信レイヤが独立して通信制御をしているため、無線リンクの通信速度差や通信遅延差によってパケットの順序逆転が生じ、待っていればパケットが受信側に届けられる場合であっても、冗長なＤｕｐｌｉｃａｔｅ  ＡＣＫが発生することになる。そして、冗長なＤｕｐｌｉｃａｔｅ  ＡＣＫによって、無線リソースが使用されてしまい、また、ＴＣＰのプロトコルに従ってスループットを下げるような制御が働き、再送する必要のないパケットが再送されてしまう。このような技術的な課題は、発明者によって新規に見出された課題である。
【００３６】
図４に、実施例の通信システムにおける通信の他の例が示される。図４に示された例は、図３に沿って説明した理由によってパケットの順序逆転が発生する可能性のある通信設定の切り替えが実行されたとしても、後述される実施例によって、パケットの順序逆転が生じないように、基地局１０によってパケット送信を遅延させた場合の例である。
【００３７】
まず、無線リンクＢを使用して基地局１０からパケット１（Ｂ）が端末２０へ送信される。無線リンクＢを使用して基地局１０からパケット１（Ｂ）が端末２０へ送信される。パケット１（Ｂ）を受信した端末２０は、端末２０にまだ到着していないパケットのうち順序が先頭のパケットのシーケンス番号として、１に次ぐ２をＡＣＫにおいて示して（図４にはＡＣＫ２として表示される）、このＡＣＫ２を基地局１０に送信することで、パケット２の送信要求をする。さらに、端末２０は連続して受信可能なデータサイズであるウィンドウサイズをＡＣＫ２によって基地局１０に通知する。
【００３８】
このＡＣＫ２を受信した基地局１０は、パケット２（Ａ）と、ウィンドウサイズ内で送信可能な、パケット３（Ｂ）及びパケット４（Ｂ）を端末２０に送信する。ここで、図４に示される例では、基地局１０における無線リンクに切り換え規則に従って、パケット２（Ａ）がパケット１（Ｂ）とは異なる無線リンクＡによって送信されており、パケット２（Ａ）が送信された後、無線リンクが切り換えられてパケット３（Ｂ）及びパケット４（Ｂ）が無線リンクＢによって送信された例が示される。
【００３９】
ここで、図４に示される例では、無線リンクＡの通信速度の方が、無線リンクＢの通信速度よりも遅く、無線リンクＡ及びＢとの通信速度差があるとする。なお、図３に示される例は、無線リンク間の通信速度に仮に差がなくても、無線リンクＡによる通信遅延が無線リンクＢによる通信遅延よりも大きい場合には発生しうる。また、無線リンクの通信方式が同じであっても、パケットに施される変調方式や符号化率が変更されることによって、無線リンクが切り替えられた場合と同じようにパケットの伝送レートが変わってしまい、パケットの順序逆転が発生する場合がある。このような種々の通信設定の切り替えや通信遅延差によってパケットの順序逆転が発生する可能性があるが、ここでは、無線リンクの切り替えによって、パケットの順序逆転が発生する場合を例示する。  無線リンクＡ及びＢとの通信速度差があるため、端末２０は、パケット２（Ａ）を受信するよりも前に、パケット３（Ｂ）及びパケット４（Ｂ）を受信することとなる。パケット３（Ｂ）を受信した端末２０は、パケット１（Ｂ）に次いで受信したパケットがパケット３（Ｂ）であり、パケット２をまだ受信していないため、ＴＣＰのプロトコルに従い、パケット２の送信を基地局１０に要求するために、ＡＣＫ２を再び基地局１０へ送信する。そして、パケット４（Ｂ）を受信した端末２０は、パケット２をまだ受信していないため、ＴＣＰのプロトコルに従い、パケット２の送信を基地局１０に要求するために、ＡＣＫ２をあらためて基地局１０へ送信する。
【００４０】
こうして、図４に示された例では、基地局１０は、パケット２（Ａ）を送信する前に受信したＡＣＫ２に加えて、同じシーケンス番号が示されたＡＣＫ２を２回受信することになる。
【００４１】
パケット２（Ａ）が無線リンクＡによって送信されることで、パケット３（Ｂ）及びパケット４（Ｂ）を受信した後にパケット２（Ａ）を受信した端末２０は、まだ受け取っていないシーケンス番号として５番目をＡＣＫにおいて示して、このＡＣＫ５を基地局１０に送信する。
【００４２】
基地局１０は、Ｄｕｐｌｉｃａｔｅ  ＡＣＫを複数受信したことで、ウィンドウサイズを小さくしているとする。そのため、図４に示される例では、ＡＣＫ５を受信した基地局１０は、送信するパケット数を少なくし、その結果としてパケット５（Ｂ）を１つ送信する。
【００４３】
なお、詳細は後述するが、実施例によれば、図８に示されるように、基地局１０によってＡＣＫ２が最初に受信された時刻とＡＣＫ５が受信される時刻が記録される。また、その時間範囲に受信するＤｕｐｌｉｃａｔｅ  ＡＣＫの回数も記録される。そして、通信速度が遅い方の無線リンクから通信速度が速い方の無線リンクに切り換えられたりした場合に、ＡＣＫの受信時刻やＤｕｐｌｉｃａｔｅ  ＡＣＫの受信回数に応じて、通信速度が速い方の無線リンクによって送信されるパケットを遅延させて送信して、パケットの順序逆転を発生しないようにしている。
【００４４】
ところで、パケット５（Ｂ）を受信した端末２０、まだ受け取っていないパケットのシーケンス番号として６番目をＡＣＫにおいて示して、このＡＣＫ６を基地局１０に送信する。なお、基地局１０が送信するパケット数は、正しくＡＣＫを受信できることを確認しながら徐々に増加するが、図４に示される例では、ＡＣＫ６を受信した基地局１０が、この後、パケット６（Ａ）と、ウィンドウサイズ内で送信可能な、パケット７（Ｂ）及びパケット８（Ｂ）を端末２０に送信することとする。ここで、図３に示される例では、基地局１０における無線リンクに切り換え規則に従って、パケット６（Ａ）が無線リンクＡによって送信されており、パケット６（Ａ）が送信された後、無線リンクが切り換えられてパケット７（Ｂ）及びパケット８（Ｂ）が無線リンクＢによって送信されたとする。
【００４５】
図４に示される例では、無線リンクＡの通信速度の方が無線リンクＢの通信速度よりも遅く、無線リンクＡ及びＢとの通信速度差があるが、実施例によって、パケット７（Ｂ）が遅延させられて送信されている。そして、詳細は後述するが、パケット７（Ｂ）に与えられる遅延量は、ＡＣＫの受信時刻などに応じて設定され、無線リンクＡ及びＢとの通信速度差があっても、パケット７（Ｂ）がパケット６（Ａ）よりも早く端末２０に到着しないような遅延に設定される。
【００４６】
従って、端末２０は、パケット６（Ａ）、パケット７（Ｂ）及びパケット８（Ｂ）を、その順序通りに受信することとなる。つまり、図３に示される例とは異なり、端末２０は、ＡＣＫ６を再び送信しない。そして、端末２０は、パケット８（Ｂ）を受け取ると、まだ受け取っていないパケットのシーケンス番号として９番目をＡＣＫにおいて示して、このＡＣＫ９を基地局１０に送信する。
【００４７】
図４に沿って実施例による効果の一側面を説明した。実施例の一側面によれば、複数の無線リンクにパケットを振り分けるような通信設定が切り替えられる場合に、基地局１０が、Ｄｕｐｌｉｃａｔｅ  ＡＣＫによって、送信済みのパケットの送信要求を受け取ると、当該シーケンス番号のパケットを送信した場合に使用した無線リンクよる遅延が大きいと判定する。つまり、当該無線リンクの通信遅延の方が、他の無線リンクの通信遅延よりも大きいと判定する。
【００４８】
そして、当該無線リンクから他の無線リンクに切り換えてパケットを送信する場合に、当該他の無線リンクを使用して送信されるパケットを送信側で遅延させることで、無線リンクが切り替えられてもパケットの順序逆転が生じないようにしている。このように、通常の通信中に送信側と受信側とでやり取りされるＡＣＫの受信状況を利用することで通信設定による差を予測し、通信設定の切り替えに合わせて順序逆転が発生しないように、送信側がパケット送信のタイミング調整している。これによって、端末２０から基地局１０への冗長なＤｕｐｌｉｃａｔｅ  ＡＣＫが減少し、ウィンドウサイズが縮小されてスループットが低下してしまうことが防止される。また、再送される必要のないパケットが再送されなくなる。
【００４９】
また、図４に示される例では、遅延の大きい無線リンクのパケット転送から遅延の小さい無線リンクへのパケット転送に切り替えた場合に、全てのパケットに遅延を与えるのではなく、例えば、最初のパケットに対して遅延を与えることで、無線リソースを効率的に使用している。
【００５０】
例えば、テスト信号によって無線リンク間の固定遅延差を測定し、その遅延差分の遅延を遅延の小さな無線リンクによって送信される全てのパケットに与えると、順序逆転が発生する度に、全ての無線リンクに対してテスト信号による測定が必要となり、また、全てのパケットを遅延させることで無線リソースの使用効率を下げてしまう。
【００５１】
なお、順序逆転の発生を解消する方法として、受信側の装置に受信バッファを設置して、受信側の装置のＴＣＰレイヤにパケット処理を渡す前に、パケットの順序を整列させる方法がある。この場合、受信側の装置では、パケットの順序整列のための処理負荷が高くなったりしてしまう。そのため、受信側の装置ではなく、実施例のように、送信側でパケットの順序逆転が発生しないように制御できることがより好まれる。
【００５２】
そして、実施例は、無線リンクの切り替えだけでなく、変調方式や符号化率の切り替えによって伝送レートが変わり、パケットの順序逆転が発生してしまうような場合にも効果がある。例えば、基地局がパケット送信に適用する変調方式や符号化率を、より速い伝送レートの変調方式や符号化率に切り替えた場合に、これに合わせて、パケット送信のタイミングを遅延させて、受信側に届けられるパケットに順序逆転が発生しないようにするようにしてもよい。
【００５３】
つまり、実施例は、上述したような種々の通信設定の切り替えが実行される場合に、通信設定の切り替えによってパケットの順序逆転が発生してしまう可能性があっても、ＡＣＫの受信状況に応じて、通信設定の切り替えに合わせてパケットの送信タイミングを調整することにより、パケットの順序逆転を起こさないよう、速やかに対処できる。なお、後述される実施例では、通信設定の一例として無線リンクが切り替えられる場合について例示するが、以上に説明した通り、実施例はこの例示に限定されないことは明らかである。図５に、実施例の通信装置のハードウェア構成の例が示される。通信装置の一例である基地局１０や端末２０は、ＣＰＵ５００、メモリコントローラ５０１、メモリ５０２、メモリバス５０３、ＩＯバスコントローラ５０４、ＮＩＣ５０５、及びＩＯバス５０６を含み、ＩＯバス５０６には記憶装置５０７が接続される。
【００５４】
メモリバス５０３に接続されたメモリ５０２には、基地局１０や端末２０の各種処理を実行するためのプログラムが格納されている。ＣＰＵ５００は、メモリコントローラ５０１を介して、メモリ５０２からプログラムを読み出し、各種処理を実行する。ＣＰＵ５００によって実行される各種処理の実行に伴い、メモリ５０２に対するデータの書き込み及び読み出しがメモリコントローラ５０１を介して実行される。なお、ＣＰＵ５００によって実行されるプログラムは、出荷時に基地局１０や端末２０に記憶されていてもよいし、出荷後に記録媒体やネットワーク経由で提供されてもい。
【００５５】
ＣＰＵ５００は、ＩＯバスコントローラ５０４を介して、ＩＯバス５０６に接続されたＮＩＣ５０５にデータを転送し、また、ＮＩＣ５０５からデータやパケットを受け取る。ＣＰＵ５００は、ＩＯバスコントローラ５０４を介して、ＩＯバス５０６に接続された記憶装置５０７からデータを読み出し、また記憶装置５０７にデータを書き込む。
【００５６】
ＣＰＵ５００は、各種処理を実行するための１以上のＣＰＵコアを含んでいてもよい。また、各ＣＰＵコアは１以上のプロセッサを含んでいてもよい。メモリ５０２は、例えばＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などのＲＡＭである。記憶装置５０７は、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やフラッシュメモリなどの不揮発性メモリ、又はＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）等の磁気ディスク装置である。
【００５７】
なお、ＣＰＵ５００、メモリコントローラ５０１、メモリ５０２、ＮＩＣ５０５、及び、記憶装置５０７が同じバスに接続された構成を管理サーバ２００に適用してもよい。図５に示されるハードウェア構成によって、図６に示される機能ブロックが実現され、図９〜１５に示される処理が実行されることで、図２や図４に示される通信が可能となる。
【００５８】
図６に、実施例の基地局の機能ブロックの例が示される。通信装置の一例である基地局１０は、ワーキングメモリとして使用されるメモリ５０２にロードされたプログラムがＣＰＵ５００によって実行されることにより、ネットワークインタフェース部６００、パケット識別部６０１、パケット振分部６０２、制御部６０３、応答監視部６０９、判定部６１２、特定部６１３、及び遅延設定部６１４として機能する。また、バッファ６０４及び６０５が、メモリ５０２や通信装置に含まれるＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）メモリによって実現され、送信部６０６及び６０７並びに受信部６１０及び６１１がＮＩＣ５０５によって実現される。記憶部６０８は、メモリ５０２や記憶装置５０７によって実現される。
【００５９】
ネットワークインタフェース部６００は、アプリケーションサーバであるサーバ４０側との通信を行うためのネットワークに繋がり、ＴＣＰのパケットを受信する。パケット識別部６０１は、受信したＴＣＰのパケットを識別する。パケット振分部６０２は、制御部６０３の指示に従って、受信したパケットを通信設定の一例である無線リンク毎に対応付けられたバッファ６０４又は６０５へ転送する。バッファ６０４及び送信部６０６、並びにバッファ６０５及び送信部６０７の各々が通信設定の一例である無線リンク毎に備えられる。そして、送信されるパケットは、バッファ６０４及び送信部６０６、又はバッファ６０５及び送信部６０７を介して、端末２０に送信される。
【００６０】
制御部６０３は、通信装置の動作を制御する。パケット振分部６０２におけるパケットのスケジューリングや、無線リンクの振り分けの設定や、無線リンクの変調方式や符号化方式といった通信設定を設定する。記憶部６０８には、パケット振分部６０２が、リンクアグリゲーション対象のＴＣＰのパケットを各無線リンクに振り分けた場合に、パケットのシーケンス番号と当該パケットを送信するために選択された無線リンクとの対応関係の情報が記憶される。また、記憶部６０８には、ＴＣＰのパケットに施す変調方式や符号化率を変更した場合に、パケットのシーケンス番号と当該パケットに施した変調方式や符号化率との対応関係の情報を記憶してもよい。また、記憶部６０８には、応答監視部６０９によって監視されたＴＣＰのＡＣＫ及びＤｕｐｌｉｃａｔｅ  ＡＣＫに関する情報が記憶される。
【００６１】
応答監視部６０９は、端末２０から受信部６１０又は６１１を介して受信されるパケットに含まれるＴＣＰのＡＣＫ及びＤｕｐｌｉｃａｔｅ  ＡＣＫを監視する。この場合に、ＴＣＰのＡＣＫ及びＤｕｐｌｉｃａｔｅ  ＡＣＫの受信時刻を監視して、この受信時刻を記憶部６０８に記録する。
【００６２】
判定部６１２は、応答監視部６０９によって監視されたＴＣＰのＡＣＫ及びＤｕｐｌｉｃａｔｅ  ＡＣＫに関する情報に従い、パケットの順序逆転を判定する。
【００６３】
特定部６１３は、ＴＣＰのＡＣＫ及びＤｕｐｌｉｃａｔｅ  ＡＣＫの情報及び記憶部６０８に記憶されている情報に従い、通信設定（例えば、無線リンク）の違いによる通信速度差の大小関係を特定する。
【００６４】
遅延設定部６１４は、特定部６１３によって特定された通信設定に対応するバッファ６０４又は６０５に遅延を設定して、パケットの送信タイミングを調整する調整部の一例である。なお、遅延設定部６１４によって設定された遅延によって遅延させられたパケットの後に、別のパケットがバッファ６０４又は６０５に入力された場合、遅延させられたパケットが送信部６０６又は６０７に送信されるまで、別のパケットはバッファ６０４又は６０５でバッファリングされる。つまり、通信装置内で、パケットへの遅延設定によるパケットの追い越しは発生しない。
【００６５】
なお、図６に示される各機能ブロックにより実行される処理が、図９〜１５に示される処理と対応させて後述される。
【００６６】
図７に、実施例の通信装置が記憶する情報の例が示される。図７に、記憶部６０８に記憶される、パケットのシーケンス番号と当該パケットを送信するために選択された通信設定（例えば、無線リンク）との対応関係の情報の例が示され、例えば、シーケンス番号が１番目のパケットが無線リンクＢを使用して送信されたことが示される。図７に示される情報の例は、リンクアグリゲーション対象のパケットが各無線リンクに振り分けられた場合に、パケット振分部６０２によって更新される。なお、図７に示される情報は、パケットの順序逆転が発生したと判定された場合に、特定部６１３によって通信設定（例えば、無線リンク）の違いによる通信速度差の大小関係が特定される際に参照される。
【００６７】
図８に、実施例の通信装置が記憶する情報の他の例が示される。図８に、記憶部６０８に記憶される、ＴＣＰのＡＣＫ及びＤｕｐｌｉｃａｔｅ  ＡＣＫの情報の例が示される。図８では、例えば、受信時刻“５１：４８．９３８４５”にＡＣＫ（２）を通信装置が受け取り、その後、ＡＣＫ（２）を２回受けとったことに基づいて、Ｄｕｐｕｌｉｃａｔｉｏｎ  ＡＣＫの数が２であることが互いに関連付けられている。また、最新のＡＣＫを受け取った受信時刻“５１：４９．００１２２”とそのＡＣＫのシーケンス番号である５が互いに関連付けられている。
【００６８】
図８に示される情報は、リンクアグリゲーション対象のパケットに対するＴＣＰのＡＣＫ又はＤｕｐｌｉｃａｔｅ  ＡＣＫを受信したときに、応答監視部６０９によって更新される。なお、図８に示される情報は、判定部６１２がパケットの順序逆転を判定する場合や、特定部６１３が通信設定（例えば、無線リンク）の違いによる通信速度差の大小関係を特定する場合や、遅延設定部６１４が特定のパケットに遅延を与える場合に参照される。
【００６９】
図９に、実施例の通信装置が実行する処理の例が示される。図９に示される各処理は、通信装置における応答監視部６０９によって実行される処理の例である。処理９００によって、リンクアグリゲーション対象のパケットに対するＴＣＰのＡＣＫ及びＤｕｐｌｉｃａｔｅ  ＡＣＫの監視が開始される。
【００７０】
ＡＣＫを検出する処理９０１が実行されて、ＡＣＫが検出されると、ＡＣＫのシーケンス番号が特定される。ＡＣＫのシーケンス番号が特定されると、図８に示されるように、ＡＣＫの受信時刻をメモリ５０２などに記録する処理９０２が実行される。
【００７１】
特定されたシーケンス番号と、図８に示される情報における最新の受信時刻に関連付けられたシーケンス番号とが同じであるか否かを判定する処理９０３が実行される。同じであれば、検出されたＡＣＫがＤｕｐｌｉｃａｔｅ  ＡＣＫであると判定して処理９０４に移る。他方、同じでなければ、新規のシーケンス番号が指定されたＡＣＫを受信したと判定して処理９０５に移る。
【００７２】
処理９０３によって、検出されたＡＣＫがＤｕｐｌｉｃａｔｅ  ＡＣＫであると判定されると、図８に示される情報において、最新の受信時刻に関連付けられたＤｕｐｌｉｃａｔｅ  ＡＣＫの数をインクリメントする処理９０４が実行される。処理９０４が終了すると処理９０７に移る。
【００７３】
処理９０３によって、新規のシーケンス番号が指定されたＡＣＫを受信したと判定されると、処理９０２によって特定された受信時刻を最新の受信時刻として、この最新の受信時刻に新規のシーケンス番号を関連付けた情報を、図８に示される情報に新規に追加する処理９０５を実行する。なお、新規のシーケンス番号が指定されたＡＣＫであるため、処理９０５では、最新の受信時刻にＤｕｐｌｉｃａｔｅ  ＡＣＫの数として“０”を関連付ける。
【００７４】
次いで、処理９０６によって、パケットの順序逆転を判定する処理を判定部６１２に指示して、処理９０７によって図９に示される処理を終了する。
【００７５】
図１０に、実施例の通信装置が実行する処理の他の例が示される。図１０に示される各処理は、通信装置における判定部６１２によって実行される処理であって、リンクアグリケーションによってパケットの順序逆転が発生しているか否かを判定するための処理の例である。処理１０００によって図１０に示される処理が開始され、処理１００１によって、応答監視部６０９による処理９０６の指示を受け付ける。
【００７６】
最新の受信時刻よりも１つ前の受信時刻に関連付けられたＤｕｐｉｌｉｃａｔｅ  ＡＣＫの数が回数閾値を超えるか否かを判定する処理１００２が実行される。処理１００２では、例えば図８に示される情報を参照することで、ＴＣＰのＡＣＫ及びＤｕｐｌｉｃａｔｅ  ＡＣＫの情報を参照し、最新の受信時刻よりも１つ前の受信時刻に関連付けられたＤｕｐｉｌｉｃａｔｅ  ＡＣＫの数と回数閾値とを比較する。なお、回数閾値は、後述されるパケットの遅延処理を実行する基準として、パケットの順序逆転をどの程度まで許容するかに応じて決定すればよい。例えば、Ｄｕｐｉｌｉｃａｔｅ  ＡＣＫの数が１の場合には、パケットの順序逆転が１回生じていることとなるが、通信設定（例えば、無線リンク）の違いによる通信速度差は時々刻々と変化しているため、順序逆転が１回の場合にはパケットの遅延処理をさせずに様子をみるとして、例えば、回数閾値を１よりも大きく設定してもよい。このように、回数閾値は適宜設定されてよく、例えば、基地局毎の通信状況などに応じて別々に設定してもよい。そして、Ｄｕｐｉｌｉｃａｔｅ  ＡＣＫの数が回数閾値を超えると判定された場合には処理１００３に移り、Ｄｕｐｉｌｉｃａｔｅ  ＡＣＫの数が回数閾値を超えないと判定された場合には処理１００５に移る。
【００７７】
最新の受信時刻と１つ前の受信時刻との差分が時間閾値を超えるか否かを判定する処理１００３が実行される。処理１００３では、例えば図８に示される情報を参照することで、ＴＣＰのＡＣＫ及びＤｕｐｌｉｃａｔｅ  ＡＣＫの情報を参照し、最新の受信時刻と１つ前の受信時刻との差分と、時間閾値とを比較する。なお、時間閾値は、Ｄｕｐｌｉｃａｔｅ  ＡＣＫの数が回数閾値を超えた原因が、パケットの順序逆転によるものなのか、又は所定時間待っても受信側にパケットが届かなかったり、受信側にパケットが届けられるまでに長時間かかったりしたことによるものかを区別するための閾値である。つまり、送信側から送信済みであるパケットが受信側に届けられなかったと判定するための時間に基づく閾値である。この時間閾値は、基地局毎の通信状況などに応じて別々に設定してもよく、最新の受信時刻と１つ前の受信時刻との差分が時間閾値を超える場合には、例えば、送信側と受信側との間の無線リンクでパケットロスが起きたことによってＤｕｐｌｉｃａｔｅ  ＡＣＫが発生したと判定して、パケットの再送制御などを実行し、処理１００４に移る。なお、最新の受信時刻と１つ前の受信時刻との差分が時間閾値を超える場合として、サーバ４０が送信したパケットが基地局１０まで届いていないケースも考えられる。この場合には、基地局１０がサーバ４０にパケットの再送を要求してもよい。例えば、サーバ４０は、端末２０からのＤｕｐｌｉｃａｔｅ  Ａｃｋの受信状況からパケットの再送を判断する。基地局１０は、サーバ４０と端末２０間で送受されるＴＣＰに従ったパケットの状況を把握でき、それによってパケットの再送が必要であると判断し、サーバ４０にパケットの再送を要求してもよい。この再送要求は、ＴＣＰにおいて規定されていない特別なメッセージを利用してサーバ４０に通知されるものであってもよい。また、パケットロスが生じる以前に、基地局１０の無線レイヤによる再送制御が実行され続けられていることで、結果として、最新の受信時刻と１つ前の受信時刻との差分が時間閾値を超える場合がある。これらの例は、受信側にパケットが届かない場合や、受信側にパケットが届くまでの時間が長時間かかってしまう例であるが、これらの場合に合わせて、パケットの送信タイミングを遅延させてしまうと、通常の通信状況とはかけ離れた遅延設定になってしまい、通信効率を悪くさせてしまう。そこで、時間閾値を使用して、パケットの順序逆転が発生したのか、それ以外の事象が発生したのかを区別し、送信タイミングを調整する場合としない場合とを判定する。
【００７８】
他方で、最新の受信時刻と１つ前の受信時刻との差分が時間閾値を超えない場合には、パケットロスは発生せずにパケットの順序逆転が発生していると判定して、処理１００４に移る。
【００７９】
次いで、処理１００４によって、通信遅延の小さい通信設定（例えば、無線リンク）を特定する処理を特定部６１３に指示して、処理１００５によって図１０に示される処理が終了する。
【００８０】
図１１に、実施例の通信装置が実行する処理の他の例が示される。図１１に示される各処理は、通信装置における特定部６１３によって実行される処理であって、Ｄｕｐｌｉｃａｔｅ  ＡＣＫの受信状況を使用することで通信遅延の大きい通信設定（例えば、無線リンク）を特定し、そして、通信遅延の大小関係に参考にして、通信遅延の小さい通信設定（例えば、無線リンク）を使用して送信されるパケットに遅延を設定させる指示をするための処理の例である。処理１１００によって図１１に示めされる処理が開始され、処理１１０１によって、判定部６１２による処理１００４の指示を受け付ける。
【００８１】
最新の受信時刻の１つ前の受信時刻に関連付けられたＡＣＫのシーケンス番号を特定する処理１１０２が実行される。処理１１０２では、例えば図８に示される情報を参照することで、最新の受信時刻よりも１つ前の受信時刻に関連付けられたＡＣＫのシーケンス番号を特定する。なお、この特定されたシーケンス番号は、端末２０に届けられるまでの遅延が大きいパケットであったことを示している。
【００８２】
特定されたシーケンス番号に関連付けられた通信設定（例えば、無線リンク）を特定する処理１１０３が実行される。処理１１０３では、例えば図７に示される情報を参照することで、パケットのシーケンス番号と通信設定（例えば、無線リンク）との対応関係を参照し、特定されたシーケンス番号に関連付けられた通信設定（例えば、無線リンク）を特定する。例えば、処理１１０２によって特定されたシーケンス番号が２である場合には、図７に示される情報を参照することで、シーケンス番号が２であるパケットが無線リンクＡを使用して送信されたことが特定される。
【００８３】
特定された通信設定（例えば、無線リンク）の通信遅延が大きいと判定する処理１１０４が実行される。処理１１０４では、例えば、処理１１０３によって特定された無線リンクＡにおける通信遅延が大きいと判定する。この判定によって、無線リンクＢの通信遅延は、無線リンクＡの通信遅延よりも小さいことが併せて判定される。
【００８４】
通信遅延の小さい通信設定（例えば、無線リンク）で送信されるパケットに遅延を設定するよう、遅延設定部６１４に指示する処理１１０５が実行される。処理１１０５では、処理１１０４の処理結果に基づいて通信遅延の大小関係を特定し、例えば、無線リンクＢを使用して送信されるパケットに遅延を設定するよう、遅延設定部６１４に指示がされる。処理１１０５に次いで、処理１１０６によって図１１に示される処理が終了する。
【００８５】
図１２に、実施例の通信装置が実行する処理の他の例が示される。図１２に示される各処理は、通信装置における遅延設定部６１４によって実行される処理であって、通信遅延の小さい通信設定（例えば、無線リンク）を使用して送信されるパケットに遅延を設定するための処理の例である。処理１２００によって図１２に示めされる処理が開始され、処理１２０１によって、特定部６１３による処理１１０５の指示を受け付ける。
【００８６】
通信遅延の小さい通信設定（例えば、無線リンク）を使用して送信されるパケットに与える遅延を、最新の受信時刻と１つ前の受信時刻との差分に応じて設定する処理１２０２が実行される。処理１２０２では、例えば図８に示される情報を参照することで、最新の受信時刻と１つ前の受信時刻との差分に応じた遅延を、通信遅延が小さい通信設定（例えば、無線リンク）に対応付けられたバッファ６０４又は６０５の何れかに設定することとなる。
【００８７】
ところで、最新の受信時刻と１つ前の受信時刻との差分は、例えば、通信遅延の大きい無線リンクを使用してパケットを送信した場合に、端末２０までにパケットが届けられるまでの時間を反映している。そのため、この差分に応じて、通信遅延の大きい無線リンクから通信遅延の小さい無線リンクに切り換えられてパケットが送信されたとしても、通信遅延の小さい無線リンクを使用して送信されたパケットが、通信遅延の大きい無線リンクを使用して送信されたパケットよりも先に端末２０に到着しない遅延を設定すればよい。
【００８８】
加えて、パケットを送信する際の通信設定として変調方式や符号化率も記録しておき、変調方式や符号化率が変更されたか否かに応じて、処理１２０２によって設定される遅延量を調整してもよい。例えば、無線リンクＡを使用することによって、Ｄｕｐｌｉｃａｔｅ  ＡＣＫを受け取ることになってしまったパケットに施された変調方式や符号化率と、その後、無線リンクＡを使用して送信されることとなるパケットに施される変調方式や符号化率が異なると、伝送レートが変わり、受信側に届けられるまでの時間が変化する。つまり、変調方式や符号化率を変えない場合と比較して、伝送レートが小さくなるような変調方式や符号化率に切り替えられる場合には、設定する遅延量をより大きくしておくことで、その後の無線リンクＢで送信されるパケットとの順序逆転をさせないようにすることができる。また、無線リンクＡに適用する変調方式や符号化率が変わらなくても、例えば、無線リンクＢに適用する変調方式や符号化率を、より伝送レートの大きくなる変調方式や符号化率とする場合には、遅延量をより大きく設定することが好ましい。このように、実施例によれば、変調方式や符号化率の変更による伝送レートの変化に合わせて、遅延量を調整してもよい。
【００８９】
なお、図１５に沿って後述されるが、処理１２０２によって設定される遅延は、例えば、通信遅延の大きい無線リンクから通信遅延の小さい無線リンクに切り換えられた後の最初のパケットに与えられるように設定される。処理１２０２に次いで、処理１２０３によって図１２に示される処理が終了する。
【００９０】
図１３に、実施例の通信装置が実行する処理の他の例が示される。図１３に示される各処理は、通信装置における遅延設定部６１４によって実行される処理であって、通信遅延の小さい通信設定（例えば、無線リンク）を使用して送信されるパケットに遅延を設定するための処理の他の例である。処理１３００によって図１３に示される処理が開始され、処理１３０１によって、特定部６１３による処理１１０５の指示を受け付ける。
【００９１】
通信遅延の小さい通信設定（例えば、無線リンク）を使用して送信されるパケットに与える遅延に、固定遅延を設定する処理１３０２が実行される。処理１３０２で設定される固定遅延は、例えば、通信遅延の大きい無線リンクから通信遅延の小さい無線リンクに切り換えられてパケットが送信されたとしても、通信遅延の小さい無線リンクを使用して送信されたパケットが、通信遅延の大きい無線リンクを使用して送信されたパケットよりも先に端末２０に到着しないような遅延である。
【００９２】
なお、図１５に沿って後述されるが、処理１３０２によって設定される固定遅延は、例えば、通信遅延の大きい無線リンクから通信遅延の小さい無線リンクに切り換えられた後の最初のパケットに与えられるように設定される。処理１３０２に次いで、処理１３０３によって図１３に示される処理が終了する。
【００９３】
図１４に、実施例の通信装置が実行する処理の他の例が示される。図１４に示される各処理は、通信装置における遅延設定部６１４よって実行される処理であって、設定されている遅延を変更するための処理の例である。処理１４００によって図１４に示めされる処理が開始される。処理１４０１では、特定部６１３によって特定された通信設定（例えば、無線リンク）を使用して送信されるパケットに遅延を設定するための指示を特定部６１３から受け付ける。
【００９４】
特定部６１３からの指示に基づく通信設定（例えば、無線リンク）が、遅延がすでに設定されている通信設定（例えば、無線リンク）と同じか否かを判定する処理１４０２が実行される。同じであると判定された場合には処理１４０３に移り、遅延がすでに設定されている通信設定（例えば、無線リンク）に与える遅延量を増やすために処理１４０３を実行する。他方で、処理１４０２の判定の結果、同じでないと判定された場合には処理１４０４に移る。なお、すでに設定されている遅延を現在の遅延とする。
【００９５】
現在の遅延が、新たに決定された遅延よりも大きいか否かを判定する処理１４０４が実行される。ここで、新たに決定された遅延とは、特定部６１３からの指示に基づく通信設定（例えば、無線リンク）に対して、図１２又は１３に示される処理が実行されることで決定された遅延である。現在の遅延が、新たに決定された遅延よりも大きいと判定された場合には、遅延がすでに設定されている通信設定（例えば、無線リンク）に与える遅延量を減らすために処理１４０５を実行する。他方で、処理１４０４の判定の結果、現在の遅延が、新たに決定された遅延よりも大きくないと判定された場合には処理１４０６に移る。
【００９６】
遅延がすでに設定されている通信設定（例えば、無線リンク）に与える遅延量を０に設定する処理１４０６が実行される。次いで、別の通信設定（例えば、無線リンク）に、新たに決定された遅延から現在の遅延を減算した遅延を設定する処理１４０７が実行される。処理１４０６及び１４０７は、遅延がすでに設定されている通信設定（例えば、無線リンク）に与える遅延をマイナスにするのではなく、この遅延を０とし、図１２あるいは図１３で設定した遅延から現在の遅延を引いた分を、別の通信設定（例えば、無線リンク）に与える遅延として設定する。そして、処理１４０８によって図１４に示される処理が終了する。
【００９７】
図１５に、実施例の通信装置が実行する処理の他の例が示される。図１５に示される各処理は、通信装置における遅延設定部６１４よって実行される処理であって、設定されている遅延をパケットに与えるための処理の例である。処理１５００によって図１５に示めされる処理が開始される。
【００９８】
パケット振分部６０２から、通信設定（例えば、無線リンク）の切り替えの通知を取得する処理１５０１が実行される。処理１５０１によって取得する通知は、リンクアグリゲーションによって、通信設定（例えば、無線リンク）がパケット振分部６０２によって切り替えられた場合に取得する通知である。
【００９９】
切り換え後の通信設定（例えば、無線リンク）は遅延が設定されている通信設定（例えば、無線リンク）か否かを判定する処理１５０２が実行される。例えば、切り換え後の無線リンクが、遅延が設定されている無線リンクであると判定されると処理１５０３に移り、他方の場合には処理１５０４に移る。
【０１００】
遅延が設定されている通信設定（例えば、無線リンク）を使用して送信される最初のパケットに、図１２によって設定された遅延や、図１４によって設定あるいは変更された遅延を付与する処理１５０３が実行される。処理１５０３では、通信設定（例えば、無線リンク）に対応づけられたバッファ６０４又は６０５の何れかにおいて遅延が設定されて、最初のパケットが遅延させられる。
【０１０１】
図１６に、実施例の端末装置の機能ブロックが示される。通信装置の一例である端末２０は、ワーキングメモリとして使用されるメモリ５０２にロードされたプログラムがＣＰＵ５００によって実行されることにより、アプリケーション部１６００、上位レイヤ部１６０１、パケット識別部６０１、パケット振分部６０２、制御部６０３、応答監視部６０９、判定部６１２、特定部６１３、及び遅延設定部６１４として機能する。また、バッファ６０４及び６０５が、メモリ５０２や通信装置に含まれるＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）によって実現され、送信部６０６及び６０７並びに受信部６１０及び６１１がＮＩＣ５０５によって実現される。記憶部６０８は、メモリ５０２や記憶装置５０７によって実現される。なお、図６に示された機能ブロックと同じものについては同一の符号を付した。
【０１０２】
アプリケーション部１６００は、アプリケーションデータを上位レイヤ部１６０１に転送する。上位レイヤ部１６０１は、アプリケーションデータをＴＣＰのパケットに変換して、パケット識別部６０１に転送する。
【０１０３】
端末２０は、図１６に示される機能ブロックによって、図７及び８に示される情報を管理して、図９〜１５に示される処理を実行することで、複数の通信設定（例えば、無線リンク）の切り替える場合であっても、図４に示されるように、ＡＣＫの受信状況を使用してパケットの順序逆転を予測し、パケットの送信タイミングを調整することで、パケットの順序逆転をさせないようにできる。
【０１０４】
以上に述べた実施例の一側面によれば、例えば、通信設定を利用し、ＴＣＰのパケットを各リンクに転送するパケット転送装置は、ＴＣＰのパケットを各リンクに転送する際に、パケットのシーケンス番号と転送したリンクの対応関係を記憶する。また、ＴＣＰのパケットを受信する受信側からのＴＣＰのＡＣＫ及びＤｕｐｌｉｃａｔｅ  ＡＣＫの応答を監視し、通信設定の違いによるパケットの順序逆転を検出する。また、パケットのシーケンス番号と通信設定との対応関係と、ＴＣＰのＡＣＫ及びＤｕｐｌｉｃａｔｅ  ＡＣＫの受信結果を照合し、通信遅延の違いによるパケットの通信遅延の大小関係を判定する。そして、通信遅延の大きい通信設定から通信遅延の小さい通信設定に切り替わった最初のパケットに対して遅延を与える。これによって、ＡＣＫの受信状況を使用してパケットの順序逆転を予測し、パケットの送信タイミングを調整することで、パケットの順序逆転をさせないようにできる。従って、端末２０と基地局１０との間の無線リソースが、冗長なＤｕｐｌｉｃａｔｅ  ＡＣＫに使用されることが抑制され、ウィンドウサイズが縮小されてスループットが低下してしまうことが防止される。
【０１０５】
なお、以上の実施例に関し、以下の付記としてまとめる。
（付記１）  パケット通信の通信設定を切り替える通信方法であって、送信側から送信する順序とは異なる順序で受信側にパケットが届けられると予測されると、前記通信設定を切り替える場合に、前記送信側から送信する前記順序で前記受信側に前記パケットが届けられるように、前記パケットの送信タイミングを調整することを特徴とする通信方法。
（付記２）  第１通信設定で送信された送信済みパケットに対する送信要求が発生すると、前記送信側から送信された順序とは異なる順序で前記受信側にパケットが届けられると予測し、調整される前記送信タイミングは、前記通信設定を前記第１通信設定から第２通信設定へ切り替える場合に、前記第２通信設定で送信されるパケットの送信タイミングであることを特徴とする付記１に記載の通信方法。
（付記３）  前記第１通信設定から前記第２通信設定へ切り替える場合に、前記第２通信設定で送信される前記パケットの送信を遅延させることによって、前記送信タイミングを調整することを特徴とする付記２に記載の通信方法。
（付記４）  前記送信済みパケットに対する送信要求を最初に受信した第１時刻から、前記送信済みパケットに付与されたパケット順序を識別するための順序情報とは異なる順序情報が付与される予定のパケットに対する送信要求を受信した第２時刻までの時間に応じた遅延量に従って、前記第２通信設定で送信される前記パケットを遅延させることを特徴とする付記３に記載の通信方法。
（付記５）  前記第１時刻から、前記送信済みパケットが前記受信側に届けられなかったと判定するための時間を過ぎても、前記異なる順序情報が付与されたパケットに対する送信要求を受信しない場合に、前記送信済みパケットを再送することを特徴とする付記４に記載の通信方法。
（付記６）  調整される前記送信タイミングは、前記第１通信設定から前記第２通信設定へ切り替えられた後、前記第２通信設定で送信される最初のパケットの送信タイミングであることを特徴とする付記２〜５の何れか１つに記載の通信方法。
（付記７）  前記パケット通信に使用した通信設定と当該パケットとの対応関係を記録し、前記対応関係に基づいて、前記送信済みパケットに使用した通信設定を特定する
ことを特徴とする付記２〜６の何れか１つに記載の通信方法。
（付記８）  前記第２通信設定は、前記第１通信設定よりも小さい通信遅延でパケットを前記受信側へ届ける通信設定であることを特徴とする付記２〜７の何れか１つに記載の通信方法。
（付記９）  前記通信設定は、通信方式の異なる通信リンクの切り替えによって、切り替えられることを特徴とする付記１〜９の何れか１つに記載の通信方法。
（付記１０）  前記通信リンクの通信リソースの使用状況に応じて、単位時間あたりに前記送信側から送信されるパケットのデータ量と前記受信側によって受信されるパケットのデータ量が近づくように、前記通信リンクを切り替えることを特徴とする付記９に記載の通信方法。
（付記１１）  前記第１通信設定として設定された第１通信リンクを使用して送信された前記送信済みパケットに使用した変調方式と、前記第２通信設定として設定された前記第２通信リンクを使用して送信される前記パケットに使用した変調方式との差に応じて、前記遅延量を調整することを特徴とする付記４〜１０の何れか１つに記載の通信方法。
（付記１２）  前記通信設定は、前記パケット通信に使用する変調方式または符号化率の切り替えによって切り替えられることを特徴とする付記１〜８の何れか１つに記載の通信方法。
（付記１３）  前記送信済みのパケットに対する送信要求を、第１通信レイヤのプロトコルに従って発生させ、前記通信設定の切り替えを、前記第１通信レイヤよりも下位の第２通信レイヤで実行することを特徴とする付記２〜１２の何れか１つに記載の通信方法。
（付記１４）  前記通信設定は、前記パケット通信の伝送レートを切り替えることによって切り替えられ、第１伝送レートで第１パケットを送信した後に、前記第１伝送レートよりも大きい理第２伝送レートで送信された第２パケットが前記第１パケットよりも早く前記受信側に届けられると予測される場合に、前記送信側から送信された順序とは異なる順序で前記受信側にパケットが届けられると予測し、調整される前記送信タイミングは、前記第２パケットが前記第１パケットよりも早く前記受信側に届けられないように、前記第２伝送レートで送信される前記第２パケットの送信タイミングであることを特徴とする付記１に記載の通信方法。
（付記１５）  パケット通信の通信設定を切り替えてパケットを送信する第１通信装置と、前記第１通信装置によって送信されたパケットを受信する第２通信装置とを有し、前記第１通信装置は、前記第１通信装置から送信した順序とは異なる順序で前記第２通信装置にパケットが届けられると予測されると、前記通信設定を切り替える場合に、パケットの送信タイミングを調整することを特徴とする通信システム。
（付記１６）  パケット通信の通信設定を切り替える通信装置であって、送信側から送信した順序とは異なる順序で受信側にパケットが届けられると予測されると、前記通信設定を切り替える場合に、パケットの送信タイミングを調整する調整部を有することを特徴とする通信装置。
【符号の説明】
【０１０６】
１０、３０                              基地局
２０、２１                              端末
４０                                    サーバ
５０、６０                              ネットワーク
５００                                  ＣＰＵ
５０１                                  メモリコントローラ
５０２                                  メモリ
５０３                                  メモリバス
５０４                                  ＩＯバスコントローラ
５０５                                  ＮＩＣ
５０６                                  ＩＯバス
５０７                                  記憶装置
６００                                  ネットワークインタフェース部
６０１、１６０１                        パケット識別部
６０２、１６０２                        パケット振分部
６０３、１６０３                        制御部
６０４、６０５、１６０４、１６０５      バッファ
６０６、６０７、１６０６、１６０７      送信部
６０８、１６０８                        記憶部
６０９、１６０９                        応答監視部
６１０、６１１、１６１０、１６１１      受信部
６１２、１６１２                        判定部
６１３、１６１３                        特定部
６１４、１６１４                        遅延設定部
１６００                                アプリケーション部
１６０１                                上位レイヤ部
【図１】
2014216679.tif 000003
【図２】
2014216679.tif 000004
【図３】
2014216679.tif 000005
【図４】
2014216679.tif 000006
【図５】
2014216679.tif 000007
【図６】
2014216679.tif 000008
【図７】
2014216679.tif 000009
【図８】
2014216679.tif 000010
【図９】
2014216679.tif 000011
【図１０】
2014216679.tif 000012
【図１１】
2014216679.tif 000013
【図１２】
2014216679.tif 000014
【図１３】
2014216679.tif 000015
【図１４】
2014216679.tif 000016
【図１５】
2014216679.tif 000017
【図１６】
2014216679.tif 000018