--- lastproofread: '2026-03-09' --- (vpp-config-interfaces-bonding)= ```{include} /_include/need_improvement.txt ``` # VPP Bonding Configuration VPP bonding interfaces provide link aggregation capabilities by 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 interfaces vpp bonding \ Create a bonding interface where ```` follows the naming convention ``vppbond0``, ``vppbond1``, and so on. A kernel pair interface is automatically created for the VPP bonding interface. This allows standard Linux networking tools and services to interact with the VPP bond. ``` **Example:** ```none set interfaces vpp bonding vppbond0 ``` ### Interface Description ```{cfgcmd} set interfaces vpp bonding \ description \ Set a descriptive name for the bonding interface. ``` **Example:** ```none set interfaces vpp bonding vppbond0 description "Primary uplink bond" ``` ### Administrative Control ```{cfgcmd} set interfaces vpp bonding \ disable Administratively disable the bonding interface. By default, interfaces are enabled. ``` ## Member Interface Configuration ### Adding Member Interfaces ```{cfgcmd} set interfaces vpp bonding \ member interface \ Add physical interfaces as members of the bond. You can add multiple interfaces to the same bond. ``` **Example:** ```none set interfaces vpp bonding vppbond0 member interface eth0 set interfaces vpp bonding vppbond0 member interface eth1 ``` :::{note} Member interfaces must have the same speed and duplex for optimal performance. They must already be attached to VPP. ::: ## Bonding Modes ```{cfgcmd} set interfaces vpp bonding \ 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:** ```none # Use LACP (recommended for switch environments) set interfaces vpp bonding vppbond0 mode 802.3ad # Use active-backup for simple failover set interfaces vpp bonding vppbond0 mode active-backup ``` ## Hash Policies For load balancing modes, configure how the system distributes traffic across member interfaces: ```{cfgcmd} set interfaces vpp bonding \ hash-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:** ```none # Layer 2 hashing (default) set interfaces vpp bonding vppbond0 hash-policy layer2 # Layer 3+4 for better distribution with multiple flows set interfaces vpp bonding vppbond0 hash-policy layer3+4 ``` ## MAC Address Configuration ```{cfgcmd} set interfaces vpp bonding \ mac \ Set a specific MAC address for the bonding interface. ``` **Example:** ```none set interfaces vpp bonding vppbond0 mac 00:11:22:33:44:55 ``` ## IP Address Configuration ```{cfgcmd} set interfaces vpp bonding \ address \ Configure IPv4 or IPv6 addresses on the kernel interface. You can assign multiple addresses. ``` **Examples:** ```none # IPv4 address set interfaces vpp bonding vppbond0 address 192.168.1.10/24 # IPv6 address set interfaces vpp bonding vppbond0 address 2001:db8::10/64 # Multiple addresses set interfaces vpp bonding vppbond0 address 192.168.1.10/24 set interfaces vpp bonding vppbond0 address 10.0.0.10/8 ``` ## MTU Configuration ```{cfgcmd} set interfaces vpp bonding \ mtu \ Set the Maximum Transmission Unit (MTU) for the kernel interface. The MTU must be compatible with the connected VPP interface. ``` **Example:** ```none set interfaces vpp bonding vppbond0 mtu 9000 ``` :::{note} The MTU setting must match or be smaller than the MTU supported by the associated VPP interface. ::: ## VLAN Configuration VPP kernel interfaces support VLAN (Virtual LAN) sub-interfaces for network segmentation. ### Creating VLAN Sub-interfaces ```{cfgcmd} set interfaces vpp bonding \ vif \ Create a VLAN sub-interface with the specified VLAN ID (0-4094). ``` **Example:** ```none set interfaces vpp bonding vppbond0 vif 100 ``` ### VLAN Sub-interface Configuration VLAN sub-interfaces support the same configuration options as the parent interface: ```{cfgcmd} set interfaces vpp bonding \ vif \ address \ ``` ```{cfgcmd} set interfaces vpp bonding \ vif \ description \ ``` ```{cfgcmd} set interfaces vpp bonding \ vif \ disable ``` ```{cfgcmd} set interfaces vpp bonding \ vif \ mtu \ ``` **Examples:** ```none # Configure VLAN 100 set interfaces vpp bonding vppbond0 vif 100 address 192.168.100.1/24 set interfaces vpp bonding vppbond0 vif 100 description "Management VLAN" set interfaces vpp bonding vppbond0 vif 100 mtu 1500 # Configure VLAN 200 set interfaces vpp bonding vppbond0 vif 200 address 192.168.200.1/24 set interfaces vpp bonding vppbond0 vif 200 description "Guest VLAN" ``` ## Complete Configuration Example Here's a complete example configuring a bonding interface with LACP: ```none # Create bonding interface set interfaces vpp bonding vppbond0 set interfaces vpp bonding vppbond0 description "Server uplink bond" # Configure bonding parameters set interfaces vpp bonding vppbond0 mode 802.3ad set interfaces vpp bonding vppbond0 hash-policy layer3+4 # Add member interfaces set interfaces vpp bonding vppbond0 member interface eth0 set interfaces vpp bonding vppbond0 member interface eth1 # Configure IP on kernel interface set interfaces vpp bonding vppbond0 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 settings (speed, duplex, MTU).