Cómo usar bmon para monitorear el ancho de banda de red en Linux

Con la aplicación bmon de Linux, puedes ver el uso del ancho de banda en tus conexiones de red. Sin embargo, comprender los detalles más finos requiere un poco de trabajo de detective, ¡así que lo hemos hecho por ti!

Cómo funciona bmon

Los gráficos dinámicos y las estadísticas en tiempo real que muestran la actividad en tus diversas interfaces de red pueden brindarte una excelente información sobre el rendimiento de tu red y el consumo de ancho de banda. Esto es exactamente lo que bmon te proporciona, justo en una ventana de la terminal.

Puedes echar un vistazo a los gráficos de vez en cuando, tal como lo harías con el velocímetro de tu automóvil. Del mismo modo, si es necesario investigar algo en tu vehículo, un mecánico puede conectarlo a un sistema de diagnóstico y verificar las lecturas. bmon tiene un sistema similar de lecturas detalladas.

Sin embargo, hay que decirlo: las estadísticas del comando bmon pueden ser desconcertantes al principio. Por ejemplo, hay tres llamadas “Ip6Reasm/Frag”. ¿Qué pasa con eso?

Sin embargo, una vez que hayas descifrado el código, las lecturas del comando son invaluables si deseas una comprensión más detallada del tráfico de red.

Hemos hecho el trabajo por ti e incluso verificamos el código fuente para llegar al fondo de algunos de estos. Afortunadamente, todo lo demás de bmon es razonablemente simple.

Instalar bmon

Para instalar bmon en Ubuntu, debes usar este comando:

Si deseas instalarlo en Fedora, debes usar este comando:

Para Manjaro, el comando es el siguiente:

La pantalla de bmon

Debes escribir bmon y presionar Enter para iniciar el programa. La pantalla bmon se divide en varios paneles. Los tres primeros están etiquetados “Interfaces”, “RX” y “TX”. El panel central muestra las estadísticas y gráficos detallados.

El panel “Interfaces” te muestra las interfaces de red con las que está equipada tu computadora. También muestra la disciplina de colas (qdisc) que usa cada interfaz de red (más sobre esto más adelante).

El panel “RX” muestra los bits recibidos por segundo y los paquetes por segundo para cada interfaz y su cola. El panel “TX” muestra los bits transmitidos por segundo y los paquetes por segundo para cada interfaz y su cola.

En nuestra computadora, solo tenemos dos interfaces instaladas: la interfaz de loopback (también llamado adaptador de bucle invertido) y el adaptador de Ethernet con cable. La interfaz de bucle invertido se llama “lo” y la interfaz de ethernet se llama “enp0s3”.

El adaptador de Ethernet en tu máquina podría tener un nombre diferente. Si estás usando una computadora portátil, también verás un adaptador inalámbrico, y tu nombre probablemente comenzará con “wl”.

Interfaz seleccionada

bmon muestra información sobre la interfaz de red que está seleccionada actualmente. La interfaz seleccionada es la que tiene un signo resaltado mayor que (>) al lado. Puedes presionar las flechas hacia arriba y hacia abajo para mover el signo mayor que y seleccionar la interfaz que deseas monitorear. Elegimos el adaptador de ethernet.

Ahora que estamos en una interfaz de red activa, vemos algo de actividad en los gráficos y las lecturas. Si no ves ningún gráfico, estira la ventana de la terminal hacia abajo.

Presiona las teclas de dirección izquierda y derecha para cambiar la estadística que se gráfica. Para algunos gráficos, tendrás que presionar H antes de que se llenen; los que requieren esto te lo dirán.

Para ver las estadísticas de la interfaz de red, estira la ventana de la terminal hasta que sea lo suficientemente alta como para mostrarlas. posteriormente presiona D para mostrarlas. Si presionas I (para Información), verás una pequeña cantidad de información adicional.

Si maximizas la ventana de la terminal, muestra múltiples gráficos. Presiona Menor que (<) y Mayor que (>) para agregar o eliminar pares de gráficos. Si presionas G, activa y desactiva la visualización de gráficos por completo.

Cuando presionas el signo de interrogación (?), ves la pantalla de ayuda “Referencia rápida” con pulsaciones de teclas comunes.

Presiona el signo de interrogación (?) nuevamente para cerrar la pantalla “Referencia rápida”.

Las estadísticas detalladas

Si la ventana de tu terminal es lo suficientemente alta y ancha (estírala, si no lo es), puedes presionar “D” para activar y desactivar la vista detallada.

El número de columnas que ves depende del ancho de la ventana de la terminal. En una ventana de terminal estándar de 80 columnas, verás dos. Cuanto más ancha sea la ventana, más columnas verás. Sin embargo, no obtienes más estadísticas con una ventana más amplia; aún verás el mismo conjunto de figuras. Pero las columnas serán más cortas.

La entrada superior en cada columna puede llevarlo a pensar que el de la izquierda muestra información en bytes, mientras que el de la derecha muestra información en paquetes. Sin embargo, ese no es el caso.

Cada columna contiene un conjunto de estadísticas. El nombre del valor y los valores recibidos (RX) y transmitidos (TX) se muestran para cada estadística. Si algún valor aparece como un guión (), significa que la estadística no se registra para esa dirección.

Algunas de las estadísticas son solo internas (recibidas) o externas (transmitidas). Por ejemplo, un guión (-) en la columna transmitida indica que la estadística no es válida para los paquetes salientes. Esta solo se aplicará a los paquetes entrantes. La línea superior muestra el tráfico recibido y transmitido en bytes (a la izquierda) y paquetes (a la derecha).

Todas las demás estadísticas se enumeran en orden alfabético, saltando de columna en columna. Varios de ellos comparten el mismo nombre. Explicaremos lo que significan a continuación. También hemos deletreado nombres abreviados. Si no se menciona IPv6, esa estadística se refiere a IPv4.

Las estadísticas en la columna izquierda son las siguientes:

  • Bytes: tráfico en bytes.
  • Abort Error: un recuento de errores de cancelación. En algún lugar de la ruta de conexión entre el origen y el destino, una pieza de software provocó la cancelación de una conexión.
  • Collisions: un recuento de errores de colisión. Dos o más dispositivos han intentado enviar un paquete simultáneamente. Esto no debería ser un problema en una red full-duplex.
  • CRC Errors: recuento de errores de verificación de redundancia cíclica.
  • Errors: el recuento total de errores.
  • Frame Error: un recuento de errores de trama. Un frame es un contenedor de red para un paquete. Un error significa que se detectaron tramas mal formadas.
  • ICMPv6: el número de paquetes de tráfico del Protocolo de mensajes de control de Internet v6.
  • ICMPv6 Errors: un recuento de errores ICMP v6.
  • Ip6 Broadcast: un recuento de transmisiones IPv6 , que se envían a todos los dispositivos en la red.
  • Ip6 CE Packets: CE significa “ventaja del cliente”. Esto generalmente se aplica a los enrutadores. Se conectan con el borde del proveedor (PE) del servicio de conectividad al que se suscribe el cliente.
  • Ip6 Delivers: el recuento de paquetes entrantes de IPv6.

  • Ip6 ECT(1) Packets: una notificación explícita de congestión (ECN) permite que cualquiera de los extremos de una conexión de red alerta al otro de la congestión inminente. Los paquetes están marcados con un indicador que sirve como advertencia. El extremo receptor puede reducir las velocidades de transmisión para tratar de evitar la congestión y la posible pérdida de paquetes. Los paquetes de transporte con capacidad ECN (ECT) están marcados con un indicador para mostrar que se entregan a través de un transporte con capacidad ECN. Esto permite que los enrutadores intermedios reaccionen en consecuencia. Los paquetes de tipo 1 ECN le dicen al extremo receptor que habilite ECN y lo agregue a las transmisiones salientes.
  • Ip6 Ip6 Header Errors:  el recuento de paquetes con errores en el encabezado IPv6.
  • Ip6 Multicast packets: el recuento de paquetes de multidifusión IPv6 (una forma de difusión).
  • Ip6 Non-ECT Packets: el recuento de paquetes IPv6 no marcados como ECT (1)

  • Ip6 Reassembly/Fragment OK: el recuento de paquetes de IPv6 que se fragmentaron debido al tamaño y se volvieron a ensamblar correctamente al recibirlos.
  • Ip6 Reassembly Timeouts: el recuento de paquetes de IPv6 que se fragmentaron debido al tamaño. Pero que no se pudieron volver a montar al recibirlos debido a los tiempos de espera.
  • Ip6 Truncated Packets: el recuento de paquetes truncados. Cuando se transmite un paquete IPv6, se puede marcar como candidato para truncamiento. Si algún enrutador intermedio no puede manejar el paquete porque excede la unidad de transmisión máxima (MTU), el enrutador trunca el paquete. Luego lo marca como tal y lo reenvía al destino. Cuando se recibe, el otro extremo puede enviar un paquete ICMP de regreso a la fuente, diciéndole que actualice su estimación de MTU. Esto para acortar sus paquetes.
  • Ip6 Discards: el recuento de paquetes IPv6 descartados. Si algún dispositivo entre el origen y el destino no se configuró correctamente y su configuración IPv6 no funciona, no manejará el tráfico de IPv6. Este será descartado.
  • Ip6 Packets: el recuento total de todos los tipos de paquetes IPv6.
  • Missed Error: el recuento de paquetes que faltan en una transmisión. Los paquetes están numerados para que se pueda volver a crear el mensaje original. Si falta alguno, su ausencia es conspicua.
  • No Handler: el recuento de paquetes para los que no se encontró ningún controlador de protocolo.
  • Window Error: el recuento de errores de ventana. La ventana de un paquete es el número de octetos en el encabezado. Si esto contiene un número anormal, el encabezado no se puede interpretar.

Las estadísticas en la columna de la derecha son las siguientes:

  • Packets: tráfico en paquetes.
  • Carrier Errors: recuento de errores del operador. Esto ocurre si surge un problema con la modulación de una señal. Esto podría indicar una falta de coincidencia dúplex entre los equipos de red o daños físicos en un cable, zócalo o conector.
  • Compressed: el número de paquetes comprimidos.
  • Dropped: el número de paquetes descartados que, como resultado, no pudieron llegar a su destino (posiblemente debido a la congestión).
  • FIFO Errors: el recuento de errores de búfer primero en entrar, primero en salir (FIFO). El búfer de transmisión de la interfaz de red se está desbordando porque no se está vaciando lo suficientemente rápido.
  • Heartbeat Errors: el hardware o el software pueden utilizar una señal regular para mostrar que están funcionando correctamente o para permitir la sincronización. El número aquí es cuántos latidos se han perdido.
  • ICMPv6 Checksum Errors: el recuento de errores de suma de comprobación de mensajes del Protocolo de mensajes de control de Internet v6.
  • Ip6 Address Errors: el recuento de errores debido a direcciones IPv6 incorrectas
  • Ip6 Broadcast Packets: el recuento de paquetes de difusión de IPv6.
  • Ip6 Checksum Errors: el recuento de errores de suma de comprobación de IPv6. Los paquetes ICMP y User Datagram Protocol (UDP) en IPv6 usan sumas de verificación, pero los paquetes IPvv6 normales no.
  • Ip6 ECT(0) Packets: Se tratan de la misma manera que los paquetes ECT (1).

  • Ip6 Forwarded: el recuento de paquetes IPv6 de reenvío unicast entregados. Unicast salta los paquetes desde el origen hasta el destino a través de una cadena de enrutadores y reenviadores intermediarios.
  • Ip6 Multicasts: la cantidad de paquetes IPv6 de reenvío multidifusión entregados. La multidifusión envía los paquetes a un grupo de destinos simultáneamente (que es cómo funciona el Wi-Fi).
  • Ip6 No Route: el recuento de errores sin ruta. Esto significa que no se puede alcanzar el destino porque no se puede calcular una ruta al otro extremo
  • Ip6 Reassembly/Fragment Failures: el recuento de paquetes de IPv6 que se fragmentaron debido al tamaño y no se pudieron volver a ensamblar al recibirlos.
  • Ip6 Reassembly/Fragment Requests: el recuento de paquetes de IPv6 que se fragmentaron debido al tamaño y tuvieron que volverse a ensamblar al recibirlos.
  • Ip6 Too Big Errors: la cantidad de mensajes ICMP “demasiado grandes” recibidos, esto indica que se enviaron paquetes IPv6 que eran más grandes que la unidad de transmisión máxima.
  • Ip6 Unknown Protocol Errors: el recuento de paquetes recibidos utilizando un protocolo desconocido.
  • Ip6 Octets: El volumen de octetos recibidos y transmitidos. IPv6 tiene un encabezado de 40 octetos (320 bits, 8 bits por octeto) y un tamaño de paquete mínimo de 1.280 octetos (10.240 bits).
  • Error de longitud: el número de paquetes que llegan con un valor de longitud en el encabezado que es más corto que la longitud mínima posible del paquete.
  • Multicast: un recuento de transmisiones multicast.
  • Over Errors: Un recuento sobre errores. O el búfer de recepción se ha desbordado o los paquetes han llegado con un valor de trama mayor que el admitido. Por lo tanto, no se pueden aceptar.

Información adicional

Si presionas I (como en “Información”), alternas los paneles de información adicional. Si no aparece información adicional, la ventana no es lo suficientemente grande. Puedes presionar D para desactivar las estadísticas detalladas, G para desactivar los gráficos o puedes estirar la ventana.

La información adicional es la siguiente:

  • MTU: la unidad de transmisión máxima.
  • Operstate: el estado operativo de la interfaz de red.
  • Dirección: El control de acceso al medio (MAC) de la interfaz de red.
  • Mode: Esto generalmente se establece en default, pero se podía ver tunnelbeetro. Los primeros tres se relacionan con la seguridad IP (IPSec). La configuración default suele ser modo transport, en el que el payload se cifra. Las redes privadas virtuales (VPN) de cliente a sitio generalmente usan esto. Las VPN de sitio a sitio generalmente usan el modo tunnel, en el que se encripta todo el paquete. En un modo de túnel de extremo a extremo (beet), se crea un túnel entre dos dispositivos con direcciones IP fijas, ocultas y otras direcciones IP visibles. El modo ro es un método de optimización de enrutamiento para IPv6 móvil.
  • Family: la familia de protocolos de red que está en uso.
  • Qdisc: disciplina de colas. Esto se puede establecer en red (Random Early Detection), codel (Controlled Delay) o fq_codel (Fair Queueing with Controlled Delay).
  • Flags: estos indicadores muestran las capacidades de una conexión de red. Nuestra conexión puede usar transmisiones broadcast y   multicast, y la interfaz está Up (operativa y conectada).
  • IfIndex: el índice de interfaz es un número único de identificación asociado con una interfaz de red.
  • Broadcast: la dirección MAC de difusión. El envío a esta dirección difunde los paquetes recibidos en todos los dispositivos.
  • TXQlen: el tamaño de la cola de transmisión (capacidad).
  • Alias: un alias de IP proporciona a una conexión de red física múltiples direcciones IP. Luego puede dar acceso a diferentes subredes a través de una tarjeta de interfaz de red. No hay alias en uso en nuestra computadora de prueba.

Conclusiones

bmon es un poco una criatura divertida, ni peces ni aves, de alguna manera. Los gráficos tienen un encanto primitivo y te dan una buena indicación de lo que está sucediendo.

Sin embargo, dadas las limitaciones de ser procesadas en ASCII, no se puede esperar que sean súper precisas. Sin embargo, una mirada ocasional puede decirte si la conexión está maximizada, misteriosamente desprovista de tráfico o en algún punto intermedio.

Las estadísticas detalladas, por otro lado, son solo eso: detalladas y granulares. Junto con el enfoque algo informal en su etiquetado, los hace aún más difíciles de descifrar.

Con suerte, las descripciones anteriores harán bmon un poco más accesible. Realmente es una herramienta útil y liviana con la que puedes monitorear el estado del tráfico de red y el consumo de ancho de banda.