bond: Add bonding driver and LACP protocol 92/9892/58
authorSteven <sluong@cisco.com>
Wed, 20 Dec 2017 20:43:01 +0000 (12:43 -0800)
committerDamjan Marion <dmarion.lists@gmail.com>
Wed, 21 Mar 2018 21:02:15 +0000 (21:02 +0000)
commit9cd2d7a5a4fafadb65d772c48109d55d1e19d425
tree4a9e0665be0096ee6bfc2235388f90b276b23814
parent43ebe29b6ea1107c30311cfb3dbd8190282903d0
bond: Add bonding driver and LACP protocol

Add bonding driver to support creation of bond interface which composes of
multiple slave interfaces. The slave interfaces could be physical interfaces,
or just any virtual interfaces. For example, memif interfaces.

The syntax to create a bond interface is
create bond mode <lacp | xor | acitve-backup | broadcast | round-robin>

To enslave an interface to the bond interface,
enslave interface TenGigabitEthernet6/0/0 to BondEthernet0

Please see src/plugins/lacp/lacp_doc.md for more examples and additional
options.

LACP is a control plane protocol which manages and monitors the status of
the slave interfaces. The protocol is part of 802.3ad standard. This patch
implements LACPv1. LACPv2 is not supported.
To enable LACP on the bond interface, specify "mode lacp" when the bond
interface is created. The syntax to enslave a slave interface is the same as
other bonding modes.

Change-Id: I06581d3b87635972f9f0e1ec50b67560fc13e26c
Signed-off-by: Steven <sluong@cisco.com>
38 files changed:
src/configure.ac
src/plugins/Makefile.am
src/plugins/lacp.am [new file with mode: 0644]
src/plugins/lacp/cli.c [new file with mode: 0644]
src/plugins/lacp/input.c [new file with mode: 0644]
src/plugins/lacp/lacp.api [new file with mode: 0644]
src/plugins/lacp/lacp.c [new file with mode: 0644]
src/plugins/lacp/lacp_all_api_h.h [new file with mode: 0644]
src/plugins/lacp/lacp_api.c [new file with mode: 0644]
src/plugins/lacp/lacp_doc.md [new file with mode: 0644]
src/plugins/lacp/lacp_msg_enum.h [new file with mode: 0644]
src/plugins/lacp/lacp_test.c [new file with mode: 0644]
src/plugins/lacp/machine.h [new file with mode: 0644]
src/plugins/lacp/mux_machine.c [new file with mode: 0644]
src/plugins/lacp/mux_machine.h [new file with mode: 0644]
src/plugins/lacp/node.c [new file with mode: 0644]
src/plugins/lacp/node.h [new file with mode: 0644]
src/plugins/lacp/protocol.h [new file with mode: 0644]
src/plugins/lacp/ptx_machine.c [new file with mode: 0644]
src/plugins/lacp/ptx_machine.h [new file with mode: 0644]
src/plugins/lacp/rx_machine.c [new file with mode: 0644]
src/plugins/lacp/rx_machine.h [new file with mode: 0644]
src/plugins/lacp/selection.c [new file with mode: 0644]
src/plugins/lacp/tx_machine.c [new file with mode: 0644]
src/plugins/lacp/tx_machine.h [new file with mode: 0644]
src/vat/api_format.c
src/vnet.am
src/vnet/bonding/bond.api [new file with mode: 0644]
src/vnet/bonding/bond_api.c [new file with mode: 0644]
src/vnet/bonding/cli.c [new file with mode: 0644]
src/vnet/bonding/device.c [new file with mode: 0644]
src/vnet/bonding/node.c [new file with mode: 0644]
src/vnet/bonding/node.h [new file with mode: 0644]
src/vnet/vnet_all_api_h.h
src/vpp/api/custom_dump.c
test/test_bond.py [new file with mode: 0644]
test/vpp_bond_interface.py [new file with mode: 0644]
test/vpp_papi_provider.py