使用TC 对LINUX服务器网卡进行带宽限制的办法

本文介绍如何在Linux服务器上使用tc命令限制网卡带宽,包括安装iproute包、设置不同速率的带宽限制策略、查看现有策略及移除限制。通过具体实例展示TBF(Token Bucket Filter)配置方法。

对LINUX服务器网卡进行带宽限制的办法:

1、安装iproute
yum -y install iproute


2、限制eth0网卡的带宽为500kbit:
/sbin/tc qdisc add dev eth0 root tbf rate 500kbit latency 50ms burst 15kb

TBF Example(限制带宽为1mbit)

To attach a TBF with a sustained maximum rate of 1mbit/s, a peakrate of 2.0mbit/s, a 10kilobyte buffer, with a pre-bucket queue size limit calculated so the TBF causes at most 70ms of latency, with perfect peakrate behavior, enter:
# tc qdisc add dev eth0 root tbf rate 1mbit burst 10kb latency 70ms peakrate 2mbit minburst 1540

3、解除eth0网卡的带宽限制:
/sbin/tc qdisc del dev eth0 root


4、列出已有的策略:

tc -s qdisc ls dev eth0


5、启动时自动加载带宽限制策略:

vim /etc/rc.local

加入: /sbin/tc qdisc add dev eth0 root tbf rate 500kbit latency 50ms burst 15kb

 参考资料:http://www.cyberciti.biz/faq/linux-traffic-shaping-using-tc-to-control-http-traffic/


server004:所使用的命令 sudo tc qdisc add dev em1 root tbf rate 200mbit burst 10kb latency 70ms

实际速度在47M/s左右

### 限制服务器特定端口的带宽Linux 系统中,可以通过 `tc`(Traffic Control)工具实现对特定端口的带宽限制。该方法基于流量分类和过滤器机制,将匹配特定端口的数据包引导到指定的限速类中。 #### 使用 HTB 实现端口限速 首先,在网卡上添加一个根队列规则,使用 HTB 调度算法: ```bash tc qdisc add dev eth0 root handle 1: htb default 10 ``` 随后,设置总体带宽上限,例如设定为 10 Mbps: ```bash tc class add dev eth0 parent 1: classid 1:1 htb rate 10mbit ceil 10mbit ``` 接下来,创建一个子类用于特定端口的限速,例如将某个 TCP 端口(如 80)的带宽限制为 2 Mbps: ```bash tc class add dev eth0 parent 1:1 classid 1:20 htb rate 2mbit ceil 2mbit ``` 最后,通过 u32 过滤器匹配目标端口,并将其流量分配到上述限速类中: ```bash tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dport 80 0xffff flowid 1:20 ``` 此命令表示将目标端口为 80 的流量引导至类别 `1:20` 中,从而应用其带宽限制[^2]。 #### 使用 IFB 设备限制入站流量 由于 `tc` 默认只能控制出站流量(egress),若需限制入站流量(ingress),需要借助虚拟设备 `ifb`(Intermediate Functional Block)。首先加载 `ifb` 模块并启用虚拟接口: ```bash modprobe ifb ip link set dev ifb0 up ``` 然后将入站流量重定向到 `ifb0` 接口: ```bash tc qdisc add dev eth0 ingress tc filter add dev eth0 parent ffff: protocol ip u32 match ip sport 80 0xffff action mirred egress redirect dev ifb0 ``` 接着,在 `ifb0` 上配置限速规则: ```bash tc qdisc add dev ifb0 root handle 1: htb default 10 tc class add dev ifb0 parent 1: classid 1:20 htb rate 1mbit ceil 1mbit ``` 这样即可实现对入站端口流量的限速控制[^1]。 #### 验证与监控 可以使用 `iftop` 或 `nload` 等工具实时查看网络接口的流量情况,以确认限速是否生效。这些工具能够显示当前的 RX、TX 流量以及峰值速率等信息。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值