Have questions? Stuck? Please check our FAQ for some common questions and answers.

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 6 Next »

This section describes how to use the network configuration service to add network elements and links into ONOS’ network view. 

Although it is confusingly named, the network configuration service doesn't have much anything to do with configuring ONOS or the network devices themselves. Rather, it is a way of providing topology and inventory information directly to ONOS. This can supplement or completely replace dynamic device and topology discovery. In many cases, such as data center or enterprise networks, the core network devices and topology may be determined by the organization and stored in an inventory database (for example.) The network configuration service makes it possible to write a program that reads the device and topology inventory from a site-specific database and then provides it directly to ONOS, without having to rely on dynamic device and topology discovery.

Information on configuring ONOS itself (rather than specifying a topology to ONOS), as well as using ONOS to configure network devices, can be found in other sections of this guide.

 

Overview

The network configuration service enables applications and operators to configure the network and ONOS’ network view using a uniform syntax, currently JSON. Examples include:

  • Device and device port types and names
  • Device location, owner, hardware and software versions
  • Whether components are allowed or denied inclusion in the network model

This service doesn’t limit configuration to the network elements that ONOS has knowledge of - configurations can also refer to yet-discovered elements, or those that cannot be discovered by conventional means.

 

Syntax

subject key describes the category of network element, e.g. links, devices, hosts, etc. Each network element is associated with a unique identifier (a subject) and one or more attributes, associated with some value, grouped into configs. The configs themselves are classified by config keys.

The JSON file used with the service then takes on the following format:

{
    subject key : {                   # element category, e.g. "devices", "links", etc.
        subject : {                   # unique string, e.g. a device ID
            config key 1 : {          # config class of config, e.g. "basic"
                attr1 : value1,       # attribute : value pairs associated with a config
                attr2 : value2,
                ...
            },
            ...
        },
          ...
    },
    ...
}

Sample configuration files may be found in ${ONOS_ROOT}/tools/test/configs/ .

 

Loading Network Configurations

 

REST API

The NetworkConfigWebResource implements the REST calls for the network configuration subsystem. Its functionalities will eventually replace that of ConfigWebResource.

The following example uses the REST API to upload a configuration file:

 

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

 

The above assumes a running instance at 192.168.56.111, and a configuration file at /tmp/cfg.json. These should be replaced with appropriate values.

Likewise, the user:password combination might differ with your setup; Other common values are karaf:karaf and onos:onos.

onos-netcfg shell script

There is a shell script that wraps the REST API to provide a more convenient mechanism to upload configuration from the command line (i.e. from outside ONOS).

For example, the same configuration above can be uploaded using:

onos-netcfg 192.168.56.111 /tmp/cfg.json

The script also accepts a third argument that allows you to upload smaller chunks of config identified by subject_key/subject/config_key:

onos-netcfg $OC1 /tmp/basic.json /devices/of:0000000000000001/basic

Here the /tmp/basic.json script would just contain the payload of the basic config key, for example:

{
   "driver" : "softrouter"
}

 

 

Network Configuration Loader

The NetworkConfigLoader reads JSON files from a known location and attempts to load them as network configurations at system startup.

Currently, a file named network-cfg.json is picked up from ${ONOS_ROOT}/tools/package/config/ and placed in ${KARAF_ROOT}../config/ at deployment. The filename and paths are currently fixed. When the remote instance boots, its network configuration loader runtime will read this file.

The Network Configuration Loader is implemented as a listener for Network Configuration events (NetworkConfigEvents). It attempts to use the known Configs in order to generate or update entities in the network model once it is notified that the Configs are available.

  • No labels