Kytos-ng 2022.2 - kiko
2022.2, kiko, was released in August.
This version had these major objectives:
mef_elineEVCs convergence to take place in a few seconds on average.
- Integrate a production-grade recommended document-oriented database for Napps.
- Enhance Kytos-ng to support event message prioritization and have higher performance when handling events in general.
- Have a better infrastructure tools for application performance monitoring (APM) and logging.
- New major features such as link liveness detection, interface loop detection, and new Web UI components.
- Increase unit test coverage to at least 85% on all Kytos-ng NApps (except
flow_stats, which has a major refactoring coming soon)
- Leverage queue loggers to minimize latency.
In order to achieve the objectives of this version, the following enhancements were refined and delivered:
Protection in Metro Ethernet Networks is a self-healing property of the network that allows it to continue to function with minimal or no impact on the network users upon disruption, outages, or degradation of links, facilities, or equipment. (MEF 2, Technical Specification)
Aligned with MEF Ethernet Service Protection technical specification,
mef_eline has been enhanced with strategies to provide fast convergence for fully dynamic EVCs, as documented in EP029 blueprint. In particular, we’ve introduced an improved convergence time when handling link failure events using maximum disjoint path algorithms and pre-installed failover paths.
mef_eline convergence performance is more than 100x faster in handling link failure events for hundreds of EVCs compared to the previous release (see complete performance evaluation and details in PR #175). In addition, the overall performance achieved a sub-second convergence time (plus control plane latency) for handling a single link failure.
QinQ has been reintroduced by setting the customer VLAN on the ingress when pushing the QinQ encapsulation since this action is correctly supported by OvS and NoviFlow switches. This feature had been removed from
mef_eline due to the lack of compatibility from Noviflow switches.
MongoDB has been chosen as the document-oriented database based on the EP026 blueprint requirements for NApps. Kytos-ng has been integrated with
pymongo driver library exposing a database client for NApps. Figure 1 illustrates the current high level integration between Kytos-ng NApps and MongoDB with a replica set cluster.
On Kytos-ng documentation, there are more technical information about the current integration architecture with MongoDB and general notes for production deployment. On Kytos-ng readme page, there are more information about how to run and use MongoDB with Kytos-ng.
topology have migrated from
storehouse to MongoDB for higher performance, production and maintainability reasons. Also, since this new database infrastructure is officially supported,
storehouse has been deprecated. If you were using any of these NApps in your network infrastructure, a migration script is also available in the
scripts/ folder of each NApp repository to migrate the stored data gracefully to leverage the new enhanced implementation and supported infrastructure.
Kytos-ng core queues
msg_out have been improved to support event message prioritization to avoid control plane message starvation from the controller’s perspective. All NApps that deal with low level OpenFlow messages and put message in either
msg_in queues are responsible to set the message priority accordingly. A new module is available on
of_core to standardize which priority value is supposed to be set.
In addition, Kytos-ng now provides
asyncio integration for event listeners with a new
alisten_to decorator, so NApps can benefit from more lightweight handlers. Also, this open doors for future integration with
asyncio libraries and its ecosystem.
Kytos-ng has been integrated with Elasticsearch APM Python client to have performance and monitoring metrics. This page documents how to use and enable the APM client with Kytos-ng. Elasticsearch, Filebeat, and Kibana can also be used in order to have a robust, indexed, and searchable logs infrastructure services based on EP028 blueprint. Figure 2 illustrates these services integrated with Kytos-ng and a network operator using Kibana Web user interface to either query for logs or application performance metrics.
of_lldp has been extended to provide link liveness detection, leveraging the existing LLDP messages, to detect link transport outage that might not necessarily trigger a port down event. Link liveness detection can be enabled per interface and it needs to be enabled on each pair in order to work. This implementation is meant to provide a generic alternative to BFD (Bidirectional Forwarding Detection - RFC 5880) where the protocol states is being tracked by the control plane.
of_lldp has also been augmented to detect if an interface of a switch is looped. Interface loop detection is automatically enabled once LLDP since it is been designed to detect unexpected or accidental loops that can happen. This feature has configuration options to configure configure which action should be applied once a loop is detected, by default, it generates a log warning message, but it can also disable an interface. Also, loops can be configured to be ignored.
The following Web UI functionalities were added on
- Table to display switch metadata.
- Table to display links of a switch including its attributes.
- Form and buttons to add and remove metadata from a switch, a link or an interface.
- Toggle buttons to enable and disable a switch, a link or an interface.
- Form and buttons to enable and disable LLDP on interfaces.
topology Web UI
These new Web UI features were added on
- Table to list, edit, and filter maintenance windows.
- Toolbar to create maintenance windows.
- Buttons to finish, extend or delete a maintenance window.
maintenance Web UI
All Kytos-ng Napps (except flow_stats, which has a major refactoring coming soon) now have at least 85% of unit test coverage. Unit test coverage has been increased on
sdntrace_cp in this version to achieve this major goal, enhancing overall code quality and future code maintainability.
Kytos-ng and NApps now leverage QueueHandler and QueueListener as default loggers in order to minimize latency when log statements are used. On average, this new logger demonstrated to be four times as fast as the default logger and 95th percentile of log statements taking more than 1 ms were reduced to less than 1% in a stress test scenario.
flow_stats code repositories have been moved from the amlight organization to the kytos-ng organization, this is to unify the NApps that are being maintained by the Kytos-ng core team. GitHub still maintain compatibility with the previous upstream urls, but the new ones should be used from this point forward.
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 that you are interested in knowing more and look for the changelog file.
The following switches have been tested with Kytos version
|NW570.2.1 and NW550.2.3
An overview about Kytos-ng unit and end-to-end tests coverage is available on these dashboards:
In the kytos-ng organization, during the period of this release from February 2022 to August 2022:
- Core Team: Antonio, Rogerio, Vinicius, Italo, David.
- Contributors (2022.2): Aldo, Aris, Rohan, Muhammad, Krishna, Gretel.
- Team Leader: Jeronimo.
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) ↩
The Vertically-Integrated Projects (VIP) program aims to involve students on campus in innovation. VIP unites undergraduate education and faculty research in a team-based context. ↩