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

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

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

СОДЕРЖАНИЕ
  • 1 Официальный надзор
  • 2 Многопотоковая передача на основе сообщений
  • 3 особенности
  • 4 Мотивация и усыновление
  • 5 Множественное наведение
    • 5.1 Асимметричное множественное наведение
      • 5.1.1 Локальное множественное возвращение - удаленное одиночное возвращение
      • 5.1.2 Local single-Homing - удаленное множественное возвращение
  • 6 Структура пакета
  • 7 Безопасность
  • 8 Реализации
    • 8.1 Туннелирование через UDP
  • 9 История RFC
  • 10 См. Также
  • 11 Примечания
  • 12 Ссылки
  • 13 Внешние ссылки
Формальный надзор

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

Многопоточность на основе сообщений

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

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

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

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

Функции

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

  • Надежная передача как упорядоченных, так и неупорядоченных потоков данных.
  • Поддержка множественной адресации, при которой одна или обе конечные точки соединения могут состоять из более чем одного IP-адреса, что обеспечивает прозрачное переключение при отказе между избыточными сетевыми путями.
  • Доставка фрагментов в независимых потоках устраняет ненужную блокировку заголовка строки, в отличие от доставки потока байтов TCP.
  • Явная частичная надежность.
  • Выбор и мониторинг пути для выбора основного пути передачи данных и проверки возможности соединения на пути передачи.
  • Механизмы проверки и подтверждения защищают от атак лавинной рассылки и уведомляют о дублированных или отсутствующих блоках данных.
  • Улучшенное обнаружение ошибок, подходящее для больших кадров Ethernet.

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

Мотивация и усыновление

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

  • TCP обеспечивает как надежную передачу данных, так и доставку данных в строгом порядке. Некоторым приложениям требуется надежная передача без поддержки последовательности, в то время как другие будут удовлетворены частичным упорядочением данных. В обоих этих случаях свойство блокировки заголовка строки TCP вызывает ненужную задержку.
  • Для приложений, обменивающихся отдельными записями или сообщениями, потоковая природа TCP требует добавления явных маркеров или другого кодирования для разграничения отдельных записей.
  • Во избежание отправки большого количества небольших IP-пакетов там, где было бы достаточно одного более крупного пакета, реализация TCP может задерживать передачу данных, ожидая, возможно, дополнительные данные будут помещены в очередь приложением ( алгоритм Нэгла ). Если и когда такая небольшая задержка нежелательна, приложение должно явно запросить передачу без задержки в каждом конкретном случае, используя функцию push (т. Е. Путем установки флага PSH в заголовке пакета TCP). SCTP, с другой стороны, позволяет настраивать передачу без задержки по умолчанию для ассоциации, устраняя любые нежелательные задержки, но за счет более высоких накладных расходов на передачу.
  • Ограниченный набор сокетов TCP усложняет задачу обеспечения возможности высокодоступной передачи данных с использованием многосетевых хостов.
  • TCP относительно уязвим для атак типа «отказ в обслуживании», таких как атаки SYN.

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

Множественное наведение

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

SCTP множественная адресация

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

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

Асимметричное множественное наведение

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

Местное множественное возвращение - удаленное одиночное возвращение

В режимах «Локальная множественная адресация» и «Удаленная одиночная адресация», если удаленный первичный адрес недоступен, ассоциация SCTP не выполняется, даже если возможен альтернативный путь.

Асимметричное множественное возвращение в исходное положение: локальное множественное возвращение в исходное положение - удаленное одиночное возвращение в исходное положение

Местное однократное наведение - удаленное многоканальное наведение

Асимметричное множественное возвращение в исходное положение: локальное одиночное начало отсчета - удаленное множественное возвращение в исходное положение
Структура пакета
Основная статья: структура пакета SCTP
Биты 0–7 8–15 16–23 24–31
+0 Исходный порт Порт назначения
32 Тег подтверждения
64 Контрольная сумма
96 Тип чанка 1 Флаги блока 1 Длина чанка 1
128 Данные блока 1
Тип чанка N Флаги блока N Длина блока N
Данные блока N

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

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

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

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

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

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

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

Реализации

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

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

  • AIX версии 5 и новее
  • NetBSD начиная с версии 8.0
  • Cisco IOS 12
  • DragonFly BSD с версии 1.4, однако поддержка в версии 4.2 устарела.
  • FreeBSD версии 7 и выше содержит эталонную реализацию SCTP.
  • HP-UX, 11i v2 и выше
  • Linux на базе ядра 2.4 и новее
  • Tru64 с дополнительным пакетом Compaq SCTP
  • QNX Neutrino Realtime OS, 6.3.0–6.3.2, не рекомендуется с 6.4.0
  • Sun Solaris 10 и выше
  • VxWorks версий 6.2.x - 6.4.x и 6.7 и новее
  • иллюзия

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

  • Microsoft Windows :
    • Драйвер ядра SctpDrv - это порт стека BSD SCTP для Windows.
  • MacOS :
    • Расширение сетевого ядра SCTP для Mac OS X

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

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

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

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

История RFC
  • RFC   7829 SCTP-PF: алгоритм быстрого переключения при отказе для протокола передачи управления потоком
  • RFC   7765 TCP и протокол передачи управления потоком (SCTP) RTO Restart
  • RFC   7496 Дополнительные политики для расширения протокола передачи частично надежного управления потоком
  • RFC   7053 SACK-НЕМЕДЛЕННО Расширение для протокола передачи управления потоком (обновляет RFC 4960)
  • RFC   6951 UDP-инкапсуляция пакетов протокола передачи управления потоком (SCTP) для связи между конечным хостом
  • RFC   6525 Stream Control Transmission Protocol (SCTP) Изменение конфигурации потока
  • RFC   6458 Расширения API сокетов для протокола передачи управления потоком (SCTP)
  • RFC   6096 Stream Control Transmission Protocol (SCTP) Регистрация флагов фрагментов (обновляет RFC 4960)
  • RFC   5062 Обнаружены атаки безопасности на протокол передачи управления потоком (SCTP) и текущие меры противодействия
  • RFC   5061 Протокол передачи управления потоком (SCTP) Динамическая реконфигурация адреса
  • RFC   5043 Протокол передачи управления потоком (SCTP) Адаптация прямого размещения данных (DDP)
  • RFC   4960 Протокол передачи управления потоком
  • RFC   4895 Аутентифицированные блоки для протокола передачи управления потоком (SCTP)
  • RFC   4820 Padding Chunk и параметр для протокола передачи управления потоком (SCTP)
  • RFC   4460 Ошибки и проблемы, связанные со спецификацией протокола передачи управления потоком (SCTP)
  • RFC   3873 Протокол управления потоком (SCTP) База управляющей информации (MIB)
  • RFC   3758 Stream Control Transmission Protocol (SCTP) Расширение частичной надежности
  • RFC   3554 об использовании протокола передачи управления потоком (SCTP) с IPsec
  • RFC   3436 Безопасность транспортного уровня по протоколу передачи управления потоком
  • RFC   3309 Изменение контрольной суммы протокола передачи управления потоком (SCTP) (устарело в соответствии с RFC 4960)
  • RFC   3286 - Введение в протокол передачи управления потоком
  • RFC   3257 Заявление о применимости протокола передачи управления потоком
  • RFC   2960 Stream Control Transmission Protocol (обновленный RFC 3309 и устаревший RFC 4960)
Смотрите также
Примечания
использованная литература
внешние ссылки
Последняя правка сделана 2023-04-13 01:00:26
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте