OVS内部端口 / VETH配对带宽限制



我如今一直在OVS上进行一些实验。我有2台物理机,上面运行了OpenStack,并且配置了GRE隧道。.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(怪异!)

我尝试用Veth Pairs替换内部端口,同样的行为出现。正如我所期望的那样,VETH对的行为应与VM相似,因为它们都具有单独的名称空间,并且OpenStack VM使用相同的方式(Veth Pairs)连接到BR-INT。但是实验表明,VM(Node1) ->虚拟端口(Node2)具有1GB/s带宽,但虚拟端口(Node1) ->虚拟端口(Node2)只有100kb/s?有人有任何想法吗?

感谢您的帮助。

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

例如,这是在此记录的:

诸如GRE之类的隧道协议包括其他数据包标题 增加开销并减少有效载荷或用户可用的空间 数据。在不了解虚拟网络基础架构的情况下 实例尝试使用默认以太网最大发送数据包 1500个字节的传输单元(MTU)。互联网协议(IP)网络 包含路径MTU发现(PMTUD)机制以检测端到端 MTU并相应地调整数据包大小。但是,有些操作 系统和网络阻止或其他缺乏对PMTUD引起的支持 性能退化或连接失败。

理想情况下,您可以通过启用巨型框架来防止这些问题 包含您租户虚拟网络的物理网络。巨型 框架支持MTU,大约为9000个字节,否定了 GRE开销对虚拟网络的影响。但是,许多网络 设备缺乏对巨型框架和OpenStack管理员的支持 通常缺乏对网络基础架构的控制。给定后者 并发症,您还可以通过减少MTU问题来预防MTU问题 实例mtu占用GRE开销。确定正确的MTU 价值通常需要实验,但是1454个字节在大多数 环境。您可以配置分配IP的DHCP服务器 向您的实例地址调整MTU。

最新更新