Files
transfer/scripts/traffic-limit.sh
2017-04-25 21:54:10 +02:00

44 lines
1.2 KiB
Bash
Executable File

#!/bin/bash
set -e
# Helper script to limit traffic for iface:port
# http://www.codeoriented.com/how-to-limit-network-bandwidth-for-a-specific-tcp-port-on-ubuntu-linux/
# https://wiki.archlinux.org/index.php/Advanced_traffic_control
if ! which tc &>/dev/null ; then
2>&1 echo Error: tc executable not found
2>&1 echo Please install iproute2 package
exit 1
fi
IFACE=$1
RATE=$3
PORT=$2
if [ -z "$3" ] ; then
echo "Traffic limitter"
echo "Usage: $0 IFACE PORT RATE"
echo
echo "Available interfaces: $(ls -m /sys/class/net)"
echo
echo "Rate units: "
echo " kbps: Kilobytes per Second"
echo " mbps: Megabytes per Second"
echo " gbps: Gigabytes per Second"
echo " off: No rate limit"
echo
echo "Examples:"
echo " $0 wlan0 8080 10kbps"
echo " $0 wlan0 8080 off"
exit 1
fi
sudo tc qdisc del root dev $IFACE &>/dev/null || true
[ "$RATE" = "off" ] && exit
sudo tc qdisc add dev $IFACE root handle 1:0 htb default 10
sudo tc class add dev $IFACE parent 1:0 classid 1:10 htb rate $RATE prio 0
sudo tc filter add dev $IFACE parent 1:0 prio 0 protocol ip u32 match ip protocol 4 0xff match ip dport $PORT 0xffff flowid 1:10
sudo tc qdisc show dev $IFACE