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

Ключ

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

...

Максимальное количество объектов конфигурации ESBC каждого типа представлено в таблице ниже.

ОбъектКоличество
sip transport500
trunk500
user-interface500
trunk-group250
sip profile1000
route table500
rule64 на таблицу route table
condition 64 на правило rule
media profile 1000
media resource1000
mod-table500
mod64 на таблицу mod-table
Предупреждение

Не рекомендуется использовать максимальное количество объектов конфигурации одновременно, это может повлиять на работоспособность системы.

Настройка ESBC для SIP-абонентов

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

Image Modified

Описание:

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

...

Блок кода
vesbc#
vesbc# configure
vesbc(config)# esbc
vesbc(config-esbc)# media resource MEDIA_SSW
vesbc(config-esbc-media-resource)# ip address 192.168.16.113

# указатьУказать диапазон портов, который будет выделяться на ESBC для передачи голоса. Данная команда необязательная, если ее не указывать будет использоваться диапазон портов 8000–65535
vesbc(config-esbc-media-resource)# port-range 1024-65535

...

Блок кода
vesbc# 
vesbc# configure 
vesbc(config)# esbc 
vesbc(config-esbc)# user-interface sip ABONENTS 
vesbc(config-esbc-user-interface-sip)# route-table TO_SSW

Scroll Pagebreak

12. Применить конфигурацию и подтвердить изменения:

...

Настройка ESBC для SIP-транков

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

Image Modified

Описание:

Транковый шлюз (IP АТС/ SIP-proxy/Удаленный SSW и др.) отправляет сообщения с IP-адреса 192.168.20.99 порта 5060 на IP-адрес 192.168.20.120 порт 5067, ESBC пересылает данный трафик с IP-адреса 192.168.16.113 порта 5065 на адрес Softswitch 192.168.16.65 порт 5060. И в обратную сторону SSW отправляет сообщения с IP-адреса 192.168.16.65 порта 5060 на IP-адрес 192.168.16.113 порт 5065, ESBC пересылает данный трафик с IP-адреса 192.168.20.120 порта 5067 на адрес транкового шлюза 192.168.20.99 порт 5060.

...

Блок кода
vesbc# configure
vesbc(config)# interface gigabitethernet 1/0/1
vesbc(config-if-gi)# description "SSW"
vesbc(config-if-gi)# ip address 192.168.16.113/24

Scroll Pagebreak

3. Настроить  Настроить IP-адрес на интерфейсе в сторону транкового шлюза:

...

  • tcp-only — использовать только TCP-протокол;
  • tcp-prefer — прием по UDP и TCP. Отправка по TCP. В случае, если не удалось установить соединение по TCP, отправка производится по UDP;
  • tls — использовать tls;
  • udp-only — использовать только UDP-протокол;
  • udp-prefer — прием по UDP и TCP. Отправка пакетов более 1300 байт по TCP, менее 1300 байт — по UDP;
  • ws использовать WebSocket;
  • wss использовать WebSocket Secure.

Scroll Pagebreak

Создание/конфигурирование транковых групп

...

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

Для кодеков со статическим payload type рекомендуется указывать номер payload type, иначе, если в SDP не будет указан атрибут rtpmap, вызов будет отбиваться кодом 488.

Scroll Pagebreak

Транскодирование

Поддержка кодеков для транскодирования осуществляется командами: 

...

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

#Создание#Создать sip-профиляпрофиль 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.

...

1. Замена атрибутов direction в offer sdp:

Scroll Pagebreak

2. Замена атрибутов direction в answer sdp:

...

Блок кода
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

...

Блок кода
languagec#
INVITE sip:24000@192.168.114.129:5460 SIP/2.0
Via: SIP/2.0/UDP 192.168.114.130:5460;rport;branch=z9hG4bKPj-fvzSQlwN2zoMaGUR5JCLMkjmkBV3Vz1
Max-Forwards: 70
From: "Simple UAC send bye" <sip:24001@192.168.114.130>;tag=l2jkRSMeumV03IdhjPntOt7l0XBKy-Ln
To: "24000" <sip:24000@192.168.114.129>
Contact: <sip:24001@192.168.114.130:5460;transport=udp>
Call-ID: P-W.2oee.2vJw0JoaFbNkRDvnxY40FoP
CSeq: 30738 INVITE
Allow: PRACK, SUBSCRIBE, NOTIFY, REFER, INVITE, ACK, BYE, CANCEL, UPDATE
Supported: timer, 100rel, replaces
Session-Expires: 1800
Min-SE: 90
#Добавленный через таблицу модификаторов заголовок:
Test_header: example string 
Content-Type: application/sdp
Content-Length: 157

v=0
o=tester 3927594021 3927594021 IN IP4 192.168.114.130
s=A conversation
c=IN IP4 192.168.114.130
t=0 0
m=audio 8062 RTP/AVP 8
a=rtpmap:8 PCMA/8000


Scroll Pagebreak

Пример использования модификатора удаления заголовка (no-transit)

...


Пример использования локальных переменных pcre в модификации replace (схема та же): 

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

#Создание таблицы модификаторов MODTABLE_IN:
vesbc(config-esbc)# mod-table sip MODTABLE_IN
vesbc(esbc-mod-table)# 

#Добавление в таблицу модификаторов правила на замену заголовка:
vesbc(esbc-mod-table)# mod 1 replace

#Выбор запроса, в котором будут заменяться заголовки:
vesbc(esbc-mod-table-modification)# sip method-type Invite

#Указать название заголовка, содержимое которого необходимо заменить:
vesbc(esbc-mod-table-modification)# sip header-pattern Date

#Указать место в содержимом заголовка, которое необходимо заменить (шаблон — дата в формате "год-месяц-число"):
vesbc(esbc-mod-table-modification)# value-pattern "(\\d{4})-(\\d{2})-(\\d{2})"

#Добавить правило для подмены содержимого заголовка (меняем формат даты на "месяц/число/год"):
vesbc(esbc-mod-table-modification)# replacement "\\2/\\3/\\1"

vesbc(esbc-mod-table-modification)# exit
vesbc(esbc-mod-table)# exit

#Привязать таблицу модификаторов к входящему транку TRUNK_IN:
vesbc(config-esbc)# trunk sip TRUNK_IN
vesbc(config-esbc-trunk-sip)# mod-table sip in MODTABLE_IN 

#Применить и подтвердить изменения:
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.

...

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

#Создание таблицы модификаторов MODTABLE_OUT:
vesbc(config-esbc)# mod-table sip MODTABLE_OUT
vesbc(esbc-mod-table)# 

#Добавление в таблицу модификаторов правила copy для копирования значения user part в переменную u01:
vesbc(esbc-mod-table)# mod 0 copy
vesbc(esbc-mod-table-modification)# 

#Выбор запроса, в котором будет использоваться модификатор copy (в данном случае INVITE):
vesbc(esbc-mod-table-modification)# sip method type Invite

#Указать название заголовка, из которого необходимо копировать значение (в данном случае Diversion):
vesbc(esbc-mod-table-modification)# sip header-pattern Diversion

#Указать содержимое заголовка, при совпадении с которым будет выполнено копирование в переменную. В переменную будет скопирована та часть отбора, которая указана в скобках:
vesbc(esbc-mod-table-modification)# value-pattern '<sip:(.+)@'

#Указать переменную, в которую будет скопировано значение, указанное в скобках, в примере - (.+):
vesbc(esbc-mod-table-modification)# variable-str 'u01'
vesbc(esbc-mod-table-modification)# exit

#Добавление в таблицу модификаторов правила replace для замены заголовка From:
vesbc(esbc-mod-table)# mod 1 replace

#Указать название заголовка, в котором будет осуществляться замена:
vesbc(esbc-mod-table-modification)# sip header-pattern 'From'

#Выбор запроса, в котором будет использоваться модификатор replace (в данном случае INVITE):
vesbc(esbc-mod-table-modification)# sip method type Invite

#Указать часть содержимого заголовка, которую необходимо заменить:
vesbc(esbc-mod-table-modification)# value-pattern '.+ <sip:'

# Указать#Указать переменную u01, которая содержит значение, полученное в модификации copy:
vesbc(esbc-mod-table-modification)# replacement '\u01 <sip:$'
vesbc(esbc-mod-table-modification)# exit

#Добавление в таблицу модификаторов правила no-transit для удаления заголовка Diversion:
vesbc(esbc-mod-table)# mod 2 no-transit
vesbc(esbc-mod-table-modification)# sip header-pattern 'Diversion'
vesbc(esbc-mod-table-modification)# sip method type Invite
vesbc(esbc-mod-table-modification)# exit
vesbc(esbc-mod-table)# exit

#Привязать таблицу модификаторов к исходящему транку TRUNK_OUT:
vesbc(config-esbc)# trunk sip TRUNK_OUT 
vesbc(config-esbc-trunk-sip)# mod-table sip out MODTABLE_OUT 

#Применить и подтвердить изменения:
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 не будет обрабатывать более 40 входящих SIP-запросов в секунду. 

Scroll Pagebreak

Пример ограничения на транке:

...

После применения изменений , ESBC не будет обрабатывать более 10 входящих вызовов на SIP-транк TRUNK в секунду.

...

После применения изменений , ESBC не будет обрабатывать более 500 входящих вызовов на абонентский интерфейс USER_IFACE. 

Scroll Pagebreak

Ограничение трафика на транковой группе

Ограничение на транковой группе применяется для всех транков, входящих в состав этой группы, и имеет приоритет над ограничением, установленным в настройках транка.
При этом суммарное количество входящего трафика на транках, входящих в состав группы, также не может превышать ограничение на группе.

...

После применения изменений , на транках TRUNK_0, TRUNK_1, TRUNK_2 не может быть суммарно более 30 входящих вызовов в секунду.

Scroll Pagebreak

Лицензионное ограничение обработки вызовов

...

Блок кода
languagec#
#Просмотр активных лицензий:
vesbc# show licence
Feature                            Source     State         Value                              Valid from             Expiries               
--------------------------------   --------   -----------   --------------------------------   --------------------   --------------------   
ESBC-LIMIT-MAX-CALLS               ELM        Active        5000                               --                     --                     
ESBC-LIMIT-MAX-CPS                 ELM        Active        100                                --                     --                     
ESBC-VIRTUAL-LIMIT-DEFAULT         ELM        Active        true                               --                     --                     
ESBC-VIRTUAL-LIMIT-NET             ELM        Active        10000000000                        --                     --                     
vesbc#
vesbc# config 
vesbc(config)# esbc 

#Переход в общие настройки:
vesbc(config-esbc)# general 
vesbc(config-esbc-general)# 

#Ограничение максимального CPS:
vesbc(config-esbc-general)# max cps 
  COUNT  Possible max cps: 1-1000   #конфигурационное ограничение

vesbc(config-esbc-general)# max cps 1000
2025-04-22T09:10:17+00:00 %SYS-W-EVENT: WARNING!!! Configured max cps 1000 exceed licence limit that is equal to 100   #предупреждение о том, что введённое значение превышает лицензионное

#Применение и подтверждение изменений:
vesbc(config-esbc-general)# do commit 
2025-04-22T08:44:46+00:00 snmpd restarted
Configuration has been successfully applied and saved to flash. Commit timer started, changes will be reverted in 600 seconds.
2025-04-22T08:44:46+00:00 %CLI-I-CRIT: user admin from console  input: do commit
vesbc(config-esbc-general)# do confirm 
Configuration has been confirmed. Commit timer canceled.
vesbc(config-esbc-general)# 

После применения изменений в конфигурации будет отображаться max cps 1000, но обрабатываться будет не более 100 вызовов в секунду.

Scroll Pagebreak

Мониторинг

В ESBC доступен мониторинг, в . В текущей версии ПО в CLI есть команды (show esbc) для просмотра:

  • чёрного списка;
  • белого списка;
  • состояния транков;
  • списка зарегистрированных абонентов;
  • статистики вызовов.

...

Есть возможность просматривать статистику для всей системы, всех транков или , всех абонентских интерфейсов . Либо же или по конкретному транспорту, транку, абонентскому интерфейсу.

...

Информация

В выводе отображаются счётчики запросов/ответов за последние 3 секунды.

Если ответ был сгенерирован ESBC, а не получен от встречной стороны, то соответствующий счётчик не увеличится.


Примечание

Для отображения счётчиков необходимо включить ведение статистики вызовов в меню general.


Пример:

Из TRUNK_IN в TRUNK_OUT через ESBC поступает 5 вызовов каждую секунду длительностью 5 секунд.

...

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

#Переход в общие настройки:
vesbc(config-esbc)# general 
vesbc(config-esbc-general)# 

#Включение статистики вызовов:
vesbc(config-esbc-general)# statistics call 
vesbc(config-esbc-general)# 

#Применение и подтверждение изменений:
vesbc(config-esbc-general)# do commit 
2025-04-22T08:44:46+00:00 snmpd restarted
Configuration has been successfully applied and saved to flash. Commit timer started, changes will be reverted in 600 seconds.
2025-04-22T08:44:46+00:00 %CLI-I-CRIT: user admin from console  input: do commit
vesbc(config-esbc-general)# do confirm 
Configuration has been confirmed. Commit timer canceled.
vesbc(config-esbc-general)# 

#Просмотр статистики при активных вызовах:
vesbc# show esbc counters 
ESBC global counters:
-----------------------------------
 CPS:                         5
 INCOMING CALL-LEGS:          25
 OUTGOING CALL-LEGS:          25
 REQUESTS RECEIVED:           48
 REQUESTS SEND:               48
 RESPONSES RECEIVED:          64
 RESPONSES SEND:              64
 ANSWERED CALLS(SUCCESS):     15
 ANSWERED CALLS(UNSUCCESS):   0
 WRONG NUMBER CALLS:          0
 BUSY CALLS:                  0
 NO ANSWER CALLS:             0
 FORBIDDEN CALLS:             0
 3XX CODES:                   0
 4XX CODES:                   0
 5XX CODES:                   0
 6XX CODES:                   0


#Просмотр статистики на транке TRUNK_IN:
vesbc# show esbc trunks sip counters TRUNK_IN
Trunk:                        TRUNK_IN
---------------------------------------------
 CPS:                         5
 INCOMING CALL-LEGS:          25
 OUTGOING CALL-LEGS:          0
 REQUESTS RECEIVED:           48
 REQUESTS SEND:               0
 RESPONSES RECEIVED:          0
 RESPONSES SEND:              64
 ANSWERED CALLS(SUCCESS):     0
 ANSWERED CALLS(UNSUCCESS):   0
 WRONG NUMBER CALLS:          0
 BUSY CALLS:                  0
 NO ANSWER CALLS:             0
 FORBIDDEN CALLS:             0
 3XX CODES:                   0
 4XX CODES:                   0
 5XX CODES:                   0
 6XX CODES:                   0

#Просмотр статистики на транке TRUNK_OUT:
vesbc# show esbc trunks sip counters TRUNK_OUT
Trunk:                        TRUNK_OUT
---------------------------------------------
 CPS:                         0              #CPS - 0, так как отображается текущее количество входящих вызовов в секунду
 INCOMING CALL-LEGS:          0
 OUTGOING CALL-LEGS:          25
 REQUESTS RECEIVED:           0
 REQUESTS SEND:               48
 RESPONSES RECEIVED:          64
 RESPONSES SEND:              0
 ANSWERED CALLS(SUCCESS):     15
 ANSWERED CALLS(UNSUCCESS):   0
 WRONG NUMBER CALLS:          0
 BUSY CALLS:                  0
 NO ANSWER CALLS:             0
 FORBIDDEN CALLS:             0
 3XX CODES:                   0
 4XX CODES:                   0
 5XX CODES:                   0
 6XX CODES:                   0

#Просмотр статистики после остановки вызовов:
vesbc# show esbc counters 
ESBC global counters:
-----------------------------------
 CPS:                         0
 INCOMING CALL-LEGS:          0
 OUTGOING CALL-LEGS:          0
 REQUESTS RECEIVED:           10   #вызовы завершились, но некоторые счётчики ещё не сбросились
 REQUESTS SEND:               10
 RESPONSES RECEIVED:          10
 RESPONSES SEND:              10
 ANSWERED CALLS(SUCCESS):     0
 ANSWERED CALLS(UNSUCCESS):   0
 WRONG NUMBER CALLS:          0
 BUSY CALLS:                  0
 NO ANSWER CALLS:             0
 FORBIDDEN CALLS:             0
 3XX CODES:                   0
 4XX CODES:                   0
 5XX CODES:                   0
 6XX CODES:                   0

#Просмотр статистики через 3 секунды:
vvesbc# show esbc counters 
ESBC global counters:
-----------------------------------
 CPS:                         0
 INCOMING CALL-LEGS:          0
 OUTGOING CALL-LEGS:          0
 REQUESTS RECEIVED:           0
 REQUESTS SEND:               0
 RESPONSES RECEIVED:          0
 RESPONSES SEND:              0
 ANSWERED CALLS(SUCCESS):     0
 ANSWERED CALLS(UNSUCCESS):   0
 WRONG NUMBER CALLS:          0
 BUSY CALLS:                  0
 NO ANSWER CALLS:             0
 FORBIDDEN CALLS:             0
 3XX CODES:                   0
 4XX CODES:                   0
 5XX CODES:                   0
 6XX CODES:                   0

Якорь
logs
logs
Работа с логами

Логирование ESBC осуществляется с помощью syslog. Более подробно настройки syslog описаны в разделе Управление SYSLOG справочника команд CLI.

Модули, входящие в состав ESBC

Название

Описание

Назначение

esbc_core

модуль основной логики

обработка вызовов, отвечает за маршрутизацию вызовов, обеспечивает взаимодействие остальных модулей

esbc_sip_balancer

модуль управления подсистемой SIP

получение сообщений SIP (на открытый сокет) и передача их в модуль esbc_sip_worker

esbc_sip_worker

модуль расширения подсистемы SIP

адаптер протокола SIP, обрабатывает сообщения и передает данные модулю esbc_core

esbc_media_balancer

модуль управления подсистемой media

управление ресурсами в подсистеме media, выделяет RTP-порты и передает их в модуль esbc_media_worker

esbc_media_worker

модуль расширения подсистемы media

обработка медиапотоков (RTP)

esbc_config_manager

адаптер базы данных конфигурации

хранение конфигурации системы

esbc_access_mediator

модуль внешнего доступа

обработка внешних взаимодействий с системой CLI

esbc_ipc

брокер сообщений

обеспечение связи всех модулей в системе

esbc_dispatcher

модуль контроля состояния модулей

контроль модулей, индикация об изменении состояний модулей

esbc_sm

модуль управления абонентскими записями

добавление/удаление записей о регистрации абонентов, добавление/удаление/изменение контактов регистрации, хранение и восстановление записей из базы, предоставление информации о записях и контактах абонентов другим модулям системы

esbc_voip_guard

модуль fail2ban

отслеживает попытки обращения к сервису телефонии, при обнаружении постоянно повторяющихся неудачных попыток обращения с одного и того же IP-адреса или хоста модуль блокирует попытки с этого IP-адреса/хоста

esbc_sysio

модуль взаимодействия с ОС

служит прослойкой между ESBC и ОС, на которой он разворачивается, предоставляет единый интерфейс взаимодействия с системой и реализует мониторинг различных системных событий

esbc_mon

модуль мониторинга

обеспечение функции мониторинга и сбора статистики

Scroll Pagebreak

Включение логирования модулей ESBC производится в разделе debug:

Блок кода
languagec#
vesbc#
 
#Переход в раздел debug:
vesbc# debug
vesbc(debug)#
 
#Включение логирования модуля esbc_dispatcher:
vesbc(debug)# debug esbc disp
 
#Включение логирования модуля esbc_config_manager:
vesbc(debug)# debug esbc cfgmgr
 
#Включение логирования модуля esbc_access_mediator:
vesbc(debug)# debug esbc accmed
 
#Включение логирования модуля esbc_mon:
vesbc(debug)# debug esbc mon

#Включение логирования модуля esbc_core:
vesbc(debug)# debug esbc core
 
#Включение логирования модуля esbc_sip_balancer:
vesbc(debug)# debug esbc sipbl
 
#Включение логирования модуля esbc_sip_worker:
vesbc(debug)# debug esbc sipwrk
 
#Включение логирования модуля esbc_media_balancer:
vesbc(debug)# debug esbc mediabl
 
#Включение логирования модуля esbc_media_worker:
vesbc(debug)# debug esbc mediawrk
 
#Включение логирования модуля esbc_sysio:
vesbc(debug)# debug esbc sysio
 
#Включение логирования модуля esbc_sm:
vesbc(debug)# debug esbc submngr
 
#Включение логирования модуля esbc_voip_guard:
vesbc(debug)# debug esbc voip-guard

#Применение и подтверждение настроек:
vesbc(debug)# do commit
vesbc(debug)# do confirm

Scroll Pagebreak