近期,澳大利亚研究机构Data61和悉尼大学的计算机科研人员评估了四个主流OpenFlow控制器:NOX、Maestro、Floodlight和Beacon,最终得出结论,认为OpenFlow架构的效率低,限制了性能的改善,而且还会消耗不必要的功率。
研究人员在ArXiv上发表了针对此次测试的论文,其中OpenDaylight也是测试对象之一,但其性能未包括在报告中,报告还表示,“它的性能太差,拿出来比较不能提供任何有用的东西。”
值得关注的是,无论是在基于Tilera的芯片网络处理器上运行,还是在基于E5-2450至强服务器上运行,在所有测试的控制器中并没有一款控制器能够达到最高线速。
就CBench软件定义网络(SDN)控制器性能指标而言,最佳Tilera设置仅仅勉强达到了每秒500万个请求,与每秒2900万请求的最高线速比不相去甚远。
而英特尔过去在数据包处理方面所付出的工作终于得到了回报,在x86设置下,Beacon能达到每秒2000万个请求;而其它控制器所能达到的最大值仅为每秒700万的请求。
由于SDN控制器处理网络数据包时用的是流量概念,就是说它们必须记住MAC地址,以便跟踪通信,而以太网交换机则只需要知道将数据包转发到哪个端口,另外,网络可扩展性也是一个大问题。
在性能指标测试里,在1000万个唯一MAC地址的请求下,没有控制器可以保持其峰值性能,基于Java的控制器(Bean和Floodlight)则在该规模上几乎陷于完全停顿状态。
该文章还指出,OpenFlow的本身存在结构性的低效率问题。文章作者提到了序列化: I/O线程,以及“学习中的交换应用里的关键数据结构:哈希表”。
据称,序列化对开销的影响最大,最有效的控制器也在数据包序列化上花了五分之一的时间,此限制是这些控制器面向对象设计原则固有的。每个独立的数据包都被控制器作为一个单独的对象处理,从而会对每个数据包引入不可忽视的开销。
最后,作者还提出了一种全新的SDN控制器设计,指出:“要用预分配的缓冲区处理新到达的数据包,而不是将其作为新的对象处理。控制器还应该考虑硬件特性,以达到在多核平台里限制高速缓存未分配的现象,以便可利用多核平台的网络芯片。”
原文发布时间为: 2016年8月22日
本文作者:李超
本文来自云栖社区合作伙伴至顶网,了解相关信息可以关注至顶网。