/riplpox

RipL-POX (Ripcord-Lite for POX): A simple network controller for OpenFlow-based data centers

Primary LanguagePythonGNU General Public License v2.0GPL-2.0

== What is it? ==

RipL-POX (Ripcord-Lite for POX) is a simple data center controller built on RipL.

== Why should you use it ==

RipL-POX provides an example of an OpenFlow controller that uses a static network description to create paths. 
It should work out-of-the-box to give you a functioning (but unoptimized) OpenFlow 1.0 data center controller based on a topology description from RipL.

There are two main modes:
- Proactive routing pushes down all possible paths when all switches come up.
- Reactive routing pushes down full OpenFlow N-tuple paths for each flow.

For each mode, you can choose to use spanning tree routing, random routing, or routing based on a hash function.

The hash function depends on the mode:
- In proactive mode, hashing is based on L2 fields.
- In reactive mode, hashing comes from the ECMP 5-tuple.

== Install ==

See INSTALL for install first.

== Running RipL on POX with Mininet ==

RipL-POX must use the exact same topology as Mininet.  Order shouldn't matter, but to reduce the initial debug output caused by IPv6 link-layer discovery messages that get broadcast, start up the topology first:

# Running Mininet w/a Fat Tree topology, in a second window:
cd ~/
sudo mn --custom ~/ripl/ripl/mn.py --topo ft,4 --controller=remote --mac

# Run RipL-POX in reactive mode w/random routing
cd ~/
~/pox/pox.py riplpox.riplpox --topo=ft,4 --routing=random --mode=reactive

That's it - at this point, your network should run.

Here are other invocation examples:

# Run RipL-POX in reactive mode w/hashed routing
cd ~/
~/pox/pox.py riplpox.riplpox --topo=ft,4 --routing=hashed --mode=reactive

# Run RipL-POX in proactive mode w/spanning-tree routing
cd ~/
~/pox/pox.py riplpox.riplpox --topo=ft,4 --routing=st --mode=proactive

== Verifying the setup ==

In mininet console:
pingall
iperf