这些天我一直在对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来测试带宽,测试结果显示如下:
我尝试用veth对替换内部端口,显示相同的行为。 正如我所料,veth对应该与VM类似,因为它们都有独立的命名空间,而openstack VM使用相同的方式(Veth对)连接到br-int。但实验表明VM(node1) - >虚拟端口(node2)具有1GB / s带宽但虚拟端口(node1) - >虚拟端口(node2)只有100kb / s?有人有任何想法吗?
感谢您的帮助。
答案 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。