Я пытался выяснить, почему у некоторых (очень немногих) людей, которые посещают мой сайт, возникают случайные замедления и страницы с ошибками («страница не загружается»). Случайные замедления и страницы с ошибками никогда не случаются для меня и большинства людей, которые посещают мой сайт. Сайт сбалансирован по нагрузке (что объясняет «случайность»), и по какой-то причине я подумал, что снижение MTU может помочь (не помню, откуда я взял эту идею).
Затем я хотел посмотреть, какой MTU от моего офиса до веб-сайта лучше всего. Здесь все стало странно. Используя 'ping www.example.com -f -l xxxx':
MTU of 1500: Packet needs to be fragmented but DF set (ok)
MTU of 1490: Packet needs to be fragmented but DF set (ok)
MTU of 1480: Packet needs to be fragmented but DF set (ok)
MTU of 1470: Request timed out (hu?)
MTU of 1475: Packet needs to be fragmented but DF set (ok)
MTU of 1474: Packet needs to be fragmented but DF set (ok)
MTU of 1473: Packet needs to be fragmented but DF set (ok)
MTU of 1472: Request timed out (???)
MTU of 1400: Request timed out (???)
MTU of 1300: Request timed out (???)
MTU of 1200: Request timed out (???)
MTU of 1100: Request timed out (???)
MTU of 1000: Packet needs to be fragmented but DF set (ok)
MTU of 1024: Packet needs to be fragmented but DF set (ok)
MTU of 1025: Request timed out (???)
Похоже, что мой веб-сайт не отвечает, если MTU меньше 1473 или больше 1024. Разве он не должен отвечать «пакет должен быть фрагментирован, но ...» вместо этого ???
Это актуальная проблема? или так и должно быть? Могло ли это быть причиной неисправного оборудования или неправильно настроенного программного обеспечения?
Ответ «Пакет должен быть фрагментирован, но установлен DF» для пакетов 1473 и больше является нормальным для Ethernet, так что это не повод для беспокойства по поводу AFAIK. Все, что составляет 1472 или ниже, должно пройти, если каждый переход на пути поддерживает этот MTU. Случайный «Пакет должен быть фрагментирован, но установлен DF», который вы получаете для пакетов меньше 1472, заставляет меня думать, что эхо-запросы проходят по нескольким путям и что один или несколько из этих путей имеют MTU меньше, чем пакет, в котором появляется сообщение о фрагментации. (1000 и 1024). «Тайм-аут запроса истек» не имеет смысла, если (как упомянул Грегаскью) что-то на пути блокирует ICMP.
Попробуйте эту утилиту из своего офиса на веб-сервер, чтобы узнать, сможете ли вы получить какие-либо сведения:
MTU 1500 означает, что наибольшая полезная нагрузка ping будет 1472 (MTU минус 20 байтов для заголовка ip, 8 байтов для заголовка ICMP).
Тайм-аут запроса может просто означать, что ICMP не пересылается куда-то по пути или блокируется брандмауэром.
Вы можете установить MTU своих сетевых интерфейсов равным 1400, как это делают (или делали) некоторые известные WEB-серверы.
Или отключите определение MTU пути, чтобы ответы ваших серверов не были помечены DF.