lede-packages-rs

git clone git://archive.git.mtrnord.blog/MTRNord/lede-packages-rs.git
Log | Files | Refs | README | LICENSE

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 }