SEARCH FOR DISJOINT PATHS THROUGH A NETWORK
20170295088 · 2017-10-12
Assignee
Inventors
- Borgert Jan van der Kluit ('s-Gravenhage, NL)
- Adrianus Cornelis Gerardus Holtzer ('s-Gravenhage, NL)
- Bart Michel Magdalena Gijsen ('s-Gravenhage, NL)
- Hendrik Bernard Meeuwissen ('s-Gravenhage, NL)
Cpc classification
International classification
Abstract
A path discovery process is provided for discovering a lowest cost combination of a plurality of paths from the source node to the destination node via links between pairs of nodes along the paths. A path discovery messages from a source node is forwarded through the network. Prior to forwarding the path discovery message a node tests one or more conditions for disabling the forwarding. Upon receiving an instance of the path discovery message, this may include testing whether no other instance of the path discovery message has both smaller cost and a previous path that contains only nodes that occur also in the path of the received instance. Furthermore, this may include testing whether a destination of the path discovery message was also a node to which a preceding node along the path has a further link, and a cost of the path from the preceding node to the next node via said further link is not larger than the cost of the path from the preceding node to the next node. Furthermore, this may include testing whether the node has a further link to the destination node and the cost associated with the link to the next node is not less than the cost associated with the further link to the destination node.
Claims
1. A method of operating a node in an information transmission network in a path discovery process for discovering a lowest cost combination of a plurality of paths from the source node to the destination node via links between pairs of nodes along the paths, different paths in the combination sharing no nodes from a predetermined set of nodes, wherein the intermediate node performs the steps of receiving an instance of a path discovery message at the intermediate node, the received instance of the path discovery message comprising an indication of a path from a source node to the intermediate node that resulted in reception of the instance by the intermediate node; forwarding an updated instance of the path discovery message based on the received instance via a link from the intermediate node to a next node, dependent on a result of testing at least one of a first, second and third condition, the intermediate node disabling said forwarding of the updated instance when the received instance meets at least one of said first, second and third condition, testing the first condition comprising testing whether no further instance of the path discovery message received by the intermediate node has a value of a measure of path cost that is smaller than or equal to a value of said measure of path cost for the received instance when the further instance indicates a further path that contains only nodes from said predetermined set that occurs also in the path indicated by the received instance; testing the second condition comprising testing whether the next node was also a node to which a preceding node along the path has a further link, and the value of said measure of path cost for the path from the preceding node to the next node via said further link is not larger than the value of measure of path cost for the path from the preceding node to the next node via the intermediate node, testing the third condition comprising testing whether the intermediate node has a further link to the destination node and the value of the measure of path cost associated with the link to the next node is not less than the value of the measure of path cost associated with the further link to the destination node.
2. A method according to claim 1, wherein the intermediate node disables said forwarding of the updated instance at least when the received instance meets said second condition, the intermediate node obtaining information about the further link for use in testing the second condition from the received instance of the path discovery message.
3. A method according to claim 1, wherein the intermediate node includes link information in the updated instance of the path discovery message, the link information indicating at least one further node, other than the next node, to which the intermediate node has a link.
4. A computer program product comprising as program of instructions for a programmable data processor of a network node, which instructions, when executed by the programmable data processor, will cause the network node to execute the method of claim 1.
5. A method of selecting combinations of disjoint paths through a network from a source node to a destination node, the method comprising propagating path discovery messages from the source node through the network, using the method of claim 1 in at least one intermediate node in the network; detecting arrival of instances of the path discovery messages at the destination node after forwarding via different paths through the network; selecting a lowest cost combination of said different paths wherein the paths in the combination are disjoint paths at the predetermined set of nodes.
6. A method according to claim 5, comprising transmitting a message a plurality of times in parallel through each of the paths in the selected combination of paths respectively, and/or transmitting respective parts of a message via respective ones of the paths in the selected combination of disjoint paths.
7. A method according to claim 1, comprising using node identifications representing domain nodes from a network domain in the indication of the path, different node identifications being selected for the same domain nodes for different sessions for selecting different combinations of paths.
8. A network node device, comprising a receiver and a transmitter for communication of messages via links to further node devices in the network, the messages including instances of a path discovery message that indicate paths followed to the network node device; a data processor configured to control forwarding of updated instances of the path discovery message via a link from the node to a next node based on the received instances of the path discovery message, dependent on a result of testing at least one of a first, second and third condition, the data processor being configured to disable said forwarding of the updated instance when the received instance meets at least one of said first, second and third condition, testing the first condition comprising testing whether no further instance of the path discovery message received by the intermediate node has a value of a measure of path cost that is smaller than or equal to a value of said measure of path cost for the received instance when the further instance indicates a further path that contains only nodes from said predetermined set that occur also in the path indicated by the received instance; testing the second condition comprising testing whether the next node was also a node to which a preceding node along the path has a further link, and the value of said measure of path cost for the path from the preceding node to the next node via said further link is not larger than the value of measure of path cost for the path from the preceding node to the next node via the intermediate node, testing the third condition comprising testing whether the intermediate node has a further link to the destination node and the value of the measure of path cost associated with the link to the next node is not less than the value of the measure of path cost associated with the further link to the destination node.
9. A network node device according to claim 8, wherein the data processor is configured to disable said forwarding of the updated instance at least when the received instance meets said second condition, the data processor being configured to obtain information about the further link for use in testing the second condition from the received instance of the path discovery message.
10. A network node device according to claim 8, wherein the data processor is configured to include link information in the updated instance of the path discovery message, the link information indicating at least one further node, other than the next node, to which the intermediate node has a link.
11. A communication network, comprising a plurality of network nodes, including a network node device according to claim 8.
12. A communication network according to claim 11, comprising a source node configured to initiate transmission of the path discovery message and a destination node configured to receive instances of the path discovery message and to select a lowest cost combination of said different paths wherein the paths in the combination are disjoint paths at the predetermined set of nodes.
13. A communication network according to claim 11, wherein the network node device is configured to operate alternatively as destination node or intermediate node between the source node and the destination node, dependent on whether the path discovery message indicates that the network node device is the destination node.
14. A communication network according to claim 12, wherein the source node is configured to use the selected combination of paths to transmit a message a plurality of times in parallel through each of the paths in the selected combination of paths respectively, and/or to transmit respective parts of a message via respective ones of the paths in the selected combination of disjoint paths.
15. A communication network according to claim 12, wherein the source node is configured to one of the selected combination of paths to transmit a message a plurality of times, until the source node is alerted that subsequent messages need to be transmitted over the other path.
Description
BRIEF DESCRIPTION OF THE DRAWING
[0024] These and other aspects and advantages will become apparent from a description of exemplary embodiments with reference to the following figures.
[0025]
[0026]
[0027]
[0028]
[0029]
[0030]
[0031]
[0032]
DETAILED DESCRIPTION OF EXEMPLARY EMBODIMENTS
[0033]
[0034] In an embodiment, the network may support Software Defined Networking (SDN), which is known per se. SDN enables intelligent forwarding of messages.
[0035]
[0036]
[0037] In a second step 32, a disjoint path discovery process is executed, which will be described in more detail with reference to
[0038] In a third step 33, the source node tests whether the session should be ended. If not, the source node executes a fourth step 34 of receiving data for transmission in the session e.g. from the terminal device. In a fifth and sixth step 35, 36, the source node transmits the data in data messages to the next nodes of the first and second disjoint paths found in second step 32 respectively. Thus fifth and sixth steps 35, 36 are both executed for each message to transmit the message over the first path and the second path. Optionally only a subset of the messages of the session, which are indicated as critical messages, is transmitted over both paths. In this case, one of fifth and sixth step 35, 36 may comprise testing whether the message is critical and performing its transmission only if that is the case. In another embodiment, fifth and sixth step 35, 36 may be used to transmit different sub-sets of the messages from the session, to prevent that all messages from the session can be obtained by eavesdropping at a single point in the network.
[0039] In the embodiment wherein the nodes along the first and second paths store next node addresses in association with a session identifier, the session ID may be included in the data message. In the embodiment wherein the source node stores the addresses of the nodes along the paths, the addresses of the relevant path may be included in the data messages.
[0040] In a seventh step 37, the nodes forward the data messages along the paths. If the nodes and links along both paths function properly the data message will eventually reach the destination node along both paths. The process is repeated from third step 33 for successive data messages. The next data message may be transmitted from the source node before the previous message has arrived at the destination node, because the nodes operate in parallel. The flow-chart shows steps executed by different nodes in sequence merely for the sake of presentation.
[0041] If third step 33 detects the end of the session, the source node may execute an eight step 38 to transmit an end of session message along the paths, which may be used to free resources such as a stored session ID in the nodes along the paths.
[0042]
[0043] The process makes use of path discovery messages that are transmitted between nodes. These will also be called (updated) instances of a path discovery message, to emphasize that the path discovery messages between different pairs of nodes are related to a common path discovery process. Each path discovery message (instance) may contain an identification (e.g. address) of the destination node of the path, an identification of the source node, and identifications (e.g. addresses) of nodes along the path that resulted in transmission of the path discovery message (instance). For each node on the path the path discovery message (instance) may also contain indications of each of the neighbor nodes to which the respective node has sent or will send a path discovery message (including the cost to reach the neighbor node). The path discovery message (instance) may also contain a session identifier to identify a particular search for disjoint paths (or a communication session for which the search is made), cost information, optional branch information, a hop count etc.
[0044]
[0045]
[0046] In third step 53, the data processor 24 of the node 10, 10b tests whether the list of nodes along the path indicated in the path discovery message contains all the nodes from a pre-defined set of nodes along at least one of the stored paths for which the node has stored information for the session indicated in the path discovery message. If such a stored path exists, its cost value is compared to the cost value of the path indicated in the path discovery message. If the cost value of the stored path is not higher than the cost value of the path discovery message, the path discovery message is discarded and the data processor 24 repeats the process from first step 51. If not, the data processor 24 of the node 10, 10b executes a fourth step 54.
[0047] It may be noted that comparison of the costs of the path indicated in the path discovery message and the cost of the stored path is similar to the test performed in the “expand only from the best converging path” rule for a single optimal path search. But in the search for disjoint paths, this rule is qualified by the condition that a more costly path is excluded only if it contains all the nodes along the stored path that is less, or equal costly. Only in this way it can be guaranteed that no potentially optimal disjoint paths will be excluded from the search. If disjoint paths would exist of which one includes the path indicated in the path discovery message, then lower or equal cost disjoint paths will also exist if one replaces the path indicated in the path discovery message by the stored path. So it suffices that the latter will be found.
[0048] In fourth step 54, the data processor 24 of node 10, 10b stores information from the path discovery message as a new part of the information about potentially optimal paths for the respective session identifier.
[0049] Optionally, third and fourth step 53, 54 may be delayed to allow for time to receive the path discovery message for a session via other paths, and to prevent storage of the current path discovery message if the test of third step 53 using these other paths for the session indicates that the current path can be discarded and the process can repeat from first step 51. In the embodiment wherein the path discovery message comprises a hop count, the data processor 24 may store the hop count in association with the path.
[0050] Next, in a fifth step 55, the data processor 24 of the node 10, 10b tests the received path discovery message to determine whether it is the node 10, 10b specified as the destination node in the path discovery message. If so, the data processor 24 repeats the process from first step 51. If not, the data processor 24 proceeds to a sixth step 56.
[0051] In sixth step 56, the data processor 24 of the node 10, 10b generates an updated version of the path discovery message. In an embodiment, the data processor 24 adds an indication of its node to a list of nodes along a path in the message.
[0052] In a seventh step 57, the data processor 24 of the node 10, 10b causes the transmitters 22 of the node 10, 10b to transmit the updated path discovery message, preferably excluding transmission to any node that already occurs in the path (no-loop pruning rule) of the transmitted message to the node 10, 10b. After seventh step 57, the data processor 24 repeats the process from first step 51.
[0053] As a result of these steps, the data processor 24 of the node 10, 10b collects information about paths for a session to the node 10, 10b. If the data processor 24 determines in first step 51 that the discovery process for a session must be completed for a session, the data processor 24 of the node 10, 10b executes an eight step 58 to complete the process for the session. After eight step 58 the data processor 24 repeats the process from first step 51.
[0054] The execution of eight step 58 in the node 10, 10b depends on whether the node 10, 10b is the destination node of the session or not.
[0055] If the node 10, 10b is the destination node of the session, the data processor 24 of the node 10, 10b selects a disjoint pair from the paths for which the node has stored information and transmits confirmation messages of the paths in the selected pair back to the destination node. A confirmation message for a path comprises the session ID and an indication of the succession of nodes along the pair of disjoint paths. The confirmation messages may be sent back along the paths of the selected disjoint pair of paths.
[0056] In an embodiment, the data processor 24 selects the pair by considering all possible pairs of the stored paths, discarding pairs where the paths are not disjoint, computing score values for the remaining pairs, e.g. as a sum of the cost values, and selecting the pair with the best score value (e.g. the lowest cost value).
[0057] If the node 10, 10b is an intermediate node for the session, the data processor 24 of the node 10, 10b may execute eight step 58 in response to a confirmation message. In this case the data processor 24 of the node 10, 10b may record that the node is part of a path for the session, as well as information indicating an adjacent node along the path, for use to forward data messages that may be received later during the session. Furthermore in this case, the data processor 24 of the node 10, 10b may cause the transmitter 22 associated with the path to forward the confirmation message back along the path. Data processor 24 may then discard other stored path information for the session.
[0058] If the node 10, 10b is an intermediate node for the session, the data processor 24 of the node 10, 10b may also execute eight step 58 in response to a time out for the discovery process for the session, or in response to reception of an error message for the session. In this case the data processor 24 of the node 10, 10b may discard the stored information representing sub-paths for the session, optionally sending back error messages along those sub-paths. Discarding stored messages frees memory for use to find paths for other sessions, but is not indispensable.
[0059] Returning to third step 43 of
[0060] As described, the process requires the use of cost values. In an embodiment these cost values may be included in the path discovery messages, but this may not be necessary. It should be emphasized that the cost value can be accounted for in many ways. An aggregate cost value may be included in the path discovery message. In one embodiment the aggregate cost value in the message may include costs including those of the link over which the message was transmitted to the receiving node that executes the process of
[0061] Summarizing the processes, it should be noted that a disjoint path discovery process is used wherein nodes forward path discovery messages to their neighbors. However, not all path discovery messages are forwarded to all neighbors. A “no loop rule” may be applied that excludes transmission to any next node that occurs earlier in the path up. Furthermore transmission is also excluded if the cost value for the path of the path discovery message to the node is at least as high as that of another path to the node that was previously stored, provided that this other path contains only nodes that are also included in the path of the path discovery message. This condition is applied in third step 53.
[0062] This is based on the insight that such a path to an intermediate node cannot be part of one of an optimal pair of disjoint paths between the source node and the destination node, even if paths to the intermediate node have a higher cost value than other paths to the node. This is because use of any node in a path between the source node and the destination node could affect the possibility of finding an effective disjoint path. In other words, any node or combination of nodes used in a path to an intermediate node could have the effect that no effective disjoint path can be found between the source node and the destination node. The intermediate node, which is aware of paths through it, but unaware of disjoint paths, has no way of knowing which node or combination of nodes affects the ability to find an effective disjoint path.
[0063] However, if a first path to an intermediate node contains all the nodes of another path to that intermediate node and is at least as costly, it can be inferred that the first path can only worsen the possibility of finding disjoint paths. The third step 53 of the flow-chart of
[0064] Although
[0065] The number of transmissions of a path discovery message can be further reduced when a node makes use of predictions of the selection of transmission by neighboring nodes. Branch information may be used for this purpose. The branch information indicates neighboring nodes (branch targets) of node to which preceding nodes along the path may transmit path discovery messages that branch off from the path, but share the same preceding path. Optionally also including the cost to reach each of the branching nodes.
[0066]
[0067] This can be illustrated as follows. From the branch information neighboring node 602a knows that when node 602b receives an instance of the path discovery message from node 600, the path associated with that instance contains all the nodes associated with the instance of the path discovery message from node 600 to node 602a. If the cost associated with paths equals the counts of links in the paths, it is also known that the cost of the path discovery message from node 600 to node 602b via 602a is higher than that directly from node 600 to node 602b, and otherwise the costs may be compared using specified costs for the nodes and/or links. For the same reason as paths may be discarded in third step 53) node 602b may discard the path discovery message that it would receive from node 602a when the cost of this path is not lower. This enables node 602a to predict that his message can be discarded and therefore need not send the path discovery message at all.
[0068] This example illustrates how including branch information in path discovery messages inserted by a node (in this example node 600) reduces transmission of path discovery messages elsewhere in the network (in this case between nodes 602b and 602a). Dependent on the network topology this may significantly reduce the number of transmitted path discovery messages.
[0069] In an embodiment, the branch information is included in the path discovery message by the node (e.g. node 600) at which the paths branch off, for use by a node (e.g. 602a) further on along the path. But this may not be needed if the node (e.g. 602a) further on along the path already has access to branch information for neighboring nodes. Similarly, the cost associated with the branch may be included in the path discovery message by the node (e.g. node 600) at which the paths branch off, but this is not needed if the node (e.g. 602a) further on along the path already has access to cost information for neighboring nodes
[0070]
[0071] Seventh step 57 has been elaborated by a series of steps, and modified. A first to third step 61-63 and fifth step 65 may be used in the implementation described for
[0072] If not, data processor 24 executes a fourth step 64 wherein it determines whether the neighboring node 602b, 604a,b occurs in the branch information for the path of the received path discovery message and if so whether the aggregate cost of transmission to the neighboring node 102b, is at least as high as that of the transmission directly to the neighboring node 102b, according to the branch information. If so, data processor 24 skips to third step 63.
[0073] Herein the cost of transmission via the current node 102a is a sum of the cost of transmission to the current node 102a from the node 100 and the cost of transmission from the current node 102a to the neighboring node 102b. This is compared with the cost of transmission to the neighboring node 102b directly from the node 100 that is included in the branch information that node 600 sent to node 602a. When the latter cost is not higher than the former, aggregate cost, data processor 24 skips to third step 63. Instead of comparing the added costs from the node 100 that included the branch information, costs of overall paths may be compared with the same effect.
[0074] Data processor 24 proceeds to a fifth step 65 if data processor 24 does not skip from fourth step 64. In fifth step 65, data processor 24 causes a transmitter 22 of the node 102a to transmit the updated path discovery message to the neighboring nodes 102b and/or 104a,b. In the embodiment of
[0075] Although the flow-chart of
[0076] Although the flow-chart of
[0077] In third step 63, data processor 24 selects a neighboring node 102b, 104a,b that has not yet been processed. If such a node is available, the process is repeated from second step 62. If not the process is repeated from first step 51.
[0078] In the illustrated embodiment, data processor 24 complements path and branch information from its predecessors in the path discovery message by updated path and branch information for its own node. In an alternative embodiment, data processor 24 may add its branch information to the branch information from its predecessors, or replace branch information from more remote predecessors, so that the path discovery message contains branch information for branching from a plurality of nodes. In this embodiment fourth step 64 may include tests by comparing the neighboring nodes with more branch targets, to decrease transmissions to neighbors. However, transmitting only branch information from the node itself reduces the length of the path discovery message with a minimum loss of effectiveness.
[0079] Another prediction can be made if a neighboring node of a current node is the destination node of the path discovery message. In this case path discovery messages need not be transmitted to neighboring nodes other than the destination node if the added cost of using a path to such a neighboring node is not smaller than that of the added cost of the path to the destination node. In this embodiment, the flow chart of
[0080] If a node is provided with information about its neighboring nodes and their links the data processor 24 of the node may compute further predictions. For example in an embodiment wherein the data processor 24 of a node has access to information about the identity of a set of nodes in its surroundings and the cost values associated with the nodes in that set and/or links to those nodes, the node may construct extended versions of the path indicated by a received path discovery message by adding nodes from the set and applying the test of third step 53 or fourth step 64 using the extended path instead of the path from the path discovery message and/or in addition to the stored paths.
[0081] In a further example use of information about neighboring nodes, third step 53 may be expanded by adding a sub-step that uses a criterion that uses information about shortcuts for discarding the path discovery message. For this purpose, the nodes may be configured to include information about shortcuts in the path discovery messages.
[0082] In particular, shortcut path detection for a received path discovery message received by a node N1 comprises (a) detecting that there is a preceding node N2 on the discovered path that has a neighbor node NN2 that is also one of the neighbors NN1 of the receiving node N1 and (b) the cost of the path up to the preceding node N2 via the neighbor node NN2 to the receiving node N1 is less than the cost of the path that the path discovery message has followed.
[0083] Like the test described for third step 53 the shortcut criterion can be seen as a modification of a test that is only suitable for discarding paths for selection of a single optimal path rather than a pair of disjoint paths. If a shortcut is detected by a receiving node, then the receiving node N1 could discard the received path discovery message for the purpose of selecting a single optimal path and it need not send it to any of its neighbors NN1. This is because any least cost single path to the receiving node N1 will involve the shortcut, so the path followed by the path discovery message cannot be part of the least cost single path. However, this shortcut rule only holds for finding optimal single paths, but not for determining an optimal pair of disjoint paths because it cannot be excluded that the path of the pair of path involves the shortcut.
[0084] There is a modification of this rule that does hold for disjoint paths. In particular, when a node N1 receives a path discovery message, the receiving node N1 may be configured to detect whether the path contains two overlapping shortcuts. This comprises testing whether there is (a) first shortcut via a node k between two nodes i and j on the received path i-j-N1 and there is (b) a second shortcut to the receiving node N1 from a node 1 via a node m on the path, where each of these nodes i, j, k, l and m are distinct and node l lies between nodes i and j on the received path i-l-j-N1). The receiving node N1 may be configured to discard the path discovery message if this is the case. This does not affect the finally selected pair of disjoint paths because it cannot be part of an optimal disjoint path.
[0085] In a further embodiment additional constraints on path discovery messages may be applied. For example, in step 53 it may be tested if the number of forwarded path discovery messages for a session exceeded a pre-defined maximum. If so, the data processor 24 may discard the path discovery message. This may result in suboptimal cost for disjoint path discovery process, but on the other hand it can prevent excessive growth of the number of path discovery messages that will be transmitted.
[0086] Although embodiments have been described wherein a pair of disjoint paths is selected, it should be appreciated that alternatively N disjoint paths may be determined, with N>2. For this, execution of eight step 58 by the destination node may be amended to select N disjoint paths. No change in third step 53 or its elaboration in
[0087] As noted, first step 51 tests whether a condition is met to complete the discovery process. In an embodiment the condition may be a time out for a session, e.g. a detection that more than a predetermined amount of time has elapsed since receiving a first path discovery message for the session. If a maximum node-to-node transmission time through the network is known, the predetermined amount of time may be set to that maximum. In an embodiment, the predetermined amount of time may be set dependent on the source node and the node that applies the condition.
[0088] Although embodiments have been described wherein all path discovery messages are forwarded except when they meet the described condition of not entirely containing another sub-path (optionally combined with a cost comparison), it should be appreciated that in other embodiments forwarding the path discovery messages may be disabled based on additional conditions. For example, forwarding the path discovery message may be disabled when the cost indicated in the threshold exceeds a predetermined maximum, e.g. a maximum specified in the path discovery message itself. This may be used to exclude paths with excessive costs. In an embodiment wherein a hop count is included in the path discovery messages and incremented at every node along the path, a test may be performed whether the hop count of the message from the source node exceeds a predetermined threshold. This may be used to exclude paths with excessive length. In another embodiment a hop count is included, but only nodes from a pre-defined set of nodes are counted. This may be used to exclude paths with an excessive number of nodes with specific characteristics.
[0089] Although embodiments have been described for establishing a session which lasts only for a limited time period, it should be appreciated that discovery of disjoint paths need not be limited to such sessions. Instead the term session may refer to all message traffic between the source and destination node. In this case the session ID may be defined by the addresses of the source and destination nodes.
[0090] Each message may comprise a header and payload data. The header may contain an indication of the type of message, a session ID and/or an address of the destination. However, as used herein the messages during the session need not contain more than payload data and information from which the path can be determined for the message.
[0091] Although embodiments have been described for establishing a session wherein messages are transmitted over one of the disjoint paths (primary) and the other, disjoint path is used as an alternative for transmitting messages in case there is a failure on the primary path, it should be appreciated that discovered disjoint paths can be used in other ways.
[0092] For example, for increased, seamless robustness of a session in case of a node or link failure each message, or at least each of a sub-set of critical messages, can be transmitted over each disjoint path.
[0093] Another example is to avoid eavesdropping by a “man in the middle” at a single link or node, part of the messages of the session (e.g. messages where the sequence number of the message in the session is odd) may be transmitted over a first one of the disjoint paths and another part of the messages (e.g. the even numbered messages) may be transmitted over a second one of the disjoint paths. When N>2 disjoint paths are used to distribute transmission of the messages of the session, obtaining all messages of the session by eavesdropping at less than N points in the network becomes impossible.
[0094] Apart from making eavesdropping more difficult, distribution over N>1 disjoint paths may be used to ensure that no bandwidth bottleneck can arise in the network where all messages of the session must pass.
[0095] Although embodiments have been described wherein the disjoint paths are discovered at the start of a session, it should be appreciated that discovery may be started at a later stage, for example before the start of a critical part of the session. Although embodiments have been described wherein the disjoint paths are discovered once for a session, it should be appreciated that repeated discovery may be used as well. For example, when the destination node detects that one of the disjoint paths ceases to function during the session, a new discovery process may be started to replace the disjoint paths for a subsequent messages in the session.
[0096] Although embodiments have been described wherein completely disjoint paths are used, it should be appreciated that instead it may suffice to search for partially disjoint paths that overlap at most at predetermined nodes. Such nodes or links may be called “trusted nodes”. For example when battery powered nodes and line powered nodes are used and the disjoint paths are used for robustness against node failure due to battery exhaustion, line powered nodes might be “trusted nodes”. Conversely, when disjoint paths are used for robustness against line failures, nodes with battery back-up might be trusted nodes. In this case, overlap needs to be excluded only for nodes in a predetermined set of nodes that includes all nodes that can be used for communication between the source and destination except for the trusted nodes. Information that indicates to the nodes whether a node is a trusted node may be provided for example by providing each node with a list of addresses of trusted nodes, or by using a distinguished type of address from the trusted nodes. If there are no trusted nodes, the predetermined set contains all nodes that can be used for communication between the source and destination.
[0097] The implementation of a search of partially disjoint paths in the case of trusted nodes may be realized by ignoring the trusted nodes in the determination whether all nodes of a stored path are contained in the path indicated by the path discovery message e.g. in third step 53. Similarly, there may be trusted links. Wired links might be trusted links in contrast to wireless links or vice versa. However, as long as a link is in a one to one relation with a destination it can be handled along with its destination.
[0098] In an embodiment, the path discovery message may indicate which nodes in the path are trusted and each node may ignore nodes according to this indication. A trusted node may add such an indication for itself in the path discovery message for example.
[0099] In the illustrated embodiments, the path discovery message contains identifications of nodes along the path followed by the path discovery message, and optionally about neighbors of such nodes. The destination node uses the information of nodes along the path during path discovery to determine whether different paths are disjoint. Intermediate nodes may use the information of nodes along the path, and optionally information about neighbors, during path discovery, when comparing paths.
[0100] The use of path information that openly identifies nodes may give rise to problems. For example, it means that interception of a path discovery message for a session could provide an eavesdropper with information of nodes that could be used to intercept at least part of the information exchange of the session. When the paths extend through a plurality of different network domains, incompatibility of identification methods in different domains could give rise to error. Furthermore, the path information might reveal confidential information about network topology.
[0101] In an embodiment, such problems may be addressed by assigning session specific node identifications to nodes for use in the steps involving path discovery messages, the session specific node identification not being used for the node outside the session. Preferably, the session specific node identifications differ from the addresses used to address messages to the nodes. Such session specific node identifications may be used in the process of disjoint path discovery as described using
[0102]
[0103] In a first step 71, executed for example as part of sixth step 56 of the process of
[0104] The processor may be configured to generate the new identification e.g. by means of a random number generation process, and/or based on the time and/or date of reception. Generation may comprise random, time dependent and/or date dependent selection of the identification from a set of predetermined identifications, or use of a predetermined identification generation function as a function of random, time dependent and/or date dependent function arguments.
[0105] If the test of first step 71 shows that the processor has previously stored an assigned identification for the session identifier, the processor executes a fifth step 75, wherein it retrieves the previously stored identification associated with the session identifier. Subsequently, the processor proceeds to fourth step 74, using the previously stored identification instead of a new identification.
[0106] In another embodiment, a server for a network domain is used to supply the new identification to the node in response to a request from the processor of the node. In this embodiment, the processor may request the identification in a request that indicates the session identifier from a path discovery message each time when the node receives such a path discovery message. Alternatively, processor may cache identification provided by the server in association with the session identifier, and test for such a cached identification before requesting the identification from the server.
[0107] In another embodiment, the node identifications replaced by gateway nodes of a network domain that forward path discovery messages to other network domains. In this embodiment each node within the network domain may use its own identification to identify itself in path discovery messages for all sessions identifiers.
[0108] When the gateway node transmits a path discovery message from its network domain, the gateway node amends the path discovery message. The gateway node replaces the own identifications of those nodes that belong to the network domain by identifications that depend on the session identifier of the path discovery message.
[0109] Conversely, when a gateway node passes a path discovery message into its network domain, the gateway node uses the session identifier of the path discovery message to replace the session identifier dependent identifications of those nodes that belong to the network domain by the own identifications of these nodes.
[0110] A central server for the domain may be used to supply the session dependent replacement identifications for the different nodes in response to requests from gateway nodes that indicate the session identifier. As in the embodiment wherein all nodes themselves insert the session dependent identifications, each gateway node may use caching to reduce the number of requests.
[0111] In an embodiment, the generation of node identifications comprises encrypting a combination of the real identification and other information such as the session identifier or a random number. The key needed for decryption may be provided to gateways and/or nodes in the network domain. This enables these gateway nodes and/or nodes recover the real identification of other nodes from the network domain from the node identifications in the path discovery message without using a server.
[0112] Optionally, the nodes and/or gateway nodes may add information representing a simulated network domain topology in the path discovery messages. Different simulated network domain topologies may be used for different session identifiers. Thus for example, when a new session identifier is encountered, a nodes, a gateway and/or a server may associate the session identifier with a simulated network domain topology that contains one or more additional nodes than do not correspond to real existing nodes in the network domain. As another example, a combination of mutually connected real existing nodes may be replaced by a single simulated node in the simulated network domain topology, with links to the simulated node instead of links to the real existing nodes.
[0113] When a gateway node passes a path discovery message out of the domain, the gateway node (i.e. a processor in the gateway node) may add such additional nodes to the path represented in the path discovery message, consistent with the simulated network domain topology for the session identifier of the path discovery message. For example additional nodes may be inserted between real nodes. Conversely, the gateway node may remove such additional nodes from the path represented in the path discovery message, when the gateway node passes a path discovery message back into the domain. As another example, the gateway node may replace a part of the path that contains nodes from a combination of nodes that is represented by a single simulated node in the simulated network domain topology, by information representing the single simulated node. Instead of, or in addition to the gateway nodes, nodes inside the domain may make similar amendments.