]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blobdiff - config/qos/makeqosscripts.pl
Revert "QoS: Move packet classification to FORWARD chain for ingress"
[people/pmueller/ipfire-2.x.git] / config / qos / makeqosscripts.pl
index 4f66b20b464a3f00f15ae95c8585686dcadb8820..394af53b926492f48c40c71edebbde4c6a4369e2 100644 (file)
@@ -35,26 +35,30 @@ my $errormessage = "";
 my $c = "";
 my $direntry = "";
 my $classentry = "";
+my $subclassentry = "";
 my $l7ruleentry = "";
 my $portruleentry = "";
 my $tosruleentry = "";
 my @tmp = ();
 my @classes = ();
+my @subclasses = ();
 my @l7rules = ();
 my @portrules = ();
 my @tosrules = ();
 my @tmpline = ();
 my @classline = ();
+my @subclassline = ();
 my @tosruleline = ();
 my @l7ruleline = ();
 my @portruleline = ();
 my @proto = ();
 my %selected= () ;
 my $classfile = "/var/ipfire/qos/classes";
+my $subclassfile = "/var/ipfire/qos/subclasses";
 my $level7file = "/var/ipfire/qos/level7config";
 my $portfile = "/var/ipfire/qos/portconfig";
 my $tosfile = "/var/ipfire/qos/tosconfig";
-my $fqcodel_options = "limit 800 quantum 500";
+my $fqcodel_options = "limit 10240 quantum 1514";
 
 &General::readhash("${General::swroot}/ethernet/settings", \%netsettings);
 
@@ -77,6 +81,9 @@ $qossettings{'VALID'} = 'yes';
 open( FILE, "< $classfile" ) or die "Unable to read $classfile";
 @classes = <FILE>;
 close FILE;
+open( FILE, "< $subclassfile" ) or die "Unable to read $subclassfile";
+@subclasses = <FILE>;
+close FILE;
 open( FILE, "< $level7file" ) or die "Unable to read $level7file";
 @l7rules = <FILE>;
 close FILE;
@@ -124,15 +131,23 @@ case "\$1" in
                tc -s class show dev $qossettings{'IMQ_DEV'}
                exit 0
          ;;
+         filter)
+               echo "[filter]"
+               tc -s filter show dev $qossettings{'RED_DEV'}
+               tc -s filter show dev $qossettings{'IMQ_DEV'}
+               exit 0
+         ;;
          iptables)
                echo "[iptables]"
                iptables -t mangle -n -L QOS-OUT -v -x 2> /dev/null
                iptables -t mangle -n -L QOS-INC -v -x 2> /dev/null
+               iptables -t mangle -n -L QOS-TOS -v -x 2> /dev/null
                exit 0
          ;;
        esac
        \$0 \$1 qdisc
        \$0 \$1 class
+       \$0 \$1 filter
        \$0 \$1 iptables
        exit 0
   ;;
@@ -175,6 +190,27 @@ foreach $classentry (sort @classes)
                print "\n";
        }
 }
+foreach $subclassentry (sort @subclasses) {
+       @subclassline = split( /\;/, $subclassentry );
+       if ($qossettings{'RED_DEV'} eq $subclassline[0]) {
+               $qossettings{'DEVICE'} = $subclassline[0];
+               $qossettings{'CLASS'} = $subclassline[1];
+               $qossettings{'SCLASS'} = $subclassline[2];
+               $qossettings{'SPRIO'} = $subclassline[3];
+               $qossettings{'SRATE'} = $subclassline[4];
+               $qossettings{'SCEIL'} = $subclassline[5];
+               $qossettings{'SBURST'} = $subclassline[6];
+               $qossettings{'SCBURST'} = $subclassline[7];
+               print "\ttc class add dev $qossettings{'DEVICE'} parent 1:$qossettings{'CLASS'} classid 1:$qossettings{'SCLASS'} htb rate $qossettings{'SRATE'}kbit ceil $qossettings{'SCEIL'}kbit prio $qossettings{'SPRIO'} ";
+               if ($qossettings{'SBURST'} > 0) {
+                       print "burst $qossettings{'SBURST'}k ";
+               }
+               if (($qossettings{'SCBURST'} ne '') && ($qossettings{'SCBURST'} ne 0)) {
+                       print "cburst $qossettings{'CBURST'}k";
+               }
+               print "\n";
+       }
+}
 
 print "\n\t### ATTACH QDISC TO LEAF CLASSES\n";
 foreach $classentry (sort @classes)
@@ -186,45 +222,77 @@ foreach $classentry (sort @classes)
                print "\ttc qdisc add dev $qossettings{'DEVICE'} parent 1:$qossettings{'CLASS'} handle $qossettings{'CLASS'}: fq_codel $fqcodel_options\n";
        }
 }
+foreach $subclassentry (sort @subclasses) {
+       @subclassline = split( /\;/, $subclassentry );
+       if ($qossettings{'RED_DEV'} eq $subclassline[0]) {
+               $qossettings{'DEVICE'} = $subclassline[0];
+               $qossettings{'SCLASS'} = $subclassline[2];
+               print "\ttc qdisc add dev $qossettings{'DEVICE'} parent 1:$qossettings{'SCLASS'} handle $qossettings{'SCLASS'}: fq_codel $fqcodel_options\n";
+       }
+}
+print "\n\t### FILTER TRAFFIC INTO CLASSES\n";
+foreach $classentry (sort @classes)
+{
+       @classline = split( /\;/, $classentry );
+       if ($qossettings{'RED_DEV'} eq $classline[0]) {
+               $qossettings{'DEVICE'} = $classline[0];
+               $qossettings{'CLASS'} = $classline[1];
+               print "\ttc filter add dev $qossettings{'DEVICE'} parent 1:0 prio 0 protocol ip handle $qossettings{'CLASS'} fw flowid 1:$qossettings{'CLASS'}\n";
+       }
+}
+foreach $subclassentry (sort @subclasses) {
+       @subclassline = split( /\;/, $subclassentry );
+       if ($qossettings{'RED_DEV'} eq $subclassline[0]) {
+               $qossettings{'DEVICE'} = $subclassline[0];
+               $qossettings{'CLASS'} = $subclassline[1];
+               $qossettings{'SCLASS'} = $subclassline[2];
+               print "\ttc filter add dev $qossettings{'DEVICE'} parent 1:0 prio 0 protocol ip handle $qossettings{'SCLASS'} fw flowid 1:$qossettings{'SCLASS'}\n";
+       }
+}
 print <<END
 
+       ### add l7-filter to PREROUTING chain to see all traffic
+       iptables -t mangle -A PREROUTING -m layer7 --l7proto unset
+
        ### ADD QOS-OUT CHAIN TO THE MANGLE TABLE IN IPTABLES
        iptables -t mangle -N QOS-OUT
+       iptables -t mangle -N QOS-TOS
        iptables -t mangle -I POSTROUTING -o $qossettings{'RED_DEV'} -j QOS-OUT
+       iptables -t mangle -A POSTROUTING -o $qossettings{'RED_DEV'} -j QOS-TOS
 
        ### Don't change mark on traffic for the ipsec tunnel
        iptables -t mangle -A QOS-OUT -m mark --mark 50 -j RETURN
 
        ### MARK ACKs
        iptables -t mangle -A QOS-OUT -p tcp --tcp-flags SYN,RST SYN -j TOS --set-tos 4
-       iptables -t mangle -A QOS-OUT -p tcp --tcp-flags SYN,RST SYN -j CLASSIFY --set-class 1:$qossettings{'ACK'}
+       iptables -t mangle -A QOS-OUT -p tcp --tcp-flags SYN,RST SYN -j MARK --set-mark $qossettings{'ACK'}
        iptables -t mangle -A QOS-OUT -p tcp --tcp-flags SYN,RST SYN -j RETURN
 
-       iptables -t mangle -A QOS-OUT -p icmp -m length --length 40:100 -j CLASSIFY --set-class 1:$qossettings{'ACK'}
+       iptables -t mangle -A QOS-OUT -p icmp -m length --length 40:100 -j MARK --set-mark $qossettings{'ACK'}
        iptables -t mangle -A QOS-OUT -p icmp -m length --length 40:100 -j RETURN
 
        iptables -t mangle -A QOS-OUT -p tcp --syn -m length --length 40:68 -j TOS --set-tos 4
-       iptables -t mangle -A QOS-OUT -p tcp --syn -m length --length 40:68 -j CLASSIFY --set-class 1:$qossettings{'ACK'}
+       iptables -t mangle -A QOS-OUT -p tcp --syn -m length --length 40:68 -j MARK --set-mark $qossettings{'ACK'}
        iptables -t mangle -A QOS-OUT -p tcp --syn -m length --length 40:68 -j RETURN
 
        iptables -t mangle -A QOS-OUT -p tcp --tcp-flags ALL SYN,ACK -m length --length 40:68 -j TOS --set-tos 4
-       iptables -t mangle -A QOS-OUT -p tcp --tcp-flags ALL SYN,ACK -m length --length 40:68 -j CLASSIFY --set-class 1:$qossettings{'ACK'}
+       iptables -t mangle -A QOS-OUT -p tcp --tcp-flags ALL SYN,ACK -m length --length 40:68 -j MARK --set-mark $qossettings{'ACK'}
        iptables -t mangle -A QOS-OUT -p tcp --tcp-flags ALL SYN,ACK -m length --length 40:68 -j RETURN
 
        iptables -t mangle -A QOS-OUT -p tcp --tcp-flags ALL ACK -m length --length 40:100 -j TOS --set-tos 4
-       iptables -t mangle -A QOS-OUT -p tcp --tcp-flags ALL ACK -m length --length 40:100 -j CLASSIFY --set-class 1:$qossettings{'ACK'}
+       iptables -t mangle -A QOS-OUT -p tcp --tcp-flags ALL ACK -m length --length 40:100 -j MARK --set-mark $qossettings{'ACK'}
        iptables -t mangle -A QOS-OUT -p tcp --tcp-flags ALL ACK -m length --length 40:100 -j RETURN
 
        iptables -t mangle -A QOS-OUT -p tcp --tcp-flags ALL RST -j TOS --set-tos 4
-       iptables -t mangle -A QOS-OUT -p tcp --tcp-flags ALL RST -j CLASSIFY --set-class 1:$qossettings{'ACK'}
+       iptables -t mangle -A QOS-OUT -p tcp --tcp-flags ALL RST -j MARK --set-mark $qossettings{'ACK'}
        iptables -t mangle -A QOS-OUT -p tcp --tcp-flags ALL RST -j RETURN
 
        iptables -t mangle -A QOS-OUT -p tcp --tcp-flags ALL ACK,RST -j TOS --set-tos 4
-       iptables -t mangle -A QOS-OUT -p tcp --tcp-flags ALL ACK,RST -j CLASSIFY --set-class 1:$qossettings{'ACK'}
+       iptables -t mangle -A QOS-OUT -p tcp --tcp-flags ALL ACK,RST -j MARK --set-mark $qossettings{'ACK'}
        iptables -t mangle -A QOS-OUT -p tcp --tcp-flags ALL ACK,RST -j RETURN
 
        iptables -t mangle -A QOS-OUT -p tcp --tcp-flags ALL ACK,FIN -j TOS --set-tos 4
-       iptables -t mangle -A QOS-OUT -p tcp --tcp-flags ALL ACK,FIN -j CLASSIFY --set-class 1:$qossettings{'ACK'}
+       iptables -t mangle -A QOS-OUT -p tcp --tcp-flags ALL ACK,FIN -j MARK --set-mark $qossettings{'ACK'}
        iptables -t mangle -A QOS-OUT -p tcp --tcp-flags ALL ACK,FIN -j RETURN
 
        ### SET TOS
@@ -237,7 +305,7 @@ END
                $qossettings{'TOS'} = abs $tosruleline[2] * 2;
                if ( $tosruleline[1] eq $qossettings{'RED_DEV'} )
                {
-                       print "\tiptables -t mangle -A QOS-OUT -m tos --tos $qossettings{'TOS'} -j CLASSIFY --set-class 1:$qossettings{'CLASS'}\n";
+                       print "\tiptables -t mangle -A QOS-OUT -m tos --tos $qossettings{'TOS'} -j MARK --set-mark $qossettings{'CLASS'}\n";
                        print "\tiptables -t mangle -A QOS-OUT -m tos --tos $qossettings{'TOS'} -j RETURN\n";
                }
        }
@@ -272,7 +340,7 @@ print "\n\t### SET PORT-RULES\n";
                        if ($qossettings{'DPORT'} ne ''){
                                print "--dport $qossettings{'DPORT'} ";
                        }
-                       print "-j CLASSIFY --set-class 1:$qossettings{'CLASS'}\n";
+                       print "-j MARK --set-mark $qossettings{'CLASS'}\n";
                        print "\tiptables -t mangle -A QOS-OUT ";
                        if ($qossettings{'QIP'} ne ''){
                                print "-s $qossettings{'QIP'} ";
@@ -293,6 +361,7 @@ print "\n\t### SET PORT-RULES\n";
                        print "-j RETURN\n\n";
                }
        }
+
 print <<END
 
        ### SET LEVEL7-RULES
@@ -315,7 +384,7 @@ END
                        if ($qossettings{'DIP'} ne ''){
                                print "-d $qossettings{'DIP'} ";
                        }
-                       print "-m layer7 --l7dir /etc/l7-protocols/protocols --l7proto $qossettings{'L7PROT'} -j CLASSIFY --set-class 1:$qossettings{'CLASS'}\n";
+                       print "-m layer7 --l7dir /etc/l7-protocols/protocols --l7proto $qossettings{'L7PROT'} -j MARK --set-mark $qossettings{'CLASS'}\n";
                        print "\tiptables -t mangle -A QOS-OUT ";
                        if ($qossettings{'QIP'} ne ''){
                                print "-s $qossettings{'QIP'} ";
@@ -330,7 +399,7 @@ END
 print <<END
 
        ### REDUNDANT: SET ALL NONMARKED PACKETS TO DEFAULT CLASS
-       iptables -t mangle -A QOS-OUT -j CLASSIFY --set-class 1:$qossettings{'DEFCLASS_OUT'}
+       iptables -t mangle -A QOS-OUT -m mark --mark 0 -j MARK --set-mark $qossettings{'DEFCLASS_OUT'}
 
        ###
        ### $qossettings{'IMQ_DEV'}
@@ -382,6 +451,27 @@ foreach $classentry (sort @classes)
                print "\n";
        }
 }
+foreach $subclassentry (sort @subclasses) {
+       @subclassline = split( /\;/, $subclassentry );
+       if ($qossettings{'IMQ_DEV'} eq $subclassline[0]) {
+               $qossettings{'DEVICE'} = $subclassline[0];
+               $qossettings{'CLASS'} = $subclassline[1];
+               $qossettings{'SCLASS'} = $subclassline[2];
+               $qossettings{'SPRIO'} = $subclassline[3];
+               $qossettings{'SRATE'} = $subclassline[4];
+               $qossettings{'SCEIL'} = $subclassline[5];
+               $qossettings{'SBURST'} = $subclassline[6];
+               $qossettings{'SCBURST'} = $subclassline[7];
+               print "\ttc class add dev $qossettings{'DEVICE'} parent 2:$qossettings{'CLASS'} classid 2:$qossettings{'SCLASS'} htb rate $qossettings{'SRATE'}kbit ceil $qossettings{'SCEIL'}kbit prio $qossettings{'SPRIO'} ";
+               if ($qossettings{'SBURST'} > 0) {
+                       print "burst $qossettings{'SBURST'}k ";
+               }
+               if (($qossettings{'SCBURST'} ne '') && ($qossettings{'SCBURST'} ne 0)) {
+                       print "cburst $qossettings{'CBURST'}k";
+               }
+               print "\n";
+       }
+}
 
 print "\n\t### ATTACH QDISC TO LEAF CLASSES\n";
 foreach $classentry (sort @classes)
@@ -393,11 +483,42 @@ foreach $classentry (sort @classes)
                print "\ttc qdisc add dev $qossettings{'DEVICE'} parent 2:$qossettings{'CLASS'} handle $qossettings{'CLASS'}: fq_codel $fqcodel_options\n";
        }
 }
+foreach $subclassentry (sort @subclasses) {
+       @subclassline = split( /\;/, $subclassentry );
+       if ($qossettings{'IMQ_DEV'} eq $subclassline[0]) {
+               $qossettings{'DEVICE'} = $subclassline[0];
+               $qossettings{'SCLASS'} = $subclassline[2];
+               print "\ttc qdisc add dev $qossettings{'DEVICE'} parent 2:$qossettings{'SCLASS'} handle $qossettings{'SCLASS'}: fq_codel $fqcodel_options\n";
+       }
+}
+print "\n\t### FILTER TRAFFIC INTO CLASSES\n";
+foreach $classentry (sort @classes)
+{
+       @classline = split( /\;/, $classentry );
+       if ($qossettings{'IMQ_DEV'} eq $classline[0]) {
+               $qossettings{'DEVICE'} = $classline[0];
+               $qossettings{'CLASS'} = $classline[1];
+               print "\ttc filter add dev $qossettings{'DEVICE'} parent 2:0 prio 0 protocol ip handle $qossettings{'CLASS'} fw flowid 2:$qossettings{'CLASS'}\n";
+       }
+}
+foreach $subclassentry (sort @subclasses) {
+       @subclassline = split( /\;/, $subclassentry );
+       if ($qossettings{'IMQ_DEV'} eq $subclassline[0]) {
+               $qossettings{'DEVICE'} = $subclassline[0];
+               $qossettings{'CLASS'} = $subclassline[1];
+               $qossettings{'SCLASS'} = $subclassline[2];
+               print "\ttc filter add dev $qossettings{'DEVICE'} parent 2:0 prio 0 protocol ip handle $qossettings{'SCLASS'} fw flowid 2:$qossettings{'SCLASS'}\n";
+       }
+}
 print <<END
 
        ### ADD QOS-INC CHAIN TO THE MANGLE TABLE IN IPTABLES
        iptables -t mangle -N QOS-INC
-       iptables -t mangle -A FORWARD -i $qossettings{'RED_DEV'} -j QOS-INC
+       iptables -t mangle -A PREROUTING -i $qossettings{'RED_DEV'} -p ah -j RETURN
+       iptables -t mangle -A PREROUTING -i $qossettings{'RED_DEV'} -p esp -j RETURN
+       iptables -t mangle -A PREROUTING -i $qossettings{'RED_DEV'} -p ip -j RETURN
+       iptables -t mangle -A PREROUTING -i $qossettings{'RED_DEV'} -j QOS-INC
+       iptables -t mangle -A PREROUTING -i $qossettings{'RED_DEV'} -j QOS-TOS
 
        ### SET TOS
 END
@@ -409,7 +530,7 @@ END
                $qossettings{'TOS'} = abs $tosruleline[2] * 2;
                if ( $tosruleline[1] eq $qossettings{'IMQ_DEV'} )
                {
-                       print "\tiptables -t mangle -A QOS-INC -m tos --tos $qossettings{'TOS'} -j CLASSIFY --set-class 2:$qossettings{'CLASS'}\n";
+                       print "\tiptables -t mangle -A QOS-INC -m tos --tos $qossettings{'TOS'} -j MARK --set-mark $qossettings{'CLASS'}\n";
                        print "\tiptables -t mangle -A QOS-INC -m tos --tos $qossettings{'TOS'} -j RETURN\n";
                }
 
@@ -445,7 +566,7 @@ print "\n\t### SET PORT-RULES\n";
                        if ($qossettings{'DPORT'} ne ''){
                                print "--dport $qossettings{'DPORT'} ";
                        }
-                       print "-j CLASSIFY --set-class 2:$qossettings{'CLASS'}\n";
+                       print "-j MARK --set-mark $qossettings{'CLASS'}\n";
                        print "\tiptables -t mangle -A QOS-INC ";
                        if ($qossettings{'QIP'} ne ''){
                                print "-s $qossettings{'QIP'} ";
@@ -489,7 +610,7 @@ END
                        if ($qossettings{'DIP'} ne ''){
                                print "-d $qossettings{'DIP'} ";
                        }
-                       print "-m layer7 --l7dir /etc/l7-protocols/protocols --l7proto $qossettings{'L7PROT'} -j CLASSIFY --set-class 2:$qossettings{'CLASS'}\n";
+                       print "-m layer7 --l7dir /etc/l7-protocols/protocols --l7proto $qossettings{'L7PROT'} -j MARK --set-mark $qossettings{'CLASS'}\n";
                        print "\tiptables -t mangle -A QOS-INC ";
                        if ($qossettings{'QIP'} ne ''){
                                print "-s $qossettings{'QIP'} ";
@@ -503,7 +624,34 @@ END
 
 print <<END
        ### REDUNDANT: SET ALL NONMARKED PACKETS TO DEFAULT CLASS
-       iptables -t mangle -A QOS-INC -j CLASSIFY --set-class 2:$qossettings{'DEFCLASS_INC'}
+       iptables -t mangle -A QOS-INC -m mark --mark 0 -j MARK --set-mark $qossettings{'DEFCLASS_INC'}
+
+       ### SETTING TOS BITS
+END
+;
+       foreach $classentry (sort @classes)
+       {
+               @classline = split( /\;/, $classentry );
+               $qossettings{'CLASS'} = $classline[1];
+               $qossettings{'TOS'} = abs $classline[7] * 2;
+               if ($qossettings{'TOS'} ne "0") {
+                       print "\tiptables -t mangle -A QOS-TOS -m mark --mark $qossettings{'CLASS'} -j TOS --set-tos $qossettings{'TOS'}\n";
+                       print "\tiptables -t mangle -A QOS-TOS -m mark --mark $qossettings{'CLASS'} -j RETURN\n";
+               }
+       }
+       foreach $subclassentry (sort @subclasses)
+       {
+               @subclassline = split( /\;/, $subclassentry );
+               $qossettings{'SUBCLASS'} = $subclassline[1];
+               $qossettings{'TOS'} = $subclassline[8];
+               $qossettings{'TOS'} = abs $qossettings{'TOS'} * 2;
+               if ($qossettings{'TOS'} ne "0") {
+                       print "\tiptables -t mangle -A QOS-TOS -m mark --mark $qossettings{'SUBCLASS'} -j TOS --set-tos $qossettings{'TOS'}\n";
+                       print "\tiptables -t mangle -A QOS-TOS -m mark --mark $qossettings{'SUBCLASS'} -j RETURN\n";
+               }
+       }
+
+print <<END
 
        ## STARTING COLLECTOR
        /usr/local/bin/qosd $qossettings{'RED_DEV'} >/dev/null 2>&1
@@ -532,12 +680,24 @@ print <<END
        ip link del $qossettings{'IMQ_DEV'} >/dev/null 2>&1
 
        # REMOVE & FLUSH CHAINS
+       iptables -t mangle --delete POSTROUTING -i $qossettings{'RED_DEV'} -p ah -j RETURN >/dev/null 2>&1
+       iptables -t mangle --delete POSTROUTING -i $qossettings{'RED_DEV'} -p esp -j RETURN >/dev/null 2>&1
+       iptables -t mangle --delete POSTROUTING -i $qossettings{'RED_DEV'} -p ip -j RETURN >/dev/null 2>&1
+       iptables -t mangle --delete PREROUTING -i $qossettings{'RED_DEV'} -p ah -j RETURN >/dev/null 2>&1
+       iptables -t mangle --delete PREROUTING -i $qossettings{'RED_DEV'} -p esp -j RETURN >/dev/null 2>&1
+       iptables -t mangle --delete PREROUTING -i $qossettings{'RED_DEV'} -p ip -j RETURN >/dev/null 2>&1
        iptables -t mangle --delete POSTROUTING -o $qossettings{'RED_DEV'} -j QOS-OUT >/dev/null 2>&1
-       iptables -t mangle --delete FORWARD -i $qossettings{'RED_DEV'} -j QOS-INC >/dev/null 2>&1
+       iptables -t mangle --delete POSTROUTING -o $qossettings{'RED_DEV'} -j QOS-TOS >/dev/null 2>&1
+       iptables -t mangle --delete PREROUTING -i $qossettings{'RED_DEV'} -j QOS-INC >/dev/null 2>&1
+       iptables -t mangle --delete PREROUTING -i $qossettings{'RED_DEV'} -j QOS-TOS >/dev/null 2>&1
        iptables -t mangle --flush  QOS-OUT >/dev/null 2>&1
        iptables -t mangle --delete-chain QOS-OUT >/dev/null 2>&1
        iptables -t mangle --flush  QOS-INC >/dev/null 2>&1
        iptables -t mangle --delete-chain QOS-INC >/dev/null 2>&1
+       iptables -t mangle --flush  QOS-TOS >/dev/null 2>&1
+       iptables -t mangle --delete-chain QOS-TOS >/dev/null 2>&1
+       # remove l7-filter
+       iptables -t mangle --delete PREROUTING -m layer7 --l7proto unset
 
        rmmod sch_htb >/dev/null 2>&1