linux tc限制速度,linux tc 限速 控制流量

TC命令格式:

加入

tc qdisc [ add | change | replace | link ] dev DEV [ parent qdisc-id | root ] [ handle qdisc-id ] qdisc [ qdisc specific parameters ]

tc class [ add | change | replace ] dev DEV parent qdisc-id [ classid class-id ] qdisc [ qdisc specific parameters ]

tc filter [ add | change | replace ] dev DEV [ parent qdisc-id | root ] protocol protocol prio priority filtertype [ filtertype specific parameters ] flowid flow-id

显示

tc [-s | -d ] qdisc show [ dev DEV ]

tc [-s | -d ] class show dev DEV tc filter show dev DEV

查看TC的状态

tc -s -d qdisc show dev eth0

tc -s -d class show dev eth0

删除tc规则

tc qdisc del dev eth0 root

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

限制单个IP

1,添加规则

[root@ct-test ~]# tc qdisc add dev eth1 root handel 1: htb r2q 1

[root@ct-test ~]# tc class add dev eth1 parent 1: classid 1:1 htb rate 5mbit ceil 10mbit

[root@ct-test ~]# tc filter add dev eth1 parent 1: protocol ip prio 16 u32 match ip dst 192.168.3.153 flowid 1:1 #filter用来将用户划入到具体的控制策略中(即不同的class中)。

TC包括三个基本的构成块: 队列规定qdisc(queueing discipline )、类(class)和分类器(Classifiers)

就可以限制192.168.3.153的下载速度为5Mbit最高可以10Mbit

r2q,是指没有default的root,使整个网络的带宽没有限制

2,查看添加的规则

[root@ct-test ~]# tc -s -d qdisc show dev eth1 #查看队列(用来实现控制网络的收发速度)

qdisc htb 1: r2q 1 default 0 direct_packets_stat 48846 ver 3.17

Sent 28638574 bytes 48870 pkts (dropped 0, overlimits 0 requeues 0)

[root@ct-test ~]# tc -s -d class show dev eth1 #查看类(class用来表示控制策略)

class htb 1:1 root prio 0 quantum 200000 rate 5Mbit ceil 10Mbit burst 2224b/8 mpu 0b overhead 0b cburst 2848b/8 mpu 0b overhead 0b level 0

Sent 14679 bytes 52 pkts (dropped 0, overlimits 0 requeues 0)

rate 202bit

lended: 52 borrowed: 0 giants: 0

tokens: 3568 ctokens: 2296

[root@ct-test ~]#

3,删除添加的规则

[root@ct-test ~]# tc qdisc del dev eth1 root

4,再次查看规则

[root@ct-test ~]# tc -s -d qdisc show dev eth1

qdisc pfifo_fast 0: bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1

Sent 326504 bytes 488 pkts (dropped 0, overlimits 0 requeues 0)

[root@ct-test ~]# tc -s -d class show dev eth1 #已删除

[root@ct-test ~]#

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

限制网段,如果多个网段可以添加分类。tc很强大,这里是小小巫 tc qdisc add dev eth0 root handle 1: htb r2q 1 tc class add dev eth0 parent 1: classid 1:1 htb rate 50mbit ceil 1000mbit tc filter add dev eth0 parent 1: protocol ip prio 16 u32 match ip dst 192.168.3.0/24 flowid 1:1 就可以限制192.168.3.0 到255 的带宽为3000k了,实际下载速度为200k左右。 这种情况下,这个网段所有机器共享这200k的带宽。 还可以加入一个sfq(随机公平队列) tc qdisc add dev eth0 root handle 1: htb r2q 1 tc class add dev eth0 parent 1: classid 1:1 htb rate 3000kbit burst 10k tc qdisc add dev eth0 parent 1:1 handle 10: sfq perturb 10 tc filter add dev eth0 parent 1: protocol ip prio 16 u32 match ip dst 192.168.111.168 flowid 1:1 sfq,他可以防止一个段内的一个ip占用整个带宽。 下面是实例: [root@ct-test ~]# tc qdisc add dev eth1 root handle 1: htb r2q 1 [root@ct-test ~]# tc class add dev eth1 parent 1: classid 1:1 htb rate 5mbit ceil 10mbit [root@ct-test ~]# tc filter add dev eth1 parent 1: protocol ip prio 16 u32 match ip dst 192.168.3.0/24 flowid 1:1 [root@ct-test ~]# tc -s -d qdisc show dev eth1 qdisc htb 1: r2q 1 default 0 direct_packets_stat 6402 ver 3.17 Sent 7404865 bytes 9868 pkts (dropped 0, overlimits 497 requeues 0) [root@ct-test ~]# tc -s -d class show dev eth1 class htb 1:1 root prio 0 quantum 200000 rate 5Mbit ceil 10Mbit burst 2224b/8 mpu 0b overhead 0b cburst 2848b/8 mpu 0b overhead 0b level 0 Sent 6466768 bytes 6845 pkts (dropped 0, overlimits 0 requeues 0) rate 56721bit 72pps lended: 6845 borrowed: 0 giants: 0 tokens: 3502 ctokens: 2263

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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、付费专栏及课程。

余额充值