在linux中有一个tc命令,tc的主要作用就是针对网卡进行限流,限流有什么好处这里就不多说了,这里主要说一下tc的安装和使用。原本在网上搜了很多,都没有安装,可能是系统版本的问题,我用的是centos8版本的,所以网上使用iproute直接安装,然后安装后却没有tc命令,这个也没有测试,我就哪我在centos8环境里看一下。
安装以及使用格式
[root@wulaoer.org ~]# yum install -y iproute-tc #安装tc [root@wulaoer.org ~]# tc qdisc [add|change|replace|link] dev DEV [parent qdisk-id|root][handle qdisc-id] qdisc[qdisc specific parameters]
使用tc限流
[root@wulaoer.org ~]# tc qdisc add dev enp0s5 root tbf rate 500kbit latency 50ms burst 15kb #限制网卡enp0s5的带宽为500k [root@wulaoer.org ~]# tc -s qdisc ls dev enp0s5 #列出已有策略 qdisc tbf 8001: root refcnt 2 rate 500Kbit burst 15Kb lat 50ms Sent 2394 bytes 23 pkt (dropped 0, overlimits 0 requeues 0) backlog 0b 0p requeues 0 [root@wulaoer.org ~]# tc qdisc del dev enp0s5 root #删除上面增加的策略 [root@wulaoer.org ~]# tc -s qdisc ls dev enp0s5 qdisc fq_codel 0: root refcnt 2 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 64 Sent 670 bytes 5 pkt (dropped 0, overlimits 0 requeues 0) backlog 0b 0p requeues 0 maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0 new_flows_len 0 old_flows_len 0 /sbin/tc qdisc add dev enp0s5 root tbf rate 500kbit latency 50ms burst 15kb
参数注解
add 表示要添加 dev eth0 表示要操作的网卡为eth0 root 表示为网卡eth0添加的是一个根队列 handle 1: 表示队列的句柄为1: htb 表示要添加的队列为HTB队列 default 11 是htb特有的队列参数,意思是所有未分类的流量都将分配给类别1:11 parent 1: 表示类别的父亲为根队列1: classid 1:11 表示创建一个标识为1:11的类别 rate 40mbit 表示系统将为该类别确保带宽40mbit ceil 40mbit 表示该类别的最高可占用带宽为40mbit rate 速度操纵杆 tbf 令牌桶过滤器 limit/latency 这两个参数设置一个就可以了,limit确定最多有多少数据(字节数)在队列中等待可用令牌.你也可以通过设置latency参数来指定这个参数,latency参数确定了一个包在TBF中等待传输的最长等待时间.后者计算决定桶的大小,速率和峰值速率. burst/buffer/maxburst 桶的大小,以字节计.这个参数指定了最多可以有多少个令牌能够即刻被使用. 通常,管理的带宽越大,需要的缓冲器就越大.在Intel体系上,10兆bit/s的速率需要至少10k字节的缓冲区才能达到期望的速率. 如果你的缓冲区太小,就会导致到达的令牌没有地方放(桶满了),这会(缓冲区太小)导致潜在的丢包.
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏