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

 

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.

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

    ONOS_APPS=drivers,openflow,segmentrouting
  3. Configure Segment Routing

    Attached network-cfg.json is already modify for the 4-by-4 leaf-spine topology we are going to use.
    You can also use copy and modify from a sample at:

    onos/tools/package/config/samples/network-cfg.json
    1. For multiple instances
      Copy network-cfg.json to:

      onos/tools/package/config/network-cfg.json

      Run onos-package and onos-install to apply new configuration on ONOS instances.

    2. For single instance
      Copy network-cfg.json to:

      ~/Application/config/network-cfg.json

      Run ok clean to start ONOS with the new configuration.

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://github.com/mininet/mininet
    $ 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/install.sh -3fn

Start the Fabric

  1. 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 
  2. Run pingall

    Test host connectivity
    mininet> 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 (sad)

(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