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

Ключ

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

...

ОбъектКоличество
sip transport500
trunk500
user-interface500
trunk-group250
sip profile1000
route table500
rule64 на таблицу route table
condition 64 на правило rule
media profile 1000
media resource1000
mod-table500
mod64 на таблицу mod-table
cause-list64
crypto profile64
flood filter250
security-profile500
Предупреждение

Не рекомендуется использовать максимальное количество объектов конфигурации одновременно, это может повлиять на работоспособность системы.

Scroll Pagebreak

Расчет максимального количества контактов зарегистрированных абонентов для vESBC: 

...

...

...

Примечание

При использовании модификатора CgPN, помимо заголовка From, изменяется user part SIP URI заголовка Contact. При использовании модификатора CdPN, помимо заголовка To, изменяется user part SIP в Requestв Request-URI. 


Примечание

Модификаторы common, настроенные в качестве IN, могут влиять на результат маршрутизации при использовании в route-table условий (condition), т. к. правила route-table обрабатываются после применения модификации. Модификаторы, настроенные в качестве OUT, не влияют на результат маршрутизации.

...

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

При использовании pattern имейте в виду, чтопо умолчанию , синтаксис PCRE является регистрозависимым. Поэтому, поэтому, например, паттерн "sip method pattern INVITE" не эквивалентен паттерну "sip method pattern invite" и отбор метода INVITE INVITE не будетосуществляться при использовании выражения "sip method pattern invite". 


Примечание

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

...

Требуется применять модификатор, который добавляет заголовок Test_header cо значением - test_value только в сообщение INVITE:

...

Требуется применять модификатор, который добавляет заголовок Test_header cо значением - test_value только в сообщения INVITE, BYE и в ответы 200 OK:

...

Требуется применять модификатор, который добавляет заголовок Test_header cо значением - test_value во все запросы и ответы:

Блок кода
languagec#
mod-table sip SIP_MOD
  mod 1 add
# Т.к. по условию требуется добавлять заголовок во все методы, используется отбор любых значений
    sip method pattern .+
# Т.к. по условию требуется добавлять заголовок во все ответы, используется отбор любых значений
    sip response-pattern .+
    header name Test_header
    header value test_value
  exit

Scroll Pagebreak

Требуется применять модификатор, который добавляет заголовок Test_header cо значением - test_value только в предварительные ответы 100-199100–199:

Блок кода
languagec#
mod-table sip SIP_MOD
  mod 1 add
# Т.к. по условию требуется добавлять заголовок во все ответы от 100 до 199, используется, например, регулярное выражение '1\d{2}'
    sip response-pattern '1\d{2}'
    header name Test_header
    header value test_value
  exit

...

В результате если какой-либо заголовок был добавлен модификацией add, а затем этот же заголовок был указан в правиле no-transit, то в исходящем сообщении этот заголовок не будет передан. scroll-pagebreak

Пример: 

Таблица модификации SIP_MOD используется в качестве OUT:

...

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

Scroll Pagebreak

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

...

Блок кода
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 add
vesbc(esbc-mod-table-modification)# 

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

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

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

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.

Scroll Pagebreak

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

Блок кода
INVITE sip:24000@192.168.114.130:5461 SIP/2.0
Via: SIP/2.0/UDP 192.168.114.129:5461;branch=z9hG4bK-372660-1-5
From: "Simple UAC send bye" <sip:24001@192.168.114.130;cpc=priority>;tag=1372660
To: "24000" <sip:24000@192.168.114.130>
Call-ID: 1-372660@192.168.114.129
CSeq: 1 INVITE
Contact: <sip:24001@192.168.114.129:5461>
Max-Forwards: 70
Content-Type: application/sdp
Content-Length: 149

v=0
o=tester 123456 654321 IN IP4 192.168.114.129
s=A conversation
c=IN IP4 192.168.114.129
t=0 0
m=audio 8338 RTP/AVP 8
a=rtpmap:8 PCMA/8000

Scroll Pagebreak

На TRUNK_OUT отправляется уже модифицированный INVITE с добавленным заголовком: 

...

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

Примечание

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

...

Блок кода
vesbc(config-esbc)# trunk sip TRUNK_IN
vesbc(config-esbc-trunk-sip)# mod-table sip in MODTABLE_IN 
vesbc(config-esbc-trunk-sip)# do commit 
vesbc(config-esbc-trunk-sip)# do confirm 

Scroll Pagebreak

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

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

[SDP]

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

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

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

Scroll Pagebreak

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

Схема: 

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

Примечание

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

...

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

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

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

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

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

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

vesbc(esbc-mod-table-modification)# exit
vesbc(esbc-mod-table)# exit

#Привязать таблицу модификаторов к исходящему транку TRUNK_OUT:
vesbc(config-esbc)# trunk sip TRUNK_OUT 
vesbc(config-esbc-trunk-sip)# mod-table sip out MODTABLE_OUT 

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

Scroll Pagebreak

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

...

Блок кода
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.   При отправки отправке сообщения INVITE, полученного из TRUNK_IN в TRUNK_OUT, в host-part заголовков To и From будут использоваться IP-адрес, настроенный в качестве remote address в транке TRUNK_OUT, и IP-адрес sip-транспорта для TRUNK_OUT соответственно (при условии что в транке TRUNK_OUT не настроен домен). 

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

Scroll Pagebreak

Решение:

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

...

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

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

[SDP]

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

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

...

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

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

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

[SDP]

...

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

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

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

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

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

...

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

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

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

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

Scroll Pagebreak

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

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

#Создать SIP-профиль NEW_SIP_PROFILE:
vesbc(config-esbc)# sip profile NEW_SIP_PROFILE 
vesbc(config-esbc-sip-profile)# 

#Включить контроль доступности:
vesbc(config-esbc-sip-profile)# keepalive enable 
vesbc(config-esbc-sip-profile)# 

#Настроить интервалы контроля:
vesbc(config-esbc-sip-profile)# keepalive success-interval 120
vesbc(config-esbc-sip-profile)# keepalive failed-interval 30
vesbc(config-esbc-sip-profile)#  
 
vesbc(config-esbc-sip-profile)# exit
vesbc(config-esbc)#

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

...

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

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

...

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

...

Входящий вызов начинает маршрутизироваться по таблице маршрутизации (ROUTE_TABLE). В результате вызов маршрутизируется по правилу RULE_1 на TRUNK_GROUP и оттуда в TRUNK_1.  TRUNK_1 недоступен, вызов отбивается по истечению истечении Timer B, и происходит перемаршрутизация на TRUNK_2 (следующий транк в транковой группе). Из TRUNK_2 приходит ответ 404 Not Found, и т. к. код ответа совпадает с маской из списка, который используется в TRUNK-GROUP, то происходит маршрутизация на следующее направление. Поскольку в транковой группе больше нет транков, маршрутизация переходит к RULE_2, и вызов маршрутизируется в TRUNK_3.   

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

Без использования списка причин отбоя, перемаршрутизация происходит только по недоступности транка.

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

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

Перемаршрутизация абонентовабонентов 

Вызов с зарегистрированного абонента будет направлен в тот транк, через который осуществлялась его регистрация. В случае неуспешного вызова, перемаршрутизация осуществляться не будет.
При вызове с незарегистрированного абонента сначала идёт проверка, разрешены ли с этого абонентского интерфейса вызовы без регистрации (allow_unreg_call), если проверка успешна, то вызов смаршрутизируется по привязанной таблице маршрутизации и в случае недоступности транка/совпадении ответа с маской из списка произойдёт маршрутизация на следующее направление.

Поведение при перенаправлении
Якорь
redirect
redirect
 

Настройка поведения при перенапрвлении позволяет использовать разные режимы обработки сообщений 3XX.

...

Отправляем INVITE абоненту на тот транк, где он зарегистрирован и 181 в сторону A.

Блок кода
languagec#
A(транк)---IP_a           |     IP_ESBC_1---ESBC---IP_ESBC_3       |        IP_d---D(trunk)
                          |                                        | 
                          |           INVITE number_с@IP_d---------|---------------------->
                          |           From: number_a@IP_ESBC_3     |
                          |           To: number_b@IP_b            |
                          |           Diversion: number_b@IP_ESBC_3|
                          |                                        |
     <--------------------|-----------181 Call is Being Forwarded  |

...

Отправляем INVITE на указанный адрес и 181 в сторону А.

Блок кода
languagec#
A(транк)---IP_a           |     IP_ESBC_1---ESBC---IP_ESBC_2       |                    IP_с
                          |                                        | 
                          |           INVITE number_с@IP_c         |---------------------->
                          |           From: number_a@IP_ESBC_2     |
                          |           To: number_b@IP_b            |
                          |           Diversion: number_b@IP_ESBC_2|
                          |                                        |
     <--------------------|-----------181 Call is Being Forwarded  |

...

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

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

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

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

...

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

#Создать медиапрофиль для транка TRUNK_2:  
vesbc(config-esbc)# media profile FOR_TRUNK_2

#Запретить использование всех видеокодеков:
vesbc(config-esbc-media-profile)# no codec allow H26
vesbc(config-esbc-media-profile)# no codec allow H261
vesbc(config-esbc-media-profile)# no codec allow H263
vesbc(config-esbc-media-profile)# no codec allow VP
vesbc(config-esbc-media-profile)# exit

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

...

В результате конфигурация медиапрофиля будет выглядеть следующим образом:

Блок кода
  media profile FOR_TRUNK_2
    codec allow AMR
    codec allow CLEARMODE
    codec allow CN
    codec allow G72
    codec allow G722/ 9
    codec allow G728 15
    codec allow G729/ 18
    codec allow GSM 3
    codec allow ILBC
    codec allow L16/44100 11
    codec allow L16/44100/2 10
    codec allow OPUS
    codec allow PCMA 8
    codec allow PCMU 0
    codec allow SPEEX
    codec allow T38 t38
    codec allow telephone-event
  exit

...

2. Запретить использование кодеков G729 и G726 для транка TRUNK_1. 

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

#Создать медиапрофиль для транка TRUNK_1: 
vesbc(config-esbc)# media profile FOR_TRUNK_1

#Запретить использование кодеков G729 и G726: 
vesbc(config-esbc-media-profile)# no codec allow G729/
vesbc(config-esbc-media-profile)# no codec allow G72
vesbc(config-esbc-media-profile)# exit

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

Scroll Pagebreak

В результате конфигурация медиапрофиля будет выглядеть следующим образом:

...

В данном примере в транк TRUNK_1 приходит INVITE c SDP Offer1, в котором наиболее приоритетным кодеком является G729, а также указан кодек G726, но т. к. настройками медиапрофиля FOR_TRUNK_1 данные кодеки запрещены, то в транк TRUNK_2 будет отправлен SDP Offer2 без данных кодеков. UA TRUNK_2 выбирает в качестве приоритетного кодек PCMA (SDP Answer2), и в результате ESBC отправляет в SDP Answer1 наиболее приоритетный кодек из SDP Offer1 (кроме G729) — PCMA.

Scroll Pagebreak

3. Разрешить использование кодека QCELP для обоих транков (в дополнение к паттернам по умолчанию).

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

#Создать медиапрофиль для использования в обоих транках: 
vesbc(config-esbc)# media profile FOR_TRUNKS

#Добавить паттерн для кодека QCELP:
vesbc(config-esbc-media-profile)#codec allow QCELP
vesbc(config-esbc-media-profile)# exit

#Привязать медиапрофиль к обоим транкам:
vesbc(config-esbc)# trunk sip TRUNK_1
vesbc(config-esbc-trunk-sip)# media profile FOR_TRUNKS
vesbc(config-esbc-trunk-sip)# exit
vesbc(config-esbc)# trunk sip TRUNK_2
vesbc(config-esbc-trunk-sip)# media profile FOR_TRUNKS
vesbc(config-esbc-trunk-sip)# exit
vesbc(config-esbc)# do commit
vesbc(config-esbc)# do confirm

...

В результате конфигурация медиапрофиля будет выглядеть следующим образом:

Блок кода
 media profile FOR_TRUNKS
codec allow AMR
codec allow CLEARMODE
codec allow CN
codec allow G72
codec allow G722/ 9
codec allow G728 15
codec allow G729/ 18
codec allow GSM 3
codec allow H26
codec allow H261 31
codec allow H263 34
codec allow ILBC
codec allow L16/44100 11
codec allow L16/44100/2 10
codec allow OPUS
codec allow PCMA 8
codec allow PCMU 0
codec allow QCELP
codec allow SPEEX
codec allow T38 t38
codec allow VP
codec allow telephone-event
exit

...

В данном примере в транк TRUNK_1 приходит INVITE c SDP Offer1, в котором содержится кодек QCELP, и т. к. настройками медиапрофиля FOR_TRUNKS этот кодек разрешен, то он будет передаваться SDP Offer2, отправляемый в транк TRUNK_2. UA TRUNK_2 выбирает кодек QCELP, и в результате он будет согласован в SDP Answer1.

...

В данном примере в транк TRUNK_1 приходит INVITE c SDP Offer1 с набором кодеков. Т. к. настройками медиапрофиля FOR_TRUNK_1 запрещены все кодеки кроме PCMA, то в транк TRUNK_2 будет отправлен SDP Offer2, содержащий только кодек PCMA.

Scroll Pagebreak

Транскодирование

Транскодирование — это возможность преобразования медиапотоков, основанных на разных кодеках. 

...

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

Scroll Pagebreak

Список кодеков, поддерживаемых в режиме транскодирования:

Аудиокодеки

Видеокодеки

AMR                

AMR-WB          

G722              

G7221-24        

G7221-32

G7221C-24

G7221C-32          

G7221C-48        

G726-16            

G726-24          

G726-32            

G726-40          

G729               

GSM              

ILBC               

L16-MONO         

OPUS               

PCMA             

PCMU               

SPEEX-NB         

SPEEX-UWB          

SPEEX-WB 

H263-1998   

H264        

VP8         

VP9

Scroll Pagebreak

Поддержка кодеков для транскодирования осуществляется командами: 

...

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

Scroll Pagebreak

Порядок обработки SDP для выбора режима работы:

...

Если на одном из направлений не используется медиапрофиль (т. е. используется медиапрофиль по умолчанию), или в профиле не настроено ни одно правило codec audio/video, то транскодирование осуществляться не будет.

Scroll Pagebreak

Пример:

В транке TRUNK_1 используется медиапрофиль FOR_TRUNK_1, в котором разрешены кодеки PCMA и PCMU для проксирования, и не указаны кодеки, разрешенные для транскодирования. 

...

Т. о. включение поддержки транскодирования для кодеков командами codec {audio | video | image} {all | <CODEC>} не означает, что передаваемые через ESBC медиаданные всегда будут транскодироваться.

Scroll Pagebreak

Пример:

Для транков TRUNK_1 и TRUNK_2 используется один и тот же медиапрофиль FOR_TRUNKS, в котором указан только кодек PCMA, разрешенный для транскодирования, и отсутствуют паттерны кодеков для проксирования.

...

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

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

...

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

Информация

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

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

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

...

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

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

...

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

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

Информация

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

Информация

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

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

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

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

Пример настройки 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.

Scroll Pagebreak

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

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

Блок кода
languagec#
INVITE sip:23002@192.168.1.1:5060 SIP/2.0
Via: SIP/2.0/UDP 192.168.1.4:5061;rport;branch=z9hG4bK-1914230-1-1
From: "24001" <sip:24001@192.168.1.4:5061>;tag=1
To: "23002" <sip:23002@192.168.1.1:5060>
Call-ID: 1-1914230@192.168.1.4
Cseq: 1 INVITE
Contact: <sip:24001@192.168.1.4:5061>
Max-Forwards: 70
Allow: INVITE, ACK, BYE, CANCEL
Content-Type: application/sdp
Content-Length: 138

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

...

ESBC пересылает INVITE в транк TRUNK_PUBLIC_IP.
В SDP, Via и Contact вместо адреса привязанного SIP-транспорта (192.168.1.1) используется Public IP транка (10.25.0.1): 

...

Информация

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

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

...

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

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

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

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

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

...

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

Scroll Pagebreak

Пример:

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

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

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

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

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

...

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

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

...

Информация

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

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

...

Авария

Текст аварии

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

cdr-send-error

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

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

cdr-write-error

CDR alarm: failed to write

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

general-max-calls-limit

Host <host_name> max calls limit reached

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

general-max-cps-limit

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

general-max-rps-limit

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

media-resources

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

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

module-connection

Module <module_type> host <host_id> is down

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

trunk-group-max-calls-limit

Trunk-Group <trunk_group_name> max calls limit reached

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

trunk-group-max-cps-limit

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

trunk-group-max-rps-limit

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

trunk-max-calls-limit

Trunk <trunk_name> max calls limit reached

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

trunk-max-cps-limit

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

trunk-max-rps-limit

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

trunk-unavailable

Trunk <trunk_name> is unavailable

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

user-interface-max-calls-limit

User interface <ui_name> max calls limit reached

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

user-interface-max-cps-limit

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

user-interface-max-rps-limit

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

voip-block-aor

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

voip-block-ip

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

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

...

  • Заголовок файла (опционален) (<hostname> CDR. File started at 'YYYYMMDDhhmmss');

  • Отличительный признак (опционален);

  • Время поступления вызова;

  • Время ответа на вызов;

  • Входящий номер вызывающего абонента;

  • Исходящий номер вызывающего абонента;
  • Входящий номер вызываемого абонента;

  • Исходящий номер вызываемого абонента;

  • Имя trunk/user-interface вызывающего абонента;

  • Имя trunk/user-interface вызываемого абонента;

  • Длительность вызова;

  • Причина разъединения (согласно ITU-T Q.850);

  • Индикатор успешного вызова (1 — успешный, 0 — неуспешный);

  • Сторона-инициатор разъединения (1 — вызывающая сторона, 2 — вызываемая сторона, 3 — ESBC);

  • Call-ID входящего вызова;

  • Call-ID исходящего вызова;

  • Номер вызываемого абонента при переадресации;

  • IP-адрес шлюза вызывающего абонента;

  • IP-адрес шлюза вызываемого абонента;

  • Список IP-адресов из заголовка Record-Route при установлении соединения в направлении от вызывающего абонента;

  • Список IP-адресов из заголовка Via при установлении соединения в направлении от вызывающего абонента;

  • IP-адрес из заголовка Contact вызывающего абонента; 

  • IP-адрес из заголовка Contact вызываемого абонента.

...

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

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

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

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

...

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

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


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

...

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

...

Блок кода
vesbc#
vesbc# configure
vesbc(config)# esbc
vesbc(config-esbc)# media resource MEDIA_SSW
vesbc(config-esbc-media-resource)# ip address 192.168.16.113

#Указать диапазон портов, который будет выделяться на ESBC для передачи голоса. Данная команда необязательная,. еслиЕсли ее не указывать, будет использоваться диапазон портов 8000–65535 .
vesbc(config-esbc-media-resource)# port-range 1024-65535

...

Блок кода
vesbc#
vesbc# configure
vesbc(config)# esbc
vesbc(config-esbc)# media resource MEDIA_SSW
vesbc(config-esbc-media-resource)# ip address 192.168.16.113

# Указать диапазон портов, который будет выделяться на ESBC для передачи голоса. Данная команда необязательная. Если ее не указывать, будет использоваться диапазон портов 8000–65535 .
vesbc(config-esbc-media-resource)# port-range 1024-65535

...

Scroll Pagebreak

7. Создать SIP-trunk в транк в сторону SSW: 

Блок кода
vesbc#
vesbc# configure
vesbc(config)# esbc
vesbc(config-esbc)# trunk sip TRUNK_SSW
vesbc(config-esbc-trunk-sip)# sip transport TRANSPORT_SSW
vesbc(config-esbc-trunk-sip)# remote address 192.168.16.65
vesbc(config-esbc-trunk-sip)# remote port 5060
vesbc(config-esbc-trunk-sip)# media resource 0 MEDIA_SSW

...

Блок кода
vesbc#
vesbc# configure
vesbc(config)# esbc
vesbc(config-esbc)# media resource MEDIA_SSW
vesbc(config-esbc-media-resource)# ip address 192.168.16.113

#Указать диапазон портов, который будет выделяться на ESBC для передачи голоса. Данная команда необязательная. Если ее не указывать, будет использоваться диапазон портов 8000–65535.  
vesbc(config-esbc-media-resource)# port-range 1024-65535

...

Блок кода
vesbc#
vesbc# configure
vesbc(config)# esbc
vesbc(config-esbc)# media resource MEDIA_SSW
vesbc(config-esbc-media-resource)# ip address 192.168.16.113

#Указать диапазон портов, который будет выделяться на ESBC для передачи голоса. Данная команда необязательная. Если ее не указывать, будет использоваться диапазон портов 8000–65535.
vesbc(config-esbc-media-resource)# port-range 1024-65535

...