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 curl
comando para baixar um arquivo, a interface que está voltada para a bordacomeçará a se acumular rx_crc_errors
esporadicamente, 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 curl
comando 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.dat
a 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?