网络设备族 netdev
netlink 规范¶
概述¶
通过通用 netlink 进行网络设备配置。
操作¶
dev-get¶
获取/转储有关网络设备的信息。
- 属性集:
- 执行:
- 请求
- 属性:
[
ifindex
]
- 回复
- 属性:
[
ifindex
,xdp-features
,xdp-zc-max-segs
,xdp-rx-metadata-features
,xsk-features
]
- 转储:
- 回复
- 属性:
[
ifindex
,xdp-features
,xdp-zc-max-segs
,xdp-rx-metadata-features
,xsk-features
]
dev-add-ntf¶
有关设备出现的通知。
- 通知:
dev-get
- mcgrp:
mgmt
dev-del-ntf¶
有关设备消失的通知。
- 通知:
dev-get
- mcgrp:
mgmt
dev-change-ntf¶
有关设备配置被更改的通知。
- 通知:
dev-get
- mcgrp:
mgmt
page-pool-get¶
获取/转储有关页池的信息。(只能列出与 net_device 关联的页池。)
- 属性集:
- 配置条件:
page-pool
- 执行:
- 请求
- 属性:
[
id
]
- 回复
- 属性:
[
id
,ifindex
,napi-id
,inflight
,inflight-mem
,detach-time
,dmabuf
]
- 转储:
- 回复
- 属性:
[
id
,ifindex
,napi-id
,inflight
,inflight-mem
,detach-time
,dmabuf
]
page-pool-add-ntf¶
有关页池出现的通知。
- 通知:
page-pool-get
- mcgrp:
page-pool
- 配置条件:
page-pool
page-pool-del-ntf¶
有关页池消失的通知。
- 通知:
page-pool-get
- mcgrp:
page-pool
- 配置条件:
page-pool
page-pool-change-ntf¶
有关页池配置被更改的通知。
- 通知:
page-pool-get
- mcgrp:
page-pool
- 配置条件:
page-pool
page-pool-stats-get¶
获取页池统计信息。
- 属性集:
- 配置条件:
page-pool-stats
- 执行:
- 请求
- 属性:
[
info
]
- 回复
- 属性:
[
info
,alloc-fast
,alloc-slow
,alloc-slow-high-order
,alloc-empty
,alloc-refill
,alloc-waive
,recycle-cached
,recycle-cache-full
,recycle-ring
,recycle-ring-full
,recycle-released-refcnt
]
- 转储:
- 回复
- 属性:
[
info
,alloc-fast
,alloc-slow
,alloc-slow-high-order
,alloc-empty
,alloc-refill
,alloc-waive
,recycle-cached
,recycle-cache-full
,recycle-ring
,recycle-ring-full
,recycle-released-refcnt
]
queue-get¶
从内核获取队列信息。只会报告已配置的队列(与所有可用的硬件队列相反)。
- 属性集:
- 执行:
- 请求
- 属性:
[
ifindex
,type
,id
]
- 回复
- 属性:
[
id
,type
,napi-id
,ifindex
,dmabuf
]
- 转储:
- 请求
- 属性:
[
ifindex
]
- 回复
- 属性:
[
id
,type
,napi-id
,ifindex
,dmabuf
]
napi-get¶
获取有关系统上配置的 NAPI 实例的信息。
- 属性集:
- 执行:
- 请求
- 属性:
[
id
]
- 回复
- 属性:
[
id
,ifindex
,irq
,pid
,defer-hard-irqs
,gro-flush-timeout
,irq-suspend-timeout
]
- 转储:
- 请求
- 属性:
[
ifindex
]
- 回复
- 属性:
[
id
,ifindex
,irq
,pid
,defer-hard-irqs
,gro-flush-timeout
,irq-suspend-timeout
]
qstats-get¶
获取/转储细粒度统计信息。报告哪些统计信息取决于设备和驱动程序,以及驱动程序是否存储每个队列的软件计数器。
- 属性集:
- 转储:
- 请求
- 属性:
[
ifindex
,scope
]
- 回复
- 属性:
[
ifindex
,queue-type
,queue-id
,rx-packets
,rx-bytes
,tx-packets
,tx-bytes
]
bind-rx¶
将 dmabuf 绑定到 netdev
- 属性集:
- 标志:
[
admin-perm
]- 执行:
- 请求
- 属性:
[
ifindex
,fd
,queues
]
- 回复
- 属性:
[
id
]
napi-set¶
设置可配置的 NAPI 实例设置。
- 属性集:
- 标志:
[
admin-perm
]- 执行:
- 请求
- 属性:
[
id
,defer-hard-irqs
,gro-flush-timeout
,irq-suspend-timeout
]
多播组¶
mgmt
page-pool
定义¶
xdp-act¶
- 类型:
标志
- 条目:
- 基本:
所有驱动程序支持的 XDP 功能集(XDP_ABORTED、XDP_DROP、XDP_PASS、XDP_TX)
- 重定向:
该网络设备支持 XDP_REDIRECT
- ndo-xmit:
此功能告知网络设备是否实现了 ndo_xdp_xmit 回调。
- xsk-zerocopy:
此功能告知网络设备是否在零复制模式下支持 AF_XDP。
- hw-offload:
此功能告知网络设备是否支持 XDP 硬件卸载。
- rx-sg:
此功能告知网络设备是否在驱动程序 napi 回调中实现非线性 XDP 缓冲区支持。
- ndo-xmit-sg:
此功能告知网络设备是否在 ndo_xdp_xmit 回调中实现非线性 XDP 缓冲区支持。
xdp-rx-metadata¶
- 类型:
标志
- 条目:
- 时间戳:
设备能够通过
bpf_xdp_metadata_rx_timestamp()
公开接收 HW 时间戳。- 哈希:
设备能够通过
bpf_xdp_metadata_rx_hash()
暴露接收数据包哈希值。- vlan-tag:
设备能够通过
bpf_xdp_metadata_rx_vlan_tag()
暴露接收数据包 VLAN 标签。
xsk-flags¶
- 类型:
标志
- 条目:
- tx-timestamp:
驱动程序支持硬件时间戳标记出口数据包。
- tx-checksum:
驱动程序支持 L3 校验和硬件卸载。
queue-type¶
- 类型:
枚举
- 条目:
rx
tx
qstats-scope¶
- 类型:
标志
- 条目:
queue
属性集¶
dev¶
ifindex (u32
)¶
- doc:
netdev ifindex
pad (pad
)¶
xdp-features (u64
)¶
- doc:
已启用 xdp 功能的位掩码。
- 枚举:
xdp-zc-max-segs (u32
)¶
- doc:
ZC 驱动程序支持的最大分片计数
xdp-rx-metadata-features (u64
)¶
- doc:
支持的 XDP 接收元数据功能的位掩码。有关详细信息,请参阅 XDP RX 元数据。
- 枚举:
xsk-features (u64
)¶
- doc:
已启用 AF_XDP 功能的位掩码。
- 枚举:
page-pool¶
id (uint
)¶
- doc:
页面池实例的唯一 ID。
ifindex (u32
)¶
- doc:
该池所属的 netdev 的 ifindex。如果页面池是为已经销毁的 netdev 分配的(因为页面池会等待所有内存返回),则可能报告为 0。
napi-id (uint
)¶
- doc:
使用此页面池实例的 NAPI 的 ID。
inflight (uint
)¶
- doc:
此页面池的未完成引用数(已分配但尚未释放的页面)。已分配的页面可能保存在套接字接收队列、驱动程序接收环、页面池回收环、页面池缓存等中。
inflight-mem (uint
)¶
- doc:
未完成页面持有的内存量。
detach-time (uint
)¶
- doc:
驱动程序分离页面池时,CLOCK_BOOTTIME 中的秒数。一旦分离,页面池将不再用于分配内存。页面池会等待从它们分配的所有内存被释放后才真正消失。“已分离”的页面池无法“重新附加”,它们只是等待消失。如果页面池未被分离,并且仍可用于分配新内存,则该属性不存在。
dmabuf (u32
)¶
- doc:
此页面池附加到的 dmabuf 的 ID。
page-pool-info¶
id¶
ifindex¶
page-pool-stats¶
info (nest
)¶
- doc:
页面池标识信息。
- nested-attributes:
alloc-fast (uint
)¶
- value:
8
alloc-slow (uint
)¶
alloc-slow-high-order (uint
)¶
alloc-empty (uint
)¶
alloc-refill (uint
)¶
alloc-waive (uint
)¶
recycle-cached (uint
)¶
recycle-cache-full (uint
)¶
recycle-ring (uint
)¶
recycle-ring-full (uint
)¶
recycle-released-refcnt (uint
)¶
napi¶
ifindex (u32
)¶
- doc:
NAPI 实例所属的 netdevice 的 ifindex。
id (u32
)¶
- doc:
NAPI 实例的 ID。
irq (u32
)¶
- doc:
napi 的关联中断向量号
pid (u32
)¶
- doc:
如果 NAPI 配置为在线程模式下运行,则为 napi 线程的 PID。如果 NAPI 不在线程模式下(即使用正常的软中断上下文),则该属性将不存在。
defer-hard-irqs (u32
)¶
- doc:
在硬中断延迟结束并重新启用硬件中断之前的连续空轮询次数。
gro-flush-timeout (uint
)¶
- doc:
触发 NAPI 看门狗计时器的时间,以纳秒为单位,该计时器会调度 NAPI 处理。此外,非零值还会阻止 GRO 在 NAPI 周期结束时刷新最近的超帧。这可能会增加接收延迟,以换取减少网络堆栈处理的帧数。
irq-suspend-timeout (uint
)¶
- doc:
如果事件轮询找到事件,则暂停 irq 处理的时间,以纳秒为单位
queue¶
id (u32
)¶
- doc:
队列索引;大多数队列类型的索引都像 C 数组一样,索引从 0 开始,到队列计数 - 1 结束。队列索引的范围限定为接口和队列类型。
ifindex (u32
)¶
- doc:
队列所属的 netdevice 的 ifindex。
type (u32
)¶
- doc:
队列类型,如 rx、tx。每种队列类型定义一个单独的 ID 空间。
- 枚举:
napi-id (u32
)¶
- doc:
服务此队列的 NAPI 实例的 ID。
dmabuf (u32
)¶
- doc:
附加到此队列的 dmabuf 的 ID(如果有)。
qstats¶
ifindex (u32
)¶
- doc:
统计信息所属的 netdevice 的 ifindex。
queue-type (u32
)¶
- doc:
队列类型,如 rx、tx(用于 queue-id)。
- 枚举:
queue-id (u32
)¶
- doc:
队列 ID,如果统计信息的范围限定为单个队列实例。
scope (uint
)¶
- doc:
应该使用什么对象类型来迭代统计信息。
- 枚举:
rx-packets (uint
)¶
- doc:
成功接收并传递到堆栈的线路数据包数。对于支持 XDP 的驱动程序,XDP 被视为堆栈的第一层,因此 XDP 使用的数据包仍在此处计数。
- value:
8
rx-bytes (uint
)¶
- doc:
成功接收的字节数,请参阅 rx-packets。
tx-packets (uint
)¶
- doc:
成功发送的线路数据包数。一旦数据包位于设备内存中,就认为数据包已成功发送(通常这意味着设备已为数据包发出 DMA 完成)。
tx-bytes (uint
)¶
- doc:
成功发送的字节数,请参阅 tx-packets。
rx-alloc-fail (uint
)¶
- doc:
Rx 数据路径上 skb 或缓冲区分配失败的次数。分配失败可能或可能不会导致数据包丢弃,具体取决于驱动程序实现以及系统是否快速恢复。
rx-hw-drops (uint
)¶
- doc:
进入设备但从未离开设备的所有数据包的数量,包括但不限于:由于缺少缓冲区空间、处理错误、显式或隐式策略和数据包过滤器而丢弃的数据包。
rx-hw-drop-overruns (uint
)¶
- doc:
由于瞬时资源不足(例如缓冲区空间、主机描述符等)而丢弃的数据包数量。
rx-csum-complete (uint
)¶
- doc:
被标记为 CHECKSUM_COMPLETE 的数据包数量。
rx-csum-unnecessary (uint
)¶
- doc:
被标记为 CHECKSUM_UNNECESSARY 的数据包数量。
rx-csum-none (uint
)¶
- doc:
设备未进行校验和计算的数据包数量。
rx-csum-bad (uint
)¶
- doc:
校验和错误的数据包数量。这些数据包不会被丢弃,但仍然会传递到协议栈。
rx-hw-gro-packets (uint
)¶
- doc:
设备将较小的数据包合并而来的数据包数量。仅计算通过 HW-GRO 网络设备特性合并的数据包,LRO 合并的数据包不计算在内。
rx-hw-gro-bytes (uint
)¶
- doc:
请参考 rx-hw-gro-packets。
rx-hw-gro-wire-packets (uint
)¶
- doc:
通过 HW-GRO 网络设备特性合并为更大的数据包的数据包数量。LRO 合并的数据包不计算在内。
rx-hw-gro-wire-bytes (uint
)¶
- doc:
请参考 rx-hw-gro-wire-packets。
rx-hw-drop-ratelimits (uint
)¶
- doc:
由于接收到的数据包比特率超过设备速率限制而被设备丢弃的数据包数量。
tx-hw-drops (uint
)¶
- doc:
到达设备但从未离开设备的数据包数量,包括因处理错误而被丢弃的数据包,以及受明确定义的策略和数据包过滤标准影响的数据包。
tx-hw-drop-errors (uint
)¶
- doc:
因无效或格式错误而被丢弃的数据包数量。
tx-csum-none (uint
)¶
- doc:
不需要设备计算校验和的数据包数量。
tx-needs-csum (uint
)¶
- doc:
需要设备计算校验和的数据包数量。
tx-hw-gso-packets (uint
)¶
- doc:
需要由设备分割成较小数据包的数据包数量。
tx-hw-gso-bytes (uint
)¶
- doc:
请参考 tx-hw-gso-packets。
tx-hw-gso-wire-packets (uint
)¶
- doc:
通过处理 tx-hw-gso-packets 生成的线速大小的数据包数量。
tx-hw-gso-wire-bytes (uint
)¶
- doc:
请参考 tx-hw-gso-wire-packets。
tx-hw-drop-ratelimits (uint
)¶
- doc:
由于发送数据包的比特率超过设备速率限制而被设备丢弃的数据包数量。
tx-stop (uint
)¶
- doc:
驱动程序由于队列已满而暂停接受来自协议栈的新发送数据包到此队列的次数。请注意,如果设备支持并启用了 BQL,网络协议栈将避免一次排队大量数据。
tx-wake (uint
)¶
- doc:
驱动程序重新开始接受来自协议栈到此队列的发送请求的次数。
queue-id¶
id¶
type¶
dmabuf¶
ifindex (u32
)¶
- doc:
用于绑定 dmabuf 的网络设备 ifindex。
queues (nest
)¶
- doc:
用于绑定 dmabuf 的接收队列。
- nested-attributes:
- multi-attr:
True
fd (u32
)¶
- doc:
要绑定的 dmabuf 文件描述符。
id (u32
)¶
- doc:
dmabuf 绑定的 ID