summaryrefslogtreecommitdiff
path: root/configure.ac
diff options
context:
space:
mode:
authorIlya Maximets <i.maximets@ovn.org>2021-07-13 17:32:06 +0200
committerIlya Maximets <i.maximets@ovn.org>2021-07-16 21:52:23 +0200
commit298d4151f4cd276b0644ca7e7c68157e7df79073 (patch)
tree45e6636ae165acb590e71f7c3aaba081c4415263 /configure.ac
parentb1e517bd2f818fc7c0cd43ee0b67db4274e6b972 (diff)
downloadopenvswitch-298d4151f4cd276b0644ca7e7c68157e7df79073.tar.gz
bond: Fix broken rebalancing after link state changes.
There are 3 constraints for moving hashes from one member to another: 1. The load difference exceeds ~ 3% of the load of one member. 2. The difference in load between members exceeds 100,000 bytes. 3. Moving the hash reduces the load difference by more than 10%. In the current implementation, if one of the members transitions to the DOWN state, all hashes assigned to it will be moved to the other members. After that, if the member goes UP, it will wait for rebalancing to get hashes. But in case we have more than 10 equally loaded hashes, it will never meet constraint # 3, because each hash will handle less than 10% of the load. The situation gets worse when the number of flows grows and it is almost impossible to transfer any hash when all 256 hash records are used, which is very likely when we have few hundred/thousand flows. As a result, if one of the members goes down and back up while traffic flows, it will never be used to transmit packets again. This will not be fixed even if we completely stop the traffic and start it again, because the first two constraints will block rebalancing in the earlier stages, while we have low traffic volume. Moving a single hash if the destination does not have any hashes, as it was before commit c460a6a7bc75 ("ofproto/bond: simplifying the rebalancing logic"), will not help, because a single hash is not enough to make the difference in load less than 10% of the total load, and this member will handle only that one hash forever. To fix this, let's try to move multiple hashes at the same time to meet constraint # 3. The implementation includes sorting the "records" to be able to collect records with a cumulative load close enough to the ideal value. Acked-by: Ben Pfaff <blp@ovn.org> Signed-off-by: Ilya Maximets <i.maximets@ovn.org>
Diffstat (limited to 'configure.ac')
0 files changed, 0 insertions, 0 deletions