7.3.1. Основные функциональные возможности SCTP
Протокол передачи с управлением потоками SCTP (Stream Control Transmission Protocol) специфицирован в документе RFC 2960 и является протоколом семейства IP за номером 132. Основанием для его разработки послужила уже обсуждавшаяся выше неспособность как UDP, так и TCP обеспечить скорость и надежность, необходимые для транспортировки сигнальных сообщений протоколов верхнего уровня, называемых Upper-layer Protocol (UPL), которые не требуют полного набора функциональных возможностей протокола TCP, но продолжают предпочитать ориентированный на соединение протокол транспортного уровня с сохранением данных о состояниях. Эти задачи и призван решить SCTP. По смыслу протокол SCTP аналогичен TCP, но он усовершенствует операции переноса данных, сохранение данных о состояниях и обновление этих данных в отношении тех действий, которые необходимы для надежной и устойчивой транспортировки потоков сообщений UPL между портами. В связи с этим в предлагающемся на смену TCP протоколе SCTP реализуются следующие принципы:
|
|
• подтверждаемая, достоверная, свободная от ошибок и не дублируемая пересылка пользовательских данных в потоках сообщений (message streams), при которой устраняется необходимость в обеспечении строгого порядка следования сообщений, и сообщения пересылаются на вышележащий уровень, как только они получены;
• сегментация данных для адаптации к размеру максимального пересылаемого блока данных, что, впрочем, является обязательным условием в мире IP и предусматривает сборку блоков данных в сообщения на дальнем конце;
• отсутствие обязательного мультиплексирования сообщений в SCTP-дейтаграммы;
• отказоустойчивость на сетевом уровне;
• исключение перегрузок и противодействие лавинам сообщений и нелегальным проникновениям в систему, вызывающим перегрузки;
• функции эксплуатационного управления трактом передачи, позволяющие установить доступность адресата в режиме реального времени посредством периодических контрольных сообщений, и если обнаруживается, что текущий транспортный адрес получателя недоступен, выбирается другой адрес из списка возможных транспортных адресов этого получателя. Несмотря на то, что протокол SCTP является ориентированным на соединение в том смысле, что порты терминалов устанавливают между собой соединение перед тем, как начать передачу данных, он, по сравнению с протоколом TCP, является в некоторых областях применения более простым (причем не за счет надежности и устойчивости транспортного уровня), однако в других областях таковым не является. Он использует некоторые из алгоритмов, которые были разработаны в последние годы, а также накопленный опыт оптимального использования пропускной способности для максимального повышения производительности протокола TCP в глобальных и в высокоскоростных локальных вычислительных сетях. Рассмотрим основные термины протокола SCTP.
|
|
7.3.2. Множественная адресация
Оконечный пункт SCTP представляет собой логический передатчик или приемник пакетов SCTP и представляет собой комбинацию одного или нескольких адресов и номера порта, причем SCTP позволяет оконечному пункту иметь несколько IP-адресов и быть, таким образом, multihomed - распределенным по нескольким физическим платформам, - обеспечивая тем самым устойчивость к повреждениям. Даже имея несколько IP-адресов, оконечный пункт SCTP может использовать только один номер порта. Таким образом, если у оконечного пункта несколько IP-адресов, к каждому из них применяется один и тот же номер порта SCTP.
Комбинация IP-адреса и номера порта называется транспортным адресом получателя (Active Destination), используемым передающим портом для пользовательских сообщений. Когда активный транспортный адрес недоступен, пробуются другие адреса удаленного порта из списка возможных транспортных адресов. Заметим, что любой транспортный адрес может применяться только к одному оконечному пункту SCTP, хотя оконечный пункт может иметь несколько транспортных адресов.
SCTP работает путем установления связей между оконечными пунктами SCTP. Такую связь называют ассоциацией или, менее точно, но более привычно, - соединением, причем оно определяется участвующими в нем оконечными пунктами SCTP и текущим состоянием протокола. Т.о., SCTP-соединение (SCTPassociation) - это протокольная связь между двумя SCTP-портами, содержащая протокольную информацию о состоянии, включая тэги верификации и активный
в данный момент набор порядковых номеров передачи TSN. Два SCTP-порта в любой момент времени не должны иметь между собой более одного SCTP-соединения. Прежде чем приложения двух оконечных пунктов смогут обмениваться информацией, необходимо установить соединение. Когда коммуникация закончена, соединение можно прекратить. Заметим, что протоколы верхнего уровня ISUP, SCCP, TCAP и др. не осведомлены о таких соединениях, более того, они не обнаруживают того факта, что сигнальные сообщения переносятся не стандартной MTP, а чем-то иным.
Спутник |
Соединение SCTP |
<>/Оконечный пункт |
Множественная адресация позволяет устанавливать соединение между двумя оконечными пунктами через несколько адресов IP и/или сетевых интерфейсов. Пример множественной адресации SCTP показан на рис. 7.3, где оба оконечных пункта A и B имеют два интерфейса для SCTP-соединений. Эти оконечные пункты имеют каналы двух типов: спутниковый в верхней части рисунка и ATM в нижней части. Один из адресов определен как основной, а другой может использоваться в качестве резервного при отказе основного адреса или в случае, если приложение верхнего уровня требует использовать исключительно резервный адрес.
О
Оконечны! пункт |
Рис. 7.3. Соединение SCTP для оконечных пунктов с множественной адресацией |
Встроенная поддержка протоколом SCTP оконечных пунктов с множественной адресацией особенно полезна в среде, которая требует высокой доступности приложений, как в случае транспор
тировки сигналов ОКС7. Соединение SCTP с множественной адресацией может также ускорять восстановление после отказов канала без прерывания текущей пересылки данных.
7.3.3. Соединения для нескольких потоков
Когда устанавливается соединение между оконечными пунктами, нужно учитывать количество потоков, которые это соединение должно поддерживать. Д. Коллинз в [39] приводит наглядную аналогию: если представить себе соединение как одностороннюю автомобильную магистраль между оконечными пунктами, то отдельные потоки, которые оно поддерживает, будут аналогичны отдельным полосам движения на этой магистрали.
|
|
Возвращаясь от этой наглядной аналогии к практическому применению принципа, приведем рис. 7.4, иллюстрирующий возможность мультиплексировать данные приложения верхнего уровня в одном SCTP-соединении [106].
Рис. 7.4. SCTP-соединение для четырех потоков данных одного приложения |
В каждом потоке производится упорядочение данных. Если фрагмент пакета, принадлежащего некоторому потоку потерян, то фрагменты этого пакета, следующие за потерянным, будут сохраняться в буфере приемника потока, пока потерянный фрагмент не будет передан источником повторно. Однако фрагменты пакетов из других потоков могут по-прежнему проходить в приложение верхнего уровня. Этим исключается блокировка head-of-line, которая имеет место в TCP, где данные из всех приложений верхнего уровня пересылаются в одном потоке. Иначе говоря, эффект блокировки head-of-line ограничен пределами отдельных потоков, но не проявляется для соединения в целом. Проще говоря, каждый поток обрабатывается отдельно, так что доставка сообщений одного потока не задерживается из-за ожидания следующего по порядку сообщения другого потока.
В заключение этого раздела напомним, что для передачи сообщения пользователя (user message), получаемого от протокола верхнего уровня ULP, SCTP передает в IP так называемый пакет SCTP, а тот маршрутизирует его к месту назначения. Пакет SCTP состоит из общего заголовка и нескольких фрагментов (chunks), как показано на рис. 7.5.
7.3.4. Фрагменты
Фрагмент (chunk - небольшой кусок) - это часть информации внутри SCTP-пакета, состоящая из заголовка и содержимого, зависящего от приложения. Общий заголовок SCTP-пакета на рис.7.5 включает в себя номера портов источника и пункта назначения, которые в сочетании с IP-адресами источника и пункта назначения однозначно определяют оконечные пункты. Далее в состав заголовка входит тэг верификации, который используется для подтверждения данных об отправителе пакета. Тэг верификации еще будет описан в этой главе подробнее.
|
|
Общий заголовок содержит также контрольную сумму Adler-32, которая образуется особым подсчетом значений всех октетов пакета. Эта контрольная сумма служит для того, чтобы гарантировать отсутствие повреждений в полученном пакете, и обеспечивает еще один уровень защиты в дополнение к контрольной сумме заголовка IP.
За общим заголовком следуют несколько фрагментов. Каждый фрагмент содержит свой заголовок плюс некоторое содержимое. Это содержимое может быть либо управляющей информацией SCTP, либо информацией пользователя SCTP. В случае пользовательской информации SCTP из ULP значение идентификатора ID фрагмента равно 0, обозначая данные полезной нагрузки пользователя. В ином случае идентификатор фрагмента будет иметь значение, указывающее тип управляющей информации SCTP. Возможные значения флагов и длины зависят от идентификатора фрагмента.
zz |
zzz |
Номер порта адресата |
Номер порта источника
Тэг верикации
Контрольная сумма Adler-32
ID фрагмента |
Длина фрагмента
Фрагмент 1
Значение фрагмента
Флаги фрагмента |
ID фрагмента |
Длина фрагмента
Фрагмент 2
Значение фрагмента
• •
Флаги фрагмента |
ID фрагмента |
Длина фрагмента
Фрагмент 3
Значение фрагмента
Рис. 7.5. Формат пакета SCTP
Хотя всего может быть до 256 разных идентификаторов фрагмента, существуют четыре основные их категории: идентификаторы переноса данных пользователя SCTP, идентификаторы переноса управляющей информации SCTP, идентификаторы, которые резервированы IETF и идентификаторы переноса расширений, определенных IETF Типы фрагментов описываются в табл. 7.1.
Глава 7 | |
Таблица 7.1. Фрагменты пакетов протокола SCTP | |
Имя фрагмента | Описание применения |
DATA (0) | Фрагменты с данными, передаваемыми портами терминалов после того, как между ними установлено SCTP-соединение. Чтобы обеспечить раннюю передачу данных, фрагменты DATA могут объединяться в группы с управляющими фрагментами COOKIE-ECHO и COOKIE-ACK, пока управляющие фрагменты идут в сообщении первыми. Сообщения могут сегментироваться, чтобы не превышался заданный максимальный размер передаваемого блока информации MTU. Если это имеет место, то флаг фрагмента указывает начало и конец сегмента исходного сообщения. Фрагменты DATA могут доставляться в порядке их приема (и тогда они могут быть неупорядоченными), или же перед доставкой сообщения к протоколу верхнего уровня может производиться полная сборка исходного сообщения. Тип обслуживания, запрашиваемый потоком, указывается флагом фрагмента |
INIT (1) | Это первый фрагмент, который инициирует установление SCTP-со- единения между двумя терминалами. Он переносит такие параметры, как транспортный адрес соединения (может быть более одного адреса и может быть адрес протокола IPv4, IPv6 или их сочетание), количество входящих потоков, которое может поддерживать отправитель, и количество исходящих потоков, которое желает поддерживать отправитель в данном SCTP-соединении. Здесь же удаленному порту сообщается о резервировании ресурсов отправителем (размер входного буфера в байтах) |
INIT ACK (2) | Подтверждает прием фрагмента INIT и содержит переменную состояния cookie. Может также идентифицировать неопознанные параметры в сообщении INIT и, подобно INIT, задает количество выходных и входных потоков для SCTP-соединения с портом терминала, а также транспортные адреса, которые могут использоваться в этом соединении |
SACK (3) | Подтверждает получение фрагментов DATA или информирует о том, что в последовательности принятых фрагментов DATA имеется разрыв |
HEARTBEAT REQUEST (4) | Передается периодически для подтверждения доступности порта получателя |
HEARTBEAT ACK (5) | Подтверждает запрос HEARTBEAT ACK. Должен передаваться на исходный IP-адрес отправителя фрагмента HEARTBEAT REQUEST |
ABORT (6) | Немедленно закрывает SCTP-соединение и может содержать параметры, которые указывают причину |
SHUTDOWN (7) | Передается, чтобы инициировать постепенное закрытие SCTP-соединения |
SHUTDOWN ACK (8) | Получатель сообщения SHUTDOWN передает это сообщение как подтверждение |
ERROR (9) | Указывает разные неисправности на порте. Ошибки могут быть внутренними или ошибками протокола, такими как некорректные параметры при управлении фрагментами DATA |
COOKIE ECHO (10) | Используется только в фазе установления SCTP-соединения и завершает процесс установления соединения у отправителя данных. Может объединяться в группу с фрагментом DATA, но должен быть первым фрагментом в такой связке |
COOKIE-ACK (11) | Подтверждает получение COOKIE-ECHO в фазе установления SCTP-соединения. Может объединяться в группу с фрагментом DATA, но должен быть первым фрагментом в такой связке |
ECNE (12) и CWR (13) | Уведомление о явной перегрузке и уменьшенное окно перегрузки, резервированы для будущего использования |
SHUTDOWN COMPLETE (14) | Подтверждает получение SHUTDOWN ACK |
Значения ID фрагментов кодируются двумя старшими битами, определяющими действие, которое нужно выполнить в случае, если обрабатывающий оконечный пункт не узнает тип фрагмента. Возможные значения этих битов и их смысл:
• 00 - остановить обработку этого пакета SCTP и отбросить его; остальные фрагменты в этом пакете не обрабатывать;
• 01 - остановить обработку этого пакета SCTP и отбросить его; остальные фрагменты в этом пакете не обрабатывать. Отправить сообщение о неопознанном параметре Unrecognized Parameter Type (в фрагменте ERROR или INIT ACK);
• 10 - пропустить этот фрагмент и продолжить обработку;
• 11 - пропустить этот фрагмент и продолжить обработку, но отправить сообщение в фрагменте ERROR с использованием Unrecognized Parameter Type в качестве причины ошибки. Фрагмент INIT используется для инициирования соединения
SCTP между двумя оконечными пунктами. В отличие от многих других, фрагмент INIT не должен делить пакет SCTP с другими фрагментами. Иначе говоря, пакет SCTP, содержащий фрагмент INIT, не должен содержать никаких других фрагментов.
Фрагмент INIT ACK используется для подтверждения инициирования соединения SCTP. Как и фрагмент INIT, фрагмент INIT ACK не должен делить пакет SCTP с другими фрагментами.
Фрагмент SACK служит для подтверждения приема фрагментов DATA (полезной нагрузки) и уведомления отправителя о пропусках в последовательности принятых фрагментов. Не каждый принятый фрагмент заслуживает передачи в ответе фрагмента SACK. Фрагмент SACK работает как указатель места пропуска. Предположим, что приемник получил фрагменты с 1 по 5, а также фрагменты 8 и 9, Сообщение SACK информирует об отсутствии фрагментов 6 и 7. Нужно повторно передать только эти фрагменты. Такой метод эффективнее механизма повторной передачи в TCP.
Фрагмент HEARTBEAT используется для проверки досягаемости определенного оконечного пункта. Предположим, что в течение некоторого отрезка времени никакие фрагменты передавать из оконечного пункта A в оконечный пункт B не нужно. В этом случае оконечный пункт A будет периодически передавать в оконечный пункт B сообщения HEARTBEAT, чтобы убедиться в работоспособности оконечного пункта B. Фрагмент HEARTBEAT содержит специальную информацию отправителя. Получатель фрагмента HEARTBEAT должен ответить фрагментом HEARTBEAT ACK, который содержит информацию, скопированную из принятого фрагмента HEARTBEAT.
Фрагмент ABORT передается оконечным пунктом, чтобы резко прекратить соединение. Этот фрагмент может содержать информацию о причине прекращения соединения и может быть передан в одном пакете с другими управляющими фрагментами SCTP. Однако в таких случаях он должен быть последним фрагментом в пакете. Если он передается не последним в пакете, то следующие за ним фрагменты игнорируются. Фрагменты DATA не должны входить в состав пакета, содержащего фрагмент ABORT.
Фрагмент SHUTDOWN используется для плавного прекращения соединения. Если приложение верхнего уровня или управляющее приложение хочет закрыть соединение, то оконечный пункт прекращает передачу новых данных на дальний конец. Он будет ждать, пока не получит подтверждения всех переданных данных, а затем передаст на дальний конец фрагмент SHUTDOWN, чтобы закрыть соединение. SHUTDOWN будет указывать последний фрагмент DATA, принятый от дальнего конца. Если это необходимо, оконечный пункт может повторно передать данные пользователя на дальний конец и только потом передать фрагмент SHUTDOWN.
После приема фрагмента SHUTDOWN оконечный пункт может убедиться, что все данные пользователя, которые он передал, подтверждены, и, если необходимо, повторно передать данные на дальний конец. Если действительно все, что оконечный пункт передавал прежде, получено, он должен передать фрагмент SHUTDOWN ACK.
После получения SHUTDOWN ACK отправитель SHUTDOWN должен ответить фрагментом SHUTDOWN COMPLETE и может стереть все сведения о соединении. Когда дальний конец принимает фрагмент SHUTDOWN COMPLETE, он тоже может стереть все сведения о соединении. В этот момент соединение разрушено.
Фрагмент ERROR передается для уведомления об обнаруженных оконечным пунктом ошибочных ситуациях. В состав фрагмента обычно входит извещение о причине ошибки, чтобы обеспечить возможность дальнейшей ее обработки. Например, оконечный пункт мог получить фрагмент несуществующего потока или фрагмент, в котором отсутствуют некоторые обязательные параметры. Получение фрагмента ERROR само по себе не указывает на непоправимое состояние. Переданный фрагмент ERROR просто может дать возможность приемнику исправить ошибочное состояние. Если ясно, что ошибочное состояние непоправимо, фрагмент ERROR может быть передан в той же дейтаграмме, что и фрагмент ABORT.
Фрагмент COOKIE ECHO используется только во время инициирования соединения. Когда оконечный пункт получает фрагмент INIT и отвечает фрагментом INIT ACK, он включает в состав INIT ACK параметр cookie. Этот параметр содержит особую для оконечного пункта и для его представления соединению информацию, временную метку, и значение времени жизни параметра cookie (рекомендуется 5 секунд). Когда на дальний конец приходит INIT ACK, копия
cookie вводится в фрагмент COOKIE ECHO, который передается в обратном направлении. COOKIE ECHO может передаваться в пакете, который содержит также фрагменты DATA. Однако в таком случае фрагмент COOKIE ECHO должен быть первым фрагментом в пакете.
Фрагмент COOKIE ACK передается в ответ на фрагмент COOKIE ECHO. Поэтому COOKIE ACK используется только во время установления соединения. Поскольку содержимое фрагмента COOKIE ACK такое же, какое было передано в INIT ACK, отправитель INIT ACK может убедиться, что инициатор соединения принял информацию cookie правильно. Если фрагмент COOKIE ECHO был принят без ошибок и в течение указанного для cookie времени жизни, приемник COOKIE ECHO передает фрагмент COOKIE ACK. В противном случае передается фрагмент ERROR. Фрагмент COOKIE ACK может передаваться в той же дейтаграмме, что и фрагменты DATA, но должен быть первым фрагментом в этой дейтаграмме.
7.3.5. Фрагмент полезной нагрузки DATA
Фрагмент DATA используется для переноса к и от UPL информации пользователя. Он имеет формат, показанный на рис. 7.6.
U |
B |
E |
/ |
Длина
TSN
/
Идентификатор потока S |
/ |
Порядковый номер в потоке n
ID фрагмента |
/ |
Длина фрагмента
/ / / |
Идентификатор протокола полезной нагрузки
Данные пользователя (порядковый номер в потоке S)
Рис. 7.6. Формат фрагмента DATA
Есть вероятность того, что протоколу SCTP придется разделить сообщение на сегменты. Такое может произойти, если MTU тракта меньше размера сообщения, которое необходимо передать. Из-за возможной сегментации в формат фрагмента введены биты Начало (B) и Конец (E). Бит B указывает, что фрагмент содержит часть
12. Б.С. Гольдштейн
первого сегмента сообщения пользователя, а бит E - что фрагмент содержит часть последнего сегмента сообщения. Если сообщение полностью умещается в один фрагмент, оба бита, B и E, имеют значение 0. Если сообщение содержит более 2 сегментов, первый фрагмент первого сегмента должен иметь бит B, равный 1, а бит E - равный 0, в то время как последний фрагмент последнего сегмента должен иметь бит B, равный 0, а бит E равный - 1. Фрагменты всех сегментов в промежутке между первым и последним должны иметь оба бита, E и B, равными 1.
Бит U указывает, что фрагмент принадлежит неупорядоченному потоку данных. Другими словами, порядок сообщений пользователя в потоке не играет роли, и порядковый номер в потоке следует игнорировать. В таком случае SCTP пропускает данные в верхний уровень без анализа порядка поступления сообщений. Однако SCTP все-таки должен гарантировать, что сегментированные сообщения прошли восстановительную сборку до отправки данных в верхний уровень.
Порядковый номер передачи (TSN) представляет собой 32-битовое целое число, которое идентифицирует фрагмент в контексте соединения. Этот номер не зависит от порядкового номера фрагмента в потоке и назначается SCTP, а не каким-нибудь пользователем SCTP. Когда оконечный пункт передает фрагмент INIT, в его состав входит TSN, соответствующий первому фрагменту DATA, который этот пункт планирует передать. Таким образом, первый передаваемый фрагмент DATA всегда содержит тот же TSN, что и фрагмент INIT. После этого TSN увеличивается для каждого нового фрагмента DATA, передаваемого оконечным пунктом в этом соединении.
Идентификатор потока (S) является 16-битовым целым числом, определяющим поток, которому принадлежат данные. Порядковый номер в потоке (n) - это 16-битовое целое число, указывающее положение сообщения внутри потока. Порядковые номера сообщений в каждом потоке начинаются с 0. Номер увеличивается для каждого передаваемого в этом потоке сообщения. Заметим, что сегментированное сообщение должно иметь в каждом сегменте один и тот же порядковый номер в потоке.
Идентификатор протокола полезной нагрузки передается от пользователя-отправителя к SCTP на передающем конце и пропускается от SCTP к пользователю-адресату на приемном конце. Он доступен пользователям для пропуска дальнейшей информации о фрагменте, но SCTP не проверяет этот идентификатор и не воздействует на него.
7.3.6. Установление соединения
Установление соединения обычно инициирует протокол верхнего уровня, который приказывает SCTP установить соединение. Соединение может быть установлено заблаговременно перед передачей какого-либо трафика данных. Например, если сетевой администратор организует пучок соединительных линий ISUP в Softswitch, и Softswitch использует M3UA, действия, связанные с определением пучка соединительных линий, могут заставить M3UA запросить в SCTP установление соединения. Подобным же образом, соединение может быть установлено, когда в обслуживание вводится новое звено ОКС7 в SG, или когда вводится в обслуживание новый диапазон CIC. Этот процесс изображен на рис. 7.7.
Рис. 7.7. Сценарий установления и разрушения SCTP-соединения |
Он начинается передачей на транспортный адрес удаленного порта пакета SCTP, содержащего фрагмент INIT, инициируя тем самым установление SCTP-соединения. Отправитель запускает таймер и переходит в состояние cookie-wait (ожидание cookie).
Помимо обязательных параметров фрагмент INIT может содержать также ряд дополнительных параметров и/или параметров с варьируемой длиной. Например, фрагмент INIT может содержать один или несколько адресов IPv4 и IPv6, или имя разрешенного хоста.
Удаленный порт, который принимает INIT, генерирует фрагмент INIT-ACK и передает его на IP-адрес отправителя INIT. INIT-ACK содержит данные о cookie-состояниях, и как только он принимается, отправитель INIT останавливает таймер и передает фрагмент COOKIE-ECHO. Запускается новый таймер, а отправитель переходит в состояние cookie-wait. Фрагмент INIT ACK тоже может содержать ряд адресов IPv4 и IPv6. Принимая во внимание то, что фрагмент INIT ACK тоже содержит некоторое количество входящих и исходящих потоков, оба конца соединения знают максимальное количество потоков, которые может передавать и принимать другая сторона. Каждый оконечный пункт должен соблюдать требования другого и не должен передавать больше, чем другой оконечный пункт может обработать. После приема фрагмента INIT ACK инициатор соединения передает фрагмент COOKIE ECHO, содержимое которого скопировано из параметра cookie принятого фрагмента INIT ACK. Когда на дальний конец соединения приходит COOKIE-WAIT и от него поступает фрагмент COOKIE-ACK, оба порта переходят в состояние соединение установлено (established).
Надежная пересылка данных пользователя достигается путем использования двух фрагментов. Первый - это фрагмент DATA, который был описан в п. 7.3.5, а второй - фрагмент SACK. Прием фрагментов DATA подтверждается фрагментами SACK, которые указывают также на пропуски в последовательности передачи данных потока. Периодически происходит обмен фрагментами HEARTBEAT для поддержания соединения между портами на действующих маршрутах между транспортными адресами. Пара сообщений HEARTBEAT/HEARTBEAT-ACK полезна и для определения времени двойного пробега (задержки подтверждения приема) RTT между портами, которое, в свою очередь, используется для вычисления размеров окон для передачи. Многочисленные неудачные попытки передать на порт фрагмент определенного типа (или неоднократные срабатывания таймера при ожидании SACK в ответ на DATA) могут означать, что текущий транспортный адрес недоступен.
SCTP-соединения могут разрушаться немедленно (с помощью сообщения ABORT) или постепенно (с помощью сигнальной процедуры SHUTDOWN/SHUTDOWN-ACK/SHUTDOWN COMPLETE), как показано в представленном сценарии. Заметим, что, в отличие от протокола TCP, протокол SCTP не поддерживает «полуоткрытое» состояние, при котором одна сторона может продолжать передачу данных, в то время как другая сторона уже закрыта.