PATENTSCOPE will be unavailable a few hours for maintenance reason on Tuesday 19.11.2019 at 4:00 PM CET
Search International and National Patent Collections
Some content of this application is unavailable at the moment.
If this situation persists, please contact us atFeedback&Contact
1. (WO2010078506) SELF-HEALING COMMUNICATION TREES
Note: Text based on automatic Optical Character Recognition processes. Please use the PDF version for legal matters

CLAIMS

1. A method performed by a first node, the first node comprising one or more computers and a plurality of active ports, the method comprising:

(a) maintaining data representing a tree-specific status for each of a plurality of trees, each of the plurality of trees having a distinct root, where the status for each tree includes a node state for the first node, a port state for each of the active ports, and a path-cost, where the node state identifies the first node as being one of discoverable, reachable, meta-stable, or stable, where the port state for each port is one of root- ward, pruned, leaf- ward, or undiscovered, and the port state identifies each port as being a root- ward port, a pruned port, a leaf-ward port, or an undiscovered port, respectively, and where no more than one port is a root- ward port, and where the path-cost represents a cost of reaching the root through the root- ward port;

(b) receiving a first tree-update notification through a first active port, where the first tree-update notification identifies a first tree and a first from-there cost, and in response to receiving the first tree-update notification: determining a first from-here cost from the first from-there cost; updating the status for the first tree by performing the following operations:

(i) if the first from-here cost is less than the path-cost: setting the path-cost to be equal to the first from-here cost, if a port distinct from the first active port is the root- ward port, changing the port state of the port to pruned, if the first active port is not the root- ward port, changing the state of the first port to root- ward, setting the node state to reachable, sending a first port-status notification identifying the first tree and indicating a first port status of reachable through the first port, where the first port-status notification corresponds to the first tree-update notification, and sending a second tree-update notification through all active ports other than the first port, where the second tree-update notification identifies the first tree and the first from-here cost; or (ii) if the first from-here cost is not less than the first path-cost: sending a second port-status notification identifying the first tree and indicating a second port status of pruned through the first active port once the node state is stable, where the second port-status notification corresponds to the first tree-update notification;

(c) receiving a third port-status notification through a second active port, where the second port-status notification identifies a second tree and indicates a third port status, where the third port-status notification corresponds to a most recently sent tree-update notification for the second tree, and where the third port status is one of reachable, meta-stable, stable, or pruned, and in response to receiving the third port-status notification: updating the status for the second tree by setting the port state of the second active port to pruned if the third port status is pruned, and otherwise setting the port state of the second active port to be leaf-ward; and setting the node state for the second tree to reachable if a port-status notification corresponding to a most recently sent tree-update has not been received through each non root- ward port, otherwise setting the node state for the second tree to stable if a last port state notification corresponding to the most recently sent tree-update notification received through each non root- ward port indicates a port status of stable, and otherwise setting the node state to meta-stable; and (d) in response to a change in the node state for any tree, sending a fourth port-status notification corresponding to a most recently received tree-update notification through the root-ward port for the tree, where the fourth port-status notification identifies the tree and indicates a fourth port status, and where the fourth port status is stable if the node state is stable, where the fourth port status is meta-stable if the node state is meta-stable, and where otherwise the fourth port status is reachable.

2. The method of claim 1, further comprising: determining that a formerly inactive third port has become active; adding the third port to the plurality of active ports; updating the node state to reachable for each tree in the plurality of trees; and sending a third tree-update notification through the third port for each tree in the plurality of trees, where the third tree-update notification identifies the respective tree and the path-cost for the respective tree.

3. The method of claim 1, wherein the status for each tree in the plurality of trees further indicates an ordering of the pruned ports, the method further comprising: determining that a fourth port is no longer active; identifying a third tree, where the fourth port is the root-ward port for the third tree; if the third tree has one or more pruned ports, selecting a fifth active port from the one or more pruned ports and causing the fifth active port to be the root- ward port for the third tree, where the fifth active port is selected according to the ordering for the third tree; and if the third tree has no pruned ports, performing the following operations: sending a first path-request identifying the third tree through all leaf- ward ports for the third tree, receiving a first request-acknowledgement through one or more leaf- ward ports for the third tree, where the first request-acknowledgment is a response to the path-request, and where the first request acknowledgement includes a second from-there cost, determining a second from-here cost for each first request-acknowledgement from each second from-there cost; identifying a sixth active port, where the first request-acknowledgement received through the sixth active port has a lowest second from-here cost of the second from-here costs of all of the first request-acknowledgements; sending a first change-path notification through the sixth active port, where the first change -path notification is a response to the first request-acknowledgement received through the sixth active port; receiving a first path-changed notification through the sixth active port, where the first path-changed notification is a response to the first change-path notification; and causing the sixth active port to be the root-ward port for the third tree.

4. The method of claim 1 , wherein the status for each tree in the plurality of trees further indicates a pruned path-cost for each pruned port, where the pruned path-cost represents a cost of reaching the root through the pruned port, the method further comprising:

(e) receiving a second path-request identifying a fourth tree through a currently root-ward port, where the currently root- ward port is the root- ward port for the fourth tree, and where the fourth tree has at least one pruned or leaf- ward port;

(f) if the fourth tree has at least one pruned port, performing the following operations: identifying a seventh active port, where the seventh active port is a pruned port with a lowest pruned path-cost for the fourth tree; sending a second request-acknowledgement through the currently root- ward port, where the second request-acknowledgement is a response to the second path-request, and where the second request-acknowledgement includes the pruned path-cost for the seventh active port for the fourth tree; receiving a second change-path notification through the currently root-ward port, where the second change-path notification is a response to the second request-acknowledgement, and updating the status for the fourth tree in response to the second change-path notification by setting the status of the currently root- ward port to leaf- ward, setting the status of the seventh active port to root- ward, and setting the path-cost to the pruned path-cost for the seventh active port for the fourth tree; sending a second path-changed notification through the currently root- ward port, where the second path-changed notification is a response to the second change-path notification; (g) if the fourth tree has no pruned ports, performing the following operations: forwarding the second path-request to all leaf- ward ports; receiving a third request-acknowledgement through one or more leaf- ward ports in response to the path-request, where each third request-acknowledgement includes a third from-there cost; determining a third from-here cost for each third request-acknowledgement from the third from-there cost of each third request-acknowledgement; identifying an eighth active port, where the third request-acknowledgement received through the eighth active port has a lowest from-here cost of all of the third request-acknowledgements ; sending a fourth request-acknowledgement through the currently root- ward port, where the fourth request-acknowledgement is a response to the second path-request, and where the fourth request-acknowledgement includes the third from-here cost of the third-request acknowledgement received through the eighth active port; receiving a third change-path notification through the currently root- ward port and forwarding the third change-path notification through the eighth active port, where the third change-path notification is a response to the fourth request-acknowledgement; receiving a third path-changed notification through the eighth active port, where the third path-changed notification is a response to the third change-path notification, and updating the status of the fourth tree in response to the third path-changed notification by setting the status of the currently root- ward port to leaf-ward, setting the status of the eighth active port to root-ward and setting the path-cost to the third from-here cost of the third request acknowledgement received through the eighth active port; and forwarding the third path-changed notification through the currently root- ward port.

5. The method of claim 1, further comprising: receiving a message in the first node, the message identifying an intended recipient node; identifying a fifth tree, where the intended recipient node is the root of the fifth tree; and forwarding the message through the root-ward port for the fifth tree.

6. A computer program product encoded on a computer readable medium, operable to cause a first node comprising one or more computers and a plurality of active ports to perform operations comprising: (a) maintaining data representing a tree specific status for each of a plurality of trees, each of the plurality of trees having a distinct root, where the status for each tree includes a node state for the first node, a port state for each of the active ports, and a path-cost, where the node state identifies the first node as being one of discoverable, reachable, meta-stable, or stable, where the port state for each port is one of root- ward, pruned, leaf ward, or undiscovered, and the port state identifies each port as being a root-ward port, a pruned port, a leaf ward port, or an undiscovered port, respectively, and where no more than one port is a root- ward port, and where the path-cost represents a cost of reaching the root through the root-ward port;

(b) receiving a first tree-update notification through a first active port, where the first tree-update notification identifies a first tree and a first from-there cost, and in response to receiving the first tree-update notification: determining a first from-here cost from the first from-there cost; updating the status for the first tree by performing the following operations: (i) if the first from-here cost is less than the path-cost: setting the path-cost to be equal to the first from-here cost, if a port distinct from the first active port is the root- ward port, changing the port state of the port to pruned, if the first active port is not the root- ward port, changing the state of the first port to root- ward, setting the node state to reachable, sending a first port-status notification identifying the first tree and indicating a first port status of reachable through the first port, where the first port-status notification corresponds to the first tree-update notification, and sending a second tree-update notification through all active ports other than the first port, where the second tree-update notification identifies the first tree and the first from-here cost; or

(ii) if the first from-here cost is not less than the first path-cost: sending a second port-status notification identifying the first tree and indicating a second port status of pruned through the first active port once the node state is stable, where the second port-status notification corresponds to the first tree-update notification;

(c) receiving a third port-status notification through a second active port, where the second port-status notification identifies a second tree and indicates a third port status, where the third port-status notification corresponds to a most recently sent tree-update notification for the second tree, and where the third port status is one of reachable, meta-stable, stable, or pruned, and in response to receiving the third port-status notification: updating the status for the second tree by setting the port state of the second active port to pruned if the third port status is pruned, and otherwise setting the port state of the second active port to be leaf ward; setting the node state for the second tree to reachable if a port-status notification corresponding to a most recently sent tree-update has not been received through each non root- ward port, otherwise setting the node state for the second tree to stable if a last port state notification corresponding to the most recently sent tree-update notification received through each non root- ward port indicates a port status of stable, and otherwise setting the node state to meta-stable; and

(d) in response to a change in the node state for any tree, sending a fourth port-status notification corresponding to a most recently received tree-update notification through the root-ward port for the tree, where the fourth port-status notification identifies the tree and indicates a fourth port status, and where the fourth port status is stable if the node state is stable, where the fourth port status is meta- stable if the node state is meta- stable, and where otherwise the fourth port status is reachable.

7. The computer program product of claim 6, further operable to cause the first node to perform operations comprising: determining that a formerly inactive third port has become active; adding the third port to the plurality of active ports; updating the node state to reachable for each tree in the plurality of trees; and sending a third tree-update notification through the third port for each tree in the plurality of trees, where the third tree-update notification identifies the respective tree and the path-cost for the respective tree.

8. The computer program product of claim 6, wherein the status for each tree in the plurality of trees further indicates an ordering of the pruned ports, the computer program product further operable to cause the first node to perform operations comprising: determining that a fourth port is no longer active; identifying a third tree, where the fourth port is the root-ward port for the third tree; if the third tree has one or more pruned ports, selecting a fifth active port from the one or more pruned ports and causing the fifth active port to be the root-ward port for the third tree, where the fifth active port is selected according to the ordering for the third tree; and if the third tree has no pruned ports, performing the following operations: sending a first path request identifying the third tree through all leaf ward ports for the third tree, receiving a first request acknowledgement through one or more leaf ward ports for the third tree, where the first request acknowledgment is a response to the path request, and where the first request acknowledgement includes a second from-there cost, determining a second from-here cost for each first request acknowledgement from each second from-there cost; identifying a sixth active port, where the first request acknowledgement received through the sixth active port has a lowest second from-here cost of the second from-here costs of all of the first request acknowledgements; sending a first change path notification through the sixth active port, where the first change path notification is a response to the first request acknowledgement received through the sixth active port; receiving a first path changed notification through the sixth active port, where the first path changed notification is a response to the first change path notification; and causing the sixth active port to be the root-ward port for the third tree.

9. The computer program product of claim 6, wherein the status for each tree in the plurality of trees further indicates a pruned path-cost for each pruned port, where the pruned path-cost represents a cost of reaching the root through the pruned port, the computer program product further operable to cause the first node to perform operations comprising:

(e) receiving a second path request identifying a fourth tree through a currently root-ward port, where the currently root- ward port is the root- ward port for the fourth tree, and where the fourth tree has at least one pruned or leaf ward port;

(f) if the fourth tree has at least one pruned port, performing the following operations: identifying a seventh active port, where the seventh active port is a pruned port with a lowest pruned path-cost for the fourth tree; sending a second request acknowledgement through the currently root- ward port, where the second request acknowledgement is a response to the second path request, and where the second request acknowledgement includes the pruned path-cost for the seventh active port for the fourth tree; receiving a second change path notification through the currently root- ward port, where the second change path notification is a response to the second request acknowledgement, and updating the status for the fourth tree in response to the second change path notification by setting the status of the currently root- ward port to leaf ward, setting the status of the seventh active port to root-ward, and setting the path-cost to the pruned path-cost for the seventh active port for the fourth tree; sending a second path changed notification through the currently root- ward port, where the second path changed notification is a response to the second change path notification;

(g) if the fourth tree has no pruned ports, performing the following operations: forwarding the second path request to all leaf ward ports; receiving a third request acknowledgement through one or more leaf ward ports in response to the path request, where each third request acknowledgement includes a third from-there cost; determining a third from-here cost for each third request acknowledgement from the third from-there cost of each third request acknowledgement; identifying an eighth active port, where the third request acknowledgement received through the eighth active port has a lowest from-here cost of all of the third request acknowledgements; sending a fourth request acknowledgement through the currently root- ward port, where the fourth request acknowledgement is a response to the second path request, and where the fourth request acknowledgement includes the third from-here cost of the third request acknowledgement received through the eighth active port; receiving a third change path notification through the currently root- ward port and forwarding the third change path notification through the eighth active port, where the third change path notification is a response to the fourth request acknowledgement; receiving a third path changed notification through the eighth active port, where the third path changed notification is a response to the third change path notification, and updating the status of the fourth tree in response to the third path changed notification by setting the status of the currently root- ward port to leaf ward, setting the status of the eighth active port to root-ward and setting the path-cost to the third from-here cost of the third request acknowledgement received through the eighth active port; and forwarding the third path changed notification through the currently root- ward port.

10. The computer program product of claim 6, further operable to cause the first node to perform operations comprising: receiving a message, the message identifying an intended recipient node; identifying a fifth tree, where the intended recipient node is the root of the fifth tree; and forwarding the message through the root-ward port for the fifth tree.

11. A system comprising: a plurality of nodes, where each node comprises one or more computers, where each node has a plurality of active ports, where at least one port of each node is operatively coupled to a port of a node in the plurality of nodes, and where each node is configured to perform operations comprising:

(a) maintaining data representing a tree-specific status for each of a plurality of trees, each of the plurality of trees having a distinct root, where the status for each tree includes a node state for the node, a port state for each of the active ports, and a path-cost, where the node state identifies the node as being one of discoverable, reachable, meta-stable, or stable, where the port state for each port is one of root- ward, pruned, leaf- ward, or undiscovered, and the port state identifies each port as being a root- ward port, a pruned port, a leaf-ward port, or an undiscovered port, respectively, and where no more than one port is a root- ward port, and where the path-cost represents a cost of reaching the root through the root- ward port;

(b) receiving a first tree-update notification through a first active port, where the first tree-update notification identifies a first tree and a first from-there cost, and in response to receiving the first tree-update notification: determining a first from-here cost from the first from-there cost; updating the status for the first tree by performing the following operations:

(i) if the first from-here cost is less than the path-cost: setting the path-cost to be equal to the first from-here cost, if a port distinct from the first active port is the root- ward port, changing the port state of the port to pruned, if the first active port is not the root- ward port, changing the state of the first port to root- ward, setting the node state to reachable, sending a first port-status notification identifying the first tree and indicating a first port status of reachable through the first port, where the first port-status notification corresponds to the first tree-update notification, and sending a second tree-update notification through all active ports other than the first port, where the second tree-update notification identifies the first tree and the first from-here cost; or

(ii) if the first from-here cost is not less than the first path-cost: sending a second port-status notification identifying the first tree and indicating a second port status of pruned through the first active port once the node state is stable, where the second port-status notification corresponds to the first tree-update notification;

(c) receiving a third port-status notification through a second active port, where the second port-status notification identifies a second tree and indicates a third port status, where the third port-status notification corresponds to a most recently sent tree-update notification for the second tree, and where the third port status is one of reachable, meta-stable, stable, or pruned, and in response to receiving the third port-status notification: updating the status for the second tree by setting the port state of the second active port to pruned if the third port status is pruned, and otherwise setting the port state of the second active port to be leaf- ward; setting the node state for the second tree to reachable if a port-status notification corresponding to a most recently sent tree-update has not been received through each non root- ward port, otherwise setting the node state for the second tree to stable if a last port state notification corresponding to the most recently sent tree-update notification received through each non root- ward port indicates a port status of stable, and otherwise setting the node state to meta-stable; and

(d) in response to a change in the node state for any tree, sending a fourth port-status notification corresponding to a most recently received tree-update notification through the root- ward port for the tree, where the fourth port-status notification identifies the tree and indicates a fourth port status, and where the fourth port status is stable if the node state is stable, where the fourth port status is meta-stable if the node state is meta-stable, and where otherwise the fourth port status is reachable.

12. The system of claim 11, wherein each node is further configured to perform operations comprising: determining that a formerly inactive third port has become active; adding the third port to the plurality of active ports; updating the node state to reachable for each tree in the plurality of trees; and sending a third tree-update notification through the third port for each tree in the plurality of trees, where the third tree-update notification identifies the respective tree and the path-cost for the respective tree.

13. The system of claim 11, wherein the status for each tree in the plurality of trees further indicates an ordering of the pruned ports, wherein each node is further configured to perform operations comprising: determining that a fourth port is no longer active; identifying a third tree, where the fourth port is the root-ward port for the third tree;

if the third tree has one or more pruned ports, selecting a fifth active port from the one or more pruned ports and causing the fifth active port to be the root-ward port for the third tree, where the fifth active port is selected according to the ordering for the third tree; and if the third tree has no pruned ports, performing the following operations: sending a first path-request identifying the third tree through all leaf-ward ports for the third tree, receiving a first request-acknowledgement through one or more leaf- ward ports for the third tree, where the first request-acknowledgment is a response to the path-request, and where the first request acknowledgement includes a second from-there cost, determining a second from-here cost for each first request-acknowledgement from each second from-there cost; identifying a sixth active port, where the first request-acknowledgement received through the sixth active port has a lowest second from-here cost of the second from-here costs of all of the first request-acknowledgements; sending a first change-path notification through the sixth active port, where the first change -path notification is a response to the first request-acknowledgement received through the sixth active port; receiving a first path-changed notification through the sixth active port, where the first path-changed notification is a response to the first change-path notification; and causing the sixth active port to be the root-ward port for the third tree.

14. The system of claim 11, wherein the status for each tree in the plurality of trees further indicates a pruned path-cost for each pruned port, where the pruned path-cost represents a cost of reaching the root through the pruned port, and wherein each node is further configured to perform operations comprising:

(e) receiving a second path-request identifying a fourth tree through a currently root-ward port, where the currently root- ward port is the root- ward port for the fourth tree, and where the fourth tree has at least one pruned or leaf- ward port;

(f) if the fourth tree has at least one pruned port, performing the following operations: identifying a seventh active port, where the seventh active port is a pruned port with a lowest pruned path-cost for the fourth tree;

sending a second request-acknowledgement through the currently root- ward port, where the second request-acknowledgement is a response to the second path-request, and where the second request-acknowledgement includes the pruned path-cost for the seventh active port for the fourth tree; receiving a second change-path notification through the currently root-ward port, where the second change-path notification is a response to the second request-acknowledgement, and updating the status for the fourth tree in response to the second change-path notification by setting the status of the currently root- ward port to leaf- ward, setting the status of the seventh active port to root- ward, and setting the path-cost to the pruned path-cost for the seventh active port for the fourth tree; sending a second path-changed notification through the currently root- ward port, where the second path-changed notification is a response to the second change-path notification;

(g) if the fourth tree has no pruned ports, performing the following operations: forwarding the second path-request to all leaf- ward ports; receiving a third request-acknowledgement through one or more leaf- ward ports in response to the path-request, where each third request-acknowledgement includes a third from-there cost; determining a third from-here cost for each third request-acknowledgement from the third from-there cost of each third request-acknowledgement; identifying an eighth active port, where the third request-acknowledgement received through the eighth active port has a lowest from-here cost of all of the third request-acknowledgements ; sending a fourth request-acknowledgement through the currently root- ward port, where the fourth request-acknowledgement is a response to the second path-request, and where the fourth request-acknowledgement includes the third from-here cost of the third-request acknowledgement received through the eighth active port; receiving a third change-path notification through the currently root- ward port and forwarding the third change-path notification through the eighth active port, where the third change-path notification is a response to the fourth request-acknowledgement; receiving a third path-changed notification through the eighth active port, where the third path-changed notification is a response to the third change-path notification, and updating the status of the fourth tree in response to the third path-changed notification by setting the status of the currently root- ward port to leaf- ward, setting the status of the eighth active port to root-ward and setting the path-cost to the third from-here cost of the third request acknowledgement received through the eighth active port; and forwarding the third path-changed notification through the currently root- ward port.

15. The system of claim 11 , wherein each node is further configured to perform operations comprising: receiving a message in the node, the message identifying an intended recipient node; identifying a fifth tree, where the intended recipient node is the root of the fifth tree; and forwarding the message through the root- ward port for the fifth tree.