-
Notifications
You must be signed in to change notification settings - Fork 15
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[SDFAB-844 - Part 1] Refactor SlicingManager to assume static allocation of queues to TCs #453
Conversation
We wil use netcfg for initialization
We wil use netcfg for initialization
Sytem is not a traffic class
src/main/java/org/stratumproject/fabric/tna/behaviour/upf/FabricUpfTranslator.java
Outdated
Show resolved
Hide resolved
src/main/java/org/stratumproject/fabric/tna/slicing/SlicingManager.java
Outdated
Show resolved
Hide resolved
src/main/java/org/stratumproject/fabric/tna/slicing/SlicingManager.java
Outdated
Show resolved
Hide resolved
src/main/java/org/stratumproject/fabric/tna/slicing/api/SlicingAdminService.java
Show resolved
Hide resolved
src/main/java/org/stratumproject/fabric/tna/slicing/api/SlicingProviderService.java
Show resolved
Hide resolved
src/main/java/org/stratumproject/fabric/tna/slicing/SlicingManager.java
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would argue that those CLI commands are still useful when troubleshooting.
I'd suggest keeping them, but change the implementation such that they push an netcfg internally and trigger the same code execution path like a netcfg update. (Essentially a REST alternative that's easier to use. A similar example can be found in sr-blackhole command)
Codecov Report
@@ Coverage Diff @@
## qos-refactoring #453 +/- ##
=====================================================
+ Coverage 66.95% 68.41% +1.45%
+ Complexity 621 615 -6
=====================================================
Files 63 57 -6
Lines 4452 4287 -165
Branches 472 456 -16
=====================================================
- Hits 2981 2933 -48
+ Misses 1235 1122 -113
+ Partials 236 232 -4
Continue to review full report at Codecov.
|
@charlesmcchan I'm a bit reluctant to put in the work to re-establish those CLI commands
If you agree I'd leave them out for now. If we find a reason to reinstate them, we can always look at the git history. What do you think? |
I agree that it won't be too useful (compared to updating the entire block with |
* [SDFAB-844 - Part 1] Refactor SlicingManager to assume static allocation of queues to TCs (#453) * Add SlicingProviderService interface * Remove slice/tc initialization from FabricUpfProgrammable We wil use netcfg for initialization * Remove slice/tc initialization from FabricUpfProgrammable We wil use netcfg for initialization * Remove REST API for adding/removing slice/tcs * Remove unused CLI commands * Revisit TrafficClass and remove hardcoded initialization Sytem is not a traffic class * Introduce TrafficClassConfig class * Remove queue allocation logic * Comments and renaming on SlicingManager * Fix meter color int value * Less ambiguous handling of BE * Fix tests * Remove leftover QueueStoreValue * Javadoc * Wordsmithing * Improvements to TrafficClassConfig * Rename config class to description to disambiguate from netcfg * Use default for mobile slice * clean up rest API docs * address review comments * Fix test and checkstyles * Move distributed store destroy to preDeactivate hook * Update default tc javadoc * Fix tests * [SDFAB-844 - Part 2] Add SlicingConfig class (#454) * Add SlicingProviderService interface * Remove slice/tc initialization from FabricUpfProgrammable We wil use netcfg for initialization * Remove slice/tc initialization from FabricUpfProgrammable We wil use netcfg for initialization * Remove REST API for adding/removing slice/tcs * Remove unused CLI commands * Revisit TrafficClass and remove hardcoded initialization Sytem is not a traffic class * Introduce TrafficClassConfig class * Remove queue allocation logic * Comments and renaming on SlicingManager * Fix meter color int value * Less ambiguous handling of BE * Fix tests * Remove leftover QueueStoreValue * Javadoc * Wordsmithing * Improvements to TrafficClassConfig * Rename config class to description to disambiguate from netcfg * First stab at config class * First stab at tests for SlicingTests * Forgot to check in the test JSON * Consistently call it tcDescription instead of tcConfig * Remove ability to configure best effort queue ID For now, we can safely assume it will always be 0 * Use default for mobile slice * clean up rest API docs * address review comments * Fix test and checkstyles * Move distributed store destroy to preDeactivate hook * Update default tc javadoc * javadoc * review comments * tests * Fix tests * Restore double quotes in json example * [SDFAB-844 - Part 3] Add NetcfgSlicingProvider (#457) * Add SlicingProviderService interface * Remove slice/tc initialization from FabricUpfProgrammable We wil use netcfg for initialization * Remove slice/tc initialization from FabricUpfProgrammable We wil use netcfg for initialization * Remove REST API for adding/removing slice/tcs * Remove unused CLI commands * Revisit TrafficClass and remove hardcoded initialization Sytem is not a traffic class * Introduce TrafficClassConfig class * Remove queue allocation logic * Comments and renaming on SlicingManager * Fix meter color int value * Less ambiguous handling of BE * Fix tests * Remove leftover QueueStoreValue * Javadoc * Wordsmithing * Improvements to TrafficClassConfig * Rename config class to description to disambiguate from netcfg * First stab at config class * First stab at tests for SlicingTests * Forgot to check in the test JSON * Consistently call it tcDescription instead of tcConfig * Move constants to root package * Centralize app name constants in one place It was hard to kkep track of the different app names used * Progress on netcfg slicing provider * Working config add/remove * Fix copyright * Read initial config * wordsmithing * Dyanmic config of system tc * Remove ability to configure best effort queue ID For now, we can safely assume it will always be 0 * Clean up * Use default for mobile slice * clean up rest API docs * address review comments * Fix test and checkstyles * Doubt * Move distributed store destroy to preDeactivate hook * Update default tc javadoc * javadoc * review comments * tests * Fix tests * Address review comments * Add initial tests * Add additional tests * Address review comments * Add tests for system tc handling * Re-add double quotes to javadoc config example * Address Charles's comment * Hardcode mobile slice to 0 for now
This is the first PR refactoring
SlicingManager
to support netcfg-based static QoS config for Aether 2.0.The PR is not functional. Merging this to the main branch will break SD-Fabric. The plan is to merge this PR and subsequent ones to the
qos-refactoring
feature branch, giving reviewers a chance to review changes incrementally. The feature branch will be later merged to main once all PRs have been reviewed and approved.At high level, we modify
SlicingManager
to assume a static allocation of queues to TCs. Queue allocation will soon be provided via netcfg.In more details, this PR includes the following changes:
TrafficClassDescription
class as a way to describe the configuration of a specific traffic class instance within a slice, including attributes such as queue ID, maximum rate, and guaranteed minimum rate.SlicingProviderService
interface.SlicingManager
and related tests.Future PRs will focus on:
NetworkConfigSlicingProvider
FabricUpfProgrammable
to obtain the mobile slice IDs from the netcfg (instead of hardcoding it)