Proxmox VEIV · NetworkingLinux networking
Bonds, LACP, VLANs, MTU
What you'll learn
- Configure a bond with LACP end-to-end
- Set up VLAN-aware bridges
- Choose appropriate MTU values and detect MTU mismatches
- Recognise the difference between access ports and trunks
Prerequisites
Verified against Proxmox VE 9.2.4 · Proxmox Backup Server 4.2.5 · Ceph Squid / Tentacle · Debian 13 (Trixie) · Linux kernel 7.0 (PVE 9.2 default) · 2026-08-12
Why this matters in production
Most production outages caused by networking are not “the network broke.” They are “the network reconfigured itself because one link flapped and the bond didn’t failover.” This lesson teaches the configurations that survive real failures.
Bond modes
| Mode | Behaviour | Failover | Load balancing | Switch cooperation |
|---|---|---|---|---|
balance-rr (0) | Round-robin packets | No | Per packet | None required |
active-backup (1) | One active, others standby | Yes | No | None required |
balance-xor (2) | Hash-based | No | Per flow | Static EtherChannel |
802.3ad / LACP (4) | Negotiated aggregation | Yes | Per flow | LACP required |
balance-tlb (5) | Transmit load balancing | Yes | TX only | None required |
balance-alb (6) | TLB + RLB | Yes | Both | None required |
Configuring a bond with LACP
In /etc/network/interfaces:
auto eno1
iface eno1 inet manual
auto eno2
iface eno2 inet manual
auto bond0
iface bond0 inet manual
bond-slaves eno1 eno2
bond-miimon 100
bond-mode 802.3ad
bond-lacp-rate fast
bond-xmit-hash-policy layer3+4
Reload with ifreload -a, and read the result rather than assuming it.
Note that the edit goes to /etc/network/interfaces.new when made
through the GUI; the lesson on applying network changes covers the
staging model and the rollback timer that belongs around any bond
change.
ifreload -a
cat /proc/net/bonding/bond0
# the three things to look for, extracted
grep -E 'MII Status|Aggregator ID|Churn State|Partner Mac' /proc/net/bonding/bond0$ grep -E 'MII Status|Aggregator ID|Churn State' /proc/net/bonding/bond0MII Status: up
Aggregator ID: 1
MII Status: up
Aggregator ID: 1
Actor Churn State: none
Partner Churn State: none
MII Status: up
Aggregator ID: 1
Actor Churn State: none
Partner Churn State: noneIllustrative output
VLAN-aware bridges
A VLAN-aware bridge allows multiple VLANs to share a single bridge + bond, with the bridge handling the 802.1Q tagging instead of the host creating a subinterface per VLAN.
auto vmbr0
iface vmbr0 inet manual
bridge-ports bond0
bridge-stp off
bridge-fd 0
bridge-vlan-aware yes
bridge-vids 10 20 30 100
VMs attached to vmbr0 specify their VLAN tag in the GUI/CLI; the bridge handles the tag.
bridge vlan show
bridge -d link show | grep -A2 vmbr0
grep -A8 'iface vmbr0' /etc/network/interfacesMTU and jumbo frames
The default Ethernet MTU is 1500 bytes. Jumbo frames (9000) can improve storage throughput but only work if every device on the path agrees.
| Path component | MTU setting |
|---|---|
| Physical NIC | Driver default or configured (ip link set eno1 mtu 9000) |
| Bond | Must support the higher MTU (most do) |
| Bridge | Inherits from lowest member |
| VM guest | Must be configured in the guest OS |
| Physical switch | Must allow jumbo frames on the port |
| Storage target | NFS, Ceph, iSCSI must all agree |
TARGET_IP=192.0.2.30
ping -M do -s 8972 -c 3 "$TARGET_IP"
If the 8972-byte ping (which is 9000 minus IP+ICMP headers) succeeds, the path supports jumbo frames.
Switch configuration
The switch side must match:
| Proxmox | Switch |
|---|---|
| Bond with LACP | Port-channel / EtherChannel with LACP active |
| VLAN trunk | Trunk port with allowed VLANs |
| Access VLAN | Access port with PVID |
| Jumbo frames | MTU 9216 on the port (9216 = 9000 + headers) |
GUI walkthrough
Node → Network lists every interface, bond, and bridge. Create operations:
- Create → Linux Bridge: choose ifup/ifdown, IP/CIDR/gateway, bridge ports, VLAN awareness, port for management.
- Create → Bond: choose bond mode, slaves, monitoring interval, LACP rate.
- Create → VLAN: choose parent interface (a bond or bridge), VLAN ID, optional IP.
Edits to a running network device are applied with ifreload -a. Some changes (like adding
a slave to a bond) require a brief interruption.
CLI walkthrough
ip -br -d link show
bridge vlan show
ip -d link show eno1 | grep mtu
Production considerations
Common mistakes
- Setting MTU 9000 on one side and 1500 on the other.
- Using
balance-tlbinstead of LACP because “we don’t want to coordinate with the network team.” TLB has asymmetric performance and surprises during failover. - Forgetting that VLAN-aware bridges do not require per-VLAN subinterfaces but do require the
bridge to be told which VLANs exist (
bridge-vids). - Mixing tagged and untagged traffic on the same bridge port.
Key takeaways
- LACP (
bond-mode 802.3ad) is the production default for bonds. - A bond being
UPis not evidence it aggregated. Check that both slaves share one Aggregator ID and that Churn State isnone. - VLAN-aware bridges scale better than per-VLAN bridges, and
bridge-vidsis an allow-list — a missing VLAN breaks guests while the host keeps working. - MTU must match end-to-end. Mismatches cause silent failures.
Knowledge check
Knowledge check · 4 questions
Q1. Which bond mode requires switch cooperation?
Q2. An MTU mismatch usually shows up as large transfers stalling while ping and small packets succeed.
Q3. Which command reloads the Proxmox network configuration without disrupting active interfaces?
Q4. A guest on VLAN 250 has no network. The node itself can reach the VLAN 250 gateway through a subinterface. bond and bridge are up and ifreload reported no errors. Where do you look?
Passing score: 75%. Answers are checked in this browser.