[[PageOutline(2-5,Содержание:)]] [[span(style=color: #FF0000, Статья находится в стадии создания! Представленная информация может быть неполной и/или неточной.)]] = Подсистема SS7 = == Структура == Плата VE-01 (VE-02) содержит до четырех независимых инстанций SS7 SSP (Service Switching Point). Подсистема SS7 плат VE-01/VE-02 испльзует два типа канальных окончаний - сигнальные линки (SS7lnk) и разговорные каналы (SS7). Каждое из этих канальных окончаний "привязано" к одной из инстанций SSP. {{{#!plantuml @startuml cloud "Каналы сигнализации" as NET1 cloud "Каналы сигнализации" as NET2 cloud "Речевые каналы" as CC1 cloud "Речевые каналы" as CC2 package "VE-01 (VE-02)" { package "SSP3" { agent "..." } package "SSP2" { agent "..." as u2 } package "SSP0" { agent SS7lnk as L1 agent SS7lnk as L2 agent SS7 as C1 agent SS7 as C2 agent SS7 as C3 agent SS7 as C4 } package "SSP1" { agent SS7lnk as L3 agent SS7lnk as L4 agent SS7 as C5 agent SS7 as C6 agent SS7 as C7 agent SS7 as C8 } } L1 <---> NET1 L2 <---> NET1 L3 <---> NET2 L4 <---> NET2 C1 <-[#blue]--> CC1 C2 <-[#blue]--> CC1 C3 <-[#blue]--> CC1 C4 <-[#blue]--> CC1 C5 <-[#blue]--> CC2 C6 <-[#blue]--> CC2 C7 <-[#blue]--> CC2 C8 <-[#blue]--> CC2 @enduml }}} Канальные окончания SS7lnk представляют собой сигнальные линки MTP2 и выполняют функции передачи сигнальных и управляющих сообщений. Канальные окончания SS7 представляют собой разговорные каналы для передачи речевой информации. Шлюз платы VE-01 (VE-02) обеспечивает преобразование сигнализации SS7 ISUP на стороне TDM в сигнализацию SIP на стороне IP и обратно, преобразование данных речевых каналов TDM и потоки RTP и обратно. Пример сети с полно-ассоциированными линками (непосредственное подключение сигнальных каналов к удаленной станции): {{{#!plantuml @startuml package SSP0 { agent SS7lnk as L1 agent SS7lnk as L2 collections SS7 } node АТС L1 <---> АТС L2 <---> АТС SS7 <=[#blue]==> АТС @enduml }}} Пример сети с квази-ассоциированными линками (сигнальные каналы подключены серез STP). {{{#!plantuml @startuml package SSP0 { agent SS7lnk as L1 agent SS7lnk as L2 collections SS7 } node АТС node STP1 node STP2 L1 <---> STP1 L2 <---> STP2 STP1 <-> STP2 STP1 <--> АТС STP2 <--> АТС SS7 <=[#blue]=> АТС @enduml }}} == Описание работы == === Установка соединения с сигнальной сетью === Соединение с сигнальной сетью (сигнальные линки) выполняется канальными окончаниями SS7lnk. Исходное состояние канального окончания - состояние `Down`. При успешной установке соединения MTP2 по сигнальному каналу с удаленным SP канальное окончание переходит в состояние `Up`. После этого SP обмениваются сообщениями STD_TEST и TRA. === Прием вызова со стороны сети IP === Прием телефонных вызовов со стороны сети IP выполняют канальные окончания SS7. Прием вызовов выполняется только на втором проходе поиска. Если канальное окончание SS7 свободно (то есть находится в состоянии `Idle`), и SSP, к которому привязано канальное окончание, успешно подключился к сигнальной сети (находится в состоянии Up), канальное окончание SS7 выполняет проверку на совпадение вызванного номера (имени пользователя) с регулярным выражением, установленным конфигурационным параметром "Рег. выражение вызова". Если обнаружено совпадение, проверяется наличие общего поддерживаемого аудиокодека для медиапотока RTP. Если общий поддерживаемый аудиокодек найден, канальное окончание SS7 обслуживает данный вызов (формирует и отправляет в сеть TDM сообщение IAM). ==== Базовый сценарий вызова ==== Базовый сценарий вызова со стороны IP приведен на следующий диаграмме: {{{#!PlantUml @startuml title Базовый сценарий вызова со стороны сети IP skinparam ParticipantPadding 80 skinparam sequenceMessageAlign center participant "Абонент А (IP)" as A participant "окончание SS7" as B participant "Абонент Б (TDM)" as C A -> B: INVITE B -> A: 100 Trying B -> C: IAM C -> B: ACM (вызываемый свободен) note right: вызываемый абонент слышит звонок B -> A: 180 Ringing ... note over C: абонент ответил на вызов C -> B: ANM B -> A: 200 OK A <-[#0000ff]-> B: //медиапоток// A -> B: ACK note over A, C: абоненты А и Б ведут разговор @enduml }}} При получении сообщения INVITE канальное окончание SS7 формирует и отправляет в сеть TDM сообщение IAM и переходит в состояние `Proceeding`. Удаленная станция (Абонент Б), получив сообщение IAM, передает вызываемому абоненту сигнал вызова и отвечает сообщением ACM, в поле индикатора статуса которого содержится значение "Абонент свободен" (1). При получении сообщения ACM канальное окончание SS7 передает в сторону сети IP ответ "180 Ringing". После ответа вызываемого абонента канальное окончание SS7 получает сообщение ANM. После этого окончание SS7 передает в сеть IP ответ "200 OK", активирует медиапоток и переходит в состояние `Connected`. ==== Сценарий вызова с early media ==== Если канальное окончание SS7 получает со стороны TDM сообщение CPG, содержащее в поле event значение "Progress" или "Inband info", сигнализирующее о наличии данных в речевом канале, канальное окончание направляет вызывающему абоненту ответ SIP "183 Session Progress" с ответом на предложением SDP в теле сообщения и активирует медиапоток (early media). Таким образом, вызывающий абонент имеет возможность слышать речевые анонсы и/или другие акустические информационные сигналы, передаваемые в речевом канале. Пример сценария вызова с активацией медиапотока до ответа вызываемого абонента: {{{#!PlantUml @startuml title Сценарий вызова со стороны сети IP c early-media skinparam ParticipantPadding 80 skinparam sequenceMessageAlign center participant "Абонент А (IP)" as A participant "окончание SS7" as B participant "Абонент Б (TDM)" as C A -> B: INVITE B -> A: 100 Trying B -> C: IAM C -> B: CPG (event="Inband info") B -> A: 183 Session Progress A <-[#0000ff]-> B: //медиапоток// note right of C: вызываемый абонент слышит звонок C -> A: КПВ ... note over C: абонент ответил на вызов C -> B: ANM B -> A: 200 OK A -> B: ACK note over A, C: абоненты А и Б ведут разговор @enduml }}} === Вызов в сторону сети IP === === Отбой соединения === == Параметры конфигурации == == Состояния == Idle:: Исходное состояние (канал свободен). Proceeding:: Получено INVITE, отправлено IAM, ожидается ответ. Dialing:: Получено сообщение IAM с неполным номером, ожидаются сообщения SAM с дополнительными цифрами номера. Calling:: Получено IAM, отправлено INVITE, ожидается ответ. Connected:: Установлено соединение, ведется разговор. Release:: Отправлено REL или RSC, ожидается RLC. Loopback:: Выполняется входящий тест разговорной цепи. Получено CCR или IAM с запросом проверки целостности разговорной цепи, подключен шлейф разговорного канала, ожидается COT с результатом теста. COT:: Выполняется исходящий тест разговорной цепи. Отправлено CCR или IAM с запросом проверки целостности разговорной цепи, подключен генератор, ожидается прием тестовой частоты. COT fail:: Разговорная цепь неисправна: последний тест COT завершился неуспешно. RBlocked:: Удаленная блокировка канала. === Упрощенная диаграмма состояний === {{{#!plantuml @startuml title упрощенная диаграмма состояний канального окончания SS7 Idle: Исходное состояние\n(канал свободен) Proceeding: Принят INVITE Dialing: Ожидание цифр номера Calling: Послан INVITE,\nожидается ответ Connected: идет разговор Release: ожидается RLC Loopback: ожидается COT COT: ожидается тестовая\nчастота fail: канал неисправен fail --> COT: CCR Idle --> Dialing: принято IAM с\nнеполным номером Idle --> Calling: принято IAM с\nполным номером Idle --> COT: принято IAM COT --> Proceeding: тест успешен COT --> Proceeding: повторный тест\nуспешен: REL COT --> fail: тест неуспешен Idle --> Loopback: получено CCR или\nIAM с COT Loopback --> Idle: получено REL Loopback --> fail: получено COT\nс test failed Loopback --> Calling: получено COT\nс test success Loopback --> Dialing: получено COT\nс test success Dialing --> Dialing: принято SAM Dialing --> Calling: таймаут набора Dialing --> Calling: принято SAM с\nполным номером Calling --> Connected: принято 200 OK Calling --> Release: принято 486 Busy Here Calling --> Idle: REL Connected --> Release: принято BYE Connected --> Idle: принято REL Release --> Idle: принято RLC Idle --> Proceeding: принято INVITE Proceeding --> Idle: принято REL Proceeding --> Connected: принято ANM/CON @enduml }}}