如何在 Linux 上使用 bmon 监控网络带宽

已发表: 2022-01-29
Linux 系统上的程式化终端提示符。
Fatmawati Achmad Zaenuri/Shutterstock

使用bmon Linux 应用程序,您可以查看网络连接的带宽使用情况。 但是,了解更精细的细节需要一些侦探工作,所以我们已经为您完成了!

bmon 的工作原理

显示各种网络接口活动的动态图表和实时统计数据可以让您很好地了解网络的性能和带宽消耗。 这正是bmon在终端窗口中为您提供的。

您可以时不时地看一下图表,就像看车上的速度计一样。 同样,如果需要调查您车辆上的某些东西,机械师可能会将其连接到诊断系统并检查读数。 bmon有类似的详细读数。

不过,必须说—— bmon命令的统计数据起初可能令人费解。 例如,有三个称为“Ip6 Reasm/Frag”。 那是怎么回事?

然而,一旦你破解了代码,如果你想更详细地了解你的网络流量,命令的读数是非常宝贵的。

广告

我们已经为您完成了工作,甚至检查了源代码以了解其中的一些内容。 值得庆幸的是,关于bmon的其他一切都相当简单。

安装 bmon

要在 Ubuntu 上安装bmon ,请使用以下命令:

 sudo apt-get install bmon 

要在 Fedora 上安装,请键入以下内容:

 须藤 dnf 安装 bmon 

对于 Manjaro,命令如下:

 sudo pacman -Sy bmon 

bmon 显示器

键入bmon并按 Enter 启动程序。 bmon显示分为几个窗格。 前三个标记为“接口”、“RX”和“TX”。 中央窗格显示详细的统计数据和图表。

“接口”窗格显示您的计算机配备的网络接口。 它还显示了每个网络接口正在使用的排队规则 (qdisc)(稍后会详细介绍)。

“RX”窗格显示每个接口及其队列的每秒接收比特数和每秒数据包数。 “TX”窗格显示每个接口及其队列的每秒传输位数和每秒数据包。

在我们的计算机上,我们只安装了两个接口:环回接口(也称为环回适配器)和有线以太网适配器。 环回接口称为“lo”,以太网接口称为“enp0s3”。

您机器上的以太网适配器可能有不同的名称。 如果您使用的是笔记本电脑,您也会看到一个无线适配器,它的名称可能以“wl”开头。

广告

bmon显示有关当前选择的网络接口的信息。 所选接口是旁边带有突出显示的大于号 ( > ) 的接口。 您可以按向上和向下箭头移动大于号并选择要监控的接口。 我们选择了以太网适配器。

现在我们在一个活动的网络接口上,我们在图表和读数中看到了一些活动。 如果您没有看到任何图表,请向下拉伸终端窗口。

按左右箭头键更改正在绘制的统计数据。 对于某些图表,您必须先按 H 才能填充它们; 需要这个的人会告诉你。

要查看网络接口的统计信息,请拉伸终端窗口直到它足够高以显示它们,然后按 D 显示它们。 如果您按 I(用于 Info),您会看到少量的附加信息。

如果您最大化终端窗口,它会显示多个图形。 按小于 (<) 和大于 (>) 添加或删除图形对。 如果按 G,它会完全打开和关闭图形的显示。

当您按下问号 (?) 时,您会看到带有常见击键的“快速参考”帮助屏幕。

bmon 中的“快速参考”屏幕。

广告

再次按问号 (?) 关闭“快速参考”屏幕。

详细统计

如果您的终端窗口足够高和足够宽(如果不是,请将其拉​​出),您可以按“D”来打开和关闭详细视图。

您看到的列数取决于终端窗口的宽度。 在标准的 80 列终端窗口中,您会看到两个。 窗口越宽,您看到的列越多。 但是,您不会通过更宽的窗口获得更多统计数据; 您仍然会看到相同的一组数字。 但列会更短。

每列顶部的条目可能会让您认为左侧的条目以字节为单位显示信息,而右侧的条目以数据包的形式显示信息。 然而,事实并非如此。

每列包含一组统计信息。 每个统计信息都会显示值的名称以及接收的 ( RX ) 和传输的 ( TX ) 值。 如果任何值显示为连字符 ( - ),则表示未记录该方向的统计信息。

一些统计数据仅向内(接收)或向外(传输)。 例如,已传输列中的连字符 ( - ) 表示该统计信息对于传出数据包无效,并且仅适用于传入数据包。 第一行以字节(左侧)和数据包(右侧)显示接收和传输的流量。

广告

所有其他统计信息都按字母顺序列出,从一列跳到另一列。 其中有几个具有相同的名称。 我们将在下面解释它们的含义。 我们还拼出了缩写名称。 如果未提及 IPv6,则该统计数据指的是 IPv4。

左栏中的统计数据如下:

  • 字节:以字节为单位的流量。
  • 中止错误:中止错误的计数。 在源和目标之间的连接路径中的某处,一个软件导致连接中止。
  • 碰撞:碰撞错误的计数。 两个或更多设备尝试同时发送数据包。 这在全双工网络中应该不是问题。
  • CRC 错误:循环冗余校验错误的计数。
  • 错误:错误的总数。
  • 帧错误:帧错误的计数。 帧是数据包的网络容器。 错误表示检测到格式错误的帧。
  • ICMPv6: Internet 控制消息协议 v6 流量数据包的数量。
  • ICMPv6 错误: ICMP v6 错误计数。
  • Ip6 广播: IPv6 广播的计数​​,发送到网络上的所有设备。
  • Ip6 CE 数据包: CE 代表“客户边缘”。 这通常适用于路由器。 它们与客户订阅的连接服务的提供商边缘 (PE) 连接。
  • Ip6 Delivers:传入 IPv6 数据包的计数。
  • Ip6 ECT(1) 数据包:显式拥塞通知 (ECN) 允许网络连接的任一端警告另一端即将发生的拥塞。 数据包标有用作警告的标志。 接收端可以降低传输速率来尽量避免拥塞和可能的丢包。 支持 ECN 的传输 (ECT) 数据包标有一个标志,以表明它们是通过支持 ECN 的传输传递的。 这允许中间路由器做出相应的反应。 类型 1 ECN 数据包告诉接收端启用 ECN 并将其添加到传出传输中。
  • Ip6 标头错误: IPv6 标头中有错误的数据包计数。
  • Ip6 组播数据包: IPv6 组播(一种广播形式)数据包的计数。
  • Ip6 Non-ECT Packets:未标记为 ECT(1) 的 IPv6 数据包计数。
  • Ip6 Reassembly/Fragment OK:由于大小而被分段并在收到后成功重新组装的 IPv6 数据包的计数。
  • Ip6 Reassembly Timeouts:由于大小而被分段但由于超时而在接收时未能重新组装的 IPv6 数据包的计数。
  • Ip6 截断数据包:截断数据包的计数。 传输 IPv6 数据包时,可以将其标记为截断候选。 如果任何中间路由器因为数据包超过最大传输单元 (MTU) 而无法处理数据包,则路由器会截断数据包,将其标记为此类,然后将其转发到目的地。 当接收到它时,远端可以将 ICMP 数据包发送回源,告诉它更新其 MTU 估计值以缩短其数据包。
  • Ip6 Discards:丢弃的 IPv6 数据包的计数。 如果源和目标之间的任何设备未正确设置,并且它们的 IPv6 设置不起作用,它们将无法处理 IPv6 流量; 它将被丢弃。
  • Ip6 Packets:所有类型的 IPv6 数据包的总数。
  • Missed Error:传输中丢失的数据包计数。 数据包被编号,以便可以重新创建原始消息。 如果有任何遗漏,他们的缺席是显而易见的。
  • No Handler:未找到协议处理程序的数据包计数。
  • 窗口错误:窗口错误的计数。 数据包的窗口是报头中的八位字节数。 如果它包含异常数字,则无法解释标头。

右栏中的统计数据如下:

  • 数据包:数据包中的流量。
  • 运营商错误:运营商错误的计数。 如果信号调制出现问题,就会出现这些问题。 这可能表明网络设备之间的双工不匹配或电缆、插座或连接器的物理损坏。
  • Compressed:压缩包的数量。
  • Dropped:丢弃的数据包数量,因此未能到达目的地(可能是由于拥塞)。
  • FIFO 错误:先进先出(FIFO) 缓冲区错误的计数。 网络接口传输缓冲区溢出,因为它没有被足够快地清空。
  • 心跳错误:硬件或软件可能会利用常规信号来显示它们正在正确运行或允许同步。 这里的数字是丢失了多少“心跳”。
  • ICMPv6 Checksum Errors: Internet 控制消息协议 v6 消息校验和错误的计数。
  • Ip6 地址错误:由于错误 IPv6 地址导致的错误计数
  • Ip6 广播数据包: IPv6 广播数据包的计数。
  • Ip6 Checksum Errors: IPv6 校验和错误的计数。 IPv6 中的 ICMP 和用户数据报协议 (UDP) 数据包使用校验和,但常规 IPv6 IP 数据包不使用。
  • Ip6 ECT(0) 数据包:这些数据包的处理方式与 ECT(1) 数据包相同。
  • Ip6 Forwarded:单播转发的 IPv6 数据包计数。 单播通过一系列中间路由器和转发器将数据包从源跳到目标。
  • Ip6 Multicasts:传送的 IPv6 数据包多播转发数。 多播同时将数据包发送到一组目的地(这就是 Wi-Fi 的工作方式)。
  • Ip6 No Route:无路由错误的计数。 这意味着无法到达目的地,因为无法计算到远端的路线
  • Ip6 Reassembly/Fragment Failures:由于大小而被分片的 IPv6 数据包的计数,并且在收到时未能重新组装。
  • Ip6 重组/分片请求:由于大小而被分片的 IPv6 数据包的计数,必须在收到后重新组装。
  • Ip6 Too Big Errors:收到的 ICMP“太大”消息的数量,表示发送的 IPv6 数据包大于最大传输单元。
  • Ip6 未知协议错误:使用未知协议接收的数据包计数。
  • Ip6 Octets:接收和传输的八位字节的数量。 IPv6 具有 40 个八位字节(320 位,每个八位位组 8 位)的标头,最小数据包大小为 1,280 个八位位组(10,240 位)。
  • 长度错误:到达的数据包数量,其标头中的长度值小于可能的最小数据包长度。
  • 多播:多播广播的计数​​。
  • Over Errors:过度错误的计数。 接收缓冲区溢出,或者数据包到达的帧值大于支持的值,因此无法接受。

附加信息

如果您按 I(如在“信息”中),它会切换附加信息窗格。 如果没有出现附加信息,则窗口不够大。 您可以按 D 关闭详细统计,按 G 关闭图形,或者您可以拉伸窗口。

附加信息如下:

  • MTU:最大传输单位。
  • 操作状态网络接口的操作状态。
  • 地址:网络接口的媒体访问控制 (MAC) 地址。
  • 模式:这通常设置为default ,但您可以看到tunnelbeetro 。 前三个与 IP 安全 (IPSec) 相关。 default设置通常是transport模式,其中有效负载被加密。 客户端到站点的虚拟专用网络 (VPN) 通常使用此功能。 站点到站点 VPN 通常使用tunnel模式,其中对整个数据包进行加密。 在绑定端到端隧道 ( beet ) 模式中,在两个具有固定、隐藏 IP 地址和其他可见 IP 地址的设备之间创建隧道。 ro模式是一种针对移动IPv6的路由优化方法。
  • 系列:正在使用的网络协议系列。
  • Qdisc:排队规则。 这可以设置为red (随机早期检测)、 codel (受控延迟)或fq_codel (具有受控延迟的公平排队)。
  • 标志:这些指示器显示网络连接的能力。 我们的连接可以使用broadcastmulticast传输,并且接口是Up (可操作且已连接)。
  • IfIndex:接口索引是与网络接口关联的唯一标识号。
  • 广播:广播 MAC 地址。 发送到此地址会将收到的数据包广播到所有设备。
  • TXQlen:传输队列大小(容量)。
  • 别名: IP 别名为物理网络连接提供多个 IP 地址。 然后,它可以通过一张网络接口卡访问不同的子网。 我们的测试计算机上没有使用别名。

bmon是一个有点有趣的生物——在某些方面既不是鱼也不是家禽。 这些图表具有原始的魅力,可以很好地指示正在发生的事情。

但是,鉴于以 ASCII 呈现的局限性,不能真正期望它们是超级准确的。 不过,偶尔看一眼,就可以告诉您连接是否已达到极限、神秘地没有流量,或者介于两者之间。

另一方面,详细的统计数据就是这样:详细和细化。 再加上它们的标签有些随意,这使得它们更难以破译。

希望上面的描述能让bmon更容易上手。 它确实是一个有用的轻量级工具,您可以使用它监控网络流量的健康状况和带宽消耗。

相关:适合开发人员和爱好者的最佳 Linux 笔记本电脑