При написании сетевого программного обеспечения существует ли стандарт по умолчанию, типичный или иным образом де-факто стандарт размера MTU, о котором мне следует знать? Если так, то, что это?
Имеет размер MTU 1500 (как предлагается здесь: Какой максимальный MTU поддерживается стандартами DSL) хорошее практическое правило?
Кроме того, я не задумываюсь над этой проблемой? Это одна из тех вещей, которые люди считать важно при написании сетевого программного обеспечения, но в практическом, реальном мире, не имеет большого значения, поскольку TCP позаботится о деталях за вас?
Я спрашиваю здесь, а не на StackOverflow, потому что мне нужна точка зрения системного администратора, когда дело доходит до актуальных вопросов поддержки, связанных с размером MTU.
ОБНОВИТЬ: Основываясь на некоторых отзывах и начальных ответах, я немного сужаю фокус:
Это довольно широкий вопрос.
1500 - обычное дело? Да, безусловно, для традиционного Ethernet в локальной сети.
Можно ли предполагать 1500 или ожидать его для любого соединения? Нет. Мобильные пользователи, которые подключаются из любого места, могут иметь разные MTU в разное время.
Иногда мы уменьшаем MTU для серверов центров обработки данных, которые могут предоставлять услуги удаленным офисам через VPN-соединение.
VPN-соединения в целом, скорее всего, будут иметь уменьшенный MTU, и они повсюду. Это может быть 1410, 1390, 1362 или другое любопытное число.
Если вас интересует максимальный размер полезной нагрузки для данного TCP-соединения, вы, вероятно, сочтете согласованный максимальный размер сегмента более значимым. Для стандартного LAN-соединения 1500 MTU это обычно будет 1460, но в итоге он должен отражать размер, приемлемый для обоих хостов.
Для соединений, которые проходят через множество переходов, может быть нереалистично ожидать, что все переходы будут иметь «стандартный» MTU или что MTU может быть надежно определен. См. Обсуждение Path MTU Discovery по теме.
Обнаружение MTU пути
http://en.wikipedia.org/wiki/Path_MTU_discovery#Problems_with_PMTUD
Обход проблем с обнаружением MTU пути с помощью ограничения MSS
http://lartc.org/howto/lartc.cookbook.mtu-mss.html
Вам не следует заботиться о MTU, поскольку сетевой стек позаботится о необходимых оптимизациях. Если вы используете TCP, стек может использовать методы для расчета максимального размера сегмента (MSS), который, в свою очередь, в идеале будет приводить к пакетам, размер которых меньше самого низкого MTU в пути. Один из них является Открытие PMTU.
В общем, вам не следует пытаться перехитрить стек - многоуровневая архитектура TCP / IP использует абстракции по уважительным причинам. Если у вас нет лучших, вам следует оставить функции сегментации и фрагментации там, где они были задуманы.
Как писали другие, не существует "безопасного MTU", который можно было бы принять, кроме минимально определенного MTU для IP-пакетов - что составляет 68 байт и поэтому имеет довольно низкую практическую ценность из-за огромных накладных расходов.
Типичные проблемы поддержки из-за ограничений MTU в основном двоякие:
Оба фактора - не то, с чем вам следует иметь дело в приложении.
В ответ на:
Придерживайтесь требований протокола и предполагайте, что вы можете легко передать данные. Однако старайтесь избегать использования блоков фиксированной длины, превышающих MTU или несколько кратных ему.