首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HTB“速率”参数限制可用带宽

HTB“速率”参数限制可用带宽
EN

Server Fault用户
提问于 2022-02-05 21:34:04
回答 1查看 386关注 0票数 0

日安,

我有以下情况:4 TCP数据流从一台机器到另一台。每个流都有自己的目标TCP端口。4流有不同的优先顺序:高、中、低、大。高、中、低生成1.67Mbit/s,散装产生10 10Mbit/s (iperf3用于产生流量)。每个流的分组都被标记为适当的DiffServ标记(DSCP),并且该标记用于HTB中的业务分类。

目标:HTB的配置方式应该是:在任何时候,高prio流得到其所需的1.67Mbit/s,中等prio也得到1.67Mbit/s的保证,但prio略低一些,其余的流量应该保证为50 50kbit/ at。如果流空闲并且产生比最初指定的带宽更多的带宽,则每个流必须能够使用整个链路。

流量的Generation:

代码语言:javascript
复制
High priority:
iperf3 -c 192.168.88.254 -p 5150 -t 62 -b 1.67M -l 128 -S 224 
Medium priority:
iperf3 -c 192.168.88.254 -p 5160 -t 62 -b 1.67M -l 4K -S 160 
Low priority:
iperf3 -c 192.168.88.254 -p 5170 -t 62 -b 1.67M -l 4K -S 96 
Bulk:
iperf3 -c 192.168.88.254 -p 5180 -t 62 -b 10M -l 4K -S 0 

HTB 的Configuration

代码语言:javascript
复制
NI="eth2"
AC="sudo /sbin/tc class add dev "

# Delete previous qdiscs
sudo /sbin/tc qdisc del dev $NI root

# Add HTB as root with default class 40 for uncategorized traffic
sudo /sbin/tc qdisc add dev $NI root handle 1: htb default 40
sudo /sbin/tc class add dev $NI parent 1: classid 1:1 htb rate 3.5mbit ceil 1000mbit

# high priority stream DSCP 224 - 1110 0000 - 0xE0
$AC $NI parent 1:1 classid 1:10 htb rate 1.7mbit ceil 1000mbit prio 1
# medium priority stream 
$AC $NI parent 1:1 classid 1:20 htb rate 1.7mbit ceil 1000mbit prio 2
# low priority stream
$AC $NI parent 1:1 classid 1:30 htb rate 50kbit ceil 1000mbit prio 3
# bulk stream
$AC $NI parent 1:1 classid 1:40 htb rate 50kbit ceil 1000mbit prio 4 

# Add filters to classify packets based on dscp mark

# high priority DSCP 224 - 1110 0000 - 0xE0
sudo /sbin/tc filter add dev $NI protocol ip parent 1: prio 1 u32 match ip tos 0xE0 0xff flowid 1:10
# medium priority DSCP 160 - 1010 0000 - 0xA0
sudo /sbin/tc filter add dev $NI protocol ip parent 1: prio 2 u32 match ip tos 0xA0 0xff flowid 1:20
# low priority DSCP 96 - 1100 0000 - 0x60
sudo /sbin/tc filter add dev $NI protocol ip parent 1: prio 3 u32 match ip tos 0x60 0xff flowid 1:30
# bulk DSCP 0 - 0000 0000 - 0x00
sudo /sbin/tc filter add dev $NI protocol ip parent 1: prio 4 u32 match ip tos 0x00 0xff flowid 1:40

交通的分类是正确的。我可以看到tc类统计中的相关柜台在上升。我已经查了好几遍了。

<#>问题:此配置正确地将带宽分配给高和中等prio流。低prio和散装也收到他们的50千兆比特。However,我不能超过根1:1中指定的值(即3.5mbit )来推送链接。

在我读过的关于HTB的每一篇文章和手册中都指出," rate“参数是类的最小保证率,而"ceil”是它可以得到的最大数量。在我的例子中,“比率”似乎将链接限制在指定的值上。这绝对不是人们所期望和预期的行为。

如果我将根类的"rate“参数设置为与"ceil”相同的值,即1000 root,则不会发生优先排序,可用带宽在所有流之间平均分配。这不是期望的行为,因为在可用带宽波动的情况下,prio流量将小于1.67Mbit/s

我是否误解了根类中“比率”参数的含义?这个问题是否与“量子”等其他HTB参数有关?我还注意到,在数据传输过程中,每个类都有负数的令牌。这很糟糕吗?如果是这样的话,我应该调整哪些参数以及如何进行调整?

提前谢谢你!

EN

回答 1

Server Fault用户

回答已采纳

发布于 2022-02-06 15:47:24

ceil参数在根类中没有任何影响,您应该只设置速率1。

如果您的目标是使儿童班级的上限部分规模,您可以使用hfsc而不是HTB,但它不会阻止要求的最大速率,即使你没有足够的带宽。

如果你的目标是处理一个波动的互联网连接,它不会这样工作,因为你是限制上传部分,下载一个仍然不会优先。您可以搜索ifb限制下载带宽。

在任何情况下,tc都无法检测到您的实际可用带宽。但是,一定要使用fq_codel,以获得更好的队列管理、bbr和最近的Linux内核,从而限制能够要求更多带宽的影响。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1092796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档