A project to enable inter-LAN communication for Real-Time Publish-Subscribe protocol. The MPLS branch provides a layer-3 tunneling to correctly route traffic to desired listeners.
Ryu-controller, Open vSwitch, Mininet
Execute the script below
cs538_shape.py
This gives you a topology as follows: It's optional to have a Ryu controller for routers as they can have static routes.
This script installs static routes for subnets s1, s2, s3 and set interface properties. The label IDs are simply their digits (could be a violation of MPLS reserved label IDs).
if_conf.sh
ryu-manager --ofp-tcp-listen-port 6633 gateways.py
Or run
gateways.sh
Running the following command on mininet CLI starts an xterm for host X. On the xterm, you can run multicast applications to test the topology and correctness of the controller
xterm hX
Multicast traffic should be able to cross any boundary without issues. Testing was conducted with RTI Perf Test https://github.com/rticommunity/rtiperftest
A few security mechanisms were implemented in the controller to cut off a specific LAN or host. Documentation to be expanded...
This design strives to make IP multicast possible across LANs possible by querying with IGMPv2 messages and capturing responses/requests. see lib/igmplib.py for details