Kytos-ng 2025.1

Kytos-ng1 version 2025.1 was released in April 2025.

Objectives

This version had these major objectives:

  • AmLight production sustaining issues fixes
  • Upgrade core UI and NApps UI to Vue.js 3
  • Introduce UI unit tests core infrastructure
  • FlowMod pacers tuning
  • Augmented flow_manager to support bulk flows by switches in a single request
  • Augmented interface tag pools to support differentiating between UNI and NNIs
  • mef_eline general enhancements and fixes
  • Research and assessment for mef_eline encapsulation and telemetry_int proxy ports configurations

1. AmLight production sustaining issues fixes

Many major bug fixes on 2025.1 were also backported to 2024.1 for AmLight to able to have those issues fixed in production.

2. Upgrade core UI and NApps UI to Vue.js 3

Kytos-ng core infrastructure UI and NApps UI have been upgraded to Vue.js 3. This was a major technical debt in the UI that has been addressed. This upgrade now unlocks other initiatives such as unit tests and other Vue 3 UI infrastructure improvements that the team can eventually and gradually adopt too to keep evolving and improving the UI.

3. Introduce UI unit tests core infrastructure

Initial UI unit test core infrastructure is now supported with vitest. UI core components will be unit tested in a next version.

4. FlowMod pacers tuning

The default rate for flow_manager’s FlowMod pacers has been increased by 10 times, this has been tuned in a scenario with up to 1000 EVCs with roughly 8k flows, ensuring that a bulk request won’t timeout when sending thousands of flows in a single request. Scalability tests were also run testing up to 50k flows in a single request, which is plenty for many use cases in production, the higher the number of the flows the slower the request payload serialization and deserialization will be.

5. Augmented flow_manager to support bulk flows by switches in a single request

flow_manager now supports sending or deleting bulk flows by switches in a single request. This simplified error handling for flow_manager’s client NApps that need to send flows in synchronous manner.

6. Augmented interface tag pools to support differentiating between UNI and NNIs

A switch interface used to have a single pool of tag ranges for the entire interface. Now when a link is created, it will have its own pool of tags borrowed from the interfaces intersection, which is also configurable, so network operators can also set or resize the tag ranges values if needed. If a NApp is allocating a tag that’s related to a link it should allocate from the link.

7. mef_eline general enhancements and fixes

mef_eline has had many general improvements and fixes (summary of some of them):

  • Race condition fixes when handling a link down double failure with EVCs with failover paths
  • Tag allocations to be all or nothing to avoid leaking resources
  • Exposed max_paths option to specify how many paths should be considered when finding paths
  • Augmented the redeploy endpoint PATCH v2/evc/{evc_id}/redeploy with an argument to try to avoid allocating the same service vlan
  • A link up from UNI will deploy correctly an EVC when it does not have a path
  • An EVC no longer accepts an invalid path when having NNIs as UNIs. Interfaces of a path are validated in pairs

8. Research and assessment for mef_eline encapsulation and telemetry_int proxy ports configurations

Research has been done for these two major items:

  • Find a solution to mitigate Tofino pipeline recirculation when mef_eline uses QinQ with vlan translation which can reduce network throughput at high speeds
  • Make telemetry_int int proxy ports configuration optional for inter EVCs allowing it to be used in more cases when a proxy port isn’t viable to have

Both of these items will be further refined and implemented in the next version.

Database data model changes

If upgrading from prior versions, the following mandatory scripts need to be executed. There’s a README file with more information about each script:

  • 001_retire_vlans.py can be used to retire vlan 4095 which has been excluded from the default tag ranges value.
  • 001_update_default_queue.py can be used to update queue_id from None to -1, this was a change on prior versions, but this script hadn’t been made available before.

In addition, the following console scripts helpers can be used on demand (if a tag leak resource is identified) to fix potential missing tag allocations or deallocations:

General Information

If you are running Linux Kernel 6+, you need to upgrade Elasticsearch (ES) patch version to 7.17.28. This ES version has been tested in development with Kernel versions: 5.10, 5.15, 6.6, 6.8, and 6.12.

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 and look for the CHANGELOG.rst file.

Switches Compatibility List

The following switches have been tested with Kytos version 2025.1:

Switch Vendor Switch Firmware version OpenFlow version Environment type
OVS ovs-switchd 2.15 1.3 testing
NoviFlow WB5132-F NW570.8.4 1.3 testing

Kytos Testing Dashboard Analytics

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

GitHub statistics

In the kytos-ng organization, during the period of this release from October 2024 to April 2025:

Kytos-ng Team

  • Core Team: Vinicius, Italo, David, Rogerio, Aldo
  • Contributors (2025.1): Heriberto Luna
  • 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)