tipc: handle collisions of 32-bit node address hash values
When a 32-bit node address is generated from a 128-bit identifier, there is a risk of collisions which must be discovered and handled. We do this as follows: - We don't apply the generated address immediately to the node, but do instead initiate a 1 sec trial period to allow other cluster members to discover and handle such collisions. - During the trial period the node periodically sends out a new type of message, DSC_TRIAL_MSG, using broadcast or emulated broadcast, to all the other nodes in the cluster. - When a node is receiving such a message, it must check that the presented 32-bit identifier either is unused, or was used by the very same peer in a previous session. In both cases it accepts the request by not responding to it. - If it finds that the same node has been up before using a different address, it responds with a DSC_TRIAL_FAIL_MSG containing that address. - If it finds that the address has already been taken...
Showing
- net/tipc/addr.c 2 additions, 1 deletionnet/tipc/addr.c
- net/tipc/bearer.c 1 addition, 2 deletionsnet/tipc/bearer.c
- net/tipc/core.c 2 additions, 0 deletionsnet/tipc/core.c
- net/tipc/core.h 2 additions, 0 deletionsnet/tipc/core.h
- net/tipc/discover.c 107 additions, 19 deletionsnet/tipc/discover.c
- net/tipc/link.c 17 additions, 9 deletionsnet/tipc/link.c
- net/tipc/link.h 2 additions, 2 deletionsnet/tipc/link.h
- net/tipc/msg.h 22 additions, 1 deletionnet/tipc/msg.h
- net/tipc/net.c 1 addition, 3 deletionsnet/tipc/net.c
- net/tipc/node.c 78 additions, 7 deletionsnet/tipc/node.c
- net/tipc/node.h 2 additions, 1 deletionnet/tipc/node.h
Please register or sign in to comment