Red de conocimiento informático - Material del sitio web - Cómo calcular el tráfico de una red de alta velocidad en Linux

Cómo calcular el tráfico de una red de alta velocidad en Linux

A continuación se explica cómo contar el tráfico en una red de alta velocidad en Linux:

Existen muchas herramientas de monitoreo de tráfico en Linux que pueden monitorear y clasificar el tráfico de la red y proporcionar datos en tiempo real en una hermosa interfaz gráfica de usuario. informe de análisis. La mayoría de estas herramientas (como ntopng, iftop) se basan en la biblioteca libpcap, que es una biblioteca de funciones que intercepta paquetes que fluyen a través de la tarjeta de red y puede usarse en el espacio del usuario para monitorear y analizar el tráfico de la red. Si bien estas herramientas son completamente funcionales, las herramientas de monitoreo de tráfico basadas en la biblioteca libpcap no pueden manejar interfaces de red de alta velocidad (Gb+) debido a la alta sobrecarga de la interceptación de paquetes en el espacio del usuario.

En este artículo, presentamos un script de shell simple que puede monitorear el tráfico de la red sin depender de la biblioteca libpcap, que es más lenta. Estos scripts admiten interfaces de red de alta velocidad de hasta un tamaño de Gb+ y también pueden calcular el tráfico en cada interfaz de red si está interesado en "agregar" el tráfico de red.

Estos scripts se basan principalmente en el sistema de archivos virtual sysfs, que el kernel utiliza como mecanismo para enviar información relacionada con el dispositivo o el controlador al espacio del usuario. Los datos relacionados con el análisis de la interfaz de red se generan a través de "/sys/class/net//statistics".

Por ejemplo, el informe de análisis para el puerto de red eth0 se enviará al siguiente archivo:

/sys/class/net/eth0/statistics/rx_packets: Datos del paquete recibido

/sys/class/net/eth0/statistics/ tx_packets: Número de paquetes transmitidos

/sys/class/net/eth0/statistics/rx_bytes: Número de bytes recibidos

/sys/class/net/eth0/statistics/tx_bytes: Número de bytes transferidos

/sys/class/net/eth0/statistics/rx_dropped: Paquetes descartados en paquetes entrantes

/ sys/class/net/eth0/statistics/tx_dropped: paquetes descartados en paquetes salientes

Estos datos se actualizan automáticamente en función de los datos del kernel cuando se producen cambios. Por tanto, puedes escribir una serie de scripts para analizar y calcular estadísticas de tráfico. Aquí hay un guión de este tipo (gracias a joemiller por proporcionarlo). El primer script cuenta la cantidad de datos recibidos (RX) o enviados (TX) por segundo. El siguiente script describe el ancho de banda de recepción (RX) y transmisión (TX) de la transmisión de red. No se requieren herramientas para instalar estos scripts.

Medición del número de paquetes por segundo en un puerto de red:

#! /bin/bash

INTERVAL="1" #Intervalo de actualización (segundos)

if [ -z "$1" ] entonces

echo

echousage: $0 [interfaz de red]

echo

echoe.g.$0 eth0

echo

echoshows paquetes -por segundo

salirsegundo

salir

fi

IF=$1

mientras es verdadero

do

R1=`cat/sys/class/net/$1/statistics/rx_packets`

T1=`cat/sys/class/net/$1/statistics /tx_packets`

sleep$INTERVAL

R2=`cat/sys/class/net/$1/statistics/rx_packets`

T2=`cat/sys /class/net/$1/statistics/tx_packets`

TXPPS=`expr$T2 - $T1`.$T1`.

RXPPS=`expr$R2 - $R1`

echo "TX $1: $TXPPS paquetes/s RX $1: $RXPPS paquetes/s"

hecho

Medición del ancho de banda de la red

#! /bin/bash

INTERVAL="1" #Intervalo de actualización (segundos)

si [ -z"$1" ]; entonces

echo

echousage: $0 [interfaz de red]

echo

echoe.g.$0 eth0

echo

salir

fi

IF=$1

mientras es verdadero

hacer

R1=`cat/sys/class/ net/$1/statistics/rx_bytes`

T1=`cat/sys/class/net/$1/statistics/tx_bytes`

dormir$INTERVAL

R2 =`cat/sys/class/net/$1/statistics/rx_bytes`

T2=`cat/sys/class/net/$1/statistics/tx_bytes`

TBPS=` expr$T2 - $T1$T1`

RBPS=`expr$R2 - $R1`

TKBPS=`expr$TBPS / 1024`

RKBPS =`expr$RBPS / 1024`

echo "TX $1: $TKBPS kb/s RX $1: $RKBPS kb/s"

hecho

A continuación La captura de pantalla muestra el resultado de los dos scripts anteriores.