| Оглавление | ||
|---|---|---|
|
Общие сведения
В данном разделе содержится описание функций пограничного контроллера сессий ESBC и примеры их настройки для обеспечения передачи SIP-сигнализации и медиапотоков RTP между разными направлениями.
...
| Информация |
|---|
ESBC-3200 поддерживает до 420000 зарегистрированных абонентов. |
Настройка абонентских интерфейсовЯкорь user-interface user-interface
| user-interface | |
| user-interface |
...
Подробное описание параметров всех настроек можно найти в разделе Настройки абонентского интерфейса Справочника справочника команд CLI.
Scroll Pagebreak
Настройка SIP-транковЯкорь trunk_sip trunk_sip
| trunk_sip | |
| trunk_sip |
SIP-транк представляет собой интерфейс для подключения к вышестоящему SIP-устройству (IP АТС/ SIP-proxy/Удаленный SSW и др.) или группе вышестоящих устройств при включении динамического режима работы транка. При включении динамического режима работы в конфигурации необходимо задать адрес и порт удалённой стороны или диапазон адресов и портов. Эти параметры используются для идентификации источника запроса.
...
- Таблица маршрутизации;
- Таблица модификаций (для входящих и исходящих сообщений);
- SIP-профиль;
- Медиапрофиль;
- Профиль безопасности;
- Режим работы за NAT;
- Public IP;
- QoS;
- Контроль трафика;
- Контроль входящего и исходящего трафика;
- Динамический режим. Используется Используется для подключения к группе вышестоящих SIP-устройств (IP АТС/ SIP-proxy/Удаленный SSW и др.). ;
- Опция "Доверенная сеть" для переадресаций;
- SIP-домен. При настройке домен будет использоваться в host-part URI в заголовках To и From для исходящих сообщений. Во входящих сообщениях будет осуществляться проверка домена в заголовке From.
Подробное описание параметров всех настроек можно найти в разделе Настройки 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
| sip-transport | |
| sip-transport |
...
При использовании типа транспорта tls или wss возможно использование пользовательских сертификатов. Подробнее о пользовательских сертификатах см. в разделе Настройка криптопрофилей.
| Информация |
|---|
Пример настройки SIP-абонентов, использующих WebRTC есть в разделе Примеры настройки ESBC. |
Настройка медиаресурсовЯкорь media_resource media_resource
| media_resource | |
| media_resource |
...
| Предупреждение |
|---|
При использовании одинакового IP-адреса для разных медиаресурсов не допускается пересечение диапазонов портов между этими ресурсами. |
Scroll Pagebreak
Настройка таблиц маршрутизацииЯкорь route-table route-table
| route-table | |
| route-table |
...
Таблица маршрутизации представляет собой набор правил и действий, по которым обрабатывается входящий вызов , и указывается исходящий транк (или транк-группа) для формирования исходящего вызова.
...
Для написания условий можно использовать регулярные выражения PCRE.
Настройка модификаторовЯкорь mod-table mod-table
| mod-table | |
| mod-table |
ESBC поддерживает два типа модификаторов — common и sip.
...
| Примечание |
|---|
При применении на транке/абонентском интерфейсе модификаторов обоих типов одновременно, используется следующий порядок их обработки в зависимости от направления модификации:
|
Общие модификаторы
Пример использования модификатора common.
...
Описание всех команд для настройки общих модификаторов приведено в разделе Настройки общих модификаторов.
Scroll Pagebreak
Модификаторы SIP
Данный тип модификации позволяет изменять любые заголовки сообщений SIP.
...
Описание всех команд для настройки общих модификаторов приведено в разделе Настройки SIP-модификаторов.
| Scroll Pagebreak |
|---|
Модификатор добавления заголовка (add)
Схема:
В конфигурации есть два транка, настроена маршрутизация. Вызов, который приходит из TRUNK_IN, уходит в TRUNK_OUT. Требуется, чтобы в запросе 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=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".
...
| Блок кода | ||
|---|---|---|
| ||
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.
| Блок кода | ||
|---|---|---|
| ||
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 на первом плече.
...
| Блок кода | ||
|---|---|---|
| ||
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).
...
| Блок кода | ||
|---|---|---|
| ||
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.
| Блок кода | ||
|---|---|---|
| ||
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. |
...
| Блок кода | ||
|---|---|---|
| ||
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
| 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 отключена.
...
| Блок кода | ||
|---|---|---|
| ||
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 включена.
| Блок кода | ||
|---|---|---|
| ||
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
| 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
| 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 секунд. |
...
При достижении определенного количества неудачных запросов этот адрес добавится в черный список с временем блокировки, которые которое было настроена настроено в общих настройках.
| Блок кода | ||
|---|---|---|
| ||
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 добавится в черный список с временем блокировки, которые которое было настроена настроено в общих настройках.
| Блок кода | ||
|---|---|---|
| ||
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 |
...
Описание всех команд для настройки криптопрофилей приведено в разделе Настройки криптопрофиля.
Пример настройки 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
| 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-сервер:
- Настройить Настроить RADIUS-сервер(ы).
- Настроить radius profile
- Настроитьь Настроить aaa profile
- Использовать aaa profile в настройках абонентского интерфейса.
...
В таблице ниже приведены минимальные необходимые настройки RADIUS-сервера, описание . Описание всех доступных настроек приведено в разделе Справочник разделе Настройка AAA справочника команд CLI. Настройка AAA.
Шаг | Описание | Команда | Ключи | ||
|---|---|---|---|---|---|
1 | Добавить RADIUS-сервер в список используемых серверов и перейти в режим его конфигурирования. | esbc(config)# radius-server host | <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> – строка [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 } |
|
Возможно настроить до восьми 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 | |
| nat |
С целью преодоления соединений через устройства NAT, в ESBC реализована поддержка nat comedia-mode для абонентов и транков.
...
2. Замена атрибутов direction в answer sdp:
Настройка Public IPЯкорь public-ip public-ip
| public-ip | |
| public-ip |
Public IP (рус. «публичный IP-адрес») — это внешний IP-адрес, который используется при отправке запросов пользователю или удаленному адресу из внешней сети.
...
Пример настройки Public IP для транка:
| Блок кода | ||
|---|---|---|
| ||
#Настройка 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:
...
| Блок кода | ||
|---|---|---|
| ||
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 | |
| qos |
QoS (Quality of Service, рус. «качество обслуживания») — технология предоставления различным классам данных различных приоритетов в обслуживании.
...
| Блок кода | ||
|---|---|---|
| ||
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
| 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, пришедшим от него же самого.
...
| Блок кода | ||
|---|---|---|
| ||
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 | |
| max |
Контроль входящего трафикаЯкорь max_in max_in
| max_in | |
| max_in |
...









