...
| Блок кода |
|---|
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. |
...
| Блок кода | ||
|---|---|---|
| ||
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
| 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.
Пример:
| Блок кода | ||
|---|---|---|
| ||
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 |
...
