таинственные ошибки rx_crc_errors на интерфейсе восходящей линии связи маршрутизатора Linux

таинственные ошибки rx_crc_errors на интерфейсе восходящей линии связи маршрутизатора Linux

У меня есть машина Linux, работающая под управлением Debian 11, которая действует как маршрутизатор между устройством, находящимся на краю, и хост-машиной. При выполнении команды curlдля загрузки файла интерфейс, который обращен к краюначнет накапливаться rx_crc_errorsспорадически, но последовательно- счетчик увеличивается рывками, в среднем, один или два в секунду. Результатом является то, что как с маршрутизатора, так и с хост-машины за ним эта curlкоманда выполняется очень медленно и загружается на части скорости, доступной на линии (и я проверил на других маршрутизаторах и серверах, которые проходят через то же периферийное устройство, и они работают на более высокой скорости и не накапливают rx_crc_errors).

Граничный маршрутизатор (шлюз для машины/интерфейса, который накапливает эти rx_crc_errors) — это NetGate 1537, работающий под управлением pfSense 22.01 (последняя версия).

Что мы уже попробовали:

  • Заменил кабель.
  • Заменил SFP-адаптер
  • Использовался другой порт коммутатора
  • Заменил всю хост-машину на машину той же конфигурации.

Ни одно из этих действий не изменило поведение, что, насколько я могу судить, исключает аппаратное обеспечение как источник проблемы.

Выполнение curl https://dl.google.com/go/go1.18.1.linux-amd64.tar.gz --output t.datс машины на краю занимает около 1 секунды. С маршрутизатора с rx_crc_errors это занимает 17 секунд, а с хоста за ним — 21 секунду.

Ошибки отображаются на интерфейсе восходящей линии связи следующим образом:

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

А затем с помощью ethtool я могу получить дополнительную информацию, показывающую ошибку 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

Обратите внимание, что ошибки для всех остальных интерфейсов на всех других машинах, которые я проверил, равны нулю.

На данный момент я в тупике, что проверять дальше. Я подозреваю, что проблема каким-то образом связана с пограничным маршрутизатором, но есть и другие маршрутизаторы, подключенные к этому пограничному маршрутизатору, на которых эта проблема не проявляется. В какой-то момент я использовал транкинг VLAN (тегирование 802.1q) от пограничного маршрутизатора до коммутатора, но я отключил его и также попытался увеличить MTU на 4 байта до 1504, но ни одно из этих действий не дало видимых результатов — rx_crc_errors все еще накапливаются, а производительность плохая, как и выше.

Есть ли еще идеи по диагностике причины этих rx_crc_errors?

Связанный контент