在多个 pox 控制器之间通信

Communicating between multiple pox controllers

我正在开发 sdn 中多个控制器之间的负载平衡。在 controller-1 上计算负载后,我需要将其中的一部分迁移到 controller-2。我已经使用 mininet 和 运行 2 个远程 pox 控制器创建了拓扑,一个在 127.0.0.1:6633 上,另一个在 127.0.0.1:6634.How 我可以在这些控制器之间进行通信吗?如何将 controller-1 的负载信息发送到 controller-2 并在那里迁移一些流?

一般来说,您追求的是分布式 SDN 框架,其中控制器应该相互通信。 为了使控制器能够交换信息,您应该在它们之间建立通信通道。 首先决定通信的类型,入站或出站。大多数分布式系统使用具有入站通信通道的出站作为故障安全解决方案。 选择通信模块很容易。 您有多种选择,但我只会研究两种通用的方法。第一个是 POX 的原生信使组件 https://github.com/noxrepo/pox/blob/carp/pox/messenger/init.py 其次也是使用最广泛的是RabbitMQ消息交换代理系统https://www.rabbitmq.com/tutorials/tutorial-one-python.html 您应该尝试遵循代理编程方法。这里有一篇论文可以帮助你 http://jeremie.leguay.free.fr/files/disco_noms_2014.pdf。 最后,如果您决定使用 Agents,有一个很好的 python 库,名为 SPADE https://pypi.python.org/pypi/SPADE,但它有时会出现故障。

POX 不是分布式控制器。我真的会建议你立即迁移到 ONOS 或 opendaylight。您将在 ONOS 之上实施您的解决方案。