我已经有了一个设置,一个windows 2008R2虚拟机在桥接networking上的KVM下运行,并捕获大量的多播UDP数据(来自video监视摄像机)。 奇怪的是,VMnetworking在多个并发连接(显然超过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."
我尝试了一个债券(不同的模式)和没有债券。
物理NICS是以太网控制器:英特尔公司82574L千兆networking连接(e1000e linux驱动程序)
VM正在使用e1000驱动程序(比virtio更好的结果)
iptables是完全空的。
至于卸载,我不能检查,但它应该是默认值:
我看到那里有一个债券,是真的吗? 什么邦定模式?
使用什么网卡types和驱动程序?
什么卸载启用?
桥的stream量是否也通过主机的iptablesredirect?
虚拟机连接什么types的虚拟网卡?
经过几个星期的修补,问题解决了…更换networking交换机。 我想我们所拥有的那个还不够强大,