2 ################################################################################
3 # test_WAN_triple-isolate__piece_of_cake.qos (Cero3 Shaper)
6 # This is a one band cake and ipv6 enabled shaping script for Ethernet
7 # gateways. This exists for the purpose of testing cake's different isolation
8 # options, specifically the non-directional triple-isolate feature that promises
9 # to finally tackle the bit-torrent hole in simple.qos.
10 # This specific version is supposed to be used on WAN interfaces:
11 # the script's ingress direction equals the internet/WAN download direction
12 # the script's egress direction equals the internet/WAN upload direction
14 ################################################################################
16 # This program is free software; you can redistribute it and/or modify
17 # it under the terms of the GNU General Public License version 2 as
18 # published by the Free Software Foundation.
20 # Copyright (C) 2012-2016
21 # Michael D. Taht, Toke Høiland-Jørgensen, Sebastian Moeller
23 ################################################################################
25 . ${SQM_LIB_DIR}/defaults.sh
27 ################################################################################
30 # this will only work with cake as qdisc...
34 # to keep this as simple as possible we ignore the *_CAKE_OPTS from defaults.sh
35 INGRESS_CAKE_OPTS="besteffort triple-isolate"
36 EGRESS_CAKE_OPTS="besteffort triple-isolate"
41 $TC qdisc del dev $IFACE root 2>/dev/null
42 $TC qdisc add dev $IFACE root $( get_stab_string ) cake bandwidth ${UPLINK}kbit $( get_cake_lla_string ) ${EGRESS_CAKE_OPTS} ${EQDISC_OPTS}
48 $TC qdisc del dev $IFACE handle ffff: ingress 2>/dev/null
49 $TC qdisc add dev $IFACE handle ffff: ingress
50 $TC qdisc del dev $DEV root 2>/dev/null
51 $TC qdisc add dev $DEV root $( get_stab_string ) cake bandwidth ${DOWNLINK}kbit $( get_cake_lla_string ) ${INGRESS_CAKE_OPTS} ${IQDISC_OPTS}
53 $IP link set dev $DEV up
55 # redirect all IP packets arriving in $IFACE to ifb0
57 $TC filter add dev $IFACE parent ffff: protocol all prio 10 u32 \
58 match u32 0 0 flowid 1:1 action mirred egress redirect dev $DEV
62 [ -n "$IFACE" ] || return 1
64 verify_qdisc $QDISC "cake" || return 1
65 sqm_debug "Starting ${SCRIPT}"
67 [ -z "$DEV" ] && DEV=$( get_ifb_for_if ${IFACE} )
70 if [ "${UPLINK}" -ne 0 ];
73 sqm_debug "egress shaping activated"
75 sqm_debug "egress shaping deactivated"
76 $TC qdisc del dev ${IFACE} root 2> /dev/null
78 if [ "${DOWNLINK}" -ne 0 ];
80 verify_qdisc ingress "ingress" || return 1
82 sqm_debug "ingress shaping activated"
84 sqm_debug "ingress shaping deactivated"
85 $TC qdisc del dev ${DEV} root 2> /dev/null
86 $TC qdisc del dev ${IFACE} ingress 2> /dev/null