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.14.0 Silicon version.

Please note that the stable version for OnApp is OpenDaylight 0.14.0.


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 Silicon

In case of the Log4j 2 vulnerability (CVE-2021-44228), please refer to the CVE Fixes page.

To install OpenDaylight Silicon, 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.14.0
    # ./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-Silicon:~# 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.14.0 /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