我正在开发sdn中多个控制器之间的负载平衡。一旦在控制器-1上计算了负载,我需要将其中的一部分迁移到控制器-2。我使用mininet创建拓扑并在127.0.0.1:6633运行2个远程pox控制器,在127.0.0.1:6634运行其他。如何在这些控制器之间进行通信?如何将controller-1的加载信息发送到controller-2并在那里迁移一些流?
答案 0 :(得分:0)
通常,您是在分布式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的论文。 最后,如果您决定使用Agent,那么有一个名为SPADE https://pypi.python.org/pypi/SPADE的漂亮的python库,但它有时会变得很糟糕。
答案 1 :(得分:0)
POX不是分布式控制器。我真的建议你立即迁移到ONOS或opendaylight。您将在ONOS之上实现您的解决方案。