Tengo una máquina Linux que ejecuta Debian 11 que actúa como enrutador entre un dispositivo ubicado en el borde y una máquina host. Mientras ejecuta un curl
comando para descargar un archivo, la interfaz que mira hacia el bordecomenzará a acumularse rx_crc_errors
esporádica pero consistentemente- el conteo aumenta a borbotones, con un promedio de quizás uno o dos por segundo. El resultado es que tanto desde el enrutador como desde la máquina host detrás de él, este curl
comando se ejecuta muy lento y se descarga a una fracción de la velocidad disponible en la línea (y he verificado otros enrutadores y servidores que pasan por el mismo dispositivo perimetral y corre a mayor velocidad y no acumula rx_crc_errors).
El enrutador de borde (la puerta de enlace para la máquina/interfaz que está acumulando estos rx_crc_errors) es un NetGate 1537 que ejecuta pfSense 22.01 (más reciente).
Cosas que hemos probado hasta ahora:
- Reemplazó el cable
- Reemplazó el adaptador SFP
- Usé un puerto de switch diferente
- Reemplazó toda la máquina host con una de la misma configuración.
Ninguno de estos cambió el comportamiento, lo que, hasta donde yo sé, elimina el hardware como fuente del problema.
Hacerlo curl https://dl.google.com/go/go1.18.1.linux-amd64.tar.gz --output t.dat
desde la máquina de borde se completa en aproximadamente 1 segundo. Desde el enrutador con rx_crc_errors, se necesitan 17 segundos y 21 segundos desde el host detrás de él.
Los errores aparecen en la interfaz de enlace ascendente así:
...
2: enp3s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
link/ether 10:1f:74:35:fc:94 brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped missed mcast
1609100899 1250023 508 0 0 2534
TX: bytes packets errors dropped carrier collsns
20574398 206727 0 0 0 0
...
Y luego con ethtool puedo obtener detalles adicionales que muestran el error CRC ( rx_crc_errors: 508
)
ethtool -S enp3s0f0
NIC statistics:
rx_bytes: 1609111223
rx_error_bytes: 0
tx_bytes: 20588905
tx_error_bytes: 0
rx_ucast_packets: 1245869
rx_mcast_packets: 2554
rx_bcast_packets: 1687
tx_ucast_packets: 202770
tx_mcast_packets: 4038
tx_bcast_packets: 0
tx_mac_errors: 0
tx_carrier_errors: 0
rx_crc_errors: 508
rx_align_errors: 0
tx_single_collisions: 0
tx_multi_collisions: 0
tx_deferred: 0
tx_excess_collisions: 0
tx_late_collisions: 0
tx_total_collisions: 0
rx_fragments: 22
rx_jabbers: 0
rx_undersize_packets: 0
rx_oversize_packets: 0
rx_64_byte_packets: 1823
rx_65_to_127_byte_packets: 9084
rx_128_to_255_byte_packets: 2371
rx_256_to_511_byte_packets: 585
rx_512_to_1023_byte_packets: 80
rx_1024_to_1522_byte_packets: 1236167
rx_1523_to_9022_byte_packets: 0
tx_64_byte_packets: 0
tx_65_to_127_byte_packets: 200168
tx_128_to_255_byte_packets: 5659
tx_256_to_511_byte_packets: 370
tx_512_to_1023_byte_packets: 230
tx_1024_to_1522_byte_packets: 381
tx_1523_to_9022_byte_packets: 0
rx_xon_frames: 0
rx_xoff_frames: 0
tx_xon_frames: 0
tx_xoff_frames: 0
rx_mac_ctrl_frames: 0
rx_filtered_packets: 33361
rx_ftq_discards: 0
rx_discards: 0
rx_fw_discards: 0
Tenga en cuenta que los errores para todas las demás interfaces en otras máquinas que he comprobado son todos cero.
En este punto no sé qué comprobar a continuación. Sospecho que el problema está relacionado de alguna manera con el enrutador perimetral, pero hay otros enrutadores conectados a este enrutador perimetral que no presentan el mismo problema. En un momento, estaba usando el enlace troncal VLAN (etiquetado 802.1q) desde el enrutador de borde hasta el conmutador, pero lo desactivé y también intenté aumentar la MTU en 4 bytes a 1504, ninguno de los cuales hizo ninguna diferencia visible: los rx_crc_errors aún se acumulan y El rendimiento es pobre como el anterior.
¿Alguna otra idea sobre cómo diagnosticar la causa de estos rx_crc_errors?