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.
-
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) ↩