У меня есть установка, в которой виртуальная машина Windows 2008R2 работает под KVM в мостовой сети и захватывает много многоадресных данных UDP (с камер видеонаблюдения). Как ни странно, сеть виртуальных машин отбрасывает пакеты после нескольких одновременных подключений (очевидно, более 128).
ядро 2.6.35.11 amd64, kvm 0.76 (Debian Lenny).
Однако, если я настрою два разных интерфейса tap0 и tap1, соединенных через один и тот же br0 с eth0 и eth1, второй интерфейс никогда не отбрасывает ни одного пакета. Однако первый интерфейс tap0 отбрасывает множество пакетов, даже если большинство соединений идет на другой.
Но если я продолжу использовать eth0 для хоста и выделю eth1 для виртуальной машины, eth1 (виртуальная машина) все равно будет отбрасывать тонны пакетов (примерно от 20 до 25%). Видимо только второй интерфейс ведет себя корректно.
Кто-нибудь знает, что здесь может происходить? Я не могу понять этого. Я не понимаю, почему первый интерфейс всегда отбрасывает пакеты.
Вот сценарий kvp-ifup:
#!/bin/sh
INTERFACE_LAN=bond0
INTERFACE_BRIDGE=br0
# set address to "DHCP" for DHCP
BRIDGE_ADDRESS=192.168.1.1
BRIDGE_BROADCAST=192.168.1.255
BRIDGE_NETMASK=255.255.255.0
echo "Configure $1 interface..."
/usr/sbin/tunctl -u 'root' -t $1
echo "Activating link for $1..."
/sbin/ip link set $1 up
sleep 1
echo "Configure $INTERFACE_BRIDGE bridge..."
/usr/sbin/brctl addbr $INTERFACE_BRIDGE
/usr/sbin/brctl addif $INTERFACE_BRIDGE $1
/usr/sbin/brctl addif $INTERFACE_BRIDGE $INTERFACE_LAN
echo "Activating promiscuous mode on $1 and $INTERFACE_LAN..."
/sbin/ifconfig $1 0.0.0.0 promisc up
/sbin/ifconfig $INTERFACE_LAN 0.0.0.0 promisc up
sleep 2
echo "IP address on $INTERFACE_BRIDGE..."
if [ "DHCP" == "$BRIDGE_ADDRESS" ]; then
/sbin/pump -i br0
else
# static
/sbin/ifconfig $INTERFACE_BRIDGE $BRIDGE_ADDRESS broadcast $BRIDGE_BROADCAST netmask $BRIDGE_NETMASK
fi
echo "Done."
Я пробовал как со связкой (разные режимы), так и без склеивания.
Физические сетевые карты - это контроллер Ethernet: Intel Corporation 82574L Gigabit Network Connection (драйвер e1000e linux)
виртуальная машина использует драйвер e1000 (лучшие результаты, чем virtio)
iptables совершенно пуст.
Что касается разгрузки, я не могу проверить, но это должны быть значения по умолчанию:
Я вижу, что там есть связь, это правда? Какой режим склеивания?
Какой тип сетевой карты и какой драйвер используется?
Какая разгрузка включена?
Трафик для моста также перенаправляется через iptables хостов?
К какому типу виртуального сетевого адаптера подключается виртуальная машина?
После нескольких недель возни проблема была решена ... заменой сетевого коммутатора. Думаю, тот, который у нас был, был недостаточно мощным или что-то в этом роде.