从openvswitch发送ZeroMQ消息到SDN控制器

问题描述 投票:0回答:1

过去几个月我一直在使用两个C程序,一个是ZeroMQ发布者,另一个是ZeroMQ订阅者。他们在虚拟机之间交换简单的字符串消息,并且一切正常。

现在,在我正在使用的其中一个VM(VM A)中,我配置了openvswitch,在另一个VM中配置了Ryu控制器。该图如下:

enter image description here

我将OVS的桥接接口绑定到VM A的eth3接口。一切正常,流入口由Ryu控制器添加或由我手动添加。

Now,我想添加我已经使用了无数次的ZeroMQ发布者-订阅者程序。在这里,控制器是订阅者,而OVS是发布者。

但是,消息永远不会到达控制器...如果我从安装了[[NOT且已配置OVS的net A上的另一台计算机上运行ZeroMQ发布者,则消息会成功到达Ryu控制器。

[当我运行发布者和订阅者时,这是两台计算机上netstat -at的输出。 VM A是“ OpenWrt”,Ryu控制器是“ control”(仅考虑@control VM中的最后一行):

enter image description here

enter image description here

我缺少什么吗?从de OVS向控制器发送TCP消息真的是不可能的吗?我是否应该创建从VM A到消息将流经的控制器的某种隧道?还是仅仅是ZeroMQ的问题,不适用于启用Openflow的体系结构?

如果您中的任何人曾经在Openflow环境中使用过消息队列技术,请告诉我。

我非常感谢您的帮助,已经困扰了我数周。

注意:我可以从控制器ping VM A,反之亦然。

zeromq openflow openvswitch
1个回答
0
投票

Q:我缺少什么吗?

由于未提供MCVE代码,因此缺少一对LoS可见性测试结果,来自:

<ZMQ_SUB_HOST>:~$ traceroute --sport=<ZMQ_TRANSPORT_PORT#> <ZMQ_PUB_HOST>

<ZMQ_PUB_HOST>:~$ traceroute --sport=<ZMQ_TRANSPORT_PORT#> <ZMQ_SUB_HOST>

注意:我可以从控制器Ping VM A,反之亦然。

这句话听起来很有希望,但是LoS可见性测试结果和MCVE代码细节都很重要,但是却没有。

Q:我是否应该创建从VM A到消息将流经的控制器的某种隧道?

当然可以。这将隔离L3级别的问题,您的隧道路径将提供一种忽略所有这些问题的方法,但需要付出一些轻微的延迟权衡。

Q:或者这仅仅是ZeroMQ的问题,不适用于启用Openflow的体系结构?

没有特殊的原因归咎于ZeroMQ基础架构停止工作,但归因于L3 / SDN相关但尚未明确的问题。给定公平的

tcp://-transport-class路径,并在正确配置的M-.bind( <class>://<addr>:<port> ) -s :N-.connect( <class>://<addr>:<port> ) -s关系中使用该路径,不报告任何错误状态在各自的操作上,ZeroMQ应且将一如既往地工作。

© www.soinside.com 2019 - 2024. All rights reserved.