速度未知的网络接口

速度未知的网络接口

当我尝试打印网络接口的最大吞吐量时,我收到错误:

$ cat /sys/class/net/<interface>/speed
cat: /sys/class/net/<interface>/speed: Invalid argument

回复。根据我的调查,该属性仅对实现 ethtoolget_link_ksettings方法的接口有效(来源)。

我的目标是通过获取每秒发送和接收的字节数(解析/proc/net/dev伪文件)来计算每个接口的网络利用率,然后使用吞吐量来计算利用率百分比。我在 C 中执行此操作,因此最大吞吐量是通过ioctl()对于速度未知的接口无法成功的函数获得的。

有没有办法以其他方式获取速度属性?我能想到的最简单的解决方案是,接口的默认速度是标准 10Mbps,如果利用率超过 100%,我可以将最大速度提高到下一个标准速度 1000Mbps,依此类推1Gbps、2.5Gbps 和 10Gbps。这可能会以某种方式起作用,但它可能会因使用非标准速度的捆绑接口而被破坏,例如,将两个 1Gbps 卡捆绑到一个 2Gbps 中。捆绑接口对我来说并不是一个大问题,但是拥有通用的解决方案就很棒了。

相关内容