LACP Protocol
=============

This document is to describe the usage of VPP Link Aggregation Control
Protocol (LACP) implementation.

LACP
----

The Link Aggregation Control Protocol (LACP) is an 802.3ad standard
which provides a protocol for exchanging information between Partner
Systems on a link to allow their protocol instances to reach agreement
on the Link Aggregation Group to which the link belongs and enable
transmission and reception for the higher layer. Multiple links may be
bundled to the same Aggregation Group to form a high bandwidth
transmission medium and create a fault-tolerant link.

Configuration
~~~~~~~~~~~~~

1. Create the bond interface create bond mode lacp [hw-addr ]
   [load-balance { l2 \| l23 \| l34 } [numa-only]]

2. Enslave the physical interface to the bond bond add [passive]
   [long-timeout]”

3. Delete the bond interface delete bond { \| sw_if_index }

4. Detach the slave interface from the bond bond del

Configuration example
~~~~~~~~~~~~~~~~~~~~~

::

   create bond mode lacp
   set interface state BondEthernet0 up
   bond add BondEthernet0 TenGigabitEthernet7/0/0
   bond add BondEthernet0 TenGigabitEthernet7/0/1
   bond add BondEthernet0 TenGigabitEthernet5/0/0
   bond add BondEthernet0 TenGigabitEthernet5/0/1

::

   bond del TenGigabitEthernet5/0/1

::

   delete bond BondEthernet0

Operational data
~~~~~~~~~~~~~~~~

::

   show lacp [<interface>] [details]

Example:

::

   DBGvpp# show lacp
                                                           actor state                      partner state
   interface name            sw_if_index  bond interface   exp/def/dis/col/syn/agg/tim/act  exp/def/dis/col/syn/agg/tim/act
   GigabitEthernet2/0/1      1            BondEthernet0      0   0   1   1   1   1   1   1    0   0   1   1   1   1   1   1
     LAG ID: [(ffff,e4-c7-22-f3-26-71,0000,00ff,0001), (ffff,fc-99-47-4a-0c-8b,0009,00ff,0001)]
     RX-state: CURRENT, TX-state: TRANSMIT, MUX-state: COLLECTING_DISTRIBUTING, PTX-state: PERIODIC_TX
   TenGigabitEthernet4/0/0   2            BondEthernet1      0   0   1   1   1   1   1   1    0   0   1   1   1   1   0   1
     LAG ID: [(ffff,90-e2-ba-76-cf-2d,0001,00ff,0001), (8000,00-2a-6a-e5-50-c1,0140,8000,011d)]
     RX-state: CURRENT, TX-state: TRANSMIT, MUX-state: COLLECTING_DISTRIBUTING, PTX-state: PERIODIC_TX
   TenGigabitEthernet4/0/1   3            BondEthernet1      0   0   1   1   1   1   1   1    0   0   1   1   1   1   0   1
     LAG ID: [(ffff,90-e2-ba-76-cf-2d,0001,00ff,0002), (8000,00-2a-6a-e5-50-c1,0140,8000,011e)]
     RX-state: CURRENT, TX-state: TRANSMIT, MUX-state: COLLECTING_DISTRIBUTING, PTX-state: PERIODIC_TX
   TenGigabitEthernet8/0/1   7            BondEthernet1      0   0   1   1   1   1   1   1    0   0   1   1   1   1   0   1
     LAG ID: [(ffff,90-e2-ba-76-cf-2d,0001,00ff,0003), (8000,00-2a-6a-e5-50-01,007a,8000,0114)]
     RX-state: CURRENT, TX-state: TRANSMIT, MUX-state: COLLECTING_DISTRIBUTING, PTX-state: PERIODIC_TX
   TenGigabitEthernet8/0/0   6            BondEthernet1      0   0   1   1   1   1   1   1    0   0   1   1   1   1   0   1
     LAG ID: [(ffff,90-e2-ba-76-cf-2d,0001,00ff,0004), (8000,00-2a-6a-e5-50-01,007a,8000,0115)]
     RX-state: CURRENT, TX-state: TRANSMIT, MUX-state: COLLECTING_DISTRIBUTING, PTX-state: PERIODIC_TX
   TenGigabitEthernet6/0/1   5            BondEthernet2      0   0   1   1   1   1   1   1    0   0   1   1   1   1   1   1
     LAG ID: [(ffff,90-e2-ba-36-31-21,0002,00ff,0001), (ffff,90-e2-ba-29-f5-31,000f,00ff,0002)]
     RX-state: CURRENT, TX-state: TRANSMIT, MUX-state: COLLECTING_DISTRIBUTING, PTX-state: PERIODIC_TX
   TenGigabitEthernet6/0/0   4            BondEthernet2      0   0   1   1   1   1   1   1    0   0   1   1   1   1   1   1
     LAG ID: [(ffff,90-e2-ba-36-31-21,0002,00ff,0002), (ffff,90-e2-ba-29-f5-31,000f,00ff,0001)]
     RX-state: CURRENT, TX-state: TRANSMIT, MUX-state: COLLECTING_DISTRIBUTING, PTX-state: PERIODIC_TX
   DBGvpp#

::

   show bond [details]

Example:

::

   DBGvpp# show bond
   sh bond
   interface name   sw_if_index   mode         load balance  active slaves  slaves
   BondEthernet0    10            lacp         l2            1              1
   BondEthernet1    11            lacp         l34           4              4
   BondEthernet2    12            lacp         l23           2              2
   DBGvpp#

Debugging
~~~~~~~~~

::

   debug lacp [<interface>] <on | off>
