This is an archive of the ONOS 1.5 wiki. For the current ONOS wiki, look here.



In this article, we are going to show you how to setup a CORD Fabric environment with Mininet and CpqD software switches.
This pure software environment allows us to develop and test the control logic (i.e. the Segment Routing app on ONOS) without any hardware switches.


Setup an ONOS cluster with 3 instances. Here we only show brief steps. Please refer to Installing and Running ONOS for detail.

  1. Fetch and compile ONOS
  2. Enable Segment Routing applications in your cell configuration:

  3. Configure Segment Routing

    You can copy and modify from the following sample json file:

    1. Running remotely (1, 3+ instances)
      Push the sample json file to the remote machine using onos-netcfg command

      onos-netcfg <IP> $ONOS_ROOT/tools/package/config/samples/network-cfg-fabric4x4.json

      Run stc setup to start ONOS with new configuration.


    2. Running locally (1 instance)
      Copy the sample json file to the following location and rename it to network-cfg.json:


      Run ok clean to start ONOS with the new configuration.

Right now segment routing does not support dynamic configuration which requires restarting ONOS after pushing the config

Mininet and CpqD Software Switch

    1. Install Mininet from source code. Please refer to Install Mininet from source code for detail.

      Fetch Mininet
      $ git clone git://
      $ cd mininet
      $ git checkout -b 2.2.1 2.2.1
    2. 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
    3. Install Mininet and CpqD Software Switch

      Install Mininet
      $ sudo ./util/ -3fn

Start the Fabric

    1. Start the Fabric
      We write a Mininet script that can help you easily create a leaf-spine topology with CpqD software switches.

      Check cell configuration

      Since 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 ./ --spine=4 --leaf=4 
    2. Run pingall

      Test host connectivity
      mininet> pingall
      *** Ping: testing ping reachability
      h1 -> h2 h3 h4 h5 h6 h7 h8
      h2 -> h1 h3 h4 h5 h6 h7 h8
      h3 -> h1 h2 h4 h5 h6 h7 h8
      h4 -> h1 h2 h3 h5 h6 h7 h8
      h5 -> h1 h2 h3 h4 h6 h7 h8
      h6 -> h1 h2 h3 h4 h5 h7 h8
      h7 -> h1 h2 h3 h4 h5 h6 h8
      h8 -> h1 h2 h3 h4 h5 h6 h7
      *** Results: 0% dropped (56/56 received)

(Optional) GUI Configuration 

    1. 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

    2. Configure topology view

      $ onos-topo-cfg $OC1 onos/tools/test/topos/cord.json


  • No labels