Отладка отброшенных UDP-сообщений в Linux

Вот моя настройка: у меня есть 1 хост с подключением к Ethernet 1 Гбит и 2 хоста с подключениями 100 Мбит (подключены к хосту 1 Гбит через разные коммутаторы).

В тесте я отправляю 1000 сообщений размером 1 Кб с хоста 1 Гбит на хосты 100 Мбит (без задержки в вызовах btwn sendto ()). Для одного из хостов 100 Мбит пакеты не сбрасываются. Другой же не имеет дропов примерно до сотой, а затем начинает сбрасывать большинство оставшихся. Очень воспроизводимо. Когда я ввожу задержку в 1 мс, ни на одном из хостов не происходит сбоев.

Я хотел бы знать, почему два хоста ведут себя по-разному.

Какие методы / инструменты мне следует использовать, чтобы отследить это. ? Я использую Linux 6.8. И мой rmem_max установлен на 10 МБ на обоих хостах.

1
задан 19 June 2016 в 18:28
1 ответ

Это ожидаемое поведение, когда у вас несоответствующая скорость и несоответствующие скорости используются. Если вы можете заполнить канал 1 ГБ, другой конец прочитает только 100 пакетов к тому времени, когда вы отправите 1000 пакетов. Маловероятно, что ваш маршрутизатор буферизует оставшиеся 900 пакетов.

UDP - ненадежный протокол. В отличие от TCP, он не имеет встроенной надежной доставки.

Это может помочь запустить аналогичный тест с TCP-соединениями. Запуск в обоих направлениях может помочь определить, является ли проблема однонаправленной.

Время выполнения процессов может дать представление о том, работает ли один из процессов медленнее, чем другой. netstat -i до и после запуска теста позволит вам подсчитать, сколько данных прибыло, и посмотреть, были ли сгенерированы какие-либо ошибки.

ethtool может сказать вам, находится ли один из хостов в полудуплексном режиме. Полудуплексные соединения подвержены таким проблемам, как вы видите. Если есть кабели или другие проблемы, соединение может вернуться к полудуплексному режиму 10 Мбит в одном или обоих направлениях.

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

Если две системы имеют разное оборудование Ethernet, это может быть проблемой. Некоторое оборудование просто не может обрабатывать насыщенный канал.

2
ответ дан 3 December 2019 в 20:37

Теги

Похожие вопросы