Транспортный протокол c управлением потоками

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 не поддерживает «полуоткрытое» состояние, при котором одна сторона может продолжать передачу данных, в то время как другая сторона уже закрыта.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: