Files
Jesper Dangaard Brouer 252a40763a traffic-pacing-edt: Adjustments to HTB script to get closer to EDT system
These adjustment doesn't help, EDT is still closer to 1Gbit/s at wire-level.

Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
2020-11-14 14:58:47 +01:00

96 lines
2.4 KiB
Bash
Executable File

#!/bin/bash
#
# This HTB shaper setup script is available for easier comparing the
# accuracy against the EDT solution.
#
# Author: Jesper Dangaaard Brouer <netoptimizer@brouer.com>
# License: GPLv2
#
basedir=`dirname $0`
source ${basedir}/functions.sh
root_check_run_with_sudo "$@"
# Use common parameters
source ${basedir}/parameters.sh
export TC=/sbin/tc
# It seems measured BW is TCP goodput, but configured BW is wirespeed.
# Measurements show around 930Mbit best-case. Q-in-Q result in MTU
# 1522 bytes. TCP goodput segments are 1448 bytes.
#
#RATE=$((930*1522/1448))Mbit
##RATE=$((933*1522/1448))Mbit
##CEIL=$((999*1522/1448))
#CEIL=1Gbit
#CEIL=980mbit
# EDT shaper show TCP goodput of 956 Mbit/s.
# echo $((956*1514/1448)) = 999
RATE=999Mbit
CEIL=1000Mbit
#RATE=500mbit
#CEIL=577mbit
# Each of the HTB root-class(es) get these RATE+CEIL upper bandwidth bounds.
ROOT_RATE=9000Mbit
ROOT_CEIL=9500Mbit
DEFAULT_RATE=6000Mbit
DEFAULT_CEIL=6000Mbit
TC=/usr/sbin/tc
VERBOSE=1
function tc() {
_call_tc "" "$@"
}
# Delete existing root qdisc
call_tc_allow_fail qdisc del dev "$DEV" root
if [[ -n $REMOVE ]]; then
exit 0
fi
# HTB shaper
#tc qdisc add dev "$DEV" root handle 1: htb default 2
tc qdisc add dev "$DEV" root handle 1: htb default 16
# The root-class set upper bandwidth usage
tc class add dev "$DEV" parent 1: classid 1:1 \
htb rate $ROOT_RATE ceil $ROOT_CEIL
# Default class 1:2
tc class add dev "$DEV" parent 1: classid 1:2 htb \
rate "$DEFAULT_RATE" ceil "$DEFAULT_CEIL"
# burst 100000 cburst 100000
tc qdisc add dev $DEV parent 1:2 fq_codel
# Class for vlan 16
tc class add dev "$DEV" parent 1: classid 1:16 htb rate "$RATE" ceil "$CEIL" \
burst $((1522*2)) cburst $((1522*2)) \
linklayer ethernet
# burst 1522 cburst 1522
#burst 1 cburst 1
# burst $((1522*2)) cburst $((1522*2))
# overhead $((14+4+4)) linklayer ethernet
#tc qdisc add dev "$DEV" parent 1:16 fq_codel
tc qdisc add dev "$DEV" parent 1:16 fq_codel quantum $((1514+4+4))
#tc qdisc add dev "$DEV" parent 1:16 pfifo
# parent filter:
#tc filter add dev "$DEV" parent 1:0 prio 100 protocol 802.1q u32
#
# vlan 16:
#tc filter add dev "$DEV" parent 1:0 prio 100 \
# protocol 802.1q \
# u32 match u16 0x0010 0x0fff at -4 \
# flowid 1:16
tc filter add dev $DEV protocol all parent 1:0 prio 101 \
basic match "meta(vlan mask 0xfff eq 16)" flowid 1:16