説明

分散型メッシュネットワーク

【課題】分散型メッシュネットワークを実施するためのデバイス、方法、およびシステムを提供する。
【解決手段】メッシュネットワーク内にのコンピューティングデバイスは、当該コンピューティングデバイスがウェイク状態にある場合に動作する第1のストレージデバイスと、ウェイク状態であろうとスリープ状態であろうと動作する第2のストレージデバイスを備える。第1のストレージデバイスは、メッシュネットワーク内の既知のピアコンピューティングデバイスの最新リストを格納する。第2のストレージデバイスは、コンピューティングデバイスが提供するリソースのリスト、および、コンピューティングデバイスが確認したメッシュネットワーク内のコンピューティングデバイスのリストを格納するローカルブロックを有する。第2のストレージデバイスはさらに、メッシュネットワーク内の未確認のコンピューティングデバイスのリモートリストを格納する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ピア・ツー・ピアネットワークの実施に関する。
【背景技術】
【0002】
ピア・ツー・ピア分散型ネットワークは一般的に、他の種類のネットワークとは違って、集中管理サーバを多く利用することを要件とすることなくネットワーク機能を実現する。各コンピュータでの電力効率の改善の必要性が益々高まっている。大規模なネットワーク上に所与の時間に存在するコンピュータの数を考えると、コンピュータ1台当たりの電力を低減する方法およびデバイスを実現することによって、会社および/または産業全体では大幅な電力削減につながる。
【図面の簡単な説明】
【0003】
本発明の例を図面に図示するが、本発明は図面に限定されるものではない。図面では、同様の参照番号は同様の構成要素を示すものとする。図面は以下の通りである。
【図1】メッシュネットワークに含まれるコンピューティングデバイスの実施形態を示す図である。
【図2】メッシュネットワークの実施形態を示す図である。
【図3】メッシュネットワークにおけるノード間親密度の実施形態を示す図である。
【図4】ローカルノードのメッシュネットワーク情報を更新する方法の実施形態を示すフローチャートである。
【図5】ローカルノードがメッシュネットワーク内の別のノードを確認して当該別のノードと関連メッシュネットワーク情報のやり取りを行う方法の実施形態を示すフローチャートである。
【図6】ローカルノードが第三者サーバに接触して当該第三者サーバによってリーダーノードにアップグレードされる方法の実施形態を示すフローチャートである。
【発明を実施するための形態】
【0004】
分散型メッシュネットワークを実施するためのデバイス、方法、およびシステムの実施形態を説明する。
【0005】
分散型メッシュネットワークは、多くのピア・ツー・ピアノードを備える。各ノードは、当該ノードが起きている(ウェイク)状態でも、寝ている(スリープ)状態であっても、メッシュネットワーク上のほかのノードにも利用可能な格納位置およびロジックを含む。2つのノードがやり取りを行う場合、メッシュネットワークへの参入が許可されていることを1以上の認証手順を経て互いに確認するとしてよい。両ノードは、各ノードが持つリソースに関する情報および各ノードがメッシュネットワーク上で存在を認識しているノードのリストである既知ノードリストを交換するとしてよい。第1のノードは、自身が既に認識しているノードのそれぞれから既知ノードリストを取得することによって、メッシュネットワークを通り抜けるとしてよい。こうして、第1のノードは、自身が本来所有していた既知ノードリストに基づき認識するにようになった任意の新しいノードと接触することができるようになる。
【0006】
また、メッシュネットワークの外部の第三者サーバが、メッシュネットワークと第三者サーバとの間に通信トンネルを形成する指定リーダーノードを用いて、当該メッシュネットワークに存在するその他のノード全てに関する各ノード情報を提供するとしてよい。多くの実施形態に係るメッシュネットワークは、当該メッシュネットワーク内のノードの多くをスリープ状態としたまま、任意の1つのノードに当該メッシュネットワーク内の任意のほかのノードからリソースを取得させることができるので、当該メッシュネットワーク全体で電力が削減される。リソースを要求する要求ノードは、第三者サーバに要求を送り、第三者サーバは、リーダーノードを介して、リソースが要求されているターゲットノードに目覚め(ウェイクアップ)コマンドを送る。こうして、ターゲットノードはウェイク状態になり、要求ノードにリソースを提供して、スリープ状態に戻るとしてよい。
【0007】
以下に記載する説明および請求項では、開示技術の「一実施形態」または「実施形態」と記載することがあるが、これは当該実施形態に関連付けて説明した特定のフィーチャ、構造、または特性が、開示技術の少なくとも1つの実施形態に含まれることを意味するものである。このため、本明細書では何度も「一実施形態」という記載が見られるが、必ずしも全てが同じ実施形態に言及しているとは限らない。以下に記載する説明および請求項では、「備える」、「含む」および「有する」といった用語を用いる場合があるが、意味は同じである。
【0008】
図1は、メッシュネットワークに含まれるコンピューティングデバイスの実施形態を示す図である。コンピュータデバイスは、ノードと呼ばれることもあり、特にローカルノード100と呼ばれることもある。ローカルノード100は、コンピューティングデバイスとして構成されるとしてよい。例えば、ローカルノード100は、デスクトップコンピュータ、ラップトップコンピュータ、ワークステーションコンピュータ、サーバ、ハンドヘルドコンピューティングデバイス、ゲーム機、テレビ用セットトップボックス、別のデバイスに一体化して設けられているコンピュータ(例えば、自動車ダッシュボード用コンピュータ)、または、別の形態のコンピューティングデバイスであってよい。ローカルノード100は、システムメモリ102を備える。システムメモリ102は、ダイナミックランダムアクセスメモリ(DRAM)等の揮発性メモリであってもよいし、または、フラッシュメモリ等の不揮発性メモリであってもよい。
【0009】
ローカルノードは、数種類のストレージ、例えば、ディスクストレージ104(例えば、ハードドライブ)およびフラッシュストレージ106(例えば、フラッシュメモリ、フラッシュメモリドライブ等)を備えるとしてよい。ディスクストレージ104およびフラッシュストレージ106は、不揮発性ストレージデバイスであり、複数の電力サイクルにわたって情報を保存することができる。つまり、ローカルノードの電源が切られたり、または、スリープ状態になった場合でも、ディスクストレージ104およびフラッシュストレージ106は、次にローカルノードの電源が入った時に当該情報を利用可能な状態に情報を保持するとしてよい。
【0010】
多くの実施形態において、ローカルノードはさらに、アウトオブバンド(OOB)管理ロジック108を備える。OOB管理ロジック108は、ローカルノード100のほかの部分がスリープ状態または電源が入っていない状態において、動作する回路を有するとしてよい。OOB管理ロジックの一例を挙げると、Intel(登録商標)社のアクティブ・マネジメント・テクノロジー(AMT)がある。OOB管理ロジック108には多くの用途があり、例えば、ハードウェア障害あるいはソフトウェア障害が発生したことによって、または、ローカルノード100がスリープ状態にある等の多くの理由によってローカルノード100が動作していない場合に、ローカルノード100の少なくとも一部分に対するリモートアクセスを可能とする。多くの実施形態によると、OOB管理ロジック108は、ローカルノード100が標準的なインバンド管理方式を利用していないときにローカルノード100が管理する方式であるアウトオブバンド方式でローカルノード100を管理する。例えば、ローカルノード100が電力供給が完全に行われている状態で通常動作状態にある場合、ローカルノード100の中央プロセッサ(不図示)がシステムメモリ102内にあるオペレーティングシステム(OS)用の命令を実行しているとしてよい。これは、リモードノードがローカルノード100と通信を実行する場合、ローカルオペレーティングシステムを介した標準通信チャネルが利用され得るので、インバンド動作と呼ばれることがある。一方、ローカルノード100がスリープ状態である場合、中央プロセッサに対する電力供給は100%でなくオペレーティングシステムは動作していないので、ローカルノード100との間で利用可能な唯一の通信方法は、ローカルノード100のほかの部分が動作していない場合に動作するOOB管理ロジック108を介したアウトオブバンド通信となり得る。
【0011】
入出力(I/O)インターフェース110は、ローカルノード100とノード外部の任意の実体との間の通信に用いられる。I/Oインターフェース110は、有線ネットワークインターフェース、アンテナを利用する無線ネットワークインターフェース、および/または、ローカルノード100と1以上のその他の外部デバイスとの間のI/O通信を実現し得る1以上のその他のネットワークインターフェース方法のうち1以上を含むとしてよい。多くの実施形態によると、I/Oインターフェース110は、ローカルネットワーク200に結合されている。ローカルネットワーク200は、有線ネットワークまたは無線ネットワークであってよく、そして、インターネットに結合されているとしてもよいし、または、結合されていないとしてもよい。
【0012】
OOB管理ロジック108は、ローカルノード100がアウトオブバンドモードにあり、OOB管理ロジック108と他のコンピューティングデバイスとの間で通信を行うことが可能である場合に、I/Oインターフェース110の一部または全てを利用するとしてよい。他の実施形態によると、OOB管理ロジック108は、外部と通信を行うために、別個に動作する集積化I/Oインターフェースを有する。
【0013】
多くの実施形態によると、フラッシュストレージ106の少なくとも一部は、OOB管理ロジック108専用である。このように、フラッシュストレージ106は、アウトオブバンド動作時、例えば、ローカルノード100の他の部分がスリープ状態の場合には、OOB管理ロジック108が利用可能およびアクセス可能である。
【0014】
ローカルノード100はさらに、ローカルフラッシュブロック112、リモートフラッシュブロック116、ディスクストレージブロック118、および、OSメッシュエージェント114を備える。これらの構成要素は、図2を参照しつつ詳細に後述する。
【0015】
図2は、メッシュネットワークの実施形態を示す図である。メッシュネットワークは、複数のノード(ノードA 202、ノードB 204、ノードC 206、ノードD 208、ノードE 210、および、ノードF 212)を備える。多くの実施形態によると、ノードAからFのうちいずれも、図1に示したローカルノード100であってよい。つまり、ノードAからFは、図1に詳細を示したローカルノード100が備える構成要素を全て有するとしてよい。例えば、ローカルノード100の各構成要素は、一部を上記で説明したが、ノードA 202の詳細図に示している。図2に示した複数のノードは、ローカルネットワーク200を介して互いに結合されている。ローカルネットワークは、複数のノードが互いに通信し合うことができるような通信ネットワークであればどのような形態であってもよい。ローカルネットワーク200の例を挙げると、イーサネット(登録商標)有線ネットワーク、IEEE802.11ベースの無線ネットワーク、セルラーネットワーク、WiMAX等の広範囲無線ネットワーク、または、他の種類のネットワークがある。当該ネットワークは、ファイヤーウォール216を介して、インターネット214に結合されるとしてよい。ファイヤーウォール216は、ローカルネットワーク200のゲートウェイコンピュータによって保持されるとしてよい。ゲートウェイコンピュータは、ローカルネットワーク200とインターネット214との間で特定の種類の情報の通信を禁止するセキュリティプロトコルを含む。このため、ノードAからFは、全てローカルネットワーク200のメンバーであるので互いに自由に通信し合うことができるが、ノードAからFの任意のノードと、リモートノード、例えば、ローカルネットワーク200にインターネット214を介して通信可能に結合されているノードとの間の通信については、ファイヤーウォール216が実施するセキュリティ処理によって制限されることもある。
【0016】
多くの実施形態によると、ローカルネットワーク200は、分散型「メッシュ」ネットワークである。メッシュネットワークでは、当該ネットワーク内のノードがいずれも、ほかの全てのノードについて認識している必要はない。また、メッシュネットワークでは、全てのノードに関する情報を持つ中央ノードが必ず設けられているわけではない。メッシュネットワーク内の各ノードは、当該メッシュネットワークに含まれるノードのうち自身が知っているノードのリストを保持している(既知ノードは、知人ノードとも呼ばれるとしてよい)。この知人ノードリストは、フラッシュストレージ106内に保持されているローカルフラッシュブロック112に格納されるとしてよい。多くの実施形態によると、知人ノードリストの各項目は、対応する知人ノードのIP(インターネットプロトコル)アドレスを含む。2つのノードは、互いを認識しており悪意のない実体であると互いに認めている場合、相手を「友人」と呼ぶとしてよい。各ノードは、ネットワーク内の他のノードに広告する一意的なメッシュ証明書を所有しているとしてよい。多くの実施形態によると、2つのノードが友人関係を構築するためには、ネットワークへの参入が許可されていることを証明する正当なメッシュ証明書を交換する必要がある。この交換は、さまざまな方式のうちいずれかで行われるとしてよいが、公開鍵であるメッシュ証明書と各ノードに一意的に設定されている秘密鍵とを組み合わせるハッシュアルゴリズム等の認証手順を含むとしてよい。
【0017】
対照的に、第1のノードが第2のノードを認識しているが、第2のノードがメッシュ証明書の生成に失敗した場合、第1のノードは第2のノードを「敵ノード」と見なすとしてよい。第2のノードが友人ノードであっても敵ノードであっても、第1のノードが第2のノードを認識すると、第2のノードは第1のノードの知人ノードになるとしてよい。一部の実施形態では、ノードが保持している知人ノードリストは、各ノードと直接接触した最新時を示す時間スタンプを含むとしてよい。多くの実施形態によると、知人ノードリスト自体には、リストが更新される度に、バージョン番号および時間スタンプが付与される。知人ノードリストの更新では、ネットワークに新しく参加したノードの追加、ネットワークから抜けたノードの削除、ノードの友人/敵ステータスの変更等を行う。メッシュネットワーク内の各ノードは、リストに記載されており認識しているノードを全て監視することができる。所与のノードがメッシュ証明書を提示していない場合、この証明書なしのノードの知人ノードは、知人ノードリストに、証明書が無いことに関する警告を追加するとしてよい。
【0018】
2つのノード間に信頼関係を構築するためには、メッシュ証明書を用いたセキュリティハンドシェイクを実行する必要があるとしてよい。一部の実施形態によると、ノードは別のノードとまず知人関係を構築し、この知人ノードを友人ノードに昇格させるためには、メッシュ証明書によるセキュリティ証明が必要となるとしてよい。他の実施形態では、第1のノードが、第2のノードを友人ノードと見なしている場合、第2ノードの友人であるノードは自動的にいずれのノードも自身の友人ノードと見なすとしてよい(つまり、友人の友人もまた友人)。これは、友人ノード間で予め定められている安全検査レベルのためであり、ある1つのノードが新しい知人ノードを新しい友人ノードと認証すると、他の友人ノードは全て、利用するメッシュ証明書ハンドシェイクの安全検査のレベルが同一であるので、この新しい知人ノードは自身の友人でもあると見なすことができる。
【0019】
図3は、メッシュネットワークにおけるノード間親密度の実施形態を示す図である。ノードA 300は、ノードB 302、ノードC 304、および、ノードD 306について知っているが、ノードE 308およびノードF 310については知らない。しかし、ノードC 304は、ノードA 300の友人ノードであり、ノードE 308およびノードF 310を知っている。この場合、ノードA 300は、ノードE 308およびノードF 310に関する情報について友人ノードであるノードC 304に要求して、既知の友人ノードのリストにこれら2つのノードを入れるとしてよい。
【0020】
図2に戻って説明を続けると、各ノードは、既知の知人ノードのリストを保持する以外に、メッシュネットワーク内のほかのノードに提供することができるリソースのリストも保持している。リソースのリストは、ファイルメタデータ、例えば、全ての共有ファイルおよびファイルフラグメントの名称、サイズ、および、作成日時を含むとしてよい。他の実施形態によると、リソースには、ファイルメタデータ以外にも、ノードが提供可能なサービスおよび機能のリストが含まれるとしてよい。例えば、ノードA 202は、他のノードに関連するデータセットの一部分を格納しているとしてよい。これは、メッシュネットワークの各ノードがファイルの一部分を格納しており、自身が保有する部分を他のノードに提示するピア・ツー・ピアのファイル共有環境では一般的であるとしてよい。他の実施形態では、所与のノードが、リストに記載されているファイルを、ファイルの一部分ではなく、全て格納するとしてよい。
【0021】
多くの実施形態によると、各ノードはOSメッシュエージェント114を有する。OSメッシュエージェント114は、ノードがウェイク状態で100%の状態で機能している場合に、ロードされるとしてよい。OSメッシュエージェント114は、OSが動作状態にある場合にバックグラウンドで実行されるプロセスであってよい。OSメッシュエージェント114が提供する機能は、OOB管理ロジック108が提供する機能の一部と同じであるとしてよい。つまり、ノードがスリープ状態にある場合、OOB管理ロジック108がノード間通信およびリスト管理を実行して、ノードがウェイク状態にある場合、OSメッシュエージェント114がノード間通信およびリスト管理を実行する。多くの実施形態によると、OOB管理ロジック108が無いノードにOSメッシュエージェント114がロードされるとしてもよく、この場合、当該ノードがウェイク状態の場合にノード間通信を可能とするが、OOB管理ロジック108がないノードは、スリープ状態の場合、ノード間通信を実行することができない。
【0022】
所与のノードは、各友人ノードに接触して、各友人ノードから知人ノードのリストを受信して、知人ノードリストに含まれるノードに接触して、メッシュネットワーク内のナビゲーションを実現するとしてよい。このため、OSメッシュエージェント114は、各友人ノードのローカルフラッシュブロックに保持されている知人ノードリストを読み出すとしてよい。このナビゲーションは、ノードがウェイク状態であろうとスリープ状態であろうと発生するとしてよい。これは、ナビゲーションを行うノードは、メッシュネットワーク内の別のノードがウェイク状態であろうとスリープ状態であろうと、この別のノードが、OOB管理ロジック108によってスリープ状態でも保持されるローカルフラッシュブロックを含む限りにおいて、この別のノードに接触できるためである。多くの実施形態によると、ウェイク状態ではOSメッシュエージェント114が訪問ノードにローカル情報を提供し、スリープ状態ではOOB管理ロジック108が訪問ノードにローカル情報を提供する。一部の実施形態では、ノードが備えるOSメッシュエージェント114およびOOB管理ロジック108の両方が、ローカルフラッシュブロックから知人ノード情報およびリソース情報を取得して、訪問ノードに提供する。一部の実施形態によると、このノードがウェイク状態の場合に、知人ノード情報およびリソース情報をローカルフラッシュブロック112から取得されるとしてよい。このようにして、多くの実施形態において、所与のノードは、他のノードがウェイク状態かスリープ状態かに関わらず、メッシュネットワーク内のナビゲーションを完遂することができるとしてよい。
【0023】
また、多くの実施形態では、所与のノードは、ネットワーク内をナビゲーションする場合、知人ノードリストおよびリソースリストを、訪問する各ノードに残すとしてもよい。訪問する側のノードは、訪問される側のノードのフラッシュストレージ106のリモートフラッシュブロック116にこの情報(リソースおよび知人ノード)を入れるとしてよい。一部の実施形態によると、訪問される側のノードがスリープ状態である場合、ウェイク状態になるまで、この情報はリモートフラッシュブロック116内にそのまま格納されるとしてよい。
【0024】
訪問された側のノードがウェイク状態になると、このノードのOSメッシュエージェント114が、リモートフラッシュブロック116から情報を読み出して、訪問したノードが入れた情報を処理するとしてよい。この処理において、OSメッシュエージェント114は、訪問したノードが入れた情報を、訪問したノードが残した知人ノードリストを比較することによって、確認するとしてよい。両方のリストに共通している知人ノードは、ローカルノードで既に確認されたノードである。訪問したノードの知人ノードのうちローカルノードの知人ノードリストに無い知人ノードがあれば、このような未知の知人ノードを確認するための処理をさらに実行するとしてよい。具体的には、訪問したノードの知人ノードリストに、ローカルノードのローカルフラッシュブロック112に保持されている知人ノードリストにはない知人ノードが1以上ある場合、OSメッシュエージェント114は、未知の知人ノードに接触して、1以上の新たなノードとメッシュ証明書を交換して、1以上の新しいノードをローカルフラッシュブロック112が格納している知人ノードのローカルリストに追加するとしてよい。
【0025】
さらに、新しい知人ノードのリソース情報は、OSメッシュエージェント114によって利用されるとしてもよい。ローカルディスクストレージ104が格納しているディスクストレージブロック118は、メッシュネットワーク200内の既知のノード全てについて既知の情報を全て格納しているとしてよい。例えば、ディスクストレージブロック118は、既知のノードそれぞれのIPアドレスおよび各ノードのリソースリストを含むとしてよい。多くの実施形態によると、各ノードについてほかの情報も同様に格納されるとしてよい。例えば、各知人ノードに対する平均ネットワークピング(ping)レイテンシが格納されているとしてよい。所与のノードのOSメッシュエージェント114は時折(当該ノードがウェイク状態である場合に)、メッシュネットワーク200内のノードについて既知の情報をメンテナンスする目的で更新するとしてよい。具体的には、知人ノードリストに含まれている各ノードに接触して、各知人ノードに関して保有している情報を更新する。他のノードに関する情報の一部は、訪問ノードがリモートフラッシュブロック116に格納している情報から取得されるとしてよい。他のノードに関する他の情報は、OSメッシュエージェント114が別のノードと積極的に接触する際に、メッシュネットワーク内のほかのノードから直接取得されるとしてよい。
【0026】
所与のノードについて、ローカルフラッシュブロック112および/またはディスクストレージブロック118に格納されている知人ノード情報を、当該ノードがスリープ状態からウェイク状態に移行する度に、訪問ノードがリモートフラッシュブロックに格納した知人ノード情報と比較するとしてよい。訪問ノードが格納したリストが新しいノードのIPアドレスを含む場合(つまり、OSメッシュエージェント114が保持している知人ノードリストにこの新しいノードが含まれていない場合)、OSメッシュエージェント114は、新しいノードと接触して、新しいノードとメッシュ証明書を交換して新しいノードを確認して、ローカルの知人ノードリストに追加するとしてよい。
【0027】
多くの実施形態によると、インターネット214には第三者(3P)サーバ218が結合されている。3Pサーバ218は、メッシュネットワーク内の全てのノードを記載したリストを保持しているとしてよい。当該リストは、各ノードのIPアドレスと、各ノードが提供するリソースを含む。3Pサーバ218は、ファイヤーウォール216の外側に位置しているので、当該サーバとメッシュネットワーク200内の任意の所与のノードとの間でやり取りすることができる情報の量は、非常に限定される可能性がある。このようなファイヤーウォールに関連する通信の問題を解決するべく、多くの実施形態では、メッシュネットワーク200内にリーダーノードを設けている。リーダーノードは、ネットワーク内の任意の所与のノードであってよい。多くの実施形態において、OSメッシュエージェント114および/またはOOB管理ロジック108は、ネットワーク内の全ての(または少なくとも大半の)ノードに設けられており、これらのノードをリーダーノードへと昇格させるためのリーダーロジックをさらに有するとしてよい。あるノード(例えば、ノードA 200)がリーダーノードへと昇格させられると、3Pサーバ218との間に二方向通信トンネル220を形成するとしてよい。この二方向通信トンネルは、ファイヤーウォール216が課しているセキュリティ上の制限を回避することができるので、リーダーノードは3Pサーバ218と自由に通信することができるようになる。
【0028】
一部の実施形態によると、リーダーロジックは、メッシュネットワーク内の所与のノードをウェイク状態にする機能を持つとしてよい。対照的に、リーダーノード以外のノードは、この機能を持たないとしてよい。
【0029】
上述したように、3Pサーバ218は、メッシュネットワーク200に含まれる全てのノードを記載したリストおよび各ノードが提供するリソースのリストを格納している。この情報は、ネットワーク内のどのノードからも自由に読み出せるとしてよい。例えば、3Pサーバ218に格納されているこの情報は、簡単なHTML(ハイパーテキストマークアップ言語)ファイルとして読み出されるとしてよい。尚、HTMLファイルは通常、ファイヤーウォール216を介して読み出すことが容認されている情報である。
【0030】
また、所与のノード(例えば、ノードC 206)は、メッシュネットワーク200内の別のノード(例えば、ノードE 210)が維持しているリソースリストが、ノードC 206がアクセスする必要があるリソースを含むことを発見するとしてよい。ノードE 210のこのリソースリストは、ノードE 210のローカルフラッシュブロックに保持されているとしてよい。ノードE 210のリソースリストは、3Pサーバ218にも保有されているとしてよい。ノードC 206は、ノードE 210をウェイク状態にするよう要求する通信内容を3Pサーバ218に送って、リストに記載されている必要なリソースを取得するとしてよい。多くの実施形態では、3Pサーバは、ノードC 206に対するウェイク状態への移行要求を、構築された二方向通信トンネル220を介してノードA 202に送るとしてよい。リーダーノードA 202は、この要求を受信して、メッシュネットワーク200内のノードE 210と直接接触して、ノードE 210をウェイク状態へと移行させるとしてよい。また、リーダーノードA 202は、ノードE 210にリソース要求を送って、ノードE 210から本来のリソース要求者であるノードC 206へと必要なリソースを提供させるとしてよい。
【0031】
このような通信制御プロセスは、二方向通信トンネル220が構築されている場合、ネットワーク内の任意のノードに関してリーダーノードが実行するプロセスであるとしてよい。3Pサーバ218は、ファイヤーウォール216のセキュリティ処理のためにこの要求をターゲットノードに直接送ることはできないが、二方向通信トンネルを用いてリーダーノードを介してこの要求を送ることができる。
【0032】
メッシュネットワーク200の各ノードがローカルフラッシュブロック内に保持する知人ノードリストは、リスト内のどのノードがリーダーノードであるかを記述する情報をさらに含むとしてよい。OSメッシュエージェント114および/またはOOB管理ロジック108は、メッシュネットワーク200内のノードをリーダーノードも含めて全て含むノードリストを取得するべく、3Pサーバ218のIPアドレスを保持するとしてよい。ある状況下では、リーダーノードが存在しない場合があるとしてよい。例えば、リーダーノードが何らかの理由でメッシュネットワーク200から切断されると、メッシュネットワーク200内にはリーダーノードが存在しないことになる。このような状況では、3Pサーバ218と接触するノードが自動的にリーダーノードに昇格されるとしてよい。尚、これが可能なノードはリーダーロジックが設けられているノードのみである。3Pサーバ218は、継続的に二方向通信トンネルをモニタリングするとしてよく、このトンネルが遮断されると、フラグ(例えば、「リーダーポジション空きフラグ」)を設定して、3Pサーバ218と次に接触するノードにリーダーノードに昇格するように指示するとしてよい。このため、3Pサーバ218と接触する最初のノード(例えば、ノードB 204)は、フラグを参照してリーダーノードへと昇格する。ノードB 204は、リーダーノードに昇格することによって、ウェイク状態移行要求を用いて他のノードをウェイク状態に移行させることができるようになる。また、ノードB 204は、リーダーノードに昇格することによって、3Pサーバ218との間に新たに二方向通信トンネルを構築することができる。
【0033】
メッシュネットワークに新しいノードが追加されると、新しく追加されたノードは、メッシュネットワーク上でブロードキャストメッセージを用いて他のローカルノードに自らの存在を公表するとしてよい。続いて、メッシュネットワーク内の少なくとも1つのノードが新しいノードと接触して、ネットワークへの参入を承認するためのセキュリティ認証手順を実行するとしてよい。この後、新しく追加されたノードは、接触したノードの知人ノードリストを利用して、メッシュネットワーク内のナビゲーションを開始するとしてよい。これに代えて、新しく追加されたノードは、ネットワーク管理部からメッシュネットワーク内のローカルノードのIPアドレス、または、3PサーバのIPアドレスを単に与えられるのみとしてもよい。新しく追加されたノードは、3PサーバのIPアドレスが与えられる場合、3PサーバからローカルノードのIPアドレスを取得するとしてよい。そして、新しく追加されたノードは、ローカルノードとの間で、最初のメッシュ証明書交換認証手順を実行するとしてよい。多くの実施形態によると、新しく追加されるノードにおいて、OOB管理ロジックは、デフォルト設定ではディセーブルになっているとしてよい。このため、新しく追加されたノードと最初に接触するメッシュネットワーク内のノードであるローカルノードは、新しく追加されたノード内にOOB管理ロジックを最初に設定するために必要な最初の高信頼性接続を形成するとしてよい。OOB管理ロジックを最初に設定するためには、新しく追加されたノードの正当性(および、メッシュネットワーク内のローカルノードの正当性)を認証するための1以上の公開鍵および秘密鍵を用いたセキュリティハンドシェイクが必要となるとしてよい。メッシュネットワーク内のローカルノードとの間に高信頼性接続が構築されると、OOB管理ロジックがイネーブルされて、新しく追加されたノードはメッシュネットワーク内のナビゲーションを開始して他のノードに関する情報を収集するとしてよい。
【0034】
図4は、ローカルノードのメッシュネットワーク情報を更新する方法の実施形態を示すフローチャートである。
【0035】
同図に示す方法は、ハードウェア(例えば、汎用コンピュータの回路)、ソフトウェア(例えば、OSまたはソフトウェアアプリケーションコード)、ファームウェア(例えば、マイクロコードまたは基本入出力システム(BIOS)コード)、または、このような形態の処理ロジックのうち任意の2つ以上を組み合わせたものを含む処理ロジックによって実行される。多くの実施形態によると、図4の処理ロジックは、メッシュネットワークのローカルノードに設けられている。また、当該方法では、メッシュネットワーク内の別のノードがローカルノードのリモートブロックに自分の知人ノードリストを格納しているものと仮定されている。当該方法は、処理ロジックが「現在ノード」変数を、ローカルノードのリモートブロックに格納されている知人ノードリストの最初に記載されているノードを指し示すように設定することから開始される(処理ブロック400)。
【0036】
続いて、処理ロジックは、リモートブロックの知人リストに記載されている現在ノードが、ローカルブロックの知人ノードリストにも含まれているか否かを判断する(処理ブロック402)。現在ノードが含まれていない(つまり、ローカルノードは現在ノードを認識していない)場合、処理ロジックは現在ノードの確認を試みる(処理ブロック404)。確認手順は、さまざまな実施形態において利用されるノードを確認/認証するための多くの種類の手順のうちいずれかであってよい。確認手順の一例を図5を参照しつつ後述する。
【0037】
ローカルノードと現在ノードとの間で確認手順が無事に完了すると仮定すると、処理ロジックはその後、現在ノードの情報を自分のローカルブロックの知人ノードリストおよびディスクストレージブロックに保存するとしてよい(処理ブロック406)。この保存される情報には、現在ノードのIPアドレス、認証が完了した時間を示すタイムスタンプ等の情報が含まれるとしてよい。処理ロジックはこの後、現在ノードのリソースリストを自分のディスクストレージブロックに保存することができる(処理ブロック408)。例えば、リソースリストは、現在ノードがメッシュネットワークに対して提供している全てのファイルおよび部分ファイルのメタデータを含むとしてよい。そして、処理ロジックは、処理しているリモートブロックの知人ノードリストの最後であるか否か、または、リスト内にノードが残っているか否かを判断する(処理ブロック412)。リストの最後であれば、リストの処理は終了する。リストの最後でなければ、処理ロジックは現在ノードをリスト内の次のノードにインクリメントして(処理ブロック414)、ブロック402に戻って処理を続ける。
【0038】
ブロック402に戻って、現在ノードがローカルノードのローカルブロック内にある知人ノードリストに含まれていれば(つまり、ローカルノードが既に現在ノードを認識していれば)、処理ロジックは、ローカルノードのディスクストレージブロックに格納されている現在ノードのリソース情報が最新のものであるか否かを判断する(処理ブロック410)。例えば、リソース情報は、現在ノードが最後にリソース情報リストを更新した正確な時刻を示すタイムスタンプを含むリストであるとしてよい。このため、現在ノードが、ローカルブロック格納位置に格納されているリソース情報リスト内に他のノードに提供しているとして記載されているリソースを更新すれば、リスト全体のタイムスタンプもまた更新される。リソース情報リストは、タイムスタンプと共に、他のノード(のディスクストレージブロック)に格納されている。例えば、ローカルノードが、ディスクストレージブロックに格納しているリストにおいて現在ノードのリソース情報が変更されたか否かを調べたい場合、自分が格納しているタイムスタンプと、現在ノードがローカルブロックに現在保有しているタイムスタンプとを比較することができる。これら2つのタイムスタンプが一致すれば、ローカルノードは、保有しているリソース情報リストが現在のものであると結論付ける。これら2つのタイムスタンプが一致しない場合、ローカルノードは、保有しているリソース情報リストが古いものであると結論付ける。
【0039】
処理ロジックは、リソース情報リストが最新のものでない場合、現在ノードのリソースリストを自分のディスクストレージブロックに保存する(処理ブロック408)。処理ロジックはその後、処理しているリモートブロックの知人ノードリストの最後であるか否か、または、リスト内にノードが残っているか否かを判断する(処理ブロック412)。リストの最後であれば、リストの処理は終了する。リストの最後でなければ、処理ロジックは現在ノードをリスト内の次のノードにインクリメントして(処理ブロック414)、ブロック402に戻って処理を続ける。
【0040】
ブロック410に戻って、処理ロジックは、リソース情報リストが最新のものであれば、処理しているリモートブロックの知人ノードリストの最後であるか否か、または、リスト内にノードが残っているか否かを判断する(処理ブロック412)。リストの最後であれば、リストの処理は終了する。リストの最後でなければ、処理ロジックは現在ノードをリスト内の次のノードにインクリメントして(処理ブロック414)、ブロック402に戻って処理を続ける。
【0041】
図5は、ローカルノードがメッシュネットワーク内の別のノードを確認して当該別のノードと関連メッシュネットワーク情報のやり取りを行う方法の実施形態を示すフローチャートである。
【0042】
同図に示す方法は、ハードウェア(例えば、汎用コンピュータの回路)、ソフトウェア(例えば、OSまたはソフトウェアアプリケーションコード)、ファームウェア(例えば、マイクロコードまたは基本入出力システム(BIOS)コード)、または、このような形態の処理ロジックのうち任意の2つ以上を組み合わせたものを含む処理ロジックによって実行される。多くの実施形態によると、図5の処理ロジックは、メッシュネットワークのローカルノードに設けられている。
【0043】
当該方法は、ローカルノード(例えば、第1のノード)に設けられている処理ロジックが、メッシュネットワーク内の別のノード(例えば、第2のノード)に接触することによって開始される(処理ブロック500)。「接触する」プロセスでは、第1のノードが第2のノードのIPアドレス(または、位置情報を与える別の種類のアドレス)を保有していることが要件となる。接触が行われると、第1のノードの処理ロジックは、第2のノードとの間でメッシュ証明書確認手順を実行するとしてよい(処理ブロック502)。メッシュ証明書確認手順では、第1のノードが自分のメッシュ証明書を第2のノードに提供して、第2のノードが自分のメッシュ証明書を第1のノードに提供するとしてよい。確認手順が完了すると、確認手順が成功したと仮定して、第1のノードの処理ロジックは、第2のノードの知人ノードリストを第2のノードのローカルブロック格納位置から取得するとしてよい(処理ブロック504)。
【0044】
最後に、処理ロジックは、第1のノードの知人ノードリストを第2のノードのリモートブロックに格納する(処理ブロック506)。この結果、第1のノードの既知の知人ノード情報は第2のノードに渡される。この手順全体が終了すると、第1のノードおよび第2のノードにおいて、確認手順前には各ノードが別個に保有していた知人ノード情報がまとめられる。
【0045】
図6は、ローカルノードが第三者サーバに接触して当該第三者サーバによってリーダーノードにアップグレードされる方法の実施形態を示すフローチャートである。
【0046】
同図に示す方法は、ハードウェア(例えば、汎用コンピュータの回路)、ソフトウェア(例えば、OSまたはソフトウェアアプリケーションコード)、ファームウェア(例えば、マイクロコードまたは基本入出力システム(BIOS)コード)、または、このような形態の処理ロジックのうち任意の2つ以上を組み合わせたものを含む処理ロジックによって実行される。多くの実施形態によると、図6の処理ロジックは、メッシュネットワークのローカルノードに設けられている。
【0047】
当該方法は、ローカルノード内の処理ロジックが第三者サーバに接触することによって開始される(処理ブロック600)。第三者サーバのIPアドレスは、メッシュネットワーク内の別のノードによって、または、メッシュネットワーク管理部によって、ローカルノードに提供されるとしてよい。続いて、処理ロジックが第三者サーバに、メッシュネットワーク内のリーダーポジションが空いているか否かを問い合わせる(処理ブロック602)。リーダーポジションが空いているのは、リーダーポジションが空いていることを意味するグローバル可視フラグを第三者サーバが設定している場合であるとしてよい。リーダーポジションが空いていて、且つ、ローカルノードがリーダーへと昇格する機能を持つ場合、ローカルノードは専用の二方向通信トンネルを第三者サーバとの間に構築する(処理ブロック604)。このような専用トンネルによって、ローカルノードは、第三者サーバから、詳細な情報およびコマンドを受信することができるようになる。ファイヤーウォール等のセキュリティ手順がメッシュネットワークに対して設けられているので、トンネルがなければ、ローカルノードは第三者サーバからコマンドを受信することが不可能になってしまうこともある。多くの実施形態によると、トンネル構築前に、ローカルノードと第三者サーバとの間でセキュアな確認手順を実行して、互いに認証し合うとしてよい。リーダーポジションが空いていない場合、処理を終える(つまり、メッシュネットワーク内の別のノードが既にリーダーノードとして設定されており、この別のノードが現在動作していることになる)。
【0048】
分散型メッシュネットワークを実施するためのデバイス、方法、およびシステムの実施形態を説明した。上述した実施形態は、具体的な実施形態例を参照しつつ説明している。本明細書に記載した実施形態を広く解釈した場合の思想および範囲を逸脱することなく、本開示内容に基づき上記の実施形態をさまざまな点で変形および変更し得ることは、明らかである。したがって、本明細書および添付図面は、本発明を限定するものではなく例示するものと解されたい。

【特許請求の範囲】
【請求項1】
メッシュネットワークに含まれる第1のコンピューティングデバイスであって、
前記第1のコンピューティングデバイスがウェイク状態の場合に動作し、前記メッシュネットワークに含まれる既知のピアコンピューティングデバイスの最新リストを格納する第1のストレージデバイスと、
少なくとも、前記第1のコンピューティングデバイスが提供するリソースのリスト、および、前記メッシュネットワークに含まれる、前記第1のコンピューティングデバイスが確認済のコンピューティングデバイスのリストを格納するローカルブロックと、前記メッシュネットワークに含まれる、未確認のコンピューティングデバイスのリモートリストを格納するリモートブロックとを有し、前記コンピューティングデバイスの任意の中央演算処理装置がウェイク状態かスリープ状態かに関係なく動作する第2のストレージデバイスと
を備える第1のコンピューティングデバイス。
【請求項2】
前記未確認のコンピューティングデバイスのリストは、前記メッシュネットワークに含まれる第2のコンピューティングデバイスが提供する、既知のコンピューティングデバイスのリモートリストのローカルコピーを含む請求項1に記載の第1のコンピューティングデバイス。
【請求項3】
スリープ状態からウェイク状態へと移行すると、前記第1のコンピューティングデバイスの前記ローカルブロックに格納されている、前記メッシュネットワークに含まれる確認済のコンピューティングデバイスの第1のリストと、前記第1のコンピューティングデバイスの前記リモートブロックに格納されている、前記既知のコンピューティングデバイスのリモートリストとを比較し、
前記第1のコンピューティングデバイスの前記リモートブロックに格納されているリストに含まれているコンピューティングデバイスのうち、前記第1のコンピューティングデバイスのローカルブロックに格納されているリストに含まれていない任意のコンピューティングデバイスを確認し、
前記第1のコンピューティングデバイスの前記ローカルブロックに格納されている前記確認済のコンピューティングデバイスのリストを、前記第1のコンピューティングデバイスの前記リモートブロックに格納されているリストのうち新たに確認された任意のコンピューティングデバイスで更新する
請求項2に記載の第1のコンピューティングデバイス。
【請求項4】
前記第1のストレージデバイスに格納されている前記既知のピアコンピューティングデバイスの最新リストを、前記確認済のコンピューティングデバイスのリストに更新された、新たに確認された任意のコンピューティングデバイスで更新する請求項3に記載の第1のコンピューティングデバイス。
【請求項5】
前記第1のストレージデバイスに格納されている、前記メッシュネットワークに含まれる前記既知のピアコンピューティングデバイスの最新リストに含まれるピアコンピューティングデバイスのそれぞれについて、それぞれのピアコンピューティングデバイスが提供するリソースのリストをさらに格納する請求項1に記載の第1のコンピューティングデバイス。
【請求項6】
前記第1のコンピューティングデバイスの前記ローカルブロックに格納されている前記確認済のコンピューティングデバイスのリストに含まれる第2のコンピューティングデバイスと接触して、
前記第2のコンピューティングデバイスのローカルブロックに格納されているコンピューティングデバイスの確認済のリストを読み出し、
前記確認済のコンピューティングデバイスのリストを前記第2のコンピューティングデバイスのリモートブロックに格納する
請求項1に記載の第1のコンピューティングデバイス。
【請求項7】
前記第1のコンピューティングデバイスの正当性を前記第2のコンピューティングデバイスにセキュアに確認させるための前記第1のコンピューティングデバイスの第1のメッシュ証明書を、前記第2のコンピューティングデバイスに供給して、
前記第2のコンピューティングデバイスの正当性を前記第1のコンピューティングデバイスにセキュアに確認させるための前記第2のコンピューティングデバイスの第2のメッシュ証明書を、前記第2のコンピューティングデバイスから受信する
請求項6に記載の第1のコンピューティングデバイス。
【請求項8】
複数のコンピューティングデバイスを含む前記メッシュネットワークのリーダーに指名され、前記リーダーであるコンピューティングデバイスは、前記メッシュネットワークの外部のリモートサーバとの間に二方向通信トンネルを構築する請求項1に記載の第1のコンピューティングデバイス。
【請求項9】
前記リモートサーバから要求されると、前記メッシュネットワークに含まれる第2のコンピューティングデバイスをウェイク状態とする請求項8に記載の第1のコンピューティングデバイス。
【請求項10】
前記リモートサーバ上のリーダーポジション空きフラグを読み出して、
前記フラグが設定されている場合、前記リモートサーバとの間に前記二方向通信トンネルを構築し、
前記フラグが設定されていない場合、前記リモートサーバとの間に非二方向通信を維持する
請求項8に記載の第1のコンピューティングデバイス。
【請求項11】
前記メッシュネットワークに新たに結合される第2のコンピューティングデバイスとの間に高信頼性の接続を構築し、前記高信頼性の接続によって、前記第2のコンピューティングデバイスにアウトオブバンド管理ロジックを実現する請求項1に記載の第1のコンピューティングデバイス。
【請求項12】
第1のコンピューティングデバイスに設けられているストレージデバイスのローカルブロックに、メッシュネットワークに前記第1のコンピューティングデバイスから提供されるリソースのリスト、および、前記メッシュネットワークに含まれており前記第1のコンピューティングデバイスが確認済であるコンピューティングデバイスのリストを格納する段階と、
前記ストレージデバイスのリモートブロックに、前記メッシュネットワークに含まれており未確認のコンピューティングデバイスのリモートリストを格納する段階と
を備え、
前記未確認のコンピューティングデバイスのリストは、前記メッシュネットワークに含まれる第2のコンピューティングデバイスが提供する、既知のコンピューティングデバイスのリモートリストのローカルコピーを含む方法。
【請求項13】
前記第1のコンピューティングデバイスがスリープ状態からウェイク状態に移行すると、前記第1のコンピューティングデバイスの前記ローカルブロックに格納されている前記メッシュネットワークに含まれる前記確認済のコンピューティングデバイスの第1のリストと、前記第1のコンピューティングデバイスの前記リモートブロックに格納されている前記既知のコンピューティングデバイスのリモートリストとを比較する段階と、
前記第1のコンピューティングデバイスの前記リモートブロックに格納されている前記リストに含まれているコンピューティングデバイスのうち、前記第1のコンピューティングデバイスの前記ローカルブロックに格納されている前記リストに含まれていない任意のコンピューティングデバイスを確認する段階と、
前記第1のコンピューティングデバイスの前記ローカルブロックの前記確認済のコンピューティングデバイスのリストを、前記第1のコンピューティングデバイスの前記リモートブロックに格納されているリストのうち新たに確認された任意のコンピューティングデバイスで更新する段階と
をさらに備える請求項12に記載の方法。
【請求項14】
前記第1のコンピューティングデバイスのローカルブロックに格納されている前記確認済のコンピューティングデバイスのリストに含まれる第2のコンピューティングデバイスと接触する段階と、
前記第2のコンピューティングデバイスのローカルブロックに格納されているコンピューティングデバイスの確認済のリストを読み出す段階と、
前記第2のコンピューティングデバイスのリモートブロックに前記確認済のコンピューティングデバイスのリストを格納する段階と
をさらに備える請求項12に記載の方法。
【請求項15】
前記第1のコンピューティングデバイスの正当性を前記第2のコンピューティングデバイスにセキュアに確認させるための前記第1のコンピューティングデバイスの第1のメッシュ証明書を、前記第2のコンピューティングデバイスに供給する段階と、
前記第2のコンピューティングデバイスの正当性を前記第1のコンピューティングデバイスにセキュアに確認させるための前記第2のコンピューティングデバイスの第2のメッシュ証明書を、前記第2のコンピューティングデバイスから受信する段階と
をさらに備える請求項13に記載の方法。
【請求項16】
前記第1のコンピューティングデバイスを、複数のコンピューティングデバイスを含む前記メッシュネットワークのリーダーに指名する段階
をさらに備え、
前記リーダーであるコンピューティングデバイスは、前記メッシュネットワークの外部のリモートサーバとの間に二方向通信トンネルを構築する請求項12に記載の方法。
【請求項17】
第1のコンピューティングデバイスを含む複数のコンピューティングデバイスを有するメッシュネットワークと、
リモートサーバと
を備え、
前記第1のコンピューティングデバイスは、
前記第1のコンピューティングデバイスの電源が入ると動作し、前記メッシュネットワークに含まれる既知のピアコンピューティングデバイスの最新ローカルリストを格納する大容量ストレージデバイスと、
前記第1のコンピューティングデバイスの電源が入っているか否かとは無関係に動作するフラッシュメモリと
を持ち、
前記フラッシュメモリは少なくとも、
前記第1のコンピューティングデバイスが提供するリソースのリスト、および、前記メッシュネットワークに含まれる確認済のコンピュータシステムのリストを格納するローカルブロックと、
前記メッシュネットワークに含まれる未確認のコンピュータシステムのリストを格納するリモートブロックと
を持ち、
前記リモートサーバは、
前記メッシュネットワークに含まれるピアコンピューティングデバイスのグローバルリストを格納し、
前記メッシュネットワークに含まれる前記複数のコンピューティングデバイスのうち1つをリーダーコンピューティングデバイスに指名するシステム。
【請求項18】
前記未確認のコンピューティングデバイスのリストは、前記メッシュネットワークに含まれる第2のコンピューティングデバイスが提供する、既知のコンピューティングデバイスのリモートリストのローカルコピーを含む請求項17に記載のシステム。
【請求項19】
前記第1のコンピューティングデバイスは、
スリープ状態からウェイク状態に移行すると、前記第1のコンピューティングデバイスの前記ローカルブロックに格納されている、前記メッシュネットワークに含まれる確認済のコンピューティングデバイスの第1のリストと、前記第1のコンピューティングデバイスの前記リモートブロックに格納されている前記既知のコンピューティングデバイスのリモートリストとを比較し、
前記第1のコンピューティングデバイスの前記リモートブロックに格納されている前記リストに含まれているコンピューティングデバイスのうち、前記第1のコンピューティングデバイスの前記ローカルブロックに格納されている前記リストに含まれていない任意のコンピューティングデバイスを確認し、
前記第1のコンピューティングデバイスの前記ローカルブロックに格納されている前記確認済のコンピューティングデバイスのリストを、前記第1のコンピューティングデバイスの前記リモートブロックに格納されている前記リストのうち新たに確認された任意のコンピューティングデバイスで更新する請求項18に記載のシステム。
【請求項20】
前記第1のコンピューティングデバイスは、
前記第1のコンピューティングデバイスの前記ローカルブロックに格納されている前記確認済のコンピューティングデバイスのリストに含まれる第2のコンピューティングデバイスと接触して、
前記第2のコンピューティングデバイスのローカルブロックに格納されているコンピューティングデバイスの確認済のリストを読み出し、
前記確認済のコンピューティングデバイスのリストを前記第2のコンピューティングデバイスのリモートブロックに格納する
請求項17に記載のシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公開番号】特開2011−172204(P2011−172204A)
【公開日】平成23年9月1日(2011.9.1)
【国際特許分類】
【外国語出願】
【出願番号】特願2010−234643(P2010−234643)
【出願日】平成22年10月19日(2010.10.19)
【出願人】(591003943)インテル・コーポレーション (1,101)
【Fターム(参考)】