Patent ID: 8606857

Claim:
A method comprising: locating, by a hardware node, one or more neighboring hardware nodes; maintaining, by the hardware node, a general list of the neighboring hardware nodes, including, for each neighboring hardware node, storing an identifier, a location, and a function type of the neighboring hardware node; determining, by the hardware node, the one or more selected neighboring hardware nodes with which the hardware node is interested in cooperating based on a desired functionality of the selected neighboring hardware nodes, the one or more selected neighboring hardware nodes being within the general list of the neighboring hardware nodes, including filtering the general list of the neighboring hardware nodes to locate the selected neighboring hardware nodes based on one or more of the location and the function type of each neighboring hardware node; after maintaining the general list, generating an interest list by the hardware node, the interest list including the selected neighboring hardware nodes within the general list with which the hardware node is interested in cooperating, the interest list being a subset of the general list; contacting, by the hardware node, one or more selected neighboring hardware nodes within the interest list to determine a corresponding level of cooperation of each selected neighboring hardware node; and after generating the interest list, generating a cooperating list by the hardware node after contacting each selected neighboring hardware node, the cooperating list including the corresponding level of cooperation of each selected neighboring hardware node, the cooperating list being a subset of the interest list, the cooperating list including one or more particular selected neighboring hardware nodes that have the desired functionality and that are willing to perform the desired functionality for the hardware node.