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