Family net-shaper netlink 規範¶
概述¶
網路硬體限速配置。
此 API 允許在不同級別(佇列、網路裝置)配置網路裝置上可用的硬體流量整形器,並允許對相關整形器的排程樹進行任意操作。
每個 @shaper 在給定裝置中透過一個 @handle 標識,該 @handle 包含 @scope 和 @id。
根據 @scope 值,整形器可以連線到特定的硬體物件(佇列、裝置),或者對於 @node 範圍,表示一個排程組,可以放置在排程樹中的任意位置。
整形器可以透過兩種不同的操作建立:@set 操作用於建立和更新單個“附加”整形器,@group 操作用於建立和更新排程組。只有 @group 操作才能建立 @node 範圍的整形器。
現有整形器可以透過 @delete 操作進行刪除/重置。
使用者可以透過 @get 操作查詢當前執行的配置。
不同的裝置可以提供不同的特性集,例如不支援複雜的排程層次結構,或不支援某些整形引數。使用者可以透過 @cap-get 操作檢查硬體能力。
操作¶
獲取¶
獲取給定裝置的整形器資訊。
- 屬性集:
- 執行:
- 前置
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]
設定¶
建立或更新指定的整形器。設定操作不能用於建立 @node 範圍的整形器,請改用 @group 操作。
- 屬性集:
- 標誌:
[
admin-perm]- 執行:
- 前置
net-shaper-nl-pre-doit
- 後置
net-shaper-nl-post-doit
- 請求
- 屬性:
[
ifindex,handle,metric,bw-min,bw-max,burst,priority,weight]
刪除¶
清除(移除)指定的整形器。當刪除一個 @node 整形器時,將其所有葉子重新連線到被刪除節點的父級。如果刪除後,父整形器沒有更多的葉子且父整形器範圍是 @node,則父節點將被遞迴刪除。當刪除 @queue 整形器或 @netdev 整形器時,整形器會從層次結構中消失,但佇列/裝置仍然可以傳送流量:它有一個無限頻寬的隱式節點。佇列的隱式節點會饋送到層次結構根部的隱式輪詢節點。
- 屬性集:
- 標誌:
[
admin-perm]- 執行:
- 前置
net-shaper-nl-pre-doit
- 後置
net-shaper-nl-post-doit
- 請求
- 屬性:
[
ifindex,handle]
分組¶
建立或更新一個排程組,將指定的 @leaves 整形器附加到由 @handle 標識的指定節點下。@leaves 整形器的範圍必須是 @queue,並且節點整形器的範圍必須是 @node 或 @netdev。當節點整形器具有 @node 範圍時,如果未指定 @handle @id,則會建立該範圍的新整形器,否則指定的節點必須已經存在。當更新現有節點整形器時,指定的 @leaves 會新增到現有節點;該節點也將保留任何預先存在的葉子。新節點整形器的 @parent 控制代碼預設為所有葉子的父級,前提是所有葉子共享相同的父級。否則必須指定 @parent 控制代碼。使用者可以選擇為節點整形器提供整形屬性。此操作是原子的,失敗時不會對裝置整形配置應用任何更改,否則會以回覆的形式提供 @node 整形器的完整識別符號(包括 @binding 和 @handle)。
- 屬性集:
- 標誌:
[
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 表示佇列號。
- 節點:
整形器允許對佇列或其他節點整形器進行分組;可以巢狀在 @netdev 整形器或其他 @node 整形器中,允許放置在排程樹的任何位置,除了葉子和根。
度量單位¶
- 型別:
列舉
- 文件:
整形器支援的不同度量單位。
- 條目:
- bps:
整形器以位元每秒為單位執行。
- pps:
整形器以包每秒為單位執行。
屬性集¶
流量整形器¶
控制代碼(nest)¶
- 巢狀屬性:
- 文件:
給定整形器在其所屬裝置內的唯一識別符號。
度量單位(u32)¶
- 列舉:
- 文件:
給定整形器用於最小頻寬、最大頻寬和突發量的度量單位。
最小頻寬(uint)¶
- 文件:
給定整形器的保證頻寬。
最大頻寬(uint)¶
- 文件:
給定整形器的最大頻寬,或0表示無限制。
突發量(uint)¶
- 文件:
整形的最大突發量。不應解釋為量子。
優先順序(u32)¶
- 文件:
給定整形器的排程優先順序。優先順序排程應用於同級整形器。
權重(u32)¶
- 文件:
給定整形器進行輪詢排程的相對權重。該排程應用於所有具有相同優先順序的同級整形器。
介面索引(u32)¶
- 文件:
擁有指定整形器的介面索引。
父級(nest)¶
- 巢狀屬性:
- 文件:
受影響整形器的父級識別符號。僅在 @group 操作中需要。
葉子(nest)¶
- 多屬性:
真
- 巢狀屬性:
- 文件:
描述 @group 操作的葉子整形器集。
控制代碼¶
範圍(u32)¶
- 列舉:
- 文件:
定義整形器 @id 的解釋方式。
ID(u32)¶
- 文件:
整形器的數字識別符號。ID的語義取決於範圍。對於 @queue 範圍,它是佇列ID;對於 @node 範圍,它是節點識別符號。
葉子資訊¶
控制代碼¶
優先順序¶
權重¶
能力¶
介面索引(u32)¶
- 文件:
查詢整形器能力的介面索引。
範圍(u32)¶
- 列舉:
- 文件:
查詢的能力所適用的範圍。
支援位元每秒度量單位(flag)¶
- 文件:
裝置接受“bps”作為最小頻寬、最大頻寬和突發量的度量單位。
支援包每秒度量單位(flag)¶
- 文件:
裝置接受“pps”作為最小頻寬、最大頻寬和突發量的度量單位。
支援巢狀(flag)¶
- 文件:
裝置支援將屬於此範圍的整形器巢狀在“節點”範圍的整形器下方。只有“佇列”和“節點”範圍可以具有“支援巢狀”標誌。
支援最小頻寬(flag)¶
- 文件:
裝置支援最小保證頻寬。
支援最大頻寬(flag)¶
- 文件:
裝置支援最大頻寬整形。
支援突發量(flag)¶
- 文件:
裝置支援最大突發量。
支援優先順序(flag)¶
- 文件:
裝置支援優先順序排程。
支援權重(flag)¶
- 文件:
裝置支援加權輪詢排程。