практика программирования: как выбрать размер пакета для дейтаграмм UDP? - PullRequest
3 голосов
/ 03 декабря 2010

Отказ от ответственности : это не вопрос "как".В качестве справочной информации я хотел бы больше узнать, какие на самом деле используются различные практические методы.

Мы знаем, что UDP не имеет обнаружения PMTU, такого как TCP.Таким образом, я вижу несколько подходов, чтобы избежать фрагментации IP с помощью UDP:

  • Максимальная отправка пакетов по 512 байт (подход UDP)).
  • Опираясь на локальный MTU (но насколько он надежен, поскольку UDP не является подключенным протоколом, как он может знать, через какой интерфейс будут проходить его пакеты?)
  • другие ...?

Так что я хотел бы иметь "фоновое" представление о том, какие подходы используются текущими программами / протоколами UDP, особенно в отношении потоковых приложений / общих приложений VoIP?

Заранее спасибо,

Джоселин

1 Ответ

3 голосов
/ 14 декабря 2010

Ограничение до 576 байтов очень распространено.Большинство интернет-протоколов, таких как DNS, делают это.Большинство потоковых протоколов в реальном времени также используют пакеты меньшего размера, поскольку имеет дополнительное преимущество, заключающееся в более низкой задержке сериализации и меньшем воздействии в случае потери одного пакета.

Некоторые протоколы имеют способы согласования большего размера пакета, хотя частоне таким надежным, как обнаружение PMTU (например, DHCP позволяет согласовывать максимальный размер сообщения).

Есть также вещи, которые по умолчанию равны 1500 или около того и позволяют пользователю снизить его при необходимости.Большинство реализаций SNMP, кажется, делают что-то вроде этого.

В любом случае бит DF обычно не устанавливается, поэтому следствием чрезмерного оптимизма является фрагментация, а не поломка.

...