标签: htb

HTB 的最小速率和默认类别问题

我对我正在使用的 HTB 结构有一些疑问。

我的目标是限制本地网络中用户的下载和上传速度。网络的每个用户都有一个个人域列表,其中包含他不能超过的域的上下速度。

这意味着用户 1 可以在 slashdot.org 上的访问权限限制为 8KB 下载和 3KB 上传,用户 2 可以在 slashdot.org 上访问限制为 4KB 和 1KB。

现在我设置了一个很好的 iptables/tc 对,但规模很小,同时使用 2 或 3 个虚拟主机(不幸的是,我无法执行实际大小测试)。

这是我当前的结构(我只会显示 LAN 出口的结构,用于上传的结构只是该结构的“副本”)

连接在接口上的 HTB qdisc(句柄 2:),默认流量类是类 FFFF。

根类 2:1 直接位于 HTB qdisc 下,具有速率和上限下行链路容量。

默认类 2:FFFF 作为 2:1 的子级,速率为 1kbsp,下行容量为 ceil。

然后,当某个域的用户有新的限制时,动态添加其他类,添加新的 tc 类来控制来自其域的下载速度。

现在,这就是我所做的:

新建一个具有唯一id的tc类(取自数据库,不是这里的重点),作为父类2:1,速率值为1bps,ceil值设置为限制下载速度。

下面是 tc 命令:

-------------- BEGIN SCRIPT --------------
DOWNLINK=800

## Setting up the static tc qdisc and class

$tc qdisc add dev $LAN_IFACE root handle 2: htb default …
Run Code Online (Sandbox Code Playgroud)

linux iptables traffic-shaping htb

29
推荐指数
1
解决办法
2355
查看次数

通过 HTB 共享带宽并优先考虑实时流量,哪种场景效果更好?

我想为我们的互联网线路添加某种流量管理。看了很多文档后,我觉得HFSC对我来说太复杂了(我不了解所有曲线的东西,恐怕我永远不会弄对),不推荐CBQ,基本上HTB是方法去大多数人。

我们的内部网络有三个“网段”,我想在这些网段之间或多或少平均地共享带宽(至少在开始时)。此外,我必须根据至少三种流量(实时流量、标准流量和批量流量)对流量进行优先级排序。带宽共享并不像实时流量应始终被视为优质流量这一事实重要,但当然也没有其他流量类别可能会饿死。

问题是,什么更有意义并且还能保证更好的实时吞吐量:

  1. 每个段创建一个类,每个类都具有相同的速率(根据 HTB 开发人员的说法,对于没有叶子的类,优先级无关紧要)并且这些类中的每一个都有三个子类(叶子),用于 3 个优先级(具有不同的优先级)和不同的费率)。

  2. 每个优先级有一个类,每个类都有不同的速率(同样优先级无关紧要),每个有 3 个子类,每个段一个,而实时类中的所有 3 个都具有最高的优先级,批量中的最低优先级类,等等。

我将尝试使用以下 ASCII 艺术图像更清楚地说明这一点:

Case 1:

root --+--> Segment A
       |       +--> High Prio
       |       +--> Normal Prio
       |       +--> Low Prio
       |
       +--> Segment B
       |       +--> High Prio
       |       +--> Normal Prio
       |       +--> Low Prio
       |
       +--> Segment C
               +--> High Prio
               +--> Normal Prio
               +--> Low Prio

Case 2:

root --+--> High Prio
       |        +--> Segment A
       |        +--> Segment B
       |        +--> Segment …
Run Code Online (Sandbox Code Playgroud)

linux qos traffic-management traffic-shaping htb

10
推荐指数
1
解决办法
2015
查看次数

5
推荐指数
1
解决办法
6470
查看次数

使用 tc 基于 VLAN 的速率限制

我一直在尝试对我正在进行的一个学术项目执行基于 VLAN 的速率限制。该项目使用 Openflow(带有 Beacon 控制器),并使用 Mininet 模拟网络。该网络由 OpenVSwitch 组成。

对于我的项目,我需要对网络中每个 VLAN 上的流量进行速率限制。我为此选择了 tc (带有 htb),并且已经尝试了很多天来使其正常工作。这些是我想要使用 tc 实现的目标: 1) 将所有 VLAN 的速率限制为特定的数据速率。2) 确保设置速率限制后,使用交换机之间物理链路的所有 VLAN 都获得相同(或几乎相同)的最大数据速率。

因此,如果我将每个 VLAN 的数据速率限制设置为 100 Mbps,并且有 5 个 VLAN 使用物理链路,我希望所有这些 VLAN 不超过 100 Mbps,同时每个 VLAN 的最大数据速率约为 100 Mbps。

我已经为此拓扑编写了脚本:

s2---s4
|
s6---s8
|
s10---s12
Run Code Online (Sandbox Code Playgroud)

这是那个脚本:

#!/bin/bash

# delete prev: 
tc qdisc del dev s10-eth2 root
tc qdisc del dev s2-eth3 root
tc qdisc del dev s6-eth2 root
tc qdisc del dev s6-eth3 root
tc qdisc del …
Run Code Online (Sandbox Code Playgroud)

traffic-shaping tc htb rate-limiting openflow

5
推荐指数
1
解决办法
6342
查看次数

使用 tc qdiscs 进行带宽限制

我试图限制一个简单的 iperf 服务器和客户端之间的带宽,使用第三台被动机器作为桥梁。在没有干扰的情况下,iperf 返回约 90 Mbits/sec 的带宽。我的目标是创建一个根 qdisc,将所有未分类的流量(所有内容)发送到子 HTB 类,在那里设置我的带宽,然后路由到叶 qdisc,一旦我开始工作,将在其中设置额外的 tc 参数。我的实现很简短:

sudo tc qdisc add dev $interface root handle 1: htb default 10

sudo tc class add dev $interface parent 1:0 classid 1:10 htb rate $bandwidth burst $burst

sudo tc qdisc add dev $interface parent 1:10 handle 10:0 netem #other stuff goes here
Run Code Online (Sandbox Code Playgroud)

当这个 bash 脚本在带有$interface = eth1, $bandwidth = 500kbps,的网桥上实现时$burst = 15k,我看到 iperf 带宽有所减少,但还没有接近规定值(通常约为 5Mbps)。

我的脚本中有错误吗?我是否滥用了突发变量?请帮忙。

更新:经过进一步调查,我发现这种流量控制在应用于与 SERVER 接口的以太网卡时工作正常,但是当将相同的命令应用于 CLIENT 端时会出现问题。当整个设置颠倒时也是如此。

bash iperf traffic-shaping tc htb

5
推荐指数
1
解决办法
863
查看次数

试图了解 HTB 子类比率

我目前正在研究使用 Ubuntu 服务器而不是我的消费者级路由器来提供 QoS 的机会。我已经阅读了很多关于tc和 HTB 排队规则的资源——这看起来是我需要满足我的 QoS 需求的资源,即使现在大部分看起来很清楚,仍然有一些东西让我在子类率方面感到困扰。

让我们来看看这个示例配置作为这个问题的答案:

tc class add dev eth0 parent 1: classid 1:1 htb rate 90kbps ceil 90kbps
tc class add dev eth0 parent 1:1 classid 1:10 htb rate 30kbps ceil 60kbps
tc class add dev eth0 parent 1:1 classid 1:11 htb rate 30kbps ceil 60kbps
tc class add dev eth0 parent 1:1 classid 1:12 htb rate 30kbps ceil 60kbps
Run Code Online (Sandbox Code Playgroud)

当您知道tc 的工作原理时,这非常简单:三个子类都保证有 30kbps 的带宽,但允许从其父类借用 30 kbps 以上的可用带宽(30 + …

traffic-shaping tc htb

5
推荐指数
1
解决办法
1019
查看次数

Debian7 和 tc qdisc 问题:RTNETLINK 答案:没有这样的文件或目录

我已经搜索了几天,但找不到解决我的问题的方法。

我有一个运行 Debian 7 的 VPS,我有 root 访问权限。

我正在尝试添加一些流量整形(使用 HTB),所以我尝试输入的第一行是这样的:

tc qdisc add dev tun0 root handle 1: htb default 10
Run Code Online (Sandbox Code Playgroud)

但不知何故它似乎是错误的,因为我收到以下错误:

RTNETLINK answers: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我的 ifconfig 显示了一个接口 tun0,所以它存在。无论如何,我也尝试过 venet0 并且失败并出现相同的错误。

当我这样做时,tc qdisc list我只有以下规则:

qdisc pfifo_fast 0: dev tun0 root refcnt 2 bands 3 priomap  1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
Run Code Online (Sandbox Code Playgroud)

我真的找不到哪里出了问题。

注意:我升级了包 iproute(根据 Debian 的文档,它是 tc 所在的位置),但它并没有做得更好。

debian iptables traffic-shaping tc htb

5
推荐指数
1
解决办法
2万
查看次数