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

Ключ

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

...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

...

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


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

Задача:

Включить поддержку таймеров SIP-сессий на транке TRUNK_2 с параметрами Session Expires – 120, Min SE – 120, Refresher – UAS. На транке TRUNK_1 таймеры не используются.

Решение.:

Настроить SIP-профиль и привязать его к транку TRUNK_2:

...

Блок кода
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 2880         2025-08-05 13:04:19   

...

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

Задача:

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

Решение:

1. Выполнить базовую настройку ESBC для обеспечения маршрутизации абонентских подключений в сторону ECSS-10:

...

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

Scroll Pagebreak

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

Задача:

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

Решение:

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

...

  • Если не задано минимальное время регистрации на сервере (аналогично отключенной локальной регистрации):
    1. В сторону сервера регистрации отправляем REGISTER с expires, пришедшим от абонента; 
    2. В сторону абонента отправляем 200 ОК с expires из ответа от сервера регистраций.

Image RemovedImage Added

Scroll Pagebreak

  • Если задано минимальное время регистрации на сервере:
    1. В сторону сервера регистрации отправляем REGISTER с наибольшим expires, пришедшим от абонента, и минимальным временем регистрации на сервере;
    2. В сторону абонента отправляем 200 ОК с минимальным expires из ответа от сервера регистраций и пришедшего от абонента.

Image RemovedImage Added

Scroll Pagebreak

...

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

Image RemovedImage Added

Scroll Pagebreak

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

Image RemovedImage Added

Scroll Pagebreak

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

Image RemovedImage Added

Информация

При разрегистрации абонента логика локальной регистрации не используется.

...

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

Scroll Pagebreak

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

...

После применения изменений количество запросов SUBSCRIBE, проходящих через абонентский интерфейс USER_IFACE не может быть больше 50. Все запросы SUBSCRIBE, поступающие после превышении превышения лимита, будут проигнорированы.  

Scroll Pagebreak

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

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

#Переход в настройки абонентского интерфейса:
vesbc(config-esbc)# user-interface sip USER_IFACE
vesbc(config-esbc-user-interface)# 

#Ограничение максимального количества активных подписок:
vesbc(config-esbc-user-interface-sip)# max in subscriptions 1000


#Применение и подтверждение изменений:
vesbc(config-esbc-user-interface)# do commit 
vesbc(config-esbc-user-interface)# do confirm 

...

Т. к. транки TRUNK_1 и TRUNK_2 входят в состав транк-группы TRUNKGROUP, то суммарное количество исходящих CPS c любого из этих транков не может превышать 50, так как приоритет ограничения у транк-группы выше.  

Scroll Pagebreak

Пример ограничения на транке исходящих вызовов в секунду:

...