110 lines
4.0 KiB
Bash
110 lines
4.0 KiB
Bash
# You need to jiggle these parameters. Note limits are tuned towards a <10Mbit uplink <60Mbup down
|
|
|
|
[ -z "$SCRIPT" ] && SCRIPT=
|
|
[ -z "$UPLINK" ] && UPLINK=2302
|
|
[ -z "$DOWNLINK" ] && DOWNLINK=14698
|
|
[ -z "$IFACE" ] && IFACE=eth0
|
|
[ -z "$QDISC" ] && QDISC=fq_codel
|
|
[ -z "$LLAM" ] && LLAM="default"
|
|
[ -z "$LINKLAYER" ] && LINKLAYER="none"
|
|
[ -z "$OVERHEAD" ] && OVERHEAD=0
|
|
[ -z "$STAB_MTU" ] && STAB_MTU=2047
|
|
[ -z "$STAB_MPU" ] && STAB_MPU=0
|
|
[ -z "$STAB_TSIZE" ] && STAB_TSIZE=512
|
|
[ -z "$AUTOFLOW" ] && AUTOFLOW=0
|
|
[ -z "$LIMIT" ] && LIMIT=1001 # sane global default for *LIMIT for fq_codel on a small memory device
|
|
[ -z "$ILIMIT" ] && ILIMIT=
|
|
[ -z "$ELIMIT" ] && ELIMIT=
|
|
[ -z "$ITARGET" ] && ITARGET=
|
|
[ -z "$ETARGET" ] && ETARGET=
|
|
[ -z "$IECN" ] && IECN="ECN"
|
|
[ -z "$EECN" ] && EECN="ECN"
|
|
# These two used to be called something else; preserve backwards compatibility
|
|
[ -z "$ZERO_DSCP_INGRESS" ] && ZERO_DSCP_INGRESS="${ZERO_DSCP:-${SQUASH_DSCP:-1}}"
|
|
[ -z "$IGNORE_DSCP_INGRESS" ] && IGNORE_DSCP_INGRESS="${IGNORE_DSCP:-${SQUASH_INGRESS:-1}}"
|
|
|
|
[ -z "$IQDISC_OPTS" ] && IQDISC_OPTS=""
|
|
[ -z "$EQDISC_OPTS" ] && EQDISC_OPTS=""
|
|
|
|
# handling of specific important binaries
|
|
[ -z "$TC" ] && TC=tc_wrapper
|
|
[ -z "$TC_BINARY" ] && TC_BINARY=$(command -v tc)
|
|
[ -z "$IP" ] && IP=ip_wrapper
|
|
[ -z "$IP_BINARY" ] && IP_BINARY=$(command -v ip)
|
|
[ -z "$IPTABLES" ] && IPTABLES=iptables_wrapper
|
|
[ -z "$IPTABLES_BINARY" ] && IPTABLES_BINARY=$(command -v iptables)
|
|
[ -z "$IP6TABLES" ] && IP6TABLES=ip6tables_wrapper
|
|
[ -z "$IP6TABLES_BINARY" ] && IP6TABLES_BINARY=$(command -v ip6tables)
|
|
[ -z "$IPTABLES_ARGS" ] && IPTABLES_ARGS="-w 1"
|
|
|
|
|
|
# Try modprobe first, fall back to insmod
|
|
if [ -z "$INSMOD" ]; then
|
|
INSMOD=$(command -v modprobe)
|
|
if [ -n "$INSMOD" ]; then
|
|
INSMOD="${INSMOD} -q"
|
|
else
|
|
INSMOD=$(command -v insmod)
|
|
fi
|
|
fi
|
|
|
|
[ -z "$TARGET" ] && TARGET="5ms"
|
|
[ -z "$IPT_MASK" ] && IPT_MASK="0xff" # to disable: set mask to 0xffffffff
|
|
#sm: we need the functions above before trying to set the ingress IFB device
|
|
#sm: *_CAKE_OPTS should contain the diffserv keyword for cake
|
|
[ -z "$INGRESS_CAKE_OPTS" ] && INGRESS_CAKE_OPTS="diffserv3"
|
|
[ -z "$EGRESS_CAKE_OPTS" ] && EGRESS_CAKE_OPTS="diffserv3"
|
|
|
|
[ -z "$CUR_DIRECTION" ] && CUR_DIRECTION="NONE"
|
|
|
|
|
|
# HTB without a sufficiently large burst/cburst value is a bit CPU hungry
|
|
# so allow to specify the permitted burst in the time domain (microseconds)
|
|
# so the user has a feeling for the associated worst case latency cost
|
|
# set to zero to use htb default butst of one MTU
|
|
[ -z "$SHAPER_BURST_DUR_US" ] && SHAPER_BURST_DUR_US=1000
|
|
[ -z "$ISHAPER_BURST_DUR_US" ] && ISHAPER_BURST_DUR_US=$SHAPER_BURST_DUR_US
|
|
[ -z "$ESHAPER_BURST_DUR_US" ] && ESHAPER_BURST_DUR_US=$SHAPER_BURST_DUR_US
|
|
|
|
# use the same logic for the calculation of htb's quantum
|
|
# quantum controlls how many bytes htb tries to deque from the current tier
|
|
# before switching tiers.
|
|
[ -z "$SHAPER_QUANTUM_DUR_US" ] && SHAPER_QUANTUM_DUR_US=$SHAPER_BURST_DUR_US
|
|
[ -z "$ISHAPER_QUANTUM_DUR_US" ] && ISHAPER_QUANTUM_DUR_US=$SHAPER_QUANTUM_DUR_US
|
|
[ -z "$ESHAPER_QUANTUM_DUR_US" ] && ESHAPER_QUANTUM_DUR_US=$SHAPER_QUANTUM_DUR_US
|
|
|
|
|
|
# Logging verbosity
|
|
VERBOSITY_SILENT=0
|
|
VERBOSITY_ERROR=1
|
|
VERBOSITY_WARNING=2
|
|
VERBOSITY_INFO=5
|
|
VERBOSITY_DEBUG=8
|
|
VERBOSITY_TRACE=10
|
|
[ -z "$SQM_VERBOSITY_MAX" ] && SQM_VERBOSITY_MAX=$VERBOSITY_INFO
|
|
# For silencing only errors
|
|
[ -z "$SQM_VERBOSITY_MIN" ] && SQM_VERBOSITY_MIN=$VERBOSITY_SILENT
|
|
|
|
[ -z "$SQM_DEBUG" ] && SQM_DEBUG=0
|
|
if [ "$SQM_DEBUG" -eq "1" ]
|
|
then
|
|
SQM_DEBUG_STEM="${SQM_STATE_DIR}/${IFACE}"
|
|
SQM_START_LOG="${SQM_DEBUG_STEM}.start-sqm.log"
|
|
SQM_STOP_LOG="${SQM_DEBUG_STEM}.stop-sqm.log"
|
|
[ -z "SQM_DEBUG_LOG" ] && SQM_DEBUG_LOG="${SQM_DEBUG_STEM}.debug.log"
|
|
OUTPUT_TARGET="${SQM_DEBUG_LOG}"
|
|
else
|
|
OUTPUT_TARGET="/dev/null"
|
|
fi
|
|
|
|
|
|
# Can be overridden by callers that want to silence error output for a
|
|
# particular command
|
|
SILENT=0
|
|
|
|
# Transaction log for unwinding ipt rules
|
|
IPT_TRANS_LOG="${SQM_STATE_DIR}/${IFACE}.iptables.log"
|
|
|
|
# These are the modules that do_modules() will attempt to load
|
|
ALL_MODULES="act_ipt sch_$QDISC sch_ingress act_mirred cls_fw cls_flow cls_u32 sch_htb sch_hfsc"
|