tipc: transfer broadcast nacks in link state messages
authorJon Paul Maloy <jon.maloy@ericsson.com>
Thu, 1 Sep 2016 17:52:49 +0000 (13:52 -0400)
committerDavid S. Miller <davem@davemloft.net>
Sat, 3 Sep 2016 00:10:24 +0000 (17:10 -0700)
commit02d11ca20091fcef904f05defda80c53e5b4e793
tree2d1f26e4facff8b4e784c60d5a3c6163ba40ed30
parent2c896fb02e7f65299646f295a007bda043e0f382
tipc: transfer broadcast nacks in link state messages

When we send broadcasts in clusters of more 70-80 nodes, we sometimes
see the broadcast link resetting because of an excessive number of
retransmissions. This is caused by a combination of two factors:

1) A 'NACK crunch", where loss of broadcast packets is discovered
   and NACK'ed by several nodes simultaneously, leading to multiple
   redundant broadcast retransmissions.

2) The fact that the NACKS as such also are sent as broadcast, leading
   to excessive load and packet loss on the transmitting switch/bridge.

This commit deals with the latter problem, by moving sending of
broadcast nacks from the dedicated BCAST_PROTOCOL/NACK message type
to regular unicast LINK_PROTOCOL/STATE messages. We allocate 10 unused
bits in word 8 of the said message for this purpose, and introduce a
new capability bit, TIPC_BCAST_STATE_NACK in order to keep the change
backwards compatible.

Reviewed-by: Ying Xue <ying.xue@windriver.com>
Signed-off-by: Jon Maloy <jon.maloy@ericsson.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/tipc/bcast.c
net/tipc/bcast.h
net/tipc/link.c
net/tipc/link.h
net/tipc/msg.h
net/tipc/node.c
net/tipc/node.h