This script configures CAKE as default qdisc where appropriate:
* It is not suitable to use any queue management on bridges/GRE/VTI/tun interfaces. * On Internet-facing interfaces, CAKE is configured in "internet" mode whereas on any zones except RED, it is configured in "metro" mode
Signed-off-by: Michael Tremer michael.tremer@ipfire.org --- config/udev/enable_codel | 65 ++++++++++++++++++++++++++++++++-------- 1 file changed, 52 insertions(+), 13 deletions(-)
diff --git a/config/udev/enable_codel b/config/udev/enable_codel index 6cafd9b26..3ef9b0f59 100644 --- a/config/udev/enable_codel +++ b/config/udev/enable_codel @@ -21,9 +21,9 @@ # # ############################################################################
-LOG_FACILITY="codel" +LOG_FACILITY="aqm"
-function log() { +log() { logger -t "${LOG_FACILITY}" $@ }
@@ -32,19 +32,58 @@ if [ -z "${INTERFACE}" ]; then exit 1 fi
-# Do nothing for the loopback device. -[ "${INTERFACE}" = "lo" ] && exit 0 - case "${ACTION}" in add|register) - # Change root qdisc to use fq_codel. - /sbin/tc qdisc add root dev ${INTERFACE} fq_codel - ret=$? - - if [ ${ret} -eq 0 ]; then - log "Codel AQM has been enabled on '${INTERFACE}'." - else - log "Codel AQM could not be enabled on '${INTERFACE}'. Error code: ${ret}" + TYPE="$(</sys/class/net/${INTERFACE}/type)" + + # Detect bridges + if [ -d "/sys/class/net/${INTERFACE}/bridge" ]; then + TYPE="bridge" + fi + + args=() + + # Configure some useful defaults depending on the interface + case "${INTERFACE},${TYPE}" in + # Ignore loopback + lo,*) + exit 0 + ;; + + # Ignore tun + tun*) + exit 0 + ;; + + # Ignore GRE/VTI + *,778|*,768) + exit 0 + ;; + + # Ignore bridges + *,bridge) + exit 0 + ;; + + # Handle RED PPPoE (default to VDSL2) + ppp*,512) + args+=( "cake" "internet" "pppoe-ptm" "ack-filter" ) + ;; + + # Treat any other interfaces as "Ethernet" + red*,*) + args+=( "cake" "internet" "ethernet" ) + ;; + + # All other interfaces are locally connected + *) + args+=( "cake" "ethernet" "metro" ) + ;; + esac + + # Change root qdisc to use cake + if ! tc qdisc replace root dev "${INTERFACE}" "${args[@]}"; then + log "Could not configure qdisc on ${INTERFACE} with parameters ${args[@]}" exit ${ret} fi ;;
This is a more generic term since CoDel is no longer being used
Signed-off-by: Michael Tremer michael.tremer@ipfire.org --- config/rootfiles/common/udev | 4 ++-- config/udev/99-aqm.rules | 2 ++ config/udev/99-codel.rules | 2 -- config/udev/{enable_codel => network-aqm} | 0 lfs/udev | 8 ++++---- 5 files changed, 8 insertions(+), 8 deletions(-) create mode 100644 config/udev/99-aqm.rules delete mode 100644 config/udev/99-codel.rules rename config/udev/{enable_codel => network-aqm} (100%)
diff --git a/config/rootfiles/common/udev b/config/rootfiles/common/udev index 4a01f3eef..5c1267abe 100644 --- a/config/rootfiles/common/udev +++ b/config/rootfiles/common/udev @@ -31,9 +31,9 @@ lib/udev lib/udev/ata_id lib/udev/cdrom_id lib/udev/collect -lib/udev/enable_codel lib/udev/init-net-rules.sh lib/udev/mtd_probe +lib/udev/network-aqm lib/udev/network-hotplug-bridges lib/udev/network-hotplug-rename lib/udev/network-hotplug-vlan @@ -64,7 +64,7 @@ lib/udev/rules.d/75-probe_mtd.rules lib/udev/rules.d/78-sound-card.rules lib/udev/rules.d/80-drivers.rules lib/udev/rules.d/90-hwrng.rules -lib/udev/rules.d/99-codel.rules +lib/udev/rules.d/99-aqm.rules lib/udev/rules.d/99-offloading.rules lib/udev/scsi_id lib/udev/v4l_id diff --git a/config/udev/99-aqm.rules b/config/udev/99-aqm.rules new file mode 100644 index 000000000..69c909da7 --- /dev/null +++ b/config/udev/99-aqm.rules @@ -0,0 +1,2 @@ +# Call the AQM script +SUBSYSTEM=="net", RUN+="/lib/udev/network-aqm" diff --git a/config/udev/99-codel.rules b/config/udev/99-codel.rules deleted file mode 100644 index d6747ba04..000000000 --- a/config/udev/99-codel.rules +++ /dev/null @@ -1,2 +0,0 @@ -# Call the enable codel script. -SUBSYSTEM=="net", RUN+="/lib/udev/enable_codel" diff --git a/config/udev/enable_codel b/config/udev/network-aqm similarity index 100% rename from config/udev/enable_codel rename to config/udev/network-aqm diff --git a/lfs/udev b/lfs/udev index cfad0398b..3f526a3fa 100644 --- a/lfs/udev +++ b/lfs/udev @@ -126,11 +126,11 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) install -v -m 644 $(DIR_SRC)/config/udev/90-hwrng.rules \ /lib/udev/rules.d
- # Install codel rules. - install -v -m 644 $(DIR_SRC)/config/udev/99-codel.rules \ + # Install AQM rules + install -v -m 644 $(DIR_SRC)/config/udev/99-aqm.rules \ /lib/udev/rules.d - install -m 755 $(DIR_SRC)/config/udev/enable_codel \ - /lib/udev/enable_codel + install -m 755 $(DIR_SRC)/config/udev/network-aqm \ + /lib/udev/network-aqm
# Install offloading rules install -v -m 644 $(DIR_SRC)/config/udev/99-offloading.rules \
This is just swappin the qdisc without any further configuration.
Signed-off-by: Michael Tremer michael.tremer@ipfire.org --- config/qos/makeqosscripts.pl | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-)
diff --git a/config/qos/makeqosscripts.pl b/config/qos/makeqosscripts.pl index 3234ab366..442324b98 100644 --- a/config/qos/makeqosscripts.pl +++ b/config/qos/makeqosscripts.pl @@ -54,7 +54,7 @@ my $classfile = "/var/ipfire/qos/classes"; my $level7file = "/var/ipfire/qos/level7config"; my $portfile = "/var/ipfire/qos/portconfig"; my $tosfile = "/var/ipfire/qos/tosconfig"; -my $fqcodel_options = "limit 10240 quantum 1514"; +my @cake_options = ();
# Define iptables MARKs my $QOS_INC_MASK = 0x0000ff00; @@ -200,7 +200,7 @@ foreach $classentry (sort @classes) if ($qossettings{'RED_DEV'} eq $classline[0]) { $qossettings{'DEVICE'} = $classline[0]; $qossettings{'CLASS'} = $classline[1]; - print "\ttc qdisc add dev $qossettings{'DEVICE'} parent 1:$qossettings{'CLASS'} handle $qossettings{'CLASS'}: fq_codel $fqcodel_options\n"; + print "\ttc qdisc add dev $qossettings{'DEVICE'} parent 1:$qossettings{'CLASS'} handle $qossettings{'CLASS'}: cake @cake_options\n"; } } print "\n\t### FILTER TRAFFIC INTO CLASSES\n"; @@ -371,7 +371,7 @@ foreach $classentry (sort @classes) if ($qossettings{'IMQ_DEV'} eq $classline[0]) { $qossettings{'DEVICE'} = $classline[0]; $qossettings{'CLASS'} = $classline[1]; - print "\ttc qdisc add dev $qossettings{'DEVICE'} parent 2:$qossettings{'CLASS'} handle $qossettings{'CLASS'}: fq_codel $fqcodel_options\n"; + print "\ttc qdisc add dev $qossettings{'DEVICE'} parent 2:$qossettings{'CLASS'} handle $qossettings{'CLASS'}: cake @cake_options\n"; } } print "\n\t### FILTER TRAFFIC INTO CLASSES\n"; @@ -494,10 +494,7 @@ print <<END # DELETE QDISCS tc qdisc del dev $qossettings{'RED_DEV'} root >/dev/null 2>&1 tc qdisc del dev $qossettings{'RED_DEV'} ingress >/dev/null 2>&1 - tc qdisc add root dev $qossettings{'RED_DEV'} fq_codel >/dev/null 2>&1 - tc qdisc del dev $qossettings{'IMQ_DEV'} root >/dev/null 2>&1 - tc qdisc del dev $qossettings{'IMQ_DEV'} ingress >/dev/null 2>&1 - tc qdisc add root dev $qossettings{'IMQ_DEV'} fq_codel >/dev/null 2>&1 + INTERFACE="$qossettings{'RED_DEV'}" ACTION="add" /lib/udev/network-aqm &>/dev/null # STOP IMQ-DEVICE ip link set $qossettings{'IMQ_DEV'} down >/dev/null 2>&1 ip link del $qossettings{'IMQ_DEV'} >/dev/null 2>&1
Some devices do not have an address, which prints an error when reading it.
Signed-off-by: Michael Tremer michael.tremer@ipfire.org --- config/udev/network-hotplug-bridges | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/config/udev/network-hotplug-bridges b/config/udev/network-hotplug-bridges index bacf722ef..4b8764598 100644 --- a/config/udev/network-hotplug-bridges +++ b/config/udev/network-hotplug-bridges @@ -41,9 +41,8 @@ detect_zone() { # Try to find out if this INTERFACE is a slave of a zone local slave for slave in $(get_value "${zone}_SLAVES"); do - - #Compare if the mac address matches or if the name matches - if ([ "$(</sys/class/net/${INTERFACE}/address)" = "${slave}" ] || [ "${INTERFACE}" = "${slave}" ]); then + # Compare if the mac address matches or if the name matches + if [ -r "/sys/class/net/${INTERFACE}/address" -a "$(</sys/class/net/${INTERFACE}/address)" = "${slave}" ] || [ "${INTERFACE}" = "${slave}" ]; then echo "${zone}" return 0 fi
Signed-off-by: Michael Tremer michael.tremer@ipfire.org --- html/cgi-bin/qos.cgi | 45 ++++++++++++++++++++++++++++++-------------- 1 file changed, 31 insertions(+), 14 deletions(-)
diff --git a/html/cgi-bin/qos.cgi b/html/cgi-bin/qos.cgi index eb4b2e637..a26617edd 100644 --- a/html/cgi-bin/qos.cgi +++ b/html/cgi-bin/qos.cgi @@ -749,26 +749,43 @@ END
sub changebandwidth { &Header::openbox('100%', 'center', $Lang::tr{'bandwidthsettings'}); + if ($qossettings{'ENABLED'} eq 'on') { print "$Lang::tr{'bandwidtherror'}"; print "<a href='/cgi-bin/qos.cgi'>$Lang::tr{'back'}</a>"; } else { - print <<END - <form method='post' action='$ENV{'SCRIPT_NAME'}'> - <input type='hidden' name='DEF_OUT_SPD' value='' /><input type='hidden' name='DEF_INC_SPD' value='' /> - <table width='66%'> - <tr><td width='100%' colspan='3'>$Lang::tr{'down and up speed'}</td></tr> - <tr><td width='50%' align='right'>$Lang::tr{'downlink speed'}:</td> - <td width='30%' align='left'><input type='text' name='INC_SPD' maxlength='8' value="$qossettings{'INC_SPD'}" /></td> - <td width='20%' align='center' rowspan='2'><input type='submit' name='ACTION' value="$Lang::tr{'template'}" /><br /><input type='submit' name='ACTION' value="$Lang::tr{'save'}" /><br /><input type='reset' name='ACTION' value="$Lang::tr{'reset'}" /></td></tr> - <tr><td width='50%' align='right'>$Lang::tr{'uplink speed'}:</td> - <td width='30%' align='left'><input type='text' name='OUT_SPD' maxlength='8' value="$qossettings{'OUT_SPD'}" /></td></tr> - </table> - </form> - <font color='red'>$Lang::tr{'template warning'}</font> + print <<END; + <form method='post' action='$ENV{'SCRIPT_NAME'}'> + <input type='hidden' name='DEF_OUT_SPD' value='' /><input type='hidden' name='DEF_INC_SPD' value='' /> + <table width='66%'> + <tr> + <td width='100%' colspan='3'>$Lang::tr{'down and up speed'}</td> + </tr> + <tr> + <td width='50%' align='right'>$Lang::tr{'downlink speed'}:</td> + <td width='30%' align='left'> + <input type='text' name='INC_SPD' maxlength='8' value="$qossettings{'INC_SPD'}" /> + </td> + <td width='20%' align='center' rowspan='2'> + <input type='submit' name='ACTION' value="$Lang::tr{'template'}" /> + <br /> + <input type='submit' name='ACTION' value="$Lang::tr{'save'}" /> + <br /> + <input type='reset' name='ACTION' value="$Lang::tr{'reset'}" /> + </td> + </tr> + <tr> + <td width='50%' align='right'>$Lang::tr{'uplink speed'}:</td> + <td width='30%' align='left'> + <input type='text' name='OUT_SPD' maxlength='8' value="$qossettings{'OUT_SPD'}" /> + </td> + </tr> + </table> + </form> + <font color='red'>$Lang::tr{'template warning'}</font> END -; } + &Header::closebox(); }
Signed-off-by: Michael Tremer michael.tremer@ipfire.org --- doc/language_issues.de | 16 ++++++ doc/language_issues.en | 16 ++++++ doc/language_issues.es | 16 ++++++ doc/language_issues.fr | 16 ++++++ doc/language_issues.it | 16 ++++++ doc/language_issues.nl | 16 ++++++ doc/language_issues.pl | 16 ++++++ doc/language_issues.ru | 16 ++++++ doc/language_issues.tr | 16 ++++++ doc/language_missings | 128 +++++++++++++++++++++++++++++++++++++++++ html/cgi-bin/qos.cgi | 70 ++++++++++++++++++---- langs/en/cgi-bin/en.pl | 16 ++++++ 12 files changed, 348 insertions(+), 10 deletions(-)
diff --git a/doc/language_issues.de b/doc/language_issues.de index d0275b5ef..668612dd3 100644 --- a/doc/language_issues.de +++ b/doc/language_issues.de @@ -855,6 +855,21 @@ WARNING: translation string unused: zoneconf val vlan amount assignment error WARNING: translation string unused: zoneconf val vlan tag assignment error WARNING: translation string unused: zoneconf val vlan tag range error WARNING: translation string unused: zoneconf val zoneslave amount error +WARNING: untranslated string: cake profile bridged-llcsnap 32 = Bridged LLC SNAP (32 bytes) +WARNING: untranslated string: cake profile bridged-ptm 19 = Bridged PTM (19 bytes) +WARNING: untranslated string: cake profile bridged-vcmux 24 = Bridged VC-MUX (24 bytes) +WARNING: untranslated string: cake profile conservative 48 = Conservative (should work on all connections, 48 bytes) +WARNING: untranslated string: cake profile docsis 18 = DOCSIS (18 bytes) +WARNING: untranslated string: cake profile ethernet 38 = Ethernet (38 bytes) +WARNING: untranslated string: cake profile ethernet vlan 42 = Ethernet with VLAN (42 bytes) +WARNING: untranslated string: cake profile ipoa-llcsnap 16 = IP over ATM LLC SNAP (16 bytes) +WARNING: untranslated string: cake profile ipoa-vcmux 8 = IP over ATM VC-MUX (8 bytes) +WARNING: untranslated string: cake profile pppoa-llc 14 = PPPoA LLC (14 bytes) +WARNING: untranslated string: cake profile pppoa-vcmux 10 = PPPoA VC-MUX (10 bytes) +WARNING: untranslated string: cake profile pppoe-llcsnap 40 = PPPoE LLC SNAP (40 bytes) +WARNING: untranslated string: cake profile pppoe-ptm 27 = PPPoE PTM (27 bytes) +WARNING: untranslated string: cake profile pppoe-vcmux 32 = PPPoE VC-MUX (32 bytes) +WARNING: untranslated string: cake profile raw 0 = Raw (no overhead compensation) WARNING: untranslated string: desired = Desired WARNING: untranslated string: disable = Disable WARNING: untranslated string: download apple profile = Download Apple Configuration Profile @@ -894,6 +909,7 @@ WARNING: untranslated string: guardian service = unknown string WARNING: untranslated string: ipsec dns server address is invalid = Invalid DNS server IP address(es) WARNING: untranslated string: ipsec invalid ip address or fqdn for rw endpoint = Invalid IP address or FQDN for Host-to-Net Endpoint WARNING: untranslated string: ipsec roadwarrior endpoint = Host-to-Net Endpoint +WARNING: untranslated string: link-layer encapsulation = Link-Layer Encapsulation WARNING: untranslated string: netbios nameserver daemon = NetBIOS Nameserver Daemon WARNING: untranslated string: no entries = No entries at the moment. WARNING: untranslated string: optional = Optional diff --git a/doc/language_issues.en b/doc/language_issues.en index e2d131a8e..8fc632a03 100644 --- a/doc/language_issues.en +++ b/doc/language_issues.en @@ -372,6 +372,21 @@ WARNING: untranslated string: ca name = CA name WARNING: untranslated string: cached = cached WARNING: untranslated string: cached memory = Cached Memory WARNING: untranslated string: cached swap = Cached Swap +WARNING: untranslated string: cake profile bridged-llcsnap 32 = Bridged LLC SNAP (32 bytes) +WARNING: untranslated string: cake profile bridged-ptm 19 = Bridged PTM (19 bytes) +WARNING: untranslated string: cake profile bridged-vcmux 24 = Bridged VC-MUX (24 bytes) +WARNING: untranslated string: cake profile conservative 48 = Conservative (should work on all connections, 48 bytes) +WARNING: untranslated string: cake profile docsis 18 = DOCSIS (18 bytes) +WARNING: untranslated string: cake profile ethernet 38 = Ethernet (38 bytes) +WARNING: untranslated string: cake profile ethernet vlan 42 = Ethernet with VLAN (42 bytes) +WARNING: untranslated string: cake profile ipoa-llcsnap 16 = IP over ATM LLC SNAP (16 bytes) +WARNING: untranslated string: cake profile ipoa-vcmux 8 = IP over ATM VC-MUX (8 bytes) +WARNING: untranslated string: cake profile pppoa-llc 14 = PPPoA LLC (14 bytes) +WARNING: untranslated string: cake profile pppoa-vcmux 10 = PPPoA VC-MUX (10 bytes) +WARNING: untranslated string: cake profile pppoe-llcsnap 40 = PPPoE LLC SNAP (40 bytes) +WARNING: untranslated string: cake profile pppoe-ptm 27 = PPPoE PTM (27 bytes) +WARNING: untranslated string: cake profile pppoe-vcmux 32 = PPPoE VC-MUX (32 bytes) +WARNING: untranslated string: cake profile raw 0 = Raw (no overhead compensation) WARNING: untranslated string: calamaris available reports = Available reports WARNING: untranslated string: calamaris byte unit = Byte unit WARNING: untranslated string: calamaris create report = Create report @@ -1170,6 +1185,7 @@ WARNING: untranslated string: least preferred = least preferred WARNING: untranslated string: legacy architecture warning = You are running IPFire on a legacy architecture and it is recommended to upgrade WARNING: untranslated string: legend = Legend WARNING: untranslated string: lifetime = Lifetime: +WARNING: untranslated string: link-layer encapsulation = Link-Layer Encapsulation WARNING: untranslated string: linkq = Link Quality WARNING: untranslated string: local ip address = Local IP Address WARNING: untranslated string: local ntp server specified but not enabled = Local NTP server specified but not enabled diff --git a/doc/language_issues.es b/doc/language_issues.es index 39b9bef48..684c4d6b1 100644 --- a/doc/language_issues.es +++ b/doc/language_issues.es @@ -836,6 +836,21 @@ WARNING: untranslated string: bit = bit WARNING: untranslated string: block = Block WARNING: untranslated string: broken = Broken WARNING: untranslated string: bytes = unknown string +WARNING: untranslated string: cake profile bridged-llcsnap 32 = Bridged LLC SNAP (32 bytes) +WARNING: untranslated string: cake profile bridged-ptm 19 = Bridged PTM (19 bytes) +WARNING: untranslated string: cake profile bridged-vcmux 24 = Bridged VC-MUX (24 bytes) +WARNING: untranslated string: cake profile conservative 48 = Conservative (should work on all connections, 48 bytes) +WARNING: untranslated string: cake profile docsis 18 = DOCSIS (18 bytes) +WARNING: untranslated string: cake profile ethernet 38 = Ethernet (38 bytes) +WARNING: untranslated string: cake profile ethernet vlan 42 = Ethernet with VLAN (42 bytes) +WARNING: untranslated string: cake profile ipoa-llcsnap 16 = IP over ATM LLC SNAP (16 bytes) +WARNING: untranslated string: cake profile ipoa-vcmux 8 = IP over ATM VC-MUX (8 bytes) +WARNING: untranslated string: cake profile pppoa-llc 14 = PPPoA LLC (14 bytes) +WARNING: untranslated string: cake profile pppoa-vcmux 10 = PPPoA VC-MUX (10 bytes) +WARNING: untranslated string: cake profile pppoe-llcsnap 40 = PPPoE LLC SNAP (40 bytes) +WARNING: untranslated string: cake profile pppoe-ptm 27 = PPPoE PTM (27 bytes) +WARNING: untranslated string: cake profile pppoe-vcmux 32 = PPPoE VC-MUX (32 bytes) +WARNING: untranslated string: cake profile raw 0 = Raw (no overhead compensation) WARNING: untranslated string: capabilities = Capabilities WARNING: untranslated string: ccd add = Add network WARNING: untranslated string: ccd choose net = Choose network @@ -1249,6 +1264,7 @@ WARNING: untranslated string: last = Last WARNING: untranslated string: least preferred = least preferred WARNING: untranslated string: legacy architecture warning = You are running IPFire on a legacy architecture and it is recommended to upgrade WARNING: untranslated string: lifetime = Lifetime: +WARNING: untranslated string: link-layer encapsulation = Link-Layer Encapsulation WARNING: untranslated string: local ip address = Local IP Address WARNING: untranslated string: log server protocol = protocol: WARNING: untranslated string: mac filter = MAC filter diff --git a/doc/language_issues.fr b/doc/language_issues.fr index 6a300858d..e9d589658 100644 --- a/doc/language_issues.fr +++ b/doc/language_issues.fr @@ -899,6 +899,21 @@ WARNING: translation string unused: zoneconf val vlan amount assignment error WARNING: translation string unused: zoneconf val vlan tag assignment error WARNING: translation string unused: zoneconf val vlan tag range error WARNING: translation string unused: zoneconf val zoneslave amount error +WARNING: untranslated string: cake profile bridged-llcsnap 32 = Bridged LLC SNAP (32 bytes) +WARNING: untranslated string: cake profile bridged-ptm 19 = Bridged PTM (19 bytes) +WARNING: untranslated string: cake profile bridged-vcmux 24 = Bridged VC-MUX (24 bytes) +WARNING: untranslated string: cake profile conservative 48 = Conservative (should work on all connections, 48 bytes) +WARNING: untranslated string: cake profile docsis 18 = DOCSIS (18 bytes) +WARNING: untranslated string: cake profile ethernet 38 = Ethernet (38 bytes) +WARNING: untranslated string: cake profile ethernet vlan 42 = Ethernet with VLAN (42 bytes) +WARNING: untranslated string: cake profile ipoa-llcsnap 16 = IP over ATM LLC SNAP (16 bytes) +WARNING: untranslated string: cake profile ipoa-vcmux 8 = IP over ATM VC-MUX (8 bytes) +WARNING: untranslated string: cake profile pppoa-llc 14 = PPPoA LLC (14 bytes) +WARNING: untranslated string: cake profile pppoa-vcmux 10 = PPPoA VC-MUX (10 bytes) +WARNING: untranslated string: cake profile pppoe-llcsnap 40 = PPPoE LLC SNAP (40 bytes) +WARNING: untranslated string: cake profile pppoe-ptm 27 = PPPoE PTM (27 bytes) +WARNING: untranslated string: cake profile pppoe-vcmux 32 = PPPoE VC-MUX (32 bytes) +WARNING: untranslated string: cake profile raw 0 = Raw (no overhead compensation) WARNING: untranslated string: false max bandwidth = Maximum bandwidth is false. WARNING: untranslated string: false min bandwidth = Minimum bandwidth is false. WARNING: untranslated string: fwhost cust locationgrp = unknown string @@ -933,6 +948,7 @@ WARNING: untranslated string: guardian logtarget_file = unknown string WARNING: untranslated string: guardian logtarget_syslog = unknown string WARNING: untranslated string: guardian no entries = unknown string WARNING: untranslated string: guardian service = unknown string +WARNING: untranslated string: link-layer encapsulation = Link-Layer Encapsulation WARNING: untranslated string: max bandwidth = Maximum bandwidth WARNING: untranslated string: pakfire ago = ago. WARNING: untranslated string: route config changed = unknown string diff --git a/doc/language_issues.it b/doc/language_issues.it index 993c76b82..02e6e504c 100644 --- a/doc/language_issues.it +++ b/doc/language_issues.it @@ -921,6 +921,21 @@ WARNING: untranslated string: available = available WARNING: untranslated string: block = Block WARNING: untranslated string: broken = Broken WARNING: untranslated string: bytes = unknown string +WARNING: untranslated string: cake profile bridged-llcsnap 32 = Bridged LLC SNAP (32 bytes) +WARNING: untranslated string: cake profile bridged-ptm 19 = Bridged PTM (19 bytes) +WARNING: untranslated string: cake profile bridged-vcmux 24 = Bridged VC-MUX (24 bytes) +WARNING: untranslated string: cake profile conservative 48 = Conservative (should work on all connections, 48 bytes) +WARNING: untranslated string: cake profile docsis 18 = DOCSIS (18 bytes) +WARNING: untranslated string: cake profile ethernet 38 = Ethernet (38 bytes) +WARNING: untranslated string: cake profile ethernet vlan 42 = Ethernet with VLAN (42 bytes) +WARNING: untranslated string: cake profile ipoa-llcsnap 16 = IP over ATM LLC SNAP (16 bytes) +WARNING: untranslated string: cake profile ipoa-vcmux 8 = IP over ATM VC-MUX (8 bytes) +WARNING: untranslated string: cake profile pppoa-llc 14 = PPPoA LLC (14 bytes) +WARNING: untranslated string: cake profile pppoa-vcmux 10 = PPPoA VC-MUX (10 bytes) +WARNING: untranslated string: cake profile pppoe-llcsnap 40 = PPPoE LLC SNAP (40 bytes) +WARNING: untranslated string: cake profile pppoe-ptm 27 = PPPoE PTM (27 bytes) +WARNING: untranslated string: cake profile pppoe-vcmux 32 = PPPoE VC-MUX (32 bytes) +WARNING: untranslated string: cake profile raw 0 = Raw (no overhead compensation) WARNING: untranslated string: check all = Check all WARNING: untranslated string: cpu frequency = CPU frequency WARNING: untranslated string: crypto error = Cryptographic error @@ -1084,6 +1099,7 @@ WARNING: untranslated string: ipsec routing table entries = IPsec Routing Table WARNING: untranslated string: ipsec settings = IPsec Settings WARNING: untranslated string: itlb multihit = iTLB MultiHit WARNING: untranslated string: legacy architecture warning = You are running IPFire on a legacy architecture and it is recommended to upgrade +WARNING: untranslated string: link-layer encapsulation = Link-Layer Encapsulation WARNING: untranslated string: local ip address = Local IP Address WARNING: untranslated string: location = Location WARNING: untranslated string: locationblock = Location Block diff --git a/doc/language_issues.nl b/doc/language_issues.nl index 664a2dd62..7b403f2af 100644 --- a/doc/language_issues.nl +++ b/doc/language_issues.nl @@ -917,6 +917,21 @@ WARNING: untranslated string: available = available WARNING: untranslated string: block = Block WARNING: untranslated string: broken = Broken WARNING: untranslated string: bytes = unknown string +WARNING: untranslated string: cake profile bridged-llcsnap 32 = Bridged LLC SNAP (32 bytes) +WARNING: untranslated string: cake profile bridged-ptm 19 = Bridged PTM (19 bytes) +WARNING: untranslated string: cake profile bridged-vcmux 24 = Bridged VC-MUX (24 bytes) +WARNING: untranslated string: cake profile conservative 48 = Conservative (should work on all connections, 48 bytes) +WARNING: untranslated string: cake profile docsis 18 = DOCSIS (18 bytes) +WARNING: untranslated string: cake profile ethernet 38 = Ethernet (38 bytes) +WARNING: untranslated string: cake profile ethernet vlan 42 = Ethernet with VLAN (42 bytes) +WARNING: untranslated string: cake profile ipoa-llcsnap 16 = IP over ATM LLC SNAP (16 bytes) +WARNING: untranslated string: cake profile ipoa-vcmux 8 = IP over ATM VC-MUX (8 bytes) +WARNING: untranslated string: cake profile pppoa-llc 14 = PPPoA LLC (14 bytes) +WARNING: untranslated string: cake profile pppoa-vcmux 10 = PPPoA VC-MUX (10 bytes) +WARNING: untranslated string: cake profile pppoe-llcsnap 40 = PPPoE LLC SNAP (40 bytes) +WARNING: untranslated string: cake profile pppoe-ptm 27 = PPPoE PTM (27 bytes) +WARNING: untranslated string: cake profile pppoe-vcmux 32 = PPPoE VC-MUX (32 bytes) +WARNING: untranslated string: cake profile raw 0 = Raw (no overhead compensation) WARNING: untranslated string: capabilities = Capabilities WARNING: untranslated string: check all = Check all WARNING: untranslated string: cpu frequency = CPU frequency @@ -1095,6 +1110,7 @@ WARNING: untranslated string: ipsec routing table entries = IPsec Routing Table WARNING: untranslated string: ipsec settings = IPsec Settings WARNING: untranslated string: itlb multihit = iTLB MultiHit WARNING: untranslated string: legacy architecture warning = You are running IPFire on a legacy architecture and it is recommended to upgrade +WARNING: untranslated string: link-layer encapsulation = Link-Layer Encapsulation WARNING: untranslated string: local ip address = Local IP Address WARNING: untranslated string: location = Location WARNING: untranslated string: locationblock = Location Block diff --git a/doc/language_issues.pl b/doc/language_issues.pl index f10f9ff4a..791ccda61 100644 --- a/doc/language_issues.pl +++ b/doc/language_issues.pl @@ -851,6 +851,21 @@ WARNING: untranslated string: bit = bit WARNING: untranslated string: block = Block WARNING: untranslated string: broken = Broken WARNING: untranslated string: bytes = unknown string +WARNING: untranslated string: cake profile bridged-llcsnap 32 = Bridged LLC SNAP (32 bytes) +WARNING: untranslated string: cake profile bridged-ptm 19 = Bridged PTM (19 bytes) +WARNING: untranslated string: cake profile bridged-vcmux 24 = Bridged VC-MUX (24 bytes) +WARNING: untranslated string: cake profile conservative 48 = Conservative (should work on all connections, 48 bytes) +WARNING: untranslated string: cake profile docsis 18 = DOCSIS (18 bytes) +WARNING: untranslated string: cake profile ethernet 38 = Ethernet (38 bytes) +WARNING: untranslated string: cake profile ethernet vlan 42 = Ethernet with VLAN (42 bytes) +WARNING: untranslated string: cake profile ipoa-llcsnap 16 = IP over ATM LLC SNAP (16 bytes) +WARNING: untranslated string: cake profile ipoa-vcmux 8 = IP over ATM VC-MUX (8 bytes) +WARNING: untranslated string: cake profile pppoa-llc 14 = PPPoA LLC (14 bytes) +WARNING: untranslated string: cake profile pppoa-vcmux 10 = PPPoA VC-MUX (10 bytes) +WARNING: untranslated string: cake profile pppoe-llcsnap 40 = PPPoE LLC SNAP (40 bytes) +WARNING: untranslated string: cake profile pppoe-ptm 27 = PPPoE PTM (27 bytes) +WARNING: untranslated string: cake profile pppoe-vcmux 32 = PPPoE VC-MUX (32 bytes) +WARNING: untranslated string: cake profile raw 0 = Raw (no overhead compensation) WARNING: untranslated string: capabilities = Capabilities WARNING: untranslated string: ccd add = Add network WARNING: untranslated string: ccd choose net = Choose network @@ -1254,6 +1269,7 @@ WARNING: untranslated string: last = Last WARNING: untranslated string: least preferred = least preferred WARNING: untranslated string: legacy architecture warning = You are running IPFire on a legacy architecture and it is recommended to upgrade WARNING: untranslated string: lifetime = Lifetime: +WARNING: untranslated string: link-layer encapsulation = Link-Layer Encapsulation WARNING: untranslated string: local ip address = Local IP Address WARNING: untranslated string: location = Location WARNING: untranslated string: locationblock = Location Block diff --git a/doc/language_issues.ru b/doc/language_issues.ru index 2e889e41e..14fcf87b4 100644 --- a/doc/language_issues.ru +++ b/doc/language_issues.ru @@ -847,6 +847,21 @@ WARNING: untranslated string: bit = bit WARNING: untranslated string: block = Block WARNING: untranslated string: broken = Broken WARNING: untranslated string: bytes = unknown string +WARNING: untranslated string: cake profile bridged-llcsnap 32 = Bridged LLC SNAP (32 bytes) +WARNING: untranslated string: cake profile bridged-ptm 19 = Bridged PTM (19 bytes) +WARNING: untranslated string: cake profile bridged-vcmux 24 = Bridged VC-MUX (24 bytes) +WARNING: untranslated string: cake profile conservative 48 = Conservative (should work on all connections, 48 bytes) +WARNING: untranslated string: cake profile docsis 18 = DOCSIS (18 bytes) +WARNING: untranslated string: cake profile ethernet 38 = Ethernet (38 bytes) +WARNING: untranslated string: cake profile ethernet vlan 42 = Ethernet with VLAN (42 bytes) +WARNING: untranslated string: cake profile ipoa-llcsnap 16 = IP over ATM LLC SNAP (16 bytes) +WARNING: untranslated string: cake profile ipoa-vcmux 8 = IP over ATM VC-MUX (8 bytes) +WARNING: untranslated string: cake profile pppoa-llc 14 = PPPoA LLC (14 bytes) +WARNING: untranslated string: cake profile pppoa-vcmux 10 = PPPoA VC-MUX (10 bytes) +WARNING: untranslated string: cake profile pppoe-llcsnap 40 = PPPoE LLC SNAP (40 bytes) +WARNING: untranslated string: cake profile pppoe-ptm 27 = PPPoE PTM (27 bytes) +WARNING: untranslated string: cake profile pppoe-vcmux 32 = PPPoE VC-MUX (32 bytes) +WARNING: untranslated string: cake profile raw 0 = Raw (no overhead compensation) WARNING: untranslated string: capabilities = Capabilities WARNING: untranslated string: ccd add = Add network WARNING: untranslated string: ccd choose net = Choose network @@ -1252,6 +1267,7 @@ WARNING: untranslated string: last = Last WARNING: untranslated string: least preferred = least preferred WARNING: untranslated string: legacy architecture warning = You are running IPFire on a legacy architecture and it is recommended to upgrade WARNING: untranslated string: lifetime = Lifetime: +WARNING: untranslated string: link-layer encapsulation = Link-Layer Encapsulation WARNING: untranslated string: local ip address = Local IP Address WARNING: untranslated string: location = Location WARNING: untranslated string: locationblock = Location Block diff --git a/doc/language_issues.tr b/doc/language_issues.tr index 5e216f765..d158c2c7a 100644 --- a/doc/language_issues.tr +++ b/doc/language_issues.tr @@ -908,6 +908,21 @@ WARNING: untranslated string: autonomous system = Autonomous System WARNING: untranslated string: available = available WARNING: untranslated string: broken = Broken WARNING: untranslated string: bytes = unknown string +WARNING: untranslated string: cake profile bridged-llcsnap 32 = Bridged LLC SNAP (32 bytes) +WARNING: untranslated string: cake profile bridged-ptm 19 = Bridged PTM (19 bytes) +WARNING: untranslated string: cake profile bridged-vcmux 24 = Bridged VC-MUX (24 bytes) +WARNING: untranslated string: cake profile conservative 48 = Conservative (should work on all connections, 48 bytes) +WARNING: untranslated string: cake profile docsis 18 = DOCSIS (18 bytes) +WARNING: untranslated string: cake profile ethernet 38 = Ethernet (38 bytes) +WARNING: untranslated string: cake profile ethernet vlan 42 = Ethernet with VLAN (42 bytes) +WARNING: untranslated string: cake profile ipoa-llcsnap 16 = IP over ATM LLC SNAP (16 bytes) +WARNING: untranslated string: cake profile ipoa-vcmux 8 = IP over ATM VC-MUX (8 bytes) +WARNING: untranslated string: cake profile pppoa-llc 14 = PPPoA LLC (14 bytes) +WARNING: untranslated string: cake profile pppoa-vcmux 10 = PPPoA VC-MUX (10 bytes) +WARNING: untranslated string: cake profile pppoe-llcsnap 40 = PPPoE LLC SNAP (40 bytes) +WARNING: untranslated string: cake profile pppoe-ptm 27 = PPPoE PTM (27 bytes) +WARNING: untranslated string: cake profile pppoe-vcmux 32 = PPPoE VC-MUX (32 bytes) +WARNING: untranslated string: cake profile raw 0 = Raw (no overhead compensation) WARNING: untranslated string: cpu frequency = CPU frequency WARNING: untranslated string: crypto error = Cryptographic error WARNING: untranslated string: crypto warning = Cryptographic warning @@ -1021,6 +1036,7 @@ WARNING: untranslated string: ipsec routing table entries = IPsec Routing Table WARNING: untranslated string: ipsec settings = IPsec Settings WARNING: untranslated string: itlb multihit = iTLB MultiHit WARNING: untranslated string: legacy architecture warning = You are running IPFire on a legacy architecture and it is recommended to upgrade +WARNING: untranslated string: link-layer encapsulation = Link-Layer Encapsulation WARNING: untranslated string: local ip address = Local IP Address WARNING: untranslated string: meltdown = Meltdown WARNING: untranslated string: mitigated = Mitigated diff --git a/doc/language_missings b/doc/language_missings index e0755b024..2d2dacd37 100644 --- a/doc/language_missings +++ b/doc/language_missings @@ -20,6 +20,21 @@ < backup protect key password < bewan adsl pci st < bewan adsl usb +< cake profile bridged-llcsnap 32 +< cake profile bridged-ptm 19 +< cake profile bridged-vcmux 24 +< cake profile conservative 48 +< cake profile docsis 18 +< cake profile ethernet 38 +< cake profile ethernet vlan 42 +< cake profile ipoa-llcsnap 16 +< cake profile ipoa-vcmux 8 +< cake profile pppoa-llc 14 +< cake profile pppoa-vcmux 10 +< cake profile pppoe-llcsnap 40 +< cake profile pppoe-ptm 27 +< cake profile pppoe-vcmux 32 +< cake profile raw 0 < Captive heading terms < Captive heading voucher < Captive invalid coupon @@ -43,6 +58,7 @@ < ipsec dns server address is invalid < ipsec invalid ip address or fqdn for rw endpoint < ipsec roadwarrior endpoint +< link-layer encapsulation < netbios nameserver daemon < no entries < notes @@ -118,6 +134,21 @@ < bit < block < broken +< cake profile bridged-llcsnap 32 +< cake profile bridged-ptm 19 +< cake profile bridged-vcmux 24 +< cake profile conservative 48 +< cake profile docsis 18 +< cake profile ethernet 38 +< cake profile ethernet vlan 42 +< cake profile ipoa-llcsnap 16 +< cake profile ipoa-vcmux 8 +< cake profile pppoa-llc 14 +< cake profile pppoa-vcmux 10 +< cake profile pppoe-llcsnap 40 +< cake profile pppoe-ptm 27 +< cake profile pppoe-vcmux 32 +< cake profile raw 0 < capabilities < ccd add < ccd choose net @@ -565,6 +596,7 @@ < least preferred < legacy architecture warning < lifetime +< link-layer encapsulation < local ip address < log server protocol < mac filter @@ -937,11 +969,27 @@ < ansi t1.483 < bewan adsl pci st < bewan adsl usb +< cake profile bridged-llcsnap 32 +< cake profile bridged-ptm 19 +< cake profile bridged-vcmux 24 +< cake profile conservative 48 +< cake profile docsis 18 +< cake profile ethernet 38 +< cake profile ethernet vlan 42 +< cake profile ipoa-llcsnap 16 +< cake profile ipoa-vcmux 8 +< cake profile pppoa-llc 14 +< cake profile pppoa-vcmux 10 +< cake profile pppoe-llcsnap 40 +< cake profile pppoe-ptm 27 +< cake profile pppoe-vcmux 32 +< cake profile raw 0 < false max bandwidth < false min bandwidth < g.dtm < g.lite < guaranteed bandwidth +< link-layer encapsulation < max bandwidth < upload fcdsl.o ############################################################################ @@ -976,6 +1024,21 @@ < available < block < broken +< cake profile bridged-llcsnap 32 +< cake profile bridged-ptm 19 +< cake profile bridged-vcmux 24 +< cake profile conservative 48 +< cake profile docsis 18 +< cake profile ethernet 38 +< cake profile ethernet vlan 42 +< cake profile ipoa-llcsnap 16 +< cake profile ipoa-vcmux 8 +< cake profile pppoa-llc 14 +< cake profile pppoa-vcmux 10 +< cake profile pppoe-llcsnap 40 +< cake profile pppoe-ptm 27 +< cake profile pppoe-vcmux 32 +< cake profile raw 0 < Captive < Captive 1day < Captive 1month @@ -1172,6 +1235,7 @@ < ipsec settings < itlb multihit < legacy architecture warning +< link-layer encapsulation < local ip address < location < locationblock @@ -1382,6 +1446,21 @@ < available < block < broken +< cake profile bridged-llcsnap 32 +< cake profile bridged-ptm 19 +< cake profile bridged-vcmux 24 +< cake profile conservative 48 +< cake profile docsis 18 +< cake profile ethernet 38 +< cake profile ethernet vlan 42 +< cake profile ipoa-llcsnap 16 +< cake profile ipoa-vcmux 8 +< cake profile pppoa-llc 14 +< cake profile pppoa-vcmux 10 +< cake profile pppoe-llcsnap 40 +< cake profile pppoe-ptm 27 +< cake profile pppoe-vcmux 32 +< cake profile raw 0 < capabilities < Captive < Captive 1day @@ -1596,6 +1675,7 @@ < ipsec settings < itlb multihit < legacy architecture warning +< link-layer encapsulation < local ip address < location < locationblock @@ -1854,6 +1934,21 @@ < bit < block < broken +< cake profile bridged-llcsnap 32 +< cake profile bridged-ptm 19 +< cake profile bridged-vcmux 24 +< cake profile conservative 48 +< cake profile docsis 18 +< cake profile ethernet 38 +< cake profile ethernet vlan 42 +< cake profile ipoa-llcsnap 16 +< cake profile ipoa-vcmux 8 +< cake profile pppoa-llc 14 +< cake profile pppoa-vcmux 10 +< cake profile pppoe-llcsnap 40 +< cake profile pppoe-ptm 27 +< cake profile pppoe-vcmux 32 +< cake profile raw 0 < capabilities < Captive < Captive 1day @@ -2347,6 +2442,7 @@ < least preferred < legacy architecture warning < lifetime +< link-layer encapsulation < local ip address < location < locationblock @@ -2755,6 +2851,21 @@ < bit < block < broken +< cake profile bridged-llcsnap 32 +< cake profile bridged-ptm 19 +< cake profile bridged-vcmux 24 +< cake profile conservative 48 +< cake profile docsis 18 +< cake profile ethernet 38 +< cake profile ethernet vlan 42 +< cake profile ipoa-llcsnap 16 +< cake profile ipoa-vcmux 8 +< cake profile pppoa-llc 14 +< cake profile pppoa-vcmux 10 +< cake profile pppoe-llcsnap 40 +< cake profile pppoe-ptm 27 +< cake profile pppoe-vcmux 32 +< cake profile raw 0 < capabilities < Captive < Captive 1day @@ -3254,6 +3365,7 @@ < least preferred < legacy architecture warning < lifetime +< link-layer encapsulation < local ip address < location < locationblock @@ -3637,6 +3749,21 @@ < autonomous system < available < broken +< cake profile bridged-llcsnap 32 +< cake profile bridged-ptm 19 +< cake profile bridged-vcmux 24 +< cake profile conservative 48 +< cake profile docsis 18 +< cake profile ethernet 38 +< cake profile ethernet vlan 42 +< cake profile ipoa-llcsnap 16 +< cake profile ipoa-vcmux 8 +< cake profile pppoa-llc 14 +< cake profile pppoa-vcmux 10 +< cake profile pppoe-llcsnap 40 +< cake profile pppoe-ptm 27 +< cake profile pppoe-vcmux 32 +< cake profile raw 0 < Captive delete logo < cpu frequency < crypto error @@ -3724,6 +3851,7 @@ < ipsec settings < itlb multihit < legacy architecture warning +< link-layer encapsulation < local ip address < meltdown < mitigated diff --git a/html/cgi-bin/qos.cgi b/html/cgi-bin/qos.cgi index a26617edd..020d3d872 100644 --- a/html/cgi-bin/qos.cgi +++ b/html/cgi-bin/qos.cgi @@ -98,7 +98,25 @@ $qossettings{'CLASS'} = ''; $qossettings{'CLASSPRFX'} = ''; $qossettings{'DEV'} = ''; $qossettings{'TOS'} = ''; +$qossettings{'CAKE_PROFILE'} = 'conservative';
+my %CAKE_PROFILES = ( + "ethernet" => $Lang::tr{'cake profile ethernet 38'}, + "ethernet ether-vlan" => $Lang::tr{'cake profile ethernet vlan 42'}, + "raw" => $Lang::tr{'cake profile raw 0'}, + "conservative" => $Lang::tr{'cake profile conservative 48'}, + "docsis" => $Lang::tr{'cake profile docsis 18'}, + "bridged-ptm" => $Lang::tr{'cake profile bridged-ptm 19'}, + "pppoe-ptm" => $Lang::tr{'cake profile pppoe-ptm 27'}, + "pppoe-llcsnap" => $Lang::tr{'cake profile pppoe-llcsnap 40'}, + "pppoe-vcmux" => $Lang::tr{'cake profile pppoe-vcmux 32'}, + "pppoa-llc" => $Lang::tr{'cake profile pppoa-llc 14'}, + "pppoa-vcmux" => $Lang::tr{'cake profile pppoa-vcmux 10'}, + "bridged-llcsnap" => $Lang::tr{'cake profile bridged-llcsnap 32'}, + "bridged-vcmux" => $Lang::tr{'cake profile bridged-vcmux 24'}, + "ipoa-llcsnap" => $Lang::tr{'cake profile ipoa-llcsnap 16'}, + "ipoa-vcmux" => $Lang::tr{'cake profile ipoa-vcmux 8'}, +);
&General::readhash("${General::swroot}/qos/settings", %qossettings); &Header::getcgihash(%qossettings); @@ -110,6 +128,12 @@ my %mainsettings = (); &General::readhash("${General::swroot}/main/settings", %mainsettings); &General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", %color);
+$selected{'CAKE_PROFILE'} = (); +foreach my $key (keys %CAKE_PROFILES) { + $selected{'CAKE_PROFILE'}{$key} = ''; +} +$selected{'CAKE_PROFILE'}{$qossettings{'CAKE_PROFILE'}} = 'selected'; + &Header::showhttpheaders();
&Header::openpage('QoS', 1, ''); @@ -759,27 +783,53 @@ sub changebandwidth { <input type='hidden' name='DEF_OUT_SPD' value='' /><input type='hidden' name='DEF_INC_SPD' value='' /> <table width='66%'> <tr> - <td width='100%' colspan='3'>$Lang::tr{'down and up speed'}</td> + <td width='100%' colspan='2'>$Lang::tr{'down and up speed'}</td> </tr> <tr> <td width='50%' align='right'>$Lang::tr{'downlink speed'}:</td> - <td width='30%' align='left'> + <td width='50%' align='left'> <input type='text' name='INC_SPD' maxlength='8' value="$qossettings{'INC_SPD'}" /> </td> - <td width='20%' align='center' rowspan='2'> - <input type='submit' name='ACTION' value="$Lang::tr{'template'}" /> - <br /> - <input type='submit' name='ACTION' value="$Lang::tr{'save'}" /> - <br /> - <input type='reset' name='ACTION' value="$Lang::tr{'reset'}" /> - </td> </tr> <tr> <td width='50%' align='right'>$Lang::tr{'uplink speed'}:</td> - <td width='30%' align='left'> + <td width='50%' align='left'> <input type='text' name='OUT_SPD' maxlength='8' value="$qossettings{'OUT_SPD'}" /> </td> </tr> + + <tr> + <td colspan="2"> </td> + </tr> + + <tr> + <td width='50%' align='right'>$Lang::tr{'link-layer encapsulation'}:</td> + <td width='50%' align='left'> + <select name="CAKE_PROFILE"> +END + + foreach my $key (sort { $CAKE_PROFILES{$a} cmp $CAKE_PROFILES{$b} } keys %CAKE_PROFILES) { + print <<END; + <option value="$key" $selected{'CAKE_PROFILE'}{$key}>$CAKE_PROFILES{$key}</option> +END + } + + print <<END; + </select> + </td> + </tr> + + <tr> + <td colspan="2"> </td> + </tr> + + <tr> + <td width='100%' align='center' colspan="2"> + <input type='submit' name='ACTION' value="$Lang::tr{'template'}" /> + <input type='submit' name='ACTION' value="$Lang::tr{'save'}" /> + <input type='reset' name='ACTION' value="$Lang::tr{'reset'}" /> + </td> + </tr> </table> </form> <font color='red'>$Lang::tr{'template warning'}</font> diff --git a/langs/en/cgi-bin/en.pl b/langs/en/cgi-bin/en.pl index a92bb07f8..48bf00a1a 100644 --- a/langs/en/cgi-bin/en.pl +++ b/langs/en/cgi-bin/en.pl @@ -529,6 +529,21 @@ 'cached' => 'cached', 'cached memory' => 'Cached Memory ', 'cached swap' => 'Cached Swap', +'cake profile bridged-llcsnap 32' => 'Bridged LLC SNAP (32 bytes)', +'cake profile bridged-ptm 19' => 'Bridged PTM (19 bytes)', +'cake profile bridged-vcmux 24' => 'Bridged VC-MUX (24 bytes)', +'cake profile conservative 48' => 'Conservative (should work on all connections, 48 bytes)', +'cake profile docsis 18' => 'DOCSIS (18 bytes)', +'cake profile ethernet 38' => 'Ethernet (38 bytes)', +'cake profile ethernet vlan 42' => 'Ethernet with VLAN (42 bytes)', +'cake profile ipoa-llcsnap 16' => 'IP over ATM LLC SNAP (16 bytes)', +'cake profile ipoa-vcmux 8' => 'IP over ATM VC-MUX (8 bytes)', +'cake profile pppoa-llc 14' => 'PPPoA LLC (14 bytes)', +'cake profile pppoa-vcmux 10' => 'PPPoA VC-MUX (10 bytes)', +'cake profile pppoe-llcsnap 40' => 'PPPoE LLC SNAP (40 bytes)', +'cake profile pppoe-ptm 27' => 'PPPoE PTM (27 bytes)', +'cake profile pppoe-vcmux 32' => 'PPPoE VC-MUX (32 bytes)', +'cake profile raw 0' => 'Raw (no overhead compensation)', 'calamaris available reports' => 'Available reports', 'calamaris byte unit' => 'Byte unit', 'calamaris create report' => 'Create report', @@ -1596,6 +1611,7 @@ 'length' => 'Length', 'lifetime' => 'Lifetime:', 'line' => 'Line', +'link-layer encapsulation' => 'Link-Layer Encapsulation', 'linkq' => 'Link Quality', 'load printer' => 'Load Printer', 'loaded modules' => 'Loaded modules:',
This should be a better default than using VDSL2 since "conservative" should work on all connections.
Signed-off-by: Michael Tremer michael.tremer@ipfire.org --- config/udev/network-aqm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/config/udev/network-aqm b/config/udev/network-aqm index 3ef9b0f59..d51c6fbde 100644 --- a/config/udev/network-aqm +++ b/config/udev/network-aqm @@ -65,9 +65,9 @@ case "${ACTION}" in exit 0 ;;
- # Handle RED PPPoE (default to VDSL2) + # Handle dial-up connections on RED ppp*,512) - args+=( "cake" "internet" "pppoe-ptm" "ack-filter" ) + args+=( "cake" "internet" "conservative" "ack-filter" ) ;;
# Treat any other interfaces as "Ethernet"
Signed-off-by: Michael Tremer michael.tremer@ipfire.org --- config/qos/makeqosscripts.pl | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/config/qos/makeqosscripts.pl b/config/qos/makeqosscripts.pl index 442324b98..cc91124df 100644 --- a/config/qos/makeqosscripts.pl +++ b/config/qos/makeqosscripts.pl @@ -54,7 +54,10 @@ my $classfile = "/var/ipfire/qos/classes"; my $level7file = "/var/ipfire/qos/level7config"; my $portfile = "/var/ipfire/qos/portconfig"; my $tosfile = "/var/ipfire/qos/tosconfig"; -my @cake_options = (); +my @cake_options = ( + # RED is by default connected to the Internet + "internet" +);
# Define iptables MARKs my $QOS_INC_MASK = 0x0000ff00; @@ -81,6 +84,12 @@ $qossettings{'VALID'} = 'yes';
&General::readhash("${General::swroot}/qos/settings", %qossettings);
+# Default to "conservative +unless (defined $qossettings{'CAKE_PROFILE'}) { + $qossettings{'CAKE_PROFILE'} = "conservative"; +} +push(@cake_options, $qossettings{'CAKE_PROFILE'}); + my $DEF_OUT_MARK = ($qossettings{'DEFCLASS_OUT'} << $QOS_OUT_SHIFT) . "/$QOS_OUT_MASK"; my $DEF_INC_MARK = ($qossettings{'DEFCLASS_INC'} << $QOS_INC_SHIFT) . "/$QOS_INC_MASK";
Hello,
It would be great if people could help me test this.
This should improve network latency massively for users with a slow connection and it should reduce CPU load for people who have a lot of throughput to handle.
I lack a sufficiently slow connection to actually see noticeable benefits over fq_codel and would like to invite everyone who can to give this all a test and let me know if things have changed for them.
Best, -Michael
On 2 Dec 2021, at 12:37, Michael Tremer michael.tremer@ipfire.org wrote:
This script configures CAKE as default qdisc where appropriate:
- It is not suitable to use any queue management on bridges/GRE/VTI/tun
interfaces.
- On Internet-facing interfaces, CAKE is configured in "internet" mode
whereas on any zones except RED, it is configured in "metro" mode
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
config/udev/enable_codel | 65 ++++++++++++++++++++++++++++++++-------- 1 file changed, 52 insertions(+), 13 deletions(-)
diff --git a/config/udev/enable_codel b/config/udev/enable_codel index 6cafd9b26..3ef9b0f59 100644 --- a/config/udev/enable_codel +++ b/config/udev/enable_codel @@ -21,9 +21,9 @@ # # ############################################################################
-LOG_FACILITY="codel" +LOG_FACILITY="aqm"
-function log() { +log() { logger -t "${LOG_FACILITY}" $@ }
@@ -32,19 +32,58 @@ if [ -z "${INTERFACE}" ]; then exit 1 fi
-# Do nothing for the loopback device. -[ "${INTERFACE}" = "lo" ] && exit 0
case "${ACTION}" in add|register)
# Change root qdisc to use fq_codel.
/sbin/tc qdisc add root dev ${INTERFACE} fq_codel
ret=$?
if [ ${ret} -eq 0 ]; then
log "Codel AQM has been enabled on '${INTERFACE}'."
else
log "Codel AQM could not be enabled on '${INTERFACE}'. Error code: ${ret}"
TYPE="$(</sys/class/net/${INTERFACE}/type)"
# Detect bridges
if [ -d "/sys/class/net/${INTERFACE}/bridge" ]; then
TYPE="bridge"
fi
args=()
# Configure some useful defaults depending on the interface
case "${INTERFACE},${TYPE}" in
# Ignore loopback
lo,*)
exit 0
;;
# Ignore tun
tun*)
exit 0
;;
# Ignore GRE/VTI
*,778|*,768)
exit 0
;;
# Ignore bridges
*,bridge)
exit 0
;;
# Handle RED PPPoE (default to VDSL2)
ppp*,512)
args+=( "cake" "internet" "pppoe-ptm" "ack-filter" )
;;
# Treat any other interfaces as "Ethernet"
red*,*)
args+=( "cake" "internet" "ethernet" )
;;
# All other interfaces are locally connected
*)
args+=( "cake" "ethernet" "metro" )
;;
esac
# Change root qdisc to use cake
if ! tc qdisc replace root dev "${INTERFACE}" "${args[@]}"; then
fi ;;log "Could not configure qdisc on ${INTERFACE} with parameters ${args[@]}" exit ${ret}
-- 2.30.2