test_triple_isolated_llt_cake.qos (2583B)
1 #!/bin/sh 2 ################################################################################ 3 # test_triple_isolated_llt_cake.qos 4 # One bin cake shaper for ethernet gateways 5 # using cake qdisc with triple-isolate and diffserv-llt (Latency-Loss-Tradeoff) 6 # 7 ################################################################################ 8 # 9 # This program is free software; you can redistribute it and/or modify 10 # it under the terms of the GNU General Public License version 2 as 11 # published by the Free Software Foundation. 12 # 13 # Copyright (C) 2012-2016 14 # Michael D. Taht, Toke Høiland-Jørgensen, Sebastian Moeller 15 # 16 ################################################################################ 17 18 . ${SQM_LIB_DIR}/defaults.sh 19 20 ################################################################################ 21 22 23 # this will only work with cake as qdisc... 24 QDISC=cake 25 26 27 # to keep this as simple as possible we ignore the *_CAKE_OPTS from defaults.sh 28 INGRESS_CAKE_OPTS="diffserv-llt triple-isolate" 29 EGRESS_CAKE_OPTS="diffserv-llt triple-isolate" 30 31 32 egress() { 33 sqm_debug "egress" 34 $TC qdisc del dev $IFACE root 2>/dev/null 35 $TC qdisc add dev $IFACE root $( get_stab_string ) cake bandwidth ${UPLINK}kbit $( get_cake_lla_string ) ${EGRESS_CAKE_OPTS} ${EQDISC_OPTS} 36 } 37 38 39 ingress() { 40 sqm_debug "ingress" 41 $TC qdisc del dev $IFACE handle ffff: ingress 2>/dev/null 42 $TC qdisc add dev $IFACE handle ffff: ingress 43 $TC qdisc del dev $DEV root 2>/dev/null 44 $TC qdisc add dev $DEV root $( get_stab_string ) cake bandwidth ${DOWNLINK}kbit $( get_cake_lla_string ) ${INGRESS_CAKE_OPTS} ${IQDISC_OPTS} 45 46 $IP link set dev $DEV up 47 48 # redirect all IP packets arriving in $IFACE to ifb0 49 50 $TC filter add dev $IFACE parent ffff: protocol all prio 10 u32 \ 51 match u32 0 0 flowid 1:1 action mirred egress redirect dev $DEV 52 } 53 54 sqm_start() { 55 [ -n "$IFACE" ] || return 1 56 do_modules 57 verify_qdisc $QDISC "cake" || return 1 58 sqm_debug "Starting ${SCRIPT}" 59 60 [ -z "$DEV" ] && DEV=$( get_ifb_for_if ${IFACE} ) 61 62 63 if [ "${UPLINK}" -ne 0 ]; 64 then 65 egress 66 sqm_debug "egress shaping activated" 67 else 68 sqm_debug "egress shaping deactivated" 69 $TC qdisc del dev ${IFACE} root 2> /dev/null 70 fi 71 if [ "${DOWNLINK}" -ne 0 ]; 72 then 73 verify_qdisc ingress "ingress" || return 1 74 ingress 75 sqm_debug "ingress shaping activated" 76 else 77 sqm_debug "ingress shaping deactivated" 78 $TC qdisc del dev ${DEV} root 2> /dev/null 79 $TC qdisc del dev ${IFACE} ingress 2> /dev/null 80 fi 81 return 0 82 }