|
|
- #!/bin/sh
- ################################################################################
- # test_triple_isolated_llt_cake.qos
- # One bin cake shaper for ethernet gateways
- # using cake qdisc with triple-isolate and diffserv-llt (Latency-Loss-Tradeoff)
- #
- ################################################################################
- #
- # This program is free software; you can redistribute it and/or modify
- # it under the terms of the GNU General Public License version 2 as
- # published by the Free Software Foundation.
- #
- # Copyright (C) 2012-2016
- # Michael D. Taht, Toke Høiland-Jørgensen, Sebastian Moeller
- #
- ################################################################################
-
- . ${SQM_LIB_DIR}/defaults.sh
-
- ################################################################################
-
-
- # this will only work with cake as qdisc...
- QDISC=cake
-
-
- # to keep this as simple as possible we ignore the *_CAKE_OPTS from defaults.sh
- INGRESS_CAKE_OPTS="diffserv-llt triple-isolate"
- EGRESS_CAKE_OPTS="diffserv-llt triple-isolate"
-
-
- egress() {
- sqm_debug "egress"
- $TC qdisc del dev $IFACE root 2>/dev/null
- $TC qdisc add dev $IFACE root $( get_stab_string ) cake bandwidth ${UPLINK}kbit $( get_cake_lla_string ) ${EGRESS_CAKE_OPTS} ${EQDISC_OPTS}
- }
-
-
- ingress() {
- sqm_debug "ingress"
- $TC qdisc del dev $IFACE handle ffff: ingress 2>/dev/null
- $TC qdisc add dev $IFACE handle ffff: ingress
- $TC qdisc del dev $DEV root 2>/dev/null
- $TC qdisc add dev $DEV root $( get_stab_string ) cake bandwidth ${DOWNLINK}kbit $( get_cake_lla_string ) ${INGRESS_CAKE_OPTS} ${IQDISC_OPTS}
-
- $IP link set dev $DEV up
-
- # redirect all IP packets arriving in $IFACE to ifb0
-
- $TC filter add dev $IFACE parent ffff: protocol all prio 10 u32 \
- match u32 0 0 flowid 1:1 action mirred egress redirect dev $DEV
- }
-
- sqm_start() {
- [ -n "$IFACE" ] || return 1
- do_modules
- verify_qdisc $QDISC "cake" || return 1
- sqm_debug "Starting ${SCRIPT}"
-
- [ -z "$DEV" ] && DEV=$( get_ifb_for_if ${IFACE} )
-
-
- if [ "${UPLINK}" -ne 0 ];
- then
- egress
- sqm_debug "egress shaping activated"
- else
- sqm_debug "egress shaping deactivated"
- $TC qdisc del dev ${IFACE} root 2> /dev/null
- fi
- if [ "${DOWNLINK}" -ne 0 ];
- then
- verify_qdisc ingress "ingress" || return 1
- ingress
- sqm_debug "ingress shaping activated"
- else
- sqm_debug "ingress shaping deactivated"
- $TC qdisc del dev ${DEV} root 2> /dev/null
- $TC qdisc del dev ${IFACE} ingress 2> /dev/null
- fi
- return 0
- }
|