У меня есть Linux-машина под управлением Debian 11, которая действует как маршрутизатор между устройством, находящимся на краю, и хост-машиной. Делая завиток
команда для загрузки файла интерфейс, обращенный к краю начнет накапливаться rx_crc_errors
эпизодически, но постоянно - счетчик увеличивается рывками, в среднем один или два раза в секунду. В результате, как с маршрутизатора, так и с хост-машины, находящейся за ним, завиток
команда работает очень медленно и загружается на части скорости, доступной на линии (и я проверял на других маршрутизаторах и серверах, которые проходят через одно и то же пограничное устройство, и они работают на более высокой скорости и не накапливают 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 DEFAULT group default qlen 1000
ссылка/эфир 10:1f:74:35:fc:94 brd ff:ff:ff:ff:ff:ff
RX: байты, пакеты, ошибки, пропущенные mcast
1609100899 1250023 508 0 0 2534
TX: байты, пакеты, ошибки, отброшенные операторы связи
20574398 206727 0 0 0 0
...
И затем с помощью ethtool я могу получить дополнительную информацию, показывающую ошибку CRC (rx_crc_errors: 508
)
ethtool -S enp3s0f0
Статистика НИК:
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_фрагменты: 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?