多年以来linux tc限速模块使用误区

tc qdisc add dev $IFACE root handle 1: htb default 20
tc class add dev $IFACE parent 1: classid 1:1 htb rate ${USPEED}kbit prio 5

tc filter add dev $IFACE parent 1: protocol ip prio 18 u32 match ip src 192.168.18.15/0 flowid 1:1

ip link set dev $IFB up
tc qdisc add dev $IFACE handle ffff: ingress
tc filter add dev $IFACE parent ffff: protocol ip u32 match u32 0 0 action mirred egress redirect dev $IFB

tc qdisc add dev $IFB root handle 2: htb
tc class add dev $IFB parent 2: classid 2:1 htb rate ${DSPEED}kbit

tc filter add dev $IFB protocol ip parent 2: prio 1 u32 match ip dst 192.168.18.15/0 flowid 2:1

上面是来源于wondershaper的主要tc部分,因做测试有所修改。
tc qdisc add dev $IFACE root handle 1: htb default 20
在创建时指定一个 default 20,表示默认使用classid 1:20组,即没有其它规则指定的都使用classid 1:20这一组规则处理。很多“大神”在写qos脚本时认为,这default是“随便创建”的,随便填256,999,65536等等,以为反正用不到。他们写的东西能不能用我真的不知道,但“随便创建”就体现出无知来。比如在传输一个未识别类型的数据时,使用这“随便创建”并且并不存在的规则时,传输就毫无顾忌,横冲直撞,占满整个带宽,何来qos可言?
正常做法应该创建一条1:20规则,并且指定带宽和比较低的优先级,无法归类的也受控制。
但tc是个非常卵疼的东西,管输出不管输入,因此要用于wan接口上会很大麻烦,所以都用于比较方便控制的br-lan上,如果指定default组,则内网传输也受控,在外网100mbps,内网1000mbps的环境下使用,内网也受控不会超过100mbps,造成非常蛋疼的效果。

Linux tc(Traffic Control)是一种用于限制网络带宽的命令行工具。通过使用tc命令,我们可以控制特定接口的出入流量,从而限制网络的速度。 在使用tc进行限速之前,我们首先需要了解一些基本概念。TC涉及的三个主要概念是:类别(class)、过滤器(filter)和队列(queue)。类别定义了包的属性和限制,过滤器定义了哪些包应该被当作哪一类别进行处理,队列则决定了包的传输顺序。 通过以下步骤可以在Linux使用tc限速: 1. 安装tc命令:在大多数Linux发行版上,tc命令已经默认安装了。如果你的系统上没有tc命令,可以通过包管理器进行安装。 2. 创建一个根类别(root class):使用tc命令创建一个根类别,该类别将负责整个网络接口的限速。 3. 创建子类别和队列:在根类别下创建子类别,每个子类别对应不同的限速策略。然后,为每个子类别创建队列,该队列将控制包的传输顺序。 4. 添加过滤器:使用tc命令指定哪些包应该被当作哪个子类别进行处理,可以根据源IP、目标IP、端口等进行过滤。 5. 设置限速参数:为每个子类别设置带宽限制、延迟、丢包率等参数,以达到限速的目的。 6. 启用限速规则:使用tc命令激活限速规则,将其应用到指定的网络接口上。 通过以上步骤,我们就可以成功使用Linuxtc命令进行网络限速了。请注意,对于一些复杂的限速需求,可能需要更详细的配置,例如使用htb算法对不同的子类别进行更精细的控制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值