在Linux下使用tc限制接口带宽


8

我有一个Linux路由器,其外部具有10GBe接口,内部具有绑定的千兆以太网接口。

我们目前的预算为2GBit / s。如果我们超过该速率一个月的平均值超过5%,则需要为整个10Gbit / s容量付费。以美元计,升幅很大。

因此,我想在10GBe接口上将其限制为2GBit / s。

TBF过滤器可能是理想的,但是此注释值得关注。

在除Alpha之外的所有平台上,它都能以理想的最小突发性整形高达1mbit / s的正常流量,并以配置的速率精确发送数据。

我应该使用TBF还是其他过滤器将此速率应用到接口,以及如何执行。我不明白此处提供的示例: 交通控制方法

特别是“示例9.创建256kbit / s TBF”

tc qdisc add dev eth0 handle 1:0 root dsmark indices 1 default_index 0
tc qdisc add dev eth0 handle 2:0 parent 1:0 tbf burst 20480 limit 20480 mtu 1514 rate 32000bps

256K bit / s速率如何计算?在此示例中,32000bps =每秒32k字节。由于tc使用bps =每秒字节数。我想爆发和极限会起作用,但是您将如何选择合理的数字以达到所需的速率?

这不是一个错误。我对此进行了测试,它给出了接近256K的速率,但并非完全如此。


编辑

经过大量的阅读和测试之后,我得出的结论是TBF由于涉及带宽而不合适。无论我尝试了什么设置,我都无法获得TBF来提供大于50Mbit / s的带宽。根据lartc.org/lartc.pdf,RED方法对于整形带宽> 100Mbit / s更好,因此我将尝试使用它。

但是,选择一个min值(即,可能的标记平均队列大小)。给出的示例是这样的:

您应该通过计算所需的最高可接受的基本排队等待时间,然后将其乘以带宽来设置最小值。例如,在我的64kbit / s ISDN链路上,我可能想要200毫秒的基本排队等待时间,因此我将min设置为1600字节。

  1. 您将如何选择最高可接受的基本排队等待时间?该示例适用于64kbit / s。

  2. 2Gbit / s可接受什么?

Answers:


2
  1. 您应该根据流量类型选择可接受的排队等待时间。

    • 例如,对于超过200ms的语音排队已经是一个问题。
    • 虽然有500ms的ftp / torrent流量缓冲区根本不是什么大问题。
  2. 排队等待时间/策略是流量类型而不是接口速度的问题。例如,VOIP可能根本不应排队。不幸的是,tc RED文档不是很清楚,您最好在Juniper / Cisco站点上阅读一些RED信息,并将该知识应用于tc。


1

256K bit / s速率如何计算?在此示例中,每秒32,000bps = [32,000]个字节。

是的,那里的数学是正确的。如果看到的数字接近256k,则可能略低于256k。您从哪里测量该数字?如果是您浏览器的劣质之类的东西,它们将不计算数据包头的开销,而是tc计算所有内容。


好点子。我正在使用iperf。
马特

1

根据我的经验,qdisc TBF很容易将带宽限制为1 Gbps,因此我想它也将扩展到2 Gbps。但是,您可能需要一个真正的CPU来完成这项工作,而不是使用某些低端边缘路由器。像4 GHz i3之类的东西肯定足够了。

尝试类似

tc qdisc add dev "$DEV" root handle 1: \
  tbf rate "$UPLINK_RATE" burst "$UPLINK_BURST" latency "$TBF_LATENCY"

哪里

DEV="$(ip route | grep "^default " | grep -Po "(?<=dev )[^ ]+")"
UPLINK_RATE="2000Mbit"
UPLINK_BURST="6500"
TBF_LATENCY="14ms"

请注意,要使用低延迟的TBF,您可能需要运行PREEMPT内核(例如Ubuntu linux-lowlatency-hwe-*软件包),否则系统可能无法处理所有这些软件包。

另请参阅:https : //networkengineering.stackexchange.com/a/54404/36597


谢谢。我忘记了这个问题。我确实找到了答案,并有了一个脚本来解决。但是我已经离开公司,现在无法发布解决方案。但是,是的,我相信我使用的是TBF,是的,路由器是一台快速的至强服务器。
马特
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.