以下に、本発明にかかる分散型データ処理装置の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
実施の形態1.
図1〜図7を用いてこの発明の実施の形態1を説明する。本発明にかかる分散型データ処理装置を用いた分散型データ処理システムは、DHT(Distributed Hash Table)を用いたChord方式のネットワークシステムであり、複数の分散型データ処理装置(ノード)がネットワークを介して接続され、ID空間を1次元の円周、すなわちID=0を起点として、ID=1,2,…,2m-1(mはIDのビット数)の順に、2mで再び起点に戻る循環構造を構成し、ノードとデータのキーの双方がハッシュ関数によって同一のID空間にマッピングされている。
図1は、本発明にかかる分散型データ処理装置であるノード1の実施の形態1の構成を示すブロック図である。図1において、ノード1は、トランスポート層やアプリケーション層などのDHTより上位のレイヤの処理を行う上位レイヤ処理部4と、DHTに関する処理を行うDHT処理部3と、IP(Internet Protocol)層およびIP層以下のレイヤに関する処理を行ないネットワーク20に接続する下位レイヤ処理部2とを備えている。
DHT処理部3は、ローカル管理データ6、SUCCESSORリスト7、fingerテーブル8、キャッシュメモリ10、DHT基本処理部5、優先度判定部13とキャッシュ操作部12とを有するキャッシュ管理部9、およびリダイレクション生成部11を備えている。
ローカル管理データ6には、自身が管理するキーやデータなど登録される。SUCCESSORリスト7には、分散型データ処理システムにおけるsuccessorノード(時計回りで自身のつぎのノード)およびpredecessorノード(時計回りで自身の1つ前のノード)を含む、予め定められた数の自身と連続したノードのIDが登録される。fingerテーブル8には、自身から見て円周の1/2k(1≦k≦m)周分前方にあるノード、すなわち自身のIDの値nに対してsuccessorノード(n+2m-k)のIDを有するノード群のIDの値および宛先IPアドレスを組としたエントリーが登録される。キャッシュメモリ10には、ショートカットパスに関する情報が登録される。ショートカットパスに関する情報は、具体的には、データパケットの送信先となるノード1のIDとこのIDが示すノード1のIPアドレス、すなわち宛先IDと宛先IPアドレスとを組としたショートカットパスのエントリーである。
DHT基本処理部5は、ローカル管理データ6、SUCCESSORリスト7、およびfingerテーブル8に登録された各種情報に基づいてDHTに関する処理を行う。リダイレクション生成部11は、受信したデータパケットがDHTによって転送されたデータパケットであるか否かを判定し、DHTによって転送されたデータパケットである場合にはショートカットパスを設定するためのリダイレクションメッセージを生成する。リダイレクションメッセージは、受信したデータパケットに含まれる送信先のIDと、このIDが示すノード1のIPアドレス、および受信したデータパケットのQoS(quality of Service)による優先度が含まれる。リダイレクション生成部11は、下位レイヤ処理部2を介して、生成したリダイレクションメッセージを受信したパケットの送信元のノードに送信する。
キャッシュ管理部9は、キャッシュメモリ10を管理する。優先度判定部13は、リダイレクションメッセージに含まれる優先度に基づいてショートカットパスのエントリーをキャッシュメモリ10に登録するか否かを判定する優先度判定処理を行なう。
キャッシュ操作部12は、優先度判定部13の判定結果に基づいてショートカットパスのエントリーをキャッシュメモリ10に登録する。また、キャッシュ操作部12は、キャッシュメモリ10に登録されたショートカットパスのエントリーの使用状況を監視し、監視結果に基づいてショートカットパスのエントリーをキャッシュメモリ10から削除する。
つぎに、図2〜図7を参照して、この発明における分散型データ処理装置の動作および分散型データ処理システムの動作を説明する。まず、図2のショートカットパスのイメージを示す図を参照して、分散型処理データシステムのショートカットパスの設定の動作を説明する。図2において、ノード1a〜1fは、先の図1に示したノード1と同じ構成を備えており、ノード1aがノード1dにデータパケットを送信する場合を示している。また、図2においては、通常のDHTによるパケットの転送は、ノード1a、ノード1b、ノード1c、ノード1d、ノード1e、ノード1f、ノード1aの順に行われ、この転送順が時計回りとなる。
最初は、送信元であるノード1aには送信先であるノード1dへのショートカットパスが設定されていない。そのため、ノード1aは通常のDHTによって、通常のDHT転送であることを示す情報を含むパケットを転送する。すなわち、送信元ノード1aはノード1d宛のパケットをノード1bに送信し、ノード1bはノード1aから受信したノード1d宛のパケットをノード1cに送信し、ノード1cはノード1bから受信したノード1d宛のパケットをノード1dに送信する。
ノード1dは、受信したパケットが自ノード宛であることおよび通常のDHTによって転送されたことを認識する。ノード1dは、パケットの送信元であるノード1aがつぎに自ノード宛のパケットを転送する際にDHTではなくショートカットパスを用いることが可能となるように、ノード1aに対してリダイレクションメッセージを送信する。リダイレクションメッセージの送信は、直接ノード1a宛に送信してもよいし、DHTによってノード1e、1fを介してノード1aに送信してもよい。
上述したようにリダイレクションメッセージには、送信先のIDと、このIDが示すノードのIPアドレス、および受信したパケットのQoSによる優先度が含まれている。この場合は、ノード1dのID、ノード1dのIPアドレス、および優先度が含まれている。ノード1aは、これらの情報からノード1dに対するショートカットパスを設定し、以後、DHTを用いることなく設定したショートカットパスによってノード1dに対するパケットを転送する。すなわち、ノード1b、1cを介することなく、直接ノード1dにパケットを転送する。
つぎに、図3〜図7のフローチャートを参照して、この発明における分散型データ処理装置の動作を説明する。まず、図3のフローチャートを参照して、この実施の形態1のノード1の送信処理の動作について説明する。上位レイヤ処理部4からデータ転送要求を受けると(ステップS100)、DHT基本処理部5は、データの宛先が自ノードが管理するIDか否かを判定する(ステップS101)。具体的には、DHT基本処理部5は、ローカル管理データ6に登録されているIDの中に、データの宛先のIDと一致するIDが存在するか否かを検索する。DHT基本処理部5は、検索の結果、ローカル管理データ6に登録されているIDの中にデータの宛先のIDと一致するIDが存在する場合にはデータの宛先は自ノードが管理するIDであると判定し、ローカル管理データ6に登録されているIDの中にデータの宛先のIDと一致するIDが存在しない場合にはデータの宛先は自ノードが管理するIDではないと判定する。データの宛先が自ノードが管理するIDであると判定した場合(ステップS101,Yes)、DHT基本処理部5は、上位レイヤ処理部4の該当するプロセスにデータを送信する(ステップS102)。
データの宛先が自ノードが管理するIDではないと判定した場合(ステップS101,No)、DHT基本処理部5は、キャッシュ操作部12に処理を引き渡す。キャッシュ操作部12は、キャッシュメモリ10にデータの宛先が登録されているか否かを判定する(ステップS103)。キャッシュメモリ10には、IDおよびIPアドレスを組としたショートカットパスのエントリーが登録されている。
キャッシュメモリ10に登録されたエントリーのIDの中にデータの宛先のIDが存在する場合(ステップS103,Yes)、キャッシュ操作部12は、当該IDに対応付けてキャッシュメモリ10に登録されているIPアドレスを読み出してDHT基本処理部5に通知する。DHT基本処理部5は、通知されたIPアドレス宛、すなわちデータの宛先IDに対応付けてキャッシュメモリ10に登録されているIPアドレスにデータを送信する(ステップS104)。具体的には、DHT基本処理部5は、キャッシュ操作部12から通知されたIPアドレスを用いてデータを転送するデータパケットを生成する。データパケットを生成する際に、DHT基本処理部5は、たとえばデータパケット内の予め定められた領域のショートカットパスフラグをONにして、ショートカットパスを用いてデータを転送することを示す情報をデータパケットに含ませる。DHT基本処理部5は、生成したデータパケットを下位レイヤ処理部2を介してネットワーク20に送信する。
一方、キャッシュメモリ10に登録されたエントリーのIDの中にデータの宛先のIDが存在しない場合(ステップS103,No)、キャッシュ操作部12は、キャッシュメモリ10に登録が無い旨をDHT基本処理部5に通知する。DHT基本処理部5は、fingerテーブル8を検索して宛先となるIPアドレスを選択し、選択したIPアドレスにデータパケットを送信する(ステップS105)。具体的には、fingerテーブル8には、自身から見て円周の1/2k(1≦k≦m)周分前方にあるノード、すなわち自身のID値nに対してsuccessorノード(n+2m-k)のIDを有するノード群のIDおよび宛先のIPアドレスを組としたエントリーが登録されている。DHT基本処理部5は、fingerテーブル8に登録されているIDの中からデータの宛先のIDと一致するIDを検索し、検索したID値に対応付けられた宛先アドレスを選択する。一致するIDが無い場合はデータの宛先IDを超えない最大のIDのエントリーを選択する。DHT基本処理部5は、選択した宛先アドレスを用いてデータを転送するデータパケットを生成する。データパケットを生成する際に、ショートカットパスフラグをOFFにして、DHTを用いてデータ転送をすることを示す情報をデータパケットに含ませる。DHT基本処理部5は、生成したデータパケットを下位レイヤ処理部2を介してネットワーク20に送信する。
つぎに、図4のフローチャートを参照して、この発明における分散型データ処理装置であるノード1の受信処理の動作について説明する。下位レイヤ処理部2を介してネットワーク20からパケットを受信すると(ステップS200)、DHT基本処理部5は、受信したパケットに含まれるデータの宛先が自ノードであるか否かを判定する(ステップS201)。受信したパケットに含まれるデータの宛先が自ノードではない場合(ステップS201,No)、DHT基本処理部5は、fingerテーブル8を検索して宛先アドレスを選択し、選択した宛先アドレスにデータを送信する(ステップS202)。
受信したパケットに含まれるデータの宛先IDが自身が管理するIDである場合(ステップS201,Yes)、DHT基本処理部5は、受信したデータパケットを上位レイヤ処理部4に出力するとともに、受信したデータパケットがリダイレクションメッセージであるか否かを判定する(ステップS203)。受信したデータパケットがリダイレクションメッセージではない場合(ステップS203,No)、すなわち受信したデータパケットがデータ転送のデータパケットである場合、DHT基本処理部5は、ローカル管理データ6に基づいてデータ処理を行なう。
また、DHT基本処理部5は、データパケットがショートカットパスを用いて転送されたか否かを判定する(ステップS204)。先の図3のフローチャートを参照して説明した送信処理の動作において、送信元ノードは、ショートカットパスを用いて転送する場合にはショートカットパスフラグをONにし、DHTを用いて転送する場合にはショートカットパスフラグをOFFにしている。DHT基本処理部5は、パケット内のショートカットパスフラグによって、当該パケットがショートカットパスを用いて転送されたか否かを判定する。データパケットがショートカットパスを用いて転送された場合、すなわちショートカットパスフラグがONの場合、DHT基本処理部5は、既に送信元ノードのキャッシュメモリ10には自ノードとのショートカットパスが登録されていると認識して処理を終了する。
データパケットがショートカットパスを用いて転送されていない場合(DHTによる転送によって転送された場合)、すなわちショートカットパスフラグがOFFの場合、DHT基本処理部5は、送信元ノードのキャッシュメモリ10には自ノードとのショートカットパスが登録されていないと認識する。DHT基本処理部5は、受信したデータパケットの送信元ノードのIPアドレスと、受信したデータパケットに含まれる送信先のIDと、このIDが示すノード1のIPアドレス、および受信したデータパケットのQoS(quality of Service)による優先度を抽出してリダイレクション生成部11に通知する。リダイレクション生成部11は、通知された送信先のIDと、このIDが示すノード1のIPアドレス、および優先度を含むリダイレクションメッセージを生成する。リダイレクション生成部11は、生成したリダイレクションメッセージを下位レイヤ処理部2を介してデータの送信元ノードに送信する(ステップS205)。
一方、受信したデータパケットがリダイレクションメッセージである場合(ステップS203,Yes)、DHT基本処理部5は、リダイレクションメッセージをキャッシュ管理部9に通知し、キャッシュ管理部9は、リダイレクションメッセージに基づいてキャッシュメモリ10にショートカットパスのエントリーを登録する登録処理を実行する(ステップS206)。
図5〜図7のフローチャートを参照して、登録処理の詳細な動作について説明する。登録処理は、リダイレクションメッセージに含まれる優先度に基づいて登録を行なうか否かが判定され、登録を行うと判定された場合のみショートカットパスのエントリーをキャッシュメモリ10に登録をする。登録を行うか否かの判定条件は、様々なバリエーションがあるが、ここでは、以下の3つの条件について説明する。
(条件1)リダイレクションメッセージに含まれる優先度が所定の優先度より高い場合のみ登録する。
(条件2)キャッシュメモリ10に登録されたエントリー数が所定のエントリー数以下の場合には優先度に依存することなく登録し、登録されたエントリー数が所定のエントリー数を越えた場合にはリダイレクションメッセージに含まれる優先度が所定の優先度より高いもののみを登録する。
(条件3)キャッシュメモリ10に空きがある場合には無条件に登録を行い、キャッシュメモリ10に空きが無い場合には登録されたエントリーの中からリダイレクションメッセージに含まれる優先度より低いエントリーを削除して登録する。
まず、図5のフローチャートを参照して、上記(条件1)の判定による登録処理の動作を説明する。優先度判定部13は、リダイレクションメッセージに含まれる優先度を抽出し、抽出した優先度(対象パス優先度)と予め定められた優先度閾値とを比較する。対象パス優先度が優先度閾値より大きい場合(ステップS300,Yes)、優先度判定部13は対象パスを登録する旨をキャッシュ操作部12に通知する。優先度判定部13からの通知を受けると、キャッシュ操作部12は、リダイレクションメッセージに含まれる送信先のIDと、このIDが示すノード1のIPアドレスとを抽出する。キャッシュ操作部12は、抽出した送信先のIDと、このIDが示すノード1のIPアドレスとを組としたショートカットパスのエントリー、すなわちリダイレクションメッセージの内容をキャッシュメモリ10に登録する(ステップS301)。対象パス優先度が優先度閾値以下の場合(ステップS300,No)、優先度判定部13は、リダイレクションメッセージを廃棄して処理を終了する。すなわち、優先度判定部13はキャッシュ操作部12に通知を行わないため、リダイレクションメッセージを受信してもショートカットパスのエントリーはキャッシュメモリ10に登録されることはない。
つぎに、図6のフローチャートを参照して、上記(条件2)の判定による登録処理の動作を説明する。なお、優先度判定部13は、キャッシュメモリ10に登録されているエントリー数を記憶しているものとする。
優先度判定部13は、登録エントリー数と予め定められたエントリー数閾値とを比較する。登録エントリー数がエントリー数閾値を越えている場合(ステップS400,Yes)、優先度判定部13は、リダイレクションメッセージに含まれる優先度を抽出し、抽出した優先度(対象パス優先度)と予め定められた優先度閾値とを比較する。対象パス優先度が優先度閾値より大きい場合(ステップS401,Yes)、または登録エントリー数がエントリー閾値以下の場合(ステップS400,No)、優先度判定部13は対象パスを登録する旨をキャッシュ操作部12に通知するとともに、登録エントリー数をインクリメントしてカウントアップする。
優先度判定部13からの通知を受けると、キャッシュ操作部12は、リダイレクションメッセージに含まれる送信先のIDと、このIDが示すノード1のIPアドレスとを抽出する。キャッシュ操作部12は、抽出した送信先のIDと、このIDが示すノード1のIPアドレスとを組としたエントリー、すなわちリダイレクションメッセージの内容をキャッシュメモリ10に登録する(ステップS402)。対象パス優先度が優先度閾値以下の場合(ステップS401,No)、優先度判定部13は、リダイレクションメッセージを廃棄して処理を終了する。すなわち、優先度判定部13は、キャッシュ操作部12に通知を行わないため、リダイレクションメッセージを受信してもショートカットパスのエントリーはキャッシュメモリ10に登録されることはない。
つぎに、図7のフローチャートを参照して、上記(条件3)の判定による登録処理の動作を説明する。なお、キャッシュメモリ10には、送信先のIDと、このIDが示すノード1のIPアドレスと、優先度との組がショートカットパスのエントリーとして登録されているものとする。
優先度判定部13は、キャッシュメモリ10の領域に空きがあるか否かを判定する。キャッシュメモリ10の領域に空きがある場合(ステップS500,Yes)、優先度判定部13は、リダイレクションメッセージによる登録を行う旨をキャッシュ操作部12に通知する。通知を受けるとキャッシュ操作部12は、リダイレクションメッセージに含まれる送信先のIDと、このIDが示すノード1のIPアドレスと、優先度とを抽出する。キャッシュ操作部12は、抽出した送信先のIDと、このIDが示すノード1のIPアドレスと、優先度とを組としたショートカットパスのエントリー、すなわちリダイレクションメッセージの内容をキャッシュメモリ10に登録する(ステップS501)。
キャッシュメモリ10の領域に空きがない場合(ステップS500,No)、優先度判定部13は、キャッシュメモリ10に登録されたエントリーの優先度の中にリダイレクションメッセージに含まれる優先度より低いエントリーが存在するか否かを判定する(ステップS502)。具体的には、優先度判定部13は、リダイレクションメッセージに含まれる優先度を抽出するとともに、キャッシュ操作部12を介してキャッシュメモリ10に登録された全てのエントリーの優先度を取得する。優先度判定部13は、取得した優先度の中に抽出した優先度より優先度が低いものが存在するか否かを判定する。キャッシュメモリ10に登録されたエントリーの優先度の中にリダイレクションメッセージに含まれる優先度より低いものが存在する場合(ステップS502,Yes)、優先度判定部13は、キャッシュメモリ10に登録されたエントリーの優先度の中でリダイレクションメッセージに含まれる優先度より低いエントリーをキャッシュメモリ10から削除してリダイレクションメッセージの内容をキャッシュメモリ10に登録する旨をキャッシュ操作部12に通知する。通知を受けると、キャッシュ操作部12は、通知されたエントリーをキャッシュメモリ10から削除して、リダイレクションメッセージに含まれる送信先のIDと、このIDが示すノード1のIPアドレスと、優先度とを組としたショートカットパスのエントリーをキャッシュメモリ10に登録する(ステップS503)。
一方、キャッシュメモリ10に登録されたエントリーの優先度の中にリダイレクションメッセージに含まれる優先度より低いものが存在しない場合(ステップS502,No)、優先度判定部13は、リダイレクションメッセージを廃棄して処理を終了する。すなわち、優先度判定部13は、キャッシュ操作部12に通知を行わないため、リダイレクションメッセージを受信してもショートカットパスのエントリーはキャッシュメモリ10に登録されることはない。
つぎに、キャッシュメモリ10に登録されているエントリーを削除する動作について説明する。キャッシュ操作部12は、キャッシュメモリ10の管理を行っており、キャッシュメモリ10にエントリーを登録する際に、登録したエントリーに対応付けて図示しない計時機能を用いて登録してからの経過時間の計測を開始する。そして、経過時間が予め定められた登録時間を経過した場合、当該エントリーをキャッシュメモリ10から削除する。
なお、登録した後に一定時間エントリーを使用しなかった場合、すなわち登録したショートカットパスを使用してデータパケットの転送を行わなかった場合に当該エントリーをキャッシュメモリ10から削除するようにしてもよい。具体的には、登録処理によってキャッシュメモリ10にエントリーを登録する際に、登録したエントリーに対応付けて図示しない計時機能を用いて登録してからの経過時間の計測を開始する。そして、先の図3のフローチャートを参照して説明した送信処理のステップS104においてキャッシュメモリ10に登録されているIPアドレスにデータパケットを送信した場合、すなわちショートカットパスによってデータパケットを転送した際にこのIPアドレスを含むエントリーに対応付けられた計時機能をリセットして再度経過時間の計測を開始する。そして、経過時間が予め定められた未使用時間を経過した場合に当該エントリーをキャッシュメモリ10から削除する。
以上説明したように、この実施の形態1においては、リダイレクション生成部11が、DHTによる転送によって自身が管理するID宛のデータパケットを受信した場合、データパケットに含まれる送信先のID、このIDが示すノード1のIPアドレス、およびデータパケットの優先度を含むリダイレクションメッセージを生成して受信したデータパケットの送信元のノード1に送信し、キャッシュ管理部9は、リダイレクションメッセージに含まれる優先度が予め定められた優先度閾値より優先度が高い場合に、前記リダイレクションメッセージに含まれる送信先のIDおよびこのIDが示すノード1のIPアドレスをキャッシュメモリ10に登録するようにしているため、効率的にキャッシュメモリ10を用いて優先度の高いデータパケットをショートカットパスを用いて高速に転送することができる。
また、この実施の形態1においては、リダイレクション生成部11が、DHTによる転送によって自身が管理するID宛のデータパケットを受信した場合、データパケットに含まれる送信先のID、このIDが示すノード1のIPアドレス、およびデータパケットの優先度を含むリダイレクションメッセージを生成して受信したデータパケットの送信元のノード1に送信し、キャッシュ管理部9は、キャッシュメモリ10に登録されているショートカットパスに関する情報の数が予め定められたエントリー数閾値以下の場合にはリダイレクションメッセージに含まれる優先度に依存することなくリダイレクションメッセージに含まれる送信先のIDおよびこのIDが示すノード1のIPアドレスをキャッシュメモリ10に登録し、キャッシュメモリ10に登録されているショートカットパスに関する情報の数が予め定められたエントリー数閾値より多い場合には、リダイレクションメッセージに含まれる優先度が予め定められた優先度閾値より優先度が高い場合のみ、リダイレクションメッセージに含まれる送信先のIDおよびこのIDが示すノード1のIPアドレスをキャッシュメモリ10に登録するようにしているため、効率的にキャッシュメモリ10を用いて優先度の高いデータパケットをショートカットパスを用いて高速に転送することができる。
さらに、この実施の形態1においては、リダイレクション生成部11が、DHTによる転送によって自身が管理するID宛のデータパケットを受信した場合、データパケットに含まれる送信先のID、このIDが示すノード1のIPアドレス、およびデータパケットの優先度を含むリダイレクションメッセージを生成して受信したデータパケットの送信元のノード1に送信し、キャッシュメモリの登録領域に空きがある場合にはリダイレクションメッセージに含まれる優先度に依存することなくリダイレクションメッセージに含まれる送信先のIDおよびこのIDが示すノード1のIPアドレスをキャッシュメモリに登録し、キャッシュメモリの登録領域に空きがない場合には、キャッシュメモリに登録された優先度の中でリダイレクションメッセージに含まれる優先度よりも優先度の低いものを選択し、選択した優先度に対応付けられたIDおよびIPアドレスをキャッシュメモリから削除してリダイレクションメッセージに含まれる送信先のIDおよびこのIDが示すノード1のIPアドレスをキャッシュメモリに登録するようにしているため、効率的にキャッシュメモリ10を用いて優先度の高いデータパケットをショートカットパスを用いて高速に転送することができる。
なお、この実施の形態1では、上記(条件1)による判定を用いる場合、送信元ノードがリダイレクションメッセージに含まれる優先度と優先度閾値とを比較してショートカットパスのエントリーをキャッシュメモリ10に登録するか否かを判定するようにしたが、送信先ノードがDHTによる転送で受信したデータの優先度に基づいてショートカットパスのエントリーを送信元ノードのキャッシュメモリ10に登録するか否かを判定するようにしてもよい。この場合、送信先ノードのDHT基本処理部5が、DHTによる転送によって受信したデータの優先度を送信先ノードの優先度判定部13に通知し、送信先ノードの優先度判定部13が通知された優先度と予め定められた優先度閾値とを比較し、通知された優先度が優先度閾値より大きいと判定した場合のみ、リダイレクション生成部11にリダイレクションメッセージを生成させて送信元ノードに送信する。送信元ノードのキャッシュ操作部12は、リダイレクションメッセージを受信した場合には無条件にリダイレクションメッセージの内容をキャッシュメモリ10に登録する。
これにより、ショートカットパスを設定する場合のみ送信先ノードがリダイレクションメッセージを送信することとなり、無駄なメッセージがネットワーク上に送信されることがなくなるため、ネットワーク20の帯域の消費を抑え、システムのスループットの低下を抑制することができる。
実施の形態2.
図8〜図11を用いてこの発明の実施の形態2を説明する。先の実施の形態1では、ショートカットパスを登録するか否かの判定に、QoSにおける優先度を用いるようにしたが、この実施の形態2では、ショートカットパスを登録するか否かの判定に自ノード(送信元ノード)と送信先ノードとの距離を用いるものである。
図8は、この発明における分散型データ処理装置であるノード1の実施の形態2の構成を示すブロック図である。図8に示したこの実施の形態2のノード1は、先の図1に示した実施の形態1のノード1の優先度判定部13を有するキャッシュ管理部9の代わりに、距離判定部14を備えたキャッシュ管理部9aを備えている。先の図1に示した実施の形態のノード1と同じ機能を持つ構成部分には同一符号を付し、重複する説明は省略する。
距離判定部14は、自ノードのIDと送信先ノードのIDとの距離に基づいて、ショートカットパスのエントリーをキャッシュメモリ10に登録するか否かを判定する。上述したように、本発明にかかる分散型データ処理装置を用いた分散型データ処理システムは、DHT(Distributed Hash Table)を用いたChord方式のネットワークシステムであり、複数の分散型データ処理装置(ノード)がネットワークを介して接続され、ID空間を1次元の円周、すなわちID=0を起点として、ID=1,2,…,2m-1(mはIDのビット数)の順に、2mで再び起点に戻る循環構造を構成し、ノードとデータのキーの双方がハッシュ関数によって同一のID空間にマッピングされている。距離判定部14は、自ノードのIDと送信先ノードのIDとの差の絶対値を自ノードのIDと送信先ノードのIDとの距離として算出し、算出した距離を判定条件として用いる。登録を行うか否かの判定条件は、様々なバリエーションがあるが、ここでは、以下の3つの条件に付いて説明する。
(条件4)自ノードのIDと送信先ノードとのIDとの距離が所定の値より離れている場合のみ登録する。
(条件5)登録されたエントリー数が所定のエントリー数以下の場合には自ノードのIDと送信先ノートとのIDとの距離に依存することなく登録し、登録されたエントリー数が所定のエントリー数を越えた場合には自ノードのIDと送信先ノートとのIDとの距離が所定の値より離れている場合のみ登録する。
(条件6)キャッシュメモリ10に空きがある場合には無条件に登録を行い、キャッシュメモリ10に空きが無い場合には登録されたエントリーの中から自ノードのIDと送信先ノード(リダイレクションメッセージを送信したノード)のIDとの距離より近いエントリーを削除して登録する。
つぎに、この実施の形態2のノード1の動作について説明する。なお、この実施の形態2と先の実施の形態1との相違点は、キャッシュメモリ10にエントリーを登録する登録処理のみであるので、ここでは、登録処理の動作のみを説明する。
まず、図9のフローチャートを参照して、上記(条件4)の判定による登録処理の動作を説明する。距離判定部14は、リダイレクションメッセージに含まれる送信先のIDを抽出し、自ノードのIDと抽出した送信先のIDとの距離を算出する(ステップS600)。距離判定部14は、算出した距離と予め定められた距離閾値とを比較する。算出した距離が距離閾値より大きい場合(ステップS601,Yes)、距離判定部14は、ショートカットパスを登録する旨をキャッシュ操作部12に通知する。距離判定部14からの通知を受けると、キャッシュ操作部12は、リダイレクションメッセージに含まれる送信先のIDと、このIDが示すノード1のIPアドレスとを抽出する。キャッシュ操作部12は、抽出した送信先のIDと、このIDが示すノード1のIPアドレスとを組としたショートカットパスのエントリー、すなわちリダイレクションメッセージの内容をキャッシュメモリ10に登録する(ステップS602)。算出した距離が距離閾値以下の場合(ステップS601,No)、距離判定部14は、リダイレクションメッセージを廃棄して処理を終了する。すなわち、距離判定部14はキャッシュ操作部12に通知を行わないため、リダイレクションメッセージを受信してもショートカットパスのエントリーはキャッシュメモリ10に登録されることはない。
つぎに、図10のフローチャートを参照して、上記(条件5)の判定による登録処理の動作を説明する。なお、距離判定部14は、キャッシュメモリ10に登録されているエントリー数を記憶しているものとする。
距離判定部14は、登録エントリー数と予め定められたエントリー数閾値とを比較する。登録エントリー数がエントリー数閾値を越えている場合(ステップS700,Yes)、距離判定部14は、リダイレクションメッセージに含まれる送信先のIDを抽出し、自ノードのIDと抽出した送信先のIDとの距離を算出する(ステップS701)。距離判定部14は、算出した距離と予め定められた距離閾値とを比較する。算出した距離が距離閾値より大きい場合(ステップS702,Yes)、または登録エントリー数がエントリー閾値以下の場合(ステップS700,No)、距離判定部14はショートカットパスのエントリーを登録する旨をキャッシュ操作部12に通知するとともに、登録エントリー数をインクリメントしてカウントアップする。
距離判定部14からの通知を受けると、キャッシュ操作部12は、リダイレクションメッセージに含まれる送信先のIDと、このIDが示すノード1のIPアドレスとを抽出する。キャッシュ操作部12は、抽出した送信先のIDと、このIDが示すノード1のIPアドレスとを組としたショートカットパスのエントリー、すなわちリダイレクションメッセージの内容をキャッシュメモリ10に登録する(ステップS703)。算出した距離が距離閾値以下の場合(ステップS702,No)、距離判定部14は、リダイレクションメッセージを廃棄して処理を終了する。すなわち、距離判定部14は、キャッシュ操作部12に通知を行わないため、リダイレクションメッセージを受信してもショートカットパスのエントリーはキャッシュメモリ10に登録されることはない。
つぎに、図11のフローチャートを参照して、上記(条件6)の判定による登録処理の動作を説明する。なお、キャッシュメモリ10には、送信先のID値と、このID値が示すノードのアドレスと、自ノードのIDと送信先のIDとの距離との組がショートカットパスのエントリーとして登録されているものとする。
距離判定部14は、リダイレクションメッセージに含まれる送信先のIDを抽出し、自ノードのIDと抽出した送信先のIDとの距離を算出する(ステップS800)。距離判定部14は、キャッシュメモリ10の領域に空きがあるか否かを判定する。キャッシュメモリ10の領域に空きがある場合(ステップS801,Yes)、距離判定部14は、リダイレクションメッセージによる登録を行う旨をキャッシュ操作部12に通知する。距離判定部14は、この通知に算出した距離も含めておく。
通知を受けるとキャッシュ操作部12は、リダイレクションメッセージに含まれる送信先のIDと、このIDが示すノード1のIPアドレスとを抽出する。キャッシュ操作部12は、抽出した送信先のIDと、このIDが示すノード1のIPアドレスと、通知された距離(自ノードのIDと送信先のIDとの距離)を組としたショートカットパスのエントリー、すなわちリダイレクションメッセージの内容をキャッシュメモリ10に登録する(ステップS802)。
キャッシュメモリ10の領域に空きがない場合(ステップS801,No)、距離判定部14は、キャッシュメモリ10に登録されたエントリーの距離の中に通知された距離より近いエントリーが存在するか否かを判定する(ステップS803)。具体的には、距離判定部14は、キャッシュ操作部12を介してキャッシュメモリ10に登録された全てのエントリーの距離を取得する。距離判定部14は、取得した距離の中に算出した距離より距離が近いものが存在するか否かを判定する。キャッシュメモリ10に登録されたエントリーの距離の中に算出した距離よりも近いものが存在する場合(ステップS803,Yes)、距離判定部14は、キャッシュメモリ10に登録されたエントリーの距離の中で着算出した距離よりも近いエントリーをキャッシュメモリ10から削除してリダイレクションメッセージの内容をキャッシュメモリ10に登録する旨をキャッシュ操作部12に通知する。距離判定部14は、この通知に算出した距離を含めておく。通知を受けると、キャッシュ操作部12は、通知されたエントリーをキャッシュメモリ10から削除して、リダイレクションメッセージに含まれる送信先のIDと、このIDが示すノード1のIPアドレスと、通知された距離とを組としたショートカットパスのエントリーをキャッシュメモリ10に登録する(ステップS804)。
一方、キャッシュメモリ10に登録されたエントリーの優先度の中にリダイレクションメッセージに含まれる優先度より低いものが存在しない場合(ステップS803,No)、距離判定部14は、リダイレクションメッセージを廃棄して処理を終了する。すなわち、距離判定部14は、キャッシュ操作部12に通知を行わないため、リダイレクションメッセージを受信してもショートカットパスのエントリーはキャッシュメモリ10に登録されることはない。
以上説明したように、この実施の形態2においては、リダイレクション生成部11が、DHTによる転送によって自身が管理するID宛のデータパケットを受信した場合、データパケットに含まれる送信先のIDおよびこのIDが示すノード1のIPアドレス含むリダイレクションメッセージを生成して受信したデータパケットの送信元のノード1に送信し、キャッシュ管理部9は、リダイレクションメッセージに含まれる送信先のIDと自装置のIDとから装置間の距離を算出し、算出した距離が予め定められた距離閾値より遠い場合に、リダイレクションメッセージに含まれる送信先のIDおよびこのIDが示すノード1のIPアドレスをキャッシュメモリ10に登録するようにしているため、送信元と送信先との距離が予め定められた距離閾値よりも遠く、DHTによる転送ではホップ数が多くなり時間のかかるデータパケットを選択してショートカットパスをキャッシュメモリ10に登録することができ、効率的にキャッシュメモリ10を利用することができる。
また、この実施の形態2においては、リダイレクション生成部11が、DHTによる転送によって自身が管理するID宛のデータパケットを受信した場合、データパケットに含まれる送信先のIDおよびこのIDが示すノード1のIPアドレス含むリダイレクションメッセージを生成して受信したデータパケットの送信元のノード1に送信し、キャッシュ管理部9は、リダイレクションメッセージに含まれる送信先のIDと自装置のIDとから装置間の距離を算出し、キャッシュメモリ10に登録されているショートカットパスに関する情報の数が予め定められたエントリー数閾値以下の場合には算出した距離に依存することなくリダイレクションメッセージに含まれる送信先のIDおよびこのIDが示す分散型データ処理装置のIPアドレスをキャッシュメモリ10に登録し、キャッシュメモリ10に登録されているショートカットパスに関する情報の数が予め定められたエントリー数閾値より多い場合には、算出した距離が予め定められた距離閾値より遠い場合のみ、リダイレクションメッセージに含まれる送信先のIDおよびこのIDが示す分散型データ処理装置のIPアドレスをキャッシュメモリ10に登録するようにしているため、キャッシュメモリ10に余裕がある場合には距離に依存することなくショートカットパスを用いた転送を行い、キャッシュメモリ10に余裕がない場合には、送信元と送信先との距離が予め定められた距離閾値よりも遠く、DHTによる転送ではホップ数が多くなり転送に時間のかかるデータパケットを選択してショートカットパスをキャッシュメモリ10に登録することができ、効率的にキャッシュメモリ10を利用することができる。
さらに、この実施の形態2においては、リダイレクション生成部11が、DHTによる転送によって自身が管理するID宛のデータパケットを受信した場合、データパケットに含まれる送信先のIDおよびこのIDが示すノード1のIPアドレス含むリダイレクションメッセージを生成して受信したデータパケットの送信元のノード1に送信し、キャッシュ管理部9は、リダイレクションメッセージに含まれる送信先のIDと自装置のIDとから装置間の距離を算出し、キャッシュメモリ10の登録領域に空きがある場合には算出した距離に依存することなく、リダイレクションメッセージに含まれる送信先のIDおよびこのIDが示す分散型データ処理装置のIPアドレスと算出した距離とをキャッシュメモリ10に登録し、キャッシュメモリ10の登録領域に空きがない場合には、キャッシュメモリ10に登録された距離の中で算出した距離よりも近いものを選択し、選択した距離に対応付けられたIDおよびIPアドレスをキャッシュメモリ10から削除してリダイレクションメッセージに含まれる送信先のIDおよびこのIDが示す分散型データ処理装置のIPアドレスと算出した距離とをキャッシュメモリ10に登録するようにしているため、送信元と送信先との距離が遠く、DHTによる転送ではホップ数が多くなり転送に時間の係るデータパケットを優先してショートカットパスをキャッシュメモリ10に登録することができ、効率的にキャッシュメモリ10を利用することができる。
なお、この実施の形態2においては、自ノードのID値と送信先のID値と差を距離として用いるようにしたが、実際のパケットの転送時間を距離として用いるようにしてもよい。この場合、送信元のノード1のDHT基本処理部5がパケット内に送信時刻を含めておき、送信先のノード1のDHT基本処理部5がDHTによるパケットを受信した時刻と当該パケット内の送信時刻からパケットの転送時間を算出する。そして、送信先のノード1のリダイレクション生成部11がリダイレクションメッセージに転送時間を含める。送信元のノード1の距離判定部14は、リダイレクションメッセージに含まれる転送時間が長いほど送信先のノード1との距離が遠いと認識して登録処理の判定を行なう。
実施の形態3.
図12および図13を用いてこの発明の実施の形態3を説明する。Chord方式のネットワークシステムでは、新たなノードがネットワークシステムに参加する場合、新規参加したノードは、新規参加したノードのsuccessorノードのローカル管理データ6に登録されているキーやデータなどの情報の一部、すなわち新規参加したノードが管理することになるIDに関する情報を新規参加したノードのsuccessorノードから引き継ぐ。また、ネットワークシステムから離脱する場合は、離脱するノードのsuccessorノードが、離脱するノード(離脱するノードのsuccessorノードからみてpredecessorノード)のローカル管理データ6に登録されているキーやデータなどの情報をコピーして引き継ぐことで、ノードが離脱しても通信を継続可能としている。
しかしながら、送信元のノード1のキャッシュメモリ10に登録されたショートカットパスのエントリーを更新していないため以下の問題が生じる。新たにノード1が分散型データ処理システムに参加した場合、新規参加したノード1に引き継がれたID宛のパケットは、ショートカットパスで転送すると本当の目的のノード(新規参加したノード1)のsuccessor宛になる。パケットがsuccessorノードに到着すると、自ノード1はそのIDを管理していないのでfingerテーブル8による転送(DHTによる転送)を開始する。しかし、目的のノード1は自分のpredecessorノードであり、また転送は時計回りに行われるので、転送としては最も遠いノードになり、送信元からショートカットパスを使うより単純にDHT転送した方が、パケットの転送数が少なくなる。すなわち、システムに新たなノード1が参加した場合、ショートカットパスを用いた転送を行うとDHTによる転送よりも時間がかかってしまう場合があるという問題が生じる。また、システムからノード1が離脱し場合、ショートカットパスとして登録した宛先のノード1がなくなることになり、パケットがルータによって廃棄されてしまうという問題が生じる。
このような問題を改善するために、この実施の形態3では、ノード1の参加および離脱時にキャッシュメモリ10に登録されたショートカットパスのエントリーを更新するものである。図12は、この発明における分散型データ処理装置であるノード1の実施の形態3の構成を示すブロック図である。図12に示したこの実施の形態3のノード1は、先の図1に示した実施の形態1のノード1のDHT処理部3に、システム内のノードの参加および離脱によって自ノードのローカル管理データ6に新たな情報を登録した場合に他のノードにキャッシュメモリ10の登録内容の更新を要求するキャッシュ更新要求部15が追加されている。先の図1に示した実施の形態1のノード1と同じ機能を持つ構成部分には同一符号を付し、重複する説明は省略する。
つぎに、この実施の形態3のノード1のキャッシュ更新処理に関する動作について説明する。ノードの新規参加または離脱によってローカル管理データ6に登録されているキーやデータなどの情報が変更されたノード1(以下、要求元ノード1とする)のキャッシュ更新要求部15は、送信先のIDとそのIDを管理しているノード1のIPアドレスを含むキャッシュ更新要求メッセージを生成する。要求元ノード1のキャッシュ更新要求部15は、下位レイヤ処理部2を介してブロードキャストによって生成したキャッシュ更新要求メッセージを送信する。
ブロードキャストによる送信は、単純に自ノードのSUCCESSORノードに対してキャッシュ更新要求メッセージを送信して円周に沿って転送する方法であってもよいし、図13に示すように、システム内にノード1−1〜1−9が存在する場合、要求元ノードであるノード1−1がノード1ー1,1−2にキャッシュ更新要求メッセージを送信し、ノード1ー2がノード1−4,1−5にキャッシュ更新要求メッセージを転送し、ノード1−3がノード1−6,107にキャッシュ更新要求メッセージを転送し、ノード1−6がノード1−8,1−9にキャッシュ更新要求メッセージを転送するというように、ブロードキャストツリーを生成して転送する方法であってもよい。
キャッシュ更新要求メッセージを受信したノード1のキャッシュ管理部9は、キャッシュ更新要求メッセージに含まれる送信先のIDとこのIDを管理しているノード1のIPアドレスとを抽出する。そして、キャッシュ操作部12を介して、抽出した送信先のIDがキャッシュメモリ10に登録されているか否かを判定する。抽出した送信先のIDがキャッシュメモリ10に登録されている場合、キャッシュ管理部9はキャッシュ操作部12を介して、抽出した送信先のIDに対応付けてキャッシュメモリ10に登録されているIPアドレスを、キャッシュ更新要求メッセージから抽出したIPアドレスに書き換える。
以上説明したように、この実施の形態3においては、キャッシュ更新要求部15は、自身が管理するIDが変更された場合、送信先のIDとこのIDを管理するノード1のIPアドレスを含むキャッシュ更新メッセージをシステム内の全てのノード1に送信し、キャッシュ管理部9は、受信したキャッシュ更新メッセージに含まれるIDが自身のキャッシュメモリ10に登録されている場合、当該IDに対応付けられているIPアドレスをキャッシュ要求メッセージに含まれるIPアドレスに変更するようにしているため、ノード1の参加・離脱によって送信先が変更になる場合も、キャッシュメモリ10に設定されたショートカットパスの情報を更新してショートカットパスによる転送を継続することができる。
なお、この実施の形態3においては、ブロードキャストによってキャッシュメモリ10更新要求メッセージを送信するようにしたが、送信先のノード1が、ショートカットパスを用いた送信元のIDとこのIDが示すノード1のIPアドレス(送信元のIPアドレス)を記憶しておき、ショートカットパスの送信元のみにキャッシュ更新要求メッセージを送信するようにしてもよい。これにより、キャッシュメモリ10の更新すべきノード1のみにキャッシュ更新メッセージを送信することになり、ネットワークの帯域消費を抑制し、システムのスループットの低下を抑制する事ができる。
また、この実施の形態3においては、先の図1に示した実施の形態1のノード1のDHT処理部3にキャッシュ更新要求部15を追加した構成としたが、先の図8に示した実施の形態2のノード1のDHT処理部3にキャッシュ更新要求部15を追加した構成であってもかまわない。
実施の形態4.
図14を用いてこの発明の実施の形態4を説明する。図14は、この発明の実施の形態4のノード1の構成を示すブロック図である。図14に示したこの実施の形態4のノード1は、先の図12に示した実施の形態3のノード1のDHT処理部3に、ショートカットパケット転送部16が追加されている。先の図12に示した実施の形態3のノード1と同じ機能を持つ構成部分には同一符号を付し、重複する説明は省略する。
ショートカットパケット転送部16は、ショートカットパスによって転送されたパケットの宛先のID値の管理が自ノードから新規参加したノード1に移行した場合に、当該パケットをIDの管理を移行したノード1に転送する処理を行なう。その際に、ショートカットパケット転送部16は、fingerテーブル8を用いたDHTによる転送ではなく、直接移行したノード1にパケットを転送する。
つぎに、この実施の形態4のノード1のショートカットパケット転送に関する動作を説明する。DHT基本処理部5は、受信したデータパケットがショートカットパスを用いて転送されたデータパケットである場合、ローカル管理データ6に登録されている情報に基づいて、受信したデータパケットに含まれる送信先のIDが自身が管理するIDであるか否かを判定する。受信したデータパケットに含まれる送信先のIDが自身が管理するIDではない場合、DHT基本処理部5は、受信したデータパケットに含まれる送信先のIDは、新規参加したノード1に管理を移行したと認識して、自身が管理するID宛ではないパケットをショートカットパスを用いた転送によって受信したことをショートカットパケット転送部16に通知する。また、DHT基本処理部5は、キャッシュ更新要求部15にキャッシュ更新要求メッセージを生成させる。新規参加したノード1、すなわちIDの管理を移行したノード1が、自身のpredecessorノードである場合、ショートカットパケット転送部16は、受信したパケットを自身のpredecessorノードに転送する。
なお、自身が管理していないID宛のパケットがショートカットパスによって転送されてくるのは、新たなノード1がシステムに参加してローカル管理データ6に格納される情報が更新されてから、キャッシュ更新要求メッセージによって当該ノード1のキャッシュメモリ10のエントリーの内容が更新されるまでの間である。よって、ショートカットパケット転送部16は、新たなノード1がシステムに参加してから(ローカル管理データ6に格納されている情報が更新されてから)所定の時間の間だけ、ショートカットパスによる転送によって自身が管理していないID宛のデータパケットを受信した場合に、受信したデータパケットを自身のpredecessorノードに転送するようにしてもよい。この場合、所定の時間は、新たなノード1がシステムに参加してローカル管理データ6に格納される情報が更新されてから、キャッシュ更新要求メッセージによって当該ノード1のキャッシュメモリ10のエントリーの内容が更新されるまでに十分な時間とすればよい。
以上説明したように、この実施の形態4においては、ショートカットパケット転送部16が、自身が管理するIDを他のノード1に移行した後に移行したID宛のデータパケットをショートカットパスによる転送で受信した場合、受信したデータパケットをIDを移行したノードに直接送信するようにしているため、ノード1の参加・離脱によって送信先が変更になる場合も、ショートカットパスを用いた転送を継続することができる。
実施の形態5.
図15を参照してこの発明の実施の形態5を説明する。先の実施の形態1〜4のノード1を用いた分散型データ処理システムでは、fingerテーブル8を用いたDHTによる転送から、キャッシュメモリ10を用いたショートカットパスを用いた転送に切り替わるまでに時差がある。具体的には、先の図2に示したノード1aが送信した1つ目のパケットは、DHTによる転送によってノード1b、ノード1cを介してノード1dに到達する。ノード1dは、1つ目のパケットを受信してリダイレクションメッセージを生成してノード1aに送信し、ノード1aはリダイレクションメッセージを受信してキャッシュメモリ10にショートカットパスのエントリーを登録した後に発生したパケットからショートカットパスによって直接ノード1dに送信する。そのため、ノード1aが1つめのデータパケットを送信してからショートカットパスを設定するまでの間に発生したノード1dへのデータパケットは、DHTによる転送によって送信されている。DHTによる転送は、ノード1b,1cを介して行われるため、直接ノード1dに転送するショートカットパスによる転送よりも転送時間が長くなる。そのため、ショートカットパスによる転送への切替時には、ノード1dに到達するパケットの順序逆転が発生することがある。
このような問題を改善するために、この実施の形態5では、図15に示すように、先の図1に示した実施の形態1のノード1のDHT処理部3に、パケットの順番を並べ替えるパケット並べ替え部17を追加したものである。なお、先の図1に示した実施の形態1のノード1と同じ機能を備える構成部分には同一符号を付し、重複する説明は省略する。
つぎに、この実施の形態5のパケット並べ替え処理に関する動作について説明する。受信したパケットに含まれるデータの宛先IDが自身が管理するID値である場合、DHT基本処理部5は、受信したパケットをパケット並べ替え部17に出力する。パケット並べ替え部17は、入力されたパケットのシーケンス番号(SN)を抽出し、抽出したシーケンス番号順にパケットを並べ替える。そして、シーケンス番号順にパケットを上位レイヤ処理部4に出力する。ここで、シーケンス番号に抜けがある場合には、抜けているシーケンス番号のパケットが到着した後に、シーケンス番号順にパケットを上位レイヤ処理部4に出力する。
以上説明したように、この実施の形態5においては、パケット並べ替え部17が、データパケットの順番を示すシーケンス番号(SN)に基づいてデータパケットを並べ替えて上位レイヤ処理部4に出力するようにしているため、DHTによる転送からショートカットパスによる転送への切替時に発生するパケットの順序逆転を上位レイヤに対して隠蔽することが可能となり、トランスポート層にTCPを使用している場合、順序逆転により輻輳回避の制御を防止することができ、システムのスループットの低下を防止することができる。
なお、この実施の形態5においては、通常パケットに含まれているシーケンス番号を利用してパケットを並べ替えて上位レイヤ処理部4に対してショートカットパスへの切替によるパケットの順序逆転を隠蔽するようにしたが、パケットの順序逆転の識別は、シーケンス番号によるものでなくてもかまわない。たとえば、送信元のノード1のDHT基本処理部5が、キャッシュメモリ10にショートカットパスのエントリーを登録してショートカットパスを設定してから最初に送信するパケットを、ショートカットパスではなくDHTによる転送で送信し、このパケットがDHTによる転送の最後のパケットであることを示す情報をパケット内に含めておく。具体的には、パケットの所定の位置にDHT転送終了フラグを設けておき、送信元のノード1のDHT基本処理部5は、DHT転送終了フラグをONにして送信する。このDHT転送終了フラグをONにしたパケットをDHTによって転送した後のパケットから、送信元のノード1のDHT基本処理部5は、ショートカットパスによってパケットを送信する。
上述したように、DHTによってパケットを転送する際にはショートカットパスフラグはOFFであり、ショートカットパスによってパケットを転送する際にはショートカットパスフラグはONになっている。また、DHT転送終了フラグは、DHTによって転送される最後のパケットのみONであり、その他のパケットではDHT転送終了フラグはOFFになっている。送信先のノード1のパケット並べ替え部17は、ショートカットパスフラグおよびDHT転送終了フラグに基づいてパケットの順序逆転を識別する。具体的には、ショートカットパスフラグがONのパケットを受けた際に、ショートカットパスフラグがOFFであって、かつDHT転送終了フラグがONのパケットを受けていない場合、ショートカットパスフラグがONのパケットより前のパケットが存在しておりパケットの順序逆転が発生したと認識する。そして、ショートカットパスフラグがOFFであってかつDHT転送終了フラグがOFFのパケット、またはショートカットパスフラグがOFFであってかつDHT転送終了フラグがONのパケットを受信した順に上位レイヤ処理部4に出力し、ショートカットパスフラグがOFFであってかつDHT転送終了フラグがONのパケットの後に受信した順番にショートカットパスフラグがONのパケットを上位レイヤ処理部4に出力する。
なお、この実施の形態5では、先の図1に示した実施の形態1のノード1のDHT処理部3にパケット並べ替え部17を追加した構成としたが、先の図8に示した実施の形態2のノード1のDHT処理部3、先の図12に示した実施の形態3のノード1のDHT処理部3、先の図14に示した実施の形態4のノード1のDHT処理部3にパケット並べ替え部17を追加した構成であってもかまわない。
実施の形態6.
図16を用いてこの発明の実施の形態6を説明する。先の実施の形態5では、DHTによる転送からショートカットパスによる転送への切替によって生じるパケットの順序逆転を送信先ノード(受信側)において回避するようにしたが、この実施の形態6では、送信元ノード(送信側)において回避するものである。
図16は、この発明における実施の形態6のノード1の構成を示すブロック図である。図16に示したこの実施の形態6のノード1は、先の図1に示した実施の形態1のノード1のDHT処理部3に、ショートカットパスによってデータパケットを転送する際に所定の遅延を付加する遅延挿入部18が追加されている。先の図1に示した実施の形態1のノード1と同じ機能を持つ構成部分には同一符号を付し、重複する説明は省略する。
つぎに、この実施の形態6のノード1が、fingerテーブル8を用いたDHTによる転送からショートカットパスによる転送に切り替える際にパケットに遅延を付加する動作について説明する。DHT基本処理部5は、DHTによる転送からショートカットパスによる転送に切り替える旨を遅延挿入部18に通知する。遅延挿入部18は、通知を受けると予め定められた遅延付加時間の計測を開始する。なお、遅延付加時間は、DHTによる転送によってデータパケットを送信した際に送信先のノード1に送信したデータパケットが到達するまでの時間以上とする。遅延挿入部18は、データパケットのショートカットパスフラグに基づいて、遅延付加時間の計測中にDHT基本処理部5から入力されたデータパケットが、ショートカットパスによって転送するデータパケットであるか否かを判定する。
遅延付加時間の計測中にDHT基本処理部5から入力されたパケットが、ショートカットパスによって転送するデータパケットである場合、遅延挿入部18は、入力されたデータパケットを保持する。遅延付加時間の計測が終了すると、遅延挿入部18は、保持していたデータパケットをDHT基本処理部5から入力された順番に下位レイヤ処理部2に出力し、下位レイヤ処理部2は、ネットワーク20にパケットを送信する。一方、遅延付加時間の計測中にDHT基本処理部5から入力されたデータパケットが、ショートカットパスによって転送するデータパケットではない場合、すなわちDHTによって転送するデータパケットの場合、遅延挿入部18は、入力されたデータパケットを保持することなく直ちに下位レイヤ処理部2に出力し、下位レイヤ処理部2はネットワーク20にパケットを送信する。
以上説明したように、この実施の形態6においては、遅延挿入部18が、DHTによる転送からショートカットパスによる転送にデータパケットの転送が変更される際に、ショートカットパスによる転送のデータパケットを予め定められた時間だけ遅延させて送信するようにしているため、DHTによる転送からショートカットパスによる転送に切り替えた場合でも、送信先のノードには送信順にデータパケットが到達することを可能とし、トランスポート層にTCPを使用している場合、順序逆転により輻輳回避の制御を防止することができ、システムのスループットの低下を防止することができる。
なお、この実施の形態6においては、先の図1に示した実施の形態1のノード1のDHT処理部3に遅延挿入部18を追加した構成としたが、先の図8に示した実施の形態2のノード1のDHT処理部3、先の図12に示した実施の形態3のノード1のDHT処理部3、先の図14に示した実施の形態4のノード1のDHT処理部3に遅延挿入部18を追加した構成であってもかまわない。
実施の形態7.
図17および図18を用いてこの発明の実施の形態7を説明する。先の実施の形態1〜6では、送信先のノード1がリダイレクションメッセージを送信元のノード1に送信することでショートカットパスを設定するようにした。しかしながら、リダイレクションメッセージの数が多くなるとリダイレクションメッセージによってネットワークの帯域が消費されてしまい、システムのスループットが低下してしまうという問題が生じる。このような問題を改善するために、この実施の形態7では、リダイレクションメッセージを用いることなくショートカットパスを設定するものである。
図17は、この発明における実施の形態7のノード1の構成を示すブロック図である。図17に示したこの実施の形態7のノード1は、先の図1に示した実施の形態1のノード1のDHT処理部3のリダイレクション生成部11の代わりに、自身が管理するID宛のパケットに基づいてショートカットパスを設定するショートカットパス学習部19を備えている。なお、先の図1に示した実施の形態1のノード1と同じ機能を持つ構成部分には同一符号を付し、重複する説明を省略する。
つぎに、図18のフローチャートを参照して、この実施の形態7のノード1の動作について説明する。なお、この実施の形態7のノード1の送信処理の動作は、先の図3のフローチャートを参照して説明した実施の形態1のノードの送信処理の動作と同じであるので、ここではショートカットパスの設定に関する受信処理の動作のみを説明する。
下位レイヤ処理部2を介してネットワーク20からパケットを受信すると(ステップS900)、DHT基本処理部5は、受信したデータパケットに含まれるデータの宛先が自身が管理するID宛であるか否かを判定する(ステップS901)。受信したデータパケットに含まれるデータの宛先が自身が管理するID宛ではない場合(ステップS901,No)、DHT基本処理部5は、fingerテーブル8を検索して宛先アドレスを選択し、選択した宛先アドレスにデータを送信する(ステップS902)。受信したデータパケットに含まれるデータの宛先IDが自身が管理するID宛である場合(ステップS901,Yes)、DHT基本処理部5は、ローカル管理データ6に基づいてデータ処理を行なうとともに、受信したパケットをショートカットパス学習部19に出力する。
ショートカットパス学習部19は、データパケットの送信元のノード1とのショートカットパスが登録済みであるか否かを判定する(ステップS903)。具体的には、ショートカットパス学習部19は、データパケットから送信元のIDおよび送信元のノード1のIPアドレスを抽出する。ショートカットパス学習部19は、キャッシュ操作部12を介してキャッシュメモリ10に登録されているショートカットパスのエントリ(IDとIPアドレスの組)の中から抽出したIDとIPアドレスの組を検出し、検出できた場合にはデータパケットの送信元のノード1とのショートカットパスが登録済みであると判定し、検出できなかった場合にはデータパケットの送信元のノード1とのショートカットパスが未登録であると判定する。
ショートカットパス学習部19は、登録済みであると判定した場合には処理を終了し、未登録であると判定し場合には、登録処理を実行する(ステップS904)。なお、登録処理は、先の図5〜図7のフローチャートを参照して実施の形態1で説明した登録処理の動作と同じであるので、ここではその説明を省略する。
このように、この実施の形態7では、データパケットの送信元ではなく、送信先にショートカットパスを設定するが、一般的に通信は双方向で行われる。よって、データパケットの送信先にショートカットパスを設定しても、双方向通信としてみた場合先の実施の形態1〜6と同様にデータパケットを高速に転送することが可能となる。
以上説明したように、この実施の形態7においては、ショートカットパス学習部19が、DHTによる転送によって自身が管理するID宛のデータパケットを受信した場合、データパケットに含まれる送信先のIDおよびこのIDが示すノード1のIPアドレスをキャッシュメモリ10に登録するようにしているため、ショートカットパスを設定するためにメッセージを送信する必要が無くなり、ショートカットパスの設定のためにシステムのスループットが低下することを防止することができる。
なお、先の図8に示した実施の形態2のノード1のDHT処理部3、先の図12に示した実施の形態3のノード1のDHT処理部3、先の図14に示した実施の形態4のノード1のDHT処理部3、先の図15に示した実施の形態5のノード1のDHT処理部3、先の図16に示した実施の形態6のノード1のDHT処理部3のリダイレクション生成部11の代わりに、この実施の形態7のショートカットパス学習部19を備えるようにしてもよい。