Режим bonding в связке с bridging работает для KVM. Но далеко не все режимы.
Я все режимы не пробовал, но из того, что пробовал: точно не работает 0 (balance-rr), зато точно работают 4 (802.3ad), 5 (balance-tlb) и 6 (balance-alb).
Сейчас у меня используется 802.3ad (LACP).
Правда ни один этих режимов именно в связке с бриджем почему-то не дает увеличения скорости у объединенного интерфейса.
У меня в bonding объединены 4 гигабитных интерфейса, но скорость не превышает гигабита.
Вот замер iperf-ом:
$ iperf -c cn1
------------------------------------------------------------
Client connecting to cn1, TCP port 5001
TCP window size: 96.1 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.0.240 port 34357 connected with 192.168.0.250 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 1.15 GBytes 990 Mbits/sec
Почему это происходит, пока установить не удалось.
Есть мысль попробовать сделать так:
не размещать bond интерфейс непосредственно в bridge, а сначала "закатать" его в vlan и уж этот vlan затолкать в bridge.
т.е. примерно так:
eth0+eth1+eth2+eth3 -> bond0 -> vlanNNNN -> br0
Не уверен, что это сработает, но вдруг? Пробовать пока не пробовал, все руки не доходят…
Пользователь решил продолжить мысль 25 Декабря 2013, 10:07:22:
...
Итак, конфиги:
~$ cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface working in bonding
auto eth0
iface eth0 inet manual
bond-master bond0
auto eth1
iface eth1 inet manual
bond-master bond0
# Configure bonding
auto bond0
iface bond0 inet manual
bond-mode balance-xor #
bond-slaves none
bond-miimon 100
# bond-slaves eth0 eth1
# Interface for virtual machines
auto vbr0
iface vbr0 inet dhcp
# vlan-raw-device bond0
bridge_ports bond0
bridge_fd 9
bridge_hello 2
bridge_maxage 12
bridge_stp on
~$ brctl show
bridge name bridge id STP enabled interfaces
vbr0 8000.001a64b402b8 yes bond0
vnet0
vnet1
vnet2
vnet3
vnet4
vnet5
vnet6
vnet7
virbr0 8000.000000000000 yes
Кстати, из приведенных конфигов видно, что виртуалки посажены не на дефолтный (для qemu) бридж (virbr0), а на самостоятельно организованный vbr0 (на него же зацеплен и bond0). В данном случае дефолтный virbr0 можно просто убрать (вместе с поднимаемыми с ним правилами для iptables), поскольку он у Вас никак не используется.
Либо попробовать посадить таки виртуалки на дефолтный virbr0 (доступ к нему из локалки - прописыванием соответствующих маршрутов + через iptables-маскарадинг, который по дефолту создается). В этом случае интерфейс bond0 не заталкивать в бридж, а использовать напрямую. Он естественно сможет работать с любым режимом. Это единственный вариант решения проблемы, который мне видится. Кстати, я и сам хочу его попробовать.