近期,澳大利亞研究機構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控制器設計,指出:“要用預分配的緩沖區處理新到達的數據包,而不是將其作為新的對象處理。控制器還應該考慮硬件特性,以達到在多核平臺里限制高速緩存未分配的現象,以便可利用多核平臺的網絡芯片。”