Browse Source

sqm-scripts-extra: additional experimental test scripts for SQM

Introduce package for additional experimental scripts for sqm-scripts.
The target is to provide an opportunity to test QoS scripts and qdiscs
still under development. E.g. cake related scripts can be placed here
for testing.

sqm-scripts and luci-app-sqm will pick up the new scripts automatically.

Initially the package contains five cake-related scripts.

The package depends on the main sqm-scripts package.

Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
lilik-openwrt-22.03
Hannu Nyman 8 years ago
parent
commit
4b0e0a378a
11 changed files with 558 additions and 0 deletions
  1. +47
    -0
      net/sqm-scripts-extra/Makefile
  2. +102
    -0
      net/sqm-scripts-extra/src/test_LAN_dual-isolate__piece_of_cake.qos
  3. +12
    -0
      net/sqm-scripts-extra/src/test_LAN_dual-isolate__piece_of_cake.qos.help
  4. +102
    -0
      net/sqm-scripts-extra/src/test_LAN_triple-isolate__piece_of_cake.qos
  5. +12
    -0
      net/sqm-scripts-extra/src/test_LAN_triple-isolate__piece_of_cake.qos.help
  6. +89
    -0
      net/sqm-scripts-extra/src/test_WAN_dual-isolate__piece_of_cake.qos
  7. +10
    -0
      net/sqm-scripts-extra/src/test_WAN_dual-isolate__piece_of_cake.qos.help
  8. +89
    -0
      net/sqm-scripts-extra/src/test_WAN_triple-isolate__piece_of_cake.qos
  9. +10
    -0
      net/sqm-scripts-extra/src/test_WAN_triple-isolate__piece_of_cake.qos.help
  10. +82
    -0
      net/sqm-scripts-extra/src/test_triple_isolated_llt_cake.qos
  11. +3
    -0
      net/sqm-scripts-extra/src/test_triple_isolated_llt_cake.qos.help

+ 47
- 0
net/sqm-scripts-extra/Makefile View File

@ -0,0 +1,47 @@
#
# This is free software, licensed under the GNU General Public License v2.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=sqm-scripts-extra
PKG_VERSION:=2016-06-08
PKG_RELEASE:=1
PKG_LICENSE:=GPLv2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_RELEASE).tar.xz
PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)-$(PKG_RELEASE)
include $(INCLUDE_DIR)/package.mk
define Package/sqm-scripts-extra
SECTION:=net
CATEGORY:=Base system
DEPENDS:=+sqm-scripts
TITLE:=SQM Scripts - additional experimental scripts for testing
PKGARCH:=all
MAINTAINER:=Kevin Darbyshire-Bryant <kevin@darbyshire-bryant.me.uk>, \
Sebastian Moeller <moeller0@gmx.de>
endef
define Package/sqm-scripts-extra/description
A set of experimental scripts for sqm-scripts QoS package. The contents of this package may
change as new qdiscs like 'cake' are developed and tested.
endef
define Package/sqm-scripts-extra/download
endef
define Build/Prepare
endef
define Build/Compile
endef
define Package/sqm-scripts-extra/install
$(INSTALL_DIR) $(1)/usr/lib/sqm
$(INSTALL_DATA) ./src/* $(1)/usr/lib/sqm/
endef
$(eval $(call BuildPackage,sqm-scripts-extra))

+ 102
- 0
net/sqm-scripts-extra/src/test_LAN_dual-isolate__piece_of_cake.qos View File

@ -0,0 +1,102 @@
#!/bin/sh
################################################################################
# test_LAN_triple-isolate__piece_of_cake.qos (Cero3 Shaper)
#
# Abstract:
# This is a one band cake and ipv6 enabled shaping script for Ethernet
# gateways. This exists for the purpose of testing cake's different isolation
# options, specifically the non-directional triple-isolate feature that promises
# to finally tackle the bit-torrent hole in simple.qos.
# This specific version is supposed to be used on LAN interfaces:
# the script's ingress direction equals the internet/WAN upload direction
# the script's egress direction equals the internet/WAN download direction
#
# NOTE: Shaping on a LAN interface only affects machines connected via that
# LAN interface, so typically WIFI/WLAN traffic will not be shaped!
#
################################################################################
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# Copyright (C) 2012-2016
# Michael D. Taht, Toke Høiland-Jørgensen, Sebastian Moeller
#
################################################################################
. ${SQM_LIB_DIR}/defaults.sh
################################################################################
# this will only work with cake as qdisc...
QDISC=cake
# to keep this as simple as possible we ignore the *_CAKE_OPTS from defaults.sh
INGRESS_CAKE_OPTS="besteffort dual-srchost"
EGRESS_CAKE_OPTS="besteffort dual-dsthost"
egress() {
sqm_debug "egress"
$TC qdisc del dev $IFACE root 2>/dev/null
$TC qdisc add dev $IFACE root $( get_stab_string ) cake bandwidth ${UPLINK}kbit $( get_cake_lla_string ) ${EGRESS_CAKE_OPTS} ${EQDISC_OPTS}
}
ingress() {
sqm_debug "ingress"
$TC qdisc del dev $IFACE handle ffff: ingress 2>/dev/null
$TC qdisc add dev $IFACE handle ffff: ingress
$TC qdisc del dev $DEV root 2>/dev/null
$TC qdisc add dev $DEV root $( get_stab_string ) cake bandwidth ${DOWNLINK}kbit $( get_cake_lla_string ) ${INGRESS_CAKE_OPTS} ${IQDISC_OPTS}
$IP link set dev $DEV up
# redirect all IP packets arriving in $IFACE to ifb0
$TC filter add dev $IFACE parent ffff: protocol all prio 10 u32 \
match u32 0 0 flowid 1:1 action mirred egress redirect dev $DEV
}
sqm_start() {
#sm: flip upload and download bandwith so that the GUI values reflect directionality in regard to the ISP
#sm: NOTE this is ugly and should be performed in defaults.sh or functions.sh if at all
#sm: but for quick and dirty testing this should do
local ORIG_UPLINK=${UPLINK}
local ORIG_DOWNLINK=${DOWNLINK}
UPLINK=${ORIG_DOWNLINK}
DOWNLINK=${ORIG_UPLINK}
[ -n "$IFACE" ] || return 1
do_modules
verify_qdisc $QDISC "cake" || return 1
sqm_debug "Starting ${SCRIPT}"
[ -z "$DEV" ] && DEV=$( get_ifb_for_if ${IFACE} )
if [ "${UPLINK}" -ne 0 ];
then
egress
sqm_debug "egress shaping activated"
else
sqm_debug "egress shaping deactivated"
$TC qdisc del dev ${IFACE} root 2> /dev/null
fi
if [ "${DOWNLINK}" -ne 0 ];
then
verify_qdisc ingress "ingress" || return 1
ingress
sqm_debug "ingress shaping activated"
else
sqm_debug "ingress shaping deactivated"
$TC qdisc del dev ${DEV} root 2> /dev/null
$TC qdisc del dev ${IFACE} ingress 2> /dev/null
fi
return 0
}

+ 12
- 0
net/sqm-scripts-extra/src/test_LAN_dual-isolate__piece_of_cake.qos.help View File

@ -0,0 +1,12 @@
test_LAN_dual-isolate__piece_of_cake.qos (Cero3 Shaper)
Abstract:
This is a one band cake and ipv6 enabled shaping script for Ethernet gateways.
This exists for the purpose of testing cake's different isolation options,
specifically the non-directional dual-[src|dst]host feature that promises to finally
tackle the bit-torrent hole in simple.qos.
This specific version is supposed to be used on LAN interfaces:
the script's ingress direction equals the internet/WAN upload direction
the script's egress direction equals the internet/WAN download direction
NOTE: Shaping on a LAN interface only affects machines connected via that
LAN interface, so typically WIFI/WLAN traffic will not be shaped!

+ 102
- 0
net/sqm-scripts-extra/src/test_LAN_triple-isolate__piece_of_cake.qos View File

@ -0,0 +1,102 @@
#!/bin/sh
################################################################################
# test_LAN_triple-isolate__piece_of_cake.qos (Cero3 Shaper)
#
# Abstract:
# This is a one band cake and ipv6 enabled shaping script for Ethernet
# gateways. This exists for the purpose of testing cake's different isolation
# options, specifically the non-directional triple-isolate feature that promises
# to finally tackle the bit-torrent hole in simple.qos.
# This specific version is supposed to be used on LAN interfaces:
# the script's ingress direction equals the internet/WAN upload direction
# the script's egress direction equals the internet/WAN download direction
#
# NOTE: Shaping on a LAN interface only affects machines connected via that
# LAN interface, so typically WIFI/WLAN traffic will not be shaped!
#
################################################################################
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# Copyright (C) 2012-2016
# Michael D. Taht, Toke Høiland-Jørgensen, Sebastian Moeller
#
################################################################################
. ${SQM_LIB_DIR}/defaults.sh
################################################################################
# this will only work with cake as qdisc...
QDISC=cake
# to keep this as simple as possible we ignore the *_CAKE_OPTS from defaults.sh
INGRESS_CAKE_OPTS="besteffort triple-isolate"
EGRESS_CAKE_OPTS="besteffort triple-isolate"
egress() {
sqm_debug "egress"
$TC qdisc del dev $IFACE root 2>/dev/null
$TC qdisc add dev $IFACE root $( get_stab_string ) cake bandwidth ${UPLINK}kbit $( get_cake_lla_string ) ${EGRESS_CAKE_OPTS} ${EQDISC_OPTS}
}
ingress() {
sqm_debug "ingress"
$TC qdisc del dev $IFACE handle ffff: ingress 2>/dev/null
$TC qdisc add dev $IFACE handle ffff: ingress
$TC qdisc del dev $DEV root 2>/dev/null
$TC qdisc add dev $DEV root $( get_stab_string ) cake bandwidth ${DOWNLINK}kbit $( get_cake_lla_string ) ${INGRESS_CAKE_OPTS} ${IQDISC_OPTS}
$IP link set dev $DEV up
# redirect all IP packets arriving in $IFACE to ifb0
$TC filter add dev $IFACE parent ffff: protocol all prio 10 u32 \
match u32 0 0 flowid 1:1 action mirred egress redirect dev $DEV
}
sqm_start() {
#sm: flip upload and download bandwith so that the GUI values reflect directionality in regard to the ISP
#sm: NOTE this is ugly and should be performed in defaults.sh or functions.sh if at all
#sm: but for quick and dirty testing this should do
local ORIG_UPLINK=${UPLINK}
local ORIG_DOWNLINK=${DOWNLINK}
UPLINK=${ORIG_DOWNLINK}
DOWNLINK=${ORIG_UPLINK}
[ -n "$IFACE" ] || return 1
do_modules
verify_qdisc $QDISC "cake" || return 1
sqm_debug "Starting ${SCRIPT}"
[ -z "$DEV" ] && DEV=$( get_ifb_for_if ${IFACE} )
if [ "${UPLINK}" -ne 0 ];
then
egress
sqm_debug "egress shaping activated"
else
sqm_debug "egress shaping deactivated"
$TC qdisc del dev ${IFACE} root 2> /dev/null
fi
if [ "${DOWNLINK}" -ne 0 ];
then
verify_qdisc ingress "ingress" || return 1
ingress
sqm_debug "ingress shaping activated"
else
sqm_debug "ingress shaping deactivated"
$TC qdisc del dev ${DEV} root 2> /dev/null
$TC qdisc del dev ${IFACE} ingress 2> /dev/null
fi
return 0
}

+ 12
- 0
net/sqm-scripts-extra/src/test_LAN_triple-isolate__piece_of_cake.qos.help View File

@ -0,0 +1,12 @@
test_LAN_triple-isolate__piece_of_cake.qos (Cero3 Shaper)
Abstract:
This is a one band cake and ipv6 enabled shaping script for Ethernet gateways.
This exists for the purpose of testing cake's different isolation options,
specifically the non-directional triple-isolate feature that promises to finally
tackle the bit-torrent hole in simple.qos.
This specific version is supposed to be used on LAN interfaces:
the script's ingress direction equals the internet/WAN upload direction
the script's egress direction equals the internet/WAN download direction
NOTE: Shaping on a LAN interface only affects machines connected via that
LAN interface, so typically WIFI/WLAN traffic will not be shaped!

+ 89
- 0
net/sqm-scripts-extra/src/test_WAN_dual-isolate__piece_of_cake.qos View File

@ -0,0 +1,89 @@
#!/bin/sh
################################################################################
# test_WAN_dual-isolate__piece_of_cake.qos (Cero3 Shaper)
#
# Abstract:
# This is a one band cake and ipv6 enabled shaping script for Ethernet
# gateways. This exists for the purpose of testing cake's different isolation
# options, specifically the directional dual-[src|dst]host feature that promises
# to finally tackle the bit-torrent hole in simple.qos.
# This specific version is supposed to be used on WAN interfaces:
# the script's ingress direction equals the internet/WAN download direction
# the script's egress direction equals the internet/WAN upload direction
#
################################################################################
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# Copyright (C) 2012-2016
# Michael D. Taht, Toke Høiland-Jørgensen, Sebastian Moeller
#
################################################################################
. ${SQM_LIB_DIR}/defaults.sh
################################################################################
# this will only work with cake as qdisc...
QDISC=cake
# to keep this as simple as possible we ignore the *_CAKE_OPTS from defaults.sh
INGRESS_CAKE_OPTS="besteffort dual-dsthost"
EGRESS_CAKE_OPTS="besteffort dual-srchost"
egress() {
sqm_debug "egress"
$TC qdisc del dev $IFACE root 2>/dev/null
$TC qdisc add dev $IFACE root $( get_stab_string ) cake bandwidth ${UPLINK}kbit $( get_cake_lla_string ) ${EGRESS_CAKE_OPTS} ${EQDISC_OPTS}
}
ingress() {
sqm_debug "ingress"
$TC qdisc del dev $IFACE handle ffff: ingress 2>/dev/null
$TC qdisc add dev $IFACE handle ffff: ingress
$TC qdisc del dev $DEV root 2>/dev/null
$TC qdisc add dev $DEV root $( get_stab_string ) cake bandwidth ${DOWNLINK}kbit $( get_cake_lla_string ) ${INGRESS_CAKE_OPTS} ${IQDISC_OPTS}
$IP link set dev $DEV up
# redirect all IP packets arriving in $IFACE to ifb0
$TC filter add dev $IFACE parent ffff: protocol all prio 10 u32 \
match u32 0 0 flowid 1:1 action mirred egress redirect dev $DEV
}
sqm_start() {
[ -n "$IFACE" ] || return 1
do_modules
verify_qdisc $QDISC "cake" || return 1
sqm_debug "Starting ${SCRIPT}"
[ -z "$DEV" ] && DEV=$( get_ifb_for_if ${IFACE} )
if [ "${UPLINK}" -ne 0 ];
then
egress
sqm_debug "egress shaping activated"
else
sqm_debug "egress shaping deactivated"
$TC qdisc del dev ${IFACE} root 2> /dev/null
fi
if [ "${DOWNLINK}" -ne 0 ];
then
verify_qdisc ingress "ingress" || return 1
ingress
sqm_debug "ingress shaping activated"
else
sqm_debug "ingress shaping deactivated"
$TC qdisc del dev ${DEV} root 2> /dev/null
$TC qdisc del dev ${IFACE} ingress 2> /dev/null
fi
return 0
}

+ 10
- 0
net/sqm-scripts-extra/src/test_WAN_dual-isolate__piece_of_cake.qos.help View File

@ -0,0 +1,10 @@
test_WAN_dual-isolate__piece_of_cake.qos (Cero3 Shaper)
Abstract:
This is a one band cake and ipv6 enabled shaping script for Ethernet gateways.
This exists for the purpose of testing cake's different isolation options,
specifically the directional dual-[src|dst]host feature that promises to finally
tackle the bit-torrent hole in simple.qos.
This specific version is supposed to be used on WAN interfaces:
the script's ingress direction equals the internet/WAN download direction
the script's egress direction equals the internet/WAN upload direction

+ 89
- 0
net/sqm-scripts-extra/src/test_WAN_triple-isolate__piece_of_cake.qos View File

@ -0,0 +1,89 @@
#!/bin/sh
################################################################################
# test_WAN_triple-isolate__piece_of_cake.qos (Cero3 Shaper)
#
# Abstract:
# This is a one band cake and ipv6 enabled shaping script for Ethernet
# gateways. This exists for the purpose of testing cake's different isolation
# options, specifically the non-directional triple-isolate feature that promises
# to finally tackle the bit-torrent hole in simple.qos.
# This specific version is supposed to be used on WAN interfaces:
# the script's ingress direction equals the internet/WAN download direction
# the script's egress direction equals the internet/WAN upload direction
#
################################################################################
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# Copyright (C) 2012-2016
# Michael D. Taht, Toke Høiland-Jørgensen, Sebastian Moeller
#
################################################################################
. ${SQM_LIB_DIR}/defaults.sh
################################################################################
# this will only work with cake as qdisc...
QDISC=cake
# to keep this as simple as possible we ignore the *_CAKE_OPTS from defaults.sh
INGRESS_CAKE_OPTS="besteffort triple-isolate"
EGRESS_CAKE_OPTS="besteffort triple-isolate"
egress() {
sqm_debug "egress"
$TC qdisc del dev $IFACE root 2>/dev/null
$TC qdisc add dev $IFACE root $( get_stab_string ) cake bandwidth ${UPLINK}kbit $( get_cake_lla_string ) ${EGRESS_CAKE_OPTS} ${EQDISC_OPTS}
}
ingress() {
sqm_debug "ingress"
$TC qdisc del dev $IFACE handle ffff: ingress 2>/dev/null
$TC qdisc add dev $IFACE handle ffff: ingress
$TC qdisc del dev $DEV root 2>/dev/null
$TC qdisc add dev $DEV root $( get_stab_string ) cake bandwidth ${DOWNLINK}kbit $( get_cake_lla_string ) ${INGRESS_CAKE_OPTS} ${IQDISC_OPTS}
$IP link set dev $DEV up
# redirect all IP packets arriving in $IFACE to ifb0
$TC filter add dev $IFACE parent ffff: protocol all prio 10 u32 \
match u32 0 0 flowid 1:1 action mirred egress redirect dev $DEV
}
sqm_start() {
[ -n "$IFACE" ] || return 1
do_modules
verify_qdisc $QDISC "cake" || return 1
sqm_debug "Starting ${SCRIPT}"
[ -z "$DEV" ] && DEV=$( get_ifb_for_if ${IFACE} )
if [ "${UPLINK}" -ne 0 ];
then
egress
sqm_debug "egress shaping activated"
else
sqm_debug "egress shaping deactivated"
$TC qdisc del dev ${IFACE} root 2> /dev/null
fi
if [ "${DOWNLINK}" -ne 0 ];
then
verify_qdisc ingress "ingress" || return 1
ingress
sqm_debug "ingress shaping activated"
else
sqm_debug "ingress shaping deactivated"
$TC qdisc del dev ${DEV} root 2> /dev/null
$TC qdisc del dev ${IFACE} ingress 2> /dev/null
fi
return 0
}

+ 10
- 0
net/sqm-scripts-extra/src/test_WAN_triple-isolate__piece_of_cake.qos.help View File

@ -0,0 +1,10 @@
test_WAN_triple-isolate__piece_of_cake.qos (Cero3 Shaper)
Abstract:
This is a one band cake and ipv6 enabled shaping script for Ethernet gateways.
This exists for the purpose of testing cake's different isolation options,
specifically the non-directional triple-isolate feature that promises to finally
tackle the bit-torrent hole in simple.qos.
This specific version is supposed to be used on WAN interfaces:
the script's ingress direction equals the internet/WAN download direction
the script's egress direction equals the internet/WAN upload direction

+ 82
- 0
net/sqm-scripts-extra/src/test_triple_isolated_llt_cake.qos View File

@ -0,0 +1,82 @@
#!/bin/sh
################################################################################
# test_triple_isolated_llt_cake.qos
# One bin cake shaper for ethernet gateways
# using cake qdisc with triple-isolate and diffserv-llt (Latency-Loss-Tradeoff)
#
################################################################################
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# Copyright (C) 2012-2016
# Michael D. Taht, Toke Høiland-Jørgensen, Sebastian Moeller
#
################################################################################
. ${SQM_LIB_DIR}/defaults.sh
################################################################################
# this will only work with cake as qdisc...
QDISC=cake
# to keep this as simple as possible we ignore the *_CAKE_OPTS from defaults.sh
INGRESS_CAKE_OPTS="diffserv-llt triple-isolate"
EGRESS_CAKE_OPTS="diffserv-llt triple-isolate"
egress() {
sqm_debug "egress"
$TC qdisc del dev $IFACE root 2>/dev/null
$TC qdisc add dev $IFACE root $( get_stab_string ) cake bandwidth ${UPLINK}kbit $( get_cake_lla_string ) ${EGRESS_CAKE_OPTS} ${EQDISC_OPTS}
}
ingress() {
sqm_debug "ingress"
$TC qdisc del dev $IFACE handle ffff: ingress 2>/dev/null
$TC qdisc add dev $IFACE handle ffff: ingress
$TC qdisc del dev $DEV root 2>/dev/null
$TC qdisc add dev $DEV root $( get_stab_string ) cake bandwidth ${DOWNLINK}kbit $( get_cake_lla_string ) ${INGRESS_CAKE_OPTS} ${IQDISC_OPTS}
$IP link set dev $DEV up
# redirect all IP packets arriving in $IFACE to ifb0
$TC filter add dev $IFACE parent ffff: protocol all prio 10 u32 \
match u32 0 0 flowid 1:1 action mirred egress redirect dev $DEV
}
sqm_start() {
[ -n "$IFACE" ] || return 1
do_modules
verify_qdisc $QDISC "cake" || return 1
sqm_debug "Starting ${SCRIPT}"
[ -z "$DEV" ] && DEV=$( get_ifb_for_if ${IFACE} )
if [ "${UPLINK}" -ne 0 ];
then
egress
sqm_debug "egress shaping activated"
else
sqm_debug "egress shaping deactivated"
$TC qdisc del dev ${IFACE} root 2> /dev/null
fi
if [ "${DOWNLINK}" -ne 0 ];
then
verify_qdisc ingress "ingress" || return 1
ingress
sqm_debug "ingress shaping activated"
else
sqm_debug "ingress shaping deactivated"
$TC qdisc del dev ${DEV} root 2> /dev/null
$TC qdisc del dev ${IFACE} ingress 2> /dev/null
fi
return 0
}

+ 3
- 0
net/sqm-scripts-extra/src/test_triple_isolated_llt_cake.qos.help View File

@ -0,0 +1,3 @@
Cake qdisc with triple-isolate and diffserv-llt (Latency-Loss-Tradeoff)
options as the shaper and fq_codel as leaf qdisc. This script requires
that cake is selected as qdisc.

Loading…
Cancel
Save