More documentation for configuration and operation

Change-Id: I1fc76e7e388720e5d6993437fa55d05d188daa33
diff --git a/SUMMARY.md b/SUMMARY.md
index 4d52cf7..bd74a0e 100644
--- a/SUMMARY.md
+++ b/SUMMARY.md
@@ -84,7 +84,11 @@
             * [Provision Subscribers](profiles/seba/configure/subscriber.md)
             * [Provision OLTs](profiles/seba/configure/olt.md)
         * Operate
-            * [AT&T workflow description](profiles/seba/operate/att-workflow-description.md)
+            * AT&T Workflow
+                * [AttWorkflowDriver service instances](profiles/seba/operate/att-si.md)
+                * [Workflow description](profiles/seba/operate/att-workflow-description.md)
+            * [Working with Tech Profiles](profiles/seba/operate/tp-ops.md)
+            * [Working with Bandwidth Profiles](profiles/seba/operate/bp-ops.md)
             * [Disable/Enable an ONU](profiles/seba/operate/onu-ops.md)
             * [Edit a Whitelist entry](profiles/seba/operate/whitelist-ops.md)
             * [Delete an OLT](profiles/seba/operate/olt-ops.md)
diff --git a/profiles/seba/configure/olt.md b/profiles/seba/configure/olt.md
index b166fbb..96ed40c 100644
--- a/profiles/seba/configure/olt.md
+++ b/profiles/seba/configure/olt.md
@@ -3,9 +3,19 @@
 OLT Provisioning consists of specifying the fields shown below to instruct NEM about the serial number of the OLT, and where it can be reached in the management network.
 As soon as this config is pushed, NEM will load VOLTHA's etcd with the technology profile, and make the 'preprovision' and 'enable' calls to VOLTHA with the OLT information.
 
+## Provision the OLT
+
 OLT provisioning can use the same yaml file where the Technology profile is configured.
 For clarity it is shown separately below.
 
+Note the following when provisioning an OLT:
+
+* It is really important to get the serial number of the OLT correct
+* You need to specify the IP address and TCP port where the OLT can be reached by VOLTHA on the management network (out-of-band)
+* In a SEBA pod, the OLT connects upstream to an AGG switch that is SDN controlled just like the OLT. We need to specify the NNI port on the OLT, the AGG switch port to which the NNI port is connected, and the OF switch datapath id (dpid) for the AGG switch as seen by ONOS.
+* OLTs can typically use tag-protocol ids 0x88a8 or 0x8100 for the outer vlan tag in a QinQ packet. We use 0x8100.
+
+
 Learn more about the OLT service [here](../../../olt-service/README.md)
 
 
@@ -32,11 +42,11 @@
         name: My OLT
         device_type: openolt
         host: 10.90.0.122 # the IP address where the OLT can be reached on the management network
-        port: 9191
-        switch_datapath_id: of:0000000000000001 # the openflow id of the switch to which the OLT is connected
-        switch_port: "1" # the port on the switch on which the OLT is connected
+        port: 9191 # the TCP port on which the OLT is listening for VOLTHA to connect to it
+        switch_datapath_id: of:0000000000000001 # the openflow id of the AGG switch to which the OLT is connected
+        switch_port: "1" # the port on the AGG switch to which the OLT is connected
         outer_tpid: "0x8100"
-        uplink: "65536" # the NNI port on the OLT
+        uplink: "65536" # the NNI port on the OLT, used to connect to the AGG switch
         nas_id: "NAS_ID"
         serial_number: EC1721000208 # the serial number of the OLT device
       requirements:
@@ -44,3 +54,30 @@
             node: service#volt
             relationship: tosca.relationships.BelongsToOne
 ```
+
+## Verify OLT
+
+On the NEM GUI, confirm that the OLT has been added to the XOS database.
+
+![OLT view](./screenshots/olt-0.png)
+
+## Verify ONUs
+
+VOLTHA should have reached out to the OLT and discovered ONUs and started OMCI messaging on the PON. If all is well, you should see the information shown below in the ONU tab.
+
+Note the following expected states:
+
+* Admin state: ENABLED (if this is disabled, it is possible that the ONU serial number and location configured on the whitelist is incorrect or missing)
+* Connect state: REACHABLE
+* Operational state: ACTIVE
+* OMCI state (titled `Reason`): tech_profile_config_download_success
+
+ This is the same information displayed by the `devices` command on the VOLTHA CLI.
+
+![ONU view](./screenshots/onu-0.png)
+
+## Next Steps
+
+OLT provisioning is typically the last step of provisioning, although you can continue to add ONUs to the whitelist and/or add new subscriber information.
+
+You are now ready to [operate the POD](../operate/att-si.md).
diff --git a/profiles/seba/configure/onu-whitelist.md b/profiles/seba/configure/onu-whitelist.md
index d3431ed..ae86c7e 100644
--- a/profiles/seba/configure/onu-whitelist.md
+++ b/profiles/seba/configure/onu-whitelist.md
@@ -44,9 +44,18 @@
 For instructions on how to push TOSCA into a CORD POD, please
 refer to this [guide](../../../xos-tosca/README.md).
 
-### Where to find the required information
+## Confirm whitelist
 
-#### Serial Number
+On the NEM GUI, confirm that the ONU has been added to the whitelist.
+
+![Whitelist view](./screenshots/whitelist-0.png)
+
+## Where to find the required information
+
+In production, an operator should already know all the information regarding the ONU - ie the ONU's serial number and location.
+In a lab setting you may need to bring up the system once to note down the serial number, pon port number and device id.
+
+### Serial Number
 
 To locate the ONU serial number you can open the ONU detail view (`vOLT -> ONU Devices`).
 
@@ -54,14 +63,14 @@
 
 > NOTE: most of the time the serial number is also printed on the physical device.
 
-#### Pon Port ID
+### Pon Port ID
 
 The `pon_port_id` can be found from the ONU detail view, by selecting the `PON Port`
 tab:
 
 ![ONU Detail view](./screenshots/pon_port.png)
 
-#### Device ID
+### Device ID
 
 The `device_id` can easily be found in the OLT list view. Note the `device_id` is
 the openflow ID of the logical device exposed to ONOS, and not the serial number
diff --git a/profiles/seba/configure/screenshots/bp-0.png b/profiles/seba/configure/screenshots/bp-0.png
new file mode 100644
index 0000000..0b90d45
--- /dev/null
+++ b/profiles/seba/configure/screenshots/bp-0.png
Binary files differ
diff --git a/profiles/seba/configure/screenshots/olt-0.png b/profiles/seba/configure/screenshots/olt-0.png
new file mode 100644
index 0000000..8e4d5d9
--- /dev/null
+++ b/profiles/seba/configure/screenshots/olt-0.png
Binary files differ
diff --git a/profiles/seba/configure/screenshots/onu-0.png b/profiles/seba/configure/screenshots/onu-0.png
new file mode 100644
index 0000000..832c980
--- /dev/null
+++ b/profiles/seba/configure/screenshots/onu-0.png
Binary files differ
diff --git a/profiles/seba/configure/screenshots/sub-model.png b/profiles/seba/configure/screenshots/sub-model.png
new file mode 100644
index 0000000..31e9e77
--- /dev/null
+++ b/profiles/seba/configure/screenshots/sub-model.png
Binary files differ
diff --git a/profiles/seba/configure/screenshots/subs-0.png b/profiles/seba/configure/screenshots/subs-0.png
new file mode 100644
index 0000000..ae57e8b
--- /dev/null
+++ b/profiles/seba/configure/screenshots/subs-0.png
Binary files differ
diff --git a/profiles/seba/configure/screenshots/tp-0.png b/profiles/seba/configure/screenshots/tp-0.png
new file mode 100644
index 0000000..9e49dc7
--- /dev/null
+++ b/profiles/seba/configure/screenshots/tp-0.png
Binary files differ
diff --git a/profiles/seba/configure/screenshots/whitelist-0.png b/profiles/seba/configure/screenshots/whitelist-0.png
new file mode 100644
index 0000000..03cce1a
--- /dev/null
+++ b/profiles/seba/configure/screenshots/whitelist-0.png
Binary files differ
diff --git a/profiles/seba/configure/subscriber.md b/profiles/seba/configure/subscriber.md
index 6f4a110..5ae00ab 100644
--- a/profiles/seba/configure/subscriber.md
+++ b/profiles/seba/configure/subscriber.md
@@ -5,14 +5,22 @@
 It is also necessary to provide a Technology Profile id for the subscriber.
 Learn more about Subscriber provisioning [in this video](https://www.youtube.com/watch?v=RXjH9zdjqvA&t=420s)
 
+![Subscriber Model](./screenshots/sub-model.png)
+
 This section will guide you through the configuration of `Subscriber` and associated `BandwidthProfile`s.
 
-### Provision a Subscriber
+## Provision a Subscriber
 
 Once you have the required information, you can create the subscriber by
 customizing the following TOSCA and passing it into the POD.
 
-NOTE: It is important to configure a Default bandwidthprofile
+A few things to note:
+
+* It is important to configure a Default bandwidthprofile, along with the subscriber's own bandwidthprofile
+* As before the C and S tags together should uniquely identify the subscribers
+* The ONU serial number to which the subscriber's equipment (Remote Gateway) connects must be specified
+* The tech_profile_id (representing the type of service) for the subscriber should also be specified. It is not necessary to have the tech profile already configured at the time of subscriber provisioning; i.e. the tech profile can come later but should have the same id. Also please note that in this release, it is not possible to change the tech profile id for a subscriber, as this functionality has not been implemented in VOLTHA.
+* The subscriber should be provisioned in 'pre-provisioned' state to allow the workflow to determine when to program subscriber flows in the hardware (for example, after successful RG authentication)
 
 
 ```yaml
@@ -51,7 +59,7 @@
       type: tosca.nodes.RCORDSubscriber
       properties:
         name: Sub_ISKT71e801a0
-        status: pre-provisioned
+        status: pre-provisioned # Add the subscriber in pre-provisioned state
         c_tag: 12
         s_tag: 111
         onu_device: ISKT71e801a0 # Serial Number of the ONU Device to which this subscriber is connected
@@ -92,6 +100,16 @@
 For instructions on how to push TOSCA into a CORD POD, please
 refer to this [guide](../../../xos-tosca/README.md).
 
+## Confirm Subscriber
+
+On the NEM GUI, confirm that the subscriber has been added.
+
+![Subscriber view](./screenshots/subs-0.png)
+
+Also confirm that bandwidth profiles have been added
+
+![Bandwidth profile view](./screenshots/bp-0.png)
+
 ## Find ONU Serial Number
 
 In production, an operator should already know all the information regarding the subscriber's location - ie the ONU to which the subscriber connects and the serial number of the ONU.
@@ -102,9 +120,9 @@
 
 You can find the ONUs and their serial numbers through:
 
-- XOS GUI: on the left side click on `vOLT > ONUDevices`
-- XOS Rest API: `http://<pod-id>:<chameleon-port|30006>/xosapi/v1/volt/onudevices`
-- VOLTHA CLI: [Command Line Interface](../../../charts/voltha.md#how-to-access-the-voltha-cli)
+* XOS GUI: on the left side click on `vOLT > ONUDevices`
+* XOS Rest API: `http://<pod-id>:<chameleon-port|30006>/xosapi/v1/volt/onudevices`
+* VOLTHA CLI: [Command Line Interface](../../../charts/voltha.md#how-to-access-the-voltha-cli)
 
 If you are connected to the VOLTHA CLI you can use the following
 command to list all the existing devices:
@@ -112,47 +130,47 @@
 ```shell
 (voltha) devices
 Devices:
-+------------------+--------------+------+------------------+-------------+-------------+----------------+----------------+------------------+----------+-------------------------+----------------------+------------------------------+
-|               id |         type | root |        parent_id | admin_state | oper_status | connect_status | parent_port_no |    host_and_port | vendor_id| proxy_address.device_id | proxy_address.onu_id | proxy_address.onu_session_id |
-+------------------+--------------+------+------------------+-------------+-------------+----------------+----------------+------------------+----------+-------------------------+----------------------+------------------------------+
-| 0001941bd45e71d8 |      openolt | True | 000100000a5a0072 |     ENABLED |      ACTIVE |      REACHABLE |                | 10.90.0.114:9191 |          |                         |                      |                              |
-| 00015698e67dc060 | broadcom_onu | True | 0001941bd45e71d8 |     ENABLED |      ACTIVE |      REACHABLE |      536870912 |                  |      BRCM|        0001941bd45e71d8 |                    1 |                            1 |
-+------------------+--------------+------+------------------+-------------+-------------+----------------+----------------+------------------+----------+-------------------------+----------------------+------------------------------+
++------------------+-------------------+------+------------------+---------------+-------------+-------------+----------------+----------------+----------------------+--------------------------------------+-------------------------+----------------------+------------------------------+
+|               id |              type | root |        parent_id | serial_number | admin_state | oper_status | connect_status | parent_port_no |        host_and_port |                               reason | proxy_address.device_id | proxy_address.onu_id | proxy_address.onu_session_id |
++------------------+-------------------+------+------------------+---------------+-------------+-------------+----------------+----------------+----------------------+--------------------------------------+-------------------------+----------------------+------------------------------+
+| 00010c6fb4ae4011 |           openolt | True | 00010000c0a8646f |  EC1904000654 |     ENABLED |      ACTIVE |      REACHABLE |                | 192.168.100.111:9191 |                                      |                         |                      |                              |
+| 00019af6aa8c68c9 | brcm_openomci_onu |      | 00010c6fb4ae4011 |  BRCM22222222 |     ENABLED |      ACTIVE |      REACHABLE |      536870912 |                      | tech-profile-config-download-success |        00010c6fb4ae4011 |                    1 |                            1 |
+| 0001beddb8196807 | brcm_openomci_onu |      | 00010c6fb4ae4011 |  ISKT71e801a0 |     ENABLED |      ACTIVE |      REACHABLE |      536870912 |                      | tech-profile-config-download-success |        00010c6fb4ae4011 |                    2 |                            2 |
++------------------+-------------------+------+------------------+---------------+-------------+-------------+----------------+----------------+----------------------+--------------------------------------+-------------------------+----------------------+------------------------------+
+
 ```
 
-Locate the correct ONU, then:
+Locate the correct ONU and note that the display above readily shows the serial number of the ONU as well as the PON port number on the OLT to which it connects (`parent_port_no`). You can also enter the particular device cli to display more information as shown below.
 
 ```shell
-(voltha) device 00015698e67dc060
-(device 00015698e67dc060) show
-Device 00015698e67dc060
-+------------------------------+------------------+
-|                        field |            value |
-+------------------------------+------------------+
-|                           id | 00015698e67dc060 |
-|                         type |     broadcom_onu |
-|                         root |             True |
-|                    parent_id | 0001941bd45e71d8 |
-|                       vendor |         Broadcom |
-|                        model |              n/a |
-|             hardware_version |     to be filled |
-|             firmware_version |     to be filled |
-|                 images.image |        1 item(s) |
-|                serial_number |     BRCM22222222 |
-+------------------------------+------------------+
-|                      adapter |     broadcom_onu |
-|                  admin_state |                3 |
-|                  oper_status |                4 |
-|               connect_status |                2 |
-|      proxy_address.device_id | 0001941bd45e71d8 |
-|         proxy_address.onu_id |                1 |
-| proxy_address.onu_session_id |                1 |
-|               parent_port_no |        536870912 |
-|                    vendor_id |             BRCM |
-|                        ports |        2 item(s) |
-+------------------------------+------------------+
-|                  flows.items |        5 item(s) |
-+------------------------------+------------------+
+(voltha) device 00019af6aa8c68c9
+(device 00019af6aa8c68c9) show
+Device 00019af6aa8c68c9
++------------------------------+--------------------------------------+
+|                        field |                                value |
++------------------------------+--------------------------------------+
+|                           id |                     00019af6aa8c68c9 |
+|                         type |                    brcm_openomci_onu |
+|                    parent_id |                     00010c6fb4ae4011 |
+|                       vendor |                             Broadcom |
+|                serial_number |                         BRCM22222222 |
+|                      adapter |                    brcm_openomci_onu |
+|                  admin_state |                                    3 |
+|                  oper_status |                                    4 |
+|               connect_status |                                    2 |
+|      proxy_address.device_id |                     00010c6fb4ae4011 |
++------------------------------+--------------------------------------+
+|         proxy_address.onu_id |                                    1 |
+| proxy_address.onu_session_id |                                    1 |
+|               parent_port_no |                            536870912 |
+|                       reason | tech-profile-config-download-success |
+|                    vendor_id |                                 BRCM |
+|                        ports |                            2 item(s) |
+|                  flows.items |                            3 item(s) |
+|                pm_configs.id |                     00019af6aa8c68c9 |
+|      pm_configs.default_freq |                                  600 |
+|           pm_configs.grouped |                                 True |
++------------------------------+--------------------------------------+
+|            pm_configs.groups |                           11 item(s) |
++------------------------------+--------------------------------------+
 ```
-
-to find the correct serial number.
diff --git a/profiles/seba/configure/tech-profile.md b/profiles/seba/configure/tech-profile.md
index 9c93b8a..6fb285c 100644
--- a/profiles/seba/configure/tech-profile.md
+++ b/profiles/seba/configure/tech-profile.md
@@ -258,6 +258,28 @@
           }
 ```
 
-
 For instructions on how to push TOSCA into a CORD POD, please
 refer to this [guide](../../../xos-tosca/README.md).
+
+## Verify Tech Profile in NEM database
+
+On the NEM GUI, confirm that the tech profile is added. Note that this view does not currently pretty-print the json.
+
+![Tech Profile view](./screenshots/tp-0.png)
+
+
+## Verify Tech Profile in Etcd
+
+We can verify that the tech profile has been downloaded by NEM into the Etcd cluster. For that we first need to enter the etcd container using kubectl.
+
+```shell
+~$ kubectl exec -it $(kubectl get pods | grep etcd-cluster | awk 'NR==1{print $1}') /bin/sh
+```
+
+Once inside, we can use the etcdctl tool to fetch the stored information for the profile using the profile type and id.
+
+```shell
+/ # ETCDCTL_API=3 etcdctl get --prefix  service/voltha/technology_profiles/xgspon/64
+```
+If all is well, the above command should display the same tech profile information you configured.
+In a running system where the OLT has also been configured, and ONUs have been discovered and ranged, you should also see *instances* of the tech-profile in the display above for each ONU. These instances specify the particular GEM port ids and related Alloc ids used for the ONU.
diff --git a/profiles/seba/operate/att-si.md b/profiles/seba/operate/att-si.md
new file mode 100644
index 0000000..e1fa4cf
--- /dev/null
+++ b/profiles/seba/operate/att-si.md
@@ -0,0 +1,19 @@
+# AT&T Workflow Driver Service Instances
+
+In a running system, once OLTs have been configured and ONUs are in active/enabled/reachable state in VOLTHA, you should see instances of the AT&T Workflow Driver in the NEM GUI, as shown below.
+
+[ATT Workflow Instances](./screenshots/att-si-0.png)
+
+The graphic above shows two such workflow instances, one for each ONU. If you do not see any workflow instances, refresh your GUI. If you still don't see anything, consider the [troubleshooting guide](../troubleshoot/no-att-si.md).
+
+The instance for the Broadcom ONU `BRCM22222222` shows that the ONU has been validated against the whitelist. If the ONU's serial number or location (OLT device/PON port) does not match the configured information in the whitelist, then the workflow would display the `Admin onu state` as disabled with the appropriate `Status message` (for why it was disabled). The screenshot also shows that the workflow is awaiting the authentication of the RG connected to the UNI port on this ONU. Finally it also shows that the `DHCP state` is AWAITING - note that the DHCP process will not succeed without the RG first authenticating, according to the AT&T workflow. In production, RG's should automatically start the authentication process by sending EAPOL_START messages. In a lab setting, if you are using a linux host as an emulated RG, you will have to manually start the `wpa_supplicant` process as described [here](../lab-setup.md).
+
+For the Iskratel ONU `ISKT71e801a0`, it shows that the ONU has been validated against the whitelist, and the RG behind the ONU has authenticated successfully (`Authentication state` is APPROVED). In production, RG's should automatically start the DHCP process to get a valid IP address from the upstream BNG. In a lab setting, if you are using a linux host as an emulated RG, you will have to manually start the `dhclient` process as described [here](../lab-setup.md).
+
+Once both authentication and dhcp processes have succeeded, the workflow instances should display the following information.
+
+[ATT Workflow Instances](./screenshots/att-si-1.png)
+
+Note that the DHCP state displays `DHCPACK` and the IP addresses assigned by the external BNG are also displayed, together with the RG's MAC addresses discovered by the system. At this point the subscriber should be able to reach the Internet with the configured bandwidthprofile for the subscriber, and the traffic priorities determined by the configured tech profile.
+
+If authentication or dhcp does not succeed, or your pings are not getting through, consider their respective troubleshooting guides.
diff --git a/profiles/seba/operate/bp-ops.md b/profiles/seba/operate/bp-ops.md
new file mode 100644
index 0000000..62ca900
--- /dev/null
+++ b/profiles/seba/operate/bp-ops.md
@@ -0,0 +1,278 @@
+# Bandwidth Profile Operations
+
+As mentioned in the configuration guide, from SEBA 2.0 release onwards it is necessary to configure upstream and downstream bandwidth profiles for subscribers. Unlike Tech profiles, bandwidth profiles do change over time in operation, due to subscribers upgrading or downgrading their service.
+
+In this release, runtime changes to the bandwidth profile for a subscriber are supported by the following set of operations
+
+- first delete the subscriber - this will cause the removal of subscriber flows in the PON
+- (optional) you can choose to remove the bandwidth profile the subscriber was currently using, if no other subscriber is using that profile. Or you can simply leave it configured for future use.
+- next, configure the new bandwidth profile
+- finally, configure the subscriber again, but this time using the new bandwidth profile.
+
+A couple of things to note:
+
+- Admittedly the procedure outlined above is cumbersome. It should simply be possible to configure a new bandwidth profile, and *change* the subscriber configuration to use the new bandwidth profile, without requiring a removal and reprogramming of the subscribers flows. Under the hood, bandwidth profiles are implemented using meters, and so it should be possible to point the subscribers flows to different meters reflecting the new bandwidth profile without deleting the flows. However, this capability is not supported in the underlying OLT software (BAL) currently.
+- Due to the current limitations specified in the Known Issues, changing a bandwidth profile at runtime may not be successful.
+
+## Under the hood
+
+The information in this section is not strictly necessary to use bandwidth profiles.
+It is only provided to help understand the underlying implementation and commands that help debugging.
+
+### Initial State
+
+When ONU's are discovered and ranged by the OLT, VOLTHA creates a port (representing the UNI on the ONU) on the logical device that is reported to ONOS.
+
+Consider the following from the ONOS cli
+
+```shell
+onos> devices
+id=of:0000000000000001, available=true, local-status=connected 2d6h ago, role=MASTER, type=SWITCH, mfr=Accton Corp., hw=x86-64-accton-as6712-32x-r0, sw=ofdpa 3.0.5.5+accton1.7-1, serial=671232X1538033, chassis=1, driver=ofdpa3, channelId=192.168.100.1:48820, locType=none, managementAddress=192.168.100.1, name=AGG SWITCH, protocol=OF_13
+id=of:00000000c0a8646f, available=true, local-status=connected 51s ago, role=MASTER, type=SWITCH, mfr=VOLTHA Project, hw=, sw=, serial=EC1904000654, chassis=c0a8646f, driver=voltha, channelId=10.233.90.246:56694, locType=none, managementAddress=10.233.90.246, name=EdgeCore OLT, protocol=OF_13
+```
+
+It shows two devices, one that represents the AGG switch (dpid: of:0000000000000001) and another that represents the PON (dpid of:00000000c0a8646f)
+We can check the enabled ports on each device
+
+```shell
+onos> ports -e
+id=of:0000000000000001, available=true, local-status=connected 2d6h ago, role=MASTER, type=SWITCH, mfr=Accton Corp., hw=x86-64-accton-as6712-32x-r0, sw=ofdpa 3.0.5.5+accton1.7-1, serial=671232X1538033, chassis=1, driver=ofdpa3, channelId=192.168.100.1:48820, locType=none, managementAddress=192.168.100.1, name=AGG SWITCH, protocol=OF_13
+  port=1, state=enabled, type=fiber, speed=40000 , adminState=enabled, portMac=cc:37:ab:61:80:49, portName=port1
+  port=153, state=enabled, type=fiber, speed=10000 , adminState=enabled, portMac=cc:37:ab:61:80:49, portName=port153
+id=of:00000000c0a8646f, available=true, local-status=connected 29s ago, role=MASTER, type=SWITCH, mfr=VOLTHA Project, hw=, sw=, serial=EC1904000654, chassis=c0a8646f, driver=voltha, channelId=10.233.90.246:56694, locType=none, managementAddress=10.233.90.246, name=EdgeCore OLT, protocol=OF_13
+  port=16, state=enabled, type=fiber, speed=0 , adminState=enabled, portMac=08:00:00:00:00:10, portName=BRCM22222222
+  port=32, state=enabled, type=fiber, speed=0 , adminState=enabled, portMac=08:00:00:00:00:20, portName=ISKT71e801a0
+  port=65536, state=enabled, type=fiber, speed=0 , adminState=enabled, portMac=00:00:00:01:00:00, portName=nni-65536
+```
+
+The device representing the PON shows 1 NNI port (portnumber 65536) and 2 UNI ports (portnumbers 16 and 32).
+We can also check the flows that have been programmed on each device. For clarity, we only show the flows sent to VOLTHA.
+
+```shell
+onos> flows -s
+deviceId=of:0000000000000001, flowRuleCount=29
+    -snip-
+deviceId=of:00000000c0a8646f, flowRuleCount=5
+    ADDED, bytes=0, packets=0, table=0, priority=10000, selector=[IN_PORT:32, ETH_TYPE:eapol, VLAN_VID:4091], treatment=[immediate=[OUTPUT:CONTROLLER], meter=METER:1, metadata=METADATA:ffb004000000000/0]
+    ADDED, bytes=0, packets=0, table=0, priority=10000, selector=[IN_PORT:65536, ETH_TYPE:lldp], treatment=[immediate=[OUTPUT:CONTROLLER]]
+    ADDED, bytes=0, packets=0, table=0, priority=10000, selector=[IN_PORT:65536, ETH_TYPE:ipv6, IP_PROTO:17, UDP_SRC:546, UDP_DST:547], treatment=[immediate=[OUTPUT:CONTROLLER]]
+    ADDED, bytes=0, packets=0, table=0, priority=10000, selector=[IN_PORT:65536, ETH_TYPE:ipv4, IP_PROTO:17, UDP_SRC:67, UDP_DST:68], treatment=[immediate=[OUTPUT:CONTROLLER]]
+    ADDED, bytes=0, packets=0, table=0, priority=10000, selector=[IN_PORT:16, ETH_TYPE:eapol, VLAN_VID:4091], treatment=[immediate=[OUTPUT:CONTROLLER], meter=METER:1, metadata=METADATA:ffb004000000000/0]
+```
+
+Note that there are 3 flows that are meant for packets entering from the NNI port (IN_PORT:65536). One is for LLDP packets and the other two are for DHCP v4 and DHCP v6. The latter is ignored by VOLTHA currently.
+More importantly, we can see that there are two other flows meant for the packets from the UNI ports 32 and 16. Both are EAPOL matching flows (ETH_TYPE:eapol) that trap eapol packets to the controller. Also note that they use a default VLAN (4091) and point to a meter (METER:1).
+We can check the meter using the following command.
+
+```shell
+onos> meters
+ DefaultMeter{device=of:00000000c0a8646f, cellId=1, appId=org.opencord.olt, unit=KB_PER_SEC, isBurst=true, state=ADDED, bands=[DefaultBand{rate=600, burst-size=30, type=DROP, drop-precedence=null}, DefaultBand{rate=400, burst-size=30, type=DROP, drop-precedence=null}, DefaultBand{rate=100000, burst-size=0, type=DROP, drop-precedence=null}]}
+```
+
+Note that the `cellId=1` is the same as the meter id. We can also check the bandwidthProfile associated with this meter.
+
+```shell
+onos> volt-bpmeter-mappings
+bpInfo=Default deviceId=of:00000000c0a8646f meterId=1
+```
+
+From the above, we see that `meterId=1` corresponds to bandwidthProfile `Default`, configured in SADIS. We can check the parameters of the configured bandwidthProfile with the following command.
+
+```shell
+onos> bandwidthprofile Default
+BandwidthProfileInformation{id=Default, committedInformationRate=600, committedBurstSize=30, exceededInformationRate=400, exceededBurstSize=30, assuredInformationRate=100000}
+```
+Note how the configured bandwidth profile is mapped to a meter and its meter-bands.
+
+In VOLTHA we can see the same flows in the logical device with the same meterId.
+
+```shell
+(voltha) logical_devices
+Logical devices:
++------------------+------------------+------------------+-----------------+---------------------------+--------------------------+
+|               id |      datapath_id |   root_device_id | desc.serial_num | switch_features.n_buffers | switch_features.n_tables |
++------------------+------------------+------------------+-----------------+---------------------------+--------------------------+
+| 00010000c0a8646f | 00000000c0a8646f | 00010c6fb4ae4011 |    EC1904000654 |                       256 |                        2 |
++------------------+------------------+------------------+-----------------+---------------------------+--------------------------+
+(voltha) logical_device 00010000c0a8646f
+(logical device 00010000c0a8646f) flows
+Logical Device 00010000c0a8646f (type: n/a)
+Flows (5):
++----------+----------+-----------+---------+----------+----------+----------+---------+---------+------------+---------------------+-------+
+| table_id | priority |    cookie | in_port | vlan_vid | eth_type | ip_proto | udp_src | udp_dst |     output |      write-metadata | meter |
++----------+----------+-----------+---------+----------+----------+----------+---------+---------+------------+---------------------+-------+
+|        0 |    10000 | ~568a5a6b |   65536 |          |     88CC |          |         |         | CONTROLLER |                     |       |
+|        0 |    10000 | ~b1626297 |   65536 |          |      800 |       17 |      67 |      68 | CONTROLLER |                     |       |
+|        0 |    10000 | ~8564f89b |   65536 |          |     86DD |       17 |     546 |     547 | CONTROLLER |                     |       |
+|        0 |    10000 | ~bccf83c4 |      16 |     4091 |     888E |          |         |         | CONTROLLER | 1151514404601200640 |     1 |
+|        0 |    10000 | ~16403fee |      32 |     4091 |     888E |          |         |         | CONTROLLER | 1151514404601200640 |     1 |
++----------+----------+-----------+---------+----------+----------+----------+---------+---------+------------+---------------------+-------+
+(logical device 00010000c0a8646f) ports
+Logical device ports:
++-----------+------------------+----------------+-----------+------------------+---------------------------+---------------+----------------+---------------+---------------------+------------------------+
+|        id |        device_id | device_port_no | root_port | ofp_port.port_no |          ofp_port.hw_addr | ofp_port.name | ofp_port.state | ofp_port.curr | ofp_port.curr_speed | ofp_port_stats.port_no |
++-----------+------------------+----------------+-----------+------------------+---------------------------+---------------+----------------+---------------+---------------------+------------------------+
+| nni-65536 | 00010c6fb4ae4011 |          65536 |      True |            65536 |  [0L, 0L, 0L, 1L, 0L, 0L] |     nni-65536 |              4 |          4128 |                  32 |                  65536 |
+|    uni-32 | 0001beddb8196807 |             32 |           |               32 | [8L, 0L, 0L, 0L, 0L, 32L] |  ISKT71e801a0 |              4 |          4160 |                  64 |                        |
+|    uni-16 | 00019af6aa8c68c9 |             16 |           |               16 | [8L, 0L, 0L, 0L, 0L, 16L] |  BRCM22222222 |              4 |          4160 |                  64 |                        |
++-----------+------------------+----------------+-----------+------------------+---------------------------+---------------+----------------+---------------+---------------------+------------------------+
+```
+
+We can also check the physical device representing the OLT.
+
+```shell
+(voltha) devices
+Devices:
++------------------+-------------------+------+------------------+---------------+-------------+-------------+----------------+----------------+----------------------+--------------------------------------+-------------------------+----------------------+------------------------------+
+|               id |              type | root |        parent_id | serial_number | admin_state | oper_status | connect_status | parent_port_no |        host_and_port |                               reason | proxy_address.device_id | proxy_address.onu_id | proxy_address.onu_session_id |
++------------------+-------------------+------+------------------+---------------+-------------+-------------+----------------+----------------+----------------------+--------------------------------------+-------------------------+----------------------+------------------------------+
+| 00010c6fb4ae4011 |           openolt | True | 00010000c0a8646f |  EC1904000654 |     ENABLED |      ACTIVE |      REACHABLE |                | 192.168.100.111:9191 |                                      |                         |                      |                              |
+| 00019af6aa8c68c9 | brcm_openomci_onu |      | 00010c6fb4ae4011 |  BRCM22222222 |     ENABLED |      ACTIVE |      REACHABLE |      536870912 |                      | tech-profile-config-download-success |        00010c6fb4ae4011 |                    1 |                            1 |
+| 0001beddb8196807 | brcm_openomci_onu |      | 00010c6fb4ae4011 |  ISKT71e801a0 |     ENABLED |      ACTIVE |      REACHABLE |      536870912 |                      | tech-profile-config-download-success |        00010c6fb4ae4011 |                    2 |                            2 |
++------------------+-------------------+------+------------------+---------------+-------------+-------------+----------------+----------------+----------------------+--------------------------------------+-------------------------+----------------------+------------------------------+
+(voltha) device 00010c6fb4ae4011
+(device 00010c6fb4ae4011) flows
+Device 00010c6fb4ae4011 (type: openolt)
+Flows (26):
++----------+----------+-----------+------------+----------+----------+----------+---------+---------+------------+---------------------+-------+
+| table_id | priority |    cookie |    in_port | vlan_vid | eth_type | ip_proto | udp_src | udp_dst |     output |      write-metadata | meter |
++----------+----------+-----------+------------+----------+----------+----------+---------+---------+------------+---------------------+-------+
+|        0 |    10000 | ~c3fcfed2 |         16 |     4091 |     888E |          |         |         | CONTROLLER | 1151514404601200640 |     1 |
+|        0 |    10000 | ~c3fcfed2 | CONTROLLER |     4090 |          |          |         |         |         16 |                     |       |
+|        0 |    10000 | ~c3fcfed2 |         16 |     4091 |     888E |          |         |         | CONTROLLER | 1151514404601200640 |     1 |
+|        0 |    10000 | ~c3fcfed2 |         16 |     4091 |     888E |          |         |         | CONTROLLER | 1151514404601200640 |     1 |
+|        0 |    10000 | ~c3fcfed2 | CONTROLLER |     4090 |          |          |         |         |         16 |                     |       |
+|        0 |    10000 | ~c3fcfed2 |         16 |     4091 |     888E |          |         |         | CONTROLLER | 1151514404601200640 |     1 |
+|        0 |    10000 | ~c3fcfed2 |         16 |     4091 |     888E |          |         |         | CONTROLLER | 1151514404601200640 |     1 |
+|        0 |    10000 | ~c3fcfed2 |         16 |     4091 |     888E |          |         |         | CONTROLLER | 1151514404601200640 |     1 |
+|        0 |    10000 | ~c3fcfed2 | CONTROLLER |     4090 |          |          |         |         |         16 |                     |       |
+|        0 |    10000 | ~c3fcfed2 |         16 |     4091 |     888E |          |         |         | CONTROLLER | 1151514404601200640 |     1 |
++----------+----------+-----------+------------+----------+----------+----------+---------+---------+------------+---------------------+-------+
+|        0 |    10000 | ~c3fcfed2 | CONTROLLER |     4090 |          |          |         |         |         16 |                     |       |
+|        0 |    10000 | ~c3fcfed2 |         16 |     4091 |     888E |          |         |         | CONTROLLER | 1151514404601200640 |     1 |
+|        0 |    10000 | ~3dd97249 |      65536 |          |     88CC |          |         |         | CONTROLLER |                     |       |
+|        0 |    10000 | ~74cd6437 |      65536 |          |      800 |       17 |      67 |      68 | CONTROLLER |                     |       |
+|        0 |    10000 | ~47a868a3 |         32 |     4091 |     888E |          |         |         | CONTROLLER | 1151514404601200640 |     1 |
+|        0 |    10000 | ~47a868a3 | CONTROLLER |     4090 |          |          |         |         |         32 |                     |       |
+|        0 |    10000 | ~47a868a3 |         32 |     4091 |     888E |          |         |         | CONTROLLER | 1151514404601200640 |     1 |
+|        0 |    10000 | ~47a868a3 |         32 |     4091 |     888E |          |         |         | CONTROLLER | 1151514404601200640 |     1 |
+|        0 |    10000 | ~47a868a3 | CONTROLLER |     4090 |          |          |         |         |         32 |                     |       |
+|        0 |    10000 | ~47a868a3 |         32 |     4091 |     888E |          |         |         | CONTROLLER | 1151514404601200640 |     1 |
++----------+----------+-----------+------------+----------+----------+----------+---------+---------+------------+---------------------+-------+
+|        0 |    10000 | ~47a868a3 |         32 |     4091 |     888E |          |         |         | CONTROLLER | 1151514404601200640 |     1 |
+|        0 |    10000 | ~47a868a3 |         32 |     4091 |     888E |          |         |         | CONTROLLER | 1151514404601200640 |     1 |
+|        0 |    10000 | ~47a868a3 | CONTROLLER |     4090 |          |          |         |         |         32 |                     |       |
+|        0 |    10000 | ~47a868a3 |         32 |     4091 |     888E |          |         |         | CONTROLLER | 1151514404601200640 |     1 |
+|        0 |    10000 | ~47a868a3 | CONTROLLER |     4090 |          |          |         |         |         32 |                     |       |
+|        0 |    10000 | ~47a868a3 |         32 |     4091 |     888E |          |         |         | CONTROLLER | 1151514404601200640 |     1 |
++----------+----------+-----------+------------+----------+----------+----------+---------+---------+------------+---------------------+-------+
+```
+
+Note that the each flow for the UNI ports 16 and 32 become 8 flows in the physical device.
+
+
+### After Successful Authentication
+
+When the RG behind one ONU (port 32) successfully authenticates, ONOS programs the subscriber's configured bandwidth profile (`BRONZE`), replacing the default bandwidth profile.
+In this case, we can check the flows and meters again
+
+```shell
+onos> flows -s
+deviceId=of:0000000000000001, flowRuleCount=33
+    -snip-
+deviceId=of:00000000c0a8646f, flowRuleCount=11
+    ADDED, bytes=0, packets=0, table=0, priority=10000, selector=[IN_PORT:32, ETH_TYPE:eapol, VLAN_VID:12], treatment=[immediate=[OUTPUT:CONTROLLER], meter=METER:2, metadata=METADATA:c004000000000/0]
+    ADDED, bytes=0, packets=0, table=0, priority=10000, selector=[IN_PORT:65536, ETH_TYPE:lldp], treatment=[immediate=[OUTPUT:CONTROLLER]]
+    ADDED, bytes=0, packets=0, table=0, priority=10000, selector=[IN_PORT:65536, ETH_TYPE:ipv6, IP_PROTO:17, UDP_SRC:546, UDP_DST:547], treatment=[immediate=[OUTPUT:CONTROLLER]]
+    ADDED, bytes=0, packets=0, table=0, priority=10000, selector=[IN_PORT:65536, ETH_TYPE:ipv4, IP_PROTO:17, UDP_SRC:67, UDP_DST:68], treatment=[immediate=[OUTPUT:CONTROLLER]]
+    ADDED, bytes=0, packets=0, table=0, priority=10000, selector=[IN_PORT:16, ETH_TYPE:eapol, VLAN_VID:4091], treatment=[immediate=[OUTPUT:CONTROLLER], meter=METER:1, metadata=METADATA:ffb004000000000/0]
+    ADDED, bytes=0, packets=0, table=0, priority=10000, selector=[IN_PORT:32, ETH_TYPE:ipv4, IP_PROTO:17, UDP_SRC:68, UDP_DST:67], treatment=[immediate=[OUTPUT:CONTROLLER], meter=METER:2, metadata=METADATA:4000000000/0]
+    ADDED, bytes=0, packets=0, table=0, priority=10000, selector=[IN_PORT:32, ETH_TYPE:ipv6, IP_PROTO:17, UDP_SRC:547, UDP_DST:546], treatment=[immediate=[OUTPUT:CONTROLLER], meter=METER:2, metadata=METADATA:4000000000/0]
+    ADDED, bytes=0, packets=0, table=0, priority=1000, selector=[IN_PORT:32, VLAN_VID:0], treatment=[immediate=[VLAN_ID:12], transition=TABLE:1, meter=METER:2, metadata=METADATA:6f004000010000/0]
+    ADDED, bytes=0, packets=0, table=0, priority=1000, selector=[IN_PORT:65536, METADATA:c, VLAN_VID:111], treatment=[immediate=[VLAN_POP], transition=TABLE:1, meter=METER:2, metadata=METADATA:c004000000020/0]
+    ADDED, bytes=0, packets=0, table=1, priority=1000, selector=[IN_PORT:32, VLAN_VID:12], treatment=[immediate=[VLAN_PUSH:vlan, VLAN_ID:111, OUTPUT:65536], meter=METER:2, metadata=METADATA:4000000000/0]
+    ADDED, bytes=0, packets=0, table=1, priority=1000, selector=[IN_PORT:65536, VLAN_VID:12], treatment=[immediate=[VLAN_POP, VLAN_ID:0, OUTPUT:32], meter=METER:2, metadata=METADATA:4000000000/0]
+
+onos> meters
+ DefaultMeter{device=of:00000000c0a8646f, cellId=1, appId=org.opencord.olt, unit=KB_PER_SEC, isBurst=true, state=ADDED, bands=[DefaultBand{rate=600, burst-size=30, type=DROP, drop-precedence=null}, DefaultBand{rate=400, burst-size=30, type=DROP, drop-precedence=null}, DefaultBand{rate=100000, burst-size=0, type=DROP, drop-precedence=null}]}
+ DefaultMeter{device=of:00000000c0a8646f, cellId=2, appId=org.opencord.olt, unit=KB_PER_SEC, isBurst=true, state=ADDED, bands=[DefaultBand{rate=5000, burst-size=2000, type=DROP, drop-precedence=null}, DefaultBand{rate=3000, burst-size=2000, type=DROP, drop-precedence=null}, DefaultBand{rate=100000, burst-size=0, type=DROP, drop-precedence=null}]}
+```
+
+Note that we now have UNI port 32 with a lot more flows which use the subscriber's VLANs (C-Vlan=12 and S-VLAN=111). We also have these flows pointing to a different meter (METER:2), which maps to the subscriber's configured bandwidth profile `BRONZE`.
+
+```shell
+onos> volt-bpmeter-mappings
+bpInfo=Bronze deviceId=of:00000000c0a8646f meterId=2
+bpInfo=Default deviceId=of:00000000c0a8646f meterId=1
+
+onos> bandwidthprofile Bronze
+BandwidthProfileInformation{id=Bronze, committedInformationRate=5000, committedBurstSize=2000, exceededInformationRate=3000, exceededBurstSize=2000, assuredInformationRate=100000}
+```
+
+The UNI port 16 based flow is still the initial eapol flow mapped to METER:1 as the RG behind the ONU has not authenticated yet.
+
+The flows in VOLTHA for the OLT show similar information.
+
+```shell
+(device 00010c6fb4ae4011) flows
+Device 00010c6fb4ae4011 (type: openolt)
+Flows (50):
++----------+----------+-----------+------------+----------+----------+----------+---------+---------+----------+--------------+----------+-----------+------------+------------+---------------------+-------+
+| table_id | priority |    cookie |    in_port | vlan_vid | eth_type | ip_proto | udp_src | udp_dst | metadata | set_vlan_vid | pop_vlan | push_vlan |     output | goto-table |      write-metadata | meter |
++----------+----------+-----------+------------+----------+----------+----------+---------+---------+----------+--------------+----------+-----------+------------+------------+---------------------+-------+
+|        0 |    10000 | ~c3fcfed2 |         16 |     4091 |     888E |          |         |         |          |              |          |           | CONTROLLER |            | 1151514404601200640 |     1 |
+|        0 |    10000 | ~c3fcfed2 | CONTROLLER |     4090 |          |          |         |         |          |              |          |           |         16 |            |                     |       |
+|        0 |    10000 | ~c3fcfed2 |         16 |     4091 |     888E |          |         |         |          |              |          |           | CONTROLLER |            | 1151514404601200640 |     1 |
+|        0 |    10000 | ~c3fcfed2 |         16 |     4091 |     888E |          |         |         |          |              |          |           | CONTROLLER |            | 1151514404601200640 |     1 |
+|        0 |    10000 | ~c3fcfed2 | CONTROLLER |     4090 |          |          |         |         |          |              |          |           |         16 |            |                     |       |
+|        0 |    10000 | ~c3fcfed2 |         16 |     4091 |     888E |          |         |         |          |              |          |           | CONTROLLER |            | 1151514404601200640 |     1 |
+|        0 |    10000 | ~c3fcfed2 |         16 |     4091 |     888E |          |         |         |          |              |          |           | CONTROLLER |            | 1151514404601200640 |     1 |
+|        0 |    10000 | ~c3fcfed2 |         16 |     4091 |     888E |          |         |         |          |              |          |           | CONTROLLER |            | 1151514404601200640 |     1 |
+|        0 |    10000 | ~c3fcfed2 | CONTROLLER |     4090 |          |          |         |         |          |              |          |           |         16 |            |                     |       |
+|        0 |    10000 | ~c3fcfed2 |         16 |     4091 |     888E |          |         |         |          |              |          |           | CONTROLLER |            | 1151514404601200640 |     1 |
++----------+----------+-----------+------------+----------+----------+----------+---------+---------+----------+--------------+----------+-----------+------------+------------+---------------------+-------+
+|        0 |    10000 | ~c3fcfed2 | CONTROLLER |     4090 |          |          |         |         |          |              |          |           |         16 |            |                     |       |
+|        0 |    10000 | ~c3fcfed2 |         16 |     4091 |     888E |          |         |         |          |              |          |           | CONTROLLER |            | 1151514404601200640 |     1 |
+|        0 |    10000 | ~3dd97249 |      65536 |          |     88CC |          |         |         |          |              |          |           | CONTROLLER |            |                     |       |
+|        0 |    10000 | ~74cd6437 |      65536 |          |      800 |       17 |      67 |      68 |          |              |          |           | CONTROLLER |            |                     |       |
+|        0 |     1000 | ~cfd16aad |      65536 |      111 |          |          |         |         |       12 |              |      Yes |           |            |          1 |    3377974598434848 |     2 |
+|        0 |     1000 | ~cfd16aad |      65536 |      111 |          |          |         |         |       12 |              |      Yes |           |            |          1 |    3377974598434848 |     2 |
+|        0 |     1000 | ~cfd16aad |      65536 |      111 |          |          |         |         |       12 |              |      Yes |           |            |          1 |    3377974598434848 |     2 |
+|        0 |     1000 | ~cfd16aad |      65536 |      111 |          |          |         |         |       12 |              |      Yes |           |            |          1 |    3377974598434848 |     2 |
+|        0 |     1000 | ~cfd16aad |      65536 |      111 |          |          |         |         |       12 |              |      Yes |           |            |          1 |    3377974598434848 |     2 |
+|        0 |     1000 | ~cfd16aad |      65536 |      111 |          |          |         |         |       12 |              |      Yes |           |            |          1 |    3377974598434848 |     2 |
++----------+----------+-----------+------------+----------+----------+----------+---------+---------+----------+--------------+----------+-----------+------------+------------+---------------------+-------+
+|        0 |     1000 | ~cfd16aad |      65536 |      111 |          |          |         |         |       12 |              |      Yes |           |            |          1 |    3377974598434848 |     2 |
+|        0 |     1000 | ~cfd16aad |      65536 |      111 |          |          |         |         |       12 |              |      Yes |           |            |          1 |    3377974598434848 |     2 |
+|        1 |     1000 | ~0048130f |         32 |       12 |          |          |         |         |          |          111 |          |      8100 |      65536 |            |        274877906944 |     2 |
+|        1 |     1000 | ~0048130f |         32 |       12 |          |          |         |         |          |          111 |          |      8100 |      65536 |            |        274877906944 |     2 |
+|        1 |     1000 | ~0048130f |         32 |       12 |          |          |         |         |          |          111 |          |      8100 |      65536 |            |        274877906944 |     2 |
+|        1 |     1000 | ~0048130f |         32 |       12 |          |          |         |         |          |          111 |          |      8100 |      65536 |            |        274877906944 |     2 |
+|        1 |     1000 | ~0048130f |         32 |       12 |          |          |         |         |          |          111 |          |      8100 |      65536 |            |        274877906944 |     2 |
+|        1 |     1000 | ~0048130f |         32 |       12 |          |          |         |         |          |          111 |          |      8100 |      65536 |            |        274877906944 |     2 |
+|        1 |     1000 | ~0048130f |         32 |       12 |          |          |         |         |          |          111 |          |      8100 |      65536 |            |        274877906944 |     2 |
+|        1 |     1000 | ~0048130f |         32 |       12 |          |          |         |         |          |          111 |          |      8100 |      65536 |            |        274877906944 |     2 |
++----------+----------+-----------+------------+----------+----------+----------+---------+---------+----------+--------------+----------+-----------+------------+------------+---------------------+-------+
+|        0 |    10000 | ~0019466f |         32 |          |      800 |       17 |      68 |      67 |          |              |          |           | CONTROLLER |            |        274877906944 |     2 |
+|        0 |    10000 | ~0019466f |         32 |          |      800 |       17 |      68 |      67 |          |              |          |           | CONTROLLER |            |        274877906944 |     2 |
+|        0 |    10000 | ~0019466f |         32 |          |      800 |       17 |      68 |      67 |          |              |          |           | CONTROLLER |            |        274877906944 |     2 |
+|        0 |    10000 | ~0019466f |         32 |          |      800 |       17 |      68 |      67 |          |              |          |           | CONTROLLER |            |        274877906944 |     2 |
+|        0 |    10000 | ~0019466f |         32 |          |      800 |       17 |      68 |      67 |          |              |          |           | CONTROLLER |            |        274877906944 |     2 |
+|        0 |    10000 | ~0019466f |         32 |          |      800 |       17 |      68 |      67 |          |              |          |           | CONTROLLER |            |        274877906944 |     2 |
+|        0 |    10000 | ~0019466f |         32 |          |      800 |       17 |      68 |      67 |          |              |          |           | CONTROLLER |            |        274877906944 |     2 |
+|        0 |    10000 | ~0019466f |         32 |          |      800 |       17 |      68 |      67 |          |              |          |           | CONTROLLER |            |        274877906944 |     2 |
+|        0 |    10000 | ~e5f8ecc9 |         32 |       12 |     888E |          |         |         |          |              |          |           | CONTROLLER |            |    3377974598434816 |     2 |
+|        0 |    10000 | ~e5f8ecc9 | CONTROLLER |     4090 |          |          |         |         |          |              |          |           |         32 |            |                     |       |
++----------+----------+-----------+------------+----------+----------+----------+---------+---------+----------+--------------+----------+-----------+------------+------------+---------------------+-------+
+|        0 |    10000 | ~e5f8ecc9 |         32 |       12 |     888E |          |         |         |          |              |          |           | CONTROLLER |            |    3377974598434816 |     2 |
+|        0 |    10000 | ~e5f8ecc9 |         32 |       12 |     888E |          |         |         |          |              |          |           | CONTROLLER |            |    3377974598434816 |     2 |
+|        0 |    10000 | ~e5f8ecc9 | CONTROLLER |     4090 |          |          |         |         |          |              |          |           |         32 |            |                     |       |
+|        0 |    10000 | ~e5f8ecc9 |         32 |       12 |     888E |          |         |         |          |              |          |           | CONTROLLER |            |    3377974598434816 |     2 |
+|        0 |    10000 | ~e5f8ecc9 |         32 |       12 |     888E |          |         |         |          |              |          |           | CONTROLLER |            |    3377974598434816 |     2 |
+|        0 |    10000 | ~e5f8ecc9 |         32 |       12 |     888E |          |         |         |          |              |          |           | CONTROLLER |            |    3377974598434816 |     2 |
+|        0 |    10000 | ~e5f8ecc9 | CONTROLLER |     4090 |          |          |         |         |          |              |          |           |         32 |            |                     |       |
+|        0 |    10000 | ~e5f8ecc9 |         32 |       12 |     888E |          |         |         |          |              |          |           | CONTROLLER |            |    3377974598434816 |     2 |
+|        0 |    10000 | ~e5f8ecc9 | CONTROLLER |     4090 |          |          |         |         |          |              |          |           |         32 |            |                     |       |
+|        0 |    10000 | ~e5f8ecc9 |         32 |       12 |     888E |          |         |         |          |              |          |           | CONTROLLER |            |    3377974598434816 |     2 |
++----------+----------+-----------+------------+----------+----------+----------+---------+---------+----------+--------------+----------+-----------+------------+------------+---------------------+-------+
+```
diff --git a/profiles/seba/operate/screenshots/att-si-0.png b/profiles/seba/operate/screenshots/att-si-0.png
new file mode 100644
index 0000000..9bde86c
--- /dev/null
+++ b/profiles/seba/operate/screenshots/att-si-0.png
Binary files differ
diff --git a/profiles/seba/operate/screenshots/att-si-1.png b/profiles/seba/operate/screenshots/att-si-1.png
new file mode 100644
index 0000000..10e7e3a
--- /dev/null
+++ b/profiles/seba/operate/screenshots/att-si-1.png
Binary files differ
diff --git a/profiles/seba/operate/tp-ops.md b/profiles/seba/operate/tp-ops.md
new file mode 100644
index 0000000..2f56680
--- /dev/null
+++ b/profiles/seba/operate/tp-ops.md
@@ -0,0 +1,322 @@
+# Technology Profile Operations
+
+As explained in the configuration guide, from SEBA 2.0 onwards, it is necessary to configure a Technology Profile before an OLT can be provisioned.
+However, in the SEBA 2.0-alpha release, changes to the tech-profile at runtime are not supported. We will look to add this support in future releases of VOLTHA and SEBA. It should be noted though that operators rarely have a need to change Tech profile parameters in operation, ie. QoS parameters (queues, gems, pbit mapping) are relatively static and predetermined for different service types (residential, business etc).
+
+Nevertheless in this release, you may wish to find out more information about the assigned gem-port and tcont ids for a particular subscriber/ONU.
+The following example shows a way to retrieve this information from VOLTHA's etcd database.
+
+## Viewing Tech Profile Instances
+
+A Tech profile when assigned to a subscriber/ONU is called an `instance` of the Tech profile.
+First we need to enter the etcd container using kubectl.
+
+```shell
+~$ kubectl exec -it $(kubectl get pods | grep etcd-cluster | awk 'NR==1{print $1}') /bin/sh
+```
+
+Once inside, we can use the etcdctl tool to fetch the stored information for the profile using the technology-type (eg. xgspon) and id (eg. 64).
+
+```shell
+/ # ETCDCTL_API=3 etcdctl get --prefix  service/voltha/technology_profiles/xgspon/64
+```
+
+The first part of the output will show the original downloaded tech-profile. For example, the following output shows a single-TCONT/4-gems tech profile with id 64 for XGS-PON technology.
+
+```shell
+service/voltha/technology_profiles/xgspon/64
+{
+  "name": "4QueueHybridProfileMap1",
+  "profile_type": "XPON",
+  "version": 1,
+  "num_gem_ports": 4,
+  "instance_control": {
+    "onu": "multi-instance",
+    "uni": "single-instance",
+    "max_gem_payload_size": "auto"
+  },
+  "us_scheduler": {
+    "additional_bw": "auto",
+    "direction": "UPSTREAM",
+    "priority": 0,
+    "weight": 0,
+    "q_sched_policy": "hybrid"
+  },
+  "ds_scheduler": {
+    "additional_bw": "auto",
+    "direction": "DOWNSTREAM",
+    "priority": 0,
+    "weight": 0,
+    "q_sched_policy": "hybrid"
+  },
+  "upstream_gem_port_attribute_list": [
+    {
+      "pbit_map": "0b00000101",
+      "aes_encryption": "True",
+      "scheduling_policy": "WRR",
+      "priority_q": 4,
+      "weight": 25,
+      "discard_policy": "TailDrop",
+      "max_q_size": "auto",
+      "discard_config": {
+        "max_threshold": 0,
+        "min_threshold": 0,
+        "max_probability": 0
+      }
+    },
+    {
+      "pbit_map": "0b00011010",
+      "aes_encryption": "True",
+      "scheduling_policy": "WRR",
+      "priority_q": 3,
+      "weight": 75,
+      "discard_policy": "TailDrop",
+      "max_q_size": "auto",
+      "discard_config": {
+        "min_threshold": 0,
+        "max_threshold": 0,
+        "max_probability": 0
+      }
+    },
+    {
+      "pbit_map": "0b00100000",
+      "aes_encryption": "True",
+      "scheduling_policy": "StrictPriority",
+      "priority_q": 2,
+      "weight": 0,
+      "discard_policy": "TailDrop",
+      "max_q_size": "auto",
+      "discard_config": {
+        "min_threshold": 0,
+        "max_threshold": 0,
+        "max_probability": 0
+      }
+    },
+    {
+      "pbit_map": "0b11000000",
+      "aes_encryption": "True",
+      "scheduling_policy": "StrictPriority",
+      "priority_q": 1,
+      "weight": 25,
+      "discard_policy": "TailDrop",
+      "max_q_size": "auto",
+      "discard_config": {
+        "min_threshold": 0,
+        "max_threshold": 0,
+        "max_probability": 0
+      }
+    }
+  ],
+  "downstream_gem_port_attribute_list": [
+    {
+      "pbit_map": "0b00000101",
+      "aes_encryption": "True",
+      "scheduling_policy": "WRR",
+      "priority_q": 4,
+      "weight": 10,
+      "discard_policy": "TailDrop",
+      "max_q_size": "auto",
+      "discard_config": {
+        "min_threshold": 0,
+        "max_threshold": 0,
+        "max_probability": 0
+      }
+    },
+    {
+      "pbit_map": "0b00011010",
+      "aes_encryption": "True",
+      "scheduling_policy": "WRR",
+      "priority_q": 3,
+      "weight": 90,
+      "discard_policy": "TailDrop",
+      "max_q_size": "auto",
+      "discard_config": {
+        "min_threshold": 0,
+        "max_threshold": 0,
+        "max_probability": 0
+      }
+    },
+    {
+      "pbit_map": "0b00100000",
+      "aes_encryption": "True",
+      "scheduling_policy": "StrictPriority",
+      "priority_q": 2,
+      "weight": 0,
+      "discard_policy": "TailDrop",
+      "max_q_size": "auto",
+      "discard_config": {
+        "min_threshold": 0,
+        "max_threshold": 0,
+        "max_probability": 0
+      }
+    },
+    {
+      "pbit_map": "0b11000000",
+      "aes_encryption": "True",
+      "scheduling_policy": "StrictPriority",
+      "priority_q": 1,
+      "weight": 25,
+      "discard_policy": "TailDrop",
+      "max_q_size": "auto",
+      "discard_config": {
+        "min_threshold": 0,
+        "max_threshold": 0,
+        "max_probability": 0
+      }
+    }
+  ]
+}
+```
+
+The next part of the output shows the tech-profile instance for the `BRCM22222222` ONU in our setup.
+Notice that gem-port ids 1024 - 1027 have been assigned to the 4 gem-ports, and an Alloc id of 1024 has been assigned to the TCONT.
+
+```shell
+service/voltha/technology_profiles/xgspon/64/BRCM22222222
+{
+    "downstream_gem_port_attribute_list": [
+        {
+            "weight": 10,
+            "aes_encryption": "True",
+            "pbit_map": "0b00000101",
+            "discard_config": {
+                "min_threshold": 0,
+                "max_probability": 0,
+                "max_threshold": 0
+            },
+            "gemport_id": 1024,
+            "max_q_size": "auto",
+            "scheduling_policy": "WRR",
+            "priority_q": 4,
+            "discard_policy": "TailDrop"
+        },
+        {
+            "weight": 90,
+            "aes_encryption": "True",
+            "pbit_map": "0b00011010",
+            "discard_config": {
+                "min_threshold": 0,
+                "max_probability": 0,
+                "max_threshold": 0
+            },
+            "gemport_id": 1025,
+            "max_q_size": "auto",
+            "scheduling_policy": "WRR",
+            "priority_q": 3,
+            "discard_policy": "TailDrop"
+        },
+        {
+            "weight": 0,
+            "aes_encryption": "True",
+            "pbit_map": "0b00100000",
+            "discard_config": {
+                "min_threshold": 0,
+                "max_probability": 0,
+                "max_threshold": 0
+            },
+            "gemport_id": 1026,
+            "max_q_size": "auto",
+            "scheduling_policy": "StrictPriority",
+            "priority_q": 2,
+            "discard_policy": "TailDrop"
+        },
+        {
+            "weight": 25,
+            "aes_encryption": "True",
+            "pbit_map": "0b11000000",
+            "discard_config": {
+                "min_threshold": 0,
+                "max_probability": 0,
+                "max_threshold": 0
+            },
+            "gemport_id": 1027,
+            "max_q_size": "auto",
+            "scheduling_policy": "StrictPriority",
+            "priority_q": 1,
+            "discard_policy": "TailDrop"
+        }
+    ],
+    "upstream_gem_port_attribute_list": [
+        {
+            "weight": 25,
+            "aes_encryption": "True",
+            "pbit_map": "0b00000101",
+            "discard_config": {
+                "min_threshold": 0,
+                "max_probability": 0,
+                "max_threshold": 0
+            },
+            "gemport_id": 1024,
+            "max_q_size": "auto",
+            "scheduling_policy": "WRR",
+            "priority_q": 4,
+            "discard_policy": "TailDrop"
+        },
+        {
+            "weight": 75,
+            "aes_encryption": "True",
+            "pbit_map": "0b00011010",
+            "discard_config": {
+                "min_threshold": 0,
+                "max_probability": 0,
+                "max_threshold": 0
+            },
+            "gemport_id": 1025,
+            "max_q_size": "auto",
+            "scheduling_policy": "WRR",
+            "priority_q": 3,
+            "discard_policy": "TailDrop"
+        },
+        {
+            "weight": 0,
+            "aes_encryption": "True",
+            "pbit_map": "0b00100000",
+            "discard_config": {
+                "min_threshold": 0,
+                "max_probability": 0,
+                "max_threshold": 0
+            },
+            "gemport_id": 1026,
+            "max_q_size": "auto",
+            "scheduling_policy": "StrictPriority",
+            "priority_q": 2,
+            "discard_policy": "TailDrop"
+        },
+        {
+            "weight": 25,
+            "aes_encryption": "True",
+            "pbit_map": "0b11000000",
+            "discard_config": {
+                "min_threshold": 0,
+                "max_probability": 0,
+                "max_threshold": 0
+            },
+            "gemport_id": 1027,
+            "max_q_size": "auto",
+            "scheduling_policy": "StrictPriority",
+            "priority_q": 1,
+            "discard_policy": "TailDrop"
+        }
+    ],
+    "subscriber_identifier": "BRCM22222222",
+    "us_scheduler": {
+        "q_sched_policy": "hybrid",
+        "direction": "UPSTREAM",
+        "additional_bw": "auto",
+        "weight": 0,
+        "alloc_id": 1024,
+        "priority": 0
+    },
+    "ds_scheduler": {
+        "q_sched_policy": "hybrid",
+        "direction": "DOWNSTREAM",
+        "additional_bw": "auto",
+        "weight": 0,
+        "alloc_id": 1024,
+        "priority": 0
+    }
+}
+
+```
+
+If there are more ONUs and subscribers in your setup, their tech-profile instances would also show up with different tcont and gem-port ids.