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

Ключ

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

Оглавление
maxLevel4


Общие сведения

В данном разделе содержится описание функций пограничного контроллера сессий ESBC и примеры их настройки для обеспечения передачи SIP-сигнализации и медиапотоков RTP между разными направлениями.

...

Информация

ESBC-3200 поддерживает до 420000 зарегистрированных абонентов.

Настройка абонентских интерфейсов
Якорь
user-interface
user-interface

...

Подробное описание параметров всех настроек можно найти в разделе Настройки абонентского интерфейса Справочника справочника команд CLI.

Scroll Pagebreak

Настройка SIP-транков
Якорь
trunk_sip
trunk_sip

SIP-транк представляет собой интерфейс для подключения к вышестоящему SIP-устройству (IP АТС/ SIP-proxy/Удаленный SSW и др.) или группе вышестоящих устройств при включении динамического режима работы транка. При включении динамического режима работы в конфигурации необходимо задать адрес и порт удалённой стороны или диапазон адресов и портов. Эти параметры используются для идентификации источника запроса.

...

Подробное описание параметров всех настроек можно найти в разделе Настройки SIP-транка Справочника справочника команд CLI. 

Примечание

Cоздание транков с одинаковым SIP-транспортом и IP:Port разрешено только в случае, если отличается SIP-домен.

...

В схеме из п. 3 первый вызов распределяется в TRUNK_1, если он отбивается, то первое плечо вызова сразу отбивается, попыток позвонить в TRUNK_2, TRUNK_3 нет. Второй вызов распределяется в TRUNK_2, третий — в TRUNK_3, четвертый — в TRUNK_1 и т. д. 

Настройка SIP-транспортов
Якорь
sip-transport
sip-transport

...

При использовании типа транспорта tls или wss возможно использование пользовательских сертификатов. Подробнее о пользовательских сертификатах см. в разделе Настройка криптопрофилей.

Информация

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

Настройка медиаресурсов
Якорь
media_resource
media_resource

...

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

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

Scroll Pagebreak

Настройка таблиц маршрутизации
Якорь
route-table
route-table

...

Таблица маршрутизации представляет собой набор правил и действий, по которым обрабатывается входящий вызов , и указывается исходящий транк (или транк-группа) для формирования исходящего вызова.

...

Для написания условий можно использовать регулярные выражения PCRE

Настройка модификаторов
Якорь
mod-table
mod-table

ESBC поддерживает два типа модификаторов — common и sip.

...

Примечание

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

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

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

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

...

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

Scroll Pagebreak

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

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

...

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

Scroll Pagebreak

Модификатор добавления заголовка (add)

Схема:

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

...

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

Модификатор передачи заголовка (transit)

Схема: 

В конфигурации настроено два транка и настроена маршрутизация из транка TRUNK_IN в TRUNK_OUT. Требуется передать заголовок "User-Agent" из входящего INVITE, только если в нем указано значение "TestUA". 

...

Блок кода
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 0 transit
vesbc(esbc-mod-table-modification)# 
#Выбираем
#Выбор методметода, в котором будет осуществляться поиск заголовка (по условиям задачи - INVITE):
vesbc(esbc-mod-table-modification)# sip method type Invite
#Указываем
#Указать паттерн для выбора названия заголовка, который необходимо передавать (по условиям задачи - User-Agent):
vesbc(esbc-mod-table-modification)# sip header-pattern User-Agent

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

...

Примечание

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

Scroll Pagebreak

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

Схема: 

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

...

Блок кода
INVITE sip:24000@192.168.114.129:5460 SIP/2.0
Via: SIP/2.0/UDP 192.168.114.130:5460;rport;branch=z9hG4bKPj8e1WEAvAy16Bk8Vrj-VZiFK-bNOjnjY9
Max-Forwards: 70
From: "Simple UAC send bye" <sip:24001@192.168.114.130>;tag=R83mrTm4KQsFL1Bk87hTOB8e182yCSJ.
To: "24000" <sip:24000@192.168.114.129>
Contact: <sip:24001@192.168.114.130:5460;transport=udp>
Call-ID: eQueXFpyDZESB.hXK.uCGn7XL7TBUdmQ
CSeq: 8831 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", не удаляется:
Test_header: new string
Content-Type: application/sdp
Content-Length:   157

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

Scroll Pagebreak

Модификатор транзита и замены заголовка (replace)

Схема:

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

...

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

...

Пример 2. Хранение переменных в течение сессии.

Схема:

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

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

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

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

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

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

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

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

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

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

#Название добавляемого заголовка:
vesbc(esbc-mod-table-modification)# header name INVITE_Route

#Указать значение заголовка (переменная route):
vesbc(esbc-mod-table-modification)# header value '${route}'
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.

...

Пример 3. Синхронизация переменных между плечами вызова.

Схема:

В конфигурации есть два транка, настроена маршрутизация. Вызов, который приходит из TRUNK_IN, уходит в TRUNK_OUT. Из TRUNK_IN приходит INVITE с заголовком Route. Требуется, используя только переменную var1, скопировать значение заголовка Test_header из INVITE на первом плече, вставить его в заголовок Test_header_INVITE в ответе 180 на втором плече, скопировать значение заголовка Test_header из ответа 200 на втором плече и вставить его в заголовок Test_header_200 в запрос BYE на первом плече.

...

Блок кода
languagec#
BYE sip:23002@192.168.113.190:5063;transport=UDP SIP/2.0
Via: SIP/2.0/UDP 192.168.113.195:5060;rport;branch=z9hG4bKPj091e9a98-54a1-4631-a024-6fe968fa0ba5
Max-Forwards: 70
From: "24001" <sip:24001@192.168.113.195>;tag=9ca5b465-69ee-4d19-8891-6d99cc8d7b2c
To: "23002" <sip:23002@192.168.113.190>;tag=1
Call-ID: e5e140176f2119a643b0504e9afa69bb
CSeq: 1447 BYE
Allow: INVITE, ACK, BYE, CANCEL
Test_header_200: 200 OK
Content-Length:  0

[SDP]...

Использование системных переменных

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

...

Блок кода
languagec#
INVITE sip:23002@192.168.80.27:5063 SIP/2.0
Via: SIP/2.0/UDP 192.168.80.135:5060;rport;branch=z9hG4bKPj69d21930-f472-4e64-8555-6b68a532deae
Max-Forwards: 70
From: "24001" <sip:24001@192.168.80.135>;tag=f3db1c01-0c06-45cf-8b4d-a233070ae693
To: "23002" <sip:23002@192.168.80.27>
Contact: <sip:24001@192.168.80.135:5060;transport=udp>
Call-ID: 977eea09afecfc44932d4d9c1b2eeb15
CSeq: 6757 INVITE
Allow: INVITE, ACK, BYE, CANCEL
Supported: 100rel, replaces, ice, timer
Call-Info: call to TRUNK_OUT; ESBC version: 1.6.0.0085
Content-Type: application/sdp
Content-Length:   141

[SDP]...

Использование условий в модификаторах

В ESBC поддержано использование условий во всех типах SIP-модификаторов.

Условия можно задать в настройках модификатора, условие . Условие определяется двумя параметрами – заголовком, содержимое которого будет проверяться (sip header-pattern) и значением заголовка, которое необходимо для выполнения условия (value-pattern).

...

В конфигурации есть 2 транка. Вызов, поступающий с TRUNK_IN, маршрутизируется в TRUNK_OUT. Требуется скопировать последнюю цифру номера из From и вставить её в заголовок X-Test-Header при условии, что 2-ая цифра в номере из To равна 8.

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

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

#Создание модификатора copy для копированиикопирования последней цифры из заголовка From в переменную :
vesbc(esbc-mod-table)# mod 0 copy
vesbc(esbc-mod-table-modification)# 

#Выбор запроса, где будет производитсяпроизводиться поиск заголовка и копирование значения (любой запрос):
vesbc(esbc-mod-table-modification)# sip method pattern '.*'

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

#Указать содержимое заголовка, которое нужно скопировать в переменную (последняя цифра номера):
vesbc(esbc-mod-table-modification)# value-pattern '(.)@'

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

#Создание модификатора add для добавления заголовка X-Test-Header:
vesbc(esbc-mod-table)# mod 1 add
vesbc(esbc-mod-table-modification)# 

#Выбор запроса, в котором будет использоваться модификатор add (любой запрос):
vesbc(esbc-mod-table-modification)# sip method pattern '.*'

#Указать название заголовка, который будет добавлен:
vesbc(esbc-mod-table-modification)# header name X-Test-Header

#Указать содержимое заголовка с использованием системных переменных:
vesbc(esbc-mod-table-modification)# header value '${var}'

#Создать условие модификации:
vesbc(esbc-mod-table-modification)# condition 0

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

#Указать заголовок, содержимое которого будет проверяться (вторая цифра в номере должна быть равна 8):
vesbc(esbc-mod-table-modification-condition)# value-pattern '.*sip:.(8).*'
vesbc(esbc-mod-table-modification-condition)# 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.

...

Блок кода
languagec#
INVITE sip:18345@192.168.113.190:5461 SIP/2.0
Via: SIP/2.0/UDP 192.168.113.195:5060;rport;branch=z9hG4bKPj5bfa1162-6ccf-41e1-9aff-4d3cf8fe9511
Max-Forwards: 70
From: "23001" <sip:23001@192.168.113.195>;tag=9b1f5ca8-001a-4165-98ba-c7603d2bc0b2
To: <sip:18345@192.168.113.190>
Contact: <sip:23001@192.168.113.195:5060;transport=udp>
Call-ID: 771e99b84559038bd9a784c3a7360db3
CSeq: 1753 INVITE
Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, REFER, NOTIFY, SUBSCRIBE, INFO, MESSAGE
Supported: 100rel, replaces, ice, norefersub
X-Test-Header: 1
Content-Type: application/sdp
Content-Length:   181

[SDP]...

Scroll Pagebreak

Настройка SIP-профилей
Якорь
sip-profile
sip-profile

...

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

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

...

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

Scroll Pagebreak

...

В SDP Offer1, полученном с транка TRUNK_1, указан кодек PCMA, и т. к. в медиапрофиле FOR_TRUNK_2 указан только кодек PCMU для транскодирования, в SDP Offer2, который будет отправлен в TRUNK_2, кодек PCMA будет заменен на PCMU. Соответственно при вызовах из TRUNK_1 в TRUNK_2 (и в обратном направлении) возможно только транскодирование медиаданных.

Если в В SDP Offer1, полученном с транка TRUNK_1, будут указаны любые кодеки кроме PCMA, то вызов не будут установлен, ESBC отправит на INVITE ответ 488.

...

Функция контроля состояния разговорного тракта по наличию RTP-трафика от встречного устройства. Данный механизм, а также механизмы описанные ниже механизмы могут использоваться для предотвращения зависания разговорных сессий , в случае возикновения возникновения неисправностей на сети передачи данных. Они могут использоваться в дополнение или в качестве альтернативы альтернативы таймерам SIP-сессий (RFC 4028).

Контроль осуществляется следующим образом: если в течении течение заданного времени от встречного устройства не поступает ни одного RTP-пакета, то вызов завершается.
По умолчанию контроль выключен. 

...

Если в вызове, который был установлен через транк NEW_TRUNK,  в течение 1 минуты не будут приходить RTP-пакеты, а таймаут ожидания RTCP-пакетов ещё не истёк, то сессия не завершится. Таким образом, соединение будет поддерживаться, пока встречная сторона отправляет RTCP-пакеты. Если за это время придёт RTP-пакет, таймаут ожидания RTP-пакетов перезапустится. Иначе, если RTCP-пакеты также перестанут приходить, и ни один RTP-пакет так и не поступит, сессия завершится через 120 секунд с момента последнего  последнего пришедшего RTCP-пакета.

Scroll Pagebreak

...

По умолчанию RTCP-пакеты не генерируются, а RTCP-пакеты, полученные на одном из плеч вызова, пересылаются на второе плечо. В режиме локальной обработки RTCP-пакеты генерируются и отправляются на оба плеча сессии, а полученные пакеты обрабатываются.

...

Интервал посылки RTCP-пакетов — это период времени в секундах, через который устройство отправляет контрольные пакеты по протоколу RTCP, принимает значения в диапазоне 1-255 секунд. По умолчанию - 5 сек.

Пример настройки локальной обработки RTCP:

...

При выключенной поддержке и получении INFO с XML, в котором есть PFU, ESBC отправляет ответ 200 ОК и INFO с SDP, в котором содержится "Unsupported picture fast update".

Примеры

1. Поддержка RFC5168 отключена

Схема:

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

...

Блок кода
languagec#
eXtensible Markup Language
    <?xml
        version="1.0"
        encoding="utf-8"
        ?>
    <media_control>
        <general_error>
            Unsupported picture fast update
            </general_error>
        </media_control>

2. Поддержка RFC5168 включена. При проксировании видео и получении сообщения INFO с XML, в котором есть PFU, ESBC передает сообщение INFO на второе плечо.

Схема:

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

...

Встречная сторона (TRUNK_OUT) отвечает, поддерживает ли она INFO с XML PFU или нет.

3. Поддержка RFC5168 включена. При транскодировании видео и получении сообщения INFO с XML, в котором есть PFU, ESBC самостоятельно обрабатывает сообщение INFO.

Схема:

В конфигурации есть два транка, настроена маршрутизация. На транках используются разные видеокодеки, т. е. ESBC работает в режиме транскодирования видео (в примере TRUNK_IN использует VP8, а TRUNK_OUT H264). Вызов, который приходит из TRUNK_IN, маршрутизируется через TRUNK_OUT.  На обоих транках в настройках медиапрофиля указываем, что поддержка использования RFC5168 включена.

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

#Создание медиапрофиля MEDIA_PROFILE_TRUNK_IN с включенной поддержкой RFC5168:
vesbc(config-esbc)# media profile MEDIA_PROFILE_TRUNK_IN 
vesbc(config-esbc-media-profile)# codec video VP8
vesbc(config-esbc-media-profile)# no codec allow H26
vesbc(config-esbc-media-profile)# no codec allow H261 31
vesbc(config-esbc-media-profile)# no codec allow H263 34
vesbc(config-esbc-media-profile)# rfc5168 enable 
vesbc(config-esbc-media-profile)# exit
vesbc(config-esbc)#

#Создание медиапрофиля MEDIA_PROFILE_TRUNK_OUT с включенной поддержкой RFC5168:
vesbc(config-esbc)# media profile MEDIA_PROFILE_TRUNK_OUT
vesbc(config-esbc-media-profile)# codec video H264
vesbc(config-esbc-media-profile)# no codec allow VP
vesbc(config-esbc-media-profile)# rfc5168 enable
vesbc(config-esbc-media-profile)# exit
vesbc(config-esbc)#

 #Привязать медиапрофиль к транку TRUNK_IN:
vesbc(config-esbc)# trunk sip TRUNK_IN
vesbc(config-esbc-trunk-sip)# media profile MEDIA_PROFILE_TRUNK_IN
vesbc(config-esbc-trunk-sip)#  

#Привязать медиапрофиль к транку TRUNK_OUT:
vesbc(config-esbc)# trunk sip TRUNK_OUT
vesbc(config-esbc-trunk-sip)# media profile MEDIA_PROFILE_TRUNK_OUT
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.

...

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

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

...

После применения изменений все входящие инициирующие запросы с абонентских интерфейсов UI_1, UI_2, UI_3 будут проверяться на наличие подстрок "7543546" и "flood". Если хотя бы одна подстрока будет найдена в сообщении, то оно отбросится, а в модуль fail2ban отправится уведомление о срабатывании флуд-фильтра, при . При накоплении достаточного количества ошибок источник блокируется.

Информация

Для того чтобы фильтр применялся ко всем сообщениям, а не только к инициирующим запросам, необходимо включить опцию apply-to-created.

Scroll Pagebreak

Фильтрация клиентских приложений

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

...

При использовании одного и того же атрибута (AOR, User-Agent, IP-адрес) источником вредоносного трафика раньше всего сработает блокировка по AOR, потом по IP-адресу, потом по User-Agent. Из-за этого при ошибках с одинаковым AOR и IP-адресом может оказаться заблокированным только AOR, или при ошибках с одинаковым IP и User-Agent может оказаться заблокированным только IP-адрес.

...

Если к абонентскому интерфейсу привязан профиль безопасности со с включенной блокировкой по User-Agent, то через какое-то время в чёрный список помимо IP-адресов добавится ещё и User-Agent.
Все запросы с любого адреса, в котором будет заблокированный User-Agent, обрабатываться не будут: 

...

Если в профиле безопасности, привязанному к абонентскому интерфейсу, отключено объединение ошибок по адресу, то через определенное количество запросов заблокируется только IP-адрес, и запросы с него больше обрабатываться не будут:

...

IP-адрес и порт, с которого поступает SIP-сообщение  сообщение от абонента, сравнивается с IP-адресом и портом, с которого ранее регистрировался этот абонент. Если абонент не известен неизвестен или запрос пришёл с неизвестного направления, то запрос игнорируется, а в модуль  модуль fail2ban отправляется оповещение.

...

В рамках созданной сессии адрес и порт, с которого пришёл запрос/ответ, сравнивается с адресом и портом источника инициирующего запроса. Если они не совпадают, то запрос/ответ игнорируется, а в модуль  модуль fail2ban отправляется оповещение. Сессия при этом не завершается.

...

2. С IP-адреса 192.168.23.242 и порта 5060 через абонентский интерфейс приходит сообщение INVITE с AOR 123@domain.local, вызов устанавливается. В профиле безопасности, привязанному к абонентскому интерфейсу, включена проверка адреса источника SIP-сообщения. Если в рамках сессии придёт запрос BYE с другого адреса или порта, например, с 192.168.80.35:5060, то данный запрос будет игнорирован, сессия не завершится, а IP-адрес 192.168.80.35 через определенное количество запросов будет заблокирован.

Настройка временных периодов
Якорь
general_security_time
general_security_time

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

  • времени блокировки (security block-timeout), которое используется которое используется при блокировке IP-адреса.;
  • времени прощения (security forgive-time), которое используется при блокировке атрибутов (AOR, user-agent и sip-user).;
  • времени хранения ошибок (security errors-window) – время, в течение которого накапливаются ошибки по каждому объекту блокировки.
Информация

По умолчанию , время блокировки составляет 1440 минут, время прощения — 60 минут, время хранения ошибок — 3600 секунд.

...

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

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

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

#Изменение времени блокировки адресов на 2880 минут (2 дня):
vesbc(config-esbc-general)# security block-timeout 2880

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

Происходит блокировка AOR 22222@192.168.80.26

vesbc# show esbc black-list ip
IP black-list:
--------------------------------------------------------------------------------------------------------------
IP address        Ban reason         AOR                         AOR         Blocking     Time of blocking      
                                                                 error       timeout                            
                                                                 count       in minutes                         
---------------   ----------------   -------------------------   ---------   ----------   --------------------  
192.168.80.26     IP RPS LIMIT       22222@192.168.80.26         40          2880         2025-08-05 13:04:19   

...

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

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

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

#Изменение времени блокировки атрибутов на 600 минут (10 часов):
vesbc(config-esbc-general)# security forgive-time 600

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

Происходит блокировка AOR 22222@192.168.80.26

vesbc# show esbc black-list aor
AOR black-list:
--------------------------------------------------------------------------------------------
AOR                         Ban reason         AOR         Forgive      Time of blocking      
                                               error       time in                            
                                               count       minutes                            
-------------------------   ----------------   ---------   ----------   --------------------  
22222@192.168.80.26         ACCOUNT HACKING    40          600          2025-08-05 13:03:19

Scroll Pagebreak

Настройка криптопрофилей
Якорь
crypto_profile
crypto_profile

...

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

Пример настройки crypto profile:

...

Настройки crypto profile будут использоваться, только если выбран режим шифрования srtp keying dtls-srtp, для остальных режимов настройки игнорируются.

Scroll Pagebreak

Пример использования crypto profile:

Задача:

Использовать сертификат, загруженный пользователем на ESBC, для абонентских подключений по tls версии 1.3 и шифрования медиа DTLS-SRTP.

...

Блок кода
vesbc(config-esbc)# do commit
Configuration has been successfully applied and saved to flash. Commit timer started, changes will be reverted in 600 seconds.
vesbc(config-esbc)# do confirm
Configuration has been confirmed. Commit timer canceled.

Scroll Pagebreak

Настройка RADIUS
Якорь
radius
radius


ESBC поддерживает аутентификацию регистрирующихся через него абонентов  абонентов на RADIUS-сервере.

Ражимы Режимы работы digest-аутентификации:

  • Draft Sterman - в данном режиме ESBC самостоятельно отправляет абоненту параметры для digest-аутентификации, далее эти параметры и digest response, полученный от абонента, передает на RADIUS-сервер для верификации. В сообщениях Access-Request используются атрибуты 206, 207 , в соответствии с draft-sterman-aaa-sip-00.txt.
  • RFC5090-no-challenge - в данном режиме ESBC самостоятельно отправляет абоненту параметры для digest-аутентификации, далее эти параметры и digest response, полученный от абонента, передает на RADIUS-сервер для верификации. В сообщениях Access-Request используются атрибуты 103-122103–122, в соответствии с RFC 5090.
  •  RFC5090 - в данном режиме параметры для digest-аутентификации (в сообщении ACCESS-CHALLENGE) ESBC получает от RADIUS-сервера и пересылает их абоненту.

...

Порядок настройки аутентификации через RADIUS-сервер:

  1. Настройить Настроить RADIUS-сервер(ы).
  2. Настроить radius profile
  3. Настроитьь Настроить aaa profile
  4. Использовать aaa profile в настройках абонентского интерфейса.

...

В таблице ниже приведены минимальные необходимые настройки RADIUS-сервера, описание . Описание всех доступных настроек приведено в разделе Справочник разделе Настройка AAA справочника команд CLI. Настройка AAA.

Шаг

Описание

Команда

Ключи

1

Добавить RADIUS-сервер в список используемых серверов и перейти в режим его конфигурирования.

esbc(config)# radius-server host
{ <IP-ADDR> | <IPV6-ADDR> } [ vrf <VRF> ]

<IP-ADDR> – IP-адрес RADIUS-сервера, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255];

<IPV6-ADDR> – IPv6-адрес RADIUS-сервера, задаётся в виде X:X:X:X::X, где каждая часть принимает значения в шестнадцатеричном формате [0..FFFF]

<VRF> – имя экземпляра VRF, задается строкой до 31 символа.

2

Задать пароль для аутентификации на удаленном RADIUS-сервере.

esbc(config-radius-server)# key ascii-text
{ <TEXT> | encrypted <ENCRYPTED-TEXT> }

<TEXT> – строка [8..16] ASCII-символов;

<ENCRYPTED-TEXT> – зашифрованный пароль, размером [8..16] байт, задаётся строкой [16..32] символов.

3

Задать IPv4/IPv6-адрес, который будет использоваться в качестве IPv4/IPv6-адреса источника в отправляемых RADIUS-пакетах . (можно не указывать , при условиии условии настройки п. 4).

esbc(config-radius-server)# source-address { <ADDR>  | object-group <NETWORK_OBJ_GROUP_NAME> }

<ADDR> – IP-адрес источника, задается в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255];

<NETWORK_OBJ_GROUP_NAME> – список адресов, которые будут использоваться в качестве source address.

4Задать интерфейс или туннель маршрутизатора, IPv4/IPv6-адрес которого будет использоваться в качестве IPv4/IPv6-адреса источника в отправляемых RADIUS-пакетах. (можно не указывать , при условиии условии настройки п. 3).esbc(config-radius-server)# source-interface { <IF> | <TUN> }

<IF> – имя интерфейса устройства, задаётся в виде, описанном в разделе Типы и порядок именования интерфейсов маршрутизатора

<TUN> – имя туннеля устройства, задаётся в виде, описанном в разделе Типы и порядок именования туннелей маршрутизатора.

5Указать тип соединений, для аутентификации которых будет использоваться RADIUS-сервер.esbc(config-radius-server)# usage { all | aaa | auth | acct | pptp | l2tp | voip }
Примечание

Для аутентификации регистраций абонентов ESBC необходимо использовать тип соединения usage voip.

Возможно настроить до восьми RADIUS-серверов.


Настройка RADIUS-профиля

В таблице ниже приведены минимальные необходимые настройки RADIUS-профиля, описание . Описание всех доступных настроек приведено в разделе Справочник команд CLI. разделе Настройки RADIUS-профиля справочника команд CLI.

Шаг

Описание

Команда

Ключи

1

Перейти в раздел конфигурирования ESBC.

esbc(config)# esbc


2

Добавить в конфигурацию RADIUS-профиль  и перейти в режим его конфигурирования.

esbc(config-esbc)# radius profile <NAME>

<NAME> – название RADIUS-профиля, строка [1..64] символов.

3

Выбрать RADIUS-сервер настроенный на предыдущем этапе для аутентификации.

Допускается использование до восьми RADIUS-серверов в одном RADIUS-профиле.

esbc(config-radius-profile)# radius-server host  { <IP-ADDR> | <IPV6-ADDR> } [ vrf <VRF> ]

 

<IP-ADDR> – IP-адрес RADIUS-сервера, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255];

<IPV6-ADDR> – IPv6-адрес RADIUS-сервера, задаётся в виде X:X:X:X::X, где каждая часть принимает значения в шестнадцатеричном формате [0..FFFF]

<VRF> – имя экземпляра VRF, задается строкой до 31 символа.

...

Шаг

Описание

Команда

Ключи

1

Перейти в раздел конфигурирования ESBC.

esbc(config)# esbc


2

Добавить в конфигурацию AAA-профиль  профиль и перейти в режим его конфигурирования.

esbc(config-esbc)# aaa profile <NAME>

<NAME> – название AAA-профиля, строка [1..64] символов.

3

Выбрать RADIUS-профиль, настроенный на предыдущем этапе для аутентификации.

esbc(config-aaa-profile)# auth radius profile <NAME>

 

<NAME> – название RADIUS-профиля, строка [1..64] символов.

Для использования аутентификации абонентов через RADIUS-сервер необходимо указать AAA-профиль в конфигурации абонентского интерфейса (user-Interface), см. раздел Настройка абонентских интерфейсов.


Пример настройки.:

Задача.:

Использовать RADIUS-серверы 192.168.113.200 (основной) и 192.168.113.201 (резервный) для аутентификации регистраций абонентов поступающих на абонентский интерфейс USERS_VIA_RADIUS  в режиме RFC5090-no-challenge.

Решение.:

 1. Настроить основной RADIUS-сервер 192.168.113.200:

...

При получении сообщений REGISTER на абонентский интерфейс USERSинтерфейс USERS_VIA_RADIUS, ESBC будет отправлять  отправлять абоненту параметры для digest-аутентификации в сообщении 401 Unauthorized,   далее эти параметры и digest response, полученный от абонента, будет передаваться на RADIUS-сервер 192.168.113.200 в сообщениии сообщении Access-Request. При получении от сервера Access-Accept сообщение , сообщение REGISTER от абонента будет напрвлено направлено на вышестоящий SIP-сервер. При получении Access-Reject, будет отправлено сообщение 403 Forbidden. При недоступности RADIUS-сервера 192.168.113.200, после таймаута, сообщение Access-Request будет отправлено на резервный RADIUS-сервер 192.168.113.201.

Настройка NAT
Якорь
nat
nat

С целью преодоления соединений через устройства NAT, в ESBC реализована поддержка nat comedia-mode для абонентов и транков.

...

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

Настройка Public IP
Якорь
public-ip
public-ip

Public IP (рус. «публичный IP-адрес») — это внешний IP-адрес, который используется при отправке запросов пользователю или удаленному адресу из внешней сети. 

...

Пример настройки Public IP для транка:

Блок кода
languagec#
#Настройка SIP-транспорта для транка:
vesbc# configure 
vesbc(config)# esbc 
vesbc(config-esbc)# sip transport TRUNK_TRANSPORT
vesbc(config-esbc-sip-transport)# ip address 192.168.1.1
vesbc(config-esbc-sip-transport)# exit

#Настройка медиаресурсов для транка:
vesbc(config-esbc)# media resource TRUNK_MEDIA
vesbc(config-esbc-media-resource)# ip address 192.168.1.1
vesbc(config-esbc-media-resource)# exit

#Настройка параметров транка:
vesbc(config-esbc)# trunk sip TRUNK_PUBLIC_IP
vesbc(config-esbc-trunk-sip)# sip transport TRUNK_TRANSPORT
vesbc(config-esbc-trunk-sip)# media resource 0 TRUNK_MEDIA
vesbc(config-esbc-trunk-sip)# remote address 192.168.1.3
vesbc(config-esbc-trunk-sip)# remote port 5060
vesbc(config-esbc-trunk-sip)# public-ip 10.25.0.1

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

...

Пример использования Public IP:

ESBC получает сообщение, которое должно быть смаршрутизировано в транк TRUNK_PUBLIC_IP: 

...

Блок кода
languagec#
INVITE sip:23002@192.168.1.3:5060 SIP/2.0
Via: SIP/2.0/UDP 10.25.0.1:5060;rport;branch=z9hG4bKPj6e357f04-e13e-4ead-8386-2246d12450b4
Max-Forwards: 70
From: "24001" <sip:24001@192.168.1.1>;tag=76776c9a-022b-4ccf-9458-e83e2701f6c8
To: "23002" <sip:23002@192.168.1.3>
Contact: <sip:24001@10.25.0.1:5060;transport=udp>
Call-ID: 5fc229f6657d7706f2b6c81a44a5b10e
CSeq: 28491 INVITE
Allow: INVITE, ACK, BYE, CANCEL
Supported: 100rel, replaces, ice 
Content-Type: application/sdp
Content-Length:   135

Session Description Protocol Version (v): 0
Owner/Creator, Session Id (o): user1 77755765 7773687637 IN IP4 10.25.0.1
Session Name (s): -
Time Description, active time (t): 0 0
Connection Information (c): IN IP4 10.25.0.1
Media Description, name and address (m): audio 10000 RTP/AVP 8
Media Attribute (a): rtpmap:8 PCMA/8000

Scroll Pagebreak

Настройка QoS
Якорь
qos
qos

QoS (Quality of Service, рус. «качество обслуживания») — технология предоставления различным классам данных различных приоритетов в обслуживании.

...

Блок кода
languagec#
Differentiated Services Field: 0xc8 (DSCP: Unknown, ECN: Not-ECT)
    1100 10.. = Differentiated Services Codepoint: Unknown (50)
    .... ..00 = Explicit Congestion Notification: Not ECN-Capable Transport (0)

Scroll Pagebreak

Настройка локальной обработки регистрации
Якорь
registration simulation
registration simulation

Использование локальной обработки регистрации позволяет снизить нагрузку на сервер регистрации , за счет локального ответа на повторный запрос регистрации.

...

Конфигурация минимального допустимого значения времени регистрации для сервера регистрации составляет от 30 до 65535 секунд (по умолчанию , значение равно 0 и контроль за минимальным временем регистрации не ведется)

...

1. Если в REGISTER, полученном от абонента, expires в поле Contact + 34 секунды (Timer B и время внутренней логики ESBC) больше, чем оставшийся expires на ESBC expires, то отправляем REGISTER  REGISTER на сервер регистрации со значением expires, описанным пунктом выше.

1.1 Если не задано минимальное время регистрации на сервере:

1.2 Если задано минимальное время регистрации на сервере:


2. Если , в REGISTER полученного , полученном от абонента, expires в поле Contact + 34 секунды (Timer B и время внутренней логики ESBC) меньше, чем оставшийся expires на ESBC expires, то регистрация будет обработана локально путем отправки абоненту 200 ОК с expires, пришедшим от него же самого. 

...

Блок кода
languagec#
vesbc# 
vesbc# show esbc users sip 23001@192.168.113.177 detailed 
 User AOR:       23001@192.168.113.177
 User type:      SIP
 Contact count:  1

IN User contact                  IP address of     User         Expires    Registration   Trunk name        IP address of     OUT Trunk contact                
                                 user              interface               expires in                       registrar                                          
                                                   name                                                                                                        
------------------------------   ---------------   ----------   --------   ------------   ---------------   ---------------   ------------------------------   
<sip:23001@192.168.113.170:5098  192.168.113.170   ABONENT      10800      8978          TRUNK_SSW         192.168.113.172   <sip:23001@192.168.113.177:5071   
;transport=udp>                                                                                                               ;transport=udp;line=b6b8cde8c5   
                                                                                                                              741ce4325f9f20fc822641> 

Scroll Pagebreak

Контроль трафика
Якорь
max
max

Контроль входящего трафика
Якорь
max_in
max_in

...