# 2.4. ECOC'22 Demo - Disjoint DC-2-DC L3VPN Service (WORK IN PROGRESS) This functional test reproduces the experimental assessment of *Experimental Demonstration of Transport Network Slicing with SLA Using the TeraFlowSDN Controller* presented at [ECOC'22](https://www.optica.org/en-us/events/topical_meetings/ecoc/schedule/?day=Tuesday#Tuesday). ## 2.4.1. Functional test folder This functional test can be found in folder `./src/tests/ecoc22/`. A convenience alias `./ecoc22/` pointing to that folder has been defined. ## 2.4.2. Execute with real devices This functional test has only been tested with emulated devices; however, if you have access to real devices, you can modify the files `./ecoc22/tests/Objects.py` and `./ecoc22/tests/Credentials.py` to point to your devices, and map to your network topology. Otherwise, you can modify the `./ecoc22/tests/descriptors_emulated.json` that is designed to be uploaded through the WebUI instead of using the command line scripts. __Important__: The device drivers operating with real devices, e.g., OpenConfigDriver, P4Driver, and TransportApiDriver, have to be considered as experimental. The configuration and monitoring capabilities they support are limited or partially implemented/tested. Use them with care. ## 2.4.3. Deployment and Dependencies To run this functional test, it is assumed you have deployed a MicroK8s-based Kubernetes environment and a TeraFlowSDN controller instance as described in the [Tutorial: Deployment Guide](./1-0-deployment.md), and you configured the Python environment as described in [Tutorial: Run Experiments Guide > 2.1. Configure Python Environment](./2-1-python-environment.md). Remember to source the scenario settings, e.g., `cd ~/tfs-ctrl && source ecoc22/deploy_specs.sh` in each terminal you open. Then, re-build the protocol buffers code from the proto files: `./proto/generate_code_python.sh` ## 2.4.4. Access to the WebUI and Dashboard When the deployment completes, you can connect to the TeraFlowSDN WebUI and Dashboards as described in [Tutorial: Deployment Guide > 1.4. Access TeraFlowSDN WebUI and Grafana Dashboards](./1-4-access-webui.md) Notes: - the default credentials for the Grafana Dashboiard is user/pass: `admin`/`admin123+`. - this functional test does not involve the Monitoring component, so no monitoring data is plotted in Grafana. ## 2.4.5. Test execution To execute this functional test, four main steps needs to be carried out: 1. Device bootstrapping 2. L3VPN Service creation 3. L3VPN Service removal 4. Cleanup Upon the execution of each test progresses, a report will be generated indicating *PASSED* / *FAILED* / *SKIPPED*. If there is some error during the execution, you should see a detailed report on the error. See the troubleshooting section if needed. You can check the logs of the different components using the appropriate `scripts/show_logs_[component].sh` scripts after you execute each step. ### 2.4.5.1. Device bootstrapping This step configures some basic entities (Context and Topology), the devices, and the links in the topology. The expected results are: - The devices to be added into the Topology. - The devices to be pre-configured and initialized as *ENABLED* by the Automation component. - The monitoring for the device ports (named as endpoints in TeraFlowSDN) to be activated and data collection to automatically start. - The links to be added to the topology. To run this step, you can do it from the WebUI by uploading the file `./ecoc22/tests/descriptors_emulated.json` that contains the descriptors of the contexts, topologies, devices, and links, or by executing the `./ecoc22/run_test_01_bootstrap.sh` script. When the bootstrapping finishes, check in the Grafana L3-Monitoring Dashboard and you should see the monitoring data being plotted and updated every 5 seconds (by default). Given that there is no service configured, you should see a 0-valued flat plot. In the WebUI, select the *admin* Context. Then, in the *Devices* tab you should see that 5 different emulated devices have been created and activated: 4 packet routers, and 1 optical line system controller. Besides, in the *Services* tab you should see that there is no service created. Note here that the emulated devices produce synthetic randomly-generated data and do not care about the services configured. ### 2.4.5.2. L3VPN Service creation This step configures a new service emulating the request an OSM WIM would make by means of a Mock OSM instance. To run this step, execute the `./ecoc22/run_test_02_create_service.sh` script. When the script finishes, check the WebUI *Services* tab. You should see that two services have been created, one for the optical layer and another for the packet layer. Besides, you can check the *Devices* tab to see the configuration rules that have been configured in each device. In the Grafana Dashboard, given that there is now a service configured, you should see the plots with the monitored data for the device. By default, device R1-EMU is selected. ### 2.4.5.3. L3VPN Service removal This step deconfigures the previously created services emulating the request an OSM WIM would make by means of a Mock OSM instance. To run this step, execute the `./ecoc22/run_test_03_delete_service.sh` script, or delete the L3NM service from the WebUI. When the script finishes, check the WebUI "Services" tab. You should see that the two services have been removed. Besides, in the *Devices* tab you can see that the appropriate configuration rules have been deconfigured. In the Grafana Dashboard, given that there is no service configured, you should see a 0-valued flat plot again. ### 2.4.5.4. Cleanup This last step performs a cleanup of the scenario removing all the TeraFlowSDN entities for completeness. To run this step, execute the `./ecoc22/run_test_04_cleanup.sh` script. When the script finishes, check the WebUI "Devices" tab, you should see that the devices have been removed. Besides, in the *Services* tab you can see that the *admin* Context has no services given that that context has been removed.