stringtranslate.com

Протокол передачи управления потоком

Протокол передачи управления потоком ( SCTP ) — это протокол компьютерной сети транспортного уровня набора протоколов Интернета . Первоначально предназначенный для транспортировки сообщений Системы сигнализации 7 (SS7) в телекоммуникациях, протокол обеспечивает ориентированную на сообщения функцию Протокола пользовательских дейтаграмм (UDP), обеспечивая при этом надежную, последовательную транспортировку сообщений с контролем перегрузки , например, Протокол управления передачей ( ПТС). В отличие от UDP и TCP, протокол поддерживает множественную адресацию и резервные пути для повышения отказоустойчивости и надежности.

SCTP стандартизирован Инженерной группой Интернета (IETF) в RFC  9260. Эталонная реализация SCTP была выпущена как часть FreeBSD версии 7 и с тех пор широко перенесена на другие платформы.

Формальный надзор

Рабочая группа IETF Signaling Transport ( SIGTRAN ) определила протокол (номер 132 [1] ) в октябре 2000 года [2] , а рабочая группа IETF Transport Area (TSVWG) поддерживает его. RFC  9260 определяет протокол. RFC  3286 содержит введение.

Многопоточная передача сообщений на основе сообщений

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

SCTP можно охарактеризовать как ориентированный на сообщения, то есть он передает последовательность сообщений (каждое из которых представляет собой группу байтов), а не непрерывный поток байтов, как в TCP. Как и в UDP, в SCTP отправитель отправляет сообщение за одну операцию, и это точное сообщение передается принимающему процессу приложения за одну операцию. Напротив, TCP — это потоково-ориентированный протокол, который надежно и упорядоченно передает потоки байтов . Однако TCP не позволяет получателю узнать, сколько раз приложение-отправитель вызывало транспорт TCP, передавая ему группы байтов для отправки. У отправителя TCP просто добавляет дополнительные байты в очередь байтов, ожидающих отправки по сети, вместо того, чтобы хранить очередь отдельных исходящих сообщений, которые должны сохраняться как таковые.

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

TCP сохраняет порядок байтов в потоке, включая порядковый номер байта в каждый сегмент . SCTP, с другой стороны, присваивает порядковый номер или идентификатор сообщения [примечание 1] каждому сообщению , отправленному в потоке. Это позволяет независимо упорядочивать сообщения в разных потоках. Однако порядок сообщений в SCTP не является обязательным; принимающее приложение может выбрать обработку сообщений в порядке получения, а не в порядке отправки.

Функции

Возможности SCTP включают в себя:

Разработчики SCTP изначально предназначали его для передачи телефонии (т. е. системы сигнализации 7) по Интернет-протоколу с целью дублирования некоторых атрибутов надежности сигнальной сети SS7 в IP. Эта инициатива IETF известна как SIGTRAN . Тем временем были предложены и другие варианты использования, например, протокол Diameter [3] и надежное объединение серверов (RSerPool). [4]

Мотивация и принятие

TCP предоставил основное средство для надежной передачи данных через Интернет. Однако TCP наложил ограничения на несколько приложений. Из RFC  4960:

Внедрение замедляется из-за недостаточной осведомленности, отсутствия реализации (особенно в Microsoft Windows), отсутствия поддержки приложений и сети. [6]

Многосетевая адресация

SCTP предоставляет резервные пути для повышения надежности.

Каждая конечная точка SCTP должна проверять доступность основного и резервного адресов удаленной конечной точки с помощью контрольного сигнала . Каждая конечная точка SCTP должна подтверждать контрольные сигналы, которые она получает от удаленной конечной точки.

Когда SCTP отправляет сообщение на удаленный адрес, исходный интерфейс будет определяться только таблицей маршрутизации хоста (а не SCTP).

При асимметричной множественной адресации одна из двух конечных точек не поддерживает множественную адресацию.

При локальной множественной адресации и удаленной одинарной адресации, если удаленный основной адрес недоступен, ассоциация SCTP завершается неудачей, даже если альтернативный путь возможен.

Структура пакета

Пакет SCTP состоит из двух основных разделов:

  1. Общий заголовок , занимающий первые 12 байт и выделенный синим цветом.
  2. Фрагменты данных , занимающие оставшуюся часть пакета. Первый фрагмент выделен зеленым цветом, а последний из N фрагментов (Чанк N) выделен красным.

Каждый фрагмент начинается с однобайтового идентификатора типа, при этом 15 типов фрагментов определены в RFC  9260 и еще как минимум 5 определены в дополнительных RFC. [примечание 2] Восемь битов флага, двухбайтовое поле длины и данные составляют оставшуюся часть фрагмента. Если фрагмент не кратен 4 байтам (т. е. длина не кратна 4), то он дополняется нулями, которые не включаются в длину фрагмента. Поле длины в два байта ограничивает длину каждого фрагмента до 65 535 байт (включая поля типа, флагов и длины).

Безопасность

Хотя шифрование не было частью исходной конструкции SCTP, SCTP был разработан с функциями для повышения безопасности, такими как 4-стороннее рукопожатие (по сравнению с 3-сторонним рукопожатием TCP ) для защиты от атак SYN-флудинга и большие файлы cookie для проверки ассоциации. и подлинность.

Надежность также была ключевой частью системы безопасности SCTP. Многодомность позволяет ассоциации оставаться открытой, даже если некоторые маршруты и интерфейсы не работают. Это имеет особое значение для SIGTRAN , поскольку он передает SS7 по IP-сети с использованием SCTP и требует высокой устойчивости во время сбоев канала для поддержания телекоммуникационных услуг даже при постоянных сетевых аномалиях.

SCTP иногда является хорошим кандидатом для снятия отпечатков пальцев . Некоторые операционные системы поставляются с включенной поддержкой SCTP, и, поскольку он не так известен, как TCP или UDP, его иногда игнорируют в конфигурациях межсетевого экрана и обнаружения вторжений, что часто позволяет проверять трафик.

Реализации

Эталонная реализация SCTP работает на FreeBSD, Mac OS X, Microsoft Windows и Linux. [7]

Следующие операционные системы реализуют SCTP:

Сторонние драйверы:

Библиотека пользовательского пространства :

Следующие приложения реализуют SCTP:

Туннелирование через UDP

При отсутствии встроенной поддержки SCTP в операционных системах можно туннелировать SCTP через UDP [21] , а также сопоставлять вызовы TCP API с вызовами SCTP, чтобы существующие приложения могли использовать SCTP без изменений. [22]

RFC

Смотрите также

Примечания

  1. ^ Чанк DATA использует порядковый номер для упорядоченных сообщений, чанк I-DATA , который решает некоторые проблемы с исходным чаном DATA, использует идентификатор сообщения для всех сообщений.
  2. ^ Более подробную информацию см. в структуре пакета SCTP .

Рекомендации

  1. ^ «Номера протоколов». iana.org . ИАНА . Проверено 9 сентября 2014 г.
  2. ^ Протокол передачи управления потоком. IETF . Октябрь 2000 г. doi : 10.17487/RFC2960 . РФК 2960.
  3. ^ «Транспорт». Базовый протокол диаметра. IETF . сек. 2.1. дои : 10.17487/RFC3588 . РФК 3588 . Проверено 18 мая 2012 г.
  4. ^ «Пример сценария с использованием служб сеансов RSerPool» . Обзор надежных протоколов объединения серверов. IETF . п. 10. сек. 4.2. дои : 10.17487/RFC5351 . РФК 5351.
  5. ^ RFC 9260, раздел 1.5.5.
  6. ^ Хогг, Скотт. «А как насчет протокола передачи управления потоком (SCTP)?». Сетевой мир . Проверено 4 октября 2017 г.
  7. ^ «Справочная реализация для SCTP — RFC4960» . Гитхаб . Проверено 14 октября 2013 г. Это эталонная реализация SCTP. Он портативен и работает на FreeBSD/MAC-OS/Windows и в пользовательском пространстве (включая Linux).
  8. ^ "sys/netinet/sctp.h". Перекрестная ссылка BSD . НетБСД . 27 июня 2017 г. Проверено 21 января 2019 г.
  9. ^ "man4/sctp.4". Перекрестная ссылка BSD . НетБСД . 31 июля 2018 г. Проверено 21 января 2019 г.
  10. ^ «DragonFly удаляет SCTP» . Lists.dragonflybsd.org . Проверено 28 апреля 2016 г.
  11. ^ «О технологических достижениях FreeBSD» . Проект FreeBSD. 09.03.2008 . Проверено 13 сентября 2008 г. SCTP: FreeBSD 7.0 является эталонной реализацией нового протокола IETF Stream Control Transmission Protocol (SCTP), предназначенного для поддержки VoIP, телекоммуникаций и других приложений с высокой надежностью и переменным качеством передачи с помощью таких функций, как многопутевая доставка, аварийное переключение. и многопотоковая передача.
  12. ^ «Протокол передачи управления потоком (SCTP)» . Девелоперская компания Хьюлетт-Паккард. Архивировано из оригинала 3 января 2013 г.
  13. ^ «Сеть TCP/IP» . Поддержка разработчиков QNX . Программные системы QNX . Проверено 13 сентября 2008 г.«Что нового в этой ссылке». Справочник по библиотеке QNX . Программные системы QNX . Проверено 18 декабря 2012 г.
  14. ^ «Платформа разработки программного обеспечения QNX 6.4.0» .
  15. ^ «Сетевое подключение операционной системы Solaris 10 — высочайшая производительность сети» . Сан Микросистемс . Проверено 13 сентября 2008 г.
  16. ^ «SctpDrv: драйвер SCTP для Microsoft Windows». Архивировано из оригинала 08.10.2017 . Проверено 4 января 2022 г.
  17. ^ «Расширение сетевого ядра SCTP для Mac OS X» . Гитхаб . 23 сентября 2021 г.
  18. ^ "sctplab/usrsctp". Гитхаб . Проверено 21 сентября 2021 г.
  19. ^ "Страница загрузки SCTP" . 29 мая 2006 г. Проверено 4 февраля 2011 г.
  20. ^ «Установщик библиотеки SCTP для Windows» . Проверено 4 февраля 2011 г.
  21. ^ Туксен, Майкл; Стюарт, Рэндалл Р. (май 2013 г.). UDP-инкапсуляция пакетов протокола передачи управления потоком (SCTP) для связи между конечными хостами. IETF . дои : 10.17487/RFC6951 . РФК 6951.
  22. ^ Бикхарт, Райан; Пол Д. Амер; Рэндалл Р. Стюарт (2007). «Прозрачный слой трансляции TCP-SCTP» (PDF) . Проверено 13 сентября 2008 г.
  23. ^ Д. Крыло; А. Юрченко (апрель 2012 г.). «Счастливые глаза: успех с хостами с двумя стеками». www.tools.ietf.org . IETF .
  24. ^ Хадеми, Наим; Брунстрем, Анна; Хуртиг, Пер; Гриннемо, Карл-Йохан (21 июля 2016 г.). «Счастливые глаза при выборе транспорта». www.tools.ietf.org . IETF . Проверено 9 января 2017 г.

Внешние ссылки