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

Ключ

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

...

Блок кода
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 
vesbc(config-esbc-trunk-sip)# do confirm 

В резултатерезультате, когда в транке TRUNK_IN  будет получен INVITE, содержащий заголовок "User-Agent" со значением "TestUA", в исходящем INVITE также будет присутствовать этот заголовок:  

Блок кода
# INVITE полученный в TRUNK_IN:
INVITE sip:23002@192.168.23.199:5070 SIP/2.0
Via: SIP/2.0/UDP 192.168.23.200:5070;rport;branch=z9hG4bK-1763439-1-1
From: sipp <sip:24001@192.168.23.200:5070>;tag=1
To: sut <sip:23002@192.168.23.199:5070>
Call-ID: 1-1763439@192.168.23.200
Cseq: 1 INVITE
Contact: <sip:24001@192.168.23.200:5070>
Max-Forwards: 70
Subject: Performance Test
Allow: INVITE, ACK, BYE, CANCEL, PRACK, REGISTER, INFO, REFER, NOTIFY, OPTIONS, SUBSCRIBE, MESSAGE, UPDATE, PUBLISH
Content-Type: application/sdp
User-Agent: TestUA
Content-Length:   240

[SDP]

# INVITE отправленный c TRUNK_OUT:
INVITE sip:23002@192.168.80.26:5080 SIP/2.0
Via: SIP/2.0/UDP 192.168.80.129:5080;rport;branch=z9hG4bKPj88572ec4-0af0-4323-abc6-fe1db1ea6e37
Max-Forwards: 70
From: "sipp" <sip:24001@192.168.80.129>;tag=7da4c833-38da-4523-89d7-adc88b581397
To: "sut" <sip:23002@192.168.80.26>
Contact: <sip:24001@192.168.80.129:5080;transport=udp>
Call-ID: d21bdedb499dbfe992a939a27255c536
CSeq: 6199 INVITE
Allow: INVITE, ACK, BYE, CANCEL, PRACK, REGISTER, INFO, REFER, NOTIFY, OPTIONS, SUBSCRIBE, MESSAGE, UPDATE
Supported: 100rel, replaces, ice
User-Agent: TestUA
Content-Type: application/sdp
Content-Length:   241

[SDP]
Примечание

Данный модификатор сработает только в случае, когда значение заголовка User-Agent будет "TestUA". Если значение отличается, то заголовок User-Agent не будет передаваться на второе плечо. Для передачи заголовка с любым значением не следует использовать команду команду value-pattern в модификаторе, или требуется указать в ней все возможные варианты, например - value-pattern .*

Модификатор удаления заголовка (no-transit)

...

В конфигурации есть два транка, настроена маршрутизация. Вызов, который приходит из TRUNK_IN, уходит в TRUNK_OUT. В TRUNK_OUT отправляется запрос INVITE, в теле которого есть заголовок Test_header. Требуется, чтобы в запросе INVITE, который отправляется в TRUNK_OUT, вырезался заголовок Test_header, если в его содержимом есть "example string".

Примечание

По умолчанию , все необязательные и пользовательские заголовки удаляются на входящем плече и не передаются на исходящее плечо. В данном примере демонстрируется модификация только для исходящего плеча (TRUNK_OUT), поэтому подразумевается что на входящем плече (TRUNK_IN) настроен модификатор transit для заголовка Test_header.

...

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

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

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

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

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

#Указать содержимое заголовка, при совпадении с которым заголовок будет удален (в данном случае example string):
vesbc(esbc-mod-table-modification)# value-pattern "example string"

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.

Scroll Pagebreak

До внесения изменений в конфигурацию в TRUNK_OUT отправлялся следующий INVIITE:

...

В конфигурации есть два транка, настроена маршрутизация. Вызов, который приходит из TRUNK_IN, уходит в TRUNK_OUT.   При отправки отправке сообщения INVITE, полученного из TRUNK_IN в TRUNK_OUT, в host-part заголовков To и From будут использоваться IP-адрес, настроенный в качестве remote address в транке TRUNK_OUT, и IP-адрес sip-транспорта для TRUNK_OUT соответственно (при условии что в транке TRUNK_OUT не настроен домен). 

Требуется при отправке INVITE заменять эти адреса на testdomain.loc. 

Решение:

Конфигурация  Конфигурация ESBC до использования модификаторов:

...

Т. к. в транке TRUNK_OUT не настроен домен, то в host-part заголовков To и From , сообщения INVITE , будут указаны IP-адреса в соответствии с конфигурацией:

Блок кода
INVITE sip:23002@192.168.80.26:5080 SIP/2.0
Via: SIP/2.0/UDP 192.168.80.129:5080;rport;branch=z9hG4bKPj11eb899a-a1c3-4659-b78d-4bba6bdc17ce
Max-Forwards: 70
From: "sipp" <sip:24001@192.168.80.129>;tag=c090d50d-4b15-4db1-94ac-3ea77fe3dd7d
To: "sut" <sip:23002@192.168.80.26>
Contact: <sip:24001@192.168.80.129:5080;transport=udp>
Call-ID: db38ba3ff093153f38b412372a1bed35
CSeq: 20022 INVITE
Allow: INVITE, ACK, BYE, CANCEL, PRACK, REGISTER, INFO, REFER, NOTIFY, OPTIONS, SUBSCRIBE, MESSAGE, UPDATE
Supported: 100rel, replaces, ice
Content-Type: application/sdp
Content-Length:   241

[SDP]

Настраиваем модификатор MOD_TABLE для замены IP-адресов на testdomain.loc:

Блок кода
vesbc# configure 
vesbc(config)# esbc 
vesbc(config-esbc)# mod-table sip MOD_TABLE
# Создаем#Создаем модификатор замены:
vesbc(esbc-mod-table)# mod 1 replace
# С помощью паттерна выбираем заголовки, в которых необходимо выполнить замену:
vesbc(esbc-mod-table-modification)# sip header-pattern '(From|To)'
#
#Указываем Указываем метод, в котором необходимо выполнить замену:
vesbc(esbc-mod-table-modification)# sip method pattern 'INVITE'
# Выбираем
#Выбираем часть заголовка, которая начинается с символсимвола @, содержит любое количество, любых символов и заканчивается символом >. подПод это выражение попадает host-part заголовков. :
vesbc(esbc-mod-table-modification)# value-pattern '@.*>'
# Указываем
#Указываем, что тербуетсятребуется заменить то, что мы получили в предыдущем правиле на @testdomain.loc>. :
vesbc(esbc-mod-table-modification)# replacement '@testdomain.loc>'
vesbc(esbc-mod-table-modification)# exit
vesbc(esbc-mod-table)# exit
vesbc(config-esbc)# 

...

Блок кода
vesbc# 
vesbc# configure 
vesbc(config)# esbc 
vesbc(config-esbc)# trunk sip TRUNK_OUT 
vesbc(config-esbc-trunk-sip)# mod-table sip out MOD_TABLE 
vesbc(config-esbc-trunk-sip)# do commit 
vesbc(config-esbc-trunk-sip)# do confirm 

Теперь, в Теперь в результате модификации , в host-part заголовков To и From , сообщения INVITE , будет указан домен - testdomain.loc: 

Блок кода
INVITE sip:23002@192.168.80.26:5080 SIP/2.0
Via: SIP/2.0/UDP 192.168.80.129:5080;rport;branch=z9hG4bKPje431c80c-619a-43cc-a631-9ad3be4e6679
Max-Forwards: 70
From: "sipp" <sip:24001@testdomain.loc>;tag=0a5f2f31-e27e-4f7c-a3f8-70ca1d5a9f22
To: "sut" <sip:23002@testdomain.loc>
Contact: <sip:24001@192.168.80.129:5080;transport=udp>
Call-ID: 81a874656978d43e11d57e3662996fde
CSeq: 26399 INVITE
Allow: INVITE, ACK, BYE, CANCEL, PRACK, REGISTER, INFO, REFER, NOTIFY, OPTIONS, SUBSCRIBE, MESSAGE, UPDATE
Supported: 100rel, replaces, ice
Content-Type: application/sdp
Content-Length:   241

[SDP]

...

В SIP-профиле настраивается конфигурации конфигурация общих параметров SIP. Профиль используется в транках, транк-группах и абонентских интерфейсах. 
В текущей версии ПО поддержаны следующие настройки:

  • Контроль доступности направления;
  • Список причин отбоя для перехода на следующее направление;
  • Поведение при перенаправлении; 
  • Игнорирование OPTIONS.

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

Контроль доступности направления

Используется для периодической отправки отправки keep-alive сообщений для контороля контроля состояния встречной стороны.

...

По умолчанию keep-alive не используется. Для включения необхоимо необходимо использовать команду keepalive enable в SIP-профиле.

Контроль осуществляется путем отправки сообщений OPTIONS с заданными интервалами success-interval(по умолчанию 60 сек.)и failed-interval(по умолчанию 20 сек.). 

Алгоритм работы:

Сообщение OPTIONS отправляется только в случае, кодга когда в транке отсутсвует отсутствует активность SIP , после окончания периода success-interval. Т. е. в случае, когда через транк проходят вызовы с  большей частотой, чем указано в настройке success-interval, то сообщения OPTIONS не будут отправляться на встечную встречную сторону, т. к. очевидно, что направление доступно. Если после последнего отправленного или полученного сообщения SIP прошел период равный success-interval, то отправляется OPTIONS. При получение получении ответа на него (с любым статус-кодом) направление считается доступным. Сообщения OPTIONS будут отправляться с периодом success-interval до того момента, пока либо не появится активность SIP, либо не будут получены ответы на отправленные OPTIONS. Если не будет ответов на OPTIONS, транк считается недоступным, и сообщения OPTIONS будут отправляться с интервалом failed-interval до тех пор, пока транк снова не станет доступным.

...

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

При использовании SIP-профиля с включенным контролем доступности, для абонентских интерфейсов , отпавка отправка OPTIONS осуществляться не будет. Данная настройка используется только для контроля транков.

...

Список причин отбоя для указания статус-кодов ответов SIP, по которым будет осуществляться перемаршрутизация вызовов и регистраций на альтернативное направление (следующий транк в транковой группе/следующее правило в таблице маршрутизации).

...

  • ignore options enable — игнорирование запросов OPTIONS. На входящие запросы OPTIONS не будут отправляться ответы;

  • no ignore options enable — отключение игнорирования запросов OPTIONS. На входящие запросы OPTIONS будут отправляться ответы 200 OK;.

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

Игнорирование OPTIONS по умолчанию включено. 

...

Профили безопасности используются для управления механизмом защиты от SIP-атак. Использование профилей безопасности позволяет гибко управлять уровнями защиты для каждого направления.

Необходимы Необходимый уровень защиты обеспечивается следующими настройками профиля:

...

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

Информация

Если для транка и транковой группы, в которую входит этот транк, используются разные профили безопасности, то будет применяться профиль, указанный в настройках транка. Если для транка/абонентского интерфейса и в общих настройках (для всех транков/абонентских интерфейсов) используются разные профили безопасности, то то будет применяться профиль, указанный в настройках транка/абонентского интерфейса.  

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

Общий принцип работы модуля fail2ban
Якорь
fail2ban
fail2ban

...

При добавлении адреса в чёрный список указывается причина блокировки. Чёрный список можно просмотреть в CLI командой show esbc black-list или в WEB на странице Мониторинг→Списки доступа→Чёрный Мониторинг → Списки доступа → Чёрный список.

Причины блокировки:

...

Настройка используется в случае, когда ESBC не имеет публичного IP-адреса и выход в публичную сеть осуществляется через NAT. В таком случае , в качестве Public IP указывается дрес адрес WAN-интерфейса NAT для подстановки для подстановки в сигнальные сообщения протокола SIP.

Public IP можно можно настроить для абонентского интерфейса, транка и транковой группы. 

Информация

Если Public IP настроен в транке и в транковой группе, в которую входит этот транк, то будет использоваться  Public Public IP из настроек транка.

Информация

В качестве публичного адреса можно использовать как IPv4, так и IPv6 адрес.

При наличии Public IP,   адреса в SDP, заголовках Via и Contact будут заменены на значение public-ip из конфигурации объекта. Media будет работать в режиме NAT-comedia.    

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

Для корректной работы опции Public IP необходимо организовать проброс портов для сигнализации SIP и медиапортов RTP на вышестоящем устройстве NAT "один к одному".

...

Информация

Если QoS настроен для транка и для транковой группы, в которую входит этот транк, то будет использоваться  QoS QoS из настроек транка.

Пример настройки QoS для аудиотрафика в конфигурации абонентского интерфейса:

...

При обработке сигнального SIP-трафика и медиапотоков RTP, ресурсы CPU используются разными модулями ESBC. Соответственно для оптимизации нагрузки на CPU предусмотрена возможность управлять количеством модулей.

При высокой нагрузке сигнальным SIP-трафиком , наибольшую нагрузку на ядро CPU производит модуль sip worker, а при большом количестве одновременных вызовов (особенно в режиме транскодирования медии) - media worker.

Поэтому для установления баланса производительнотипроизводительности, для многоядерных систем следует использовать оптимальное количество каждого из модулей, т. к. каждый дополнительный экземпляр модуля будет ипользовать использовать ресурс дополнительного ядра CPU системы.

По умолчанию в системе используется по одному экзкмпляру экземпляру каждого модуля.

Список модулей, количество которых можно изменить:

...

Описание всех команд для настройки количества модулей приведено в разделе Общие настройки ESBC.

Пример:

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

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

#Увеличение количества медиа-воркеров до 2:
vesbc(config-esbc-general)# count media worker 2
vesbc(config-esbc-general)#

#Применение и подтверждение изменений:
vesbc(config-esbc-general)# do commit
2024-09-09T05:26:55+00:00 %SYS-W-EVENT: WARNING!!! After changing ESBC modules count, the system may work unstable. Please restart software.
2024-09-09T05:26:57+00:00 snmpd restarted
Configuration has been successfully applied and saved to flash. Commit timer started, changes will be reverted in 600 seconds.
2024-09-09T05:26:58+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.
2024-09-09T05:27:01+00:00 %CLI-I-CRIT: user admin from console  input: do confirm
vesbc(config-esbc-general)# 

#Перезапуск ПО ESBC для корректного перераспределения модулей:
vesbc(config-esbc-general)# do reload esbc force
Do you really want to reload esbc now? (y/N): y

...

Включение генерации аварий происходит включением SNMP-трапов командой snmp-server enable traps esbc в CLI. 

Данная команда без указания параметров включает весь набор SNMP-трапов:

...

Информация

Более подробное описание конфигурирования SNMP-трапов можно прочитать в разделе Управление SNMP.

Список аварийных событий  событий выводится команой командой show alarms brief в CLI. Данная команда выводит историю аварий, включая уже нормализированные аварии.

...

Авария

Текст аварии

Причины нормализации

cdr-send-error

CDR alarm: failed to send to <main | reserve> ftp server

успешная отправка CDR на FTP-сервер

cdr-write-error

CDR alarm: failed to write

успешная запись CDR

general-max-calls-limit

Host <host_name> max calls limit reached

через 10 секунд после последней аварии ИЛИ при снижении счетчика на 80% от лимита

general-max-cps-limit

Host <host_name> max cps limit reachedчерез 10 секунд после последней аварии

general-max-rps-limit

Host <host_name> max rps limit reachedчерез 10 секунд после последней аварии

media-resources

Session<session_id>: <Trunk/User interface><trunk_name/ui_name> media resources out

через 15 секунд после последней аварии ИЛИ уничтожение превышающий сессии

module-connection

Module <module_type> host <host_id> is down

при успешном добавлении модуля в диспетчер

trunk-group-max-calls-limit

Trunk-Group <trunk_group_name> max calls limit reached

через 10 секунд после последней аварии ИЛИ при снижении счетчика на 80% от лимита

trunk-group-max-cps-limit

Trunk-Group <trunk_group_name> max cps limit reachedчерез 10 секунд после последней аварии

trunk-group-max-rps-limit

Trunk-Group <trunk_group_name> max rps limit reachedчерез 10 секунд после последней аварии

trunk-max-calls-limit

Trunk <trunk_name> max calls limit reached

через 10 секунд после последней аварии ИЛИ при снижении счетчика на 80% от лимита

trunk-max-cps-limit

Trunk <trunk_name> max cps limit reachedчерез 10 секунд после последней аварии

trunk-max-rps-limit

Trunk <trunk_name> max rps limit reachedчерез 10 секунд после последней аварии

trunk-unavailable

Trunk <trunk_name> is unavailable

при обновлении статуса транка на "Available"

user-interface-max-calls-limit

User interface <ui_name> max calls limit reached

через 10 секунд после последней аварии ИЛИ при снижении счетчика на 80% от лимита

user-interface-max-cps-limit

User interface <ui_name> max rps limit reachedчерез 10 секунд после последней аварии

user-interface-max-rps-limit

User interface <ui_name> max cps limit reachedчерез 10 секунд после последней аварии

voip-block-aor

Отсутствуетне нормализуются

voip-block-ip

Отсутствуетне нормализуются
voip-block-user-agentОтсутствуетне нормализуются
Информация

Для улаления удаления аварий используется команда clear alarms в CLI.

...

Отправка на внешний сервер осуществляется по протоколу FTP. Поддерживается отправка на два FTP-сервера. 

Дополнительно поддерживается сохранение и отправка SDR в SYSLOG. Для отправки в SYSLOG требуется дополнительная конфигурация syslog.

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

Пример настройки записи CDR с опциональными полями, локальным хранением и отправкой на сервер FTP с резервированием в случае неудачной отправки приведен ниже. 

...

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

Включение логирования всех модулей при большой вызывной нагрузке может повлиять на производительность системы. Наибольшее влияние на производительность оказывает вывод логов в консоль (syslog console).


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

...

Для установки параметров логирования по умолчанию используется команда no  no debug all. Данная команда отключает логирование всех модулей ESBC.

...

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

...