Захват пакета трассировки событий Netsh показывает пакеты; приложение не получает их

236
user2588666

У меня много похожих машин с Windows 10, на которых запущен похожий набор приложений. Ряд приложений являются многоадресными прослушивателями UDP. Каждый из них имеет массивные буферы сокетов (они могут содержать 10 секунд + данных). Иногда многие приложения на данном компьютере сообщают о потере в одно и то же время.

Когда я запускаю захват пакета ETL, пакеты, отсутствующие в приложении, присутствуют в захвате, который выполняется на той же принимающей машине. Пакеты в захвате имеют правильные контрольные суммы и правильные MAC-адреса. Другие приложения на других машинах могут получать эти точные пакеты, но могут отбрасывать другие пакеты.

Источник отправил ретрансляцию, которая была получена приложением. Сравнивая шестнадцатеричные дампы в Wireshark, единственные различия включали идентификацию IP, контрольную сумму IP, контрольную сумму UDP и бит повторной передачи, установленный в части сообщения на уровне приложения. Последние три, безусловно, правильны, хотя я не могу говорить за IP.Identification (кроме того, что он вырос по сравнению с его предыдущим значением и зная, что другие потребители обрабатывали его правильно).

Захват монитора производительности Windows на компьютере не показывает ничего классического (показывает низкую загрузку ЦП, низкое использование памяти, отсутствие сбросов / ошибок NIC, отсутствие отбрасывания Winsock BSP).

Брандмауэр отключен. Нет подключения к интернету - только локальная сеть. На компьютере запущены другие приложения, в том числе TCP и одноадресные прослушиватели UDP.

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

Предполагая, что захват ETL находится в драйвере NIC, это оставляет драйвер NIC, ОС, сокет и приложение. Я твердо верю, что потеря до сокета.

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

Благодарю. Любые советы будут оценены.

0

0 ответов на вопрос