summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Poessinger <christian@poessinger.com>2022-04-06 20:09:31 +0200
committerChristian Poessinger <christian@poessinger.com>2022-04-07 10:28:33 +0200
commit0bf386cee9b09d2e1a220330d3662c6ca2642645 (patch)
tree01c16649af535465c88cced1121b9e564f499e6d
parent7581a5c6cbbc3f0e38ac69028b814252805d5c98 (diff)
downloadvyos-1x-0bf386cee9b09d2e1a220330d3662c6ca2642645.tar.gz
vyos-1x-0bf386cee9b09d2e1a220330d3662c6ca2642645.zip
qos: T4284: rename "traffic-policy" node to "qos policy"
"set traffic-policy" now becomes "set qos policy" "set interface ethernet eth0 traffic-policy" now bvecomes "set qos interface eth0"
-rw-r--r--Makefile3
-rw-r--r--interface-definitions/include/interface/traffic-policy.xml.i43
-rw-r--r--interface-definitions/include/interface/vif-s.xml.i2
-rw-r--r--interface-definitions/include/interface/vif.xml.i1
-rw-r--r--interface-definitions/interfaces-bonding.xml.in1
-rw-r--r--interface-definitions/interfaces-bridge.xml.in1
-rw-r--r--interface-definitions/interfaces-dummy.xml.in1
-rw-r--r--interface-definitions/interfaces-ethernet.xml.in1
-rw-r--r--interface-definitions/interfaces-geneve.xml.in1
-rw-r--r--interface-definitions/interfaces-input.xml.in1
-rw-r--r--interface-definitions/interfaces-l2tpv3.xml.in1
-rw-r--r--interface-definitions/interfaces-loopback.xml.in1
-rw-r--r--interface-definitions/interfaces-macsec.xml.in1
-rw-r--r--interface-definitions/interfaces-openvpn.xml.in1
-rw-r--r--interface-definitions/interfaces-pppoe.xml.in1
-rw-r--r--interface-definitions/interfaces-pseudo-ethernet.xml.in1
-rw-r--r--interface-definitions/interfaces-tunnel.xml.in1
-rw-r--r--interface-definitions/interfaces-vti.xml.in1
-rw-r--r--interface-definitions/interfaces-vxlan.xml.in1
-rw-r--r--interface-definitions/interfaces-wireguard.xml.in1
-rw-r--r--interface-definitions/interfaces-wireless.xml.in1
-rw-r--r--interface-definitions/interfaces-wwan.xml.in1
-rw-r--r--interface-definitions/qos.xml.in1148
-rwxr-xr-xsrc/conf_mode/qos.py47
24 files changed, 631 insertions, 631 deletions
diff --git a/Makefile b/Makefile
index 54f3892ba..dc1301100 100644
--- a/Makefile
+++ b/Makefile
@@ -31,9 +31,8 @@ interface_definitions: $(config_xml_obj)
rm -rf $(TMPL_DIR)/vpn/ipsec/remote-access/radius/source-address
# T4284 neq QoS implementation is not yet live
- find $(TMPL_DIR)/interfaces -name traffic-policy -type d -exec rm -rf {} \;
find $(TMPL_DIR)/interfaces -name redirect -type d -exec rm -rf {} \;
- rm -rf $(TMPL_DIR)/traffic-policy
+ rm -rf $(TMPL_DIR)/qos
rm -rf $(TMPL_DIR)/interfaces/input
# XXX: test if there are empty node.def files - this is not allowed as these
diff --git a/interface-definitions/include/interface/traffic-policy.xml.i b/interface-definitions/include/interface/traffic-policy.xml.i
deleted file mode 100644
index cd60b62a5..000000000
--- a/interface-definitions/include/interface/traffic-policy.xml.i
+++ /dev/null
@@ -1,43 +0,0 @@
-<!-- include start from interface/traffic-policy.xml.i -->
-<node name="traffic-policy">
- <properties>
- <help>Traffic-policy for interface</help>
- </properties>
- <children>
- <leafNode name="in">
- <properties>
- <help>Ingress traffic policy for interface</help>
- <completionHelp>
- <path>traffic-policy drop-tail</path>
- <path>traffic-policy fair-queue</path>
- <path>traffic-policy fq-codel</path>
- <path>traffic-policy limiter</path>
- <path>traffic-policy network-emulator</path>
- <path>traffic-policy priority-queue</path>
- <path>traffic-policy random-detect</path>
- <path>traffic-policy rate-control</path>
- <path>traffic-policy round-robin</path>
- <path>traffic-policy shaper</path>
- <path>traffic-policy shaper-hfsc</path>
- </completionHelp>
- <valueHelp>
- <format>txt</format>
- <description>Policy name</description>
- </valueHelp>
- </properties>
- </leafNode>
- <leafNode name="out">
- <properties>
- <help>Egress traffic policy for interface</help>
- <completionHelp>
- <path>traffic-policy</path>
- </completionHelp>
- <valueHelp>
- <format>txt</format>
- <description>Policy name</description>
- </valueHelp>
- </properties>
- </leafNode>
- </children>
-</node>
-<!-- include end --> \ No newline at end of file
diff --git a/interface-definitions/include/interface/vif-s.xml.i b/interface-definitions/include/interface/vif-s.xml.i
index 40a87e3d3..3b305618e 100644
--- a/interface-definitions/include/interface/vif-s.xml.i
+++ b/interface-definitions/include/interface/vif-s.xml.i
@@ -67,14 +67,12 @@
#include <include/interface/mirror.xml.i>
#include <include/interface/mtu-68-16000.xml.i>
#include <include/interface/redirect.xml.i>
- #include <include/interface/traffic-policy.xml.i>
#include <include/interface/vrf.xml.i>
#include <include/interface/interface-firewall-vif-c.xml.i>
#include <include/interface/interface-policy-vif-c.xml.i>
</children>
</tagNode>
#include <include/interface/redirect.xml.i>
- #include <include/interface/traffic-policy.xml.i>
#include <include/interface/vrf.xml.i>
</children>
</tagNode>
diff --git a/interface-definitions/include/interface/vif.xml.i b/interface-definitions/include/interface/vif.xml.i
index 615101664..4e7f9b3c2 100644
--- a/interface-definitions/include/interface/vif.xml.i
+++ b/interface-definitions/include/interface/vif.xml.i
@@ -52,7 +52,6 @@
#include <include/interface/mirror.xml.i>
#include <include/interface/mtu-68-16000.xml.i>
#include <include/interface/redirect.xml.i>
- #include <include/interface/traffic-policy.xml.i>
#include <include/interface/vrf.xml.i>
</children>
</tagNode>
diff --git a/interface-definitions/interfaces-bonding.xml.in b/interface-definitions/interfaces-bonding.xml.in
index 20ece5137..5ae67a672 100644
--- a/interface-definitions/interfaces-bonding.xml.in
+++ b/interface-definitions/interfaces-bonding.xml.in
@@ -208,7 +208,6 @@
</properties>
</leafNode>
#include <include/interface/redirect.xml.i>
- #include <include/interface/traffic-policy.xml.i>
#include <include/interface/vif-s.xml.i>
#include <include/interface/vif.xml.i>
#include <include/interface/xdp.xml.i>
diff --git a/interface-definitions/interfaces-bridge.xml.in b/interface-definitions/interfaces-bridge.xml.in
index 6957067cd..be4c92583 100644
--- a/interface-definitions/interfaces-bridge.xml.in
+++ b/interface-definitions/interfaces-bridge.xml.in
@@ -211,7 +211,6 @@
</properties>
</leafNode>
#include <include/interface/redirect.xml.i>
- #include <include/interface/traffic-policy.xml.i>
#include <include/interface/vif.xml.i>
</children>
</tagNode>
diff --git a/interface-definitions/interfaces-dummy.xml.in b/interface-definitions/interfaces-dummy.xml.in
index 988d87502..7f9ae90e5 100644
--- a/interface-definitions/interfaces-dummy.xml.in
+++ b/interface-definitions/interfaces-dummy.xml.in
@@ -32,7 +32,6 @@
#include <include/interface/mirror.xml.i>
#include <include/interface/netns.xml.i>
#include <include/interface/redirect.xml.i>
- #include <include/interface/traffic-policy.xml.i>
#include <include/interface/vrf.xml.i>
</children>
</tagNode>
diff --git a/interface-definitions/interfaces-ethernet.xml.in b/interface-definitions/interfaces-ethernet.xml.in
index 7d28912c0..7fa07e9ec 100644
--- a/interface-definitions/interfaces-ethernet.xml.in
+++ b/interface-definitions/interfaces-ethernet.xml.in
@@ -197,7 +197,6 @@
</children>
</node>
#include <include/interface/redirect.xml.i>
- #include <include/interface/traffic-policy.xml.i>
#include <include/interface/vif-s.xml.i>
#include <include/interface/vif.xml.i>
#include <include/interface/vrf.xml.i>
diff --git a/interface-definitions/interfaces-geneve.xml.in b/interface-definitions/interfaces-geneve.xml.in
index 5f2c6bc05..fa5a78be5 100644
--- a/interface-definitions/interfaces-geneve.xml.in
+++ b/interface-definitions/interfaces-geneve.xml.in
@@ -52,7 +52,6 @@
</node>
#include <include/interface/mirror.xml.i>
#include <include/interface/redirect.xml.i>
- #include <include/interface/traffic-policy.xml.i>
#include <include/interface/tunnel-remote.xml.i>
#include <include/vni.xml.i>
</children>
diff --git a/interface-definitions/interfaces-input.xml.in b/interface-definitions/interfaces-input.xml.in
index f2eb01c58..2164bfa4e 100644
--- a/interface-definitions/interfaces-input.xml.in
+++ b/interface-definitions/interfaces-input.xml.in
@@ -22,7 +22,6 @@
#include <include/interface/interface-firewall.xml.i>
#include <include/interface/interface-policy.xml.i>
#include <include/interface/redirect.xml.i>
- #include <include/interface/traffic-policy.xml.i>
</children>
</tagNode>
</children>
diff --git a/interface-definitions/interfaces-l2tpv3.xml.in b/interface-definitions/interfaces-l2tpv3.xml.in
index 0dcabf7a0..1f23a89a5 100644
--- a/interface-definitions/interfaces-l2tpv3.xml.in
+++ b/interface-definitions/interfaces-l2tpv3.xml.in
@@ -125,7 +125,6 @@
</constraint>
</properties>
</leafNode>
- #include <include/interface/traffic-policy.xml.i>
#include <include/interface/vrf.xml.i>
</children>
</tagNode>
diff --git a/interface-definitions/interfaces-loopback.xml.in b/interface-definitions/interfaces-loopback.xml.in
index 1e093d95b..7ac0545c6 100644
--- a/interface-definitions/interfaces-loopback.xml.in
+++ b/interface-definitions/interfaces-loopback.xml.in
@@ -28,7 +28,6 @@
</node>
#include <include/interface/mirror.xml.i>
#include <include/interface/redirect.xml.i>
- #include <include/interface/traffic-policy.xml.i>
</children>
</tagNode>
</children>
diff --git a/interface-definitions/interfaces-macsec.xml.in b/interface-definitions/interfaces-macsec.xml.in
index fbdd1562a..cb3c489aa 100644
--- a/interface-definitions/interfaces-macsec.xml.in
+++ b/interface-definitions/interfaces-macsec.xml.in
@@ -124,7 +124,6 @@
</leafNode>
#include <include/source-interface-ethernet.xml.i>
#include <include/interface/redirect.xml.i>
- #include <include/interface/traffic-policy.xml.i>
#include <include/interface/vrf.xml.i>
</children>
</tagNode>
diff --git a/interface-definitions/interfaces-openvpn.xml.in b/interface-definitions/interfaces-openvpn.xml.in
index 761f8bcad..c917b9312 100644
--- a/interface-definitions/interfaces-openvpn.xml.in
+++ b/interface-definitions/interfaces-openvpn.xml.in
@@ -818,7 +818,6 @@
</properties>
</leafNode>
#include <include/interface/redirect.xml.i>
- #include <include/interface/traffic-policy.xml.i>
#include <include/interface/vrf.xml.i>
</children>
</tagNode>
diff --git a/interface-definitions/interfaces-pppoe.xml.in b/interface-definitions/interfaces-pppoe.xml.in
index adf5f4040..3a0b7a40c 100644
--- a/interface-definitions/interfaces-pppoe.xml.in
+++ b/interface-definitions/interfaces-pppoe.xml.in
@@ -135,7 +135,6 @@
</properties>
</leafNode>
#include <include/interface/redirect.xml.i>
- #include <include/interface/traffic-policy.xml.i>
#include <include/interface/vrf.xml.i>
</children>
</tagNode>
diff --git a/interface-definitions/interfaces-pseudo-ethernet.xml.in b/interface-definitions/interfaces-pseudo-ethernet.xml.in
index aed2052f5..5f5e9fdef 100644
--- a/interface-definitions/interfaces-pseudo-ethernet.xml.in
+++ b/interface-definitions/interfaces-pseudo-ethernet.xml.in
@@ -61,7 +61,6 @@
</leafNode>
#include <include/interface/mtu-68-16000.xml.i>
#include <include/interface/redirect.xml.i>
- #include <include/interface/traffic-policy.xml.i>
#include <include/interface/vif-s.xml.i>
#include <include/interface/vif.xml.i>
</children>
diff --git a/interface-definitions/interfaces-tunnel.xml.in b/interface-definitions/interfaces-tunnel.xml.in
index b31f22552..42ec62775 100644
--- a/interface-definitions/interfaces-tunnel.xml.in
+++ b/interface-definitions/interfaces-tunnel.xml.in
@@ -290,7 +290,6 @@
</node>
#include <include/interface/vrf.xml.i>
#include <include/interface/redirect.xml.i>
- #include <include/interface/traffic-policy.xml.i>
</children>
</tagNode>
</children>
diff --git a/interface-definitions/interfaces-vti.xml.in b/interface-definitions/interfaces-vti.xml.in
index d66fc952e..5893e4c4c 100644
--- a/interface-definitions/interfaces-vti.xml.in
+++ b/interface-definitions/interfaces-vti.xml.in
@@ -36,7 +36,6 @@
#include <include/interface/mtu-68-16000.xml.i>
#include <include/interface/mirror.xml.i>
#include <include/interface/redirect.xml.i>
- #include <include/interface/traffic-policy.xml.i>
#include <include/interface/vrf.xml.i>
#include <include/interface/interface-firewall.xml.i>
#include <include/interface/interface-policy.xml.i>
diff --git a/interface-definitions/interfaces-vxlan.xml.in b/interface-definitions/interfaces-vxlan.xml.in
index b1a2dfaec..9747b1816 100644
--- a/interface-definitions/interfaces-vxlan.xml.in
+++ b/interface-definitions/interfaces-vxlan.xml.in
@@ -101,7 +101,6 @@
#include <include/source-interface.xml.i>
#include <include/interface/tunnel-remote-multi.xml.i>
#include <include/interface/redirect.xml.i>
- #include <include/interface/traffic-policy.xml.i>
#include <include/interface/vrf.xml.i>
#include <include/vni.xml.i>
</children>
diff --git a/interface-definitions/interfaces-wireguard.xml.in b/interface-definitions/interfaces-wireguard.xml.in
index 51565cfe6..eb0892f07 100644
--- a/interface-definitions/interfaces-wireguard.xml.in
+++ b/interface-definitions/interfaces-wireguard.xml.in
@@ -121,7 +121,6 @@
</children>
</tagNode>
#include <include/interface/redirect.xml.i>
- #include <include/interface/traffic-policy.xml.i>
#include <include/interface/vrf.xml.i>
</children>
</tagNode>
diff --git a/interface-definitions/interfaces-wireless.xml.in b/interface-definitions/interfaces-wireless.xml.in
index a16a7841e..db01657eb 100644
--- a/interface-definitions/interfaces-wireless.xml.in
+++ b/interface-definitions/interfaces-wireless.xml.in
@@ -783,7 +783,6 @@
<defaultValue>monitor</defaultValue>
</leafNode>
#include <include/interface/redirect.xml.i>
- #include <include/interface/traffic-policy.xml.i>
#include <include/interface/vif.xml.i>
#include <include/interface/vif-s.xml.i>
</children>
diff --git a/interface-definitions/interfaces-wwan.xml.in b/interface-definitions/interfaces-wwan.xml.in
index 33bc0cb3d..3cb1645c4 100644
--- a/interface-definitions/interfaces-wwan.xml.in
+++ b/interface-definitions/interfaces-wwan.xml.in
@@ -42,7 +42,6 @@
#include <include/interface/interface-firewall.xml.i>
#include <include/interface/interface-policy.xml.i>
#include <include/interface/redirect.xml.i>
- #include <include/interface/traffic-policy.xml.i>
#include <include/interface/vrf.xml.i>
</children>
</tagNode>
diff --git a/interface-definitions/qos.xml.in b/interface-definitions/qos.xml.in
index d4468543c..e8f575a1e 100644
--- a/interface-definitions/qos.xml.in
+++ b/interface-definitions/qos.xml.in
@@ -1,721 +1,789 @@
<?xml version="1.0"?>
<interfaceDefinition>
- <node name="traffic-policy" owner="${vyos_conf_scripts_dir}/qos.py">
+ <node name="qos" owner="${vyos_conf_scripts_dir}/qos.py">
<properties>
- <help>Quality of Service (QOS) policy type</help>
- <priority>900</priority>
+ <help>Quality of Service (QoS)</help>
</properties>
<children>
- <tagNode name="drop-tail">
+ <tagNode name="interface">
<properties>
- <help>Packet limited First In, First Out queue</help>
+ <help>Interface to apply QoS policy</help>
+ <completionHelp>
+ <script>${vyos_completion_dir}/list_interfaces.py</script>
+ </completionHelp>
<valueHelp>
<format>txt</format>
- <description>Policy name</description>
+ <description>Interface name</description>
</valueHelp>
<constraint>
- <regex>[[:alnum:]][-_[:alnum:]]*</regex>
+ <validator name="interface-name"/>
</constraint>
- <constraintErrorMessage>Only alpha-numeric policy name allowed</constraintErrorMessage>
</properties>
<children>
- #include <include/generic-description.xml.i>
- #include <include/qos/queue-limit-1-4294967295.xml.i>
- </children>
- </tagNode>
- <tagNode name="fair-queue">
- <properties>
- <help>Stochastic Fairness Queueing</help>
- <valueHelp>
- <format>txt</format>
- <description>Policy name</description>
- </valueHelp>
- <constraint>
- <regex>[[:alnum:]][-_[:alnum:]]*</regex>
- </constraint>
- <constraintErrorMessage>Only alpha-numeric policy name allowed</constraintErrorMessage>
- </properties>
- <children>
- #include <include/generic-description.xml.i>
- <leafNode name="hash-interval">
+ <leafNode name="ingress">
<properties>
- <help>Interval in seconds for queue algorithm perturbation</help>
- <valueHelp>
- <format>u32:0</format>
- <description>No perturbation</description>
- </valueHelp>
+ <help>Interface ingress traffic policy</help>
+ <completionHelp>
+ <path>traffic-policy drop-tail</path>
+ <path>traffic-policy fair-queue</path>
+ <path>traffic-policy fq-codel</path>
+ <path>traffic-policy limiter</path>
+ <path>traffic-policy network-emulator</path>
+ <path>traffic-policy priority-queue</path>
+ <path>traffic-policy random-detect</path>
+ <path>traffic-policy rate-control</path>
+ <path>traffic-policy round-robin</path>
+ <path>traffic-policy shaper</path>
+ <path>traffic-policy shaper-hfsc</path>
+ </completionHelp>
<valueHelp>
- <format>u32:1-127</format>
- <description>Interval in seconds for queue algorithm perturbation (advised: 10)</description>
+ <format>txt</format>
+ <description>QoS Policy name</description>
</valueHelp>
- <constraint>
- <validator name="numeric" argument="--range 0-127"/>
- </constraint>
- <constraintErrorMessage>Interval must be in range 0 to 127</constraintErrorMessage>
</properties>
- <defaultValue>0</defaultValue>
</leafNode>
- <leafNode name="queue-limit">
+ <leafNode name="egress">
<properties>
- <help>Upper limit of the SFQ</help>
+ <help>Interface egress traffic policy</help>
+ <completionHelp>
+ <path>traffic-policy drop-tail</path>
+ <path>traffic-policy fair-queue</path>
+ <path>traffic-policy fq-codel</path>
+ <path>traffic-policy limiter</path>
+ <path>traffic-policy network-emulator</path>
+ <path>traffic-policy priority-queue</path>
+ <path>traffic-policy random-detect</path>
+ <path>traffic-policy rate-control</path>
+ <path>traffic-policy round-robin</path>
+ <path>traffic-policy shaper</path>
+ <path>traffic-policy shaper-hfsc</path>
+ </completionHelp>
<valueHelp>
- <format>u32:2-127</format>
- <description>Queue size in packets</description>
+ <format>txt</format>
+ <description>QoS Policy name</description>
</valueHelp>
- <constraint>
- <validator name="numeric" argument="--range 2-127"/>
- </constraint>
- <constraintErrorMessage>Queue limit must greater than 1 and less than 128</constraintErrorMessage>
</properties>
- <defaultValue>127</defaultValue>
</leafNode>
</children>
</tagNode>
- <tagNode name="fq-codel">
+ <node name="policy" owner="${vyos_conf_scripts_dir}/qos.py">
<properties>
- <help>Fair Queuing Controlled Delay</help>
- <valueHelp>
- <format>txt</format>
- <description>Policy name</description>
- </valueHelp>
- <constraint>
- <regex>[[:alnum:]][-_[:alnum:]]*</regex>
- </constraint>
- <constraintErrorMessage>Only alpha-numeric policy name allowed</constraintErrorMessage>
+ <help>Service Policy definitions</help>
+ <priority>900</priority>
</properties>
<children>
- #include <include/generic-description.xml.i>
- #include <include/qos/codel-quantum.xml.i>
- #include <include/qos/flows.xml.i>
- #include <include/qos/interval.xml.i>
- #include <include/qos/queue-limit-2-10999.xml.i>
- #include <include/qos/target.xml.i>
- </children>
- </tagNode>
- <tagNode name="limiter">
- <properties>
- <help>Traffic input limiting policy</help>
- <valueHelp>
- <format>txt</format>
- <description>Policy name</description>
- </valueHelp>
- <constraint>
- <regex>[[:alnum:]][-_[:alnum:]]*</regex>
- </constraint>
- <constraintErrorMessage>Only alpha-numeric policy name allowed</constraintErrorMessage>
- </properties>
- <children>
- <tagNode name="class">
+ <tagNode name="drop-tail">
<properties>
- <help>Class ID</help>
+ <help>Packet limited First In, First Out queue</help>
<valueHelp>
- <format>u32:1-4090</format>
- <description>Class Identifier</description>
+ <format>txt</format>
+ <description>Policy name</description>
</valueHelp>
<constraint>
- <validator name="numeric" argument="--range 1-4090"/>
+ <regex>[[:alnum:]][-_[:alnum:]]*</regex>
</constraint>
- <constraintErrorMessage>Class identifier must be between 1 and 4090</constraintErrorMessage>
+ <constraintErrorMessage>Only alpha-numeric policy name allowed</constraintErrorMessage>
+ </properties>
+ <children>
+ #include <include/generic-description.xml.i>
+ #include <include/qos/queue-limit-1-4294967295.xml.i>
+ </children>
+ </tagNode>
+ <tagNode name="fair-queue">
+ <properties>
+ <help>Stochastic Fairness Queueing</help>
+ <valueHelp>
+ <format>txt</format>
+ <description>Policy name</description>
+ </valueHelp>
+ <constraint>
+ <regex>[[:alnum:]][-_[:alnum:]]*</regex>
+ </constraint>
+ <constraintErrorMessage>Only alpha-numeric policy name allowed</constraintErrorMessage>
</properties>
<children>
- #include <include/qos/bandwidth.xml.i>
- #include <include/qos/burst.xml.i>
#include <include/generic-description.xml.i>
- #include <include/qos/match.xml.i>
- <leafNode name="priority">
+ <leafNode name="hash-interval">
+ <properties>
+ <help>Interval in seconds for queue algorithm perturbation</help>
+ <valueHelp>
+ <format>u32:0</format>
+ <description>No perturbation</description>
+ </valueHelp>
+ <valueHelp>
+ <format>u32:1-127</format>
+ <description>Interval in seconds for queue algorithm perturbation (advised: 10)</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 0-127"/>
+ </constraint>
+ <constraintErrorMessage>Interval must be in range 0 to 127</constraintErrorMessage>
+ </properties>
+ <defaultValue>0</defaultValue>
+ </leafNode>
+ <leafNode name="queue-limit">
<properties>
- <help>Priority for rule evaluation</help>
+ <help>Upper limit of the SFQ</help>
<valueHelp>
- <format>u32:0-20</format>
- <description>Priority for match rule evaluation</description>
+ <format>u32:2-127</format>
+ <description>Queue size in packets</description>
</valueHelp>
<constraint>
- <validator name="numeric" argument="--range 0-20"/>
+ <validator name="numeric" argument="--range 2-127"/>
</constraint>
- <constraintErrorMessage>Priority must be between 0 and 20</constraintErrorMessage>
+ <constraintErrorMessage>Queue limit must greater than 1 and less than 128</constraintErrorMessage>
</properties>
- <defaultValue>20</defaultValue>
+ <defaultValue>127</defaultValue>
</leafNode>
</children>
</tagNode>
- <node name="default">
- <properties>
- <help>Default policy</help>
- </properties>
- <children>
- #include <include/qos/bandwidth.xml.i>
- #include <include/qos/burst.xml.i>
- </children>
- </node>
- #include <include/generic-description.xml.i>
- </children>
- </tagNode>
- <tagNode name="network-emulator">
- <properties>
- <help>Network emulator policy</help>
- <valueHelp>
- <format>txt</format>
- <description>Policy name</description>
- </valueHelp>
- <constraint>
- <regex>[[:alnum:]][-_[:alnum:]]*</regex>
- </constraint>
- <constraintErrorMessage>Only alpha-numeric policy name allowed</constraintErrorMessage>
- </properties>
- <children>
- #include <include/qos/bandwidth.xml.i>
- #include <include/qos/burst.xml.i>
- #include <include/generic-description.xml.i>
- <leafNode name="network-delay">
- <properties>
- <help>Adds delay to packets outgoing to chosen network interface</help>
- <valueHelp>
- <format>&lt;number&gt;</format>
- <description>Time in milliseconds</description>
- </valueHelp>
- <constraint>
- <validator name="numeric" argument="--range 0-65535"/>
- </constraint>
- <constraintErrorMessage>Priority must be between 0 and 65535</constraintErrorMessage>
- </properties>
- </leafNode>
- <leafNode name="packet-corruption">
- <properties>
- <help>Introducing error in a random position for chosen percent of packets</help>
- <valueHelp>
- <format>&lt;number&gt;</format>
- <description>Percentage of packets affected</description>
- </valueHelp>
- <constraint>
- <validator name="numeric" argument="--range 0-100"/>
- </constraint>
- <constraintErrorMessage>Priority must be between 0 and 100</constraintErrorMessage>
- </properties>
- </leafNode>
- <leafNode name="packet-loss">
- <properties>
- <help>Add independent loss probability to the packets outgoing to chosen network interface</help>
- <valueHelp>
- <format>&lt;number&gt;</format>
- <description>Percentage of packets affected</description>
- </valueHelp>
- <constraint>
- <validator name="numeric" argument="--range 0-100"/>
- </constraint>
- <constraintErrorMessage>Must be between 0 and 100</constraintErrorMessage>
- </properties>
- </leafNode>
- <leafNode name="packet-loss">
+ <tagNode name="fq-codel">
<properties>
- <help>Add independent loss probability to the packets outgoing to chosen network interface</help>
+ <help>Fair Queuing Controlled Delay</help>
<valueHelp>
- <format>&lt;number&gt;</format>
- <description>Percentage of packets affected</description>
+ <format>txt</format>
+ <description>Policy name</description>
</valueHelp>
<constraint>
- <validator name="numeric" argument="--range 0-100"/>
+ <regex>[[:alnum:]][-_[:alnum:]]*</regex>
</constraint>
- <constraintErrorMessage>Must be between 0 and 100</constraintErrorMessage>
- </properties>
- </leafNode>
- <leafNode name="packet-loss">
- <properties>
- <help>Packet reordering percentage</help>
- <valueHelp>
- <format>&lt;number&gt;</format>
- <description>Percentage of packets affected</description>
- </valueHelp>
- <constraint>
- <validator name="numeric" argument="--range 0-100"/>
- </constraint>
- <constraintErrorMessage>Must be between 0 and 100</constraintErrorMessage>
- </properties>
- </leafNode>
- #include <include/qos/queue-limit-1-4294967295.xml.i>
- </children>
- </tagNode>
- <tagNode name="priority-queue">
- <properties>
- <help>Priority queuing based policy</help>
- <valueHelp>
- <format>txt</format>
- <description>Policy name</description>
- </valueHelp>
- <constraint>
- <regex>[[:alnum:]][-_[:alnum:]]*</regex>
- </constraint>
- <constraintErrorMessage>Only alpha-numeric policy name allowed</constraintErrorMessage>
- </properties>
- <children>
- <tagNode name="class">
- <properties>
- <help>Class Handle</help>
- <valueHelp>
- <format>u32:1-7</format>
- <description>Priority</description>
- </valueHelp>
- <constraint>
- <validator name="numeric" argument="--range 1-7"/>
- </constraint>
- <constraintErrorMessage>Class handle must be between 1 and 7</constraintErrorMessage>
+ <constraintErrorMessage>Only alpha-numeric policy name allowed</constraintErrorMessage>
</properties>
<children>
#include <include/generic-description.xml.i>
#include <include/qos/codel-quantum.xml.i>
#include <include/qos/flows.xml.i>
#include <include/qos/interval.xml.i>
- #include <include/qos/match.xml.i>
#include <include/qos/queue-limit-2-10999.xml.i>
#include <include/qos/target.xml.i>
- #include <include/qos/queue-type.xml.i>
</children>
</tagNode>
- <node name="default">
+ <tagNode name="limiter">
<properties>
- <help>Default policy</help>
+ <help>Traffic input limiting policy</help>
+ <valueHelp>
+ <format>txt</format>
+ <description>Policy name</description>
+ </valueHelp>
+ <constraint>
+ <regex>[[:alnum:]][-_[:alnum:]]*</regex>
+ </constraint>
+ <constraintErrorMessage>Only alpha-numeric policy name allowed</constraintErrorMessage>
</properties>
<children>
+ <tagNode name="class">
+ <properties>
+ <help>Class ID</help>
+ <valueHelp>
+ <format>u32:1-4090</format>
+ <description>Class Identifier</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 1-4090"/>
+ </constraint>
+ <constraintErrorMessage>Class identifier must be between 1 and 4090</constraintErrorMessage>
+ </properties>
+ <children>
+ #include <include/qos/bandwidth.xml.i>
+ #include <include/qos/burst.xml.i>
+ #include <include/generic-description.xml.i>
+ #include <include/qos/match.xml.i>
+ <leafNode name="priority">
+ <properties>
+ <help>Priority for rule evaluation</help>
+ <valueHelp>
+ <format>u32:0-20</format>
+ <description>Priority for match rule evaluation</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 0-20"/>
+ </constraint>
+ <constraintErrorMessage>Priority must be between 0 and 20</constraintErrorMessage>
+ </properties>
+ <defaultValue>20</defaultValue>
+ </leafNode>
+ </children>
+ </tagNode>
+ <node name="default">
+ <properties>
+ <help>Default policy</help>
+ </properties>
+ <children>
+ #include <include/qos/bandwidth.xml.i>
+ #include <include/qos/burst.xml.i>
+ </children>
+ </node>
#include <include/generic-description.xml.i>
- #include <include/qos/codel-quantum.xml.i>
- #include <include/qos/flows.xml.i>
- #include <include/qos/interval.xml.i>
- #include <include/qos/queue-limit-2-10999.xml.i>
- #include <include/qos/target.xml.i>
- #include <include/qos/queue-type.xml.i>
</children>
- </node>
- #include <include/generic-description.xml.i>
- </children>
- </tagNode>
- <tagNode name="random-detect">
- <properties>
- <help>Priority queuing based policy</help>
- <valueHelp>
- <format>txt</format>
- <description>Policy name</description>
- </valueHelp>
- <constraint>
- <regex>[[:alnum:]][-_[:alnum:]]*</regex>
- </constraint>
- <constraintErrorMessage>Only alpha-numeric policy name allowed</constraintErrorMessage>
- </properties>
- <children>
- #include <include/qos/bandwidth.xml.i>
- <leafNode name="bandwidth">
- <defaultValue>auto</defaultValue>
- </leafNode>
- #include <include/generic-description.xml.i>
- <tagNode name="precedence">
+ </tagNode>
+ <tagNode name="network-emulator">
<properties>
- <help>IP precedence</help>
+ <help>Network emulator policy</help>
<valueHelp>
- <format>u32:0-7</format>
- <description>IP precedence value</description>
+ <format>txt</format>
+ <description>Policy name</description>
</valueHelp>
<constraint>
- <validator name="numeric" argument="--range 0-7"/>
+ <regex>[[:alnum:]][-_[:alnum:]]*</regex>
</constraint>
- <constraintErrorMessage>IP precedence value must be between 0 and 7</constraintErrorMessage>
+ <constraintErrorMessage>Only alpha-numeric policy name allowed</constraintErrorMessage>
</properties>
<children>
- #include <include/qos/queue-limit-1-4294967295.xml.i>
- <leafNode name="average-packet">
+ #include <include/qos/bandwidth.xml.i>
+ #include <include/qos/burst.xml.i>
+ #include <include/generic-description.xml.i>
+ <leafNode name="network-delay">
<properties>
- <help>Average packet size (bytes)</help>
+ <help>Adds delay to packets outgoing to chosen network interface</help>
<valueHelp>
- <format>u32:16-10240</format>
- <description>Average packet size in bytes</description>
+ <format>&lt;number&gt;</format>
+ <description>Time in milliseconds</description>
</valueHelp>
<constraint>
- <validator name="numeric" argument="--range 0-100"/>
+ <validator name="numeric" argument="--range 0-65535"/>
</constraint>
- <constraintErrorMessage>Average packet size must be between 16 and 10240</constraintErrorMessage>
+ <constraintErrorMessage>Priority must be between 0 and 65535</constraintErrorMessage>
</properties>
- <defaultValue>1024</defaultValue>
</leafNode>
- <leafNode name="mark-probability">
+ <leafNode name="packet-corruption">
<properties>
- <help>Mark probability for this precedence</help>
+ <help>Introducing error in a random position for chosen percent of packets</help>
<valueHelp>
<format>&lt;number&gt;</format>
- <description>Numeric value (1/N)</description>
+ <description>Percentage of packets affected</description>
</valueHelp>
<constraint>
- <validator name="numeric" argument="--positive"/>
+ <validator name="numeric" argument="--range 0-100"/>
</constraint>
- <constraintErrorMessage>Mark probability must be greater than 0</constraintErrorMessage>
+ <constraintErrorMessage>Priority must be between 0 and 100</constraintErrorMessage>
</properties>
</leafNode>
- <leafNode name="maximum-threshold">
+ <leafNode name="packet-loss">
<properties>
- <help>Maximum threshold for random detection</help>
+ <help>Add independent loss probability to the packets outgoing to chosen network interface</help>
<valueHelp>
- <format>u32:0-4096</format>
- <description>Maximum Threshold in packets</description>
+ <format>&lt;number&gt;</format>
+ <description>Percentage of packets affected</description>
</valueHelp>
<constraint>
- <validator name="numeric" argument="--range 0-4096"/>
+ <validator name="numeric" argument="--range 0-100"/>
</constraint>
- <constraintErrorMessage>Threshold must be between 0 and 4096</constraintErrorMessage>
+ <constraintErrorMessage>Must be between 0 and 100</constraintErrorMessage>
</properties>
</leafNode>
- <leafNode name="minimum-threshold">
+ <leafNode name="packet-loss">
<properties>
- <help>Minimum threshold for random detection</help>
+ <help>Add independent loss probability to the packets outgoing to chosen network interface</help>
<valueHelp>
- <format>u32:0-4096</format>
- <description>Maximum Threshold in packets</description>
+ <format>&lt;number&gt;</format>
+ <description>Percentage of packets affected</description>
</valueHelp>
<constraint>
- <validator name="numeric" argument="--range 0-4096"/>
+ <validator name="numeric" argument="--range 0-100"/>
</constraint>
- <constraintErrorMessage>Threshold must be between 0 and 4096</constraintErrorMessage>
+ <constraintErrorMessage>Must be between 0 and 100</constraintErrorMessage>
</properties>
</leafNode>
- </children>
- </tagNode>
- </children>
- </tagNode>
- <tagNode name="rate-control">
- <properties>
- <help>Rate limiting policy (Token Bucket Filter)</help>
- <valueHelp>
- <format>txt</format>
- <description>Policy name</description>
- </valueHelp>
- <constraint>
- <regex>[[:alnum:]][-_[:alnum:]]*</regex>
- </constraint>
- <constraintErrorMessage>Only alpha-numeric policy name allowed</constraintErrorMessage>
- </properties>
- <children>
- #include <include/qos/bandwidth.xml.i>
- #include <include/generic-description.xml.i>
- #include <include/qos/burst.xml.i>
- <leafNode name="latency">
- <properties>
- <help>Maximum latency</help>
- <valueHelp>
- <format>&lt;number&gt;</format>
- <description>Time in milliseconds</description>
- </valueHelp>
- <constraint>
- <validator name="numeric" argument="--range 0-4096"/>
- </constraint>
- <constraintErrorMessage>Threshold must be between 0 and 4096</constraintErrorMessage>
- </properties>
- <defaultValue>50</defaultValue>
- </leafNode>
- </children>
- </tagNode>
- <tagNode name="round-robin">
- <properties>
- <help>Round-Robin based policy</help>
- <valueHelp>
- <format>txt</format>
- <description>Policy name</description>
- </valueHelp>
- <constraint>
- <regex>[[:alnum:]][-_[:alnum:]]*</regex>
- </constraint>
- <constraintErrorMessage>Only alpha-numeric policy name allowed</constraintErrorMessage>
- </properties>
- <children>
- #include <include/generic-description.xml.i>
- <tagNode name="class">
- <properties>
- <help>Class ID</help>
- <valueHelp>
- <format>u32:1-4095</format>
- <description>Class Identifier</description>
- </valueHelp>
- <constraint>
- <validator name="numeric" argument="--range 1-4095"/>
- </constraint>
- <constraintErrorMessage>Class identifier must be between 1 and 4095</constraintErrorMessage>
- </properties>
- <children>
- #include <include/qos/codel-quantum.xml.i>
- #include <include/generic-description.xml.i>
- #include <include/qos/flows.xml.i>
- #include <include/qos/interval.xml.i>
- #include <include/qos/match.xml.i>
- <leafNode name="quantum">
+ <leafNode name="packet-loss">
<properties>
- <help>Packet scheduling quantum</help>
+ <help>Packet reordering percentage</help>
<valueHelp>
- <format>u32:1-4294967295</format>
- <description>Packet scheduling quantum (bytes)</description>
+ <format>&lt;number&gt;</format>
+ <description>Percentage of packets affected</description>
</valueHelp>
<constraint>
- <validator name="numeric" argument="--range 1-4294967295"/>
+ <validator name="numeric" argument="--range 0-100"/>
</constraint>
- <constraintErrorMessage>Quantum must be in range 1 to 4294967295</constraintErrorMessage>
+ <constraintErrorMessage>Must be between 0 and 100</constraintErrorMessage>
</properties>
</leafNode>
#include <include/qos/queue-limit-1-4294967295.xml.i>
- #include <include/qos/queue-type.xml.i>
- #include <include/qos/target.xml.i>
</children>
</tagNode>
- </children>
- </tagNode>
- <tagNode name="shaper-hfsc">
- <properties>
- <help>Hierarchical Fair Service Curve's policy</help>
- <valueHelp>
- <format>txt</format>
- <description>Policy name</description>
- </valueHelp>
- <constraint>
- <regex>[[:alnum:]][-_[:alnum:]]*</regex>
- </constraint>
- <constraintErrorMessage>Only alpha-numeric policy name allowed</constraintErrorMessage>
- </properties>
- <children>
- #include <include/qos/bandwidth.xml.i>
- <leafNode name="bandwidth">
- <defaultValue>auto</defaultValue>
- </leafNode>
- #include <include/generic-description.xml.i>
- <tagNode name="class">
+ <tagNode name="priority-queue">
<properties>
- <help>Class ID</help>
+ <help>Priority queuing based policy</help>
<valueHelp>
- <format>u32:1-4095</format>
- <description>Class Identifier</description>
+ <format>txt</format>
+ <description>Policy name</description>
</valueHelp>
<constraint>
- <validator name="numeric" argument="--range 1-4095"/>
+ <regex>[[:alnum:]][-_[:alnum:]]*</regex>
</constraint>
- <constraintErrorMessage>Class identifier must be between 1 and 4095</constraintErrorMessage>
+ <constraintErrorMessage>Only alpha-numeric policy name allowed</constraintErrorMessage>
</properties>
<children>
- #include <include/generic-description.xml.i>
- <node name="linkshare">
+ <tagNode name="class">
<properties>
- <help>Linkshare class settings</help>
- </properties>
- <children>
- #include <include/qos/hfsc-d.xml.i>
- #include <include/qos/hfsc-m1.xml.i>
- #include <include/qos/hfsc-m2.xml.i>
- </children>
- </node>
- #include <include/qos/match.xml.i>
- <node name="realtime">
- <properties>
- <help>Realtime class settings</help>
+ <help>Class Handle</help>
+ <valueHelp>
+ <format>u32:1-7</format>
+ <description>Priority</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 1-7"/>
+ </constraint>
+ <constraintErrorMessage>Class handle must be between 1 and 7</constraintErrorMessage>
</properties>
<children>
- #include <include/qos/hfsc-d.xml.i>
- #include <include/qos/hfsc-m1.xml.i>
- #include <include/qos/hfsc-m2.xml.i>
+ #include <include/generic-description.xml.i>
+ #include <include/qos/codel-quantum.xml.i>
+ #include <include/qos/flows.xml.i>
+ #include <include/qos/interval.xml.i>
+ #include <include/qos/match.xml.i>
+ #include <include/qos/queue-limit-2-10999.xml.i>
+ #include <include/qos/target.xml.i>
+ #include <include/qos/queue-type.xml.i>
</children>
- </node>
- <node name="upperlimit">
+ </tagNode>
+ <node name="default">
<properties>
- <help>Upperlimit class settings</help>
+ <help>Default policy</help>
</properties>
<children>
- #include <include/qos/hfsc-d.xml.i>
- #include <include/qos/hfsc-m1.xml.i>
- #include <include/qos/hfsc-m2.xml.i>
+ #include <include/generic-description.xml.i>
+ #include <include/qos/codel-quantum.xml.i>
+ #include <include/qos/flows.xml.i>
+ #include <include/qos/interval.xml.i>
+ #include <include/qos/queue-limit-2-10999.xml.i>
+ #include <include/qos/target.xml.i>
+ #include <include/qos/queue-type.xml.i>
</children>
</node>
+ #include <include/generic-description.xml.i>
</children>
</tagNode>
- <node name="default">
+ <tagNode name="random-detect">
<properties>
- <help>Default policy</help>
+ <help>Priority queuing based policy</help>
+ <valueHelp>
+ <format>txt</format>
+ <description>Policy name</description>
+ </valueHelp>
+ <constraint>
+ <regex>[[:alnum:]][-_[:alnum:]]*</regex>
+ </constraint>
+ <constraintErrorMessage>Only alpha-numeric policy name allowed</constraintErrorMessage>
</properties>
<children>
- <node name="linkshare">
- <properties>
- <help>Linkshare class settings</help>
- </properties>
- <children>
- #include <include/qos/hfsc-d.xml.i>
- #include <include/qos/hfsc-m1.xml.i>
- #include <include/qos/hfsc-m2.xml.i>
- </children>
- </node>
- <node name="realtime">
- <properties>
- <help>Realtime class settings</help>
- </properties>
- <children>
- #include <include/qos/hfsc-d.xml.i>
- #include <include/qos/hfsc-m1.xml.i>
- #include <include/qos/hfsc-m2.xml.i>
- </children>
- </node>
- <node name="upperlimit">
+ #include <include/qos/bandwidth.xml.i>
+ <leafNode name="bandwidth">
+ <defaultValue>auto</defaultValue>
+ </leafNode>
+ #include <include/generic-description.xml.i>
+ <tagNode name="precedence">
<properties>
- <help>Upperlimit class settings</help>
+ <help>IP precedence</help>
+ <valueHelp>
+ <format>u32:0-7</format>
+ <description>IP precedence value</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 0-7"/>
+ </constraint>
+ <constraintErrorMessage>IP precedence value must be between 0 and 7</constraintErrorMessage>
</properties>
<children>
- #include <include/qos/hfsc-d.xml.i>
- #include <include/qos/hfsc-m1.xml.i>
- #include <include/qos/hfsc-m2.xml.i>
+ #include <include/qos/queue-limit-1-4294967295.xml.i>
+ <leafNode name="average-packet">
+ <properties>
+ <help>Average packet size (bytes)</help>
+ <valueHelp>
+ <format>u32:16-10240</format>
+ <description>Average packet size in bytes</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 0-100"/>
+ </constraint>
+ <constraintErrorMessage>Average packet size must be between 16 and 10240</constraintErrorMessage>
+ </properties>
+ <defaultValue>1024</defaultValue>
+ </leafNode>
+ <leafNode name="mark-probability">
+ <properties>
+ <help>Mark probability for this precedence</help>
+ <valueHelp>
+ <format>&lt;number&gt;</format>
+ <description>Numeric value (1/N)</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--positive"/>
+ </constraint>
+ <constraintErrorMessage>Mark probability must be greater than 0</constraintErrorMessage>
+ </properties>
+ </leafNode>
+ <leafNode name="maximum-threshold">
+ <properties>
+ <help>Maximum threshold for random detection</help>
+ <valueHelp>
+ <format>u32:0-4096</format>
+ <description>Maximum Threshold in packets</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 0-4096"/>
+ </constraint>
+ <constraintErrorMessage>Threshold must be between 0 and 4096</constraintErrorMessage>
+ </properties>
+ </leafNode>
+ <leafNode name="minimum-threshold">
+ <properties>
+ <help>Minimum threshold for random detection</help>
+ <valueHelp>
+ <format>u32:0-4096</format>
+ <description>Maximum Threshold in packets</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 0-4096"/>
+ </constraint>
+ <constraintErrorMessage>Threshold must be between 0 and 4096</constraintErrorMessage>
+ </properties>
+ </leafNode>
</children>
- </node>
+ </tagNode>
</children>
- </node>
- </children>
- </tagNode>
- <tagNode name="shaper">
- <properties>
- <help>Traffic shaping based policy (Hierarchy Token Bucket)</help>
- <valueHelp>
- <format>txt</format>
- <description>Policy name</description>
- </valueHelp>
- <constraint>
- <regex>[[:alnum:]][-_[:alnum:]]*</regex>
- </constraint>
- <constraintErrorMessage>Only alpha-numeric policy name allowed</constraintErrorMessage>
- </properties>
- <children>
- #include <include/qos/bandwidth.xml.i>
- <leafNode name="bandwidth">
- <defaultValue>auto</defaultValue>
- </leafNode>
- <tagNode name="class">
+ </tagNode>
+ <tagNode name="rate-control">
<properties>
- <help>Class ID</help>
+ <help>Rate limiting policy (Token Bucket Filter)</help>
<valueHelp>
- <format>u32:2-4095</format>
- <description>Class Identifier</description>
+ <format>txt</format>
+ <description>Policy name</description>
</valueHelp>
<constraint>
- <validator name="numeric" argument="--range 2-4095"/>
+ <regex>[[:alnum:]][-_[:alnum:]]*</regex>
</constraint>
- <constraintErrorMessage>Class identifier must be between 2 and 4095</constraintErrorMessage>
+ <constraintErrorMessage>Only alpha-numeric policy name allowed</constraintErrorMessage>
</properties>
<children>
#include <include/qos/bandwidth.xml.i>
- <leafNode name="bandwidth">
- <defaultValue>100%</defaultValue>
- </leafNode>
+ #include <include/generic-description.xml.i>
#include <include/qos/burst.xml.i>
- <leafNode name="ceiling">
+ <leafNode name="latency">
<properties>
- <help>Bandwidth limit for this class</help>
+ <help>Maximum latency</help>
<valueHelp>
<format>&lt;number&gt;</format>
- <description>Rate in kbit (kilobit per second)</description>
- </valueHelp>
- <valueHelp>
- <format>&lt;number&gt;%%</format>
- <description>Percentage of overall rate</description>
- </valueHelp>
- <valueHelp>
- <format>&lt;number&gt;bit</format>
- <description>bit(1), kbit(10^3), mbit(10^6), gbit, tbit</description>
- </valueHelp>
- <valueHelp>
- <format>&lt;number&gt;ibit</format>
- <description>kibit(1024), mibit(1024^2), gibit(1024^3), tbit(1024^4)</description>
- </valueHelp>
- <valueHelp>
- <format>&lt;number&gt;ibps</format>
- <description>kibps(1024*8), mibps(1024^2*8), gibps, tibps - Byte/sec</description>
- </valueHelp>
- <valueHelp>
- <format>&lt;number&gt;bps</format>
- <description>bps(8),kbps(8*10^3),mbps(8*10^6), gbps, tbps - Byte/sec</description>
+ <description>Time in milliseconds</description>
</valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 0-4096"/>
+ </constraint>
+ <constraintErrorMessage>Threshold must be between 0 and 4096</constraintErrorMessage>
</properties>
+ <defaultValue>50</defaultValue>
</leafNode>
- #include <include/qos/codel-quantum.xml.i>
+ </children>
+ </tagNode>
+ <tagNode name="round-robin">
+ <properties>
+ <help>Round-Robin based policy</help>
+ <valueHelp>
+ <format>txt</format>
+ <description>Policy name</description>
+ </valueHelp>
+ <constraint>
+ <regex>[[:alnum:]][-_[:alnum:]]*</regex>
+ </constraint>
+ <constraintErrorMessage>Only alpha-numeric policy name allowed</constraintErrorMessage>
+ </properties>
+ <children>
#include <include/generic-description.xml.i>
- #include <include/qos/flows.xml.i>
- #include <include/qos/interval.xml.i>
- #include <include/qos/match.xml.i>
- <leafNode name="priority">
+ <tagNode name="class">
<properties>
- <help>Priority for usage of excess bandwidth</help>
+ <help>Class ID</help>
<valueHelp>
- <format>u32:0-7</format>
- <description>Priority order for bandwidth pool</description>
+ <format>u32:1-4095</format>
+ <description>Class Identifier</description>
</valueHelp>
<constraint>
- <validator name="numeric" argument="--range 0-7"/>
+ <validator name="numeric" argument="--range 1-4095"/>
</constraint>
- <constraintErrorMessage>Priority must be between 0 and 7</constraintErrorMessage>
+ <constraintErrorMessage>Class identifier must be between 1 and 4095</constraintErrorMessage>
</properties>
- <defaultValue>20</defaultValue>
- </leafNode>
- #include <include/qos/queue-limit-1-4294967295.xml.i>
- #include <include/qos/queue-type.xml.i>
- #include <include/qos/set-dscp.xml.i>
- #include <include/qos/target.xml.i>
+ <children>
+ #include <include/qos/codel-quantum.xml.i>
+ #include <include/generic-description.xml.i>
+ #include <include/qos/flows.xml.i>
+ #include <include/qos/interval.xml.i>
+ #include <include/qos/match.xml.i>
+ <leafNode name="quantum">
+ <properties>
+ <help>Packet scheduling quantum</help>
+ <valueHelp>
+ <format>u32:1-4294967295</format>
+ <description>Packet scheduling quantum (bytes)</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 1-4294967295"/>
+ </constraint>
+ <constraintErrorMessage>Quantum must be in range 1 to 4294967295</constraintErrorMessage>
+ </properties>
+ </leafNode>
+ #include <include/qos/queue-limit-1-4294967295.xml.i>
+ #include <include/qos/queue-type.xml.i>
+ #include <include/qos/target.xml.i>
+ </children>
+ </tagNode>
</children>
</tagNode>
- #include <include/generic-description.xml.i>
- <node name="default">
+ <tagNode name="shaper-hfsc">
<properties>
- <help>Default policy</help>
+ <help>Hierarchical Fair Service Curve's policy</help>
+ <valueHelp>
+ <format>txt</format>
+ <description>Policy name</description>
+ </valueHelp>
+ <constraint>
+ <regex>[[:alnum:]][-_[:alnum:]]*</regex>
+ </constraint>
+ <constraintErrorMessage>Only alpha-numeric policy name allowed</constraintErrorMessage>
</properties>
<children>
#include <include/qos/bandwidth.xml.i>
- #include <include/qos/burst.xml.i>
- <leafNode name="ceiling">
+ <leafNode name="bandwidth">
+ <defaultValue>auto</defaultValue>
+ </leafNode>
+ #include <include/generic-description.xml.i>
+ <tagNode name="class">
<properties>
- <help>Bandwidth limit for this class</help>
- <valueHelp>
- <format>&lt;number&gt;</format>
- <description>Rate in kbit (kilobit per second)</description>
- </valueHelp>
- <valueHelp>
- <format>&lt;number&gt;%%</format>
- <description>Percentage of overall rate</description>
- </valueHelp>
+ <help>Class ID</help>
<valueHelp>
- <format>&lt;number&gt;bit</format>
- <description>bit(1), kbit(10^3), mbit(10^6), gbit, tbit</description>
- </valueHelp>
- <valueHelp>
- <format>&lt;number&gt;ibit</format>
- <description>kibit(1024), mibit(1024^2), gibit(1024^3), tbit(1024^4)</description>
- </valueHelp>
- <valueHelp>
- <format>&lt;number&gt;ibps</format>
- <description>kibps(1024*8), mibps(1024^2*8), gibps, tibps - Byte/sec</description>
- </valueHelp>
- <valueHelp>
- <format>&lt;number&gt;bps</format>
- <description>bps(8),kbps(8*10^3),mbps(8*10^6), gbps, tbps - Byte/sec</description>
+ <format>u32:1-4095</format>
+ <description>Class Identifier</description>
</valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 1-4095"/>
+ </constraint>
+ <constraintErrorMessage>Class identifier must be between 1 and 4095</constraintErrorMessage>
+ </properties>
+ <children>
+ #include <include/generic-description.xml.i>
+ <node name="linkshare">
+ <properties>
+ <help>Linkshare class settings</help>
+ </properties>
+ <children>
+ #include <include/qos/hfsc-d.xml.i>
+ #include <include/qos/hfsc-m1.xml.i>
+ #include <include/qos/hfsc-m2.xml.i>
+ </children>
+ </node>
+ #include <include/qos/match.xml.i>
+ <node name="realtime">
+ <properties>
+ <help>Realtime class settings</help>
+ </properties>
+ <children>
+ #include <include/qos/hfsc-d.xml.i>
+ #include <include/qos/hfsc-m1.xml.i>
+ #include <include/qos/hfsc-m2.xml.i>
+ </children>
+ </node>
+ <node name="upperlimit">
+ <properties>
+ <help>Upperlimit class settings</help>
+ </properties>
+ <children>
+ #include <include/qos/hfsc-d.xml.i>
+ #include <include/qos/hfsc-m1.xml.i>
+ #include <include/qos/hfsc-m2.xml.i>
+ </children>
+ </node>
+ </children>
+ </tagNode>
+ <node name="default">
+ <properties>
+ <help>Default policy</help>
</properties>
+ <children>
+ <node name="linkshare">
+ <properties>
+ <help>Linkshare class settings</help>
+ </properties>
+ <children>
+ #include <include/qos/hfsc-d.xml.i>
+ #include <include/qos/hfsc-m1.xml.i>
+ #include <include/qos/hfsc-m2.xml.i>
+ </children>
+ </node>
+ <node name="realtime">
+ <properties>
+ <help>Realtime class settings</help>
+ </properties>
+ <children>
+ #include <include/qos/hfsc-d.xml.i>
+ #include <include/qos/hfsc-m1.xml.i>
+ #include <include/qos/hfsc-m2.xml.i>
+ </children>
+ </node>
+ <node name="upperlimit">
+ <properties>
+ <help>Upperlimit class settings</help>
+ </properties>
+ <children>
+ #include <include/qos/hfsc-d.xml.i>
+ #include <include/qos/hfsc-m1.xml.i>
+ #include <include/qos/hfsc-m2.xml.i>
+ </children>
+ </node>
+ </children>
+ </node>
+ </children>
+ </tagNode>
+ <tagNode name="shaper">
+ <properties>
+ <help>Traffic shaping based policy (Hierarchy Token Bucket)</help>
+ <valueHelp>
+ <format>txt</format>
+ <description>Policy name</description>
+ </valueHelp>
+ <constraint>
+ <regex>[[:alnum:]][-_[:alnum:]]*</regex>
+ </constraint>
+ <constraintErrorMessage>Only alpha-numeric policy name allowed</constraintErrorMessage>
+ </properties>
+ <children>
+ #include <include/qos/bandwidth.xml.i>
+ <leafNode name="bandwidth">
+ <defaultValue>auto</defaultValue>
</leafNode>
- #include <include/qos/codel-quantum.xml.i>
- #include <include/generic-description.xml.i>
- #include <include/qos/flows.xml.i>
- #include <include/qos/interval.xml.i>
- <leafNode name="priority">
+ <tagNode name="class">
<properties>
- <help>Priority for usage of excess bandwidth</help>
+ <help>Class ID</help>
<valueHelp>
- <format>u32:0-7</format>
- <description>Priority order for bandwidth pool</description>
+ <format>u32:2-4095</format>
+ <description>Class Identifier</description>
</valueHelp>
<constraint>
- <validator name="numeric" argument="--range 0-7"/>
+ <validator name="numeric" argument="--range 2-4095"/>
</constraint>
- <constraintErrorMessage>Priority must be between 0 and 7</constraintErrorMessage>
+ <constraintErrorMessage>Class identifier must be between 2 and 4095</constraintErrorMessage>
</properties>
- <defaultValue>20</defaultValue>
- </leafNode>
- #include <include/qos/queue-limit-1-4294967295.xml.i>
- #include <include/qos/queue-type.xml.i>
- #include <include/qos/set-dscp.xml.i>
- #include <include/qos/target.xml.i>
+ <children>
+ #include <include/qos/bandwidth.xml.i>
+ <leafNode name="bandwidth">
+ <defaultValue>100%</defaultValue>
+ </leafNode>
+ #include <include/qos/burst.xml.i>
+ <leafNode name="ceiling">
+ <properties>
+ <help>Bandwidth limit for this class</help>
+ <valueHelp>
+ <format>&lt;number&gt;</format>
+ <description>Rate in kbit (kilobit per second)</description>
+ </valueHelp>
+ <valueHelp>
+ <format>&lt;number&gt;%%</format>
+ <description>Percentage of overall rate</description>
+ </valueHelp>
+ <valueHelp>
+ <format>&lt;number&gt;bit</format>
+ <description>bit(1), kbit(10^3), mbit(10^6), gbit, tbit</description>
+ </valueHelp>
+ <valueHelp>
+ <format>&lt;number&gt;ibit</format>
+ <description>kibit(1024), mibit(1024^2), gibit(1024^3), tbit(1024^4)</description>
+ </valueHelp>
+ <valueHelp>
+ <format>&lt;number&gt;ibps</format>
+ <description>kibps(1024*8), mibps(1024^2*8), gibps, tibps - Byte/sec</description>
+ </valueHelp>
+ <valueHelp>
+ <format>&lt;number&gt;bps</format>
+ <description>bps(8),kbps(8*10^3),mbps(8*10^6), gbps, tbps - Byte/sec</description>
+ </valueHelp>
+ </properties>
+ </leafNode>
+ #include <include/qos/codel-quantum.xml.i>
+ #include <include/generic-description.xml.i>
+ #include <include/qos/flows.xml.i>
+ #include <include/qos/interval.xml.i>
+ #include <include/qos/match.xml.i>
+ <leafNode name="priority">
+ <properties>
+ <help>Priority for usage of excess bandwidth</help>
+ <valueHelp>
+ <format>u32:0-7</format>
+ <description>Priority order for bandwidth pool</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 0-7"/>
+ </constraint>
+ <constraintErrorMessage>Priority must be between 0 and 7</constraintErrorMessage>
+ </properties>
+ <defaultValue>20</defaultValue>
+ </leafNode>
+ #include <include/qos/queue-limit-1-4294967295.xml.i>
+ #include <include/qos/queue-type.xml.i>
+ #include <include/qos/set-dscp.xml.i>
+ #include <include/qos/target.xml.i>
+ </children>
+ </tagNode>
+ #include <include/generic-description.xml.i>
+ <node name="default">
+ <properties>
+ <help>Default policy</help>
+ </properties>
+ <children>
+ #include <include/qos/bandwidth.xml.i>
+ #include <include/qos/burst.xml.i>
+ <leafNode name="ceiling">
+ <properties>
+ <help>Bandwidth limit for this class</help>
+ <valueHelp>
+ <format>&lt;number&gt;</format>
+ <description>Rate in kbit (kilobit per second)</description>
+ </valueHelp>
+ <valueHelp>
+ <format>&lt;number&gt;%%</format>
+ <description>Percentage of overall rate</description>
+ </valueHelp>
+ <valueHelp>
+ <format>&lt;number&gt;bit</format>
+ <description>bit(1), kbit(10^3), mbit(10^6), gbit, tbit</description>
+ </valueHelp>
+ <valueHelp>
+ <format>&lt;number&gt;ibit</format>
+ <description>kibit(1024), mibit(1024^2), gibit(1024^3), tbit(1024^4)</description>
+ </valueHelp>
+ <valueHelp>
+ <format>&lt;number&gt;ibps</format>
+ <description>kibps(1024*8), mibps(1024^2*8), gibps, tibps - Byte/sec</description>
+ </valueHelp>
+ <valueHelp>
+ <format>&lt;number&gt;bps</format>
+ <description>bps(8),kbps(8*10^3),mbps(8*10^6), gbps, tbps - Byte/sec</description>
+ </valueHelp>
+ </properties>
+ </leafNode>
+ #include <include/qos/codel-quantum.xml.i>
+ #include <include/generic-description.xml.i>
+ #include <include/qos/flows.xml.i>
+ #include <include/qos/interval.xml.i>
+ <leafNode name="priority">
+ <properties>
+ <help>Priority for usage of excess bandwidth</help>
+ <valueHelp>
+ <format>u32:0-7</format>
+ <description>Priority order for bandwidth pool</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 0-7"/>
+ </constraint>
+ <constraintErrorMessage>Priority must be between 0 and 7</constraintErrorMessage>
+ </properties>
+ <defaultValue>20</defaultValue>
+ </leafNode>
+ #include <include/qos/queue-limit-1-4294967295.xml.i>
+ #include <include/qos/queue-type.xml.i>
+ #include <include/qos/set-dscp.xml.i>
+ #include <include/qos/target.xml.i>
+ </children>
+ </node>
</children>
- </node>
+ </tagNode>
</children>
- </tagNode>
+ </node>
</children>
</node>
</interfaceDefinition>
diff --git a/src/conf_mode/qos.py b/src/conf_mode/qos.py
index cf447d4b5..dbe3be225 100755
--- a/src/conf_mode/qos.py
+++ b/src/conf_mode/qos.py
@@ -28,36 +28,33 @@ def get_config(config=None):
conf = config
else:
conf = Config()
- base = ['traffic-policy']
+ base = ['qos']
if not conf.exists(base):
return None
qos = conf.get_config_dict(base, key_mangling=('-', '_'), get_first_key=True)
- for traffic_policy in ['drop-tail', 'fair-queue', 'fq-codel', 'limiter',
- 'network-emulator', 'priority-queue', 'random-detect',
- 'rate-control', 'round-robin', 'shaper', 'shaper-hfsc']:
- traffic_policy_us = traffic_policy.replace('-','_')
- # Individual policy type not present on CLI - no need to blend in
- # any default values
- if traffic_policy_us not in qos:
- continue
-
- default_values = defaults(base + [traffic_policy_us])
-
- # class is another tag node which requires individual handling
- class_default_values = defaults(base + [traffic_policy_us, 'class'])
- if 'class' in default_values:
- del default_values['class']
-
- for policy, policy_config in qos[traffic_policy_us].items():
- qos[traffic_policy_us][policy] = dict_merge(
- default_values, qos[traffic_policy_us][policy])
-
- if 'class' in policy_config:
- for policy_class in policy_config['class']:
- qos[traffic_policy_us][policy]['class'][policy_class] = dict_merge(
- class_default_values, qos[traffic_policy_us][policy]['class'][policy_class])
+ if 'policy' in qos:
+ for policy in qos['policy']:
+ # CLI mangles - to _ for better Jinja2 compatibility - do we need
+ # Jinja2 here?
+ policy = policy.replace('-','_')
+
+ default_values = defaults(base + ['policy', policy])
+
+ # class is another tag node which requires individual handling
+ class_default_values = defaults(base + ['policy', policy, 'class'])
+ if 'class' in default_values:
+ del default_values['class']
+
+ for p_name, p_config in qos['policy'][policy].items():
+ qos['policy'][policy][p_name] = dict_merge(
+ default_values, qos['policy'][policy][p_name])
+
+ if 'class' in p_config:
+ for p_class in p_config['class']:
+ qos['policy'][policy][p_name]['class'][p_class] = dict_merge(
+ class_default_values, qos['policy'][policy][p_name]['class'][p_class])
import pprint
pprint.pprint(qos)