SADIS Configuration

BBSim generates a sadis configuration starting from the Service configuration file.

For example if you consider this Service configuration:

# Contains a description of the services that needs to be created for each UNI and the corresponding tagging scheme

# ATT
workflow: att
services:
- name: hsia
  c_tag: 900
  c_tag_allocation: unique
  s_tag: 900
  s_tag_allocation: shared
  needs_eapol: true
  needs_dhcp: true
  tp_id: 64

The corresponding sadis configuration that you’ll need to use in ONOS is:

{
  "sadis": {
    "integration": {
      "cache": {
        "enabled": false,
        "maxsize": 50,
        "ttl": "PT0m"
      }
    },
    "entries": [
      {
        "id": "BBSIM_OLT_0",
        "hardwareIdentifier": "0a:0a:0a:0a:0a:00",
        "ipAddress": "0.0.0.0",
        "nasId": "BBSIM_OLT_0",
        "uplinkPort": 1048576
      },
      {
        "id": "BBSM00000001-1",
        "nasPortId": "BBSM00000001-1",
        "circuitId": "BBSM00000001-1",
        "remoteId": "BBSM00000001-1",
        "uniTagList": [
          {
            "ponCTag": 900,
            "ponSTag": 900,
            "technologyProfileId": 64,
            "upstreamBandwidthProfile": "User_Bandwidth1",
            "downstreamBandwidthProfile": "User_Bandwidth2",
            "isDhcpRequired": true,
            "serviceName": "hsia"
          }
        ]
      }
    ]
  },
  "bandwidthprofile": {
    "integration": {
      "cache": {
        "enabled": true,
        "maxsize": 40,
        "ttl": "PT1m"
      }
    },
    "entries": [
      {
        "id": "User_Bandwidth1",
        "air": 100000,
        "cbs": 10000,
        "cir": 30000,
        "ebs": 1000,
        "eir": 100000
      },
      {
        "id": "User_Bandwidth2",
        "air": 100000,
        "cbs": 5000,
        "cir": 100000,
        "ebs": 5000,
        "eir": 100000
      },
      {
        "id": "Default",
        "air": 100000,
        "cbs": 30,
        "cir": 600,
        "ebs": 30,
        "eir": 400
      }
    ]
  }
}

As you can imagine this file will get pretty big pretty quickly as soon as you scale the number of ONUs and/or Services in your setup. For that reason (and to avoid mistakes) we strongly suggest to configure ONOS to fetch informations from BBSim.

If you are using kind-voltha to deploy your setup, you can easily achieve that by:

CONFIG_SADIS=external voltha up

Or you can manually configure ONOS as explained below.

Using the BBSim Sadis server in ONOS

BBSim provides a simple server for testing with the ONOS Sadis app. The server listens on port 50074 by default and provides the endpoints subscribers/<id> and bandwidthprofiles/<id>.

To configure ONOS to use the BBSim Sadis server endpoints, the Sadis app must use be configured as follows (see examples/sadis-in-bbsim.json):

{
  "sadis": {
    "integration": {
      "url": "http://bbsim:50074/v2/subscribers/%s",
      "cache": {
        "enabled": false,
        "maxsize": 50,
        "ttl": "PT0m"
      }
    },
    "entries": [
      {
        "id": "BBSIM_OLT_0",
        "hardwareIdentifier": "0a:0a:0a:0a:0a:00",
        "ipAddress": "0.0.0.0",
        "nasId": "BBSIM_OLT_0",
        "uplinkPort": 1048576
      }
    ]
  },
  "bandwidthprofile": {
    "integration": {
      "url": "http://bbsim:50074/v2/bandwidthprofiles/%s",
      "cache": {
        "enabled": true,
        "maxsize": 40,
        "ttl": "PT1m"
      }
    }
  }
}

This base configuration may also be obtained directly from the BBSim Sadis server:

curl http://<BBSIM_IP>:50074/v2/cfg -o examples/sadis.json

It can then be pushed to the Sadis app using the following command:

curl -sSL --user karaf:karaf \
    -X POST \
    -H Content-Type:application/json \
    http://localhost:8181/onos/v1/network/configuration/apps/org.opencord.sadis \
    --data @examples/sadis-in-bbsim.json

You can verify the current Sadis configuration:

curl --user karaf:karaf http://localhost:8181/onos/v1/network/configuration/apps/org.opencord.sadis

In ONOS subscriber information can be queried using sadis <uni-id>.