最近,mirantis的工程师发布了最新的基于Mitaka版本的Neutron性能测试结果。得出的结论是:Neutron现在的性能已经可以用生产环境了。
报告的三位作者都是OpenStack社区的活跃开发者,其中一位还是Neutron的core reviewer。并且这份报告出自实际环境(并非各种模拟环境),因此含金量还是很高的。这不禁让人觉得,或许这才是社区开发的正确打开方式,同时也佩服mirantis舍得花真金白银(人力,物力)来做这样的基础性验证。
下面我来给大家解读一下这篇测试报告。
基于MirantisOpenStack 9.0,对应社区Mitaka版本。值得注意的是,社区的Newton版本已经release几个月了,但是Mirantis的最新发布版还是M版本。其实这么做是合理的,虽然最新的版本包含了更多的功能,更多的功能对应了更多的代码,更多的代码意味着更多的bug。所以采用最新的版本往往会有更多的风险。另外,在OpenStack Mainstream开发时,一些重要的bug通常都会backport到之前的版本。通常是之前两个版本,也就是说虽然现在已经是O版本的开发,但是Mitaka版本还在维护中。所以,在现阶段采用的Mitaka版本,是最稳定的版本。当OpenStack进入P版本开发,Mitaka版本将不再维护,相信那个时候Mirantis会推出自己的基于Newton版本的OpenStack。
测试重点关注的是OpenStack Neutron,但是由于是一个完整的系统,其他的组件,例如RabbitMQ,DB,Nova,Ceph,Keystone也跟着被测试了一把。
再看一看Neutron的配置:
配置项的倒数4项都是为了测试而修改的配置,修改后会影响控制面的性能,实际生产环境还是建议使用Neutron默认值。
这个测试没太多可说的,就是同时测试Neutron的L2 domain通信,L3 domain东西向通信,L3 南北向floating IP通信,L3 南北向NAT 通信,确保这些通讯正常。有两点值得注意的:
这个测试验证了,OpenStackNeutron最多可以支持多少个虚机。这里说的支持,是指能给虚机配置网络,并且虚机具有外网访问权限。
测试的硬件是200台主机,其中Compute node有196台。其他细节报告里没有说,但是Mirantis的Controllernode一般是3台,还有一台主机估计是辅助测试用的外部服务器。
测试中的虚机在启动的时候,会向metadata server申请IP地址,并且会向一个外部服务器汇报自己的IP地址。也就是说如果虚机的网络正常,外部服务器可以收到虚机的汇报。
测试基于Heat,测试中的Heat stack有一个network,里面包含一个subnet,一个DVR,以及每个Compute node上的一个虚机,也就是196台虚机。一次创建5个Heat stack。测试中,相关的性能数据如下表:
得出的结论就是,随着虚机数量的增加,Controller,Compute,DB,网桥上的负担缓慢增加。这个也比较好理解,因为测试中的虚机只在启动的时候有网络请求,之后就一直处于idle,没有网络请求。实际环境中,不可能起了虚机什么也不干,所以实际环境中的曲线会更“陡”一些。
最终阻止测试进行下去的是内存的限制,而不是OpenStack Neutron的限制。
Mirantis的报告中指出了在测试中遇到的一些问题。
值得注意的是,尽管OpenStack service和agent最后大规模的罢工,但是虚机仍然具有网络连通性。这正是SDN将控制层和数据层分离的好处。
Shaker是一个针对OpenStack设计的网络性能测试工具。Shaker基于iperf3和netperf,可以调用OpenStack API生成测试场景,并且有可视化的测试报告。
网络性能测试同样是基于L2domain通信,L3 domain东西向通信,L3 南北向通信,但是目前Mirantis只公开了L3 东西向测试的结果。L3东西向的网络拓扑如下:
在测试过程中,有几点影响了测试结果:
当使用默认的MTU 1500时,虚机的上行/下载的速率极限约为561/528 (Mbit/S)。之后,将MTU更新到9000,虚机的上行/下载速率极限变成3615/3844(Mbit/S)。也就是说MTU由1500改到9000,网络带宽提升了7倍。MTU越大,网络数据报文被分片的可能性越小,相应地效率更高,但是每一个数据包的延时也变大,且数据包bit出错率也相应增加。所以实际环境数据中心的MTU,应该调试到一个适当值,而不是盲目的改变。
测试中的数据网络用的是VxLAN网络,在网络传输过程中,VxLAN协议会在数据包之外增加50 bytes长度。这就涉及了数据包出/入主机时,VxLAN协议的封包/解包。旧的网卡不具备硬件封包/解包的能力,这部分工作由CPU运算完成,而一些新型号的网卡(IntelX540 or X710),具备硬件封包/解包能力。配合这些新的网卡,网络性能势必会有提升。
在Mirantis的测试中,总共有三个环境:
Lab A
Lab A的情况,在MTU部分已经讲过。
Lab B
Mirantis测试了X710关闭/打开hardware offload时,对应的MTU=1500 和MTU=9000时的带宽:
从上面的图中,可以得出以下结论:
Lab B的测试可以看出,开启硬件VxLAN offload,并使用较大的MTU,能明显提升虚拟网络带宽。
Lab C
硬件上Lab C与Lab B同规格,只是Lab C将4块网卡bond在一起,这带来的好处是网络带宽非常稳定,几乎线性。多块网卡bond之后,能实现多块网卡之间的负载均衡,因此得到这样的测试结果也是意料之中。
Lab B:
Lab C:
综合比较
从这个图中,可以得出结论:高MTU,VxLAN hardware offload,以及bond 网卡,可以在高网络吞吐量时,保证虚拟网络带宽的稳定和更高的带宽。
这张图就不那么好看了,当并发数增加时(可以理解多个虚机同时请求北向最大带宽),虚拟网络的带宽急剧下降。即使Lab C也是如此。DVR的SNAT还是集中式处理,当并发数增加时,网络节点的负担将大大增加,并成为瓶颈。北向访问的外网,其MTU,物理网络也变得更加不可控,这也是影响测试结果的因素。总之 , OpenStack Neutron L3的南北向带宽,不尽如人意。