図2は、実施形態に係るパケットの転送方法の例を示す図である。図2の例では、通信装置N8に記憶されている情報が、通信装置N1〜N5とN11〜N15にリレー転送されることにより、通信装置N1〜N5とN11〜N15にマルチキャスト送信されている。図2の実線は接続関係を示し、矢印の方向にパケットが送信されるものとする。また、通信装置N1〜N5、N8、N11〜N15は、通信状況を管理装置10に送信し、管理装置10は、受信した通信状況を管理しているものとする。以下、通信装置N1の動作を例として説明する。
通信装置N1は、受信したパケットを、受信した順番に通信装置N2、N3に転送する。また、通信装置N1は、受信したパケットを、そのパケットに含まれるデータの処理を開始するまでリオーダリングバッファに格納する。以下の記載では、パケットが通信装置のリオーダリングバッファに格納されている時間を「格納時間」と記載するものとする。
次に、通信装置N1は、パケットの送信先の通信装置N2とN3について通信状況を推定する。ここで、通信装置N2、N3へは、通信装置N1に受信された順序でパケットが転送されているので、通信装置N1は、通信装置N1での格納時間とパケットの送信先の通信装置での格納時間が同じ長さであると仮定する。また、通信装置N1は、通信装置N2、N3の各々から、パケットの再送にかかる時間(再送時間)を通知されているものとする。そこで、通信装置N1は、通信状況を推定する通信装置から通知された再送時間と格納時間の長さを比較する。再送時間のほうが格納時間よりも長いと、通信装置N1は送信先の通信状況が劣化すると判断する。図2(a)の例では、通信装置N1が、通信装置N3での通信状態は劣化するが通信装置N2での通信状態は良好であると推定した場合を示す。図2(a)は、劣化すると推定された通信経路を破線の矢印で示している。
次に、通信装置N1は、通信装置N3に対して、通信装置N1以外の通信装置からパケットを受信することを求める。通信装置N3は、管理装置10に新たな接続先の候補を要求する。管理装置10は、保持しているデータに基づいて、接続先となる通信装置の候補を通知する。ここでは、通信装置N4が接続先の候補として通知されたものとする。すると、通信装置N3は、図2(b)に示すように通信装置N4との間で接続を確立し、通信装置N4からパケットを受信する。図2(b)の白い矢印は、通信装置N3とN4の間で確立された接続により、通信品質の劣化が避けられた経路を表す。なお、通信装置N2〜N5は、パケットを転送している通信装置に対して、通信装置N1と同様の処理をすることができる。
このように、実施形態に係る通信方法では、転送元の通信装置は、転送先の通信装置での通信状況を推定し、転送先の通信装置での通信状況が劣化すると予測したときに、転送先の通信装置に接続先の変更を要求する。従って、通信状況の劣化が予測される通信装置の接続先を変更することにより、通信状況の劣化を回避することができる。
<第1の実施形態>
以下、第1の実施形態について説明する。以下の記載において、処理の対象を分かりやすくするために、リレー転送の対象となるデータを含むパケット(データパケット)を「パケット」と記載する。一方、制御に用いられる情報などのリレー転送の対象とならない情報は、「制御メッセージ」などと記載することがある。
図3は、実施形態に係るネットワークの例を示す図である。ネットワークは、管理装置10、ハブ25(25a〜25d)、通信装置30(30a〜30i)を備える。なお、個々の通信装置30には、Nと1以上の整数の組み合わせた識別子が割り当てられているものとする。例えば、通信装置30aの識別子はN1で、通信装置30cの識別子はN3である。
以下の説明では、図3に示す管理装置10や通信装置30の間で、図2(a)に示したような経路でパケット(データパケット)の送受信が行われるものとする。例えば、通信装置N8は、ハブ25d、25b、25aを介して、通信装置N1にパケットを送信する。また、通信装置N8は、ハブ25d、25b、25cを介して、通信装置N4にパケットを送信する。通信装置N1は、ハブ25aを介して通信装置N2にパケットを送信する。また、通信装置N1は、ハブ25a〜25cを介して通信装置N3にパケットを送信する。一方、通信装置N4は、ハブ25cを介して通信装置N5にパケットを送信している。なお、図2、図3を参照しながら説明したネットワークは一例であり、ネットワークの形状や接続関係などは、任意に変更される場合がある。
図4は、通信装置30の構成の例を示す図である。通信装置30は、受信処理部31、転送用バッファ32、リオーダリングバッファ33、送信処理部34、アプリケーション処理部35、タイマ36、品質管理部40、および、記憶部50を備える。品質管理部40は、算出部41、再送時間取得部42、比較部43、変更指示部44、報告指示部45、応答部46、および、接続先変更部47を備える。記憶部50は、時刻テーブル51、装置テーブル52、メッセージタイプテーブル53、および、データ54を格納する。
受信処理部31は、パケットや制御メッセージを受信する。受信処理部31は、受信したパケットを転送用バッファ32とリオーダリングバッファ33に格納する。一方、制御メッセージを受信すると、受信処理部31は、受信した制御メッセージを品質管理部40に出力する。なお、受信処理部31は、制御メッセージの出力先を決定するために、メッセージタイプテーブル53を参照することもできる。また、受信処理部31は、受信したパケットをリオーダリングバッファ33に書き込んだ時刻を、パケットの識別子に対応付けて、時刻テーブル51に記録する。時刻テーブル51の例については後述する。受信処理部31は、タイマ36から時刻情報を取得する。
転送用バッファ32は、パケットが転送先の通信装置に送信されるまでの間、パケットを格納する。送信処理部34は、パケットを転送先の通信装置に送信する際に、送信の対象のパケットを転送用バッファ32から取得する。
アプリケーション処理部35は、リオーダリングバッファ33に格納されているパケットに含まれているデータを、アプリケーションで処理する。処理対象のパケットは、アプリケーション処理部35での処理が開始されるときに、リオーダリングバッファ33からアプリケーション処理部35に読み出される。さらに、アプリケーション処理部35は、リオーダリングバッファ33からパケットを読み出した時刻を、時刻テーブル51に記録する。このとき、アプリケーション処理部35は、タイマ36から時刻情報を取得することができる。
図5は、時刻テーブル51の例を示す図である。時刻テーブル51は、リオーダリングバッファ33にパケットが書き込まれた時刻と、リオーダリングバッファ33からパケットが読み出された時刻を、パケットの識別子に対応付けて記録している。ここで、リオーダリングバッファ33からパケットが読み出される時刻は、アプリケーション処理部35でのパケットの処理が開始する時刻である。時刻テーブル51には、これらの情報に加えて、パケットがリオーダリングバッファ33に記憶されている時間の長さも記録される場合がある。以下の説明では、パケットがリオーダリングバッファ33に記憶されている時間の長さのことを「格納時間」と記載する。
算出部41は、時刻テーブル51にパケットの読み出し時刻が記録されると、パケットが書き込まれた時刻から、そのパケットの読み出し時刻までの時間を求める。算出部41は求めた格納時間を、比較部43に出力する。算出部41は算出した格納時間を時刻テーブル51に記録することができる。
再送時間取得部42は、転送先の通信装置がパケットの受信に失敗した場合に、その通信装置に再送されたパケットが受信されるまでにかかる時間を取得する。以下の記載では、パケットの再送にかかる時間を「再送時間」と記載することがある。例えば、通信装置N3が受信に失敗したパケットP1の再送を通信装置N1に要求してから、再送されたパケットを通信装置N3が受信するまでの時間を再送時間とすることができる。再送時間は、通信装置に電源が投入されたときや、通信装置の接続先が変更されたときに求められる。また、再送時間取得部42は、再送されるパケットを受信する通信装置30と、再送パケットを送信する通信装置30の間でパケットが往復するためのRound Trip Time(RTT、往復時間)に基づいて再送時間を算出できる。例えば、通信装置N3の再送時間取得部42は、通信装置N1に計測パケットを送信し、計測パケットの送信時刻と、通信装置N1から計測パケットに対する応答パケットの受信時刻の間の時間(RTT)に所定のマージンを加えた値を再送時間とすることができる。再送時間取得部42は、RTTを求めるために、例えば、pingなどの計測パケットを用いることができる。再送時間取得部42は、計算した再送時間を例えば、データ54として記憶部50に記憶させる。また、再送時間取得部42は、制御メッセージを用いて、パケットの転送元の通信装置30に再送時間を通知することができる。例えば、通信装置N3の再送時間取得部42は、図2(a)に示す経路で通信が行われている場合に通信装置N1に再送時間を通知する。一方、図2(b)に示す経路で通信が行われている場合には、通信装置N3の再送時間取得部42は、通信装置N4に再送時間を通知する。
比較部43は、受信処理部31において、再送時間を通知する制御メッセージが受信されると、その制御メッセージを受信処理部31から受け取る。なお、制御メッセージの種類の特定方法や制御メッセージに含まれる情報の特定方法については後述する。さらに、比較部43は、通知された再送時間を転送先の通信装置30の識別子に対応付けて装置テーブル52に記憶する。
図6は、装置テーブル52の例を示す図である。図6は、図2(a)の経路でマルチキャスト通信が行われているときに、通信装置N1が備える装置テーブル52の例を表している。装置テーブル52は、管理装置10や通信装置30を特定する識別子(装置ID)に対応付けて、管理装置10や通信装置30のInternet Protocol(IP)アドレス、装置種別等の情報を記録する。ここで、装置種別には、「管理端末」、「上流」、「下流」の3種類があるものとする。管理装置10は「管理端末」に分類される。パケットの送信元の通信装置30は「上流」に分類され、パケットの転送先の通信装置30は「下流」に分類される。図2(a)に示すように、通信装置N1は通信装置N8からパケットを受信しているので、通信装置N1に記録されている装置テーブル52では、通信装置N8は「上流」に分類される。一方、通信装置N1は通信装置N2、N3にパケットを転送しているので、通信装置N1中の装置テーブル52では、通信装置N2、N3が「下流」に分類される。「下流」に分類されている通信装置30からは、前述のとおり、再送時間が通知されてくる。そこで、比較部43は、再送時間を装置テーブル52中に、装置IDに対応付けて記録する。図6の例では、通信装置N2と通信装置N1の間での再送時間は100ms、通信装置N3と通信装置N1の間での再送時間は500msである。
比較部43は、算出部41から入力された格納時間と再送時間を比較する。比較部43は、比較結果を変更指示部44に通知する。変更指示部44は、比較部43で得られた比較結果から、パケットの送信先の通信装置30における通信状況が劣化するかを推定する。なお、パケットの送信先の通信装置30は、装置テーブル52で下流に分類された通信装置30である。変更指示部44は、通信状況が劣化すると推定された通信装置30に、パケットの送信元の変更を求める。報告指示部45は、比較部43で得られた比較結果を管理装置10に通知する。
応答部46は、他の通信装置30から接続の確立を求められたときに、その通信装置30へのパケットの送信を行うかを決定し、決定した結果を、パケットの送信を求めた通信装置30に通知する。例えば、通信装置N3が通信装置N4に接続の確立を求める制御メッセージを送信すると、通信装置N4の応答部46は、通信装置N3に接続を許可するかを決定し、結果を通信装置N3に通知する。
接続先変更部47は、パケットの送信元の変更を求められた場合に、管理装置10にパケットの送信元の候補を問い合わせる。例えば、通信装置N3が通信装置N1から送信元の変更を要求されると、通信装置N3の接続先変更部47は、管理装置10に送信元となる通信装置30の候補を要求する。接続先変更部47は、管理装置10から接続先の候補を取得すると、得られた候補から1つの通信装置30を選択して、接続を要求する。接続に失敗した場合、接続先変更部47は、管理装置10から通知された候補から別の通信装置30を選択して接続を要求する。比較部43、変更指示部44、報告指示部45、応答部46、接続先変更部47などの動作については後で詳しく述べる。
図7(a)は、メッセージタイプテーブル53の例を示す図である。複数の通信装置30の間や、管理装置10と通信装置30の間では、接続の確立や接続先の変更のために、制御メッセージが送受信される。制御メッセージは、図7(b)に示すように、IPヘッダ61、User Datagram Protocol(UDP)ヘッダ62、メッセージ部63を備える。なお、図7(b)は制御メッセージの構成の例であり、例えば、UDPヘッダ62の代わりにTransmission Control Protocol(TCP)ヘッダを備えるなど、制御メッセージの構成は、実装に応じて変更される場合がある。
メッセージ部63には、メッセージタイプ(M−Type)64とオプション65が含まれている。メッセージタイプテーブル53は、メッセージタイプ64に設定される値を、制御メッセージに含まれる情報の種類や制御メッセージによる指示の内容と対応付けて記憶する。オプション65には、図7(a)のテーブルのオプションの欄に示すデータが含まれる。例えば、通信装置N1の変更指示部44が通信装置N3に接続先の変更を求めるときは、メッセージタイプ64の値が1の制御メッセージが、通信装置N1から通信装置N3に送信される。また、通信装置N3が管理装置10に接続先の候補を問い合わせるときには、通信装置N3は、メッセージタイプ64の値が2の制御メッセージを管理装置10に送信する。制御メッセージの具体例や制御メッセージを用いた動作の例については後で述べる。
図8は、管理装置10の構成の例を示す図である。管理装置10は、受信部11、送信部12、制御部71、および、記憶部75を備える。制御部71は接続先選択部72とメッセージ処理部73を備えており、記憶部75は通信状態データベース76とメッセージタイプテーブル53を備えている。ここで、メッセージタイプテーブル53は、通信装置30に備えられているメッセージタイプテーブル53と同様のテーブルである。
受信部11は、通信装置30から制御メッセージを受信する。受信部11は受信した制御メッセージをメッセージ処理部73に出力する。メッセージ処理部73は、メッセージタイプテーブル53を参照して、受信した制御メッセージに含まれているデータを処理する。ここで、管理装置10が受信する制御メッセージは、接続先の候補に関する情報を要求する制御メッセージ(M−Type=2)か、通信装置30の状態を報告する制御メッセージ(M−Type=7)である。通信装置30の状態を報告する制御メッセージを受信した場合、受信部11は、制御メッセージに含まれている情報を、通信状態データベース76に記録する。通信状態データベース76の例を図9に示す。なお、通信状態データベース76へのデータの記録方法や通信状態データベース76の使用方法などについては、後で詳しく述べる。
一方、接続先の候補に関する情報を要求する制御メッセージが入力された場合、メッセージ処理部73は、接続先選択部72に制御メッセージを出力する。接続先選択部72は、通信状態データベース76を用いて、転送先の通信状態が良好な通信装置30のリストを生成する。接続先選択部72は、メッセージタイプ64の値を「3」に設定し、生成したリストをオプションに含めた制御メッセージを生成する。接続先選択部72は、送信部12を介して、接続先の候補を通知するメッセージを、接続先の候補を要求した通信装置30に送信する。
次に、マルチキャスト通信の経路が図2(a)に示す経路から図2(b)の経路に変更される場合について、通信装置N1〜N4、および、管理装置10の動作の例を説明する。ここで、通信装置N1、N4は上流の通信装置30の例であり、通信装置N2、N3は下流の通信装置30の例である。なお、以下に述べる方法は一例であり、例えば、手順(9)を手順(10)の後に行うなどの変更が加えられる場合がある。
(1)通信装置N3とN2が、電源を投入された後に通信装置N1と接続を確立したとする。接続が確立されると、通信装置N1の備える装置テーブル52には、通信装置N2、N3が下流の装置として登録される。一方、通信装置N2、N3は、それぞれの装置テーブル52に、通信装置N1を上流の装置として登録する。
次に、通信装置N3の再送時間取得部42は、通信装置N1に向けてpingなどの測定パケットを送信し、測定パケットの送信時刻から測定パケットに対する応答パケットが通信装置N3で受信される時刻までの時間(往復時間)を測定する。再送時間取得部42は、得られた往復時間に、予め記憶しているマージンを加えた値を再送時間とする。
(2)通信装置N3の再送時間取得部42は、制御メッセージ(図7)を用いて再送時間を通信装置N1に通知する。メッセージタイプ64が8に設定されている制御メッセージは、再送時間の通知に用いられる。そこで、通信装置N3の再送時間取得部42は、メッセージタイプ64の値を8に指定し、オプション65に再送時間を含めた制御メッセージを、送信処理部34に出力する。送信処理部34は、入力された制御メッセージを通信装置N1に送信する。
(3)通信装置N1の受信処理部31は、通信装置N3から受信した制御メッセージのメッセージタイプ64の値が8に設定されていることを確認すると、再送時間が通知されたと判断して、比較部43に出力する。比較部43は、制御メッセージに含まれている再送時間を読み出して、装置テーブル52に記録する。通信装置N2も、通信装置N3と同様に再送時間を算出して、得られた結果を通信装置N1に通知する。通信装置N1は、通信装置N2から通知された再送時間も装置テーブル52に通知する。ここでは、図6に示すように、通信装置N2から通知された再送時間は100ms、通信装置N3から通知された再送時間は500msであるものとする。
(4)通信装置N1は、通信装置N8から受信したパケットを通信装置N3とN2に送信する。また、通信装置N1の受信処理部31は、通信装置N8から受信したパケットを、リオーダリングバッファ33に格納すると共に、パケットを格納した時刻を時刻テーブル51に記録する。
(5)通信装置N1のアプリケーション処理部35は、リオーダリングバッファ33に格納されたパケットを処理の順番どおりにリオーダリングバッファ33から読み出して、アプリケーションで処理する。アプリケーション処理部35は、時刻テーブル51に、パケットを読み出した時刻を記録する。
(6)通信装置N1の算出部41は、パケットが読み出された時刻が時刻テーブル51(図5)に記録されると、格納時間を算出する。例えば、格納時間は、パケットP1では1000ms、パケットP2では200ms、パケットP3では1000ms、パケットP4では400msであるものとする。
(7)通信装置N1の比較部43は、格納時間が算出されたパケットの各々について、格納時間と再送時間の長さを比較する。図10は、格納時間(A)と再送時間(B)の比較結果の例を示すテーブルである。例えば、パケットP2の格納時間(200ms)は、通信装置N3の再送時間500msより短いので、図10に示すように比較部43は、通信装置N3に送信された格納時間よりも再送時間が長いパケットとしてパケットP2をチェックする。同様に、パケットP4の格納時間も通信装置N3の再送時間よりも短いので、図10に示すテーブルのようにパケットP4もチェックされる。さらに比較部43は、パケットP1やP3については、通信装置N3に送信された場合の再送時刻よりも格納時間が長いと判断する。単位時間あたりに通信装置N3に送信されたパケットについて同様の判断を行った結果、比較部43はチェックされたパケットの数を確認する。ここでは、図10に示すように、比較部43は、格納時間が通信装置N3への再送時間よりも短いパケットの数は6つであると判断したとする。この場合、通信装置N1から通信装置N3に送信されたパケットのうちの6個は、通信装置N3に再送された場合に通信装置N3での処理に間に合わないと判断されている。例えば、通信装置N3が通信装置N1から送信されたパケットP2の受信に失敗してパケットP2が通信装置N1から再送されると、通信装置N3は、パケットP2の処理を開始しようとする時刻までにパケットP2を受信できない。すると、通信装置N3でパケットP2についてのパケットロスが発生したことになる。従って、格納時間よりも再送時間の方が長いパケットの数が大きくなるほど、パケットの転送先の装置での通信の状況が悪くなると判断できる。
比較部43は、さらに、格納時間と通信装置N2への再送時間を比較する。ここでは、格納時間が通信装置N2への再送時間よりも短いパケットの数はないと判断されたものとする。この場合、通信装置N1から通信装置N2に単位時間に送信されたパケットは、いずれも、再送されたとしても通信装置N2での処理に間に合うことになる。
(8)比較部43は、格納時間よりも再送時間が短いパケットの数を、送信先の通信装置30の識別子と対応付けて変更指示部44と報告指示部45に通知する。報告指示部45は、比較部43から通知された結果を比較して、格納時間が再送時間よりも短いパケットの数の最大値を求める。例えば、通信装置N1の場合、格納時間が再送時間よりも短いパケットの数は、通信装置N3では6で、通信装置N2では0である。通信装置N1が通信装置N2、N3以外の通信装置30にパケットを送信していない場合、格納時間が再送時間よりも短いパケットの数の最大値は、6である。さらに、報告指示部45は、パケットの格納時間の平均値を算出する。例えば、報告指示部45は、数十秒間などの一定の時間中に送受信されたパケットについて、格納時間の平均値を求めることができる。報告指示部45は、格納時間が再送時間よりも短いパケットの数や、格納時間の平均値などの通信装置30の状況を表す情報を、制御メッセージ(図7)を用いて管理装置10に報告する。このとき、制御メッセージのメッセージタイプ64の値は「7」に設定される。図11は、管理装置10への状況報告に用いられる制御メッセージのオプション65に設定される情報の例を示す。
(9)管理装置10の受信部11は、制御メッセージを受信すると、受信した制御メッセージをメッセージ処理部73に出力する。メッセージ処理部73は、制御メッセージのメッセージタイプ64とメッセージタイプテーブル53を参照する。制御メッセージのメッセージタイプ64が「7」に設定されている場合、メッセージ処理部73は、状況報告の制御メッセージを受信したと判断して、制御メッセージのオプション65に含まれている情報を、通信状態データベース76に格納する。このとき、メッセージ処理部73は、制御メッセージの送信元のIPアドレスやポートをIPヘッダ61、UDPヘッダ62などから取得し、オプション65の情報と対応付けて記録する。図9の例では、通信状態データベース76は、通信装置30の識別子、IPアドレス、ポートに対応付けてオプション65に格納されている情報を記録している。
(10)一方、手順(8)で比較部43から比較の結果を入力された変更指示部44は、比較部43から通知されたパケット数を閾値(C)と比較する。ここで、変更指示部44は、予め閾値を記憶することができ、また、適宜、データ54から読み出すことができる。通信装置N2については、格納時間よりも再送時間が短いパケットの数は0で、閾値未満であるとする。すると、変更指示部44は通信装置N2については、通信が劣化する可能性は無いと判断する。
一方、通信装置N3については、格納時間よりも再送時間が短いパケットの数が閾値Cを上回ったとする。すると、変更指示部44は、通信装置N3の通信状況が劣化する可能性があると判定する。そこで、変更指示部44は、パケットを受信する通信装置30を変更することを通信装置N3に求める制御メッセージを通信装置N3に送信する。このとき、変更指示部44は、メッセージタイプ64の値を「1」に設定した制御メッセージを生成して送信処理部34に出力する。送信処理部34は、入力された制御メッセージを通信装置N3に送信する。
(11)通信装置N3の受信処理部31は、通信装置N1から受信した制御メッセージのメッセージタイプ64が「1」に設定されていることを確認すると、その制御メッセージを接続先変更部47に出力する。
(12)通信装置N3の接続先変更部47は、接続先の変更を要求する制御メッセージが入力されると、管理装置10にむけて、新たな接続先の候補となる通信装置30を問い合わせる制御メッセージを送信する。すなわち、接続先変更部47は、メッセージタイプ64の値が「2」に設定された制御メッセージを生成して送信処理部34に出力する。送信処理部34は、管理装置10に向けて制御メッセージを送信する。
(13)管理装置10の受信部11は、制御メッセージを受信すると、メッセージ処理部73に出力する。メッセージ処理部73は、制御メッセージのメッセージタイプ64が「2」に設定されていることを確認すると、接続先の候補の問い合わせを受けていると判断し、接続先選択部72に接続先の候補を示すリストの作成を要求する。接続先選択部72は、通信状態データベース76を参照して、通信状況の良好な通信装置30のリストを作成する。
図12は、通信状況の良好な通信装置30のリスト(接続先候補リスト)の例を示す。通信装置30のリストは、通信状態データベース76に記録されているデータの一部を含む。接続先選択部72は、格納時間が再送時間よりも短いパケットの数の最大値が閾値Cより小さい通信装置30に関するデータを、格納時間が再送時間よりも短いパケットの数の最大値が小さい順に並べ、得られた結果を接続先候補リストとする。接続先選択部72は、生成した接続先候補リストを、通信装置N3に送信する。このとき、接続先選択部72は、メッセージタイプ64に「3」を設定し、オプション65に接続先候補リストを含めた制御メッセージを、通信装置N3に向けて送信する。
(14)通信装置N3の受信処理部31は、メッセージタイプ64に「3」が設定された制御メッセージを受信すると、受信した制御メッセージを接続先変更部47に出力する。接続先変更部47は、制御メッセージに含まれている接続先候補リストを取得して、データ54として格納する。さらに、通信装置N3の接続先変更部47は、接続先候補リストに含まれている通信装置30に接続を要求する。このとき、接続先変更部47は、格納時間が再送時間よりも短いパケットの数の最大値が小さい通信装置30ほど優先的に接続を要求するものとする。接続先変更部47は、図7(a)に示すように、メッセージタイプ64を「4」に設定し、さらに、オプション65に通信装置N3のアドレスと通信に用いるポートの番号を含む制御メッセージを用いて接続を要求する。例えば、管理装置10から図12に示す接続先候補リストが送信されてきた場合、接続先変更部47は、通信装置N4に制御メッセージを送信して接続を要求する。
(15)通信装置N4の受信処理部31は、メッセージタイプ64の値が「4」に設定された制御メッセージを受信すると、制御メッセージを応答部46に出力する。応答部46は、通信装置N4がパケットを転送している通信装置30の数を、通信装置N4からパケットを転送することができる通信装置30の数の最大値と比較する。なお、各通信装置30の応答部46は、予め、パケットを転送することができる通信装置30の数の最大値を記憶しているか、もしくは、データ54から読み出すことができるものとする。また、応答部46は、装置テーブル52を参照することにより、現在、パケットを転送している通信装置30の数を取得することができる。通信装置N4からパケットが転送されている通信装置30の数が、パケットを転送することができる通信装置30の最大値を超えていない場合、通信装置N4は、通信装置N3に通信を許可する。例えば、通信装置N4は、3つの通信装置30にパケットを転送することができるとする。ここで、図2(a)に示すように、通信装置N5にしかパケットを送信していない場合、応答部46は、通信装置N4が通信装置N3に接続を許可できると判断する。そこで、応答部46は、メッセージタイプ64の値を「5」に設定し、オプション65に「接続許可」を示す情報を含めた制御メッセージを通信装置N3に送信する。
一方、通信装置N4が、すでに、パケットを転送することができる通信装置30の数の最大値と同数の通信装置30にパケットを転送している場合、通信装置N4は、通信装置N3に通信を許可しない。例えば、通信装置N4は3つの通信装置30にパケットを転送することができる場合でも、接続の許可を求められたときに通信装置N4が3つの通信装置30にパケットを送信している場合は、接続を拒否する。接続を拒否する場合、応答部46は、メッセージタイプ64の値を「5」に設定し、オプション65に「接続拒否」を示す情報を含めた制御メッセージを生成する。接続拒否を表す制御メッセージを受信した場合、通信装置N3は、接続先候補リストに含まれている他の通信装置30に接続を要求する。通信装置N3は、接続を許可されるまで、接続先候補リストに含まれている通信装置30への接続要求を繰り替えす。
(16)ここでは、通信装置N3が、通信装置N4から接続を許可する制御メッセージを受信したものとする。通信装置N3と通信装置N4の間で接続が確立される。すると、接続先変更部47は、装置テーブル52に通信装置N4を「上流」の装置として登録する。また、接続が確立されると、通信装置N3は、通信装置N1に、接続の切断を要求すると共に、接続先変更部47は、通信装置N1の記録を装置テーブル52から削除する。接続の切断を要求するとき、通信装置N3は、図7(a)に示すように、メッセージタイプ64に「6」を設定した制御メッセージを通信装置N1に送信する。通信装置N1は、切断を要求されると、応答部46は、通信装置N3との間の接続を切断する。また、通信装置N1の応答部46は、図10に示すテーブルや装置テーブル52から通信装置N3に関するデータを削除する。これらの処理により、図2(b)に示す経路でのマルチキャスト送信が開始される。
なお、本実施形態で説明した動作は、通信装置N1〜N4の間に限らず、パケットを送受信する複数の通信装置30でも行われる動作である。この場合に、パケットを送信する装置の動作は通信装置N1、N4の動作と同様であり、パケットを受信する通信装置30の動作は通信装置N2、N3と同様である。
また、閾値Cの値は1以上の任意の値にすることができる。オペレータ等は、閾値Cの値を、例えば、ネットワークの状態、アプリケーションや送受信されるデータの性質などに基づいて決定することができる。さらに、図7(a)に示すメッセージタイプテーブル53に設定されているパラメータは実装に応じて変更されることがあり、メッセージタイプテーブル53に設定されているパラメータの値に応じて、制御メッセージに設定される値は変更されることがある。
図13は、通信装置30で行われる動作の例を説明するフローチャートである。受信処理部31は、リオーダリングバッファ33へパケットを格納した時刻をタイマ36から取得して、時刻テーブル51に記録する(ステップS1)。一方、アプリケーション処理部35は、リオーダリングバッファ33からパケットを読み出すと、読み出した時刻を時刻テーブル51に記録する(ステップS2)。算出部41は、パケットが読み出された時刻から書き込まれた時刻を差し引いて、パケットがリオーダリングバッファ33に格納されている時間(格納時間)を算出する(ステップS3)。変更指示部44は、変数nを1に設定する(ステップS4)。比較部43は、格納時間と、変数nで特定される、転送先の通信装置30のうちの1つ(Nn)への再送時間とを比較し、再送時間の方が格納時間よりも長いパケットの数(Pn)を求める(ステップS5、S6)。次に、変更指示部44は、比較部43から比較結果(Pnの値)を取得し、閾値(C)を超えているかを確認する(ステップS7)。再送時間の方が格納時間よりも長いパケットの数が閾値Cを超えている場合、変更指示部44は、転送先の通信装置30での通信品質が劣化すると判断し、転送先の通信装置30にパケットの送信元を変更することを求める(ステップS8)。変更指示部44は、nの値を1つインクリメントし、nの値を転送先の通信装置30の数と比較する。nの値がパケットを転送している通信装置30の数よりも大きくなるまでステップS5〜S10の処理を繰り返す(ステップS10)。パケットの転送先の通信装置30から切断を要求する制御メッセージを受信すると、応答部46は、装置テーブル52に含まれているデータから、切断を要求してきた通信装置30のデータを削除する(ステップS11)。報告指示部45は、パケットの送信先の通信装置30が増減したかを確認する。さらに、報告指示部45は、パケットの送信先の通信装置30のいずれかで、再送時間の方が格納時間よりも長いパケットの数(N)が変動したかも確認する(ステップS12)。報告指示部45は、パケットの送信先の通信装置30の数かNの値のいずれかが変動した場合、管理装置10に状態を通知する(ステップS13)。このときは、図7に示した制御メッセージが用いられる。
図14は、パケットが送信される経路が変更される場合の動作の例を説明するフローチャートである。以下の記載では、ある通信装置30へパケットを転送している通信装置30を上流の通信装置30、もしくは、接続先の通信装置30と記載する。通信装置30が上流の通信装置30から、接続先の変更を指示するメッセージ(張替指示)を受信する(ステップS21)。すると、通信装置30は、管理装置10に接続先の候補を問い合わせる(ステップS22)。管理装置10は、通信状態データベース76を用いて接続先候補リストを生成し、接続先を問い合わせた通信装置30に、接続先候補リストを送信する(ステップS23)。通信装置30は、管理装置10から接続先候補リストを受信する(ステップS24)。通信装置30は、接続先候補リストに通信装置30に関するデータが記録されているかを確認する(ステップS25)。接続先候補リストにデータが記録されている場合、接続先候補リストに記録されている通信装置30のうちの1つを選択して、選択した通信装置30に関する情報を接続先候補リストから削除する(ステップS26)。通信装置30は、接続先候補リストから選択した通信装置30に接続を要求する(ステップS27)。接続を要求した通信装置30との間で接続が確立されるまで、ステップS25〜S28の処理が繰り返される(ステップS28)。接続が確立されると、通信装置30は、ステップS21の指示があるまでパケットの転送元であった上流の通信装置30に、接続の切断を要求する(ステップS29)。
このように、上流の通信装置30は、パケットの転送先の通信装置30で、再送されたパケットがアプリケーションでの処理に間に合わない可能性があるパケットの数を用いて、下流の通信装置30の通信品質を推測する。また、下流の通信装置30での通信状況が劣化すると予測したときに、上流の通信装置30は、下流の通信装置に接続先の変更を要求する。従って、通信状況の劣化が予測される通信装置の接続先を変更することにより、通信状況の劣化を回避することができる。
<第2の実施形態>
第2の実施形態では、管理装置10が接続先候補を通知するときに、追加可能なパスがある通信装置30を指定する場合について説明する。
図15は、第2の実施形態で、報告指示部45が管理装置10に通信状況を報告する場合に、制御メッセージのオプション65に含まれるデータの例を示す。図15の例では、単位時間で観測された格納時間の平均値、格納時間よりも再送時間が長いパケット数の最大値、通信装置30で追加可能なパスの数がオプション65に含まれる。ここで、追加可能なパスの数は、応答部46が求めるものとする。応答部46は、予め、パケットを転送することができる通信装置30の数の最大値を記憶しているか、データ54から適宜、読み出す。さらに、応答部46は、装置テーブル52に「下流」の装置として登録されている通信装置30の数を取得する。応答部46は、パケットを転送することができる通信装置30の数の最大値から、装置テーブル52に登録されている下流の装置の数を差し引いた値を、追加可能なパスの数とする。
図15に示す情報をオプション65に含む制御メッセージを受信すると、管理装置10は、通信状態データベース76に、図9に示したデータに加えて、追加可能なパスの数を、通信装置30ごとに記録する。
通信装置30は、接続先候補リストを要求する際に、その通信装置30が接続している上流の通信装置30を特定する情報を管理装置10に通知する。すると、管理装置10は、接続先リストから、通信装置30から通知された上流の通信装置30と、追加可能なパスが無い通信装置30を接続先候補リストから削除した上で、接続先候補リストを通知する。ここで、ある通信装置30について追加可能なパスが無いことは、ある通信装置30はパケットを転送することができる通信装置30の数の最大値と同数の通信装置30にパケットを転送していることを示す。すなわち、本実施形態では、接続を拒否する可能性の高い通信装置30は接続先候補リストから除外される。従って、通信装置30は、接続を拒否される通信装置30に接続を要求する可能性が低くなる。
図16は、第2の実施形態で行われる動作の例を説明するフローチャートである。上流の通信装置30から接続先の変更を要求する制御メッセージを受信すると、通信装置30は、接続先の変更を要求した通信装置30を「接続先候補としない端末リスト」に記録する(ステップS31、S32)。通信装置30は、管理装置10に接続先候補を問い合わせる制御メッセージを送信する。このとき用いられる制御メッセージでは、メッセージタイプ64が「2」に設定され、オプション65に「接続先候補としない端末リスト」が含まれているものとする。
管理装置10は、通信状態データベース76から、再送時間の方が格納時間よりも長いパケットの数(N)が閾値(C)を超えていない通信装置30のリストを作成する。さらに、生成したリストから「接続先候補としない端末リスト」に含まれる端末と、パスの追加ができない通信装置30を削除する。管理装置10は、得られたリスト(候補リスト)を、接続先端末の問い合わせをした通信装置30に送信する(ステップS34)。通信装置30は、候補リストを受信すると、候補リストに記録されている通信装置30に接続を要求する(ステップS36)。なお、ステップS36の動作は、図14を参照しながら説明したステップS25〜S28と同様である。通信装置30は、候補リストに含まれているいずれの通信装置30とも接続を確立できない場合、接続を確立することができなかった通信装置30と接続先の変更を要求した通信装置30を「接続先候補としない端末リスト」に記録する。その後、ステップS33以降の処理が繰り返される(ステップS38)。一方、通信装置30と候補リストに含まれている装置との間で接続が確立されると、通信装置30は、接続先の変更を求めてきた上流装置に対して、接続の切断を求め、切断を切る(ステップS39)。
図15、図16を参照しながら説明したように、第2の実施形態では、通信装置30との間で接続を確立できる可能性のある装置が通信装置30に通知される。従って、第1の実施形態に比べて、接続が確立されるまでに送受信される制御メッセージの数が減るので、帯域の有効活用につながる。また、通信装置30は、接続できない装置に接続を求める可能性が低いので、通信装置30の処理の負担も軽減される場合がある。
図17は、通信装置30や管理装置10のハードウェア構成の例を示す。なお、通信装置30や管理装置10で用いられるハードウェアは、同一であっても良く、また、異なっていても良い。例えば、通信装置30と管理装置10では、用いられているCentral Processing Unit(CPU)91やメモリ92が互いに異なっていても良く、同一であっても良い。
通信装置30は、CPU91、メモリ92、入力装置93、出力装置94、バス95、外部記憶装置96、媒体駆動装置97、ネットワーク接続装置99を備える。CPU91は、アプリケーション処理部35、タイマ36、品質管理部40として動作する。メモリ92は、転送用バッファ32、リオーダリングバッファ33、および、記憶部50として動作する。ネットワーク接続装置99は、受信処理部31や送信処理部34として動作する。入力装置93は、例えばキーボードやマウスなどであり、ユーザは入力装置93を用いて、通信装置30にデータを入力できる。出力装置94は、適宜、データ等を表示する。バス95は、CPU91、メモリ92、入力装置93、出力装置94、外部記憶装置96、媒体駆動装置97、ネットワーク接続装置99などの間を相互にデータの受け渡しが行えるように接続する。外部記憶装置96は、プログラムやデータなどを格納し、適宜、CPU91などに格納している情報を提供する。媒体駆動装置97は、メモリ92や外部記憶装置96のデータを可搬記憶媒体98に出力することができ、また、可搬記憶媒体98からからプログラムやデータ等を読み出すことができる。ここで、可搬記憶媒体98は、フロッピイディスク、Magneto-Optical(MO)ディスク、Compact Disc Recordable(CD−R)やDigital Versatile Disk Recordable(DVD−R)を含む、持ち運びが可能な任意の記憶媒体とすることができる。通信装置30は、ネットワーク100を介して、パケットや制御メッセージを送受信する。
管理装置10もCPU91、メモリ92、入力装置93、出力装置94、バス95、外部記憶装置96、媒体駆動装置97、ネットワーク接続装置99を備える。管理装置10では、CPU91は、制御部71として動作する。また、メモリ92は、記憶部75として動作する。ネットワーク接続装置99は、受信部11、送信部12として動作する。
なお、実施形態は上記に限られるものではなく、様々に変形可能である。例えば、時刻テーブル51、装置テーブル52、メッセージタイプテーブル53、通信状態データベース76などに格納される情報は、通信装置30や管理装置10の実装に応じて変更されることがある。
上述の第1および第2の実施形態を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
送信装置、第1の通信装置、および、第2の通信装置が含まれるネットワークにおいて、前記第1の通信装置に、
第1のパケットを受信すると共に、前記第1のパケットを格納し、
前記第1のパケットを前記第2の通信装置に転送し、
前記第1のパケットを格納した時刻から前記第1のパケットに含まれるデータの処理を前記第1の通信装置で開始する時刻までの時間である格納時間を求め、
前記第2の通信装置への前記第1のパケットの再送に要する再送時間と前記格納時間を比較し、
前記格納時間が前記再送時間よりも短い場合、前記第1のパケットの後に前記送信装置から送信される第2のパケットを、前記第1の通信装置を介さずに受信するように前記第2の通信装置の接続先を変更することを指示する指示メッセージを、前記第2の通信装置に送信する
処理を実行させることを特徴とする通信プログラム。
(付記2)
前記指示メッセージは、
前記第1および第2の通信装置、ならびに、前記ネットワークに属する第3の通信装置の各々から、前記第1のパケットが受信されてから前記第1のパケットに含まれるデータの処理が開始されるまでの時間と、前記第1のパケットの再送にかかる時間の比較結果を通知されると共に、通知された比較結果を管理する管理装置に、前記第2の通信装置が前記第2のパケットの送信を要求する対象装置を問い合わせ、
前記管理装置で管理されている比較結果に基づいて選択された前記対象装置が通知されると、前記第2の通信装置が前記対象装置に接続し、
前記第2の通信装置が前記対象装置との接続に成功すると、前記第1の通信装置に前記第2の通信装置との間の接続の切断を通知する切断通知メッセージを送信する
ことを指示し、
前記切断通知メッセージを受信すると、前記第1の通信装置は、前記第2の通信装置との接続を切断する
ことを特徴とする付記1に記載の通信プログラム。
(付記3)
前記第1の通信装置は、所定の時間に前記第1の通信装置が受信して前記第2の通信装置に転送したパケットの各々について前記格納時間を求め、
前記格納時間が前記再送時間よりも短いパケット数を所定の閾値と比較し、前記パケット数が前記所定の閾値よりも大きくなると、前記第1の通信装置は、前記第2の通信装置に前記指示メッセージを送信する
処理をさらに行うことを特徴とする付記1もしくは2に記載の通信プログラム。
(付記4)
前記第2の通信装置は、前記対象装置を問い合わせる際に、前記第2の通信装置が接続している装置を識別する識別子を前記管理装置に送信し、
前記管理装置は、前記第2の通信装置が接続することができる装置であり、かつ、前記識別子で識別される装置ではない装置を前記対象装置とする
ことを特徴とする付記2に記載の通信プログラム。
(付記5)
前記再送時間は、前記第2の通信装置から前記第1の通信装置に通知され、
前記第2の通信装置は、前記第2の通信装置から前記第1の通信装置に計測パケットを送信した送信時刻から、前記計測パケットに対する応答パケットが前記第2の通信装置に到達した時刻までの時間に基づいて求められる
ことを特徴とする付記1〜4のいずれか1項に記載の通信プログラム。
(付記6)
送信装置、第1の通信装置、および、第2の通信装置が含まれるネットワークにおいて、前記第1の通信装置に、
第1のパケットを受信すると共に、前記第1のパケットを格納し、
前記第1のパケットを前記第2の通信装置に転送し、
前記第1のパケットを格納した時刻から前記第1のパケットに含まれるデータの処理を前記第1の通信装置で開始する時刻までの時間である格納時間を求め、
前記第2の通信装置への前記第1のパケットの再送に要する再送時間と前記格納時間を比較し、
前記格納時間が前記再送時間よりも短い場合、前記第1のパケットの後に前記送信装置から送信される第2のパケットを、前記第1の通信装置を介さずに受信するように前記第2の通信装置の接続先を変更することを指示する指示メッセージを、前記第2の通信装置に送信する
処理を実行させることを特徴とする通信方法。
(付記7)
第1のパケットを受信する受信部と、
前記第1のパケットを格納するバッファと、
前記第1のパケットを前記第2の通信装置に送信する送信部と、
前記第1のパケットを格納した時刻から前記第1のパケットに含まれるデータの処理を前記第1の通信装置で開始する時刻までの時間である格納時間を算出する算出部と、
前記第2の通信装置への前記第1のパケットの再送に要する再送時間と前記格納時間を比較する比較部と、
前記格納時間が前記再送時間よりも短い場合、前記第1のパケットの後に送信装置から送信される第2のパケットを、前記第1の通信装置を介さずに受信するように前記第2の通信装置の接続先を変更することを、前記第2の通信装置に指示する変更指示部
を備えることを特徴とする通信装置。