JP2011010288A - 分散保存システム、分散保存システムの接続情報通知方法及びプログラム - Google Patents

分散保存システム、分散保存システムの接続情報通知方法及びプログラム Download PDF

Info

Publication number
JP2011010288A
JP2011010288A JP2010122095A JP2010122095A JP2011010288A JP 2011010288 A JP2011010288 A JP 2011010288A JP 2010122095 A JP2010122095 A JP 2010122095A JP 2010122095 A JP2010122095 A JP 2010122095A JP 2011010288 A JP2011010288 A JP 2011010288A
Authority
JP
Japan
Prior art keywords
node
content
message
connection information
information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2010122095A
Other languages
English (en)
Other versions
JP5370269B2 (ja
Inventor
Hideki Matsuo
英輝 松尾
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Brother Industries Ltd
Original Assignee
Brother Industries Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Brother Industries Ltd filed Critical Brother Industries Ltd
Priority to JP2010122095A priority Critical patent/JP5370269B2/ja
Publication of JP2011010288A publication Critical patent/JP2011010288A/ja
Application granted granted Critical
Publication of JP5370269B2 publication Critical patent/JP5370269B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • H04L45/04Interdomain routing, e.g. hierarchical routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1061Peer-to-peer [P2P] networks using node-based peer discovery mechanisms
    • H04L67/1065Discovery involving distributed pre-established resource-based relationships among peers, e.g. based on distributed hash tables [DHT] 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1044Group management mechanisms 
    • H04L67/1053Group management mechanisms  with pre-configuration of logical or physical connections with a determined number of other peers

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Transfer Between Computers (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)

Abstract

【課題】
本発明の目的は、ヒントサーバへの処理負荷が集中し、ヒントサーバの処理負荷を低減させることが可能な通信経路方法を提供することである。
【解決手段】
各ノードNn間を転送するメッセージは、メッセージ送信元のノードIDと、メッセージの内容と、送信元または転送元のノード情報とを含む。メッセージ送信元のノードIDは、メッセージを送信した送信元のノードNnのノードIDである。メッセージの内容は、メッセージの目的を表す「参加(JOIN)」、「パブリッシュ」、「クエリ」等である。ノード情報は、送信元または転送元のノードNnのノードIDと、IPアドレスまたはポート番号と、装置群情報とを含んで構成される。
【選択図】図5

Description

本発明は、ネットワークを介して互いに通信可能な複数のノード装置を備えたピアツーピア(Peer to Peer(P2P))型の通信システムに関する。具体的には、通信負荷の少ない通信経路のコンテンツホルダからコンテンツを取得する方法に関する。
この種のピアツーピア型の通信システムは、複数のノード装置により構成される。各種コンテンツのコンテンツデータは、複数のコンテンツデータの複製データ(以下、「レプリカ」という)として複数のノード装置に分散して保存される。コンテンツデータは、映画及び音楽などのコンテンツデータである。一般的には、各ノード装置間でレプリカを利用可能とした分散保存システムが知られている。これにより、対故障性やアクセスの分散性が高められている。このように分散保存されたレプリカの所在は、例えば特許文献1に開示されるような分散ハッシュテーブル(以下、DHT(Distributed Hash Table)という)を利用して効率良く検索可能になっている。
そして、上述のノード装置は、所望のコンテンツを取得するとき、当該コンテンツデータのレプリカの所在を検索するためのメッセージ(クエリ)が他のノード装置へ送出される。これにより、当該メッセージは、上記DHTにしたがって、当該コンテンツデータのレプリカの所在の管理元のノード装置に向かって転送される。そして、上記メッセージを送出したノード装置は、上記管理元のノード装置から上記レプリカの所在を示す情報を取得することになる。これにより、上記メッセージを送出したノード装置は、上記検索に係るコンテンツデータのレプリカを保存しているノード装置にアクセスすることができる。そして、当該レプリカを取得(ダウンロード)することができる。通信負荷の少ない通信経路を選択するために、コンテンツホルダが所属しているAS(Autonomous System)番号が用いられている。AS番号は、インターネット内にある複数の組織が運用するネットワークを識別するための番号である。また、ホップ数を用いて経路選択をするものもある。
特開2006−197400号公報 特開2006−277338号公報
しかしながら、ホップ数を測定しようとしても必ずしもルータが応答するとは限らない。また、AS番号を用いて、通信経路を決定しようとしても、AS番号は全ての管理者に割り当てられているとは限らない。そのため従来では、すべてのノード装置間の通信負荷を判定するために、インターネットのトポロジー情報を記憶したヒントサーバ(トラッカー)が用いられてきた。しかしながら、コンテンツを取得するたびにヒントサーバにアクセスしているのでは、ヒントサーバへの処理負荷が集中し、ヒントサーバの処理負荷が大きかった。
本発明は、上述した問題点を解決するためになされたものである。本発明の目的は、ヒントサーバへの処理負荷が集中し、ヒントサーバの処理負荷を低減させることが可能な通信経路方法を提供することである。
請求項1に記載の発明によれば、複数の異なるネットワーク間を接続する少なくとも1つ以上の通信機器から構成される上位装置群、または、前記上位装置群の下位に位置し、且つ、前記上位装置群を介して前記複数の異なるネットワークに接続可能な1つ以上の前記通信機器から構成される下位装置群を少なくとも介して前記ネットワークと接続される複数のノード装置から構成され、前記複数のノード装置により複数のコンテンツを分散して保存する分散保存システムであり、前記分散保存システムは、ネットワークを介して接続される複数の前記上位装置群と、複数の前記下位装置群との接続関係情報を記憶する第1記憶部を備える第1ノード装置と、前記複数のノード装置夫々の所在を示す所在情報に基づいて、前記ノード装置の接続先である前記上位装置群または前記下位装置群を示す第1接続情報を、前記第1ノード装置から取得する取得部と、前記取得部により取得された前記第1接続情報を、前記分散保存システムを構成する前記複数のノード装置のいずれかに送信する送信部と、を備える第2ノード装置と、を含む複数のノード装置から構成されることを特徴とするコンテンツ分散保存システムである。
請求項2に記載の発明によれば、前記分散保存システムは、前記複数のノード装置から要求されるコンテンツを保存する少なくとも1つのコンテンツ保持ノードが接続する前記上位装置群または前記下位装置群を示す第2接続情報と、前記コンテンツ保持ノードの所在を示す所在情報とを記憶する第2記憶部と、前記送信部により送信された前記第1接続情報を受信する受信部と、を備える第3ノード装置と、前記コンテンツ保持ノードと、を更に含む前記複数のノード装置から構成され、前記第2ノード装置は、所望のコンテンツを要求するコンテンツ要求部と、前記コンテンツ要求部により要求されたコンテンツを取得するコンテンツ取得部と、を備え、前記第2のノード装置、または、前記第3ノード装置は、前記第2記憶部に記憶された前記コンテンツ保持ノードの中から、前記第2ノード装置の前記第1接続情報に基づいて、通信負荷が小さい第2接続情報を有する前記コンテンツ保持ノードを決定する決定部を備え、前記コンテンツ要求部が所望のコンテンツを要求するとともに、前記送信部は前記第2ノード装置の前記第1接続情報を送信し、前記コンテンツ取得部は、前記決定部が決定したコンテンツ保持ノードから、前記コンテンツを取得することを特徴とする。
請求項3に記載の発明によれば、前記コンテンツ保持ノードは、前記コンテンツ保持ノードの前記所在情報に基づいて、前記第1ノード装置から前記コンテンツ保持ノードの前記第2接続情報を取得する第2接続情報取得部と、前記コンテンツ保持ノードが所定のコンテンツを記憶したとき、前記コンテンツ保持ノードが前記コンテンツを記憶したことを示すパブリッシュメッセージとともに、前記コンテンツ保持ノードの前記第2接続情報を前記第3ノード装置へ送信する第2送信部と、を備え、前記第3ノード装置の前記受信部は、前記第2送信部により送信された前記第2接続情報を受信し、前記第2記憶部は、前記第2送信部により送信された前記第2接続情報を記憶することを特徴とする。
請求項4に記載の発明によれば、前記複数のノード装置夫々は、所定の要求を処理する内容を含むメッセージを送信可能なノード装置の前記所在情報を含むルーティングテーブルを記憶するテーブル記憶部と、前記ルーティングテーブルに記載された前記所在情報に従って、所定の要求を処理するメッセージを送信するとともに、前記メッセージを送信したノード装置の前記所在情報と、前記メッセージを送信したノード装置の前記第1接続情報または前記第2接続情報とを送信するメッセージ送信部と、前記メッセージ送信部により送信された前記メッセージを受信するメッセージ受信部と、前記メッセージ受信部がメッセージを受信するとき、前記テーブル記憶部に前記ノード装置の所在情報と対応付けて前記第1接続情報または前記第2接続情報を記憶させる記憶制御部と、を備えることを特徴とする。
請求項5に記載の発明によれば、前記テーブル記憶部に記憶される前記ルーティングテーブルは、前記複数のノード装置の一部のノード装置の前記所在情報と、前記所在情報に対応する前記第1接続情報または前記第2接続情報とを記憶し、前記メッセージ受信部が受信した前記所在情報が、前記ルーティングテーブル記憶部に記憶可能か否かを判定するテーブル判定部と、前記テーブル判定部が、前記メッセージ受信部が受信した前記所在情報を、前記ルーティングテーブルに記憶可能であると判定したとき、前記テーブル記憶部を備える前記ノード装置の前記第2接続情報に基づいて、前記メッセージ受信部が受信した前記第1接続情報または前記第2接続情報に対応するノード装置と、前記ルーティングテーブルに既に記憶された前記第1接続情報または前記第2接続情報に対応するノード装置との中から通信負荷が小さいノード装置を決定するノード装置決定部と、前記記憶制御部は、前記ノード装置決定部により決定されたノード装置の前記所在情報と、前記所在情報に対応する前記第1接続情報または前記第2接続情報を前記ルーティングテーブルに優先的に記憶することを特徴とする。
請求項6に記載の発明によれば、前記メッセージ送信部は、前記分散保存システムに参加するための参加メッセージを送信するとともに、前記メッセージを送信したノード装置の前記所在情報と、前記参加メッセージの送信先のノード装置の前記第1接続情報または前記第2接続情報とを送信し、前記メッセージ受信部は、前記メッセージ送信部により送信された前記参加メッセージを受信し、前記メッセージ受信部が前記参加メッセージを受信するとき、前記記憶制御部は、前記ノード装置の所在情報と対応付けて前記第1接続情報または前記第2接続情報を前記テーブル記憶部に記憶させることを特徴とする。
請求項7に記載の発明によれば、前記決定部は、前記第3ノード装置の前記第2記憶部に記憶された前記コンテンツ保持ノードの中から、前記第2ノード装置における前記第1接続情報の前記下位装置群と一致する前記下位装置群を有する前記コンテンツ保持ノードがあるか否かを判定する第1判定部を備え前記第1判定部により、一致するコンテンツ保持ノードがあると判定されたとき、前記コンテンツ取得部は、前記第1判定部により一致すると判定されたコンテンツ保持ノードから、前記コンテンツを取得することを特徴とする。
請求項8に記載の発明によれば、前記決定部は、前記第1判定部により、一致すると判定されたコンテンツ保持ノードがないと判定されたとき、前記第2ノード装置における前記第1接続情報の前記上位装置群と一致する前記コンテンツ保持ノードがあるか否かを判定する第2判定部を備え、前記第2判定部により、一致するコンテンツ保持ノードがあると判定されたとき、前記コンテンツ取得部は、前記第2判定部により一致すると判定されたコンテンツ保持ノードから、前記コンテンツを取得することを特徴とする。
請求項9に記載の発明によれば、前記決定部は、前記第1判定部により、一致すると判定されたコンテンツ保持ノードがないと判定されたとき、前記第3ノード装置の前記第2記憶部に記憶された複数の保存先の中から、前記上位装置群と直接接続されるコンテンツ保持ノードがあるか否かを判定する第3判定部を備え、前記第3判定部が、前記上位装置群と直接接続されるコンテンツ保持ノードがあると判定したとき、前記コンテンツ取得部は、前記第3判定部により判定されたコンテンツ保持ノードから、前記コンテンツを取得することを特徴とする。
請求項10に記載の発明によれば、複数の異なるネットワーク間を接続する少なくとも1つ以上の通信機器から構成される上位装置群、または、前記上位装置群の下位に位置し、且つ、前記上位装置群を介して前記複数の異なるネットワークに接続可能な1つ以上の前記通信機器から構成される下位装置群を少なくとも介して前記ネットワークと接続される複数のノード装置から構成され、前記複数のノード装置により複数のコンテンツを分散
して保存する分散保存システムの前記複数のノード装置夫々の所在を示す所在情報に基づいて、前記ノード装置の接続先である前記上位装置群または前記下位装置群を示す第1接続情報の取得を、ネットワークを介して接続される複数の前記上位装置群と、複数の前記下位装置群との接続関係情報を記憶する第1記憶部を備える第1ノード装置から、前記第1接続情報を取得する取得ステップと、前記取得ステップにより取得された前記第1接続情報を、前記分散保存システムを構成する前記複数のノード装置のいずれかに送信する送信ステップと、を含むことを特徴とする分散保存システムの接続情報通知方法である。
請求項11に記載の発明によれば、複数の異なるネットワーク間を接続する少なくとも1つ以上の通信機器から構成される上位装置群、または、前記上位装置群の下位に位置し、且つ、前記上位装置群を介して前記複数の異なるネットワークに接続可能な1つ以上の前記通信機器から構成される下位装置群を少なくとも介して前記ネットワークと接続される複数のノード装置から構成され、前記複数のノード装置により複数のコンテンツを分散して保存する分散保存システムの前記複数のノード装置夫々の所在を示す所在情報に基づいて、前記ノード装置の接続先である前記上位装置群または前記下位装置群を示す第1接続情報の取得を、ネットワークを介して接続される複数の前記上位装置群と、複数の前記下位装置群との接続関係情報を記憶する第1記憶部を備える第1ノード装置から、前記第1接続情報を取得する取得ステップと、前記取得ステップにより取得された前記第1接続情報を、前記分散保存システムを構成する前記複数のノード装置のいずれかに送信する送信ステップと、をコンピュータに実現させるためのプログラムである。
請求項1に記載の発明によれば、送信部は、取得部により取得された第1接続情報を、分散保存システムを構成する複数のノード装置のいずれかに送信する。従って、各ノード装置は、各ノード装置自身の接続情報を他のノード装置に送信することで、接続情報が複数のノード装置に分散して保存される。この結果、コンテンツを取得するたびにヒントサーバにアクセスする必要がなくなる。ヒントサーバへの処理負荷が集中することなく、ヒントサーバの処理負荷を軽減することができる。
請求項2に記載の発明によれば、決定部は、第2記憶部に記憶されたコンテンツ保持ノードの中から、第2ノード装置の第1接続情報に基づいて、通信負荷が小さい第2接続情報を有するコンテンツ保持ノードを決定する。コンテンツ取得部は、決定部が決定したコンテンツ保持ノードから、コンテンツを取得する。この結果、コンテンツを要求した第2ノード装置は、通信負荷の少ないコンテンツ保持ノードからコンテンツを取得することができるため、コンテンツ取得の通信負荷を軽減することができる。
請求項3に記載の発明によれば、第2送信部は、コンテンツ保持ノードが所定のコンテンツを記憶したとき、コンテンツ保持ノードがコンテンツを記憶したことを示すパブリッシュメッセージとともに、コンテンツ保持ノードの第2接続情報を第3ノード装置へ送信する。従って、コンテンツを取得したノード装置は、ノードの所在情報と接続情報とを対応付けて他のノード装置へ送信する。そのため、他のノード装置は、コンテンツを保持するノード装置の所在情報だけでなく、接続情報も把握することができる。この結果、コンテンツを保持するノード装置からコンテンツを取得するとき、接続情報に基づいて、通信負荷の少ない通信経路を決定することができる。
請求項4に記載の発明によれば、メッセージ送信部は、ルーティングテーブルに記載された所在情報に従って、所定の要求を処理するメッセージを送信するとともに、メッセージを送信したノード装置の所在情報と、メッセージを送信したノード装置の第1接続情報または第2接続情報とを送信する。記憶制御部は、メッセージ受信部がメッセージを受信するとき、テーブル記憶部にノード装置の所在情報と対応付けて第1接続情報または第2
接続情報を記憶させる。この結果、ルーティングテーブルにノード装置の接続情報が記憶されることで、ルーティングテーブルに記載された接続情報に基づいて、通信負荷の少ない通信経路を決定することができる。
請求項5に記載の発明によれば、記憶制御部は、ノード装置決定部により決定されたノード装置の所在情報と、所在情報に対応する第1接続情報または第2接続情報をルーティングテーブルに優先的に記憶する。従って、ルーティングテーブルを記憶するノード装置から通信負荷の少ない通信経路であるノード装置のノード情報が、ルーティングテーブルに記憶される。この結果、種々のメッセージを送信する際、ルーティングテーブルに従って、自動で通信負荷の少ない通信経路を決定することができる。
請求項6に記載の発明によれば、メッセージ受信部が参加メッセージを受信するとき、記憶制御部は、ノード装置の所在情報と対応付けて第1接続情報または第2接続情報をテーブル記憶部に記憶させる。この結果、分散保存システムに参加したときから、ルーティングテーブルに記載された接続情報に基づいて、通信負荷の少ない通信経路を決定することができる。
請求項7に記載の発明によれば、第1判定部により、一致するコンテンツ保持ノードがあると判定されたとき、コンテンツ取得部は、第1判定部により一致すると判定されたコンテンツ保持ノードから、コンテンツを取得する。この結果、同じ下位装置群に所属する保存先からコンテンツを取得することができるため、経由する装置群の数を最小限にすることができる。
請求項8に記載の発明によれば、第2判定部により、一致するコンテンツ保持ノードがあると判定されたとき、コンテンツ取得部は、第2判定部により一致すると判定されたコンテンツ保持ノードから、コンテンツを取得する。この結果、同じ上位装置群に接続される保存先からコンテンツを取得することができるため、経由する装置群が、上位装置群を構成する通信機器内で抑えることができる。
請求項9に記載の発明によれば、第3判定部が、上位装置群と直接接続されるコンテンツ保持ノードがあると判定したとき、コンテンツ取得部は、第3判定部により判定されたコンテンツ保持ノードから、コンテンツを取得する。この結果、上位装置群と直接接続される保存先からコンテンツを取得することができるため、上位装置群の下位に位置する下位装置群を経由しなくてもよい。従って、経由する装置群の数を減らすことができる。
請求項10及び請求項11に記載の発明によれば、送信ステップは、取得ステップにより取得された第1接続情報を、分散保存システムを構成する複数のノード装置のいずれかに送信する。従って、各ノード装置は、各ノード装置自身の接続情報を他のノード装置に送信することで、接続情報が複数のノード装置に分散して保存される。この結果、コンテンツを取得するたびにヒントサーバにアクセスする必要がなくなる。ヒントサーバへの処理負荷が集中することなく、ヒントサーバの処理負荷を軽減することができる。
本実施形態のコンテンツ分散保存システムにおける各ノード装置Nnの接続態様の一例を示す図である。 一般的なインターネット等のネットワーク構造の具体例を示す説明図である。 ヒントサーバ17に記憶されるトポロジー情報の概念図である。 、図3に示すノード装置21aが記憶する装置群情報の一例を示す概念図である。 ノードN2が保持するルーティングテーブルの一例を示す概念図である。 DHTのID空間の一例を示す概念図である。 コンテンツ分散保存システムSへの参加時におけるルーティングテーブルの生成手順の一例を示す概念図である。 各ノードNn間を転送するメッセージの様子を示す概念図である。 ノードN2が保持するインデックスキャッシュの一例を示す図である。 ルートノードに記憶される保持ノード22a〜22eのインデックスキャッシュにおける装置群情報の詳細を示す概念図である。 ノード装置Nnの電気的構成を示す概念図である。 ノード装置Nnのメイン処理動作を示すフローチャートである。 メッセージ受信処理プログラムに従うノード装置Nnのメッセージ受信処理を実行するフローチャートである。 保持ノード距離決定処理プログラムに従うノード装置Nnの保持ノード距離判断処理を実行するフローチャートである。 コンテンツ要求処理プログラムに従うノード装置Nnのコンテンツ要求処理を実行するフローチャートである。 テーブル登録処理プログラムに従うノード装置Nnのテーブル登録処理を実行するフローチャートである。 本実施形態の変形例におけるメッセージ受信処理プログラムに従うノード装置Nnのメッセージ受信処理を実行するフローチャートである。
以下、本発明の最良の実施形態を図面に基づいて説明する。
[分散保存システムの構成]
図1は、本実施形態の分散保存システムSを示す。分散保存システムSは、多数ノード装置Nn(n=1,2,3・・・の何れか)から構成される。
図1の下部枠101内に示すように、一般的なインターネット等のネットワーク8は、IX(Internet eXchange)3、ISP(Internet Service Provider)4a及び4b、DSL(Digital Subscriber Line)回線事業者の装置5a及び5b、FTTH(Fiber To The Home)回線事業者の装置6、通信回線7等によって構築されている。例えば、通信回線7は、電話回線や光ケーブル等である。なお、図1の例におけるネットワーク8には、データ(パケット)を転送するためのルータが、適宜挿入されているが図示を省略している。
ネットワーク8は、多数のノード装置Nn(n=1,2,3・・・の何れか)から構成される。多数のノード装置Nnは、ルータ等を介してインターネットで接続されている。また、各ノード装置Nnには、固有の製造番号およびIP(Internet Protocol)アドレ
スが割り当てられている。本実施形態の分散保存システムSは、ピアツーピア方式のネットワークシステムである。図1の上部枠100内に示すように、ピアツーピア方式のネットワークシステムは、これらのノード装置Nnのうち、何れか複数のノード装置Nnの参加により形成される。本実施形態における参加とは、ノード装置Nnが分散保存システムSと接続し、コンテンツデータの送受信をすることを意味している。
なお、図1の上部枠100内に示すP2Pネットワーク9は、既存のネットワーク8を用いて形成されたP2Pネットワークである。P2Pネットワークは、図1の上部枠100内の複数のノード装置を仮想的にリンクさせることで構築される。P2Pネットワーク9は、オーバーレイネットワーク、または、論理的なネットワークである。P2Pネットワーク9は、特定のアルゴリズム、により構築される。例えば、特許文献の特開2006
−197400に記載されたDHTを利用したアルゴリズムにより、P2Pネットワーク9は構築される。
そして、P2Pネットワーク9を構成している各ノード装置Nnには、ノードIDが割り当てられている。ノードIDは、所定桁数からなる固有の識別情報である。また、具体的には、ノードIDは、各ノード装置Nnに個別に割り当てられたIPアドレス或いは製造番号を基に生成される。ノードIDは、上述のIPアドレス或いは製造番号を共通のハッシュ関数によりハッシュ化した値である。例えば、SHA−1等のハッシュ関数により、bit長が160bitのハッシュ値が生成される。各ノードIDは、ある一つのID空間に偏りなく分散して配置されることになる。
図1に示すように、分散保存システムSは、コンテンツ投入サーバ16とヒントサーバ17とを備える。コンテンツ投入サーバ16は、新しいコンテンツデータを分散保存システムS内に投入するためのサーバである。コンテンツ投入サーバ16は、コンテンツデータを複製したレプリカを、分散保存システムSに投入する。
ヒントサーバ17は、インターネットに接続される上位装置群と下位装置群とのトポロジー情報を記憶する。ヒントサーバに記憶されるトポロジー情報についての詳細は後述する。本実施形態のヒントサーバ17は、本発明の第1記憶部を備える第1ノード装置の一例である。なお、ヒントサーバ17を構築する代わりに、後述するコンタクトノードが、ヒントサーバ17の機能を備えて構築されても良い。
分散保存システムSへの参加は、現在P2Pネットワーク9に参加していないノード装置Nnが、現在参加している任意のノード装置Nnへ参加要求を示す参加メッセージを送信する。参加メッセージを受信するノード装置は、分散保存システムSに常時参加しているノード装置である。本実施例では、常時参加しているノード装置をコンタクトノードと称する。例えば、P2Pネットワーク9に参加していないノード装置から、分散保存システムSのコンタクトノードへ参加メッセージが送信される。コンタクトノードは、参加メッセージの送信元であるノード装置へP2Pネットワーク9に参加するために必要な情報を送信する。上述の必要な情報の詳細は後述する。
図2は、一般的なインターネット等のネットワーク構造の具体例を示す。IX(Internet eXchange)3は、ネットワークを介して複数の装置群を接続する。IX3を頂点とし
て上位装置群13a〜13cが、IXを介して接続される。IX3を頂点として上位装置群13a〜13cの下位には、下位装置群14a及び14fが接続される。上位装置群13a〜13cと下位装置群14a及び14fとは、複数のルータ11から構成される。各装置群を構成するルータ11は、任意の管理者により管理される。各ルータ11には、所定範囲のIPアドレスが割り当てられている。上位装置群13a〜13cを構成する複数のルータに対応するIPアドレスが、上位装置群13a〜13cのIPアドレス範囲として設定される。同様に、下位装置群14a及び14fを構成する複数のルータのIPアドレスが、下位装置群14a及び14fのIPアドレス範囲として設定される。
図2に示すようにIX3を頂点として、上位装置群13a〜13cまたは下位装置群14a及び14fの下位には、多数のノード装置12がルータ11を介して接続される。ノード装置12は、局舎モデム15を介してルータ11と接続される。尚、ルータ11とノード装置12とは、直接接続されても良い。
[トポロジー情報の説明]
図3は、ヒントサーバ17に記憶されるトポロジー情報の概念図である。トポロジー情報は、上位装置群及び下位装置群との接続態様を表す。具体的には、トポロジー情報は、
接続関係情報とIPアドレス範囲情報とから構成される。接続関係情報は、インターネットを構成する複数の上位装置群または下位装置群の接続関係を表す情報である。また、IPアドレス範囲情報は、上位装置群または下位装置群夫々に対応するIPアドレス範囲である。例えば、接続関係情報は、図3の上位装置群13aに接続される上位装置群が、上位装置群13b、13cであることを示す情報である。また、上位装置群13aに接続される下位装置群が、下位装置群14a、14bであることを示す情報である。ユーザノードがコンテンツを取得するとき、トポロジー情報と、ユーザノードのIPアドレスとに基づいて、装置群間の経由が最小の経路である保持ノード装置からコンテンツを取得することができる。尚、本実施形態では、ユーザノードは、ユーザからの指示にしたがってコンテンツ所在問合せメッセージを生成するノード装置Nnを表す。また、保持ノードは、コンテンツデータが記憶されるノード装置Nnを表す。 本実施形態では、P2Pネットワーク9に参加する参加処理に加えて、ノード装置Nnの装置群情報が決定される。具体的には、ノード装置Nnが送信する参加メッセージに含まれたIPアドレスに基づいて、参加メッセージを送信したノード装置Nnの装置群情報が決定される。決定する方法について具体的に説明する。上述したIPアドレス範囲情報は、具体的には、アドレス範囲「10.10.10.10〜10.10.10.90」である。このアドレス範囲は、上位装置群または下位装置群が含むルータに割り当てられたアドレスを示す。以下、コンタクトノードが、ヒントサーバ17の機能を備えた場合について説明する。あるノード装置がP2Pネットワーク9に参加するとき、参加するノード装置は、参加メッセージをコンタクトノードに向けて送信する。コンタクトノードは、P2Pネットワーク9に参加するノード装置が最初にアクセスする装置である。コンタクトノードの詳細は、後述する。参加するノード装置Nnはコンタクトノードに向けて参加メッセージを送信する。参加メッセージは、参加メッセージを送信するノード装置のIPアドレスを含む。例えば、ノード21aのIPアドレスが、「10.10.10.89」の場合、参加メッセージには、IPアドレス「10.10.10.89」が含まれる。そして、参加メッセージに含まれるIPアドレス「10.10.10.89」を、アドレス範囲として含む上位装置群、または、下位装置群がコンタクトノードにより決定される。例えば、IPアドレス「10.10.10.89」は、上述したアドレス範囲「10.10.10.10〜10.10.10.90」に含まれるため、アドレス範囲「10.10.10.10〜10.10.10.90」に対応する上位装置群または下位装置群が決定される。本実施形態では、コンタクトノードが、各上位装置群または下位装置群に対応するアドレス範囲を知っているものとする。決定された上位装置群または下位装置群が、コンタクトノードから参加するノード装置へ送信される。この処理が実行されることで、参加するノード装置は、参加するノード装置が接続する上位装置群、または、下位装置群を取得することができる。保持ノードについても上記と同様な処理が実行されることで、保持ノードは、コンテンツ保持ノードが接続される上位装置群または下位装置群を取得することができる。保持ノードの詳細は、後述する。コンタクトノードとは異なってヒントサーバ17が設立されるとき、P2Pネットワーク9に参加するノード装置、または、保持ノードが、ヒントサーバ17にアクセスする。この場合、参加するノード装置がコンタクトノードへ参加メッセージを送信すると、参加するノード装置は、コンタクトノードからヒントサーバ17のIPアドレスを取得することができる。そして、上述した処理が実行されることで、参加するノード装置、または、保持ノードは、それらノード装置が接続する上位装置群または下位装置群を取得することができる。
[分散保存システムのコンテンツ取得動作説明]
図1または図2に示す各ノードNnは、夫々、DHTを用いたルーティングテーブルを保持している。このルーティングテーブルは、分散保存システムS上における各種メッセージの転送先を規定している。具体的に、このルーティングテーブルには、ID空間内で適度に離れたノード装置NnのノードID、IPアドレス及びポート番号を含むノード情報が複数登録されている。本実施形態では、ノード情報は、メッセージ送信先候補の「ノ
ードID」と「IPアドレス及びポート番号」と「装置群情報」とを含む。尚、「IPアドレスまたはポート番号」は、アドレス情報の一例である。「装置群情報」は、ノード装置Nn自身が直接接続される下位装置群、または、当該直接接続される下位装置群の上位装置群を表す。図4は、図3に示すノード装置21aが記憶する装置群情報の一例を示す概念図である。図3に示すように、ノード装置21aと直接接続される下位装置群は、下位装置群14aである。また、ノード装置21aは、下位装置群14aを介して上位装置群13aと接続する。従って、図4に示すように、ノード装置21aの装置群情報として、下位装置群14aと上位装置群13aとが登録される。各ノード装置は、各ノード装置が接続する装置群情報を記憶する。尚、各ノード装置Nnが装置群情報を取得する詳細な説明は後述する。
分散保存システムSに接続している1台のノードは、必要最低限のノードNnのノード情報をルーティングテーブルとして記憶している。各ノードNn間で互いに各種メッセージが転送されることで、ノード情報を記憶していないノードNnについてのノード情報が取得される。本実施形態では、ルーティングテーブルを用いて、上述した他のノード装置Nnへ各種メッセージを送信、または転送するとき、メッセージの送信元、または転送元のノード装置Nnのノード情報が含まれて送信される。このメッセージを受信した各ノード装置Nnは、各ノード装置Nnが保持するルーティングテーブル及びインデックスキャッシュに、受信したノード情報の登録および更新を行う。このような構成により、各ノード装置Nnは、他のノード装置のノード情報を把握することができる。ルーティングテーブル及びインデックスキャッシュの登録及び更新を行う方法の詳細は後述する。
[ルーティングテーブルの概要]
以下、分散保存システムSにおける各ノード装置Nnの機能を説明する。各ノード装置Nnが記憶するルーティングテーブルについて詳細に説明する。ここで、図5及び図6を参照して、ルーティングテーブルについて詳しく説明する。
図5は、ノードN2が保持するルーティングテーブルの一例である。図7は、DHTのID空間の一例を示す概念図である。なお、図5及び図6の例においては、説明の便宜上、ノードIDのbit長を2bit×3桁=6bitとしている。そのため、各桁は、2bitで表された4進数(0〜3の整数)で表されている。各桁を2bitよりも長いbit長を用いても良い。例えば、各桁を4bitで表して、0〜fの16進数で表現しても良い。
図5は、ノードN2のルーティングテーブルを示す概念図である。図5に示すように、ルーティングテーブルは、レベル1(一段目)〜レベル3(三段目)の複数レベルから構成される。各エリアには、ノード情報が登録される。ノード情報として、ノードIDと、ノードIDに対応するノードN2のIPアドレス及びポート番号と、ノードN2の装置群情報とが対応付けられて登録される。
各レベルにおける各エリアは、ノードID空間を分割することにより決定されるエリアである。図6は、ノードIDを用いて各エリアが決定される概念図である。ノードID空間は、各桁が4進数(0〜3の整数)で表される3桁の数字により構成される。図6に示すように、レベル1のエリアとして、ノードID空間が4つ(4進数のため)に分割される。具体的にレベル1のエリアは、0XXのエリアと、1XXのエリアと、2XXのエリアと、3XXのエリアとに分割される。0XXのエリアは、'000'〜'033'のノードIDが存在するエリアである。1XXのエリアは、'100'〜'133'のノードIDが存在するエリアである。2XXのエリアは、'200'〜'233'のノードIDが存在するエリアである。3XXのエリアは、'300'〜'333'のノードIDが存在するエリアである。
また、レベル2では、レベル1のエリアが更に4つ(4進数のため)に分割される。つまり、0XX〜3XXの各エリアが更に4つに分割される。0XXのエリアと1XXのエリアと2XXのエリアと3XXのエリアとが夫々4分割される。例えば、1XXのエリアの場合、'100'〜'103'のノードIDが存在するエリアが10Xのエリアとして分割される。また、'110'〜'113'のノードIDが存在するエリアが11Xのエリアとして分割される。'120'〜'123'のノードIDが存在するエリアが12Xのエリアとして分割される。'130'〜'133'のノードIDが存在するエリアが13Xのエリアとして分割される。
以降、ノードN2のノードIDが'122'の場合を例として説明する。図5に示すように、ルーティングテーブルのレベル1における1XXのエリアは、ノードN2のノードIDが存在するエリアである。そのため、レベル1の1XXのエリアには、ノードN2自身のノードIDと、IPアドレスまたはポート番号と、装置群情報とが登録される。本実施形態では、ノードN2自身のノードIDとIPアドレスまたはポート番号と装置群情報とを登録したが、ノードIDとIPアドレスまたはポート番号と装置群情報とはノードN2自身のものであるので登録されなくてもよい。ノードN2のノードIDが存在しないエリアには、夫々、他の任意のノードNnのノードIDと、IPアドレスまたはポート番号と装置群情報とが登録されている。ノードN2のノードIDが「122」の場合、ノードN2のノードIDが存在しないエリアは、0XXのエリアと、2XXのエリアと、3XXのエリアとである。
また、ルーティングテーブルのレベル2における12Xのエリアは、ノードN2のノードIDが存在するエリアである。そのため、レベル2の12Xのエリアには、ノードN2自身のノードIDと、IPアドレスまたはポート番号と、装置群情報とが登録される。ノードN2のノードIDが存在しないエリアには、レベル1と同様に、他の任意のノードNnのノードIDと、IPアドレスまたはポート番号と、装置群情報とが登録されている。本実施形態では、ノードN2自身のノードIDとIPアドレスまたはポート番号と装置群情報とを登録したが、ノードIDとIPアドレスまたはポート番号と装置群情報とはノードN2自身のものであるので登録されなくてもよい。
更に、ルーティングテーブルのレベル3には、図5に示すように、ノードIDが'12
0'〜'122'である。そのため、レベル3の122のエリアには、ノードN2自身のノ
ードIDと、IPアドレスまたはポート番号と、装置群情報とが登録される。本実施形態では、ノードN2自身のノードIDとIPアドレスまたはポート番号と装置群情報とを登録したが、IPアドレスまたはポート番号、装置群情報はノードN2自身のものであるので、登録されなくても良い。
なお、図5及び図6の例では、ノードIDのbit長は3桁×2bitである。例えば、ノードIDのbit長を16桁×4bitとした場合、16レベル分のテーブルが必要となる。図5および図6に示すように、本実施形態におけるルーティングテーブルでは、レベルの数値が大きくなるほど、エリアが狭くなっていく。そして、このようなルーティングテーブルは、例えば、未参加のノード装置が分散保存システムSに参加する際に生成される。ここで、図7を参照して、分散保存システムSへの参加時におけるルーティングテーブルの生成手順について詳しく説明する。
図7は、分散保存システムSへの参加時におけるルーティングテーブルの生成手順の一例を示す概念図である。以降、未参加のノードN8がコンテンツ分散保存システムSに参加する例を用いて説明する。ノードIDのノードIDは、'123'とする。
図7に示すように、未参加のノードN8が分散保存システムSに参加する場合、コンタクトノードのIPアドレスを用いてコンタクトノードに参加メッセージが送信される。参加メッセージは、ノードN8のノード情報を含む。コンタクトノードにメッセージを送信するためのIPアドレスを、ノード装置N8が事前に知っているものとする。例えば、P2Pネットワークに参加するために必要なソフトウェアをダウンロードするときに、コンタクトノードのIPアドレスは配布される。参加メッセージを受信したコンタクトノードは、コンタクトノードのルーティングテーブルを参照する。具体的には、ルーティングテーブルにおけるレベル1のテーブルに登録されているノード情報が参照される。レベル1に登録されているノード情報を含む返信メッセージを、コンタクトノードはノードN8へ返信する。さらにコンタクトノードは、受信された参加メッセージに含まれるノードIDと、ルーティングテーブルに登録された他のノードNnのノードIDと比較する。比較結果に基づいてルーティングテーブルから、一つのノードNnが選定される。例えば、参加メッセージに含まれるノードIDと最も近いノードIDであるノードN35が選定される。最も近いノードIDは、上位桁がより多く一致するID、または、比較されるノードIDとの差が最も小さいノードIDである。選定されたノード装置が、ノード装置N2である例を用いて説明する。このとき、参加メッセージには、次に返信させるテーブルの段数を示す情報が含められる。上記例では、レベル2が参加メッセージに含められる。
参加メッセージを受信したノードN35は、ノードN35のルーティングテーブルのレベル2に登録されているノード情報を含む返信メッセージを、ノードN8に対して返信する。さらに、ノードN35は、ルーティングテーブルから選定されたノードN2へ、上記参加メッセージを転送する。このとき、参加メッセージには、次に返信させるべきテーブルの段数として、レベル3を示す情報が含められる。
参加メッセージを受信したノードN2は、ノードN2のルーティングテーブルにおけるレベル3に登録されているノード情報を含む返信メッセージを、ノードN8に対して返信する。以上のようにして参加メッセージは、ノードIDをキーとしてDHTルーティングに基づいて転送される。そのため、未参加のノードN8のノードIDに一番近いノードIDを有するノードNnまで転送される。
そして、ノードN8は、各ノードNnから受信した返信メッセージに含まれるノード情報を用いてルーティングテーブルを生成する。具体的には、コンタクトノードから送信されたノード情報が、ノードN8のルーティングテーブルのレベル1に登録される。ノードN35から送信されたノード情報が、ノードN8のルーティングテーブルのレベル2に登録される。ノードN2から送信されたノード情報が、ノードN8のルーティングテーブルのレベル3に登録される。
こうして、ノードN8は、分散システムSへの参加が完了することになる。本実施形態では、上述したような参加メッセージや、後述するクエリ等の各種メッセージは、メッセージの送信元、または、転送元のノードNnのノード情報を含む。そのため、メッセージを受信したノード装置Nnは、ノード装置Nnのルーティングテーブルに、ノード情報を登録及び更新する。
図8は、各ノード装置Nn間を転送するメッセージの様子を示す概念図である。具体的には、図8は、ノード8からの参加メッセージがノードN31、ノードN35、ノードN2間を転送する概念図である。
各ノードNn間を転送するメッセージは、メッセージ送信元のノードIDと、メッセージの内容と、送信元または転送元のノード情報とを含む。メッセージ送信元のノードIDは、メッセージを送信した送信元のノードNnのノードIDである。メッセージの内容は
、メッセージの目的を表す「参加(JOIN)」、「パブリッシュ」、「クエリ」等である。ノード情報は、送信元または転送元のノードNnのノードIDと、IPアドレスまたはポート番号と、装置群情報とを含んで構成される。なお、'メッセージの内容'は、参加メッセージの場合、テーブルの登録情報の返信を要求する旨の情報等が含まれている。また、パブリッシュ(登録)メッセージまたはクエリの場合、パブリッシュ(登録)やクエリ(要求)の対象となるコンテンツデータのコンテンツIDが含まれている。
図8に示す例の場合、ノードN35は、コンタクトノードのノードN31から参加メッセージを受信する。そして、ノードN35は、参加メッセージに含まれる送信元または転送元のノードN31のノード情報をノードN35のルーティングテーブルに登録する。このとき、ノードN35のルーティングテーブルにノードN31のノード情報が既に登録されている場合、登録済みノードN31のノード情報は、受信したノード情報に基づいて更新される。
同様に、ノードN35から参加メッセージを受信したノードN2は、参加メッセージに含まれる送信元または転送元のノードN35のノード情報をノードN2のルーティングテーブルに登録、或いは更新する。以上の手順に従い、ルーティングテーブルは、ノード情報を登録、または、更新される。
このようなDHTを用いたルーティングテーブルについては、特開2006−197400号公報等で公知であるので、詳しい説明を省略する。
[インデックスキャッシュ]
分散保存システムSにおいては、内容の異なる様々なコンテンツデータのレプリカが所定のファイル形式で複数のノード装置Nnに分散保存されている。コンテンツは、映画および動画、または音楽等である。各ノード装置Nn間でレプリカが送受信可能になっている。
これらコンテンツデータのレプリカには、夫々、コンテンツ名(タイトル)と、コンテンツIDとを含む情報が付与されている。コンテンツ名は、コンテンツデータのタイトルであっても良い。また、コンテンツIDは、コンテンツ毎に固有のコンテンツ識別情報である。例えば、コンテンツIDは、コンテンツ名+任意の数値が、上記ノードIDを得るときと共通のハッシュ関数によりハッシュ化されて生成される。そのため、コンテンツIDは、ノードIDと同一のID空間に配置されることとなる。あるいは、システム管理者が、コンテンツデータ毎に一意のID値を付与しても良い。ID値は、ノードIDと同一ビット長でも良い。コンテンツ名とそのコンテンツIDとの対応が記載されたコンテンツカタログリストが、全ノードNnに配布される。コンテンツカタログリストには、コンテンツ名と、コンテンツIDと、そのコンテンツIDが表すレプリカの公開開始日時及び公開終了日時とが対応付けられて記載されている。尚、コンテンツカタログリストの詳細は、特開2008−129694号公報に記載されているため、詳細な説明は省略する。
上述のように分散保存されているレプリカの所在は、インデックス情報により管理される。インデックス情報は、レプリカが保存されたノード装置Nnの情報と、レプリカのコンテンツIDとを組み合わせた情報から構成される。インデックス情報は、レプリカの所在を管理しているノード装置Nnにより記憶される。レプリカの所在を管理しているノード装置を「ルートノード」とする。本実施形態のインデックス情報を記憶するルートノードは、本発明の第2記億部を備える第2ノード装置の一例である。つまり、コンテンツデータのレプリカを保存しているノード装置Nnのノード情報は、他のノード装置Nnからの問い合わせに応じて提供可能なようにルートノードにより管理されている。コンテンツのレプリカを保存しているノード装置Nnを「保持ノード」とする。このようなルートノ
ードには、コンテンツIDと最も近いノードIDを有するノードNnが選定される。例えば、コンテンツIDと最も近いとは、上位桁がより多く一致する、または、比較結果の差が最も小さいことである。
図9は、ノードN2が保持するインデックスキャッシュの一例を示す概念図である。ノードN2は、コンテンツ1、コンテンツ2、コンテンツ3・・・・・のルートノードである。ノードN2は、図11に示す保持ノードNnからパブリッシュメッセージを受信する。そして、ノードN2は、パブリッシュメッセージに含まれるコンテンツIDとノード情報とを、インデックス情報としてインデックスキャッシュに登録する。ノード情報は、メッセージ送信先候補の「ノードID」と「IPアドレス及びポート番号」と「装置群情報」とを含む。図9では、コンテンツ1の保持ノードとして、ノード21aとノード21bとノード21cとノード21dとノード21eとがインデックス情報に記載されている。それぞれの保持ノードに対応するノード情報がインデックス情報に含まれる。
あるノード装置Nnのユーザが、所望するコンテンツデータのレプリカを取得したい場合、レプリカの取得を望むユーザは、クエリを生成する。ユーザがレプリカの取得を望むノード装置Nnを、「ユーザノード」とする。クエリは、コンテンツデータのコンテンツIDとユーザノードのIPアドレスを含む。クエリに含まれるコンテンツIDは、ユーザによりコンテンツカタログリストから選択されたコンテンツデータのコンテンツIDである。
ユーザノードは、ユーザノードのルーティングテーブルに従って、他のノード装置Nnへクエリを送信する。つまり、ユーザノードは、クエリをルートノードに向けて送信する。これにより、コンテンツIDをキーとしてクエリは、ルートノードに到着することとなる。
クエリを受信したルートノードは、クエリに含まれるコンテンツIDに対応するインデックス情報をインデックスキャッシュ記憶領域から取得する。取得されたインデックス情報は、クエリの送信元であるユーザノードへ返信される。こうしてインデックス情報を取得したユーザノードは、取得したインデックス情報から保持ノードのIPアドレスを知ることができる。取得した保持ノードのIPアドレスに基づいて、ユーザノードは、コンテンツ送信要求メッセージを送信する。そして、ユーザノードは、保持ノードからコンテンツデータのレプリカを取得(ダウンロード)することができる。レプリカを取得するとき、レプリカのコンテンツIDがレプリカとともに取得される。
そして、保持ノードから取得したコンテンツデータのレプリカを、ユーザノードは、ハードディスク等の記憶手段に保存する。レプリカを保存したユーザノードは、レプリカを保存したことをルートノードに知らせる。レプリカを保存したことを知らせるために、ユーザノードは、レプリカのコンテンツIDと、ユーザノードのノード情報が含まれたパブリッシュメッセージを生成する。生成されたパブリッシュメッセージは、ユーザノードからルートノードに向けて送信される。パブリッシュメッセージが送信されることで、分散保存システムSに参加している他のノード装置Nnは、レプリカを取得したユーザノードからもレプリカを取得(ダウンロード)することができる。
上述の方法により、パブリッシュメッセージは、クエリと同じように、コンテンツIDをキーとするDHTルーティングによってルートノードに到着する。そして、ルートノードは、受信したパブリッシュメッセージに含まれるユーザノードのノード情報とレプリカのコンテンツIDの組とを含むインデックス情報を登録することができる。こうして、上記ユーザノードは、新たに、コンテンツのレプリカを保持する保持ノードとなる。なお、上記パブリッシュメッセージに含まれるユーザノードのインデックス情報は、ルートノー
ドに至るまでの転送経路におけるノード装置Nnにおいても登録される。なお、ルートノードは、所在情報に含まれるIPアドレス等により示されたコンテンツ保持ノードへコンテンツ送信要求メッセージを送信してもよい。この場合、コンテンツ保持ノードがユーザノードへアクセスしてコンテンツを提供することになる。
また、コンテンツ分散保存システムSに保存される全てのコンテンツは、コンテンツ管理サーバMSにより管理される。尚、本実施形態では、コンテンツ管理サーバMSは、図示していない。コンテンツ管理サーバMSは、分散保存システムSに保存される全てのコンテンツの属性情報を記憶している。そして、コンテンツ管理サーバMSは、コンテンツの属性情報を含むコンテンツカタログ情報を、全てのノード装置Nnに対して、DHTマルチキャストで配信する。DHTマルチキャストでは、コンテンツ管理サーバMSからあるノードNnに配信されたメッセージが、DHTを用いたルーティングテーブルにしたがって、分散保存システムSに接続しているノード装置Nnを順次転送される。これにより、最終的には全てのノード装置Nnに行き渡る。なお、DHTマルチキャストは、例えば特開2007−053662号公報等で公知であるので、詳しい説明を省略する。
[コンテンツ保持ノード決定方法の説明]
各ノード装置NnがP2Pネットワーク9に参加するときに取得された装置群情報に基づいて、コンテンツを取得する保持ノードを決定する方法を説明する。具体的には、図3に示すユーザノード21aが、コンテンツ1のコンテンツ送信要求メッセージをルートノードへ送信した例を用いて説明する。図9に示すように、コンテンツ1の保持ノードとして、保持ノード22a〜22eのノード情報がルートノードに記憶されている。そして、ルートノードは、インデックスキャッシュをコンテンツの取得候補先としてユーザノードへ送信する。取得候補先を受信したユーザノードは、ユーザノードの装置群情報に基づいて、コンテンツ取得先を決定する。
図10は、ルートノードに記憶される保持ノード22a〜22eのインデックスキャッシュにおける装置群情報の詳細を示す説明図である。図4に示すように、ユーザノード21aの装置群情報は、「上位装置群13a」、「下位装置群14a」である。コンテンツの取得先の決定は、下記に示す優先度により決定される。
1.ユーザノードと保持ノードとが同じ下位装置群と接続されている場合、同じ下位装置群に接続された保持ノードからコンテンツデータを取得する。
2.ユーザノードと保持ノードとが同じ下位装置群と接続されていない場合、ユーザノードと保持ノードとが同じ上位装置群と接続され、その上位装置群と直接接続される保持ノードからコンテンツデータを取得する。
3.ユーザノードと保持ノードとが同じ下位装置群と接続されておらず、且つ、ユーザノードと保持ノードとが同じ上位装置群と接続されていない場合、他の上位装置群と直接接続される保持ノードからコンテンツデータを取得する。
本実施形態では、上記の優先順序にもとづいて、コンテンツデータの取得先が決定される。従って、コンテンツ取得の際、経由する装置群の数が減らせることで、装置群間の通信負荷を減らせることができる。例えば、ユーザノード21aの装置群情報が、「上位装置群13a」、「下位装置群14a」の場合、図10に示すように、ノード装置22aは下位装置群が一致する保持ノード装置である。同様に、ノード装置22bは上位装置群が一致する保持ノード装置である。ノード装置22cは、上位装置群が一致し、且つ、上位装置群と直接接続される保持ノードである。ノード装置22dは、上位装置群が一致せず、且つ、上位装置群と直接接続される保持ノードである。ノード装置22eは、下位装置群が一致せず、且つ、上位装置群も一致しない保持ノードである。従って、ノード装置22a、ノード装置22c、ノード装置22dの優先順序で保持ノードが決定される。尚、上述したノード装置22a、ノード装置22c、ノード装置22dと比較すると、ノード
装置22b及びノード装置22eは、優先度は低くなる。ノード装置22bとノード装置22eとでは、ノード装置22bの上位装置群が、ユーザノード21aの上位装置群と一致するため、ノード装置22bの方が優先される。
本実施形態では、コンテンツ取得先を決定する処理は、ユーザノードにより行われている。ユーザノードがクエリとともにユーザノードの装置群情報を送信することで、ルートノードによりコンテンツ取得先を決定することができる。この場合、ルートノードにより決定されたコンテンツ取得先がユーザノードに送信される。また、取得先として決定された保持ノードへコンテンツ送信要求メッセージが送信されても良い。
[ルーティングテーブル更新方法の説明]
本実施形態では、ノード装置Nnが受信した種々のメッセージに含まれるノード情報に基づいて、図5に示すルーティングテーブルが更新される。受信したメッセージに含まれるノード情報のノードIDがルーティングテーブルに登録されておらず、且つ、ノードIDが登録可能なエリアが存在する場合、新規にノード情報が登録される。一方、受信したメッセージに含まれるノード情報のノードIDがルーティングテーブルに登録されておらず、且つ、ノードIDが登録可能なエリアが存在するが既に他のノード情報が登録されている場合がある。この場合、既に登録されているノード情報の装置群情報と、受信したメッセージに含まれるノード情報の装置群情報とが比較される。具体的には、メッセージを受信したノード装置Nnを基準として優先順位が高い装置群情報を有するノード情報が、ルーティングテーブルに登録される。優先順位が高いとは、経由する装置群が少ないことを示す。
[ノード装置の電気的構成]
次に、図11を参照して、ノード装置Nnの電気的構成ついて説明する。
図11は、本実施形態のノード装置Nnの電気的構成を示すブロック図である。図11に示すように、本実施形態のノード装置Nnには、ノード装置Nnを制御するCPU31が備えられている。CPU31には、RAM32とHDD33とデコーダ部34と通信部39と入力部40とがそれぞれ電気的に接続されている。RAM32、HDD33などの記憶手段とCPU31とは、ノード装置Nnのコンピュータを構成している。そのコンピュータは、ノード装置Nnの動作を制御処理する。
RAM32は、各種メッセージ一時記憶領域321と、装置群情報一時記憶領域322と、接続関係情報コンテンツ一時記憶領域323と決定保持ノード一時記憶領域324とを含む。各種メッセージ一時記憶領域321は、ノード装置Nnが受信した各種メッセージを一時記憶する。例えば、参加メッセージやパブリッシュメッセージやクエリ等である。装置群情報一時記憶領域322は、ノード装置Nnが接続される装置群情報を一時記憶する。接続関係情報コンテンツ一時記憶領域323は、取得した接続関係情報コンテンツを一時記憶する。決定保持ノード一時記憶領域324は、後述する保持ノード距離決定処理により決定された保持ノードのノード情報が一時記憶される。
HDD33は、プログラム記憶領域331とレプリカ記憶領域337と、インデックスキャッシュ記憶領域338と、ルーティングテーブル記憶領域339と、コンテンツカタログリスト記憶領域340とを含む。プログラム記憶領域331は、メイン動作プログラム記憶領域332と受信メッセージ処理プログラム記憶領域333と保持ノード距離決定処理プログラム記憶領域334とコンテンツ要求処理プログラム記憶領域335とテーブル登録処理プログラム336とを含む。メイン動作プログラム記憶領域332は、ノード装置Nnを制御するためのプログラム情報を記憶する。受信メッセージ処理プログラム記憶領域333は、各種メッセージに基づいて、所定の処理が実行される。保持ノード距離
決定処理プログラム記憶領域334は、ルートノードのインデックキャッシュにおける保持ノードの中から、ユーザノードから経由する装置群の数が少ない保持ノードを決定する。コンテンツ要求処理プログラム記憶領域335は、コンテンツを要求するプログラム情報を記憶する。テーブル登録処理プログラム記憶領域336は、ルーティングテーブルにノード情報と登録及び更新を行うためのプログラム情報を記憶する。レプリカ記憶領域337は、コンテンツ投入サーバ16または他のノード装置Nnから送信されたレプリカを記憶する。レプリカ記憶領域337は、記憶するレプリカの公開時期及び評価値を、レプリカと対応付けて記憶する。インデックスキャッシュ記憶領域338は、上述したインデックスキャッシュを記憶する。本実施形態のインデックスキャッシュ記憶領域338は、本発明の第2記憶部の一例である。ルーティングテーブル記憶領域339は、上述したルーティングテーブルを記憶する。ルーティングテーブル記憶領域339は、本発明のテーブル記憶部の一例である。コンテンツカタログリスト記憶領域340は、上述したコンテンツカタログリストを記憶する。
デコーダ部34は、映像情報と音声情報とをデコードする。本実施形態のデコードは、エンコード化された映像情報と音声情報とを、データ伸張または復号化することである。映像情報と音声情報とは、コンテンツデータのレプリカに含まれる。
映像処理部35は、デコードされた映像情報に所定の描画処理を施して映像信号を出力する。
ディスプレイ36は、映像処理部15から出力された映像信号に基づいて映像表示する。ディスプレイ36は、CRTディスプレイ、または、液晶ディスプレイにより構成される。
音声処理部37は、上記デコードされた音声情報をアナログオーディオ信号にD(Digital)/A(Analog)変換する。
スピーカ38は、変化されたアナログオーディオ信号を、アンプにより増幅して出力する。
通信部39は、ノード装置Nnをインターネットと接続する。通信部39は、ネットワーク8を介して他のノード装置Nnまたはコンテンツ投入サーバ16またはヒントサーバ17と情報の送受信を行う。
入力部40は、ユーザからの指示を受け付ける。入力部40は、キーボード、マウス、或いは、操作パネル等から構成される。なお、ノード装置Nnとしては、パーソナルコンピュータ、STB(Set Top Box)、或いは、TV受信機等を適用可能である。
また、分散保存システムSが、分散保存システムSに参加する際のアクセス先となるコンタクトノードを備えている場合、各ノード装置NnのHDD33にはコンタクトノードのIPアドレスまたはポート番号等が記憶されている。更に、HDD33には、コンテンツカタログリストが記憶されている。なお、HDD33に記憶されるプログラムは、例えば、ネットワーク8上の所定のサーバからダウンロードされるようにしてもよい。また、CD−ROM等の記録媒体に記録されて当該記録媒体のドライブを介して読み込まれるようにしても良い。
[ノード装置Nnのメイン処理動作]
以上説明した構成からなる本実施形態のノード装置Nnの動作及び作用について、添付
図面を参照して説明する。図12は、ノード装置Nnにおける動作の処理手順を示すフローチャートである。ノード装置Nnにより上述したP2Pネットワークへの参加処理の要求が行われたとき、ノード装置Nnのメイン動作が実行される。CPU31がメイン動作プログラムを実行することにより、遂行される。以下に示す処理は、CPU31により処理される。
ステップS101では、ヒントサーバ17へ接続して、ノード装置Nn自身の装置群情報が取得される。具体的には、ノードNn自身に設定されたIPアドレスに基づいて、ノードNn自身が接続される上位装置群または下位装置群が決定される。決定された上位装置群または下位装置群が、ノードNnにより取得される。そして、図3に示すトポロジー情報と、ノード装置Nn自身のIPアドレスに基づいて、図4に示す装置群情報が取得される。本実施形態のコンピュータとステップS101とは、本発明の要求部と取得部と第2接続情報取得部の一例である。また、本実施形態のステップS101は、本発明の要求ステップと、取得ステップとの一例である。
ステップS102では、ノード装置Nnの電源がOFFにされたか否かが判定される。OFFにされたと判定された場合、ノード装置Nnのメイン処理動作が終了される。OFFにされなかったと判定された場合、ステップS103が実行される。
ステップS103では、コンタクトノードへ、参加メッセージ(JOIN)が送信される。具体的にステップS103では、ノード装置Nn自身のノード情報が含まれた参加メッセージが送信される。そして、コンタクトノードから、各種メッセージを転送するルーティングテーブルと、コンテンツカタログリストとが取得される。本実施形態のコンピュータとステップS103とは、本発明の送信部とメッセージ送信部との一例である。また、本実施形態のステップS103は、本発明の送信ステップの一例である。
ステップS104では、ノード装置Nnのレプリカ記憶領域337にP2Pネットワーク9に公開するコンテンツデータがあるか否かが判定される。公開するコンテンツデータがあると判定された場合、ステップS105が実行される。公開するコンテンツデータがないと判定された場合、ステップS106が実行される。
ステップS105では、レプリカ記憶領域337に記憶されたコンテンツデータが、P2Pネットワーク8に公開される。具体的には、上述したパブリッシュメッセージがルートノードに向けて送信される。本実施形態のコンピュータとステップS105とは、本発明の送信部と第2送信部との一例である。
ステップS106では、ユーザからコンテンツデータの取得要求が行われたかが判定される。ステップS106では、ノード装置Nnが所持するコンテンツカタログリストにより所定のコンテンツが要求されたかが判定される。
ステップS107では、コンテンツ要求処理が実行される。コンテンツ要求処理が実行されることで、ユーザが所望するコンテンツが取得される。本実施形態のコンピュータとステップS107とは、本発明のコンテンツ要求部の一例である。
ステップS108では、種々のメッセージが受信されたかが判定される。種々のメッセージは、例えば、参加要求メッセージ、パブリッシュメッセージ、クエリ等である。種々のメッセージが受信されたと判定された場合、ステップS109が実行される。種々のメッセージが受信されなかったと判定された場合、ステップS111が実行される。
ステップS109では、メッセージ受信処理が実行される。各メッセージに基づいて、
所定の処理が実行される。本実施形態のコンピュータとステップS109とは、本発明の受信部とメッセージ受信部との一例である。
ステップS110では、ステップS109で受信したメッセージに基づいて、テーブル登録処理が実行される。ステップS108で受信されたメッセージに含まれるノード情報を、ルーティングテーブルに記憶する。
ステップS111では、ネットワークの変更があったか否かが判定される。ネットワークの変更とは、接続しているネットワークのグローバルIPアドレスに変更があった場合である。ネットワークの変更があったと判定された場合、ステップS112が実行される。
ステップS112では、ヒントサーバ17へ接続して、ノード装置Nn自身の装置群情報が取得される。具体的には、図3に示すトポロジー情報と、ノード装置Nn自身のIPアドレスに基づいて、図4に示す装置群情報が取得される。
[メッセージ受信処理]
図13は、メッセージ受信プログラムに従うノード装置Nnのメッセージ受信処理を実行するフローチャートである。まず、ステップS201では、受信したメッセージがクエリであるか否かが判定される。クエリであるか否かは、各種メッセージ一時記憶領域321に記憶されるメッセージが含むメッセージの内容により判定される。クエリであると判定されたとき、ステップS202が実行される。クエリでないと判定されたとき、ステップS208が実行される。
ステップS202では、ノード装置Nnがルートノードであるか否かが判定される。ルーティングテーブルにメッセージの転送先がない場合、または、転送先がノード装置Nn自身を示しているとき、ルートノードであると判定される。ルートノードであると判定されたとき、ステップS204が実行される。ルートノードであると判定されなかったとき、ステップS203が実行される。
ステップS203では、ルーティングテーブルに従って、他のノード装置Nnへメッセージが転送される。
ステップS204では、インデックスキャッシュ記憶領域338に記憶されたインデックスキャッシュの中に、保持ノードの情報が記憶されているか否かが判定される。記憶されていると判定されたとき、ステップS205が実行される。記憶されていないと判定されたとき、ステップS207が実行される。
ステップS205では、保持ノード距離決定処理が実行される。インデックスキャッシュに記載された保持ノードの装置群情報に基づいて、ユーザノードから装置群の経由が少ない保持ノードが決定される。本実施形態のコンピュータとステップS205とは、本発明の決定部の一例である。
ステップS206では、ステップS205で決定された保持ノードのノード情報がメッセージの送信元へ送信される。
ステップ207では、インデックスキャッシュにコンテンツ保持ノードが存在しないため、コンテンツ管理サーバMSの情報がメッセージの送信元へ送信される。コンテンツ管理サーバMSの情報は、例えば、コンテンツ管理サーバMSのIPアドレスである。各ノード装置Nnは、コンテンツ管理サーバMSの情報をあらかじめ知っており、記憶部33
に予め記憶している。
ステップS208では、受信したメッセージがパブリッシュメッセージであるか否かが判定される。パブリッシュメッセージであるか否かは、各種メッセージ一時記憶領域321に記憶されるメッセージが含むメッセージの内容により判定される。パブリッシュメッセージであると判定されたとき、ステップS209が実行される。パブリッシュメッセージでないと判定されたとき、ステップS211が実行される。
ステップS209では、ノード装置Nnがルートノードであるか否かが判定される。ルーティングテーブルにメッセージの転送先がない場合、または、転送先がノード装置Nn自身を示しているとき、ルートノードであると判定される。ルートノードであると判定されたとき、ステップS210が実行される。ルートノードであると判定されなかったとき、ステップS203が実行される。
ステップS210では、インデックスキャッシュ記憶領域338に記憶されたインデックスキャッシュにパブリッシュメッセージの内容が登録される。
ステップS211では、保持ノードのノード情報が受信されたか否かが判定される。送信される保持ノードのノード情報は、ルートノードにより送信される。保持ノードのノード情報が受信されたと判定されたとき、ステップS212が実行される。インデックスキャッシュが受信されなかったとき、ステップS213が実行される。
ステップS212では、ステップS211で受信したた保持ノードへコンテンツ送信要求メッセージを送信する。
ステップS213では、コンテンツ送信要求メッセージを受信したか否かが判定される。コンテンツ送信要求メッセージであるか否かは、各種メッセージ一時記憶領域321に記憶されるメッセージが含むメッセージの内容により判定される。コンテンツ送信要求メッセージであると判定されたとき、ステップS214が実行される。コンテンツ送信要求メッセージでないと判定されたとき、メッセージ受信処理は終了される。
ステップS214は、ユーザノードへ向けてコンテンツ送信要求メッセージに対応するコンテンツデータが送信される。送信されるコンテンツデータは、コンテンツ送信要求メッセージに含まれるコンテンツIDにコンテンツデータである。
[保持ノード距離決定処理]
図14は、保持ノード距離決定処理プログラムに従うノード装置Nnの保持ノード距離決定処理を実行するフローチャートである。まず、ステップS301では、ノード装置Nnの装置群情報に基づいて、ノード装置Nnが下位装置群に接続されているか否かが判定される。下位装置群に接続されていると判定された場合、ステップS302が実行される。下位装置群に接続されていないと判定された場合、ステップS304が実行される。図4に示す下位装置群に「Null」が記憶されている場合、下位装置群と接続されていないと判定される。
ステップS302では、ノード装置Nnが接続される下位装置群と一致する保持ノードがあるか否かが判定される。具体的には、ノード装置Nnの装置群情報と、インデックスキャッシュに記載される装置群情報とが比較される。比較対象のインデックスキャッシュは、インデックスキャッシュ記憶領域338に記憶されている。比較した結果、下位装置群と一致する保持ノードがあると判定された場合、ステップS303が実行される。下位装置群と一致する保持ノードがないと判定された場合、ステップS304が実行される。
尚、本実施形態では、ノード装置Nnが接続される下位装置群と、保持ノードが接続されている下位装置群とが一致するかを判定している。ノード装置NnのIPアドレスに基づいて、ノード装置NnのIPアドレスを含む下位装置群と接続される保持ノードがあるか否かが判定されても良い。本実施形態のコンピュータとステップS302とは、本発明の第1判定部の一例である。
ステップS303では、ステップS302で決定された保持ノードが、取得先の保持ノードとして決定される。決定された保持ノード情報のノード情報が、決定保持ノード一時記憶領域324に記憶される。
ステップS304では、ノード装置Nnの装置群情報における上位装置群と、保持ノードの上位装置群とが一致するか否かが判定される。具体的には、具体的には、ノード装置Nnの装置群情報と、インデックスキャッシュに記載される装置群情報とが比較される。比較対象のインデックスキャッシュは、インデックスキャッシュ記憶領域338に記憶されている。比較した結果、上位装置群と一致する保持ノードがあると判定された場合、ステップS305が実行される。上位装置群と一致する保持ノードがないと判定された場合、ステップS310が実行される。本実施形態のコンピュータとステップS304とは、本発明の第2判定部の一例である。
ステップS305では、ステップS304一致すると判定された保持ノードが、上位装置群と直接接続されるノード装置であるか否かが判定される。具体的には、ステップS305で決定された保持ノード装置の下位装置群が「Null」であるか否かが判定される。上位装置群と直接接続される保持ノード装置があると判定された場合、ステップS306が実行される。上位装置群と直接接続される保持ノード装置がないと判定された場合、ステップS307が実行される。本実施形態のコンピュータとステップS205とは、本発明の第3判定部の一例である。
ステップS306では、ステップS305で判定された上位装置群と直接接続される保持ノード装置が、コンテンツ取得先として決定される。決定された保持ノード情報のノード情報が、決定保持ノード一時記憶領域324に記憶される。
ステップS307では、インデックキャッシュ記憶領域338に記憶されたインデックスキャッシュに記載された保持ノードの中で、上位装置群と直接接続される保持ノードがあるか否かが判定される。上位装置群と直接接続される保持ノードがあると判定された場合、ステップS308が実行される。上位装置群と直接接続される保持ノードがないと判定された場合、ステップS309が実行される。本実施形態のコンピュータとステップS307とは、本発明の第3判定部の一例である。
ステップS308では、ステップS307で判定された上位装置群と直接接続される保持ノード装置が、コンテンツ取得先として決定される。決定された保持ノード情報のノード情報が、決定保持ノード一時記憶領域324に記憶される。取得先が複数ある場合、いずれかの保持ノード装置が取得先として決定される。
ステップS309では、ユーザノードと上位装置群が同じ保持ノードの中から、取得先がランダムに決定される。
ステップS310では、ステップS307と同様に、インデックキャッシュ記憶領域338に記憶されたインデックスキャッシュに記載された保持ノードの中で、上位装置群と直接接続される保持ノードがあるか否かが判定される。上位装置群と直接接続される保持ノードがあると判定された場合、ステップS311が実行される。上位装置群と直接接続
される保持ノードがないと判定された場合、ステップS312が実行される。本実施形態のコンピュータとステップS310とは、本発明の第3判定部の一例である。
ステップS311では、ステップS308と同様に、ステップS310で判定された上位装置群と直接接続される保持ノード装置が、コンテンツ取得先として決定される。決定された保持ノード情報のノード情報が、決定保持ノード一時記憶領域324に記憶される。取得先が複数ある場合、いずれかの保持ノード装置が取得先として決定される。
ステップS312では、インデックスキャッシュに記載される保持ノードの中から、取得先がランダムに決定される。
[コンテンツ要求処理]
図15は、コンテンツ要求処理プログラムに従うノード装置Nnのコンテンツ要求処理を実行するフローチャートである。まず、ステップS401では、ユーザにより要求されたコンテンツがレプリカ記憶領域337に記憶されているか否かが判定される。記憶されていると判定された場合、ステップS402が実行される。記憶されていないと判定された場合、ステップS403が実行される。
ステップS402では、ユーザにより要求されたコンテンツがレプリカ記憶領域337から読み出される。本実施形態のコンピュータとステップS402とは、本発明のコンテンツ取得部の一例である。
ステップS403では、他のノード装置Nnにクエリ送信される。
[テーブル登録処理]
図16は、テーブル登録処理プログラムに従うノード装置Nnのテーブル登録処理を実行するフローチャートである。まず、ステップS501では、ノード装置Nn自身のルーティングテーブルにが空きがあるか否かが判定される。空きがあると判定された場合、ステップS502が実行される。空きがないと判定された場合、ステップS503が実行される。本実施形態のコンピュータとステップS501とは、本発明のテーブル判定部の一例である。
ステップS502では、ルーティングテーブルに、ステップS109で受信したノード情報が登録される。本実施形態のコンピュータとステップS502とは、本発明の記憶制御部の一例である。
ステップS503では、装置群情報一時記憶領域322記憶される装置群情報を基準として、ルーティングテーブルに記載されるノード情報の装置群情報と、ステップS109で受信したノード情報の装置群情報とが比較される。比較した結果、ステップS109で受信したノード情報の装置群情報の方が、上述したコンテンツの取得先を決定する優先度が高いと判定されたとき、ステップS502が実行される。ステップS109で受信したノード情報の装置群情報の方が、上述したコンテンツの取得先を決定する優先度が高いと判定されなかったとき、テーブル登録処理は終了される。本実施形態のコンピュータとステップS503とは、本発明のノード装置決定部の一例である。
また、上記実施形態におけるコンテンツ分散保存システムSは、DHTを利用したアルゴリズムによって形成されることを前提として説明したが、本発明はこれに限定されるものではない。DHTを利用したルーティングテーブル以外にも適用可能である。P2Pネットワーク9を構成する全てのノード装置Nnへ各ノード装置の装置群情報が送信されても良い。
本実施形態では、ステップS205またはステップS212で上述した優先順位に基づいて、保持ノードが決定されている。上記以外の例として、インデックスキャッシュに記載される複数の保持ノードにおいて、上述した優先順位に基づいて、順位付けを行っても良い。この場合、順位付けされた保持ノードのノード情報が、メッセージの送信元へ送信される。
また、本実施形態では、上位装置群または下位装置群が一致するか否かにより、コンテンツデータを取得する保持ノードが決定されている。上位装置群または下位装置群のIPアドレス範囲に、保持ノードのIPアドレスが含まれるか否かにより、保持ノードが決定されても良い。
図17は、本実施形態の変形例におけるメッセージ受信処理プログラムに従うノード装置Nnのメッセージ受信処理を実行するフローチャートである。図17におけるステップS601〜ステップS604は、図13に示すステップS201〜ステップS204の処理と同じであるため、説明は省略する。ステップS605では、インデックスキャッシュ記憶領域338に記憶されるインデックス情報が、メッセージの送信元へ送信される。
図17におけるステップS606〜ステップS609は、図13に示すステップS207〜ステップS210の処理と同じであるため、説明は省略する。ステップS610では、インデックスキャッシュ情報が受信されたか否かが判定される。受信したと判定されたとき、ステップS611が実行される。受信したと判定されなかったとき、ステップS613が実行される。
ステップS611では、ステップS610で受信したインデックスキャッシュ情報に基づいて、保持ノード距離決定処理が実行される。ステップS610で受信したインデックスキャッシュ情報に記載された保持ノードの装置群情報に基づいて、ユーザノードから装置群の経由が少ない保持ノードが決定される。本実施形態のコンピュータとステップS611とは、本発明の決定部の一例である。
ステップS612では、ステップS611で決定された保持ノードへコンテンツ送信要求メッセージを送信する。ステップS613〜ステップS614は、図13に示すステップS213〜ステップS214の処理と同じであるため、説明は省略する。
本実施形態に記載の上位装置群または下位装置群は、例えば、ISP(Internet Service Provider)である。現実世界のインターネットに接続される各ISPは、上述した上位と下位との関係により接続されている。本実施形態の上位装置群は、例えば、1次ISPである。また、本実施形態の下位装置群は、例えば、2次ISPである。1次ISPと2次ISPとは、上述した上位と下位との関係により接続されている。1次ISPは、2次ISPより上位に接続される。
3 IX
4a、4b ISP
5a、5b DSL回線業者装置
6 FTTH回線事業者装置
7 回線速度
8 ネットワーク
9 P2Pネットワーク(オーバーレイネットワーク)
11 ルータ
12 ノード装置
13a、13b、13c 上位装置群
14a、14b、14c、14d、14f 下位装置群
15 局舎モデム
16 コンテンツ投入サーバ
17 ヒントサーバ
21a ユーザノード
22a、22b、22c、22d、22e 保持ノード
31 CPU
32 RAM
33 HDD
34 デコーダ部
35 映像処理部
36 ディスプレイ
37 音声処理部
38 スピーカ
39 通信部
40 入力部
321 各種メッセージ記憶一時記憶領域
322 装置群情報一時記憶領域
323 接続系情報コンテンツ一時記憶領域
324 決定保持ノード一時記憶領域
331 プログラム記憶領域
332 メイン処理動作プログラム記憶領域
333 メッセージ受信処理プログラム記憶領域
333 保持ノード距離判断処理プログラム記憶領域
334 コンテンツ要求処理プログラム記憶領域
337 レプリカ記憶領域
338 インデックスキャッシュ記憶領域
339 ルーティングテーブル記憶領域
340 コンテンツカタログリスト記憶領域
S 分散保存システム
Nn ノード

Claims (11)

  1. 複数の異なるネットワーク間を接続する少なくとも1つ以上の通信機器から構成される上位装置群、または、前記上位装置群の下位に位置し、且つ、前記上位装置群を介して前記複数の異なるネットワークに接続可能な1つ以上の前記通信機器から構成される下位装置群を少なくとも介して前記ネットワークと接続される複数のノード装置から構成され、前記複数のノード装置により複数のコンテンツを分散して保存する分散保存システムであり、
    前記分散保存システムは、
    ネットワークを介して接続される複数の前記上位装置群と、複数の前記下位装置群との接続関係情報を記憶する第1記憶部を備える第1ノード装置と、
    前記複数のノード装置夫々の所在を示す所在情報に基づいて、前記ノード装置の接続先である前記上位装置群または前記下位装置群を示す第1接続情報を、前記第1ノード装置から取得する取得部と、
    前記取得部により取得された前記第1接続情報を、前記分散保存システムを構成する前記複数のノード装置のいずれかに送信する送信部と、
    を備える第2ノード装置と、
    を含む複数のノード装置から構成されることを特徴とするコンテンツ分散保存システム。
  2. 前記分散保存システムは、
    前記複数のノード装置から要求されるコンテンツを保存する少なくとも1つのコンテンツ保持ノードが接続する前記上位装置群または前記下位装置群を示す第2接続情報と、前記コンテンツ保持ノードの所在を示す所在情報とを記憶する第2記憶部と、
    前記送信部により送信された前記第1接続情報を受信する受信部と、
    を備える第3ノード装置と、
    前記コンテンツ保持ノードと、
    を更に含む前記複数のノード装置から構成され、
    前記第2ノード装置は、
    所望のコンテンツを要求するコンテンツ要求部と、
    前記コンテンツ要求部により要求されたコンテンツを取得するコンテンツ取得部と、
    を備え、
    前記第2のノード装置、または、前記第3ノード装置は、
    前記第2記憶部に記憶された前記コンテンツ保持ノードの中から、前記第2ノード装置の前記第1接続情報に基づいて、通信負荷が小さい第2接続情報を有する前記コンテンツ保持ノードを決定する決定部を備え、
    前記コンテンツ要求部が所望のコンテンツを要求するとともに、前記送信部は前記第2ノード装置の前記第1接続情報を送信し、
    前記コンテンツ取得部は、前記決定部が決定したコンテンツ保持ノードから、前記コンテンツを取得することを特徴とする分散保存システム。
  3. 前記コンテンツ保持ノードは、前記コンテンツ保持ノードの前記所在情報に基づいて、前記第1ノード装置から前記コンテンツ保持ノードの前記第2接続情報を取得する第2接続情報取得部と、
    前記コンテンツ保持ノードが所定のコンテンツを記憶したとき、前記コンテンツ保持ノードが前記コンテンツを記憶したことを示すパブリッシュメッセージとともに、前記コンテンツ保持ノードの前記第2接続情報を前記第3ノード装置へ送信する第2送信部と、
    を備え、
    前記第3ノード装置の前記受信部は、前記第2送信部により送信された前記第2接続情報を受信し、
    前記第2記憶部は、前記第2送信部により送信された前記第2接続情報を記憶することを特徴とする請求項2に記載の分散保存システム。
  4. 前記複数のノード装置夫々は、所定の要求を処理する内容を含むメッセージを送信可能なノード装置の前記所在情報を含むルーティングテーブルを記憶するテーブル記憶部と、
    前記ルーティングテーブルに記載された前記所在情報に従って、所定の要求を処理するメッセージを送信するとともに、前記メッセージを送信したノード装置の前記所在情報と、前記メッセージを送信したノード装置の前記第1接続情報または前記第2接続情報とを送信するメッセージ送信部と、
    前記メッセージ送信部により送信された前記メッセージを受信するメッセージ受信部と、
    前記メッセージ受信部がメッセージを受信するとき、前記テーブル記憶部に前記ノード装置の所在情報と対応付けて前記第1接続情報または前記第2接続情報を記憶させる記憶制御部と、
    を備えることを特徴とする請求項1から請求項3のいずれかに記載の分散保存システム。
  5. 前記テーブル記憶部に記憶される前記ルーティングテーブルは、前記複数のノード装置の一部のノード装置の前記所在情報と、前記所在情報に対応する前記第1接続情報または前記第2接続情報とを記憶し、
    前記メッセージ受信部が受信した前記所在情報が、前記ルーティングテーブル記憶部に記憶可能か否かを判定するテーブル判定部と、
    前記テーブル判定部が、前記メッセージ受信部が受信した前記所在情報を、前記ルーティングテーブルに記憶可能であると判定したとき、前記テーブル記憶部を備える前記ノード装置の前記第2接続情報に基づいて、前記メッセージ受信部が受信した前記第1接続情報または前記第2接続情報に対応するノード装置と、前記ルーティングテーブルに既に記憶された前記第1接続情報または前記第2接続情報に対応するノード装置との中から通信負荷が小さいノード装置を決定するノード装置決定部と、
    前記記憶制御部は、前記ノード装置決定部により決定されたノード装置の前記所在情報と、前記所在情報に対応する前記第1接続情報または前記第2接続情報を前記ルーティングテーブルに優先的に記憶することを特徴とする請求項4に記載の分散保存システム。
  6. 前記メッセージ送信部は、前記分散保存システムに参加するための参加メッセージを送信するとともに、前記メッセージを送信したノード装置の前記所在情報と、前記参加メッセージの送信先のノード装置の前記第1接続情報または前記第2接続情報とを送信し、
    前記メッセージ受信部は、前記メッセージ送信部により送信された前記参加メッセージを受信し、
    前記メッセージ受信部が前記参加メッセージを受信するとき、前記記憶制御部は、前記ノード装置の所在情報と対応付けて前記第1接続情報または前記第2接続情報を前記テーブル記憶部に記憶させることを特徴とする請求項4または請求項5に記載の分散保存システム。
  7. 前記決定部は、
    前記第3ノード装置の前記第2記憶部に記憶された前記コンテンツ保持ノードの中から、前記第2ノード装置における前記第1接続情報の前記下位装置群と一致する前記下位装置群を有する前記コンテンツ保持ノードがあるか否かを判定する第1判定部を備え
    前記第1判定部により、一致するコンテンツ保持ノードがあると判定されたとき、前記コンテンツ取得部は、前記第1判定部により一致すると判定されたコンテンツ保持ノードから、前記コンテンツを取得することを特徴とする請求項1から請求項6のいずれかに記載の分散保存システム。
  8. 前記決定部は、
    前記第1判定部により、一致すると判定されたコンテンツ保持ノードがないと判定されたとき、前記第2ノード装置における前記第1接続情報の前記上位装置群と一致する前記コンテンツ保持ノードがあるか否かを判定する第2判定部を備え、
    前記第2判定部により、一致するコンテンツ保持ノードがあると判定されたとき、前記コンテンツ取得部は、前記第2判定部により一致すると判定されたコンテンツ保持ノードから、前記コンテンツを取得することを特徴とする請求項7に記載の分散保存システム。
  9. 前記決定部は、
    前記第1判定部により、一致すると判定されたコンテンツ保持ノードがないと判定されたとき、前記第3ノード装置の前記第2記憶部に記憶された複数の保存先の中から、前記上位装置群と直接接続されるコンテンツ保持ノードがあるか否かを判定する第3判定部を備え、
    前記第3判定部が、前記上位装置群と直接接続されるコンテンツ保持ノードがあると判定したとき、前記コンテンツ取得部は、前記第3判定部により判定されたコンテンツ保持ノードから、前記コンテンツを取得することを特徴
    とする請求項7に記載の分散保存システム。
  10. 複数の異なるネットワーク間を接続する少なくとも1つ以上の通信機器から構成される上位装置群、または、前記上位装置群の下位に位置し、且つ、前記上位装置群を介して前記複数の異なるネットワークに接続可能な1つ以上の前記通信機器から構成される下位装置群を少なくとも介して前記ネットワークと接続される複数のノード装置から構成され、
    前記複数のノード装置により複数のコンテンツを分散して保存する分散保存システムの前記複数のノード装置夫々の所在を示す所在情報に基づいて、前記ノード装置の接続先である前記上位装置群または前記下位装置群を示す第1接続情報の取得を、ネットワークを介して接続される複数の前記上位装置群と、複数の前記下位装置群との接続関係情報を記憶する第1記憶部を備える第1ノード装置から、前記第1接続情報を取得する取得ステップと、
    前記取得ステップにより取得された前記第1接続情報を、前記分散保存システムを構成する前記複数のノード装置のいずれかに送信する送信ステップと、
    を含むことを特徴とする分散保存システムの接続情報通知方法。
  11. 複数の異なるネットワーク間を接続する少なくとも1つ以上の通信機器から構成される上位装置群、または、前記上位装置群の下位に位置し、且つ、前記上位装置群を介して前記複数の異なるネットワークに接続可能な1つ以上の前記通信機器から構成される下位装置群を少なくとも介して前記ネットワークと接続される複数のノード装置から構成され、
    前記複数のノード装置により複数のコンテンツを分散して保存する分散保存システムの前記複数のノード装置夫々の所在を示す所在情報に基づいて、前記ノード装置の接続先である前記上位装置群または前記下位装置群を示す第1接続情報の取得を、ネットワークを介して接続される複数の前記上位装置群と、複数の前記下位装置群との接続関係情報を記憶する第1記憶部を備える第1ノード装置から、前記第1接続情報を取得する取得ステップと、
    前記取得ステップにより取得された前記第1接続情報を、前記分散保存システムを構成する前記複数のノード装置のいずれかに送信する送信ステップと、
    をコンピュータに実現させるためのプログラム。
JP2010122095A 2009-05-27 2010-05-27 分散保存システム、分散保存システムの接続情報通知方法及びプログラム Expired - Fee Related JP5370269B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010122095A JP5370269B2 (ja) 2009-05-27 2010-05-27 分散保存システム、分散保存システムの接続情報通知方法及びプログラム

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2009127593 2009-05-27
JP2009127593 2009-05-27
JP2010122095A JP5370269B2 (ja) 2009-05-27 2010-05-27 分散保存システム、分散保存システムの接続情報通知方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2011010288A true JP2011010288A (ja) 2011-01-13
JP5370269B2 JP5370269B2 (ja) 2013-12-18

Family

ID=43221474

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010122095A Expired - Fee Related JP5370269B2 (ja) 2009-05-27 2010-05-27 分散保存システム、分散保存システムの接続情報通知方法及びプログラム

Country Status (2)

Country Link
US (1) US8332463B2 (ja)
JP (1) JP5370269B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012049966A (ja) * 2010-08-30 2012-03-08 Brother Ind Ltd 分散保存システム、代表ノード装置、通知方法及びプログラム
JP2013051566A (ja) * 2011-08-31 2013-03-14 Brother Ind Ltd ノード装置、情報通信方法及びプログラム
JP2018524656A (ja) * 2015-04-30 2018-08-30 ネットフリックス・インコーポレイテッドNetflix, Inc. 階層化キャッシュフィル

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9088506B2 (en) * 2012-09-11 2015-07-21 Avaya, Inc. System and method for data stream mirroring
CN113742429A (zh) * 2021-11-04 2021-12-03 正链科技(深圳)有限公司 一种分布式网络数据存储方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006195744A (ja) * 2005-01-13 2006-07-27 Brother Ind Ltd 情報配信システム、配信要求プログラム、転送プログラム、配信プログラム等
JP2006197400A (ja) * 2005-01-14 2006-07-27 Brother Ind Ltd 情報配信システム、情報更新プログラム、及び情報更新方法等
JP2006277338A (ja) * 2005-03-29 2006-10-12 Brother Ind Ltd 情報処理装置及び蓄積装置、情報処理方法及び蓄積方法並びに情報処理用プログラム及び蓄積装置用プログラム
JP2007053662A (ja) * 2005-08-19 2007-03-01 Brother Ind Ltd 情報通信システム、情報通信方法、情報通信システムに含まれるノード装置および情報処理プログラム
JP2008129694A (ja) * 2006-11-17 2008-06-05 Brother Ind Ltd 情報配信システム、情報配信方法、配信装置及びノード装置等

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7263560B2 (en) * 2002-08-30 2007-08-28 Sun Microsystems, Inc. Decentralized peer-to-peer advertisement
WO2006075424A1 (ja) * 2005-01-13 2006-07-20 Brother Kogyo Kabushiki Kaisha 情報配信システム、配信要求プログラム、転送プログラム、配信プログラム等

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006195744A (ja) * 2005-01-13 2006-07-27 Brother Ind Ltd 情報配信システム、配信要求プログラム、転送プログラム、配信プログラム等
JP2006197400A (ja) * 2005-01-14 2006-07-27 Brother Ind Ltd 情報配信システム、情報更新プログラム、及び情報更新方法等
JP2006277338A (ja) * 2005-03-29 2006-10-12 Brother Ind Ltd 情報処理装置及び蓄積装置、情報処理方法及び蓄積方法並びに情報処理用プログラム及び蓄積装置用プログラム
JP2007053662A (ja) * 2005-08-19 2007-03-01 Brother Ind Ltd 情報通信システム、情報通信方法、情報通信システムに含まれるノード装置および情報処理プログラム
JP2008129694A (ja) * 2006-11-17 2008-06-05 Brother Ind Ltd 情報配信システム、情報配信方法、配信装置及びノード装置等

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012049966A (ja) * 2010-08-30 2012-03-08 Brother Ind Ltd 分散保存システム、代表ノード装置、通知方法及びプログラム
JP2013051566A (ja) * 2011-08-31 2013-03-14 Brother Ind Ltd ノード装置、情報通信方法及びプログラム
US8799508B2 (en) 2011-08-31 2014-08-05 Brother Kogyo Kabushiki Kaisha Node device, information communication method and computer readable recording medium
JP2018524656A (ja) * 2015-04-30 2018-08-30 ネットフリックス・インコーポレイテッドNetflix, Inc. 階層化キャッシュフィル
US11010341B2 (en) 2015-04-30 2021-05-18 Netflix, Inc. Tiered cache filling
US11675740B2 (en) 2015-04-30 2023-06-13 Netflix, Inc. Tiered cache filling

Also Published As

Publication number Publication date
US20100306303A1 (en) 2010-12-02
US8332463B2 (en) 2012-12-11
JP5370269B2 (ja) 2013-12-18

Similar Documents

Publication Publication Date Title
US8195764B2 (en) Information delivery system, delivery request program, transfer program, delivery program, and the like
JP4418897B2 (ja) 情報配信システム、情報更新プログラム、及び情報更新方法等
WO2006085519A1 (ja) 情報配信システム、配信要求プログラム、転送プログラム及び配信プログラム等
JP2010028551A (ja) コンテンツ分散保存システム、ノード装置、ノード処理プログラム、及びアドレス情報変更通知方法
JP2006191489A (ja) ノード装置、ネットワーク参加処理プログラム、及びネットワーク参加処理方法等
JP2007053662A (ja) 情報通信システム、情報通信方法、情報通信システムに含まれるノード装置および情報処理プログラム
WO2007083531A1 (ja) コンテンツ配信システム、ノード装置及びその情報処理方法並びにそのプログラムを記録した記録媒体
JP4715388B2 (ja) 情報配信システム、情報配信方法、情報配信システムに含まれるノード装置および情報処理プログラム
JP5370269B2 (ja) 分散保存システム、分散保存システムの接続情報通知方法及びプログラム
US20080288657A1 (en) Information delivery system, reregistration message sending method, node device, and recording medium recording node processing program
JP4670043B2 (ja) 情報配信システム、配信要求プログラム、転送プログラム、配信プログラム等
US8819295B2 (en) Information communication system, first information processing device, method for processing information, and computer readable storage medium
JP4692278B2 (ja) コンテンツ配信システム、端末装置及びその情報処理方法並びにそのプログラム
JP5532649B2 (ja) ノード装置、ノード処理プログラム及びコンテンツ保存方法
WO2008041422A1 (fr) Terminal de système de distribution de contenu, son procédé de traitement d'information et programme contenant un support d'enregistrement
KR100436431B1 (ko) 피어투피어 네트워크상에서의 협업적인 정보 교환시스템
JP5212292B2 (ja) 情報通信システム、ノード装置、ノード装置確認方法及びプログラム
JP5434268B2 (ja) 分散保存システム、データファイル分散保存方法及びプログラム
US20080240138A1 (en) Tree type broadcast system, connection target determination method, connection management device, connection management process program, and the like
JP5494361B2 (ja) 分散保存システム、代表ノード装置、通知方法及びプログラム
JP5494550B2 (ja) 管理装置、管理システム、管理方法及び管理プログラム
JP5359728B2 (ja) カラオケシステム、カラオケ装置、ノード装置、カラオケプログラム、ノードプログラム、及びカラオケデータ送信方法
JP2011055139A (ja) 情報通信システム、ノード装置及びそのプログラム、並びにコンテンツ取得方法
JP2006217538A (ja) 情報通信システム、情報通信システムに含まれる初期ゾーン管理ノード装置等
JP2008236538A (ja) ツリー型放送システム、コンテンツ放送方法、放送管理装置、及び放送管理処理プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120920

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130426

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130521

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130722

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130820

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130902

R150 Certificate of patent or registration of utility model

Ref document number: 5370269

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees