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>&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="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="duplicate">
                 <properties>
                   <help>Cosen percent of packets is duplicated before queuing them</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="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="reordering">
                 <properties>
                   <help>Emulated 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>
               #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>&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>
                     <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>&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>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>&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/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>&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/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)