Page Menu
Home
VyOS Platform
Search
Configure Global Search
Log In
Files
F119063005
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
42 KB
Referenced Files
None
Subscribers
None
View Options
diff --git a/interface-definitions/qos.xml.in b/interface-definitions/qos.xml.in
index c7bd8606a..31b9a7d21 100644
--- a/interface-definitions/qos.xml.in
+++ b/interface-definitions/qos.xml.in
@@ -1,870 +1,876 @@
<?xml version="1.0"?>
<interfaceDefinition>
<node name="qos" owner="${vyos_conf_scripts_dir}/qos.py">
<properties>
<help>Quality of Service (QoS)</help>
<priority>900</priority>
</properties>
<children>
<tagNode name="interface">
<properties>
<help>Interface to apply QoS policy</help>
<completionHelp>
<script>${vyos_completion_dir}/list_interfaces</script>
</completionHelp>
<valueHelp>
<format>txt</format>
<description>Interface name</description>
</valueHelp>
<constraint>
#include <include/constraint/interface-name.xml.i>
</constraint>
</properties>
<children>
<leafNode name="ingress">
<properties>
<help>Interface ingress traffic policy</help>
<completionHelp>
<path>qos policy limiter</path>
</completionHelp>
<valueHelp>
<format>txt</format>
<description>QoS policy to use</description>
</valueHelp>
<constraint>
<regex>[[:alnum:]][-_[:alnum:]]*</regex>
</constraint>
<constraintErrorMessage>Only alpha-numeric policy name allowed</constraintErrorMessage>
</properties>
</leafNode>
<leafNode name="egress">
<properties>
<help>Interface egress traffic policy</help>
<completionHelp>
<path>qos policy cake</path>
<path>qos policy drop-tail</path>
<path>qos policy fair-queue</path>
<path>qos policy fq-codel</path>
<path>qos policy network-emulator</path>
<path>qos policy priority-queue</path>
<path>qos policy random-detect</path>
<path>qos policy rate-control</path>
<path>qos policy round-robin</path>
<path>qos policy shaper</path>
<path>qos policy shaper-hfsc</path>
</completionHelp>
<valueHelp>
<format>txt</format>
<description>QoS policy to use</description>
</valueHelp>
<constraint>
<regex>[[:alnum:]][-_[:alnum:]]*</regex>
</constraint>
<constraintErrorMessage>Only alpha-numeric policy name allowed</constraintErrorMessage>
</properties>
</leafNode>
</children>
</tagNode>
<node name="policy">
<properties>
<help>Service Policy definitions</help>
</properties>
<children>
<tagNode name="cake">
<properties>
<help>Common Applications Kept Enhanced (CAKE)</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/bandwidth.xml.i>
<node name="flow-isolation">
<properties>
<help>Flow isolation settings</help>
</properties>
<children>
<leafNode name="blind">
<properties>
<help>Disables flow isolation, all traffic passes through a single queue</help>
<valueless/>
</properties>
</leafNode>
<leafNode name="src-host">
<properties>
<help>Flows are defined only by source address</help>
<valueless/>
</properties>
</leafNode>
<leafNode name="dst-host">
<properties>
<help>Flows are defined only by destination address</help>
<valueless/>
</properties>
</leafNode>
<leafNode name="host">
<properties>
<help>Flows are defined by source-destination host pairs</help>
<valueless/>
</properties>
</leafNode>
<leafNode name="flow">
<properties>
<help>Flows are defined by the entire 5-tuple</help>
<valueless/>
</properties>
</leafNode>
<leafNode name="dual-src-host">
<properties>
- <help>Flows are defined by the 5-tuple, and fairness is applied first over source addresses, then over individual flows</help>
+ <help>Flows are defined by the 5-tuple, fairness is applied first over source addresses, then over individual flows</help>
<valueless/>
</properties>
</leafNode>
<leafNode name="dual-dst-host">
<properties>
- <help>Flows are defined by the 5-tuple, and fairness is applied first over destination addresses, then over individual flows</help>
+ <help>Flows are defined by the 5-tuple, fairness is applied first over destination addresses, then over individual flows</help>
+ <valueless/>
+ </properties>
+ </leafNode>
+ <leafNode name="triple-isolate">
+ <properties>
+ <help>Flows are defined by the 5-tuple, fairness is applied over source and destination addresses and also over individual flows (default)</help>
<valueless/>
</properties>
</leafNode>
<leafNode name="nat">
<properties>
<help>Perform NAT lookup before applying flow-isolation rules</help>
<valueless/>
</properties>
</leafNode>
</children>
</node>
<leafNode name="rtt">
<properties>
<help>Round-Trip-Time for Active Queue Management (AQM)</help>
<valueHelp>
<format>u32:1-3600000</format>
<description>RTT in ms</description>
</valueHelp>
<constraint>
<validator name="numeric" argument="--range 1-3600000"/>
</constraint>
<constraintErrorMessage>RTT must be in range 1 to 3600000 milli-seconds</constraintErrorMessage>
</properties>
<defaultValue>100</defaultValue>
</leafNode>
</children>
</tagNode>
<tagNode name="drop-tail">
<properties>
<help>Packet limited First In, First Out queue</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/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">
<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>Upper limit of the SFQ</help>
<valueHelp>
<format>u32:1-127</format>
<description>Queue size in packets</description>
</valueHelp>
<constraint>
<validator name="numeric" argument="--range 1-127"/>
</constraint>
<constraintErrorMessage>Queue limit must be in range 1 to 127</constraintErrorMessage>
</properties>
<defaultValue>127</defaultValue>
</leafNode>
</children>
</tagNode>
<tagNode name="fq-codel">
<properties>
<help>Fair Queuing (FQ) with Controlled Delay (CoDel)</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/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>
#include <include/generic-description.xml.i>
<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/generic-description.xml.i>
#include <include/qos/bandwidth.xml.i>
#include <include/qos/burst.xml.i>
#include <include/qos/class-police-exceed.xml.i>
#include <include/qos/class-match.xml.i>
#include <include/qos/class-priority.xml.i>
<leafNode name="priority">
<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>
#include <include/qos/class-police-exceed.xml.i>
</children>
</node>
</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/generic-description.xml.i>
#include <include/qos/bandwidth.xml.i>
<leafNode name="delay">
<properties>
<help>Adds delay to packets outgoing to chosen network interface</help>
<valueHelp>
<format><number></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="corruption">
<properties>
<help>Introducing error in a random position for chosen percent of packets</help>
<valueHelp>
<format><number></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="duplicate">
<properties>
<help>Cosen percent of packets is duplicated before queuing them</help>
<valueHelp>
<format><number></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="loss">
<properties>
<help>Add independent loss probability to the packets outgoing to chosen network interface</help>
<valueHelp>
<format><number></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="reordering">
<properties>
<help>Emulated packet reordering percentage</help>
<valueHelp>
<format><number></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>
#include <include/generic-description.xml.i>
<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>
</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/class-match.xml.i>
#include <include/qos/queue-limit-1-4294967295.xml.i>
#include <include/qos/queue-type.xml.i>
<leafNode name="queue-type">
<defaultValue>drop-tail</defaultValue>
</leafNode>
#include <include/qos/target.xml.i>
</children>
</tagNode>
<node name="default">
<properties>
<help>Default policy</help>
</properties>
<children>
#include <include/qos/codel-quantum.xml.i>
#include <include/qos/flows.xml.i>
#include <include/qos/interval.xml.i>
#include <include/qos/queue-limit-1-4294967295.xml.i>
#include <include/qos/queue-type.xml.i>
<leafNode name="queue-type">
<defaultValue>drop-tail</defaultValue>
</leafNode>
#include <include/qos/target.xml.i>
</children>
</node>
</children>
</tagNode>
<tagNode name="random-detect">
<properties>
<help>Weighted Random Early Detect 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/bandwidth-auto.xml.i>
<tagNode name="precedence">
<properties>
<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/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><number></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>
<defaultValue>10</defaultValue>
</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>
<defaultValue>18</defaultValue>
</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>
</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/generic-description.xml.i>
#include <include/qos/bandwidth.xml.i>
#include <include/qos/burst.xml.i>
<leafNode name="latency">
<properties>
<help>Maximum latency</help>
<valueHelp>
<format><number></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>Deficit Round Robin Scheduler</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/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/class-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>
<leafNode name="queue-type">
<defaultValue>drop-tail</defaultValue>
</leafNode>
#include <include/qos/target.xml.i>
</children>
</tagNode>
<node name="default">
<properties>
<help>Default policy</help>
</properties>
<children>
#include <include/qos/codel-quantum.xml.i>
#include <include/qos/flows.xml.i>
#include <include/qos/interval.xml.i>
#include <include/qos/queue-limit-1-4294967295.xml.i>
#include <include/qos/queue-type.xml.i>
<leafNode name="queue-type">
<defaultValue>fair-queue</defaultValue>
</leafNode>
#include <include/qos/target.xml.i>
</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/generic-description.xml.i>
#include <include/qos/bandwidth-auto.xml.i>
<tagNode name="class">
<properties>
<help>Class ID</help>
<valueHelp>
<format>u32:2-4095</format>
<description>Class Identifier</description>
</valueHelp>
<constraint>
<validator name="numeric" argument="--range 2-4095"/>
</constraint>
<constraintErrorMessage>Class identifier must be between 2 and 4095</constraintErrorMessage>
</properties>
<children>
#include <include/generic-description.xml.i>
#include <include/qos/bandwidth-auto.xml.i>
#include <include/qos/burst.xml.i>
<leafNode name="ceiling">
<properties>
<help>Bandwidth limit for this class</help>
<valueHelp>
<format><number></format>
<description>Rate in kbit (kilobit per second)</description>
</valueHelp>
<valueHelp>
<format><number>%%</format>
<description>Percentage of overall rate</description>
</valueHelp>
<valueHelp>
<format><number>bit</format>
<description>bit(1), kbit(10^3), mbit(10^6), gbit, tbit</description>
</valueHelp>
<valueHelp>
<format><number>ibit</format>
<description>kibit(1024), mibit(1024^2), gibit(1024^3), tbit(1024^4)</description>
</valueHelp>
<valueHelp>
<format><number>ibps</format>
<description>kibps(1024*8), mibps(1024^2*8), gibps, tibps - Byte/sec</description>
</valueHelp>
<valueHelp>
<format><number>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/qos/flows.xml.i>
#include <include/qos/interval.xml.i>
#include <include/qos/class-match.xml.i>
#include <include/qos/class-priority.xml.i>
#include <include/qos/queue-limit-1-4294967295.xml.i>
#include <include/qos/queue-type.xml.i>
<leafNode name="queue-type">
<defaultValue>fq-codel</defaultValue>
</leafNode>
#include <include/qos/set-dscp.xml.i>
#include <include/qos/target.xml.i>
</children>
</tagNode>
<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><number></format>
<description>Rate in kbit (kilobit per second)</description>
</valueHelp>
<valueHelp>
<format><number>%%</format>
<description>Percentage of overall rate</description>
</valueHelp>
<valueHelp>
<format><number>bit</format>
<description>bit(1), kbit(10^3), mbit(10^6), gbit, tbit</description>
</valueHelp>
<valueHelp>
<format><number>ibit</format>
<description>kibit(1024), mibit(1024^2), gibit(1024^3), tbit(1024^4)</description>
</valueHelp>
<valueHelp>
<format><number>ibps</format>
<description>kibps(1024*8), mibps(1024^2*8), gibps, tibps - Byte/sec</description>
</valueHelp>
<valueHelp>
<format><number>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/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>
<leafNode name="queue-type">
<defaultValue>fq-codel</defaultValue>
</leafNode>
#include <include/qos/set-dscp.xml.i>
#include <include/qos/target.xml.i>
</children>
</node>
</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/generic-description.xml.i>
#include <include/qos/bandwidth-auto.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/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/class-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>
</children>
</node>
</children>
</node>
</interfaceDefinition>
diff --git a/python/vyos/qos/cake.py b/python/vyos/qos/cake.py
index a89b1de1e..1ee7d0fc3 100644
--- a/python/vyos/qos/cake.py
+++ b/python/vyos/qos/cake.py
@@ -1,55 +1,57 @@
# Copyright 2022 VyOS maintainers and contributors <maintainers@vyos.io>
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library. If not, see <http://www.gnu.org/licenses/>.
from vyos.qos.base import QoSBase
class CAKE(QoSBase):
_direction = ['egress']
# https://man7.org/linux/man-pages/man8/tc-cake.8.html
def update(self, config, direction):
tmp = f'tc qdisc add dev {self._interface} root handle 1: cake {direction}'
if 'bandwidth' in config:
bandwidth = self._rate_convert(config['bandwidth'])
tmp += f' bandwidth {bandwidth}'
if 'rtt' in config:
rtt = config['rtt']
tmp += f' rtt {rtt}ms'
if 'flow_isolation' in config:
if 'blind' in config['flow_isolation']:
tmp += f' flowblind'
if 'dst_host' in config['flow_isolation']:
tmp += f' dsthost'
if 'dual_dst_host' in config['flow_isolation']:
tmp += f' dual-dsthost'
if 'dual_src_host' in config['flow_isolation']:
tmp += f' dual-srchost'
+ if 'triple_isolate' in config['flow_isolation']:
+ tmp += f' triple-isolate'
if 'flow' in config['flow_isolation']:
tmp += f' flows'
if 'host' in config['flow_isolation']:
tmp += f' hosts'
if 'nat' in config['flow_isolation']:
tmp += f' nat'
if 'src_host' in config['flow_isolation']:
tmp += f' srchost '
else:
tmp += f' nonat'
self._cmd(tmp)
# call base class
super().update(config, direction)
File Metadata
Details
Attached
Mime Type
text/x-diff
Expires
Fri, Nov 6, 7:46 AM (1 d, 20 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
4653235
Default Alt Text
(42 KB)
Attached To
Mode
rVYOSONEX vyos-1x
Attached
Detach File
Event Timeline
Log In to Comment