Install OpenDayLight Controller

This document provides information on installing and configuring OpenDayLight (ODL) Controller to work with OnApp Software-defined networking. The provided procedure was tested and verified with OpenDaylight 0.12.1 Magnesium version.


Minimum System Requirements Recommended System RequirementsOS Requirements

CPU: 2 Cores


Storage: 16 GB

CPU: 8 Cores


Storage: 64 GB

CentOS 7.x

Java Virtual Machine 11

Install OpenDaylight Magnesium

To install OpenDaylight Magnesium, follow the next procedure:

  1. Switch to the root home directory and download an archive with ODL:

    # wget
  2. Unpack the archive by running the following command:

     # unzip
  3. Install JVM by running the following command:

    # yum install java-11
  4. Set JAVA_HOME by running the next command:

    # export JAVA_HOME=/usr/lib/jvm/jre-11
  5. Start controller and install the required tools with the following command:

    # cd /root/opendaylight-0.12.1
    # ./bin/karaf
  6. After the ODL console is opened, perform the refresh of repositories with the next command:

    opendaylight-user@root> feature:repo-refresh
  7. Install feature needed by OpenDaylight:

    opendaylight-user@root> feature:install odl-ovsdb-library odl-restconf-all odl-ovsdb-southbound-api odl-ovsdb-southbound-impl odl-ovsdb-southbound-impl-rest
  8. After the features are installed, log out from the karaf:

  9. Ensure that ODL listens to OnApp on 8181 and 6640 ports:

    root@OpenDaylight-Magnesium:~# netstat -lnp | grep java
    tcp        0      0*               LISTEN      2054/java
    tcp        0      0*               LISTEN      2054/java
    tcp        0      0  *               LISTEN      2054/java
    tcp        0      0 *               LISTEN      2054/java
    tcp        0      0  *               LISTEN      2054/java
    tcp        0      0*               LISTEN      2054/java
    tcp        0      0 *               LISTEN      2054/java
    tcp        0      0  *               LISTEN      2054/java
    tcp        0      0  *               LISTEN      2054/java

 Create a Service to Be Run at Startup

To create a service to be run at startup, use the following command:

#  ln -s /root/opendaylight-0.12.1 /etc/sdn
# touch /etc/systemd/system/opendaylight.service

# vi /etc/systemd/system/opendaylight.service
Description=OpenDayLight Controller

# systemctl daemon-reload
# systemctl enable opendaylight 
# systemctl start opendaylight

Don’t forget to set correct credentials and port (8181) at https://onapp--cp--ip/settings/sdn/managers/1/edit

 Password Change

The password for the admin account can be changed according to this example:

  1. Create a file with a password as a parameter:

    # cat user.json
    "description":"admin account",
  2. Run API call by the command:

    # curl -u admin:admin -X PUT -H "Content-Type: application/json" --data-binary @./user.json http://localhost:8181/auth/v1/users/admin@sdn
    {"userid":"admin@sdn","name":"admin","description":"admin account","enabled":1,"email":"","password":"**********","salt":"**********","domainid":"sdn"}


To prevent intensive logging, you need to decrease log level.
It can be done in config /etc/sdn/etc/org.ops4j.pax.logging.cfg , by changing the value log4j2.rootLogger.level from INFO to ERROR.

# grep log4j2.rootLogger.level /etc/sdn/etc/org.ops4j.pax.logging.cfg
log4j2.rootLogger.level = INFO

ovsdb-rpc-task-timeout and json-rpc-decoder-max-frame-length parameters can be changed in /etc/sdn/etc/org.opendaylight.ovsdb.library.cfg
Default values are as follows:

# grep -E 'ovsdb-rpc-task-timeout|json-rpc-decoder-max-frame-length' /etc/sdn/etc/org.opendaylight.ovsdb.library.cfg
json-rpc-decoder-max-frame-length = 100000
ovsdb-rpc-task-timeout = 1000