Протокол передачи данных на основе UDP

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

Протокол передачи данных на основе UDP (UDP-based Data Transfer Protocol) — это высокопроизводительный протокол передачи данных, предназначенный для передачи наборов данных большого объёма на высокой скорости по глобальным сетям, что является главным отличием от TCP. Такие параметры, как правило, невыгодны для более общего протокола TCP.

Первоначальные версии были разработаны и протестированы на очень высокоскоростных сетях (1 Гбит/с, 10 Гбит/с и т. д.), тем не менее, последние версии протокола были обновлены для поддержки обычного Интернета. Например, протокол теперь поддерживает установление соединения рандеву (rendezvous connection setup), которое является желательной функцией для того, чтобы пройти брандмауэры NAT, используя UDP.

У UDT есть реализация с открытым исходным кодом, которая может быть найдена на SourceForge. Это - одно из самых популярных решений для поддержки высокоскоростной передачи данных и является частью многих научно-исследовательских проектов и коммерческих продуктов.

История[править | править код]

UDT был разработан доктором Yunhong Gu во время его обучения в Национальном Центре Анализа данных (NCDM) Университета Иллинойса в Чикаго в лаборатории доктора Robert Grossman. Доктор Gu продолжает поддерживать и улучшать протокол по сей день.

Проект UDT стартовал в 2001 году, когда недорогие оптические сети стали популярными и проблемы эффективности TCP на широкополосных высокоскоростных сетях стала более заметна.

Первая версия UDT, также известного как SABUL ("Простая доступная библиотека утилиты пропускной способности"), была разработана, чтобы поддерживать объёмную передачу данных для перемещения научной информации по частным сетям. SABUL использовал UDP для передачи данных и отдельное соединение по протоколу TCP для управляющих сообщений.

В октябре 2003 г. В NCDM достигли скорости передачи данных в 6,8 гигабит в секунду из Чикаго, США в Амстердам, Нидерланды. Во время 30-минутного теста было передано приблизительно 1,4 терабайта данных.

SABUL был позже переименован в UDT, начинавшемуся с версии 2.0, которая была выпущена в 2004. UDT2 удалил соединение управления TCP в SABUL и использовал UDP и для данных, и для управляющих сообщений. UDT2 также представлял новый алгоритм управления перегрузкой, который позволил протоколу работать "справедливо и дружественно" по отношению к параллельным UDT- и TCP-потокам.

UDT3 (2006) расширял использование протокола по простому Интернету. Управление перегрузкой было настроено, чтобы поддерживать относительно низкую пропускную способность. UDT3 также значительно уменьшал использование системных ресурсов (ЦП и память). Кроме того, UDT3 позволяет пользователям легко определять и устанавливать свои собственные алгоритмы управления перегрузкой.

UDT4 (2007) представлял несколько новых функций, чтобы лучше поддерживать высокий параллелизм и прохождение брандмауэров. UDT4 позволил многократным соединениям UDT связываться с одним и тем же портом UDP, и это также поддерживало установление соединения рандеву (rendezvous connection setup).

Пятая версия протокола в настоящее время находится в разработке. Одна из возможных функций — это возможность поддерживать многократные независимые сеансы по единственному соединению.

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

Архитектура протокола[править | править код]

UDT находится поверх протокола UDP, добавляя механизмы управления надёжностью и управление перегрузкой. UDT находится на прикладном уровне и является дуплексным протоколом установления соединения, который поддерживает надёжную потоковую передачу данных и частичный надёжный обмен сообщениями.

Подтверждения[править | править код]

UDT использует периодические подтверждения ACK, чтобы подтвердить пакетную доставку, а отрицательные ACK используются, чтобы сообщить о пакетной потере. Периодические ACK помогают облегчить управление движением контрольных сообщений на обратном пути, когда скорость передачи данных высока, потому что в этих ситуациях количество ACK пропорционально времени, а не количеству пакетов данных.

AIMD и параметр увеличения[править | править код]

UDT использует AIMD-алгоритм управления перегрузками. Параметр увеличения обратно пропорционален доступной пропускной способности (оценено с использованием метода парных пакетов), таким образом UDT может быстро продемонстрировать высокую пропускную способность и замедлиться для лучшей устойчивости, когда приближается к максимальной пропускной способности. Фактор уменьшения - случайное число между 1/8 и 1/2. Это помогает уменьшать негативное влияние синхронизации потерь.

В UDT пакетная передача ограничена управлением уровнем и управлением окном. Передающий уровень использует алгоритмом AIMD. Окно перегрузки, как вторичный механизм управления, установлено согласно частоте поступления данных на стороне получателя.

Конфигурируемое управление перегрузкой[править | править код]

Реализация UDT представляет ряд переменных, связанных с управлением перегрузкой в классе C++, и позволяет пользователям определять ряд функций обратного вызова, чтобы управлять этими переменными. Таким образом пользователи могут переопределить алгоритм управления, переопределив некоторых или все эти функции обратного вызова. Большинство алгоритмов управления TCP может быть реализовано, использовав эту функцию меньше чем с 100 строками кода.

Установление соединения рандеву (rendezvous connection setup)[править | править код]

UDT поддерживает и традиционный клиент-серверный режим установления соединения, и новый режим установления соединения рандеву.

Применение[править | править код]

UDT широко используется в сетях с высокой вычислительной производительностью, где требуется поддерживать высокоскоростную передачу данных по оптическим сетям. Например, GridFTP, популярный инструмент передачи данных в распределённых вычислениях, использует UDT в качестве своего протокола передачи данных.

UDT использовался во многих коммерческих продуктах для быстрой передачи файлов по глобальным сетям.

Поскольку UDT основан на UDP, он также использовался во многих ситуациях, где TCP находился в невыгодном положении по сравнению с UDP.

Применяется в Peer-To-Peer приложениях, для видео- и аудиосвязи и т. д.

Оценка возможных механизмов безопасности[править | править код]

UDT считают современным протоколом, удовлетворяющим требованиям инфраструктуры для передачи данных в высокоскоростных сетях. Его разработка, однако, создаёт новые уязвимости, потому что, как и множество других протоколов, он полагается только на существующие механизмы безопасности для текущих протоколов, таких как протокол управления передачей TCP и UDP.

Исследование, проводимое доктором Danilo Valeros Bernardo технологического университета Сиднея (UTS), члена влиятельной австралийской Сети технологических Университетов, занимается практическими экспериментами на UDT, используя предложенные Сетью технологических Университетов механизмы безопасности и исследуя другие существующие механизмы безопасности, используемые на TCP/UDP для UDT.

Чтобы проанализировать механизмы безопасности, используется Protocol Composition Logic (PCL). Это модульный протокол, включающий отдельное доказательство каждого раздела протокола и обеспечивающий понимание сетевой среды, в которой может надёжно использоваться каждый раздел. Кроме того, доказательство содержит для множества планов восстановления после отказа и другой реализации параметров конфигурации. На данный момент идёт разработка и проверка архитектуры безопасности при помощи систем перезаписи и автоматов.

Результатом работы, которая является первой в литературе, стало более устойчивое теоретическое и практическое представление архитектуры безопасности UDT, жизнеспособной, чтобы работать с другими высокоскоростными сетевыми протоколами.

Награды[править | править код]

Команда UDT выиграла престижную награду Bandwidth Challenge три раза во время ежегодной Supercomputing (Супервычислительной) конференции, главной конференции в мире для высокоэффективных вычислений, сетей, хранения и анализа.

В SC06 (Тампа, Флорида), команда передала набор данных астрономии со скоростью 8 Гбит/с от диска к диску из Чикаго, Иллинойс в Тампу, Флорида, используя UDT.

В SC08 (Остин, Техас) команда демонстрировала использование UDT в сложной высокоскоростной передаче данных, включающей различные распределённые приложения по системе со 120 узлами, через четыре центра обработки данных в Балтиморе, Чикаго и Сан-Диего.

В SC09 (Портленд, Орегон) совместная команда от Военно-морской научно-исследовательской лаборатории (NCDM) и iCAIR продемонстрировали использующую UDT систему с высокой интенсивностью "облачных" вычислительных приложений.

Примечания[править | править код]

https://scholar.google.co.in/citations?user=Iss3wgUAAAAJ&hl=en

https://web.archive.org/web/20091015073135/http://www.hpcwire.com/offthewire/17889209.html

https://web.archive.org/web/20091015073216/http://www.hpcwire.com/offthewire/UIC_Groups_Win_Bandwidth_Challenge_Award.html?

http://web.archive.org/web/20091015073216/http://www.hpcwire.com/offthewire/UIC_Groups_Win_Bandwidth_Challenge_Award.html?

Ссылки[править | править код]

http://udt.sourceforge.net/

https://github.com/dump247/udt-net

https://tools.ietf.org/html/draft-gg-udt-03

https://github.com/InstantWebP2P/node-httpp