• Jarod Wilson's avatar
    bonding: add a vlan+srcmac tx hashing option · 7b8fc010
    Jarod Wilson authored
    This comes from an end-user request, where they're running multiple VMs on
    hosts with bonded interfaces connected to some interest switch topologies,
    where 802.3ad isn't an option. They're currently running a proprietary
    solution that effectively achieves load-balancing of VMs and bandwidth
    utilization improvements with a similar form of transmission algorithm.
    
    Basically, each VM has it's own vlan, so it always sends its traffic out
    the same interface, unless that interface fails. Traffic gets split
    between the interfaces, maintaining a consistent path, with failover still
    available if an interface goes down.
    
    Unlike bond_eth_hash(), this hash function is using the full source MAC
    address instead of just the last byte, as there are so few components to
    the hash, and in the no-vlan case, we would be returning just the last
    byte of the source MAC as the hash value. It's entirely possible to have
    two NICs in a bond with the same last byte of their MAC, but not the same
    MAC, so this adjustment should guarantee distinct hashes in all cases.
    
    This has been rudimetarily tested to provide similar results to the
    proprietary solution it is aiming to replace. A patch for iproute2 is also
    posted, to properly support the new mode there as well.
    
    Cc: Jay Vosburgh <j.vosburgh@gmail.com>
    Cc: Veaceslav Falico <vfalico@gmail.com>
    Cc: Andy Gospodarek <andy@greyhouse.net>
    Cc: Thomas Davis <tadavis@lbl.gov>
    Signed-off-by: default avatarJarod Wilson <jarod@redhat.com>
    Link: https://lore.kernel.org/r/20210119010927.1191922-1-jarod@redhat.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    7b8fc010
bond_main.c 152 KB