I have been working with two C programs for the past few months, one is a ZeroMQ publisher and the other a ZeroMQ subscriber. They exchange simple string messages between Virtual Machines and everything works fine.
Now, in one of the VMs I've been working on (VM A) I configured an openvswitch and in another VM a Ryu controller. The diagram is the following:
I "bounded" the bridge interface of OVS to the eth3 interface of VM A. Everything works well and flow-entries are added by the Ryu controller or manually added by me.
Now, I want to add the ZeroMQ publisher-subscriber programs I had already used countless times. Here, the controller is the subscriber and OVS the publisher.
However, the messages never arrive to the controller... If I run the ZeroMQ publisher from another machine on net A
that does NOT have OVS installed and configured, messages arrive to the Ryu controller successfully.
When I run the publisher and subscriber, this is the output of netstat -at
on both machines. VM A is "OpenWrt" and the Ryu controller is "control" (consider only the last line in @control VM):
Is there something I'm missing? Is it really impossible to send TCP messages from de OVS to the controller? Should I create some kind of tunnel from VM A to the controller where messages would flow through? Or is it just an issue with ZeroMQ that does not work with Openflow enabled architectures?
If any of you ever worked with a message queueing technology in Openflow environments, please let me know.
I appreciate any kind of help, I've been stuck for weeks.
Note: I can ping VM A from controller and vice-versa.