SDN控制器是软件定义网络(SDN)中的应用程序,负责流量控制以确保智能网络。SDN控制器是基于如OpenFlow等协议的,允许服务器告诉交换机向哪里发送数据包。
ONOS和ODL项目在SDN控制器方面很可能会共享成果,这样几乎所有事情都可以在Linux基金会上实现了。
两个开源组织创建了独立的SDN控制器,现在已经是Linux基金会的一部分,增加了跨项目合作的进程。
日前,OpenNetworkingLab(ON.Lab)将ONOS项目(OpenNetworkingOperatingSystem)放在了基金会中。ONOS开发者正在创建一个电信级的开源SDN控制器。
ON.Lab组织加入Linux基金会是为了从其庞大的开发者社区中获得帮助。ONOS项目的执行董事GuruParulkar表示:“随着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一个应用,实现了learningswitch的功能。
NOX团队从其旧版本中分离出Python语言实现的内容之后,又实现了一款完全使用Python语言的控制器POX。尽管POX现在开源出来的代码所实现的应用也仅限learningswitch,但由于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.BigNetworkController&Floodlight
2012年成立的SDN初创公司BigSwitchNetworks先后推出了几款控制器。首先是其商用版的BigNetworkController,它可以支持多达1000个网络设备,每秒连接最多250000台主机。同年2月,BigSwitch发布了其开源控制器Floodlight,该控制器与BigNetwork Controller使用相同的coreengine,作为其开源版本推向市场,到2012年年底,其下载量就已经超过1万。
Floodlight采用Java语言实现,在Apache开源标准许可下可免费使用。另外,BigNetworkController和Floodlight的API(applicationprogramminginterface)完全兼容,因此基于Floodlight编写的应用程序可以直接应用于商业版本的控制器。也正是基于这种兼容性,Floodlight开源社区可以向用户提供强大的技术支持。Floodlight版本(V0.90)于2012年10月发布,支持多线程和WebUI。同时,Floodlight也可以很好地应用于OpenStack1.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一个应用,实现了learningswitch的功能。
NOX团队从其旧版本中分离出Python语言实现的内容之后,又实现了一款完全使用Python语言的控制器POX。尽管POX现在开源出来的代码所实现的应用也仅限learningswitch,但由于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.BigNetworkController&Floodlight
2012年成立的SDN初创公司BigSwitchNetworks先后推出了几款控制器。首先是其商用版的BigNetworkController,它可以支持多达1000个网络设备,每秒连接最多250000台主机。同年2月,BigSwitch发布了其开源控制器Floodlight,该控制器与BigNetwork Controller使用相同的coreengine,作为其开源版本推向市场,到2012年年底,其下载量就已经超过1万。
Floodlight采用Java语言实现,在Apache开源标准许可下可免费使用。另外,BigNetworkController和Floodlight的API(applicationprogramminginterface)完全兼容,因此基于Floodlight编写的应用程序可以直接应用于商业版本的控制器。也正是基于这种兼容性,Floodlight开源社区可以向用户提供强大的技术支持。Floodlight版本(V0.90)于2012年10月发布,支持多线程和WebUI。同时,Floodlight也可以很好地应用于OpenStack。
4.Maestro
Maestro[9]是莱斯大学2011年的一篇学位论文,提出并用Java实现了一款基于LGPLV2.1开源协议标准的多线程控制器,主要应用于科研领域。它同样有着很好的平台适应性,可以有效地在多种操作系统和体系结构的机器上运行。到目前为止,Maestro最
新开源版本为2011年5月发布的V0.2.1,其实现的应用主要包括learningswitch、discovery、locationmanagement、route等。而对于命令行模式,只是实现了一些简单的display操作。相对其他控制器来说,Maestro版本的更新速度比较慢。
5.Ryu
Ryu是由日本NTT公司负责设计研发的一款开源SDN控制器。同POX一样,Ryu也是完全由Python语言实现,使用者可以用Python语言在其上实现自己的应用。Ryu目前支持OpenFlowV1.0、V1.2和V1.3,同时支持在OpenStack上的部署应用。Ryu采用ApacheLicense开源协议标准,版本实现了simple_switch、rest_topology等应用。
6.Helios和SNAC
上述介绍的控制器主要都是开源的,而Helios和SNAC是闭源的SDN控制器。Helios是由NEC公司开发的基于C语言的可扩展控制器,它主要应用于科研环境,并且提供了一个可编程的界面来进行实验。SNAC是NiciraNetworks基于NOX开发的一款企业级控制器,它提供了灵活的策略定义语言,通过策略管理器管理网络,有着友好的用户界面。
4.Maestro
Maestro[9]是莱斯大学2011年的一篇学位论文,提出并用Java实现了一款基于LGPLV2.1开源协议标准的多线程控制器,主要应用于科研领域。它同样有着很好的平台适应性,可以有效地在多种操作系统和体系结构的机器上运行。到目前为止,Maestro最
新开源版本为2011年5月发布的V0.2.1,其实现的应用主要包括learningswitch、discovery、locationmanagement、route等。而对于命令行模式,只是实现了一些简单的display操作。相对其他控制器来说,Maestro版本的更新速度比较慢。
5.Ryu
Ryu是由日本NTT公司负责设计研发的一款开源SDN控制器。同POX一样,Ryu也是完全由Python语言实现,使用者可以用Python语言在其上实现自己的应用。Ryu目前支持OpenFlowV1.0、V1.2和V1.3,同时支持在OpenStack上的部署应用。Ryu采用ApacheLicense开源协议标准,版本实现了simple_switch、rest_topology等应用。
6.Helios和SNAC
上述介绍的控制器主要都是开源的,而Helios和SNAC是闭源的SDN控制器。Helios是由NEC公司开发的基于C语言的可扩展控制器,它主要应用于科研环境,并且提供了一个可编程的界面来进行实验。SNAC是NiciraNetworks基于NOX开发的一款企业级控制器,它提供了灵活的策略定义语言,通过策略管理器管理网络,有着友好的用户界面。
随着SDN产业的不断成熟,南向接口OpenFlow协议的日趋完善,SDN控制器作为未来网络架构的核心组件,其性能瓶颈已成为制约SDN发展的一个重要因素。如何形成统一的SDN控制器性能测试规范并施以有效的测试手段,早已成为了业界普遍关心的问题。天地互连-全球SDN测试认证中心发布的《SDN控制器性能测试白皮书》从SDN控制器性能测试平台的搭建、性能测试方法与测试结果分析和前瞻性的性能测试研究等方面,向业界展示了规范化的SDN控制器性能测试流程,为网络供应商选择高性能SDN控制器设备提供了依据。
维库电子通,电子知识,一查百通!
已收录词条48237个