首页 网站首页 商业信息 限流 查看内容

如何在 Linux 下使用 TC 优雅的实现网络限流

云裂变 2023-3-25 20:11 10465人围观 限流



1. Linux 下的流量控制道理

经过对包的排队,我们可以控制数据包的发送方式。这类控制,称之为数据整形,shape the data,包括对数据的以下操纵:

  • 增加延时
  • 丢包
  • 重新排列
  • 反复、损坏
  • 速度控制

qdisc-class-filter结构下,对流量停止控制需要停止三个步调:

  • 建立 qdisc 行列

上面提到 Linux 是经过包的排队停止流量的控制,那末首先得有一个行列。

  • 建立 class 分类

class 现实上,就是分别流量战略分类。比如分别两档流量限速 10MBps、20MBbs。

  • 建立 filter 过滤

虽然建立了 class 分类,可是并没有将任何的 IP、Port 绑定到 class 上,此时并不会有控建造用。还需要建立 filter 将指定的 IP、Port 绑定到 class 上,才能使流量控制 class 生效于资本。

TC 是 Linux 下供给的流量控制工具,也是 Cilium/eBPF 等收集组件的焦点根本设备之一。

2. 限制指定 IP、Port 对本机的拜候速度

2.1 检察网卡

ifconfig eth0:flags=4163<UP,BROADCAST,RUNNING,MULTICAST>mtu1500 inet1.1.1.1netmask255.255.254.0broadcast1.1.1.1 inet61::1:1:1:1prefixlen64scopeid0x20<link> ether1:1:1:1:1:1txqueuelen1000(Ethernet) RXpackets2980910bytes2662352343(2.4GiB) RXerrors0dropped0overruns0frame0 TXpackets1475969bytes122254809(116.5MiB) TXerrors0dropped0overruns0carrier0collisions0

2.2 设置qdisc-class-filter

  • 建立 qdisc 根行列

tcqdiscadddeveth0roothandle1:htbdefault1

  • 建立第一级 class 绑定一切带宽资本

留意这里的单元是6 MBps,也就是48 Mbps

tcclassadddeveth0parent1:0classid1:1htbrate6MBpsburst15k

  • 建立子分类 class

可以建立多个子分类,对资本的流量停止邃密化治理

tcclassadddeveth0parent1:1classid1:10htbrate6MBpsceil10MBpsburst15k

这里 ceil 设备的是上限,一般情况下限速为 6MBps,但收集余暇时,可以到达 10 MBps。


  • 建立过滤器 filter,限制 IP

tcfilteradddeveth0protocolipparent1:0prio1u32matchipdst1.2.3.3flowid1:10

这里对1.2.3.4停止限制带宽为1:10,也就是 6MBps。固然,你也可以间接给网段1.2.0.0/16加 class 战略。

2.3 检察并清算设置

  • 检察 class 设置

tcclassshowdeveth0 classhtb1:10parent1:1leaf10:prio0rate48Mbitceil80Mbitburst15Kbcburst1600b classhtb1:1rootrate48Mbitceil48Mbitburst15Kbcburst1590b

  • 检察 filter 设置

tcfiltershowdeveth0 filterparent1:protocolippref1u32chain0 filterparent1:protocolippref1u32chain0fh800:htdivisor1 filterparent1:protocolippref1u32chain0fh800::800order2048keyht800bkt0flowid1:10not_in_hw match01020303/ffffffffat16

  • 清算全数设置

tcqdiscdeldeveth0root

3. 限制本机对指定 IP、Port 的拜候速度

由于排队法则主如果基于出口偏向,不能对进口偏向的流量(Ingress)停止限制。是以,我们需要将流量重定向到 ifb 装备上,再对 ifb 的出口流量(Egress)停止限制,以终极到达控制的目标。


3.1 启用虚拟网卡

  • 将在 ifb 装备

modprobeifbnumifbs=1

  • 启用 ifb0 虚拟装备

iplinksetdevifb0up

3.2 设置qdisc-class-filter

  • 增加 qdisc

tcqdiscadddeveth0handleffff:ingress

  • 重定向网卡流量到 ifb0

tcfilteradddeveth0parentffff:protocolipu32matchu3200actionmirredegressredirectdevifb0

  • 增加 class 和 filter

tcqdiscadddevifb0roothandle1:htbdefault10 tcclassadddevifb0parent1:0classid1:1htbrate6Mbps tcclassadddevifb0parent1:1classid1:10htbrate6Mbps tcfilteradddevifb0parent1:0protocolipprio16u32matchipdst1.2.3.4flowid1:10

3.3 检察并清算设置

  • 下面是限速本机对指定 IP 拜候的监控图


进入的流量被限制在 6 MBps 以下,而进来的流量不被限制。

  • 检察 class 设置

tcclassshowdevifb0 classhtb1:10parent1:1prio0rate48Mbitceil48Mbitburst1590bcburst1590b classhtb1:1rootrate48Mbitceil48Mbitburst1590bcburst1590b

  • 检察 filter 设置

tcfiltershowdevifb0 filterparent1:protocolippref16u32chain0 filterparent1:protocolippref16u32chain0fh800:htdivisor1 filterparent1:protocolippref16u32chain0fh800::800order2048keyht800bkt0flowid1:10not_in_hw match01020304/ffffffffat16

  • 清算全数设置

tcqdiscdeldeveth0ingress tcqdiscdeldevifb0root modprobe-rifb

4. 参考

  • https://arthurchiao.art/blog/lartc-qdisc-zh/
  • https://serverfault.com/questions/350023/tc-ingress-policing-and-ifb-mirroring

(版权归原作者一切,侵删)



免责声明:本文内容来历于收集,所载内容仅供参考。转载仅为进修和交换之目标,如无意中加害您的正当权益,请实时联系Docker中文社区!


高端人脉微信群

高端人脉微信群

人脉=钱脉,我们相信天下没有聚不拢的人脉,扫码进群找到你所需的人脉,对接你所需的资源。

商业合作微信

商业合作微信

本站创始人微信,13年互联网营销经验,擅长引流裂变、商业模式、私域流量,高端人脉资源丰富。

精彩点评

相关推荐

平台大洗牌,被限流该怎么办?

平台大洗牌,被限流该怎么办?

最近平台大洗牌,评论区问最多的就是,如果被限流了该怎么办,今天就详细的解答这个问

降级-熔断-限流-傻傻分不清楚

降级-熔断-限流-傻傻分不清楚

1. 熔断1.1 熔断来源我们家用电闸上都有保险丝模块,当电压出现短路问题时,自动跳闸

血泪教训:小红书被限流怎么办?怎么恢复正常?

血泪教训:小红书被限流怎么办?怎么恢复正常?

很多新手小白刚开始运营小红书的时候,多半会经历很长一段数据低迷的情况。一方面,是

小红书无故被限流了??这里有你不知道的小红书限流小 ...

小红书无故被限流了??这里有你不知道的小红书限流小 ...

自从有消息爆出小红书内测直播功能之后,小红书成为了当下最受关注的平台之一。而正在

《抖音限流/降权/违规词手册》

《抖音限流/降权/违规词手册》

为了让更多小伙伴能够自己找到并解决【抖音限流】问题,今天为大家梳理一份抖音「限流

闲鱼被限流了,教你恢复元气

闲鱼被限流了,教你恢复元气

作者:咸鱼暴增系统很多朋友在使用小闲的时候都有可能碰到没有流量了,或者流量降低了

司马南为何被限流?多篇文章和视频下架!

司马南为何被限流?多篇文章和视频下架!

连续两天,灵灵看世界针对司马南污蔑、挑衅张文宏和陶斯亮提出质疑和批评,结果是:司

一文搞清楚限流、熔断和降级

一文搞清楚限流、熔断和降级

限流是对系统的被请求频率以及内部的部分功能的执行频率加以限制,防止因突发的流量激

作品播放量低,账号是不是被限流了,该怎么办呢?

作品播放量低,账号是不是被限流了,该怎么办呢?

前天我新发布的视频的播放量创历史了,有史以来最低的,你是不是也遇到过这样的情况?

一招判断自己的微头条是否被限流,被限流后,到底该怎么解决呢?

一招判断自己的微头条是否被限流,被限流后,到底该怎么解决呢?

对于一个自媒体创作者来说,辛辛苦苦创作的内容,发表后阅读量寥寥无几,那种心痛只有

阿里巴巴开源限流系统 Sentinel 全解析

阿里巴巴开源限流系统 Sentinel 全解析

今年下半年阿里开源了自研的限流系统 Sentinel,官方对 Sentinel 的介绍中用到了一系

展现量少怀疑被限流,打开它让你一看究竟,稍做修改也许爆了

展现量少怀疑被限流,打开它让你一看究竟,稍做修改也许爆了

不少友友顽强坚持,笔耕不辍,作品不少,但展现量不高,毕竟展现量才是根本,没有展现

文章被限流了怎么办?如何采取行动进行补救?我以昨天的文章为例

文章被限流了怎么办?如何采取行动进行补救?我以昨天的文章为例

文章被限流,是大家一直以来热议的一个话题,往往也只能表示无奈,没有任何办法,毕竟

第一批蹦迪选手已经“阳康”?武汉夜店开始限流了。

第一批蹦迪选手已经“阳康”?武汉夜店开始限流了。

月初我们找了22位知名的夜店老板做了一期专访,话题是关于“放开后夜店生意变好了吗?

如何判断账号是否被限流?没流量?赶紧查看这个地方

如何判断账号是否被限流?没流量?赶紧查看这个地方

只要查看一个地方,就可以知道你的账号是不是被限流了,好多朋友播放量突然间大幅度降

头条被限流可能是因为这几个原因,浅谈一下头条推荐机制

头条被限流可能是因为这几个原因,浅谈一下头条推荐机制

前段时间写了一篇文章刚发第一天没什么流量,突然第二天流量暴涨了,随之问题也跟着来

一篇文章说清楚头条“限流”那些事儿

一篇文章说清楚头条“限流”那些事儿

相信很多创作者都遇到辛苦写的微头条没有展现,也没有阅读量的情况,有些创作者知道这

抖音限流原因归纳总结与破解之道

抖音限流原因归纳总结与破解之道

2022年随着5G的来临,短视频作为目前最高阶最有效的信息展现方式,风口期必将持续不断

5种限流算法,7种限流方式,挡住突发流量?

5种限流算法,7种限流方式,挡住突发流量?

最近几年,随着微服务的流行,服务和服务之间的依赖越来越强,调用关系越来越复杂,服

主流的四种限流策略,我都可以通过redis实现

主流的四种限流策略,我都可以通过redis实现

引言在web开发中功能是基石,除了功能以外运维和防护就是重头戏了。因为在网站运行期

商业洽谈 文章投递 寻求报道
电话咨询: 15924191378
关注微信