diff options
| author | zdc <taras@vyos.io> | 2025-08-29 19:53:13 +0300 |
|---|---|---|
| committer | zdc <taras@vyos.io> | 2025-09-04 19:02:26 +0300 |
| commit | 00faafed96d86a970bf566c79f1bfd304630ccaa (patch) | |
| tree | 71f3592ffd0c2965bbb7ddc85bc30ffb95219119 /docs/vpp/configuration/interfaces/bonding.rst | |
| parent | dff952a88be472d0f317873a7b5ea852c6e5f29f (diff) | |
| download | vyos-documentation-00faafed96d86a970bf566c79f1bfd304630ccaa.tar.gz vyos-documentation-00faafed96d86a970bf566c79f1bfd304630ccaa.zip | |
VPP: Add comprehensive VPP documentation
This commit introduces extensive documentation for VyOS VPP (Vector Packet Processing)
Dataplane interfaces and features, including examples.
Features documented:
* VPP integration description, base requirements and limitations
* VPP dataplane core settings
* Features enabled in the dataplane: ACL, IPsec, NAT, sFlow
* VPP interface types: bonding, bridge, GRE, IPIP, kernel, loopback, VXLAN, XConnect
Note: This is an initial documentation version that will require ongoing improvements
based on user feedback and questions, real-world deployment testing and validation, additional
use cases and configuration scenarios discovered in production. Therefore, all pages are
marked as "need improvement".
Diffstat (limited to 'docs/vpp/configuration/interfaces/bonding.rst')
| -rw-r--r-- | docs/vpp/configuration/interfaces/bonding.rst | 182 |
1 files changed, 182 insertions, 0 deletions
diff --git a/docs/vpp/configuration/interfaces/bonding.rst b/docs/vpp/configuration/interfaces/bonding.rst new file mode 100644 index 00000000..1f287c4e --- /dev/null +++ b/docs/vpp/configuration/interfaces/bonding.rst @@ -0,0 +1,182 @@ +:lastproofread: 2025-09-04 + +.. _vpp_config_interfaces_bonding: + +.. include:: /_include/need_improvement.txt + +######################### +VPP Bonding Configuration +######################### + +VPP bonding interfaces provide link aggregation capabilities, combining multiple physical interfaces into a single logical interface for increased bandwidth and redundancy. VPP bonding offers high-performance packet processing compared to traditional Linux bonding. + +Basic Configuration +------------------- + +Creating a Bonding Interface +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +To create a VPP bonding interface: + +.. cfgcmd:: set vpp interfaces bonding <bondN> + + Create a bonding interface where ``<bondN>`` follows the naming convention bond0, bond1, etc. + +**Example:** + +.. code-block:: none + + set vpp interfaces bonding bond0 + +Interface Description +^^^^^^^^^^^^^^^^^^^^^ + +.. cfgcmd:: set vpp interfaces bonding <bondN> description <description> + + Set a descriptive name for the bonding interface. + +**Example:** + +.. code-block:: none + + set vpp interfaces bonding bond0 description "Primary uplink bond" + +Administrative Control +^^^^^^^^^^^^^^^^^^^^^^ + +.. cfgcmd:: set vpp interfaces bonding <bondN> disable + + Administratively disable the bonding interface. By default, interfaces are enabled. + +Member Interface Configuration +------------------------------ + +Adding Member Interfaces +^^^^^^^^^^^^^^^^^^^^^^^^ + +.. cfgcmd:: set vpp interfaces bonding <bondN> member interface <interface-name> + + Add physical interfaces as members of the bond. Multiple interfaces can be added to the same bond. + +**Example:** + +.. code-block:: none + + set vpp interfaces bonding bond0 member interface eth0 + set vpp interfaces bonding bond0 member interface eth1 + +.. note:: + + Member interfaces should be of the same speed and duplex for optimal performance and already be attached to VPP. + +Bonding Modes +------------- + +.. cfgcmd:: set vpp interfaces bonding <bondN> mode <mode> + + Configure the bonding mode. Available modes: + + * **802.3ad**: IEEE 802.3ad Dynamic Link Aggregation (LACP) - Default + * **active-backup**: Fault tolerant, only one slave interface active + * **broadcast**: Transmits everything on all slave interfaces + * **round-robin**: Load balance by transmitting packets in sequential order + * **xor-hash**: Distribute based on hash policy + +**Examples:** + +.. code-block:: none + + # Use LACP (recommended for switch environments) + set vpp interfaces bonding bond0 mode 802.3ad + + # Use active-backup for simple failover + set vpp interfaces bonding bond0 mode active-backup + +Hash Policies +------------- + +For load balancing modes, configure how traffic is distributed across member interfaces: + +.. cfgcmd:: set vpp interfaces bonding <bondN> hash-policy <policy> + + Set the transmit hash policy: + + * **layer2**: Use MAC addresses to generate hash (default) + * **layer2+3**: Combine MAC addresses and IP addresses + * **layer3+4**: Combine IP addresses and port numbers + +**Examples:** + +.. code-block:: none + + # Layer 2 hashing (default) + set vpp interfaces bonding bond0 hash-policy layer2 + + # Layer 3+4 for better distribution with multiple flows + set vpp interfaces bonding bond0 hash-policy layer3+4 + +MAC Address Configuration +------------------------- + +.. cfgcmd:: set vpp interfaces bonding <bondN> mac <mac-address> + + Set a specific MAC address for the bonding interface. + +**Example:** + +.. code-block:: none + + set vpp interfaces bonding bond0 mac 00:11:22:33:44:55 + +Kernel Interface Integration +---------------------------- + +.. cfgcmd:: set vpp interfaces bonding <bondN> kernel-interface <interface-name> + + Create a kernel interface bound to the VPP bonding interface. This allows standard Linux networking tools and services to interact with the VPP bond. + +For detailed information about kernel interface integration, see :doc:`kernel`. + +**Example:** + +.. code-block:: none + + set vpp interfaces bonding bond0 kernel-interface vpptap0 + +.. important:: + + When using kernel interface binding, you can configure IP addresses and other network settings on the kernel interface. + + A kernel-interface must be created beforehand. + +Complete Configuration Example +------------------------------ + +Here's a complete example configuring a bonding interface with LACP: + +.. code-block:: none + + # Create bonding interface + set vpp interfaces bonding bond0 + set vpp interfaces bonding bond0 description "Server uplink bond" + + # Configure bonding parameters + set vpp interfaces bonding bond0 mode 802.3ad + set vpp interfaces bonding bond0 hash-policy layer3+4 + + # Add member interfaces + set vpp interfaces bonding bond0 member interface eth0 + set vpp interfaces bonding bond0 member interface eth1 + + # Create kernel interface for OS integration + set vpp interfaces bonding bond0 kernel-interface vpptap0 + + # Configure IP on kernel interface + set vpp kernel-interfaces vpptap0 address 192.168.1.10/24 + +Best Practices +-------------- + +* Use **802.3ad mode** with LACP-capable switches for best performance and standards compliance +* Configure **layer3+4 hash policy** for environments with multiple traffic flows +* Ensure member interfaces have identical capabilities (speed, duplex, MTU) |
