我的目标是限制本地网络中用户的下载和上传速度.
网络的每个用户都有一个域名的个人列表,其域名的上下速度不能超过.@H_301_4@
这意味着user1可以将他在slashdot.org上的访问限制为下载时限制为8KB,上传时限制为3KB,而user2可以在slashdot.org上限制访问4KB和1KB.@H_301_4@
现在我设置了一个非常好的iptables / tc对,但是在很小的范围内,同时使用2个或3个虚拟主机(不幸的是,我无法执行实际大小测试).@H_301_4@
这是我目前的结构(我只会在局域网的出口处显示一个,上传的那个只是这个的“副本”)@H_301_4@
接口上附有HTB qdisc(句柄2 :),默认流量类为FFFF类.@H_301_4@
直接在HTB qdisc下的根类2:1具有速率和上限DOWNlink容量.@H_301_4@
默认类别2:FFFF为2:1的子级,速率为1kbsp,下行链路容量为ceil.@H_301_4@
然后,当某个域中存在对用户的新限制时,会动态添加其他类,添加新的tc类以控制其域中的下载速度.@H_301_4@
现在,这就是我做的:@H_301_4@
创建一个具有唯一ID的新tc类(取自数据库,而不是此处的点),作为父类2:1,速率值为1bps,ceil值设置为有限的下载速度.@H_301_4@
这是tc命令:@H_301_4@
-------------- 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类.@H_301_4@
我怀疑的重点是使用默认类和限制类的最小1bps速率.我无法控制将要创建的受限类的数量,并且我不希望限制类的总速率超过其中一个根类.@H_301_4@
另一点,我添加了prio 0的默认值,以及prio 1的限制类,所以如果默认类应该借用(几乎总是根据其非常慢的速率),这个类将在另一个受限域之前提供.但是,如果我将默认类的ceil保持为根类之一,那么这些域名不会挨饿吗?@H_301_4@
如何才能成功地允许用户为非限制使用保持良好的交互性和带宽,同时限制几个域/用户的速度?@H_301_4@
我也想知道默认类是否有用,因为如果我没有;为htb qdisc指定一个默认类,那么与过滤器不匹配的数据包将以硬件速度出列. (但是这里再次让受限制的阶级挨饿?)@H_301_4@
我是tc和网络QoS的新手,所以任何建议,评论家(建设性的;)都会受到欢迎.@H_301_4@
文森特.@H_301_4@解决方法 由于您没有包含分类器,因此很难扣除每个类中您确切含义的流量.
例如,传出的http或ssh流量对于交互性非常重要,传入的http不是那么多.
我会保证每个服务的某些带宽,说:我对传入的httpd流量有x kbps,并且它在用户之间平均分配.如果您有10个或100个用户,这是公平的.“如果您在每个服务中都有高优先级用户或低优先级用户,则需要为他们提供其他类和分类器.@H_301_4@
(另外我希望你知道你只能塑造来自接口的传出流量,而不是传入.这意味着如果你想限制上行链路,你必须使用到互联网的传出接口或使用Intermediate Queuing Device. lartc.组织指南是一个非常好的资源.)@H_301_4@ 总结
以上是内存溢出为你收集整理的linux – HTB的最小速率和默认类问题全部内容,希望文章能够帮你解决linux – HTB的最小速率和默认类问题所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)