説明

通信装置、経路選択方法及びプログラム

【課題】通信経路の切り戻しの遅れを減少させる。
【解決手段】通信装置1−1が、メイン経路2の状態を確認するための経路確認要求信号を送信し、経路確認要求信号に対して応答信号を受信した後、経路確認要求信号に対して応答信号を受信しなかった場合、補正値と正常カウンタ14の値とに基づいて算出した初期値から異常カウンタ15をカウントさせ、異常カウンタ15の値が切り替え閾値以上となった場合、メイン経路2から迂回経路3へ切り替え、経路確認要求信号に対して応答信号を受信しなかった後、経路確認要求信号に対して応答信号を受信した場合、補正値を、タイマー16が計測した応答時間と現在の補正値と現在の異常カウンタ15の値とに基づいて算出し、正常カウンタ14の値が、算出した補正値と切り戻し閾値とを加算した値以上となった場合、迂回経路3からメイン経路2へ切り戻す。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数の通信経路から1つの通信経路を選択する通信装置、経路選択方法及びプログラムに関する。
【背景技術】
【0002】
一般的にネットワークに適用されている通信装置は、当該通信装置に接続された複数の通信装置間にて送受信されるデータが通過する通信経路(ネットワーク)を選択する機能を有している。選択される通信経路は、当該通信経路の状態に基づいて選択される。例えば、現在選択されている通信経路に障害が発生したと判断された際や、通信品質が低下したと判断された際、他の通信経路が選択され、当該データが通過する通信経路が現在選択されている通信経路から他の通信経路へ切り替えられる。
【0003】
このような通信経路における障害発生を判断する手段として、例えば、ICMP(Internet Control Message Protocol)パケット等の、経路の状態を確認するための確認メッセージ及びそれに対する返信メッセージが用いられている。確認メッセージを送信し、当該確認メッセージに対する返信メッセージを受信しない場合には、通信経路に障害が発生したと判断される。
【0004】
また、送信した確認メッセージに対する返信メッセージを受信しない場合、即座に通信経路を切り替えるのではなく、所定の保護段数(回数の閾値)を用いるものが一般的である。
【0005】
ここで、この閾値が小さな値であると、メインとなる通信経路(メイン経路)が断続的に品質低下した場合などに、メイン経路と迂回経路との切り替えおよび切り戻しの繰り返しが頻繁に行われてしまうおそれがある。一方、この閾値が大きな値であると、メイン経路が突発的な異常から復旧した場合に、迂回経路からの切り戻しに時間がかかってしまうおそれがある。
【0006】
そこで、メイン経路の断続的な品質低下を表したマージン値を用いることで、復旧を判断する閾値を従来よりも小さな値で運用する技術が考えられている(例えば、特許文献1参照。)。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2010−213079号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかしながら、上述した技術においては、メイン経路に断続的な品質低下が発生した後に品質が十分に回復した場合、マージン値の分、切り戻しが遅れてしまうという問題点がある。
【0009】
ここでマージン値は、通常は0であるが、メイン経路の品質低下によりICMPパケットの応答がまれに成功する場合、直前の連続した応答失敗回数に基づいて算出される値である。
【0010】
メイン経路が使用されている場合、応答失敗回数の初期値としてマージン値を使用するため、まれに応答成功があっても、迂回経路への切り替えができるようになっている。
【0011】
一方、迂回経路が使用されている場合は、応答成功回数からマージン値を差し引いた値を用いて切り戻しを判断するため、切り戻し閾値を小さな値に設定した場合であっても、過敏に切り戻らないようになっている。
【0012】
本発明の目的は、上述した課題を解決する通信装置、経路選択方法及びプログラムを提供することである。
【課題を解決するための手段】
【0013】
本発明の通信装置は、
複数の通信経路と接続され、該複数の通信経路のうち1つの通信経路を選択して通信を行う通信装置であって、
前記複数の通信経路のうち、第1の通信経路の状態を確認するための経路確認要求信号を送信し、該送信した経路確認要求信号に対する応答信号を受信する経路状態確認部と、
前記経路状態確認部が、前記経路確認要求信号を送信してから該経路確認要求信号に対する前記応答信号を受信するまでの応答時間を計測するタイマーと、
前記経路状態確認部が、前記経路確認要求信号に対して前記応答信号を受信した連続回数をカウントする正常カウンタと、
前記経路状態確認部が、前記経路確認要求信号に対して前記応答信号を受信しなかった連続回数をカウントする異常カウンタと、
前記経路状態確認部が前記経路確認要求信号に対して前記応答信号を受信した後、前記経路確認要求信号に対して前記応答信号を受信しなかった場合、前記異常カウンタの初期値を算出するための補正値と前記正常カウンタの値とに基づいて前記初期値を算出し、前記異常カウンタの値を前記算出した初期値からカウントし、該カウントした異常カウンタの値があらかじめ設定された切り替え閾値以上となった場合、前記通信経路を前記第1の通信経路から該第1の通信経路以外の第2の通信経路へ切り替える指示を行い、前記経路状態確認部が前記経路確認要求信号に対して前記応答信号を受信しなかった後、前記経路確認要求信号に対して前記応答信号を受信した場合、前記補正値を、前記タイマーが計測した応答時間と現在の補正値と現在の前記異常カウンタの値とに基づいて算出し、前記正常カウンタの値が該算出した補正値とあらかじめ設定された切り戻し閾値とを加算した値以上となった場合、前記通信経路を前記第2の通信経路から前記第1の通信経路へ切り戻す指示を行う状態算出部と、
前記状態算出部からの指示に基づいて、前記通信経路として前記第1の通信経路と前記第2の通信経路とのどちらか一方を選択する経路選択部とを有する。
【0014】
また、本発明の経路選択方法は、
複数の通信経路と接続された通信装置が通信を行う通信経路を前記複数の通信経路のうちから選択する経路選択方法であって、
前記複数の通信経路のうち、第1の通信経路の状態を確認するための経路確認要求信号を送信する処理と、
前記送信した経路確認要求信号に対する応答信号を受信したかどうかを確認する処理と、
前記経路確認要求信号を送信してから該経路確認要求信号に対する前記応答信号を受信するまでの応答時間を計測する処理と、
前記経路確認要求信号に対して前記応答信号を受信した後、前記経路確認要求信号に対して前記応答信号を受信しなかった場合、前記経路確認要求信号に対して前記応答信号を受信しなかった連続回数である第1の回数をカウントする際の初期値を算出するための補正値と、前記経路確認要求信号に対して前記応答信号を受信した連続回数である第2の回数とに基づいて前記初期値を算出する処理と、
前記第1の回数を前記算出した初期値からカウントする処理と、
前記カウントした第1の回数とあらかじめ設定された切り替え閾値とを比較する処理と、
前記カウントした第1の回数が前記切り替え閾値以上となった場合、前記通信経路を前記第1の通信経路から該第1の通信経路以外の第2の通信経路へ切り替える処理と
前記経路確認要求信号に対して前記応答信号を受信しなかった後、前記経路確認要求信号に対して前記応答信号を受信した場合、前記補正値を、前記計測した応答時間と現在の補正値と現在の第1の回数とに基づいて算出する処理と、
該算出した補正値とあらかじめ設定された切り戻し閾値とを加算した値と、前記第2の回数とを比較する処理と、
前記第2の回数が該算出した補正値と前記切り戻し閾値とを加算した値以上となった場合、前記通信経路を前記第2の通信経路から前記第1の通信経路へ切り戻す処理とを行う。
【0015】
また、本発明のプログラムは、
複数の通信経路と接続され、該複数の通信経路のうち1つの通信経路を選択して通信を行う通信装置に実行させるためのプログラムであって、
前記複数の通信経路のうち、第1の通信経路の状態を確認するための経路確認要求信号を送信する手順と、
前記送信した経路確認要求信号に対する応答信号を受信したかどうかを確認する手順と、
前記経路確認要求信号を送信してから該経路確認要求信号に対する前記応答信号を受信するまでの応答時間を計測する手順と、
前記経路確認要求信号に対して前記応答信号を受信した後、前記経路確認要求信号に対して前記応答信号を受信しなかった場合、前記経路確認要求信号に対して前記応答信号を受信しなかった連続回数である第1の回数をカウントする際の初期値を算出するための補正値と、前記経路確認要求信号に対して前記応答信号を受信した連続回数である第2の回数とに基づいて前記初期値を算出する手順と、
前記第1の回数を前記算出した初期値からカウントする手順と、
前記カウントした第1の回数とあらかじめ設定された切り替え閾値とを比較する手順と、
前記カウントした第1の回数が前記切り替え閾値以上となった場合、前記通信経路を前記第1の通信経路から該第1の通信経路以外の第2の通信経路へ切り替える手順と
前記経路確認要求信号に対して前記応答信号を受信しなかった後、前記経路確認要求信号に対して前記応答信号を受信した場合、前記補正値を、前記計測した応答時間と現在の補正値と現在の第1の回数とに基づいて算出する手順と、
該算出した補正値とあらかじめ設定された切り戻し閾値とを加算した値と、前記第2の回数とを比較する手順と、
前記第2の回数が該算出した補正値と前記切り戻し閾値とを加算した値以上となった場合、前記通信経路を前記第2の通信経路から前記第1の通信経路へ切り戻す手順とを実行させる。
【発明の効果】
【0016】
以上説明したように本発明においては、通信経路の切り戻しの遅れを減少させることができる。
【図面の簡単な説明】
【0017】
【図1】本発明の通信装置の実施の一形態を示す図である。
【図2】図1に示した形態において、経路確認要求信号に対する応答信号が受信されなかった場合の経路選択方法を説明するためのフローチャートである。
【図3】図1に示した形態において、経路確認要求信号に対する応答信号が受信された場合の経路選択方法を説明するためのフローチャートである。
【図4】図1に示した形態におけるそれぞれの値の状態遷移を示す図である。
【発明を実施するための形態】
【0018】
以下に、本発明の実施の形態について図面を参照して説明する。
【0019】
図1は、本発明の通信装置の実施の一形態を示す図である。
【0020】
本形態は図1に示すように、通信装置1−1,1−2と、メイン経路2と、迂回経路3と、通信端末4−1,4−2とから構成されている。なお、図1に示した形態においては、通信経路が2つである場合を例に挙げて示したが、3つ以上の複数であっても良い。
【0021】
通信装置1−1,1−2は、通信端末4−1と通信端末4−2との間において送受信されるIP(Internet Protocol)パケット等のデータが通過する通信経路を選択する。
【0022】
メイン経路2は、通信装置1−1と通信装置1−2とを接続し、通信端末4−1と通信端末4−2との間において送受信されるデータが通過する通常設定される第1の通信経路である。
【0023】
迂回経路3は、通信装置1−1と通信装置1−2とを接続し、通信端末4−1と通信端末4−2との間において送受信されるデータが通過する通信経路の1つである。また、迂回経路3は、メイン経路2に障害が発生した場合に選択される第2の通信経路である。
【0024】
通信端末4−1,4−2は、通信装置1−1,1−2のそれぞれ接続された通信装置である。
【0025】
さらに、通信装置1−1には、経路状態確認部11と、状態算出部12と、経路選択部13と、正常カウンタ14と、異常カウンタ15と、タイマー16とが設けられている。
【0026】
経路状態確認部11は、メイン経路2の状態を確認する。具体的には、経路状態確認部11は、メイン経路2を介して通信装置1−2へ経路確認要求信号を送信し、送信した経路確認要求信号に対する応答信号が受信されるかどうかに基づいて、メイン経路2に障害が発生しているかどうかを確認する。本形態においては、この経路確認要求信号として、ICMP(Internet Control Message Protocol)のICMP ECHO_REQUESTを用いて、応答信号としてICMP ECHO_REPLYを用いるものを例に挙げて説明する。
【0027】
状態算出部12は、経路状態確認部11にて確認されたメイン経路2の状態に基づいて、通信経路の切り替え/切り戻しを判断し、判断した結果を経路選択部13へ指示する。ここで、通信経路の切り替えとは、通信経路をメイン経路2から迂回経路3へ変更することを示す。また、通信経路の切り戻しとは、通信経路を迂回経路3からメイン経路2へ変更することを示す。
【0028】
また、状態算出部12は、経路状態確認部11が送信した経路確認要求信号に対して応答信号を受信した後、経路確認要求信号に対して応答信号を受信しなかった場合、異常カウンタ15の初期値を算出するための補正値(マージン値)と正常カウンタ14の値とに基づいて当該初期値を算出する。この算出方法の詳細については、後述する。また、状態算出部12は、初期値の算出後、異常カウンタ15に対して、この算出した初期値からカウントさせる。また、状態算出部12は、異常カウンタ15がカウントした値とあらかじめ設定された切り替え閾値とを比較する。また、状態算出部12は、異常カウンタ15がカウントした値が切り替え閾値以上となった場合、経路選択部13に対して、通信経路をメイン経路2から迂回経路3へ切り替える指示を行う。
【0029】
また、状態算出部12は、経路状態確認部11が送信した経路確認要求信号に対して応答信号を受信しなかった後、経路確認要求信号に対して応答信号を受信した場合、上述した補正値(マージン値)を、タイマー16が計測した応答時間と現在の補正値と現在の異常カウンタ15の値とに基づいて算出する。また、状態算出部12は、算出した補正値とあらかじめ設定された切り戻し閾値とを加算した値と、正常カウンタ14の値とを比較する。また、状態算出部12は、正常カウンタ14の値が、算出した補正値と切り戻し閾値とを加算した値以上となった場合、通信経路を迂回経路3からメイン経路2へ切り戻す指示を行う。
【0030】
また、状態算出部12は、異常カウンタ15の値が切り替え閾値以上である場合、「0」を異常カウンタ15の初期値を算出するための補正値とする。
【0031】
また、状態算出部12は、タイマー16が計測した応答時間があらかじめ設定された応答閾値よりも短く、且つ補正値が「0」よりも大きな値であり、且つ異常カウンタ15の値が「0」よりも大きく切り替え閾値未満である場合、その補正値から1を減算する。そして、状態算出部12は、1を減算した補正値と異常カウンタ15の値とを加算した値を2で除算した値を異常カウンタ15の初期値を算出するための補正値とする。
【0032】
また、状態算出部12は、補正値を算出した後、異常カウンタ15の値をリセットする。
【0033】
また、状態算出部12は、補正値と1とを加算した値から正常カウンタ14の値を差し引いた値を初期値として算出し、その初期値を算出した後、正常カウンタ14の値をリセットする。
【0034】
経路選択部13は、状態算出部12からの指示に基づいて、通信経路として、メイン経路2と迂回経路3とのどちらか一方を選択する。つまり、経路選択部13は、状態算出部12からの指示に基づいて、通信経路の切り替え(メイン経路2から迂回経路3へ)/切り戻し(迂回経路3からメイン経路2へ)を行う。
【0035】
正常カウンタ14は、経路状態確認部11が送信した経路確認要求信号に対する応答信号を受信した連続回数(第2の回数)をカウントする。つまり、経路状態確認部11が送信した経路確認要求信号に対する応答信号を受信しない状態の後、経路状態確認部11が送信した経路確認要求信号に対する応答信号を受信した場合、次に経路確認要求信号に対する応答信号を受信しなくなるまでの間に、経路状態確認部11が送信した経路確認要求信号に対する応答信号の受信回数をカウントする。また、正常カウンタ14は、カウントした回数であるカウント値を状態算出部12へ通知する。
【0036】
異常カウンタ15は、経路状態確認部11が送信した経路確認要求信号に対する応答信号を受信しなかった連続回数(第1の回数)をカウントする。つまり、経路状態確認部11が送信した経路確認要求信号に対する応答信号を受信した後、経路状態確認部11が送信した経路確認要求信号に対する応答信号を受信しなかった場合、次に経路確認要求信号に対する応答信号を受信するまでの間に、経路状態確認部11が送信した経路確認要求信号の送信回数をカウントする。また、異常カウンタ15は、カウントした回数であるカウント値を状態算出部12へ通知する。
【0037】
タイマー16は、経路状態確認部11が、経路確認要求信号を送信してからその経路確認要求信号に対する応答信号を受信するまでの応答時間を計測する。また、タイマー16は、計測した応答時間を状態算出部12へ通知する。
【0038】
なお、通信装置1−2は、通信装置1−1と同じ構成を有する。
【0039】
以下に、図1に示した形態における経路選択方法について説明する。ここで、経路状態確認部11が経路確認要求信号を送信する都度、タイマー16が応答時間の計測を開始する。
【0040】
図2は、図1に示した形態において、経路確認要求信号に対する応答信号が受信されなかった場合の経路選択方法を説明するためのフローチャートである。
【0041】
経路状態確認部11からメイン経路2を介して通信装置1−2へ送信されたICMP ECHO_REQUESTに対して、所定の時間内に応答が無い、つまりICMP ECHO_REPLYが経路状態確認部11にて受信されないと判断されると(ステップS20)、状態算出部12によって異常カウンタ15の初期値が設定される(ステップS21)。
【0042】
ここで、ステップS20の判断は、ICMP ECHO_REQUESTを送信する際に起動するタイマー16を用いて行うものであっても良い。このタイマー16は、ICMP ECHO_REPLYを受信した際にリセットされるものである。また、ICMP ECHO_REQUESTを送信したにもかかわらずICMP ECHO_REPLYを受信しない場合、所定の時間が経過した時点で「ICMP ECHO_REPLYが受信されない」と判断するものである。
【0043】
ここで、ステップS21の処理について具体的に説明する。
【0044】
ステップS20にてICMP ECHO_REPLYが経路状態確認部11にて受信されないと判断されると、現在選択している通信経路がメイン経路2であるかどうかが経路選択部13にて判断される(ステップS211)。
【0045】
現在選択している通信経路がメイン経路2であると判断されると、異常カウンタ15の値が「0」であるかどうかが状態算出部12によって判断される(ステップS212)。
【0046】
異常カウンタ15の値が「0」であると判断された場合、正常カウンタ14の値が「(マージン値)+1」よりも小さいかどうかが状態算出部12によって判断される(ステップS213)。この「マージン値」は、異常カウンタ15の初期値を算出するための補正値であり、その算出方法は後述する。
【0047】
正常カウンタ14の値が「(マージン値)+1」よりも小さいと判断された場合、状態算出部12によって異常カウンタ15の値が「(マージン値)+1−(正常カウンタ14の値)」に設定される(ステップS214)。この値が異常カウンタ15の初期値となる。
【0048】
このマージン値は、メイン経路2の断続的な品質低下を表した値である。このマージン値を用いることによって、メイン経路2の断続的な品質低下が発生した場合であっても、迂回経路3への切り替えが行えるように、異常カウンタ15に含まれて初期化されている。
【0049】
その後、状態算出部12によって正常カウンタ14の値が「0」にリセットされる(ステップS22)。また、ステップS211にて「No」の場合、あるいはステップS212にて「No」の場合、あるいはステップS213にて「No」の場合、ステップS22の処理が行われる。
【0050】
また、状態算出部12によって異常カウンタ15の値が1つインクリメント(カウント)される(ステップS23)。
【0051】
すると、異常カウンタ15の値があらかじめ設定されている切り替え閾値以上かどうかが状態算出部12によって判断される(ステップS24)。
【0052】
異常カウンタ15の値が切り替え閾値以上であると判断された場合、状態算出部12から経路選択部13へ、通信経路をメイン経路2から迂回経路3へ切り替える指示が行われる。そして、通信経路をメイン経路2から迂回経路3へ切り替えるように指示された経路選択部13にて、通信経路がメイン経路2から迂回経路3へ切り替えられる(ステップS25)。
【0053】
図3は、図1に示した形態において、経路確認要求信号に対する応答信号が受信された場合の経路選択方法を説明するためのフローチャートである。
【0054】
経路状態確認部11から送信されたICMP ECHO_REQUESTに対して、応答がある、つまりICMP ECHO_REPLYが経路状態確認部11にて受信されると(ステップS30)、通信経路を迂回経路3からメイン経路2へ切り戻すためのマージン値の更新が状態算出部12によって行われる(ステップS31〜S32)。
【0055】
このステップS31の処理は、ICMP ECHO_REPLYの受信速度に基づくマージン値の更新処理である。また、ステップS32の処理は、ICMP ECHO_REPLYの受信の有無に基づくマージン値の更新処理である。
【0056】
以下、ステップS31に処理の詳細について説明する。
【0057】
ICMP ECHO_REPLYが経路状態確認部11にて受信されると、タイマー16が計測した、経路状態確認部11からICMP ECHO_REQUESTが送信されてからICMP ECHO_REPLYを受信するまでの応答時間と応答閾値とが状態算出部12によって比較される(ステップS311)。
【0058】
応答時間が応答閾値よりも短い場合、現在のマージン値が「0」よりも大きな値であるかどうかが状態算出部12によって判断される(ステップS312)。
【0059】
現在のマージン値が「0」よりも大きな値であると判断された場合、状態算出部12によって、マージン値が、現在のマージン値から「1」を差し引いた値に更新される(ステップS313)。その後、ステップS32の処理が行われる。
【0060】
また、ステップS311にて応答時間が応答閾値よりも短くはない場合、またはステップS312にて現在のマージン値が「0」よりも大きな値ではないと判断された場合は、ステップS32の処理が行われる。
【0061】
以下、ステップS32の詳細について説明する。
【0062】
まず、異常カウンタ15の値が「0」よりも大きな値であるかどうかが状態算出部12によって判断される(ステップS321)。
【0063】
異常カウンタ15の値が「0」でよりも大きな値であると判断された場合、異常カウンタ15の値があらかじめ設定されている切り替え閾値以上かどうかが状態算出部12にて判断される(ステップS322)。
【0064】
異常カウンタ15の値が切り替え閾値以上であると判断された場合、状態算出部12によってマージン値が「0」にリセットされる(ステップS323)。このマージン値は、上述した異常カウンタ15の初期値の設定に用いられるものである。このように、異常カウンタ15の値が切り替え閾値以上であると判断された場合は、メイン経路2に突発的な異常が発生したと判断して、マージン値を「0」にしている。
【0065】
一方、ステップS322にて異常カウンタ15の値が切り替え閾値以上ではないと判断された場合、マージン値が現在のマージン値と現在の異常カウンタ15の値とに基づいて状態算出部12によって算出(更新)される(ステップS324)。具体的な算出方法は、「(マージン値)=((現在のマージン値)+(異常カウンタ15の値))÷2」である。なお、ここで端数(小数点以下)は切り上げられる。このように、異常カウンタ15の値が切り替え閾値以上ではないと判断された場合は、メイン経路2の品質が断続的に低下していると判断して、マージン値を再計算して更新している。
【0066】
その後、状態算出部12によって、正常カウンタ14の値が1つインクリメント(カウント)される(ステップS33)。
【0067】
また、ステップS321にて異常カウンタ15の値が「0」であると判断された場合も、ステップS33の処理が行われる。
【0068】
また、状態算出部12によって、異常カウンタ15の値が「0」にリセットされる(ステップS34)。
【0069】
そして、正常カウンタ14の値があらかじめ設定された切り戻し閾値とマージン値とを加算した値以上かどうかが状態算出部12によって判断される(ステップS35)。
【0070】
ステップS35にて正常カウンタ14の値が切り戻し閾値とマージン値とを加算した値以上であると判断された場合、状態算出部12から経路選択部13へ通信経路の切り戻しの指示が通知され、経路選択部13によって通信経路が迂回経路3からメイン経路2へ切り戻される(ステップS36)。そして、状態算出部12によってマージン値が「0」にリセットされる(ステップS37)。通信経路を迂回経路3からメイン経路2へ切り戻すかどうかの判断にマージン値を含むことで、メイン経路2の品質が断続的に低下している場合の通信経路の切り戻しを抑制している。
【0071】
このように、本発明においては、メイン経路2の品質が十分に回復していることを応答時間に基づいて判断し、マージン値を減らしていくことで、通信経路の切り戻しの遅れを減少させている。
【0072】
以下に、具体例を用いて経路選択方法について説明する。
【0073】
この具体例は、切り戻し閾値が「5」、切り替え閾値が「10」、正常カウンタ14の値が「2」、異常カウンタ15の値が「0」、マージン値が「0」であり、現在の通信経路が迂回経路3である状態で、ICMP ECHO_REPLYが6回連続して受信されず(以下、受信失敗と称する)、続いてICMP ECHO_REPLYが2回連続して受信される(以下、受信成功と称する)状態が3回(3サイクル)繰り返され(この受信は、短い応答時間でICMP ECHO_REPLYが受信されるものではない)、その後、ICMP ECHO_REPLYが短い応答時間で受信されることによる受信成功が続く場合を例に挙げる。これは、メイン経路2の品質が不安定であることにより、応答がまれに成功する状態の後、メイン経路2の品質が回復する場合である。
【0074】
また、受信失敗では図2に示したフローチャートを用いて説明した処理が行われ、受信成功では図3に示したフローチャートを用いて説明した処理が行われる。
【0075】
図4は、図1に示した形態におけるそれぞれの値の状態遷移を示す図である。
【0076】
まず、1サイクル目の1回目では、受信が失敗する。
【0077】
ここでは、上述した状態でステップS20にて応答無しであり、ステップS211にて現在の選択経路が迂回経路3であるため、ステップS22にて正常カウンタ14がリセットされ(正常カウンタ14の値が「0」に設定され)、ステップS23にて異常カウンタ15の値が「+1」カウントされる。この状態で、正常カウンタ14の値は「0」であり、また、異常カウンタ15の値は「1」である。また、マージン値は「0」である。
【0078】
そして、ステップS24にて異常カウンタ15の値「1」が切り替え閾値「10」以上ではないため、処理は終了する。
【0079】
その後、1サイクル目の2〜6回目の受信失敗で、異常カウンタ15の値が1つずつカウントアップされ、6回目の処理終了時の異常カウンタ15の値は「6」となる。この状態で、正常カウンタ14の値は「0」であり、また、異常カウンタ15の値は「6」である。また、マージン値は「0」である。
【0080】
続いて、1サイクル目の7回目で、受信が成功し(ステップS30にて応答あり)、ステップS311にて応答時間が応答閾値よりも短いものではなく、ステップS321にて異常カウンタ15の値が「0」よりも大きく、ステップS322にて異常カウンタ15の値が切り替え閾値以上ではないため、ステップS324にてマージン値が算出される。ここでは、マージン値は、(0+6)÷2=3となる。
【0081】
そして、ステップS33にて正常カウンタ14の値が「+1」カウントされ、ステップS34にて異常カウンタ15がリセットされる(異常カウンタ15の値が「0」に設定される)。この状態で、正常カウンタ14の値は「1」であり、また、異常カウンタ15の値は「0」である。また、マージン値は「3」である。
【0082】
すると、ステップS35にて正常カウンタ14の値「1」が、切り戻し閾値「5」+マージン値「3」=8以上ではないため、処理は終了する。
【0083】
続いて、1サイクル目の8回目で、受信が成功し(ステップS30にて応答あり)、ステップS311にて応答時間が応答閾値よりも短いものではなく、ステップS321にて異常カウンタ15の値が「0」よりも大きくはないため、ステップS33にて正常カウンタ14の値が「+1」カウントされ、ステップS34にて異常カウンタ15がリセットされる(異常カウンタ15の値が「0」に設定される)。この状態で、正常カウンタ14の値は「2」であり、また、異常カウンタ15の値は「0」である。また、マージン値は「3」である。
【0084】
すると、ステップS35にて正常カウンタ14の値「2」が、切り戻し閾値「5」+マージン値「3」=8以上ではないため、処理は終了する。
【0085】
次に、2サイクル目の1回目では、受信が失敗する。
【0086】
ステップS20にて応答無しであり、ステップS211にて現在の選択経路が迂回経路3であるため、ステップS22にて正常カウンタ14がリセットされ(正常カウンタ14の値が「0」に設定され)、ステップS23にて異常カウンタ15の値が「+1」カウントされる。この状態で、正常カウンタ14の値は「0」であり、また、異常カウンタ15の値は「1」である。また、マージン値は「3」である。
【0087】
そして、ステップS24にて異常カウンタ15の値「1」が切り替え閾値「10」以上ではないため、処理は終了する。
【0088】
その後、2サイクル目の2〜6回目の受信失敗で、異常カウンタ15の値が1つずつカウントアップされ、6回目の処理終了時の異常カウンタ15の値は「6」となる。この状態で、正常カウンタ14の値は「0」であり、また、異常カウンタ15の値は「6」である。また、マージン値は「3」である。
【0089】
続いて、2サイクル目の7回目で、受信が成功し(ステップS30にて応答あり)、ステップS311にて応答時間が応答閾値よりも短いものではなく、ステップS321にて異常カウンタ15の値が「0」よりも大きく、ステップS322にて異常カウンタ15の値が切り替え閾値以上ではないため、ステップS324にてマージン値が算出される。ここでは、マージン値は、(3+6)÷2=5となる。
【0090】
そして、ステップS33にて正常カウンタ14の値が「+1」カウントされ、ステップS34にて異常カウンタ15がリセットされる(異常カウンタ15の値が「0」に設定される)。この状態で、正常カウンタ14の値は「1」であり、また、異常カウンタ15の値は「0」である。また、マージン値は「5」である。
【0091】
すると、ステップS35にて正常カウンタ14の値「1」が、切り戻し閾値「5」+マージン値「5」=10以上ではないため、処理は終了する。
【0092】
続いて、2サイクル目の8回目で、受信が成功し(ステップS30にて応答あり)、ステップS311にて応答時間が応答閾値よりも短いものではなく、ステップS321にて異常カウンタ15の値が「0」よりも大きくはないため、ステップS33にて正常カウンタ14の値が「+1」カウントされ、ステップS34にて異常カウンタ15がリセットされる(異常カウンタ15の値が「0」に設定される)。この状態で、正常カウンタ14の値は「2」であり、また、異常カウンタ15の値は「0」である。また、マージン値は「5」である。
【0093】
すると、ステップS35にて正常カウンタ14の値「2」が、切り戻し閾値「5」+マージン値「5」=10以上ではないため、処理は終了する。
【0094】
次に、3サイクル目の1回目では、受信が失敗する。
【0095】
ステップS20にて応答無しであり、ステップS211にて現在の選択経路が迂回経路3であるため、ステップS22にて正常カウンタ14がリセットされ(正常カウンタ14の値が「0」に設定され)、ステップS23にて異常カウンタ15の値が「+1」カウントされる。この状態で、正常カウンタ14の値は「0」であり、また、異常カウンタ15の値は「1」である。また、マージン値は「5」である。
【0096】
そして、ステップS24にて異常カウンタ15の値「1」が切り替え閾値「10」以上ではないため、処理は終了する。
【0097】
その後、3サイクル目の2〜6回目の受信失敗で、異常カウンタ15の値が1つずつカウントアップされ、6回目の処理終了時の異常カウンタ15の値は「6」となる。この状態で、正常カウンタ14の値は「0」であり、また、異常カウンタ15の値は「6」である。また、マージン値は「5」である。
【0098】
続いて、3サイクル目の7回目で、受信が成功し(ステップS30にて応答あり)、ステップS311にて応答時間が応答閾値よりも短いものではなく、ステップS321にて異常カウンタ15の値が「0」よりも大きく、ステップS324にて異常カウンタ15の値が切り替え閾値以上ではないため、ステップS324にてマージン値が算出される。ここでは、マージン値は、(5+6)÷2=6となる。
【0099】
そして、ステップS33にて正常カウンタ14の値が「+1」カウントされ、ステップS34にて異常カウンタ15がリセットされる(異常カウンタ15の値が「0」に設定される)。この状態で、正常カウンタ14の値は「1」であり、また、異常カウンタ15の値は「0」である。また、マージン値は「6」である。
【0100】
すると、ステップS35にて正常カウンタ14の値「1」が、切り戻し閾値「5」+マージン値「6」=11以上ではないため、処理は終了する。
【0101】
続いて、3サイクル目の8回目で、受信が成功し(ステップS30にて応答あり)、ステップS311にて応答時間が応答閾値よりも短いものではなく、ステップS321にて異常カウンタ15の値が「0」よりも大きくはないため、ステップS33にて正常カウンタ14の値が「+1」カウントされ、ステップS34にて異常カウンタ15がリセットされる(異常カウンタ15の値が「0」に設定される)。この状態で、正常カウンタ14の値は「2」であり、また、異常カウンタ15の値は「0」である。また、マージン値は「6」である。
【0102】
すると、ステップS35にて正常カウンタ14の値「2」が、切り戻し閾値「5」+マージン値「6」=11以上ではないため、処理は終了する。
【0103】
この後は、ICMP ECHO_REPLYが短い応答時間で受信されることによる受信成功が続く。以下、1つの受信成功を1つのサイクルとする。また、3サイクル目まで説明してあるため、以下は4サイクル目以降として説明する。
【0104】
4サイクル目にて、まず、ステップS30にて受信が成功し、ステップS311にて応答時間が応答閾値よりも短いものであり、ステップS312にてマージン値が「0」よりも大きな値であるため、ステップS313にてマージン値を現在のマージン値から「1」を差し引いた値とする。ここでは、マージン値が、現在のマージン値「6」から「1」を差し引いた「5」となる。
【0105】
そして、ステップS321にて異常カウンタ15の値が「0」よりも大きくないため、ステップS33にて正常カウンタ14の値が「+1」カウントされ、ステップS34にて異常カウンタ15がリセットされる(異常カウンタ15の値が「0」に設定される)。この状態で、正常カウンタ14の値は「3」であり、また、異常カウンタ15の値は「0」である。また、マージン値は「5」である。
【0106】
すると、ステップS35にて正常カウンタ14の値「3」が、切り戻し閾値「5」+マージン値「5」=10以上ではないため、処理は終了する。
【0107】
続いて、5サイクル目にて、まず、ステップS30にて受信が成功し、ステップS311にて応答時間が応答閾値よりも短いものであり、ステップS312にてマージン値が「0」よりも大きな値であるため、ステップS313にてマージン値を現在のマージン値から「1」を差し引いた値とする。ここでは、マージン値が、現在のマージン値「5」から「1」を差し引いた「4」となる。
【0108】
そして、ステップS321にて異常カウンタ15の値が「0」よりも大きくないため、ステップS33にて正常カウンタ14の値が「+1」カウントされ、ステップS34にて異常カウンタ15がリセットされる(異常カウンタ15の値が「0」に設定される)。この状態で、正常カウンタ14の値は「4」であり、また、異常カウンタ15の値は「0」である。また、マージン値は「4」である。
【0109】
すると、ステップS35にて正常カウンタ14の値「4」が、切り戻し閾値「5」+マージン値「4」=9以上ではないため、処理は終了する。
【0110】
続いて、6サイクル目にて、まず、ステップS30にて受信が成功し、ステップS311にて応答時間が応答閾値よりも短いものであり、ステップS312にてマージン値が「0」よりも大きな値であるため、ステップS313にてマージン値を現在のマージン値から「1」を差し引いた値とする。ここでは、マージン値が、現在のマージン値「4」から「1」を差し引いた「3」となる。
【0111】
そして、ステップS321にて異常カウンタ15の値が「0」よりも大きくないため、ステップS33にて正常カウンタ14の値が「+1」カウントされ、ステップS34にて異常カウンタ15がリセットされる(異常カウンタ15の値が「0」に設定される)。この状態で、正常カウンタ14の値は「5」であり、また、異常カウンタ15の値は「0」である。また、マージン値は「3」である。
【0112】
すると、ステップS35にて正常カウンタ14の値「5」が、切り戻し閾値「5」+マージン値「3」=8以上ではないため、処理は終了する。
【0113】
続いて、7サイクル目にて、まず、ステップS30にて受信が成功し、ステップS311にて応答時間が応答閾値よりも短いものであり、ステップS312にてマージン値が「0」よりも大きな値であるため、ステップS313にてマージン値を現在のマージン値から「1」を差し引いた値とする。ここでは、マージン値が、現在のマージン値「3」から「1」を差し引いた「2」となる。
【0114】
そして、ステップS321にて異常カウンタ15の値が「0」よりも大きくないため、ステップS33にて正常カウンタ14の値が「+1」カウントされ、ステップS34にて異常カウンタ15がリセットされる(異常カウンタ15の値が「0」に設定される)。この状態で、正常カウンタ14の値は「6」であり、また、異常カウンタ15の値は「0」である。また、マージン値は「2」である。
【0115】
すると、ステップS35にて正常カウンタ14の値「6」が、切り戻し閾値「5」+マージン値「2」=7以上ではないため、処理は終了する。
【0116】
続いて、8サイクル目にて、まず、ステップS30にて受信が成功し、ステップS311にて応答時間が応答閾値よりも短いものであり、ステップS312にてマージン値が「0」よりも大きな値であるため、ステップS313にてマージン値を現在のマージン値から「1」を差し引いた値とする。ここでは、マージン値が、現在のマージン値「2」から「1」を差し引いた「1」となる。
【0117】
そして、ステップS321にて異常カウンタ15の値が「0」よりも大きくないため、ステップS33にて正常カウンタ14の値が「+1」カウントされ、ステップS34にて異常カウンタ15がリセットされる(異常カウンタ15の値が「0」に設定される)。この状態で、正常カウンタ14の値は「7」であり、また、異常カウンタ15の値は「0」である。また、マージン値は「1」である。
【0118】
すると、ステップS35にて正常カウンタ14の値「7」が、切り戻し閾値「5」+マージン値「1」=6以上であるため、ステップS36にて迂回経路3からメイン経路2への通信経路の切り戻しが行われる。そして、ステップS37にてマージン値が「0」となり、処理が終了する。
【0119】
上述した先行技術では、ステップS31が存在せず、マージン値が「6」のままのため、迂回経路3からメイン経路2への通信経路の切り戻しには、さらに4つのICMP ECHO_REPLYの応答が必要である。
【0120】
一方、本発明では、ICMP ECHO_REPLYの応答時間を考慮することで、迂回経路3からメイン経路2への通信経路の切り戻しが遅延なく行われるようになる。
【0121】
また、上述した形態においては、メイン経路2の品質が不安定になった場合の異常カウンタ15の初期値を、現在のマージン値と正常カウンタ14の値との差分に基づいて算出しているが、前回の異常カウンタ15の値を記憶しておき、その値と正常カウンタ14の値との差分に基づいて算出するものであっても良い。
【0122】
また、障害監視にICMP ECHO_REQUEST/ECHO_REPLYを用いるもののほか、独自のkeepaliveを用いるものであっても良い。
【0123】
また、マージン値の更新で「0」とする条件(異常カウンタ15の値≧切り替え閾値)を、マージン値を加味して、「((異常カウンタ15の値)−(マージン値))≧切り替え閾値」とするものであっても良い。
【0124】
上述した通信装置1−1に設けられた各構成要素が行う処理は、目的に応じてそれぞれ作製された論理回路で行うようにしても良い。また、処理内容を手順として記述したコンピュータプログラム(以下、プログラムと称する)を通信装置1−1にて読取可能な記録媒体に記録し、この記録媒体に記録されたプログラムを通信装置1−1に読み込ませ、実行するものであっても良い。通信装置1−1にて読取可能な記録媒体とは、フロッピー(登録商標)ディスク、光磁気ディスク、DVD、CDなどの移設可能な記録媒体の他、通信装置1−1に内蔵されたROM、RAM等のメモリやHDD等を指す。この記録媒体に記録されたプログラムは、通信装置1−1に設けられたCPU(不図示)にて読み込まれ、CPUの制御にしたがって、上述したものと同様の処理が行われる。ここで、CPUは、プログラムが記録された記録媒体から読み込まれたプログラムを実行するコンピュータとして動作するものである。
【符号の説明】
【0125】
1−1,1−2 通信装置
2 メイン経路
3 迂回経路
4−1,4−2 通信端末
11 経路状態確認部
12 状態算出部
13 経路選択部
14 正常カウンタ
15 異常カウンタ
16 タイマー

【特許請求の範囲】
【請求項1】
複数の通信経路と接続され、該複数の通信経路のうち1つの通信経路を選択して通信を行う通信装置であって、
前記複数の通信経路のうち、第1の通信経路の状態を確認するための経路確認要求信号を送信し、該送信した経路確認要求信号に対する応答信号を受信する経路状態確認部と、
前記経路状態確認部が、前記経路確認要求信号を送信してから該経路確認要求信号に対する前記応答信号を受信するまでの応答時間を計測するタイマーと、
前記経路状態確認部が、前記経路確認要求信号に対して前記応答信号を受信した連続回数をカウントする正常カウンタと、
前記経路状態確認部が、前記経路確認要求信号に対して前記応答信号を受信しなかった連続回数をカウントする異常カウンタと、
前記経路状態確認部が前記経路確認要求信号に対して前記応答信号を受信した後、前記経路確認要求信号に対して前記応答信号を受信しなかった場合、前記異常カウンタの初期値を算出するための補正値と前記正常カウンタの値とに基づいて前記初期値を算出し、前記異常カウンタの値を前記算出した初期値からカウントし、該カウントした異常カウンタの値があらかじめ設定された切り替え閾値以上となった場合、前記通信経路を前記第1の通信経路から該第1の通信経路以外の第2の通信経路へ切り替える指示を行い、前記経路状態確認部が前記経路確認要求信号に対して前記応答信号を受信しなかった後、前記経路確認要求信号に対して前記応答信号を受信した場合、前記補正値を、前記タイマーが計測した応答時間と現在の補正値と現在の前記異常カウンタの値とに基づいて算出し、前記正常カウンタの値が該算出した補正値とあらかじめ設定された切り戻し閾値とを加算した値以上となった場合、前記通信経路を前記第2の通信経路から前記第1の通信経路へ切り戻す指示を行う状態算出部と、
前記状態算出部からの指示に基づいて、前記通信経路として前記第1の通信経路と前記第2の通信経路とのどちらか一方を選択する経路選択部とを有する通信装置。
【請求項2】
請求項1に記載の通信装置において、
前記状態算出部は、前記異常カウンタの値が前記切り替え閾値以上である場合、0を前記異常カウンタの初期値を算出するための補正値とし、前記応答時間があらかじめ設定された応答閾値よりも短く、且つ前記補正値が0よりも大きな値であり、且つ前記異常カウンタの値が0よりも大きく前記切り替え閾値未満である場合、該補正値から1を減算し、該1を減算した補正値と前記異常カウンタの値とを加算した値を2で除算した値を前記異常カウンタの初期値を算出するための補正値とすることを特徴とする通信装置。
【請求項3】
請求項1に記載の通信装置において、
前記状態算出部は、前記補正値を算出した後、前記異常カウンタの値をリセットすることを特徴とする通信装置。
【請求項4】
請求項1に記載の通信装置において、
前記状態算出部は、前記補正値と1とを加算した値から前記正常カウンタの値を差し引いた値を前記初期値として算出し、該初期値を算出した後、前記正常カウンタの値をリセットすることを特徴とする通信装置。
【請求項5】
複数の通信経路と接続された通信装置が通信を行う通信経路を前記複数の通信経路のうちから選択する経路選択方法であって、
前記複数の通信経路のうち、第1の通信経路の状態を確認するための経路確認要求信号を送信する処理と、
前記送信した経路確認要求信号に対する応答信号を受信したかどうかを確認する処理と、
前記経路確認要求信号を送信してから該経路確認要求信号に対する前記応答信号を受信するまでの応答時間を計測する処理と、
前記経路確認要求信号に対して前記応答信号を受信した後、前記経路確認要求信号に対して前記応答信号を受信しなかった場合、前記経路確認要求信号に対して前記応答信号を受信しなかった連続回数である第1の回数をカウントする際の初期値を算出するための補正値と、前記経路確認要求信号に対して前記応答信号を受信した連続回数である第2の回数とに基づいて前記初期値を算出する処理と、
前記第1の回数を前記算出した初期値からカウントする処理と、
前記カウントした第1の回数とあらかじめ設定された切り替え閾値とを比較する処理と、
前記カウントした第1の回数が前記切り替え閾値以上となった場合、前記通信経路を前記第1の通信経路から該第1の通信経路以外の第2の通信経路へ切り替える処理と
前記経路確認要求信号に対して前記応答信号を受信しなかった後、前記経路確認要求信号に対して前記応答信号を受信した場合、前記補正値を、前記計測した応答時間と現在の補正値と現在の第1の回数とに基づいて算出する処理と、
該算出した補正値とあらかじめ設定された切り戻し閾値とを加算した値と、前記第2の回数とを比較する処理と、
前記第2の回数が該算出した補正値と前記切り戻し閾値とを加算した値以上となった場合、前記通信経路を前記第2の通信経路から前記第1の通信経路へ切り戻す処理とを行う経路選択方法。
【請求項6】
複数の通信経路と接続され、該複数の通信経路のうち1つの通信経路を選択して通信を行う通信装置に、
前記複数の通信経路のうち、第1の通信経路の状態を確認するための経路確認要求信号を送信する手順と、
前記送信した経路確認要求信号に対する応答信号を受信したかどうかを確認する手順と、
前記経路確認要求信号を送信してから該経路確認要求信号に対する前記応答信号を受信するまでの応答時間を計測する手順と、
前記経路確認要求信号に対して前記応答信号を受信した後、前記経路確認要求信号に対して前記応答信号を受信しなかった場合、前記経路確認要求信号に対して前記応答信号を受信しなかった連続回数である第1の回数をカウントする際の初期値を算出するための補正値と、前記経路確認要求信号に対して前記応答信号を受信した連続回数である第2の回数とに基づいて前記初期値を算出する手順と、
前記第1の回数を前記算出した初期値からカウントする手順と、
前記カウントした第1の回数とあらかじめ設定された切り替え閾値とを比較する手順と、
前記カウントした第1の回数が前記切り替え閾値以上となった場合、前記通信経路を前記第1の通信経路から該第1の通信経路以外の第2の通信経路へ切り替える手順と
前記経路確認要求信号に対して前記応答信号を受信しなかった後、前記経路確認要求信号に対して前記応答信号を受信した場合、前記補正値を、前記計測した応答時間と現在の補正値と現在の第1の回数とに基づいて算出する手順と、
該算出した補正値とあらかじめ設定された切り戻し閾値とを加算した値と、前記第2の回数とを比較する手順と、
前記第2の回数が該算出した補正値と前記切り戻し閾値とを加算した値以上となった場合、前記通信経路を前記第2の通信経路から前記第1の通信経路へ切り戻す手順とを実行させるためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate