SDN控制器是软体定义网路(SDN)中的应用程式,负责流量控制以确保智慧型网路。SDN控制器是基于如OpenFlow等协定的,允许伺服器告诉交换机向哪里传送数据包。
事实上,SDN控制器是作为网路的一种作业系统(OS)。控制器不控制网路硬体而是作为软体运行,这样有利于网路自动化管理。基于软体的网路控制使得集成业务申请和网路更容易。
IBM的可程式网路控制器运行在Linux上。IBM的SDN控制器管理和配置OpenFlow 1.0网路,通过在网路控制器的顶部提供一个虚拟层。IBM的控制器允许第三方软体开发人员编写自己的应用程式。
一些供应商提出了专有的SDN控制器。所以,一个供应商的控制器不会总运行在另一个供应商的控制器上。其它网路供应商包括惠普(HP)、思科、VMWare、和瞻博网路,正在积极参与到SDN中。
基本介绍
- 中文名:SDN控制器
- 外文名:SDN controller
开源控制器
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控制器设备提供了依据。