How to configure the NFVO

This guide explains you how to configure the NFVO once the installation is completed. In general, after using the bootsrap procedure no changes described here are required unless you want to tune up your installation. In addition to this, you may need to modify also the configuration parameters of the Generic VNFM

NFVO properties overview

After the bootstrap procedure the NFVO's configuration file is located at:

/etc/openbaton/openbaton-nfvo.properties

This is a property file that is used to configure the Spring environment and the NFVO. Since the component is based on the Spring framework some parameters are inherited, for a deeper explanation on all the parameters meaning, please refer to the Spring documentation.

Keep in mind that whenever some of the parameters below referred are changed, you will need to restart the NFVO.

Modify NFVO General properties

IMPORTANT NOTES:

By default RabbitMQ is installed on the host of the NFVO. Be aware of the fact that if you want any of your additional external components to be executed on a different host, you will need RabbitMQ to be reachable also from the outside.

In general, also the NFVO can be executed on a different host changing the following properties of the /etc/openbaton/openbaton.properties file:

nfvo.rabbit.brokerIp = localhost

to:

nfvo.rabbit.brokerIp = <the rabbitmq broker ip>

Again, this property is very important to be set to the broker ip reachable from outside the machine were is running.

Additional rabbitMQ paramters required by the NFVO

nfvo.rabbit.management.port=15672
# Set the queues to be autodeleted after the shut down
nfvo.rabbitmq.autodelete=true
nfvo.rabbitmq.durable=true
nfvo.rabbitmq.exclusive=false

This property allows the user to delete the Network Service Records no matter in which status they are. Please note that in any case it is possible to remove a Network Service Record in NULL state.

# nfvo behaviour
nfvo.delete.all-status = true
# if true, after deleting a NSR, the nfvo will wait for "nfvo.delete.vnfr.wait.timeout" after that timeout the VMs and VNFR will be deleted anyway from the NFVO
nfvo.delete.vnfr.wait.timeout=20
nfvo.delete.vnfr.wait=true

nfvo.history.clear=false
nfvo.history.level=1
nfvo.history.max-entities=250

Initial admin password

The initial admin password is set via the configuration file property:

nfvo.security.admin.password=openbaton

Please bare in mind that if the property is modified via APIs/dashboard, the change won't be reflected in this file.

MONITORING: Open Baton allows the monitoring of the VMs on top of which the VNFs are executing via an external monitoring system. At the moment Zabbix is the monitoring system supported. If you want to enable it, you need first to install and configure Zabbix server following the guide at this page Zabbix server configuration. Once the Zabbix server is correctly configured and running, you only need to add the following property:

nfvo.monitoring.ip = the Zabbix server ip

Every time a new Network Service is instantiated, each VNFC (VM) is automatically registered to the Zabbix server.

This parameters allow you to modify the marketplace IP, in case you want to use a different catalogue for providing VNF Packages.

nfvo.marketplace.ip=marketplace.openbaton.org
nfvo.marketplace.port=8080

The following properties are related to the plugin mechanism used for loading VIM and Monitoring instances.

# Setting the number of plugin active consumers
nfvo.plugin.active.consumers=10
nfvo.plugin.install=true
# directory for the vim driver plugins
nfvo.plugin.installation-dir=./plugins
nfvo.plugin.log.path=./plugin-logs
nfvo.plugin.wait=true
# timeout for plugin operations
nfvo.plugin.timeout=300000

where the nfvo.plugin.installation-dir is the directory where all the jar files are located. Each of these plugins implement the VIM interface (see the VIM driver documentation), and will be automatically started by the NFVO after booting. While the nfvo.plugin.log.path defines the location where plugin log files will be available.

Modify this parameter in case you want to disable checking quota while deploying your network services. Be aware that the NFVO will request to the VIM its quota, so if quota is not properly set on the NFVI, you may have some issues with this. In case of any exceptions which come with some certain scenarios, you can also avoid failing on exceptions by changing the nfvo.quota.check.failOnException to false.

nfvo.quota.check=false
nfvo.quota.check.failOnException = true

Please consider also the property nfvo.vim.drivers.allowInfiniteQuota explained in the next section for the quota management during the allocate resources mechanism

Addition parameters for the NFVO and VNFM tuning

# Execute the start event sequentially and in order based on the VNFDependencies. This implies the NSD not to have cycling dependencies
nfvo.start.ordered=false
# It can be used for enabling/disabling an active check to the VIM authentication URL
nfvo.vim.active.check=true
# Allow infinite quotas during the GRANT_OPERATION
nfvo.vim.drivers.allowInfiniteQuota=false
nfvo.vim.delete.check.vnfr=true

Those properties are needed in case you want to tune a bit the performances of the NFVO. When the VNFMs send a message to the NFVO, there is a pool of threads able to process these messages in parallel. These parameters allow you to change the pool configuration. For more details please check the spring documentation regarding thread pool executor.

# Thread pool executor configuration
# for info see http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/scheduling/concurrent/ThreadPoolTaskExecutor.html
nfvo.vmanager.executor.corepoolsize = 20
nfvo.vmanager.executor.maxpoolsize = 30
nfvo.vmanager.executor.queuecapacity = 500
nfvo.vmanager.executor.keepalive = 30
# if true, deleting the nsd will remove also its vnfd
nfvo.vnfd.cascade.delete=false
# if true, deleting the vnfd will remove also its vnfpackage
vnfd.vnfp.cascade.delete=true

Enable SSL

By default SSL is disabled. Comment out those parameters in case you want to enable it.

#server.port=8443
#server.ssl.enabled=true
#server.ssl.key-store=/etc/openbaton/keystore.p12
#server.ssl.key-store-password=password
#server.ssl.keyAlias=tomcat
#server.ssl.keyStoreType=PKCS12
#nfvo.https=false

Modify logging levels

Feel free to modify that file for adding or removing specific functionalities. For instance, you can decide to change logging levels (TRACE, DEBUG, INFO, WARN, and ERROR) and mechanisms:

#########################################
########## Logging properties ###########
#########################################

logging.level.org.springframework=WARN
logging.level.org.hibernate=WARN
logging.level.org.apache=WARN

# Level for loggers on classes inside the root package "org.project.openbaton" (and its sub-packages)
logging.level.org.openbaton=INFO

# Direct log to a log file
logging.file=/var/log/openbaton.log

Modidy DB properties

Depending on the installation mode you selected, it may be that you have an in-memory database. In order to reconfigure the NFVO to use a persistent database, like MySQL, you need to change the properties as shown below:

#########################################
############# DB properties #############
#########################################

spring.datasource.username=admin
spring.datasource.password=changeme

# JDBC configurations' values for HSQL:
#       jdbc:hsqldb:file:/tmp/openbaton/openbaton.hsdb
#       org.hsqldb.jdbc.JDBCDriver
#       org.hibernate.dialect.HSQLDialect
# JDBC configurations' values for MYSQL:
#       jdbc:mysql://localhost:3306/openbaton
#       org.mariadb.jdbc.Driver
#       org.hibernate.dialect.MySQLDialect
#
# Active configurations by default MySQL:
spring.datasource.url=jdbc:mysql://localhost:3306/openbaton
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect
spring.jpa.show-sql=false
# ddl-auto available values: create-drop, update
spring.jpa.hibernate.ddl-auto=update

# MYSQL configuration (enable it in order to avoid timeout exceptions)
#spring.datasource.validationQuery=SELECT 1
#spring.datasource.testOnBorrow=true

Where: spring.datasource.username and spring.datasource.password need to be adapted to the mysql username and password. spring.jpa.hibernate.ddl-auto has to be set to update if you want the NFVO not to drop all the tables after being shut down and to make it reuse the same tables after restarting.

For more details please see the Spring Documentation regarding the configuration parameters.

Modify RabbitMQ parameters

These are additional parameters about the configuration of Rabbit MQ:

#########################################
############## RabbitMQ #################
#########################################

# Comma-separated list of addresses to which the client should connect to.
#spring.rabbitmq.addresses=${nfvo.rabbit.brokerIp}
# Create an AmqpAdmin bean.
spring.rabbitmq.dynamic=true
# RabbitMQ host.
spring.rabbitmq.host=${nfvo.rabbit.brokerIp}
# Acknowledge mode of container.
#spring.rabbitmq.listener.acknowledge-mode=
# Start the container automatically on startup.
#spring.rabbitmq.listener.auto-startup=true
# Minimum number of consumers.
spring.rabbitmq.listener.concurrency=5
# Maximum number of consumers.
spring.rabbitmq.listener.max-concurrency=30
# Number of messages to be handled in a single request. It should be greater than or equal to the transaction size (if used).
#spring.rabbitmq.listener.prefetch=
# Number of messages to be processed in a transaction. For best results it should be less than or equal to the prefetch count.
#spring.rabbitmq.listener.transaction-size=
# Login user to authenticate to the broker.
spring.rabbitmq.username=admin
# Login to authenticate against the broker.
spring.rabbitmq.password=openbaton
# RabbitMQ managementPort.
spring.rabbitmq.port=5672
# Requested heartbeat timeout, in seconds; zero for none.
spring.rabbitmq.requested-heartbeat=60
# Enable SSL support.
#spring.rabbitmq.ssl.enabled=false
# Path to the key store that holds the SSL certificate.
#spring.rabbitmq.ssl.key-store=
# Password used to access the key store.
#spring.rabbitmq.ssl.key-store-password=
# Trust store that holds SSL certificates.
#spring.rabbitmq.ssl.trust-store=
# Password used to access the trust store.
#spring.rabbitmq.ssl.trust-store-password=
# Virtual host to use when connecting to the broker.
#spring.rabbitmq.virtual-host=