Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


Work in progress...

Prerequsite

Please prepare four VMs or host machines with the following specification.

NousageCPUMemoryDisk
1Openstack Controller Node2 Core4 GB or higher20 GB
2Openstack Network Node1 Core1 GB20 GB
3ONOS Controller1 Core1 GB20 GB
4Compute Node1 Core2 GB or higher20 GB
5Compute Node1 Core2 GB or higher20 GB

Set up Control node

...

Install git and python-pip on the Openstack Controller node

Code Block
languagebash
$ sudo apt-get install -y git
$ sudo apt-get install -y python-pip

...

Install devstack on the Openstack Controller node

Code Block
languagebash
$ git clone git://github.com/openstack-dev/devstack.git
or if you want to install the specific version of Devstack,
$ git clone -b stable/kilo git://github.com/openstack-dev/devstack.git

Creates local.conf file using the following options

...

languagetext

...

You will need:

  • An ONOS cluster installed and running 
  • An OpenStack service installed and running ("stable/mitaka" version is used here)

 

OpenStack Setup

 

How to deploy OpenStack is out of scope of this documentation. Here, it only describes some configurations related to use SONA. All other settings are completely up to your environment.

Controller Node

Let's install networking-onos (Neutron ML2 plugin for ONOS) first.

Code Block
languagebash
$ git clone https://github.com/openstack/networking-onos.git
$ cd networking-onos
$ sudo python setup.py install

 

Specify ONOS access information. You may want to copy the config file to /etc/neutron/plugins/ml2/ where the other Neutron configuration files are.

Code Block
languagebash
titlenetworking-onos/etc/conf_onos.ini
# Configuration options for ONOS ML2 Mechanism driver
[onos]
# (StrOpt) ONOS ReST interface URL. This is a mandatory field.
url_path = http://onos.instance.ip.addr:8181/onos/cordvtn
# (StrOpt) Username for authentication. This is a mandatory field.
username = onos
# (StrOpt) Password for authentication. This is a mandatory field.
password = rocks

 

Next step is to install and run OpenStack services.

For DevStack users, use this sample DevStack local.conf to build OpenStack controller node. Make sure your DevStack branch is consistent with the OpenStack branches, "stable/mitaka" in this example.

Code Block
titlelocal.conf of Controller Node
[[local|localrc]]
HOST_IP=10.134.231.28
SERVICE_HOST=10.134.231.28
RABBIT_HOST=10.134.231.28
DATABASE_HOST=10.134.231.28
Q_HOST=10.134.231.28

ADMIN_PASSWORD=nova
DATABASE_PASSWORD=$ADMIN_PASSWORD
RABBIT_PASSWORD=$ADMIN_PASSWORD
SERVICE_PASSWORD=$ADMIN_PASSWORD
SERVICE_TOKEN=$ADMIN_PASSWORD

DATABASE_TYPE=mysql

# Log
SCREEN_LOGDIR=/opt/stack/logs/screen

# Images

...

IMAGE_URLS="http://

...

cloud-images.ubuntu.com/releases/14.04/release/ubuntu-14.04-server-cloudimg-amd64.tar.gz,http://www.planet-lab.o    rg/cord/trusty-server-multi-nic.img"
FORCE_CONFIG_DRIVE=True

# Networks
Q_ML2_TENANT_NETWORK_TYPE=vxlan
Q_ML2_PLUGIN_MECHANISM_DRIVERS=onos_ml2
Q_PLUGIN_EXTRA_CONF_PATH=

...

/opt/stack/networking-onos/etc
Q_PLUGIN_EXTRA_CONF_FILES=(conf_onos.ini)

...

NEUTRON_CREATE_

...

INITIAL_

...

NETWORKS=False

# Services
enable_service q-svc
disable_service n-net
disable_service n-cpu
disable_service tempest
disable_service c-sch
disable_service c-api
disable_service c-vol
 
# Branches

...

GLANCE_BRANCH=stable/mitaka
HORIZON_BRANCH=stable/mitaka
KEYSTONE_BRANCH=stable/mitaka
NEUTRON_BRANCH=stable/mitaka
NOVA_BRANCH=stable/mitaka

 

If you use other deploy tools or build the controller node manually, please set the following configurations to Nova and Neutron configuration files.

1. Set Neutron to use ONOS ML2 plugin.

* The IP address 1.1.1.1 needs to be changed to your host IP address of Openstack controller.
* You can choose a different admin password if you want.
* If you installed the onos ml2 plugin in a different place, you need to change the Q_PLUGIN_EXTRA_CONF_PATH properly.

...

Code Block
languagebash

...

 $ git clone https://github.com/openstack/networking-onos.git
 $ cd networking-onos
 ~/networking-onos$ sudo python setup.py install

If you find the following error, please install python-setuptools using apt-get.

Code Block
languagetext
Traceback (most recent call last):
  File "setup.py", line 17, in <module>
    import setuptools
ImportError: No module named setuptools
Code Block
languagebash
$ sudo apt-get install python-setuptools
Info
titleWhy we need onos-networking plugin ?

onos-networking plugin just forwards (or calls) REST calls from nova to ONOS, and OpenstackSwitching app receives the API calls and returns OK. Main functions to implement the virtual networks are handled in OpenstackSwitching application.

...

Configure the onos ml2 plugin by editing the conf_onos.ini file in networking-onos/etc folder, which is just created

Code Block
languagetext
#Configuration options for ONOS driver

[onos]
# (StrOpt) ONOS ReST interface URL. This is a mandatory field.
url_path = http://ONOS_HOST_IP:8181/onos/openstackswitching

# (StrOpt) Username for authentication. This is a mandatory field.
username = onos

# (StrOpt) Password for authentication. This is a mandatory field.
password = rocks

You need to set the proper IP address for ONOS controller in ONOS_HOST_IP

...

Set up devstack

Code Block
languagebash
~/devstack$ ./stack.sh

It would take quite long up to 1 hour depending on the network status and host performance. If it is setup correctly, you will see the following message.

Code Block
languagetext
========================
DevStack Components Timed
========================

apt-get-update - 6 secs
pip_install - 31 secs
apt-get - 3 secs



This is your host IP address: 10.40.101.209
This is your host IPv6 address: ::1
Horizon is now available at http://10.40.101.209/dashboard
Keystone is serving at http://10.40.101.209:5000/
The default users are: admin and demo
The password: nova
2015-12-10 07:32:04.411 | stack.sh completed in 243 seconds.

Please check if you can log in to the Horizon dashboard with the url and login information as below.
Image Removed

Set up Compute node

Install Openvswitch

Even though any version higher than 2.0 would work, but we have tested with 2.3.2.

Code Block
languagebash
$ wget http://openvswitch.org/releases/openvswitch-2.3.2.tar.gz
$ tar xzvf openvswitch-2.3.2.tar.gz
$ cd openvswitch-2.3.2/
~/openvswitch-2.3.2$ ./configure
~/openvswitch-2.3.2$ make
~/openvswitch-2.3.2$ sudo make install
~/openvswitch-2.3.2$ sudo modprobe openvswitch

You can check if openvswitch is loaded properly

...

languagebash

...

title/etc/neutron/neutron.conf
core_plugin = neutron.plugins.ml2.plugin.Ml2Plugin
dhcp_agent_notification = False
Code Block
title/etc/neutron/plugins/ml2/ml2_conf.ini
[ml2]
tenant_network_types = vxlan
type_drivers = vxlan
mechanism_drivers = onos_ml2

[securitygroup]
enable_security_group = True

 

2. Set Nova to use config drive for metadata service, so that we don't need to launch Neutron metadata-agent.

And of course, set to use Neutron for network service.

Code Block
title/etc/nova/nova.conf
[DEFAULT]
force_config_drive = True
network_api_class = nova.network.neutronv2.api.API
security_group_api = neutron
 
[neutron]
url = http://[controller_ip]:9696
auth_strategy = keystone
admin_auth_url = http://[controller_ip]:35357/v2.0
admin_tenant_name = service
admin_username = neutron
admin_password = [admin passwd]

 

3. Don't forget to specify conf_onos.ini when you start Neutron service.

Code Block
/usr/bin/python /usr/local/bin/neutron-server --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini --config-file /opt/stack/networking-onos/etc/conf_onos.ini

 

Set up Compute and Gateway node

No special configurations are required for compute or gateway other than setting network api to Neutron.

For DevStack users, here's sample DevStack local.conf.

Code Block
titlelocal.conf for Compute Node
[[local|localrc]]
HOST_IP=10.134.231.30  <-- local IP
SERVICE_HOST=162.243.x.x  <-- controller IP, must be reachable from your test browser for console access from Horizon
RABBIT_HOST=10.134.231.28
DATABASE_HOST=10.134.231.28

ADMIN_PASSWORD=nova
DATABASE_PASSWORD=$ADMIN_PASSWORD
RABBIT_PASSWORD=$ADMIN_PASSWORD
SERVICE_PASSWORD=$ADMIN_PASSWORD
SERVICE_TOKEN=$ADMIN_PASSWORD

DATABASE_TYPE=mysql

NOVA_VNC_ENABLED=True
VNCSERVER_PROXYCLIENT_ADDRESS=$HOST_IP
VNCSERVER_LISTEN=$HOST_IP

LIBVIRT_TYPE=kvm
# Log
SCREEN_LOGDIR=/opt/stack/logs/screen

# Services
ENABLED_SERVICES=n-cpu,neutron
 
# Branches
NOVA_BRANCH=stable/mitaka
KEYSTONE_BRANCH=stable/mitaka
NEUTRON_BRANCH=stable/mitaka
Note

If your compute node is a VM, try http://docs.openstack.org/developer/devstack/guides/devstack-with-nested-kvm.html this first or set LIBVIRT_TYPE=qemu. Nested KVM is much faster than qemu, if possible.

 

For manual set ups, set Nova to use Neutron as a network API.

Code Block
title/etc/nova/nova.conf
[DEFAULT]
force_config_drive = always
network_api_class = nova.network.neutronv2.api.API
security_group_api = neutron
 
[neutron]
url = http://[controller_ip]:9696
auth_strategy = keystone
admin_auth_url = http://[controller_ip]:35357/v2.0
admin_tenant_name = service
admin_username = neutron
admin_password = [admin passwd]


Additional compute and gateway node setup

1. Make sure your OVS version is 2.3.0 or later.

2. Set OVSDB listening mode in your compute nodes. There are two ways.

Code Block
$ ovs-appctl -t ovsdb-server ovsdb-server/add-remote ptcp:6640:host_ip

 

Or you can make the setting permanent by adding the following line to /usr/share/openvswitch/scripts/ovs-ctl, right after "set ovsdb-server "$DB_FILE" line. You need to restart the openvswitch-switch service.

Code Block
set "$@" --remote=ptcp:6640

 

In either way, you should be able to see port "6640" is in listening state.

Code Block
languagebash
$ netstat -ntl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           

...

Foreign Address 

...

        State
tcp        0    

...

  0 

...

0.0.0.0:22              0.0.0.0:*    

...

  

...

 

...

        LISTEN
tcp      

...

  0 

...

 

...

    0 0.0.0.0:6640            0.0.0.0:*   

...

  

...

 

...

         LISTEN
tcp6     

...

  

...

Set up OVS
Please see the following link for detail, but here are the simple way to set up the OVS.
https://github.com/openvswitch/ovs/blob/master/INSTALL.md

...

languagebash

...

0      0 :::22   

 

2. Check your OVSDB. It is okay If there's a bridge with name "br-int", but note that CORD-VTN will add or update its controller, DPID, and fail mode.

Code Block
$ sudo ovs-vsctl show
cedbbc0a-f9a4-4d30-a3ff-ef9afa813efb
    ovs_version: "2.3.0"

 

3. Make sure that ONOS user(sdn by default) can SSH from ONOS instance to compute nodes with key.


TODO: Add additional gateway node setups if required


ONOS Setup

How to deploy ONOS is out of scope of this documentation.

1. If your ONOS is ready, create network-cfg.json file to configure SONA apps.

Code Block
titleCURRENT VERSION
{
  "userDefined" : {
      "openstacknetworking" : {
          

...

"config" : {
              "physicalRouterMac" : "00:00:00:00:00:01",
     

...

 

...

        "gatewayBridgeId" : "of:00000000000000a3",
          

...

 

...

   "gatewayExternalInterfaceName" : "veth1",
              "gatewayExternalInterfaceMac" 

...

: "00:00:00:00:00:01",
              "nodes" : [
       

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

You can check if it is installed correctly

Code Block
languagebash
~/openvswitch-2.3.2$ sudo ovs-vsctl --version
ovs-vsctl (Open vSwitch) 2.3.2
Compiled Dec  3 2015 14:49:51
DB Schema 7.6.2

Set manager as ptcp:6640 so that ONOS can detect the OVSDB

Code Block
languagebash
~/openvswitch-2.3.2$ sudo ovs-vsctl set-manager ptcp:6640

...

Install devstack on the Compute node

Code Block
languagebash
$ git clone git://github.com/openstack-dev/devstack.git

...

Please use the following local.conf for the compute nodes

Code Block
languagetext
[[local|localrc]]
HOST_IP=2.2.2.2
SERVICE_HOST=1.1.1.1
RABBIT_HOST=1.1.1.1
DATABASE_HOST=1.1.1.1
Q_HOST=1.1.1.1

ADMIN_PASSWORD=nova
DATABASE_PASSWORD=$ADMIN_PASSWORD
RABBIT_PASSWORD=$ADMIN_PASSWORD
SERVICE_PASSWORD=$ADMIN_PASSWORD
SERVICE_TOKEN=$ADMIN_PASSWORD

DATABASE_TYPE=mysql

#Images
IMAGE_URLS="http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img"
# Log

NOVA_VNC_ENABLED=true
VNCSERVER_PROXYCLIENT_ADDRESS=$HOST_IP
VNCSERVER_LISTEN=$HOST_IP

SCREEN_LOGDIR=/opt/stack/logs/screen

LIBVIRT_TYPE=qemu

# Services
ENABLED_SERVICES=n-cpu,neutron

HOST_IP should be the IP address of the compute node host, and Controller node IP address needs to be set for other settings.

...

Set up Gateway node

Instead of Neutron Network Node, SONA implements 'Gateway Node' to process all of requred functions (e.t.c, pnat, floactingIP, ...) based on 'pure' open vSwitch.

For now, in the Falcon release, SONA only supports a single Gateway Node. We will support multiple Gateway's which gives scalability in the Goldeneye release.

 

Install Openvswitch
Even though any version higher than 2.0 would work, but we have tested with 2.3.2.

Code Block
languagebash
$ wget http://openvswitch.org/releases/openvswitch-2.3.2.tar.gz
$ tar xzvf openvswitch-2.3.2.tar.gz
$ cd openvswitch-2.3.2/
~/openvswitch-2.3.2$ ./configure
~/openvswitch-2.3.2$ make
~/openvswitch-2.3.2$ sudo make install
~/openvswitch-2.3.2$ sudo modprobe openvswitch

You can check if openvswitch is loaded properly

...

languagebash

...

     {
                        "dataPlaneIp" : "10.134.34.222",
                        "bridgeId" : "of:00000000000000a1"
                    },
                    {
                        "dataPlaneIp" : "10.134.34.223",
                        "bridgeId" : "of:00000000000000a2"
                    },
                    {
                        "dataPlaneIp" : "10.134.33.208",
                        "bridgeId" : "of:00000000000000a3"
                    }
                ]
            }
        }
    },
    "apps" : {
        "org.onosproject.openstackinterface" : {
            "openstackinterface" : {
                 "neutronServer" : "http://10.243.139.46:9696/v2.0/",
                 "keystoneServer" : "http://10.243.139.46:5000/v2.0/",
                 "userName" : "admin",
                 "password" : "nova"
             }
        },
        "org.onosproject.openstacknode" : {
            "openstacknode" : {
                 "nodes" : [
                            {
                                    "hostname" : "compute-01",
                                    "ovsdbIp" : "192.168.56.112",
                                    "ovsdbPort" : "6640",
                                    "bridgeId" : "of:00000000000000a1",
                                    "openstackNodeType" : "COMPUTENODE"
                            },
                            {
                                    "hostname" : "compute-02",
                                    "ovsdbIp" : "192.168.56.106",
                                    "ovsdbPort" : "6640",
                    

...

  

...

 

...

            

...

 "bridgeId" 

...

: "of:00000000000000a2",
                  

...

  

...

 

...

              

...

 "openstackNodeType" 

...

: 

...

"COMPUTENODE"
                         

...

  

...

 

...

},

...

                

...

  

...

Set up OVS
Please see the following link for detail, but here are the simple way to set up the OVS.
https://github.com/openvswitch/ovs/blob/master/INSTALL.md

...

languagebash

...

          {
                                    "hostname" : "network",
             

...

                       

...

"ovsdbIp" : "192.168.56.108",
                     

...

 

...

              "ovsdbPort" : "6640",
     

...

                    

...

 

...

 

...

 

...

You can check if it is installed correctly

Code Block
languagebash
~/openvswitch-2.3.2$ sudo ovs-vsctl --version
ovs-vsctl (Open vSwitch) 2.3.2
Compiled Dec  3 2015 14:49:51
DB Schema 7.6.2

Set manager as ptcp:6640 so that ONOS can detect the OVSDB

Code Block
languagebash
~/openvswitch-2.3.2$ sudo ovs-vsctl set-manager ptcp:6640

...

Add port which is connected to a physical router to br-int bridge

Code Block
languagebash
~/openvswitch-2.3.2$ sudo ovs-vsctl add-port br-int eth0

(Optional) If you construct Gateway Node environment using virtualbox and only have an option to use NAT interface for internet connection, don't worry there's the way as follows,
Create virtual ports

Code Block
languagebash
~/openvswitch-2.3.2$ sudo ip link add dev veth0 type veth peer name veth1
~/openvswitch-2.3.2$ sudo ip link set dev veth0 up
~/openvswitch-2.3.2$ sudo ip link set dev veth1 up

...

Code Block
languagebash
~/openvswitch-2.3.2$ sudo ip link add lbr-ex type bridge

...

Code Block
languagebash
~/openvswitch-2.3.2$ sudo ovs-vsctl add-port br-int veth0

...

Code Block
languagebash
~/openvswitch-2.3.2$ sudo ip link set veth1 master lbr-ex

...

Code Block
languagebash
~/openvswitch-2.3.2$ sudo ip addr add 172.24.4.1/24 dev lbr-ex
~/openvswitch-2.3.2$ sudo ip link set lbr-ex up

...

Code Block
languagebash
~/openvswitch-2.3.2$ sudo sysctl net.ipv4.ip_forward=1

...

Code Block
languagebash
~/openvswitch-2.3.2$ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

...

languagebash

...

        "bridgeId" : "of:00000000000000a3",
                                    "openstackNodeType" : "GATEWAYNODE",
                                    "gatewayExternalInterfaceName" : "eth1",
                                    "gatewayExternalInterfaceMac" : "00:00:00:00:00:10"
                            }
               

...

   ]
      

...

   

...

 

...

  

...

 

...

}
        }
  

...

  },
    "devices" 

...

: {
        "of:00000000000000a1" 

...

: {
       

...

 

...

    "basic" : {
    

...

 

...

        

...

   "driver" : "sona"
    

...

   

...

     }
    

...

 

...

   },
       

...

 "of:00000000000000a2" : {
            

...

"basic" : {
          

...

 

...

     "driver" : "sona"
   

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 }
        }
    }
}

 

NOT MERGED YET: will be updated to below

Code Block
titleWILL BE
{
    "apps" : {
        "org.onosproject.openstackinterface" : {
            "openstackinterface" : {
                 "neutronServer" : "http://10.243.139.46:9696/v2.0/",
                 "keystoneServer" : "http://10.243.139.46:5000/v2.0/",
         

Set up ONOS node

We recommend to follow the link to set up the ONOS node and set up the ONOS development environment : ONOS from Scratch. However, you can also follow the following steps only to set up the ONOS node.

  1. Log into your new VM as sdn and give the user passwordless sudo privileges. Run sudo visudo, and add the following line to the end of the file:

    Code Block
    languagetext
    USER_ID ALL=(ALL) NOPASSWD:ALL
  2. Install Java 8

    Code Block
    languagebash
    $ sudo apt-get install software-properties-common -y
    $ sudo add-apt-repository ppa:webupd8team/java -y
    $ sudo apt-get update
    $ sudo apt-get install oracle-java8-installer oracle-java8-set-default -y
  3. Set up the public key login either using onos-push-keys or copying your public key of your development host to ONOS node

Bootstrap Compute/Gateway nodes

Using OpenstackNode application, you can initialize OVS in Compute/Gateway nodes as below,

  • Makes OVSDB and OpenFlow1.3 connection between ONOS and each node
  • Makes Bridge 'br-int' on each node
  • Makes port for vxlan tunneling

The application reads node information from network config,

Code Block
languagexml
{
    "apps" : {
        "org.onosproject.openstackinterfaceuserName" : {
"admin",
                 "openstackinterfacepassword" : {
"nova"
             }
        },
      "neutronServer" : "http://10.243.139.46:9696/v2.0/",
  org.onosproject.openstacknode" : {
               "keystoneServeropenstacknode" : "http://10.243.139.46:5000/v2.0/",{
                 "userNamenodes" : "admin",[
                 "password" : "nova"       {
             }
           },
        "org.onosproject.openstacknodehostname" : {"compute-01",
            "openstacknode"   : {
                "nodestype" : ["COMPUTE",
                            {
    "managementIp" : "10.203.25.244",
                                "hostnamedataIp" : "compute-0110.134.34.222",
                                    "ovsdbIpintegrationBridge" : "192.168.56.112",
of:00000000000000a1"
                        },
                  "ovsdbPort" : "6640",
    {
                                "bridgeIdhostname" : "of:0000000000000001compute-02",
                                    "openstackNodeTypetype" : "COMPUTENODECOMPUTE",
                            }    "managementIp" : "10.203.229.42",
                            {
    "dataIp" : "10.134.34.223",
                                "hostnameintegrationBridge" : "compute-02of:00000000000000a2",
                        },
                  "ovsdbIp" : "192.168.56.106",
    {
                                "ovsdbPorthostname" : "6640gateway-01",
                                    "bridgeIdtype" : "of:0000000000000002GATEWAY",
                                    "openstackNodeTypemanagementIp" : "COMPUTENODE"
10.203.198.125",
                               } "dataIp" : "10.134.33.208",
                              {
  "integrationBridge" : "of:00000000000000a3",
                                "hostnamerouterBridge" : "network",
of:00000000000000b3",
                        },
                 "ovsdbIp"  : "192.168.56.108",
    {
                                "ovsdbPorthostname" : "6640gateway-02",
                                    "bridgeIdtype" : "of:0000000000000003GATEWAY",
                                    "openstackNodeTypemanagementIp" : "GATEWAYNODE10.203.198.131",
                                    "gatewayExternalInterfaceNamedataIp" : "eth110.134.33.209",
                                    "gatewayExternalInterfaceMacintegrationBridge" : "00:00:00:00:00:10"of:00000000000000a4",
                            }
    "routerBridge" : "of:00000000000000b4",
           ]
             }
        }
    }
}

 

After activating OpenstackNode application with above config, you can see each node is automatically initialized as below,

Code Block
languagexml
Welcome to Open Network Operating System (ONOS)!]
     ____    _  ______  ____}
     
   /}
 __ \/ |/ /},
 __ \/ __/ "devices" : {
   / /_/ /   "of:00000000000000a1" / /_/ /\ \: {
      
   \____/_/|_/\____/___/   "basic"  
: {
                "driver" : "sona"
            }
Documentation: wiki.onosproject.org        },
Tutorials:      tutorials.onosproject.org 
Mailing lists"of: lists.onosproject.org     
Come help out! Find out how at: contribute.onosproject.org 

Hit '<tab>' for a list of available commands
and '[cmd] --help' for help on a specific command.
Hit '<ctrl-d>' or type 'system:shutdown' or 'logout' to shutdown ONOS.

onos> app activate org.onosproject.openstacknode
onos> 
 
mcpark@compute1:~$ sudo ovs-vsctl show
550f58e0-b328-4002-a3e4-54571585ae5c
    Manager "ptcp:6640"
    Bridge br-int
        Controller "tcp:192.168.56.107:6653"
        fail_mode: secure
        Port vxlan
            Interface vxlan
                type: vxlan
                options: {key=flow, remote_ip=flow}
        Port br-int
            Interface br-int

Note that OpenstackNode application is independent from SONA Application which means that you can activate the application only when you need initialization.

 

 

 

 

 

 

00000000000000a2" : {
            "basic" : {
                "driver" : "sona"
            }
        }
    }
}

 

 

2. Make sure the following ONOS applications are started successfully.

Code Block
ONOS_APPS=drivers,drivers.ovsdb,openflow-base,ovsdb-base,dhcp,openstacknode,openstackswitching,openstackrouting,openstackinterface

 

3. Push the network config file to ONOS.

Code Block
curl --user onos:rocks -X POST -H "Content-Type: application/json" http://onos-01:8181/onos/v1/network/configuration/ -d @network-cfg.json

 

NOT MERGED YET: 4. Check all your compute and gateway nodes are in COMPLETE state in ONOS CLI.

Code Block
onos> openstack-nodes
hostname=compute-01, type=COMPUTE, managementIp=45.55.25.244, dataIp=10.134.34.222, intBridge=of:00000000000000a1, routerBridge=Optional.empty init=INCOMPLETE
hostname=compute-02, type=COMPUTE, managementIp=192.241.229.42, dataIp=10.134.34.223, intBridge=of:00000000000000a2, routerBridge=Optional.empty init=COMPLETE
hostname=gateway-01, type=GATEWAY, managementIp=159.203.198.125, dataIp=10.134.33.208, intBridge=of:00000000000000a3, routerBridge=Optional[of:00000000000000b3] init=COMPLETE
hostname=gateway-02, type=GATEWAY, managementIp=159.203.198.131, dataIp=10.134.33.209, intBridge=of:00000000000000a4, routerBridge=Optional[of:00000000000000b4] init=COMPLETE
Total 4 nodes

 

It's done. Enjoy.

 

NOT MERGED YET: CLI Commands

CommandUsageDescription
openstack-nodesopenstack-nodesShows the list of compute and gateway nodes that registered to openstack node service
openstack-node-checkopenstack-node-check [hosthame]Shows the state of each node bootstrap steps
openstack-node-initopenstack-node-init [hostname]

Try to re-initialize a given node. It's no harm to re-initialize already in COMPLETE state.

...