linux 串口编程速率慢,linux – HTB的最小速率和默认类问题

我对我正在使用的HTB结构有些怀疑.

我的目标是限制本地网络中用户的下载和上传速度.

网络的每个用户都有一个域名的个人列表,其域名的上下速度不能超过.

这意味着user1可以将他在slashdot.org上的访问限制为下载时限制为8KB,上传时限制为3KB,而user2可以在slashdot.org上限制访问4KB和1KB.

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

这是我目前的结构(我只会在局域网的出口处显示一个,上传的那个只是这个的“副本”)

接口上附有HTB qdisc(句柄2 :),默认流量类为FFFF类.

直接在HTB qdisc下的根类2:1具有速率和上限DOWNLINK容量.

默认类别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 0xFFFF

# Main class so the default class can borrow bandwith from the others

$tc class replace dev $LAN_IFACE parent 0x2: classid 0x2:0x1 htb rate $DOWNLINK ceil $DOWNLINKkbps

# add the default class of class id 2:a under the main class of classid 2:1

$tc class replace dev $LAN_IFACE parent 0x2:0x1 classid 0x2:0xFFFF htb rate 1kbps ceil $DOWNLINKkbps prio 0

# add to the leaf class 2:10 for default traffic a sfq qdisc

$tc qdisc add dev $LAN_IFACE parent 0x2:0xFFFF handle 0xFFFF: sfq perturb 10

## The dynamic part called each time a new restriction for a couple domain/user is added

$tc class replace dev $LAN_IFACE parent 0x2:0x1 classid 0x2:0x$idHex htb rate 1bps ceil $speedDownkbps prio 1

# Add the sfq at the leaf class 2:1$id

$tc qdisc add dev $LAN_IFACE parent 0x2:0x$idHex handle 0x$idHex: sfq perturb 10

# $id is the mark added by iptables for this couple domain/user

$tc filter replace dev $LAN_IFACE parent 0x2:0 protocol ip prio 3 handle 0x$id fw flowid 0x2:0x$idHex

-------------- END SCRIPT --------------

所有正常流量(没有速度限制)应该转到默认类,并且受限制的流量应该发送到其对应的tc类.

我怀疑的重点是使用默认类和限制类的最小1bps速率.我无法控制将要创建的受限类的数量,并且我不希望限制类的总速率超过其中一个根类.

另一点,我添加了prio 0的默认值,以及prio 1的限制类,所以如果默认类应该借用(几乎总是根据其非常慢的速率),这个类将在另一个受限域之前提供.但是,如果我将默认类的ceil保持为根类之一,那么这些域名不会挨饿吗?

如何才能成功地允许用户为非限制使用保持良好的交互性和带宽,同时限制几个域/用户的速度?

我也想知道默认类是否有用,因为如果我没有;为htb qdisc指定一个默认类,那么与过滤器不匹配的数据包将以硬件速度出列. (但是这里再次让受限制的阶级挨饿?)

我是tc和网络QoS的新手,所以任何建议,评论家(建设性的;)都会受到欢迎.

文森特.

你可能感兴趣的:(linux,串口编程速率慢)