linux/net/tipc
Allan Stephens 97878a405c tipc: Detect duplicate nodes using different network interfaces
Utilizes the new "node signature" field in neighbor discovery messages
to ensure that all links TIPC associates with a given <Z.C.N> network
address belong to the same neighboring node. (Previously, TIPC could not
tell if link setup requests arriving on different interfaces were from
the same node or from two different nodes that has mistakenly been assigned
the same network address.)

The revised algorithm for detecting a duplicate node considers both the
node signature and the network interface adddress specified in a request
message when deciding how to respond to a link setup request. This prevents
false alarms that might otherwise arise during normal network operation
under the following scenarios:

a) A neighboring node reboots. (The node's signature changes, but the
network interface address remains unchanged.)

b) A neighboring node's network interface is replaced. (The node's signature
remains unchanged, but the network interface address changes.)

c) A neighboring node is completely replaced. (The node's signature and
network interface address both change.)

The algorithm also handles cases in which a node reboots and re-establishes
its links to TIPC (or begins re-establishing those links) before TIPC
detects that it is using a new node signature. In such cases of "delayed
rediscovery" TIPC simply accepts the new signature without disrupting
communication that is already underway over the links.

Thanks to Laser [gotolaser@gmail.com] for his contributions to the
development of this enhancement.

Signed-off-by: Allan Stephens <allan.stephens@windriver.com>
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
2012-02-24 17:05:13 -05:00
..
addr.c tipc: Eliminate configuration for maximum number of cluster nodes 2011-03-13 16:35:17 -04:00
addr.h tipc: make zone/cluster mask constants a define 2011-05-10 16:03:54 -04:00
bcast.c tipc: Prevent loss of fragmented messages over broadcast link 2012-02-06 16:59:19 -05:00
bcast.h tipc: Major redesign of broadcast link ACK/NACK algorithms 2012-02-06 16:59:18 -05:00
bearer.c tipc: rename struct bearer_name to struct tipc_bearer_names 2011-12-29 21:53:30 -05:00
bearer.h tipc: rename struct bearer_name to struct tipc_bearer_names 2011-12-29 21:53:30 -05:00
config.c tipc: Revise comment justifying release of configuration spinlock 2011-12-27 11:33:40 -05:00
config.h tipc: Remove unused link event tracking code 2011-09-17 22:55:15 -04:00
core.c tipc: Minor optimization to deactivation of Ethernet media suppot 2011-12-27 11:33:41 -05:00
core.h atomic: use <linux/atomic.h> 2011-07-26 16:49:47 -07:00
discover.c tipc: Detect duplicate nodes using different network interfaces 2012-02-24 17:05:13 -05:00
discover.h tipc: rename struct link* to struct tipc_link* 2011-12-29 21:53:30 -05:00
eth_media.c tipc: rename struct media to struct tipc_media 2011-12-29 21:53:29 -05:00
handler.c tipc: remove zeroing assignments to static global variables 2011-01-01 13:57:57 -08:00
Kconfig tipc: Eliminate configuration for maximum number of cluster nodes 2011-03-13 16:35:17 -04:00
link.c tipc: Prevent loss of fragmented messages over unicast links 2012-02-06 16:59:19 -05:00
link.h tipc: rename struct link* to struct tipc_link* 2011-12-29 21:53:30 -05:00
log.c tipc: Finish streamlining of debugging code 2011-01-01 13:57:54 -08:00
log.h tipc: update log.h re-include protection to reflect new name 2011-01-01 14:56:18 -08:00
Makefile tipc: rename dbg.[ch] to log.[ch] 2011-01-01 13:57:51 -08:00
msg.c tipc: Hide media-specific addressing details from generic bearer code 2011-12-27 11:33:36 -05:00
msg.h tipc: Introduce node signature field in neighbor discovery message 2012-02-24 17:05:13 -05:00
name_distr.c tipc: Eliminate alteration of publication key during name table purging 2012-02-06 16:59:19 -05:00
name_distr.h
name_table.c tipc: rename struct subscription to struct tipc_subscription 2011-12-29 21:53:29 -05:00
name_table.h tipc: rename struct subscription to struct tipc_subscription 2011-12-29 21:53:29 -05:00
net.c tipc: Eliminate dynamic allocation of broadcast link data structures 2011-12-27 11:33:47 -05:00
net.h tipc: manually inline net_start/stop, make assoc. vars static 2011-03-13 16:35:17 -04:00
netlink.c genetlink: make netns aware 2009-07-12 14:03:27 -07:00
node.c tipc: Introduce node signature field in neighbor discovery message 2012-02-24 17:05:13 -05:00
node.h tipc: Introduce node signature field in neighbor discovery message 2012-02-24 17:05:13 -05:00
node_subscr.c tipc: Cosmetic changes to node subscription code 2011-03-13 16:35:16 -04:00
node_subscr.h tipc: Cosmetic changes to node subscription code 2011-03-13 16:35:16 -04:00
port.c tipc: Minor optimization to rejection of connection-based messages 2012-02-06 16:59:19 -05:00
port.h tipc: rename struct port_list to struct tipc_port_list 2011-12-29 21:53:29 -05:00
ref.c net: two vzalloc() cleanups 2011-12-19 16:01:38 -05:00
ref.h tipc: cleanup function namespace 2010-10-16 11:13:24 -07:00
socket.c tipc: Enable use by containers having their own network namespace 2011-12-27 11:13:05 -05:00
subscr.c tipc: rename struct subscriber to struct tipc_subscriber 2011-12-29 21:53:30 -05:00
subscr.h tipc: rename struct subscription to struct tipc_subscription 2011-12-29 21:53:29 -05:00