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)