Traffic-Shaping

針對大頻寬(超過 1Gig)的 Linux 流量整形

  • May 26, 2017

我正在三台連接10G ig 介面且 RTT 為100 微秒的電腦之間進行實驗。假設這些是機器 A、B 和 C。機器 A 正在與 B 和 C 通信。機器 B 和 C 不相互通信。

我想限制頻寬,使機器 A 和 B 具有5G bps 頻寬和 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

我遇到了和你一樣的麻煩。最終,我發現了一些可以在我需要節流的 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

引用自:https://serverfault.com/questions/852319