#!/bin/bash

tc_qdisc_manage(){
    local dev="$1"
    local action="$2" # "add" 或 "del"
    local rate="$3"
    local latency="3000ms"
    local burst="15kb"
    local loss="$4" # 可选参数
    local delay="$5" # 可选参数

    if [ "${action}" == "add" ]; then
        if [ -n "${loss}" ]; then
            tc qdisc add dev "${dev}" root netem loss "${loss}"
        elif [ -n "${delay}" ]; then
            tc qdisc add dev "${dev}" root netem delay "${delay}"
        else
            tc qdisc add dev "${dev}" root tbf rate "${rate}"Mbit latency "${latency}" burst "${burst}"
        fi
    elif [ "${action}" == "del" ]; then
        tc qdisc del dev "${dev}" root
    else
        tc qdisc show dev "${dev}"
    fi
}
echo
'eg:tc_qdisc_manage <dev> [add|del] <rate> <loss> <delay>
tc_qdisc_manage eth1 add 10
tc_qdisc_manage eth1 add "" 10%
tc_qdisc_manage eth1 add "" "" 30ms
tc_qdisc_manage eth1 del
tc_qdisc_manage eth1'

#tc_qdisc_manage限速、时延、丢包同在root节点上只有选一个。
#iperf3 -c 36.141.29.94 -t 50 -p 5220 -u -b 12M --bind-dev sim2_1
#ping 36.141.29.94 -I sim2_1 -c 30
