我正在开发一个 bash 实用程序,它将使用 tc Linux 命令行实用程序的多个方面来模拟各种网络条件。我已经成功构建了几个 qdisc 层次结构,一个用于 HTB 带宽控制、NetEM 延迟和数据包操作以及 TBF 速率控制,以及用于 HTB-NetEM 和 TBF-NetEM 的组合处理程序我正在努力将这三个组合成一个单一的结构,适用于我需要在一个连接上控制所有这些因素的情况。这是我到目前为止所拥有的:
sudo tc qdisc add dev $interface root handle 1:0 htb
sudo tc class add dev $interface parent 1:0 classid 1:1 htb #htb args
sudo tc qdisc add dev $interface parent 1:1 handle 10:0 tbf #tbf args
sudo tc qdisc add dev $interface parent 10:1 handle 101:0 netem #netem args
由于我的范围较小,我知道问题不在于输入的语法,而可能在于我的 tc qdiscs 和类的结构。当我尝试在我的网桥的两个以太网端口中运行这些命令以及速率和带宽整形参数(分别为 10 和 15 Mbit/s)时,在 TCP 或 UDP 中显示 iperf 测试的带宽没有变化。任何意见,将不胜感激。
这是我的其他工作复合结构,以防它们可能有所帮助:
HTB 和 NetEM:
sudo tc qdisc add dev $interface root handle 1: htb
sudo tc class add dev $interface parent 1:0 classid 1:1 htb #htb args
sudo tc qdisc add dev $interface parent 1:1 handle 10:0 netem #netem args
TBF 和 NetEM:
sudo tc qdisc add dev $interface root handle 1:0 tbf #tbf args
sudo tc qdisc add dev $interface parent 1:1 handle 10:0 netem #netem args