[VOL-1084] Fixing voltha documentation linting
Change-Id: Ibd7ef78910b6698c2c70d7c1f3ddb3041aabce30
diff --git a/docs/manuals/user/README.md b/docs/manuals/user/README.md
index 0fa2e19..d763dd2 100644
--- a/docs/manuals/user/README.md
+++ b/docs/manuals/user/README.md
@@ -28,4 +28,3 @@
## How can you help?
Contributions, small and large, are welcome. Minor contributions and bug fixes are always welcome in form of pull requests. For larger work, the best is to check in with the existing developers to see where help is most needed and to make sure your solution is compatible with the general philosophy of Voltha.
-
diff --git a/docs/manuals/user/SUMMARY.md b/docs/manuals/user/SUMMARY.md
index 383d771..7e81506 100644
--- a/docs/manuals/user/SUMMARY.md
+++ b/docs/manuals/user/SUMMARY.md
@@ -1,47 +1,45 @@
# Summary
-This is the TOC file used by the gitbook generator.
-To generate and serve static content, run:
+This is the TOC file used by the gitbook generator. To generate and serve static content, run:
- ```
- gitbook serve
- ```
+```shell
+gitbook serve
+```
* [Introduction](README.md)
* [Overview of Voltha](labtests/README.md)
* [Recommended Lab Test Scenarios](labtests/README.md)
- * [Requirements](labtests/requirements.md)
- * [Preparation](labtests/preparations.md)
- * [Voltha Bringup Tests](labtests/V00_voltha.md)
- * [V1 - Deploy Voltha and Verify its Vital Signs](labtests/V01_voltha_bringup_deploy.md)
- * [V2 - Connect to Voltha with REST and Web Browser](labtests/V02_voltha_bringup_rest.md)
- * [V3 - Connect to Voltha via its CLI](labtests/V03_voltha_bringup_cli.md)
- * [V4 - View Voltha Async Events with Kafkacat](labtests/V04_voltha_bringup_async.md)
- * [PONSIM OLT Tests](labtests/S00_ponsim_tests.md)
- * [S1 - Preprovision and Activate OLT](labtests/S01_ponsim_tests_launch_and_activate.md)
- * [S2 - Launch ONOS](labtests/S02_ponsim_tests_onos.md)
- * [S3 - Verify RG Authentication Scenario (EAPOL)](labtests/S03_ponsim_eapol_auth.md)
- * [S4 - Verify DHCP Lookup](labtests/S04_ponsim_verify_dhcp.md)
- * [S5 - Verify Unicast Access](labtests/S05_ponsim_tests_unicast.md)
- * [S6 - Verify IGMP Handling](labtests/S06_ponsim_tests_multicast.md)
- * [Tibit OLT Tests](labtests/T00_tibit_olt_tests.md)
- * [T1 - Preprovision and Activate OLT](labtests/T01_tibit_olt_tests_activate_olt.md)
- * [T2 - Launch ONOS](labtests/T02_tibit_olt_tests_onos.md)
- * [T3 - Verify EAPOL RG Authentication Scenario](labtests/T03_tibit_olt_eapol_auth.md)
- * [T4 - Verify DHCP Lookup](labtests/T04_tibit_verify_dhcp.md)
- * [T5 - Verify Unicast Access](labtests/T05_tibit_tests_unicast.md)
- * [T6 - Verify IGMP Handling](labtests/T06_tibit_tests_multicast.md)
- * [Maple OLT Tests](labtests/M00_maple_olt_tests.md)
- * [M1 - Preprovision and Activate OLT](labtests/M01_maple_olt_tests_activate_olt.md)
- * [M2 - Launch ONOS](labtests/M02_maple_olt_tests_onos.md)
- * [M3 - Verify EAPOL RG Authentication Scenario](labtests/M03_maple_olt_tests_eapol_auth.md)
- * [M4 - Verify DHCP Lookup](labtests/M04_maple_olt_tests_verify_dhcp.md)
- * [M5 - Verify Unicast Access](labtests/M05_maple_olt_tests_unicast.md)
- * [M6 - Verify IGMP Handling](labtests/M06_maple_olt_tests_multicast.md)
- * [Netconf Tests](labtests/N00_netconf.md)
+ * [Requirements](labtests/requirements.md)
+ * [Preparation](labtests/preparations.md)
+ * [Voltha Bringup Tests](labtests/V00_voltha.md)
+ * [V1 - Deploy Voltha and Verify its Vital Signs](labtests/V01_voltha_bringup_deploy.md)
+ * [V2 - Connect to Voltha with REST and Web Browser](labtests/V02_voltha_bringup_rest.md)
+ * [V3 - Connect to Voltha via its CLI](labtests/V03_voltha_bringup_cli.md)
+ * [V4 - View Voltha Async Events with Kafkacat](labtests/V04_voltha_bringup_async.md)
+ * [PONSIM OLT Tests](labtests/S00_ponsim_tests.md)
+ * [S1 - Preprovision and Activate OLT](labtests/S01_ponsim_tests_launch_and_activate.md)
+ * [S2 - Launch ONOS](labtests/S02_ponsim_tests_onos.md)
+ * [S3 - Verify RG Authentication Scenario (EAPOL)](labtests/S03_ponsim_eapol_auth.md)
+ * [S4 - Verify DHCP Lookup](labtests/S04_ponsim_verify_dhcp.md)
+ * [S5 - Verify Unicast Access](labtests/S05_ponsim_tests_unicast.md)
+ * [S6 - Verify IGMP Handling](labtests/S06_ponsim_tests_multicast.md)
+ * [Tibit OLT Tests](labtests/T00_tibit_olt_tests.md)
+ * [T1 - Preprovision and Activate OLT](labtests/T01_tibit_olt_tests_activate_olt.md)
+ * [T2 - Launch ONOS](labtests/T02_tibit_olt_tests_onos.md)
+ * [T3 - Verify EAPOL RG Authentication Scenario](labtests/T03_tibit_olt_eapol_auth.md)
+ * [T4 - Verify DHCP Lookup](labtests/T04_tibit_verify_dhcp.md)
+ * [T5 - Verify Unicast Access](labtests/T05_tibit_tests_unicast.md)
+ * [T6 - Verify IGMP Handling](labtests/T06_tibit_tests_multicast.md)
+ * [Maple OLT Tests](labtests/M00_maple_olt_tests.md)
+ * [M1 - Preprovision and Activate OLT](labtests/M01_maple_olt_tests_activate_olt.md)
+ * [M2 - Launch ONOS](labtests/M02_maple_olt_tests_onos.md)
+ * [M3 - Verify EAPOL RG Authentication Scenario](labtests/M03_maple_olt_tests_eapol_auth.md)
+ * [M4 - Verify DHCP Lookup](labtests/M04_maple_olt_tests_verify_dhcp.md)
+ * [M5 - Verify Unicast Access](labtests/M05_maple_olt_tests_unicast.md)
+ * [M6 - Verify IGMP Handling](labtests/M06_maple_olt_tests_multicast.md)
+ * [Netconf Tests](labtests/N00_netconf.md)
* [N1 - Deploy Netconf and Verify its Vital Signs](labtests/N01_netconf_bringup_deploy.md)
* [N2 - Connect to Netconf with a Netconf Browser](labtests/N02_netconf_client_connect.md)
* [N3 - Retrieve YANG Modules](labtests/N03_netconf_client_retrieve_YANG_modules.md)
* [N4 - Get VolthaInstance info](labtests/N04_netconf_client_get_volthainstance.md)
* [N5 - Get List of Adapters](labtests/N05_netconf_client_get_adapters.md)
-
diff --git a/docs/manuals/user/backup_restore/backup-restore.md b/docs/manuals/user/backup_restore/backup-restore.md
index 987e0d0..87fc2b2 100644
--- a/docs/manuals/user/backup_restore/backup-restore.md
+++ b/docs/manuals/user/backup_restore/backup-restore.md
@@ -1,4 +1,5 @@
-## Backup and Restore
+# Backup and Restore
+
The strategy for backup and restore for the entire Voltha cluster is
depicted in the diagram below.
@@ -8,7 +9,7 @@
For PoC-3, the strategy is to backup and restore Consul data manually.
-#### Backing Up Consul Data
+## Backing Up Consul Data
There are two sets of data that could be backup and restored from Consul:
@@ -22,21 +23,24 @@
The steps below show the basic backup and restore procedure. Consul provides
additional options, e.g. authentication, to use during these operations.
-##### Backup
+## Backup
-###### Prerequisites
+### Backup prerequisites
+
* Consul is running
-###### Steps
+#### Backup steps
* Get the IP and port number of one of the running consul node.
-
* Enter the voltha/tools container on one of the cluster node:
+
```angular2html
docker exec -it <containerid> bash
cd /home/tools
```
+
* Initiate the backup as a json file (consul_backup.json is just an example).
+
```angular2html
consul kv export -http-addr=http://<Consul_IP>:<Consul_PORT></Consul_PORT>
service/voltha > consul_backup.json
@@ -48,50 +52,53 @@
back_file will need to be uniquely identified for each backup,
preferably using a timestamp)
+## Restore
-##### Restore
+### Restore prerequisites
-###### Prerequisites
* The consul backup file exists and accesible from the voltha/tools container
-###### Steps
+#### Restore steps
Restoring a Consul backup implies that the current consul data needs to be
overwritten. This is typically a disaster recovery scenario.
-* Stop all the running voltha vcore instances as well as the consul
-instances. This should be performed from a docker swarm manager node.
+* Stop all the running voltha vcore instances as well as the consul instances. This should be performed from a docker swarm manager node.
+
```angular2html
docker service rm vcore_vcore
docker service rm consul_consul
```
+
* Start the consul service
```angular2html
docker stack deploy -c /cord/incubator/voltha/compose/docker-compose-consul-cluster.yml consul
```
+
* Ensure all consul agents are running. There should be 3/3 instances running
+
```angular2html
docker service ls consul_consul
```
* Get the IP and port number of one of the running consul node.
-
* Enter the voltha/tools container on one of the cluster machine:
+
```angular2html
docker exec -it <containerid> bash
cd /home/tools
```
-* Initiate the restore from a json file (consul_backup.json is just an
-example).
+
+* Initiate the restore from a json file (consul_backup.json is just an example).
+
```angular2html
consul kv import -http-addr=http://<Consul_IP>:<Consul_PORT></Consul_PORT> @consul_backup.json
```
* The backup data has been restored into Consul
+* Start the voltha instances. This should be performed from a docker swarm manager node.
-* Start the voltha instances. This should be performed from a docker swarm
-manager node.
```angular2html
docker stack deploy -c /cord/incubator/voltha/compose/docker-compose-voltha-swarm.yml vcore
```
diff --git a/docs/manuals/user/labtests/M00_maple_olt_tests.md b/docs/manuals/user/labtests/M00_maple_olt_tests.md
index aac09c9..c619280 100644
--- a/docs/manuals/user/labtests/M00_maple_olt_tests.md
+++ b/docs/manuals/user/labtests/M00_maple_olt_tests.md
@@ -1,11 +1,10 @@
# Maple OLT Tests
-These tests assume access to a Maple-based OLT PON system in the test
-POD.
+These tests assume access to a Maple-based OLT PON system in the test POD.
* [M1 - Preprovision and Activate OLT and ONU](M01_maple_olt_tests_activate_olt.md)
* [M2 - Launch ONOS](M02_maple_olt_tests_onos.md)
* [M3 - Verify EAPOL RG Authentication](M03_maple_olt_tests_eapol_auth.md)
* [M4 - Verify DHCP Lookup](M04_maple_olt_tests_verify_dhcp.md)
* [M5 - Verify Unicast Access](M05_maple_olt_tests_unicast.md)
-* [M6 - Verify IGMP Handling](M06_maple_olt_tests_multicast.md)
+* [M6 - Verify IGMP Handling](M06_maple_olt_tests_multicast.md)
diff --git a/docs/manuals/user/labtests/M01_maple_olt_tests_activate_olt.md b/docs/manuals/user/labtests/M01_maple_olt_tests_activate_olt.md
index 5e5ec71..7f84bfc 100644
--- a/docs/manuals/user/labtests/M01_maple_olt_tests_activate_olt.md
+++ b/docs/manuals/user/labtests/M01_maple_olt_tests_activate_olt.md
@@ -1,25 +1,24 @@
-## M1 - Preprovision and Activate OLT
+# M1 - Preprovision and activate OLT
-### Test Objective
+## Test Objective
* Purpose of this test is to verify a new OLT can be added and activated from VOLTHA
-* VOLTHA will connect with the OLT physical device and create a
- logical device with initial ports in its data store
+* VOLTHA will connect with the OLT physical device and create a logical device with initial ports in its data store
* VOLTHA will send Event notifications to ONOS and PON Manager for the newly added OLT
-### Test Configuration
+## Test Configuration
* The test setup is as shown in earlier sections
* Maple OLT should be reachable from VOLTHA on VLAN 4092
-#### Temporary Configuration
+## Temporary Configuration
* The following commands are temporary and will be removed when full
support in added to VOLTHA. The following commands add and verify
the VLAN 4092 interface to VOLTHA along with an IP address in the
subnet used to communicate with the Maple OLT.
-```
+```shell
docker exec -ti compose_voltha_1 bash
ip link add link eth1 name eth1.4092 type vlan id 4092
ip addr add 192.168.24.20/24 brd + dev eth1.4092
@@ -27,20 +26,18 @@
apt install -y iputils-ping
ping 192.168.24.10
exit
-
```
-
* Start the VOLTHA CLI
-**Step 1: If not yet running, launch the Voltha CLI:**
+## Step 1: If not yet running, launch the Voltha CLI
-```
+```shell
cd $VOLTHA_BASE
./cli/main.py -L
```
-```
+```shell
_ _ _ ___ _ ___
__ _____| | |_| |_ __ _ / __| | |_ _|
\ V / _ \ | _| ' \/ _` | | (__| |__ | |
@@ -49,14 +46,14 @@
(voltha)
```
-### Test Procedure
+## Test Procedure
* Issue CLI commands in the VOLTHA CLI to simulate an “Add-OLT device”
message coming from the PON Manager to VOLTHA
* Note: for the purposes of this document the OLT IP address is assumed
to be 192.168.24.10
-```
+```shell
preprovision_olt --device-type=maple_olt --ip-address=192.168.24.10
```
@@ -64,13 +61,13 @@
device in the device table. Executing the following command will
display known devices
-```
+```shell
devices
```
* The output should appear as follows
-```
+```shell
Devices:
+--------------+-----------+---------------+----------------+
| id | type | ipv4_address | admin_state |
@@ -81,25 +78,25 @@
* To activate the OLT, execute the following command
-```
+```shell
enable
```
+
* VOLTHA should initiate a connection and activation request to the Maple OLT
* VOLHA will create the logical OpenFlow device and ports and notify ONOS
* VOLTHA will send an OLT-Activated event notification to the PON Manager
* VOLTHA will automatically provision and activate a single ONU
-* Note: the automatic provisioning and activation of the single ONU is only
- temporary and will be replaced by ONU discovery and activation in a future
- release.
+* Note: the automatic provisioning and activation of the single ONU is only temporary and will be replaced by ONU discovery and activation in a future release.
* Verify the OLT and ONU status on device console with the following command
-```
+```shell
devices
```
+
* The output should appear similar to the following
-```
+```shell
Devices:
+--------------+--------------+------+--------------+------+---------------+-------------+-------------+----------------+----------------+-------------------------+--------------------------+
| id | type | root | parent_id | vlan | ipv4_address | admin_state | oper_status | connect_status | parent_port_no | proxy_address.device_id | proxy_address.channel_id |
@@ -116,36 +113,33 @@
forwarding rules is temporary and will be driven by flow rules in
a future release.
-Now that this OLT has provisioned all forwarding rules, it should continue
-to drop all traffic since ONOS is not running. We can verify this by starting
-the RG emulator and observing that EAPOL authentication does not succeed.
-To do this start our RG docker container.
+Now that this OLT has provisioned all forwarding rules, it should continue to drop all traffic since ONOS is not running. We can verify this by starting the RG emulator and observing that EAPOL authentication does not succeed. To do this start our RG docker container.
-```
+```shell
docker run --net=host --privileged --name RG -it voltha/tester bash
```
this should land you in a command prompt that looks like
-```
+```shell
root@8358ef5cad0e:/#
```
and at this prompt issue the following command
-```
+```shell
/sbin/wpa_supplicant -Dwired -ieno1 -c /etc/wpa_supplicant/wpa_supplicant.conf
```
this should hang with the following output. You will need to interrupt it with Ctrl-C.
-```
+```shell
Successfully initialized wpa_supplicant
eno1: Associated with 01:80:c2:00:00:03
WMM AC: Missing IEs
```
-### Pass/Fail Criteria
+## Pass/Fail Criteria
* OLT / ONUs status can be seen from Device Console
* Confirm OLT and ONUs have "oper_status" of ACTIVE
diff --git a/docs/manuals/user/labtests/M02_maple_olt_tests_onos.md b/docs/manuals/user/labtests/M02_maple_olt_tests_onos.md
index 35c215b..1a829de 100644
--- a/docs/manuals/user/labtests/M02_maple_olt_tests_onos.md
+++ b/docs/manuals/user/labtests/M02_maple_olt_tests_onos.md
@@ -1,37 +1,37 @@
-## M2 - Attach the Maple OLT to ONOS
+# M2 - Attach the Maple OLT to ONOS
-### Test Objective
+## Test Objective
Observe that ONOS has identified the OLT device and displays the correct number of ONU ports
-### Test Configuration
+## Test Configuration
* VOLTHA ensemble up and running.
* Maple configured with an OLT and one or more ONUs
-### Test Procedure
+## Test Procedure
First, start the onos container.
-```
+```shell
docker-compose -f compose/docker-compose-auth-test.yml up -d onos
```
this should output
-```
+```shell
Creating compose_onos_1
```
Make sure that ONOS is running
-```
+```shell
docker-compose -f compose/docker-compose-auth-test.yml ps
```
which shows
-```
+```shell
Name Command State Ports
------------------------------------------------------------------------------------------------------------------------------
compose_onos_1 ./bin/onos-service Up 0.0.0.0:6653->6653/tcp, 0.0.0.0:8101->8101/tcp, 0.0.0.0:8181->8181/tcp, 9876/tcp
@@ -39,14 +39,14 @@
Now, let's login to ONOS.
-```
+```shell
sudo apt install sshpass # may not be necessary
sshpass -p karaf ssh -o StrictHostKeyChecking=no -p 8101 karaf@localhost
```
this should land you at the ONOS prompt
-```
+```shell
Welcome to Open Network Operating System (ONOS)!
____ _ ______ ____
/ __ \/ |/ / __ \/ __/
@@ -68,25 +68,25 @@
Let's have a look at the devices that ONOS sees, to do this enter the following at the ONOS prompt.
-```
+```shell
devices
```
this will output the following
-```
+```shell
id=of:0000000000000001, available=true, role=MASTER, type=SWITCH, mfr=cord porject, hw=n/a, sw=logical device for Maple-based PON, serial=82126dceaa0b47f9ace655efcf7e97b4, driver=voltha, channelId=172.25.0.1:57746, managementAddress=172.25.0.1, name=of:0000000000000001, protocol=OF_13
```
next let's have a look at the ports that onos sees. Remember that ONOS sees the PON system as a logical device so ONU are represented as ports to ONOS. So let's see the ports in ONOS.
-```
+```shell
ports
```
which returns the following
-```
+```shell
id=of:0000000000000001, available=true, role=MASTER, type=SWITCH, mfr=cord porject, hw=n/a, sw=logical device for Maple-based PON, serial=82126dceaa0b47f9ace655efcf7e97b4, driver=voltha, channelId=172.25.0.1:57746, managementAddress=172.25.0.1, name=of:0000000000000001, protocol=OF_13
port=0, state=enabled, type=fiber, speed=0 , portName=nni, portMac=00:00:00:00:00:81
port=1025, state=enabled, type=fiber, speed=0 , portName=uni-1025, portMac=00:00:00:00:04:01
@@ -94,7 +94,7 @@
This correctly shows three ports. Yay!
-### Pass/Fail Criteria
+## Pass/Fail Criteria
* OLT observed in ONOS
* ONUs observed in ONOS as ports
diff --git a/docs/manuals/user/labtests/M03_maple_olt_tests_eapol_auth.md b/docs/manuals/user/labtests/M03_maple_olt_tests_eapol_auth.md
index a847a70..8959967 100644
--- a/docs/manuals/user/labtests/M03_maple_olt_tests_eapol_auth.md
+++ b/docs/manuals/user/labtests/M03_maple_olt_tests_eapol_auth.md
@@ -1,48 +1,48 @@
-## M3 - Verify EAPOL Remote Gateway Authentication
+# M3 - Verify EAPOL Remote Gateway Authentication
-### Test Objective
+## Test Objective
* Purpose of this test is to verify that 802.1X EAPOL messages are forwarded to the ONOS from VOLTHA
- * Correct Maple OLT and ONU PON environment
- * Logical device visible in VOLTHA CLI
+ * Correct Maple OLT and ONU PON environment
+ * Logical device visible in VOLTHA CLI
-### Test Configuration
+## Test Configuration
* VOLTHA ensemble running as per [deployment instructions](V01_voltha_bringup_deploy.md).
* Start the freeradius container
-```
+```shell
docker-compose -f compose/docker-compose-auth-test.yml up -d freeradius
```
* Maple OLT and ONUs registered as ACTIVE in VOLTHA
-### Test Procedure
+## Test Procedure
Now that this OLT is ACTIVE in VOLTHA, it should forward EAPOL
traffic. We can verify this by starting the RG emulator and observing
that EAPOL authentication does not succeed. To do this start our RG
docker container.
-```
+```shell
docker run --net=host --privileged --name RG -it voltha/tester bash
```
this should land you in a command prompt that looks like
-```
+```shell
root@8358ef5cad0e:/#
```
and at this prompt issue the following command
-```
+```shell
/sbin/wpa_supplicant -Dwired -ien01 -c /etc/wpa_supplicant/wpa_supplicant.conf
```
This should pass with the following output
-```
+```shell
Successfully initialized wpa_supplicant
ens9f1: Associated with 01:80:c2:00:00:03
WMM AC: Missing IEs
@@ -52,7 +52,6 @@
ens9f1: CTRL-EVENT-EAP-SUCCESS EAP authentication completed successfully
```
-
-### Pass/Fail Criteria
+## Pass/Fail Criteria
* EAPOL Authentication should pass
diff --git a/docs/manuals/user/labtests/M04_maple_olt_tests_verify_dhcp.md b/docs/manuals/user/labtests/M04_maple_olt_tests_verify_dhcp.md
index 28bcee1..368044d 100644
--- a/docs/manuals/user/labtests/M04_maple_olt_tests_verify_dhcp.md
+++ b/docs/manuals/user/labtests/M04_maple_olt_tests_verify_dhcp.md
@@ -1,42 +1,42 @@
-## M4 - Verify DHCP successfully obtains an IP address
+# M4 - Verify DHCP successfully obtains an IP address
-### Test Objective
+## Test Objective
* Purpose of this test is to verify that the Dynamic Host Configuration Protocol (DHCP)
- * Correct Maple OLT and ONU PON environment
- * Logical device visible in VOLTHA CLI
+ * Correct Maple OLT and ONU PON environment
+ * Logical device visible in VOLTHA CLI
-### Test Configuration
+## Test Configuration
* VOLTHA ensemble running as per [deployment instructions](V01_voltha_bringup_deploy.md).
* Note: The DHCP server is contained within ONOS.
* Maple OLT and ONUs registered as ACTIVE in VOLTHA
-### Test Procedure
+## Test Procedure
To start this procedure, execute the "ifconfig" command on the interface that will be getting assigned an IP address over DHCP and verify that IP address has not been assigned.
-```
+```shell
ifconfig eno1
```
Next, execute the following command to obtain an IP address from ONOS.
-```
+```shell
dhclient eno1
```
Note: When the dhclient command completes a common error message is displayed as follows. This mesage can safely be ignored.
-```
+```shell
dhclient: cannot move '/etc/*.conf' to '/etc/resolve.conf'
```
Then verify that an IP address was dynamically assigned to your interface
-```
+```shell
ifconfig eno1
```
-### Pass/Fail Criteria
+## Pass/Fail Criteria
* IP address assigned to interface
diff --git a/docs/manuals/user/labtests/M05_maple_olt_tests_unicast.md b/docs/manuals/user/labtests/M05_maple_olt_tests_unicast.md
index 8e214fa..01d37aa 100644
--- a/docs/manuals/user/labtests/M05_maple_olt_tests_unicast.md
+++ b/docs/manuals/user/labtests/M05_maple_olt_tests_unicast.md
@@ -1,33 +1,33 @@
-## M5 - Verify unicast traffic flow
+# M5 - Verify unicast traffic flow
-### Test Objective
+## Test Objective
* Purpose of this test is to verify that unicast traffic flows through the system
- * Correct Maple PON environment
- * Logical device visible in VOLTHA cli
+ * Correct Maple PON environment
+ * Logical device visible in VOLTHA cli
-### Test Configuration
+## Test Configuration
* VOLTHA ensemble running as per [deployment instructions](V01_voltha_bringup_deploy.md).
* Maple OLT and ONUs registered as ACTIVE in VOLTHA
-### Test Procedure
+## Test Procedure
Execute the following command from the RG side
-```
+```shell
ping -I eno1 1.2.3.4
```
Meanwhile tcpdump on the VOLTHA server.
-```
+```shell
sudo tcpdump -nei eno2
```
which will output
-```
+```shell
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on pon1_0, link-type EN10MB (Ethernet), capture size 262144 bytes
13:53:44.328260 06:0c:49:94:35:7e > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 50: vlan 1025, p 0, ethertype 802.1Q, vlan 1025, p 0, ethertype ARP, Request who-has 1.2.3.4 tell 10.1.11.63, length 28
@@ -38,6 +38,6 @@
13:53:49.322517 06:0c:49:94:35:7e > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 50: vlan 1025, p 0, ethertype 802.1Q, vlan 1025, p 0, ethertype ARP, Request who-has 1.2.3.4 tell 10.1.11.63, length 28
```
-### Pass/Fail Criteria
+## Pass/Fail Criteria
Ping completes successfully
diff --git a/docs/manuals/user/labtests/M06_maple_olt_tests_multicast.md b/docs/manuals/user/labtests/M06_maple_olt_tests_multicast.md
index 335ac5c..b396c7a 100644
--- a/docs/manuals/user/labtests/M06_maple_olt_tests_multicast.md
+++ b/docs/manuals/user/labtests/M06_maple_olt_tests_multicast.md
@@ -1,20 +1,20 @@
-## M6 - Test IGMP and multicast (Video) streams
+# M6 - Test IGMP and multicast (Video) streams
-### Test Objective
+## Test Objective
Verify that VOLTHA punts IGMP packets to ONOS and that ONOS provisions the right multicast rules
-### Test Configuration
+## Test Configuration
* VOLTHA ensemble up and running.
* Maple configured with an OLT with one or more ONUs
* An authenticated RG
-### Test Procedure
+## Test Procedure
At this point ONOS should show the following rules:
-```
+```shell
deviceId=of:0000000000000001, flowRuleCount=7
ADDED, bytes=0, packets=0, table=0, priority=10000, selector=[IN_PORT:128, ETH_TYPE:ipv4, IP_PROTO:2], treatment=[immediate=[OUTPUT:CONTROLLER]]
ADDED, bytes=0, packets=0, table=0, priority=1000, selector=[IN_PORT:128, ETH_TYPE:eapol], treatment=[immediate=[OUTPUT:CONTROLLER]]
@@ -29,13 +29,13 @@
So now let's send an IGMP packet from the RG up the ONU. To do this run the following in the RG container.
-```
+```shell
igmp.py -j -i eno1 -m 229.0.0.1
```
this will return
-```
+```shell
.
Sent 1 packets.
```
@@ -44,13 +44,13 @@
Let us now check the state in ONOS, starting with the group information. Run the following in the ONOS prompt.
-```
+```shell
groups
```
which returns
-```
+```shell
deviceId=of:0000000000000001, groupCount=1
id=0x1, state=ADDED, type=ALL, bytes=0, packets=0, appId=org.onosproject.cordmcast
id=0x1, bucket=1, bytes=0, packets=0, actions=[VLAN_POP:unknown, OUTPUT:128]
@@ -60,13 +60,13 @@
For a group to be useful a flow must point to this group. So let's check in ONOS whether a flow exists.
-```
+```shell
flows -s
```
and find a flow which looks like
-```
+```shell
ADDED, bytes=0, packets=0, table=0, priority=500, selector=[IN_PORT:0, ETH_TYPE:ipv4, VLAN_VID:140, IPV4_DST:229.0.0.1/32], treatment=[immediate=[GROUP:0x1]]
```
@@ -74,14 +74,14 @@
Now let's check whether we find this state in the logical device in VOLTHA. Let's run the following in the VOLTHA CLI.
-```
+```shell
logical_device
flows
```
which will return
-```
+```shell
Logical Device 1 (type: n/a)
Flows (10):
+----------+----------+-----------+---------+----------+----------+----------+-----------+---------+---------+----------+--------------+----------+-----------+-------+------------+------------+
@@ -104,13 +104,13 @@
Let's now look at the physical device level. Still in the Voltha CLI run the following.
-```
+```shell
devices
```
this returns
-```
+```shell
Devices:
+--------------+------------+------+--------------+------+-------------+-------------+----------------+----------------+------------------+-------------------------+--------------------------+
| id | type | root | parent_id | vlan | admin_state | oper_status | connect_status | parent_port_no | host_and_port | proxy_address.device_id | proxy_address.channel_id |
@@ -124,14 +124,14 @@
Identify the ONU which sent the IGMP packet (128) and copy its device id (56a6fc8b859f in this case). Next run the following in the Voltha CLI.
-```
+```shell
device 56a6fc8b859f
flows
```
which returns
-```
+```shell
Device 56a6fc8b859f (type: ponsim_onu)
Flows (6):
+----------+----------+-----------+---------+----------+----------+-----------+--------------+----------+-----------+--------+
@@ -150,7 +150,7 @@
Let us now try this out for real with a real packet. Let's first build a multicast frame and send it down the nni port, we can do this with scapy.
-```
+```shell
sudo scapy
mc = Ether(src="00:00:00:00:00:01")/Dot1Q(vlan=4000)/IP(dst="229.0.0.1", proto=17)
sendp(mc, iface="eno2")
@@ -158,13 +158,13 @@
Meanwhile run tcpdump in the RG container:
-```
+```shell
tcpdump -nei eno1
```
in he RG container while tcpdump'ing we should see the following output.
-```
+```shell
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eno1, link-type EN10MB (Ethernet), capture size 262144 bytes
08:09:43.004776 00:00:00:00:00:01 > 01:00:5e:00:00:01, ethertype IPv4 (0x0800), length 34: 10.0.2.15 > 229.0.0.1: [|udp]
@@ -172,7 +172,7 @@
Woohoo!
-### Pass/Fail Criteria
+## Pass/Fail Criteria
* Flows and groups installed in ONOS
* Flows and groups installed in Voltha
diff --git a/docs/manuals/user/labtests/M09_maple_olt_tests_verify_authentication.md b/docs/manuals/user/labtests/M09_maple_olt_tests_verify_authentication.md
index 8cf0beb..62ef62c 100644
--- a/docs/manuals/user/labtests/M09_maple_olt_tests_verify_authentication.md
+++ b/docs/manuals/user/labtests/M09_maple_olt_tests_verify_authentication.md
@@ -1,10 +1,11 @@
-## M9 - Verify RG Authentication Scenario
+# M9 - Verify RG Authentication Scenario
-### Test Objective
+## Test Objective
* Purpose of this test is to verify RG authentication is successful with Radius / EAP method
-### Test Configuration
+## Test Configuration
+
* Test Setup as shown in Section – 7
* Maple OLT should be reachable to VOLTHA over IP interface over VLAN 4092
* Maple OLT should be in active state on VOLTHA
@@ -13,7 +14,8 @@
* Radius Server is in service and configured to authenticate RG
* DHCP Server should be down
-### Test Procedure
+## Test Procedure
+
* Start EAP authentication process from RG by resetting RG.
* RG should send EAP-Start message and verify it reaches VOLTHA/ONOS
* EAP message exchange should happen between RG and VOLTHA/ONOS on Management VLAN 4091.
@@ -26,7 +28,7 @@
* VOLTHA/ ONOS should send IGMP Forwarding Flow to OLT and ONU
* OLT/ONU will be able to forward DHCP, Unicast and IGMP packets from RG
-### Pass/Fail Criteria
+## Pass/Fail Criteria
* RG is successfully authenticated based on its credentials in Radius Server
* DHCP, Unicast and IGMP forwarding flows are setup on OLT/ONU
diff --git a/docs/manuals/user/labtests/M10_maple_olt_tests_verify_dhcp.md b/docs/manuals/user/labtests/M10_maple_olt_tests_verify_dhcp.md
index 9ff81a2..a45f3ad 100644
--- a/docs/manuals/user/labtests/M10_maple_olt_tests_verify_dhcp.md
+++ b/docs/manuals/user/labtests/M10_maple_olt_tests_verify_dhcp.md
@@ -1,10 +1,11 @@
-## M10 - Verify DHCP Lookup
+# M10 - Verify DHCP Lookup
-### Test Objective
+## Test Objective
* Purpose of this test is to verify RG can successfully setup DHCP session
-### Test Configuration
+## Test Configuration
+
* Test Setup as shown in Section – 7
* Maple OLT should be reachable to VOLTHA over IP interface over VLAN 4092
* Maple OLT should be in active state on VOLTHA
@@ -13,14 +14,15 @@
* DHCP, Unicast and IGMP forwarding flows are setup on OLT and ONU
* DHCP Server is running
-### Test Procedure
+## Test Procedure
+
* Enable DHCP on RG by either resetting or enable/disable port
* DHCP Request from should be forwarded by VOLTHA/ONOS to DHCP Server
* OLT will send and receive DHCP Messages with SVID 4091 towards VOLTHA/ONOS
* DHCP should succeed and RG should have IP address
* Verify ARP, PING and Traceroute succeeds from RG to DHCP server (Not planned on it will be additional step)
-### Pass/Fail Criteria
+## Pass/Fail Criteria
+
* RG can receive IP address from DHCP server
* ARP, Ping and Traceroute is successful between RG and DHCP server
-
diff --git a/docs/manuals/user/labtests/M11_maple_olt_tests_verify_unicast.md b/docs/manuals/user/labtests/M11_maple_olt_tests_verify_unicast.md
index 0a0f789..9d07b8b 100644
--- a/docs/manuals/user/labtests/M11_maple_olt_tests_verify_unicast.md
+++ b/docs/manuals/user/labtests/M11_maple_olt_tests_verify_unicast.md
@@ -1,20 +1,23 @@
-## M11 - Verify Unicast Access
+# M11 - Verify Unicast Access
-### Test Objective
+## Test Objective
* Purpose of this test is to verify OLT and ONU can pass double tagged traffic
-### Test Configuration
+## Test Configuration
+
* Test Setup as shown in Section – 7
* Maple OLT and ONU is activated using VOLTHA
* Provision HSIA/unicast service on the OLT and connected ONU from VOLTHA
-### Test Procedure
+## Test Procedure
+
* On Spirent, configure double tagged traffic in downstream direction (1025,1025)
* On Spirent, send untagged traffic in upstream direction
* On the both ports capture traffic and verify the stream
-### Pass/Fail Criteria
+## Pass/Fail Criteria
+
* Upstream:
* Traffic coming out of OLT is double tagged 1025 ,1025
* Downstream:
diff --git a/docs/manuals/user/labtests/M12_maple_olt_tests_verify_multicast.md b/docs/manuals/user/labtests/M12_maple_olt_tests_verify_multicast.md
index 84b7c54..709a946 100644
--- a/docs/manuals/user/labtests/M12_maple_olt_tests_verify_multicast.md
+++ b/docs/manuals/user/labtests/M12_maple_olt_tests_verify_multicast.md
@@ -1,10 +1,11 @@
-## M12 - Verify Multicast Access
+# M12 - Verify Multicast Access
-### Test Objective
+## Test Objective
* To verify video service on RG
-### Test Configuration
+## Test Configuration
+
* Test Setup as shown in Section – 7
* Maple OLT should be reachable to VOLTHA over IP interface on VLAN 4092
* Maple OLT should be in active state on VOLTHA
@@ -12,12 +13,14 @@
* RG is authenticated with Radius and RG has IP address from DHCP
* VLC streaming server is active, VLC Video Client is connected to RG
-### Test Procedure
+## Test Procedure
+
* Enable Multicast Video Stream from VLC server
* Multicast Video stream should be tagged with VLAN ID 140
* From VLC client initiate connection to streaming Multicast channel
* Packet Capture at OLT port should show IGMP join message
* Observe Video quality on TV
-### Pass/Fail Criteria
+## Pass/Fail Criteria
+
* Video is displayed on TV
diff --git a/docs/manuals/user/labtests/M13_maple_olt_tests_verify_cvid_upstream.md b/docs/manuals/user/labtests/M13_maple_olt_tests_verify_cvid_upstream.md
index 9fbfaca..269e30e 100644
--- a/docs/manuals/user/labtests/M13_maple_olt_tests_verify_cvid_upstream.md
+++ b/docs/manuals/user/labtests/M13_maple_olt_tests_verify_cvid_upstream.md
@@ -1,14 +1,15 @@
-## M13 - Spirent - Verify Re-Write C-VID Upstream
+# M13 - Spirent - Verify Re-Write C-VID Upstream
-### Test Objective
+## Test Objective
* The purpose of this test is to verify ONU can re-write Priority tagged frames (VLAN ID 0) with single c-VID in upstream to wards OLT
-### Test Configuration
+## Test Configuration
+
* Test Setup as shown in Section – 7
* Maple OLT and ONU is activated using VOLTHA
* Provision HSIA/unicast service on the OLT and connected ONU from VOLTHA
-### Test Procedure
+## Test Procedure
-### Pass/Fail Criteria
+## Pass/Fail Criteria
diff --git a/docs/manuals/user/labtests/M14_maple_olt_tests_verify_cvid_downstream.md b/docs/manuals/user/labtests/M14_maple_olt_tests_verify_cvid_downstream.md
index f4fd4af..f14f646 100644
--- a/docs/manuals/user/labtests/M14_maple_olt_tests_verify_cvid_downstream.md
+++ b/docs/manuals/user/labtests/M14_maple_olt_tests_verify_cvid_downstream.md
@@ -1,13 +1,15 @@
-## M14 - Spirent - Verify Re-Write C-VID Downstream
+# M14 - Spirent - Verify Re-Write C-VID Downstream
-### Test Objective
+## Test Objective
+
* The Purpose of this test is to verify ONU can re-write single C-VID frames as priority tagges frames in downstream towards RG
-### Test Configuration
+## Test Configuration
+
* Test Setup as shown in Section – 7
* Maple OLT and ONU is activated using VOLTHA
* Provision HSIA/unicast service on the OLT and connected ONU from VOLTHA
-### Test Procedure
+## Test Procedure
-### Pass/Fail Criteria
+## Pass/Fail Criteria
diff --git a/docs/manuals/user/labtests/M15_maple_olt_tests_verify_qinq_upstream.md b/docs/manuals/user/labtests/M15_maple_olt_tests_verify_qinq_upstream.md
index bec0b50..6a94d51 100644
--- a/docs/manuals/user/labtests/M15_maple_olt_tests_verify_qinq_upstream.md
+++ b/docs/manuals/user/labtests/M15_maple_olt_tests_verify_qinq_upstream.md
@@ -1,21 +1,23 @@
-## M15 - Spirent - Verify 802.1ad (QinQ) Upstream
+# M15 - Spirent - Verify 802.1ad (QinQ) Upstream
-### Test Objective
+## Test Objective
* Purpose of this test is to verify OLT can insert second VLAN tag (SVID) in upstream direction
-### Test Configuration
+## Test Configuration
+
* Test Setup as shown in Section – 7
* Maple OLT and ONU is activated using VOLTHA
* Provision HSIA/unicast service on the OLT and connected ONU from VOLTHA
-### Test Procedure
+## Test Procedure
+
* On Spirent, send untagged traffic in upstream direction
* On the receiving port end, capture traffic and verify the VLAN parameters
-### Pass/Fail Criteria:
-* Upstream:
-o configure on the Spirent side to send untagged traffic (NO vlan configure)
-o OLT and ONT will add 1025 ,1025 respectively (i.e. 1025,1025)
-o Captured frame should contain 1025, 1025 vlan
+## Pass/Fail Criteria
+* Upstream:
+ * configure on the Spirent side to send untagged traffic (NO vlan configure)
+ * OLT and ONT will add 1025 ,1025 respectively (i.e. 1025,1025)
+ * Captured frame should contain 1025, 1025 vlan
diff --git a/docs/manuals/user/labtests/M16_maple_olt_tests_verify_qinq_downstream.md b/docs/manuals/user/labtests/M16_maple_olt_tests_verify_qinq_downstream.md
index c3007ae..bfe6bfb 100644
--- a/docs/manuals/user/labtests/M16_maple_olt_tests_verify_qinq_downstream.md
+++ b/docs/manuals/user/labtests/M16_maple_olt_tests_verify_qinq_downstream.md
@@ -1,20 +1,23 @@
-## M16 - Spirent - Verify 802.1ad (QinQ) Downstream
+# M16 - Spirent - Verify 802.1ad (QinQ) Downstream
-### Test Objective
+## Test Objective
* Purpose of this test is to verify OLT (DNX) can strip SVID from the incoming packets and forward only with CVID to ONU
-### Test Configuration
+## Test Configuration
+
* Test Setup as shown in Section – 7
* Maple OLT and ONU is activated using VOLTHA
* Provision HSIA/unicast service on the OLT and connected ONU from VOLTHA
-### Test Procedure
+## Test Procedure
+
* On Spirent, configure double tagged traffic in downstream direction (1025,1025)
* On the receiving port, capture traffic and verify the VLAN parameters
-### Pass/Fail Criteria
+## Pass/Fail Criteria
+
* Downstream:
- * configure on the Spirent side to send traffic with 1025,1025
- * OLT will strip the 1025 and send traffic to corresponding ONT ( i.e. 1025 to ONT)
- * Captured frame should contain only one VLAN tag (1025 VLAN)
+ * configure on the Spirent side to send traffic with 1025,1025
+ * OLT will strip the 1025 and send traffic to corresponding ONT ( i.e. 1025 to ONT)
+ * Captured frame should contain only one VLAN tag (1025 VLAN)
diff --git a/docs/manuals/user/labtests/M17_maple_olt_tests_verify_ipv4_downstream.md b/docs/manuals/user/labtests/M17_maple_olt_tests_verify_ipv4_downstream.md
index 5935365..1bd1c8b 100644
--- a/docs/manuals/user/labtests/M17_maple_olt_tests_verify_ipv4_downstream.md
+++ b/docs/manuals/user/labtests/M17_maple_olt_tests_verify_ipv4_downstream.md
@@ -1,24 +1,26 @@
-## M17 - Spirent - Verify IPv4 Unicast Streams Downstream
+# M17 - Spirent - Verify IPv4 Unicast Streams Downstream
-### Test Objective
+## Test Objective
* Purpose of this test is to verify OLT and ONU can handle double tagged traffic
-### Test Configuration
+## Test Configuration
+
* Test Setup as shown in Section – 7
* Maple OLT and ONU is activated using VOLTHA
* Provision HSIA/unicast service on the OLT and connected ONU from VOLTHA
-### Test Procedure
+## Test Procedure
+
* On Spirent, configure double tagged traffic in downstream direction (1025,1025)
* On Spirent, send untagged traffic in upstream direction
* On the both ports capture traffic and verify the stream
-### Pass / Fail Criteria
-* Upstream:
- * configure on the Spirent side to send traffic with NO vlan
- * OLT and ONT will add 1025 ,1025 respectively (i.e. 1025,1025)
-* Downstream:
- * configure on the Spirent side to send traffic with 1025,1025
- * OLT will strip the 1025 and send traffic to corresponding ONT ( i.e. 1025 to ONT)
+## Pass / Fail Criteria
+* Upstream:
+ * configure on the Spirent side to send traffic with NO vlan
+ * OLT and ONT will add 1025 ,1025 respectively (i.e. 1025,1025)
+* Downstream:
+ * configure on the Spirent side to send traffic with 1025,1025
+ * OLT will strip the 1025 and send traffic to corresponding ONT ( i.e. 1025 to ONT)
diff --git a/docs/manuals/user/labtests/M18_maple_olt_tests_verify_ipv4_downstream_case2.md b/docs/manuals/user/labtests/M18_maple_olt_tests_verify_ipv4_downstream_case2.md
index a58e3d6..7d50096 100644
--- a/docs/manuals/user/labtests/M18_maple_olt_tests_verify_ipv4_downstream_case2.md
+++ b/docs/manuals/user/labtests/M18_maple_olt_tests_verify_ipv4_downstream_case2.md
@@ -1,17 +1,20 @@
-## M18 - Spirent - Verify IPv4 Unicast Streams Downstream Case2
+# M18 - Spirent - Verify IPv4 Unicast Streams Downstream Case2
-### Test Objective
+## Test Objective
* Purpose of this test is to verify P-BIT parameter is propagated to C-VID when sending downstream traffic to ONU
-### Test Configuration
+## Test Configuration
+
* Test Setup as shown in Section – 7
* Maple OLT and ONU is activated using VOLTHA
* Provision HSIA/unicast service on the OLT and connected ONU from VOLTHA
-### Test Procedure
+## Test Procedure
+
* On Spirent, configure P-BIT for CVID. ex: set P-BIT value to 3
* On the Receive port end, capture traffic and verify the P-BIT parameter on SVID in Up stream direction
-### Pass / Fail Criteria
+## Pass / Fail Criteria
+
* P-BIT value s-VID is copied to C-VID in downstream direction
diff --git a/docs/manuals/user/labtests/M19_maple_olt_tests_ranging.md b/docs/manuals/user/labtests/M19_maple_olt_tests_ranging.md
index 9c5d42c..42d380e 100644
--- a/docs/manuals/user/labtests/M19_maple_olt_tests_ranging.md
+++ b/docs/manuals/user/labtests/M19_maple_olt_tests_ranging.md
@@ -1,19 +1,21 @@
-## M19 - 10k and 20k ONU Ranging
+# M19 - 10k and 20k ONU Ranging
-### Test Objective
+## Test Objective
* Purpose of this test is to verify ONU can range with 10km and 20 KM distance
-### Test Configuration
+## Test Configuration
+
* Test Setup as shown in Section – 7
-### Test Procedure
+## Test Procedure
+
* Place the ONU Using 10KM fiber pool, Activate the OLT and ONU using VOLTHA
* Place the ONU Using 20KM fiber pool, Activate the OLT and ONU using VOLTHA
* Provision HSIA/unicast service on the OLT and connected ONU from VOLTHA and send traffic
-### Pass / Fail Criteria
+## Pass / Fail Criteria
+
* OLT can range the ONU successfully with 10 KM distance
* OLT can range the ONU successfully with 20 KM distance
* Traffic flows successfully with 20 KM distance without any drops
-
diff --git a/docs/manuals/user/labtests/M20_maple_olt_tests_mib.md b/docs/manuals/user/labtests/M20_maple_olt_tests_mib.md
index 0f1fad9..eb5e82d 100644
--- a/docs/manuals/user/labtests/M20_maple_olt_tests_mib.md
+++ b/docs/manuals/user/labtests/M20_maple_olt_tests_mib.md
@@ -1,15 +1,17 @@
-## M20 - MIB Download and Upload
+# M20 - MIB Download and Upload
-### Test Objective
+## Test Objective
* Purpose of this test is to verify OMCI MIB is downloaded from OLT to ONU and vice versa as part of ONU ranging process
-### Test Configuration
+## Test Configuration
+
* Test Setup as shown in Section – 7
-### Test Procedure
+## Test Procedure
+
* Activate the Maple OLT and ONU using VOLTHA
-### Pass / Fail Criteria
-* Once the ONU ranges, OMCI MIB is downloaded from OLT to ONU and vice versa
+## Pass / Fail Criteria
+* Once the ONU ranges, OMCI MIB is downloaded from OLT to ONU and vice versa
diff --git a/docs/manuals/user/labtests/M21_maple_olt_tests_2000_byte_frames.md b/docs/manuals/user/labtests/M21_maple_olt_tests_2000_byte_frames.md
index df44060..dcc33f4 100644
--- a/docs/manuals/user/labtests/M21_maple_olt_tests_2000_byte_frames.md
+++ b/docs/manuals/user/labtests/M21_maple_olt_tests_2000_byte_frames.md
@@ -1,17 +1,19 @@
-## M21 - 2000 byte Frames
+# M21 - 2000 byte Frames
-### Test Objective
+## Test Objective
* Purpose of this test is to verify OLT and ONU can accept and forward traffic when frame size of 2000 bytes
-### Test Configuration
+## Test Configuration
+
* Test Setup as shown in Section – 7
* Maple OLT and ONU is activated using VOLTHA
* Provision HSIA/unicast service on the OLT and connected ONU from VOLTHA
-### Test Procedure
+## Test Procedure
+
* Send data/unicast traffic with frame size of 2000 Bytes in upstream and downstream direction
-### Pass / Fail Criteria
-* OLT & ONU can accept and forward frames of size 2000 Bytes successfully
+## Pass / Fail Criteria
+* OLT & ONU can accept and forward frames of size 2000 Bytes successfully
diff --git a/docs/manuals/user/labtests/M22_maple_olt_tests_data_and_video.md b/docs/manuals/user/labtests/M22_maple_olt_tests_data_and_video.md
index c551928..7f6646a 100644
--- a/docs/manuals/user/labtests/M22_maple_olt_tests_data_and_video.md
+++ b/docs/manuals/user/labtests/M22_maple_olt_tests_data_and_video.md
@@ -1,17 +1,20 @@
-## M22 - Simultaneous Data and Video Streams
+# M22 - Simultaneous Data and Video Streams
-### Test Objective
+## Test Objective
* Purpose of this test is to verify OLT and ONU can handle data and multicast traffic
-### Test Configuration
+## Test Configuration
+
* Test Setup as shown in Section – 7
* Maple OLT and ONU is activated using VOLTHA
* Provision HSIA/unicast service on the OLT and connected ONU from VOLTHA
* Provision Multicast/IGMP service on the ONU from VOLTHA
-### Test Procedure
+## Test Procedure
+
* Send bi-directional data traffic and multicast traffic on the ONU
-### Expected Result
+## Expected Result
+
* Bi-directional data Traffic and Multicast traffic on the ONU went through successfully
diff --git a/docs/manuals/user/labtests/M23_maple_olt_tests_overnight.md b/docs/manuals/user/labtests/M23_maple_olt_tests_overnight.md
index e076e73..56bd592 100644
--- a/docs/manuals/user/labtests/M23_maple_olt_tests_overnight.md
+++ b/docs/manuals/user/labtests/M23_maple_olt_tests_overnight.md
@@ -1,17 +1,20 @@
-## M23 - Overnight Traffic Test
+# M23 - Overnight Traffic Test
-### Test Objective
+## Test Objective
* Purpose of this test is to verify overnight traffic test went through successfully with zero drops
-### Test Configuration
+## Test Configuration
+
* Test Setup as shown in Section – 7
* Maple OLT and ONU is activated using VOLTHA
* Provision HSIA/unicast service on the OLT and connected ONU from VOLTHA
* Provision Multicast/IGMP service on the ONU from VOLTHA
-### Test Procedure
+## Test Procedure
+
* Send bi-directional data and multicast traffic over night and monitor for traffic drops
-### Pass / Fail Criteria:
+## Pass / Fail Criteria
+
* Bi-directional traffic went through overnight and no traffic drops
diff --git a/docs/manuals/user/labtests/M24_maple_olt_tests_ha_fiber_disconnect.md b/docs/manuals/user/labtests/M24_maple_olt_tests_ha_fiber_disconnect.md
index 6ac6a93..607dada 100644
--- a/docs/manuals/user/labtests/M24_maple_olt_tests_ha_fiber_disconnect.md
+++ b/docs/manuals/user/labtests/M24_maple_olt_tests_ha_fiber_disconnect.md
@@ -1,18 +1,21 @@
-## M24 - Traffic Recovers After Fiber Disconnect (Best Effort)
+# M24 - Traffic Recovers After Fiber Disconnect (Best Effort)
-### Test Objective
+## Test Objective
* Purpose of this test is to verify pull & re-insert of PON cable can resume the traffic on the ONU
-### Test Configuration
+## Test Configuration
+
* Test Setup as shown in Section – 7
* Maple OLT and ONU is activated using VOLTHA
* Provision HSIA/unicast service on the OLT and connected ONU from VOLTHA
-### Test Procedure
+## Test Procedure
+
* Now manually pull the fiber cable the from ONU
* Re-insert the fiber cable to the ONU and verify ONU is ranges and traffic restores
-### Pass / Fail Criteria
+## Pass / Fail Criteria
+
* Traffic stopped when cable is pulled from ONU
* After cable insert, ONU is ranged back and traffic starts flowing automatically on the ONU
diff --git a/docs/manuals/user/labtests/M25_maple_olt_tests_ha_onu_reset.md b/docs/manuals/user/labtests/M25_maple_olt_tests_ha_onu_reset.md
index 585139f..05e289c 100644
--- a/docs/manuals/user/labtests/M25_maple_olt_tests_ha_onu_reset.md
+++ b/docs/manuals/user/labtests/M25_maple_olt_tests_ha_onu_reset.md
@@ -1,19 +1,21 @@
-## M25 - Traffic Recovers After ONU Reset (Best Effort)
+# M25 - Traffic Recovers After ONU Reset (Best Effort)
-### Test Objective
+## Test Objective
* Purpose of this test is to verify reset/reboot of ONU is able to recover the traffic on the ONU
-### Test Configuration
+## Test Configuration
+
* Test Setup as shown in Section – 7
* Maple OLT and ONU is activated using VOLTHA
* Provision HSIA/unicast service on the OLT and connected ONU from VOLTHA
-### Test Procedure
+## Test Procedure
+
* Now manually reset /reboot the ONU
* Verify whether ONU ranges and traffic is restored successfully
-### Pass / Fail Criteria
+## Pass / Fail Criteria
+
* Traffic should stop flowing when ONU is restarted
* After ONU is up, traffic restores automatically on the ONU
-
diff --git a/docs/manuals/user/labtests/M26_maple_olt_tests_ha_olt_reset.md b/docs/manuals/user/labtests/M26_maple_olt_tests_ha_olt_reset.md
index 69ec6e6..d13e95a 100644
--- a/docs/manuals/user/labtests/M26_maple_olt_tests_ha_olt_reset.md
+++ b/docs/manuals/user/labtests/M26_maple_olt_tests_ha_olt_reset.md
@@ -1,21 +1,20 @@
-## M26 - Traffic Recovers After OLT Reset (Best Effort)
+# M26 - Traffic Recovers After OLT Reset (Best Effort)
-### Test Objective
+## Test Objective
* Purpose of this test is to verify reset/reboot of ONU is able to recover the traffic on the ONU
-### Test Configuration
+## Test Configuration
* Test Setup as shown in Section – 7
* Maple OLT and ONU is activated using VOLTHA
* Provision HSIA/unicast service on the OLT and connected ONU from VOLTHA
-### Test Procedure
+## Test Procedure
* Now reset /reboot the OLT
* Verify OLT is up, ONU ranges and traffic is restored successfully
-### Pass / Fail Criteria
+## Pass / Fail Criteria
* When OLT is up, ONU ranges back and traffic restores automatically on the ONU
-
diff --git a/docs/manuals/user/labtests/M27_maple_olt_tests_ha_tor_switch_reset.md b/docs/manuals/user/labtests/M27_maple_olt_tests_ha_tor_switch_reset.md
index 2d6c247..0177d88 100644
--- a/docs/manuals/user/labtests/M27_maple_olt_tests_ha_tor_switch_reset.md
+++ b/docs/manuals/user/labtests/M27_maple_olt_tests_ha_tor_switch_reset.md
@@ -1,18 +1,20 @@
-## M27 - Traffic Recovers After ToR Switch Reset (Best Effort)
+# M27 - Traffic Recovers After ToR Switch Reset (Best Effort)
-### Test Objective
+## Test Objective
* Purpose of this test is to verify reset/reboot of TOR switch is able to recover the traffic
-### Test Configuration
+## Test Configuration
+
* Test Setup as shown in Section – 7
* Maple OLT and ONU is activated using VOLTHA
* Provision HSIA/unicast service on the OLT and connected ONU from VOLTHA
-### Test Procedure
+## Test Procedure
+
* Now reset /reboot the TOR switch
* Verify TOR is up, Traffic is restored successfully
-### Pass / Fail Criteria
-* Traffic should stop flowing when TOR switch is restarted. Once the TOR switch is up, Traffic restored successfully on the ONU
+## Pass / Fail Criteria
+* Traffic should stop flowing when TOR switch is restarted. Once the TOR switch is up, Traffic restored successfully on the ONU
diff --git a/docs/manuals/user/labtests/N00_netconf.md b/docs/manuals/user/labtests/N00_netconf.md
index 61c6dad..a7e14dc 100644
--- a/docs/manuals/user/labtests/N00_netconf.md
+++ b/docs/manuals/user/labtests/N00_netconf.md
@@ -5,13 +5,10 @@
1. Deploys Netconf and its companion containers
2. Verifies base-line operation of Netconf Server
3. Introduces the tester to a subset of Netconf operations, which are
- * SSH connection
- * Retrieve Voltha YANG modules
- * Initiate a GET command on a Voltha Instance
- * Retrieve the list of adapters
-
-
+ * SSH connection
+ * Retrieve Voltha YANG modules
+ * Initiate a GET command on a Voltha Instance
+ * Retrieve the list of adapters
+
Running these test cases will require a Netconf Browser. The MG Soft
- Netconf Browser will be used. A free 30-day trial of that browser can be
- obtained from ```http://www.mg-soft.com/download
- .html?product=netconfbrowser```.
+ Netconf Browser will be used. A free 30-day trial of that browser can be obtained from <http://www.mg-soft.com/download.html?product=netconfbrowser>.
diff --git a/docs/manuals/user/labtests/N01_netconf_bringup_deploy.md b/docs/manuals/user/labtests/N01_netconf_bringup_deploy.md
index c79a8a3..e15f6d1 100644
--- a/docs/manuals/user/labtests/N01_netconf_bringup_deploy.md
+++ b/docs/manuals/user/labtests/N01_netconf_bringup_deploy.md
@@ -1,32 +1,25 @@
-## N1 - Deploy Netconf and Verify its Vital Signs
+# N1 - Deploy Netconf and Verify its Vital Signs
-### Test Objective
+## Test Objective
-* Purpose of this test is to launch Netconf together with all of its
-dependencies and verify that all are in working condition.
+* Purpose of this test is to launch Netconf together with all of its dependencies and verify that all are in working condition.
-### Test Configuration and Procedure
+## Test Configuration and Procedure
-* Since Netconf is deployed as part of Voltha ensemble, follow the
-instructions from [Voltha](V01_voltha_bringup_deploy.md)
+* Since Netconf is deployed as part of Voltha ensemble, follow the instructions from [Voltha](V01_voltha_bringup_deploy.md)
+## Pass/Fail Criteria (Installation Checkpoint)
-### Pass/Fail Criteria (Installation Checkpoint)
+* The Pass/Fail criteria in [Voltha](V01_voltha_bringup_deploy.md) applies here as well.
+* Verify Netconf server is up and listening on port 1830. Issue the following commands in the same Linux terminal:
-* The Pass/Fail criteria in [Voltha](V01_voltha_bringup_deploy.md)
-applies here as well.
-
-* Verify Netconf server is up and listening on port 1830. Issue the
-following commands in the same Linux terminal:
+```shell
+docker-compose -f compose/docker-compose-system-test.yml logs netconf | grep 1830
+```
- ```
- docker-compose -f compose/docker-compose-system-test.yml logs netconf | grep 1830
- ```
+Expected output are:
- Expected output are:
-
- ```
- netconf_1 | <time> DEBUG nc_server.start_ssh_server {port: 1830, event: starting, instance_id: compose_netconf_1}
- netconf_1 | <time DEBUG nc_server.start_ssh_server {port: 1830, event: started, instance_id: compose_netconf_1}
-
- ```
\ No newline at end of file
+```shell
+netconf_1 | <time> DEBUG nc_server.start_ssh_server {port: 1830, event: starting, instance_id: compose_netconf_1}
+netconf_1 | <time DEBUG nc_server.start_ssh_server {port: 1830, event: started, instance_id: compose_netconf_1}
+```
diff --git a/docs/manuals/user/labtests/N02_netconf_client_connect.md b/docs/manuals/user/labtests/N02_netconf_client_connect.md
index fcc35c1..e679ae7 100644
--- a/docs/manuals/user/labtests/N02_netconf_client_connect.md
+++ b/docs/manuals/user/labtests/N02_netconf_client_connect.md
@@ -1,74 +1,64 @@
-## N2 - Connect to Netconf Server using a Netconf Browser
+# N2 - Connect to Netconf Server using a Netconf Browser
-### Test Objective
+## Test Objective
-* The purpose of this test is to verify the SSH connectivity between the
-Netconf Browser and the Netconf Server
+* The purpose of this test is to verify the SSH connectivity between the Netconf Browser and the Netconf Server
-### Test Configuration
+## Test Configuration
* Preparatory steps completed
* Test-case N01 completed successfully
-* A netconf browser is available. MG Soft Netconf Browser will be used in
-the subsequent test procedures
+* A netconf browser is available. MG Soft Netconf Browser will be used in the subsequent test procedures
-### Test Procedure
+## Test Procedure
-* Connect to the Netconf Server
-
+* Connect to the Netconf Server
* Open a Netconf Browser (MG Soft in our case).
- * From the ```File``` menu select ```connect``` option.
+ * From the *File* menu select *connect* option.
* Use the following values when prompted:
- ```
- Host : <server-ip-or-hostname>
- Port : 830
- Username : voltha
- ```
-
- Do not select ```Public Key Authentication ```. While the server
- supports this authentication method the client key will need to be
- added to the Netconf server first. For ease of the test procedure
- we will only use username/password. The picture below shows the
- connect window.
-
- ![Connect prompt](./netconf_login_prompt.png "Connect prompt")
-
- * Select ```connect``` from the pop-up window
- * When prompted for the password, enter ```voltha```
+```shell
+Host : <server-ip-or-hostname>
+Port : 830
+Username : voltha
+```
-### Pass/Fail Criteria
+Do not select *Public Key Authentication*. While the server supports this authentication method the client key will need to be added to the Netconf server first. For ease of the test procedure we will only use username and password. The picture below shows the connect window.
-After successfully authenticating the user, the NETCONF session
-handshake occurs where the server and client exchange the Hello messages with
-the NETCONF capabilities they support. When the capabilities are successfully
-exchanged, the NETCONF session is established.
+![Connect prompt](./netconf_login_prompt.png "Connect prompt")
+
+* Select *connect* from the pop-up window
+* When prompted for the password, enter *voltha*
+
+## Pass/Fail Criteria
+
+After successfully authenticating the user, the NETCONF session handshake occurs where the server and client exchange the Hello messages with the NETCONF capabilities they support. When the capabilities are successfully exchanged, the NETCONF session is established.
* The status bar on the Netconf Browser should display :
- ```
- Connected To [SSH]voltha@<server-ip>:830 using NETCONF version 1.1
- ```
+```shell
+Connected To [SSH]voltha@<server-ip>:830 using NETCONF version 1.1
+```
-* Select the ```capabilities``` widget in the output window. The following
-server capabilities should be displayed:
+* Select the *capabilities* widget in the output window. The following server capabilities should be displayed:
- ```
- urn:ietf:params:netconf:base:1.0
- urn:ietf:params:netconf:base:1.1
- urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring
- urn:opencord:params:xml:ns:voltha:ietf-adapter
- urn:opencord:params:xml:ns:voltha:ietf-annotations
- urn:opencord:params:xml:ns:voltha:ietf-any
- urn:opencord:params:xml:ns:voltha:ietf-common
- urn:opencord:params:xml:ns:voltha:ietf-device
- urn:opencord:params:xml:ns:voltha:ietf-empty
- urn:opencord:params:xml:ns:voltha:ietf-health
- urn:opencord:params:xml:ns:voltha:ietf-logical_device
- urn:opencord:params:xml:ns:voltha:ietf-meta
- urn:opencord:params:xml:ns:voltha:ietf-openflow_13
- urn:opencord:params:xml:ns:voltha:ietf-voltha
- ```
+```xml
+urn:ietf:params:netconf:base:1.0
+urn:ietf:params:netconf:base:1.1
+urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring
+urn:opencord:params:xml:ns:voltha:ietf-adapter
+urn:opencord:params:xml:ns:voltha:ietf-annotations
+urn:opencord:params:xml:ns:voltha:ietf-any
+urn:opencord:params:xml:ns:voltha:ietf-common
+urn:opencord:params:xml:ns:voltha:ietf-device
+urn:opencord:params:xml:ns:voltha:ietf-empty
+urn:opencord:params:xml:ns:voltha:ietf-health
+urn:opencord:params:xml:ns:voltha:ietf-logical_device
+urn:opencord:params:xml:ns:voltha:ietf-meta
+urn:opencord:params:xml:ns:voltha:ietf-openflow_13
+urn:opencord:params:xml:ns:voltha:ietf-voltha
+```
+
* Below is a picture of a connected Netconf Browser.
- ![Connected](./netconf_connected.png "Connected")
+![Connected](./netconf_connected.png "Connected")
diff --git a/docs/manuals/user/labtests/N03_netconf_client_retrieve_YANG_modules.md b/docs/manuals/user/labtests/N03_netconf_client_retrieve_YANG_modules.md
index 4535c2d..c69c96f 100644
--- a/docs/manuals/user/labtests/N03_netconf_client_retrieve_YANG_modules.md
+++ b/docs/manuals/user/labtests/N03_netconf_client_retrieve_YANG_modules.md
@@ -1,84 +1,66 @@
-## N3 - Retrieve and Load the Voltha YANG Modules
+# N3 - Retrieve and Load the Voltha YANG Modules
-### Test Objective
+## Test Objective
-* The purpose of this test is to retrieve and load the voltha YANG modules
-from the Netconf Server
+* The purpose of this test is to retrieve and load the voltha YANG modules from the Netconf Server
-### Test Configuration
+## Test Configuration
* Preparatory steps completed
* Test-cases N01 and N02 completed successfully
* The Netconf client/server connection is up
-* No Voltha YANG modules has been loaded into MG Soft. If the modules were
-loaded from a prior test, then select ```Unload All Modules``` from the
-```Module``` menu to clear them.
+* No Voltha YANG modules has been loaded into MG Soft. If the modules were loaded from a prior test, then select *Unload All Modules* from the *Module* menu to clear them.
-### Test Procedure
+## Test Procedure
* Retrieve voltha schemas
+ * From the *Tools* menu select *Get Schema...* option. A window will be displayed with a list of schemas.
- * From the ```Tools``` menu select ```Get Schema...``` option.
-
- A window will be displayed with a list of schemas.
-
- ![Schema List](./netconf_download_schema.png "Schema List")
-
- * On the displayed window:
- * check the ```Download all``` box
- * under ```options``` enter the location where the YANG modules
- will be download to (```Download To```)
- * select the ```Download``` button
-
-
- The YANG modules will be downloaded to the specified location. If the
- modules were downloaded before then the user will be prompted to allow
- for overwrite.
-
- * After the download is complete, select the ```close``` button from
- the displayed window.
-
- The Netconf Browser will show the following screens.
-
- ![Downloaded modules](./netconf_modules_downloaded.png "Downloaded Modules")
-
-
-* Load the YANG Modules
+![Schema List](./netconf_download_schema.png "Schema List")
+ * On the displayed window:
+ * check the *Download all* box
+ * under *options* enter the location where the YANG modules will be download to (*Download To*)
+ * select the *Download* button
+
+The YANG modules will be downloaded to the specified location. If the modules were downloaded before then the user will be prompted to allow for overwrite.
+
+* After the download is complete, select the *close* button from the displayed window.
+
+The Netconf Browser will show the following screens.
+
+![Downloaded modules](./netconf_modules_downloaded.png "Downloaded Modules")
+
+* Load the YANG Modules
* From the ```Module``` menu select ```Load Module...``` option.
* On the displayed window:
* browse to the location where the YANG modules were downloaded
* select all the following files:
-
- ```
- ietf-adapter@2016-11-15
- ietf-annotations@2016-11-15
- ietf-any@2016-11-15
- ietf-common@2016-11-15
- ietf-device@2016-11-15
- ietf-empty@2016-11-15
- ietf-health@2016-11-15
- ietf-logical_device@2016-11-15
- ietf-meta@2016-11-15
- ietf-openflow_13@2016-11-15
- ietf-voltha@2016-11-15
- ```
- * select the ```open button```
-
- ![Modules to load](./netconf_load_module.png "Modules to load")
- The Netconf Browser will scan, validate and load the modules. On
- successful loading, the modules will be displayed on the left
- window pane of the Browser:
-
- ![Loaded Modules](./netconf_modules_loaded.png "Loaded Modules")
-
- At this point you can view the content of the Voltha YANG Modules by
- browsing through them.
+```shell
+ietf-adapter@2016-11-15
+ietf-annotations@2016-11-15
+ietf-any@2016-11-15
+ietf-common@2016-11-15
+ietf-device@2016-11-15
+ietf-empty@2016-11-15
+ietf-health@2016-11-15
+ietf-logical_device@2016-11-15
+ietf-meta@2016-11-15
+ietf-openflow_13@2016-11-15
+ietf-voltha@2016-11-15
+```
+* select the *open button*
+![Modules to load](./netconf_load_module.png "Modules to load")
-### Pass/Fail Criteria
+The Netconf Browser will scan, validate and load the modules. On successful loading, the modules will be displayed on the left window pane of the Browser:
-This test case should be considered passing if all the demonstrated behavior
-works with similar (but not necessarily identical) output.
\ No newline at end of file
+![Loaded Modules](./netconf_modules_loaded.png "Loaded Modules")
+
+At this point you can view the content of the Voltha YANG Modules by browsing through them.
+
+## Pass/Fail Criteria
+
+This test case should be considered passing if all the demonstrated behavior works with similar (but not necessarily identical) output.
diff --git a/docs/manuals/user/labtests/N04_netconf_client_get_volthainstance.md b/docs/manuals/user/labtests/N04_netconf_client_get_volthainstance.md
index 7b1ffe6..398a1f8 100644
--- a/docs/manuals/user/labtests/N04_netconf_client_get_volthainstance.md
+++ b/docs/manuals/user/labtests/N04_netconf_client_get_volthainstance.md
@@ -1,182 +1,175 @@
-## N4 - Get VolthaInstance info
+# N4 - Get VolthaInstance info
-### Test Objective
+## Test Objective
-* The purpose of this test is to run a simple GET command that would
-retrieve the ```VolthaInstance``` info
+* The purpose of this test is to run a simple GET command that would retrieve the *VolthaInstance* info.
-### Test Configuration
+## Test Configuration
* Preparatory steps completed
* Test-cases N01, N02 and N03 completed successfully
* The Netconf client/server connection is up
+## Test Procedure
-### Test Procedure
+* Execute the GET command on the VolthaInstance
+ * Expand the *ietf-voltha@2016-11-15* module on the left pane of the Netconf Browser
+ * Select the *VolthaInstance* container
+ * Right click and select *get(execute)* command
-* Execute the GET command on the VolthaInstance
-
- * Expand the ```ietf-voltha@2016-11-15``` module on the left pane of
- the Netconf Browser
- * Select the ```VolthaInstance``` container
- * Right click and select ```get(execute)``` command
-
-
-### Pass/Fail Criteria
+## Pass/Fail Criteria
Upon successful execution of the command, the similar output as below will be
displayed:
* In the logs windows:
- ```
- Command 404d0eb7-4008-48b1-a0e5-10596a3a421f:15; get was successful (took 75 ms).
-
- ```
-* In the output pane, the ```Output XML``` would be similar to:
+```shell
+Command 404d0eb7-4008-48b1-a0e5-10596a3a421f:15; get was successful (took 75 ms).
+```
- ```
- <?xml version="1.0" encoding="utf-8"?>
- <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
- <VolthaInstance xmlns="urn:opencord:params:xml:ns:voltha:ietf-voltha">
+* In the output pane, the *Output XML* would be similar to:
+
+```xml
+<?xml version="1.0" encoding="utf-8"?>
+ <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
+ <VolthaInstance xmlns="urn:opencord:params:xml:ns:voltha:ietf-voltha">
+ <log_level>INFO</log_level>
+ <device_types>
+ <adapter>broadcom_onu</adapter>
+ <accepts_bulk_flow_update>True</accepts_bulk_flow_update>
+ <id>broadcom_onu</id>
+ <accepts_add_remove_flow_updates>False</accepts_add_remove_flow_updates>
+ </device_types>
+ <device_types>
+ <adapter>maple_olt</adapter>
+ <accepts_bulk_flow_update>True</accepts_bulk_flow_update>
+ <id>maple_olt</id>
+ <accepts_add_remove_flow_updates>False</accepts_add_remove_flow_updates>
+ </device_types>
+ <device_types>
+ <adapter>microsemi</adapter>
+ <accepts_bulk_flow_update>True</accepts_bulk_flow_update>
+ <id>microsemi</id>
+ <accepts_add_remove_flow_updates>False</accepts_add_remove_flow_updates>
+ </device_types>
+ <device_types>
+ <adapter>ponsim_olt</adapter>
+ <accepts_bulk_flow_update>True</accepts_bulk_flow_update>
+ <id>ponsim_olt</id>
+ <accepts_add_remove_flow_updates>False</accepts_add_remove_flow_updates>
+ </device_types>
+ <device_types>
+ <adapter>ponsim_onu</adapter>
+ <accepts_bulk_flow_update>True</accepts_bulk_flow_update>
+ <id>ponsim_onu</id>
+ <accepts_add_remove_flow_updates>False</accepts_add_remove_flow_updates>
+ </device_types>
+ <device_types>
+ <adapter>simulated_olt</adapter>
+ <accepts_bulk_flow_update>True</accepts_bulk_flow_update>
+ <id>simulated_olt</id>
+ <accepts_add_remove_flow_updates>False</accepts_add_remove_flow_updates>
+ </device_types>
+ <device_types>
+ <adapter>simulated_onu</adapter>
+ <accepts_bulk_flow_update>True</accepts_bulk_flow_update>
+ <id>simulated_onu</id>
+ <accepts_add_remove_flow_updates>False</accepts_add_remove_flow_updates>
+ </device_types>
+ <device_types>
+ <adapter>tibit_olt</adapter>
+ <accepts_bulk_flow_update>True</accepts_bulk_flow_update>
+ <id>tibit_olt</id>
+ <accepts_add_remove_flow_updates>False</accepts_add_remove_flow_updates>
+ </device_types>
+ <device_types>
+ <adapter>tibit_onu</adapter>
+ <accepts_bulk_flow_update>True</accepts_bulk_flow_update>
+ <id>tibit_onu</id>
+ <accepts_add_remove_flow_updates>False</accepts_add_remove_flow_updates>
+ </device_types>
+ <instance_id>compose_voltha_1</instance_id>
+ <version>0.9.0</version>
+ <health>
+ <state>HEALTHY</state>
+ </health>
+ <adapters>
+ <config>
<log_level>INFO</log_level>
- <device_types>
- <adapter>broadcom_onu</adapter>
- <accepts_bulk_flow_update>True</accepts_bulk_flow_update>
- <id>broadcom_onu</id>
- <accepts_add_remove_flow_updates>False</accepts_add_remove_flow_updates>
- </device_types>
- <device_types>
- <adapter>maple_olt</adapter>
- <accepts_bulk_flow_update>True</accepts_bulk_flow_update>
- <id>maple_olt</id>
- <accepts_add_remove_flow_updates>False</accepts_add_remove_flow_updates>
- </device_types>
- <device_types>
- <adapter>microsemi</adapter>
- <accepts_bulk_flow_update>True</accepts_bulk_flow_update>
- <id>microsemi</id>
- <accepts_add_remove_flow_updates>False</accepts_add_remove_flow_updates>
- </device_types>
- <device_types>
- <adapter>ponsim_olt</adapter>
- <accepts_bulk_flow_update>True</accepts_bulk_flow_update>
- <id>ponsim_olt</id>
- <accepts_add_remove_flow_updates>False</accepts_add_remove_flow_updates>
- </device_types>
- <device_types>
- <adapter>ponsim_onu</adapter>
- <accepts_bulk_flow_update>True</accepts_bulk_flow_update>
- <id>ponsim_onu</id>
- <accepts_add_remove_flow_updates>False</accepts_add_remove_flow_updates>
- </device_types>
- <device_types>
- <adapter>simulated_olt</adapter>
- <accepts_bulk_flow_update>True</accepts_bulk_flow_update>
- <id>simulated_olt</id>
- <accepts_add_remove_flow_updates>False</accepts_add_remove_flow_updates>
- </device_types>
- <device_types>
- <adapter>simulated_onu</adapter>
- <accepts_bulk_flow_update>True</accepts_bulk_flow_update>
- <id>simulated_onu</id>
- <accepts_add_remove_flow_updates>False</accepts_add_remove_flow_updates>
- </device_types>
- <device_types>
- <adapter>tibit_olt</adapter>
- <accepts_bulk_flow_update>True</accepts_bulk_flow_update>
- <id>tibit_olt</id>
- <accepts_add_remove_flow_updates>False</accepts_add_remove_flow_updates>
- </device_types>
- <device_types>
- <adapter>tibit_onu</adapter>
- <accepts_bulk_flow_update>True</accepts_bulk_flow_update>
- <id>tibit_onu</id>
- <accepts_add_remove_flow_updates>False</accepts_add_remove_flow_updates>
- </device_types>
- <instance_id>compose_voltha_1</instance_id>
- <version>0.9.0</version>
- <health>
- <state>HEALTHY</state>
- </health>
- <adapters>
- <config>
- <log_level>INFO</log_level>
- </config>
- <version>0.4</version>
- <vendor>Voltha project</vendor>
- <id>broadcom_onu</id>
- </adapters>
- <adapters>
- <config>
- <log_level>INFO</log_level>
- </config>
- <version>0.4</version>
- <vendor>Voltha project</vendor>
- <id>maple_olt</id>
- </adapters>
- <adapters>
- <config>
- <log_level>INFO</log_level>
- </config>
- <version>0.1</version>
- <vendor>Microsemi / Celestica</vendor>
- <id>microsemi</id>
- </adapters>
- <adapters>
- <config>
- <log_level>INFO</log_level>
- </config>
- <version>0.4</version>
- <vendor>Voltha project</vendor>
- <id>ponsim_olt</id>
- </adapters>
- <adapters>
- <config>
- <log_level>INFO</log_level>
- </config>
- <version>0.4</version>
- <vendor>Voltha project</vendor>
- <id>ponsim_onu</id>
- </adapters>
- <adapters>
- <config>
- <log_level>INFO</log_level>
- </config>
- <version>0.1</version>
- <vendor>Voltha project</vendor>
- <id>simulated_olt</id>
- </adapters>
- <adapters>
- <config>
- <log_level>INFO</log_level>
- </config>
- <version>0.1</version>
- <vendor>Voltha project</vendor>
- <id>simulated_onu</id>
- </adapters>
- <adapters>
- <config>
- <log_level>INFO</log_level>
- </config>
- <version>0.1</version>
- <vendor>Tibit Communications Inc.</vendor>
- <id>tibit_olt</id>
- </adapters>
- <adapters>
- <config>
- <log_level>INFO</log_level>
- </config>
- <version>0.1</version>
- <vendor>Tibit Communications Inc.</vendor>
- <id>tibit_onu</id>
- </adapters>
- </VolthaInstance>
- </data>
- ```
-
-* In the output pane, the ```Output Tree``` would display a well formed tree
- as per the YANG module definition.
-
- ![Get Voltha Instance](./netconf_get_volthainstance.png "Get VolthaInstance")
+ </config>
+ <version>0.4</version>
+ <vendor>Voltha project</vendor>
+ <id>broadcom_onu</id>
+ </adapters>
+ <adapters>
+ <config>
+ <log_level>INFO</log_level>
+ </config>
+ <version>0.4</version>
+ <vendor>Voltha project</vendor>
+ <id>maple_olt</id>
+ </adapters>
+ <adapters>
+ <config>
+ <log_level>INFO</log_level>
+ </config>
+ <version>0.1</version>
+ <vendor>Microsemi / Celestica</vendor>
+ <id>microsemi</id>
+ </adapters>
+ <adapters>
+ <config>
+ <log_level>INFO</log_level>
+ </config>
+ <version>0.4</version>
+ <vendor>Voltha project</vendor>
+ <id>ponsim_olt</id>
+ </adapters>
+ <adapters>
+ <config>
+ <log_level>INFO</log_level>
+ </config>
+ <version>0.4</version>
+ <vendor>Voltha project</vendor>
+ <id>ponsim_onu</id>
+ </adapters>
+ <adapters>
+ <config>
+ <log_level>INFO</log_level>
+ </config>
+ <version>0.1</version>
+ <vendor>Voltha project</vendor>
+ <id>simulated_olt</id>
+ </adapters>
+ <adapters>
+ <config>
+ <log_level>INFO</log_level>
+ </config>
+ <version>0.1</version>
+ <vendor>Voltha project</vendor>
+ <id>simulated_onu</id>
+ </adapters>
+ <adapters>
+ <config>
+ <log_level>INFO</log_level>
+ </config>
+ <version>0.1</version>
+ <vendor>Tibit Communications Inc.</vendor>
+ <id>tibit_olt</id>
+ </adapters>
+ <adapters>
+ <config>
+ <log_level>INFO</log_level>
+ </config>
+ <version>0.1</version>
+ <vendor>Tibit Communications Inc.</vendor>
+ <id>tibit_onu</id>
+ </adapters>
+ </VolthaInstance>
+ </data>
+```
+* In the output pane, the ```Output Tree``` would display a well formed tree as per the YANG module definition.
+
+![Get Voltha Instance](./netconf_get_volthainstance.png "Get VolthaInstance")
diff --git a/docs/manuals/user/labtests/N05_netconf_client_get_adapters.md b/docs/manuals/user/labtests/N05_netconf_client_get_adapters.md
index ab99dbb..f0cc745 100644
--- a/docs/manuals/user/labtests/N05_netconf_client_get_adapters.md
+++ b/docs/manuals/user/labtests/N05_netconf_client_get_adapters.md
@@ -1,121 +1,116 @@
-## N5 - Get List of Adapters
+# N5 - Get List of Adapters
-### Test Objective
+## Test Objective
* The purpose of this test is to retrieve the list of adapters
-### Test Configuration
+## Test Configuration
* Preparatory steps completed
* Test-cases N01, N02 and N03 completed successfully
* The Netconf client/server connection is up
-
-### Test Procedure
+## Test Procedure
* Execute the GET command on the VolthaInstance/adapters
-
- * Expand the ```ietf-voltha@2016-11-15``` module on the left pane of
+ * Expand the *ietf-voltha@2016-11-15* module on the left pane of
the Netconf Browser
- * Expand the ```VolthaInstance``` container
- * Select the ```adapters``` grouping
- * Right click and select ```get(execute)``` command
-
+ * Expand the *VolthaInstance* container
+ * Select the *adapters* grouping
+ * Right click and select *get(execute)* command
-### Pass/Fail Criteria
+## Pass/Fail Criteria
-Upon successful execution of the command, the similar output as below will be
-displayed:
+Upon successful execution of the command, the similar output as below will be displayed:
* In the logs windows:
- ```
- Command 404d0eb7-4008-48b1-a0e5-10596a3a421f:17; get was successful (took 76 ms).
-
- ```
-* In the output pane, the ```Output XML``` would be similar to:
+```shell
+Command 404d0eb7-4008-48b1-a0e5-10596a3a421f:17; get was successful (took 76 ms).
+```
- ```
- <?xml version="1.0" encoding="utf-8"?>
- <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
- <VolthaInstance xmlns="urn:opencord:params:xml:ns:voltha:ietf-voltha">
- <adapters>
- <config>
- <log_level>INFO</log_level>
- </config>
- <version>0.4</version>
- <vendor>Voltha project</vendor>
- <id>broadcom_onu</id>
- </adapters>
- <adapters>
- <config>
- <log_level>INFO</log_level>
- </config>
- <version>0.4</version>
- <vendor>Voltha project</vendor>
- <id>maple_olt</id>
- </adapters>
- <adapters>
- <config>
- <log_level>INFO</log_level>
- </config>
- <version>0.1</version>
- <vendor>Microsemi / Celestica</vendor>
- <id>microsemi</id>
- </adapters>
- <adapters>
- <config>
- <log_level>INFO</log_level>
- </config>
- <version>0.4</version>
- <vendor>Voltha project</vendor>
- <id>ponsim_olt</id>
- </adapters>
- <adapters>
- <config>
- <log_level>INFO</log_level>
- </config>
- <version>0.4</version>
- <vendor>Voltha project</vendor>
- <id>ponsim_onu</id>
- </adapters>
- <adapters>
- <config>
- <log_level>INFO</log_level>
- </config>
- <version>0.1</version>
- <vendor>Voltha project</vendor>
- <id>simulated_olt</id>
- </adapters>
- <adapters>
- <config>
- <log_level>INFO</log_level>
- </config>
- <version>0.1</version>
- <vendor>Voltha project</vendor>
- <id>simulated_onu</id>
- </adapters>
- <adapters>
- <config>
- <log_level>INFO</log_level>
- </config>
- <version>0.1</version>
- <vendor>Tibit Communications Inc.</vendor>
- <id>tibit_olt</id>
- </adapters>
- <adapters>
- <config>
- <log_level>INFO</log_level>
- </config>
- <version>0.1</version>
- <vendor>Tibit Communications Inc.</vendor>
- <id>tibit_onu</id>
- </adapters>
- </VolthaInstance>
- </data>
- ```
-
-* In the output pane, the ```Output Tree``` would display a well formed tree
- as per the YANG module definition
+* In the output pane, the *Output XML* would be similar to:
- ![Get Adapters](./netconf_get_adapters.png "Get Adapters")
+```xml
+<?xml version="1.0" encoding="utf-8"?>
+<data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
+ <VolthaInstance xmlns="urn:opencord:params:xml:ns:voltha:ietf-voltha">
+ <adapters>
+ <config>
+ <log_level>INFO</log_level>
+ </config>
+ <version>0.4</version>
+ <vendor>Voltha project</vendor>
+ <id>broadcom_onu</id>
+ </adapters>
+ <adapters>
+ <config>
+ <log_level>INFO</log_level>
+ </config>
+ <version>0.4</version>
+ <vendor>Voltha project</vendor>
+ <id>maple_olt</id>
+ </adapters>
+ <adapters>
+ <config>
+ <log_level>INFO</log_level>
+ </config>
+ <version>0.1</version>
+ <vendor>Microsemi / Celestica</vendor>
+ <id>microsemi</id>
+ </adapters>
+ <adapters>
+ <config>
+ <log_level>INFO</log_level>
+ </config>
+ <version>0.4</version>
+ <vendor>Voltha project</vendor>
+ <id>ponsim_olt</id>
+ </adapters>
+ <adapters>
+ <config>
+ <log_level>INFO</log_level>
+ </config>
+ <version>0.4</version>
+ <vendor>Voltha project</vendor>
+ <id>ponsim_onu</id>
+ </adapters>
+ <adapters>
+ <config>
+ <log_level>INFO</log_level>
+ </config>
+ <version>0.1</version>
+ <vendor>Voltha project</vendor>
+ <id>simulated_olt</id>
+ </adapters>
+ <adapters>
+ <config>
+ <log_level>INFO</log_level>
+ </config>
+ <version>0.1</version>
+ <vendor>Voltha project</vendor>
+ <id>simulated_onu</id>
+ </adapters>
+ <adapters>
+ <config>
+ <log_level>INFO</log_level>
+ </config>
+ <version>0.1</version>
+ <vendor>Tibit Communications Inc.</vendor>
+ <id>tibit_olt</id>
+ </adapters>
+ <adapters>
+ <config>
+ <log_level>INFO</log_level>
+ </config>
+ <version>0.1</version>
+ <vendor>Tibit Communications Inc.</vendor>
+ <id>tibit_onu</id>
+ </adapters>
+ </VolthaInstance>
+</data>
+```
+
+* In the output pane, the *Output Tree* would display a well formed tree as per the YANG module definition
+
+![Get Adapters](./netconf_get_adapters.png "Get Adapters")
diff --git a/docs/manuals/user/labtests/P01_Performance_Management_Configuration.md b/docs/manuals/user/labtests/P01_Performance_Management_Configuration.md
old mode 100755
new mode 100644
index 66ba4d3..301ff26
--- a/docs/manuals/user/labtests/P01_Performance_Management_Configuration.md
+++ b/docs/manuals/user/labtests/P01_Performance_Management_Configuration.md
@@ -1,487 +1,489 @@
-## P01 - Performance Management Configuration
-
-### Test Objective
-
-To demonstrate the ability to configure performance management using the `simulated-olt`.
-
-- Demonstrate the ability to change the frequency with which the stats are sampled and posted to kafka
-- Demonstrate the ability to selectively disable and enable specific stats
-- Demonstrate how the stats can be queried.
-
-### Test Configuration
-
-- The Voltha enseble is running per the deployment instructions.
-
-### Test procedure
-
-Start the voltha cli and add the simulated OLT.
-```
- ./cli/main.py -L
- _ _ _ ___ _ ___
-__ _____| | |_| |_ __ _ / __| | |_ _|
-\ V / _ \ | _| ' \/ _` | | (__| |__ | |
- \_/\___/_|\__|_||_\__,_| \___|____|___|
-(to exit type quit or hit Ctrl-D)
-(voltha)
-```
-Ensure that voltha is operating correctly:
-```
-health
-{
- "state": "HEALTHY"
-}
-(voltha)
-```
-
-Preprovision and enable the simulated OLT
-
-```
-(voltha) preprovision_olt
-success (device id = eecd8f5327bc)
-(voltha) enable
-enabling eecd8f5327bc
-waiting for device to be enabled...
-success (logical device id = 1)
-(voltha)
-```
-
-The device Id will be different from the device id shown above.
-
-In a different window, verify that the simulated stats are now being posted to the Kafak bus. First determine the port hosting the kafka broker:
-```
-docker inspect compose_kafka_1 | jq -r '.[0].NetworkSettings.Ports["9092/tcp"][0]["HostPort"]'
-```
-
-```
-32778
-```
-
-Using this port, query the kafka broker for topics
-
-```
-kafkacat -b localhost:32778 -L
-Metadata for all topics (from broker -1: localhost:32778/bootstrap):
- 1 brokers:
- broker 1001 at 10.0.2.15:32778
- 5 topics:
- topic "voltha.alarms" with 1 partitions:
- partition 0, leader 1001, replicas: 1001, isrs: 1001
- topic "voltha.kpis" with 1 partitions:
- partition 0, leader 1001, replicas: 1001, isrs: 1001
- topic "voltha.events" with 1 partitions:
- partition 0, leader 1001, replicas: 1001, isrs: 1001
- topic "voltha.heartbeat" with 1 partitions:
- partition 0, leader 1001, replicas: 1001, isrs: 1001
-```
-
-The topic of interest for this test is the voltha.kpis topic. So now query the topic to ensure that the simulated OLT is generating stats.
-```
-kafkacat -b localhost:32778 -C -o -1 -c 1 -t voltha.kpis | jq '.prefixes'
-```
-
-```
-{
- "voltha.simulated_olt.eecd8f5327bc.pon": {
- "metrics": {
- "rx_256_511": 47629,
- "tx_128_255": 33976,
- "tx_256_511": 47606,
- "tx_bytes": 51704532,
- "rx_bytes": 51757379,
- "rx_pkts": 51646,
- "rx_128_255": 33901,
- "tx_64": 28552,
- "rx_64": 28590,
- "tx_pkts": 51668,
- "rx_1519_9k": 28502,
- "tx_512_1023": 50295,
- "rx_1024_1518": 33998,
- "tx_65_127": 31313,
- "rx_65_127": 31280,
- "tx_1519_9k": 28505,
- "tx_1024_1518": 34027,
- "rx_512_1023": 50307
- }
- },
- "voltha.simulated_olt.eecd8f5327bc": {
- "metrics": {
- "cpu_util": 24.542841249401473,
- "buffer_util": 18.404615469439612
- }
- },
- "voltha.simulated_olt.eecd8f5327bc.nni": {
- "metrics": {
- "rx_256_511": 47649,
- "tx_128_255": 34071,
- "tx_256_511": 47569,
- "tx_bytes": 51634215,
- "rx_bytes": 51665858,
- "rx_pkts": 51686,
- "rx_128_255": 34038,
- "tx_64": 28592,
- "rx_64": 28489,
- "tx_pkts": 51621,
- "rx_1519_9k": 28591,
- "tx_512_1023": 50345,
- "rx_1024_1518": 34075,
- "tx_65_127": 31255,
- "rx_65_127": 31238,
- "tx_1519_9k": 28546,
- "tx_1024_1518": 33967,
- "rx_512_1023": 50252
- }
- }
-}
-```
-Once the generation of simulated statistics has been confirmed we validate how often the stats are being posted to kafka prior to the next step which is to change the frequency with which the stats are bing sampled. The following command will establish the sampling interval.
-
-```
-avg=0;last=0;for i in `kafkacat -b localhost:32778 -C -o -10 -c 10 -t voltha.kpis | grep 'simulated_olt' | jq -r '.ts'`; do if [ $last -eq 0 ]; then last=$i; else if [ $avg -eq 0 ]; then avg=`expr $i - $last`; else avg=`expr \( $avg + $i - $last \) \/ 2`; fi; last=$i; fi; done; echo $avg; unset avg; unset last
-```
-```
-15
-```
-The default set by the simulated OLT is to pretend to sample metrics every 15 seconds and publish them to kafka. This can be changed by using the performance monitoring configuration functionality. Swithch back to the window running the voltha cli and enter device command mode for the simulated OLT.
-
-```
-(voltha) devices
-```
-
-```
-Devices:
-+--------------+---------------+-------------------+-------------+-------------+----------------+
-| id | type | mac_address | admin_state | oper_status | connect_status |
-+--------------+---------------+-------------------+-------------+-------------+----------------+
-| eecd8f5327bc | simulated_olt | 00:0c:e2:31:40:00 | ENABLED | ACTIVE | REACHABLE |
-+--------------+---------------+-------------------+-------------+-------------+----------------+
-(voltha)
-```
-
-Using the value in the id column, enter device command mode for the device
-```
-(voltha) device eecd8f5327bc
-```
-
-```
-(device eecd8f5327bc)
-```
-
-Now display the current performance management configuration of the device. Your device id will be different than the one used throughout these examples.
-
-```
-(device eecd8f5327bc) perf_config
-```
-
-```
-PM Config:
-+---------------+-------+
-| field | value |
-+---------------+-------+
-| default_freq | 150 |
-| grouped | False |
-| freq_override | False |
-+---------------+-------+
-Supported metrics:
-+--------------+---------+---------+
-| name | enabled | type |
-+--------------+---------+---------+
-| rx_1024_1518 | True | COUNTER |
-| rx_128_255 | True | COUNTER |
-| rx_1519_9k | True | COUNTER |
-| rx_256_511 | True | COUNTER |
-| rx_512_1023 | True | COUNTER |
-| rx_64 | True | COUNTER |
-| rx_65_127 | True | COUNTER |
-| rx_bytes | True | COUNTER |
-| rx_pkts | True | COUNTER |
-| tx_1024_1518 | True | COUNTER |
-| tx_128_255 | True | COUNTER |
-| tx_1519_9k | True | COUNTER |
-| tx_256_511 | True | COUNTER |
-| tx_512_1023 | True | COUNTER |
-| tx_64 | True | COUNTER |
-| tx_65_127 | True | COUNTER |
-| tx_bytes | True | COUNTER |
-| tx_pkts | True | COUNTER |
-+--------------+---------+---------+
-(device eecd8f5327bc)
-```
-
-As shown, the default_freq which is the sampling frequency is set to 150 10^ths^ of a second. View the help to determine how to change that.
-
-```
-(device eecd8f5327bc) help perf_config
-```
-
-```
-perfo_config [show | set | commit | reset] [-f <default frequency>] [-e <metric/group
- name>] [-d <metric/group name>] [-o <metric/group name> <override
- frequency>]
-Changes made by set are held locally until a commit or reset command is issued.
-A commit command will write the configuration to the device and it takes effect
-immediately. The reset command will undo any changes sinc the start of the
-device session.
-
-If grouped is true then the -d, -e and -o commands refer to groups and not
-individual metrics.
-(device eecd8f5327bc)
-```
-
-As shown in the help using set with the -f option will change the default_freq so lets set that to 5 seconds or 50 10^ths^ of a second.
-
-```
-(device eecd8f5327bc) perf_config set -f 50
-```
-
-```
-Success
-(device eecd8f5327bc)
-```
-
-Lets verify that the chnages have indeed been saved to the edit buffer.
-
-```
-(device eecd8f5327bc) perf_config show
-```
-
-```
-PM Config:
-+---------------+-------+
-| field | value |
-+---------------+-------+
-| default_freq | 50 |
-| grouped | False |
-| freq_override | False |
-+---------------+-------+
-Supported metrics:
-+--------------+---------+---------+
-| name | enabled | type |
-+--------------+---------+---------+
-| rx_1024_1518 | True | COUNTER |
-| rx_128_255 | True | COUNTER |
-| rx_1519_9k | True | COUNTER |
-| rx_256_511 | True | COUNTER |
-| rx_512_1023 | True | COUNTER |
-| rx_64 | True | COUNTER |
-| rx_65_127 | True | COUNTER |
-| rx_bytes | True | COUNTER |
-| rx_pkts | True | COUNTER |
-| tx_1024_1518 | True | COUNTER |
-| tx_128_255 | True | COUNTER |
-| tx_1519_9k | True | COUNTER |
-| tx_256_511 | True | COUNTER |
-| tx_512_1023 | True | COUNTER |
-| tx_64 | True | COUNTER |
-| tx_65_127 | True | COUNTER |
-| tx_bytes | True | COUNTER |
-| tx_pkts | True | COUNTER |
-+--------------+---------+---------+
-(device eecd8f5327bc)
-```
-
-The default_freq is now set to 5o 10^ths^ of a second. This change has not been applied yet. In order to apply the change, it must be committed. Lets do that now.
-
-```
-(device eecd8f5327bc) perf_config commit
-```
-
-```
-PM Config:
-+---------------+-------+
-| field | value |
-+---------------+-------+
-| default_freq | 50 |
-| grouped | False |
-| freq_override | False |
-+---------------+-------+
-Supported metrics:
-+--------------+---------+---------+
-| name | enabled | type |
-+--------------+---------+---------+
-| rx_1024_1518 | True | COUNTER |
-| rx_128_255 | True | COUNTER |
-| rx_1519_9k | True | COUNTER |
-| rx_256_511 | True | COUNTER |
-| rx_512_1023 | True | COUNTER |
-| rx_64 | True | COUNTER |
-| rx_65_127 | True | COUNTER |
-| rx_bytes | True | COUNTER |
-| rx_pkts | True | COUNTER |
-| tx_1024_1518 | True | COUNTER |
-| tx_128_255 | True | COUNTER |
-| tx_1519_9k | True | COUNTER |
-| tx_256_511 | True | COUNTER |
-| tx_512_1023 | True | COUNTER |
-| tx_64 | True | COUNTER |
-| tx_65_127 | True | COUNTER |
-| tx_bytes | True | COUNTER |
-| tx_pkts | True | COUNTER |
-+--------------+---------+---------+
-(device eecd8f5327bc)
-```
-
-Now after waiting 30 seconds or so to ensure we don't average in any older sampling intervals let's go back to a linux window and check and see how often the metrics are being sampled.
-
-```
-voltha$ avg=0;last=0;for i in `kafkacat -b localhost:32778 -C -o -10 -c 10 -t voltha.kpis | grep 'simulated_olt' | jq -r '.ts'`; do if [ $last -eq 0 ]; then last=$i; else if [ $avg -eq 0 ]; then avg=`expr $i - $last`; else avg=`expr \( $avg + $i - $last \) \/ 2`; fi; last=$i; fi; done; echo $avg; unset avg; unset last
-```
-
-```
-5
-voltha$
-```
-
-The change has taken effect and the metrics are now being sampled every 5 seconds. Now lets show how certain metrics can be disabled from the kafka output. Lets say that we no longer want to see any jumbo frame counters. Go back to the voltha cli window and get the help for the `perf_config` command again. Looking at the command using set with the -d options disables metrics and using the set command with -e options enables metrics. To disable both rx and tx metrics for 1519_9k issue the following command in the voltha cli.
-
-```
-(device eecd8f5327bc) perf_config set -d rx_1519_9k -d tx_1519_9k
-```
-
-```
-Success
-(device eecd8f5327bc)
-```
-
-Now view the configuration to validate that the requested changes have been applied to the edit buffer.
-
-```
-(device eecd8f5327bc) perf_config show
-```
-
-```
-PM Config:
-+---------------+-------+
-| field | value |
-+---------------+-------+
-| default_freq | 50 |
-| grouped | False |
-| freq_override | False |
-+---------------+-------+
-Supported metrics:
-+--------------+---------+---------+
-| name | enabled | type |
-+--------------+---------+---------+
-| rx_1024_1518 | True | COUNTER |
-| rx_128_255 | True | COUNTER |
-| rx_1519_9k | False | COUNTER |
-| rx_256_511 | True | COUNTER |
-| rx_512_1023 | True | COUNTER |
-| rx_64 | True | COUNTER |
-| rx_65_127 | True | COUNTER |
-| rx_bytes | True | COUNTER |
-| rx_pkts | True | COUNTER |
-| tx_1024_1518 | True | COUNTER |
-| tx_128_255 | True | COUNTER |
-| tx_1519_9k | False | COUNTER |
-| tx_256_511 | True | COUNTER |
-| tx_512_1023 | True | COUNTER |
-| tx_64 | True | COUNTER |
-| tx_65_127 | True | COUNTER |
-| tx_bytes | True | COUNTER |
-| tx_pkts | True | COUNTER |
-+--------------+---------+---------+
-(device eecd8f5327bc)
-```
-
-The changes are there as expected. Now commit them using the commit command.
-
-```
-(device eecd8f5327bc) perf_config commit
-```
-
-```
-PM Config:
-+---------------+-------+
-| field | value |
-+---------------+-------+
-| default_freq | 50 |
-| grouped | False |
-| freq_override | False |
-+---------------+-------+
-Supported metrics:
-+--------------+---------+---------+
-| name | enabled | type |
-+--------------+---------+---------+
-| rx_1024_1518 | True | COUNTER |
-| rx_128_255 | True | COUNTER |
-| rx_1519_9k | False | COUNTER |
-| rx_256_511 | True | COUNTER |
-| rx_512_1023 | True | COUNTER |
-| rx_64 | True | COUNTER |
-| rx_65_127 | True | COUNTER |
-| rx_bytes | True | COUNTER |
-| rx_pkts | True | COUNTER |
-| tx_1024_1518 | True | COUNTER |
-| tx_128_255 | True | COUNTER |
-| tx_1519_9k | False | COUNTER |
-| tx_256_511 | True | COUNTER |
-| tx_512_1023 | True | COUNTER |
-| tx_64 | True | COUNTER |
-| tx_65_127 | True | COUNTER |
-| tx_bytes | True | COUNTER |
-| tx_pkts | True | COUNTER |
-+--------------+---------+---------+
-(device eecd8f5327bc)
-```
-
-Now lets validate that the metrics that have been set to false will no longer be published to kafka. Moving back to the Linux window use the following command:
-
-```
-voltha$ kafkacat -b localhost:32778 -C -o -1 -c 1 -t voltha.kpis | jq '.prefixes'
-```
-
-```
-{
- "voltha.simulated_olt.eecd8f5327bc.pon": {
- "metrics": {
- "rx_256_511": 66994,
- "tx_128_255": 47787,
- "tx_256_511": 66965,
- "tx_pkts": 72684,
- "rx_bytes": 72795037,
- "rx_pkts": 72708,
- "rx_128_255": 47700,
- "tx_64": 40156,
- "rx_64": 40172,
- "tx_512_1023": 70724,
- "rx_1024_1518": 47800,
- "tx_65_127": 44018,
- "rx_65_127": 44011,
- "tx_bytes": 72736980,
- "tx_1024_1518": 47854,
- "rx_512_1023": 70773
- }
- },
- "voltha.simulated_olt.eecd8f5327bc": {
- "metrics": {
- "cpu_util": 23.933588409473266,
- "buffer_util": 12.861151886751806
- }
- },
- "voltha.simulated_olt.eecd8f5327bc.nni": {
- "metrics": {
- "rx_256_511": 67001,
- "tx_128_255": 47860,
- "tx_256_511": 66834,
- "tx_pkts": 72637,
- "rx_bytes": 72658405,
- "rx_pkts": 72718,
- "rx_128_255": 47833,
- "tx_64": 40188,
- "rx_64": 40123,
- "tx_512_1023": 70768,
- "rx_1024_1518": 47852,
- "tx_65_127": 43975,
- "rx_65_127": 43933,
- "tx_bytes": 72669736,
- "tx_1024_1518": 47736,
- "rx_512_1023": 70703
- }
- }
-}
-```
-
-As expected both rx_1519_9k and tx_1519_9k are no longer being reported for any interface on the device.
-
-
-This concludes this section of the test plan.
\ No newline at end of file
+# P01 - Performance management configuration
+
+## Test objective
+
+To demonstrate the ability to configure performance management using the *simulated-olt*.
+
+* Demonstrate the ability to change the frequency with which the stats are sampled and posted to kafka
+* Demonstrate the ability to selectively disable and enable specific stats
+* Demonstrate how the stats can be queried.
+
+## Test configuration
+
+* The Voltha enseble is running per the deployment instructions.
+
+## Test procedure
+
+Start the voltha cli and add the simulated OLT.
+
+```shell
+ ./cli/main.py -L
+ _ _ _ ___ _ ___
+__ _____| | |_| |_ __ _ / __| | |_ _|
+\ V / _ \ | _| ' \/ _` | | (__| |__ | |
+ \_/\___/_|\__|_||_\__,_| \___|____|___|
+(to exit type quit or hit Ctrl-D)
+(voltha)
+```
+
+Ensure that voltha is operating correctly:
+
+```shell
+health
+```
+
+```json
+{
+ "state": "HEALTHY"
+}
+```
+
+Preprovision and enable the simulated OLT
+
+```shell
+(voltha) preprovision_olt
+success (device id = eecd8f5327bc)
+(voltha) enable
+enabling eecd8f5327bc
+waiting for device to be enabled...
+success (logical device id = 1)
+(voltha)
+```
+
+The device Id will be different from the device id shown above.
+
+In a different window, verify that the simulated stats are now being posted to the Kafak bus. First determine the port hosting the kafka broker:
+
+```shell
+$ docker inspect compose_kafka_1 | jq -r '.[0].NetworkSettings.Ports["9092/tcp"][0]["HostPort"]'
+32778
+```
+
+Using this port, query the kafka broker for topics
+
+```shell
+kafkacat -b localhost:32778 -L
+Metadata for all topics (from broker -1: localhost:32778/bootstrap):
+ 1 brokers:
+ broker 1001 at 10.0.2.15:32778
+ 5 topics:
+ topic "voltha.alarms" with 1 partitions:
+ partition 0, leader 1001, replicas: 1001, isrs: 1001
+ topic "voltha.kpis" with 1 partitions:
+ partition 0, leader 1001, replicas: 1001, isrs: 1001
+ topic "voltha.events" with 1 partitions:
+ partition 0, leader 1001, replicas: 1001, isrs: 1001
+ topic "voltha.heartbeat" with 1 partitions:
+ partition 0, leader 1001, replicas: 1001, isrs: 1001
+```
+
+The topic of interest for this test is the voltha.kpis topic. So now query the topic to ensure that the simulated OLT is generating stats.
+
+```shell
+kafkacat -b localhost:32778 -C -o -1 -c 1 -t voltha.kpis | jq '.prefixes'
+```
+
+```json
+{
+ "voltha.simulated_olt.eecd8f5327bc.pon": {
+ "metrics": {
+ "rx_256_511": 47629,
+ "tx_128_255": 33976,
+ "tx_256_511": 47606,
+ "tx_bytes": 51704532,
+ "rx_bytes": 51757379,
+ "rx_pkts": 51646,
+ "rx_128_255": 33901,
+ "tx_64": 28552,
+ "rx_64": 28590,
+ "tx_pkts": 51668,
+ "rx_1519_9k": 28502,
+ "tx_512_1023": 50295,
+ "rx_1024_1518": 33998,
+ "tx_65_127": 31313,
+ "rx_65_127": 31280,
+ "tx_1519_9k": 28505,
+ "tx_1024_1518": 34027,
+ "rx_512_1023": 50307
+ }
+ },
+ "voltha.simulated_olt.eecd8f5327bc": {
+ "metrics": {
+ "cpu_util": 24.542841249401473,
+ "buffer_util": 18.404615469439612
+ }
+ },
+ "voltha.simulated_olt.eecd8f5327bc.nni": {
+ "metrics": {
+ "rx_256_511": 47649,
+ "tx_128_255": 34071,
+ "tx_256_511": 47569,
+ "tx_bytes": 51634215,
+ "rx_bytes": 51665858,
+ "rx_pkts": 51686,
+ "rx_128_255": 34038,
+ "tx_64": 28592,
+ "rx_64": 28489,
+ "tx_pkts": 51621,
+ "rx_1519_9k": 28591,
+ "tx_512_1023": 50345,
+ "rx_1024_1518": 34075,
+ "tx_65_127": 31255,
+ "rx_65_127": 31238,
+ "tx_1519_9k": 28546,
+ "tx_1024_1518": 33967,
+ "rx_512_1023": 50252
+ }
+ }
+}
+```
+
+Once the generation of simulated statistics has been confirmed we validate how often the stats are being posted to kafka prior to the next step which is to change the frequency with which the stats are bing sampled. The following command will establish the sampling interval.
+
+```shell
+avg=0;last=0;for i in `kafkacat -b localhost:32778 -C -o -10 -c 10 -t voltha.kpis | grep 'simulated_olt' | jq -r '.ts'`; do if [ $last -eq 0 ]; then last=$i; else if [ $avg -eq 0 ]; then avg=`expr $i - $last`; else avg=`expr \( $avg + $i - $last \) \/ 2`; fi; last=$i; fi; done; echo $avg; unset avg; unset last
+```
+
+```shell
+15
+```
+
+The default set by the simulated OLT is to pretend to sample metrics every 15 seconds and publish them to kafka. This can be changed by using the performance monitoring configuration functionality. Swithch back to the window running the voltha cli and enter device command mode for the simulated OLT.
+
+```shell
+(voltha) devices
+
++--------------+---------------+-------------------+-------------+-------------+----------------+
+| id | type | mac_address | admin_state | oper_status | connect_status |
++--------------+---------------+-------------------+-------------+-------------+----------------+
+| eecd8f5327bc | simulated_olt | 00:0c:e2:31:40:00 | ENABLED | ACTIVE | REACHABLE |
++--------------+---------------+-------------------+-------------+-------------+----------------+
+```
+
+Using the value in the id column, enter device command mode for the device
+```shell
+(voltha) device eecd8f5327bc
+```
+
+```shell
+(device eecd8f5327bc)
+```
+
+Now display the current performance management configuration of the device. Your device id will be different than the one used throughout these examples.
+
+```shell
+(device eecd8f5327bc) perf_config
+```
+
+```shell
+PM Config:
++---------------+-------+
+| field | value |
++---------------+-------+
+| default_freq | 150 |
+| grouped | False |
+| freq_override | False |
++---------------+-------+
+
+Supported metrics:
++--------------+---------+---------+
+| name | enabled | type |
++--------------+---------+---------+
+| rx_1024_1518 | True | COUNTER |
+| rx_128_255 | True | COUNTER |
+| rx_1519_9k | True | COUNTER |
+| rx_256_511 | True | COUNTER |
+| rx_512_1023 | True | COUNTER |
+| rx_64 | True | COUNTER |
+| rx_65_127 | True | COUNTER |
+| rx_bytes | True | COUNTER |
+| rx_pkts | True | COUNTER |
+| tx_1024_1518 | True | COUNTER |
+| tx_128_255 | True | COUNTER |
+| tx_1519_9k | True | COUNTER |
+| tx_256_511 | True | COUNTER |
+| tx_512_1023 | True | COUNTER |
+| tx_64 | True | COUNTER |
+| tx_65_127 | True | COUNTER |
+| tx_bytes | True | COUNTER |
+| tx_pkts | True | COUNTER |
++--------------+---------+---------+
+(device eecd8f5327bc)
+```
+
+As shown, the default_freq which is the sampling frequency is set to 150 10^ths^ of a second. View the help to determine how to change that.
+
+```shell
+(device eecd8f5327bc) help perf_config
+```
+
+```shell
+perfo_config [show | set | commit | reset] [-f <default frequency>] [-e <metric/group name>] [-d <metric/group name>] [-o <metric/group name> <override frequency>]
+
+Changes made by set are held locally until a commit or reset command is issued.
+A commit command will write the configuration to the device and it takes effect
+immediately. The reset command will undo any changes sinc the start of the
+device session.
+
+If grouped is true then the -d, -e and -o commands refer to groups and not
+individual metrics.
+(device eecd8f5327bc)
+```
+
+As shown in the help using set with the -f option will change the default_freq so lets set that to 5 seconds or 50 10^ths^ of a second.
+
+```shell
+(device eecd8f5327bc) perf_config set -f 50
+```
+
+```shell
+Success
+(device eecd8f5327bc)
+```
+
+Lets verify that the chnages have indeed been saved to the edit buffer.
+
+```shell
+(device eecd8f5327bc) perf_config show
+```
+
+```shell
+PM Config:
++---------------+-------+
+| field | value |
++---------------+-------+
+| default_freq | 50 |
+| grouped | False |
+| freq_override | False |
++---------------+-------+
+
+Supported metrics:
++--------------+---------+---------+
+| name | enabled | type |
++--------------+---------+---------+
+| rx_1024_1518 | True | COUNTER |
+| rx_128_255 | True | COUNTER |
+| rx_1519_9k | True | COUNTER |
+| rx_256_511 | True | COUNTER |
+| rx_512_1023 | True | COUNTER |
+| rx_64 | True | COUNTER |
+| rx_65_127 | True | COUNTER |
+| rx_bytes | True | COUNTER |
+| rx_pkts | True | COUNTER |
+| tx_1024_1518 | True | COUNTER |
+| tx_128_255 | True | COUNTER |
+| tx_1519_9k | True | COUNTER |
+| tx_256_511 | True | COUNTER |
+| tx_512_1023 | True | COUNTER |
+| tx_64 | True | COUNTER |
+| tx_65_127 | True | COUNTER |
+| tx_bytes | True | COUNTER |
+| tx_pkts | True | COUNTER |
++--------------+---------+---------+
+(device eecd8f5327bc)
+```
+
+The default_freq is now set to 5o 10^ths^ of a second. This change has not been applied yet. In order to apply the change, it must be committed. Lets do that now.
+
+```shell
+(device eecd8f5327bc) perf_config commit
+```
+
+```shell
+PM Config:
++---------------+-------+
+| field | value |
++---------------+-------+
+| default_freq | 50 |
+| grouped | False |
+| freq_override | False |
++---------------+-------+
+
+Supported metrics:
++--------------+---------+---------+
+| name | enabled | type |
++--------------+---------+---------+
+| rx_1024_1518 | True | COUNTER |
+| rx_128_255 | True | COUNTER |
+| rx_1519_9k | True | COUNTER |
+| rx_256_511 | True | COUNTER |
+| rx_512_1023 | True | COUNTER |
+| rx_64 | True | COUNTER |
+| rx_65_127 | True | COUNTER |
+| rx_bytes | True | COUNTER |
+| rx_pkts | True | COUNTER |
+| tx_1024_1518 | True | COUNTER |
+| tx_128_255 | True | COUNTER |
+| tx_1519_9k | True | COUNTER |
+| tx_256_511 | True | COUNTER |
+| tx_512_1023 | True | COUNTER |
+| tx_64 | True | COUNTER |
+| tx_65_127 | True | COUNTER |
+| tx_bytes | True | COUNTER |
+| tx_pkts | True | COUNTER |
++--------------+---------+---------+
+(device eecd8f5327bc)
+```
+
+Now after waiting 30 seconds or so to ensure we don't average in any older sampling intervals let's go back to a linux window and check and see how often the metrics are being sampled.
+
+```shell
+voltha$ avg=0;last=0;for i in `kafkacat -b localhost:32778 -C -o -10 -c 10 -t voltha.kpis | grep 'simulated_olt' | jq -r '.ts'`; do if [ $last -eq 0 ]; then last=$i; else if [ $avg -eq 0 ]; then avg=`expr $i - $last`; else avg=`expr \( $avg + $i - $last \) \/ 2`; fi; last=$i; fi; done; echo $avg; unset avg; unset last 5
+```
+
+The change has taken effect and the metrics are now being sampled every 5 seconds. Now lets show how certain metrics can be disabled from the kafka output. Lets say that we no longer want to see any jumbo frame counters. Go back to the voltha cli window and get the help for the `perf_config` command again. Looking at the command using set with the -d options disables metrics and using the set command with -e options enables metrics. To disable both rx and tx metrics for 1519_9k issue the following command in the voltha cli.
+
+```shell
+(device eecd8f5327bc) perf_config set -d rx_1519_9k -d tx_1519_9k
+```
+
+```shell
+Success
+(device eecd8f5327bc)
+```
+
+Now view the configuration to validate that the requested changes have been applied to the edit buffer.
+
+```shell
+(device eecd8f5327bc) perf_config show
+```
+
+```shell
+PM Config:
++---------------+-------+
+| field | value |
++---------------+-------+
+| default_freq | 50 |
+| grouped | False |
+| freq_override | False |
++---------------+-------+
+
+Supported metrics:
++--------------+---------+---------+
+| name | enabled | type |
++--------------+---------+---------+
+| rx_1024_1518 | True | COUNTER |
+| rx_128_255 | True | COUNTER |
+| rx_1519_9k | False | COUNTER |
+| rx_256_511 | True | COUNTER |
+| rx_512_1023 | True | COUNTER |
+| rx_64 | True | COUNTER |
+| rx_65_127 | True | COUNTER |
+| rx_bytes | True | COUNTER |
+| rx_pkts | True | COUNTER |
+| tx_1024_1518 | True | COUNTER |
+| tx_128_255 | True | COUNTER |
+| tx_1519_9k | False | COUNTER |
+| tx_256_511 | True | COUNTER |
+| tx_512_1023 | True | COUNTER |
+| tx_64 | True | COUNTER |
+| tx_65_127 | True | COUNTER |
+| tx_bytes | True | COUNTER |
+| tx_pkts | True | COUNTER |
++--------------+---------+---------+
+(device eecd8f5327bc)
+```
+
+The changes are there as expected. Now commit them using the commit command.
+
+```shell
+(device eecd8f5327bc) perf_config commit
+```
+
+```shell
+PM Config:
++---------------+-------+
+| field | value |
++---------------+-------+
+| default_freq | 50 |
+| grouped | False |
+| freq_override | False |
++---------------+-------+
+
+Supported metrics:
++--------------+---------+---------+
+| name | enabled | type |
++--------------+---------+---------+
+| rx_1024_1518 | True | COUNTER |
+| rx_128_255 | True | COUNTER |
+| rx_1519_9k | False | COUNTER |
+| rx_256_511 | True | COUNTER |
+| rx_512_1023 | True | COUNTER |
+| rx_64 | True | COUNTER |
+| rx_65_127 | True | COUNTER |
+| rx_bytes | True | COUNTER |
+| rx_pkts | True | COUNTER |
+| tx_1024_1518 | True | COUNTER |
+| tx_128_255 | True | COUNTER |
+| tx_1519_9k | False | COUNTER |
+| tx_256_511 | True | COUNTER |
+| tx_512_1023 | True | COUNTER |
+| tx_64 | True | COUNTER |
+| tx_65_127 | True | COUNTER |
+| tx_bytes | True | COUNTER |
+| tx_pkts | True | COUNTER |
++--------------+---------+---------+
+(device eecd8f5327bc)
+```
+
+Now lets validate that the metrics that have been set to false will no longer be published to kafka. Moving back to the Linux window use the following command:
+
+```shell
+voltha$ kafkacat -b localhost:32778 -C -o -1 -c 1 -t voltha.kpis | jq '.prefixes'
+```
+
+```json
+{
+ "voltha.simulated_olt.eecd8f5327bc.pon": {
+ "metrics": {
+ "rx_256_511": 66994,
+ "tx_128_255": 47787,
+ "tx_256_511": 66965,
+ "tx_pkts": 72684,
+ "rx_bytes": 72795037,
+ "rx_pkts": 72708,
+ "rx_128_255": 47700,
+ "tx_64": 40156,
+ "rx_64": 40172,
+ "tx_512_1023": 70724,
+ "rx_1024_1518": 47800,
+ "tx_65_127": 44018,
+ "rx_65_127": 44011,
+ "tx_bytes": 72736980,
+ "tx_1024_1518": 47854,
+ "rx_512_1023": 70773
+ }
+ },
+ "voltha.simulated_olt.eecd8f5327bc": {
+ "metrics": {
+ "cpu_util": 23.933588409473266,
+ "buffer_util": 12.861151886751806
+ }
+ },
+ "voltha.simulated_olt.eecd8f5327bc.nni": {
+ "metrics": {
+ "rx_256_511": 67001,
+ "tx_128_255": 47860,
+ "tx_256_511": 66834,
+ "tx_pkts": 72637,
+ "rx_bytes": 72658405,
+ "rx_pkts": 72718,
+ "rx_128_255": 47833,
+ "tx_64": 40188,
+ "rx_64": 40123,
+ "tx_512_1023": 70768,
+ "rx_1024_1518": 47852,
+ "tx_65_127": 43975,
+ "rx_65_127": 43933,
+ "tx_bytes": 72669736,
+ "tx_1024_1518": 47736,
+ "rx_512_1023": 70703
+ }
+ }
+}
+```
+
+As expected both rx_1519_9k and tx_1519_9k are no longer being reported for any interface on the device.
+
+This concludes this section of the test plan.
+
diff --git a/docs/manuals/user/labtests/P01_previews_kpi_collection.md b/docs/manuals/user/labtests/P01_previews_kpi_collection.md
index 22c5b62..89a9bd2 100644
--- a/docs/manuals/user/labtests/P01_previews_kpi_collection.md
+++ b/docs/manuals/user/labtests/P01_previews_kpi_collection.md
@@ -1,3 +1,3 @@
-## P1 - KPI Collection Through Voltha
+# P1 - KPI Collection Through Voltha
[Nathan to help when Tibit is submitting KPI metrics]
diff --git a/docs/manuals/user/labtests/P02_previews_yang_and_netconf.md b/docs/manuals/user/labtests/P02_previews_yang_and_netconf.md
index da356e5..9fb99ef 100644
--- a/docs/manuals/user/labtests/P02_previews_yang_and_netconf.md
+++ b/docs/manuals/user/labtests/P02_previews_yang_and_netconf.md
@@ -1,3 +1,3 @@
-## P2 - Voltha's Netconf API and Yang Definitions
+# P2 - Voltha's Netconf API and Yang Definitions
[Khen to fill with content]
diff --git a/docs/manuals/user/labtests/P03_previews_scale_out.md b/docs/manuals/user/labtests/P03_previews_scale_out.md
index eedfe2f..f6580d7 100644
--- a/docs/manuals/user/labtests/P03_previews_scale_out.md
+++ b/docs/manuals/user/labtests/P03_previews_scale_out.md
@@ -1 +1 @@
-## P3 - Voltha's Partial Readiness for Scale-out
+# P3 - Voltha's Partial Readiness for Scale-out
diff --git a/docs/manuals/user/labtests/README.md b/docs/manuals/user/labtests/README.md
index d4e34d6..215eb72 100644
--- a/docs/manuals/user/labtests/README.md
+++ b/docs/manuals/user/labtests/README.md
@@ -2,56 +2,44 @@
## Purpose
-The purpose of this section is to assist in potential lab testing of Voltha
-and Voltha-certified PON hardware solutions.
+The purpose of this section is to assist in potential lab testing of Voltha and Voltha-certified PON hardware solutions.
## Approach and Outline
-Test exercises are currently grouped based on scope. Although a few tests require nothing more
-that a single Linux server, most tests require a hardware installation, a
-"test POD," available.
+Test exercises are currently grouped based on scope. Although a few tests require nothing more than a single Linux server, most tests require a hardware installation, a "test POD," available.
Specifically, we structure the test process as follows:
* [Test POD and requirements](requirements.md)
* [Preparations](preparations.md)
* [Voltha deployment and related readiness tests](V00_voltha.md)
-* [Voltha operating on a software simulated PON network ("ponsim")](S00_ponsim_tests.md)
- -- (optional) this is useful if no real PON hardware is available and it provides
- a dataplane capable PON network which is simulated in software
+* [Voltha operating on a software simulated PON network ("ponsim")](S00_ponsim_tests.md) (optional) this is useful if no real PON hardware is available and it provides a dataplane capable PON network which is simulated in software
* [Voltha working with Broadcom Maple based OLT and Broadcom ONU(s)](M00_maple_olt_tests.md)
* [Voltha working with Tibit MicroOLT and certified ONUs](T00_tibit_olt_tests.md)
* [Additional tests show-casing upcoming features of Voltha based PON solutions](P00_previews.md)
-
## Recommended Test Method
-Most of the activation steps desribed in the test procedure can be directly
-copy-pasted from the test document to the respecive test terminal window.
+Most of the activation steps desribed in the test procedure can be directly copy-pasted from the test document to the respecive test terminal window.
-For best outcome, we recommend bringing up this test documentation on-line.
-There are two ways of doing that:
+For best outcome, we recommend bringing up this test documentation on-line. There are two ways of doing that:
-1. In a PDF document viewer
-1. (Recommended) In a Web browser in gitbook reading mode. To do this, you
-need access to the HTML-compiled version of this gitbook document. You can
-easily do it on a Voltha development host, following these steps:
+* In a PDF document viewer
+* (Recommended) In a Web browser in gitbook reading mode. To do this, you need access to the HTML-compiled version of this gitbook document. You can easily do it on a Voltha development host, following these steps:
- ```
- cd $VOLTHA_BASE
- cd docs
- make serve
- ```
+```shell
+cd $VOLTHA_BASE
+cd docs
+make serve
+```
- This will build the documentation into an HTML dir structure and will start
- serving it up on the [http://localhost:4000](http://localhost:4000) URL.
+This will build the documentation into an HTML dir structure and will start serving it up on the <http://localhost:4000> URL.
- If you need remote access from the browser to the server where the doc is
- generated, Ctrl-C the ```make serve``` line, and instead do as follows:
+If you need remote access from the browser to the server where the doc is generated, Ctrl-C the *make serve* line, and instead do as follows:
- ```
- cd _book
- python -m SimpleHTTPServer.py 4000
- ```
- You shall now be able to reach the docs using the http://localhost:4000
- URL.
+```shell
+cd _book
+python -m SimpleHTTPServer.py 4000
+```
+
+You shall now be able to reach the docs using the <http://localhost:4000> URL.
diff --git a/docs/manuals/user/labtests/S00_ponsim_tests.md b/docs/manuals/user/labtests/S00_ponsim_tests.md
index 545db80..b0c1d49 100644
--- a/docs/manuals/user/labtests/S00_ponsim_tests.md
+++ b/docs/manuals/user/labtests/S00_ponsim_tests.md
@@ -5,4 +5,4 @@
* [S3 - Verify EAPOL RG Authentication](S03_ponsim_eapol_auth.md)
* [S4 - Verify DHCP Lookup](S04_ponsim_verify_dhcp.md)
* [S5 - Verify Unicast Access](S05_ponsim_tests_unicast.md)
-* [S6 - Verify IGMP Handling](S06_ponsim_tests_multicast.md)
+* [S6 - Verify IGMP Handling](S06_ponsim_tests_multicast.md)
diff --git a/docs/manuals/user/labtests/S00_ponsim_tests_original.md b/docs/manuals/user/labtests/S00_ponsim_tests_original.md
index 2fc79cf..019bf70 100644
--- a/docs/manuals/user/labtests/S00_ponsim_tests_original.md
+++ b/docs/manuals/user/labtests/S00_ponsim_tests_original.md
@@ -1,9 +1,9 @@
# PONSIM Tests
-
The tests are grouped into the following categories:
Manual step-by-step provisioning:
+
* [S1 - Preprovision and Activate OLT](S01_ponsim_tests_launch_and_activate.md)
* [M3 - Manually Install EAPOL Forwarding Flows](S02_ponsim_tests_eapol_install.md)
* [M4 - Test EAPOL In/Out Forwarding with OLT-OFTEST](S03_ponsim_tests_eapol_in_out.md)
@@ -12,6 +12,7 @@
* [M7 - Test IGMP and multicast (Video) streams](S06_ponsim_tests_multicast.md)
ONOS-base System Test
+
* [M8 - Reset Manually Added Flows and Launch ONOS](M08_maple_olt_tests_start_onos.md)
* [M9 - Verify RG Authentication Scenario](M09_maple_olt_tests_verify_authentication.md)
* [M10 - Verify DHCP Lookup](M10_maple_olt_tests_verify_dhcp.md)
diff --git a/docs/manuals/user/labtests/S01_ponsim_tests_launch_and_activate.md b/docs/manuals/user/labtests/S01_ponsim_tests_launch_and_activate.md
index d7ec9b3..039d7e8 100644
--- a/docs/manuals/user/labtests/S01_ponsim_tests_launch_and_activate.md
+++ b/docs/manuals/user/labtests/S01_ponsim_tests_launch_and_activate.md
@@ -1,20 +1,20 @@
-## S1 - Preprovision and Activate PONSIM Voltha
+# S1 - Preprovision and Activate PONSIM Voltha
-### Test Objective
+## Test Objective
* Purpose of this test is to verify new PONSIM OLT can be added and activated from VOLTHA, including;
- * Correct simulated PON environment
- * Logical device visible in VOLTHA CLI
+ * Correct simulated PON environment
+ * Logical device visible in VOLTHA CLI
-### Test Configuration
+## Test Configuration
* VOLTHA ensemble running as per [deployment instructions](V01_voltha_bringup_deploy.md).
-### Test Procedure
+## Test Procedure
Start off by starting ponsim, make sure you do this as root as ponsim creates virtual interfaces and adds some of them into the _ponmgmt_ bridge on the system.
-```
+```shell
sudo -s
. ./env.sh
./ponsim/main.py -v
@@ -22,13 +22,13 @@
PONSIM should now be running; check this by doing the following.
-```
+```shell
sudo netstat -uteap | grep python
```
-and you should see;
+and you should see
-```
+```shell
tcp6 0 0 [::]:50060 [::]:* LISTEN root 256217 19162/python
```
@@ -36,21 +36,20 @@
Next, let's check that PONSIM initialized correctly and added the correct interfaces to the _ponmgmt_ bridge.
-```
- brctl show ponmgmt
+```shell
+brctl show ponmgmt
```
This should return the following output:
-```
-bridge name bridge id STP enabled interfaces
-ponmgmt 8000.02429b8631d5 no pon1_0
- veth24f4706 (<- name may vary)
+```shell
+bridge name bridge id STP enabled interfaces
+ponmgmt 8000.02429b8631d5 no pon1_0veth24f4706 (<- name may vary)
```
At this point we are ready to launch the voltha CLI and add the simulated OLT and ONU.
-```
+```shell
./cli/main.py -L
_ _ _ ___ _ ___
__ _____| | |_| |_ __ _ / __| | |_ _|
@@ -62,13 +61,13 @@
We have now a CLI to voltha, let's check if voltha is healthy. Enter the following at the CLI prompt.
-```
- health
+```shell
+health
```
which should return;
-```
+```json
{
"state": "HEALTHY"
}
@@ -76,13 +75,13 @@
Now we can provision the PONSIM OLT and ONU in voltha. This is done in the voltha CLI.
-```
+```shell
preprovision_olt -t ponsim_olt -H 172.17.0.1:50060
```
This tells voltha to provision an olt of type ponsim_olt. You should see the following output.
-```
+```shell
success (device id = dece8e843be5)
```
@@ -90,26 +89,26 @@
Next, we need to activate the OLT in voltha.
-```
+```shell
enable
```
which returns
-```
+```shell
activating dece8e843be5
success (logical device id = 1)
```
This has now activated both a ponsim olt and onu as can be seem by running the following command at the CLI.
-```
+```shell
devices
```
and the output should be
-```
+```shell
+--------------+------------+------+--------------+------+-------------+-------------+----------------+----------------+------------------+-------------------------+--------------------------+
| id | type | root | parent_id | vlan | admin_state | oper_status | connect_status | parent_port_no | host_and_port | proxy_address.device_id | proxy_address.channel_id |
+--------------+------------+------+--------------+------+-------------+-------------+----------------+----------------+------------------+-------------------------+--------------------------+
@@ -120,13 +119,13 @@
Also we can observe similar output at the REST API. To use the REST, open a new shell to the server and run the following command. Note: The port number needs to be the recorded port number from the VOLTHA installation.
-```
+```shell
curl -s http://localhost:32863/api/v1/logical_devices | jq .
```
and the output should be
-```
+```json
{
"items": [
{
@@ -155,26 +154,25 @@
Now that this OLT has not received any forwarding rules, it should drop all traffic. We can verify this by starting the RG emulator and observing that EAPOL authentication does not succeed. To do this start our RG docker container.
-
-```
+```shell
docker run --net=host --privileged --name RG -it voltha/tester bash
```
this should land you in a command prompt that looks like
-```
+```shell
root@8358ef5cad0e:/#
```
and at this prompt issue the following command
-```
+```shell
/sbin/wpa_supplicant -Dwired -ipon1_128 -c /etc/wpa_supplicant/wpa_supplicant.conf
```
this should hang with the following output. You will need to interrupt it with Ctrl-C.
-```
+```shell
Successfully initialized wpa_supplicant
eth1: Associated with 01:80:c2:00:00:03
WMM AC: Missing IEs
@@ -182,7 +180,7 @@
and in the ponsim console you should see
-```
+```shell
20170113T053529.328 DEBUG frameio.recv {iface: pon1_128sim, hex: 0180c20000037a61e2a73004888e01010000, len: 18, event: frame-received, instance_id: pon1}
20170113T053529.329 DEBUG frameio.recv {event: frame-dispatched, instance_id: pon1}
20170113T053529.329 DEBUG frameio._dispatch {frame: 0180c20000037a61e2a73004888e01010000, event: calling-publisher, instance_id: pon1}
@@ -191,8 +189,7 @@
20170113T053529.330 DEBUG ponsim.ingress {logical_port_no: 128, name: onu0, event: dropped, instance_id: pon1}
```
-
-### Pass/Fail Criteria
+## Pass/Fail Criteria
* OLT is successfully detected and activated on VOLTHA
* Logical device and port list is created on VOLTHA
diff --git a/docs/manuals/user/labtests/S02_ponsim_tests_eapol_install.md b/docs/manuals/user/labtests/S02_ponsim_tests_eapol_install.md
index cc33ebc..c793ef1 100644
--- a/docs/manuals/user/labtests/S02_ponsim_tests_eapol_install.md
+++ b/docs/manuals/user/labtests/S02_ponsim_tests_eapol_install.md
@@ -1,9 +1,9 @@
-## S2 - Manually Install EAPOL Forwarding Flows
+# S2 - Manually Install EAPOL Forwarding Flows
-### Test Objective
+## Test Objective
-### Test Configuration
+## Test Configuration
-### Test Procedure
+## Test Procedure
-### Pass/Fail Criteria
+## Pass/Fail Criteria
diff --git a/docs/manuals/user/labtests/S02_ponsim_tests_onos.md b/docs/manuals/user/labtests/S02_ponsim_tests_onos.md
index a3596d5..cb59d53 100644
--- a/docs/manuals/user/labtests/S02_ponsim_tests_onos.md
+++ b/docs/manuals/user/labtests/S02_ponsim_tests_onos.md
@@ -1,37 +1,37 @@
-## S2 - Attach the PONSIM OLT to ONOS
+# S2 - Attach the PONSIM OLT to ONOS
-### Test Objective
+## Test Objective
Observe that ONOS has identified the OLT device and displays the correct number of ONU ports
-### Test Configuration
+## Test Configuration
* VOLTHA ensemble up and running.
* PONSIM configured with an OLT with multiple ONUs
-### Test Procedure
+## Test Procedure
First, start the onos container.
-```
+```shell
docker-compose -f compose/docker-compose-auth-test.yml up -d onos
```
this should output
-```
+```shell
Creating compose_onos_1
```
Make sure that ONOS is running
-```
+```shell
docker-compose -f compose/docker-compose-auth-test.yml ps
```
which shows
-```
+```shell
Name Command State Ports
------------------------------------------------------------------------------------------------------------------------------
compose_onos_1 ./bin/onos-service Up 0.0.0.0:6653->6653/tcp, 0.0.0.0:8101->8101/tcp, 0.0.0.0:8181->8181/tcp, 9876/tcp
@@ -39,14 +39,14 @@
Now, let's login to ONOS.
-```
+```shell
sudo apt install sshpass # may not be necessary
sshpass -p karaf ssh -o StrictHostKeyChecking=no -p 8101 karaf@localhost
```
this should land you at the ONOS prompt
-```
+```shell
Welcome to Open Network Operating System (ONOS)!
____ _ ______ ____
/ __ \/ |/ / __ \/ __/
@@ -68,25 +68,25 @@
Let's have a look at the devices that ONOS sees, to do this enter the following at the ONOS prompt.
-```
+```shell
devices
```
this will output the following
-```
+```shell
id=of:0000000000000001, available=true, role=MASTER, type=SWITCH, mfr=cord porject, hw=simualted pon, sw=simualted pon, serial=46da01fd646d4bb08140fc09b1bc4926, driver=voltha, channelId=172.25.0.1:35866, managementAddress=172.25.0.1, name=of:0000000000000001, protocol=OF_13
```
next let's have a look at the ports that onos sees. Remember that ONOS sees the PON system as a logical device so ONU are represented as ports to ONOS. So let's see the ports in ONOS.
-```
+```shell
ports
```
which returns the following
-```
+```shell
id=of:0000000000000001, available=true, role=MASTER, type=SWITCH, mfr=cord porject, hw=simualted pon, sw=simualted pon, serial=46da01fd646d4bb08140fc09b1bc4926, driver=voltha, channelId=172.25.0.1:35866, managementAddress=172.25.0.1, name=of:0000000000000001, protocol=OF_13
port=0, state=enabled, type=fiber, speed=0 , portName=nni, portMac=00:00:00:00:00:00
port=128, state=enabled, type=fiber, speed=0 , portName=uni-128, portMac=00:00:00:00:00:80
@@ -96,7 +96,7 @@
This correctly shows three ports. Yay!
-### Pass/Fail Criteria
+## Pass/Fail Criteria
* OLT observed in ONOS
* ONUs observed in ONOS as ports
diff --git a/docs/manuals/user/labtests/S03_ponsim_eapol_auth.md b/docs/manuals/user/labtests/S03_ponsim_eapol_auth.md
index de685f7..dbdee08 100644
--- a/docs/manuals/user/labtests/S03_ponsim_eapol_auth.md
+++ b/docs/manuals/user/labtests/S03_ponsim_eapol_auth.md
@@ -1,33 +1,33 @@
-## S3 - Verify EAPOL Remote Gateway Authentication
+# S3 - Verify EAPOL Remote Gateway Authentication
-### Test Objective
+## Test Objective
* Purpose of this test is to verify that 802.1X EAPOL messages are forwarded to the ONOS from VOLTHA
- * Correct simulated PON environment
- * Logical device visible in VOLTHA CLI
+ * Correct simulated PON environment
+ * Logical device visible in VOLTHA CLI
-### Test Configuration
+## Test Configuration
* VOLTHA ensemble running as per [deployment instructions](V01_voltha_bringup_deploy.md).
* Start the freeradius container
-```
+```shell
docker-compose -f compose/docker-compose-auth-test.yml up -d freeradius
```
* PONSIM OLT and ONUs registered as ACTIVE in VOLTHA
-### Test Procedure
+## Test Procedure
Execute the following command
-```
+```shell
/sbin/wpa_supplicant -Dwired -ipon1_128 -c /etc/wpa_supplicant/wpa_supplicant.conf
```
This should pass with the following output
-```
+```shell
Successfully initialized wpa_supplicant
pon1_128: Associated with 01:80:c2:00:00:03
WMM AC: Missing IEs
@@ -37,7 +37,6 @@
pon1_128: CTRL-EVENT-EAP-SUCCESS EAP authentication completed successfully
```
-
-### Pass/Fail Criteria
+## Pass/Fail Criteria
* EAPOL Authentication should pass
diff --git a/docs/manuals/user/labtests/S03_ponsim_tests_eapol_in_out.md b/docs/manuals/user/labtests/S03_ponsim_tests_eapol_in_out.md
index dba961e..71a5fa7 100644
--- a/docs/manuals/user/labtests/S03_ponsim_tests_eapol_in_out.md
+++ b/docs/manuals/user/labtests/S03_ponsim_tests_eapol_in_out.md
@@ -1,9 +1,9 @@
-## S3 - Test EAPOL In/Out Forwarding with OLT-OFTEST
+# S3 - Test EAPOL In/Out Forwarding with OLT-OFTEST
-### Test Objective
+## Test Objective
-### Test Configuration
+## Test Configuration
-### Test Procedure
+## Test Procedure
-### Pass/Fail Criteria
+## Pass/Fail Criteria
diff --git a/docs/manuals/user/labtests/S04_ponsim_tests_install_all_flows.md b/docs/manuals/user/labtests/S04_ponsim_tests_install_all_flows.md
index c6edee9..bcbf313 100644
--- a/docs/manuals/user/labtests/S04_ponsim_tests_install_all_flows.md
+++ b/docs/manuals/user/labtests/S04_ponsim_tests_install_all_flows.md
@@ -1,9 +1,9 @@
-## S4 - Manually Install All Forwarding Flows
+# S4 - Manually Install All Forwarding Flows
-### Test Objective
+## Test Objective
-### Test Configuration
+## Test Configuration
-### Test Procedure
+## Test Procedure
-### Pass/Fail Criteria
+## Pass/Fail Criteria
diff --git a/docs/manuals/user/labtests/S04_ponsim_verify_dhcp.md b/docs/manuals/user/labtests/S04_ponsim_verify_dhcp.md
index 6b4c282..b198db5 100644
--- a/docs/manuals/user/labtests/S04_ponsim_verify_dhcp.md
+++ b/docs/manuals/user/labtests/S04_ponsim_verify_dhcp.md
@@ -1,46 +1,45 @@
-## S4 - Verify DHCP successfully obtains an IP address
+# S4 - Verify DHCP successfully obtains an IP address
-### Test Objective
+## Test Objective
* Purpose of this test is to verify that the Dynamic Host Configuration Protocol (DHCP)
- * Correct simulated PON environment
- * Logical device visible in VOLTHA cli
+ * Correct simulated PON environment
+ * Logical device visible in VOLTHA cli
-### Test Configuration
+## Test Configuration
* VOLTHA ensemble running as per [deployment instructions](V01_voltha_bringup_deploy.md).
* Note: The DHCP server is contained within ONOS.
* PONSIM OLT and ONUs registered as ACTIVE in VOLTHA
-### Test Procedure
+## Test Procedure
To start this procedure, execute the "ifconfig" command on the
interface that will be getting assigned an IP address over DHCP and
verify that IP address has not been assigned.
-```
+```shell
ifconfig pon1_128
```
Execute the following command
-```
+```shell
dhclient pon1_128
```
Note: When the dhclient command completes a common error message is displayed as follows. This mesage can safely be ignored.
-```
+```shell
dhclient: cannot move '/etc/*.conf' to '/etc/resolve.conf'
```
Then verify that an IP address was dynamically assigned to your interface
-```
+```shell
ifconfig pon1_128
```
-
-### Pass/Fail Criteria
+## Pass/Fail Criteria
* IP address assigned to interface
diff --git a/docs/manuals/user/labtests/S05_ponsim_tests_unicast.md b/docs/manuals/user/labtests/S05_ponsim_tests_unicast.md
index 951d008..e4ab0ab 100644
--- a/docs/manuals/user/labtests/S05_ponsim_tests_unicast.md
+++ b/docs/manuals/user/labtests/S05_ponsim_tests_unicast.md
@@ -1,33 +1,33 @@
-## S5 - Verify unicast traffic flow
+# S5 - Verify unicast traffic flow
-### Test Objective
+## Test Objective
* Purpose of this test is to verify that unicast traffic flows through the system
- * Correct simulated PON environment
- * Logical device visible in VOLTHA cli
+ * Correct simulated PON environment
+ * Logical device visible in VOLTHA cli
-### Test Configuration
+## Test Configuration
* VOLTHA ensemble running as per [deployment instructions](V01_voltha_bringup_deploy.md).
* PONSIM OLT and ONUs registered as ACTIVE in VOLTHA
-### Test Procedure
+## Test Procedure
Execute the following command
-```
+```shell
ping -I pon1_128 1.2.3.4
```
Meanwhile tcpdump on the host machine on pon1_0.
-```
+```shell
sudo tcpdump -nei pon1_0
```
which will output
-```
+```shell
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on pon1_0, link-type EN10MB (Ethernet), capture size 262144 bytes
13:53:44.328260 06:0c:49:94:35:7e > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 50: vlan 1000, p 0, ethertype 802.1Q, vlan 128, p 0, ethertype ARP, Request who-has 1.2.3.4 tell 10.1.11.63, length 28
@@ -38,6 +38,6 @@
13:53:49.322517 06:0c:49:94:35:7e > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 50: vlan 1000, p 0, ethertype 802.1Q, vlan 128, p 0, ethertype ARP, Request who-has 1.2.3.4 tell 10.1.11.63, length 28
```
-### Pass/Fail Criteria
+## Pass/Fail Criteria
Ping completes successfully
diff --git a/docs/manuals/user/labtests/S06_ponsim_tests_multicast.md b/docs/manuals/user/labtests/S06_ponsim_tests_multicast.md
index d1f6fb6..9c140bf 100644
--- a/docs/manuals/user/labtests/S06_ponsim_tests_multicast.md
+++ b/docs/manuals/user/labtests/S06_ponsim_tests_multicast.md
@@ -1,20 +1,20 @@
-## S6 - Test IGMP and multicast (Video) streams
+# S6 - Test IGMP and multicast (Video) streams
-### Test Objective
+## Test Objective
Verify that VOLTHA punts IGMP packets to ONOS and that ONOS provisions the right multicast rules
-### Test Configuration
+## Test Configuration
* VOLTHA ensemble up and running.
* PONSIM configured with an OLT with multiple ONUs
* An authenticated RG
-### Test Procedure
+## Test Procedure
At this point ONOS should show the following rules:
-```
+```shell
deviceId=of:0000000000000001, flowRuleCount=7
ADDED, bytes=0, packets=0, table=0, priority=10000, selector=[IN_PORT:128, ETH_TYPE:ipv4, IP_PROTO:2], treatment=[immediate=[OUTPUT:CONTROLLER]]
ADDED, bytes=0, packets=0, table=0, priority=1000, selector=[IN_PORT:128, ETH_TYPE:eapol], treatment=[immediate=[OUTPUT:CONTROLLER]]
@@ -27,13 +27,13 @@
So now let's send an IGMP packet from the RG up the ONU. To do this run the following in the RG container.
-```
+```shell
igmp.py -j -i pon1_128 -m 229.0.0.1
```
this will return
-```
+```shell
.
Sent 1 packets.
```
@@ -42,13 +42,13 @@
Let us now check the state in ONOS, starting with the group information. Run the following in the ONOS prompt.
-```
+```shell
groups
```
which returns
-```
+```shell
deviceId=of:0000000000000001, groupCount=1
id=0x1, state=ADDED, type=ALL, bytes=0, packets=0, appId=org.onosproject.cordmcast
id=0x1, bucket=1, bytes=0, packets=0, actions=[VLAN_POP:unknown, OUTPUT:128]
@@ -58,13 +58,13 @@
For a group to be useful a flow must point to this group. So let's check in ONOS whether a flow exists.
-```
+```shell
flows -s
```
and find a flow which looks like
-```
+```shell
ADDED, bytes=0, packets=0, table=0, priority=500, selector=[IN_PORT:0, ETH_TYPE:ipv4, VLAN_VID:140, IPV4_DST:229.0.0.1/32], treatment=[immediate=[GROUP:0x1]]
```
@@ -72,14 +72,14 @@
Now let's check whether we find this state in the logical device in VOLTHA. Let's run the following in the VOLTHA CLI.
-```
+```shell
logical_device
flows
```
which will return
-```
+```shell
Logical Device 1 (type: n/a)
Flows (10):
+----------+----------+-----------+---------+----------+----------+----------+-----------+---------+---------+----------+--------------+----------+-----------+-------+------------+------------+
@@ -102,13 +102,13 @@
Let's now look at the physical device level. Still in the Voltha CLI run the following.
-```
+```shell
devices
```
this returns
-```
+```shell
Devices:
+--------------+------------+------+--------------+------+-------------+-------------+----------------+----------------+------------------+-------------------------+--------------------------+
| id | type | root | parent_id | vlan | admin_state | oper_status | connect_status | parent_port_no | host_and_port | proxy_address.device_id | proxy_address.channel_id |
@@ -122,14 +122,14 @@
Identify the ONU which sent the IGMP packet (128) and copy its device id (56a6fc8b859f in this case). Next run the following in the Voltha CLI.
-```
+```shell
device 56a6fc8b859f
flows
```
which returns
-```
+```shell
Device 56a6fc8b859f (type: ponsim_onu)
Flows (6):
+----------+----------+-----------+---------+----------+----------+-----------+--------------+----------+-----------+--------+
@@ -148,7 +148,7 @@
Let us now try this out for real with a real packet. Let's first build a multicast frame and send it down the nni port, we can do this with scapy.
-```
+```shell
sudo scapy
mc = Ether(src="00:00:00:00:00:01")/Dot1Q(vlan=140)/IP(dst="229.0.0.1", proto=17)
sendp(mc, iface="pon1_0")
@@ -156,13 +156,13 @@
Meanwhile run tcpdump in the RG container:
-```
+```shell
tcpdump -nei pon1_128
```
in he RG container while tcpdump'ing we should see the following output.
-```
+```shell
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on pon1_128, link-type EN10MB (Ethernet), capture size 262144 bytes
08:09:43.004776 00:00:00:00:00:01 > 01:00:5e:00:00:01, ethertype IPv4 (0x0800), length 34: 10.0.2.15 > 229.0.0.1: [|udp]
@@ -170,7 +170,7 @@
Woohoo!
-### Pass/Fail Criteria
+## Pass/Fail Criteria
* Flows and groups installed in ONOS
* Flows and groups installed in Voltha
diff --git a/docs/manuals/user/labtests/T00_tibit_olt_tests.md b/docs/manuals/user/labtests/T00_tibit_olt_tests.md
index 23de6ca..eefab69 100644
--- a/docs/manuals/user/labtests/T00_tibit_olt_tests.md
+++ b/docs/manuals/user/labtests/T00_tibit_olt_tests.md
@@ -8,4 +8,4 @@
* [T3 - Verify EAPOL RG Authentication](T03_tibit_olt_eapol_auth.md)
* [T4 - Verify DHCP Lookup](T04_tibit_verify_dhcp.md)
* [T5 - Verify Unicast Access](T05_tibit_tests_unicast.md)
-* [T6 - Verify IGMP Handling](T06_tibit_tests_multicast.md)
+* [T6 - Verify IGMP Handling](T06_tibit_tests_multicast.md)
diff --git a/docs/manuals/user/labtests/T01_tibit_olt_tests_activate_olt.md b/docs/manuals/user/labtests/T01_tibit_olt_tests_activate_olt.md
index 05ec86f..142d714 100644
--- a/docs/manuals/user/labtests/T01_tibit_olt_tests_activate_olt.md
+++ b/docs/manuals/user/labtests/T01_tibit_olt_tests_activate_olt.md
@@ -1,26 +1,26 @@
-## T1 - Preprovision and Activate OLT
+# T1 - Preprovision and Activate OLT
-### Test Objective
+## Test Objective
* Purpose of this test is to verify new OLT can be added and activated from VOLTHA
* VOLTHA will connect with the OLT physical device and create a
logical device with initial ports in its data store
* VOLTHA will send Event notifications to ONOS and PON Manager for the newly added OLT
-### Test Configuration
+## Test Configuration
* The test setup is as shown in earlier sections
* Tibit OLT should be reachable from VOLTHA on VLAN 4090
* Start the VOLTHA CLI
-**Step 1: If not yet running, launch the Voltha CLI:**
+## Step 1: If not yet running, launch the Voltha CLI
-```
+```shell
cd $VOLTHA_BASE
./cli/main.py -L
```
-```
+```shell
_ _ _ ___ _ ___
__ _____| | |_| |_ __ _ / __| | |_ _|
\ V / _ \ | _| ' \/ _` | | (__| |__ | |
@@ -29,14 +29,14 @@
(voltha)
```
-### Test Procedure
+## Test Procedure
* Issue CLI commands in the VOLTHA CLI to simulate an “Add-OLT device”
message coming from the PON Manager to VOLTHA
* Note: Please refer to the label for "MAC 0" printed on the side of
the Tibit evaluation device to record the MAC address of the OLT
-```
+```shell
preprovision_olt --device-type tibit_olt --mac-address 00:0c:e2:31:40:00
```
@@ -44,13 +44,13 @@
device in the device table. Executing the following command will
display known devices
-```
+```shell
devices
```
* The output should appear as follows
-```
+```shell
Devices:
+--------------+-----------+-------------------+----------------+
| id | type | mac_address | admin_state |
@@ -61,22 +61,23 @@
* To activate the OLT, execute the following command
-```
+```shell
enable
```
+
* VOLTHA should initiate a connection and activation request to the Tibit OLT
* VOLHA will create the logical OpenFlow device and ports and notify ONOS
* VOLTHA will send an OLT-Activated event notification to the PON Manager
-* VOLTHA will also query the OLT for the number of ONUs connected and attempt
-to activate all ONUs
+* VOLTHA will also query the OLT for the number of ONUs connected and attempt to activate all ONUs
* Verify the OLT and ONU status on device console with the following command
-```
+```shell
devices
```
+
* The output should appear similar to the following
-```
+```shell
Devices:
+--------------+-----------+------+------+-------------------+-------------+-------------+...
| id | type | root | vlan | mac_address | admin_state | oper_status |...
@@ -86,36 +87,33 @@
+--------------+-----------+------+------+-------------------+-------------+-------------+...
```
-Now that this OLT has not received any forwarding rules, it should
-drop all traffic. We can verify this by starting the RG emulator and
-observing that EAPOL authentication does not succeed. To do this start
-our RG docker container.
+Now that this OLT has not received any forwarding rules, it should drop all traffic. We can verify this by starting the RG emulator and observing that EAPOL authentication does not succeed. To do this start our RG docker container.
-```
+```shell
docker run --net=host --privileged --name RG -it voltha/tester bash
```
this should land you in a command prompt that looks like
-```
+```shell
root@8358ef5cad0e:/#
```
and at this prompt issue the following command
-```
+```shell
/sbin/wpa_supplicant -Dwired -ieno4.2023 -c /etc/wpa_supplicant/wpa_supplicant.conf
```
this should hang with the following output. You will need to interrupt it with Ctrl-C.
-```
+```shell
Successfully initialized wpa_supplicant
eth1: Associated with 01:80:c2:00:00:03
WMM AC: Missing IEs
```
-### Pass/Fail Criteria
+## Pass/Fail Criteria
* OLT / ONUs status can be seen from Device Console
* Confirm OLT and ONUs have "oper_status" of ACTIVE
diff --git a/docs/manuals/user/labtests/T02_tibit_olt_tests_onos.md b/docs/manuals/user/labtests/T02_tibit_olt_tests_onos.md
index 6770131..dae9730 100644
--- a/docs/manuals/user/labtests/T02_tibit_olt_tests_onos.md
+++ b/docs/manuals/user/labtests/T02_tibit_olt_tests_onos.md
@@ -1,43 +1,43 @@
-## T2 - Attach the Tibit OLT to ONOS
+# T2 - Attach the Tibit OLT to ONOS
-### Test Objective
+## Test Objective
Observe that ONOS has identified the OLT device and displays the correct number of ONU ports
-### Test Configuration
+## Test Configuration
* VOLTHA ensemble up and running.
* Tibit configured with an OLT and one or more ONUs
-### Test Procedure
+## Test Procedure
First, start the onos container.
-```
+```shell
docker-compose -f compose/docker-compose-auth-test.yml up -d onos
```
this should output
-```
+```shell
Creating compose_onos_1
```
Note: You may see a docker compose warning that states the following. This warning can be ignored.
-```
+```shell
WARNING: Found orphan containers (compose_shovel_1, compose_registrator_1, compose_kafka_1, ...)
```
Make sure that ONOS is running
-```
+```shell
docker-compose -f compose/docker-compose-auth-test.yml ps
```
which shows
-```
+```shell
Name Command State Ports
------------------------------------------------------------------------------------------------------------------------------
compose_onos_1 ./bin/onos-service Up 0.0.0.0:6653->6653/tcp, 0.0.0.0:8101->8101/tcp, 0.0.0.0:8181->8181/tcp, 9876/tcp
@@ -45,14 +45,14 @@
Now, let's login to ONOS.
-```
+```shell
sudo apt install sshpass # may not be necessary
sshpass -p karaf ssh -o StrictHostKeyChecking=no -p 8101 karaf@localhost
```
this should land you at the ONOS prompt
-```
+```shell
Welcome to Open Network Operating System (ONOS)!
____ _ ______ ____
/ __ \/ |/ / __ \/ __/
@@ -74,25 +74,25 @@
Let's have a look at the devices that ONOS sees, to do this enter the following at the ONOS prompt.
-```
+```shell
devices
```
this will output the following
-```
+```shell
id=of:0000000000000001, available=true, role=MASTER, type=SWITCH, mfr=cord porject, hw=simualted pon, sw=simualted pon, serial=46da01fd646d4bb08140fc09b1bc4926, driver=voltha, channelId=172.25.0.1:35866, managementAddress=172.25.0.1, name=of:0000000000000001, protocol=OF_13
```
next let's have a look at the ports that onos sees. Remember that ONOS sees the PON system as a logical device so ONU are represented as ports to ONOS. So let's see the ports in ONOS.
-```
+```shell
ports
```
which returns the following
-```
+```shell
id=of:0000000000000001, available=true, role=MASTER, type=SWITCH, mfr=cord porject, hw=simualted pon, sw=simualted pon, serial=46da01fd646d4bb08140fc09b1bc4926, driver=voltha, channelId=172.25.0.1:35866, managementAddress=172.25.0.1, name=of:0000000000000001, protocol=OF_13
port=0, state=enabled, type=fiber, speed=0 , portName=nni, portMac=00:00:00:00:00:00
port=128, state=enabled, type=fiber, speed=0 , portName=uni-128, portMac=00:00:00:00:00:80
@@ -102,7 +102,7 @@
This correctly shows three ports. Yay!
-### Pass/Fail Criteria
+## Pass/Fail Criteria
* OLT observed in ONOS
* ONUs observed in ONOS as ports
diff --git a/docs/manuals/user/labtests/T03_tibit_olt_eapol_auth.md b/docs/manuals/user/labtests/T03_tibit_olt_eapol_auth.md
index 9f0e218..bd6f772 100644
--- a/docs/manuals/user/labtests/T03_tibit_olt_eapol_auth.md
+++ b/docs/manuals/user/labtests/T03_tibit_olt_eapol_auth.md
@@ -1,48 +1,48 @@
-## T3 - Verify EAPOL Remote Gateway Authentication
+# T3 - Verify EAPOL Remote Gateway Authentication
-### Test Objective
+## Test Objective
* Purpose of this test is to verify that 802.1X EAPOL messages are forwarded to the ONOS from VOLTHA
- * Correct Tibit OLT and ONU PON environment
- * Logical device visible in VOLTHA CLI
+ * Correct Tibit OLT and ONU PON environment
+ * Logical device visible in VOLTHA CLI
-### Test Configuration
+## Test Configuration
* VOLTHA ensemble running as per [deployment instructions](V01_voltha_bringup_deploy.md).
* Start the freeradius container
-```
+```shell
docker-compose -f compose/docker-compose-auth-test.yml up -d freeradius
```
* Tibit OLT and ONUs registered as ACTIVE in VOLTHA
-### Test Procedure
+## Test Procedure
Now that this OLT is ACTIVE in VOLTHA, it should forward EAPOL
traffic. We can verify this by starting the RG emulator and observing
that EAPOL authentication does not succeed. To do this start our RG
docker container.
-```
+```shell
docker run --net=host --privileged --name RG -it voltha/tester bash
```
this should land you in a command prompt that looks like
-```
+```shell
root@8358ef5cad0e:/#
```
and at this prompt issue the following command
-```
+```shell
/sbin/wpa_supplicant -Dwired -iens9f1 -c /etc/wpa_supplicant/wpa_supplicant.conf
```
This should pass with the following output
-```
+```shell
Successfully initialized wpa_supplicant
ens9f1: Associated with 01:80:c2:00:00:03
WMM AC: Missing IEs
@@ -54,11 +54,10 @@
Note: The wpa_supplicant application will not terminate on its own. After the EAP authentication has completed, it is appropriate to terminate the wpa_supplicant application.
-```
+```shell
Ctrl-C
```
-
-### Pass/Fail Criteria
+## Pass/Fail Criteria
* EAPOL Authentication should pass
diff --git a/docs/manuals/user/labtests/T04_tibit_verify_dhcp.md b/docs/manuals/user/labtests/T04_tibit_verify_dhcp.md
index 7cd3a9d..b0faac8 100644
--- a/docs/manuals/user/labtests/T04_tibit_verify_dhcp.md
+++ b/docs/manuals/user/labtests/T04_tibit_verify_dhcp.md
@@ -1,42 +1,42 @@
-## T4 - Verify DHCP successfully obtains an IP address
+# T4 - Verify DHCP successfully obtains an IP address
-### Test Objective
+## Test Objective
* Purpose of this test is to verify that the Dynamic Host Configuration Protocol (DHCP)
- * Correct Tibit OLT and ONU PON environment
- * Logical device visible in VOLTHA CLI
+ * Correct Tibit OLT and ONU PON environment
+ * Logical device visible in VOLTHA CLI
-### Test Configuration
+## Test Configuration
* VOLTHA ensemble running as per [deployment instructions](V01_voltha_bringup_deploy.md).
* Note: The DHCP server is contained within ONOS.
* Tibit OLT and ONUs registered as ACTIVE in VOLTHA
-### Test Procedure
+## Test Procedure
To start this procedure, execute the "ifconfig" command on the interface that will be getting assigned an IP address over DHCP and verify that IP address has not been assigned.
-```
+```shell
ifconfig ens9f1
```
Next, execute the following command to obtain an IP address from ONOS.
-```
+```shell
dhclient ens9f1
```
Note: When the dhclient command completes a common error message is displayed as follows. This mesage can safely be ignored.
-```
+```shell
mv: cannot move '/etc/resolv.conf.dhclient-new*' to '/etc/resolve.conf'
```
Then verify that an IP address was dynamically assigned to your interface
-```
+```shell
ifconfig ens9f1
```
-### Pass/Fail Criteria
+## Pass/Fail Criteria
* IP address assigned to interface
diff --git a/docs/manuals/user/labtests/T05_tibit_tests_unicast.md b/docs/manuals/user/labtests/T05_tibit_tests_unicast.md
index e95b4f5..81fcc57 100644
--- a/docs/manuals/user/labtests/T05_tibit_tests_unicast.md
+++ b/docs/manuals/user/labtests/T05_tibit_tests_unicast.md
@@ -1,33 +1,33 @@
-## T5 - Verify unicast traffic flow
+# T5 - Verify unicast traffic flow
-### Test Objective
+## Test Objective
* Purpose of this test is to verify that unicast traffic flows through the system
- * Correct Tibit PON environment
- * Logical device visible in VOLTHA cli
+ * Correct Tibit PON environment
+ * Logical device visible in VOLTHA cli
-### Test Configuration
+## Test Configuration
* VOLTHA ensemble running as per [deployment instructions](V01_voltha_bringup_deploy.md).
* Tibit OLT and ONUs registered as ACTIVE in VOLTHA
-### Test Procedure
+## Test Procedure
Execute the following command from the RG side
-```
+```shell
ping -I ens9f1 1.2.3.4
```
Meanwhile tcpdump on the VOLTHA server.
-```
+```shell
sudo tcpdump -nei ens9f0
```
which will output
-```
+```shell
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on pon1_0, link-type EN10MB (Ethernet), capture size 262144 bytes
13:53:44.328260 06:0c:49:94:35:7e > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 50: vlan 1000, p 0, ethertype 802.1Q, vlan 128, p 0, ethertype ARP, Request who-has 1.2.3.4 tell 10.1.11.63, length 28
@@ -38,6 +38,6 @@
13:53:49.322517 06:0c:49:94:35:7e > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 50: vlan 1000, p 0, ethertype 802.1Q, vlan 128, p 0, ethertype ARP, Request who-has 1.2.3.4 tell 10.1.11.63, length 28
```
-### Pass/Fail Criteria
+## Pass/Fail Criteria
Ping completes successfully
diff --git a/docs/manuals/user/labtests/T06_tibit_tests_multicast.md b/docs/manuals/user/labtests/T06_tibit_tests_multicast.md
index 8593a4d..0d379f0 100644
--- a/docs/manuals/user/labtests/T06_tibit_tests_multicast.md
+++ b/docs/manuals/user/labtests/T06_tibit_tests_multicast.md
@@ -1,24 +1,24 @@
-## T6 - Test IGMP and multicast (Video) streams
+# T6 - Test IGMP and multicast (Video) streams
-### Test Objective
+## Test Objective
Verify that VOLTHA punts IGMP packets to ONOS and that ONOS provisions the right multicast rules
-### Test Configuration
+## Test Configuration
* VOLTHA ensemble up and running.
* Tibit configured with an OLT with one or more ONUs
* An authenticated RG
-### Test Procedure
+## Test Procedure
At this point ONOS should show the following rules. Type flows at the 'onos>' prompt comfirm.
-```
+```shell
flows
```
-```
+```shell
deviceId=of:0000000000000001, flowRuleCount=7
ADDED, bytes=0, packets=0, table=0, priority=10000, selector=[IN_PORT:128, ETH_TYPE:ipv4, IP_PROTO:2], treatment=[immediate=[OUTPUT:CONTROLLER]]
ADDED, bytes=0, packets=0, table=0, priority=1000, selector=[IN_PORT:128, ETH_TYPE:eapol], treatment=[immediate=[OUTPUT:CONTROLLER]]
@@ -33,19 +33,19 @@
Before starting the IGMP test, execute the 'groups' command within ONOS to verify that no groups have been created.
-```
+```shell
groups
```
Now let's send an IGMP packet from the RG up the ONU. To do this run the following in the RG container.
-```
+```shell
igmp.py -j -i ens9f1 -m 229.0.0.1
```
this will return
-```
+```shell
.
Sent 1 packets.
```
@@ -54,13 +54,13 @@
Let us now check the state in ONOS, starting with the group information. Run the following in the ONOS prompt.
-```
+```shell
groups
```
which returns
-```
+```shell
deviceId=of:0000000000000001, groupCount=1
id=0x1, state=ADDED, type=ALL, bytes=0, packets=0, appId=org.onosproject.cordmcast
id=0x1, bucket=1, bytes=0, packets=0, actions=[VLAN_POP:unknown, OUTPUT:128]
@@ -70,13 +70,13 @@
For a group to be useful a flow must point to this group. So let's check in ONOS whether a flow exists.
-```
+```shell
flows -s
```
and find a flow which looks like
-```
+```shell
ADDED, bytes=0, packets=0, table=0, priority=500, selector=[IN_PORT:0, ETH_TYPE:ipv4, VLAN_VID:140, IPV4_DST:229.0.0.1/32], treatment=[immediate=[GROUP:0x1]]
```
@@ -84,14 +84,14 @@
Now let's check whether we find this state in the logical device in VOLTHA. Let's run the following in the VOLTHA CLI.
-```
+```shell
logical_device
flows
```
which will return
-```
+```shell
Logical Device 1 (type: n/a)
Flows (10):
+----------+----------+-----------+---------+----------+----------+----------+-----------+---------+---------+----------+--------------+----------+-----------+-------+------------+------------+
@@ -114,13 +114,13 @@
Let's now look at the physical device level. Still in the Voltha CLI run the following.
-```
+```shell
devices
```
this returns
-```
+```shell
Devices:
+--------------+------------+------+--------------+------+-------------+-------------+----------------+----------------+------------------+-------------------------+--------------------------+
| id | type | root | parent_id | vlan | admin_state | oper_status | connect_status | parent_port_no | host_and_port | proxy_address.device_id | proxy_address.channel_id |
@@ -134,14 +134,14 @@
Identify the ONU which sent the IGMP packet (128) and copy its device id (56a6fc8b859f in this case). Next run the following in the Voltha CLI.
-```
+```shell
device 56a6fc8b859f
flows
```
which returns
-```
+```shell
Device 56a6fc8b859f (type: ponsim_onu)
Flows (6):
+----------+----------+-----------+---------+----------+----------+-----------+--------------+----------+-----------+--------+
@@ -160,7 +160,7 @@
Let us now try this out for real with a real packet. Let's first build a multicast frame on the server and send it down the nni port to the OLT, we can do this with scapy.
-```
+```shell
sudo scapy
mc = Ether(src="00:00:00:00:00:01")/Dot1Q(vlan=140)/IP(dst="229.0.0.1", proto=17)
sendp(mc, iface="ens9f0")
@@ -168,13 +168,13 @@
Meanwhile run tcpdump in the RG container:
-```
+```shell
tcpdump -nei ens9f1
```
in he RG container while tcpdump'ing we should see the following output.
-```
+```shell
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eno2.2021, link-type EN10MB (Ethernet), capture size 262144 bytes
08:09:43.004776 00:00:00:00:00:01 > 01:00:5e:00:00:01, ethertype IPv4 (0x0800), length 34: 10.0.2.15 > 229.0.0.1: [|udp]
@@ -182,7 +182,7 @@
Woohoo!
-### Pass/Fail Criteria
+## Pass/Fail Criteria
* Flows and groups installed in ONOS
* Flows and groups installed in Voltha
diff --git a/docs/manuals/user/labtests/T09_tibit_olt_tests_verify_authentication.md b/docs/manuals/user/labtests/T09_tibit_olt_tests_verify_authentication.md
index e0733e0..10c1398 100644
--- a/docs/manuals/user/labtests/T09_tibit_olt_tests_verify_authentication.md
+++ b/docs/manuals/user/labtests/T09_tibit_olt_tests_verify_authentication.md
@@ -1,10 +1,11 @@
-## T9 - Verify RG Authentication Scenario
+# T9 - Verify RG Authentication Scenario
-### Test Objective
+## Test Objective
* Purpose of this test is to verify RG authentication is successful with Radius / EAP method
-### Test Configuration
+## Test Configuration
+
* Test Setup as shown in Section – 7
* Tibit OLT should be reachable to VOLTHA over IP interface over VLAN 4090
* Tibit OLT should be in active state on VOLTHA
@@ -13,7 +14,8 @@
* Radius Server is in service and configured to authenticate RG
* DHCP Server should be down
-### Test Procedure
+## Test Procedure
+
* Start EAP authentication process from RG by resetting RG.
* RG should send EAP-Start message and verify it reaches VOLTHA/ONOS
* EAP message exchange should happen between RG and VOLTHA/ONOS on Management VLAN 4091.
@@ -26,7 +28,7 @@
* VOLTHA/ ONOS should send IGMP Forwarding Flow to OLT and ONU
* OLT/ONU will be able to forward DHCP, Unicast and IGMP packets from RG
-### Pass/Fail Criteria
+## Pass/Fail Criteria
* RG is successfully authenticated based on its credentials in Radius Server
* DHCP, Unicast and IGMP forwarding flows are setup on OLT/ONU
diff --git a/docs/manuals/user/labtests/T10_tibit_olt_tests_verify_dhcp.md b/docs/manuals/user/labtests/T10_tibit_olt_tests_verify_dhcp.md
index b438191..a66aa21 100644
--- a/docs/manuals/user/labtests/T10_tibit_olt_tests_verify_dhcp.md
+++ b/docs/manuals/user/labtests/T10_tibit_olt_tests_verify_dhcp.md
@@ -1,10 +1,11 @@
-## T10 - Verify DHCP Lookup
+# T10 - Verify DHCP Lookup
-### Test Objective
+## Test Objective
* Purpose of this test is to verify RG can successfully setup DHCP session
-### Test Configuration
+## Test Configuration
+
* Test Setup as shown in Section – 7
* Tibit OLT should be reachable to VOLTHA over IP interface over VLAN 4090
* Tibit OLT should be in active state on VOLTHA
@@ -13,14 +14,15 @@
* DHCP, Unicast and IGMP forwarding flows are setup on OLT and ONU
* DHCP Server is running
-### Test Procedure
+## Test Procedure
+
* Enable DHCP on RG by either resetting or enable/disable port
* DHCP Request from should be forwarded by VOLTHA/ONOS to DHCP Server
* OLT will send and receive DHCP Messages with SVID 4091 towards VOLTHA/ONOS
* DHCP should succeed and RG should have IP address
* Verify ARP, PING and Traceroute succeeds from RG to DHCP server (Not planned on it will be additional step)
-### Pass/Fail Criteria
+## Pass/Fail Criteria
+
* RG can receive IP address from DHCP server
* ARP, Ping and Traceroute is successful between RG and DHCP server
-
diff --git a/docs/manuals/user/labtests/T11_tibit_olt_tests_verify_unicast.md b/docs/manuals/user/labtests/T11_tibit_olt_tests_verify_unicast.md
index 172b63c..8cfee13 100644
--- a/docs/manuals/user/labtests/T11_tibit_olt_tests_verify_unicast.md
+++ b/docs/manuals/user/labtests/T11_tibit_olt_tests_verify_unicast.md
@@ -1,20 +1,23 @@
-## T11 - Verify Unicast Access
+# T11 - Verify Unicast Access
-### Test Objective
+## Test Objective
* Purpose of this test is to verify OLT and ONU can pass double tagged traffic
-### Test Configuration
+## Test Configuration
+
* Test Setup as shown in Section – 7
* Tibit OLT and ONU is activated using VOLTHA
* Provision HSIA/unicast service on the OLT and connected ONU from VOLTHA
-### Test Procedure
+## Test Procedure
+
* On Spirent, configure double tagged traffic in downstream direction (1025,1025)
* On Spirent, send untagged traffic in upstream direction
* On the both ports capture traffic and verify the stream
-### Pass/Fail Criteria
+## Pass/Fail Criteria
+
* Upstream:
* Traffic coming out of OLT is double tagged 1025 ,1025
* Downstream:
diff --git a/docs/manuals/user/labtests/T12_tibit_olt_tests_verify_multicast.md b/docs/manuals/user/labtests/T12_tibit_olt_tests_verify_multicast.md
index 177901d..78ba00e 100644
--- a/docs/manuals/user/labtests/T12_tibit_olt_tests_verify_multicast.md
+++ b/docs/manuals/user/labtests/T12_tibit_olt_tests_verify_multicast.md
@@ -1,10 +1,11 @@
-## T12 - Verify Multicast Access
+# T12 - Verify Multicast Access
-### Test Objective
+## Test Objective
* To verify video service on RG
-### Test Configuration
+## Test Configuration
+
* Test Setup as shown in Section – 7
* Tibit OLT should be reachable to VOLTHA over IP interface on VLAN 4090
* Tibit OLT should be in active state on VOLTHA
@@ -12,12 +13,14 @@
* RG is authenticated with Radius and RG has IP address from DHCP
* VLC streaming server is active, VLC Video Client is connected to RG
-### Test Procedure
+## Test Procedure
+
* Enable Multicast Video Stream from VLC server
* Multicast Video stream should be tagged with VLAN ID 140
* From VLC client initiate connection to streaming Multicast channel
* Packet Capture at OLT port should show IGMP join message
* Observe Video quality on TV
-### Pass/Fail Criteria
+## Pass/Fail Criteria
+
* Video is displayed on TV
diff --git a/docs/manuals/user/labtests/T13_tibit_olt_tests_verify_cvid_upstream.md b/docs/manuals/user/labtests/T13_tibit_olt_tests_verify_cvid_upstream.md
index 5a39613..3241f89 100644
--- a/docs/manuals/user/labtests/T13_tibit_olt_tests_verify_cvid_upstream.md
+++ b/docs/manuals/user/labtests/T13_tibit_olt_tests_verify_cvid_upstream.md
@@ -1,14 +1,15 @@
-## T13 - Spirent - Verify Re-Write C-VID Upstream
+# T13 - Spirent - Verify Re-Write C-VID Upstream
-### Test Objective
+## Test Objective
* The purpose of this test is to verify ONU can re-write Priority tagged frames (VLAN ID 0) with single c-VID in upstream to wards OLT
-### Test Configuration
+## Test Configuration
+
* Test Setup as shown in Section – 7
* Tibit OLT and ONU is activated using VOLTHA
* Provision HSIA/unicast service on the OLT and connected ONU from VOLTHA
-### Test Procedure
+## Test Procedure
-### Pass/Fail Criteria
+## Pass/Fail Criteria
diff --git a/docs/manuals/user/labtests/T14_tibit_olt_tests_verify_cvid_downstream.md b/docs/manuals/user/labtests/T14_tibit_olt_tests_verify_cvid_downstream.md
index f480568..a37c4bd 100644
--- a/docs/manuals/user/labtests/T14_tibit_olt_tests_verify_cvid_downstream.md
+++ b/docs/manuals/user/labtests/T14_tibit_olt_tests_verify_cvid_downstream.md
@@ -1,13 +1,15 @@
-## T14 - Spirent - Verify Re-Write C-VID Downstream
+# T14 - Spirent - Verify Re-Write C-VID Downstream
-### Test Objective
+## Test Objective
+
* The Purpose of this test is to verify ONU can re-write single C-VID frames as priority tagges frames in downstream towards RG
-### Test Configuration
+## Test Configuration
+
* Test Setup as shown in Section – 7
* Tibit OLT and ONU is activated using VOLTHA
* Provision HSIA/unicast service on the OLT and connected ONU from VOLTHA
-### Test Procedure
+## Test Procedure
-### Pass/Fail Criteria
+## Pass/Fail Criteria
diff --git a/docs/manuals/user/labtests/T15_tibit_olt_tests_verify_qinq_upstream.md b/docs/manuals/user/labtests/T15_tibit_olt_tests_verify_qinq_upstream.md
index 32728a2..9455371 100644
--- a/docs/manuals/user/labtests/T15_tibit_olt_tests_verify_qinq_upstream.md
+++ b/docs/manuals/user/labtests/T15_tibit_olt_tests_verify_qinq_upstream.md
@@ -1,21 +1,23 @@
-## T15 - Spirent - Verify 802.1ad (QinQ) Upstream
+# T15 - Spirent - Verify 802.1ad (QinQ) Upstream
-### Test Objective
+## Test Objective
* Purpose of this test is to verify OLT can insert second VLAN tag (SVID) in upstream direction
-### Test Configuration
+## Test Configuration
+
* Test Setup as shown in Section – 7
* Tibit OLT and ONU is activated using VOLTHA
* Provision HSIA/unicast service on the OLT and connected ONU from VOLTHA
-### Test Procedure
+## Test Procedure
+
* On Spirent, send untagged traffic in upstream direction
* On the receiving port end, capture traffic and verify the VLAN parameters
-### Pass/Fail Criteria:
-* Upstream:
-o configure on the Spirent side to send untagged traffic (NO vlan configure)
-o OLT and ONT will add 1025 ,1025 respectively (i.e. 1025,1025)
-o Captured frame should contain 1025, 1025 vlan
+## Pass/Fail Criteria
+* Upstream:
+ * configure on the Spirent side to send untagged traffic (NO vlan configure)
+ * OLT and ONT will add 1025 ,1025 respectively (i.e. 1025,1025)
+ * Captured frame should contain 1025, 1025 vlan
diff --git a/docs/manuals/user/labtests/T16_tibit_olt_tests_verify_qinq_downstream.md b/docs/manuals/user/labtests/T16_tibit_olt_tests_verify_qinq_downstream.md
index 3724dc3..d7cfe1d 100644
--- a/docs/manuals/user/labtests/T16_tibit_olt_tests_verify_qinq_downstream.md
+++ b/docs/manuals/user/labtests/T16_tibit_olt_tests_verify_qinq_downstream.md
@@ -1,20 +1,23 @@
-## T16 - Spirent - Verify 802.1ad (QinQ) Downstream
+# T16 - Spirent - Verify 802.1ad (QinQ) Downstream
-### Test Objective
+## Test Objective
* Purpose of this test is to verify OLT (DNX) can strip SVID from the incoming packets and forward only with CVID to ONU
-### Test Configuration
+## Test Configuration
+
* Test Setup as shown in Section – 7
* Tibit OLT and ONU is activated using VOLTHA
* Provision HSIA/unicast service on the OLT and connected ONU from VOLTHA
-### Test Procedure
+## Test Procedure
+
* On Spirent, configure double tagged traffic in downstream direction (1025,1025)
* On the receiving port, capture traffic and verify the VLAN parameters
-### Pass/Fail Criteria
+## Pass/Fail Criteria
+
* Downstream:
- * configure on the Spirent side to send traffic with 1025,1025
- * OLT will strip the 1025 and send traffic to corresponding ONT ( i.e. 1025 to ONT)
- * Captured frame should contain only one VLAN tag (1025 VLAN)
+ * configure on the Spirent side to send traffic with 1025,1025
+ * OLT will strip the 1025 and send traffic to corresponding ONT ( i.e. 1025 to ONT)
+ * Captured frame should contain only one VLAN tag (1025 VLAN)
diff --git a/docs/manuals/user/labtests/T17_tibit_olt_tests_verify_ipv4_downstream.md b/docs/manuals/user/labtests/T17_tibit_olt_tests_verify_ipv4_downstream.md
index 226a9ea..33807ee 100644
--- a/docs/manuals/user/labtests/T17_tibit_olt_tests_verify_ipv4_downstream.md
+++ b/docs/manuals/user/labtests/T17_tibit_olt_tests_verify_ipv4_downstream.md
@@ -1,24 +1,27 @@
-## T17 - Spirent - Verify IPv4 Unicast Streams Downstream
+# T17 - Spirent - Verify IPv4 Unicast Streams Downstream
-### Test Objective
+## Test Objective
* Purpose of this test is to verify OLT and ONU can handle double tagged traffic
-### Test Configuration
+## Test Configuration
+
* Test Setup as shown in Section – 7
* Tibit OLT and ONU is activated using VOLTHA
* Provision HSIA/unicast service on the OLT and connected ONU from VOLTHA
-### Test Procedure
+## Test Procedure
+
* On Spirent, configure double tagged traffic in downstream direction (1025,1025)
* On Spirent, send untagged traffic in upstream direction
* On the both ports capture traffic and verify the stream
-### Pass / Fail Criteria
+## Pass / Fail Criteria
+
* Upstream:
- * configure on the Spirent side to send traffic with NO vlan
- * OLT and ONT will add 1025 ,1025 respectively (i.e. 1025,1025)
+ * configure on the Spirent side to send traffic with NO vlan
+ * OLT and ONT will add 1025 ,1025 respectively (i.e. 1025,1025)
* Downstream:
- * configure on the Spirent side to send traffic with 1025,1025
- * OLT will strip the 1025 and send traffic to corresponding ONT ( i.e. 1025 to ONT)
+ * configure on the Spirent side to send traffic with 1025,1025
+ * OLT will strip the 1025 and send traffic to corresponding ONT ( i.e. 1025 to ONT)
diff --git a/docs/manuals/user/labtests/T18_tibit_olt_tests_verify_ipv4_downstream_case2.md b/docs/manuals/user/labtests/T18_tibit_olt_tests_verify_ipv4_downstream_case2.md
index c176c99..09b933c 100644
--- a/docs/manuals/user/labtests/T18_tibit_olt_tests_verify_ipv4_downstream_case2.md
+++ b/docs/manuals/user/labtests/T18_tibit_olt_tests_verify_ipv4_downstream_case2.md
@@ -1,17 +1,20 @@
-## T18 - Spirent - Verify IPv4 Unicast Streams Downstream Case2
+# T18 - Spirent - Verify IPv4 Unicast Streams Downstream Case2
-### Test Objective
+## Test Objective
* Purpose of this test is to verify P-BIT parameter is propagated to C-VID when sending downstream traffic to ONU
-### Test Configuration
+## Test Configuration
+
* Test Setup as shown in Section – 7
* Tibit OLT and ONU is activated using VOLTHA
* Provision HSIA/unicast service on the OLT and connected ONU from VOLTHA
-### Test Procedure
+## Test Procedure
+
* On Spirent, configure P-BIT for CVID. ex: set P-BIT value to 3
* On the Receive port end, capture traffic and verify the P-BIT parameter on SVID in Up stream direction
-### Pass / Fail Criteria
+## Pass / Fail Criteria
+
* P-BIT value s-VID is copied to C-VID in downstream direction
diff --git a/docs/manuals/user/labtests/T19_tibit_olt_tests_ranging.md b/docs/manuals/user/labtests/T19_tibit_olt_tests_ranging.md
index 57a4c6c..c64d2c2 100644
--- a/docs/manuals/user/labtests/T19_tibit_olt_tests_ranging.md
+++ b/docs/manuals/user/labtests/T19_tibit_olt_tests_ranging.md
@@ -1,13 +1,15 @@
-## T19 - 10k and 20k ONU Ranging
+# T19 - 10k and 20k ONU Ranging
-### Test Objective
+## Test Objective
* Purpose of this test is to verify ONU can range with 10km and 20 KM distance
-### Test Configuration
+## Test Configuration
+
* Test Setup is as shown in earlier sections
-### Test Procedure
+## Test Procedure
+
* Register the ONU with the OLT across a 10KM fiber spool
* Activate the OLT and ONU using VOLTHA
* Confirm OLT and ONU have the oper_status of ```ACTIVE``` in VOLTHA
@@ -16,8 +18,8 @@
* Confirm OLT and ONU have the oper_status of ```ACTIVE``` in VOLTHA
* Provision HSIA/unicast service on the OLT and connected ONU from VOLTHA and send traffic
-### Pass / Fail Criteria
+## Pass / Fail Criteria
+
* OLT can range the ONU successfully with 10 KM distance
* OLT can range the ONU successfully with 20 KM distance
* Traffic flows successfully with 20 KM distance without any drops
-
diff --git a/docs/manuals/user/labtests/T20_tibit_olt_tests_mib.md b/docs/manuals/user/labtests/T20_tibit_olt_tests_mib.md
index 0055aeb..76dab12 100644
--- a/docs/manuals/user/labtests/T20_tibit_olt_tests_mib.md
+++ b/docs/manuals/user/labtests/T20_tibit_olt_tests_mib.md
@@ -1,15 +1,17 @@
-## T20 - MIB Download and Upload
+# T20 - MIB Download and Upload
-### Test Objective
+## Test Objective
* Purpose of this test is to verify OMCI MIB is downloaded from OLT to ONU and vice versa as part of ONU ranging process
-### Test Configuration
+## Test Configuration
+
* Test Setup as shown in Section – 7
-### Test Procedure
+## Test Procedure
+
* Activate the Tibit OLT and ONU using VOLTHA
-### Pass / Fail Criteria
-* Once the ONU ranges, OMCI MIB is downloaded from OLT to ONU and vice versa
+## Pass / Fail Criteria
+* Once the ONU ranges, OMCI MIB is downloaded from OLT to ONU and vice versa
diff --git a/docs/manuals/user/labtests/T21_tibit_olt_tests_2000_byte_frames.md b/docs/manuals/user/labtests/T21_tibit_olt_tests_2000_byte_frames.md
index a319aa4..db5cb59 100644
--- a/docs/manuals/user/labtests/T21_tibit_olt_tests_2000_byte_frames.md
+++ b/docs/manuals/user/labtests/T21_tibit_olt_tests_2000_byte_frames.md
@@ -1,19 +1,20 @@
-## T21 - 9200 byte Frames
+# T21 - 9200 byte Frames
-### Test Objective
+## Test Objective
* Purpose of this test is to verify OLT and ONU can accept and forward
traffic when the frame size of equals 9200 bytes
-### Test Configuration
+## Test Configuration
* Test Setup is as shown in earlier sections
* Tibit OLT and ONU is activated using VOLTHA
* Provision HSIA/unicast service on the OLT and connected ONU from VOLTHA
-### Test Procedure
+## Test Procedure
+
* Send data/unicast traffic with frame size of 9200 Bytes in upstream and downstream direction
-### Pass / Fail Criteria
-* OLT & ONU can accept and forward frames of size 9200 Bytes successfully
+## Pass / Fail Criteria
+* OLT & ONU can accept and forward frames of size 9200 Bytes successfully
diff --git a/docs/manuals/user/labtests/T22_tibit_olt_tests_data_and_video.md b/docs/manuals/user/labtests/T22_tibit_olt_tests_data_and_video.md
index 0a15749..73412d6 100644
--- a/docs/manuals/user/labtests/T22_tibit_olt_tests_data_and_video.md
+++ b/docs/manuals/user/labtests/T22_tibit_olt_tests_data_and_video.md
@@ -1,17 +1,20 @@
-## T22 - Simultaneous Data and Video Streams
+# T22 - Simultaneous Data and Video Streams
-### Test Objective
+## Test Objective
* Purpose of this test is to verify OLT and ONU can handle data and multicast traffic
-### Test Configuration
+## Test Configuration
+
* Test Setup as shown in Section – 7
* Tibit OLT and ONU is activated using VOLTHA
* Provision HSIA/unicast service on the OLT and connected ONU from VOLTHA
* Provision Multicast/IGMP service on the ONU from VOLTHA
-### Test Procedure
+## Test Procedure
+
* Send bi-directional data traffic and multicast traffic on the ONU
-### Expected Result
+## Expected Result
+
* Bi-directional data Traffic and Multicast traffic on the ONU went through successfully
diff --git a/docs/manuals/user/labtests/T23_tibit_olt_tests_overnight.md b/docs/manuals/user/labtests/T23_tibit_olt_tests_overnight.md
index 5c07be6..977f171 100644
--- a/docs/manuals/user/labtests/T23_tibit_olt_tests_overnight.md
+++ b/docs/manuals/user/labtests/T23_tibit_olt_tests_overnight.md
@@ -1,17 +1,20 @@
-## T23 - Overnight Traffic Test
+# T23 - Overnight Traffic Test
-### Test Objective
+## Test Objective
* Purpose of this test is to verify overnight traffic test went through successfully with zero drops
-### Test Configuration
+## Test Configuration
+
* Test Setup as shown in Section – 7
* Tibit OLT and ONU is activated using VOLTHA
* Provision HSIA/unicast service on the OLT and connected ONU from VOLTHA
* Provision Multicast/IGMP service on the ONU from VOLTHA
-### Test Procedure
+## Test Procedure
+
* Send bi-directional data and multicast traffic over night and monitor for traffic drops
-### Pass / Fail Criteria:
+## Pass / Fail Criteria
+
* Bi-directional traffic went through overnight and no traffic drops
diff --git a/docs/manuals/user/labtests/T24_tibit_olt_tests_ha_fiber_disconnect.md b/docs/manuals/user/labtests/T24_tibit_olt_tests_ha_fiber_disconnect.md
index 1042f54..8c48bd9 100644
--- a/docs/manuals/user/labtests/T24_tibit_olt_tests_ha_fiber_disconnect.md
+++ b/docs/manuals/user/labtests/T24_tibit_olt_tests_ha_fiber_disconnect.md
@@ -1,18 +1,21 @@
-## T24 - Traffic Recovers After Fiber Disconnect (Best Effort)
+# T24 - Traffic Recovers After Fiber Disconnect (Best Effort)
-### Test Objective
+## Test Objective
* Purpose of this test is to verify pull & re-insert of PON cable can resume the traffic on the ONU
-### Test Configuration
+## Test Configuration
+
* Test Setup as shown in Section – 7
* Tibit OLT and ONU is activated using VOLTHA
* Provision HSIA/unicast service on the OLT and connected ONU from VOLTHA
-### Test Procedure
+## Test Procedure
+
* Now manually pull the fiber cable the from ONU
* Re-insert the fiber cable to the ONU and verify ONU is ranges and traffic restores
-### Pass / Fail Criteria
+## Pass / Fail Criteria
+
* Traffic stopped when cable is pulled from ONU
* After cable insert, ONU is ranged back and traffic starts flowing automatically on the ONU
diff --git a/docs/manuals/user/labtests/T25_tibit_olt_tests_ha_onu_reset.md b/docs/manuals/user/labtests/T25_tibit_olt_tests_ha_onu_reset.md
index fcc8bb4..cd8ebce 100644
--- a/docs/manuals/user/labtests/T25_tibit_olt_tests_ha_onu_reset.md
+++ b/docs/manuals/user/labtests/T25_tibit_olt_tests_ha_onu_reset.md
@@ -1,19 +1,21 @@
-## T25 - Traffic Recovers After ONU Reset (Best Effort)
+# T25 - Traffic Recovers After ONU Reset (Best Effort)
-### Test Objective
+## Test Objective
* Purpose of this test is to verify reset/reboot of ONU is able to recover the traffic on the ONU
-### Test Configuration
+## Test Configuration
+
* Test Setup as shown in Section – 7
* Tibit OLT and ONU is activated using VOLTHA
* Provision HSIA/unicast service on the OLT and connected ONU from VOLTHA
-### Test Procedure
+## Test Procedure
+
* Now manually reset /reboot the ONU
* Verify whether ONU ranges and traffic is restored successfully
-### Pass / Fail Criteria
+## Pass / Fail Criteria
+
* Traffic should stop flowing when ONU is restarted
* After ONU is up, traffic restores automatically on the ONU
-
diff --git a/docs/manuals/user/labtests/T26_tibit_olt_tests_ha_olt_reset.md b/docs/manuals/user/labtests/T26_tibit_olt_tests_ha_olt_reset.md
index eed3f98..1f59252 100644
--- a/docs/manuals/user/labtests/T26_tibit_olt_tests_ha_olt_reset.md
+++ b/docs/manuals/user/labtests/T26_tibit_olt_tests_ha_olt_reset.md
@@ -1,21 +1,21 @@
-## T26 - Traffic Recovers After OLT Reset (Best Effort)
+# T26 - Traffic Recovers After OLT Reset (Best Effort)
-### Test Objective
+## Test Objective
* Purpose of this test is to verify reset/reboot of ONU is able to recover the traffic on the ONU
-### Test Configuration
+## Test Configuration
* Test Setup as shown in Section – 7
* Tibit OLT and ONU is activated using VOLTHA
* Provision HSIA/unicast service on the OLT and connected ONU from VOLTHA
-### Test Procedure
+## Test Procedure
* Now reset /reboot the OLT
* Verify OLT is up, ONU ranges and traffic is restored successfully
-### Pass / Fail Criteria
+## Pass / Fail Criteria
* When OLT is up, ONU ranges back and traffic restores automatically on the ONU
diff --git a/docs/manuals/user/labtests/T27_tibit_olt_tests_ha_tor_switch_reset.md b/docs/manuals/user/labtests/T27_tibit_olt_tests_ha_tor_switch_reset.md
index 87cd8d2..8250c0b 100644
--- a/docs/manuals/user/labtests/T27_tibit_olt_tests_ha_tor_switch_reset.md
+++ b/docs/manuals/user/labtests/T27_tibit_olt_tests_ha_tor_switch_reset.md
@@ -1,18 +1,20 @@
-## T27 - Traffic Recovers After ToR Switch Reset (Best Effort)
+# T27 - Traffic Recovers After ToR Switch Reset (Best Effort)
-### Test Objective
+## Test Objective
* Purpose of this test is to verify reset/reboot of TOR switch is able to recover the traffic
-### Test Configuration
+## Test Configuration
+
* Test Setup as shown in Section – 7
* Tibit OLT and ONU is activated using VOLTHA
* Provision HSIA/unicast service on the OLT and connected ONU from VOLTHA
-### Test Procedure
+## Test Procedure
+
* Now reset /reboot the TOR switch
* Verify TOR is up, Traffic is restored successfully
-### Pass / Fail Criteria
-* Traffic should stop flowing when TOR switch is restarted. Once the TOR switch is up, Traffic restored successfully on the ONU
+## Pass / Fail Criteria
+* Traffic should stop flowing when TOR switch is restarted. Once the TOR switch is up, Traffic restored successfully on the ONU
diff --git a/docs/manuals/user/labtests/V00_voltha.md b/docs/manuals/user/labtests/V00_voltha.md
index 17956c4..76bcffd 100644
--- a/docs/manuals/user/labtests/V00_voltha.md
+++ b/docs/manuals/user/labtests/V00_voltha.md
@@ -2,11 +2,11 @@
Test steps in this section serve the following purpose:
-1. Deploys Voltha and its companion containers
-1. Verifies base-line operation of Voltha
-1. Introduces the tester to basic Voltha operations, such as
- * curl/web browser based REST APIs
- * Swagger UI
- * Craft CLI
- * Log streams and log collection
- * Asynchronous events published by Voltha
+* Deploys Voltha and its companion containers
+* Verifies base-line operation of Voltha
+* Introduces the tester to basic Voltha operations, such as
+ * curl/web browser based REST APIs
+ * Swagger UI
+ * Craft CLI
+ * Log streams and log collection
+ * Asynchronous events published by Voltha
diff --git a/docs/manuals/user/labtests/V00_voltha_bringup.md b/docs/manuals/user/labtests/V00_voltha_bringup.md
index 4495021..2f81095 100644
--- a/docs/manuals/user/labtests/V00_voltha_bringup.md
+++ b/docs/manuals/user/labtests/V00_voltha_bringup.md
@@ -1,2 +1 @@
# Voltha Bringup
-
diff --git a/docs/manuals/user/labtests/V01_voltha_bringup_deploy.md b/docs/manuals/user/labtests/V01_voltha_bringup_deploy.md
index 2667d56..c6c69af 100644
--- a/docs/manuals/user/labtests/V01_voltha_bringup_deploy.md
+++ b/docs/manuals/user/labtests/V01_voltha_bringup_deploy.md
@@ -1,130 +1,116 @@
-## V1 - Deploy Voltha and Verify its Vital Signs
+# V1 - Deploy Voltha and Verify its Vital Signs
-### Test Objective
+## Test Objective
-* Purpose of this test is to launch Voltha together with all of its dependencies
- and verify that all are in working condition,
+* Purpose of this test is to launch Voltha together with all of its dependencies and verify that all are in working condition,
-### Test Configuration
+## Test Configuration
-* This test setup requires only the test server and it should have been prepared
- as described in the [preparation](preparations.md) section.
+* This test setup requires only the test server and it should have been prepared as described in the [preparation](preparations.md) section.
* Voltha has not been running yet (will verify it in the process)
* Test server has been prepared as above
-### Test Procedure
+## Test Procedure
* Login to the test server with standard user credentials
* Navigate to the Voltha installation directory. For example:
- ```
- cd cord/incubator/voltha
- ```
+```shell
+cd cord/incubator/voltha
+```
* Source the environment:
-
- ```
- source env.sh
- ```
-
+
+```shell
+source env.sh
+```
+
* Verify that no docker containers are running on the server:
-
- ```
- docker ps -a
- ```
-
- This shall show only a title line, but no containers. If any containers
- are running, you can terminate them as follows:
-
- ```
- docker ps -a | grep -v CONT | awk '{print $1}' | xargs docker rm -f
- ```
-
-* Launch Voltha and it companion containers (the "test deployment ensemble")
- using docker-compose in the background:
-
- ```
- docker-compose -f compose/docker-compose-system-test.yml up -d
- ```
-
- Note: The expected outcome is show below. Order is not important.
-
- ```
- Creating compose_fluentd_1
- Creating compose_consul_1
- Creating compose_registrator_1
- Creating compose_voltha_1
- Creating compose_ofagent_1
- Creating compose_chameleon_1
- Creating compose_netconf_1
- Creating compose_zookeeper_1
- Creating compose_kafka_1
- Creating compose_grafana_1
- Creating compose_shovel_1
- ```
- Note: We need to make sure the ponmgmt bridge can forward multicast mac addresses
+```shell
+docker ps -a
+```
- ```
- echo 8 > /sys/class/net/ponmgmt/bridge/group_fwd_mask
- ```
+This shall show only a title line, but no containers. If any containers
+are running, you can terminate them as follows:
-### Pass/Fail Criteria (Installation Checkpoint)
+```shell
+docker ps -a | grep -v CONT | awk '{print $1}' | xargs docker rm -f
+```
+
+* Launch Voltha and it companion containers (the "test deployment ensemble")using docker-compose in the background:
+
+```shell
+docker-compose -f compose/docker-compose-system-test.yml up -d
+```
+
+Note: The expected outcome is show below. Order is not important.
+
+```shell
+Creating compose_fluentd_1
+Creating compose_consul_1
+Creating compose_registrator_1
+Creating compose_voltha_1
+Creating compose_ofagent_1
+Creating compose_chameleon_1
+Creating compose_netconf_1
+Creating compose_zookeeper_1
+Creating compose_kafka_1
+Creating compose_grafana_1
+Creating compose_shovel_1
+```
+
+Note: We need to make sure the ponmgmt bridge can forward multicast mac addresses
+
+```shell
+echo 8 > /sys/class/net/ponmgmt/bridge/group_fwd_mask
+```
+
+## Pass/Fail Criteria (Installation Checkpoint)
* The installation steps to this point should complete without errors.
-* Please check that docker-compose shows all containers as running. In the same
-Linux terminal, please issue the following command:
-
- ```
- docker-compose -f compose/docker-compose-system-test.yml ps
- ```
-
- This shall list all containers being in the "Up" state. Expected output (lines are
- truncated omitting the long port mapping information):
-
- ```
- Name Command State ...
- -------------------------------------------------------------------------...
- compose_chameleon_1 /chameleon/chameleon/main. ... Up 0.0.0.0:...
- compose_consul_1 docker-entrypoint.sh agent ... Up 0.0.0.0:...
- compose_fluentd_1 /bin/sh -c exec fluentd -c ... Up 0.0.0.0:...
- compose_grafana_1 /usr/bin/supervisord Up 0.0.0.0:...
- compose_kafka_1 start-kafka.sh Up 0.0.0.0:...
- compose_netconf_1 /netconf/netconf/main.py - ... Up 0.0.0.0:...
- compose_ofagent_1 /ofagent/ofagent/main.py - ... Up
- compose_registrator_1 /bin/registrator -ip=10.0. ... Up
- compose_shovel_1 /shovel/shovel/main.py --k ... Up
- compose_voltha_1 /voltha/voltha/main.py -v ... Up 0.0.0.0:...
- compose_zookeeper_1 /bin/sh -c /usr/sbin/sshd ... Up 0.0.0.0:...
- ```
-
- Shovel is known to have some startup race condition issues. If it is shown
- in the "Exited" state, a single attempt can be made to restart it, after which
- it should be healthy. To restart it, execute:
-
- ```
- docker-compose -f compose/docker-compose-system-test.yml scale shovel=1
- ```
-
- and repeat the above "ps" command to view the ensemble state:
-
- ```
- docker-compose -f compose/docker-compose-system-test.yml ps
- ```
-
-* Point a Web Browser to the Consul UI to verify that all components are properly
-registered.
+* Please check that docker-compose shows all containers as running. In the same Linux terminal, please issue the following command:
- Point your browser to ```http://<server-ip-or-hostname>:8500/ui```
-using the actual IP address or valid DNS name of your Voltha
-server. The expected view is similar to the following:
+```shell
+docker-compose -f compose/docker-compose-system-test.yml ps
+```
- ![Consul services view](./consul_sample_service_list.png "Consul screen displaying all service endpoints and
-their health")
+This shall list all containers being in the "Up" state. Expected output (lines are truncated omitting the long port mapping information):
- Here every single exposed service end-point is shown (some components expose
- multiple end-points, while others expose no public endpoints).
-
- Clicking on any of the items reveal further information like the specific IP
- address(es) and port number(s) for the service.
+```shell
+ Name Command State ...
+-------------------------------------------------------------------------...
+compose_chameleon_1 /chameleon/chameleon/main. ... Up 0.0.0.0:...
+compose_consul_1 docker-entrypoint.sh agent ... Up 0.0.0.0:...
+compose_fluentd_1 /bin/sh -c exec fluentd -c ... Up 0.0.0.0:...
+compose_grafana_1 /usr/bin/supervisord Up 0.0.0.0:...
+compose_kafka_1 start-kafka.sh Up 0.0.0.0:...
+compose_netconf_1 /netconf/netconf/main.py - ... Up 0.0.0.0:...
+compose_ofagent_1 /ofagent/ofagent/main.py - ... Up
+compose_registrator_1 /bin/registrator -ip=10.0. ... Up
+compose_shovel_1 /shovel/shovel/main.py --k ... Up
+compose_voltha_1 /voltha/voltha/main.py -v ... Up 0.0.0.0:...
+compose_zookeeper_1 /bin/sh -c /usr/sbin/sshd ... Up 0.0.0.0:...
+```
+Shovel is known to have some startup race condition issues. If it is shown in the "Exited" state, a single attempt can be made to restart it, after which it should be healthy. To restart it, execute:
+
+```shell
+docker-compose -f compose/docker-compose-system-test.yml scale shovel=1
+```
+
+and repeat the above "ps" command to view the ensemble state:
+
+```shell
+docker-compose -f compose/docker-compose-system-test.yml ps
+```
+
+* Point a Web Browser to the Consul UI to verify that all components are properly registered.
+
+Point your browser to <http://<server-ip-or-hostname>:8500/ui> using the actual IP address or valid DNS name of your Voltha server. The expected view is similar to the following:
+
+![Consul services view](./consul_sample_service_list.png "Consul screen displaying all service endpoints and their health")
+
+Here every single exposed service end-point is shown (some components expose multiple end-points, while others expose no public endpoints).
+
+Clicking on any of the items reveal further information like the specific IP address(es) and port number(s) for the service.
diff --git a/docs/manuals/user/labtests/V02_voltha_bringup_rest.md b/docs/manuals/user/labtests/V02_voltha_bringup_rest.md
index d3cfa08..6d0fd49 100644
--- a/docs/manuals/user/labtests/V02_voltha_bringup_rest.md
+++ b/docs/manuals/user/labtests/V02_voltha_bringup_rest.md
@@ -1,153 +1,142 @@
-## V2 - Connect to Voltha with REST and Web Browser or Curl
+# V2 - Connect to Voltha with REST and Web Browser or Curl
-### Test Objective
+## Test Objective
* The purpose of this test is to verify REST-based HTTPS connectivity to Voltha, including
- * Swagger UI access for exploring APIs
- * Command-line REST requests using curl
+ * Swagger UI access for exploring APIs
+ * Command-line REST requests using curl
-### Test Configuration
+## Test Configuration
* Preparatory steps completed
* Test-case V1 completed successfully
-### Test Procedure
+## Test Procedure
-To conveniently explore the REST APIs exposed by Voltha, point your browser to the default REST port on the
-Voltha integrartion server's Swagger end-point using the URL
-```https://<server>:<chameleon-port>/#/VolthaLocalService```, where
+To conveniently explore the REST APIs exposed by Voltha, point your browser to the default REST port on the Voltha integrartion server's Swagger end-point using the URL ```https://<server>:<chameleon-port>/#/VolthaLocalService```, where:
-* ```<server>``` is the IP address or hostname of your Voltha integration server,
-* ```<chameleon-port``` is the TCP port assigned to the Chameleon REST front-end.
-In a real depoyment this port will be served by a load balancer using a fixed port
-number, but in the integration setup this port number is a port assigned by Docker.
+* *server* is the IP address or hostname of your Voltha integration server
+* *chameleon-port* is the TCP port assigned to the Chameleon REST front-end
+
+In a real depoyment this port will be served by a load balancer using a fixed port number, but in the integration setup this port number is a port assigned by Docker.
+
To find out what the port is, do either of the following:
- You can look up the port number using docker. On the integration server, run:
-
- ```
- docker inspect compose_chameleon_1 | \
- jq -r '.[0].NetworkSettings.Ports["8881/tcp"][0].HostPort'
- ```
-
- This should print the port number that is mapped to the Chameleon internal
- REST port. In our case it printed the following:
-
- ```
- 32794
- ```
-
- Alternatively, you can use a DNS lookup. The Consul process in the Voltha
- ensamble also works as a DNS server and supports service record lookup. So
- you can use ```dig``` to lookup the port number. One way to do this is to issue
- the following command on *the integration server*:
-
- ```
- dig @localhost -p 8600 +short chameleon-rest.service.consul SRV
- ```
-
- This basically requests for the service record (SRV) for the service
- registered with Consul as ```chameleon-rest``` end-point. Example output:
-
- ```
- 1 1 32794 0a00020f.addr.dc1.consul.
- ```
-
- The 3rd field is the port number.
-
- Either way, make note of the port-number and use this to talk to the REST APIs.
-
- Using the proper URL, which in our case was
- ```https://10.100.198.220:32794/#/VolthaLocalService``` shall lead you to the
- following view in your browser:
+You can look up the port number using docker. On the integration server, run:
- ![Initial swagger view](./swagger_1.png "Initial swagger screen")
+```shell
+docker inspect compose_chameleon_1 | jq -r '.[0].NetworkSettings.Ports["8881/tcp"][0].HostPort'
+```
- Swagger allows the user to browse in the APIs and try any of the APIs with
- relative ease. For instance, to list all adapters registered with Voltha, open
- up the ```/api/v1/local/adapters``` entry:
+This should print the port number that is mapped to the Chameleon internal REST port. In our case it printed the following:
- ![Adapters opened](./swagger_2.png "Swagger entry for adapters opened")
+```shell
+32794
+```
- To try this API, click on the *Try it out!* button. The response will show
- up below it:
+Alternatively, you can use a DNS lookup. The Consul process in the Voltha ensamble also works as a DNS server and supports service record lookup. So you can use ```dig``` to lookup the port number. One way to do this is to issuethe following command on *the integration server*:
- ![Adapters shown](./swagger_3.png "Swagger showing adapters response")
+```shell
+dig @localhost -p 8600 +short chameleon-rest.service.consul SRV
+```
-* The REST API can be consumed via any REST client. Here we verify that the Unix
- tool ```curl``` can be used. Here are a couple of examples:
-
- For convenience, setup an env var for the b ase URL:
-
- ```
- export VOLTHAURL='https://10.100.198.220:32794/api/v1/local'
- ```
-
- To show the health status of Voltha:
-
- ```
- curl -k -s $VOLTHAURL/health | jq '.'
- ```
- Expect to see:
+This basically requests for the service record (SRV) for the service
+registered with Consul as ```chameleon-rest``` end-point. Example output:
+
+```shell
+1 1 32794 0a00020f.addr.dc1.consul.
+```
+
+The 3rd field is the port number.
+
+Either way, make note of the port-number and use this to talk to the REST APIs.
+
+Using the proper URL, which in our case was <https://10.100.198.220:32794/#/VolthaLocalService> shall lead you to the following view in your browser:
+
+![Initial swagger view](./swagger_1.png "Initial swagger screen")
+
+Swagger allows the user to browse in the APIs and try any of the APIs with relative ease. For instance, to list all adapters registered with Voltha, open up the */api/v1/local/adapters* entry:
- ```
+![Adapters opened](./swagger_2.png "Swagger entry for adapters opened")
+
+To try this API, click on the *Try it out!* button. The response will show up below it:
+
+![Adapters shown](./swagger_3.png "Swagger showing adapters response")
+
+* The REST API can be consumed via any REST client. Here we verify that the Unix tool *curl* can be used. Here are a couple of examples:
+
+For convenience, setup an env var for the b ase URL:
+
+```shell
+export VOLTHAURL='https://10.100.198.220:32794/api/v1/local'
+```
+
+To show the health status of Voltha:
+
+```shell
+curl -k -s $VOLTHAURL/health | jq '.'
+```
+
+Expect to see:
+
+```json
{
"state": "HEALTHY"
}
- ```
-
- To show the list of loaded adapters in Voltha
-
- ```
- curl -k -s $VOLTHAURL/adapters | jq '.'
- ```
- Expect to see a list similar to this snippet (we show here only the beginning):
-
- ```
- {
- "items": [
- {
- "config": {
- "log_level": "INFO"
- },
- "version": "0.1",
- "vendor": "Voltha project",
- "id": "broadcom_onu",
- "logical_device_ids": []
- },
- {
- "config": {
- "log_level": "INFO"
- },
- "version": "0.1",
- "vendor": "Voltha project",
- "id": "maple_olt",
- "logical_device_ids": []
- },
- ...
- ...
- ```
-
- You can list only the names of the adapters:
-
- ```
- curl -k -s $VOLTHAURL/adapters | jq '.items[].id'
- ```
-
- This will show something like:
-
- ```
- "broadcom_onu"
- "maple_olt"
- "ponsim_olt"
- "ponsim_onu"
- "simulated_olt"
- "simulated_onu"
- "tibit_olt"
- "tibit_onu"
- ```
+```
-### Pass/Fail Criteria
+To show the list of loaded adapters in Voltha
-This test case should be considered passing if all the demonstrated behavior
-works with similar (but not necessarily identical) output.
+```shell
+curl -k -s $VOLTHAURL/adapters | jq '.'
+```
+
+Expect to see a list similar to this snippet (we show here only the beginning):
+
+```json
+{
+ "items": [
+ {
+ "config": {
+ "log_level": "INFO"
+ },
+ "version": "0.1",
+ "vendor": "Voltha project",
+ "id": "broadcom_onu",
+ "logical_device_ids": []
+ },
+ {
+ "config": {
+ "log_level": "INFO"
+ },
+ "version": "0.1",
+ "vendor": "Voltha project",
+ "id": "maple_olt",
+ "logical_device_ids": []
+ },
+ ...
+ ...
+```
+
+You can list only the names of the adapters:
+
+```shell
+curl -k -s $VOLTHAURL/adapters | jq '.items[].id'
+```
+
+This will show something like:
+
+```shell
+"broadcom_onu"
+"maple_olt"
+"ponsim_olt"
+"ponsim_onu"
+"simulated_olt"
+"simulated_onu"
+"tibit_olt"
+"tibit_onu"
+```
+
+## Pass/Fail Criteria
+
+This test case should be considered passing if all the demonstrated behavior works with similar (but not necessarily identical) output.
diff --git a/docs/manuals/user/labtests/V03_voltha_bringup_cli.md b/docs/manuals/user/labtests/V03_voltha_bringup_cli.md
index 836437f..93be3e5 100644
--- a/docs/manuals/user/labtests/V03_voltha_bringup_cli.md
+++ b/docs/manuals/user/labtests/V03_voltha_bringup_cli.md
@@ -1,26 +1,25 @@
-## V3 - Connect to Voltha via its CLI
+# V3 - Connect to Voltha via its CLI
-### Test Objective
+## Test Objective
* Verify Voltha CLI is available
-* Provide an introduction to the CLI, since it is used in many of the other
- testcases
+* Provide an introduction to the CLI, since it is used in many of the other testcases
-### Test Configuration
+## Test Configuration
* Voltha ensemble is instantiated (V1)
-### Test Procedure
+## Test Procedure
Start the Voltha CLI:
-```
+```shell
cd $VOLTHA_BASE
./cli/main.py -L
```
You should see it launched:
-```
+```shell
_ _ _ ___ _ ___
__ _____| | |_| |_ __ _ / __| | |_ _|
\ V / _ \ | _| ' \/ _` | | (__| |__ | |
@@ -29,18 +28,17 @@
(voltha)
```
-This places the user into normal mode, signified by the ```(voltha)``` prompt.
+This places the user into normal mode, signified by the *(voltha)* prompt.
To check connectivity to Voltha and to check if Voltha is "healthy", run:
-```
+```shell
health
```
The expected output is:
-```
-(voltha) health
+```json
{
"state": "HEALTHY"
}
@@ -48,14 +46,13 @@
To list all Voltha adapters, type:
-```
+```shell
adapters
```
This should show the loaded adapters:
-```
-(voltha) adapters
+```shell
Adapters:
+---------------+---------------------------+---------+------------------+
| id | vendor | version | config.log_level |
@@ -72,15 +69,15 @@
```
There are many more commands available in the CLI. To list all commands
-in ```voltha``` mode, type:
+in *voltha* mode, type:
-```
+```shell
help
```
This will show the available commands:
-```
+```shell
(voltha) help
Documented commands (type help <topic>):
@@ -96,21 +93,19 @@
EOF eof exit help quit
```
-### Brief Reference of Frequently Used CLI Commands
+## Brief Reference of Frequently Used CLI Commands
-*Please note at this point in the test sequence there are no OLTs/ONUs,
-hence the output of these commands will in fact show empty tables; some commands
-are not even available.*
+* Please note at this point in the test sequence there are no OLTs/ONUs, hence the output of these commands will in fact show empty tables; some commands are not even available.
To list all logical devices:
-```
+```shell
logical_devices
```
*Example* output:
-```
+```shell
(voltha) logical_devices
Logical devices:
+----+-------------+----------------+----------------------------------+---------------------------+--------------------------+
@@ -122,13 +117,13 @@
To list all physical devices:
-```
+```shell
devices
```
*Example* output:
-```
+```shell
(voltha) devices
Devices:
+--------------+---------------+------+--------------+------+-------------------+-------------+-------------+----------------+----------------+-------------------------+--------------------------+
@@ -144,26 +139,26 @@
To pre-provision an OLT of a certain type (e.g., maple with given IP address):
-```
+```shell
preprovision_olt -t maple_olt -i 10.11.12.13
```
*Example* output:
-```
+```shell
(voltha) preprovision_olt -t maple_olt -i 10.11.12.13
success (device id = 5a324e1c3996)
```
To activate the last pre-provisioned OLT:
-```
+```shell
enable
```
*Example* output:
-```
+```shell
(voltha) enable
activating 5a324e1c3996
waiting for device to be activated...
@@ -172,13 +167,13 @@
To activate an OLT given by its ID:
-```
+```shell
enable <ID>
```
*Example* output:
-```
+```shell
(voltha) enable
activating 5a324e1c3996
waiting for device to be activated...
@@ -187,30 +182,30 @@
To enter into a logical device context/mode:
-```
+```shell
logical_device <logical-device-ID>
```
*Example* output:
-```
+```shell
(voltha) logical_device 1
(logical device 1)
```
-This will change the prompt to ```(logical device <ID>)```.
+This will change the prompt to (logical device ```<ID>```).
Subcommands of logical device mode:
To show more info:
-```
+```shell
show
```
*Example* output:
-```
+```shell
(logical device 1) show
Logical device 1
+------------------------------+----------------------------------+
@@ -234,13 +229,13 @@
To list all ports of the logical device:
-```
+```shell
ports
```
*Example* output:
-```
+```shell
(logical device 1) ports
Logical device ports:
+-----+--------------+----------------+-----------+------------------+----------------------+---------------+----------------+---------------+---------------------+
@@ -256,13 +251,13 @@
To list all flows defined:
-```
+```shell
flows
```
*Example* output:
-```
+```shell
(logical device 1) flows
Logical Device 1 (type: n/a)
Flows (11):
@@ -286,26 +281,26 @@
To exit logical device mode:
-```
+```shell
exit
```
*Example* output:
-```
+```shell
(logical device 1) exit
(voltha)
```
To enter into a device context/mode:
-```
+```shell
device <device-ID>
```
*Example* output:
-```
+```shell
(voltha) device 5a324e1c3996
(device 5a324e1c3996)
```
@@ -314,13 +309,13 @@
To show device info:
-```
+```shell
show
```
*Example* output:
-```
+```shell
(device 5a324e1c3996) show
Device 5a324e1c3996
+------------------+----------------------------------+
@@ -352,7 +347,7 @@
*Example* output:
-```
+```shell
(device 45de16e1c63b) ports
Device ports:
+---------+--------------------------+--------------+-------------+-------------+--------------+------------------------------------------------+
@@ -365,13 +360,13 @@
To show all flows defined on device:
-```
+```shell
flows
```
*Example* output:
-```
+```shell
(device 5a324e1c3996) flows
Device 5a324e1c3996 (type: simulated_olt)
Flows (7):
@@ -390,7 +385,7 @@
To exit device mode:
-```
+```shell
exit
```
@@ -398,7 +393,7 @@
To enter "test" mode from normal CLI mode:
-```
+```shell
test
```
@@ -406,31 +401,31 @@
To install just the EAPOL upstream forwarding flow:
-```
+```shell
install_eapol_flow [<logical-device-ID>]
```
To install all controller bound forwarding flows:
-```
+```shell
install_all_controller_bound_flows [<logical-device-ID>]
```
To install all flows relevant in our use-case (upstream forwarding rules, unicast data flows, and a few multicast flows):
-```
+```shell
install_all_sample_flows [<logical-device-ID>]
```
To remove all flows from a logical device:
-```
+```shell
delete_all_flows [<logical-device-ID>]
```
Here is a sample CLI command sequence that preprovisions and activates an OLT, then downloads all sample flows and check the flows installed on the OLT device:
-```
+```shell
test
preprovision_olt -t maple_olt -i 10.11.12.13
enable
@@ -441,7 +436,7 @@
exit
```
-### Pass/Fail Criteria
+## Pass/Fail Criteria
* CLI should start
* Health should show "HEALTHY"
diff --git a/docs/manuals/user/labtests/V04_voltha_bringup_async.md b/docs/manuals/user/labtests/V04_voltha_bringup_async.md
index bd613ad..f5a4a10 100644
--- a/docs/manuals/user/labtests/V04_voltha_bringup_async.md
+++ b/docs/manuals/user/labtests/V04_voltha_bringup_async.md
@@ -1,6 +1,6 @@
-## V4 - View Voltha Async Events with Kafkacat
+# V4 - View Voltha Async Events with Kafkacat
-### Test Objective
+## Test Objective
* Demonstrate and verify the async event stream (output) from Voltha
@@ -8,62 +8,45 @@
There are four types of events emitted by Kafka, using four separate Kafka
"topics":
-* *heartbeat*: Voltha emits a periodic heart-beat through this channel. By default
-the Kafka topic name for this channel is ```voltha.heartbeat```
-* *kpi/performance metrics*: Voltha uses this channel to send out consolidated
- performance metric data about its internal components as well as about the
- devices managed by Voltha. While the channel is live, the metrics are limited
- to a few sample metrics at the moment (work in progress). By default the
- Kafka topic name for this channel is ```voltha.kpis```.
-* *alarms*: Voltha uses this channel to send out consolidated alarm signals,
-covering the devices it manages as well as alarms about its internal operation.
- This is not used yet, albeit the internal plumbing in Voltha exists. By default
- the Kafka topic name for this channel is ```voltha/alarms```.
-* *events*: Voltha uses this channel to send out consolidated async events
- (other than alarms), covering the devices it manages as well as events about
- its internal operation. This is not used yet, albeit the internal plumbing
- in Voltha exists.
- By default the Kafka topic name for this channel is ```voltha/events```.
+* *heartbeat*: Voltha emits a periodic heart-beat through this channel. By default the Kafka topic name for this channel is *voltha.heartbeat*.
+* *kpi/performance metrics*: Voltha uses this channel to send out consolidated performance metric data about its internal components as well as about the devices managed by Voltha. While the channel is live, the metrics are limited to a few sample metrics at the moment (work in progress). By default the Kafka topic name for this channel is *voltha.kpis*.
+* *alarms*: Voltha uses this channel to send out consolidated alarm signals, covering the devices it manages as well as alarms about its internal operation. This is not used yet, albeit the internal plumbing in Voltha exists. By default the Kafka topic name for this channel is *voltha/alarms*.
+* events*: Voltha uses this channel to send out consolidated async events (other than alarms), covering the devices it manages as well as events about its internal operation. This is not used yet, albeit the internal plumbing in Voltha exists. By default the Kafka topic name for this channel is *voltha/events*.
In a production deployment it is expected that other subsystems will consume
these Kafka topics.
Our goal here is to demonstrate and verify that Voltha is working as expected.
-
-### Test Configuration
+## Test Configuration
* Voltha ensemble is launched (V1)
-### Test Procedure
+## Test Procedure
-In order to show the Kafka channels, we use a command line tool ```kafkacat```
-to "tune into" the channels.
-To run kafkacat we need to know the port number of the kafka broker. Use the
- following command to retrieve the assigned port to Kafka:
+In order to show the Kafka channels, we use a command line tool *kafkacat* to "tune into" the channels.
+To run kafkacat we need to know the port number of the kafka broker. Use the following command to retrieve the assigned port to Kafka:
-```
-docker inspect compose_kafka_1 | \
- jq -r '.[0].NetworkSettings.Ports["9092/tcp"][0]["HostPort"]'
+```shell
+docker inspect compose_kafka_1 | jq -r '.[0].NetworkSettings.Ports["9092/tcp"][0]["HostPort"]'
```
For example, it may say:
-```
+```shell
32769
```
This is the port number Kafka is reacheable at the integration server.
-To show the topics that have data, run the command (make sure you use the
-port number that you retreived in the above step):
+To show the topics that have data, run the command (make sure you use the port number that you retreived in the above step):
-```
+```shell
kafkacat -b localhost:32769 -L
```
Here is what you should see:
-```
+```shell
(venv-linux) ubuntu@voltha:/voltha$ kafkacat -b localhost:32769 -L
Metadata for all topics (from broker -1: localhost:32769/bootstrap):
1 brokers:
@@ -81,18 +64,15 @@
In order to show data published to the heartbeat channel, use the following
command (*Make sure you use the correct port number!*):
-```
-kafkacat -b localhost:32769 -C -t voltha.heartbeat \
- -f 'Topic %t [%p] at offset %o: key %k: %s\n'
+```shell
+kafkacat -b localhost:32769 -C -t voltha.heartbeat -f 'Topic %t [%p] at offset %o: key %k: %s\n'
```
-The above will show all existing data in the queue and will stay connected
-and print messages as they arrive ("tail" the channel). You can use Ctrl-C
-to interrupt the tailing and return to the Linux prompt.
+The above will show all existing data in the queue and will stay connected and print messages as they arrive ("tail" the channel). You can use Ctrl-C to interrupt the tailing and return to the Linux prompt.
Example output, showing only the first few lines:
-```
+```shell
(venv-linux) ubuntu@voltha:/voltha$ kafkacat -b localhost:32769 -C -t voltha.heartbeat -f 'Topic %t [%p] at offset %o: key %k: %s\n'
Topic voltha.heartbeat [0] at offset 0: key : {"ip": "172.18.0.9", "type": "heartbeat", "voltha_instance": "compose_voltha_1", "ts": 1484291374}
Topic voltha.heartbeat [0] at offset 1: key : {"ip": "172.18.0.9", "type": "heartbeat", "voltha_instance": "compose_voltha_1", "ts": 1484291384}
@@ -107,16 +87,13 @@
Similarly, you can watch KPI metrics as follows:
-```
-kafkacat -b localhost:32769 -C -t voltha.kpis \
- -f 'Topic %t [%p] at offset %o: key %k: %s\n'
+```shell
+kafkacat -b localhost:32769 -C -t voltha.kpis -f 'Topic %t [%p] at offset %o: key %k: %s\n'
```
-This may show only two Voltha metrics, yet it still verifies the proper operation
- of the KPI metric collection mechanism. A sample output is as follows, truncated
- to only the first 15 lines:
+This may show only two Voltha metrics, yet it still verifies the proper operation of the KPI metric collection mechanism. A sample output is as follows, truncated to only the first 15 lines:
-```
+```shell
(venv-linux) ubuntu@voltha:/voltha$ kafkacat -b localhost:32769 -C -t voltha.kpis -f 'Topic %t [%p] at offset %o: key %k: %s\n'
Topic voltha.kpis [0] at offset 0: key : {"data": {"voltha.internal.compose_voltha_1": {"deferreds": 20, "rss-mb": 79}}, "type": "slice", "ts": 1484291374}
Topic voltha.kpis [0] at offset 1: key : {"data": {"voltha.internal.compose_voltha_1": {"deferreds": 173, "rss-mb": 79}}, "type": "slice", "ts": 1484291389}
@@ -135,7 +112,6 @@
Topic voltha.kpis [0] at offset 14: key : {"data": {"voltha.internal.compose_voltha_1": {"deferreds": 173, "rss-mb": 79}}, "type": "slice", "ts": 1484291584}
```
-### Pass/Fail Criteria
+## Pass/Fail Criteria
-* The above feeds (topics) should exist in Kafka and have data in both
-topics.
+* The above feeds (topics) should exist in Kafka and have data in both topics.
diff --git a/docs/manuals/user/labtests/old/M00_maple_olt_tests_original.md b/docs/manuals/user/labtests/old/M00_maple_olt_tests_original.md
index 4efb93c..a327ebf 100644
--- a/docs/manuals/user/labtests/old/M00_maple_olt_tests_original.md
+++ b/docs/manuals/user/labtests/old/M00_maple_olt_tests_original.md
@@ -1,11 +1,11 @@
# Maple OLT Tests
-These tests (obviously) assume access to a Maple-based OLT PON system in the test
-POD.
+These tests (obviously) assume access to a Maple-based OLT PON system in the test POD.
The tests are grouped into the following categories:
Manual step-by-step provisioning:
+
* [M1 - Preprovision and Activate OLT](M01_maple_olt_tests_activate_olt.md)
* [M2 - Activate ONU](M02_maple_olt_tests_activate_onu.md)
* [M3 - Manually Install EAPOL Forwarding Flows](M03_maple_olt_tests_eapol_install.md)
@@ -15,6 +15,7 @@
* [M7 - Test IGMP and multicast (Video) streams](M07_maple_olt_tests_multicast.md)
ONOS-base System Test
+
* [M8 - Reset Manually Added Flows and Launch ONOS](M08_maple_olt_tests_start_onos.md)
* [M9 - Verify RG Authentication Scenario](M09_maple_olt_tests_verify_authentication.md)
* [M10 - Verify DHCP Lookup](M10_maple_olt_tests_verify_dhcp.md)
@@ -22,6 +23,7 @@
* [M12 - Verify Multicast Access](M12_maple_olt_tests_verify_multicast.md)
Spirent-base Functional Traffic Tests
+
* [M13 - Spirent - Verify Re-Write C-VID Upstream](M13_maple_olt_tests_verify_cvid_upstream.md)
* [M14 - Spirent - Verify Re-Write C-VID Downstream](M14_maple_olt_tests_verify_cvid_downstream.md)
* [M15 - Spirent - Verify 802.1ad (QinQ) Upstream](M15_maple_olt_tests_verify_qinq_upstream.md)
@@ -30,6 +32,7 @@
* [M18 - Spirent - Verify IPv4 Unicast Streams Downstream Case2](M18_maple_olt_tests_verify_ipv4_downstream_case2.md)
Miscellaneous Randing Tests
+
* [M19 - 10k and 20k ONU Ranging](M19_maple_olt_tests_ranging.md)
* [M20 - MIB Download and Upload](M20_maple_olt_tests_mib.md)
* [M21 - 2000 byte Frames](M21_maple_olt_tests_2000_byte_frames.md)
@@ -37,7 +40,8 @@
* [M23 - Overnight Traffic Test](M23_maple_olt_tests_overnight.md)
Robustness Testing
+
* [M24 - Traffic Recovers After Fiber Disconnect (Best Effort)](M24_maple_olt_tests_ha_fiber_disconnect.md)
* [M25 - Traffic Recovers After ONU Reset (Best Effort)](M25_maple_olt_tests_ha_onu_reset.md)
* [M26 - Traffic Recovers After OLT Reset (Best Effort)](M26_maple_olt_tests_ha_olt_reset.md)
-* [M27 - Traffic Recovers After ToR Switch Reset (Best Effort)](M27_maple_olt_tests_ha_tor_switch_reset.md)
+* [M27 - Traffic Recovers After ToR Switch Reset (Best Effort)](M27_maple_olt_tests_ha_tor_switch_reset.md)
diff --git a/docs/manuals/user/labtests/old/M01_maple_olt_tests_activate_olt.md b/docs/manuals/user/labtests/old/M01_maple_olt_tests_activate_olt.md
index 8bccb8f..ed976eb 100644
--- a/docs/manuals/user/labtests/old/M01_maple_olt_tests_activate_olt.md
+++ b/docs/manuals/user/labtests/old/M01_maple_olt_tests_activate_olt.md
@@ -1,17 +1,17 @@
-## M1 - Preprovision and Activate OLT
+# M1 - Preprovision and Activate OLT
-### Test Objective
+## Test Objective
* Purpose of this test is to verify new OLT can be added and activated from VOLTHA
* VOLTHA will connect with OLT physical device and create a logical device with initial ports in its data store.
* VOLTHA will send Event notifications to ONOS and PON Manager for the newly added OLT
-### Test Configuration
+## Test Configuration
* Test Setup is as shown in Section – 7
* Maple OLT should be reachable to VOLTHA over IP interface on VLAN 4092
-### Test Procedure
+## Test Procedure
* Issue commands to VOLTHA to simulate “Add-OLT device” message coming from PON Manager on VOLTHA
* VOLTHA should initiate connect / activate request to Maple OLT
@@ -21,9 +21,8 @@
* Verify OLT/ONU Status on Device Console
* ONU should drop all the traffic coming from RG
-### Pass/Fail Criteria
+## Pass/Fail Criteria
* OLT is successfully detected and activated on VOLTHA
* Logical device and port list is created on VOLTHA and ONOS
* OLT / ONU status can be seen from Device Console
-
diff --git a/docs/manuals/user/labtests/old/M03_maple_olt_tests_eapol_install.md b/docs/manuals/user/labtests/old/M03_maple_olt_tests_eapol_install.md
index e547263..44c010e 100644
--- a/docs/manuals/user/labtests/old/M03_maple_olt_tests_eapol_install.md
+++ b/docs/manuals/user/labtests/old/M03_maple_olt_tests_eapol_install.md
@@ -1,32 +1,35 @@
-## M3 - Manually Install EAPOL Forwarding Flows
+# M3 - Manually Install EAPOL Forwarding Flows
-### Test Objective
+## Test Objective
+
* Use Voltha CLI to manually download EAPOL forwarding rule to PON network
-### Test Configuration
+## Test Configuration
+
* TBF
-### Test Procedure
+## Test Procedure
-**Step 1: If not yet running, launch Voltha CLI:**
-```
+### Step 1: If not yet running, launch Voltha CLI
+
+```shell
cd $VOLTHA_BASE
./cli/main.py -L
```
-(Note, the ```-L``` option is needed if Voltha was launched as
-a container using docker-compose.)
+(Note, the *-L* option is needed if Voltha was launched as a container using docker-compose.)
-**Step 2: Note the device ID**
-
+### Step 2: Note the device ID
+
Note the Voltha logical device ID of the PON network being tested.
If in doubt, use the following Voltha CLI command to list all devices:
-```
+
+```shell
devices
```
The output may be something like this (lines are truncated):
-```
+```shell
(voltha) devices
Devices:
+--------------+---------------+------+--------------+------+--------------...
@@ -37,20 +40,19 @@
+--------------+---------------+------+--------------+------+--------------...
```
-In this case the OLT's device id was ```25dadc44a847```
-and the logical device id shown as the parent_id for the OLT.
-In this case the logical device id is ```1```.
+In this case the OLT's device id was *25dadc44a847* and the logical device id shown as the parent_id for the OLT. In this case the logical device id is *1*.
-**Step 3: Download EAPOL forwarding rules to the PON**
+### Step 3: Download EAPOL forwarding rules to the PON
Using the test mode of the CLI, download the rules:
-```
+
+```shell
test
install_eapol_flow 1
```
-where you must use the logical device ID. The CLI provides
-TAB completion that can help too.
-### Pass/Fail Criteria
+where you must use the logical device ID. The CLI provides TAB completion that can help too.
+
+## Pass/Fail Criteria
[Zsolt to finish]
diff --git a/docs/manuals/user/labtests/preparations.md b/docs/manuals/user/labtests/preparations.md
index 1826524..613a0ce 100644
--- a/docs/manuals/user/labtests/preparations.md
+++ b/docs/manuals/user/labtests/preparations.md
@@ -6,58 +6,54 @@
Before you start, please ensure the following requirements have been met.
-* You have access to a server that was already set up for Voltha development
- and test deployments. We will call this the "Voltha server."
-* The Voltha server has access to the Internet. This is needed to download the
-latest dependencies and the latest Voltha code base.
+* You have access to a server that was already set up for Voltha development and test deployments. We will call this the "Voltha server."
+* The Voltha server has access to the Internet. This is needed to download the latest dependencies and the latest Voltha code base.
* You have local or remote access to the server.
-* In case of remote access, you know the IP address or qualified DNS name of
- the server, and can reach it.
+* In case of remote access, you know the IP address or qualified DNS name of the server, and can reach it.
* You can login using non-root account.
* Your account is sudo-ready.
-### Upgrade Steps
+## Upgrade Steps
-**Step 1: Login to server and navigate to Voltha base directory**
+* Step 1: Login to server and navigate to Voltha base directory
Assuming remote access, ssh into the server and then execute the following commands.
-```
+```shell
ssh <username>@<server-address> # and use your credentials
```
Navigate to the Voltha base dir and source the environment. For example:
-```
+```shell
cd cord/incubator/voltha
source env.sh
```
-Your exact path may differ. After the above step, the prompt should include
- the term ```venv-linux``` now.
+Your exact path may differ. After the above step, the prompt should include the term ```venv-linux``` now.
-**Step 2: Upgrade to latest Python dependencies**
+* Step 2: Upgrade to latest Python dependencies
Execute:
-```
+```shell
pip install -r requirements.txt
```
-**Step 3: Install some additional system packages needed for testing**
+* Step 3: Install some additional system packages needed for testing
Execute:
-```
+```shell
sudo apt install -y wireshark tshark npm nodejs-legacy bridge-utils
```
-**Step 4: Install oftest and olt-oftest, needed for PON-level system tests**
+* Step 4: Install oftest and olt-oftest, needed for PON-level system tests
This step is needed only if you intend to run the automated PON-level
tests. Execute:
-```
+```shell
cd $VOLTHA_BASE # if you don't have this, go back to Step 1
# Now, go up a directory so that we don't install in the voltha repo
cd ..
@@ -66,16 +62,16 @@
./mininet/util/install.sh # this may ask for your password
```
-**Step 5: Fetch latest Docker image preprequisites**
+* Step 5: Fetch latest Docker image preprequisites
-```
+```shell
cd $VOLTHA_BASE
make fetch
```
-**Step 6: Rebuild the Voltha Docker Image Combo**
+* Step 6: Rebuild the Voltha Docker Image Combo
-```
+```shell
cd $VOLTHA_BASE
make
```
@@ -83,15 +79,12 @@
At this point your Voltha components shall be ready for local Docker
deployment.
-
## Verify Network Access From Server to OLTs
Confirm that you have connectivity from the VOLTHA server to the OLT chassis or device.
-### VLAN forwarding
+## VLAN forwarding
-Any L2 switches participating in connecting the Voltha test server to the PON
-components need to be configured to pass specific VLAN-tagged traffic. The
-details are POD and device specific. Please consult with your vendor.
+Any L2 switches participating in connecting the Voltha test server to the PON components need to be configured to pass specific VLAN-tagged traffic. The details are POD and device specific. Please consult with your vendor.
Please continue with next section of the document.
diff --git a/docs/manuals/user/labtests/requirements.md b/docs/manuals/user/labtests/requirements.md
index d986b26..cd4aa33 100644
--- a/docs/manuals/user/labtests/requirements.md
+++ b/docs/manuals/user/labtests/requirements.md
@@ -2,8 +2,7 @@
## Test PODs
-A Test POD suitable for testing Voltha and Voltha-assisted PON networks usually
-contain at least the following hardware components:
+A Test POD suitable for testing Voltha and Voltha-assisted PON networks usually contains at least the following hardware components:
* One or more disaggregated OLT devices
* One or more ONU/ONT devices per OLT
@@ -20,6 +19,4 @@
## Supported Specific Test PODs
At this early phase, test PODs are being defined and developed by a select set
-of commercial vendors who are members of the Voltha project. Once the PODs are stable
-enough, their details will be described here. Until then, please contact your
-(preferred) vendor for test POD specifications, BOMs, and other details.
+of commercial vendors who are members of the Voltha project. Once the PODs are stable enough, their details will be described here. Until then, please contact your (preferred) vendor for test POD specifications, BOMs, and other details.
diff --git a/docs/manuals/user/old/SUMMARY_ORIG.md b/docs/manuals/user/old/SUMMARY_ORIG.md
index 0c47be7..de3e059 100644
--- a/docs/manuals/user/old/SUMMARY_ORIG.md
+++ b/docs/manuals/user/old/SUMMARY_ORIG.md
@@ -3,84 +3,84 @@
This is the TOC file used by the gitbook generator.
To generate and serve static content, run:
- ```
- gitbook serve
- ```
+```shell
+gitbook serve
+```
* [Introduction](README.md)
* [Overview of Voltha]()
* [Recommended Lab Test Scenarios](labtests/README.md)
- * [Requirements](labtests/requirements.md)
- * [Preparation](labtests/preparations.md)
- * [Voltha Bringup Tests](labtests/V00_voltha.md)
- * [V1 - Deploy Voltha and Verify its Vital Signs](labtests/V01_voltha_bringup_deploy.md)
- * [V2 - Connect to Voltha with REST and Web Browser](labtests/V02_voltha_bringup_rest.md)
- * [V3 - Connect to Voltha via its CLI](labtests/V03_voltha_bringup_cli.md)
- * [V4 - View Voltha Async Events with Kafkacat](labtests/V04_voltha_bringup_async.md)
- * [PONSIM Tests](labtests/S00_ponsim_tests.md)
- * [S1 - Launch PONSIM and Activate it From Voltha](labtests/S01_ponsim_tests_launch_and_activate.md)
- * [S2 - Manually Install EAPOL Forwarding Flows](labtests/S02_ponsim_tests_eapol_install.md)
- * [S3 - Test EAPOL In/Out Forwarding with OLT-OFTEST](labtests/S03_ponsim_tests_eapol_in_out.md)
- * [S4 - Manually Install All Forwarding Flows](labtests/S04_ponsim_tests_install_all_flows.md)
- * [S5 - Test unicast (Internet) access](labtests/S05_ponsim_tests_unicast.md)
- * [S6 - Test IGMP and multicast (Video) streams](labtests/S06_ponsim_tests_multicast.md)
- * [Maple OLT Tests](labtests/M00_maple_olt_tests.md)
- * [M1 - Preprovision and Activate OLT](labtests/M01_maple_olt_tests_activate_olt.md)
- * [M2 - Activate ONU](labtests/M02_maple_olt_tests_activate_onu.md)
- * [M3 - Manually Install EAPOL Forwarding Flows](labtests/M03_maple_olt_tests_eapol_install.md)
- * [M4 - Test EAPOL In/Out Forwarding with OLT-OFTEST](labtests/M04_maple_olt_tests_eapol_in_out.md)
- * [M5 - Manually Install All Forwarding Flows](labtests/M05_maple_olt_tests_install_all_flows.md)
- * [M6 - Test unicast (Internet) access](labtests/M06_maple_olt_tests_unicast.md)
- * [M7 - Test IGMP and multicast (Video) streams](labtests/M07_maple_olt_tests_multicast.md)
- * [M8 - Reset Manually Added Flows and Launch ONOS](labtests/M08_maple_olt_tests_start_onos.md)
- * [M9 - Verify RG Authentication Scenario](labtests/M09_maple_olt_tests_verify_authentication.md)
- * [M10 - Verify DHCP Lookup](labtests/M10_maple_olt_tests_verify_dhcp.md)
- * [M11 - Verify Unicast Access](labtests/M11_maple_olt_tests_verify_unicast.md)
- * [M12 - Verify Multicast Access](labtests/M12_maple_olt_tests_verify_multicast.md)
- * [M13 - Spirent - Verify Re-Write C-VID Upstream](labtests/M13_maple_olt_tests_verify_cvid_upstream.md)
- * [M14 - Spirent - Verify Re-Write C-VID Downstream](labtests/M14_maple_olt_tests_verify_cvid_downstream.md)
- * [M15 - Spirent - Verify 802.1ad (QinQ) Upstream](labtests/M15_maple_olt_tests_verify_qinq_upstream.md)
- * [M16 - Spirent - Verify 802.1ad (QinQ) Downstream](labtests/M16_maple_olt_tests_verify_qinq_downstream.md)
- * [M17 - Spirent - Verify IPv4 Unicast Streams Downstream](labtests/M17_maple_olt_tests_verify_ipv4_downstream.md)
- * [M18 - Spirent - Verify IPv4 Unicast Streams Downstream Case2](labtests/M18_maple_olt_tests_verify_ipv4_downstream_case2.md)
- * [M19 - 10k and 20k ONU Ranging](labtests/M19_maple_olt_tests_ranging.md)
- * [M20 - MIB Download and Upload](labtests/M20_maple_olt_tests_mib.md)
- * [M21 - 2000 byte Frames](labtests/M21_maple_olt_tests_2000_byte_frames.md)
- * [M22 - Simultaneous Data and Video Streams](labtests/M22_maple_olt_tests_data_and_video.md)
- * [M23 - Overnight Traffic Test](labtests/M23_maple_olt_tests_overnight.md)
- * [M24 - Traffic Recovers After Fiber Disconnect (Best Effort)](labtests/M24_maple_olt_tests_ha_fiber_disconnect.md)
- * [M25 - Traffic Recovers After ONU Reset (Best Effort)](labtests/M25_maple_olt_tests_ha_onu_reset.md)
- * [M26 - Traffic Recovers After OLT Reset (Best Effort)](labtests/M26_maple_olt_tests_ha_olt_reset.md)
- * [M27 - Traffic Recovers After ToR Switch Reset (Best Effort)](labtests/M27_maple_olt_tests_ha_tor_switch_reset.md)
- * [Tibit OLT Tests](labtests/T00_tibit_olt_tests.md)
- * [T1 - Preprovision and Activate OLT](labtests/T01_tibit_olt_tests_activate_olt.md)
- * [T2 - Activate ONU](labtests/T02_tibit_olt_tests_activate_onu.md)
- * [T3 - Manually Install EAPOL Forwarding Flows](labtests/T03_tibit_olt_tests_eapol_install.md)
- * [T4 - Test EAPOL In/Out Forwarding with OLT-OFTEST](labtests/T04_tibit_olt_tests_eapol_in_out.md)
- * [T5 - Manually Install All Forwarding Flows](labtests/T05_tibit_olt_tests_install_all_flows.md)
- * [T6 - Test unicast (Internet) access](labtests/T06_tibit_olt_tests_unicast.md)
- * [T7 - Test IGMP and multicast (Video) streams](labtests/T07_tibit_olt_tests_multicast.md)
- * [T8 - Reset Manually Added Flows and Launch ONOS](labtests/T08_tibit_olt_tests_start_onos.md)
- * [T9 - Verify RG Authentication Scenario](labtests/T09_tibit_olt_tests_verify_authentication.md)
- * [T10 - Verify DHCP Lookup](labtests/T10_tibit_olt_tests_verify_dhcp.md)
- * [T11 - Verify Unicast Access](labtests/T11_tibit_olt_tests_verify_unicast.md)
- * [T12 - Verify Multicast Access](labtests/T12_tibit_olt_tests_verify_multicast.md)
- * [T13 - Spirent - Verify Re-Write C-VID Upstream](labtests/T13_tibit_olt_tests_verify_cvid_upstream.md)
- * [T14 - Spirent - Verify Re-Write C-VID Downstream](labtests/T14_tibit_olt_tests_verify_cvid_downstream.md)
- * [T15 - Spirent - Verify 802.1ad (QinQ) Upstream](labtests/T15_tibit_olt_tests_verify_qinq_upstream.md)
- * [T16 - Spirent - Verify 802.1ad (QinQ) Downstream](labtests/T16_tibit_olt_tests_verify_qinq_downstream.md)
- * [T17 - Spirent - Verify IPv4 Unicast Streams Downstream](labtests/T17_tibit_olt_tests_verify_ipv4_downstream.md)
- * [T18 - Spirent - Verify IPv4 Unicast Streams Downstream Case2](labtests/T18_tibit_olt_tests_verify_ipv4_downstream_case2.md)
- * [T19 - 10k and 20k ONU Ranging](labtests/T19_tibit_olt_tests_ranging.md)
- * [T20 - MIB Download and Upload](labtests/T20_tibit_olt_tests_mib.md)
- * [T21 - 2000 byte Frames](labtests/T21_tibit_olt_tests_2000_byte_frames.md)
- * [T22 - Simultaneous Data and Video Streams](labtests/T22_tibit_olt_tests_data_and_video.md)
- * [T23 - Overnight Traffic Test](labtests/T23_tibit_olt_tests_overnight.md)
- * [T24 - Traffic Recovers After Fiber Disconnect (Best Effort)](labtests/T24_tibit_olt_tests_ha_fiber_disconnect.md)
- * [T25 - Traffic Recovers After ONU Reset (Best Effort)](labtests/T25_tibit_olt_tests_ha_onu_reset.md)
- * [T26 - Traffic Recovers After OLT Reset (Best Effort)](labtests/T26_tibit_olt_tests_ha_olt_reset.md)
- * [T27 - Traffic Recovers After ToR Switch Reset (Best Effort)](labtests/T27_tibit_olt_tests_ha_tor_switch_reset.md)
- * [Previews of Upcoming Features](labtests/P00_previews.md)
- * [P1 - KPI Collection Through Voltha](labtests/P01_previews_kpi_collection.md)
- * [P2 - Voltha's Netconf API and Yang Definitions](labtests/P02_previews_yang_and_netconf.md)
- * [P3 - Voltha's Partial Readiness for Scale-out](labtests/P03_previews_scale_out.md)
+ * [Requirements](labtests/requirements.md)
+ * [Preparation](labtests/preparations.md)
+ * [Voltha Bringup Tests](labtests/V00_voltha.md)
+ * [V1 - Deploy Voltha and Verify its Vital Signs](labtests/V01_voltha_bringup_deploy.md)
+ * [V2 - Connect to Voltha with REST and Web Browser](labtests/V02_voltha_bringup_rest.md)
+ * [V3 - Connect to Voltha via its CLI](labtests/V03_voltha_bringup_cli.md)
+ * [V4 - View Voltha Async Events with Kafkacat](labtests/V04_voltha_bringup_async.md)
+ * [PONSIM Tests](labtests/S00_ponsim_tests.md)
+ * [S1 - Launch PONSIM and Activate it From Voltha](labtests/S01_ponsim_tests_launch_and_activate.md)
+ * [S2 - Manually Install EAPOL Forwarding Flows](labtests/S02_ponsim_tests_eapol_install.md)
+ * [S3 - Test EAPOL In/Out Forwarding with OLT-OFTEST](labtests/S03_ponsim_tests_eapol_in_out.md)
+ * [S4 - Manually Install All Forwarding Flows](labtests/S04_ponsim_tests_install_all_flows.md)
+ * [S5 - Test unicast (Internet) access](labtests/S05_ponsim_tests_unicast.md)
+ * [S6 - Test IGMP and multicast (Video) streams](labtests/S06_ponsim_tests_multicast.md)
+ * [Maple OLT Tests](labtests/M00_maple_olt_tests.md)
+ * [M1 - Preprovision and Activate OLT](labtests/M01_maple_olt_tests_activate_olt.md)
+ * [M2 - Activate ONU](labtests/M02_maple_olt_tests_activate_onu.md)
+ * [M3 - Manually Install EAPOL Forwarding Flows](labtests/M03_maple_olt_tests_eapol_install.md)
+ * [M4 - Test EAPOL In/Out Forwarding with OLT-OFTEST](labtests/M04_maple_olt_tests_eapol_in_out.md)
+ * [M5 - Manually Install All Forwarding Flows](labtests/M05_maple_olt_tests_install_all_flows.md)
+ * [M6 - Test unicast (Internet) access](labtests/M06_maple_olt_tests_unicast.md)
+ * [M7 - Test IGMP and multicast (Video) streams](labtests/M07_maple_olt_tests_multicast.md)
+ * [M8 - Reset Manually Added Flows and Launch ONOS](labtests/M08_maple_olt_tests_start_onos.md)
+ * [M9 - Verify RG Authentication Scenario](labtests/M09_maple_olt_tests_verify_authentication.md)
+ * [M10 - Verify DHCP Lookup](labtests/M10_maple_olt_tests_verify_dhcp.md)
+ * [M11 - Verify Unicast Access](labtests/M11_maple_olt_tests_verify_unicast.md)
+ * [M12 - Verify Multicast Access](labtests/M12_maple_olt_tests_verify_multicast.md)
+ * [M13 - Spirent - Verify Re-Write C-VID Upstream](labtests/M13_maple_olt_tests_verify_cvid_upstream.md)
+ * [M14 - Spirent - Verify Re-Write C-VID Downstream](labtests/M14_maple_olt_tests_verify_cvid_downstream.md)
+ * [M15 - Spirent - Verify 802.1ad (QinQ) Upstream](labtests/M15_maple_olt_tests_verify_qinq_upstream.md)
+ * [M16 - Spirent - Verify 802.1ad (QinQ) Downstream](labtests/M16_maple_olt_tests_verify_qinq_downstream.md)
+ * [M17 - Spirent - Verify IPv4 Unicast Streams Downstream](labtests/M17_maple_olt_tests_verify_ipv4_downstream.md)
+ * [M18 - Spirent - Verify IPv4 Unicast Streams Downstream Case2](labtests/M18_maple_olt_tests_verify_ipv4_downstream_case2.md)
+ * [M19 - 10k and 20k ONU Ranging](labtests/M19_maple_olt_tests_ranging.md)
+ * [M20 - MIB Download and Upload](labtests/M20_maple_olt_tests_mib.md)
+ * [M21 - 2000 byte Frames](labtests/M21_maple_olt_tests_2000_byte_frames.md)
+ * [M22 - Simultaneous Data and Video Streams](labtests/M22_maple_olt_tests_data_and_video.md)
+ * [M23 - Overnight Traffic Test](labtests/M23_maple_olt_tests_overnight.md)
+ * [M24 - Traffic Recovers After Fiber Disconnect (Best Effort)](labtests/M24_maple_olt_tests_ha_fiber_disconnect.md)
+ * [M25 - Traffic Recovers After ONU Reset (Best Effort)](labtests/M25_maple_olt_tests_ha_onu_reset.md)
+ * [M26 - Traffic Recovers After OLT Reset (Best Effort)](labtests/M26_maple_olt_tests_ha_olt_reset.md)
+ * [M27 - Traffic Recovers After ToR Switch Reset (Best Effort)](labtests/M27_maple_olt_tests_ha_tor_switch_reset.md)
+ * [Tibit OLT Tests](labtests/T00_tibit_olt_tests.md)
+ * [T1 - Preprovision and Activate OLT](labtests/T01_tibit_olt_tests_activate_olt.md)
+ * [T2 - Activate ONU](labtests/T02_tibit_olt_tests_activate_onu.md)
+ * [T3 - Manually Install EAPOL Forwarding Flows](labtests/T03_tibit_olt_tests_eapol_install.md)
+ * [T4 - Test EAPOL In/Out Forwarding with OLT-OFTEST](labtests/T04_tibit_olt_tests_eapol_in_out.md)
+ * [T5 - Manually Install All Forwarding Flows](labtests/T05_tibit_olt_tests_install_all_flows.md)
+ * [T6 - Test unicast (Internet) access](labtests/T06_tibit_olt_tests_unicast.md)
+ * [T7 - Test IGMP and multicast (Video) streams](labtests/T07_tibit_olt_tests_multicast.md)
+ * [T8 - Reset Manually Added Flows and Launch ONOS](labtests/T08_tibit_olt_tests_start_onos.md)
+ * [T9 - Verify RG Authentication Scenario](labtests/T09_tibit_olt_tests_verify_authentication.md)
+ * [T10 - Verify DHCP Lookup](labtests/T10_tibit_olt_tests_verify_dhcp.md)
+ * [T11 - Verify Unicast Access](labtests/T11_tibit_olt_tests_verify_unicast.md)
+ * [T12 - Verify Multicast Access](labtests/T12_tibit_olt_tests_verify_multicast.md)
+ * [T13 - Spirent - Verify Re-Write C-VID Upstream](labtests/T13_tibit_olt_tests_verify_cvid_upstream.md)
+ * [T14 - Spirent - Verify Re-Write C-VID Downstream](labtests/T14_tibit_olt_tests_verify_cvid_downstream.md)
+ * [T15 - Spirent - Verify 802.1ad (QinQ) Upstream](labtests/T15_tibit_olt_tests_verify_qinq_upstream.md)
+ * [T16 - Spirent - Verify 802.1ad (QinQ) Downstream](labtests/T16_tibit_olt_tests_verify_qinq_downstream.md)
+ * [T17 - Spirent - Verify IPv4 Unicast Streams Downstream](labtests/T17_tibit_olt_tests_verify_ipv4_downstream.md)
+ * [T18 - Spirent - Verify IPv4 Unicast Streams Downstream Case2](labtests/T18_tibit_olt_tests_verify_ipv4_downstream_case2.md)
+ * [T19 - 10k and 20k ONU Ranging](labtests/T19_tibit_olt_tests_ranging.md)
+ * [T20 - MIB Download and Upload](labtests/T20_tibit_olt_tests_mib.md)
+ * [T21 - 2000 byte Frames](labtests/T21_tibit_olt_tests_2000_byte_frames.md)
+ * [T22 - Simultaneous Data and Video Streams](labtests/T22_tibit_olt_tests_data_and_video.md)
+ * [T23 - Overnight Traffic Test](labtests/T23_tibit_olt_tests_overnight.md)
+ * [T24 - Traffic Recovers After Fiber Disconnect (Best Effort)](labtests/T24_tibit_olt_tests_ha_fiber_disconnect.md)
+ * [T25 - Traffic Recovers After ONU Reset (Best Effort)](labtests/T25_tibit_olt_tests_ha_onu_reset.md)
+ * [T26 - Traffic Recovers After OLT Reset (Best Effort)](labtests/T26_tibit_olt_tests_ha_olt_reset.md)
+ * [T27 - Traffic Recovers After ToR Switch Reset (Best Effort)](labtests/T27_tibit_olt_tests_ha_tor_switch_reset.md)
+ * [Previews of Upcoming Features](labtests/P00_previews.md)
+ * [P1 - KPI Collection Through Voltha](labtests/P01_previews_kpi_collection.md)
+ * [P2 - Voltha's Netconf API and Yang Definitions](labtests/P02_previews_yang_and_netconf.md)
+ * [P3 - Voltha's Partial Readiness for Scale-out](labtests/P03_previews_scale_out.md)
diff --git a/docs/manuals/user/old/olt-oftest-notes.md b/docs/manuals/user/old/olt-oftest-notes.md
index d76c398..006f39c 100644
--- a/docs/manuals/user/old/olt-oftest-notes.md
+++ b/docs/manuals/user/old/olt-oftest-notes.md
@@ -4,11 +4,11 @@
Steps:
-### Bring up dev host and install prerequisites
+## Bring up dev host and install prerequisites
Assuming a fresh Vagrant machine:
-```
+```shell
cd ~/voltha # whatever location your Voltha repo dir is
rm -fr venv-linux # to make sure we don't have residues
vagrant destroy -f # ditto
@@ -22,11 +22,11 @@
pip install pypcap
```
-### Build Voltha proto derivatives and start Voltha
+## Build Voltha proto derivatives and start Voltha
On the above Vagrant box:
-```
+```shell
cd /voltha
. env.sh
make protos
@@ -38,7 +38,7 @@
Open three terminals on the Vagrant host. In terminal one, start voltha:
-```
+```shell
cd /voltha
. env.sh
./voltha/main.py --kafka=@kafka
@@ -46,7 +46,7 @@
In the second terminal, start chameleon:
-```
+```shell
cd /voltha
. env.sh
./chameleon/main.py
@@ -54,7 +54,7 @@
In the third terminal, start ofagent:
-```
+```shell
cd /voltha
. env.sh
./ofagent/main.py
@@ -64,25 +64,25 @@
To see we can reach Voltha via REST:
-```
+```shell
curl -s http://localhost:8881/health | jq '.'
```
and
-```
+```shell
curl -s -H 'Get-Depth: 2' http://localhost:8881/api/v1/local | jq '.'
```
To verify we have exactly one logical device (this is important for olt-oftest, which assumes this):
-```
+```shell
curl -s http://localhost:8881/api/v1/local/logical_devices | jq '.items'
```
Check in the output that there is one entry in the logical device list, along these lines:
-```
+```json
[
{
"datapath_id": "1",
@@ -110,32 +110,31 @@
To verify that the above logical device has all three logical ports, run this:
-```
+```shell
curl -s http://localhost:8881/api/v1/local/logical_devices/simulated1/ports | jq '.items'
```
-This shall have three entries, one OLT NNI port and two ONU (UNI) ports. Make note of the corresponding
-```of_port.port_no``` numbers. They shall be as follows:
+This shall have three entries, one OLT NNI port and two ONU (UNI) ports. Make note of the corresponding *of_port.port_no* numbers. They shall be as follows:
-* For OLT port (```id=olt1```): ```ofp_port.port_no=129```
-* For ONU1 port (```id=onu1```): ```ofp_port.port_no=1```
-* For ONU2 port (```id=onu2```): ```ofp_port.port_no=2```
+* For OLT port (*id=olt1*): *ofp_port.port_no=129*
+* For ONU1 port (*id=onu1*): *ofp_port.port_no=1*
+* For ONU2 port (*id=onu2*): *ofp_port.port_no=2*
If they are different, you will need to adjust olt-oftest input arguments accordingly.
Finally, check the flow and flow_group tables of the logical device; they should both be empty at this point:
-```
+```shell
curl -s http://localhost:8881/api/v1/local/logical_devices/simulated1/flows | jq '.items'
curl -s http://localhost:8881/api/v1/local/logical_devices/simulated1/flow_groups | jq '.items'
```
-### Create fake interfaces needed by olt-oftest
+## Create fake interfaces needed by olt-oftest
Despite that we will run olt-oftest with "fake_dataplane" mode, meaning that it will not attempt to send/receive dataplane traffic, it still wants to be able to open its usual dataplane interfaces. We will make it happy by creating a few veth interfaces:
-```
+```shell
sudo ip link add type veth
sudo ip link add type veth
sudo ip link add type veth
@@ -146,9 +145,9 @@
sudo ifconfig veth6 up
```
-### Start olt-oftest in fake_dataplane mode
+## Start olt-oftest in fake_dataplane mode
-```
+```shell
cd /voltha
sudo -s
export PYTHONPATH=/voltha/voltha/adapters/tibit_olt:/voltha/mininet
@@ -161,5 +160,3 @@
```
The above shall finish with OK (showing seven (7) or more tests completed).
-
-
diff --git a/docs/manuals/user/old/pon-requirements.md b/docs/manuals/user/old/pon-requirements.md
index b6c78f7..6b0a378 100644
--- a/docs/manuals/user/old/pon-requirements.md
+++ b/docs/manuals/user/old/pon-requirements.md
@@ -1,6 +1,4 @@
-# PON Capability Requirements
-
-v0.3
+# PON Capability Requirements (v0.3)
This document summarizes high level functional requirements of a PON system to make it compatible with Voltha and the CORD-based disaggregated access design.
@@ -29,21 +27,21 @@
We define the following reference points:
-**(Pa) Voltha Adapter Interface**
+### (Pa) Voltha Adapter Interface
Uniform, abstract, vendor agnostic programmatic (Python) interface between Voltha's Core and a vendor's OLT Adapter for Voltha.
Purpose:
* Downstream:
- * Invoking management- and control-plane operations _on_ the OLT.
- * Passing management operation protocol frames on behalf of an ONU Adapter to the ONU _via_ the OLT
- * Forwarding control protocol frames to be injected by the OLT toward the RG (e.g., 802.1x, IGMP)
+ * Invoking management- and control-plane operations _on_ the OLT.
+ * Passing management operation protocol frames on behalf of an ONU Adapter to the ONU _via_ the OLT
+ * Forwarding control protocol frames to be injected by the OLT toward the RG (e.g., 802.1x, IGMP)
* Upstream:
- * Signaling asynchronous events to Voltha Core (e.g., OLT discovered, ONU activated, alarms, and performance metric data)
- * Forwarding control-plane messages diverted from the PON network toward the SDN controller (e.g., 802.1x, IGMP)
-
-**(Pc) Control and Management channels**
+ * Signaling asynchronous events to Voltha Core (e.g., OLT discovered, ONU activated, alarms, and performance metric data)
+ * Forwarding control-plane messages diverted from the PON network toward the SDN controller (e.g., 802.1x, IGMP)
+
+### (Pc) Control and Management channels
This interface carries management and control protocol communication between Voltha and the PON complex. This can include protocols terminated by the OLT, by the ONU, or by the RG. Encapsulation of these protocols at Pc can be OLT vendor specific, but their payload may be specific to the vendor of the respective device. The management protocols targeting the OLT can be completely specific to the OLT vendor.
@@ -52,51 +50,53 @@
Purpose:
* Downstream:
- * Invoke OLT management operations using possibly proprietary protocols, specific to the OLT vendor. Examples: configure OLT device attributes; disable an ONU port.
- * Invoke ONU management operations using protocols specific to the ONU (OMCI, EOAM, etc.), and tunneled by the OLT Adapter and OLT so that it may be encapsulated at Pc in ways specific to the OLT vendor.
- * Carry control plane messages to be forwarded toward the RG. If the injection of such frames into the PON is done by the OLT, the encapsulation method of these frames at Pc can be OLT vendor specific. Thus, the OLT Adapter and the OLT play a tunneling/forwarding role.
+ * Invoke OLT management operations using possibly proprietary protocols, specific to the OLT vendor. Examples: configure OLT device attributes; disable an ONU port.
+ * Invoke ONU management operations using protocols specific to the ONU (OMCI, EOAM, etc.), and tunneled by the OLT Adapter and OLT so that it may be encapsulated at Pc in ways specific to the OLT vendor.
+ * Carry control plane messages to be forwarded toward the RG. If the injection of such frames into the PON is done by the OLT, the encapsulation method of these frames at Pc can be OLT vendor specific. Thus, the OLT Adapter and the OLT play a tunneling/forwarding role.
* Upstream:
- * Respond to OLT management operations
- * Carry ONU management protocol responses from the ONU to the ONU Adapter via the OLT Adapter
- * Carry control plane protocol messages isolated by the OLT and to be destined to the SDN controller. The encapsulation of such messages can be OLT vendor specific at Pc, but must encode/preseve the source (e.g., ONU port number) so that the source of the message can be identified.
-
-**(Pd) Data plane channels**
+ * Respond to OLT management operations
+ * Carry ONU management protocol responses from the ONU to the ONU Adapter via the OLT Adapter
+ * Carry control plane protocol messages isolated by the OLT and to be destined to the SDN controller. The encapsulation of such messages can be OLT vendor specific at Pc, but must encode/preseve the source (e.g., ONU port number) so that the source of the message can be identified.
+
+### (Pd) Data plane channels
This reference point carries all unicast and multicast "payload" data flows of the subscriber, flows with which Voltha is not be concerned, including the subscriber's Internet, VoIP and multicast-based video (TV) traffic. Thus, it can include both unicast and multicast flows. It can also include control and management plane flows for protocols not involving Voltha and the SDN controller.
-**(Po) OLT upstream-facing interface**
+### (Po) OLT upstream-facing interface
This is the interface with which an OLT device is connected to the access aggregation network, i.e., to an upstream data network and to its control- and management systems. This interface thus carries the payload of both Pd and Pc. Pc and Pd flows may be carried via the same OLT physical port (in-band management and control). In the in-band case, flows of Pd vs Pc are typically isolated by VLANs. In the case of out-of band management and control Pc and Pd may be isolated via dedicated physical ports (e.g., when Pc as a whole or portions of Pc protocols access the OLT via its management port).
-**(Pr) ONU residential-facing interface**
+### (Pr) ONU residential-facing interface
This is typically a L2 (Ethernet) interface carrying control plane and data plane flows to and from the RG. This includes all subscriber "payload" flows, such as Internet, VoIP and video service traffic, but it also includes control protocol flows terminated by Voltha or the SDN controller. However this distinction is invisible at this reference point, as the RG must be able to behave in the same way irregardless of being used in a disaggregated (Voltha-based) PON network or in a conventional legacy PON network.
## Minimal Phase 1 Requirements
+
While Voltha is designed to cater for a growing set of requirements and tries to approach the access devices with certain degree of genericness, in the first phase of the implementation it focuses on a specific feature set and behavior. For an OLT/ONT combo to operate with Voltha, the following is expected. Note that VOLTHA does not prescribe the functional breakdown of these requirements between the OLT Adapter and the OLT device, only that the two jointly must yield the desired functionality.
-### OLT and OLT Adapter Requirements
+## OLT and OLT Adapter Requirements
+
* [R-1] OLT Adapter SHOULD be able to auto-discover new OLT devices and notify Voltha CORE about these. In the integrated case (Voltha runs on the OLT device), this is a trivial task. In the compute based implementation this requires the OLTs to regularly transmit a "beacon" signal (e.g., on a specific VLAN) and the adapter to "listen" on the given VLAN and look for OLTs not yet registered with Voltha.
* [R-2] OLT Adapter MUST be able to establish a control communication channel with the OLT. This may or may not be done in a connection oriented fashion, however, the Adapter must be able to use a heart-beat mechanism to monitor the availability of the channel and detect if communication is lost to the device. Any change in status must be signaled to Voltha core via the appropriate API.
* [R-3] Upon request from Voltha Core, the Adapter MUST be able to perform the initial activation of an OLT device. This may involve any or all of the following and must result in a state where all remaining requirements listed below (R-4, R-5, ...) are satisfiable:
- * Upgrade device to desired software level
- * Reset device to a known initial configuration
- * Download and activate "golden" device configuration
- * Gather all inventory information from device
- * Start monitoring device health and setup alarm forwarding to Adapter and Voltha Core
- * Start monitoring control communication to device and signal state changes to Voltha Core
- * Start detection of connected ONUs and notify Voltha Core on arrival/departure events
+ * Upgrade device to desired software level
+ * Reset device to a known initial configuration
+ * Download and activate "golden" device configuration
+ * Gather all inventory information from device
+ * Start monitoring device health and setup alarm forwarding to Adapter and Voltha Core
+ * Start monitoring control communication to device and signal state changes to Voltha Core
+ * Start detection of connected ONUs and notify Voltha Core on arrival/departure events
* [R-4] The OLT MUST be able to "range" ONUs and detection of a new ONU MUST be signaled to Voltha Core via the appropriate API. This API call SHALL provide a minimalistic type information on the ONU, enough to allow Voltha to associate the appropriate ONU Adapter for the ONU.
* [R-5] The OLT MUST be able to detect loss of communication with an ONU and signal the loss as well as recovery events to Voltha Core via the Adapter.
* [R-6] Upon API request, the OLT Adapter must be able to perform OLT-side activation procedures associated to a given ONU. This includes establishing a default PON channel dedicated to the ONU, as well as the installation of a small set of forwarding rules which allows any and all 802.1x (EA-POL) upstream messages to be redirected toward Voltha via the help of the OLT Adapter. It is important that the Adapter can reconstruct the source ONU port before the message is passed to Voltha Core. The mode and encapsulation of such forwarded messages from the OLT to the Adapter is up to the Adapter and the OLT. Nevertheless, here are two examples how this can be accomplished:
- * The redirected frame is handled by the control and management proxy residing on the OLT and passed up as a custom message to the Adapter. The encapsulation methods may contain any and all metadata such as source port ID.
- * A dedicated VLAN is used for all redirected packets and an additional (inner) VLAN tag is used to identify the source port. The former can be used allow the adapter to receive such frames, while the latter can be used by the adapter to reconstruct the port ID before the frame is passed up to Voltha Core.
+ * The redirected frame is handled by the control and management proxy residing on the OLT and passed up as a custom message to the Adapter. The encapsulation methods may contain any and all metadata such as source port ID.
+ * A dedicated VLAN is used for all redirected packets and an additional (inner) VLAN tag is used to identify the source port. The former can be used allow the adapter to receive such frames, while the latter can be used by the adapter to reconstruct the port ID before the frame is passed up to Voltha Core.
* [R-7] The Adapter and OLT MUST allow Voltha to send and receive OMCI management frames to and from an ONU. This allows Voltha to complete the ONU-side part of the ONU activation.
* [R-8] The Adapter MUST allow Voltha to send 802.1x frames back toward the ONU via the Adapter and OLT. Voltha will use logical port numbers to address the ONU/RG, and the Adapter and OLT MUST be able to map this information to whatever is needed on the Adapter to OLT link. The injection of the EA-POL frames MUST be done such that the RG receives the frame without knowing that the 802.1x authentication happened outside of the OLT device (transparent operation).
* [R-9] The Adapter and OLT MUST allow Voltha to establish unicast forwarding of subscriber traffic upstream (toward the aggregation network) and downstream (from the aggregation network toward the subscriber). In Phase 1 at least one such channel must be supported. Frames on the uplink side may be untagged, tagged with an OLT-specific pre-configured VLAN, or dual tagged with an OLT-specific VLAN and a subscriber specific VLAN ID. In the uplink direction, selection of a static CoS bit SHALL be possible.
* [R-10] The Adapter and OLT MUST support the activation of additional control plane packet redirection, including at least for the following frame types (note that in the same way as for 802.1x, the source port MUST be conveyed such that the Adapter can identify it before the frame is passed into Voltha Core) :
- * IGMP v3 messages
- * DHCP IPv4 and IPv6 messages
+ * IGMP v3 messages
+ * DHCP IPv4 and IPv6 messages
* [R-11] The Adapter and OLT MUST be able support the injection of arbitrary packets by Voltha into the PON network in the downstream direction toward any of the active ONUs.
* [R-12] The Adapter and OLT SHALL allow Voltha to activate additional unicast flows associated with subscriber, with unique CoS mapping and vlan tagging options.
* [R-13] The Adapter and OLT MUST allow Voltha to add/remove ONUs to specific multicast flows (video channels). Multicast is data flows are downstream only and may arrive to the OLT at specific VLAN tags. The OLT may be asked to pop such VLAN headers before forwarding them to the PON. If the OLT maps all multicast flows to the broadcast channel of the PON, than once the generic flow is established, not further actions many be triggered by the changes to multicast flows. However, it is likely that Voltha will need to communicate to the ONUs upon these events and the OLT MUST assist in the tunneling of the needed protocol messages (e.g., OMCI) between Voltha and the ONU (see R-7).
@@ -106,14 +106,15 @@
* [R-17] The Adapter and OLT MUST support the removal of any multicast forwarding flow rules.
* [R-18] The Adapter and OLT MUST support the removal of any unicast flow rules.
-### ONU and ONU Adapter Requirements
+## ONU and ONU Adapter Requirements
+
[TBD]
## Sequence Diagrams
-### Cold Start Activation Sequence
+## Cold Start Activation Sequence
The following diagram captures the sequence of steps following a cold start of all sub-systems. This is the first sequence subject of lab testing.
diff --git a/docs/pon-requirements.md b/docs/pon-requirements.md
index 3fe7a14..b40b432 100644
--- a/docs/pon-requirements.md
+++ b/docs/pon-requirements.md
@@ -1,6 +1,4 @@
-# PON Capability Requirements
-
-v0.3
+# PON Capability Requirements v0.3
This document summarizes high level functional requirements of a PON system to make it compatible with Voltha and the CORD-based disaggregated access design.
@@ -29,21 +27,21 @@
We define the following reference points:
-**(Pa) Voltha Adapter Interface**
+### (Pa) Voltha Adapter Interface
Uniform, abstract, vendor agnostic programmatic (Python) interface between Voltha's Core and a vendor's OLT Adapter for Voltha.
Purpose:
* Downstream:
- * Invoking management- and control-plane operations _on_ the OLT.
- * Passing management operation protocol frames on behalf of an ONU Adapter to the ONU _via_ the OLT
- * Forwarding control protocol frames to be injected by the OLT toward the RG (e.g., 802.1x, IGMP)
+ * Invoking management- and control-plane operations _on_ the OLT.
+ * Passing management operation protocol frames on behalf of an ONU Adapter to the ONU _via_ the OLT
+ * Forwarding control protocol frames to be injected by the OLT toward the RG (e.g., 802.1x, IGMP)
* Upstream:
- * Signaling asynchronous events to Voltha Core (e.g., OLT discovered, ONU activated, alarms, and performance metric data)
- * Forwarding control-plane messages diverted from the PON network toward the SDN controller (e.g., 802.1x, IGMP)
-
-**(Pc) Control and Management channels**
+ * Signaling asynchronous events to Voltha Core (e.g., OLT discovered, ONU activated, alarms, and performance metric data)
+ * Forwarding control-plane messages diverted from the PON network toward the SDN controller (e.g., 802.1x, IGMP)
+
+### (Pc) Control and Management channels
This interface carries management and control protocol communication between Voltha and the PON complex. This can include protocols terminated by the OLT, by the ONU, or by the RG. Encapsulation of these protocols at Pc can be OLT vendor specific, but their payload may be specific to the vendor of the respective device. The management protocols targeting the OLT can be completely specific to the OLT vendor.
@@ -52,51 +50,53 @@
Purpose:
* Downstream:
- * Invoke OLT management operations using possibly proprietary protocols, specific to the OLT vendor. Examples: configure OLT device attributes; disable an ONU port.
- * Invoke ONU management operations using protocols specific to the ONU (OMCI, EOAM, etc.), and tunneled by the OLT Adapter and OLT so that it may be encapsulated at Pc in ways specific to the OLT vendor.
- * Carry control plane messages to be forwarded toward the RG. If the injection of such frames into the PON is done by the OLT, the encapsulation method of these frames at Pc can be OLT vendor specific. Thus, the OLT Adapter and the OLT play a tunneling/forwarding role.
+ * Invoke OLT management operations using possibly proprietary protocols, specific to the OLT vendor. Examples: configure OLT device attributes; disable an ONU port.
+ * Invoke ONU management operations using protocols specific to the ONU (OMCI, EOAM, etc.), and tunneled by the OLT Adapter and OLT so that it may be encapsulated at Pc in ways specific to the OLT vendor.
+ * Carry control plane messages to be forwarded toward the RG. If the injection of such frames into the PON is done by the OLT, the encapsulation method of these frames at Pc can be OLT vendor specific. Thus, the OLT Adapter and the OLT play a tunneling/forwarding role.
* Upstream:
- * Respond to OLT management operations
- * Carry ONU management protocol responses from the ONU to the ONU Adapter via the OLT Adapter
- * Carry control plane protocol messages isolated by the OLT and to be destined to the SDN controller. The encapsulation of such messages can be OLT vendor specific at Pc, but must encode/preseve the source (e.g., ONU port number) so that the source of the message can be identified.
-
-**(Pd) Data plane channels**
+ * Respond to OLT management operations
+ * Carry ONU management protocol responses from the ONU to the ONU Adapter via the OLT Adapter
+ * Carry control plane protocol messages isolated by the OLT and to be destined to the SDN controller. The encapsulation of such messages can be OLT vendor specific at Pc, but must encode/preseve the source (e.g., ONU port number) so that the source of the message can be identified.
+
+### (Pd) Data plane channels
This reference point carries all unicast and multicast "payload" data flows of the subscriber, flows with which Voltha is not be concerned, including the subscriber's Internet, VoIP and multicast-based video (TV) traffic. Thus, it can include both unicast and multicast flows. It can also include control and management plane flows for protocols not involving Voltha and the SDN controller.
-**(Po) OLT upstream-facing interface**
+### (Po) OLT upstream-facing interface
This is the interface with which an OLT device is connected to the access aggregation network, i.e., to an upstream data network and to its control- and management systems. This interface thus carries the payload of both Pd and Pc. Pc and Pd flows may be carried via the same OLT physical port (in-band management and control). In the in-band case, flows of Pd vs Pc are typically isolated by VLANs. In the case of out-of band management and control Pc and Pd may be isolated via dedicated physical ports (e.g., when Pc as a whole or portions of Pc protocols access the OLT via its management port).
-**(Pr) ONU residential-facing interface**
+### (Pr) ONU residential-facing interface
This is typically a L2 (Ethernet) interface carrying control plane and data plane flows to and from the RG. This includes all subscriber "payload" flows, such as Internet, VoIP and video service traffic, but it also includes control protocol flows terminated by Voltha or the SDN controller. However this distinction is invisible at this reference point, as the RG must be able to behave in the same way irregardless of being used in a disaggregated (Voltha-based) PON network or in a conventional legacy PON network.
## Minimal Phase 1 Requirements
+
While Voltha is designed to cater for a growing set of requirements and tries to approach the access devices with certain degree of genericness, in the first phase of the implementation it focuses on a specific feature set and behavior. For an OLT/ONT combo to operate with Voltha, the following is expected. Note that VOLTHA does not prescribe the functional breakdown of these requirements between the OLT Adapter and the OLT device, only that the two jointly must yield the desired functionality.
-### OLT and OLT Adapter Requirements
+## OLT and OLT Adapter Requirements
+
* [R-1] OLT Adapter SHOULD be able to auto-discover new OLT devices and notify Voltha CORE about these. In the integrated case (Voltha runs on the OLT device), this is a trivial task. In the compute based implementation this requires the OLTs to regularly transmit a "beacon" signal (e.g., on a specific VLAN) and the adapter to "listen" on the given VLAN and look for OLTs not yet registered with Voltha.
* [R-2] OLT Adapter MUST be able to establish a control communication channel with the OLT. This may or may not be done in a connection oriented fashion, however, the Adapter must be able to use a heart-beat mechanism to monitor the availability of the channel and detect if communication is lost to the device. Any change in status must be signaled to Voltha core via the appropriate API.
* [R-3] Upon request from Voltha Core, the Adapter MUST be able to perform the initial activation of an OLT device. This may involve any or all of the following and must result in a state where all remaining requirements listed below (R-4, R-5, ...) are satisfiable:
- * Upgrade device to desired software level
- * Reset device to a known initial configuration
- * Download and activate "golden" device configuration
- * Gather all inventory information from device
- * Start monitoring device health and setup alarm forwarding to Adapter and Voltha Core
- * Start monitoring control communication to device and signal state changes to Voltha Core
- * Start detection of connected ONUs and notify Voltha Core on arrival/departure events
+ * Upgrade device to desired software level
+ * Reset device to a known initial configuration
+ * Download and activate "golden" device configuration
+ * Gather all inventory information from device
+ * Start monitoring device health and setup alarm forwarding to Adapter and Voltha Core
+ * Start monitoring control communication to device and signal state changes to Voltha Core
+ * Start detection of connected ONUs and notify Voltha Core on arrival/departure events
* [R-4] The OLT MUST be able to "range" ONUs and detection of a new ONU MUST be signaled to Voltha Core via the appropriate API. This API call SHALL provide a minimalistic type information on the ONU, enough to allow Voltha to associate the appropriate ONU Adapter for the ONU.
* [R-5] The OLT MUST be able to detect loss of communication with an ONU and signal the loss as well as recovery events to Voltha Core via the Adapter.
* [R-6] Upon API request, the OLT Adapter must be able to perform OLT-side activation procedures associated to a given ONU. This includes establishing a default PON channel dedicated to the ONU, as well as the installation of a small set of forwarding rules which allows any and all 802.1x (EA-POL) upstream messages to be redirected toward Voltha via the help of the OLT Adapter. It is important that the Adapter can reconstruct the source ONU port before the message is passed to Voltha Core. The mode and encapsulation of such forwarded messages from the OLT to the Adapter is up to the Adapter and the OLT. Nevertheless, here are two examples how this can be accomplished:
- * The redirected frame is handled by the control and management proxy residing on the OLT and passed up as a custom message to the Adapter. The encapsulation methods may contain any and all metadata such as source port ID.
- * A dedicated VLAN is used for all redirected packets and an additional (inner) VLAN tag is used to identify the source port. The former can be used allow the adapter to receive such frames, while the latter can be used by the adapter to reconstruct the port ID before the frame is passed up to Voltha Core.
+ * The redirected frame is handled by the control and management proxy residing on the OLT and passed up as a custom message to the Adapter. The encapsulation methods may contain any and all metadata such as source port ID.
+ * A dedicated VLAN is used for all redirected packets and an additional (inner) VLAN tag is used to identify the source port. The former can be used allow the adapter to receive such frames, while the latter can be used by the adapter to reconstruct the port ID before the frame is passed up to Voltha Core.
* [R-7] The Adapter and OLT MUST allow Voltha to send and receive OMCI management frames to and from an ONU. This allows Voltha to complete the ONU-side part of the ONU activation.
* [R-8] The Adapter MUST allow Voltha to send 802.1x frames back toward the ONU via the Adapter and OLT. Voltha will use logical port numbers to address the ONU/RG, and the Adapter and OLT MUST be able to map this information to whatever is needed on the Adapter to OLT link. The injection of the EA-POL frames MUST be done such that the RG receives the frame without knowing that the 802.1x authentication happened outside of the OLT device (transparent operation).
* [R-9] The Adapter and OLT MUST allow Voltha to establish unicast forwarding of subscriber traffic upstream (toward the aggregation network) and downstream (from the aggregation network toward the subscriber). In Phase 1 at least one such channel must be supported. Frames on the uplink side may be untagged, tagged with an OLT-specific pre-configured VLAN, or dual tagged with an OLT-specific VLAN and a subscriber specific VLAN ID. In the uplink direction, selection of a static CoS bit SHALL be possible.
* [R-10] The Adapter and OLT MUST support the activation of additional control plane packet redirection, including at least for the following frame types (note that in the same way as for 802.1x, the source port MUST be conveyed such that the Adapter can identify it before the frame is passed into Voltha Core) :
- * IGMP v3 messages
- * DHCP IPv4 and IPv6 messages
+ * IGMP v3 messages
+ * DHCP IPv4 and IPv6 messages
* [R-11] The Adapter and OLT MUST be able support the injection of arbitrary packets by Voltha into the PON network in the downstream direction toward any of the active ONUs.
* [R-12] The Adapter and OLT SHALL allow Voltha to activate additional unicast flows associated with subscriber, with unique CoS mapping and vlan tagging options.
* [R-13] The Adapter and OLT MUST allow Voltha to add/remove ONUs to specific multicast flows (video channels). Multicast is data flows are downstream only and may arrive to the OLT at specific VLAN tags. The OLT may be asked to pop such VLAN headers before forwarding them to the PON. If the OLT maps all multicast flows to the broadcast channel of the PON, than once the generic flow is established, not further actions many be triggered by the changes to multicast flows. However, it is likely that Voltha will need to communicate to the ONUs upon these events and the OLT MUST assist in the tunneling of the needed protocol messages (e.g., OMCI) between Voltha and the ONU (see R-7).
@@ -106,7 +106,8 @@
* [R-17] The Adapter and OLT MUST support the removal of any multicast forwarding flow rules.
* [R-18] The Adapter and OLT MUST support the removal of any unicast flow rules.
-### ONU and ONU Adapter Requirements
+## ONU and ONU Adapter Requirements
+
[TBD]
## OLT States and Expected Behavior
@@ -119,23 +120,22 @@
![image](pon-requirements/olt-states.svg)
-
-### Not-exist
+## OLT Not-exist
This is an implied state when Voltha does not know about an OLT yet. At this point an OLT can be created in one of two ways:
-1. The OLT is pre-provisioned from the "north", initializing it with the "Pre-provisioned" state.
-2. The OLT is discovered by the OLT Adapter and this is signalled to Voltha Core via an async API call. Voltha will create the OLT record with the "Discovered" state.
+* The OLT is pre-provisioned from the "north", initializing it with the "Pre-provisioned" state.
+* The OLT is discovered by the OLT Adapter and this is signalled to Voltha Core via an async API call. Voltha will create the OLT record with the "Discovered" state.
-### Pre-provisioned
+## OLT Pre-provisioned
In this state the Adapter is expected to seek to establish communication with the OLT either based on a periodic connection attempt or waiting for a beacon signal from the OLT. If communication is established successfully, the Adapter shall signal this to Core via Pa. This allows Voltha to request activation of the OLT via the appropriate API call at Pa.
-### Discovered
+## OLT Discovered
In this state the Adapter has no further duties. Voltha will use explicit NBI acceptance or policy based decision to move the state to Activate, thus signalling the Adapter that the OLT shall be activated.
-### Activate
+## OLT Activate
The Adapter shall activate the OLT. This can involve:
@@ -145,7 +145,7 @@
Successful or failed activation shall be signalled to Core via appropriate API calls. If successful, OLT state will be moved to Active state. If failed, OLT state will be moved to Failed, with appropriate data logs for troubleshooting and alarms.
-### Active
+## OLT Active
This state indicates that the OLT is ready to perform the following:
@@ -160,11 +160,11 @@
Note that ONU-related messages do not change the OLT state, but rather affect the ONU state model as described in the next sub-section.
-### Failed
+## OLT Failed
[TBD]
-### Additional States
+## OLT Additional States
[TBD]
@@ -173,24 +173,23 @@
## ONU States
-### Non-existent
+### ONU Non-existent
-### Discovered
+### ONU Discovered
-### Activate
+### ONU Activate
-### Active
+### ONU Active
-### Rogue/Disabled
+### ONU Rogue/Disabled
-### Failed
+### ONU Failed
-### Additional States
+## ONU Additional States
## Sequence Diagrams
-
-### Cold Start Activation Sequence
+## Cold Start Activation Sequence
The following diagram captures the sequence of steps following a cold start of all sub-systems. This is the first sequence subject of lab testing.
diff --git a/docs/pon-testing/olt-oftest-notes.md b/docs/pon-testing/olt-oftest-notes.md
index aa44710..97d6521 100644
--- a/docs/pon-testing/olt-oftest-notes.md
+++ b/docs/pon-testing/olt-oftest-notes.md
@@ -4,11 +4,11 @@
Steps:
-### Bring up dev host and install prerequisites
+## Bring up dev host and install prerequisites
Assuming a fresh Vagrant machine:
-```
+```shell
cd ~/voltha # whatever location your Voltha repo dir is
rm -fr venv-linux # to make sure we don't have residues
vagrant destroy -f # ditto
@@ -22,11 +22,11 @@
pip install pypcap
```
-### Build Voltha proto derivatives and start Voltha
+## Build Voltha proto derivatives and start Voltha
On the above Vagrant box:
-```
+```shell
cd /voltha
. env.sh
make protos
@@ -38,7 +38,7 @@
Open three terminals on the Vagrant host. In terminal one, start voltha:
-```
+```shell
cd /voltha
. env.sh
./voltha/main.py --kafka=@kafka
@@ -46,7 +46,7 @@
In the second terminal, start chameleon:
-```
+```shell
cd /voltha
. env.sh
/chameleon/main.py -f pki/voltha.crt -k pki/voltha.key
@@ -54,7 +54,7 @@
In the third terminal, start ofagent:
-```
+```shell
cd /voltha
. env.sh
./ofagent/main.py
@@ -64,25 +64,25 @@
To see we can reach Voltha via REST:
-```
+```shell
curl -k -s https://localhost:8881/health | jq '.'
```
and
-```
+```shell
curl -k -s -H 'Get-Depth: 2' https://localhost:8881/api/v1/local | jq '.'
```
To verify we have exactly one logical device (this is important for olt-oftest, which assumes this):
-```
+```shell
curl -k -s https://localhost:8881/api/v1/local/logical_devices | jq '.items'
```
Check in the output that there is one entry in the logical device list, along these lines:
-```
+```json
[
{
"datapath_id": "1",
@@ -107,35 +107,32 @@
]
```
-
To verify that the above logical device has all three logical ports, run this:
-```
+```shell
curl -k -s https://localhost:8881/api/v1/local/logical_devices/simulated1/ports | jq '.items'
```
-This shall have three entries, one OLT NNI port and two ONU (UNI) ports. Make note of the corresponding
-```of_port.port_no``` numbers. They shall be as follows:
+This shall have three entries, one OLT NNI port and two ONU (UNI) ports. Make note of the corresponding *of_port.port_no* numbers. They shall be as follows:
-* For OLT port (```id=olt1```): ```ofp_port.port_no=129```
-* For ONU1 port (```id=onu1```): ```ofp_port.port_no=1```
-* For ONU2 port (```id=onu2```): ```ofp_port.port_no=2```
+* For OLT port (*id=olt1*): *ofp_port.port_no=129*
+* For ONU1 port (*id=onu1*): *ofp_port.port_no=1*
+* For ONU2 port (*id=onu2*): *ofp_port.port_no=2*
If they are different, you will need to adjust olt-oftest input arguments accordingly.
Finally, check the flow and flow_group tables of the logical device; they should both be empty at this point:
-
-```
+```shell
curl -k -s https://localhost:8881/api/v1/local/logical_devices/simulated1/flows | jq '.items'
curl -k -s https://localhost:8881/api/v1/local/logical_devices/simulated1/flow_groups | jq '.items'
```
-### Create fake interfaces needed by olt-oftest
+## Create fake interfaces needed by olt-oftest
Despite that we will run olt-oftest with "fake_dataplane" mode, meaning that it will not attempt to send/receive dataplane traffic, it still wants to be able to open its usual dataplane interfaces. We will make it happy by creating a few veth interfaces:
-```
+```shell
sudo ip link add type veth
sudo ip link add type veth
sudo ip link add type veth
@@ -146,9 +143,9 @@
sudo ifconfig veth6 up
```
-### Start olt-oftest in fake_dataplane mode
+## Start olt-oftest in fake_dataplane mode
-```
+```shell
cd /voltha
sudo -s
export PYTHONPATH=/voltha/voltha/adapters/tibit_olt:/voltha/mininet
@@ -161,5 +158,3 @@
```
The above shall finish with OK (showing seven (7) or more tests completed).
-
-