以下、本発明の一実施形態について、図面を参照して説明する。図1を参照し、通信システム1について説明する。通信システム1は、通信装置11、12(以下、総称して「通信装置10」ともいう。)を備える。通信装置11、12は、ネットワーク6を介して接続する。通信装置11、12は、ネットワーク6を介して通信を行うことができる。ネットワーク6には、通信路2、3、4が含まれる。通信装置11、12は、ネットワーク6の状態に応じて決定される通信路2、3、4のうち何れかを介して通信を行う。通信装置10は、周知のパーソナルコンピュータ(PC)である。ネットワーク6は、周知のインターネットである。通信装置10は、TCP/IPに基づいて通信を行う。
通信路2には中継器7が介在する。通信路4には中継器8が介在する。通信路3に中継器は介在しない。通信装置11、12が通信路2、4を介して通信を行う場合、中継器7、8は、通信装置11、12間で送受信されるデータを中継する。中継器7は、データを中継する場合に、データに付加されたTCPヘッダを改変しない。中継器7が通信路2に介在しても、通信装置11、12間の通信に影響は及ばない。このため、中継器7が通信路2に介在する場合と、中継器7が通信路2に介在しない場合(即ち、通信路3を介して通信が行われる場合)とでは、同一の方法で通信が行われることになる。中継器7の例として、リピータ、ハブ、ルータ等が挙げられる。一方、中継器8は、データを中継する場合、データに付加されたTCPヘッダを改変する。中継器8は、データを送信した通信装置10に対してACKを返信する(詳細は後述する)。従って、通信装置11、12間で通信路4を介して通信が行われる場合と、通信路2、3を介して通信が行われる場合とでは、異なる方法で通信が行われることになる。中継器8の例として、周知のプロトコル変換機器(ゲートウェイ、プロキシサーバ等)が挙げられる。
通信装置10の電気的構成について説明する。通信装置10は、通信装置10の制御を司るCPU21を備える。CPU21は、ROM22、RAM23、HDD24、通信I/F25、入力部26、および出力部27と電気的に接続する。ROM22には、ブートプログラム、BIOS等が記憶される。RAM23には、タイマやカウンタ、一時的なデータが記憶される。HDD24には、CPU21の制御プログラムやOSが記憶される。通信I/F25は、中継器7、8、および他の通信装置10と通信を行うためのインタフェースである。入力部26は、通信装置10に対して情報の入力を行うキーボード、マウス、マイク等である。出力部27は、通信装置10のユーザに対して情報を出力するディスプレイ、スピーカ等である。
通信装置10は、通信路2、3、4における使用可能な伝送路容量を特定し、特定された伝送路容量内でデータが送信されるように、送信するデータの量を調整する。これによって通信装置10は、通信路2、3、4において使用可能な伝送路容量を効率的に使用することができる。以下、伝送路容量を「帯域」ともいう。使用可能な伝送路容量を「使用可能帯域」ともいう。帯域および使用可能帯域の単位はbpsである。通信装置10は、方法の異なる二種類の計測通信(第一計測通信および第二計測通信)によって使用可能帯域を特定することができる。通信装置10は、通進路に介在する中継器7、8の有無、および、中継器7、8の種類に応じて、第一計測通信または第二計測通信を使い分ける。以下詳説する。
図2および図3を参照し、第一計測通信について説明する。第一計測通信では、TCPの確認応答機能を利用して使用可能帯域を特定する。確認応答機能は、TCPパケットを受信した通信装置10や中継器8が、TCPパケットを送信した通信装置10や中継器8に対して、TCPパケットを受信した旨を通知する機能である。なお中継器7は確認応答機能を有していない。
図2は、通信路2の使用可能帯域を特定するために、通信装置11が第一計測通信を実行した場合を示している。通信装置11は、TCPヘッダおよびデータを含むTCPパケット41を、中継器7を介して通信装置12に送信する(S11)。中継器7はTCPパケット41を受信し、通信装置12に対してTCPパケット41を中継する(S13)。通信装置12はTCPパケット41を受信する。通信装置12は、TCPパケット41を受信した旨を通信装置11に通知するために、ACKパケット43を、中継器7を介して通信装置11に送信する(S17)。ACKパケット43は、TCPヘッダのACKフラグがONされたものである。中継器7はACKパケット43を受信し、通信装置11に対してACKパケット43を中継する(S19)。通信装置11はACKパケット43を受信する。
通信装置11は、S11でTCPパケット41を送信してから、S19でACKパケット43を受信するまでの経過時間を計測する。通信装置11は、ACKパケット43のTCPヘッダに含まれるシーケンス番号を参照することによって、送信したTCPパケット41に対応するACKパケット43を特定する。なお通信装置12は、TCPパケット41の受信後、即座にACKパケット43を返信する。このため、計測される経過時間は、TCPパケット41およびACKパケット43が通信路2を伝達する場合に要した時間と略同一となる。また通信装置11は、TCPパケット41およびACKパケット43のデータサイズを特定する。例えば通信装置11は、ACKパケット43のIPヘッダに含まれるパケット長を参照することによって、受信したACKパケット43のデータサイズを特定する。なお、TCPパケット41のデータサイズは、S11で通信装置11自身が送信しているため、既知である。通信装置11は、TCPパケット41のデータサイズおよびACKパケット43のデータサイズを加算した加算値を、経過時間で除算する。これによって通信装置11は、通信路2の使用可能帯域を算出する。
なお算出される使用可能帯域は、通信装置11から中継器7までの間の通信路2Aにおける使用可能な帯域と、中継器7から通信装置12までの間の通信路2Bにおける使用可能な帯域とのうち、より小さい帯域を示すものである。使用可能帯域は、通信路2のボトルネックの部分における使用可能な帯域を示すことになる。
なお中継器7は、通信装置11、12間で送受信されるデータを中継する処理を行うのみである。中継器7が通信路2に介在しても、通信装置11、12間の通信に影響は及ばない。このため通信装置11、12間で、中継器7が介在する通信路2を介して通信が行われる場合と、中継器が介在しない通信路3を介して通信が行われる場合とでは、同一の方法で通信が行われることになる。従って、通信路3の使用可能帯域を特定するための第一計測通信も、上述と同様の方法で実行されることになる。
図3は、通信路4の使用可能帯域を特定するために、通信装置11が第一計測通信を実行した場合を示している。通信装置11は、TCPヘッダおよびデータを含むTCPパケット51を、中継器8を介して通信装置12に送信する(S21)。中継器8はTCPパケット51を受信する。図2の場合と異なり、中継器8は、TCPパケット51に含まれるTCPヘッダを改変する(S23)。例えば中継器8は、TCPヘッダに含まれるアドレス情報(送信元ポート番号および宛先ポート番号)やシーケンス番号を改変する。中継器8は、TCPヘッダを改変したTCPパケット55を、通信装置12に対して中継する(S29)。中継器8は、TCPパケット51を受信した旨を通信装置11に通知するために、ACKパケット53を通信装置11に送信する(S27)。通信装置11はACKパケット53を受信する。
通信装置12は、S29で中継器8から送信されたTCPパケット55を受信する。通信装置12は、TCPパケット55を受信した旨を、TCPパケット55を送信した中継器8に通知するために、ACKパケット57を中継器8に送信する(S33)。中継器8はACKパケット57を受信する。
通信装置12が送信するACKパケット57は、図2の場合と異なり、TCPヘッダが改変されている。例えばTCPヘッダのシーケンス番号が改変された場合、通信装置11がACKパケット57を取得して使用可能帯域を特定しようとしても、S21で送信したTCPパケット51に対応するACKパケット57を特定することができないので、図2の場合と同様の方法で使用可能帯域を特定することができない。従って第二計測通信では、以下のようにして使用可能帯域を特定する。
通信装置11は、S21でTCPパケット51を送信してから、S27でACKパケット53を受信するまでの経過時間を計測する。通信装置11は、TCPパケット51のデータサイズおよびACKパケット53のデータサイズを加算した加算値を、経過時間によって除算する。これによって通信装置11は、通信装置11と中継器7との間の通信路4Aの使用可能帯域を算出する。
以上のように、通信路2、3に対して第一計測通信が実行された場合(図2参照)、通信路2、3全体の使用可能帯域が特定される。通信装置11は、通信路2、3を介して通信装置12に対してデータを送信する場合、特定した使用可能帯域を超えない範囲で、送信するデータの帯域(以下「使用帯域」という。)を定める。通信装置11は、使用帯域を用いてデータが送信されるように、データ量を調整する。これによって通信装置11は、通信路2、3の使用可能帯域を効率的に使用できる。
一方、通信路4に対して第一計測通信が実行された場合(図3参照)、通信路4の一部である通信路4Aの使用可能帯域が特定されることになる。残りの通信路4Bの使用可能帯域は特定されない。このため、通信路4Bの使用可能帯域が通信路4Aの使用可能帯域より小さい場合、特定した使用可能帯域に基づいて通信装置11が定める使用帯域が、通信路4Bの使用可能帯域よりも大きくなる可能性がある。このような使用帯域を用いてデータが通信装置11から送信されると、データ遅延やデータ抜けが発生する可能性があるため、適切でない。従って、中継器8が介在する通信路4の使用可能帯域は、必要に応じて、後述するように第二計測通信によって特定される。
なお、上述で説明した第一計測通信の具体的方法は一例である。TCPヘッダに含まれる情報を用いて使用可能帯域が計測されるのであれば、第一計測通信は他の方法で実行されてもよい。また例えば通信装置11は、以下のようにしてTCPパケット41(図2参照)、51(図3参照)を送信する場合の帯域を定めてもよい。
通信装置11は、TCPパケット41、51を送信した場合の帯域(以下、「帯域X」という。)と、ACKパケット43(図2参照)、53(図3参照)を受信した場合に特定した使用可能帯域(以下、「帯域Y」という。)とを比較する。通信装置11は、帯域Xと帯域Yとの差分を算出する。通信装置11は、算出した差分が所定の範囲内に収まっているかを判断する。通信装置11は、算出した差分が所定の範囲内に収まっている場合、次にTCPパケット41、51を送信する場合の帯域を、前回TCPパケット41、51を送信した場合の帯域よりも大きくする。一方、算出した差分が所定の範囲の上限よりも大きくなった場合、次にTCPパケット41、51を送信する場合の帯域を、前回TCPパケット41、51を送信した場合の帯域よりも小さくする。他方、算出した差分が所定の範囲の下限よりも小さくなった場合、次にTCPパケット41、51を送信する場合の帯域を、前回TCPパケット41、51を送信した場合の帯域と同一とする。以上のように、TCPパケット41、51を送信する場合の帯域を変化させることによって、通信装置11は、通信路の状態の変化に応じてTCPパケットを送信する場合の帯域を適切に変化させ、使用可能帯域を特定できる。
図4および図5を参照し、第二計測通信について説明する。第二計測通信は、TCPパケットのデータに格納された計測用データを利用して、使用可能帯域を特定する。第二計測通信では、第一計測通信とは異なり、TCPパケットを受信した通信装置10が使用可能帯域を特定する。特定された使用可能帯域は、TCPパケットを送信した通信装置10に対して通知される。以下詳説する。
図4は、通信路2の使用可能帯域を計測するために、通信装置11が第二計測通信を実行した場合を示している。通信装置11は、計測用データMが格納されたデータおよびTCPヘッダを含むTCPパケット61を作成する。計測用データMには、送信時刻情報およびデータサイズが含まれる。送信時刻情報は、TCPパケット61が送信された時刻を示す情報である。データサイズは、TCPパケットのデータサイズである。通信装置11は、中継器7を介して通信装置12に対して、複数のTCPパケット61を順番に送信する(S41)。
中継器7は、複数のTCPパケット61を受信し、通信装置12に対して複数のTCPパケット61を中継する(S43)。通信装置12は、複数のTCPパケット61を受信する。通信装置12は、TCPパケット61を受信した時刻を示す時刻情報(以下「受信時刻情報」という。)をRAM23に記憶する。
通信装置12は、受信した複数のTCPパケット61のデータに格納された計測用データMに基づき、使用可能帯域を特定する。具体的には次の通りである。通信装置12は、計測用データMに含まれる送信時刻情報に基づき、TCPパケット61の送信間隔を算出する。通信装置12は、RAM23に記憶した受信時刻情報に基づき、TCPパケット61の受信間隔を算出する。通信装置12は、算出した送信間隔および受信間隔に基づき、TCPパケット61が通信路2を伝達するために要した時間を算出する。通信装置12は、計測用データMに含まれるデータサイズを、TCPパケット61が通信路2を伝達するために要した時間で除算する。これによって通信装置12は、通信路2の使用可能帯域を算出する。
算出された使用可能帯域は、第一計測通信によって特定された使用可能帯域と同様、通信路2Aにおいて使用可能な帯域と、通信路2Bにおいて使用可能な帯域とのうち、より小さい帯域を示す。使用可能帯域は、通信路2のボトルネックの部分における使用可能な帯域を示すことになる。
通信装置12は、特定した使用可能帯域をデータに格納し、TCPパケット63を作成する。通信装置12は、中継器7を介して通信装置11に対して、TCPパケット63を送信する(S47)。中継器7はTCPパケット63を受信し、通信装置11に対してTCPパケット63を中継する(S49)。通信装置11は、TCPパケット63を受信する。通信装置11は、受信したTCPパケット63のデータに格納された使用可能帯域を取得する。
なお、中継器が介在しない通信路3の使用可能帯域を特定するための第二計測通信も、上述と同様の方法で実行されることになる。
図5は、通信路4の使用可能帯域を特定するために、通信装置11が第二計測通信を実行した場合を示している。通信装置11は、計測用データMが格納されたデータおよびTCPヘッダを含むTCPパケット71を作成する。計測用データMには、送信時刻情報およびデータサイズが含まれる。通信装置11は、中継器8を介して通信装置12に対して、複数のTCPパケット71を順番に送信する(S61)。図4の場合と異なり、中継器8は、TCPパケット71に含まれるTCPヘッダを改変する(S63)。中継器8は、TCPヘッダを改変した複数のTCPパケット75を、通信装置12に対して中継する(S69)。中継器8は、TCPパケット71を受信した旨を通信装置11に通知するために、ACKパケット(図示せず)を通信装置11に送信する。通信装置11はACKパケットを受信する。
通信装置12は、S69で中継器8から送信された複数のTCPパケット75を受信する。通信装置12は、TCPパケット75を受信した旨を中継器8に通知するために、ACKパケット(図示せず)を中継器8に送信する。中継器8はACKパケットを受信する。
通信装置12は、TCPパケット75を受信した時刻を示す受信時刻情報をRAM23に記憶する。通信装置12は、受信した複数のTCPパケット75のデータに格納された計測用データMに基づき、使用可能帯域を特定する。使用可能帯域の方法は、第二計測通信によって通信路2の使用可能帯域を特定した場合(図4参照)と同一である。これによって通信装置12は、通信路4の使用可能帯域を算出する。
通信装置12は、算出した使用可能帯域をデータに含むTCPパケット77を作成する。通信装置12は、中継器8を介して通信装置11に対して、TCPパケット77を送信する(S73)。中継器8はTCPパケット77を受信し、TCPヘッダを改変する。中継器8は、TCPヘッダを改変したTCPパケット73を、通信装置11に対して送信する(S67)。通信装置11はTCPパケット73を受信する。通信装置11は、受信したTCPパケット73のデータに格納された使用可能帯域を取得する。
以上のように、第二計測通信が実行された場合、通信路2、3、4のいずれの場合も、通信路2、3、4全体の使用可能帯域が特定される(図4、図5参照)。通信路4に対して第二計測通信が実行された場合に、通信路4全体の使用可能帯域を特定することができるという点で、通信路4の一部(通信路4A)の使用可能帯域が特定される第一計測通信の場合と異なる。通信装置11は、通信路2、3、4を介して通信装置12に対してデータを送信する場合、特定した使用可能帯域を超えない範囲で使用帯域を定め、使用帯域を用いてデータが送信されるように、データ量を調整する。これによって通信装置11は、通信路2、3、4の使用可能帯域を効率的に使用できる。
なお上述で説明した第二計測通信の具体的方法は一例である。TCPパケットのデータに含める計測用データを用いて使用可能帯域が計測されるのであれば、他の方法であってもよい。例えば通信装置11は、以下のようにして使用可能帯域を特定してもよい。
通信装置11は、計測用データが格納されたデータを含むTCPパケット61(図4参照)、71(図5参照)を、通信装置12に対して送信する。通信装置12はTCPパケット61、71を受信し、送信時刻情報を取得する。通信装置12は、送信時刻情報に基づき、TCPパケット61、71の送信間隔を算出する。通信装置12は、算出した送信間隔と受信間隔とを比較する。通信装置12は、送信間隔と受信間隔との差分を算出する。通信装置12は、算出した差分をデータに含むTCPパケット63(図4参照)、77(図5参照)を作成する。通信装置12は、通信装置11に対してTCPパケット63、77を送信する。
通信装置11は、TCPパケット63、77を受信し、差分を取得する。通信装置11は、算出した差分が所定の範囲内に収まっているかを判断する。通信装置11は、算出した差分が所定の範囲内に収まっている場合、次にTCPパケット61、71を送信する場合の帯域を、前回TCPパケット61、71を送信した場合の帯域よりも大きくする。一方、算出した差分が所定の範囲の上限よりも大きくなった場合、次にTCPパケット61、71を送信する場合の帯域を、前回TCPパケット61、71を送信した場合の帯域よりも小さくする。他方、算出した差分が所定の範囲の下限よりも小さくなった場合、次にTCPパケット61、71を送信する場合の帯域を、前回TCPパケット61、71を送信した場合の帯域と同一とする。以上のように、TCPパケットを送信する場合の帯域を変化させることによって、通信装置11は、通信路の状態の変化に応じてTCPパケットを送信する場合の帯域を適切に変化させ、使用可能帯域を特定できる。
なお上述したように、第一計測通信が実行された場合(図2、図3参照)、通信路4における中継器8と通信装置12との間の通信路4Bの使用可能帯域を特定することができない(図4参照)。このため通信装置11は、中継器8が介在する通信路4を介して通信装置12と通信を行う場合、通信路4全体の使用可能帯域を特定するために、第二計測通信を優先的に実行する。通信路4に対して第二計測通信が実行された場合、通信路4全体の使用可能帯域が特定されるためである。なお詳細は後述するが、通信路4全体の使用可能帯域を特定する必要がない場合には、中継器8が介在する通信路4に対して第一計測通信が実行される場合もある。
一方、通信路2、3に対して計測通信が実行される場合、第一計測通信および第二計測通信のいずれの場合も、通信路2、3全体の使用可能帯域が特定される。この場合通信装置11は、第一計測通信を優先的に実行して使用可能帯域を特定する。理由は以下の通りである。
第二計測通信では、TCPパケットのデータに格納された計測用データが使用されて使用可能帯域が特定される。このため通信装置11は、計測用データが格納されていない汎用のTCPパケットを使用して第二計測通信を行うことができない。これに対して第一計測通信では、確認応答機能が利用され、TCPヘッダに含まれる情報が使用されて使用可能帯域が特定される。従って第一計測通信では、汎用のTCPパケットを使用して使用可能帯域を特定することが可能となる。このため通信装置11は、第一計測通信を優先的に実行することによって、通信装置12との間で汎用のTCPパケットを使用した通信を実行しつつ、同時に使用可能帯域を特定できるようにしている。
また第二計測通信では、TCPパケットのデータに格納された情報を使用することになるので、通信装置11のプログラムのうちアプリケーション層レベルで使用可能帯域の特定処理を実行する必要がある。このため、第二計測通信を実行するためには、使用可能帯域の特定処理を行うアプリケーションを通信装置11に実装する必要がある。加えて、アプリケーション層の処理に要する時間が余分に発生し、処理遅延の要因となる可能性がある。一方、第一計測通信では、TCPヘッダに含まれる情報を使用することになるので、通信装置11のプログラムのうちカーネル層レベルで使用可能帯域の特定処理を実行することが可能となる。従って第一計測通信を優先的に実行することによって、使用可能帯域の特定処理を高速化することができる。
通信装置10は、通信路に介在する中継器に応じ、第一計測通信または第二計測通信を選択する。通信装置10は、選択した第一計測通信または第二計測通信を、所定の周期で繰り返し実行する。周期とは、所定の時間間隔を示す。通信装置10は、通信路の使用可能帯域を周期的に特定することによって、通信路の状態が変化した場合も、使用可能帯域を継続的に特定できる。通信装置10は、特定した使用可能帯域に基づいて使用帯域を定め、他の通信装置10に対してデータを送信することによって、使用可能帯域を効率的に使用しつつ、高品質な通信を行うことができる。以下、中継器に応じた第一計測通信または第二計測通信が実行される周期を、第一周期という。
また通信装置10は、通信路に介在する中継器を、第一周期よりも長い第二周期で周期的に判断する。これによって通信装置10は、通信路に介在する中継器が変更された場合も、変更後の中継器に応じた適切な計測通信を実行し、使用可能帯域を継続的に特定できる。通信路に介在する中継器は、第一計測通信および第二計測通信の結果を比較することによって実行される。詳細は以下のとおりである。
通信路に介在する中継器を判断する方法について説明する。図6から図8は、通信路2に介在する中継器7が判断される場合を示している。図6では、通信路2Aにおける使用可能な帯域が、通信路2Bにおける使用可能な帯域よりも大きい状態であるとする。通信路2Bが通信路2全体のボトルネックになっている。この状態で通信装置11が第一計測通信を実行した場合、ボトルネックである通信路2Bにおける使用可能な帯域が、通信路2全体の使用可能帯域として特定される。通信装置11が第二計測通信を実行した場合も同様に、ボトルネックである通信路2Bにおける使用可能な帯域が、通信路2全体の使用可能帯域として特定される。以上の結果、第一計測通信および第二計測通信によって特定される使用可能帯域は略同一となる。
図7では、通信路2Aにおける使用可能な帯域が、通信路2Bにおける使用可能な帯域よりも小さい状態であるとする。通信路2Aが通信路2全体のボトルネックになっている。この状態で通信装置11が第一計測通信を実行した場合、ボトルネックである通信路2Aにおける使用可能な帯域が、通信路2全体の使用可能帯域として特定される。通信装置11が第二計測通信を実行した場合も同様に、ボトルネックである通信路2Aにおける使用可能な帯域が、通信路2全体の使用可能帯域として特定される。以上の結果、第一計測通信および第二計測通信によって特定される使用可能帯域は略同一となる。
図8では、通信路2Aにおける使用可能な帯域と、通信路2Bにおける使用可能な帯域とが略同一の状態であるとする。通信装置11が第一計測通信を実行した場合、通信路2A、2Bにおける使用可能な帯域が、使用可能帯域として特定される。通信装置11が第二計測通信を実行した場合も同様に、通信路2A、2Bにおける使用可能な帯域が、使用可能帯域として特定される。以上の結果、第一計測通信および第二計測通信によって特定される使用可能帯域は略同一となる。
以上のように、中継器7が介在する通信路2に対して第一計測通信および第二計測通信が実行された場合、双方によって特定される使用可能帯域は、通信路2A、2Bにおける使用可能な帯域の状態に依らず、常に略同一となる。なお、中継器が介在しない通信路3に対して第一計測通信および第二計測通信が実行された場合も同様に、双方によって特定される使用可能帯域は略同一となる。
図9から図11は、通信路4に介在する中継器8が判断される場合を示している。図9では、通信路4Aにおける使用可能な帯域が、通信路4Bにおける使用可能な帯域よりも大きい状態であるとする。この状態で通信装置11が第一計測通信を実行した場合、通信路4Aにおける使用可能な帯域が、使用可能帯域として特定される。一方、通信路4Bが通信路4全体のボトルネックになっていることになるので、通信装置11が第二計測通信を実行した場合、ボトルネックである通信路4Bにおける使用可能な帯域が、通信路4全体の使用可能帯域として特定される。以上の結果、第一計測通信によって特定される使用可能帯域(通信路4Aにおける使用可能な帯域)は、第二計測通信によって特定される使用可能帯域(通信路4Bにおける使用可能な帯域)よりも大きくなる。
図10では、通信路4Aにおける使用可能な帯域が、通信路4Bにおける使用可能な帯域よりも小さい状態であるとする。この状態で通信装置11が第一計測通信を実行した場合、通信路4Aにおいて使用可能な帯域が、使用可能帯域として特定される。一方、通信路4Aが通信路4全体のボトルネックになっていることになるので、通信装置11が第二計測通信を実行した場合、ボトルネックである通信路4Aにおける使用可能な帯域が、通信路4全体の使用可能帯域として特定される。以上の結果、第一計測通信によって特定される使用可能帯域(通信路4Aにおける使用可能な帯域)、および、第二計測通信によって特定される使用可能帯域(通信路4Aにおける使用可能な帯域)は略同一となる。
図11では、通信路4Aにおける使用可能な帯域と、通信路4Bにおける使用可能な帯域とが略同一の状態であるとする。通信装置11が第一計測通信を実行した場合、通信路4Aにおける使用可能な帯域が、使用可能帯域として特定される。通信装置11が第二計測通信を実行した場合、通信路4A、4Bにおける使用可能な帯域が、通信路4全体の使用可能帯域として特定される。以上の結果、第一計測通信によって特定される使用可能帯域(通信路4Aにおける使用可能な帯域)、および、第二計測通信によって特定される使用可能帯域(通信路4A、4Bにおける使用可能な帯域)は略同一となる。
以上のように、中継器8が介在する通信路4に対して第一計測通信および第二計測通信が実行された場合、第一計測通信によって特定される使用可能帯域が、第二計測通信によって特定される使用可能帯域よりも大きくなるか、又は、双方によって特定される使用可能帯域が略同一となる。
通信装置11は、第一計測通信によって特定された使用可能帯域と、第二計測通信によって特定された使用可能帯域とを比較する。通信装置11は、第一計測通信によって特定された使用可能帯域が、第二計測通信によって特定された使用可能帯域よりも大きくなった場合(図9参照)、通信路4に中継器8が介在し、且つ、通信装置11、12間の計測通信に中継器8が影響を及ぼしていると判断する。通信装置11は、通信路4全体の使用可能帯域を特定する必要があるので、第二計測通信を優先的に実行する。
一方、通信装置11は、第一計測通信によって特定された使用可能帯域と、第二計測通信によって特定された使用可能帯域とが略同一となった場合、(a)通信路2に中継器7が介在している(図6〜図8参照)、(b)通信路3に中継器が介在していない、および、(c)通信路4に中継器8が介在しているものの、通信装置11、12間の計測通信に中継器8が影響を及ぼさない(図10、図11参照)のうちいずれかの状態であると判断する。但しこれらの場合、第一計測通信および第二計測通信によって特定される使用可能帯域は、いずれも通信路全体の使用可能帯域を適切に示していることになる。従って通信装置11は、より効率的な計測通信である第一計測通信を優先的に実行する。
図12から図14を参照し、通信装置10のCPU21において実行されるメイン処理について説明する。メイン処理は、通信装置10の電源を投入する操作がユーザによって実行された場合に、HDD24(図1参照)に記憶されたプログラムに従って、CPU21が実行する。なおメイン処理が起動された直後の状態で、CPU21は、初期状態の計測通信として第一計測通信を選択する。
図12に示すように、はじめにCPU21は計測処理(図13参照)を実行する(S111)。計測処理では、通信路に介在する中継器に対応する計測通信を選択するために、第一計測通信および第二計測通信を実行して中継器を判断する処理が実行される。計測処理の詳細については後述する。計測処理(S111)の後、CPU21は、第一周期が経過したか判断する(S115)。第一周期が経過していない場合(S115:NO)、第一周期の経過を継続して監視するために、処理はS115に戻る。第一周期が経過した場合(S115:YES)、CPU21は、計測処理(S111参照)によって選択された第一計測通信または第二計測通信を実行し、使用可能帯域を特定する(S117)。
CPU21は、第一周期よりも長い第二周期が経過したか判断する(S119)。第二周期が経過していない場合(S119:NO)、計測処理(S111参照)によって選択された第一計測通信または第二計測通信を第一周期で継続して実行するために、処理はS115に戻る。一方、第二周期が経過した場合(S119:YES)、第二周期で計測処理を実行するために、処理はS111に戻る。
図13を参照し、計測処理について説明する。はじめにCPU21は、第一計測通信が選択された状態であるか判断する(S121)。第一計測通信が選択された状態である場合(S111:YES)、CPU21は、第一計測通信および第二計測通信によって特定される使用可能帯域を比較して中継器を判断し、対応する計測通信を選択する処理(比較処理、図14参照)を実行する(S123)。
図14を参照し、比較処理について説明する。CPU21は、第一計測通信を実行し、使用可能帯域を特定する(S141)。以下、第一計測通信によって特定された使用可能帯域を、「第一帯域」という。次にCPU21は、第二計測通信を実行し、使用可能帯域を特定する(S143)。以下、第二計測通信によって特定された使用可能帯域を、「第二帯域」という。CPU21は、第一計測通信および第二計測通信を所定のn回繰り返して実行したか判断する(S145)。第一計測通信および第二計測通信の実行回数がn回未満の場合(S145:NO)、第一計測通信および第二計測通信を繰り返し実行するために、処理はS141に戻る。
第一計測通信および第二計測通信をn回実行した場合(S145:YES)、CPU21は、第一帯域から第二帯域を減算し、差分を算出する(S147)。第一計測通信および第二計測通信はn回実行されているので、n個の差分が算出されることになる。CPU21は、算出された差分と所定の閾値Tとを、次のようにして比較する。
図15および図16を参照して具体的に説明する。図15および図16は、算出されたn個の差分と閾値Tとの関係を示している。例えば図15に示すように、算出された差分のうち閾値Tよりも大きい差分の数がn/2以上ある場合、第一帯域の方が第二帯域よりも大きくなる傾向があると判断する。CPU21は、通信路4に中継器8が介在し、且つ、通信装置11、12間の計測通信に中継器8が影響を及ぼしている状態(図9参照)であると判断する。この場合、通信路4の使用可能帯域を計測する計測通信として第二計測通信が選択されることになる(図14、S151参照、後述)。
一方、例えば図16に示すように、算出された差分のうち閾値Tよりも大きい差分の数がn/2未満である場合、第一帯域と第二帯域とが略同一となる傾向があると判断する。CPU21は、(a)通信路2に中継器7が介在した状態(図6〜図8参照)、(b)通信路3に中継器が介在しない状態、および、(c)通信路4に中継器8が介在しているものの、通信装置11、12間の計測通信に中継器8が影響を及ぼしていない状態(図10、図11参照)のうちいずれかであると判断する。この場合、通信路2、3、4の使用可能帯域を計測する計測通信として、第一計測通信が選択されることになる(図14、S153参照、後述)。
以上のように通信装置11は、n回分の計測通信によって特定した使用可能帯域を比較することによって、計測結果が一時的に変動した場合やばらついた場合でも、中継器8が通信路4に介在し、且つ、通信路11、12間の計測通信に中継器8が影響を及ぼしているかをより適切に判断できる。
図14に示すように、閾値T以上となる差分の数がn/2以上である場合(S149:YES)、CPU21は、通信路の使用可能帯域を計測する計測通信として第二計測通信を選択する(S151)。比較処理は終了し、処理は計測処理(図13参照)に戻る。一方、閾値T以上となる差分の数がn/2未満である場合(S149:NO)、CPU21は、通信路の使用可能帯域を計測する計測通信として第一計測通信を選択する(S153)。比較処理は終了し、処理は計測処理(図13参照)に戻る。
図13に示すように、S123の処理時点では、S121で第一計測通信が選択された状態であると判断している。この場合、比較処理(図14参照)によって選択された第一計測通信または第二計測通信を実行するために、計測処理は終了し、処理はメイン処理(図12参照)に戻る。なおメイン処理では、比較処理によって選択された第一計測通信又は第二計測通信が実行されることになる(S117、図12参照)。比較処理によって第一計測通信が選択された場合(S151、図14参照)、第一計測通信が継続して実行されることになる。一方、比較処理によって第二計測通信が選択された場合(S153、図14参照)、第一計測通信から第二計測通信に即座に切り替えられ、第二計測通信が実行されることになる。
一方、図13のS121で、第二計測通信が選択された状態であると判断している場合(S121:NO)、CPU21は、比較処理(図14参照)を実行する(S125)。比較処理は、S123で実行される比較処理と同一である。比較処理によって第二計測通信が選択された場合(S127:YES)、S121で第二計測通信が選択された状態であると判断しているので、第二計測通信が選択された状態のまま変化していないことになる。この場合、メイン処理(図12参照)において第二計測通信を継続して実行する(S117、図12参照)ために、計測処理は終了し、処理はメイン処理に戻る。
一方、比較処理によって第一計測通信が選択された場合(S127:NO)、S121で第二計測通信が選択された状態であると判断しているので、メイン処理のS117(図12参照)で実行されている第二計測通信とは異なる第一計測通信が選択されたことになる。この場合CPU21は、メイン処理のS117で実行される第二計測通信を、第一計測通信に即座に変更しない。CPU11は、前回実行された比較処理でも同様に、第一計測通信が選択されているかを判断する(S129)。前回実行された比較処理でも同様に第一計測通信を選択している場合(S129:YES)、比較処理によって第一計測通信が二回連続して選択されたことになる。この場合、CPU21は、第一計測通信を選択する(S131)。計測処理は終了し、処理はメイン処理(図12参照)に戻る。メイン処理のS117(図12参照)では、第二計測通信から第一計測通信に変更され、第一計測通信が実行されることになる。一方、前回実行された比較処理において第二計測通信が選択されている場合(S129:NO)、CPU21は第二計測通信を選択する(S133)。計測処理は終了し、処理はメイン処理に戻る。メイン処理のS117では、第二計測通信が継続して実行されることになる。
以上のようにして通信装置10は、第一計測通信から第二計測通信への変更は即座に実行するのに対し、第二計測通信から第一計測通信への変更は即座に実行しない。このようにして通信装置10は、第二計測通信が実行される頻度を高くし、第一計測通信が実行される頻度を低くしている。第二計測通信は、中継器8が通信路に介在し、且つ、通信装置11、12間の通信に中継器8が影響を及ぼしているか否かに関わらず、通信路全体の使用可能帯域を常に特定することができる。このため通信装置10は、第二計測通信が実行される頻度を高くすることによって、使用可能帯域を安定的に特定している。
図17を参照し、メイン処理(図12参照)のS117によって実行される計測通信(図17中上段)が、比較処理(図14参照)の結果(図17中下段)に応じて変化する様子について説明する。第一計測通信が第一周期で継続的に実行され、使用可能帯域の特定がされていたとする(図中51)(S115、S117、図12参照)。第二周期が到来し(S119:YES、図12参照)、計測処理が実行される(S111、図12参照)。計測処理中の比較処理(S123、図13参照)によって、第一帯域と第二帯域とが略同一になる傾向があると判断され(図中53)(S149:NO、図14参照)、第一計測通信が選択される(S153、図14参照)。選択された第一計測通信が継続して実行される(図中51)(S115、S117、図12参照)。
次の第二周期が到来し(S119、図12参照)、計測処理が実行される(S111、図12参照)。計測処理中の比較処理(S123、図13参照)によって、第一帯域の方が第二帯域よりも大きくなる傾向があると判断され(図中55)(S149:YES、図14参照)、第二計測通信が選択される(S151、図14参照)。選択された第二計測通信が実行される(図中57)(S115、S117、図12参照)。
次の第二周期が到来し(S119、図12参照)、計測処理が実行される(S111、図12参照)。計測処理中の比較処理(S125、図13参照)によって、第一帯域と第二帯域とが略同一になる傾向があると判断され(図中59)(S149:NO、図14参照)、第一計測通信が選択される(S153、図14参照)。ところが、前回の比較処理において第二計測通信が選択されているので(S129:NO、図13参照)、最終的に第二計測通信が選択され(S133、図13参照)、第二計測通信が継続して実行される(図中61)(S115、S117、図12参照)。
次の第二周期が到来し(S119、図12参照)、計測処理が実行される(S111、図12参照)。計測処理中の比較処理(S125、図13参照)によって、第一帯域と第二帯域とが略同一になる傾向があると判断され(図中63)(S149:NO、図14参照)、第一計測通信が選択される(S153、図14参照)。前回の比較処理において第一計測通信が選択されているので(S129:YES、図13参照)、最終的に第一計測通信が選択され(S131、図13参照)、第一計測通信が実行される(図中65)(S115、S117、図12参照)。
以上説明したように、通信装置10は、所定の条件を満たすように中継器8が通信路に介在するか否かを判断し、判断結果に応じて、計測通信を切り替えることができる。通信装置10は、(a)通信路2に中継器7が介在している(図6〜図8参照)、(b)通信路3に中継器が介在していない、および、(c)通信路4に中継器8が介在しているものの、通信装置11、12間の計測通信に中継器8が影響を及ぼさない(図10、図11参照)のうちいずれかの状態である場合には、汎用のTCPパケットを用いて使用可能帯域を計測できる第一計測通信を選択する。一方、通信装置10は、通信路4に中継器8が介在し、且つ、通信装置11、12間の通信に中継器8が影響を及ぼしている場合(図9参照)、通信路4全体の使用可能帯域を特定するために第二計測通信を選択する。このように通信装置10は、使用可能帯域を特定する計測通信の方法を、所定の条件を満たすように中継器8が通信路に介在するか否かに応じて選択できる。このため通信装置10は、使用可能帯域を迅速かつ適切に特定することができる。
また通信装置10は、第一計測通信によって特定される使用可能帯域と、第二計測通信によって特定される使用可能帯域とを比較することによって、所定の条件を満たすように中継器8が通信路に介在するかを容易かつ適切に判断することができる。
また通信装置10は、第一周期よりも第二周期を長くする。これによって、第一計測通信および第二計測通信を行い中継器8の有無を判断する回数を抑制する。これによって通信装置10は、ネットワーク6のトラフィックが計測通信によって増大することを抑止できる。
なお、S149の処理を行うCPU21が本発明の「判断手段」に相当する。S131、S133、S151、S153の処理を行うCPU21が本発明の「選択手段」に相当する。S117の処理を行うCPU21が本発明の「第一通信手段」に相当する。S141およびS143の処理を行うCPU21が本発明の「第二通信手段」に相当する。S149の処理が本発明の「判断ステップ」に相当する。S131、S133、S151、S153の処理が本発明の「選択ステップ」に相当する。S117の処理が本発明の「第一通信ステップ」に相当する。
通信路4に介在し、且つ、通信装置11、12間の計測通信に影響を及ぼしている状態の中継器8が、本発明の「所定の条件を満たす中継器」に相当する。通信路に介在しているものの、通信装置11、12間の計測通信に影響を及ぼさない状態の中継器7、8は、本発明の「所定の条件を満たす中継器」から除外される。
なお本発明は上述の実施形態に限定されず、種々の変更が可能である。上述の第一計測通信では、TCPの確認応答機能を利用して使用可能帯域が特定された。本発明は、他の通信プロトコルにおける同様の機能を利用することによって、使用可能帯域が特定されてもよい。上述の第一計測通信および第二計測通信における使用可能帯域の特定方法は一例であり、他の方法で使用可能帯域が特定されてもよい。例えば第二計測通信において、通信装置11は、使用帯域を少しずつ増加させながら、TCPパケットを繰り返し送信してもよい。通信装置12は、TCPパケットの受信間隔を計測し、その変化傾向に基づいて、使用可能帯域を特定してもよい。具体的には、使用帯域が使用可能帯域未満である場合には、送信間隔と受信間隔とは略同一になる。一方、使用帯域が使用可能帯域以上になった場合、送信間隔よりも受信間隔の方が長くなる。通信装置12は、送信間隔よりも受信間隔のほうが長くなった場合の受信間隔に基づき、通信路の使用可能帯域を特定してもよい。
上述では、第一計測通信および第二計測通信をn回実行し、その差分を評価することによって、所定の条件を満たすように中継器8が通信路に介在するか否かを判断した。例えば通信装置11は、差分の平均値と所定の閾値とを比較することによって、所定の条件を満たすように中継器8が通信路に介在するか否かを判断してもよい。又例えば通信装置11は、差分の最大値と所定の閾値とを比較することによって、所定の条件を満たすように中継器8が通信路に介在するかを判断してもよい。
上述では、第一周期よりも第二周期を長くした。これに対し、第一周期と第二周期は同一であってもよい。上述では、比較処理によって第一計測通信が二回以上連続した場合に、使用可能帯域を特定するための計測通信を、第二計測通信から第一計測通信に変更した。これに対し、第一計測通信の連続回数は一回としてもよいし、三回以上としてもよい。
上述では、所定の条件を満たすように中継器8が通信路に介在するか否かを、第二周期で第一計測通信および第二計測通信を実行することによって判断した。例えば通信装置11は、入力部26を介して判断指示を検出した場合にも同様に、第一計測通信および第二計測通信を実行し、中継器8が通信路に介在するかを判断してもよい。また例えば通信装置11は、他の通信装置10から所定のパケットを受信した場合、第一計測通信および第二計測通信を実行し、中継器が通信路に介在するかを判断してもよい。例えば通信装置11は、通信装置12との通信が実行されている最中に、新たに別の通信装置10との間で通信を開始する場合、入力部26を介して判断指示を受け付けてもよいし、別の通信装置10から、通信の開始を要求するパケットを受信してもよい。通信装置11は、これらの場合に、第一計測通信および第二計測通信を実行し、通信路に中継器8が介在するかを判断してもよい。これによって通信装置11は、中継器8が通信路に介在するか否かを周期的に特定する場合と比較して、通信状況の変化に迅速に対応できる。従って通信装置11は、通信路上の中継機の検出、および計測手段の切り替えを短時間で実行することが可能となる。