GRE模式下,如果MTU和Offloading配置不当,会严重降低网络性能(https://ask.openstack.org/en/question/6140/quantum-neutron-gre-slow-performance/)。
RDO推荐以下的配置(http://openstack.redhat.com/Using_GRE_tenant_networks):
MTU
When using GRE, set the MTU in the Guest to 1400, this will allow for the GRE header and no packet fragmentation.
Hint: if you want to check if this answer will solve your issue, execute ifconfig eth0 mtu 1400 on the instance and check the speed.
Edit the file: /etc/quantum/dhcp_agent.ini and set:
dnsmasq_config_file=/etc/neutron/dnsmasq-neutron.conf
Create and edit file /etc/neutron/dnsmasq-neutron.conf and put this inside:
dhcp-option-force=26,1400
Restart DHCP:
service neutron-dhcp-agent restart
And reboot your instance. Verify that your MTU is 1400:
root@web:~# ifconfig eth0 Link
encap:Ethernet HWaddr
fa:16:3e:f0:6a:9f
inet addr:10.1.0.2 Bcast:10.1.0.255 Mask:255.255.255.0
inet6 addr: fe80::f816:3eff:fef0:6a9f/64
Scope:Link
UP BROADCAST RUNNING MULTICAST **MTU:1400** Metric:1
RX packets:934855 errors:0 dropped:0 overruns:0 frame:0
TX packets:207741 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1210256390 (1.2 GB) TX bytes:226172592 (226.1 MB)
事实上,mtu只需要修改到1454即可:dhcp-option-force=26,1454
Offloading
You should turn offloading such as TSO/LRO and GRO/GSO off on the instance physical machine for traffic to work.
This can be done with this command (replace ethX with your physical network interface name):
ethtool -K ethX tso off lro off gro off gso off
You can modify the network script for this change to apply on startup:
/etc/sysconfig/network-scripts/ifcfg-eth0 ETHTOOL_OPTS="-K ${DEVICE} tso off lro off gro off gso off"