Невозможно отправить UDP-пакеты, размер которых превышает MTU, в Windows Build 1809 с использованием C # UdpClient - PullRequest
1 голос
/ 21 марта 2019

Краткая версия ниже - мы не можем успешно отправлять UDP-пакеты размером более 1472 байт при запуске Windows Build 1809, хотя в предыдущих версиях она работала нормально.

У нас есть приложение на C # (на самом деле набор приложений), который работает в локальной проводной сети, которая периодически отправляет UDP-пакеты для передачи статуса другим приложениям на других компьютерах в сети.Некоторые из этих пакетов маленькие, но некоторые довольно большие, почти до предела 64k для UDP.Это приложение написано на C # с использованием .NET 4.5.1 и использует класс UdpClient для трансляции и приема трансляций.До тестирования с Windows 10 build 1809 / Windows Server 2019 build 1809 все работало нормально - мы отправляли и получали большие пакеты без проблем.Однако, начиная со сборки 1809, кажется, что мы больше не можем успешно отправлять большие пакеты.Вот некоторые из тестов, которые мы провели:

Система 1: Windows 10 Build 1803 (MTU - 1500)

Система 2: Windows 10 Build 1809 (MTU - 1500)

Я написал тестовую программу, которая отправляет маленький (200 байт или около того) и большой (8000 байт или около того) UDP-пакет, используя UdpClient, одновременно прослушивая эти пакеты.Вот что происходит при отправке из каждой системы:

-Отправка из системы 1:

-System 1 sees both packets

-System 2 sees both packets

-Отправка из системы 2:

 -System 1 sees only the small packet

 -System 2 sees both packets

Это происходит каждый разодин раз - большие пакеты никогда не приходят успешно.Дальнейшее тестирование показало, что магическое число было 1472 байта.Это или менее работало, и больше, чем это не удалось.Вот почему я подозреваю, что что-то с фрагментированием / MTU не работает правильно.Мы не видели этой проблемы раньше, поэтому я запустил Wireshark, чтобы посмотреть, что может происходить.Однако, и это становится странным, запуск Wireshark в системе Build 1809 неожиданно делает возможным отправку пакета, даже если я выйду из Wireshark.Перезагрузка системы, однако, возвращает ее в исходное состояние невозможности успешной отправки.Я должен отметить, что я всегда вижу «Фрагментированный IP-протокол» для этих пакетов в Wireshark на принимающей стороне независимо от того, работают они правильно или нет.

Я немного читал онлайн и обнаружил, что RDP over UDPВ Build 1809 произошел капитальный ремонт, но я ничего не увидел в UDP-пакетах, размер которых превышает MTU, и я не смог найти никого другого, сообщающего об этой конкретной проблеме.

Мы не внесли изменений в кодк этой части нашего кода в течение долгого времени - он работал на Windows 7, Server 2012R2, Server 2016 и Windows 10 до сборки 1809. Есть ли что-то новое в сборке 1809, которая требует от нас где-то установить флаг или настроить что-то насетевой адаптер?Я не знаю, что делает весь Wireshark, когда он загружается, но, похоже, он как-то «исправляет» вещи, поэтому, если у кого-то есть идеи, что именно может быть, это может помочь.

...