openstack gre模式下载速度很慢的解决方法

具体参考了https://ask.openstack.org/en/question/6140/quantum-neutron-gre-slow-performance/


Disable gro for an interface (temporary, if the machine restarts, this will be lost) with:

ethtool -K  gro off

You can disable it permanently (on CentOS/RHEL at least) by adding this to the respective interface's network script:

ETHTOOL_OPTS="gro off"

The script (on RHEL/CentOS) is found at:

/etc/sysconfigs/network-scripts/ifcfg-<interface>

亲测有效 还有一种是修改MTU的方法,我是没感觉到有什么效果,如果上面提供的方法不管用,也可以试试修改MTU的方法。链接里也有提到


下面是科普时间:

gro是什么呢?上网查了下

http://www.pagefault.info/?p=159

先来描述一下GRO的作用,GRO是针对网络接受包的处理的,并且只是针对NAPI类型的驱动,因此如果要支持GRO,不仅要内核支持,而且驱动也必须调用相应的借口,用ethtool -K gro on来设置,如果报错就说明网卡驱动本身就不支持GRO。

GRO类似tso,可是tso只支持发送数据包,这样你tcp层大的段会在网卡被切包,然后再传递给对端,而如果没有gro,则小的段会被一个个送到协议栈,有了gro之后,就会在接收端做一个反向的操作(想对于tso).也就是将tso切好的数据包组合成大包再传递给协议栈。

tso 又是什么呢?继续查询

TSO(TCP Segment Offload)技术是一种利用网卡的少量处理能力,降低CPU发送数据包负载的技术,需要网卡硬件及驱动的支持。

最后附上一些查找过程中,觉得不错的资料

TSO、UFO、GSO、LRO、GRO和RSS介绍

原文:http://www.bsdmap.com/2012/02/22/%E8%BD%ACtso%E3%80%81ufo%E3%80%81gso%E3%80%81lro%E3%80%81gro%E5%92%8Crss%E4%BB%8B%E7%BB%8D/


ethtool -k < 网络接口>,可以看到很多网络接口的offload特性,例如:


$ sudo  -k eth0

Offload parameters for eth0:
rx-checksumming: on
tx-checksumming: on
scatter-gather: on
tcp-segmentation-offload: on
udp-fragmentation-offload: off
generic-segmentation-offload: on
generic-receive-offload: on
large-receive-offload: off

这些offload特性都是为了提升网络收/发性能。TSO、UFO和GSO是对应网络发送,在接收方向上对应的是LRO、GRO。

TSO

TSO(TCP Segmentation Offload),是一种利用网卡对TCP数据包分片,减轻CPU负荷的一种技术,有时也被叫做 LSO (Large segment offload) ,TSO是针对TCP的,UFO是针对UDP的。如果硬件支持 TSO功能,同时也需要硬件支持的TCP校验计算和分散/聚集 (Scatter Gather) 功能。

GSO

GSO(Generic Segmentation Offload),它比TSO更通用,基本思想就是尽可能的推迟数据分片直至发送到网卡驱动之前,此时会检查网卡是否支持分片功能(如TSO、UFO),如果支持直接发送到网卡,如果不支持就进行分片后再发往网卡。这样大数据包只需走一次协议栈,而不是被分割成几个数据包分别走,这就提高了效率。

LRO

LRO(Large Receive Offload),通过将接收到的多个TCP数据聚合成一个大的数据包,然后传递给网络协议栈处理,以减少上层协议栈处理 开销,提高系统接收TCP数据包的能力。

GRO

GRO(Generic Receive Offload),基本思想跟LRO类似,克服了LRO的一些缺点,更通用。后续的驱动都使用GRO的接口,而不是LRO。

RSS

RSS(Receive Side Scaling),是一项网卡的新特性,俗称多队列。具备多个RSS队列的网卡,可以将不同的网络流分成不同的队列,再分别将这些队列分配到多个CPU核心上进行处理,从而将负荷分散,充分利用多核处理器的能力。


你可能感兴趣的:(网络,openstack)