ovs内部端口/ veth对带宽限制

时间:2015-05-06 15:28:13

标签: port openstack switching

这些天我一直在对ov进行一些实验。我有2台运行openstack的物理机器,并配置了GRE隧道。我在每台机器的br-int(集成桥)上添加了2个内部端口,并将它们分配给不同的命名空间(ns1,ns2,ns3,ns4)和来自同一子网的ip(172.16.0.200,172.16.0.201,172.16.0.202,172.16) .0.203)。配置完成后,VM(在同一子网中)< - >虚拟端口,虚拟端口< - >相同/不同节点上的虚拟端口都可以访问(使用ping进行测试)。然而,奇怪的事情出现了:我用iperf来测试带宽,测试结果显示如下:

  1. 物理节点< - >物理节点:1GB / s
  2. 同一台计算机上的VM< - > VM:10GB / s
  3. VM< - > VM在不同的计算机上:1GB / s
  4. VM< - >虚拟端口同一台机器:10GB / s
  5. VM< - >虚拟端口不同的机器:1GB / s
  6. 虚拟端口< - >虚拟端口同一台机器:16GB / s
  7. 虚拟端口< - >虚拟端口不同的机器: 100~200kb / s(WEIRD!)
  8. 我尝试用veth对替换内部端口,显示相同的行为。 正如我所料,veth对应该与VM类似,因为它们都有独立的命名空间,而openstack VM使用相同的方式(Veth对)连接到br-int。但实验表明VM(node1) - >虚拟端口(node2)具有1GB / s带宽但虚拟端口(node1) - >虚拟端口(node2)只有100kb / s?有人有任何想法吗?

    感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

使用GRE(或VXLAN或其他覆盖网络)时,需要确保虚拟机内的MTU 小于物理接口的MTU 。 GRE / VXLAN / etc标头为输出数据包添加字节,这意味着来自虚拟机的MTU大小的数据包最终将大于主机接口的MTU,从而导致碎片和性能不佳。

记录了这一点,例如here

  

GRE等隧道协议包含额外的数据包标头   增加开销并减少有效负载或用户可用的空间   数据。在不了解虚拟网络基础设施的情况下   实例尝试使用默认以太网最大值发送数据包   传输单元(MTU)为1500字节。互联网协议(IP)网络   包含路径MTU发现(PMTUD)机制来检测端到端   MTU并相应调整数据包大小。但是,有些操作   系统和网络阻止或以其他方式不支持PMTUD导致   性能下降或连接失败。

     

理想情况下,您可以通过启用巨型帧来防止出现这些问题   包含租户虚拟网络的物理网络。巨大的   帧支持最大约9000字节的MTU,这取消了   GRE开销对虚拟网络的影响。但是,很多网络   设备缺乏对巨型帧和OpenStack管理员的支持   经常无法控制网络基础设施。鉴于后者   并发症,你也可以通过减少来防止MTU问题   实例MTU来计算GRE开销。确定正确的MTU   值通常需要实验,但大多数情况下有1454个字节   环境。您可以配置分配IP的DHCP服务器   地址到您的实例也可以调整MTU。