Jump to content

UDP-Lite

(Перенаправлено с UDP Lite )

UDP-Lite ( облегченный протокол пользовательских дейтаграмм ) — это протокол без установления соединения потенциально поврежденные полезные , который позволяет доставлять данные приложению , а не отбрасывать их принимающей станцией. Это полезно, поскольку позволяет принимать решения о целостности данных на уровне приложения (приложение или кодек ), где понимается значение битов. UDP-Lite описан в РФК   3828 .

Протокол

[ редактировать ]

UDP-Lite основан на протоколе пользовательских дейтаграмм (UDP), но в отличие от UDP, где либо весь пакет, либо ни один из пакетов не защищены контрольной суммой, UDP-Lite допускает частичные контрольные суммы , которые покрывают только часть дейтаграммы (произвольное количество пакетов). октетов в начале пакета), и поэтому будет доставлять частично поврежденные пакеты. Он предназначен для мультимедийных протоколов, таких как передача голоса по IP (VoIP) или потоковое видео, в которых получение пакета с поврежденной полезной нагрузкой лучше, чем отсутствие пакета вообще. Для обычного UDP и протокола управления передачей (TCP) один бит ошибки приведет к «плохой» контрольной сумме, а это означает, что весь пакет должен быть отброшен: таким образом, битовые ошибки «превращаются» в ошибки всего пакета, даже если повреждение данных незначительно. Для вычисления контрольной суммы UDP-Lite использует тот же алгоритм контрольной суммы, который используется для UDP (и TCP). [1]

Современные мультимедийные кодеки, такие как G.718 и Adaptive Multi-Rate (AMR) для аудио и H.264 и MPEG-4 для видео, имеют функции устойчивости, уже встроенные в синтаксис и структуру потока. Это позволяет кодеку (а) обнаруживать ошибки в потоке и (б) потенциально исправлять или, по крайней мере, скрывать ошибку во время воспроизведения. Эти кодеки являются идеальными партнерами для UDP-Lite, поскольку они предназначены для работы с поврежденным потоком данных, и для этих кодеков лучше получать, возможно, 200 байт, где несколько бит повреждены, чем скрывать потерю всего пакет, который был отброшен из-за неправильной контрольной суммы. Прикладной уровень понимает важность данных, где транспорт видит только пакеты UDP. Это означает, что при необходимости защита от ошибок может быть добавлена ​​на более высоком уровне, например, с помощью схемы прямого исправления ошибок . Приложение — лучшее место для того, чтобы решить, какие части потока наиболее чувствительны к ошибкам, и соответствующим образом защитить их, вместо того, чтобы использовать единую контрольную сумму «грубого перебора», которая одинаково покрывает все. Пример этого можно увидеть в исследовании Hammer et al. где UDP-Lite сочетается с кодеком AMR для улучшения качества речи в условиях сети с потерями. [2]

Поскольку большинство современных канальных уровней защищают передаваемые данные с помощью строгой циклической избыточной проверки (CRC) и отбрасывают поврежденные кадры, для эффективного использования UDP Lite требуется, чтобы канальный уровень знал о передаваемых данных сетевого уровня. Поскольку ни один из существующих стеков IP не реализует такое межуровневое взаимодействие, для эффективного использования UDP-Lite в настоящее время требуются специально модифицированные драйверы устройств. [ нужна ссылка ]

Идентификатор IP-протокола — 136. UDP-Lite использует тот же набор номеров портов, которые назначены Управлением по присвоению номеров в Интернете (IANA) для использования UDP.

Поддержка UDP-Lite была добавлена ​​в ядро ​​Linux версии 2.6.20.

Поддержка UDP-Lite была добавлена ​​в ядро ​​FreeBSD из r264212. [3] Набор изменений также был возвращен MFC в стабильную версию/10. [4] и стал доступен в FreeBSD 10.1-RELEASE. [5]

API сокетов BSD расширен для поддержки UDP-Lite третьим параметром системный вызов сокета : установите его в IPPROTO_UDPLITE для запроса сокета UDP-Lite: [6]

int fd = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDPLITE);

Также можно легко установить, какая часть пакета будет покрыта контрольной суммой (начиная с начала, включая заголовок):

int val = 20; /* 8 octets of header + 12 octets of the application protocol. */
(void)setsockopt(fd, SOL_UDPLITE, UDPLITE_SEND_CSCOV, &val, sizeof val);

Если при такой настройке отправляется пакет размером менее 12 октетов, контрольная сумма будет охватывать весь пакет.

На принимающей стороне сокет по умолчанию отбрасывает все пакеты, которые не покрыты полностью (эмуляция UDP). Чтобы разрешить меньшее покрытие, можно использовать:

int val = 20; /* 8 octets of header + 12 octets of the application protocol. */
(void)setsockopt(fd, SOL_UDPLITE, UDPLITE_RECV_CSCOV, &val, sizeof val);

Это позволит использовать пакеты, в которых контрольная сумма составляет не менее 12 октетов пользовательских данных. Любой пакет с меньшим покрытием будет автоматически отброшен как плохой. Если пакет имеет длину покрытия не менее 20 октетов (включая заголовок) и его контрольная сумма правильна, он будет доставлен приложению (полная или часть полезной нагрузки все равно может быть повреждена, поскольку она не покрыта контрольной суммой или потому что контрольная сумма была правильной, кстати, но последнее очень маловероятно.) Если контрольная сумма неверна, пакет будет отброшен, потому что на самом деле невозможно узнать, была ли ошибка внутри полезных данных или в заголовке UDP-Lite, поэтому на самом деле пакет может быть предназначен для другой программы.

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

Поддерживать

[ редактировать ]

UDP-Lite поддерживается следующими операционными системами:

  • FreeBSD , начиная с версии 10.1-RELEASE
  • Linux , начиная с версии ядра 2.6.20.
  • Также доступно в Windows через стороннюю библиотеку WULL. [7]
[ редактировать ]
  • RFC 3828 — Облегченный протокол пользовательских дейтаграмм (UDP-Lite).
  • RFC 5097 — MIB для протокола UDP-Lite.
  • RFC 4019 — Сжатие заголовка RObust (ROHC): профили для протокола пользовательских дейтаграмм (UDP) Lite
  • RFC 5405 — Рекомендации по использованию Unicast UDP для разработчиков приложений
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 6f041075df47584041996a7a6cad1dca__1696084740
URL1:https://arc.ask3.ru/arc/aa/6f/ca/6f041075df47584041996a7a6cad1dca.html
Заголовок, (Title) документа по адресу, URL1:
UDP-Lite - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)