Kytos-ng 2022.3

Kytos-ng1 version 2022.3 was released in January 2023.

Objectives

This version had these major objectives:

  • mef_eline should be able to create EVCs with constrained paths and service level prioritization
  • Add support for INT integration and other NoviFlow experimenter actions
  • maintenance should stabilize its v1 API and integrate with MongoDB
  • Support NoviFlow switches on end-to-end tests
  • End-to-end tests should have fewer false positives and support retries
  • flow_stats should stabilize its v1 API
  • Drop support for OpenFlow 1.0
  • Support user authentication REST API with MongoDB
  • Upgrade Kytos-ng core dependencies to leverage upstream fixes, enhancements and be able to leverage more asyncio functionalities
  • All Kytos-ng NApps should have at least 85% of unit test coverage

In order to achieve the objectives of this version, the following enhancements were refined and delivered:

1. mef_eline should be able to create EVCs with constrained paths

mef_eline now supports EVC creation with path constraints that can be applied to a dynamic primary path or secondary dynamic failover paths. The following link metadata constraints can be used if configured: bandwidth, utilization, priority, reliability, delay, and ownership. In addition, other path attributes, such as total accumulated cost, and desired and undesired links, are also supported. The parameters are documented on mef_eline OpenAPI specification.

In addition, mef_eline provides service level prioritization to allow EVCs to be handled based on their descending service_level value during convergence and consistency checks.

2. Specify how INT will be integrated and supported via NoviFlow experimenter actions

A blueprint has been specified for adding support to telemetry in Kytos-ng EP031, which will be responsible for enabling INT on EVCs. In addition, NoviFlow switches will be supported via experimenter actions implemented by the noviflow NApp, and the functionality will be optionally enabled when an EVC is created. The telemetry NApp is expected to be available in the 2023.1 release.

3. maintenance stabilization v1 API and integrate with MongoDB

maintenance has had its API reviewed and augmented, consolidating its v1 API. The items field has been replaced with the switches, links, and interfaces fields. The status field has been changed to use a string enum, with the valid possible values being pending, running, and finished. status is now protected from being set. Maintenance windows now also include the fields created_at, and updated_at, which contain the creation and update dates. Maintenance windows are now protected from overlapping time intervals, with overlapping disallowed unless the field force is set to True.

Added persistence to maintenance windows through MongoDB. All maintenance windows are stored in the collection maintenance.windows. Upon initializing the Napp, maintenance will update the status of all windows in the DB to progress to the appropriate state depending on the current time compared to their start and end time. Then the Napp will deploy all running maintenance windows and schedule all pending windows.

4. Support NoviFlow switches on end-to-end tests

NoviFlow switches are now supported on kytos-end-to-end-tests as a target on pre-defined testing topologies. Currently, NoviFlow switches are managed via SSH using paramiko. This integration was designed to be seamless with Mininet. Therefore, Noviflow switches are handled as a Mininet Switch so you can reuse or write new end-to-end tests. The NoviFlow Mininet integration will keep evolving during the next release as part of the Kytos-ng CI/CD pipeline.

5. end-to-end tests should have fewer false positives and support retries

The end-to-end tests were enhanced to avoid performing assertions when network convergence can still be taking place, minimizing false positive asserts that could happen. Also, pytest-rerunfailures was introduced to help with re-running tests, providing additional evidence to identify and isolate underlying issues.

6. flow_stats stabilization v1 API

flow_stats has had its API reviewed and augmented, consolidating its v1 API. flow_stats has simplified its code and responsibilities. Also, a Zabbix integration script is available, and it’s using this new v1 API and other NApps endpoints to monitor specific resources on Zabbix.

7. Drop support for OpenFlow 1.0

OpenFlow 1.0 is no longer supported on Kytos-ng NApps. Network operators who use Kytos-ng are comfortable having OpenFlow 1.3 as the supported version, also since OpenFlow 1.3 is a superset of OpenFlow 1.0 that allowed our team to simplify and remove old code to improve code maintainability and test coverage.

8. Support user authentication REST API with MongoDB

The @authenticated REST decorator now uses a users MongoDB collection instead of a workspace of the deprecated storehouse. User creation is still performed via the kytosd CLI or the console.

9. Upgrade Kytos-ng core dependencies

Kytos-ng core dependencies have been upgraded to the latest stable compatible versions to leverage upstream fixes, enhancements and be able to leverage more asyncio functionalities:

ipython==8.1.1
flask-socketio==5.2.0
flask_cors==3.0.10
flask[async]==2.1.3
janus==1.0.0
jinja2==3.1.2
watchdog==2.1.9
pyjwt==2.4.0
pylint==2.15.0

Flask/Werkzeug 2.0.0+ now provides async support so that NApps can leverage asyncio and its ecosystem when applicable using the same rest decorator.

10. All Kytos-ng NApps should have at least 85% of unit test coverage

The flow_stats unit test code coverage has increased to 85%. Thus, all Kytos-ng NApps have at least 85% unit test coverage. For more information, please visit Kytos-ng Tests Analytics Dashboard.

Kytos-ng and NApps released

The following Kytos-ng projects and NApps were released in this version. For further detailed information about what was released and what changed, please visit the release page of each project you are interested in knowing more about and look for the changelog file.

Switches Compatibility List

The following switches have been tested with Kytos version 2022.3:

Switch Vendor Switch Firmware version OpenFlow version Environment type
OVS ovs-switchd 2.15 1.3 testing
NoviFlow WB5132-F NW570.2.1 and NW550.2.3 1.3 production

Kytos Testing Dashboard Analytics

An overview of the Kytos-ng and end-to-end tests coverage is available on these dashboards:

NApps deprecated

GitHub statistics

In the kytos-ng organization, during the period of this release from August 2022 to January 2023:

Kytos-ng Team

  • Core Team: Vinicius, Italo, David, Gretel, Rogerio, Antonio
  • Contributors (2022.3): Aldo
  • Team Leader: Jeronimo

Special Thanks to the Kytos-ng community.

  1. Kytos-ng is supported by the National Science Foundation (NSF) AmLight Express and Protect (AmLIght-ExP) (Award # OAC-2029283) project members Florida International University (FIU) and rednesp (Research and Education Network at Sao Paulo/Brazil)