[Openstack] [Neutron] slow download speed inside vm

sylecn sylecn at gmail.com
Tue Dec 31 15:55:59 UTC 2013


Hi all,

I have come across a network problem when doing network performance
testing. From vm, wget a file on external network is much slower than
expected.

The network is setup like this [1].

To download a file, packets travel from target server public ip to public
ip on neutron node, via iptables nat rule to 10.21.144.5 on neutron node,
via neutron virtual router (l3-agent) to 10.20.144.100, then to virtual
subnet's gateway at 10.21.145.1 and finally to vm's fixed ip. This is a
long chain.

Here are some numbers:
wget http://mytestserver/big-file.deb

I use /etc/hosts to set mytestserver to the IP I want to test.

    Download from 10.20.165.2: 47.2 MB/s (395Mbps)                  slow
but acceptable.
    Download from 10.20.165.2's public IP: 6.75 MB/s (56Mbps)       way too
slow.

I also tried the reverse: run web server on vm, and wget on 10.20.165.2:

    Download from vm's floatingip (10.21.144.106) from outside: 105MB/s
(880Mbps)

I have yet to test upload speed to outside network. Upload to 10.20.165.0/24and
10.21.144.0/24 are both at 40+MB/s. Upload to public ip not tested yet.

Here are some raw iperf performance result:

with "GRO off" on br-ex and eth1:
| scenario                   | outgoing (from vm) | incoming (to vm) |
|----------------------------+--------------------+------------------|
| vm to vm on same host      | 3.16 Gbps          | -                |
| vm to vm on different host | 613 Mbps           | -                |
| vm to 10.21.144.0/24       | 887 Mbps           | 860 Mbps         |
| vm to 10.20.165.0/24       | 888 Mbps           | 818 Mbps         |
| vm to <public ip>          | 919 Mbps           | 817 Mbps         |

I'm using neutron with ovs plugin and GRE tunnels. There are no errors in
neutron's log files, except

ERROR neutron.common.legacy [-] Skipping unknown group key: firewall_driver

and similar which has always existed since I deploy openstack.

Things I have tried and did not resolve the problem:

 - turn off GRO on neutron node br-ex/eth1 interface (kept off for all
wget/scp tests)
 - allow all ports in security groups
 - drop iptables rules on neutron node
 - lower MTU to 1400 (This helped a little, all wget numbers above have MTU
set to 1400 in vm)

I also suspected this nat rule is too slow:

   iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

But test had proved me wrong. I have tested using 10.21.144.5 as the
default gateway in a physical server and wget the same file from  is
lightning fast.

So is this download speed typical? If not, how can I isolate the problem
and figure out what cause the slowness?

Thanks,
Yuanle

[1] http://www.nsbeta.info/wp-content/uploads/2013/12/Home.png
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack/attachments/20131231/ad60630f/attachment.html>


More information about the Openstack mailing list