5

我想听听您对可用的最佳开源 SDN 控制器的建议。我想实施和测试我在研究中的一些想法,所以我需要使用模拟,例如Mininet. 事实上,我熟悉 mininet 并且能够处理它。然而,Mininet 使用 POX 控制器,它有点乏味且用户友好度不高,因此在管理网络拓扑和修改流程时,它成为一项艰巨的任务,因为您需要从头开始对所有内容进行硬编码(我是初学者在 Python 中也是如此)。是否有用户友好的 SDN 控制器可以代替 POX?我已经尝试过FloodlightOpendaylight但还没有真正准备好并且涉及许多错误。

谢谢你。

4

4 回答 4

11

氮氧化物

这一切都始于 NOX。虽然有些人可能会争论,但 NOX 是第一个吸引大量研究人员并获得广泛认可的 OpenFlow 控制器。大多数主要的软件定义网络 (SDN) 和 OpenFlow 论文和应用程序都是在 NOX 之上实现的。甚至 Google 也使用 NOX 构建(原型?)它自己的分布式 OpenFlow 控制器,称为 ONIX。话虽这么说,所有的大惊小怪都留在了 2010 年。从那时起,NOX 邮件列表几乎被放弃了,我所知道的代码库中没有任何重大变化。

POX 称自己为 NOX 的弟弟。(它们都由同一个团队/组织管理/维护。)我个人认为,POX 的动机或多或少是出于创建对开发人员友好的 OpenFlow 控制器继任者 NOX 的目的。几乎所有 OpenFlow 新手都被定向到 POX 或 Floodlight。因此,它有一个非常活跃的邮件列表也就不足为奇了。POX 在其 wiki 上提供了有限的 Web API(通过 JSON-RPC)和中等规模的手册集合。它是用 Python 编写的,并为那里的 Pythonistas 提供了一个不错的 Python API。由于 Python 是一种解释性语言,POX 确实减少了开发和部署周期所花费的时间,特别是与基于 C++ 的 NOX 相比。此外,除了支持 NOX GUI,POX 还提供基于 Web 的 GUI。

灯塔

总而言之,Beacon 提供了一个紧凑而富有表现力的代码库,并且可以完美运行。话虽这么说,Eclipse 和 OSGi 的依赖真的让我很头疼,而且只支持星型拓扑(即没有循环的拓扑)非常受限制。如果您打算尝试 Beacon,我建议您改为评估 Floodlight。

泛光灯

毫无疑问,Floodlight 拥有 F/OSS OpenFlow 软件中最活跃和响应最迅速的社区。在 BigSwitch Networks 工作的大多数 Floodlight 开发人员直接参与邮件列表。您会发现自己正在与特定模块的实际开发人员讨论问题。我从来没有目睹过一个没有答案的问题,也没有一个没有解决的问题。这确实是一个支持和活跃的社区。Floodlight 通过 REST API 公开了几乎所有功能,并且存在许多用于常见任务的方便实用程序,例如静态路由和端到端路由(电路)推送。Floodlight 有一个基于 Web 的 UI(由 Wes Felter 提供)和一个基于 Java 的 GUI,称为 Avior,由 Jason Parraga 提供。作为同类产品之一,Floodlight 也可以使用 Quantum 插件作为 OpenStack 的网络后端运行。

Ryu 是一个基于组件的软件定义网络框架。Ryu 为软件组件提供定义明确的 API,使开发人员可以轻松创建新的网络管理和控制应用程序。Ryu 支持各种用于管理网络设备的协议,例如 OpenFlow、Netconf、OF-config 等。关于 OpenFlow,Ryu 完全支持 1.0、1.2、1.3、1.4、1.5 和 Nicira Extensions。所有代码都在 Apache 2.0 许可下免费提供。**

ONOS

ONOS(开放网络操作系统)项目是由 Linux 基金会主办的开源社区。该项目的目标是为通信服务提供商创建一个软件定义网络 (SDN) 操作系统,旨在实现可扩展性、高性能和高可用性。

开放日光

OpenDaylight 项目是一个由 Linux 基金会主办的协作开源项目。该项目的目标是加速软件定义网络 (SDN) 的采用,并为网络功能虚拟化 (NFV) 奠定坚实的基础。该软件是用Java编写的。

于 2016-03-17T22:27:08.257 回答
3

首先,Floodlight 和 OpenDaylight 都可以投入生产。虽然这篇文章是几个月前发布的,但 OpenDaylight 那时已经在许多组织中投入生产。

假设由于其他原因您更喜欢 OpenDaylight 和 Floodlight 以外的控制器,您可以尝试 ONOS 或 Kandoo/beehive 分布式控制器https://github.com/kandoo/beehive-netctrl

请注意,您声称 Mininet 使用 POX 具有误导性。您可以将任何控制器与 Mininet 一起使用。

例如,

  1. 使用 Floodlight 配置 Mininet - http://kkpradeeban.blogspot.com/2015/09/configuring-mininet-with-floodlight.html

  2. 使用 OpenDaylight 配置 Mininet - http://kkpradeeban.blogspot.com/2014/10/configuring-opendaylight-with-mininet.html

于 2016-09-30T20:40:15.233 回答
2

我认为您可以尝试使用ryu。它基于python并且易于使用。

有一个安装ryu控制器的简单方法,试试sdnds-tw/ryuInstallHelper

于 2016-01-29T16:48:43.637 回答
0

除了已经列出的内容。

FAUCET是一个基于 RYU 的紧凑型开源 OpenFlow 控制器。易于使用,因为一切都由单个文件faucet.yaml文件管理。非常适合试验 SDN,它也用于生产。

您可以从本教程开始

特征

  • VLAN
  • IPv4 和 IPv6 支持
  • 静态和 BGP 路由
  • 灵活的基于端口和 VLAN 的访问控制列表
  • 端口镜像
  • Openflow 交换机的供应商中立堆叠
  • 基于策略的转发将处理卸载到外部系统(例如通过 hostapd 的 802.1x)
  • 用于 NFV 的数据平面 - 卸载 DHCP、NTP、防火墙和 IDS 等功能
  • 用于监控的基于 Grafana 的仪表板
  • Prometheus 集成,用于监控和检测 FAUCET Influxdb 对时间序列的支持
  • OpenFlow 端口统计 综合测试套件
于 2019-11-14T08:16:16.303 回答