Skip to content
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

T6790: QoS: Improve CAKE Policy #4173

Open
wants to merge 1 commit into
base: current
Choose a base branch
from
Open

Conversation

HollyGurza
Copy link
Contributor

@HollyGurza HollyGurza commented Oct 24, 2024

  • Fixed handling of flow isolation parameters.
  • Corrected support for nat and nonat in flow isolation.
  • Extended RTT values to cover the full range supported by tc.

Change Summary

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Code style update (formatting, renaming)
  • Refactoring (no functional changes)
  • Migration from an old Vyatta component to vyos-1x, please link to related PR inside obsoleted component
  • Other (please describe):

Related Task(s)

Related PR(s)

Component(s) name

Proposed changes

How to test

vyos@vyos# tc -d qdisc show dev eth1
qdisc fq_codel 0: root refcnt 2 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 64 
set qos interface eth1 egress 'cake_test'
set qos policy cake cake_test bandwidth '100%'
set qos policy cake cake_test description 'test cake policy'
commit

#  tc -d qdisc show dev eth1
qdisc cake 1: root refcnt 2 bandwidth 10Gbit diffserv3 triple-isolate nonat nowash no-ack-filter split-gso rtt 100ms raw overhead 0 

set qos policy cake cake_test flow-isolation host
commit

#  tc -d qdisc show dev eth1
qdisc cake 1: root refcnt 2 bandwidth 10Gbit diffserv3 hosts nonat nowash no-ack-filter split-gso rtt 100ms raw overhead 0

set qos policy cake cake_test flow-isolation-nat
commit

# tc -d qdisc show dev eth1
qdisc cake 1: root refcnt 2 bandwidth 10Gbit diffserv3 hosts nat nowash no-ack-filter split-gso rtt 100ms raw overhead 0 

set qos policy cake cake_test flow-isolation triple-isolate
commit

# tc -d qdisc show dev eth1
qdisc cake 1: root refcnt 2 bandwidth 10Gbit diffserv3 triple-isolate nat nowash no-ack-filter split-gso rtt 100ms raw overhead 0 

del qos policy cake cake_test flow-isolation-nat
commit

# tc -d qdisc show dev eth1
qdisc cake 1: root refcnt 2 bandwidth 10Gbit diffserv3 triple-isolate nonat nowash no-ack-filter split-gso rtt 100ms raw overhead 0 

Smoketest result

vyos@vyos:~$ python3 /usr/libexec/vyos/tests/smoke/cli/test_qos.py 
test_01_cake (__main__.TestQoS.test_01_cake) ... ok
test_02_drop_tail (__main__.TestQoS.test_02_drop_tail) ... ok
test_03_fair_queue (__main__.TestQoS.test_03_fair_queue) ... ok
test_04_fq_codel (__main__.TestQoS.test_04_fq_codel) ... ok
test_05_limiter (__main__.TestQoS.test_05_limiter) ... ok
test_06_network_emulator (__main__.TestQoS.test_06_network_emulator) ... ok
test_07_priority_queue (__main__.TestQoS.test_07_priority_queue) ... ok
test_08_random_detect (__main__.TestQoS.test_08_random_detect) ... ok
test_09_rate_control (__main__.TestQoS.test_09_rate_control) ... ok
test_10_round_robin (__main__.TestQoS.test_10_round_robin) ... ok
test_11_shaper (__main__.TestQoS.test_11_shaper) ... ok
test_12_shaper_with_red_queue (__main__.TestQoS.test_12_shaper_with_red_queue) ... ok
test_13_shaper_delete_only_rule (__main__.TestQoS.test_13_shaper_delete_only_rule) ... ok
test_14_policy_limiter_marked_traffic (__main__.TestQoS.test_14_policy_limiter_marked_traffic) ... ok
test_15_traffic_match_group (__main__.TestQoS.test_15_traffic_match_group) ... ok
test_16_wrong_traffic_match_group (__main__.TestQoS.test_16_wrong_traffic_match_group) ... ok
test_17_cake_updates (__main__.TestQoS.test_17_cake_updates) ... ok

----------------------------------------------------------------------
Ran 17 tests in 91.944s

OK

Checklist:

  • I have read the CONTRIBUTING document
  • I have linked this PR to one or more Phabricator Task(s)
  • I have run the components SMOKETESTS if applicable
  • My commit headlines contain a valid Task id
  • My change requires a change to the documentation
  • I have updated the documentation accordingly

- Fixed handling of flow isolation parameters.
- Corrected support for `nat` and `nonat` in flow isolation.
- Extended RTT values to cover the full range supported by `tc`.
Copy link

github-actions bot commented Oct 24, 2024

👍
No issues in PR Title / Commit Title

Copy link

CI integration ❌ failed!

Details

CI logs

  • CLI Smoketests (no interfaces) ❌ failed
  • CLI Smoketests (interfaces only) 👍 passed
  • Config tests 👍 passed
  • RAID1 tests 👍 passed
  • TPM tests 👍 passed

@@ -85,78 +85,67 @@
<children>
#include <include/generic-description.xml.i>
#include <include/qos/bandwidth.xml.i>
<node name="flow-isolation">
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Moving this from a node -> leafNode and thus loosing the ability to select multiple flow-isolation options should suffice for a migration script? Or am I missinterpreting the change?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Development

Successfully merging this pull request may close these issues.

2 participants