開源控制器
ONOS和ODL項目在SDN控制器方面很可能會共享成果,這樣幾乎所有事情都可以在Linux基金會上實現了。
兩個開源組織創建了獨立的SDN控制器,現在已經是Linux基金會的一部分,增加了跨項目合作的進程。
日前,Open Networking Lab (ON.Lab)將ONOS項目(Open Networking Operating System)放在了基金會中。ONOS開發者正在創建一個電信級的開源SDN控制器。
ON.Lab組織加入Linux基金會是為了從其龐大的開發者社區中獲得幫助。ONOS項目的執行董事Guru Parulkar表示:“隨著SDN和NFV(網路功能虛擬化)的崛起,服務提供商和開發者社區在人才儲備方面出現嚴重不足。”
Linux基金會還有ODL(OpenDaylight)項目,它是由供應商傾力打造的控制器架構。貢獻者包括思科、Juniper網路公司、博科通訊系統公司以及Arista網路公司。
其他控制器
1.NOX和POX
NOX 是史丹福大學在2008 年提出的第一款OpenFlow 控制器,它的早期版本(NOX-Classic)由C++和Python 兩種語言實現,只能支持單執行緒操作。控制器提供相應的編程接口,開發人員可以使用C++或者Python 語言在這些接口上實現自己的套用。這個版本已經開源了包括hub、switch、topology 和route在內的多種套用。
NOX 的新版本(0.9.2~core~beta,2012-5-11 發布)完全由C++實現,支持OpenFlow1.0 協定,並且提供了多執行緒的支持。由於C++語言的靈活性、高效性,並且新版本增加了多執行緒的支持,其性能有了很大的提升,但美中不足的是,新版NOX只提供了基本框架。由於它在代碼結構和實現語言上有了一定的調整,原來版本中的相關套用在新版本中無法直接移植。最新版本的NOX只有switch 一個套用,實現了learning switch的功能。
NOX團隊從其舊版本中分離出Python 語言實現的內容之後,又實現了一款完全使用Python語言的控制器POX。儘管POX現在開源出來的代碼所實現的套用也僅限learning switch,但由於Python 簡潔、易讀,以及擴展性好等優點,POX得以快速發展,並且得到了廣泛的套用。由於Python 是一種解釋性語言,它在性能上較C++和Java 會有一些劣勢。本文對於POX 的測試,均採用PyPy解釋器。
2.Beacon
Beacon 同樣起源於史丹福大學,在2010 年由Erickson 等人設計開發。Beacon 是一款基於Java 語言的開源控制器,截至本文撰寫時的最新版本是V1.0.2 版。Beacon 以其高效性和穩定性得以在多個科研項目和實驗環境中被套用。另外,Beacon 還具有很好的跨平台特性,並且支持多執行緒,可以通過Web 的UI 進行訪問控制。Beacon 採用Java 的Spring和Equinox 編程模型,可以提供OSGi 用戶界面,使用者可以通過用戶界面動態地進行模組的添加和刪除,在使用和部署上很方便。
3.Big Network Controller & Floodlight
2012年成立的SDN初創公司Big Switch Networks先後推出了幾款控制器。首先是其商用版的Big NetworkController,它可以支持多達1 000 個網路設備,每秒連線最多250 000台主機。同年2月,Big Switch發布了其開源控制器Floodlight,該控制器與Big Network Controller使用相同的core engine,作為其開源版本推向市場,到2012年年底,其下載量就已經超過1萬。
Floodlight採用Java語言實現,在Apache開源標準許可下可免費使用。另外,Big Network Controller 和Floodlight 的API(application programming interface)完全兼容,因此基於Floodlight 編寫的應用程式可以直接套用於商業版本的控制器。也正是基於這種兼容性,Floodlight 開源社區可以向用戶提供強大的技術支持。Floodlight 最新版本(V0.90)於2012 年10 月發布,支持多執行緒和Web UI。同時,Floodlight 也可以很好地套用於OpenStack。
4.Maestro
Maestro[9]是萊斯大學2011年的一篇學位論文,提出並用Java 實現了一款基於LGPL V2.1 開源協定標準的多執行緒控制器,主要套用於科研領域。它同樣有著很好的平台適應性,可以有效地在多種作業系統和體系結構的機器上運行。到目前為止,Maestro最
新開源版本為2011 年5 月發布的V0.2.1,其實現的套用主要包括learning switch、discovery、location management、route 等。而對於命令行模式,只是實現了一些簡單的display 操作。相對其他控制器來說,Maestro版本的更新速度比較慢。
5.Ryu
Ryu是由日本NTT公司負責設計研發的一款開源SDN 控制器。同POX 一樣,Ryu 也是完全由Python 語言實現,使用者可以用Python 語言在其上實現自己的套用。Ryu 目前支持OpenFlow V1.0、V1.2 和V1.3,同時支持在OpenStack上的部署套用。Ryu採用Apache License開源協定標準,最新版本實現了simple_switch、rest_topology等套用。
6.Helios和SNAC
上述介紹的控制器主要都是開源的,而Helios 和SNAC是閉源的SDN控制器。Helios 是由NEC公司開發的基於C語言的可擴展控制器,它主要套用於科研環境,並且提供了一個可程式的界面來進行實驗。SNAC是Nicira Networks 基於NOX開發的一款企業級控制器,它提供了靈活的策略定義語言,通過策略管理器管理網路,有著友好的用戶界面。
控制器測試
隨著SDN產業的不斷成熟,南向接口OpenFlow協定的日趨完善,SDN控制器作為未來網路架構的核心組件,其性能瓶頸已成為制約SDN發展的一個重要因素。如何形成統一的SDN控制器性能測試規範並施以有效的測試手段,早已成為了業界普遍關心的問題。天地互連-全球SDN測試認證中心發布的《SDN控制器性能測試白皮書》從SDN控制器性能測試平台的搭建、性能測試方法與測試結果分析和前瞻性的性能測試研究等方面,向業界展示了規範化的SDN控制器性能測試流程,為網路供應商選擇高性能SDN控制器設備提供了依據。