Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

...

  • при внутренних сбоях, до согласования сессии;

  • при отбое с встречной стороны, кроме 3хх кодов SIP. 

Пример перебора правил:

Image Modified


В таблице маршрутизации два правила, первое направляет вызов в TRUNK_GROUP, второе направляет вызов в TRUNK_3, условия нигде не настроены. Приходит вызов и начинает маршрутизироваться по данной таблице маршрутизации. В результате вызов уходит на TRUNK_GROUP и оттуда в TRUNK_1, в случае если вызов через TRUNK_1 не установился (например, транк недоступен), то маршрутизация продолжает выполняться, вызов отправляется в TRUNK_2. Если попытка вызова в TRUNK_2 также завершилась неудачно, ESBC переходит к RULE_2 и отправляет вызов в TRUNK_3. Если и здесь попытка установить вызов также оказалась неуспешной, то первое плечо отбивается, и вызов завершается, т. к. больше правил в таблице маршрутизации нет. Если попытка установить вызов успешна, то вызов устанавливается.

...

Scroll Pagebreak

Пример работы условий:

Image Removed

ПЕРЕДЕЛАТЬ СХЕМУImage Added

В таблице маршрутизации два правила, у обоих есть условия по CGPN, CDPN и SIP-MESSAGE. Например, приходит вызов, у которого номер А=23000, номер Б=24000, и кастомный заголовок "Trunk: For trunk_1". ESBC заходит в RULE_1 и анализирует условие CONDITION_1, условие истинно, далее происходит анализ условия из CONDITION_2, условие истинно, далее происходит анализ условия из CONDITION_3, условие также истинно. Значит правило RULE_1 подходит для маршрутизации, и вызов отправляется в TRUNK_1.

...

Приходит вызов, у которого номер А=23000, номер Б=24000 и кастомный заголовок "Trunk:  For trunk_2". ESBC заходит в RULE_1 и анализирует условие CONDITION_1, условие истинно, далее происходит анализ условия из CONDITION_2, условие истинно,   далее происходит анализ условия из CONDITION_3, условие ложно. Значит правило не подходит (правило подходит, только если все условия внутри правила истинны). Далее ESBC переходит к RULE_2, анализирует условие CONDITION_4, условие истинно, далее происходит анализ условия из CONDITION_5, условие истинно, далее происходит анализ условия из CONDITION_6, условие также истинно. Значит правило RULE_2 подходит для маршрутизации, и вызов отправляется в TRUNK_2.

...

Блок кода
languagec#
vesbc# 
vesbc# configure 
vesbc(config)# esbc 
vesbc(config-esbc)# route-table ROUTE_TABLE

#Добавление первого правила с условиями CONDITION_1, CONDITION_2, CONDITION_3 и действием отправить вызов в транк TRUNK_1:
vesbc(config-esbc-route-table)# rule 0
vesbc(config-esbc-route-table-rule)# condition 0 cgpn ^23000$
vesbc(config-esbc-route-table-rule)# condition 1 cdpn ^24000$
vesbc(config-esbc-route-table-rule)# condition 2 sip-message '.*For trunk_1.*'
vesbc(config-esbc-route-table-rule)# action direct-to-trunk TRUNK_1
vesbc(config-esbc-route-table-rule)# exit

#Добавление второго правила с условиями CONDITION_4, CONDITION_5, CONDITION_6 и действием отправить вызов в транк TRUNK_2:
vesbc(config-esbc-route-table)# rule 1
vesbc(config-esbc-route-table-rule)# condition 0 cgpn ^23000$
vesbc(config-esbc-route-table-rule)# condition 1 cdpn ^24000$
vesbc(config-esbc-route-table-rule)# condition 2 sip-message '.*For trunk_2.*'
vesbc(config-esbc-route-table-rule)# action direct-to-trunk TRUNK_2

...

Блок кода
languagec#
value-pattern '(some)-(value)'
# значенияЗначения some и value заносятся в локальные переменные pcre 1 и 2 соответственно
replacement '\2-\1'
# значенияЗначения переменных меняются местами

...

Примечание

При применении на транке/абонентском интерфейсе модификаторов обоих типов одновременно, используется следующий порядок их обработки в зависимости от направления модификации:

  • IN — сначала применяется модификатор sip, затем — модификатор common;
  • OUT — сначала применяется модификатор common, затем — sip.

Scroll Pagebreak

Общие модификаторы

Пример использования модификатора common.

...

Блок кода
languagec#
  route-table TO_UAS
    rule 0
      action direct-to-trunk UAS
    exit
  exit
  mod-table common COMMON_MOD
    mod 5 cgpn
      value-pattern '2(.+)'
      # осуществляетсяОсуществляется выбор номеров, начинающихся с 2. Остальная часть номера сохраняется в локальную переменную 1
      replacement '8\1'
      # выполняетсяВыполняется замена 2 на 8 и добавляется значение из переменной 1
    exit
    mod 10 cdpn
      value-pattern '23002'
      # осуществляетсяОсуществляется выбор номера 23002
      replacement '22222'
      # выполняетсяВыполняется замена номера 23002 на 22222
    exit
  exit
  trunk sip UAC
    remote addr 192.168.80.26
    remote port 5070
    sip transport UAC
    route-table TO_UAS
    mod-table common in COMMON_MOD
    media resource 0 MEDIA
  exit
  trunk sip UAS
    remote addr 192.168.80.26
    remote port 5080
    sip transport UAS
    media resource 0 MEDIA
  exit
exit

Схема вызова:

Scroll Pagebreak

На транк UAC приходит INVITE:

...

Примечание

Модификаторы common, настроенные в качестве IN, могут влиять на результат маршрутизации при использовании в route-table условий (condition), т. к. правила route-table обрабатываются после применения модификации. Модификаторы. , настроенные в качестве OUT, не влияют на результат маршрутизации.

...

Предупреждение

Для сообщений REGISTER модификаторы common не применяются.

Scroll Pagebreak

Модификаторы SIP

Данный тип модификации позволяет изменять любые заголовки сообщений SIP. 

...

В ESBC поддержано использование сисетмных системных переменных в модификаторах replace (поле replacement) и add (поле header value).

Список системных переменных, которые можно использовать при модификации:

  • LOCAL_DOMAIN - локальный домен;

  • LOCAL_ADDR - локальный IP адрес, сейчас то же самое, что LOCAL_HOST;

  • LOCAL_HOST - локальный домен или IP адрес;

  • LOCAL_PORT - локальный порт;

  • REMOTE_DOMAIN - домен удалённой стороны;

  • REMOTE_ADDR - IP адрес удалённой стороны;

  • REMOTE_HOST - домен или IP адрес удалённой стороны;

  • REMOTE_PORT - порт удалённой стороны;

  • IFACE_TYPE - тип интерфейса (TRUNK или USER);

  • IFACE_ID - числовой идентификатор интерфейса;

  • IFACE_NAME - имя интерфейса;

  • VERSION - версия ESBC (x.y.z.patch);

  • TIMESTAMP - текущее время в секундах (заполняется на момент применения модификации).

...

Блок кода
languagec#
${VAR_NAME}

Схема: 


В конфигурации есть два транка, настроена маршрутизация. Вызов, который приходит из TRUNK_IN, уходит в TRUNK_OUT.  Требуется, чтобы в запросе INVITE, который отправляется в TRUNK_OUT, добавлялся заголовок Call-Info с информацией об имени транка, на который отправляется запрос, и версией ESBC.

...

Блок кода
languagec#
vesbc# 
vesbc# configure 
vesbc(config)# esbc 

#Создать sipSIP-профиль NEW_SIP_PROFILE:
vesbc(config-esbc)# sip profile NEW_SIP_PROFILE 
vesbc(config-esbc-sip-profile)# 

#Включить контроль доступности:
vesbc(config-esbc-sip-profile)# keepalive enable 
vesbc(config-esbc-sip-profile)# 

#Настроить интервалы контроля:
vesbc(config-esbc-sip-profile)# keepalive success-interval 120
vesbc(config-esbc-sip-profile)# keepalive failed-interval 30
vesbc(config-esbc-sip-profile)#  
 
vesbc(config-esbc-sip-profile)# exit
vesbc(config-esbc)#

#Привязать SIP-профиль к транку TRUNK_OUT:
vesbc(config-esbc)# trunk sip NEW_TRUNK 
vesbc(config-esbc-trunk-sip)# sip profile NEW_SIP_PROFILE 
vesbc(config-esbc-trunk-sip)# 

#Применить и подтвердить изменения:
vesbc(config-esbc-trunk-sip)# do commit 
Configuration has been successfully applied and saved to flash. Commit timer started, changes will be reverted in 600 seconds.
vesbc(config-esbc-trunk-sip)# do confirm 
Configuration has been confirmed. Commit timer canceled.

...

По умолчанию ESBC работает в режиме проксирования медиатрафика без использования транскодирования. Список паттернов кодеков доступных для проксирования через ESBC задается командой:

Блок кода
codec allow {all | <CODEC_PATTERN> [<PT>]}

<CODEC_PATTERN> название кодека/часть названия кодека, 

<PT> payload type . (Не обязательный необязательный параметр). При указании будет проводиться дополнительная проверка патерна паттерна на полное совпадение кодека с указанным payload type.

Описание всех команд приведено в разделе Настройки медиапрофиля справочника команд CLI.

При созданиии медиа профиля создании медиапрофиля список паттернов для наиболее известных кодеков IANA, доступных для проксирования, добавляется автоматически и выглядит следующим образом:

...

Т. к. использование паттернов позволяет указывать не полное название кодека, а его чатьчасть, то запись вида "codec allow G72" означает, что кодеки G726-16, G726-24, G726-32, G726-40 будут доступны для проксирования.

...

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

...

Управление списком кодеков и типом медиаданных (audio, video, image) SDP осуществляется путем добавления/удаления/изменения паттернов codec allow. Максимальное количесво количество паттернов в одном медиа профиле - медиапрофиле — 64.

Примечание

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

Примеры использования

...

медиапрофиля для управления кодеками и типами медиаданных в режиме проксирования

...

1. Запретить использование видео для транка Trunk2.

...

Настройка для SIP-абонентов, использующих WebRTC
Якорь
sip_abonents_webrtc
sip_abonents_webrtc

Схема применения:

Image Removed

ПЕРЕДЕЛАТЬ ОБОЗНАЧЕНИЕ SIP-АБОНЕНТОВImage Added

Описание:

SIP-абоненты (WEB, Desktop-клиенты) отправляют сообщения на IP-адрес 192.168.20.120 порт 5062 с помощью WebSocket Secure, ESBC отправляет по TCP данный трафик с IP-адреса 192.168.16.113 порт 5061 на адрес Softswitch (IP АТС/SIP-proxy и т. д) 192.168.16.65 порт 5060.

...