Вы просматриваете старую версию данной страницы. Смотрите текущую версию.

Сравнить с текущим просмотр истории страницы

« Предыдущий Версия 7 Следующий »

Настройка E-SBC для SIP-абонентов

Схема применения:


Описание:

Абонентский шлюз/SIP-абоненты отправляют сообщение на IP-адрес 192.168.20.120 порт 5062, E-SBC пересылает данный трафик с IP-адреса 192.168.16.113 порт 5061 на адрес Softswitch 192.168.16.65 порт 5060.

Для реализации данной схемы общий алгоритм настройки следующий:

  1. Настроить сетевые интерфейсы на E-SBC в сторону SSW и в сторону SIP-абонентов.
  2. Создать SIP-транспорт в сторону SSW и SIP-абонентов.
  3. Создать медиаресурсы для обоих направлений, назначить им диапазон портов для передачи голоса.
  4. Создать SIP-Users и SIP-trunk.
  5. Создать правила, по которым будут маршрутизироваться вызовы от абонентов до SSW.

Порядок конфигурирования E-SBC:

1. Пробросить сетевые интерфейсы в vESR по инструкции:

gi1/0/1 — внутренний сетевой интерфейс до SSW;
gi1/0/2 — внешний сетевой интерфейс для абонентов.

2. Настроить IP-адрес на интерфейсе в сторону SSW:

vesr# configure
vesr(config)# interface gigabitethernet 1/0/1
vesr(config-if-gi)# description "SSW"
vesr(config-if-gi)# ip address 192.168.16.113/24
vesr(config-if-gi)# ip firewall disable

3. Настроить IP-адрес на внешнем интерфейсе в сторону абонентов:

vesr# configure
vesr(config)# interface gigabitethernet 1/0/2
vesr(config-if-gi)# description "ABONENTS"
vesr(config-if-gi)# ip address 192.168.20.120/24

4. Создать SIP-транспорт в сторону SSW: 

vesr#
vesr# configure
vesr(config)# esbc
vesr(config-esbc)# sip-transport TRANSPORT_SSW
vesr(config-esbc-sip-transport)# ip-address 192.168.16.113
vesr(config-esbc-sip-transport)# port 5061

5. Создать SIP-транспорт в сторону абонентов:

vesr#
vesr# configure
vesr(config)# esbc
vesr(config-esbc)# sip-transport TRANSPORT_ABONENTS
vesr(config-esbc-sip-transport)# ip-address 192.168.20.120
vesr(config-esbc-sip-transport)# port 5062

6. Создать медиаресурсы для согласования и передачи голоса на плече SSW --- E-SBC:

vesr#
vesr# configure
vesr(config)# esbc
vesr(config-esbc)# media-resource MEDIA_SSW
vesr(config-esbc-media-resource)# ip-address 192.168.16.113

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

7. Создать медиаресурсы для согласования и передачи голоса на плече E-SBC --- Абонентский шлюз/SIP-абоненты:

vesr#
vesr# configure
vesr(config)# esbc
vesr(config-esbc)# media-resource MEDIA_ABONENTS
vesr(config-esbc-media-resource)# ip-address 192.168.20.120

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

vesr#
vesr# configure
vesr(config)# esbc
vesr(config-esbc)# trunk sip TRUNK_SSW
vesr(config-esbc-trunk-sip)# sip-transport TRANSPORT_SSW
vesr(config-esbc-trunk-sip)# remote addr 192.168.16.65
vesr(config-esbc-trunk-sip)# remote port 5060
vesr(config-esbc-trunk-sip)# media resource 0 MEDIA_SSW

9. Создать user-interface в сторону абонентов:

vesr#
vesr# configure
vesr(config)# esbc
vesr(config-esbc)# user-interface sip ABONENTS
vesr(config-esbc-trunk-sip)# sip-transport TRANSPORT_ABONENTS
vesr(config-esbc-trunk-sip)# media resource 0 MEDIA_ABONENTS

# Если абоненты находятся за NAT выполнить команду:
vesr(config-esbc-user-interface-sip)# nat-comedia-mode on

10. Создать таблицу маршрутизации и добавить туда правила, по которым вызовы, приходящие с абонентов будут маршрутизироваться на SSW:

vesr# 
vesr# configure 
vesr(config)# esbc 
vesr(config-esbc)# route-table TO_SSW
vesr(config-esbc-route-table)# rule 0
vesr(config-esbc-route-table-rule)# action direct-to-trunk TRUNK_SSW

11. Привязать созданную таблицу маршрутизации к user-interface:

vesr# 
vesr# configure 
vesr(config)# esbc 
vesr(config-esbc)# user-interface sip ABONENTS 
vesr(config-esbc-user-interface-sip)# route-table TO_SSW

12. Применить конфигурацию и подтвердить изменения:

vesr# commit
vesr# confirm

Настройка E-SBC для SIP-транков

Схема применения:

Описание:

Транковый шлюз отправляет сообщения с IP-адреса 192.168.20.99 порта 5060 на IP-адрес 192.168.20.120 порт 5067, E-SBC пересылает данный трафик с IP-адреса 192.168.16.113 порта 5065 на адрес Softswitch 192.168.16.65 порт 5060. И в обратную сторону SSW отправляет сообщения с IP-адреса 192.168.16.65 порта 5060 на IP-адрес 192.168.16.113 порт 5065, E-SBC пересылает данный трафик с IP-адреса 192.168.20.120 порта 5067 на адрес транкового шлюза 192.168.20.99 порт 5060.

Для реализации данной схемы общий алгоритм настройки следующий:

  1. Настроить сетевые интерфейсы на E-SBC в сторону SSW и в сторону транкового шлюза.
  2. Создать SIP-транспорт в сторону SSW и транкового шлюза.
  3. Создать медиаресурсы для обоих направлений, назначить им диапазон портов для передачи голоса.
  4. Создать 2 SIP-trunk в сторону SSW и в сторону транкового шлюза.
  5. Создать правила, по которым будут маршрутизироваться вызовы от транкового шлюза до SSW и наоборот от SSW до транкового шлюза.

Порядок конфигурирования E-SBC:

1. Пробросить сетевые интерфейсы в vESR по инструкции:

gi1/0/1 — сетевой интерфейс до SSW;
gi1/0/2 — сетевой интерфейс до транкового шлюза.

2. Настроить IP-адрес на интерфейсе в сторону SSW:

vesr# configure
vesr(config)# interface gigabitethernet 1/0/1
vesr(config-if-gi)# description "SSW"
vesr(config-if-gi)# ip address 192.168.16.113/24

3. Настроить IP-адрес на интерфейсе в сторону транкового шлюза:

vesr# configure
vesr(config)# interface gigabitethernet 1/0/2
vesr(config-if-gi)# description "TRUNK_GATEWAY"
vesr(config-if-gi)# ip address 192.168.20.120/24

4. Создать SIP-транспорт в сторону SSW:

vesr#
vesr# configure
vesr(config)# esbc
vesr(config-esbc)# sip-transport TRANSPORT_SSW
vesr(config-esbc-sip-transport)# ip-address 192.168.16.113
vesr(config-esbc-sip-transport)# port 5065

5. Создать SIP-транспорт в сторону транкового шлюза:

vesr#
vesr# configure
vesr(config)# esbc
vesr(config-esbc)# sip-transport TRANSPORT_TRUNK_GATEWAY
vesr(config-esbc-sip-transport)# ip-address 192.168.20.120
vesr(config-esbc-sip-transport)# port 5067

6. Создать медиаресурсы для согласования и передачи голоса на плече SSW --- E-SBC:

vesr#
vesr# configure
vesr(config)# esbc
vesr(config-esbc)# media-resource MEDIA_SSW
vesr(config-esbc-media-resource)# ip-address 192.168.16.113

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

7. Создать медиаресурсы для согласования и передачи голоса на плече E-SBC --- Транковый шлюз:

vesr#
vesr# configure
vesr(config)# esbc
vesr(config-esbc)# media-resource MEDIA_TRUNK_GATEWAY
vesr(config-esbc-media-resource)# ip-address 192.168.20.120

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

vesr#
vesr# configure
vesr(config)# esbc
vesr(config-esbc)# trunk sip TRUNK_SSW
vesr(config-esbc-trunk-sip)# sip-transport TRANSPORT_SSW
vesr(config-esbc-trunk-sip)# remote addr 192.168.16.65
vesr(config-esbc-trunk-sip)# remote port 5060
vesr(config-esbc-trunk-sip)# media resource 0 MEDIA_SSW

9. Создать SIP-trunk в сторону транкового шлюза:

vesr#
vesr# configure
vesr(config)# esbc
vesr(config-esbc)# trunk sip TRUNK_GATEWAY
vesr(config-esbc-trunk-sip)# sip-transport TRANSPORT_TRUNK_GATEWAY
vesr(config-esbc-trunk-sip)# remote addr 192.168.20.99
vesr(config-esbc-trunk-sip)# remote port 5060
vesr(config-esbc-trunk-sip)# media resource 0 MEDIA_TRUNK_GATEWAY

10. Создать таблицу маршрутизации и добавить туда правила, по которым вызовы, приходящие с транкового шлюза будут маршрутизироваться на SSW:

vesr# 
vesr# configure 
vesr(config)# esbc 
vesr(config-esbc)# route-table TO_SSW
vesr(config-esbc-route-table)# rule 0
vesr(config-esbc-route-table-rule)# action direct-to-trunk TRUNK_SSW

11. Создать таблицу маршрутизации и добавить туда правила, по которым вызовы, приходящие с SSW будут маршрутизироваться на транковый шлюз:

vesr# 
vesr# configure 
vesr(config)# esbc 
vesr(config-esbc)# route-table TO_TRUNK_GATEWAY
vesr(config-esbc-route-table)# rule 0
vesr(config-esbc-route-table-rule)# action direct-to-trunk TRUNK_GATEWAY

12. Привязать созданные таблицы маршрутизации к транкам:

vesr# 
vesr# configure 
vesr(config)# esbc 
vesr(config-esbc)# trunk sip TRUNK_SSW
vesr(config-esbc-trunk-sip)# route-table TO_TRUNK_GATEWAY
vesr(config-esbc-trunk-sip)# exit
vesr(config-esbc)# trunk sip TRUNK_GATEWAY
vesr(config-esbc-trunk-sip)# route-table TO_SSW

13. Применить конфигурацию и подтвердить изменения:

vesr# commit
vesr# confirm

Создание/конфигурирование медиаресурсов (media resources)

Медиаресурсы представляют собой диапазоны UDP-портов и IP-адресов, используемых E-SBC для передачи/получения потоков RTP.

Пример:

Требуется, чтобы E-SBC для передачи медиатрафика использовал IP-адрес 192.168.16.113 и порты с 20000 до 30000.

Решение:

Перейти к настройкам модуля управления конфигурацией E-SBC:

vesr# 
vesr# configure 
vesr(config)# esbc 

Создать и настроить соответствующим образом медиаресурс:

#Создание/переход в настройки медиаресурса MEDIA_1:
vesr(config-esbc)# media-resource MEDIA_1

#Назначить IP-адрес 192.168.16.113 для использования в медиаресурсах:
vesr(config-esbc-media-resource)# ip-address 192.168.16.113

#Настроить диапазон UDP-портов с 20000 до 30000 для использовании в медиаресурсах:
vesr(config-esbc-media-resource)# port-range 20000-30000

После привязки созданного медиаресурса к какому-либо направлению (транку, транковой группе или user-interface), он будет использоваться для передачи/получения потоков RTP на выбранных направлениях.

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

Создание/конфигурирование SIP-транспорта (sip-transport)

SIP-транспорт представляет точку входа/выхода сигнализации, т. е. это IP-адрес и порт, с которого E-SBC будет отправлять и на который будет принимать сигнальные сообщения.

Пример:

Требуется, чтобы E-SBC для передачи/приема сигнальных сообщений на встречную сторону использовал IP-адрес 192.168.16.113 порт 5065.

Решение:

Перейти к настройкам модуля управления конфигурацией E-SBC:

vesr# 
vesr# configure 
vesr(config)# esbc 

Создать и настроить соответствующим образом SIP-транспорт:

#Создание/переход в настройки sip-транспорта NEW_TRANSPORT:
vesr(config-esbc)# sip-transport NEW_TRANSPORT

#Назначить IP-адрес 192.168.16.113 для использования SIP-транспортом:
vesr(config-esbc-sip-transport)# ip-address 192.168.16.113

#Назначить порт 5065 для использования SIP-транспортом:
vesr(config-esbc-sip-transport)# port 5065

#Выбрать протокол транспортного уровня, используемый для приема/передачи сообщений SIP:
vesr(config-esbc-sip-transport)# mode udp-prefer

После привязки созданного SIP-транспорта к какому-либо направлению (транку или user-interface) он будет использоваться для передачи/получения сигнальных SIP-сообщений на выбранных направлениях.

Поддержано несколько режимов работы с протоколами транспортного уровня, конфигурируется командой mode из примера выше. Режимы работы следующие:

  • tcp-only — использовать только TCP-протокол;
  • tcp-prefer — прием по UDP и TCP. Отправка по TCP. В случае, если не удалось установить соединение по TCP, отправка производится по UDP;
  • tls — использовать tls;
  • udp-only — использовать только UDP-протокол;
  • udp-prefer — прием по UDP и TCP. Отправка пакетов более 1300 байт по TCP, менее 1300 байт — по UDP.

Создание/конфигурирование транковых групп (trunk-group)

Транк-группа представляет собой набор транков различного типа (в текущей версии поддерживается только SIP-транк) и алгоритм балансировки нагрузки между ними.

Помимо этого группа содержит набор следующих настроек:

  • Таблица маршрутизации;
  • Медиапрофиль;
  • Медиаресурсы;
  • SIP-профиль;
  • Таблицы модификации всех типов как для пре-роутинга так и для пост-роутинга.

В текущей версии балансировка вызовов осуществляется алгоритмом round-robin.

Логика работы:

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

Пример работы общих настроек:

Схема:

На E-SBC настроена транковая группа TG_SSW, в состав которой входят 2 транка TRUNK_SSW1 и TRUNK_SSW2, также настроен еще один транк TRUNK_IN, который не входит в состав транковой группы. Требуется настроить схему таким образом, чтобы вызовы, которые пришли с TRUNK_IN, маршрутизировались на TG_SSW, и наоборот, вызовы, которые пришли с TRUNK_SSW1 и TRUNK_SSW2, маршрутизировались на TRUNK_IN.

Решение:

1. Создать SIP-транспорт в сторону TRUNK_SSW1 и TRUNK_SSW2:

vesr#
vesr# configure
vesr(config)# esbc
vesr(config-esbc)# sip-transport TRANSPORT_SSW
vesr(config-esbc-sip-transport)# ip-address 192.168.16.113
vesr(config-esbc-sip-transport)# port 5065

2. Создать SIP-транспорт в сторону TRUNK_IN:

vesr#
vesr# configure
vesr(config)# esbc
vesr(config-esbc)# sip-transport TRANSPORT_TRUNK_IN
vesr(config-esbc-sip-transport)# ip-address 192.168.20.120
vesr(config-esbc-sip-transport)# port 5067

3. Создать медиаресурсы для согласования и передачи голоса на плече TRUNK_IN --- E-SBC:

vesr#
vesr# configure
vesr(config)# esbc
vesr(config-esbc)# media-resource MEDIA_TRUNK_IN
vesr(config-esbc-media-resource)# ip-address 192.168.20.120

4. Создать медиаресурсы для согласования и передачи голоса на плече E-SBC --- TG_SSW:

vesr#
vesr# configure
vesr(config)# esbc
vesr(config-esbc)# media-resource MEDIA_TG_SSW
vesr(config-esbc-media-resource)# ip-address 192.168.16.113

5. Создать SIP-trunk в сторону TRUNK_IN:

vesr#
vesr# configure
vesr(config)# esbc
vesr(config-esbc)# trunk sip TRUNK_IN
vesr(config-esbc-trunk-sip)# sip-transport TRANSPORT_TRUNK_IN
vesr(config-esbc-trunk-sip)# remote addr 192.168.20.99
vesr(config-esbc-trunk-sip)# remote port 5060
vesr(config-esbc-trunk-sip)# media resource 0 MEDIA_TRUNK_IN

6. Создать SIP-trunk в сторону TRUNK_SSW1 и TRUNK_SSW2:

vesr#
vesr# configure
vesr(config)# esbc
vesr(config-esbc)# trunk sip TRUNK_SSW1
vesr(config-esbc-trunk-sip)# sip-transport TRANSPORT_SSW
vesr(config-esbc-trunk-sip)# remote addr 192.168.16.115
vesr(config-esbc-trunk-sip)# remote port 5060
vesr(config-esbc-trunk-sip)# exit
vesr(config-esbc)# trunk sip TRUNK_SSW2
vesr(config-esbc-trunk-sip)# sip-transport TRANSPORT_SSW
vesr(config-esbc-trunk-sip)# remote addr 192.168.16.116
vesr(config-esbc-trunk-sip)# remote port 5060

7. Создать транковую группу TG_SSW и добавить туда транки TRUNK_SSW1 и TRUNK_SSW2:

vesr#
vesr# configure
vesr(config)# esbc

#Создание и переход в настройки транковой группы TG_SSW:
vesr(config-esbc)# trunk-group TG_SSW

#Добавление в состав транковой группы транков TRUNK_SSW1 и TRUNK_SSW2:
vesr(config-esbc-trunk-group)# trunk 0 TRUNK_SSW1
vesr(config-esbc-trunk-group)# trunk 1 TRUNK_SSW2

#Добавление медиаресурсов:
vesr(config-esbc-trunk-group)# media-resource 0 MEDIA_TG_SSW

8. Создать таблицу маршрутизации и добавить туда правила, по которым вызовы, приходящие с транка TRUNK_IN, будут маршрутизироваться в транковую группу TG_SSW:

vesr# 
vesr# configure 
vesr(config)# esbc 
vesr(config-esbc)# route-table TO_TG_SSW
vesr(config-esbc-route-table)# rule 0
vesr(config-esbc-route-table-rule)# action direct-to-trunk-group TG_SSW

9. Создать таблицу маршрутизации и добавить туда правила, по которым вызовы, приходящие с TG_SSW, будут маршрутизироваться в транк TRUNK_IN:

vesr# 
vesr# configure 
vesr(config)# esbc 
vesr(config-esbc)# route-table TO_TRUNK_IN
vesr(config-esbc-route-table)# rule 0
vesr(config-esbc-route-table-rule)# action direct-to-trunk TRUNK_IN

10. Привязать созданные таблицы маршрутизации к транку TRUNK_IN и транковой группе TG_SSW:

vesr# 
vesr# configure 
vesr(config)# esbc 
vesr(config-esbc)# trunk sip TRUNK_IN
vesr(config-esbc-trunk-sip)# route-table TO_TG_SSW
vesr(config-esbc-trunk-sip)# exit
vesr(config-esbc)# trunk-group TG_SSW
vesr(config-esbc-trunk-sip)# route-table TO_TRUNK_IN

11. Применить конфигурацию и подтвердить изменения:

vesr# commit
vesr# confirm

На шаге 7 при создании транков, в конфигурацию транков не были добавлены медиаресурсы и таблица маршрутизации. Но эти настройки есть в транковой группе TG_SSW, куда включены оба транка. Поэтому при поступлении вызовов с этих транков они будут маршрутизироваться по таблице маршрутизации, которая привязана к TG_SSW, медиаресурсы для согласования и передачи RTP также будут браться из транковой группы TG_SSW.

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

Логика работы транковой группы для распределения вызовов на транки, входящие в ее состав

1. Распределение вызовов без использования алгоритма балансировки:

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

Пример:

На E-SBC натроена транковая группа TRUNK_GROUP, в состав которой входят 3 транка (TRUNK_1, TRUNK_2 и TRUNK_3). Приходит вызов и по правилу маршрутизации уходит на эту транковую группу. В результате E-SBC совершает попытку вызова в первый транк в составе транковой группы (TRUNK_1), если транк недоступен, то происходит попытка позвонить во второй транк (TRUNK_2). Если попытка вызова также неуспешна, то будет попытка позвонить в последний транк (TRUNK_3). Если попытка также неуспешна, то вызов на первом плече отбивается. Если на каком-то из транков пришел ответ 200ОК, то вызов устанавливается.

Все последующие вызовы также будут сначала отправлены в TRUNK_1, и только в случае неудачи будут попытки позвонить в TRUNK_2 и TRUNK_3.

2. Распределение вызовов без использования алгоритма балансировки, но с включенной опцией pick-once:

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

Опцию pick-once можно включить в настройках таблицы маршрутизации при выборе действия direct-to-trunk-group:

vesr# 
vesr# configure 
vesr(config)# esbc 
vesr(config-esbc)# route-table TO_TG_SSW
vesr(config-esbc-route-table)# rule 0

#Включение опции pick-once при создании правила маршрутизации на транковую группу TG_SSW:
vesr(config-esbc-route-table-rule)# action direct-to-trunk-group TG_SSW pick-once

3. Распределение вызовов с использованием алгоритма балансировки round-robin (опция pick-once выключена):

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

Пример:

На E-SBC настроена транковая группа TRUNK_GROUP, в состав которой входят 3 транка (TRUNK_1, TRUNK_2 и TRUNK_3). Приходит вызов и по правилу маршрутизации уходит на эту транковую группу. В результате E-SBC совершает попытку вызова в первый транк в составе транковой группы (TRUNK_1), если вызов неуспешный(транк недоступен или ответ совпал с маской из списка причин отбоя), то происходит попытка позвонить во второй транк (TRUNK_2). Если попытка вызова также неуспешна, то будет попытка позвонить в последний транк (TRUNK_3). Если попытка также неуспешна, то вызов на первом плече отбивается. Если на каком-то из транков пришел ответ 200ОК, то вызов устанавливается.

Второй вызов, который смаршрутизировался на данную транковую группу, сначала уйдет на TRUNK_2. Если вызов неуспешный, то E-SBC совершит попытку позвонить в TRUNK_3 и потом в TRUNK_1. Если попытки неуспешны, то вызов на первом плече отбивается. По такому же принципу третий вызов сначала распределится в TRUNK_3, четвертый вызов — в TRUNK_1 и т. д. 

Опция балансировки round-robin включается в настройках транковой группы:

vesr#
vesr# configure
vesr(config)# esbc

#Создание и переход в настройки транковой группы TRUNK_GROUP:
vesr(config-esbc)# trunk-group TRUNK_GROUP

#Добавление в состав транковой группы транков TRUNK_1, TRUNK_2 и TRUNK_3:
vesr(config-esbc-trunk-group)# trunk 0 TRUNK_1
vesr(config-esbc-trunk-group)# trunk 1 TRUNK_2
vesr(config-esbc-trunk-group)# trunk 2 TRUNK_3

#Активация режима балансировки round-robin на траковой группе:
vesr(config-esbc-trunk-group)# balancing round-robin

4. Распределение вызовов с использованием алгоритма балансировки round-robin (опция pick-once включена):

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

Пример:

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

Создание/конфигурирование таблиц маршрутизации (route-table)

Схематично таблица маршрутизации выглядит следующим образом:

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

Таблицы маршрутизации применяются к входящим вызовам и могут быть настроены для транков, транк-групп и user-interface.

Таблица состоит из правил (RULE), правило обязательно должно содержать действие (ACTION), и, опционально, — условия (CONDITION), которые должны быть соблюдены для выполнения данного действия маршрутизации. Если условия отсутствуют, действия совершаются безусловно.
Действие — это операция, результатом которой будет являться конкретное направление (DEST).
В текущей версии в качестве направлений могут выступают транки и транк-группы, поддержаны условия маршрутизации по CGPN и CDPN.

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

В случае маршрутизации на транк-группу действует тот же алгоритм. Т. е. проходим по всем транкам выбранной группы по порядку до тех пор, пока сессия не согласуется, или не будет выбран последний транк. Если после прохождения по всем транкам выбранной группы нам не удалось согласовать второе плечо, мы продолжим выбирать оставшиеся правила из таблицы маршрутизации.

В общем, этот алгоритм можно описать так: проход по всем направлениям, всех правил маршрутизации, пока сессия не будет согласована, или не будет рассмотрено последнее правило.
Исключением является правило Reject — отбой входящей сессии. Это правило завершает проход по таблице маршрутизации.

Выбор следующего направления будет происходить:

  • при внутренних сбоях, до согласования сессии;

  • при отбое с встречной стороны, кроме 3хх кодов SIP.

Пример перебора правил:


В таблице маршрутизации два правила, первое направляет вызов в TRUNK_GROUP, второе направляет вызов в TRUNK_3, условия нигде не настроены. Приходит вызов и начинает маршрутизироваться по данной таблице маршрутизации. В результате вызов уходит на TRUNK_GROUP и оттуда в TRUNK_1, в случае если вызов через TRUNK_1 не установился (например, транк недоступен), то маршрутизация продолжает выполняться, вызов отправляется в TRUNK_2. Если попытка вызова в TRUNK_2 также завершилась неудачно, E-SBC переходит к RULE_2 и отправляет вызов в TRUNK_3. Если и здесь попытка установить вызов также оказалась неуспешной, то первое плечо отбивается, и вызов завершается, т. к. больше правил в таблице маршрутизации нет. Если попытка установить вызов успешна, то вызов устанавливается.

vesr# 
vesr# configure 
vesr(config)# esbc 
vesr(config-esbc)# route-table ROUTE_TABLE

#Добавление первого правила с действием отправить вызов в транковую группу TRUNK_GROUP:
vesr(config-esbc-route-table)# rule 0
vesr(config-esbc-route-table-rule)# action direct-to-trunk-group TRUNK_GROUP
vesr(config-esbc-route-table-rule)# exit

#Добавление второго правила с действием отправить вызов в транк TRUNK_3:
vesr(config-esbc-route-table)# rule 1
vesr(config-esbc-route-table-rule)# action direct-to-trunk TRUNK_3

Пример работы условий:

В таблице маршрутизации два правила, у обоих есть условия по CGPN и CDPN. Например, приходит вызов, у которого номер А=23000, номер Б=24000. E-SBC заходит в RULE_1 и анализирует условие CONDITION_1, условие истинно, далее происходит анализ условия из CONDITION_2, условие также истинно. Значит правило RULE_1 подходит для маршрутизации, и вызов отправляется в TRUNK_1.

Рассмотрим вызов с номерами, которые подходят под условия из RULE_2. Приходит вызов, у которого номер А=23000, номер Б=24001. E-SBC заходит в RULE_1 и анализирует условие CONDITION_1, условие истинно, далее происходит анализ условия из CONDITION_2, условие ложно. Значит правило не подходит (правило подходит, только если все условия внутри правила истинны). Далее E-SBC переходит к RULE_2, анализирует условие CONDITION_3, условие истинно, далее происходит анализ условия из CONDITION_4, условие также истинно. Значит правило RULE_2 подходит для маршрутизации, и вызов отправляется в TRUNK_2.

Если приходит вызов, который не подходит ни под одно правило, то такой вызов отбивается.

vesr# 
vesr# configure 
vesr(config)# esbc 
vesr(config-esbc)# route-table ROUTE_TABLE

#Добавление первого правила с условиями CONDITION_1, CONDITION_2 и действием отправить вызов в транк TRUNK_1:
vesr(config-esbc-route-table)# rule 0
vesr(config-esbc-route-table-rule)# condition 0 cgpn ^23000$
vesr(config-esbc-route-table-rule)# condition 1 cdpn ^24000$
vesr(config-esbc-route-table-rule)# action direct-to-trunk TRUNK_1
vesr(config-esbc-route-table-rule)# exit

#Добавление второго правила с условиями CONDITION_3, CONDITION_4 и действием отправить вызов в транк TRUNK_2:
vesr(config-esbc-route-table)# rule 1
vesr(config-esbc-route-table-rule)# condition 0 cgpn ^23000$
vesr(config-esbc-route-table-rule)# condition 1 cdpn ^24001$
vesr(config-esbc-route-table-rule)# action direct-to-trunk TRUNK_2

Синтаксис для написания условий

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

Создание/конфигурирование медиапрофилей(media profile)

Медиапрофили служат для настройки общих параметров передачи и приёма медиаданных. Медиапрофили используются в user-interface, транках и транк-группах.

Разрешённые типы медиаданных

В медиапрофиле можно настроить разрешённые типы медиаданных для направления, для выбора доступно 3 типа:

  • audio
  • image
  • video

Если какой-то тип из представленных в SDP выключен в медиапрофиле, то он будет деактивирован.

По умолчанию все типы медиаданных включены

vesr# 
vesr# configure 
vesr(config)# esbc 

#Создание медиапрофиля NEW_MEDIA_PROFILE:
vesr(config-esbc)# media-profile NEW_MEDIA_PROFILE 
vesr(config-esbc-media-profile)# 

#Отключение передачи image и video:
vesr(config-esbc-media-profile)# no media-type image 
vesr(config-esbc-media-profile)# no media-type video 
vesr(config-esbc-media-profile)# 

vesr(config-esbc-media-profile)# exit
vesr(config-esbc)#

#Привязать медиапрофиль к user-interface NEW_USER_IFACE:
vesr(config-esbc)# user-interface sip NEW_USER_IFACE
vesr(config-esbc-user-interface-sip)# media profile NEW_MEDIA_PROFILE 
vesr(config-esbc-user-interface-sip)# 

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

После внесения изменений любой тип медиаданных, пришедших на user-interface, кроме audio будет отключен.

Таймаут ожидания RTP-пакетов

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

vesr# 
vesr# configure 
vesr(config)# esbc 

#Создание медиапрофиля NEW_MEDIA_PROFILE:
vesr(config-esbc)# media-profile NEW_MEDIA_PROFILE 
vesr(config-esbc-media-profile)# 

#Включение таймера в медиапрофиле:
vesr(config-esbc-media-profile)# rtp-timeout 100
vesr(config-esbc-media-profile)# 
 
vesr(config-esbc-media-profile)# exit
vesr(config-esbc)#

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

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

Если после внесения изменений во время вызова с транка NEW_TRUNK в течение 100 секунд не будут приходить RTP-пакеты, то вызов будет принудительно завершаться.

Создание/конфигурирование модификаторов (modification table)

Таблица модификаций содержит список модификаций, которые применяются к входящим или исходящим SIP-сообщениям. Таблицы модификаций используются в транках и транк-группах. Их можно подключить, как out — тогда правила будут применяться при отправке сообщения. Или, как in тогда правила применяются при получении сообщения.
Таблица из транк-групп применяется только в том случае, если в транке нет своей таблицы. В модификациях можно использовать регулярные выражения PCRE

При сравнении имён заголовков требуется точное совпадение строк, в то время как при поиске в теле заголовка — достаточно совпадения подстроки. По умолчанию из входящего сообщения
вырезаются все заголовки. Модификации не применяются к тем сообщениям, которые создаются самим SBC (100 trying, ack в ответ на 200 OK, 200 OK в ответ на BYE).

Неподдерживаемые заголовки

Нельзя модифицировать следующие заголовки:

  • Call-ID

  • Contact

  • Content-Length

  • Content-Type

  • Cseq

  • From

  • To

  • Via

  • Accept

  • Allow

  • Expires

  • Min-Expires

  • Proxy-Authenticate

  • Proxy-Authorization

  • Require

  • Supported

  • WWW-Authenticate

  • Max-forwards

  • Min-SE

  • Session-Expires

Поддерживаемые модификации

В текущей версии поддерживаются следующие модификации:

  • add — добавление заголовка.
  • no-transit — удаление заголовка. Данная команда используется только в out заголовках (таблицы in всегда вырезают все заголовки, полученные в сообщении из сети).
  • replace — замена заголовка.

    Данное правило не подразумевает передачу заголовка — если правило используется в in таблице, необходимо добавить передачу соответствующего заголовка с помощью правила transit.

  • transit — передача заголовка. Данная команда используется только в in таблицах (таблицы out всегда передают все заголовки, полученные с другого плеча).

Порядок применения модификаций

В первую очередь применяются модификации транзита — incoming и outcoming. Затем применяются модификации замены в том порядке, в котором они заданы в таблице. В конце добавляются новые заголовки.

Пример использования модификатора добавления заголовка (add)

Схема:

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

vesr# 
vesr# configure 
vesr(config)# esbc 

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

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

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

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

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

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

#Привязать таблицу модификаторов к входящему транку TRUNK_IN:
vesr(config-esbc)# trunk sip TRUNK_IN 
vesr(config-esbc-trunk-sip)# mod-table sip in MODTABLE_IN 

#Применить и подтвердить изменения:
vesr(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.
vesr(config-esbc-trunk-sip)# do confirm 
Configuration has been confirmed. Commit timer canceled.

После внесения изменений в конфигурацию с 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

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

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


Пример использования модификатора удаления заголовка (no-transit)

Схема:

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

vesr# 
vesr# configure 
vesr(config)# esbc 

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

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

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

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

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

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

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

#Применить и подтвердить изменения:
vesr(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.
vesr(config-esbc-trunk-sip)# do confirm 
Configuration has been confirmed. Commit timer canceled.

До внесения изменений в конфигурацию в 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=z9hG4bKPjjju.7u4O03Aty93vQq0Q1huigSIqGVIr
Max-Forwards: 70
From: "Simple UAC send bye" <sip:24001@192.168.114.130>;tag=CW.53L5FPJAUBsiRspMYqtjTtOTzZxHg
To: "24000" <sip:24000@192.168.114.129>
Contact: <sip:24001@192.168.114.130:5460;transport=udp>
Call-ID: V4OOROjNahUbinXtA648s9eI2kjE5cCI
CSeq: 18905 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 3927595234 3927595234 IN IP4 192.168.114.130
s=A conversation
c=IN IP4 192.168.114.130
t=0 0
m=audio 8066 RTP/AVP 8
a=rtpmap:8 PCMA/8000

После внесения изменений в конфигурацию в TRUNK_OUT отправляется следующий INVITE (заголовок Test_header отсутствует):

INVITE sip:24000@192.168.114.129:5460 SIP/2.0
Via: SIP/2.0/UDP 192.168.114.130:5460;rport;branch=z9hG4bKPjz8Y5BfoTrBQlqecLCu34TIyYn-6rX5dH
Max-Forwards: 70
From: "Simple UAC send bye" <sip:24001@192.168.114.130>;tag=qTwcY3ZHvA6SHvuRsoo7w40r9yXzjEEp
To: "24000" <sip:24000@192.168.114.129>
Contact: <sip:24001@192.168.114.130:5460;transport=udp>
Call-ID: yHvNLSIvp0DQYSRFPRpfgVUv9U0uKEHT
CSeq: 10147 INVITE
Allow: PRACK, SUBSCRIBE, NOTIFY, REFER, INVITE, ACK, BYE, CANCEL, UPDATE
Supported: timer, 100rel, replaces
Session-Expires: 1800
Min-SE: 90
Content-Type: application/sdp
Content-Length:   157

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

В случае, если в заголовке Test_header будет содержимое отличное от "example string", заголовок будет отправлен в TRUNK_OUT.

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

Пример использования модификатора транзита и замены заголовка (replace)

Схема:

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

vesr# 
vesr# configure 
vesr(config)# esbc 

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

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

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

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

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

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

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

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

#Указать место в содержимом заголовка, которое необходимо заменить (конец строки исходного содержимого заголовка):
vesr(esbc-mod-table-modification)# value-pattern $

#Добавить правило для подмены содержимого заголовка (к концу строки исходного содержимого заголовка добавляется 456):
vesr(esbc-mod-table-modification)# replacement 456

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

#Привязать таблицу модификаторов к входящему транку TRUNK_IN:
vesr(config-esbc)# trunk sip TRUNK_IN
vesr(config-esbc-trunk-sip)# mod-table sip in MODTABLE_IN 

#Применить и подтвердить изменения:
vesr(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.
vesr(config-esbc-trunk-sip)# do confirm 
Configuration has been confirmed. Commit timer canceled.

После внесения изменений в конфигурацию с 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-375510-1-5
From: "Simple UAC send bye"  <sip:24001@192.168.114.130;cpc=priority>;tag=1375510
To: "24000" <sip:24000@192.168.114.130>
Call-ID: 1-375510@192.168.114.129
CSeq: 1 INVITE
Contact: <sip:24001@192.168.114.129:5461>
Max-Forwards: 70
#Заголовок, который необходимо протранзитить и заменить:
Test_header: 123
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 7624 RTP/AVP 8
a=rtpmap:8 PCMA/8000

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

INVITE sip:24000@192.168.114.129:5460 SIP/2.0
Via: SIP/2.0/UDP 192.168.114.130:5460;rport;branch=z9hG4bKPjIbcILUaVB0cQTFaGLLb7ccpnbTQIRvV3
Max-Forwards: 70
From: "Simple UAC send bye" <sip:24001@192.168.114.130>;tag=toP8wIO79wo47ChSYy69MFOyd4vhGRNF
To: "24000" <sip:24000@192.168.114.129>
Contact: <sip:24001@192.168.114.130:5460;transport=udp>
Call-ID: dLsiFI4-aD2faceSTLZu.-kuHfN.pJtG
CSeq: 22556 INVITE
Allow: PRACK, SUBSCRIBE, NOTIFY, REFER, INVITE, ACK, BYE, CANCEL, UPDATE
Supported: timer, 100rel, replaces
Session-Expires: 1800
Min-SE: 90
#Измененный заголовок:
Test_header: 123456
Content-Type: application/sdp
Content-Length:   157

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

Работа с логами

Логирование работы E-SBC осуществляется с помощью syslog. Более подробно настройки syslog описаны в разделе Управление SYSLOG справочника команд CLI.

Модули, входящие в состав E-SBC

Название

Описание

Назначение

esbc_core

модуль основной логики

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

esbc_sip_balancer

модуль управления подсистемой SIP

получение сообщений SIP (на открытый сокет) и передача их в модуль esbc_sip_worker

esbc_sip_worker

модуль расширения подсистемы SIP

адаптер протокола SIP, обрабатывает сообщения и передает данные модулю esbc_core

esbc_media_balancer

модуль управления подсистемой media

управление ресурсами в подсистеме media, выделяет RTP-порты и передает их в модуль esbc_media_worker

esbc_media_worker

модуль расширения подсистемы media

обработка медиапотоков (RTP)

esbc_config_manager

адаптер базы данных конфигурации

хранение конфигурации системы

esbc_access_mediator

модуль внешнего доступа

обработка внешних взаимодействий с системой CLI

esbc_ipc

брокер сообщений

обеспечение связи всех модулей в системе

esbc_dispatcher

модуль контроля состояния модулей

контроль модулей, индикация об изменении состояний модулей

esbc_sm

модуль управления абонентскими записями

добавление/удаление записей о регистрации абонентов, добавление/удаление/изменение контактов регистрации, хранение и восстановление записей из базы, предоставление информации о записях и контактах абонентов другим модулям системы

esbc_voip_guard

модуль fail2ban

отслеживает попытки обращения к сервису телефонии, при обнаружении постоянно повторяющихся неудачных попыток обращения с одного и того же IP-адреса или хоста модуль блокирует попытки с этого IP-адреса/хоста

esbc_sysio

модуль взаимодействия с ОС

служит прослойкой между E-SBC и ОС, на которой он разворачивается, предоставляет единый интерфейс взаимодействия с системой и реализует мониторинг различных системных событий

Включение логирования работы модулей E-SBC производится в разделе debug:

vesr#

#Переход в раздел debug:
vesr# debug 
vesr(debug)# 

#Включение логирования модуля esbc_dispatcher:
vesr(debug)# debug esbc disp 

#Включение логирования модуля esbc_config_manager:
vesr(debug)# debug esbc cfgmgr 

#Включение логирования модуля esbc_access_mediator:
vesr(debug)# debug esbc accmed 

#Включение логирования модуля esbc_core:
vesr(debug)# debug esbc core 

#Включение логирования модуля esbc_sip_balancer:
vesr(debug)# debug esbc sipbl 

#Включение логирования модуля esbc_sip_worker:
vesr(debug)# debug esbc sipwrk 

#Включение логирования модуля esbc_media_balancer:
vesr(debug)# debug esbc mediabl 

#Включение логирования модуля esbc_media_worker:
vesr(debug)# debug esbc mediawrk 

#Включение логирования модуля esbc_sysio:
vesr(debug)# debug esbc sysio 

#Включение логирования модуля esbc_sm:
vesr(debug)# debug esbc submngr 

#Включение логирования модуля esbc_voip_guard:
vesr(debug)# debug esbc voip-guard 

#Применение и подтверждение настроек:
vesr(debug)# do commit 
vesr(debug)# do confirm

  • Нет меток