【未来虫教育】linux 自带高级流控

一个网络接口上如果没有设置 QDisc,pfifo_fast 就作为缺省的 QDisc。

  • CLASSFUL QDISC (分类 QDisc):
  • 可分类的 qdisc 包括:
  • CBQ: CBQ 是 Class Based Queueing (基于类别排队) 的缩写。它实现了一个丰富的连接共享类别结构,既有限制 (shaping) 带宽的能力,也具有带宽优先级管理的能力。带宽限制是通过计算连接的空闲时间完成的。空闲时间的计算标准是数据包离队事件的频率和下层连接 (数据链路层) 的带宽。
  • HTB: HTB 是 Hierarchy Token Bucket 的缩写。通过在实践基础上的改进,它实现了一个丰富的连接共享类别体系。使用 HTB 可以很容易地保证每个类别的带宽,它也允许特定的类可以突破带宽上限,占用别的类的带宽。HTB 可以通过 TBF (Token Bucket Filter) 实现带宽限制,也能够划分类别的优先级。
  • PRIO: PRIO QDisc 不能限制带宽,因为属于不同类别的数据包是顺序离队的。使用 PRIO QDisc 可以很容易对流量进行优先级管理,只有属于高优先级类别的数据包全部发送完毕,才会发送属于低优先级类别的数据包。为了方便管理,需要使用 iptables 或者 ipchains 处理数据包的服务类型 (Type Of Service,ToS)。

2.2.2 class(类)

某些 QDisc (排队规则) 可以包含一些类别,不同的类别中可以包含更深入的 QDisc (排队规则),通过这些细分的 QDisc 还可以为进入的队列的数据包排队。通过设置各种类别数据包的离队次序,QDisc 可以为设置网络数据流量的优先级。

2.2.3 filter(过滤器)

Filter (过滤器) 用于为数据包分类,决定它们按照何种 QDisc 进入队列。无论何时数据包进入一个划分子类的类别中,都需要进行分类。分类的方法可以有多种,使用 fileter (过滤器) 就是其中之一。使用 filter (过滤器) 分类时,内核会调用附属于这个类 (class) 的所有过滤器,直到返回一个判决。如果没有判决返回,就作进一步的处理,而处理方式和 QDISC 有关。需要注意的是,filter (过滤器) 是在 QDisc 内部,它们不能作为主体。

2.3 执行过程

类 (Class) 组成一个树,每个类都只有一个父类,而一个类可以有多个子类。某些 QDisc (例如:CBQ 和 HTB) 允许在运行时动态添加类,而其它的 QDisc (例如:PRIO) 不允许动态建立类。允许动态添加类的 QDisc 可以有零个或者多个子类,由它们为数据包排队。此外,每个类都有一个叶子 QDisc,默认情况下,这个叶子 QDisc 使用 pfifo 的方式排队,我们也可以使用其它类型的 QDisc 代替这个默认的 QDisc。而且,这个叶子 QDisc 有可以分类,不过每个子类只能有一个叶子 QDisc。 当一个数据包进入一个分类 QDisc,它会被归入某个子类。

我们可以使用以下三种方式为数据包归类,不过不是所有的 QDisc 都能够使用这三种方式:

  • tc 过滤器 (tc filter): 如果过滤器附属于一个类,相关的指令就会对它们进行查询。过滤器能够匹配数据包头所有的域,也可以匹配由 ipchains 或者 iptables 做的标记。
  • 服务类型 (Type of Service): 某些 QDisc 有基于服务类型(Type of Service,ToS)的内置的规则为数据包分类。
  • 如果数据包没有被成功归类,就会被拍到这个类的叶子 QDisc 的队中。相关细节在各个 QDisc 的手册页中。

2.4 命名规则

所有的 QDisc、类和过滤器都有 ID。ID 可以手工设置,也可以有内核自动分配。ID 由一个主序列号和一个从序列号组成,两个数字用一个冒号分开。

  • QDISC: 一个 QDisc 会被分配一个主序列号,叫作句柄 (handle),然后把从序列号作为类的命名空间。句柄采用象 10: 一样的表达方式。习惯上,需要为有子类的 QDisc 显式地分配一个句柄。
  • 在同一个 QDisc 里面的类分享这个 QDisc 的主序列号,但是每个类都有自己的从序列号,叫作类识别符 (classid)。类识别符只与父 QDisc 有关,和父类无关。类的命名习惯和 QDisc 的相同。
  • filter:
  • 过滤器的 ID 有三部分,只有在对过滤器进行散列组织才会用到。详情请参考 tc-filters 手册页。

2.5 单位

  • 带宽或流速单位:

今日霍州(www.jrhz.info)©️

  • 数据数量单位:

今日霍州(www.jrhz.info)©️

三、tc 命令参数解读

tc 可以使用以下命令对 QDisc、类和过滤器进行操作:

  • add:
  • 在一个节点里加入一个 QDisc、类或者过滤器。添加时,需要传递一个祖先作为参数,传递参数时既可以使用 ID 也可以直接传递设备的根。如果要建立一个 QDisc 或者过滤器,可以使用句柄 (handle) 来命名;如果要建立一个类,可以使用类识别符 (classid) 来命名。
  • remove:
  • 删除有某个句柄 (handle) 指定的 QDisc,根 QDisc (root) 也可以删除。被删除 QDisc 上的所有子类以及附属于各个类的过滤器都会被自动删除。
  • change:
  • 以替代的方式修改某些条目。除了句柄 (handle) 和祖先不能修改以外,change 命令的语法和 add 命令相同。换句话说,change 命令不能一定节点的位置。
  • replace:
  • 对一个现有节点进行近于原子操作的删除/添加。如果节点不存在,这个命令就会建立节点。
  • link:
  • 只适用于 DQisc,替代一个现有的节点。

四、应用

Linux 流量控制主要分为建立队列、建立分类和建立过滤器三个方面。

4.1 步骤:

  • 针对网络物理设备(如以太网卡 eth0)绑定一个队列 QDisc;
  • 在该队列上建立分类 class;
  • 为每一分类建立一个基于路由的过滤器 filter;
  • 最后与过滤器相配合,建立特定的路由表。

今日霍州(www.jrhz.info)©️

特别声明:[【未来虫教育】linux 自带高级流控] 该文观点仅代表作者本人,今日霍州系信息发布平台,霍州网仅提供信息存储空间服务。

猜你喜欢

五月天演唱会应援色『穿搭』火了!卜卜色+蓝色成中年追星族新宠,你get了吗(五月天演唱会2026)

回头看,90后们还在苦恼如何『穿搭』才能让BLACKPINK的黑粉配色既时髦又不土气,而我们70后、80后早就通过卜卜色和星空蓝的搭配,悄然将中年追星推向了一个全新的高度。 蓝色,的确是五月天的标志色,这个已…

五月天演唱会应援色『穿搭』火了!卜卜色+蓝色成中年追星族新宠,你get了吗(五月天演唱会2026)

黄仁勋:很乐意投资OpenAI。(黄仁勋吧)

来源:滚动播报…

黄仁勋:很乐意投资OpenAI。(黄仁勋吧)

Share | 『林允』,肤白貌美,性感写真壁纸(『林允』vlog)

她肤色白皙透亮,在镜头前仿佛自带柔光,那份“美人鱼”般纯净灵动的气质,让她在众多写真中总能脱颖而出。 她的写真往往捕捉她最松弛的状态,或许是在海边肆意大笑,发丝沾着水珠,或是慵懒地窝在沙发里,眼神清澈又带着一…

Share | 『林允』,肤白貌美,性感写真壁纸(『林允』vlog)

做跨境POD也踩坑?新手卖家三个月亏五万的教训与避坑指南(做跨境平台太难了)

在指纹科技HICUSTOM平台的全面赋能下,小李的店铺运营发生了根本性转变。 指纹科技HICUSTOM平台通过供应链全链路托管,为他这样的中小卖家提供了原本难以企及的全球化、柔性化供应链能力,将复杂的后端转…

做跨境POD也踩坑?新手卖家三个月亏五万的教训与避坑指南(做跨境平台太难了)

女排两门重炮出席时尚盛会 你觉得俄罗斯重返国际赛场能掀翻意大利吗(女排 重炮手)

北京时间2月5日晚,俄罗斯女排阿丽娜·费多罗夫采娃、玛丽娜·马尔科娃一同亮相在伊斯坦布尔举行的 『Vogue』 ClubParty,为这场时尚盛会注入了浓浓的运动美学气息。 作为活动主办方之一,『时尚杂志』Vogu…

女排两门重炮出席时尚盛会 你觉得俄罗斯重返国际赛场能掀翻意大利吗(女排 重炮手)