Source: https://patents.google.com/patent/US8626881B2/en
Timestamp: 2019-09-19 13:33:20
Document Index: 711978904

Matched Legal Cases: ['Application No. 2010', 'Application No. 10252113', 'Application No. 10252113', 'Application No. 201010616214', 'Application No. 2010', 'Application No. 10252113']

US8626881B2 - Distributed mesh network - Google Patents
US8626881B2
US8626881B2 US13/328,554 US201113328554A US8626881B2 US 8626881 B2 US8626881 B2 US 8626881B2 US 201113328554 A US201113328554 A US 201113328554A US 8626881 B2 US8626881 B2 US 8626881B2
US13/328,554
US20120159581A1 (en
2011-12-16 Priority to US13/328,554 priority patent/US8626881B2/en
2012-06-21 Publication of US20120159581A1 publication Critical patent/US20120159581A1/en
2014-01-07 Publication of US8626881B2 publication Critical patent/US8626881B2/en
A device, method, and system are disclosed. In one embodiment a computing device resides in a mesh network. The device includes a first storage device that operates when the computing device is awake. The first storage device stores a last known list of peer computing devices in the mesh network. The device also includes a second storage device that operates regardless of whether any central processing unit in the computing device is awake or asleep. The second storage device includes a local block that stores a list of resources provided by the first computing device and a list of computing devices in the mesh network verified by the first computing device. The second storage device also includes a remote block that stores an unverified remote list of computing devices in the mesh network.
This application is a Continuation of U.S. patent application Ser. No. 12/653,524, entitled “DISTRIBUTED MESH NETWORK,” filed on Dec. 15, 2009, now U.S. Pat. No. 8,099,479. This application is hereby entirely incorporated by reference.
FIG. 2 illustrates an embodiment of a mesh network. The mesh network includes a set of nodes (node A 202, node B 204, node C 206, node D 208, node E 210, and node F 212). In many embodiments, local node 100 from FIG. 1 may be any one of nodes A-F. In other words, nodes A-F may include all of the components within local node 100 detailed in FIG. 1. E.g., the detailed components of local node 100 described, in part, above are shown in the blown up detail of node A 202. The set of nodes in FIG. 2 are coupled to each other through a local network 200. The local network may be any form of communication network that allows multiple nodes to communicate with each other. Examples of local network 200 may be an Ethernet wired network, an IEEE 802.11-based wireless network, a cellular network, a wide-area wireless network such as WiMAX, or another type of network. The network may be coupled to the Internet 214 through a firewall 216. The firewall 216 may be maintained by a gateway computer on the local network 200. The gateway computer includes certain security protocols that do not allow certain types of information to be communicated between the local network 200 and the Internet 214. Thus, nodes A-F may freely communicate amongst themselves since they are all members of local network 200, but communication between any node A-F and a remote node, such as one communicatively coupled to local network 200 specifically through the Internet 214, may be limited due to security processes put in place by firewall 216.
a local node in a mesh network, the local node to:
store a first list of remote nodes in the mesh network verified by the local node;
store a second list of remote nodes in the mesh network not verified by the local node; and
iterate over the second list of remote nodes, wherein for each iteration the local node to:
define a current node from the second list of remote nodes;
determine if the current node is present in the first list of remote nodes;
verify the current node in response to determining the current node is not present in the first list of remote nodes;
store the current node in the first list of remote nodes in response to successfully verifying the current node;
determine if the current node is a last node in the second list of remote nodes; and
define, in response to the current node not being the last node in the second list of remote nodes, a next node from the second list of remote nodes as the current node.
2. The computer system of claim 1, wherein the local node further to allow remote nodes in the mesh network to access (i) the first list of remote nodes and (ii) the second list of remote nodes, while a main processor of the computer system is not fully operational.
3. The computer system of claim 1, wherein to store the current node in the first list of remote nodes comprises to:
store an internet protocol (IP) address of the current node;
store a verification timestamp of a most recent direct contact with the current node, the verification timestamp corresponding to a time of verification; and
update a version number and timestamp corresponding to the first list of remote nodes.
4. The computer system of claim 1, wherein the local node further to:
store a resource information list comprising resource information corresponding to remote nodes in the mesh network; and
wherein for each iteration the local node further to:
store, in the resource information list, resource information for the current node in response to successfully verifying the current node.
5. The computer system of claim 4, wherein the local node further to:
store a local timestamp corresponding to a date the resource information list was last updated by the local node; and
determine, in response to determining the current node is present in the first list of remote nodes, whether the resource information for the current node stored in the resource information list is up-to-date by comparing the local timestamp to a resource timestamp stored in the resource information of the current node, wherein the resource timestamp corresponds to a date the resource information was created by the current node; and
store, in the resource information list, the resource information for the current node in response to determining the resource information for the current node stored in the resource information list is not up-to-date.
6. The computer system of claim 1, wherein to verify the current node comprises to:
contact the current node;
provide to the current node a first mesh certificate to allow the current node to securely verify the authenticity of the local node;
receive from the current node a second mesh certificate to allow the local node to securely verify the authenticity of the current node;
receive from the current node a third list of remote nodes verified by the current node and storing the third list of remote nodes in the second list of remote nodes; and
store the first list of remote nodes on the current node.
7. The computer system of claim 1, wherein the local node further to:
inquire with a remote server external to the mesh network whether a leader position in the mesh network is available;
establish a two-way communication tunnel with the remote server in response to the leader position being available;
wake a target node in the mesh network in response to receiving a wakeup request from the remote server over the two-way communication tunnel, the wakeup request received by the local node in response to the remote server receiving a request communication from a requestor node; and
send a resource request to the target node in response to waking the target node, wherein the resource request comprises a request to the target node to provide a resource to the requestor node.
8. A method for updating mesh network information of a local node, the method comprising:
storing, on the local node, a first list of remote nodes in a mesh network verified by the local node;
storing, on the local node, a second list of remote nodes in the mesh network not verified by the local node; and
iterating, by the local node, over the second list of remote nodes, wherein each iteration comprises:
defining a current node from the second list of remote nodes;
determining if the current node is present in the first list of remote nodes;
verifying the current node in response to determining the current node is not present in the first list of remote nodes;
storing the current node in the first list of remote nodes in response to successfully verifying the current node;
determining if the current node is a last node in the second list of remote nodes; and
defining, in response to the current node not being the last node in the second list of remote nodes, a next node from the second list of remote nodes as the current node.
9. The method of claim 8, further comprising allowing remote nodes in the mesh network to access (i) the first list of remote nodes and (ii) the second list of remote nodes, while a main processor of the local node is not fully operational.
10. The method of claim 8, wherein storing the current node in the first list of remote nodes comprises:
storing an internet protocol (IP) address of the current node;
storing a verification timestamp of a most recent direct contact with the current node, the verification timestamp corresponding to a time of verification; and
updating a version number and timestamp corresponding to the first list of remote nodes.
storing, on the local node, a resource information list comprising resource information corresponding to remote nodes in the mesh network; and
wherein each iteration further comprises:
storing, in the resource information list, resource information for the current node in response to successfully verifying the current node.
storing, on the local node, a local timestamp corresponding to a date the resource information list was last updated by the local node; and
determining, on the local node, in response to determining the current node is present in the first list of remote nodes, whether the resource information for the current node stored in the resource information list is up-to-date by comparing the local timestamp to a resource timestamp stored in the resource information of the current node, wherein the resource timestamp corresponds to a date the resource information was created by the current node; and
storing, in the resource information list, replacement resource information for the current node in response to determining the resource information for the current node stored in the resource information list is not up-to-date.
13. The method of claim 8, wherein verifying the current node comprises:
contacting the current node;
providing to the current node a first mesh certificate to allow the current node to securely verify the authenticity of the local node;
receiving from the current node a second mesh certificate to allow the local node to securely verify the authenticity of the current node;
receiving from the current node a third list of remote nodes verified by the current node and storing the third list of remote nodes in the second list of remote nodes; and
storing the first list of remote nodes on the current node.
inquiring, by the local node, with a remote server external to the mesh network whether a leader position in the mesh network is available;
establishing, by the local node, a two-way communication tunnel with the remote server in response to the leader position being available;
waking, by the local node, a target node in the mesh network in response to receiving a wakeup request from the remote server over the two-way communication tunnel, the wakeup request received by the local node in response to the remote server receiving a request communication from a requestor node; and
sending, by the local node, a resource request to the target node in response to waking the target node, the resource request comprising a request to the target node to provide a resource to the requestor node.
15. One or more machine readable storage devices comprising a plurality of instructions that in response to being executed result in a computing device:
storing a first list of remote nodes in a mesh network verified by the computing device;
storing a second list of remote nodes in the mesh network not verified by the computing device; and
iterating over the second list of remote nodes, wherein each iteration comprises:
16. The one or more machine readable storage devices of claim 15, further comprising a plurality of instructions that in response to being executed result in the computing device allowing remote nodes in the mesh network to access (i) the first list of remote nodes and (ii) the second list of remote nodes, while a main processor of the computing device is not fully operational.
17. The one or more machine readable storage devices of claim 15, further comprising a plurality of instructions that in response to being executed result in the computing device:
storing a resource information list comprising resource information corresponding to remote nodes in the mesh network; and
18. The one or more machine readable storage devices of claim 17, further comprising a plurality of instructions that in response to being executed result in the computing device:
storing a local timestamp corresponding to a date the resource information list was last updated by the computing device; and
determining, in response to determining the current node is present in the first list of remote nodes, whether the resource information for the current node stored in the resource information list is up-to date by comparing the local timestamp to a resource timestamp stored in the resource information of the current node, wherein the resource timestamp corresponds to a date the resource information was created by the current node; and
19. The one or more machine readable storage devices of claim 15, wherein verifying the current node comprises:
providing to the current node a first mesh certificate to allow the current node to securely verify the authenticity of the computing device;
receiving from the current node a second mesh certificate to allow the computing device to securely verify the authenticity of the current node;
20. The one or more machine readable storage devices of claim 15, further comprising a plurality of instructions that in response to being executed result in the computing device:
inquiring with a remote server external to the mesh network whether a leader position in the mesh network is available;
establishing a two-way communication tunnel with the remote server in response to the leader position being available;
waking a target node in the mesh network in response to receiving a wakeup request from the remote server over the two-way communication tunnel, the wakeup request received by the computing device in response to the remote server receiving a request communication from a requestor node; and
sending a resource request to the target node in response to waking the target node, the resource request comprises a request to the target node to provide a resource to the requestor node.
21. A computer system, comprising a local node in a mesh network, the local node comprising:
a local flash block;
a remote flash block; and
an operating system (OS) mesh agent to:
store a first list in the local flash block of remote nodes in the mesh network verified by the mesh agent;
store a second list in the remote flash block of remote nodes in the mesh network not verified by the mesh agent; and
iterate over the second list of remote nodes, wherein for each iteration the OS mesh agent to:
22. The computer system of claim 21, wherein the local node further comprises out-of-band management logic to allow remote nodes in the mesh network to access (i) the first list of remote nodes and (ii) the second list of remote nodes, while a main processor of the computer system is not fully operational.
23. The computer system of claim 21, wherein to verify the current node comprises to:
24. The computer system of claim 21, wherein the OS mesh agent further to:
wake a target node in the mesh network in response to receiving a wakeup request from the remote server over the two-way communication tunnel, the wakeup request received by the OS mesh agent in response to the remote server receiving a request communication from a requestor node; and
25. The computer system of claim 21, further comprising out-of-band management logic to, while a main processor of the computer system is not fully operational:
wake a target node in the mesh network in response to receiving a wakeup request from the remote server over the two-way communication tunnel, the wakeup request received by the out-of-band management logic in response to the remote server receiving a request communication from a requestor node; and
US13/328,554 2009-12-15 2011-12-16 Distributed mesh network Active 2030-02-19 US8626881B2 (en)
US12/653,524 Continuation US8099479B2 (en) 2009-12-15 2009-12-15 Distributed mesh network
US20120159581A1 US20120159581A1 (en) 2012-06-21
US8626881B2 true US8626881B2 (en) 2014-01-07
JP2002190806A (en) 2000-12-20 2002-07-05 Matsushita Electric Ind Co Ltd Radio communication system, medium and program
WO2006059639A1 (en) 2004-11-30 2006-06-08 Nec Corporation Information sharing system, information sharing method, group management program, and compartment management program
CN1988449A (en) 2005-12-20 2007-06-27 中国科学院声学研究所 Data distributing/obtaining method based on network information
CN101110707A (en) 2006-07-20 2008-01-23 阿尔卡特朗讯 Distributed presence management in peer-to-peer networks
WO2009055556A1 (en) 2007-10-23 2009-04-30 Chung Keicy K Computer storage device having separate read-only space and read-write space, removable media component, system management interface, and network interface
US20100074173A1 (en) 2008-09-23 2010-03-25 Ewing David B Systems and methods for updating script images in wireless networks
US20080019291A1 (en) 2006-07-20 2008-01-24 Alcatel Lucent Distributed presence management in peer-to-peer networks
Decision for Grant received in Japanese Patent Application No. 2010-234643, mailed May 29, 2012, 1 page of Decision for Grant and 1 page of unofficial, partial English translation.
Intention to Grant received for European Patent Application No. 10252113.5, mailed Feb. 28, 2013, 30 pages.
Intention to Grant received for European Patent Application No. 10252113.5, mailed Jul. 26, 2012, 30 pages.
Office Action received for Chinese Patent Application No. 201010616214.3, mailed Mar. 27, 2013, 10 pages of Chinese Office Action and 24 pages of unofficial English translation.
Office Action Received in Japanese Patent Application No. 2010-234643, mailed Feb. 7, 2012, 4 pages of Office Action, including 2 pages of unofficial English Translation.
Official Communication received for European Patent Application No. 10252113.5, mailed May 9, 2011, 7 pages.
US8099479B2 (en) 2012-01-17