以下に添付図面を参照して、この発明にかかる中継装置の最良な実施の形態を詳細に説明する。
(第1の実施の形態)
第1の実施の形態にかかる中継装置は、通信装置間のメッセージ(パケット)を中継するレイヤー2スイッチ(スイッチングハブ)などの装置であって、パケットを転送するときに、パケットを受信する通信装置(以下、受信先ノードという)の状態を検出し、通信できない状態である場合に、パケットを送信したノード(以下、送信元ノードという)に対して通信できない状態であることを表す応答パケットを送信する。
なお、以下では、レイヤー2スイッチ(スイッチングハブ)として本実施の形態の中継装置を実現した場合を例に説明する。適用可能な装置はこれに限られず、通信装置間のパケットを転送する装置であれば、レイヤー3スイッチやルータなどのあらゆる装置に適用できる。
図1は、第1の実施の形態にかかる中継装置100を含む通信システム10の構成の一例を示すネットワーク構成図である。図1に示すように、通信システム10は、中継装置100と、受信先ノード20と、ネットワーク30と、送信元ノード40と、を含んでいる。
受信先ノード20は、中継装置100に直接接続され、中継装置100などの外部装置から状態を検出可能とする機能を具備する。ネットワーク30は、中継装置100が接続するネットワークである。送信元ノード40は、ネットワーク30に接続され、ネットワーク30および中継装置100を介して、受信先ノード20と通信する。
図2は、第1の実施の形態にかかる中継装置100の構成の一例を示すブロック図である。図2に示すように、中継装置100は、インターフェイス101、102、103と、転送部104と、状態記憶部105と、状態検出部106と、応答生成部107と、を備えている。
インターフェイス101、102、103は、受信先ノード20を含む複数のノードと接続可能なネットワークインターフェイスである。同図では、3つのインターフェイス101〜103を備える例が示されているが、インターフェイスの個数はこれに限られるものではない。
転送部104は、後述する状態記憶部105に保存されたデータを参照して、インターフェイス101〜103の間でパケットを転送する。
状態記憶部105は、転送部104がパケットの転送先となるノードを決定するためのデータとともに、各ノードの状態を表す状態情報を記憶する。図3は、状態記憶部105に保存されるデータのデータ構造の一例を示す図である。同図では、一行が一つのエントリを表している。同図に示すように、状態記憶部105は、MAC(Media Access Control)アドレスフィールドと、I/Fフィールドと、状態フィールドと、有効期間フィールドと、を含むデータ構造のデータを記憶している。
MACアドレスフィールドは、受信したパケットの宛先を識別するMACアドレスを格納する。I/Fフィールドは、当該MACアドレスを持つノードが接続しているインターフェイス101〜103を識別する情報(識別子)を格納する。同図では、インターフェイス101の識別子である「IF1」、および、インターフェイス102の識別子である「IF2」が設定された例が示されている。
状態フィールドは、接続するノードの状態を表す状態情報を格納する。同図では、通信できる状態を表す「ACTIVE」、および通信できない状態を表す「SLEEP」が、状態情報の一例として示されている。設定可能な状態はこれらに限られず、「電源ON」、「サスペンド」、「休止状態」、および「電源OFF」などの状態を設定可能としてもよい。なお、この例の場合、「電源ON」が通信できる状態を表し、「サスペンド」、「休止状態」、および「電源OFF」が通信できない状態を表す。
有効期間フィールドは、各エントリの有効期間を格納する。
なお、記憶部105は、HDD(Hard Disk Drive)、光ディスク、メモリカード、RAM(Random Access Memory)などの一般的に利用されているあらゆる記憶媒体により構成することができる。
図2に戻り、状態検出部106は、インターフェイス101〜103に接続しているノード(以下、対向ノードという)の状態を検出する。例えば、状態検出部106は、インターフェイス101〜103に物理的にケーブル(接続線)が接続されているか否かを判定する方法、または、ケーブルが接続されている場合にはそのケーブルと対向ノードとにより構成される電気回路が有する電気的特性(抵抗値、特定の電圧/電流をかけた時に得られる電流値/電圧値)を判定する方法などにより、接続の有無や対向ノードの状態を検出する。
すなわち、状態検出部106は、少なくとも対向ノードが通信できる状態であるか否かを検出できる。そして、上述のように、状態検出部106が電気的特性等を判定することにより、対向ノードの詳細な動作状態を検出するように構成してもよい。例えば、状態検出部106が、対向ノードから検出された抵抗値に応じて、対向ノードが、「電源ON」、「サスペンド」、「休止状態」、および「電源OFF」のいずれかの状態であることを検出可能とすることができる。状態検出部106は、検出した動作状態に応じた状態情報を状態記憶部105の状態フィールドに保存する。
応答生成部107は、状態検出部106により、パケットの転送先のノードが通信できない状態であることが検出された場合に、当該ノードが通信できない状態であることを表す応答パケットを生成し、転送部104を通じて、当該パケットの送信元ノードに対して応答パケットを送信する。なお、本実施の形態の中継装置100は、スイッチングハブであること前提としているが、このような場合でも転送先のノードの状態に応じた応答パケットを送信元ノードに通知する。
次に、このように構成された第1の実施の形態にかかる中継装置100によるパケット転送処理について図4〜図6を用いて説明する。図4〜図6は、第1の実施の形態におけるパケット転送処理の全体の流れを示すシーケンス図である。各図は、送信元ノードが受信先ノードに対して送信したパケットを中継装置100が受信することによって開始されるシーケンスを記述している。
なお、図4は、パケットの転送先(受信先ノード)が決定できたが、受信先ノードが通信できない状態のためパケットを転送できない場合のシーケンスを表す。また、図5は、受信先ノードが決定でき、受信先ノードが通信できる状態のためパケットを転送する場合のシーケンスを表す。また、図6は、受信先ノードが決定できない場合のシーケンスを表す。
まず、図4のシーケンスについて説明する。最初に、インターフェイス101が、送信元ノードからパケット(以下、受信パケットという)を受信する(ステップS401)。受信パケットは転送部104に通知される(ステップS402)。
転送部104は、状態記憶部105から、受信パケットに含まれる受信先MACアドレスを検索し(ステップS403)、検索結果を取得する(ステップS404)。このとき、受信先MACアドレスと一致するMACアドレスを含むエントリが検索されればそのエントリが検索結果として返される。一致するMACアドレスを含むエントリが検索されない場合は、その旨を示す何らかの値が返される。
なお、エントリが検索されなかった場合、すなわち、転送先が決定できなかった場合には、受信パケットは全てのインターフェイスに対して出力される(同図では省略)。この場合の詳細な動作は図6を用いて説明する(後述)。
エントリが検索された場合、すなわち、転送先が決定できた場合には、転送部104は、当該エントリの状態フィールドに格納されている状態情報を検査する(ステップS405)。状態情報が、当該ノードが通信できない状態であることを示す場合(例えば、サスペンド、休止状態など)、転送部104は、応答生成部107に対して応答パケットを生成するように指示する(ステップS406)。なお、当該ノードが通信できる状態である場合の処理は、図5で説明する(後述)。
応答生成要求を受けた応答生成部107は、受信パケットを解析し応答パケットを生成する応答パケット生成処理を実行する(ステップS407)。応答パケット生成処理の詳細については後述する。応答パケットの生成が完了すると、応答生成部107は、生成した応答パケットを転送部104へ返す(ステップS408)。
生成された応答パケットを受け取った転送部104は、受信パケットを受信したインターフェイス(同図ではインターフェイス101)に対して応答パケットを転送するように指示する(ステップS409)。インターフェイス101は、当該応答パケットを出力する。
この後、以下のような状態更新処理を実行してもよい(ステップS410〜ステップS414)。なお、同図のシーケンスでは、状態更新処理をステップS409の後に実行するように記述されているが、状態更新処理をステップS406〜ステップS409の処理と並行して実行するように構成してもよい。
まず、転送部104が、受信パケットの受信先ノードの状態を確認することを状態検出部106に対して指示する(ステップS410)。状態確認依頼を受けた状態検出部106は、受信先ノードが接続されたインターフェイスに対して状態検出操作を行うことにより受信先ノードの状態を確認する状態確認処理を実行する(ステップS411)。なお、状態確認処理の詳細については後述する。
この状態確認処理により、当該インターフェイスに接続する受信先ノードの最新の状態が入手できる。状態検出部106は、入手した最新の状態を転送部104に返す(ステップS412)。
状態検出部106から受信先ノードの最新の状態を入手した転送部104は、入手した最新の状態で状態記憶部105の状態情報を更新する(ステップS413)。この際、再度受信先ノードが通信できない状態であることが確認された場合には、当該エントリの有効期間を通信できる状態のエントリに比べて長く設定するように構成してもよい。
転送部104は、更新処理の結果を受け取る(ステップS414)。なお、このステップは省略してもよい。
以上が、中継装置100が、送信元ノードから受信したパケットを受信先ノードに転送する際に実行されるシーケンスのうち、受信先ノードが通信できない状態である場合の処理である。
次に、受信先ノードが通信できる状態である場合のシーケンスを図5を用いて説明する。ステップS501〜ステップS505までの処理は、図4のステップS401〜ステップS405と同じであるため、説明を省略する。
ステップS505で、受信先ノードが通信可能状態であることが確認された場合(例えばACTIVE)、転送部104は、検索されたエントリのI/Fフィールドから受信パケットの出力先となるインターフェイスを決定する(ステップS506)。
次に、転送部104は、受信パケットを決定したインターフェイスから転送するように、当該インターフェイスに対して指示する(ステップS507)。同図では、インターフェイス102に出力することが決定された例が示されている。このようにして、受信パケットが、決定されたインターフェイスを介して受信先ノードへ転送される。その後、図4と同様の状態更新処理(ステップS410〜ステップS414)を行ってもよい(ステップS508〜ステップS512)。
次に、受信先ノードに対応するエントリが状態記憶部105に保存されていない場合のシーケンスについて図6を用いて説明する。本シーケンスは、受信先ノードが中継装置100に初めて接続した場合や、過去に保存されていたエントリの有効期間が切れてエントリが削除された場合などに実行される。
ステップS601〜ステップS604までの処理は、図4のステップS401〜ステップS404と同じであるため、説明を省略する。
図4と異なり、本シーケンスではステップS604で転送先に関する有効なエントリが得られない。そのため、転送部104は、全てのインターフェイス101〜103に対して受信パケットの転送を指示する(ステップS605〜ステップS607)。これにより、全てのインターフェイスから受信パケットが送出される。
その後、インターフェイス102から、当該受信パケットに対する応答が得られたと仮定する(ステップS608)。なお、本実施の形態では、中継装置100がスイッチングハブであることを想定しているので、厳密には受信パケットに対する応答であることを認識することはできない。ここでは送出したインターフェイス(インターフェイス102)で別のパケットが得られたことを便宜上、応答を得られたと呼んでいる。
この場合、当該応答に関するエントリの状態記憶部105に対する保存状態に関わらず、転送部104は、受信した応答に対応する新しいエントリを状態記憶部105に登録する(ステップS609〜ステップS611)。図3のエントリ301は、このような場合に登録されるエントリの一例を示している。新たに登録するエントリの各フィールドに設定する値は、次のように決定する。
MACアドレスフィールドは、インターフェイス(この例ではインターフェイス102)で受信したパケットの送信元MACアドレスを設定する。I/Fフィールドは、受信したインターフェイスの識別子(この場合はインターフェイス102の識別子である「IF2」)を設定する。状態フィ−ルドは、通信可能なことを表す「ACTIVE」を設定する。有効期間フィールドは、通常の有効期間を設定する。通常の有効期間とは、インターフェイス102に接続したノードが、外部装置から状態を検出可能とする機能を備えていない通常のノードであると仮定した場合に設定する有効期間である。
なお、上述のステップS608〜ステップS611に該当する処理は、図6に示したシーケンスに固有の処理ではない。一般にスイッチングハブがパケットを受信した場合には、当該パケットの送信元MACアドレスを学習する処理が実行される。これは本実施の形態でも同様であり、図6のステップS608〜ステップS611はこの処理を表している。なお、図4、図5、および図6の最初のパケット受信処理(ステップS401、ステップS501、ステップS601)でも、同様の処理が実行されるが、説明の都合上省略している。
次に、ステップS411等の状態確認処理の詳細について図7を用いて説明する。上述の通り、状態記憶部105に記載された各エントリは、有効期間が設定されている。各エントリは、この有効期間内に限って利用可能とし、有効期間が切れた場合は無効とする。また、ノードが接続していないことが確認できた場合または接続していないとみなせる場合にも、同様にエントリを無効とする。状態確認処理は、このようにエントリを無効にする処理を含む。すなわち、状態検出部106は、定期的に有効期間が切れたエントリをチェックする。その際、有効期間切れのエントリに対応するノードの最新の状態を確認し、無効にすべきか否かを判断する。
図7は、第1の実施の形態における状態確認処理の全体の流れを示すフローチャートである。
まず、状態検出部106は、状態記憶部105に保存されている未処理のエントリを読み出す(ステップS701)。次に、状態検出部106は、取得したエントリに含まれる有効期間を参照し、現時点が有効期間内であるか否かを確認する(ステップS702)。
有効期間が切れている場合(ステップS702:NO)、状態検出部106は、当該エントリに含まれるI/Fフィールドの値であるインターフェイスの識別子を取得する(ステップS703)。次に、状態検出部106は、取得した識別子のインターフェイスを指定して、接続されたノードの状態を検出する(ステップS704)。
状態検出部106は、ノードの状態が検出できたか否かを判断し(ステップS705)、状態が検出できた場合は(ステップS705:YES)、当該エントリを削除せずに当該エントリを更新する(ステップS706)。具体的には、状態検出部106は、取得した状態を表す状態情報を状態フィールドに設定し、取得した状態に対応する有効期間を有効期間フィールドに設定する。
ここで、状態検出部106が、「電源ON」、「サスペンド」、「休止状態」、および「電源OFF」をノードの状態として検出できると仮定する。この場合、状態検出部106が、「電源ON」に対して、本実施の形態を適用しない一般の中継装置が設定する有効期間と同様の有効期間を設定し、「サスペンド」、「休止状態」、および「電源OFF」の順に大きくなるように有効期間を設定するように構成してもよい。このように構成することで、通信できない状態であるノードの利用が再開されると予想されるまでの時間に合わせた有効期間を設定することが可能になる。
なお、状態情報が「サスペンド」、「休止状態」、または「電源OFF」であるエントリに含まれるMACアドレスを送信元とするパケットを受信した場合、転送部104は、対応するエントリの状態情報を「ACTIVE」に更新し、有効期間を「電源ON」に対応する有効期間に更新する。
これにより、動作中のノードに対する有効期間が不必要に長いエントリが存続しないようにすることができる。この処理は、図4、図5、および図6で述べた通常の転送処理と共に実行すればよい。例えば、送信元のMACアドレスを覚えておき、パケットを転送した後にエントリを更新してもよい。また、一連の転送処理と並行に本処理を実行してもよい。
ステップS705で状態が検出できなかった場合(ステップS705:NO)、状態検出部106は、当該エントリを状態記憶部105から削除する(ステップS707)。
次に、ステップS407の応答パケット生成処理の詳細について図8を用いて説明する。図8は、第1の実施の形態における応答パケット生成処理の全体の流れを示すフローチャートである。
応答パケット生成処理で、応答生成部107は、受信パケットと、受信パケットを受信したインターフェイスを特定する情報(受信インターフェイス情報、例えば識別子)と、状態検出部106で検出された状態とを入力する。
まず、応答生成部107は、受信パケットのイーサネット(登録商標)ヘッダから応答パケットのイーサネット(登録商標)ヘッダを生成する(ステップS801)。このとき、応答生成部107は、渡された受信パケット内のイーサネット(登録商標)フレームの送信元MACアドレスおよび受信先MACアドレスを、それぞれ応答パケットの受信先MACアドレスおよび送信元MACアドレスとする。また、応答生成部107は、受信パケットのプロトコルフィールドと同じ値を、応答パケットのプロトコルフィールドに設定する。
次に、応答生成部107は、受信パケットのプロトコルタイプフィールドを参照することにより、上位のネットワークプロトコルを判別する。そして、応答生成部107は、ネットワークプロトコルがIPv4であるか否かを判定する(ステップS802)。
ネットワークプロトコルがIPv4である場合(ステップS802:YES)、応答生成部107は、以下のようにしてIPv4に準拠した応答パケットを生成する(ステップS803〜ステップS806)。
すなわち、応答生成部107は、まずIPv4ヘッダを生成する(ステップS803)。応答生成部107は、受信パケットのIPv4ヘッダの情報をもとに、応答パケットのIPv4ヘッダを生成する。具体的には、応答生成部107は、受信パケットのIPv4ヘッダの送信元アドレスおよび受信先アドレスを、それぞれ応答パケットの受信先アドレスおよび送信元アドレスとして設定する。また、応答生成部107は、プロトコルフィールドにICMPを設定し、その他のフィールドについても適宜設定する。
次に、応答生成部107は、ICMPヘッダを生成する(ステップS804)。例えば、応答生成部107は、ICMPタイプ=3(Destination Unreach)、コード=2(ProtocolUnreachable)としたICMPヘッダを生成する。なお、ICMPタイプやコードにこれ以外の値を設定してもよい。
次に、応答生成部107は、受信パケットからIPv4パケットを抽出する(ステップS805)。応答生成部107は、抽出したパケットを上述のイーサネット(登録商標)ヘッダ、IPv4ヘッダおよびICMPヘッダの後に連結し、IPv4ヘッダのチェックサムフィールドとICMPヘッダのチェックサムフィールドとを計算することにより、応答パケットの生成を完了する(ステップS806)。
ステップS802で、ネットワークプロトコルがIPv4でないと判断した場合(ステップS802:NO)、応答生成部107は、さらにネットワークプロトコルがIPv6であるか否かを判断する(ステップS807)。ネットワークプロトコルがIPv4であると判断した場合(ステップS807:YES)、応答生成部107は、IPv6に準拠した応答パケットを生成する(ステップS808〜ステップS811)。なお、この処理(ステップS808〜ステップS811)は、IPv4の場合と同様の処理(ステップS803〜ステップS806)であるため、説明を省略する。
応答生成部107は、このようにして生成された応答パケットを、入力として通知された受信インターフェイス情報とともに転送部104に通知する(ステップS812)。
ステップS807で、ネットワークプロトコルがIPv6でないと判断した場合(ステップS807:NO)、応答生成部107は、生成したデータを破棄する(ステップS813)。このように、本実施の形態ではIPv4およびIPv6以外のパケットは非対応として扱い、非対応のパケットに対する応答パケットは通知しない。なお、これは一例であり、IPv4およびIPv6以外のプロトコルに対応するように構成してもよい。
このように、ノードが通信できない状態であることを検出する原因となった受信パケットから応答パケットを生成することによって、本来通信できない状態である当該ノードが応答したかのように中継装置100から応答パケットを送信することができる。
(変形例)
上記実施の形態では、通信できる状態になるまでの時間を予想することなどにより有効期間を設定していた。これに対し、ノードから通信できない期間の通知を受け取り、通知された期間に応じて有効期間を設定することにより、より厳密にノードの再開予定時刻に合わせた有効期間を設定可能とするように構成してもよい。
図9は、このように構成された第1の実施の形態の変形例にかかる中継装置120の構成の一例を示すブロック図である。図9に示すように、中継装置120は、インターフェイス101、102、103と、転送部104と、状態記憶部105と、状態検出部106と、応答生成部107とに加え、有効期間管理部128を備えている。
有効期間管理部128は、インターフェイス101〜103、および、転送部104を介して、ノードから通信できない期間の通知を受け取り、通知された期間を有効期間とするように状態記憶部105の対応するエントリの有効期間を更新する。
なお、有効期間管理部128が、ノードが起動され、通信を実行している間隔に応じて有効期間を決定し、決定した有効期間を状態記憶部105に保存するように構成してもよい。例えば、有効期間管理部128が、状態記憶部105を参照して各エントリが更新される間隔を随時取得し、間隔の平均値等から適切な有効期間を決定するように構成することができる。
このように、第1の実施の形態にかかる中継装置では、パケットを転送するときに、パケットの受信先ノードが通信できない状態である場合に、受信先ノードが通信できない状態であることを表す応答パケットを生成し、パケットの送信元ノードに対して送信することができる。これにより、送信元ノードは、状態管理用の装置等を参照することなく、通常の通信の中で通信相手の状態を適切に取得できる。
また、本実施の形態の中継装置は、インターフェイスに接続したノードの状態を取得できるため、ノードがネットワークに接続したままでサスペンドした場合であっても、トポロジが変化してないことを検出できる。これにより、中継装置上でルーティングプロトコルやスパニングツリーを維持するプロトコルなどのネットワークトポロジに依存する処理が動作していたとしても、再計算を引き起こさないように構成することができる。したがって、ネットワークの安定動作と低消費電力とを両立することができる。
さらに、検出した状態を保存し、その状態に応じて保存した情報の有効期間を管理するようにしたため、頻繁な検査が不要になる。
(第2の実施の形態)
第2の実施の形態にかかる中継装置は、ネットワークからパケットを受信した際に、当該パケットの宛先を決定するエントリが状態記憶部に存在し、かつ、そのエントリが受信先ノードが通信できない状態にあることを示している場合の動作が第1の実施の形態と異なる。すなわち、第2の実施の形態では、このような場合であって、かつ、パケットが所定の条件を満たす場合にのみ応答パケットを送信する。それ以外の動作は、第1の実施の形態と同じである。
図10は、第2の実施の形態にかかる中継装置200の構成の一例を示すブロック図である。図10に示すように、中継装置200は、インターフェイス101、102、103と、転送部204と、状態記憶部105と、状態検出部106と、応答生成部107と、条件記憶部209と、判定部210と、を備えている。
第2の実施の形態では、条件記憶部209および判定部210を追加したことと、転送部204の機能とが第1の実施の形態と異なっている。その他の構成および機能は、第1の実施の形態にかかる中継装置100の構成を表すブロック図である図1と同様であるので、同一符号を付し、ここでの説明は省略する。
条件記憶部209は、受信したパケットに含まれるデータが満たすべき予め定められた条件を記憶する。図11は、条件記憶部209に記憶されるデータのデータ構造の一例を示す図である。同図では、送信元MACアドレス、受信先MACアドレス、送信元IPアドレス、受信先IPアドレス、プロトコル、送信元ポート番号、および受信先ポート番号が条件として指定される例が示されている。
なお、これらの条件を構成するフィールドは一例であり、これ以外のデータを条件としてもよい。例えば、TCPのフラグ、アプリケーションプロトコルの情報、およびアプリケーションデータなどを用いてもよい。また、同図では省略しているが、条件を満たす場合に実行すべき動作を設定するフィールドを含むように構成してもよい。例えば、応答パケットを送信すること、受信パケットを破棄すること、および、通常通り受信パケットを転送することなど、動作として設定するように構成してもよい。このフィールドが含まれない場合は、例えば、条件を満たす場合は必ず応答パケット生成処理を実行するように構成する。
判定部210は、受信したパケットに含まれるデータが、条件記憶部209に保存されている条件を満たすか否かを判定する。
転送部204は、受信したパケットが条件記憶部209に保存されている条件を満たすか否かを判定することを、判定部210に依頼する処理が追加された点が、第1の実施の形態の転送部104と異なっている。
次に、このように構成された第2の実施の形態にかかる中継装置200によるパケット転送処理について図12を用いて説明する。図12は、第2の実施の形態におけるパケット転送処理の全体の流れを示すシーケンス図である。本実施の形態の動作は、原則として第1の実施の形態と同じであるが、エントリが無効だった場合に、判定部210が条件を判定した後に状態確認を行う点が異なる。
ステップS1201からステップS1205までは、第1の実施の形態にかかる中継装置100におけるステップS401からステップS405までと同様の処理なので、その説明を省略する。
ステップS1205で、受信先ノードが通信できる状態であることを確認した場合は、受信パケットを受信先ノードに転送する。また、エントリが無効のため、受信先ノードが決定できない場合は、全てのインターフェイスから受信パケットを送信する(図では省略)。
ステップS1205で、エントリが存在するが受信先ノードが通信できない状態であることを確認した場合、転送部204は、受信パケットが条件記憶部209に保存された条件を満たすかを確認することを判定部210に依頼する(ステップS1206)。判定部210は、依頼を受けて、条件記憶部209から条件を読み出す(ステップS1207、ステップS1208)。そして、判定部210は、受信パケットに含まれるデータが、読み出した条件を満たすか否かを判定する(ステップS1209)。すなわち、判定部210は、図11に示すような条件のうち、各フィールドの設定値が、受信したパケット内の対応するデータの設定値と一致する条件が存在するか否かを判定する。そして、判定部210は、判定結果を転送部204に送信する(ステップS1210)。
なお、ステップS1207〜ステップS1209の条件判定処理は、判定部210が、条件記憶部209に保存された条件を一つずつ読み出して判定を繰り返してもよいし、一括で条件を読み出すように構成してもよい。後者の方法によれば、条件記憶部209と判定部210との間で行う情報交換の回数を減らすことができる。
転送部204は、通知された判定結果により、受信パケットが条件を満たすか否かを判断する(ステップS1211)。条件を満たさない場合(ステップS1211:NO)、転送部204は、受信パケットを破棄する(ステップS1212)。条件を満たす場合(ステップS1211:YES)、転送部204は、第1の実施の形態のステップS406からステップS414までと同様の処理により、応答パケットを生成して送信元ノードに送信するとともに、受信先ノードの最新の状態を確認する(ステップS1213〜ステップS1221)。
本シーケンスは、受信パケットが条件記憶部209に保存された条件と一致した場合にのみ、状態に応じた応答パケットを返して状態検出を行う例を示している。上述のように、条件に合わせて実行すべき「動作」も規定し、条件を満たした場合に、規定された「動作」を実施するように構成してもよい。
このように、第2の実施の形態にかかる中継装置では、受信パケットが所定の条件を満たす場合にのみ応答パケットを送信することができる。すなわち、応答パケットを返すノードや通信を限定することができる。これにより、不必要にノードの状態を返すことが無くなり、セキュリティの維持と状態通知による利便性が共存可能となる。
(第3の実施の形態)
第3の実施の形態にかかる中継装置は、通信できない状態であるノードを検出したときに、当該ノードに対して所定の制御を実行する機能が追加される。
図13は、第3の実施の形態にかかる中継装置300の構成の一例を示すブロック図である。図10に示すように、中継装置300は、インターフェイス101、102、103と、転送部204と、状態記憶部105と、状態検出部106と、応答生成部107と、条件記憶部309と、判定部310と、転送制御部311と、機器制御部312と、を備えている。
第3の実施の形態では、条件記憶部309のデータ構造と、判定部310の機能と、転送制御部311および機器制御部312を追加したことが第2の実施の形態と異なっている。その他の構成および機能は、第2の実施の形態にかかる中継装置200の構成を表すブロック図である図10と同様であるので、同一符号を付し、ここでの説明は省略する。
条件記憶部309は、受信したパケットに含まれるデータが条件を満たす場合に、受信したパケットの受信先ノードに対して実行される機器制御処理の方法(制御方法)をさらに記憶する点が、第2の実施の形態の条件記憶部209と異なっている。図14は、条件記憶部309に記憶されるデータのデータ構造の一例を示す図である。同図に示すように、本実施の形態では、第2の実施の形態の説明で用いた条件(図12)に、「検出時動作」フィールドが追加される。すなわち、本実施の形態では検出時の動作が複数になるため、それを明示的に保存するためのフィールドを追加する。
同図では、第1の実施の形態と同様に応答パケットを生成して通知することを表す「エラー通知」、および、応答パケットを通知せずに、受信先ノードの遠隔起動するように制御することを表す「遠隔起動」が、「検出時動作」の一例として示されている。なお、本フィールドにその他の動作を設定するように構成してもよい。
判定部310は、「検出時動作」フィールドの設定値に応じて、判定結果の通知先を変更する点が、第2の実施の形態の判定部210と異なっている。例えば、判定部310は、「検出時動作」フィールドが「遠隔起動」の場合、判定結果を機器制御部312に通知し、機器制御部312に対して受信先ノードの遠隔起動を実行させる。
転送制御部311は、判定部310、状態検出部106、応答生成部107、および機器制御部312の全体の動作を制御する。なお、転送制御部311を用いる代わりに、他の構成要素が互いに協調動作するように実現してもよい。
機器制御部312は、条件記憶部309の「検出時動作」フィールドに設定されている機器の制御方法にしたがって、インターフェイス101〜103に接続するノードの状態を遠隔から制御する。例えば、機器制御部312は、サスペンドしているノードに対してWake on LANを用いた遠隔起動を実施する。
次に、このように構成された第3の実施の形態にかかる中継装置300によるパケット転送処理について図15および図16を用いて説明する。図15および図16は、第3の実施の形態におけるパケット転送処理の全体の流れを示すシーケンス図である。図15は、受信先ノードに対する機器制御が不要と判断される場合のシーケンスである。また、図16は、受信先ノードに対する機器制御が必要と判断され、機器制御部312により遠隔起動が実行される場合のシーケンスである。
まず、図15のシーケンスについて説明する。ステップS1501からステップS1505までは、第2の実施の形態にかかる中継装置200におけるステップS1201からステップS1205までと同様の処理なので、その説明を省略する。
ステップS1505で、エントリが有効期間内であり、かつ対応する受信先ノードが通信可能であることが確認された場合は、転送部204は、受信パケットを受信先ノードへ転送する(図では省略)。また、有効期間が切れている場合には、転送部204は、全てのインターフェイスを介して受信パケットを転送する(図では省略)。
一方、エントリが有効であり受信先ノードが通信不可能であることを示す場合、転送部204は、第2の実施の形態のステップS1206〜ステップS1209と同様の手順により、受信パケットに含まれるデータが条件記憶部309の条件を満たすかが判定される(ステップS1506〜ステップS1509)。
なお、全ての条件を判定した上で一致する条件が存在しなかった場合は、受信パケットは破棄される(同図では省略)。例えば、判定部310が受信パケットを破棄するように転送部204に指示を出すように構成することができる。
一致する条件が見つかった場合、判定部310は、当該条件と共に一致する条件が見つかったことを転送制御部311に通知する(ステップS1510)。この通知を受け取った転送制御部311は、条件に含まれる「検出時動作」フィールドを確認して、以後の動作を決定する(ステップS1511)。
上述のように、図15は、「検出時動作」フィールドに、「エラー通知」が設定されている場合のシーケンスを表している。この場合、転送制御部311は、受信パケットの情報などと共に応答生成部107に応答パケット生成依頼を通知する(ステップS1512)。
応答生成部107は、上述の各実施の形態と同様に、応答パケットを生成し(ステップS1513)、転送部204を介して送信元ノードが接続するインターフェイスから送信する(ステップS1514〜ステップS1515)。その後、転送制御部311は、受信先ノードの最新の状態を確認し、状態記憶部105に保存されている情報を更新してもよい(ステップS1516〜ステップS1520)。このステップS1516〜ステップS1502の処理は、例えば図4のステップS410〜ステップS414と同様であるため、説明を省略する。なお、図4と同様に、転送部204がこの処理を実行するように構成してもよい。
次に、図16のシーケンスについて説明する。ステップS1601からステップS1611までは、図15のステップS1501からステップS1511までと同様の処理なので、その説明を省略する。
上述のように、図16は、「検出時動作」フィールドに、「遠隔起動」が設定されている場合のシーケンスを表している。この場合、転送制御部311は、機器制御部312に対して受信先ノードに対する遠隔起動を指示する(ステップS1612)。なお、転送制御部311は、受信先ノードが接続しているインターフェイスや受信先ノードを特定するための情報などの遠隔起動に必要な情報を、転送部204および判定部310を介して取得できる。
通知を受けた機器制御部312は、指定されたインターフェイスに対して遠隔起動処理を行う(ステップS1613)。機器制御部312は、例えば、指定されたインターフェイスからWake on LANで当該ノードを起動させるパケットを送信する。なお、これ以外の起動方法により受信先ノードを起動するように構成してもよい。例えば、Powerover Ethernet(登録商標)により受信先ノードの給電を開始するように構成してもよい。
機器制御部312は、遠隔起動処理の結果を表す起動処理応答を転送制御部311に返す(ステップS1614 )。この応答を受けた転送制御部311は、受信先ノードが起動したか否かを確認することを状態検出部106に依頼し、受信先ノードの最新の状態を取得する(ステップS1615〜ステップS1617)。
なお、この作業を所定回数実施しても起動が確認できなかった場合には、当該パケットを破棄するように転送部204に指示を出す(図は省略)。または、応答パケットを生成して送信元に通知するように応答生成部107に指示を出す(図は省略)。
一方、起動が確認できた場合には(ステップS1618)、転送制御部311は、転送部204に対して、受信パケットを受信先ノードへと転送するように指示を出す(ステップS1619)。この指示を受けた転送部204は、受信パケットを受信先ノードへ転送する(ステップS1620)。
最後に、当該受信先ノードの状態が変化しているため、転送制御部311は、状態記憶部105の情報を更新し(ステップS1621〜ステップS1622)、パケット転送処理を終了する。
なお、機器制御部312が実行する遠隔起動方法は、機器設計時に固定的に決められる方法でもよいし、中継装置300の利用者が事前に設定可能としてもよい。また、受信先ノードが自装置の起動方法を中継装置300に通知するような手段を備え、中継装置300が通知された起動方法を条件記憶部309に記憶するように構成してもよい。
また、インターフェイス101〜103を介した遠隔起動以外の起動方法により、受信先ノードを起動するように構成してもよい。図17は、このように構成した場合の中継装置320の構成の一例を示すブロック図である。図17に示すように、中継装置320は、図13に示す中継装置300の構成に加えて、信号送出部323を備えている。
信号送出部323は、インターフェイス101〜103を介した通信方法以外の通信方法により受信先ノードを起動するための信号(起動信号)等を送出する。例えば、信号送出部323は、起動するノードだけが反応して起動するような光学的または電気的な信号を当該ノードに送出する。信号送出部323が、ノードが接続している電源ライン(コンセント)のスイッチをオンにする信号を送出するように構成してもよい。
なお、動作または制御方法に関する複数の情報を管理する必要がある場合には、条件記憶部309にこれらの複数の情報を保存するように構成すればよい。
図18は、「検出時動作」フィールドに加えて、「遠隔起動方法」フィールドを追加した場合の条件記憶部309のデータ構造の一例を示している。検出時動作として「遠隔起動方法」フィールドは、例えば、Wake on LAN機能により起動する「Wake on LAN」、および、指定電波を送信することにより起動する「指定電波」などの起動方法を指定する。
このように、第3の実施の形態にかかる中継装置では、通信できない状態であるノードを検出したときに、当該ノードに対して所定の制御を実行することができる。これにより、例えば、受信先ノードがサスペンドなどにより一時的に通信できない状態に置かれた場合であっても、当該受信先ノードが具備する方法により起動状態に復帰させることが可能となる。また、判定部より、起動状態に復帰させるか応答パケットを送信するかを判定できる。すなわち、事前に決めた重要度に応じて、通信できない受信先ノードを起動するか、または、起動せずに応答パケットを通知するかを選択することができる。
第1〜第3の実施の形態にかかる中継装置で実行される中継プログラムは、ROM(図示せず)等に予め組み込まれて提供される。
第1〜第3の実施の形態にかかる中継装置で実行される中継プログラムは、インストール可能な形式又は実行可能な形式のファイルでCD−ROM(Compact Disk Read Only Memory)、フレキシブルディスク(FD)、CD−R(Compact Disk Recordable)、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成してもよい。
さらに、第1〜第3の実施の形態にかかる中継装置で実行される中継プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、第1〜第3の実施の形態にかかる中継装置で実行される中継プログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。
第1〜第3の実施の形態にかかる中継装置で実行される中継プログラムは、上述した各部(転送部、状態検出部、応答生成部等)を含むモジュール構成となっており、実際のハードウェアとしてはCPU(図示せず)が上記ROMから中継プログラムを読み出して実行することにより上記各部が主記憶装置上にロードされ、各部が主記憶装置上に生成されるようになっている。
なお、本発明は、上記実施の形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化することができる。また、上記実施の形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成することができる。例えば、実施の形態に示される全構成要素からいくつかの構成要素を削除してもよい。さらに、異なる実施の形態にわたる構成要素を適宜組み合わせてもよい。