Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Goldshteyn_A_B__Goldshteyn_B_S_Softswitch_20.docx
Скачиваний:
4
Добавлен:
01.05.2025
Размер:
156.8 Кб
Скачать

Рис. 7.3. Соединение SСТР для оконечных пунктов

С множественной адресацией

Встроенная поддержка протоколом SСТР оконечных пунктов с множественной адресацией особенно полезна в среде, которая требует высокой доступности приложений, как в случае транспор-

тировки сигналов ОКС7. Соединение SСТР с множественной адре­сацией может также ускорять восстановление после отказов канала без прерывания текущей пересылки данных.

  1. Соединения для нескольких потоков

Когда устанавливается соединение между оконечными пунктами, нужно учитывать количество потоков, которые это соединение должно поддерживать. Д. Коллинз в [39] приводит наглядную анало­гию: если представить себе соединение как одностороннюю авто­мобильную магистраль между оконечными пунктами, то отдельные потоки, которые оно поддерживает, будут аналогичны отдельным полосам движения на этой магистрали.

Возвращаясь от этой наглядной аналогии к практическому при­менению принципа, приведем рис. 7.4, иллюстрирующий возмож­ность мультиплексировать данные приложения верхнего уровня в одном SСТР-соединении [106].

Рис. 7.4.

SСТР-соединение для четырех потоков данных одного приложения

В каждом потоке производится упорядочение данных. Если фрагмент пакета, принадлежащего некоторому потоку потерян, то фрагменты этого пакета, следующие за потерянным, будут сохра­няться в буфере приемника потока, пока потерянный фрагмент не будет передан источником повторно. Однако фрагменты пакетов из других потоков могут по-прежнему проходить в приложение верх­него уровня. Этим исключается блокировка head-of-line, которая имеет место в TCP, где данные из всех приложений верхнего уровня пересылаются в одном потоке. Иначе говоря, эффект блокировки head-of-line ограничен пределами отдельных потоков, но не прояв­ляется для соединения в целом. Проще говоря, каждый поток обра­батывается отдельно, так что доставка сообщений одного потока не задерживается из-за ожидания следующего по порядку сообщения другого потока.

В заключение этого раздела напомним, что для передачи со­общения пользователя (user message), получаемого от протокола верхнего уровня ULP, SCTP передает в IP так называемый пакет SCTP, а тот маршрутизирует его к месту назначения. Пакет SCTP состоит из общего заголовка и нескольких фрагментов (chunks), как показано на рис. 7.5.

  1. Фрагменты

Фрагмент (chunk - небольшой кусок) - это часть информации внутри SCTP-пакета, состоящая из заголовка и содержимого, за­висящего от приложения. Общий заголовок SCTP-пакета на рис.7.5 включает в себя номера портов источника и пункта назначения, ко­торые в сочетании с IP-адресами источника и пункта назначения од­нозначно определяют оконечные пункты. Далее в состав заголовка входит тэг верификации, который используется для подтверждения данных об отправителе пакета. Тэг верификации еще будет описан в этой главе подробнее.

Общий заголовок содержит также контрольную сумму Adler-32, которая образуется особым подсчетом значений всех октетов пакета. Эта контрольная сумма служит для того, чтобы гарантировать отсутс­твие повреждений в полученном пакете, и обеспечивает еще один уровень защиты в дополнение к контрольной сумме заголовка IP.

За общим заголовком следуют несколько фрагментов. Каждый фрагмент содержит свой заголовок плюс некоторое содержимое. Это содержимое может быть либо управляющей информацией SCTP, либо информацией пользователя SCTP В случае пользова­тельской информации SCTP из ULP значение идентификатора ID фрагмента равно 0, обозначая данные полезной нагрузки пользова­теля. В ином случае идентификатор фрагмента будет иметь значе­ние, указывающее тип управляющей информации SCTP. Возможные значения флагов и длины зависят от идентификатора фрагмента.

Рис. 7.5. Формат пакета SCTP

Хотя всего может быть до 256 разных идентификаторов фраг­мента, существуют четыре основные их категории: идентификато­ры переноса данных пользователя SCTP, идентификаторы переноса управляющей информации SCTP, идентификаторы, которые резер­вированы IETF, и идентификаторы переноса расширений, опреде­ленных IETF. Типы фрагментов описываются в табл. 7.1.

Таблица 7.1. Фрагменты пакетов протокола SCTP

Имя фрагмента

Описание применения

DATA (0)

Фрагменты с данными, передаваемыми портами терминалов после того, как между ними установлено SCTP-соединение. Чтобы обеспечить раннюю передачу данных, фрагменты DATA могут объ­единяться в группы с управляющими фрагментами COOKIE-ECHO и COOKIE-ACK, пока управляющие фрагменты идут в сообщении первыми.

Сообщения могут сегментироваться, чтобы не превышался за­данный максимальный размер передаваемого блока информации MTU. Если это имеет место, то флаг фрагмента указывает начало и конец сегмента исходного сообщения.

Фрагменты DATA могут доставляться в порядке их приема (и тогда они могут быть неупорядоченными), или же перед доставкой сооб­щения к протоколу верхнего уровня может производиться полная сборка исходного сообщения Тип обслуживания, запрашиваемый потоком, указывается флагом фрагмента

INIT (1)

Это первый фрагмент, который инициирует установление SCTP-co- единения между двумя терминалами. Он переносит такие парамет­ры, как транспортный адрес соединения (может быть более одного адреса и может быть адрес протокола IPv4, IPv6 или их сочетание), количество входящих потоков, которое может поддерживать отправитель, и количество исходящих потоков, которое желает поддерживать отправитель в данном SCTP-соединении. Здесь же удаленному порту сообщается о резервировании ресурсов отпра­вителем (размер входного буфера в байтах)

INIT АСК (2)

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

SACK (3)

Подтверждает получение фрагментов DATA или информирует о том, что в последовательности принятых фрагментов DATA имеет­ся разрыв

HEARTBEAT REQUEST (4)

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

HEARTBEAT АСК (5)

Подтверждает запрос HEARTBEAT АСК. Должен передаваться на исходный 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 АСК

Значения ID фрагментов кодируются двумя старшими битами, определяющими действие, которое нужно выполнить в случае, если обрабатывающий оконечный пункт не узнает тип фрагмента. Возможные значения этих битов и их смысл:

  • 00 - остановить обработку этого пакета SCTP и отбросить его; остальные фрагменты в этом пакете не обрабатывать;

  • 01 - остановить обработку этого пакета SCTP и отбросить его; остальные фрагменты в этом пакете не обрабатывать. Отправить сообщение о неопознанном параметре Unrecognized Parameter Туре (в фрагменте ERROR или INIT АСК);

  • 10 - пропустить этот фрагмент и продолжить обработку;

  • 11 - пропустить этот фрагмент и продолжить обработку, но отправить сообщение в фрагменте ERROR с использованием Unrecognized Parameter Туре в качестве причины ошибки.

Фрагмент INIT используется для инициирования соединения SCTP между двумя оконечными пунктами. В отличие от многих дру­гих, фрагмент INIT не должен делить пакет SCTP с другими фраг­ментами. Иначе говоря, пакет SCTP, содержащий фрагмент INIT, не должен содержать никаких других фрагментов.

Фрагмент INIT АСК используется для подтверждения иницииро­вания соединения SCTP. Как и фрагмент INIT, фрагмент INIT АСК не должен делить пакет SCTP с другими фрагментами.

Фрагмент SACK служит для подтверждения приема фрагментов DATA (полезной нагрузки) и уведомления отправителя о пропусках в последовательности принятых фрагментов. Не каждый принятый фрагмент заслуживает передачи в ответе фрагмента SACK. Фраг­мент SACK работает как указатель места пропуска. Предположим, что приемник получил фрагменты с 1 по 5, а также фрагменты 8 и 9, Сообщение SACK информирует об отсутствии фрагментов 6 и 7. Нужно повторно передать только эти фрагменты. Такой метод эф­фективнее механизма повторной передачи в TCP.

Фрагмент HEARTBEAT используется для проверки досягаемости определенного оконечного пункта. Предположим, что в течение не­которого отрезка времени никакие фрагменты передавать из око­нечного пункта А в оконечный пункт В не нужно. В этом случае око­нечный пункт А будет периодически передавать в оконечный пункт В сообщения HEARTBEAT, чтобы убедиться в работоспособности оконечного пункта В. Фрагмент HEARTBEAT содержит специаль­ную информацию отправителя. Получатель фрагмента HEARTBEAT должен ответить фрагментом HEARTBEAT АСК, который содержит информацию, скопированную из принятого фрагмента HEARTBEAT.

Фрагмент ABORT передается оконечным пунктом, чтобы резко прекратить соединение. Этот фрагмент может содержать инфор­мацию о причине прекращения соединения и может быть передан в одном пакете с другими управляющими фрагментами SCTP. Однако в таких случаях он должен быть последним фрагментом в пакете. Если он передается не последним в пакете, то следующие за ним фрагменты игнорируются. Фрагменты DATA не должны входить в состав пакета, содержащего фрагмент ABORT.

Фрагмент SHUTDOWN используется для плавного прекращения соединения. Если приложение верхнего уровня или управляющее приложение хочет закрыть соединение, то оконечный пункт пре­кращает передачу новых данных на дальний конец. Он будет ждать, пока не получит подтверждения всех переданных данных, а затем передаст на дальний конец фрагмент SHUTDOWN, чтобы закрыть соединение. SHUTDOWN будет указывать последний фрагмент DATA, принятый от дальнего конца. Если это необходимо, оконеч­ный пункт может повторно передать данные пользователя на даль­ний конец и только потом передать фрагмент SHUTDOWN.

После приема фрагмента SHUTDOWN оконечный пункт может убедиться, что все данные пользователя, которые он передал, под­тверждены, и, если необходимо, повторно передать данные на даль­ний конец. Если действительно все, что оконечный пункт передавал прежде, получено, он должен передать фрагмент SHUTDOWN АСК.

После получения SHUTDOWN АСК отправитель SHUTDOWN дол­жен ответить фрагментом SHUTDOWN COMPLETE и может стереть все сведения о соединении. Когда дальний конец принимает фраг­мент SHUTDOWN COMPLETE, он тоже может стереть все сведения о соединении. В этот момент соединение разрушено.

Фрагмент ERROR передается для уведомления об обнаружен­ных оконечным пунктом ошибочных ситуациях. В состав фрагмента обычно входит извещение о причине ошибки, чтобы обеспечить воз­можность дальнейшей ее обработки. Например, оконечный пункт мог получить фрагмент несуществующего потока или фрагмент, в котором отсутствуют некоторые обязательные параметры. Получе­ние фрагмента ERROR само по себе не указывает на непоправимое состояние. Переданный фрагмент ERROR просто может дать воз­можность приемнику исправить ошибочное состояние. Если ясно, что ошибочное состояние непоправимо, фрагмент ERROR может быть передан в той же дейтаграмме, что и фрагмент ABORT.

Фрагмент COOKIE ECHO используется только во время иници­ирования соединения. Когда оконечный пункт получает фрагмент INIT и отвечает фрагментом INIT АСК, он включает в состав INIT АСК параметр cookie. Этот параметр содержит особую для оконечного пункта и для его представления соединению информацию, времен­ную метку, и значение времени жизни параметра cookie (рекомен­дуется 5 секунд). Когда на дальний конец приходит INIT АСК, копия

cookie вводится в фрагмент COOKIE ECHO, который передается в обратном направлении. COOKIE ECHO может передаваться в па­кете, который содержит также фрагменты DATA. Однако в таком случае фрагмент COOKIE ECHO должен быть первым фрагментом в пакете.

Фрагмент COOKIE АСК передается в ответ на фрагмент COOKIE ECHO. Поэтому COOKIE АСК используется только во время установ­ления соединения. Поскольку содержимое фрагмента COOKIE АСК такое же, какое было передано в INIT АСК, отправитель INIT АСК может убедиться, что инициатор соединения принял информацию cookie правильно. Если фрагмент COOKIE ECHO был принят без ошибок и в течение указанного для cookie времени жизни, прием­ник COOKIE ECHO передает фрагмент COOKIE АСК. В противном случае передается фрагмент ERROR. Фрагмент COOKIE АСК может передаваться в той же дейтаграмме, что и фрагменты DATA, но дол­жен быть первым фрагментом в этой дейтаграмме.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]