2009-07-23 3 views
164

Недавно я проверил книгу "UNIX Network Programming, Vol. 1" Ричардсом Стивенсом, и я обнаружил, что существует третий стандарт транспортного уровня, помимо TCP и UDP: SCTP.Почему SCTP мало используется/известен

Описание: SCTP - это протокол уровня транспорта, который управляется сообщениями, как UDP, но надежный, как TCP. Вот short introduction from IBM DeveloperWorks.

Честно говоря, я никогда не слышал о SCTP раньше. Я не помню, чтобы читать об этом в каких-либо сетевых книгах или слышать об этом в классах, которые я взял. Чтение other stackoverflow questions, в котором упоминается SCTP, свидетельствует о том, что я не одинок с этим недостатком знаний.

Почему SCTP так неизвестен? Почему он не так много используется?

+2

+1 никогда не слышал об этом - спасибо. –

+1

Любой, кто хочет сравнить SCTP с ZeroMQ (кроме того, что один из них является протоколом, другой - библиотекой - рассматривает их как инструмент для решения проблем). –

+0

Мне просто интересно: что не так/отлично на 3/1/2013? Почему так много голосов в этот день? – dmeister

ответ

87

Действительно, SCTP используется в основном в телекоммуникационной зоне. Традиционно коммутаторы связи используют SS7 (Signaling System No. 7) для соединения разных объектов в телекоммуникационной сети. Например, абонентская база оператора связи (HLR) с коммутатором (MSC), абонент также подключен (MSC).

Телекоммуникационная область движется к более высоким скоростям и более достижимой среде. Одним из этих изменений является замена протокола SS7 на более элегантный, быстрый и гибкий протокол на основе IP.

Зона связи очень консервативна. Сеть SS7 используется здесь уже много десятилетий. Это очень надежная и закрытая сеть. Это означает, что у обычного пользователя нет доступа к нему.

IP-сеть, напротив, открыта и ненадежна, а телекоммуникации не будут конвертировать ее, если она не будет обрабатывать хотя бы нагрузку, которую обрабатывает SS7. Вот почему SCTP был разработан. Он пытается:

  • , чтобы имитировать все преимущества сети SS7, накопленной за десятилетия.
  • создать ориентированный на соединение протокол лучше, чем TCP в скорости, безопасности, и резервирование

последние версии Linux уже имеют поддержку SCTP.

+0

, вы должны посмотреть на результаты работы рабочей группы IETF «SIGTRAN», которая написала сопоставление между SS7 и SCTP. – Alnitak

+17

Вероятно, основная причина, по которой SCTP мало используется в общедоступном Интернете, заключается в том, что живые шлюзы IPv4/NAT должны стать SCTP-поддержкой для поддержки ассоциаций мультиплексирования между несколькими одновременными частными конечными точками и внешними узлами. Ищите SCTP, чтобы стать более полезными, как только переход IPv6 начнет поднимать больше пара. –

+0

@jameswoodyatt есть библиотеки реализации SCTP через UDP. Он решает некоторые проблемы с маршрутизаторами потребительского класса. – user7610

7

Чтение SCTP Wikipedia page Я бы сказал, что главная причина заключается в том, что SCTP является очень молодой протокол (предложенный в 2000 году), который в настоящее время не поддерживается в мейнстрим Осс ( Windows, , OS X , Linux ).

Если «очень молодой» кажется вам неприемлемым, подумайте о IPV6: «в декабре 2008 года, несмотря на то, что 10-летний юбилей был отмечен как протокол стандартов, IPv6 был только в зачаточном состоянии с точки зрения общего развертывания во всем мире».

+3

Согласно статье Википедии, с которой вы связаны, SCTP реализован в Linux, Solaris, FreeBSD, HP-UX и других. – spatz

+0

Связанная статья теперь также говорит о том, что она работает на OS X и Windows. – dmeister

3

Возможно, это не так хорошо известно, но оно не используется. Совсем недавно был draft, опубликованный в IETF о Использование SCTP в качестве протокола транспортного уровня для HTTP.

+1

Когда вы сказали «не неиспользованный», я подумал о фактическом использовании протокола. Но тогда вы только дали пример * проекта документа *, который потенциально может привести к реальному использованию в будущем. – Kissaki

0

Sctp родился слишком поздно, и для многих ситуаций достаточно TCP.

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

51

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

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

Другим полезным дополнением является поддержка многоточечной поддержки - одно соединение может быть через несколько интерфейсов на обоих концах, и оно справляется с отказами. Вы можете эмулировать это в TCP, но на уровне приложения.

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

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

FYI, SCTP имеет мандат, поддерживаемый для Diameter (cf RADIUS next gen). см. RFC 3588

 
    Diameter clients MUST support either TCP or SCTP, while agents and 
    servers MUST support both. Future versions of this specification MAY 
    mandate that clients support SCTP. 
61

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

Как и многие другие перспективные протоколы, SCTP печально мертв в воде, пока D-link и Netgear не зафиксируют свои сломанные NAT-боксы.

+7

Вау, я не знал об этом препятствии для входа. Вы совершенно правы - см. Http://tools.ietf.org/html/draft-ietf-behave-sctpnat-05 для предлагаемого пути вокруг этого. Это третий набор интернет-проектов по той же теме ... – Bwooce

+0

Вы выглядите довольно пессимистично - для домашних маршрутизаторов. Предполагая, что маршрутизаторы, используемые в профессиональных производственных средах, поддерживают его, SCTP по-прежнему выглядит очень полезным. Существует множество случаев, когда сетевые топологии не покидают помещения центра обработки данных, и в этом случае SCTP должен быть идеальным. –

+3

@EugeneBeresovksy: Прошло несколько лет с тех пор, как я опубликовал этот ответ. Мое впечатление, что SCTP не добился значительных успехов с тех пор. Он по-прежнему используется в нескольких специализированных приложениях в контролируемых средах, но редко встречается в дикой природе. Windows и Mac OS X по-прежнему не имеют поддержки SCTP из коробки. Отсутствие знакомого и хрупкость протокола, нарушенного большинством брандмауэров и ящиков NAT, заставляет людей неохотно использовать его. – pehrs

15

p1. SCTP, отображаемый непосредственно через IPv4, требует поддержки в шлюзах NAT, которые никогда не были широко развернуты в любом месте, и без него типичный шлюз NAT разрешает только одному частному хосту на один публичный адрес использовать SCTP.

p2. SCTP, сопоставленный с UDP/IPv4, позволяет принимать более частные хосты на один общий адрес, но сопоставление UDP в шлюзах IPv4/NAT, как известно, сложно установить и сохранить в связи с тем, что UDP - это транспорт без установления соединения без какого-либо явного состояния для NAT для отслеживания ,

p3. SCTP, отображаемый непосредственно через IPv6, требует ... ну ... IPv6. Вы пытались развернуть IPv6? Если да, пытались ли вы купить брандмауэр IPv6? Поддерживает ли он SCTP? Как насчет балансировки нагрузки? Ускоритель SSL?

p4. Наконец, большая часть Интернета в значительной степени ограничена тем, что может поместиться через TCP-порт 80 и порт 443, поэтому SCTP любого вкуса имеет тенденцию терять там. Следовательно, вы видите такие усилия, как рабочая группа MPTCP в IETF.

+0

«Вы пытались купить брандмауэр IPv6? Поддерживает ли он SCTP» - обычный свободно распространяемый 'iptables' [поддерживает их просто отлично] (http://ipset.netfilter.org/iptables.man.html). Я не парень сети, хотя, поэтому я не могу сказать для остальных. –

34

SCTP не очень известно и не используется/развернуто много, потому что:

  • широкое распространение: не широко интегрированы в TCP/IP стеков (в 2013 году: по-прежнему отсутствует изначально в последних Mac OSX и Windows)
  • библиотек: Несколько привязок высокого уровня в легко для использования языков (Отказ от ответственности: я поддерживаю pysctp, SCTP eas y для поддержки Python)
  • NAT: Не очень хорошо перекрещивается с NAT/вообще (менее 1% интернет-дома & маршрутизаторы предприятия используют NAT на SCTP).
  • Популярность: Нет общего доступа к общественному использованию
  • Парадигма программирования: она немного изменилась: она по-прежнему является сокетом, но вы можете подключать многие хосты к множеству хостов (многопоточность), дейтаграмма упорядочена и надежна, erc ...
  • Сложность: стек SCTP является сложным для реализации (за счет выше)
  • конкуренции: многолучевости TCP приходит и должен решать Многодомность потребности/возможности, чтобы люди воздерживались от реализации SCTP, если это возможно, ждет MTCP
  • Ниша: потребности Заполнения SCTP очень своеобразны (упорядоченные надежные датаграммы, многопотоковые) и не нужны большим количеством приложений
  • Безопасность: SCTP обходит элементы управления безопасностью (некоторые брандмауэры, большинство IDS, все DLP, не отображаются в netstat, кроме CentOS/Redhat/Fedora ...)
  • Аудиторская способность: что-то вроде 3 компаний в мире регулярно проводят аудит безопасности SCTP (Отказ от ответственности: Я работаю в одном из них)
  • кривой обучения: Не так много ToolChain играть с SCTP (проверьте отличный withsctp, который сочетает красиво с Netcat или использовать SOCAT)
  • Под капотом: Используется в основном в телекоммуникации и каждый раз, когда вы отправляете SMS, начинаете заниматься серфингом в сети на своем мобильном телефоне или совершаете телефонные звонки, вы часто запускаете сообщения, которые передаются через SCTP (SIGTRAN/SS7 с GSM/UMTS, Diameter с LTE/IMS/RCS, S1AP/X2AP с LTE), поэтому вы фактически используете его t, но вы никогда не знаете об этом ;-)
+11

Re: «Ниша/не нужна большим количеством приложений». Веб-браузеры выиграют от этого, см. [HTTP2] (https://www.mnot.net/talks/http2-expectations/) и его попытки реализовать поверх TCP некоторые из того, что SCTP дает бесплатно. Большинство методов оптимизации HTTP (написания, очертания, вложения, конкатенации) будут сделаны (почти полностью - расточительные заголовки HTTP1 остаются нерешенными), избыточными с помощью SCTP. То же самое справедливо для приложений, имеющих пул соединений, для обеспечения одновременного доступа к БД или любой другой службе. Другими словами: огромная потребность в множестве приложений для некоторых функций SCTP. –

+2

«Нет общедоступного приложения, использующего его»: это не так, поскольку SCTP используется WebRTC. «Безопасность: SCTP уклоняется от элементов управления безопасностью» - это больше проблема элементов управления «безопасность». Если он избегает этих проверок, это будет замечательный протокол для того, чтобы вредоносное ПО оставалось под радаром. –

3

SCTP широко используется в сети 4G LTE, где Diameter используется для AAA.

+1

Можете ли вы предоставить некоторые ссылки, чтобы показать это? –

2

Со ссылкой на все комментарии о коммерческих маршрутизаторах, нарушаемых или не имеющих поддержки SCTP, проблема заключается в том, что SCTP с NAT все еще находится в черновом формате с IETF. Таким образом, для них не существует спецификации RFC.

https://tools.ietf.org/html/draft-ietf-behave-sctpnat-09

Смежные вопросы