Похоже, что часть сети не позволяет кадрам Ethernet размером более 1510 байт (исключая контрольную сумму), в результате чего разрешенный MTU составляет 1496 байтов вместо стандартных 1500 байтов, и поэтому кадры, которые изначально содержали 1500 байтов полезной нагрузки, отбрасываются.
Точная причина уменьшения MTU не имеет отношения к этому вопросу. Вопрос в том, почему Windows Server 2019 может восстанавливаться после этих отброшенных пакетов в течение некоторый связи, но не другие. Насколько я понимаю, то, что я здесь вижу, похоже на "обнаружение черной дыры PMTU", но почему обнаружение черной дыры PMTU происходит для одних соединений, но не для других?
Клиенты 10.246.54.143 и 10.246.54.157 находятся в одном и том же сегменте локальной сети на удаленном узле, где существует проблема MTU. Оба они инициируют соединения с сервером 10.8.4.45.
В обоих случаях начальное рукопожатие TCP проходит нормально, затем возникает проблема с MTU, когда сервер отправляет несколько больших пакетов.
Когда это происходит при соединении с 10.246.54.157, после нескольких повторных передач больших пакетов сервер, кажется, сдается и вместо этого пытается использовать полезную нагрузку IP всего 576 байт, что работает, и все происходит оттуда:
(что интересно, большие пакеты, отправленные клиентом, действительно проходят)
Затем, когда 10.246.54.143 пытается подключиться, большие пакеты отбрасываются и происходят повторные передачи, но в этом случае сервер никогда не пытается с меньшим размером пакета, и поэтому соединение никогда не может полностью сформироваться:
Серверное приложение (прослушивающее порт 5002) одинаково в обоих случаях. Он написан на Java.
Почему сервер никогда не пытается использовать пакеты меньшего размера для соединения с 10.246.54.143?
Все это маршрутизируется через одни и те же интерфейсы и маршрутизаторы, за исключением части, ближайшей к клиентам, где они подключены к разным коммутаторам.