Introduction
In this article, we are going to show you how to setup an development environment for CORD Fabric without using pre-installed VM.
ONOS
Setup an ONOS cluster with 3 instances. Here we only show brief steps. Please refer to Installing and Running ONOS for detail.
- Fetch and compile ONOS
Enable Segment Routing applications in your cell configuration:
ONOS_APPS=drivers,openflow,segmentrouting
Configure Segment Routing
We plan to replace the configuration file with Network Configuration Subsystem in a near future
Attached segmentrouting.conf is already modify for the 4-by-4 leaf-spine topology we are going to use.
Copy it to:onos/tools/package/config/segmentrouting.conf
You can also use copy and modify from a sample at:
onos/tools/package/config/samples/segmentrouting.conf
- Package, install and start ONOS
Mininet and CpqD Software Switch
Install Mininet from source code. Please refer to Install Mininet from source code for detail.
Fetch Mininet$ git clone git://github.com/mininet/mininet $ cd mininet $ git checkout -b 2.2.1 2.2.1
Patch Mininet.
We will probably commit this back to the Mininet main stream.
A patch multi_controller.patch is required to allow CpqD software switches to connect to multiple controller instances simultaneously.
Apply the patch using:Patch Mininet# In the Mininet root directory $ git apply multi_controller.patch
Install Mininet and CpqD Software Switch
Install Mininet$ sudo ./util/install.sh -3fn
Start the Fabric
Start the Fabric
We write a Mininet script cord_fabric.py that can help you easily create a leaf-spine topology with CpqD software switches.Check cell configuration
Since cord_fabric.py reads controller information from cell configuration, you should check your cell and see if $OC[1-9] is correctly set up before running the script.
Start the leaf-spine topology$ sudo -E ./cord_fabric.py --spine=4 --leaf=4
Run pingall
Test host connectivitymininet> pingall *** Ping: testing ping reachability h1 -> X h3 h4 h5 h6 h7 h8 h2 -> X h3 h4 h5 h6 h7 h8 h3 -> h1 h2 X h5 h6 h7 h8 h4 -> h1 h2 X h5 h6 h7 h8 h5 -> h1 h2 h3 h4 X h7 h8 h6 -> h1 h2 h3 h4 X h7 h8 h7 -> h1 h2 h3 h4 h5 h6 X h8 -> h1 h2 h3 h4 h5 h6 X *** Results: 14% dropped (48/56 received)
Communication between hosts in the same rack (i.e. in the same subnet) is L2 bridged (not segment-routed). Unfortunately, we have not implemented this functionality yet. As a result pinging between hosts in the same rack (e.g. h1 and h2) will not work
(Optional) GUI Configuration
Configure sprites
$ onos-upload-sprites $OC1 onos/web/gui/src/main/webapp/data/sprites/segmentRouting.json
and then access the URL: http://<ONOS_IP>/onos/ui?sprites=segmentrouting
Configure topology view
$ onos-topo-cfg $OC1 onos/tools/test/topos/cord.json