lede-packages-rs

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

test_LAN_triple-isolate__piece_of_cake.qos (3526B)


      1 #!/bin/sh
      2 ################################################################################
      3 # test_LAN_triple-isolate__piece_of_cake.qos (Cero3 Shaper)
      4 #
      5 # Abstract:
      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 LAN interfaces:
     11 # 	the script's ingress direction equals the internet/WAN upload direction
     12 # 	the script's egress direction equals the internet/WAN download direction
     13 #
     14 # NOTE: Shaping on a LAN interface only affects machines connected via that
     15 #	LAN interface, so typically WIFI/WLAN traffic will not be shaped!
     16 #
     17 ################################################################################
     18 #
     19 # This program is free software; you can redistribute it and/or modify
     20 # it under the terms of the GNU General Public License version 2 as
     21 # published by the Free Software Foundation.
     22 #
     23 #  Copyright (C) 2012-2016
     24 #    Michael D. Taht, Toke Høiland-Jørgensen, Sebastian Moeller
     25 #
     26 ################################################################################
     27 
     28 . ${SQM_LIB_DIR}/defaults.sh
     29 
     30 ################################################################################
     31 
     32 
     33 # this will only work with cake as qdisc...
     34 QDISC=cake
     35 
     36 
     37 # to keep this as simple as possible we ignore the *_CAKE_OPTS from defaults.sh
     38 INGRESS_CAKE_OPTS="besteffort triple-isolate"
     39 EGRESS_CAKE_OPTS="besteffort triple-isolate"
     40 
     41 
     42 egress() {
     43     sqm_debug "egress"
     44     $TC qdisc del dev $IFACE root 2>/dev/null
     45     $TC qdisc add dev $IFACE root $( get_stab_string ) cake bandwidth ${UPLINK}kbit $( get_cake_lla_string ) ${EGRESS_CAKE_OPTS} ${EQDISC_OPTS}
     46 }
     47 
     48 
     49 ingress() {
     50     sqm_debug "ingress"
     51     $TC qdisc del dev $IFACE handle ffff: ingress 2>/dev/null
     52     $TC qdisc add dev $IFACE handle ffff: ingress
     53     $TC qdisc del dev $DEV root 2>/dev/null
     54     $TC qdisc add dev $DEV root $( get_stab_string ) cake bandwidth ${DOWNLINK}kbit $( get_cake_lla_string ) ${INGRESS_CAKE_OPTS} ${IQDISC_OPTS}
     55 
     56     $IP link set dev $DEV up
     57 
     58     # redirect all IP packets arriving in $IFACE to ifb0
     59 
     60     $TC filter add dev $IFACE parent ffff: protocol all prio 10 u32 \
     61 	match u32 0 0 flowid 1:1 action mirred egress redirect dev $DEV
     62 }
     63 
     64 sqm_start() {
     65 
     66     #sm: flip upload and download bandwith so that the GUI values reflect directionality in regard to the ISP
     67     #sm: NOTE this is ugly and should be performed in defaults.sh or functions.sh if at all
     68     #sm: but for quick and dirty testing this should do
     69     local ORIG_UPLINK=${UPLINK}
     70     local ORIG_DOWNLINK=${DOWNLINK}
     71     UPLINK=${ORIG_DOWNLINK}
     72     DOWNLINK=${ORIG_UPLINK}
     73 
     74 
     75     [ -n "$IFACE" ] || return 1
     76     do_modules
     77     verify_qdisc $QDISC "cake" || return 1
     78     sqm_debug "Starting ${SCRIPT}"
     79 
     80     [ -z "$DEV" ] && DEV=$( get_ifb_for_if ${IFACE} )
     81 
     82 
     83     if [ "${UPLINK}" -ne 0 ];
     84     then
     85         egress
     86         sqm_debug "egress shaping activated"
     87     else
     88         sqm_debug "egress shaping deactivated"
     89         $TC qdisc del dev ${IFACE} root 2> /dev/null
     90     fi
     91     if [ "${DOWNLINK}" -ne 0 ];
     92     then
     93 	verify_qdisc ingress "ingress" || return 1
     94         ingress
     95         sqm_debug "ingress shaping activated"
     96     else
     97         sqm_debug "ingress shaping deactivated"
     98         $TC qdisc del dev ${DEV} root 2> /dev/null
     99         $TC qdisc del dev ${IFACE} ingress 2> /dev/null
    100     fi
    101     return 0
    102 }