JP2008294627A - 通信システム、ノード装置、ノード処理プログラム、及びメッセージ送受信方法 - Google Patents

通信システム、ノード装置、ノード処理プログラム、及びメッセージ送受信方法 Download PDF

Info

Publication number
JP2008294627A
JP2008294627A JP2007136520A JP2007136520A JP2008294627A JP 2008294627 A JP2008294627 A JP 2008294627A JP 2007136520 A JP2007136520 A JP 2007136520A JP 2007136520 A JP2007136520 A JP 2007136520A JP 2008294627 A JP2008294627 A JP 2008294627A
Authority
JP
Japan
Prior art keywords
node
message
node device
information
session
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
JP2007136520A
Other languages
English (en)
Other versions
JP4910881B2 (ja
Inventor
Kentaro Ushiyama
建太郎 牛山
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 JP2007136520A priority Critical patent/JP4910881B2/ja
Priority to US12/149,560 priority patent/US8099506B2/en
Publication of JP2008294627A publication Critical patent/JP2008294627A/ja
Application granted granted Critical
Publication of JP4910881B2 publication Critical patent/JP4910881B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/66Arrangements for connecting between networks having differing types of switching systems, e.g. gateways
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/256NAT traversal
    • H04L61/2567NAT traversal for reachability, e.g. inquiring the address of a correspondent behind a NAT server
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • 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
    • 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/1074Peer-to-peer [P2P] networks for supporting data block transmission mechanisms

Landscapes

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

Abstract

【課題】ネットワーク側から中継機器を介してセッション開始を受け付けることができないノード装置からサービスを適切に受けることができる通信システム、ノード装置、ノード処理プログラム、及びメッセージ送受信方法を提供する。
【解決手段】中継機器を介してセッション開始を受け付けることができない第一ノード装置との間でセッションを確立し保持するセッション保持手段と、他のノード装置との間のメッセージ送受信を制御するメッセージ送受信制御手段とを備え、第一ノード装置を送信元とする自ノード装置以外のノード装置宛てのメッセージを受信したとき、当該メッセージに含まれる送信元のネットワークアドレス情報を自ノード装置のネットワークアドレス情報にして宛先のノード装置に送信し、且つ、第一ノード装置以外のノード装置を送信元とするメッセージを受信したとき、当該メッセージを当該第一ノード装置に送信するように制御する。
【選択図】図3

Description

本発明は、ネットワークを介して互いに通信可能な複数のノード装置を備えたピアツーピア(Peer to Peer(P2P))型の通信システムの技術分野に関する。
この種のピアツーピア型の通信システムにおいて、コンテンツデータを複数のノード装置に分散配置(分散保存)させておくコンテンツ分散保存システムが知られており、これにより、対故障性やアクセスの分散性が高められている。このように分散保存されたコンテンツデータの所在は、例えば特許文献1に開示されるような分散ハッシュテーブル(以下、DHT(Distributed Hash Table)という)を利用して効率良く検索可能になっている。これにより、各ノード装置は、上記検索に係るコンテンツデータを保存しているノード装置とのセッションを確立した後、当該ノード装置からコンテンツデータの提供を受けることができる。
これらのノード装置は、中継機器としてのルータを介してネットワークに接続されるようになっており、ノード装置間の通信では、例えばTCP(Transmission Control Protocol)/IP(Internet Protocol)が用いられる。そして、各ノード装置は、他のノード装置と通信を行うためにポートを用意し(開く)、これによりセッションが確立(言い換えれば、通信路が確立)すると、ルータ及びネットワークを介して双方向で通信を行うことができるようになっている。
ところで、グローバルIPネットアドレスが割り当てられておらず、プライベートIPアドレスしか割り当てられていないノード装置がネットワークに接続するための技術としてNAT(Network Address Translation)が知られている。このようなNATにおいては、NAT対応ルータが、プライベートIPアドレスとグローバルIPアドレスを相互に変換することにより、プライベートIPアドレスしか割り当てられていないノード装置から、透過的にネットワークに接続できるようになっている。
しかし、このようなNATにおいては、ネットワーク側(つまり、NAT対応ルータの外側)からNAT対応ルータ内側のノード装置にダイレクトに接続できない、つまり、NAT対応ルータの外側のノード装置からNAT対応ルータ内側のノード装置にセッションを開始できないという問題がある。このような問題を解決するために、利用者がNAT対応ルータにおいて適切にポートフォワーディング設定をする方法や、「UPnP(Universal Plug and Play)」又は「UDP(User Datagram Protocol ) hole punching」などのNAT越えの技術を用いる方法が知られている。
特開2006−197400号公報
しかしながら、NAT対応ルータにおける上記設定は、専門知識がない利用者には難しく敷居が高いという問題がある。また、UPnP及びUDP hole punchingは、すべての場合で成功するとは限らないという問題がある。また、全てのNAT対応ルータがUPnPに対応しているとは限らない。
このため、例えば、NAT対応ルータ内側のノード装置がコンテンツデータを保存している場合に、NAT対応ルータの外側のノード装置が、当該NAT対応ルータ内側のノード装置からコンテンツデータの提供を受けることができないという事態が生じる可能性がある。従って、ピアツーピア型の通信システムのメリットが十分に生かせず、当該システムの運用に支障をきたすという問題が生じうる。
本発明は、以上の問題等に鑑みてなされたものであり、ネットワーク側から中継機器を介してセッション開始を受け付けることができないノード装置が通信システムに含まれる場合であっても、当該システムの運用に支障をきたすことなく、各ノード装置の利用者が当該システム上で提供されるサービスを適切に受けることができる通信システム、ノード装置、ノード処理プログラム、及びメッセージ送受信方法を提供することを課題とする。
上記課題を解決するために、請求項1に記載の発明は、中継機器を介してネットワークに接続される複数のノード装置を備える通信システムにおける前記ノード装置であって、前記ネットワーク側から中継機器を介してセッション開始を受け付けることができない第一ノード装置との間でセッションを確立し保持するセッション保持手段と、セッションが確立された他のノード装置との間のメッセージの送受信を制御するメッセージ送受信制御手段と、を備え、前記メッセージ送受信制御手段は、前記第一ノード装置を送信元とするメッセージであって自ノード装置以外のノード装置宛てのメッセージを受信したとき、当該メッセージに含まれる送信元のネットワークアドレス情報を自ノード装置のネットワークアドレス情報にして当該メッセージを宛先のノード装置に送信し、且つ、前記第一ノード装置以外のノード装置を送信元とするメッセージを受信したとき、当該メッセージが前記第一ノード装置に送信されるべきメッセージであるか否かを判別し、当該第一ノード装置に送信されるべきメッセージである場合には、当該メッセージを当該第一ノード装置に送信するように制御することを特徴とする。
この発明によれば、ネットワーク側から中継機器を介してセッション開始を受け付けることができないノード装置が通信システムに含まれる場合であっても、当該システムの運用に支障をきたすことなく、各ノード装置の利用者が当該システム上で提供されるサービスを適切に受けることができる。また、リソースを無駄なく利用するこができる。
請求項2に記載の発明は、請求項1に記載のノード装置において、前記セッション保持手段は、前記第一ノード装置からのセッション開始を受け付け当該セッションが確立された場合に、前記第一ノード装置のネットワークアドレス情報を記憶し、当該セッションを保持することを特徴とする。
請求項3に記載の発明は、請求項1又は2に記載のノード装置において、前記メッセージ送受信制御手段は、前記第一ノード装置を送信元とするメッセージであって自ノード装置以外のノード装置宛てのメッセージを受信したとき、当該メッセージに含まれる送信元のネットワークアドレス情報を自ノード装置のネットワークアドレス情報に書き換え、これに前記第一ノード装置を示す中継情報を付加して当該メッセージを宛先のノード装置に送信し、且つ、前記第一ノード装置以外のノード装置を送信元とするメッセージを受信したとき、当該メッセージが前記第一ノード装置に送信されるべきメッセージであるか否かを、当該メッセージに含まれる宛先のネットワークアドレス情報に付加された前記中継情報に基づいて判別することを特徴とする。
請求項4に記載の発明は、請求項1又は2に記載のノード装置において、前記メッセージには、送信元のノード装置に固有のノード識別情報、前記送信元のネットワークアドレス情報、宛先のノード装置に固有のノード識別情報、及び前記宛先のネットワークアドレス情報が含まれており、前記メッセージ送受信制御手段は、前記第一ノード装置を送信元とするメッセージであって自ノード装置以外のノード装置宛てのメッセージを受信したとき、当該メッセージに含まれる送信元のネットワークアドレス情報を自ノード装置のネットワークアドレス情報に書き換え、当該メッセージを宛先のノード装置に送信し、且つ、前記第一ノード装置以外のノード装置を送信元とするメッセージを受信したとき、当該メッセージが前記第一ノード装置に送信されるべきメッセージであるか否かを、当該メッセージに含まれる宛先の前記ノード識別情報に基づいて判別することを特徴とする。
請求項5に記載のノード処理プログラムの発明は、コンピュータを、請求項1乃至4の何れか一項に記載のノード装置として機能させることを特徴とする。
請求項6に記載の発明は、中継機器を介してネットワークに接続される複数のノード装置を備える通信システムであって、何れかの前記ノード装置は、前記ネットワーク側から中継機器を介してセッション開始を受け付けることができない第一ノード装置との間でセッションを確立し保持するセッション保持手段と、セッションが確立された他のノード装置との間のメッセージの送受信を制御するメッセージ送受信制御手段と、を備え、前記メッセージ送受信制御手段は、前記第一ノード装置を送信元とするメッセージであって自ノード装置以外のノード装置宛てのメッセージを受信したとき、当該メッセージに含まれる送信元のネットワークアドレス情報を自ノード装置にして当該メッセージを宛先のノード装置に送信し、且つ、前記第一ノード装置以外のノード装置を送信元とするメッセージを受信したとき、当該メッセージが前記第一ノード装置に送信されるべきメッセージであるか否かを判別し、当該第一ノード装置に送信されるべきメッセージである場合には、当該メッセージを当該第一ノード装置に送信するように制御することを特徴とする。
請求項7に記載の発明は、中継機器を介してネットワークに接続される複数のノード装置を備える通信システムにおけるメッセージ送受信方法であって、何れかの前記ノード装置が、前記ネットワーク側から中継機器を介してセッション開始を受け付けることができない第一ノード装置との間でセッションを確立し保持する工程と、セッションが確立された他のノード装置との間のメッセージの送受信を制御するメッセージ送受信制御工程と、を備え、前記メッセージ送受信制御工程においては、前記第一ノード装置を送信元とするメッセージであって自ノード装置以外のノード装置宛てのメッセージを受信したとき、当該メッセージに含まれる送信元のネットワークアドレス情報を自ノード装置のネットワークアドレス情報にして当該メッセージを宛先のノード装置に送信し、且つ、前記第一ノード装置以外のノード装置を送信元とするメッセージを受信したとき、当該メッセージが前記第一ノード装置に送信されるべきメッセージであるか否かを判別し、当該第一ノード装置に送信されるべきメッセージである場合には、当該メッセージを当該第一ノード装置に送信するように制御することを特徴とする。
本発明によれば、ネットワーク側から中継機器を介してセッション開始を受け付けることができないノード装置が通信システムに含まれる場合であっても、当該システムの運用に支障をきたすことなく、各ノード装置の利用者が当該システム上で提供されるサービスを適切に受けることができる。また、リソースを無駄なく利用するこができる。
以下、本発明の最良の実施形態を図面に基づいて説明する。なお、以下に説明する実施の形態は、コンテンツ分散保存システムに本発明を適用した場合の実施形態である。
1.コンテンツ分散保存システムの構成等
始めに、図1等を参照して、本実施形態に係るコンテンツ分散保存システム(通信システムの一例)の概要構成等について説明する。
図1は、本実施形態に係るコンテンツ分散保存システムにおける各ノード装置の接続態様の一例を示す図である。
図1の下部枠101内に示すように、IX(Internet eXchange)3、ISP(Internet Service Provider)4a,4b、DSL(Digital Subscriber Line)回線事業者(の装置)5a,5b、FTTH(Fiber To The Home)回線事業者(の装置)6、及び通信回線(例えば、電話回線や光ケーブル等)7等によって、インターネット等のネットワーク(現実世界の通信ネットワーク)8が構築されている。
なお、図1の例におけるネットワーク8には、データ(パケット)を転送するための中継機器としてのルータ(図示せず)が適宜挿入されている。
このようなネットワーク8には、複数のノード装置(以下、「ノード」という)Nn(n=1,2,3・・・の何れか)がルータを介して接続されている。また、各ノードNnには、固有の製造番号およびIPアドレス(プライベートIPアドレス又はグローバルIPアドレス)が割り当てられている。なお、プライベートIPアドレスが割り当てられているノードNnは、NAT対応ルータを通じてネットワーク8に接続されるようになっている。
そして、本実施形態に係るコンテンツ分散保存システムSは、これらのノードNnのうち、図1の上部枠100内に示すように、何れか複数のノードNnの参加により形成されるピアツーピア方式のネットワークシステムとなっている。
なお、図1の上部枠100内に示すネットワーク9は、既存のネットワーク8を用いて形成された仮想的なリンクを構成するオーバーレイネットワーク9(論理的なネットワーク)である。かかるオーバーレイネットワーク9は、特定のアルゴリズム、例えば、DHT(Distributed Hash Table)を利用したアルゴリズムにより実現される。
そして、コンテンツ分散保存システムS(言い換えれば、オーバーレイネットワーク9)に参加している各ノードNnには、所定桁数からなる固有の識別情報であるノードIDが割り当てられている。また、当該ノードIDは、例えば、各ノードNnに個別に割り当てられたIPアドレス或いは製造番号を共通のハッシュ関数(例えば、SHA−1等)によりハッシュ化した値(例えば、bit長が160bit)であり、一つのID空間に偏りなく分散して配置されることになる。
なお、コンテンツ分散保存システムSへの参加は、参加していないノードNn(例えば、ノードN8)が、参加している任意のノードNn(例えば、当該システムSに常時参加しているコンタクトノード)に対して参加要求を示す参加メッセージを送信することによって行われる。
また、各ノードNnは、夫々、DHTを用いたルーティングテーブルを保持している。このルーティングテーブルは、コンテンツ分散保存システムS上における各種メッセージの転送先を規定しており、具体的には、ID空間内で適度に離れたノードNnのノードID、IPアドレス及びポート番号を含むノード情報が複数登録されている。なお、IPアドレスとポート番号の組は、ネットワークアドレス情報を構成する。
コンテンツ分散保存システムSに参加している1台のノードNnは、該システムSに参加している全てのノードNnのうち、必要最低限のノードNnのノード情報をルーティングテーブルに登録しておき、ノード情報を知らない(記憶していない)ノードNnについては、各ノードNn間で互いに各種メッセージを転送し合って届けてもらうようになっている。
このようなDHTを用いたルーティングテーブルについては、特開2006−197400号公報等で公知であるので、詳しい説明を省略する。
ところで、コンテンツ分散保存システムSにおいては、内容の異なる様々なコンテンツ(例えば、映画や音楽等)データ(実際には、コンテンツデータの複製であるレプリカ)所定のファイル形式で複数のノードNnに分散して保存(格納)されている。例えば、ノードN5には、タイトルがXXXの映画のコンテンツデータ(ファイル)が保存されており、一方、ノードN3には、タイトルがYYYの映画のコンテンツデータが保存されるというように、複数のノードNn(以下、「コンテンツ保持ノード」という)に分散されて保存される。
また、これらのコンテンツデータには、夫々、コンテンツ名(タイトル)及びコンテンツID(コンテンツ毎に固有の識別情報)等の情報が付加されている。このコンテンツIDは、例えば、コンテンツ名+任意の数値(或いは、当該コンテンツデータの先頭数バイトでも良い)が、上記ノードIDを得るときと共通のハッシュ関数によりハッシュ化されて生成される(ノードIDと同一のID空間に配置)。或いは、システム管理者が、コンテンツ毎に一意のID値(ノードIDと同一ビット長)を付与しても良い。この場合は、コンテンツ名とそのコンテンツIDの対応が書かれたコンテンツカタログ情報が、全ノードNnに配布される。
また、このように分散保存されているコンテンツデータの所在、つまり、当該コンテンツデータを保存したノードNnのノード情報に係るIPアドレス等と当該コンテンツデータに対応するコンテンツID等の組が含まれるインデックス情報が、当該コンテンツデータの所在の管理元であるノードNn(以下、「ルートノード」、又は「コンテンツ(コンテンツID)のルートノード」という)等により記憶(インデックスキャッシュに記憶)、管理されるようになっている。つまり、コンテンツデータを保存しているコンテンツ保持ノードのノード情報は、他のノードNnからの問い合わせに応じて提供可能なようにルートノードにより管理されている。
例えば、タイトルがXXXの映画のコンテンツデータについてのインデックス情報は、そのコンテンツ(コンテンツID)のルートノードであるノードN4により管理され、タイトルがYYYの映画のコンテンツデータについてのインデックス情報は、そのコンテンツ(コンテンツID)のルートノードであるノードN7により管理される。また、このようなルートノードは、例えば、コンテンツIDと最も近い(例えば、上位桁がより多く一致する)ノードIDを有するノードNnであるように定められる。
そして、あるノードNnのユーザが、所望するコンテンツデータを取得したい場合、当該コンテンツデータの取得を望むノードNn(以下、「ユーザノード」という)は、当該ユーザにより選択(リクエスト)されたコンテンツデータのコンテンツID及び自己のIPアドレス等を含むコンテンツ所在問合せ(検索)メッセージ(クエリ)を生成し、これを自己のDHTを用いたルーティングテーブルにしたがって他のノードNnに対して送出する。つまり、ユーザノードは、コンテンツ所在問合せ(検索)メッセージを、ルートノードに向けて(ルートノード宛に)送出する。これにより、コンテンツ所在問合せ(検索)メッセージは、コンテンツIDをキーとするDHTルーティングによって最終的にルートノードに到着することになる。
なお、各ノードNnにおいてユーザにより選択されるべきコンテンツデータのコンテンツ名及びコンテンツID等の属性情報は、例えばコンテンツ管理サーバから全てのノードNnに配信されるコンテンツカタログ情報に記述されている。また、上記コンテンツ所在問合せ(検索)メッセージに含まれるコンテンツIDは、ユーザノードによって、コンテンツ名が上記共通のハッシュ関数によりハッシュ化されて生成されるようにしても良い。なお、DHTルーティングについては、特開2006−197400号公報等で公知であるので、詳しい説明を省略する。
上記コンテンツ所在問合せ(検索)メッセージを受信したルートノードは、これに含まれるコンテンツIDに対応するインデックス情報をインデックスキャッシュから取得して、当該インデックス情報を、該コンテンツ所在問合せメッセージの送信元であるユーザノードに対して返信する。これにより、ユーザノードは、所望のコンテンツデータを保存している上記コンテンツ保持ノードに対して、コンテンツ送信要求メッセージを送信し、そこから当該コンテンツデータを取得(ダウンロード)することが可能になる。
或いは、ルートノードは、当該インデックス情報に含まれるIPアドレス等に示されたコンテンツ保持ノードに対してコンテンツ送信要求メッセージを送信する。これにより、ユーザノードは、上記コンテンツ保持ノードである例えばノードN1から当該コンテンツデータを取得することが可能になる。
なお、上記ユーザノードは、コンテンツ所在問合せメッセージがルートノードに辿り着くまでの間に、当該ルートノードと同じインデックス情報をキャッシュしているキャッシュノードから当該インデックス情報を取得することもできる。
このようにコンテンツデータの取得したユーザノードは、当該コンテンツデータをハードディスク等に記憶保存することになる。そして、当該ユーザノードは、当該コンテンツデータを保存したことをそのルートノードに知らせるために(言い換えれば、該システムSに参加している他のノードNnに対して公開するために)、そのコンテンツデータのコンテンツID及び自己のノード情報が含まれるパブリッシュ(登録通知)メッセージを生成し、該パブリッシュメッセージを、そのルートノードに向けて(ルートノード宛に)送出する。これにより、パブリッシュメッセージは、コンテンツ所在問合せ(検索)メッセージと同じように、コンテンツIDをキーとするDHTルーティングによってルートノードに到着することになる。そして、該ルートノードは、受信したパブリッシュメッセージに含まれるノード情報及びコンテンツIDの組を含むインデックス情報を登録(インデックスキャッシュ領域に記憶)することになる。
こうして、上記ユーザノードは、新たに、上記コンテンツデータを保持するコンテンツ保持ノードとなる。
なお、上記パブリッシュメッセージに含まれるノード情報及びコンテンツIDの組を含むインデックス情報は、ルートノードに至るまでの転送経路におけるキャッシュノードにおいても登録(キャッシュ)される。
以上のように構成されたコンテンツ分散保存システムSに参加している複数のノードNnの中には、ネットワーク8側からルータ(NAT対応ルータ)を介してセッション開始を受け付けることができないノード、言い換えれば、NAT対応ルータにおいてポートを取得できずNAT越えできないノード(以下、「NAT越え不可ノード」という(第一ノード装置の一例))が存在している。
このようなNAT越え不可ノードに対しては、NAT対応ルータの外側のノードNnからセッションを開始できないものの、NAT越え不可ノード側からNAT対応ルータ及びネットワーク8を介して他のノードNnに対してセッションを開始することができる。NAT越え不可ノードからネットワーク8を介してセッション開始を受け付けたノードNnは、当該セッションが確立された場合に、当該セッション(セッション状態)を保持するようになっている。
2.ノードNnの構成及び機能等
次に、図2を参照して、ノードNnの構成及び機能について説明する。
図2は、ノードNnの概要構成例を示す図である。
各ノードNnは、図2に示すように、演算機能を有するCPU,作業用RAM,各種データおよびプログラムを記憶するROM等から構成されたコンピュータとしての制御部11と、各種データ(例えば、コンテンツデータのファイル、コンテンツカタログ情報、インデックス情報、DHT等)及び各種プログラム等を記憶保存(格納)するためのハードディスクドライブ等から構成された記憶部12と、受信されたコンテンツデータ等を一時蓄積するバッファメモリ13と、コンテンツデータに含まれるビデオデータ(映像情報)及びオーディオデータ(音声情報)等をデコード(データ伸張等)するデコーダ部14と、当該デコードされたビデオデータ等に対して所定の描画処理を施しビデオ信号として出力する映像処理部15と、当該映像処理部15から出力されたビデオ信号に基づき映像表示するCRT,液晶ディスプレイ等の表示部16と、上記デコードされたオーディオデータをアナログオーディオ信号にD (Digital)/A(Analog)変換した後これをアンプにより増幅して出力する音声処理部17と、当該音声処理部17から出力されたオーディオ信号を音波として出力するスピーカ18と、ネットワーク8を通じて他のノードNnや各種サーバ等との間の情報の通信制御を行うための通信部19と、ユーザからの指示を受け付け当該指示に応じた指示信号を制御部11に対して与える入力部(例えば、キーボード、マウス、或いは、操作パネル等)20と、を備えて構成され、制御部11、記憶部12、バッファメモリ13、デコーダ部14、通信部19、及び入力部20はバス21を介して相互に接続されている。なお、ノードNnとしては、パーソナルコンピュータ、STB(Set Top Box)、或いは、TV受信機等を適用可能である。
このような構成において、制御部11は、CPUが記憶部12等に記憶されたプログラムを読み出して実行することにより、全体を統括制御し、コンテンツ分散保存システムSへの参加により、本発明におけるメッセージ送受信制御手段及びセッション保持手段等として機能しつつ、上述したユーザノード、キャッシュノード、ルートノード、キャッシュノード、及びコンテンツ保持ノードの少なくとも何れか一つのノードとしての処理を行うようになっている。
具体的には、制御部11は、セッションが確立された他のノードNnとの間の上記メッセージの送受信を制御する。そして、一旦、セッションが確立された場合、制御部11は、メッセージの受信後又は送信後も、当該セッションを保持するようになっている。当該セッションの保持は、ソケットテーブルに、セッション情報が登録(記憶)されることにより行われる。当該セッション情報には、例えば、自身のノード情報、接続先のノード情報、及びソケット識別子が含まれる。
なお、ここでの「ソケットテーブル」は公知のものではなく、本実施形態のために実装したものであり、当該ソケットテーブルは、ネットワークアドレス情報にノードIDを結び付けたものである。
また、ソケットテーブルには、複数のセッション情報を登録することができ、これにより、複数のノードNnとのセッションを保持することができる。但し、ソケットの数には限りがある(例えば、30〜50程度)ので、ソケットテーブルに登録されたセッション情報の数が所定数以上になった場合、例えば最も利用されていないソケットに係るセッション情報から削除されるようになっている。このとき、上記NAT越え不可ノードとのセッションに係るセッション情報はできるだけ削除されずに残しておかれる。つまり、NAT越え不可ノード以外のノードNnとのセッションに係るセッション情報で且つ利用されてないソケットに係るセッション情報が優先されてソケットテーブルから削除される。
なお、NAT越え不可ノードのノード情報に含まれるIPアドレスは、NAT対応ルータの外側のIPアドレス(グローバルIPアドレス)であり、NAT越え不可ノードのノード情報に含まれるポート番号は、NAT対応ルータの外側のポート番号(セッション開始時にNAT対応ルータにおいて選定された空きポートの番号)である。
更に、NAT越え不可ノードとのセッションを保持しているノード(NAT越え不可ノード以外のノード)Nnの制御部11は、当該NAT越え不可ノードの中継ノードとしての処理を行うようになっている。
具体的には、中継ノードでは中継ノードテーブルを用意しておく。そして、NAT越え不可ノードからのセッション開始を受け付け当該セッションが確立された後、当該NAT越え不可ノードを送信元とするメッセージあって自ノード以外のノードNn宛てのメッセージが受信されたとき、中継ノードの制御部11は、NAT越え不可ノードに対して固有の中継ノード識別子(当該NAT越え不可ノードを示す中継情報の一例)を割り当てる。そして、当該制御部11は、当該NAT越え不可ノードのノード情報と、割り当てた中継ノード識別子とを対応付けて中継ノードテーブルに登録する。
なお、このように登録されたNAT越え不可ノードのノード情報及び中継ノード識別子は、当該NAT越え不可ノードとのセッションが切断、つまり、セッション情報が削除された場合に中継ノードテーブルから削除される。
そして、当該制御部11は、当該メッセージに含まれる送信元(NAT越え不可ノード)のノード情報を自ノードのノード情報に書き換える。つまり、中継ノードの制御部11は、当該メッセージに含まれる送信元のノード情報を自ノードのノード情報にする。但し、当該書き換えたことを後から判別可能とするため、中継ノードの制御部11は、当該NAT越え不可ノードに割り当てられ中継ノードテーブルに登録されている中継ノード識別子を、書き換え後の自ノードのノード情報に付加して当該メッセージを宛先のノードNnに送信する。
他方、上記NAT越え不可ノード以外のノードNnを送信元とするメッセージが受信されたとき、中継ノードの制御部11は、当該メッセージが、自身とセッション保持状態にあるNAT越え不可ノードに送信されるべきメッセージであるか否かを、例えば当該メッセージに含まれる宛先のノード情報に付加された中継ノード識別子に基づいて判別する。当該NAT越え不可ノードに送信されるべきメッセージである場合、当該制御部11は、当該メッセージを、当該NAT越え不可ノードに送信するように制御する。例えば、当該メッセージの宛先のノード情報に付加された中継ノード識別子が中継ノードテーブルに登録されている場合、当該受信されたメッセージが、当該中継ノード識別子に対応付けられて中継ノードテーブルに登録されているNAT越え不可ノードに対して送信されるべきメッセージであると判別される。そして、このように判別された場合、当該メッセージの宛先のノード情報が、当該中継ノード識別子に対応付けられて登録されているNAT越え不可ノードのノード情報に書き換えられて送信されることになる。
3.コンテンツ分散保存システムの動作
次に、本実施形態に係るコンテンツ分散保存システムSの動作について説明する。
(動作概要)
先ず、図3を参照して動作概要を説明する。
図3は、NAT越え不可ノードと中継ノードによるメッセージの送受信の一例を示す概念図である。
なお、図3の例において、ノードN1はノード情報が“X”であるNAT越え不可ノードである。また、ノードN2はノード情報が“A”である中継ノードであり、ノードN3はノード情報が“B”である中継ノードである。また、ノードN6は、ノード情報が“Y”であるNAT越え不可ノードである。
図3に示すように、NAT越え不可ノードであるノードN1から送信されたメッセージ51の送信元のノード情報は、ノードN1のノード情報になっており、当該ノード情報“X”には中継ノード識別子として“0”(自身を示す)が付加されている。また、メッセージ51の宛先としては、ノードN2以外の任意のノードNnが設定されている。
そして、当該メッセージ51が中継ノードであるノードN2により受信されると、ノードN2は、ノードN1に対して中継ノード識別子“1”を割り当て、ノードN1のノード情報“X”と、中継ノード識別子“1”とを対応付けて中継ノードテーブルに登録し、セッションを保持する。続いて、ノードN2は、当該メッセージ51における送信元のノード情報“X”を自身のノード情報“A”に書き換え、且つ、当該ノード情報“X”に付加されている中継ノード識別子“0”に代えて中継ノード識別子“1”を付加する(中継ノード識別子が“0”から“1”に書き換えられる)。このように送信元のノード情報等が書き換えられたメッセージ52は、宛先となる任意のノードNnに送信されることになる。
一方、ノードN3における中継ノードテーブルには、既に、NAT越え不可ノードであるノードN6のノード情報“Y”と中継ノード識別子“1”とが対応付けられて登録され、さらに、NAT越え不可ノードであるノードN1のノード情報“X”と中継ノード識別子“2”とが対応付けられて登録されている。
そして、ノードN3は、任意のノードNnから送信されたメッセージ53を受信する。かかるメッセージ53は、ノードN3宛てのメッセージとなっているが、当該メッセージ53の宛先のノード情報“B”に付加された中継ノード識別子が“0”でなく“2”になっているので、ノードN3は、当該メッセージ53がNAT越え不可ノードに送信されるべきメッセージであると判別する。続いて、ノードN3は、当該メッセージ53における宛先のノード情報“B”を、中継ノードテーブルに登録されているノードN1のノード情報“X”に書き換え、且つ、当該ノード情報“B”に付加されている中継ノード識別子“2”に代えて中継ノード識別子“0”を付加する。このように宛先のノード情報等が書き換えられたメッセージ54は、ノードN3とセッションが保持されているNAT越え不可ノードであるノードN1に送信(中継)されることになる。
(NAT越え不可ノードによるコンテンツデータのリクエスト)
次に、図4を参照して、NAT越え不可ノードによるコンテンツデータのリクエスト時における動作を説明する。
図4は、NAT越え不可ノードによるコンテンツデータのリクエスト時におけるメッセージの流れの一例を示す概念図である。なお、ノードN2における中継ノードテーブルには、既に、NAT越え不可ノードであるノードN1のノード情報“X”と中継ノード識別子“1”とが対応付けられて登録されているものとする。
NAT越え不可ノードであるノードN1がコンテンツID“F”のコンテンツデータ(ファイル)をリクエストする場合、ノードN1は、宛先のノードIDをコンテンツID“F”としたコンテンツ所在問合せ(検索)メッセージ(以下、単に、「検索メッセージ」という)61を生成する。そして、ノードN1は、セッションが保持されているノードN2に対して上記検索メッセージ61を送信する。
次に、当該検索メッセージ61がノードN2により受信されると、ノードN2は、当該検索メッセージ61における送信元のノード情報“X”を自身のノード情報“A”に書き換え、且つ、当該ノード情報“X”に付加されている中継ノード識別子“0”に代えて中継ノード識別子“1”を付加する。そして、ノードN2は、当該コンテンツIDと最も近いノードIDを有する例えばノードN4のIPアドレス及びポート番号を、DHTを用いた自身のルーティングテーブルから取得する。そして、ノードN2は、ノードN4とのセッションを確立して、当該ノードN4に対して上記ノード情報が書き換えられた検索メッセージ62を送信する。
次に、当該検索メッセージ62がノードN4により受信されると、ノードN4は、当該検索メッセージ62に含まれるコンテンツIDと最も近いノードIDを有するノードNnが自身である、つまり、コンテツツID“F”のルートノードであることを自身のルーティングテーブルから判断する。そして、ノードN4は、当該検索メッセージ62に含まれるコンテンツIDに対応するインデックス情報をインデックスキャッシュから取得する。これにより、コンテンツID“F”のコンテンツデータを保存しているコンテンツ保持ノードとしてノードN5が特定される。続いて、ノードN4は、上記検索メッセージ62における宛先のノード情報を、上記特定されたノードN5のノード情報“C”にする。そして、ノードN4は、ノードN5とのセッションを確立して、当該ノードN5に対して検索メッセージ63を送信する。
次に、当該検索メッセージ63がノードN5により受信されると、ノードN5は、コンテンツID“F”のコンテンツデータを送信可能であれば、送信元のノード情報を自身の“C”(中継ノード識別子“0”)とし、宛先のノード情報及び中継ノード識別子を検索メッセージ63に含まれるノードN2のノード情報“A”及び中継ノード識別子を“1”とした検索返答メッセージ64を生成する。そして、ノードN5は、ノードN2とのセッションを確立して、当該ノードN2に対して検索返答メッセージ64を送信する。
次に、当該検索返答メッセージ64がノードN2により受信されると、ノードN2は、当該検索返答メッセージ64における宛先のノード情報“A”を、中継ノードテーブルに登録されているノードN1のノード情報“X”に書き換え、且つ、当該ノード情報“A”に付加されている中継ノード識別子“1”に代えて中継ノード識別子“0”を付加する。そして、ノードN2は、セッションが保持されているノードN1に対して検索返答メッセージ65を送信する。
次に、当該検索返答メッセージ65がノードN1により受信されると、ノードN1は、送信元のノード情報を自身の“X”(中継ノード識別子“0”)とし、宛先のノード情報を検索返答メッセージ65に含まれるノードN5のノード情報“C”(中継ノード識別子“0”)としたコンテンツ送信要求メッセージ66を生成する。そして、ノードN1は、ノードN5に対してセッションを開始しこれを確立して、当該ノードN5に対してコンテンツ送信要求メッセージ66を送信する。なお、ノードN1とノードN5とのセッションは保持され、ノードN5の中継ノードテーブルには、ノードN1のノード情報と中継ノード識別子とが対応付けられて登録されることになる。
次に、当該コンテンツ送信要求メッセージ66がノードN5により受信されると、ノードN5は、送信元のノード情報を自身の“C”(中継ノード識別子“0”)とし、宛先のノード情報をノードN1のノード情報“X”(中継ノード識別子“0”)としたコンテンツ送信メッセージ67を生成する。そして、ノードN5は、当該コンテンツ送信メッセージ67のペイロード部にコンテンツデータのパケットを格納して、当該コンテンツ送信メッセージ67をノードN1に対して送信する(コンテンツデータのアップロード)。
(NAT越え不可ノードによるコンテンツデータの公開)
次に、図5を参照して、NAT越え不可ノードによるコンテンツデータの公開時における動作を説明する。
図5は、NAT越え不可ノードによるコンテンツデータの公開時におけるメッセージの流れの一例を示す概念図である。なお、ノードN2における中継ノードテーブルには、既に、NAT越え不可ノードであるノードN1のノード情報“X”と中継ノード識別子“1”とが対応付けられて登録されているものとする。
上述したように、NAT越え不可ノードであるノードN1がノードN5から取得したコンテンツデータを記憶部12に記憶保存すると、ノードN1は、宛先のノードIDをコンテンツID“F”としたパブリッシュメッセージ71を生成する。そして、ノードN1は、セッションが保持されているノードN2に対して上記パブリッシュメッセージ71を送信する。
次に、当該パブリッシュメッセージ71がノードN2により受信されると、ノードN2は、当該パブリッシュメッセージ71における送信元のノード情報“X”を自身のノード情報“A”に書き換え、且つ、当該ノード情報“X”に付加されている中継ノード識別子“0”に代えて中継ノード識別子“1”を付加する。そして、ノードN2は、当該コンテンツIDと最も近いノードIDを有する例えばノードN4のIPアドレス及びポート番号を自身のルーティングテーブルから取得する。そして、ノードN2は、ノードN4とのセッションを確立して、当該ノードN4に対して上記ノード情報が書き換えられたパブリッシュメッセージ72を送信する。
次に、当該パブリッシュメッセージ72がノードN4により受信されると、ノードN4は、当該パブリッシュメッセージ72に含まれるコンテンツIDと最も近いノードIDを有するルートノードが自身であることを自身のルーティングテーブルから判断する。そして、ノードN4は、当該パブリッシュメッセージ72に含まれるコンテンツID、送信元のノード情報“A”及びこれに付加された中継ノード識別子“1”を含むインデックス情報を登録(インデックスキャッシュ領域に記憶)する。
(NAT越え不可ノードへのコンテンツデータのリクエスト)
次に、図6を参照して、NAT越え不可ノードへのコンテンツデータのリクエスト時における動作を説明する。
図6は、NAT越え不可ノードへのコンテンツデータのリクエスト時におけるメッセージの流れの一例を示す概念図である。なお、ノードN2における中継ノードテーブルには、既に、NAT越え不可ノードであるノードN1のノード情報“X”と中継ノード識別子“1”とが対応付けられて登録されているものとする。
NAT越え不可ノードであるノードN1とのセッションが確立されていないノードN3がコンテンツID“F”のコンテンツデータをリクエストする場合、ノードN3は、宛先のノードIDをコンテンツID“F”とした検索メッセージ81を生成する。そして、ノードN3は、当該コンテンツIDと最も近いノードIDを有する例えばノードN4のIPアドレス及びポート番号を自身のルーティングテーブルから取得する。そして、ノードN3は、ノードN4とのセッションを確立して、当該ノードN4に対して上記検索メッセージ81を送信する。
次に、当該検索メッセージ81がノードN4により受信されると、ノードN4は、当該検索メッセージ81に含まれるコンテンツIDと最も近いノードIDを有するルートノードが自身であることを自身のルーティングテーブルから判断する。そして、ノードN4は、当該検索メッセージ81に含まれるコンテンツIDに対応するインデックス情報をインデックスキャッシュから取得する。図6の例では、インデックスキャッシュには、コンテンツID“F”に対応付けられてノードN5のノード情報“C”及び中継ノード識別子“0”と、ノードN2のノード情報“A”及び中継ノード識別子“1”が登録されており、ここでは、“A1”が取得されるものとする。これにより、コンテンツID“F”のコンテンツデータを保存しているコンテンツ保持ノードとしてノードN2が特定される。但し、ノードN2は、ルートノードにおいてコンテンツ保持ノードとして登録されているが、実際には、ノードN1がコンテンツ保持ノードということになる。
続いて、ノードN4は、上記検索メッセージ81における宛先のノード情報を上記特定されたノードN2のノード情報“A”に書き換え、且つ、中継ノード識別子“0”に代えて“1”を付加する。そして、ノードN4は、ノードN2とのセッションを確立して、当該ノードN2に対して検索メッセージ82を送信する。
次に、当該検索メッセージ82がノードN2により受信されると、ノードN2は、当該検索メッセージ82における宛先のノード情報“A”を、中継ノードテーブルに登録されているノードN1のノード情報“X”に書き換え、且つ、当該ノード情報“A”に付加されている中継ノード識別子“1”に代えて中継ノード識別子“0”を付加する。そして、ノードN2は、セッションが保持されているノードN1に対して検索メッセージ83を送信する。つまり、実際のコンテンツ保持ノードに検索メッセージ83を転送するのである。
次に、当該検索メッセージ83がノードN1により受信されると、ノードN1は、送信元のノード情報を自身の“X”(中継ノード識別子“0”)とし、宛先のノード情報を検索メッセージ83に含まれるノードN3のノード情報“B”(中継ノード識別子“0”)とした検索返答メッセージ84を生成する。そして、ノードN1は、ノードN3に対してセッションを開始しこれを確立して、当該ノードN3に対して検索返答メッセージ84を送信する。なお、ノードN1とノードN3とのセッションは保持され、ノードN3の中継ノードテーブルには、ノードN1のノード情報と中継ノード識別子とが対応付けられて登録されることになる。
次に、当該検索返答メッセージ84がノードN3により受信されると、ノードN3は、送信元のノード情報を自身の“B”(中継ノード識別子“0”)とし、宛先のノード情報をノードN1のノード情報“X”(中継ノード識別子“0”)としたコンテンツ送信要求メッセージ85を生成する。そして、ノードN3は、当該ノードN1に対してコンテンツ送信要求メッセージ85を送信する。
次に、当該コンテンツ送信要求メッセージ85がノードN1により受信されると、ノードN1は、送信元のノード情報を自身の“X”(中継ノード識別子“0”)とし、宛先のノード情報をノードN3のノード情報“B”(中継ノード識別子“0”)としたコンテンツ送信メッセージ86を生成する。そして、ノードN1は、当該コンテンツ送信メッセージ86のペイロード部にコンテンツデータのパケットを格納して、当該コンテンツ送信メッセージ86をノードN3に対して送信する(コンテンツデータのアップロード)。
(一のNAT越え不可ノードから他のNAT越え不可ノードへのコンテンツデータのリクエスト)
次に、図7を参照して、一のNAT越え不可ノードから他のNAT越え不可ノードへのコンテンツデータのリクエスト時における動作を説明する。
図7は、一のNAT越え不可ノードから他のNAT越え不可ノードへのコンテンツデータのリクエスト時におけるメッセージの流れの一例を示す概念図である。なお、ノードN3における中継ノードテーブルには、既に、一のNAT越え不可ノードであるノードN6のノード情報“Y”と中継ノード識別子“1”とが対応付けられて登録されているものとする。また、ノードN2における中継ノードテーブルには、既に、他のNAT越え不可ノードであるノードN1のノード情報“X”と中継ノード識別子“1”とが対応付けられて登録されているものとする。
NAT越え不可ノードであるノードN6がコンテンツID“F”のコンテンツデータをリクエストする場合、ノードN6は、宛先のノードIDをコンテンツID“F”とした検索メッセージ91を生成する。そして、ノードN6は、セッションが保持されているノードN3に対して上記検索メッセージ91を送信する。
次に、当該検索メッセージ91がノードN3により受信されると、ノードN3は、当該検索メッセージ91における送信元のノード情報“Y”を自身のノード情報“B”に書き換え、且つ、当該ノード情報“Y”に付加されている中継ノード識別子“0”に代えて中継ノード識別子“1”を付加する。そして、ノードN3は、当該コンテンツIDと最も近いノードIDを有する例えばノードN4のIPアドレス及びポート番号を、DHTを用いた自身のルーティングテーブルから取得する。そして、ノードN3は、ノードN4とのセッションを確立して、当該ノードN4に対して検索メッセージ92を送信する。
次に、当該検索メッセージ92がノードN4により受信されると、ノードN4は、当該検索メッセージ92に含まれるコンテンツIDと最も近いノードIDを有するルートノードが自身であることを自身のルーティングテーブルから判断する。そして、ノードN4は、当該検索メッセージ92に含まれるコンテンツIDに対応するインデックス情報をインデックスキャッシュから取得する。なお、ここでは、図6の例と同様、“A1”が取得されるものとする。これにより、コンテンツID“F”のコンテンツデータを保存しているコンテンツ保持ノードとしてノードN2が特定される。
続いて、ノードN4は、上記検索メッセージ92における宛先のノード情報を上記特定されたノードN2のノード情報“A”に書き換え、且つ、中継ノード識別子“0”に代えて“1”を付加する。そして、ノードN4は、ノードN2とのセッションを確立して、当該ノードN2に対して検索メッセージ93を送信する。
次に、当該検索メッセージ93がノードN2により受信されると、ノードN2は、当該検索メッセージ93における宛先のノード情報“A”を、中継ノードテーブルに登録されているノードN1のノード情報“X”に書き換え、且つ、当該ノード情報“A”に付加されている中継ノード識別子“1”に代えて中継ノード識別子“0”を付加する。そして、ノードN2は、セッションが保持されているノードN1に対して検索メッセージ94を送信する。
次に、当該検索メッセージ94がノードN1により受信されると、ノードN1は、送信元のノード情報を自身の“X”(中継ノード識別子“0”)とし、宛先のノード情報を検索メッセージ94に含まれるノードN3のノード情報“B”(中継ノード識別子“1”)とした検索返答メッセージ95を生成する。そして、ノードN1は、ノードN3に対してセッションを開始しこれを確立して、当該ノードN3に対して検索返答メッセージ95を送信する。
次に、当該検索返答メッセージ95がノードN3により受信されると、ノードN3は、ノードN1に対して、ノードN6とは重複しない中継ノード識別子“2”を割り当て、ノードN1のノード情報“X”と、中継ノード識別子“2”とを対応付けて中継ノードテーブルに登録し、セッションを保持する。次いで、ノードN3は、当該検索返答メッセージ95における宛先のノード情報“B”を、中継ノードテーブルに登録されているノードN6のノード情報“Y”に書き換え、且つ、当該ノード情報“B”に付加されている中継ノード識別子“1”に代えて中継ノード識別子“0”を付加する。更に、ノードN3は、当該検索返答メッセージ95における送信元のノード情報“X”を自身のノード情報“B”に書き換え、当該ノード情報“X”に付加されている中継ノード識別子“0”に代えて中継ノード識別子“2”を付加する。そして、ノードN3は、セッションが保持されているノードN6に対して検索返答メッセージ96を送信する。
次に、当該検索返答メッセージ96がノードN6により受信されると、ノードN6は、送信元のノード情報を自身の“Y”(中継ノード識別子“0”)とし、宛先のノード情報を検索返答メッセージ96に含まれるノードN3のノード情報“B”(中継ノード識別子“2”)としたコンテンツ送信要求メッセージ97を生成する。そして、ノードN6は、ノードN3に対してコンテンツ送信要求メッセージ97を送信する。
次に、当該コンテンツ送信要求メッセージ97がノードN3により受信されると、ノードN3は、当該コンテンツ送信要求メッセージ97における送信元のノード情報“Y”を自身のノード情報“B”に書き換え、且つ、当該ノード情報“Y”に付加されている中継ノード識別子“0”に代えて中継ノード識別子“1”を付加する。更に、ノードN3は、当該コンテンツ送信要求メッセージ97における宛先のノード情報“B”を、中継ノードテーブルに登録されているノードN1のノード情報“X”に書き換え、且つ、当該ノード情報“B”に付加されている中継ノード識別子“2”に代えて中継ノード識別子“0”を付加する。そして、ノードN3は、セッションが保持されているノードN1に対してコンテンツ送信要求メッセージ98を送信する。
次に、当該コンテンツ送信要求メッセージ98がノードN1により受信されると、ノードN1は、送信元のノード情報を自身の“X”(中継ノード識別子“0”)とし、宛先のノード情報をノードN3のノード情報“B”(中継ノード識別子“1”)としたコンテンツ送信メッセージ99を生成する。そして、ノードN1は、当該コンテンツ送信メッセージ99のペイロード部にコンテンツデータのパケットを格納して、当該コンテンツ送信メッセージ99をノードN3に対して送信する。
次に、当該コンテンツ送信メッセージ99がノードN3により受信されると、ノードN3は、当該コンテンツ送信メッセージ99における宛先のノード情報“B”を、中継ノードテーブルに登録されているノードN6のノード情報“Y”に書き換え、且つ、当該ノード情報“B”に付加されている中継ノード識別子“1”に代えて中継ノード識別子“0”を付加する。更に、ノードN3は、当該コンテンツ送信メッセージ99における送信元のノード情報“X”を自身のノード情報“B”に書き換え、当該ノード情報“X”に付加されている中継ノード識別子“0”に代えて中継ノード識別子“2”を付加する。そして、ノードN3は、セッションが保持されているノードN6に対してコンテンツ送信メッセージ100を送信する(コンテンツデータのアップロード)。
(ノードNnの処理)
次に、任意の一つのノードNnに着目し、当該ノードNnの制御部11における処理を図8乃至図10を参照して説明する。
図8乃至図10は、任意のノードNnの制御部11における処理の一例を示すフローチャートである。
図8に示す処理は、例えばノードNnにおいて電源オンがなされ、コンテンツ分散保存システムSへの参加が行われることにより開始される。
ステップS1では、制御部11は、電源オフ指令があったか否かを判別し、電源オフ指令があった場合には(ステップS1:YES)、当該処理を終了し、電源オフ指令がない場合には(ステップS1:NO)、ステップS2に進む。
ステップS2では、制御部11は、ユーザから入力部20を介してコンテンツデータのリクエストがあったか否かを判別し、当該リクエストがあった場合には(ステップS2:YES)、ステップS3に進み、当該リクエストがない場合には(ステップS2:NO)、ステップS4に進む。
ステップS3では、制御部11は、リクエストされたコンテンツデータのコンテンツID等を含む検索メッセージをルートノードに向けて送出する。
ステップS4では、制御部11は、他のノードNnからメッセージを受信したか否かを判断し、当該メッセージを受信した場合には(ステップS4:YES)、ステップS5に進み、当該メッセージを受信しない場合には(ステップS4:NO)、ステップS1に戻る。
ステップS5では、制御部11は、当該受信されたメッセージの送信元のノードNnはNAT越え不可ノードであるか否かを、例えば当該メッセージに含まれる送信元のノード情報に含まれるポート番号から判別する。例えば、当該ポート番号が無効(例えば“00000”)である場合、NAT対応ルータにおいてポートを取得できなかったと判断できるので、当該メッセージの送信元のノードNnはNAT越え不可ノードであると判別され(ステップS5:YES)、ステップS6に進み、NAT越え不可ノードでないと判別された場合には(ステップS5:NO)、ステップS9に進む。
ステップS6では、制御部11は、上記送信元のNAT越え不可ノードのノード情報が、中継ノードテーブルに登録済みであるか否かを判別し、登録済みでない場合には(ステップS6:NO)、ステップS7に進み、登録済みである場合には(ステップS6:YES)、ステップS8に進む。
ステップS7では、制御部11は、当該NAT越え不可ノードに対して中継ノード識別子を割り当て、当該NAT越え不可ノードのノード情報と、割り当てた中継ノード識別子とを対応付けて中継ノードテーブルに登録する。また、このとき、当該NAT越え不可ノードのノード情を含むセッション情報がソケットテーブルに登録され、セッションが保持される。
ステップS8では、制御部11は、上記受信したメッセージにおけるNAT越え不可ノードのノード情報を自ノードのノード情報に書き換え、且つ、中継ノードテーブルにしたがって上述したように中継ノード識別子を付加し、ステップS9に進む。
ステップS9では、制御部11は、上記受信したメッセージの宛先のノード情報に含まれるノードID(又はコンテンツID)のルートノードは自ノードであるか、つまり、当該ノードID(又はコンテンツID)と最も近いノードIDを有するノードNnが自ノードであるか否かを自身のルーティングテーブルから判別する。そして、当該ルートノードが自ノードでない場合には(ステップS9:NO)、制御部11は、メッセージの宛先のノード情報に含まれるノードID(又はコンテンツID)に最も近いノードNnを自身のルーティングテーブルから特定し、当該特定したノードNnに対して上記受信したメッセージを送信(転送)し(ステップS10)、ステップS1に戻る。
一方、当該ルートノードが自ノードである場合には(ステップS9:YES)、制御部11は、上記メッセージの宛先のノード情報に不可された中継ノード識別子が“0”であるか否かを判別し(ステップS11)、“0”でない場合には(ステップS11:NO)、ステップS12に進み、“0”である場合には(ステップS11:YES)、ステップS14に進む。
ステップS12では、制御部11は、上記メッセージの宛先のノード情報に付加された中継ノード識別子(0以外)は、中継ノードテーブルに登録済みであるか否かを判別し、登録済みでない場合には(ステップS12:NO)、ステップS1に戻り、登録済みである場合には(ステップS12:YES)、ステップS13に進む。
ステップS13では、制御部11は、上記メッセージにおける宛先のノード情報を、中継ノードテーブルに登録されているNAT越え不可ノードのノード情報に書き換えて中継ノード識別子“0”を付加し、当該メッセージを当該NAT越え不可ノードに対して送信(転送)し、ステップS1に戻る。
ステップS14における各種メッセージ受信処理では、図9に示すように、制御部11は、上記受信されたメッセージが検索メッセージであるか否かを判別する(ステップS141)。そして、上記受信されたメッセージが検索メッセージである場合には(ステップS141:YES)、ステップS142に進み、検索メッセージでない場合には(ステップS141:NO)、ステップS146に進む。
ステップS142では、制御部11は、上記検索メッセージに含まれるコンテンツIDに対応するコンテンツデータを保存しているコンテンツ保持ノードに係るインデックス情報を登録しているか否かをインデックスキャッシュから判別する。そして、制御部11は、当該インデックス情報が登録されている場合には(ステップS142:YES)、当該インデックス情報を取得してステップS143に進み、当該インデックス情報が登録されていない場合には(ステップS142:NO)、ステップS144に進む。
ステップS143では、制御部11は、取得したインデックス情報によりコンテンツ保持ノードを特定し、当該コンテンツ保持ノードに対して上記検索メッセージを送信(転送)してステップS144に進む。
ステップS144では、制御部11は、上記検索メッセージに含まれるコンテンツIDに対応するコンテンツデータが自ノードにおける記憶部12に保存されているか否かを判別し、保存されている場合には(ステップS144:YES)、ステップS145に進み、保存されていない場合には(ステップS144:NO)、図8の処理に戻る。
ステップS145では、制御部11は、上記検索メッセージに含まれる送信元のノード情報に対応するノードNnに対して検索返答メッセージを送信し、図8の処理に戻る。
ステップS146では、制御部11は、上記受信されたメッセージが検索返答メッセージであるか否かを判別し、上記受信されたメッセージが検索返答メッセージである場合には(ステップS146:YES)、ステップS147に進み、検索返答メッセージでない場合には(ステップS146:NO)、ステップS148に進む。
ステップS147では、制御部11は、検索返答メッセージにおける送信元のノード情報に対応するコンテンツ保持ノードに対してコンテンツ送信要求メッセージを送信し、図8の処理に戻る。
ステップS148では、制御部11は、上記受信されたメッセージがコンテンツ送信要求メッセージであるか否かを判別し、上記受信されたメッセージがコンテンツ送信要求メッセージである場合には(ステップS148:YES)、ステップS149に進み、コンテンツ送信要求メッセージでない場合には(ステップS148:NO)、ステップS152に進む。
ステップS149では、制御部11は、現在、コンテンツ送信要求に係るコンテンツデータを配信可能であるか否かを判別し、配信可能である場合には(ステップS149:YES)、ステップS150に進み、配信可能でない場合には(ステップS149:NO)、ステップS151に進む。
ステップS150では、制御部11は、上記コンテンツ送信要求メッセージに含まれる送信元のノード情報に対応するユーザノードに対して、上述したように、コンテンツデータが格納されたコンテンツ送信メッセージを送信し、図8の処理に戻る。
ステップS151では、制御部11は、上記コンテンツ送信要求メッセージに含まれる送信元のノード情報に対応するユーザノードに対して、コンテンツ送信不可メッセージを送信し、図8の処理に戻る。
ステップS152では、制御部11は、上記受信されたメッセージがコンテンツ送信メッセージであるか否かを判別し、上記受信されたメッセージがコンテンツ送信メッセージである場合には(ステップS152:YES)、ステップS153に進み、コンテンツ送信メッセージでない場合には(ステップS152:NO)、ステップS154に進む。
ステップS153では、制御部11は、コンテンツ送信メッセージに含まれるコンテンツデータを記憶部11に記憶保存し、これが完了すると、当該コンテンツデータのコンテンツID等を含むパブリッシュメッセージをルートノードに向けて送出し、図8の処理に戻る。
ステップS154では、制御部11は、上記受信されたメッセージがコンテンツ送信不可メッセージであるか否かを判別し、上記受信されたメッセージがコンテンツ送信不可メッセージである場合には(ステップS154:YES)、ステップS155に進み、コンテンツ送信不可メッセージでない場合には(ステップS154:NO)、ステップS156に進む。
ステップS155では、制御部11は、全てのコンテンツデータを管理しているコンテンツ管理サーバに対してコンテンツ送信要求メッセージを送信し、図8の処理に戻る。
ステップS156では、制御部11は、上記受信されたメッセージがパブリッシュメッセージであるか否かを判別し、上記受信されたメッセージがパブリッシュメッセージである場合には(ステップS156:YES)、ステップS157に進み、パブリッシュメッセージでない場合には(ステップS156:NO)、図8の処理に戻る。
ステップS157では、制御部11は、受信されたパブリッシュメッセージに含まれるコンテンツID、送信元のノード情報及びこれに付加された中継ノード識別子を含むインデックス情報を新規登録(インデックスキャッシュ領域に記憶)し、図8の処理に戻る。
以上の図8及び図9の処理における各種メッセージの送信時(ステップS3、S10、S13、S143、S145、S147、S150、S151、及びS153)には、図10に示す処理が行われる。
図10において、制御部11は、メッセージの送信に成功したか否かを判別し(ステップS21)、成功した(メッセージを送ることができた)場合には(ステップS21:YES)、当該処理を終了し、成功しなかった場合には(ステップS21:NO)、ステップS22に進む。
ステップS22では、制御部11は、当該メッセージを送信できなかった送信先のノード情報が中継ノードテーブルに登録されているか否かを判別し、登録されている場合には(ステップS22:YES)、ステップS23に進み、登録されていない場合には(ステップS22:NO)、ステップS24に進む。
ステップS23では、制御部11は、当該送信先のノード情報及び中継ノード識別子を中継ノードテーブルから削除し、更に、当該送信先のノードNnとのソケットに係るセッション情報をソケットテーブルから削除し、セッションを切断(ソケット切断)し、ステップS24に進む。
ステップS24では、制御部11は、当該メッセージを送信できなかった送信先のノード情報が、DHTを用いたルーティングテーブルに登録されているか否かを判別し、登録されていない場合には(ステップS24:NO)、当該処理を終了し、登録されている場合には(ステップS24:YES)、当該送信先のノード情報をルーティングテーブルから削除し(ステップS25)、当該処理を終了する。
以上説明したように、上記実施形態によれば、中継ノードは、NAT越え不可ノードを送信元とするメッセージであって自ノード以外のノードNn宛てのメッセージを受信したとき、当該メッセージに含まれる送信元のノード情報を自ノードのノード情報に書き換え、これにNAT越え不可ノードを示す中継ノード識別子を付加して当該メッセージを宛先のノードNnに送信し、且つ、上記NAT越え不可ノード以外のノードNnを送信元とするメッセージを受信したとき、当該メッセージがNAT越え不可ノードに送信されるべきメッセージであるか否かを、当該メッセージに含まれる宛先のノード情報に付加された中継ノード識別子に基づいて判別し、NAT越え不可ノードに送信されるべきメッセージである場合には、当該メッセージを当該NAT越え不可ノードに送信(転送)するように構成したので、NAT越え不可ノードがコンテンツ分散保存システムSに参加している場合であっても、当該システムSの運用に支障をきたすことなく、各ノードNnの利用者が当該システムS上で提供されるコンテンツデータ配信等のサービスを適切に受けることができる。また、ネットワーク8側からNAT越え不可ノードに中継ノードを介してアクセス可能となるため、リソースを無駄なく利用するこができる。
また、一つのNAT越え不可ノードに対して一つの中継ノードに限定するのではなく、一つのNAT越え不可ノードに対して複数の中継ノードを設けることができるので、多くの中継ノードを均等に利用することができ、複数の通信経路を確保することで中継ノードの負荷を低減することができる。NAT越え不可ノードからのセッション開始により新たにセッションを確立した任意のノードNnを中継ノードとすることができる。
更に、一つのコンテンツデータを所定量の複数分割し、当該分割された夫々の分割コンテンツデータを複数のノードNnに分散保存しておき、これらの分割コンテンツデータを順次ダウンロードする構成においても効率化を図ることができる。
4.変形例
次に、上記実施形態の変形例について説明する。
この変形例においては、上述した中継ノードにおいて中継ノードテーブルは必要とせず、且つ中継ノード識別子も必要としない。但し、当該中継ノードにおけるソケットテーブルに登録されたNAT越え不可ノードとのセッションに係るセッション情報中の接続先(NAT越え不可ノード)のノード情報に含まれるネットワークアドレス情報(つまり、ノードIDを除くIPアドレス及びポート番号)が当該中継ノードのネットワークアドレス情報に置き換えられるようになっている。なお、変形例におけるノードNnの基本的な構成及び機能は上述した実施形態と同様であるので、重複する説明は省略する。
図11は、変形例での中継ノードにおけるソケットテーブルの内容の一例を示す図である。図11の例では、ノードN2におけるソケットテーブルにノード情報が登録されているノードNnのうち、ノードN1はNAT越え不可ノードであるので、当該ノードN1のノード情報に含まれるネットワークアドレス情報は、当該ノードN2のネットワークアドレス情報に置き換えられている。また、ノードN3におけるソケットテーブルにノード情報が登録されているノードNnのうち、ノードN1及びN6はNAT越え不可ノードであるので、当該ノードN1及びN6のノード情報に含まれるネットワークアドレス情報は、当該ノードN3のネットワークアドレス情報に置き換えられている。
なお、書き換えられたNAT越え不可ノードのIPアドレス及びポート番号は、ノードIDおよびソケット識別子に対応付けられて記憶されることになる。
そして、NAT越え不可ノードを送信元とするメッセージであって自ノード以外のノードNn宛てのメッセージが受信されたとき、当該中継ノードの制御部11は、当該メッセージに含まれる送信元のネットワークアドレス情報を自ノードのネットワークアドレス情報に書き換え(ノードIDは書き換えない)、当該メッセージを宛先のノードNnに送信するようになっている。一方、上記NAT越え不可ノード以外のノードNnを送信元とするメッセージが受信されたとき、中継ノードの制御部11は、当該メッセージがNAT越え不可ノードに送信されるべきメッセージであるか否かを、当該メッセージに含まれる宛先のノードIDに基づいて判別するようになっている。そして、当該NAT越え不可ノードに送信されるべきメッセージである場合、当該制御部11は、当該メッセージを、当該NAT越え不可ノードに送信するように制御する。例えば、当該メッセージの宛先のノード情報に含まれるノードIDがNAT越え不可ノードのものである場合、当該受信されたメッセージが上記ソケットを通して当該NAT越え不可ノードに対して送信される。
以下に、変形例でのノードNnの制御部11における処理を図12乃至図14を参照して説明する。
図12乃至図14は、変形例でのノードNnの制御部11における処理の一例を示すフローチャートである。なお、図12に示すステップS31〜S33の処理は、図8に示すステップS1〜S3の処理と同様である。
ステップS34では、制御部11は、他のノードNnからメッセージを受信したか否かを判断し、当該メッセージを受信した場合には(ステップS34:YES)、ステップS35に進み、当該メッセージを受信しない場合には(ステップS34:NO)、ステップS31に戻る。
ステップS35では、制御部11は、当該セッションは新規(再接続の場合の含む)のセッションであるか否かを例えばソケットテーブルから判別し、新規のセッションである場合には(ステップS35:YES)、ステップS36に進み、新規のセッションでない場合には(ステップS35:NO)、ステップS37に進む。
ステップS36におけるコネクション初期化処理では、図13に示すように、制御部11は、ソケットテーブルにおけるセッション情報の登録数が所定数(例えば、上限)に達しているか否かを判別し(ステップS361)、所定数に達している場合には(ステップS361:YES)、ステップS362に進み、所定数に達していない場合には(ステップS361:NO)、ステップS363に進む。
ステップS362では、制御部11は、例えば最も利用されていないソケットに係るセッション情報をソケットテーブルから削除し、セッションを切断(ソケット切断)し、ステップS363に進む。
ステップS363では、制御部11は、互いのノード情報を交換し、新規ソケットの識別子と接続先(通信相手)のノード情報とをソケットテーブルに登録し、ステップS343に進む。
ステップS364では、制御部11は、当該受信されたメッセージの送信元のノードNnはNAT越え不可ノードであるか否かを判別し、NAT越え不可ノードである場合には(ステップS364:YES)、ステップS365に進み、NAT越え不可ノードでない場合には(ステップS364:NO)、ステップS366に進む。
ステップS365では、制御部11は、ソケットテーブルに登録した接続先のノード情報におけるネットワークアドレス情報(つまり、IPアドレス及びポート番号)を、自ノードのネットワークアドレス情報に置き換える。また、受信されたメッセージの送信元のネットワークアドレス情報を自ノードのネットワークアドレス情報に書き換える。
ステップS366では、制御部11は、当該受信されたメッセージの送信元のノード情報が、DHTを用いた自身のルーティングテーブルに登録されているか否かを判別し、登録されている場合には(ステップS366:YES)、当該処理を終了し、登録されていない場合には(ステップS366:NO)、ステップS367に進む。
ステップS367では、制御部11は、当該送信元のノード情報を当該ルーティングテーブルに登録し、図12の処理に戻る。
なお、上記ステップS365の処理後、ステップS367の処理を行っても良い。すなわち、ネットワークアドレス情報が自ノードのものに書き換えられたNAT越え不可ノードのノード情報が、DHTを用いたルーティングテーブルに登録されるのである。これにより、インデックス情報をキャッシュするノードNnを増やすことができる。
図12の処理に戻り、ステップS37では、制御部11は、受信されたメッセージがルートノード向けのものであるか否かを判別し(例えば、メッセージ中に付された「ルートノード向け」であることを示す情報により判別)、ルートノード向けのものでない場合には(ステップS37:NO)、ステップS38に進み、ルートノード向けのものである場合には(ステップS37:YES)、ステップS41に進む。
ステップS38では、制御部11は、当該メッセージの宛先のノード情報に含まれるノードIDは自ノードのノードIDと一致するか否かを判別し、一致しない場合には(ステップS38:NO)、ステップS39に進み、一致する場合には(ステップS38:YES)、ステップS40に進む。
ステップS39では、制御部11は、宛先のノードNnに向けてメッセージを送信(転送)する。なお、この送信処理については、図14を用いて後述する。
ステップS40では、各種メッセージ受信処理が行われる。この各種メッセージ受信処理は、上述した図9に示す処理と同様である。
ステップS41では、制御部11は、上記受信したメッセージの宛先のノード情報に含まれるノードIDのルートノードは自ノードであるか否かを判別し(上述したステップS9と同様)、自ノードである場合には(ステップS41:YES)、ステップS40に移行し、自ノードでない場合には(ステップS41:NO)、ステップS42に進む。
なお、ステップS42の処理は、上述したステップS10の処理と同様である。
ここで、図14を用いてメッセージの送信処理の詳細について説明する。
図14に示す処理は、上記処理においてメッセージを送信(転送)する場合に実行される。なお、送信するべきメッセージにおける送信元及び宛先のノード情報は既に設定されているものとする。
図14において、ステップS51では、制御部11は、送信するべきメッセージの宛先のノード情報に含まれるノードIDと同じノードIDがソケットテーブルに登録されているか否かを判別し、当該ノードIDが登録されている場合には(ステップS51:YES)、ステップS52に進み、当該ノードIDが登録されていない場合には(ステップS51:NO)、ステップS53に進む。
ステップS52では、制御部11は、当該ノードIDに対応するノードNnに対してソケットを通して当該メッセージを送信しステップS56に進む。
例えば、ノードN2が送信しようとしているメッセージの宛先のノード情報に含まれるノードIDが“XXXXX”である場合、図11に示すように、当該ノードN2のソケットテーブルには、ノードID“XXXXX”が登録されているので、ノードID“XXXXX”のソケットが使用されてノードN1(NAT越え不可ノード)に、当該メッセージが送信されることになる。
ステップS53では、制御部11は、送信するべきメッセージの宛先のノード情報に含まれるネットワークアドレス情報と同じネットワークアドレス情報がソケットテーブルに登録されているか否かを判別し、当該ネットワークアドレス情報が登録されている場合には(ステップS53:YES)、ステップS52に進み、当該ネットワークアドレス情報が登録されていない場合には(ステップS53:NO)、ステップS54に進む。
例えば、ノードN2が送信しようとしているメッセージの宛先のノード情報に含まれるノードIDが“YYYYY”であり、且つ、ネットワークアドレス情報が“200.20.2.2”である場合、図11に示すように、ノードN2のソケットテーブルには、“YYYYY”のノードIDは登録されていないが、“200.20.2.2”のネットワークアドレス情報が登録されているので、当該ネットワークアドレス情報が使用されて、これに対応するノードN3に当該メッセージが送信されることになる。そして、ノードN3においては、図11に示すように、ソケットテーブルには、ノードID“YYYYY”が登録されているので、当該ノードID“YYYYY”のソケットが使用されてノードN6(NAT越え不可ノード)に当該メッセージが送信されることになる。つまり、ノードN2は、当該メッセージをノードN3により中継してもらい、ノードN6に送信するのである。
一方、ステップS54では、制御部11は、送信するべきメッセージの宛先のノード情報に含まれるネットワークアドレス情報を使用してセッションを開始し、当該セッションが確立された場合には、ステップS55に示すコネクション初期化処理を行った後、ステップS52に移行する。なお、このコネクション初期化処理は、上述した図13に示す処理と同様である。
次に、ステップS56では、制御部11は、メッセージの送信に成功したか否かを判別し、成功した場合には(ステップS56:YES)、当該処理を終了し、成功しなかった場合には(ステップS56:NO)、ステップS57に進む。
ステップS57では、制御部11は、当該メッセージを送信できなかった送信先のノードNnとのソケットに係るセッション情報をソケットテーブルから削除し、セッションを切断し、ステップS58に進む。
ステップS58では、制御部11は、当該送信先のノード情報が、DHTを用いたルーティングテーブルに登録されているか否かを判別し、登録されていない場合には(ステップS58:NO)、当該処理を終了し、登録されている場合には(ステップS58:YES)、当該送信先のノード情報をルーティングテーブルから削除し(ステップS59)、当該処理を終了する。
以上説明したように、上記変形例によれば、中継ノードは、NAT越え不可ノードを送信元とするメッセージであって自ノード以外のノードNn宛てのメッセージを受信したとき、当該メッセージに含まれる送信元のノード情報に含まれるネットワークアドレス情報だけを自ノードのネットワークアドレス情報に書き換え(ノードIDはそのまま)、当該メッセージを宛先のノードNnに送信し、且つ、上記NAT越え不可ノード以外のノードNnを送信元とするメッセージを受信したとき、当該メッセージがNAT越え不可ノードに送信されるべきメッセージであるか否かを、当該メッセージに含まれる宛先のノードIDに基づいて判別し、NAT越え不可ノードに送信されるべきメッセージである場合には、当該メッセージを当該NAT越え不可ノードに送信(転送)するように構成したので、NAT越え不可ノードがコンテンツ分散保存システムSに参加している場合であっても、中継ノードテーブル及び中継ノード識別子を必要とせずに、先に説明した実施形態よりも効率化を図りつつ、各ノードNnの利用者が当該システムS上で提供されるコンテンツデータ配信等のサービスを適切に受けることができる。
なお、上記においては、中継ノードは、NAT越え不可ノードを送信元とするメッセージであって自ノード以外のノードNn宛てのメッセージを受信したとき、当該メッセージに含まれる送信元の少なくともネットワークアドレス情報を自ノードのネットワークアドレス情報に書き換えて当該メッセージを宛先のノードNnに送信するように構成したが、その他にも、例えば、送信元のネットワークアドレス情報を書き換えることなく、自ノードを送信元としてネットワークアドレス情報を付加して当該メッセージを他のノードNnに送信するように構成しても良い。つまり、当該メッセージを受信した他のノードNnが中継ノードが送信元であることが認識でき、かつ中継ノードは受信したメッセージがNAT越え不可ノードに送信するべきメッセージであるか否かを判断できれば良い。
なお、上記実施形態におけるコンテンツ分散保存システムSは、DHTを利用したアルゴリズムによって形成されることを前提として説明したが、本発明はこれに限定されるものではない。
本実施形態に係るコンテンツ分散保存システムにおける各ノード装置の接続態様の一例を示す図である。 ノードNnの概要構成例を示す図である。 NAT越え不可ノードと中継ノードによるメッセージの送受信の一例を示す概念図である。 NAT越え不可ノードによるコンテンツデータのリクエスト時におけるメッセージの流れの一例を示す概念図である。 NAT越え不可ノードによるコンテンツデータの公開時におけるメッセージの流れの一例を示す概念図である。 NAT越え不可ノードへのコンテンツデータのリクエスト時におけるメッセージの流れの一例を示す概念図である。 一のNAT越え不可ノードから他のNAT越え不可ノードへのコンテンツデータのリクエスト時におけるメッセージの流れの一例を示す概念図である。 任意のノードNnの制御部11における処理の一例を示すフローチャートである。 任意のノードNnの制御部11における処理の一例を示すフローチャートである。 任意のノードNnの制御部11における処理の一例を示すフローチャートである。 変形例での中継ノードにおけるソケットテーブルの内容の一例を示す図である。 変形例でのノードNnの制御部11における処理の一例を示すフローチャートである。 変形例でのノードNnの制御部11における処理の一例を示すフローチャートである。 変形例でのノードNnの制御部11における処理の一例を示すフローチャートである。
符号の説明
8 ネットワーク
9 オーバーレイネットワーク
11 制御部
12 記憶部
13 バッファメモリ
14 デコーダ部
15 映像処理部
16 表示部
17 音声処理部
18 スピーカ
19 通信部
20 入力部
21 バス
Nn ノード
S コンテンツ分散保存システム

Claims (7)

  1. 中継機器を介してネットワークに接続される複数のノード装置を備える通信システムにおける前記ノード装置であって、
    前記ネットワーク側から中継機器を介してセッション開始を受け付けることができない第一ノード装置との間でセッションを確立し保持するセッション保持手段と、
    セッションが確立された他のノード装置との間のメッセージの送受信を制御するメッセージ送受信制御手段と、
    を備え、
    前記メッセージ送受信制御手段は、
    前記第一ノード装置を送信元とするメッセージであって自ノード装置以外のノード装置宛てのメッセージを受信したとき、当該メッセージに含まれる送信元のネットワークアドレス情報を自ノード装置のネットワークアドレス情報にして当該メッセージを宛先のノード装置に送信し、且つ、
    前記第一ノード装置以外のノード装置を送信元とするメッセージを受信したとき、当該メッセージが前記第一ノード装置に送信されるべきメッセージであるか否かを判別し、当該第一ノード装置に送信されるべきメッセージである場合には、当該メッセージを当該第一ノード装置に送信するように制御することを特徴とするノード装置。
  2. 請求項1に記載のノード装置において、
    前記セッション保持手段は、前記第一ノード装置からのセッション開始を受け付け当該セッションが確立された場合に、前記第一ノード装置のネットワークアドレス情報を記憶し、当該セッションを保持することを特徴とするノード装置。
  3. 請求項1又は2に記載のノード装置において、
    前記メッセージ送受信制御手段は、
    前記第一ノード装置を送信元とするメッセージであって自ノード装置以外のノード装置宛てのメッセージを受信したとき、当該メッセージに含まれる送信元のネットワークアドレス情報を自ノード装置のネットワークアドレス情報に書き換え、これに前記第一ノード装置を示す中継情報を付加して当該メッセージを宛先のノード装置に送信し、且つ、
    前記第一ノード装置以外のノード装置を送信元とするメッセージを受信したとき、当該メッセージが前記第一ノード装置に送信されるべきメッセージであるか否かを、当該メッセージに含まれる宛先のネットワークアドレス情報に付加された前記中継情報に基づいて判別することを特徴とするノード装置。
  4. 請求項1又は2に記載のノード装置において、
    前記メッセージには、送信元のノード装置に固有のノード識別情報、前記送信元のネットワークアドレス情報、宛先のノード装置に固有のノード識別情報、及び前記宛先のネットワークアドレス情報が含まれており、
    前記メッセージ送受信制御手段は、
    前記第一ノード装置を送信元とするメッセージであって自ノード装置以外のノード装置宛てのメッセージを受信したとき、当該メッセージに含まれる送信元のネットワークアドレス情報を自ノード装置のネットワークアドレス情報に書き換え、当該メッセージを宛先のノード装置に送信し、且つ、
    前記第一ノード装置以外のノード装置を送信元とするメッセージを受信したとき、当該メッセージが前記第一ノード装置に送信されるべきメッセージであるか否かを、当該メッセージに含まれる宛先の前記ノード識別情報に基づいて判別することを特徴とするノード装置。
  5. コンピュータを、請求項1乃至4の何れか一項に記載のノード装置として機能させることを特徴とするノード処理プログラム。
  6. 中継機器を介してネットワークに接続される複数のノード装置を備える通信システムであって、
    何れかの前記ノード装置は、
    前記ネットワーク側から中継機器を介してセッション開始を受け付けることができない第一ノード装置との間でセッションを確立し保持するセッション保持手段と、
    セッションが確立された他のノード装置との間のメッセージの送受信を制御するメッセージ送受信制御手段と、
    を備え、
    前記メッセージ送受信制御手段は、
    前記第一ノード装置を送信元とするメッセージであって自ノード装置以外のノード装置宛てのメッセージを受信したとき、当該メッセージに含まれる送信元のネットワークアドレス情報を自ノード装置にして当該メッセージを宛先のノード装置に送信し、且つ、
    前記第一ノード装置以外のノード装置を送信元とするメッセージを受信したとき、当該メッセージが前記第一ノード装置に送信されるべきメッセージであるか否かを判別し、当該第一ノード装置に送信されるべきメッセージである場合には、当該メッセージを当該第一ノード装置に送信するように制御することを特徴とする通信システム。
  7. 中継機器を介してネットワークに接続される複数のノード装置を備える通信システムにおけるメッセージ送受信方法であって、
    何れかの前記ノード装置が、
    前記ネットワーク側から中継機器を介してセッション開始を受け付けることができない第一ノード装置との間でセッションを確立し保持する工程と、
    セッションが確立された他のノード装置との間のメッセージの送受信を制御するメッセージ送受信制御工程と、
    を備え、
    前記メッセージ送受信制御工程においては、
    前記第一ノード装置を送信元とするメッセージであって自ノード装置以外のノード装置宛てのメッセージを受信したとき、当該メッセージに含まれる送信元のネットワークアドレス情報を自ノード装置のネットワークアドレス情報にして当該メッセージを宛先のノード装置に送信し、且つ、
    前記第一ノード装置以外のノード装置を送信元とするメッセージを受信したとき、当該メッセージが前記第一ノード装置に送信されるべきメッセージであるか否かを判別し、当該第一ノード装置に送信されるべきメッセージである場合には、当該メッセージを当該第一ノード装置に送信するように制御することを特徴とするメッセージ送受信方法。
JP2007136520A 2007-05-23 2007-05-23 通信システム、ノード装置、ノード処理プログラム、及びメッセージ送受信方法 Active JP4910881B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2007136520A JP4910881B2 (ja) 2007-05-23 2007-05-23 通信システム、ノード装置、ノード処理プログラム、及びメッセージ送受信方法
US12/149,560 US8099506B2 (en) 2007-05-23 2008-05-05 Communication system, node device, node process program and a message transmitting and receiving method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007136520A JP4910881B2 (ja) 2007-05-23 2007-05-23 通信システム、ノード装置、ノード処理プログラム、及びメッセージ送受信方法

Publications (2)

Publication Number Publication Date
JP2008294627A true JP2008294627A (ja) 2008-12-04
JP4910881B2 JP4910881B2 (ja) 2012-04-04

Family

ID=40073437

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007136520A Active JP4910881B2 (ja) 2007-05-23 2007-05-23 通信システム、ノード装置、ノード処理プログラム、及びメッセージ送受信方法

Country Status (2)

Country Link
US (1) US8099506B2 (ja)
JP (1) JP4910881B2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011155513A (ja) * 2010-01-27 2011-08-11 Brother Industries Ltd 情報通信システム、中継ノード装置、情報通信方法及び情報通信プログラム
JP2011234207A (ja) * 2010-04-28 2011-11-17 Brother Ind Ltd 情報通信システム、ノード装置、情報通信方法及びプログラム
JP2012178786A (ja) * 2011-02-28 2012-09-13 Brother Ind Ltd 情報通信システム、情報通信方法、情報処理装置およびプログラム
JP2014519294A (ja) * 2011-06-06 2014-08-07 アルカテル−ルーセント 解決による経路指定

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8788706B2 (en) * 2006-02-27 2014-07-22 Vudu, Inc. Method and system for managing data transmission between devices behind network address translators (NATs)
US10785194B2 (en) * 2017-12-07 2020-09-22 International Business Machines Corporation Processing intents using trusted entities in a dispersed storage network
CN111371666B (zh) * 2018-12-26 2021-12-31 华为技术有限公司 一种处理报文的方法、设备及系统
CN111314458A (zh) * 2020-02-13 2020-06-19 深圳市网心科技有限公司 P2p网络的打洞方法、打洞装置及计算机可读存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004023597A (ja) * 2002-06-19 2004-01-22 Ariel Networks Co Ltd ネットワークシステムおよびプログラム
JP2005027253A (ja) * 2003-07-04 2005-01-27 Fuji Photo Film Co Ltd ピア・ツー・ピア通信システム

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6779035B1 (en) * 2000-03-06 2004-08-17 Microsoft Corporation Application programming interface and generalized network address translator for translation of transport-layer sessions
WO2002057917A2 (en) * 2001-01-22 2002-07-25 Sun Microsystems, Inc. Peer-to-peer network computing platform
US7899932B2 (en) * 2003-01-15 2011-03-01 Panasonic Corporation Relayed network address translator (NAT) traversal
US7774495B2 (en) * 2003-02-13 2010-08-10 Oracle America, Inc, Infrastructure for accessing a peer-to-peer network environment
JP4418897B2 (ja) 2005-01-14 2010-02-24 ブラザー工業株式会社 情報配信システム、情報更新プログラム、及び情報更新方法等

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004023597A (ja) * 2002-06-19 2004-01-22 Ariel Networks Co Ltd ネットワークシステムおよびプログラム
JP2005027253A (ja) * 2003-07-04 2005-01-27 Fuji Photo Film Co Ltd ピア・ツー・ピア通信システム

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011155513A (ja) * 2010-01-27 2011-08-11 Brother Industries Ltd 情報通信システム、中継ノード装置、情報通信方法及び情報通信プログラム
JP2011234207A (ja) * 2010-04-28 2011-11-17 Brother Ind Ltd 情報通信システム、ノード装置、情報通信方法及びプログラム
JP2012178786A (ja) * 2011-02-28 2012-09-13 Brother Ind Ltd 情報通信システム、情報通信方法、情報処理装置およびプログラム
US8943121B2 (en) 2011-02-28 2015-01-27 Brother Kogyo Kabushiki Kaisha Communication across an overlay network
JP2014519294A (ja) * 2011-06-06 2014-08-07 アルカテル−ルーセント 解決による経路指定
US10069720B2 (en) 2011-06-06 2018-09-04 Alcatel Lucent Routing by resolution

Also Published As

Publication number Publication date
JP4910881B2 (ja) 2012-04-04
US8099506B2 (en) 2012-01-17
US20080294785A1 (en) 2008-11-27

Similar Documents

Publication Publication Date Title
JP4910881B2 (ja) 通信システム、ノード装置、ノード処理プログラム、及びメッセージ送受信方法
JP4747733B2 (ja) ノード装置、共用情報更新処理プログラム、共用情報更新方法、及び情報共有システム
US8321586B2 (en) Distributed storage system, node device, recording medium in which node processing program is recorded, and address information change notifying method
JP5556104B2 (ja) 情報通信システム、情報通信方法及び情報通信プログラム
US8619631B2 (en) Information communication system, information communication method, node device included in information communication system and recording medium recording information processing program
US8819295B2 (en) Information communication system, first information processing device, method for processing information, and computer readable storage medium
JP5293533B2 (ja) 情報通信システム及び情報通信方法
JP5370183B2 (ja) 情報通信システム、中継ノード装置、情報通信方法及び情報通信プログラム
JP5272991B2 (ja) 情報通信システム、情報通信方法及びプログラム
WO2006120831A1 (ja) ネットワークシステム、接続確立方法、及びノード装置等
JP4548271B2 (ja) 情報通信システム、情報通信方法、ノード装置、及びコンピュータプログラム
JP5338783B2 (ja) 情報通信システム、ノード装置、情報通信方法及びプログラム
US20080240138A1 (en) Tree type broadcast system, connection target determination method, connection management device, connection management process program, and the like
JP5494550B2 (ja) 管理装置、管理システム、管理方法及び管理プログラム
JP2009232272A (ja) コンテンツ分散保存システム、コンテンツ再生方法、ノード装置、管理装置、ノード処理プログラム、及び管理処理プログラム
JP5370316B2 (ja) ノード装置、情報通信システム、情報通信方法及びプログラム
JP5326968B2 (ja) 情報通信システム、サポート装置、サポート装置のプログラム、及びコンテンツ取得方法
JP2010039722A (ja) ノード装置、管理ノード装置、ノード処理プログラム、管理ノード処理プログラム、コンテンツ分散保存システム、複製データ取得方法
US20110268126A1 (en) Information communication system, node device, information communication method and computer readable storage medium
JP2011008657A (ja) コンテンツ配信システム、ノード装置、コンテンツ配信方法及びノードプログラム
JP5007624B2 (ja) コンテンツ分散保存システム、コンテンツデータ取得方法、ノード装置、及びノード処理プログラム
JP2012050019A (ja) ノード装置、情報通信システム、情報処理方法及び情報処理プログラム
JP5157770B2 (ja) ノード装置、プログラム及び保存指示方法
JP4867845B2 (ja) コンテンツ分散保存システム、コンテンツデータ取得方法、ノード装置、及びノード処理プログラム
JP5353789B2 (ja) ノード装置、情報通信システム、メッセージ送信方法及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100118

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110422

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110531

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110729

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110823

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111124

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20111201

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: 20111220

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120102

R150 Certificate of patent or registration of utility model

Ref document number: 4910881

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150127

Year of fee payment: 3