Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

I setup KVM following the guide here:

http://www.cyberciti.biz/faq/centos-rhel-linux-kvm-virtulization-tutorial/

I setup a bridged network and it worked fine except that the transfer speed is 200KB/s instead of the gigabit speed that I get on the host machine by itself.

I tried editing the guest network settings to set "model=virtio"

http://wiki.libvirt.org/page/Virtio

but this just moves ifconfig-eth0 to ifconfig-eth0.bak in the VM and networking doesn't work at all. I tried moving ifconfig-eth0 back and starting up eth0, which works, but now the transfer speed is ~ 60KB/s

I have no idea what else to try. Any suggestions would be greatly appreciated.

share|improve this question
    
200 KB/s is very poor, which CentOS and KVM version are you running? –  Giovanni Toraldo Oct 16 '11 at 18:16
add comment

3 Answers

I think you must configure iptables to allow all traffic to be forwarded across the bridge:

$ sudo iptables -I FORWARD -m physdev --physdev-is-bridged -j ACCEPT
$ sudo service iptables save
$ sudo service iptables restart

and prevent bridged traffic from being processed by iptables rules, this improves the bridge’s performance. In /etc/sysctl.conf append the following lines:

net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0

then reload the kernel parameters configured with sysctl:

$ sudo sysctl -p /etc/sysctl.conf

and restart the libvirt daemon.

$ sudo service libvirtd reload

you can find more here Bridged networking with libvirt and I describe here the full process of How to install KVM and libvirt on CentOS 6.2 with bridged networking

share|improve this answer
add comment

virtio will typically get you the best performance, but some hardware doesn't work well with it -- try switching model to e1000 (assuming a gigabit NIC from what you've said) and see if it works better.

EDIT: What does your bridging configuration on the host look like? I'm familiar with doing this on the Debian/Ubuntu side of things rather than RH/CentOS, but a typical /etc/network/interfaces setup for us would look like this:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet manual

auto br0
iface br0 inet static
    address 192.168.0.2
    netmask 255.255.255.0
    network 192.168.0.0
    broadcast 192.168.0.255
    gateway 192.168.0.1
    bridge_ports eth0
    bridge_stp off
    bridge_maxage 12
    bridge_fd 9
    bridge_hello 2

Also, are your guests fully virtualized (can ensure with --hvm switch in libvirt)?

Lastly, if you have a different NIC kicking around that you can install to experiment with you might install it to see if it makes a difference. If not, you might want to pick one up -- we've had good luck with the relatively cheap Intel desktop gigabit NICs.

share|improve this answer
    
e1000 runs at the same speed as virtio. are there any other model numbers i can try? –  dan Sep 21 '10 at 18:55
    
just tried rstl8139 also. same low network speed. –  dan Sep 21 '10 at 19:03
    
See additions to answer above. –  nedm Sep 22 '10 at 17:36
add comment

Using virtio will provide the better speeds. Which version are you running exactly?

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.