Linux NIC统计数据的通用接口

2021-04-26 10:31:45

在Linux 5.13 Ethtool获得了查询IEEE和IETF统计信息的接口。这会删除在ethtool -s中解析供应商特定字符串的需要。

Linux有两个NIC统计来源,公共接口统计数据(IFConfig,IP链路,SYSF和少数其他地方)和ethtool -s。前常见的接口统计数据 - 是基本信息(数据包,字节,丢弃,每个方向错误)的混合,以及少数较低级别的统计数据,如CRC错误,框架错误,碰撞或FIFO错误。许多这些统计数据都变得无关(碰撞)或现代NIC中的语义上不清楚(FIFO错误)。

这就是为什么部署越来越依赖于Ethtool -s统计错误跟踪。 ethtool -s是驱动程序提供的统计数据列表。它开始作为驾驶员报告定制,实施特定统计数据的地方,但最终还应作为新统计数据的报告地点作为开发的网络标准。

遗憾的是,供应商如何命名其ethtool统计数据没有共同。 IEEE统计数据的拼写和缩写总是不同的,有时选择的名称并不类似于所有标准名称(据报道,因为供应商认为用户对用户“太令人困惑”)。这支强制基础架构团队维护翻译和自定义Per-供应商逻辑以刮掉Ethtool -s输出。

从Linux开始5.6 Michal Kubecek从IOCTLS逐步移植到一个更具结构化和可扩展的NetLink接口。由于我们现在可以增强旧命令来携带统计数据。当用户指定-i | - 指令行的统计信息(或NetLink中的适当标志)内核将包括其响应中的相关统计数据,例如,对于流量控制:

#ethtool -i -a eth0 eth0 ech0 ech0 ech0暂停参数:easonegotiate:关闭rx:关闭tx:统计:tx_pause_frames:25545561 rx_pause_frames:0

PHY和MAC计数器等常规统计数据现在可以通过基于标准的名称来通过ethtool -s,虽然新的 - groups switch,例如:

#Ethtool -s eth0 - eth0的eth-mac标准统计数据0.

允许新的界面非常基本。它主要包括IEEE或IETF标准中提供的统计信息,NIC可能会报告更有趣的数据。这里也没有关于“新鲜度”的元数据,或内置在接口中的过滤。

起点是基于满足即时需求。我们希望界面将根据需要扩展。统计数据可以任意复杂,因此在几个假的界面之后,我们决定让用例驱动接口。

依靠明确定义语义的标准也非常有用。向前发展我们可以在编纂他们拥有的其他柜台的定义上的供应商合作。

30.3.2.1。 1.1。 19 aBroadcastFramesXmittedOK 30.3.1.1.20 aFramesWithExcessiveDeferral 30.3.1.1.21 aMulticastFramesReceivedOK 30.3.1.1.22 aBroadcastFramesReceivedOK 30.3.1.1.23 aInRangeLengthErrors 30.3.1.1.24 aOutOfRangeLengthField 30.3.1.1.25 aFrameTooLongErrors 30.3.3.3 aMACControlFramesTransmitted 30.3.3.4 aMACControlFramesReceived 30.3.3.5 aUnsupportedOpcodesReceived 30.3.4.2 apausemacctrlframestransmited 30.3.4.3 apausemacctrlframesreceiv ed 30.5.1.1.17 afeccritectblocks 30.5.1.1.18 afecuncorreberableblocks

etherstandersizepkts etherstatspareizepkts etherstatsfragents etherstatsjabbers etherstatpkts64octets ethstspkts65to127octets etherstatspkts128to27octets etherstatspkts2550tets etherstatspkts512to1023octets etherstatspkts1024to1518octets(包括jumbo mtus的其他统计数据)