我正在对三台连接的计算机进行实验10Gig 接口,并且 RTT 为100 微秒。假设这些是机器 A、B 和 C。机器 A 正在与 B 和 C 通信。机器 B 和 C 彼此不通信。
我想限制带宽,以便机器 A 和 B5Gbps 带宽和 100毫秒延迟。而机器 A 和 C 没有任何带宽和延迟限制。我的目标是模拟具有大带宽的广域网。
我尝试使用 HTB 和 prio 来限制带宽和延迟。但是,达到的最大带宽约为 350 Mbps。我通过 iperf 进行了测试。我的理解是,使用 TC 时,我们的带宽不能超过 1Gig。
有没有什么方法或工具可以限制 1Gig 以上的带宽?
我正在使用以下 TC 命令:
sudo tc qdisc del dev p4p1 root
sudo tc qdisc add dev p4p1 handle 1: root htb r2q 1000
sudo tc class add dev p4p1 parent 1: classid 1:3 htb rate 1000Mbps
sudo tc qdisc add dev p4p1 parent 1:3 handle 23: netem delay 50ms limit 100000000
sudo tc filter add dev p4p1 protocol ip prio 9 u32 match ip dst 10.96.0.1 flowid 1:3
答案1
我遇到了和你一样的问题。最后我找到了一个可以在我需要节流的 2Gbps 下工作的东西。这是脚本。根据需要进行修改。
#!/bin/sh
#
# Incoming traffic control
#
DEV=eth0
RATE="2000mbit"
tc qdisc del dev $DEV root
tc qdisc add dev $DEV root handle 1: htb default 10
tc class add dev $DEV parent 1: classid 1:1 htb rate ${RATE} burst 15k
tc class add dev $DEV parent 1:1 classid 1:10 htb rate ${RATE} ceil ${RATE} burst 15k
tc qdisc add dev $DEV parent 1:10 handle 10: sfq perturb 10
echo;echo "tc configuration for $DEV:"
tc qdisc show dev $DEV
tc class show dev $DEV
#
# Outgoing traffic control
#
DEV=eth2
tc qdisc del dev $DEV root
tc qdisc add dev $DEV root handle 1: htb default 10
tc class add dev $DEV parent 1: classid 1:1 htb rate ${RATE} burst 15k
tc class add dev $DEV parent 1:1 classid 1:10 htb rate ${RATE} ceil ${RATE} burst 15k
tc qdisc add dev $DEV parent 1:10 handle 10: sfq perturb 10
echo;echo "tc configuration for $DEV:"
tc qdisc show dev $DEV
tc class show dev $DEV