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.

Prerequisites

Minimum System Requirements Recommended System RequirementsOS Requirements

CPU: 2 Cores

RAM: 2 GB

Storage: 16 GB

CPU: 8 Cores

RAM: 8 GB

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 https://nexus.opendaylight.org/content/repositories/opendaylight.release/org/opendaylight/integration/opendaylight/0.12.1/opendaylight-0.12.1.zip
  2. Unpack the archive by running the following command:

     # unzip opendaylight-0.12.1.zip
  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:

    opendaylight-user@root>logout
  9. Ensure that ODL listens to OnApp on 8181 and 6640 ports:

    root@OpenDaylight-Magnesium:~# netstat -lnp | grep java
    tcp        0      0 127.0.0.1:2550          0.0.0.0:*               LISTEN      2054/java
    tcp        0      0 127.0.0.1:44440         0.0.0.0:*               LISTEN      2054/java
    tcp        0      0 0.0.0.0:8185            0.0.0.0:*               LISTEN      2054/java
    tcp        0      0 0.0.0.0:44444           0.0.0.0:*               LISTEN      2054/java
    tcp        0      0 0.0.0.0:8101            0.0.0.0:*               LISTEN      2054/java
    tcp        0      0 127.0.0.1:1099          0.0.0.0:*               LISTEN      2054/java
    tcp        0      0 0.0.0.0:36908           0.0.0.0:*               LISTEN      2054/java
    tcp        0      0 0.0.0.0:6640            0.0.0.0:*               LISTEN      2054/java
    tcp        0      0 0.0.0.0:8181            0.0.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
[Unit]
Description=OpenDayLight Controller
After=network.target
[Service]
Type=forking
User=root
ExecStart=/etc/sdn/bin/start
Restart=on-abort
[Install]
WantedBy=multi-user.target

# 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
    {
    "name":"admin",
    "description":"admin account",
    "enabled":"1",
    "email":"",
    "password":"newpass"
    }
    
    
  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"}

 Tweaks


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