家庭 net-shaper
netlink 规范¶
摘要¶
网络硬件速率限制配置。
此 API 允许在不同级别(队列、网络设备)配置网络设备上可用的硬件整形器,并允许任意操作所涉及整形器的调度树。
每个 @整形器在给定的设备中由 @句柄标识,该句柄包括 @范围和 @id。
根据 @范围值,整形器附加到特定的硬件对象(队列、设备),或者对于 @节点范围,表示一个调度组,该组可以放置在调度树的任意位置。
整形器可以通过两种不同的操作创建:@设置操作,用于创建和更新单个“附加”整形器;以及 @组操作,用于创建和更新调度组。只有 @组操作可以创建 @节点范围整形器。
现有的整形器可以通过 @删除操作删除/重置。
用户可以通过 @获取操作查询正在运行的配置。
不同的设备可以提供不同的功能集,例如,不支持复杂的调度层次结构,或者不支持某些整形参数。用户可以通过 @能力获取操作检查硬件功能。
操作¶
获取¶
获取给定设备的整形器信息。
- 属性集:
- 执行:
- 前置
net-shaper-nl-pre-doit
- 后置
net-shaper-nl-post-doit
- 请求
- 属性:
[
ifindex
,handle
]
- 回复
- 属性:
[
ifindex
,parent
,handle
,metric
,bw-min
,bw-max
,burst
,priority
,weight
]
- 转储:
- 前置
net-shaper-nl-pre-dumpit
- 后置
net-shaper-nl-post-dumpit
- 请求
- 属性:
[
ifindex
]
- 回复
- 属性:
[
ifindex
,parent
,handle
,metric
,bw-min
,bw-max
,burst
,priority
,weight
]
设置¶
创建或更新指定的整形器。@设置操作不能用于创建 @节点范围整形器,请改用 @组操作。
- 属性集:
- 标志:
[
admin-perm
]- 执行:
- 前置
net-shaper-nl-pre-doit
- 后置
net-shaper-nl-post-doit
- 请求
- 属性:
[
ifindex
,handle
,metric
,bw-min
,bw-max
,burst
,priority
,weight
]
删除¶
清除(删除)指定的整形器。删除 @节点整形器时,将所有节点的叶子重新附加到已删除节点的父节点。如果删除后,父整形器没有更多叶子,并且父整形器的范围是 @节点,则递归删除父节点。删除 @队列整形器或 @网络设备整形器时,整形器将从层次结构中消失,但队列/设备仍然可以发送流量:它具有一个无限带宽的隐式节点。队列的隐式节点在层次结构的根部提供一个隐式 RR 节点。
- 属性集:
- 标志:
[
admin-perm
]- 执行:
- 前置
net-shaper-nl-pre-doit
- 后置
net-shaper-nl-post-doit
- 请求
- 属性:
[
ifindex
,handle
]
组¶
创建或更新一个调度组,将指定的 @叶子整形器附加到由 @句柄标识的指定节点下。@叶子整形器的范围必须是 @队列,并且节点整形器的范围必须是 @节点或 @网络设备。当节点整形器的范围是 @节点时,如果未指定 @句柄 @id,则创建该范围的新整形器,否则指定的节点必须已存在。更新现有节点整形器时,指定的 @叶子将添加到现有节点;此节点也将保留任何预先存在的叶子。新节点整形器的 @父句柄默认为所有叶子的父级,前提是所有叶子共享相同的父级。否则,必须指定 @父句柄。用户可以选择为节点整形器提供整形属性。该操作是原子的,如果失败,则不会对设备整形配置进行任何更改,否则,将提供包含 @绑定和 @句柄的 @节点整形器完整标识符作为回复。
- 属性集:
- 标志:
[
admin-perm
]- 执行:
- 前置
net-shaper-nl-pre-doit
- 后置
net-shaper-nl-post-doit
- 请求
- 属性:
[
ifindex
,parent
,handle
,metric
,bw-min
,bw-max
,burst
,priority
,weight
,leaves
]
- 回复
- 属性:
[
ifindex
,handle
]
能力获取¶
获取给定设备为指定范围支持的整形器功能。
- 属性集:
- 执行:
- 前置
net-shaper-nl-cap-pre-doit
- 后置
net-shaper-nl-cap-post-doit
- 请求
- 属性:
[
ifindex
,scope
]
- 回复
- 属性:
[
ifindex
,scope
,support-metric-bps
,support-metric-pps
,support-nesting
,support-bw-min
,support-bw-max
,support-burst
,support-priority
,support-weight
]
- 转储:
- 前置
net-shaper-nl-cap-pre-dumpit
- 后置
net-shaper-nl-cap-post-dumpit
- 请求
- 属性:
[
ifindex
]
- 回复
- 属性:
[
ifindex
,scope
,support-metric-bps
,support-metric-pps
,support-nesting
,support-bw-min
,support-bw-max
,support-burst
,support-priority
,support-weight
]
定义¶
范围¶
- 类型:
枚举
- 文档:
定义整形器 @id 的解释。
- 条目:
- 未指定:
未指定范围。
- 网络设备:
给定网络设备的主整形器。
- 队列:
整形器附加到给定的设备队列,@id 表示队列号。
- 节点:
整形器允许对队列或其他节点整形器进行分组;可以嵌套在 @网络设备整形器或其他 @节点整形器中,从而允许放置在调度树的任何位置,除了叶子和根。
指标¶
- 类型:
枚举
- 文档:
整形器支持的不同指标。
- 条目:
- bps:
整形器按每秒比特数运行。
- pps:
整形器按每秒数据包数运行。
属性集¶
网络整形器¶
句柄(nest
)¶
- 嵌套属性:
- 文档:
拥有设备中给定整形器的唯一标识符。
指标(u32
)¶
- 枚举:
- 文档:
给定整形器用于 bw-min、bw-max 和 burst 的指标。
bw-min(uint
)¶
- 文档:
给定整形器的保证带宽。
bw-max(uint
)¶
- 文档:
给定整形器的最大带宽,如果无限制则为 0。
burst(uint
)¶
- 文档:
用于整形的burst最大大小。不应解释为量子。
优先级(u32
)¶
- 文档:
给定整形器的调度优先级。优先级调度应用于同级整形器。
权重(u32
)¶
- 文档:
给定整形器的循环调度相对权重。调度应用于所有具有相同优先级的同级整形器。
ifindex(u32
)¶
- 文档:
拥有指定整形器的接口索引。
父级 (nest
)¶
- 嵌套属性:
- 文档:
受影响的整形器的父级标识符。仅在 @group 操作中需要。
叶子 (nest
)¶
- 多属性:
真
- 嵌套属性:
- 文档:
描述 @group 操作的一组叶子整形器。
句柄¶
范围 (u32
)¶
- 枚举:
- 文档:
定义整形器 @id 的解释。
ID (u32
)¶
- 文档:
整形器的数字标识符。ID 的语义取决于范围。对于 @queue 范围,它是队列 ID,对于 @node 范围,它是节点标识符。
叶子信息¶
句柄¶
优先级¶
权重¶
能力¶
接口索引 (u32
)¶
- 文档:
查询整形器功能的接口索引。
范围 (u32
)¶
- 枚举:
- 文档:
所查询功能适用的范围。
支持指标-bps (flag
)¶
- 文档:
设备接受 bw-min、bw-max 和 burst 的 'bps' 指标。
支持指标-pps (flag
)¶
- 文档:
设备接受 bw-min、bw-max 和 burst 的 'pps' 指标。
支持嵌套 (flag
)¶
- 文档:
设备支持将属于此范围的整形器嵌套在“节点”范围的整形器之下。只有“队列”和“节点”范围可以有标志“支持嵌套”。
支持 bw-min (flag
)¶
- 文档:
设备支持最小保证带宽。
支持 bw-max (flag
)¶
- 文档:
设备支持最大带宽整形。
支持突发 (flag
)¶
- 文档:
设备支持最大突发大小。
支持优先级 (flag
)¶
- 文档:
设备支持优先级调度。
支持权重 (flag
)¶
- 文档:
设备支持加权循环调度。