VOL-2227: Update nni in compose setup and update quickstart doc
- example netcfg json uses new nni number
- stop using nonsense bandwidth profile settings
- quickstart now only sets up needed repositories to build containers
- use ppa to install golang, pinned to a specific version
- use voltctl instead of cli container
- improved output capture examples and bbsim setup example
Change-Id: I94718bf30dfe8e7605bd05f91e1a8dae4517b395
diff --git a/compose/network-cfg-bbsim.json b/compose/network-cfg-bbsim.json
index a839211..5507aa3 100644
--- a/compose/network-cfg-bbsim.json
+++ b/compose/network-cfg-bbsim.json
@@ -2,7 +2,7 @@
"devices": {
"of:00000000ac110001": {
"accessDevice": {
- "uplink": "65536",
+ "uplink": "1048576",
"vlan": "1"
},
"basic": {
@@ -41,11 +41,11 @@
},
"entries": [
{
- "id": "BBSIMOLT000",
- "uplinkPort": 65536,
+ "id": "BBSIM_OLT_0",
+ "uplinkPort": 1048576,
"hardwareIdentifier": "00:00:ac:11:00:01",
"ipAddress": "172.17.0.1",
- "nasId": "BBSIMOLT000"
+ "nasId": "BBSIM_OLT_0"
},
{
"id": "BBSM00000001-1",
@@ -53,7 +53,7 @@
"sTag": 900,
"nasPortId": "BBSM00000001-1",
"circuitId": "BBSM00000001-1",
- "remoteId": "BBSIMOLT000",
+ "remoteId": "BBSIM_OLT_0",
"technologyProfileId": 64,
"upstreamBandwidthProfile": "Default",
"downstreamBandwidthProfile": "Default"
@@ -64,7 +64,7 @@
"sTag": 900,
"nasPortId": "BBSM00000001-2",
"circuitId": "BBSM00000001-2",
- "remoteId": "BBSIMOLT000",
+ "remoteId": "BBSIM_OLT_0",
"technologyProfileId": 64,
"upstreamBandwidthProfile": "Default",
"downstreamBandwidthProfile": "Default"
@@ -75,7 +75,7 @@
"sTag": 900,
"nasPortId": "BBSM00000001-3",
"circuitId": "BBSM00000001-3",
- "remoteId": "BBSIMOLT000",
+ "remoteId": "BBSIM_OLT_0",
"technologyProfileId": 64,
"upstreamBandwidthProfile": "Default",
"downstreamBandwidthProfile": "Default"
@@ -86,7 +86,7 @@
"sTag": 900,
"nasPortId": "BBSM00000001-4",
"circuitId": "BBSM00000001-4",
- "remoteId": "BBSIMOLT000",
+ "remoteId": "BBSIM_OLT_0",
"technologyProfileId": 64,
"upstreamBandwidthProfile": "Default",
"downstreamBandwidthProfile": "Default"
@@ -104,11 +104,11 @@
"entries": [
{
"id": "Default",
- "cir": 1000000,
- "cbs": 1001,
- "eir": 1002,
- "ebs": 1003,
- "air": 1004
+ "air": 10000000,
+ "cbs": 5000,
+ "cir": 750000,
+ "ebs": 5000,
+ "eir": 1000000
}
]
}
diff --git a/compose/network-cfg.json b/compose/network-cfg.json
index 038c4d7..591abf1 100644
--- a/compose/network-cfg.json
+++ b/compose/network-cfg.json
@@ -2,7 +2,7 @@
"devices": {
"of:000000000a4001d0": {
"accessDevice": {
- "uplink": "65536",
+ "uplink": "1048576",
"vlan": "1"
},
"basic": {
@@ -42,7 +42,7 @@
"entries": [
{
"id": "EC1829000885",
- "uplinkPort": 65536,
+ "uplinkPort": 1048576,
"hardwareIdentifier": "3c:2c:99:f7:c6:82",
"ipAddress": "10.64.1.207",
"nasId": "ATLEDGEVOLT1"
@@ -115,11 +115,11 @@
"entries": [
{
"id": "Default",
- "cir": 1000000,
- "cbs": 1001,
- "eir": 1002,
- "ebs": 1003,
- "air": 1004
+ "air": 10000000,
+ "cbs": 5000,
+ "cir": 750000,
+ "ebs": 5000,
+ "eir": 1000000
}
]
}
diff --git a/compose/system-test-bbsim.yml b/compose/system-test-bbsim.yml
index 7739b92..37abd5e 100644
--- a/compose/system-test-bbsim.yml
+++ b/compose/system-test-bbsim.yml
@@ -181,15 +181,15 @@
bbsim:
- image: "voltha/voltha-bbsim:latest"
+ image: "${DOCKER_REGISTRY}${DOCKER_REPOSITORY}bbsim:${DOCKER_TAG}"
privileged: true
command: [
"./bbsim",
- "-m",
- "both",
- "-i",
+ "-auth",
+ "-dhcp",
+ "-pon",
"1",
- "-n",
+ "-onu",
"1"
]
ports:
diff --git a/quickstart.md b/quickstart.md
index 1eda8b4..72be64a 100644
--- a/quickstart.md
+++ b/quickstart.md
@@ -1,6 +1,6 @@
# Quickstart VOLTHA 2.x Build Setup.
-These notes describe the checking out and building from the multiple gerrit repositories needed to run a VOLTHA 2.x environment with docker-compose. Starting point is a basic Ubuntu 16.04 installation with internet access.
+These notes describe the checking out and building from the multiple gerrit repositories needed to run a VOLTHA 2.x environment with docker-compose. Starting point is a basic Ubuntu 16.04 or 18.04 installation with internet access.
@@ -14,36 +14,48 @@
sudo apt dist-upgrade
```
-Add docker-ce apt repo and install docker and build tools
+Add `docker-ce` apt repo and install docker and build tools
```sh
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt update
-sudo apt install build-essential docker-ce docker-compose virtualenv git python-setuptools python-dev libpcap-dev libffi-dev libssl-dev tox
+sudo apt install build-essential docker-ce git
```
-Snap install **golang 1.12**. Inform apparmor (if being used) of the change. The apparmor_parser step may need to be run again after reboot. This appears to be a snapd bug.
+Install current `docker-compose`. Older versions may cause docker build problems: https://github.com/docker/docker-credential-helpers/issues/103
```sh
-sudo snap install --classic go
-snap list
-sudo apparmor_parser -r /var/lib/snapd/apparmor/profiles/snap*
+sudo curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
+sudo chmod 755 /usr/local/bin/docker-compose
```
-Setup a local Golang environment, verifying the golang-1.12 binaries are in your path. Also add your local GOPATH's bin folder to PATH.
-Add to your ~/.profile to persist.
+Install the Golang ppa apt repository and install **golang 1.12**.
+```sh
+sudo add-apt-repository ppa:longsleep/golang-backports
+sudo apt update
+sudo apt install golang-1.12
+```
+
+
+### Setup environment
+
+Setup a local Golang and docker-compose environment, verifying the golang-1.12 binaries are in your path. Also add your local GOPATH's bin folder to PATH.
+Add to your `~/.profile` to persist.
```sh
-go version
+mkdir $HOME/source
mkdir $HOME/go
+export GO111MODULE=on
export GOPATH=$HOME/go
-export PATH=$PATH:$GOPATH/bin
+export DOCKER_TAG=latest
+export PATH=$PATH:/usr/lib/go-1.12/bin:$GOPATH/bin
+go version
```
-Allow non-root user docker system access
+Allow your current non-root user `$USER` docker system access
```sh
sudo usermod -a -G docker $USER
```
-Logout/Login to assume new group membership needed for running docker as non-root user.
+Logout/Login to assume new group membership needed for running docker as non-root user and verify any environment variables set in `~/.profile`.
@@ -53,109 +65,42 @@
-### VOLTHA Protos Library
+### VOLTHA 2.x Core Containers
-Library containing all VOLTHA gRPC Protobuf definitions and the build system to produce needed stubs in Python and Golang. Stable versions of this package is available via python's pip or golang's `dep` or `go get`. If you need to **edit protos and test those changes locally** you will need to refer to the voltha-protos README and export needed environment variables to include the local build.
-
-https://github.com/opencord/voltha-protos/blob/master/README.md
-
-After following notes above verify local artifacts are generated. After building the python and golang voltha-protos dev environment, set and environment variable to indicate the local voltha-protos for golang and python if editing/testing protos changes is needed:
-```sh
-cd ~/source/voltha-protos/
-ls dist/ #python pip tarball output
-ls go/ #golang stubs
-```
-
-Set an environment variable for below Golang and Python builds to inform the Makefile to copy files into the local vendor folder or to use the local pip tar.gz. Useful for development testing.
-```sh
-export LOCAL_PROTOS=true
-```
-Skip exporting the `LOCAL_*` variable step if you are not changing the library.
-
-
-
-### PyVoltha PIP Library
-
-Python library of common core functions. Stable versions of this package is available via python's pip. If you need to **edit this library and test those changes locally** you will need to export needed environment variables to include the local build..
-
+Checkout needed source from gerrit. Build the `voltha-rw-core` and `voltha-ofagent` docker images.
```sh
cd ~/source/
-git clone https://gerrit.opencord.org/pyvoltha.git
+git clone https://gerrit.opencord.org/voltha-go.git
+cd ~/source/voltha-go
+make build
```
-
-Generate the local tar.gz that is the dev version of pyvoltha:
-```sh
-cd ~/source/pyvoltha/
-make dist
-ls dist/ #python pip tarball output
-```
-
-Set an environment variable for below Python builds to inform the Makefile to use the local pip tar.gz. Useful for development testing.
-```sh
-export LOCAL_PYVOLTHA=true
-```
-Skip exporting the `LOCAL_*` variable step if you are not changing the library.
-
-
-
-### VOLTHA 2.x Golang Core Containers
-
For more details regarding building and debugging the 2.x core outside of Docker refer to voltha-go BUILD.md.
https://github.com/opencord/voltha-go/blob/master/BUILD.md
-The steps below generate the needed docker images and the Docker build system sets up the Golang environment within a container image. Build Golang docker images, `rw_core` being whats most needed for now.
-This should work without setting up a golang environment. This also builds needed ofagent and cli docker images:
+
+### VOLTHA 2.x OpenOLT Container
+
+Checkout needed source from gerrit. Build the `voltha-openolt-adapter` docker image.
```sh
-export DOCKER_TAG=latest
-cd ~/source/voltha-go
-make build
-```
-
-#### VOLTHA 2.x Golang Adapter Library
-
-Included in the VOLTHA core build for containers is building libraries used by Golang adapters for interfacing into the core. Stable versions of these libraries are available via golang's `dep` or `go get`.
-
-If you need to **edit voltha-go libraries and test those changes locally** you will need to refer to needed environment variables to include the local build.
-
-Set an environment variable for other Golang builds to inform the Makefile to copy files into the local vendor folder. Useful for development testing.
-```sh
-export LOCAL_VOLTHAGO=true
-```
-Skip exporting the `LOCAL_*` variable step if you are not changing the library.
-
-
-
-### VOLTHA 2.x OpenOLT Container (Golang and Python)
-
-Checkout and link openolt source into GOPATH for openolt development. This is similar to voltha-go above.
-
-For more details regarding building and debugging the openolt adapter container refer to voltha-openolt-adapter README.
-
-https://github.com/opencord/voltha-openolt-adapter/blob/master/README.md
-
-Build the openolt container. Above LOCAL environment variables can be used to include local library builds of PyVoltha, voltha-go, and voltha-protos. This will copy the pyvoltha tar.gz and voltha-protos from their respective build tree and include in the openolt build tree.
-
-Golang and Python Openolt
-```sh
-export DOCKER_TAG=latest
+cd ~/source/
+git clone https://gerrit.opencord.org/voltha-openolt-adapter.git
cd ~/source/voltha-openolt-adapter/
make build
```
+For more details regarding building and debugging the openolt adapter container refer to voltha-openolt-adapter README.md.
+
+https://github.com/opencord/voltha-openolt-adapter/blob/master/README.md
-### VOLTHA 2.x OpenONU Container (Python)
+### VOLTHA 2.x OpenONU Container
+Checkout needed source from gerrit. Build the `voltha-openonu-adapter` docker image.
```sh
cd ~/source/
git clone https://gerrit.opencord.org/voltha-openonu-adapter.git
-```
-
-Build the openonu container. Above LOCAL environment variables can be used to include local builds of PyVoltha and voltha-protos. This will copy the pyvoltha tar.gz and voltha-protos from their respective build tree and include in the openonu build tree.
-```sh
-export DOCKER_TAG=latest
cd ~/source/voltha-openonu-adapter/
make build
```
@@ -164,156 +109,350 @@
### ONOS Container with VOLTHA Compatible Apps
-By default the standard onos docker image does not contain nor start any apps needed by voltha. If you use the standard image then you need to use the onos restful api to load needed apps. For development convienence there is an onos docker image build that adds in the current compatible voltha apps.
+By default the standard ONOS docker image does not contain nor start any apps needed by VOLTHA. If you use the standard image then you need to use the ONOS restful API to load needed apps separately.
+
+For development convenience there is an ONOS docker image build that adds in the current compatible VOLTHA apps. Checkout and build the ONOS image with added ONOS apps (olt, aaa, sadis, dhcpl2relay, and kafka).
+
```sh
cd ~/source/
git clone https://gerrit.opencord.org/voltha-onos.git
-```
-
-Build the onos image with added onos apps (olt, aaa, sadis, dhcpl2relay).
-```sh
-export DOCKER_TAG=latest
cd ~/source/voltha-onos
make build
```
+### Install voltctl VOLTHA Command Line Management Tool
+
+A working Golang build environment is required as `voltctl` is build and run directly from the host. Build the `voltctl` executable and install in ~/go/bin which should already be in your $PATH
+```sh
+cd ~/source/
+git clone https://gerrit.opencord.org/voltctl.git
+cd ~/source/voltctl
+make build
+make install
+```
+
+Configure the `voltctl` environment configuration files `~/.volt/config` and `~/.volt/command_options` to point at the local `voltha-rw-core` instance that will be running.
+```sh
+mkdir ~/.volt/
+
+cat << EOF > ~/.volt/config
+apiVersion: v2
+server: localhost:50057
+tls:
+ useTls: false
+ caCert: ""
+ cert: ""
+ key: ""
+ verify: ""
+grpc:
+ timeout: 10s
+EOF
+
+cat << EOF > ~/.volt/command_options
+device-list:
+ format: table{{.Id}}\t{{.Type}}\t{{.Root}}\t{{.ParentId}}\t{{.SerialNumber}}\t{{.Address}}\t{{.AdminState}}\t{{.OperStatus}}\t{{.ConnectStatus}}\t{{.Reason}}
+ order: -Root,SerialNumber
+
+device-ports:
+ order: PortNo
+
+device-flows:
+ order: Priority,EthType
+
+logical-device-list:
+ order: RootDeviceId,DataPathId
+
+logical-device-ports:
+ order: Id
+
+logical-device-flows:
+ order: Priority,EthType
+
+adapter-list:
+ order: Id
+
+component-list:
+ order: Component,Name,Id
+
+loglevel-get:
+ order: ComponentName,PackageName,Level
+
+loglevel-list:
+ order: ComponentName,PackageName,Level
+EOF
+
+```
+
+
+
+### Install VOLTHA bbsim olt/onu Simulator (Optional)
+
+If you do not have physical OLT/ONU hardware you can build a simulator.
+```sh
+cd ~/source/
+git clone https://gerrit.opencord.org/bbsim.git
+cd ~/source/bbsim
+make docker-build
+```
+
+
+
+
+
## Test
-Run the combined compose file that starts the core, its dependent systems and the openonu and openolt adapters. Export an environment variable of your non-localhost ip address needed for inter-container communication. For convenience you can also export `DOCKER_TAG` to signify the docker images tag you would like to use. Though for typical development you may have to edit `compose/system-test.yml` to override the specific docker image `DOCKER_TAG` needed.
+### Startup
+
+Run the combined docker-compose yaml configuration file that starts the core, its dependent systems (etcd, zookeeper, and kafka) and the openonu and openolt adapters. Export the `DOCKER_HOST_IP` environment variable to your non-localhost IP address needed for inter-container communication. This can be the IP assigned to `eth0` or the `docker0` bridge (typically 172.17.0.1)
+
+For convenience you can also export `DOCKER_TAG` to signify the docker images tag you would like to use. Though for typical development you may have to edit `compose/system-test.yml` to override the specific docker image `DOCKER_TAG` needed. The `DOCKER_REGISTRY` and `DOCKER_REPOSITORY` variables are not needed unless you wish to override the docker image path. See the `system-test.yml` file for details on the docker image path creation string.
```sh
-export DOCKER_HOST_IP=##YOUR_LOCAL_IP##
+export DOCKER_HOST_IP=172.17.0.1
export DOCKER_TAG=latest
cd ~/source/voltha-go
docker-compose -f compose/system-test.yml up -d
+
+
+WARNING: The DOCKER_REGISTRY variable is not set. Defaulting to a blank string.
+WARNING: The DOCKER_REPOSITORY variable is not set. Defaulting to a blank string.
+Creating network "compose_default" with driver "bridge"
+Pulling zookeeper (wurstmeister/zookeeper:latest)...
+latest: Pulling from wurstmeister/zookeeper
+a3ed95caeb02: Pull complete
+ef38b711a50f: Pull complete
+e057c74597c7: Pull complete
+666c214f6385: Pull complete
+c3d6a96f1ffc: Pull complete
+3fe26a83e0ca: Pull complete
+3d3a7dd3a3b1: Pull complete
+f8cc938abe5f: Pull complete
+9978b75f7a58: Pull complete
+4d4dbcc8f8cc: Pull complete
+8b130a9baa49: Pull complete
+6b9611650a73: Pull complete
+5df5aac51927: Pull complete
+76eea4448d9b: Pull complete
+8b66990876c6: Pull complete
+f0dd38204b6f: Pull complete
+Digest: sha256:7a7fd44a72104bfbd24a77844bad5fabc86485b036f988ea927d1780782a6680
+Status: Downloaded newer image for wurstmeister/zookeeper:latest
+Pulling kafka (wurstmeister/kafka:2.11-2.0.1)...
+2.11-2.0.1: Pulling from wurstmeister/kafka
+4fe2ade4980c: Pull complete
+6fc58a8d4ae4: Pull complete
+819f4a45746c: Pull complete
+a3133bc2e3e5: Pull complete
+72f0dc369677: Pull complete
+1e1130fc942d: Pull complete
+Digest: sha256:20d08a6849383b124bccbe58bc9c48ec202eefb373d05e0a11e186459b84f2a0
+Status: Downloaded newer image for wurstmeister/kafka:2.11-2.0.1
+Pulling etcd (quay.io/coreos/etcd:v3.2.9)...
+v3.2.9: Pulling from coreos/etcd
+88286f41530e: Pull complete
+2fa4a2c3ffb5: Pull complete
+539b8e6ccce1: Pull complete
+79e70e608afa: Pull complete
+f1bf8f503bff: Pull complete
+c4abfc27d146: Pull complete
+Digest: sha256:1913dd980d55490fa50640bbef0f4540d124e5c66d6db271b0b4456e9370a272
+Status: Downloaded newer image for quay.io/coreos/etcd:v3.2.9
+Creating compose_kafka_1 ... done
+Creating compose_cli_1 ... done
+Creating compose_adapter_openolt_1 ... done
+Creating compose_rw_core_1 ... done
+Creating compose_adapter_openonu_1 ... done
+Creating compose_etcd_1 ... done
+Creating compose_onos_1 ... done
+Creating compose_ofagent_1 ... done
+Creating compose_zookeeper_1 ... done
```
+
+
Verify containers have continuous uptime and no restarts
+
```sh
docker-compose -f compose/system-test.yml ps
+
+
+ Name Command State Ports
+---------------------------------------------------------------------------------------------------------------------------------------------------------------
+compose_adapter_openolt_1 /app/openolt --kafka_adapt ... Up 0.0.0.0:50062->50062/tcp
+compose_adapter_openonu_1 /voltha/adapters/brcm_open ... Up
+compose_cli_1 /voltha/python/cli/setup.s ... Up 0.0.0.0:5022->22/tcp
+compose_etcd_1 etcd --name=etcd0 --advert ... Up 0.0.0.0:2379->2379/tcp, 0.0.0.0:32773->2380/tcp, 0.0.0.0:32772->4001/tcp
+compose_kafka_1 start-kafka.sh Up 0.0.0.0:9092->9092/tcp
+compose_ofagent_1 /ofagent/ofagent/main.py - ... Up
+compose_onos_1 ./bin/onos-service server Up 6640/tcp, 0.0.0.0:6653->6653/tcp, 0.0.0.0:8101->8101/tcp, 0.0.0.0:8181->8181/tcp, 9876/tcp
+compose_rw_core_1 /app/rw_core -kv_store_typ ... Up 0.0.0.0:50057->50057/tcp
+compose_zookeeper_1 /bin/sh -c /usr/sbin/sshd ... Up 0.0.0.0:2181->2181/tcp, 22/tcp, 2888/tcp, 3888/tcp
+```
+
+```sh
docker ps
+
+
+CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
+829c3cb4c6c5 voltha-onos:latest "./bin/onos-service …" 22 seconds ago Up 16 seconds 0.0.0.0:6653->6653/tcp, 0.0.0.0:8101->8101/tcp, 6640/tcp, 9876/tcp, 0.0.0.0:8181->8181/tcp compose_onos_1
+e6f2db007bea voltha-openonu-adapter:latest "/voltha/adapters/br…" 22 seconds ago Up 18 seconds compose_adapter_openonu_1
+11be84da6d23 voltha-rw-core:latest "/app/rw_core -kv_st…" 22 seconds ago Up 12 seconds 0.0.0.0:50057->50057/tcp compose_rw_core_1
+e497985c70ac quay.io/coreos/etcd:v3.2.9 "etcd --name=etcd0 -…" 22 seconds ago Up 13 seconds 0.0.0.0:2379->2379/tcp, 0.0.0.0:32773->2380/tcp, 0.0.0.0:32772->4001/tcp compose_etcd_1
+48fc5680e947 voltha-ofagent:latest "/ofagent/ofagent/ma…" 22 seconds ago Up 18 seconds compose_ofagent_1
+1ba37663929a voltha-cli:latest "/voltha/python/cli/…" 22 seconds ago Up 17 seconds 0.0.0.0:5022->22/tcp compose_cli_1
+34d7ea255778 wurstmeister/kafka:2.11-2.0.1 "start-kafka.sh" 22 seconds ago Up 19 seconds 0.0.0.0:9092->9092/tcp compose_kafka_1
+c92d2e52ad96 wurstmeister/zookeeper:latest "/bin/sh -c '/usr/sb…" 22 seconds ago Up 18 seconds 22/tcp, 2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp compose_zookeeper_1
+69d3409fdf10 voltha-openolt-adapter:latest "/app/openolt --kafk…" 22 seconds ago Up 14 seconds 0.0.0.0:50062->50062/tcp
```
-Login to cli and verify. Username is voltha, Password is admin
+
+
+### Verify Cluster Communication
+
+Use `voltctl` commands to verify core and adapters are running.
+
```sh
-ssh -p 5022 voltha@localhost
+voltctl adapter list
+ID VENDOR VERSION
+brcm_openomci_onu Voltha project 2.0
+openolt VOLTHA OpenOLT 2.2.3-dev
```
-Run voltha "devices" command to verify communication to etcd
-"table empty" is good
+List "devices" to verify no devices exist.
```sh
-(voltha) devices
-Devices:
-table empty
+voltctl device list
+ID TYPE ROOT PARENTID SERIALNUMBER ADDRESS ADMINSTATE OPERSTATUS CONNECTSTATUS REASON
```
-At this point preprovision and enable olt, add flows using the CLI or ofagent.
+At this point create/preprovision and enable an olt device and add flows via onos and ofagent.
### Physical OLT/ONU Testing with Passing Traffic
-Start a physical OLT and ONU. Tested with Edgecore OLT, Broadcom based ONU, and RG capable of EAPoL
-Preprovision and enable
+Start a physical OLT and ONU. Tested with Edgecore OLT, Broadcom based ONU, and RG capable of EAPoL. Create/Preprovision the OLT and enable. The create command returns the device ID needed for enable and subsequent commands.
+
+
+
+**Add device to VOLTHA**
+
```sh
-(voltha) preprovision_olt -t openolt -H 10.64.1.207:9191
-success (device id = c6efa171c13056d36e69d1ab)
-(voltha) enable
-enabling c6efa171c13056d36e69d1ab
-waiting for device to be enabled...
-waiting for device to be enabled...
-success (device id = c6efa171c13056d36e69d1ab)
+voltctl device create -t openolt -H 10.64.1.206:9191
+ce7c6fc7bf8ce675d0ce9f21
+
+voltctl device enable ce7c6fc7bf8ce675d0ce9f21
```
-Verify device state
+
+
+**Verify device state**
+
```sh
-(voltha) devices
-Devices:
-+--------------------------+-------------------+------+--------------------------+---------------+-------------------+-------------+-------------+----------------+----------------+------------------+--------------------------------------+
-| id | type | root | parent_id | serial_number | mac_address | admin_state | oper_status | connect_status | parent_port_no | host_and_port | reason |
-+--------------------------+-------------------+------+--------------------------+---------------+-------------------+-------------+-------------+----------------+----------------+------------------+--------------------------------------+
-| c6efa171c13056d36e69d1ab | openolt | True | 00000a4001cf | EC1829000886 | 00:00:0a:40:01:cf | ENABLED | ACTIVE | REACHABLE | | 10.64.1.207:9191 | |
-| 51e092cb40883b796c77a8f2 | brcm_openomci_onu | | c6efa171c13056d36e69d1ab | BRCM33333333 | | ENABLED | ACTIVE | REACHABLE | 536870912 | | tech-profile-config-download-success |
-+--------------------------+-------------------+------+--------------------------+---------------+-------------------+-------------+-------------+----------------+----------------+------------------+--------------------------------------+
-
-(voltha) device c6efa171c13056d36e69d1ab
-(device c6efa171c13056d36e69d1ab) ports
-Device ports:
-+-----------+-----------+--------------+-------------+-------------+--------------------------------------------------------------------+
-| port_no | label | type | admin_state | oper_status | peers |
-+-----------+-----------+--------------+-------------+-------------+--------------------------------------------------------------------+
-| 536870912 | pon0 | PON_OLT | ENABLED | ACTIVE | [{'port_no': 536870912, 'device_id': u'51e092cb40883b796c77a8f2'}] |
-| 65536 | nni-65536 | ETHERNET_NNI | ENABLED | ACTIVE | |
-| 536870913 | pon1 | PON_OLT | ENABLED | ACTIVE | |
-| 536870914 | pon2 | PON_OLT | ENABLED | ACTIVE | |
-| 536870915 | pon3 | PON_OLT | ENABLED | ACTIVE | |
-| 536870916 | pon4 | PON_OLT | ENABLED | ACTIVE | |
-| 536870917 | pon5 | PON_OLT | ENABLED | ACTIVE | |
-| 536870918 | pon6 | PON_OLT | ENABLED | ACTIVE | |
-| 536870919 | pon7 | PON_OLT | ENABLED | ACTIVE | |
-| 536870920 | pon8 | PON_OLT | ENABLED | ACTIVE | |
-+-----------+-----------+--------------+-------------+-------------+--------------------------------------------------------------------+
-| 536870921 | pon9 | PON_OLT | ENABLED | ACTIVE | |
-| 536870922 | pon10 | PON_OLT | ENABLED | ACTIVE | |
-| 536870923 | pon11 | PON_OLT | ENABLED | ACTIVE | |
-| 536870924 | pon12 | PON_OLT | ENABLED | ACTIVE | |
-| 536870925 | pon13 | PON_OLT | ENABLED | ACTIVE | |
-| 536870926 | pon14 | PON_OLT | ENABLED | ACTIVE | |
-| 536870927 | pon15 | PON_OLT | ENABLED | ACTIVE | |
-+-----------+-----------+--------------+-------------+-------------+--------------------------------------------------------------------+
-(device c6efa171c13056d36e69d1ab) quit
-
-
-(voltha) device 51e092cb40883b796c77a8f2
-(device 51e092cb40883b796c77a8f2) ports
-Device ports:
-+-----------+----------+--------------+-------------+-------------+--------------------------------------------------------------------+
-| port_no | label | type | admin_state | oper_status | peers |
-+-----------+----------+--------------+-------------+-------------+--------------------------------------------------------------------+
-| 536870912 | PON port | PON_ONU | ENABLED | ACTIVE | [{'port_no': 536870912, 'device_id': u'c6efa171c13056d36e69d1ab'}] |
-| 16 | uni-16 | ETHERNET_UNI | ENABLED | ACTIVE | |
-| 17 | uni-17 | ETHERNET_UNI | ENABLED | ACTIVE | |
-| 18 | uni-18 | ETHERNET_UNI | ENABLED | ACTIVE | |
-| 19 | uni-19 | ETHERNET_UNI | ENABLED | ACTIVE | |
-| 20 | uni-20 | ETHERNET_UNI | ENABLED | ACTIVE | |
-+-----------+----------+--------------+-------------+-------------+--------------------------------------------------------------------+
+voltctl device list
+ID TYPE ROOT PARENTID SERIALNUMBER ADDRESS ADMINSTATE OPERSTATUS CONNECTSTATUS REASON
+ce7c6fc7bf8ce675d0ce9f21 openolt true a82bb53678ae EC1721000221 10.64.1.206:9191 ENABLED ACTIVE REACHABLE
+1815c74841da338cb48e1034 brcm_openomci_onu false ce7c6fc7bf8ce675d0ce9f21 ALPHe3d1cf57 unknown ENABLED ACTIVE REACHABLE omci-flows-pushed
```
-Verify onos device state and EAPoL authentication. Username is karaf, Password is karaf
+```sh
+voltctl device ports ce7c6fc7bf8ce675d0ce9f21
+PORTNO LABEL TYPE ADMINSTATE OPERSTATUS DEVICEID PEERS
+1048576 nni-1048576 ETHERNET_NNI ENABLED ACTIVE []
+536870912 pon-536870912 PON_OLT ENABLED ACTIVE [{1815c74841da338cb48e1034 536870912}]
+536870913 pon-536870913 PON_OLT ENABLED ACTIVE []
+536870914 pon-536870914 PON_OLT ENABLED ACTIVE []
+536870915 pon-536870915 PON_OLT ENABLED ACTIVE []
+536870916 pon-536870916 PON_OLT ENABLED ACTIVE []
+536870917 pon-536870917 PON_OLT ENABLED ACTIVE []
+536870918 pon-536870918 PON_OLT ENABLED ACTIVE []
+536870919 pon-536870919 PON_OLT ENABLED ACTIVE []
+536870920 pon-536870920 PON_OLT ENABLED ACTIVE []
+536870921 pon-536870921 PON_OLT ENABLED ACTIVE []
+536870922 pon-536870922 PON_OLT ENABLED ACTIVE []
+536870923 pon-536870923 PON_OLT ENABLED ACTIVE []
+536870924 pon-536870924 PON_OLT ENABLED ACTIVE []
+536870925 pon-536870925 PON_OLT ENABLED ACTIVE []
+536870926 pon-536870926 PON_OLT ENABLED ACTIVE []
+536870927 pon-536870927 PON_OLT ENABLED ACTIVE []
+```
+
+```sh
+voltctl device ports 1815c74841da338cb48e1034
+PORTNO LABEL TYPE ADMINSTATE OPERSTATUS DEVICEID PEERS
+32 uni-32 ETHERNET_UNI ENABLED ACTIVE []
+33 uni-33 ETHERNET_UNI ENABLED ACTIVE []
+34 uni-34 ETHERNET_UNI ENABLED ACTIVE []
+35 uni-35 ETHERNET_UNI ENABLED ACTIVE []
+36 uni-36 ETHERNET_UNI ENABLED ACTIVE []
+536870912 PON port PON_ONU ENABLED ACTIVE [{ce7c6fc7bf8ce675d0ce9f21 536870912}]
+```
+
+
+Verify ONOS device state and eventual EAPoL authentication. ONOS default Username is `karaf`, Password is `karaf`
```sh
ssh -p 8101 karaf@localhost
```
+Display the device and ports discovered
```sh
onos> ports
-id=of:000000000a4001cf, available=true, local-status=connected 1h15m ago, role=MASTER, type=SWITCH, mfr=, hw=asfvolt16, sw=BAL.2.6.0__Openolt.2018.10.04, serial=EC1829000886, chassis=a4001cf, driver=voltha, channelId=172.18.0.1:38368, locType=none, managementAddress=172.18.0.1, name=of:000000000a4001cf, protocol=OF_13
- port=16, state=enabled, type=fiber, speed=0 , adminState=enabled, portMac=08:00:00:00:00:10, portName=BRCM33333333-1
- port=17, state=enabled, type=fiber, speed=0 , adminState=enabled, portMac=08:00:00:00:00:11, portName=BRCM33333333-2
- port=18, state=enabled, type=fiber, speed=0 , adminState=enabled, portMac=08:00:00:00:00:12, portName=BRCM33333333-3
- port=19, state=enabled, type=fiber, speed=0 , adminState=enabled, portMac=08:00:00:00:00:13, portName=BRCM33333333-4
- port=20, state=enabled, type=fiber, speed=0 , adminState=enabled, portMac=08:00:00:00:00:14, portName=BRCM33333333-5
- port=65536, state=enabled, type=fiber, speed=0 , adminState=enabled, portMac=00:00:00:01:00:00, portName=nni-65536
-
-onos> aaa-users
-UserName=E0:B7:0A:70:E6:C1,CurrentState=AUTHORIZED,DeviceId=of:000000000a4001cf,MAC=E0:B7:0A:70:E6:C1,PortNumber=16,SubscriberId=PON 1/1/3/1:3.1.1
+id=of:0000a82bb53678ae, available=true, local-status=connected 2m18s ago, role=MASTER, type=SWITCH, mfr=VOLTHA Project, hw=open_pon, sw=open_pon, serial=EC1721000221, chassis=a82bb53678ae, driver=voltha, channelId=172.30.0.1:39080, managementAddress=172.30.0.1, protocol=OF_13
+ port=32, state=enabled, type=fiber, speed=0 , adminState=enabled, portMac=08:00:00:00:00:20, portName=ALPHe3d1cf57-1
+ port=33, state=enabled, type=fiber, speed=0 , adminState=enabled, portMac=08:00:00:00:00:21, portName=ALPHe3d1cf57-2
+ port=34, state=enabled, type=fiber, speed=0 , adminState=enabled, portMac=08:00:00:00:00:22, portName=ALPHe3d1cf57-3
+ port=35, state=enabled, type=fiber, speed=0 , adminState=enabled, portMac=08:00:00:00:00:23, portName=ALPHe3d1cf57-4
+ port=36, state=enabled, type=fiber, speed=0 , adminState=enabled, portMac=08:00:00:00:00:24, portName=ALPHe3d1cf57-5
+ port=1048576, state=enabled, type=fiber, speed=0 , adminState=enabled, portMac=a8:2b:b5:36:78:ae, portName=nni-1048576
```
-Provision subscriber flows. Verify traffic
+EAPoL may take up to 30 seconds to complete.
+```sh
+onos> aaa-users
+UserName=94:CC:B9:DA:AB:D1,CurrentState=AUTHORIZED,DeviceId=of:0000a82bb53678ae,MAC=94:CC:B9:DA:AB:D1,PortNumber=32,SubscriberId=PON 1/1/3/1:2.1.1
+```
+
+
+
+**Provision subscriber flows**
+
```sh
onos> volt-subscribers
-port=of:000000000a4001cf/16, svlan=13, cvlan=22
+port=of:0000a82bb53678ae/32, svlan=13, cvlan=22
-onos> volt-add-subscriber-access of:000000000a4001cf 16
+onos> volt-add-subscriber-access of:0000a82bb53678ae 32
onos> volt-programmed-subscribers
-location=of:000000000a4001cf/16 subscriber=[id:BRCM33333333-1,cTag:22,sTag:13,nasPortId:PON 1/1/3/1:3.1.1,uplinkPort:-1,slot:-1,hardwareIdentifier:null,ipaddress:null,nasId:null,circuitId:PON 1/1/3/1:3.1.1-CID,remoteId:ATLEDGEVOLT1-RID]
+location=of:of:0000a82bb53678ae/32 subscriber=[id:ALPHe3d1cf57-1,cTag:20,sTag:11,nasPortId:PON 1/1/3/1:2.1.1,uplinkPort:-1,slot:-1,hardwareIdentifier:null,ipaddress:null,nasId:null,circuitId:PON 1/1/3/1:2.1.1-CID,remoteId:ATLEDGEVOLT1-RID]
+```
+After about 30 seconds the RG should attempt DHCP which should be visible in onos. At this point the RG should be able to pass database traffic via the ONU/OLT.
+```sh
+onos> dhcpl2relay-allocations
+SubscriberId=PON 1/1/3/1:2.1.1,ConnectPoint=of:0000a82bb53678ae/32,State=DHCPACK,MAC=94:CC:B9:DA:AB:D1,CircuitId=None,IP Allocated=29.29.206.20,Allocation Timestamp=2019-11-28T18:59:05.472Z
```
-### Test with BBSIM or Ponsim
-if you don't have a real OLT device and want to test with a simulator BBSIM or PONSIM can be used.
-```compose/system-test-bbsim.yml``` file includes BBSIM image and ```compose/system-test-ponsim.yml``` includes PONSIM. Please note that since PONSIM uses its own ```ponsim_adapter``` you need to run the preprovision command like this:
-```preprovision_olt -t ponsim_olt -H <IP of Ponsim OLT>:50060```
+
+### BBSIM Simulated OLT/ONU Testing Control Plane Traffic
+
+If you do not have physical OLT/ONU hardware you can start VOLTHA containers and the bbsim olt/onu hardware simulator using a different docker-compose yaml file. Verify containers are running as above with the addition of the bbsim and radius server containers.
+```sh
+export DOCKER_HOST_IP=172.17.0.1
+export DOCKER_TAG=latest
+
+cd ~/source/voltha-go
+docker-compose -f compose/system-test-bbsim.yml up -d
+```
+
+Create/Preprovision and enable similarly to the physical OLT above, providing the local bbsim IP and listening port
+```sh
+voltctl device create -t openolt -H 172.17.0.1:50060
+ece94c86e93c6e06dd0a544b
+
+voltctl device enable ece94c86e93c6e06dd0a544b
+ece94c86e93c6e06dd0a544b
+```
+
+Proceed with the verification and ONOS provisioning commands similar to the physical OLT described above.