...
Для написания условий можно использовать регулярные выражения PCRE.
Возможность перехода между таблицами маршрутизации (каскадирование таблиц маршрутизации)
В конфигурации таблицы маршрутизации реализована команда switch-route-table <route-table-name> для продолжения маршрутизации SIP-запроса через другую таблицу маршрутизации.
Использование каскадного принципа таблиц маршрутизации позволяет гибко настраивать маршрутизацию между направлениями.
Примеры использования каскадных таблиц маршрутизации
Допускается использовать каскадный переход из нескольких таблиц маршрутизации, например:
Маршрутизация на разные направления через общую таблицу маршрутизации
Для всех транков (например, TRUNK_1, TRUNK_2, TRUNK_3) указать одну таблицу маршрутизации (например, MAIN). Все правила и условия для маршрутизации в конкретный транк указаны в отдельной таблице маршрутизации для этого транка (таблицы маршрутизации RT_1, RT_2, RT_3). При добавлении транков в конфигурации необходимо создать соответствующую таблицу маршрутизации и добавить новое правило в таблицу MAIN.
Пример конфигурации:
| Блок кода | ||
|---|---|---|
route-table MAIN
rule 0
action switch-route-table RT_1
exit
rule 1
action switch-route-table RT_2
exit
rule 2
| ||
| Блок кода | ||
| ||
vesbc# configure vesbc(config)# esbc #Создание таблицы маршрутизации ROUTE_TABLE_1 и добавление правила с действием сменить таблицу маршрутизации на ROUTE_TABLE_2: vesbc(config-esbc)# route-table ROUTE_TABLE_1 vesbc(config-esbc-route-table)# rule 5 vesbc(config-esbc-route-table-rule)# action switch-route-table ROUTE_TABLE_2 vesbc(config-esbc-route-table-rule)# exit vesbc(config-esbc-route-table)# exit #Создание таблицы маршрутизации ROUTE_TABLE_2 и добавление правила с действием сменить таблицу маршрутизации на ROUTE_TABLE_3: vesbc(config-esbc)#RT_3 exit exit route-table RT_1 rule 0 action direct-to-trunk TRUNK_1 condition 0 cdpn '100' exit exit route-table ROUTERT_TABLE_2 vesbc(config-esbc-route-table)# rule 5 vesbc(config-esbc-route-table-rule)#0 action switchdirect-routeto-tabletrunk ROUTE_TABLE_3 vesbc(config-esbc-route-table-rule)# exit vesbc(config-esbc-route-table)# exit #Создание таблицы маршрутизации ROUTE_TABLE_3 и добавление правила с действием сменить таблицу маршрутизации на ROUTE_TABLE_4: vesbc(config-esbc)#TRUNK_2 condition 0 cdpn '200' exit exit route-table ROUTERT_TABLE_3 vesbc(config-esbc-route-table)# rule 5 vesbc(config-esbc-route-table-rule)#0 action switchdirect-routeto-tabletrunk ROUTETRUNK_TABLE_4 vesbc(config-esbc-route-table-rule)# exit vesbc(config-esbc-route-table)# exit #Создание таблицы маршрутизации ROUTE_TABLE_4 и добавление правила с действием отправить вызов в транк TRUNK_1: vesbc(config-esbc)# route-table ROUTE_TABLE_4 vesbc(config-esbc-route-table)# rule 5 vesbc(config-esbc-route-table-rule)# action direct-to-trunk TRUNK_1 | ||
| Примечание | ||
Запрещено указывать в правиле action switch-route-table название той таблицы, в которой указывается данное правило. Пример: Блок кода | 3 condition 0 cdpn '300' exit exit trunk sip TRUNK_1 route-table MAIN ... exit trunk sip TRUNK_2 route-table MAIN ... exit trunk sip TRUNK_3 route-table MAINexit ... exit |
Маршрутизация на разные направления через общую таблицу маршрутизации
Для всех транков (например, TRUNK_1, TRUNK_2, TRUNK_3) указать одну таблицу маршрутизации (например, MAIN). Все правила и условия для маршрутизации в конкретный транк указаны в отдельной таблице маршрутизации для этого транка (таблицы маршрутизации RT_1, RT_2, RT_3). При добавлении транков в конфигурации необходимо создать соответствующую таблицу маршрутизации и добавить новое правило в таблицу MAIN.
Пример конфигурации:
В таком случае маршрутизация любого вызова из любого направления будет осуществляться по всем правилам всех таблиц маршрутизации до первого совпадения CdPN. Если совпадение не будет найдено, то вызов завершится кодом SIP 404 "Not Found".
Смена таблиц маршрутизации
В конфигурации таблицы маршрутизации реализована команда switch-route-table <route-table-name> для продолжения маршрутизации SIP-запроса через другую таблицу маршрутизации.
Использование каскадного принципа таблиц маршрутизации позволяет гибко настраивать маршрутизацию между направлениями.
Примеры использования каскадных таблиц маршрутизации
Допускается использовать каскадный переход из нескольких таблиц маршрутизации, например:
| Блок кода | ||
|---|---|---|
| ||
vesbc# configure
vesbc(config)# esbc
#Создание таблицы маршрутизации ROUTE_TABLE_1 и добавление правила с действием сменить таблицу маршрутизации на ROUTE_TABLE_2:
vesbc(config-esbc)# route-table ROUTE_TABLE_1
vesbc(config-esbc-route-table)# rule 5
vesbc(config-esbc-route-table-rule)# | ||
| Блок кода | ||
route-table MAIN rule 0 action switch-route-table RT_1 exit rule 1 action switch-route-table RTROUTE_TABLE_2 exit rule 2 action switch-route-table RT_3 exit exit route-table RT_1 rule 0 action direct-to-trunk TRUNK_1 condition 0 cdpn '100' exit exit route-table RT_2 rule 0 action direct-to-trunk TRUNK_2 condition 0 cdpn '200' exit exit route-table RT_3 rule 0 action direct-to-trunk TRUNK_3 condition 0 cdpn '300' exit exit trunk sip TRUNK_1 route-table MAIN ... exit trunk sip TRUNK_2 vesbc(config-esbc-route-table-rule)# exit vesbc(config-esbc-route-table)# exit #Создание таблицы маршрутизации ROUTE_TABLE_2 и добавление правила с действием сменить таблицу маршрутизации на ROUTE_TABLE_3: vesbc(config-esbc)# route-table ROUTE_TABLE_2 vesbc(config-esbc-route-table)# rule 5 vesbc(config-esbc-route-table-rule)# action switch-route-table ROUTE_TABLE_3 vesbc(config-esbc-route-table-rule)# exit vesbc(config-esbc-route-table)# exit #Создание таблицы маршрутизации ROUTE_TABLE_3 и добавление правила с действием сменить таблицу маршрутизации на ROUTE_TABLE_4: vesbc(config-esbc)# route-table ROUTE_TABLE_3 vesbc(config-esbc-route-table)# rule 5 vesbc(config-esbc-route-table-rule)# action switch-route-table ROUTE_TABLE_4 vesbc(config-esbc-route-table-rule)# exit vesbc(config-esbc-route-table)# exit #Создание таблицы маршрутизации ROUTE_TABLE_4 и добавление правила с действием отправить вызов в транк TRUNK_1: vesbc(config-esbc)# route-table ROUTE_TABLE_4 vesbc(config-esbc-route-table)# rule 5 vesbc(config-esbc-route-table-rule)# action direct-to-trunk TRUNK_1 |
| Примечание | ||||||||
|---|---|---|---|---|---|---|---|---|
Запрещено указывать в правиле action switch-route-table название той таблицы, в которой указывается данное правило. Пример:
|
...
Маршрутизация на разные направления через последовательный каскад таблиц маршрутизации
...
При получении сообщений REGISTER на абонентский интерфейс USERS_VIA_RADIUS, ESBC будет отправлять абоненту параметры для digest-аутентификации в сообщении 401 Unauthorized, далее эти параметры и digest response, полученный от абонента, будет передаваться на RADIUS-сервер 192.168.113.200 в сообщении Access-Request. При
При получении от сервера Access-Accept, сообщение сообщение REGISTER от абонента будет направлено на вышестоящий SIP-сервер. При получении :
При получении Access-Reject, будет отправлено сообщение 403 Forbidden:
. При недоступности RADIUS-сервера 192.168.113.200, после таймаута, сообщение Access-Request будет отправлено на резервный RADIUS-сервер 192.168.113.201.:
Настройка локальной аутентификации запросов
| Якорь | ||||
|---|---|---|---|---|
|
...
| Примечание |
|---|
Если в профиле учётных данных не будет подходящего номера, то ESBC перешлёт 401/407 ответ на первое плечо. |
Схема работы:
Пример настройки локальной аутентификации абонента:
...
При отсутствии регистраций направление будет считаться недоступным.
Схема работы:
Алгоритм настройки транка для транка для работы функции:
- Добавить аутентификационные данные в профиль учётных данных.
- Привязать профиль учётных данных к AAA-профилю.
- Привязать AAA-профиль к транку.
- Включить клиентский режим работы регистрации транка.
...
| Блок кода | ||
|---|---|---|
| ||
vesbc(config-esbc)# vesbc(config-esbc)# media resource MEDIA_TRUNK_1 vesbc(config-esbc-media-resource)# ip address 192.168.113.207 vesbc(config-esbc-media-resource)# exit vesbc(config-esbc)# sip transport TRANSPORT_TRUNK_1 vesbc(config-esbc-sip-transport)# ip address 192.168.113.207 vesbc(config-esbc-sip-transport)# port 5090 vesbc(config-esbc-sip-transport)# exit vesbc(config-esbc)# route-table TO_PPTP_USER vesbc(config-esbc-route-table)# rule 1 vesbc(config-esbc-route-table-rule)# action direct-to-trunk PPTP_USER vesbc(config-esbc-route-table-rule)# exit vesbc(config-esbc-route-table)# exit vesbc(config-esbc)# trunk sip TRUNK_1 vesbc(config-esbc-trunk-sip)# sip transport TRANSPORT_TRUNK_1 vesbc(config-esbc-trunk-sip)# route-table TO_PPTP_USER vesbc(config-esbc-trunk-sip)# media resource 1 MEDIA_TRUNK_1 vesbc(config-esbc-trunk-sip)# remote address 192.168.113.200 vesbc(config-esbc-trunk-sip)# remote port 5091 vesbc(config-esbc-trunk-sip)# exit vesbc(config-esbc)# exit vesbc(config)# |
Пример настройки PPTP-клиента для подключения SIP-транков.
Задача
Организовать подключение в режиме PPTP-клиента к вышестоящему серверу и использовать это подключения в качестве SIP-транка.
IP-адрес сервера PPTP - 10.30.101.150
Учетная запись для подключения клиента – логин: pptp_user, пароль: simplepass.
Решение
Выполнить настройку сетевых интерфейсов:
Настроить маршрутизацию вызовов из транка PPTP_USER в транк TRUNK_1:
| Блок кода |
|---|
vesbc(config)# esbc |
| Блок кода |
vesbc# configure vesbc(config-esbc)# interface gigabitethernet 1/0/route-table TO_TRUNK_1 vesbc(config-esbc-ifroute-gitable)# descriptionrule LAN1 vesbc(config-esbc-route-table-rule)# action direct-to-trunk TRUNK_1 vesbc(config-esbc-route-table-rule)# exit vesbc(config-esbc-route-table)# exit vesbc(config-esbc)# trunk sip PPTP_USER vesbc(config-esbc-trunk-sip)# route-table TO_TRUNK_1 vesbc(config-esbc-trunk-sip)# exit vesbc(config-esbc)# exit |
Настройка маршрутизации для транка PPTP_USER2 выполняется аналогино.
Пример настройки PPTP-клиента для подключения SIP-транков.
Задача
Организовать подключение в режиме PPTP-клиента к вышестоящему серверу и использовать это подключения в качестве SIP-транка.
IP-адрес сервера PPTP - 10.30.101.150
Учетная запись для подключения клиента – логин: pptp_user, пароль: simplepass.
Решение
Выполнить настройку сетевых интерфейсов:
| Блок кода |
|---|
vesbc# configure
vesbc(config)# interface gigabitethernet 1/0/1
vesbc(config-if-gi)# description LAN
vesbc(config-if-gi)# ip address 192.168.113.208/20
vesbc(config-if-gi)# exit
vesbc(config)# interface gigabitethernet 1/0/2
vesbc(config-if-gi)# description WAN
vesbc(config-if-gi)# ip address 10.30.101.151/24
vesbc(config-if-gi)# exit
vesbc(config)# |
Выполнить настройку firewal для разрешения прохождения протокола PPTP на интерфейс gigabitethernet 1/0/2Создать зону безопасности для PPTP-тунеля:
| Блок кода |
|---|
vesbc(config)# security zone WANPPTP_TENNEL vesbc(config-security-zone)# exit vesbc(config)# security zone-pair WAN self vesbc(config-security-zone-pair)# rule 10 |
Создать и настроить PPTP-тунель:
| Блок кода | ||
|---|---|---|
| ||
vesbc(config)# vesbc(config-security-zone-pair-rule)# tunnel actionpptp permit1 vesbc(config-pptp)# security-zone-pair-rule)# match protocol gre PPTP_TENNEL #Указать учетные данные пользователя pptp_user vesbc(config-security-zone-pair-rulepptp)# enable vesbc(config-security-zone-pair-rule)# exit vesbc(config-security-zone-pair)# rule 20 vesbc(config-security-zone-pair-rule)# action permitusername pptp_user password ascii-text simplepass #Указать IP-адрес PPTP-сервера vesbc(config-security-zone-pair-rulepptp)# matchremote protocol tcpaddress 10.30.101.150 vesbc(config-security-zone-pair-rulepptp)# matchignore destination-port port-range 1723default-route vesbc(config-security-zone-pair-rulepptp)# enable vesbc(config-security-zone-pair-rulepptp)# exit vesbc(config-security-zone-pair)# exit vesbc(config)# |
Поместить интерфейс gigabitethernet 1/0/2 в зону безопасности WAN:
)# |
| Примечание |
|---|
Для использования подключенных PPTP-клиентов в качестве SIP-транков следует указывать IP-адрес, который будет выдвваться сервером PPTP каждому клиенту, в явном виде (команда remote address в конфигурации ppp-user ). Иначе IP-адреса, выдаваемые PPTP-клиентам будут выдаваться в случайном порядке из диапазона указанного в настроках PPTP-сервера. В таком случае невозможно будет настроить SIP-транк до конкретного клиента, т.к. для работы в режиме транка требуется указание адреса встречной стороны. Для использования подключенных PPTP-клиентов в качестве SIP-абонентов, указывать IP-адрес в явном виде не требуется. |
Выполнить настройку транка ESBC для работы через PPTP-тунель:
| Блок кода | ||
|---|---|---|
| ||
vesbc# configure
| ||
| Блок кода | ||
vesbc(config)# esbc vesbc(config-esbc)# interface gigabitethernet 1/0/2 media resource MEDIA_PPTP #Указать тунель pptp 1 vesbc(config-ifesbc-media-giresource)# security-zone WAN ip address interface pptp 1 vesbc(config-ifesbc-media-giresource)# exit vesbc(config)# |
Создать зону безопасности, к которой будут относиться сессии пользователей:
| Блок кода |
|---|
vesbc(config)# vesbc(config)# security zone VPN_USERS-esbc)# sip transport PPTP #Указать тунель pptp 1 vesbc(config-esbc-sip-transport)# ip address interface pptp 1 vesbc(config-esbc-sip-transport)# port 5080 vesbc(config-securityesbc-sip-zonetransport)# exit vesbc(config)# |
Выполнить настройку PPTP-сервера:
| Блок кода | ||
|---|---|---|
| ||
vesbc(config-esbc)# remote-accesstrunk pptpsip PPTP_SERVER vesbc(config-esbc-pptptrunk-serversip)# authenticationsip mode local #IP-адрес PPTP-сервераtransport PPTP vesbc(config-pptpesbc-trunk-serversip)# local-address ip-address 20.20.20.1 #Диапазон IP-адресов которые будут выдаваться PPTP-клиентамmedia resource 0 MEDIA_PPTP #Указать Remote IP PPTP-тунеля vesbc(config-pptpesbc-trunk-serversip)# remote-address address-range 20.20.20.5-20.20.20.6 #IP-адрес ESBC для организации подключения по протоколу PPTP1 vesbc(config-esbc-trunk-sip)# remote port 5070 vesbc(config-esbc-pptptrunk-serversip)# outside-address ip-address 10.30.101.150exit vesbc(config-pptp-serveresbc)# security-zone VPN_USERS #Создание и настройка учетной записи клиента pptp_user vesbc(config-pptp-server)# username pptp_user vesbc(config-ppp-user)# password ascii-text simplepass # Указать какой именно IP-адрес из диапазона будет выдан клиенту pptp_user vesbc(config-ppp-user)# remote address 20.20.20.5 vesbc(config-ppp-user)# enable vesbc(config-ppp-user)# exit #Создание и настройка учетной записи клиента pptp_user2 vesbc(config-pptp-server)# username pptp_user2 vesbc(config-ppp-user)# password ascii-text simplepass2 # Указать какой именно IP-адрес из диапазона будет выдан клиенту pptp_user2 vesbc(config-ppp-user)# remote address 20.20.20.6 vesbc(config-ppp-user)# enable vesbc(config-ppp-user)# exit vesbc(config-pptp-server)# enable vesbc(config-pptp-server)# exit vesbc(config)# |
| Примечание |
|---|
Для использования подключенных PPTP-клиентов в качестве SIP-транков следует указывать IP-адрес, который будет выдвваться сервером PPTP каждому клиенту, в явном виде (команда remote address в конфигурации ppp-user ). Иначе IP-адреса, выдаваемые PPTP-клиентам будут выдаваться в случайном порядке из диапазона указанного в настроках PPTP-сервера. В таком случае невозможно будет настроить SIP-транк до конкретного клиента, т.к. для работы в режиме транка требуется указание адреса встречной стороны. Для использования подключенных PPTP-клиентов в качестве SIP-абонентов, указывать IP-адрес в явном виде не требуется. |
Выполнить настройку транков ESBC для работы с клиентами 1 и 2:
| Примечание |
|---|
IP-адреса (Local и Remote) PPTP-тунеля можно узнать командой show tunnels status |
| Блок кода | ||
|---|---|---|
vesbc# show tunnels status
Tunnel Admin Link MTU Local IP Remote IP Last change
State State (d,h:m:s)
---------------- ---------- ----- ------ ---------------- ---------------- -------------
pptp 1 Up Up 1500 20.20.20.5 20.20.20.1 00,00:13:35 | ||
| Блок кода | ||
| ||
esbc(config)# esbc
vesbc(config-esbc)# media resource MEDIA_PPTP
#Указать IP-адрес сервера PPTP
vesbc(config-esbc-media-resource)# ip address 20.20.20.1
vesbc(config-esbc-media-resource)# exit
vesbc(config-esbc)# sip transport PPTP_1
#Указать IP-адрес сервера PPTP
vesbc(config-esbc-sip-transport)# ip address 20.20.20.1
vesbc(config-esbc-sip-transport)# port 5070
vesbc(config-esbc-sip-transport)# exit
vesbc(config-esbc)# sip transport PPTP_2
#Указать IP-адрес сервера PPTP
vesbc(config-esbc-sip-transport)# ip address 20.20.20.1
vesbc(config-esbc-sip-transport)# port 5071
vesbc(config-esbc-sip-transport)# exit
vesbc(config-esbc)# trunk sip PPTP_USER
vesbc(config-esbc-trunk-sip)# sip transport PPTP_1
vesbc(config-esbc-trunk-sip)# media resource 1 MEDIA_PPTP
#Указать IP-адрес PPTP-клиента pptp_user
vesbc(config-esbc-trunk-sip)# remote address 20.20.20.5
vesbc(config-esbc-trunk-sip)# remote port 5080
vesbc(config-esbc-trunk-sip)# exit
vesbc(config-esbc)# trunk sip PPTP_USER2
vesbc(config-esbc-trunk-sip)# sip transport PPTP_2
vesbc(config-esbc-trunk-sip)# media resource 1 MEDIA_PPTP
#Указать IP-адрес PPTP-клиента pptp_user2
vesbc(config-esbc-trunk-sip)# remote address 20.20.20.6
vesbc(config-esbc-trunk-sip)# remote port 5081
vesbc(config-esbc-trunk-sip)# exit
|
Выполнить настройку ESBC для транка TRUNK_1:
| Блок кода | ||
|---|---|---|
| ||
vesbc(config-esbc)# esbc vesbc(config-esbc)# media resource MEDIA_TRUNK_1 vesbc(config-esbc-media-resource)# ip address 192.168.113.207208 vesbc(config-esbc-media-resource)# exit vesbc(config-esbc)# sip transport TRANSPORT_TRUNK_1 vesbc(config-esbc-sip-transport)# ip address 192.168.113.207208 vesbc(config-esbc-sip-transport)# port 50905091 vesbc(config-esbc-sip-transport)# exit vesbc(config-esbc)# route-table TO_PPTP_USER vesbc(config-esbc-route-table)# rule 1 vesbc(config-esbc-route-table-rule)# action direct-to-trunk PPTP_USER vesbc(config-esbc-route-table-rule)# exit vesbc(config-esbc-route-table)# exit vesbc(config-esbc)# trunk sip TRUNK_1 vesbc(config-esbc-trunk-sip)# sip transport TRANSPORT_TRUNK_1 vesbc(config-esbc-trunk-sip)# route-table TO_PPTP_USER vesbc(config-esbc-trunk-sip)# media resource 1 MEDIA_TRUNK_1 vesbc(config-esbc-trunk-sip)# remote address 192.168.113.200 vesbc(config-esbc-trunk-sip)# remote port 50915092 vesbc(config-esbc-trunk-sip)# exit vesbc(config-esbc)# exit vesbc(config)# |
Настроить маршрутизацию вызовов из транка PPTP в транк TRUNK_1:
| Блок кода |
|---|
vesbc(config)# esbc vesbc(config-esbc)# route-table TO_TRUNK_1 vesbc(config-esbc-route-table)# rule 1 vesbc(config-esbc-route-table-rule)# action direct-to-trunk TRUNK_1 vesbc(config-esbc-route-table-rule)# exit vesbc(config-esbc-route-table)# exit vesbc(config-esbc)# trunk sip PPTP vesbc(config-esbc-trunk-sip)# route-table TO_TRUNK_1 vesbc(config-esbc-trunk-sip)# exit vesbc(config-esbc)# exit |
Примеры настройки ESBC Якорь ESBC_set_examples ESBC_set_examples
| ESBC_set_examples | |
| ESBC_set_examples |
...







