基于BPF的流量控制分类器
1. 流量控制概述
流量控制(Traffic Control)是内核数据包调度子系统架构,由多种机制和排队系统组成,可决定数据包的流动方式和接收规则。其常见用例包括:
- 对特定类型的数据包进行优先级排序
- 丢弃特定类型的数据包
- 进行带宽分配
一般来说,当需要在系统中重新分配网络资源时,流量控制是一个不错的选择。为了充分发挥其作用,应根据要运行的应用类型部署特定的流量控制配置。
流量控制提供了一个可编程的分类器 cls_bpf ,可让我们在调度操作的不同级别进行挂钩,读取和更新套接字缓冲区及数据包元数据,实现流量整形、跟踪、预处理等功能。从内核4.1开始, cls_bpf 支持eBPF,这意味着此类程序可以访问eBPF映射、支持尾调用、访问IPv4/IPv6隧道元数据,还能使用eBPF提供的辅助函数和实用工具。
与流量控制网络配置交互的工具是 iproute2 套件的一部分,其中 ip 用于操作网络接口, tc 用于操作流量控制配置。
2. 术语解释
由于流量控制和BPF程序之间存在交互点,因此需要了解一些流量控制的概念。
2.1 排队规则(Queueing disciplines,qdisc)
排队规则定义了用于将数据包排队到接口的调度对象,这些对象可以是无类(classless)或有类(classful)的。
- 默认排队规则 </
超级会员免费看
订阅专栏 解锁全文
1954

被折叠的 条评论
为什么被折叠?



