misterioso rx_crc_errors na interface de uplink do roteador Linux

misterioso rx_crc_errors na interface de uplink do roteador Linux

Eu tenho uma máquina Linux executando o Debian 11 que atua como um roteador entre um dispositivo localizado na borda e uma máquina host. Ao executar um curlcomando para baixar um arquivo, a interface que está voltada para a bordacomeçará a se acumular rx_crc_errorsesporadicamente, mas de forma consistente- a contagem aumenta em surtos, em média talvez um ou dois por segundo. O resultado é que tanto do roteador quanto da máquina host por trás dele, esse curlcomando roda muito devagar e baixa a uma fração da velocidade disponível na linha (e eu verifiquei em outros roteadores e servidores que passam pelo mesmo dispositivo de borda e eles execute na velocidade mais rápida e não acumule rx_crc_errors).

O roteador de borda (o gateway para a máquina/interface que está acumulando esses rx_crc_errors) é um NetGate 1537 executando o pfSense 22.01 (mais recente).

Coisas que tentamos até agora:

  • Substituí o cabo
  • Substituiu o adaptador SFP
  • Usou uma porta de switch diferente
  • Substituiu toda a máquina host por uma com a mesma configuração

Nada disso mudou o comportamento, o que, até onde sei, elimina o hardware como fonte do problema.

A execução curl https://dl.google.com/go/go1.18.1.linux-amd64.tar.gz --output t.data partir da máquina de borda é concluída em cerca de 1 segundo. Do roteador com rx_crc_errors leva 17 segundos e 21 segundos do host atrás dele.

Os erros aparecem na interface de uplink assim:

...
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
...

E então com ethtool posso obter detalhes adicionais mostrando o erro 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

Observe que os erros de todas as outras interfaces em qualquer outra máquina que verifiquei são zero.

Estou perplexo neste momento sobre o que verificar a seguir. Suspeito que o problema esteja relacionado de alguma forma ao roteador de borda, mas há outros roteadores conectados a esse roteador de borda que não apresentam o mesmo problema. A certa altura, eu estava usando o entroncamento VLAN (marcação 802.1q) do roteador de borda para o switch, mas desativei isso e também tentei aumentar o MTU em 4 bytes para 1504, nenhum dos quais fez qualquer diferença visível - os rx_crc_errors ainda se acumulam e o desempenho é ruim como acima.

Alguma outra idéia sobre como diagnosticar a causa desses rx_crc_errors?

informação relacionada