исее[[PageOutline(2-5,Содержание:)]] = Канальное окончание PRI = Канальное окончание PRI предназначено для работы с первичными цифровыми абонентскими интерфейсами ISDN. == Описание работы канального окончания == Интерфейс PRI использует для передачи ниформации первичный цифровой поток 2048 кбит/с, содержащий 32 таймслота (канальных интервала) со скоростью передачи 64 кбит/с в каждом. 30 каналов потока (таймслоты 1-15 и 17-31) используются для передачи голоса и один канал (таймслот 16) - для сигнализации. Поэтому при создании канального окончания PRI занимается сразу 31 канал. В отличие от других канальных окончаний, при создании окончания PRI вместо номера канала указывается номер потока E1 (от 1 до 8). Управление всеми соединениями транка PRI осуществляет сигнальный канал, играющий роль контроллера сигнализации. Исходным состоянием сигнального канала является состояние `Down`. При установке соединения по сигнальному каналу с удаленной станцией сигнальный канал переходит в состояние `Up`. === Прием вызова со стороны сети IP === Прием вызовов со стороны сети IP канальным окончанием PRI выполняется только на втором проходе поиска. ==== Базовый сценарий вызова ==== Пример сценария вызова со стороны сети IP приведен на следующей диаграмме: {{{#!PlantUml @startuml title Базовый сценарий вызова со стороны сети IP skinparam ParticipantPadding 80 skinparam sequenceMessageAlign center participant "Абонент А (IP)" as A participant "окончание PRI" as B participant "Абонент Б (TDM)" as C A -> B: INVITE B -> A: 100 Trying B -> C: SETUP C -> B: CALL PROCEEDING C -> B: ALERTING note right: вызываемый абонент слышит звонок B -> A: 180 Ringing ... note over C: абонент ответил на вызов C -> B: CONNECT B -> C: CONNECT ACKNOWLEDGE B -> A: 200 OK A <-[#0000ff]-> B: //медиапоток// A -> B: ACK note over A, C: абоненты А и Б ведут разговор @enduml }}} При получении сообщения INVITE из сети IP сигнальный канал окончания PRI выполняет сравнение вызываемого номера (username вызываемого URI) с регулярным выражением, установленным конфигурационным параметром "Рег. выражение вызова". Если вызываемый номер совпадает с регулярным выражением, выполняется поиск свободного речевого канала (канала, находящегося в состоянии `Idle`) среди 30 речевых каналов транка PRI. Если свободный канал найден, он переводится в состояние `Proceeding`, и удаленной станции передается сообщение SETUP. Если вызываемый абонент найден и может принять вызов (свободен), в ответ на переданный SETUP от станции вызываемого абонента приходит сообщение ALERTING. Получив сообщение ALERTING, канальное окончание PRI передает вызывающей стороне ответ "180 Ringing". При ответе вызываемого абонента канальному окончанию PRI порступает сообщение CONNECT, при получении которого канальное окончание передает вызывающему ответ "200 OK", активирует медиапоток и переводит речевой канал в состояние `Connected`. ==== Сценарий вызова с early media ==== Если канальное окончание PRI получает со стороны TDM сообщение PROCEEDING, PROGRESS или ALERTING с прогресс-индикатором, сигнализирующим наличие данных в речевом канале, канальное окончание направляет вызывающему абоненту соответствуюбщее сообщение SIP с ответом на предложением SDP в теле сообщения и активирует медиапоток (early media). Таким образом, вызывающий абонент имеет возможность слышать речевые анонсы и/или другие акустические информационные сигналы, передаваемые в речевом канале. Пример сценария вызова с активацией медиапотока до ответа вызываемого абонента: {{{#!PlantUml @startuml title Сценарий вызова со стороны сети IP с early media skinparam ParticipantPadding 80 skinparam sequenceMessageAlign center participant "Абонент А (IP)" as A participant "окончание PRI" as B participant "Абонент Б (TDM)" as C A -> B: INVITE B -> A: 100 Trying B -> C: SETUP C -> B: CALL PROCEEDING C -> B: ALERTING + PI B -> A: 180 Ringing + SDP A <-[#0000ff]-> B: //медиапоток// note over C: у абонента звонит телефон C o-[#gray]> A: // КПВ// ... note over C: абонент ответил на вызов C -> B: CONNECT B -> C: CONNECT ACKNOWLEDGE B -> A: 200 OK A -> B: ACK note over A, C: абоненты А и Б ведут разговор @enduml }}} В данном примере сообщение ALERTING содержит прогресс-индикатор (PI), указывающий на наличие данных в речевом канале. При его получении канальное окончание PRI сформировало сообщение SDP в теле ответа "180 Ringing" и активировало медиапоток, дав возможность вызывающему абоненту проослушивать акустический сигнал "Контроль посылки вызова" (КПВ), сформированный оборудованием вызываемой стороны. ==== Сценарий вызова к занятому абоненту ==== {{{#!PlantUml @startuml title Cценарий вызова со стороны сети IP к занятому абоненту skinparam ParticipantPadding 80 skinparam sequenceMessageAlign center participant "Абонент А (IP)" as A participant "окончание PRI" as B participant "Абонент Б (TDM)" as C A -> B: INVITE B -> A: 100 Trying B -> C: SETUP C -> B: CALL PROCEEDING C -> B: DISCONNECT B -> C: RELEASE B -> A: 603 Decline C -> B: RELEASE COMPLETE A -> B: ACK @enduml }}} === Вызов в сторону сети IP === ==== Базовый сценарий вызова ==== При получении сообщения SETUP канальное окончание PRI выполняет ряд проверок для определения возможности обслужить поступивший вызов, основные из которых перечислены ниже: 1. Проверяется, установлен ли конфигурационный параметр "Блокировать исходящие при отсутствии регистрации". Если флаг установлен, и канальное окончание не зарегистрировано на внешнем SIP-сервере, канальное окончание дает отбой (DISCONNECT), при этом поле `cause` устанавливается в значение "Destination out of order" (27). 1. Проверяется значение поля Transfer Capability. Если его значение отлично от `speech` (и `3.1k audio` при условии установки конфигурационного параметра "Принимать Bearer Capability "3.1k audio" дополнительно к "Speech""), канальное окончание дает отбой (DISCONNECT), при этом поле `cause` устанавливается в значение "Bearer capability not implemented" (65). 1. Если запрошен конкретный номер речевого канала, проверяется, находится ли указанный канал в исходном состоянии (`Idle`). Если нет, и установлен флаг эксклюзивности канала, канальное окончание дает отбой (DISCONNECT), при этом поле `cause` устанавливается в значение "Channel unacceptable" (6). 1. Если номер канала не указан, или указанный канал занят, производщится поиск свободного речевого канала. Если свободный канал отсутствует, канальное окончание дает отбой (DISCONNECT), при этом поле `cause` устанавливается в значение "Circuit/channel congestion" (34). Если все проверки прошли успешно, выбранный речевой канал переводится в состояние `Dialing`. Если конфигурационный параметр "Преобразование ANI" имеет непустое значение, выполняется замена номера вызывающего абонента по совпадению с заданным регулярным выражением. Наконец, если в полученном сообщении присутствует IE "Sending Complete", канальное окончание формирует сообщение INVITE и отправляет его в сеть IP, а выбранный речевой канал переводится в состояние `Calling`. При получении из сети ответа "180 Ringing" канальное окончание PRI передает в сторону TDM сообщение ALERTING, содержащее прогресс-индикатор, сигнализирующий наличие данных в речевом канале и начинает передавать в канал акустический сигнал "Контроль посылки вызова" (КПВ). При получении из сети ответа "200 OK", сигнализирующего ответ вызываемого абонента, канальное окончание PRI прекращает передачу в канал сигнала "КПВ", активирует медиапоток и передает в сторону TDM сообщение CONNECT. Пример сценария вызова приведен ниже: {{{#!PlantUml @startuml title Базовый сценарий вызова со стороны сети TDM skinparam ParticipantPadding 80 skinparam sequenceMessageAlign center participant "Абонент А (TDM)" as A participant "окончание PRI" as B participant "Абонент Б (IP)" as C A -> B: SETUP B -> A: CALL PROCEEDING B -> C: INVITE C -> B: 100 Trying C -> B: 180 Ringing note right: вызываемый абонент слышит звонок B -> A: ALERTING B o-[#blue]> A: КПВ ... note over C: абонент ответил на вызов C -> B: 200 OK B <-[#0000ff]-> C: //медиапоток// B -> C: ACK B -> A: CONNECT A -> B: CONNECT ACKNOWLEDGE note over A, C: абоненты А и Б ведут разговор @enduml }}} ==== Сценарий вызова с overlap dialing ==== Рассмотренный выше сценарий предполагал, что сообщение SETUP содержит в себе полный номер вызываемого абонента (En Bloc Dialing) и, таким образом, имеющейся в нем информации достаточно для трансляции вызова в SIP сообщение INVITE. Бывают сценарии, в которых сообщение SETUP содержит только часть (одну или несколько первых цифр) номера вызываемого абонента, а иногда не содержит цифр номера вообще. В таком случае оставшиеся недостающие цифры номера передаются в последующих сообщениях INFO. При получении сообщения SETUP с неполным номером (отсутствующим IE "Sending Complete") канальное окончсание проверяет, есть ли в номере хотя бы один символ. Если номер пуст, в речевой канал передается акустический сигнал готовности к набору номера (dialtone). После этого вызывающему передается сообщение SETUP ACK и ожидаются оставшиеся цифры номера. При получении от вызывающего абонента сообщений INFO содержащиеся в них символы номера вызываемого абонента добавляются к ранее принятым. Сигнал готовности, если был включен, отключается. Ожидание цифр номера заканчивается либо при получении очередного сообщения INFO с признаком окончания набора номера (IE "Sending Complete"), либо если в течение времени, установленного конфигурационным параметром "Таймаут набора", не поступило ни одного нового символа. По окончании приема номера канальное окончание формирует и передает в сеть сообщение INVITE, и далее процесс установки соединения ничем не отличается от приведенного выше базового сценария. Пример сценария с overlap dialing: {{{#!PlantUml @startuml title Cценарий вызова со стороны сети TDM с overlap dialing skinparam ParticipantPadding 80 skinparam sequenceMessageAlign center participant "Абонент А (TDM)" as A participant "окончание PRI" as B participant "Абонент Б (IP)" as C A -> B: SETUP (Called Party Number="") B -> A: SETUP ACK B o-[#blue]> A: dialtone A -> B: INFO (Called Party Number="1") A <-[#blue]x B: dialtone off A -> B: INFO (Called Party Number="2") A -> B: INFO (Called Party Number="3") A -> B: INFO (Called Party Number="4") A -> B: INFO (Called Party Number="5") B -> A: CALL PROCEEDING B -> C: INVITE "12345" C -> B: 100 Trying C -> B: 180 Ringing note right: вызываемый абонент слышит звонок B -> A: ALERTING B o-[#blue]> A: КПВ ... note over C: абонент ответил на вызов C -> B: 200 OK B <-[#0000ff]-> C: //медиапоток// B -> C: ACK B -> A: CONNECT A -> B: CONNECT ACKNOWLEDGE note over A, C: абоненты А и Б ведут разговор @enduml }}} Некоторые пользователи телефонных услуг привыкли, что после набора префикса межгорода (например цифры 8) в линии снова присутствует сигнал "Готовность". Также наличие повторного сигнала готовности могут ожидать некоторые автоматические абонентские устройства. Канальное окончание PRI имеет возможность давать абоненту дополнительный сигнал "Готовность". Данная функция активируется установкой конфигурационного параметра "Сигнал готовности после префикса МГ". Если чекбокс отмечен, после набора абонентом префикса межгорода (устанавливаемого конфигурационным параметром "Префикс межгорода") канальное окончание передает в канал TDM вызывающего абонента сигнал "Готовность". При продолжении набора номера канальное окончание отключает сигнал "Готовность". ==== Замена номера вызывающего абонента ==== При получении вызова со стороны TDM в принятом сообщении SETUP, как правило, содержится номер вызывающего абонента. Встречаются ситуации, когда номер вызываемого абонента приходит не в том формате, который требуется на стороне IP (например приходит только зоновый номер без кода страны и города). Функция замены по регулярному выражению номера вызывающего абонента, приходящего со стороны TDM, позволяет исправить эту ситуацию. Для решения проблемы в конфигурации канального окончания PRI имеется конфигурационный параметр "Преобразование ANI", позволяющий выполнять замену номера по регулярному выражению. Значение параметра задается в виде строки формата `//`, где `` - регулярное выражение, на совпадение с которым проверяется полученный номер, `` - строка, которой заменяется номер в случае совпадения с регулярным выражением. В замене могут использоваться группы из регулярного выражения, которые подставляются с помощью комбинаций \1, \2 и т.д. Например если установить параметру "Преобразование ANI" значение `/^(.{7})$/7342\1`, канальное окончание PRI будет добавлять к принятому семизначному номеру префикс "7342". == Параметры конфигурации канального окончания == Пример конфигурации канального окончания PRI: [[Image(ss1.jpg)]] Далее описаны параметры, специфичные для канального окончания PRI. Не указанные здесь конфигурационные параметры работают так же, как и в других канальных окончаниях. См. EndpointParameters. Тип узла:: Параметр определяет, является ли канальное окончание PRI стороной сети (Network) или стороной потребителя (CPE). Тип коммутатора:: Параметр определяет используемый вариант (диалект) системы сигнализации. Таймаут набора:: Параметр определяет максимальное время между двумя соседними цифрами номера вызываемого абонента, принимаемого из сигнального канала при overlap dialing. Если в течение заданного параметром времени после приема очередной цифры номера не принята следующая, канальное окончание передает в сеть IP вызов принятого номера и переходит в состояние Calling. Допустимые значения - от 1000 мс до 100000 мс. Значение по умолчанию - 5000 мс. Префикс межгорода:: Префикс, набираемый для выхода на междугородную связь. Если чекбокс "Сигнал готовности после префикса МГ" отмечен, при наборе вызывающим абонентом заданного префикса в канал TDM преедается дополнительный сигнал "Готовность". Сигнал готовности после префикса МГ:: Если чекбокс отмечен, то при наборе абонентом префикса межгорода канальное окончание передает в канал TDM дополнительный сигнал "Готовность". Значение по умолчанию - чекбокс не отмечен. Преобразование ANI:: Параметр определяет замену номера вызывающего абонента. Значение параметра задается в виде строки формата `//`, где `` - регулярное выражение, на совпадение с которым проверяется полученный номер, `` - строка, которой заменяется номер в случае совпадения с регулярным выражением. В замене могут использоваться группы из регулярного выражения, которые подставляются с помощью комбинаций \1, \2 и т.д. Например при установке значения параметра `/^(2.{6})$/7342\1` к 7-значным номерам вызывающих абонентов, начинающимся с цифры 2, будет добавляться префикс "7342". Если значением параметра является пустая строка, функция преобразования ANI отключена. Значение по умолчанию - пустая строка. Принимать Bearer Capability "3.1k audio" дополнительно к "Speech":: Параметр определяет, будет ли канальное окончание PRI принимать вызовы со стороны TDM, если Bearer Capability указывает тип "3.1k audio". Так как плата VE-01 является голосовым шлюзом, нормальным поведением является прием только голосовых вызовов (transfer capability "Speech"). При получении вызовов любых других типов канальное окончание отвечает сообщением DISCONNECT с указанием причины "Bearer capability not implemented". Tranfser capability "3.1k audio" означает, что вызывающая сторона запрашивает передачу данных, модулированных в полосе канала ТЧ (факс/модем). Для нормального прохождения таких данных требуется, чтобы цифровой поток разговорного канала 64 кбит/с не претерпевал никаких дополнительных преобразований - сжатия, подавления эха, изменения уровня (усиления/ослабления) и т.п. Очевидно, что в случае голосового шлюза эти условия, как правило, выполнены быть не могут. Однако в реальной жизни встречаются случаи, когда вызывающая сторона указывает "3.1k audio" при осуществлении обычных голосовых вызовов. Отметка данного чекбокса разрешает канальному окончанию PRI принимать вызовы "3.1k audio". Значение по умолчанию - чекбокс не отмечен (принимаются только вызовы с bearer capability "speech"). == Состояния канального окончания == === Состояния сигнального канала (D) === Down:: Соединение по сигнальному каналу отсутствует. Up:: Соединение по сигнальному каналу установлено. === Состояния разговорных каналов (B) === Idle:: Исходное состояние (канал свободен). Dialing:: Получено сообщение SETUP с неполным номером, ожидаются сообщения INFO с дополнительными цифрами номера. Proceeding:: Получен INVITE, отправлен SETUP Calling:: Отправлен INVITE, ожидается ответ. Connected:: Установлено соединение, ведется разговор. Disconnecting:: Отправлен DISCONNECT в сеть TDM, ожидается RELEASE. === Упрощенная диаграмма состояний окончания PRI === {{{#!plantuml @startuml Idle: Исходное состояние Dialing: Ожидание цифр номера Calling: Послан INVITE,\nожидается ответ Connected: идет разговор Disconnecting: Послен DISCONNECT,\nожидается RELEASE Proceeding: Принят INVITE Idle --> Dialing: принят SETUP без\nSending Complete Dialing --> Dialing: принят INFO без\nSending Complete Dialing --> Calling: таймаут набора Dialing --> Calling: принят INFO с\nSending Complete Calling --> Connected: 200 OK Calling --> Disconnecting: 486 Busy Here Calling --> Idle: RELEASE Connected --> Disconnecting: BYE Connected --> Idle: DISCONNECT Disconnecting --> Idle: RELEASE Idle --> Proceeding: INVITE Proceeding --> Connected: ANSWER Proceeding --> Idle: RELEASE @enduml }}} == См. также == [EndpointParameters сводная таблица параметров], [wiki:EndpointFXS окончание FXS], [wiki:EndpointFXO окончание FXO], [wiki:EndpointАДАСЭ окончание АДАСЭ].