Есть ли встроенная утилита или Linux для быстрого получения PMTU / MTU удаленной системы (предпочтительно менее 1 секунды)? Если да, то что это такое и какой синтаксис для этого нужен?
Сегодня поиск в Google мне не понравился, и единственное решение, которое я нашел, - это полноценный traceroute, который может занять более 30 секунд.
Что я бы попробовал:
Попробуйте этот сценарий nmap , который использует nmap
для выполнения PMTUD. Не пробовал, не знаю, насколько быстро.
пишут небольшую программу, которая открывает TCP-соединение с включенным PMTUD, и считывает значение обратно из ядра. Потенциально это могло быть довольно быстро. Я недостаточно знаю о том, как это сделать, чтобы рассказать вам больше, но вопрос, на который я указал в своем комментарии, содержит некоторые детали, которые помогут вам двигаться в правильном направлении.
если вы ограничены существующей оболочкой команд попробуйте отправлять пинги разного размера параллельно. ping -M do -s 1472 remote-host
отправит пакет размером 1500 байт (1472 байта данных + заголовки ICMP и IP). -M do
указывает ему явно выполнять PMTUD. http://muzso.hu/2009/05/17/how-to-determine-the-proper-mtu-size-with-icmp-pings
вы упоминаете traceroute
- если вы пытаетесь выяснить , где
MTU ограничен, но вам нужно что-то более быстрое, чем traceroute, попробуйте mtr ; он отправляет группу пакетов с разным таймаутом параллельно, а не последовательно, как это делает traceroute.
К сожалению, у меня нет немедленного доступа к каким-либо системам с разными MTU, поэтому мои возможности для экспериментов ограничены.
Я нашел решение после долгих поисков. Просто сделаю ссылку здесь для всех, кого это волнует:
https://github.com/ValdikSS/p0f-mtu
У него есть API, который вы можете вызвать с полной поддержкой сокетов. Так что, хотя технически это демон, он делает свое дело.