Назрел вопрос о реконфигурации AS5350, являющейся пограничным VoIP-шлюзом для существующей скромной (до 100 пиров) VoIP-сети.
Проанализировав текущую ситуацию, плюс подумав о будущих возможных запросах, получились следующие требования к настройке AS5350.
Задачи
- Прием входящего трафика на свою номерную емкость через потоки Е1 от разных операторов.
- Пропуск исходящего трафика на Е1 разных операторов (например, в зависимости от ценовой политики).
- Формирование АОНа на основе префикса, подставленного перед набираемым номером, присланным из IP сети.
- Блокировка исходящих звонков с АОНами, не прописанными на AS5350.
- Блокировка входящих звонков на номера, не прописанные на AS5350.
Немного теории
Звонок, с точки зрения AS5350, состоит из двух частей (legs) — voip и pots. Если при поступлении звонка на AS5350 не находятся диалпиры, под которые могут попасть voip и pots части звонка, то будут использоваться системные диалпиры, отображаемые под номером ноль. Ниже приведены две схемы порядка прохождения звонков:
Посмотреть распределение активных leg-ов по диалпирам можно командой:
show voice call status
CallID CID ccVdb Port DSP/Ch Called # Codec Dial-peers
0x2B 12F1 0x6640CB84 3/0:D.30 1/3:1 *0007536 14400 66/2
0x32 1256 0x6640CB84 3/1:D.31 1/3:4 *0000579536 g711alaw 0/3
Раз так, то поехали перенастраивать железку. Я буду описывать настройку только наших вышеперечисленных требований.
Настройка
pots-диалпир для входящего трафика из потоков Е1:
dial-peer voice 7 pots
description INBOUND-CALLS-VIA-E1
huntstop //Нашли подходящий диалпир и останавливаем "охоту" на остальных :)
preference 10
incoming called-number .T //Благодаря этой строке (.Т – любые набираемые номера) этот
//диалпир выбирается в качестве наиболее подходящего для входящего звонка из Е1
direct-inward-dial
no register e164
Замечание: в этом диалпире нет смысла указывать порт потока Е1 как и делать несколько подобных диалпиров под каждый поток, т.к. при входящем через потоки Е1 трафике на вашу номерную емкость всегда будет выбираться диалпир с наименьшим номером.
pots-диалпир для пропуска исходящего МГ/МН трафика (начинающегося с 8-ки: 8.Т) в поток Е1 (3/1) первого провайдера:
dial-peer voice 2 pots
description OUTBOUND-MGMN-CALL-VIA-E1-1
huntstop
destination-pattern 8.T
progress_ind setup enable 3
progress_ind progress enable 8
direct-inward-dial
port 3/1:D
no register e164
pots-диалпир для пропуска оставшегося исходящего трафика в поток Е1 (3/0) второго провайдера:
dial-peer voice 3 pots
description OUTBOUND-REMAINING-CALLS-VIA-E1-0
huntstop
preference 8
destination-pattern .T
progress_ind setup enable 3
progress_ind progress enable 8
direct-inward-dial
port 3/0:D
no register e164
Замечание:
Преференс этого диалпира должен быть больше, чем pots-диалпира 1001 (описание которого будет дано ниже), иначе входящие со стороны Е1 звонки будут пытаться выйти через Е1 3/0 (и получим мы isdn-switching, который в данном случае никому не нужен).
Тааакс… с pots-leg’ами разобрались, продолжим с voip-leg’ами.
voip-диалпир для «приема» входящего из IP-сети номера с префиксом 009901 перед набранным номером:
dial-peer voice 94 voip
description inbound_peer_4_380-00-01
translation-profile incoming CUT-PREFIX
codec g711alaw
incoming called-number 009901.T
Создадим профиль преобразования АОНа и набираемого номера:
voice translation-profile CUT-PREFIX
translate calling 121
translate called 120
Создадим правило преобразования набираемого (called) номера – «отрежем» лидирующий префикс 009901:
voice translation-rule 120
rule 8 /^009901\(.*\)/ /\1/ type any unknown
Создадим правило преобразования АОНа — заменим любой присланный АОН на нужный нам 380-00-01:
voice translation-rule 121
rule 12 /^.*/ /3800001/
Пример типичного voip-диалпира:
dial-peer voice 78 voip
description TYPICAL-VOIP-PEER
max-conn 2
answer-address 84953800000 // answer-address служит для выбора диалпира в качестве наиболее
// подходящего на основе АОНа звонка, пришедшего из IP-сети.
//В данном случае у нас АОН будет 89453800000
destination-pattern 3800000 // destination-pattern служит для выбора диалпира в качестве
//наиболее подходящего на основе набранного номера звонка, пришедшего из Е1.
session protocol sipv2
session target ipv4:192.168.68.6
dtmf-relay rtp-nte
codec g711alaw
no vad
Все, что нужно мы разрешили-описали, осталась блокировка «левых» звонков, т.е. тех звонков, что не подходят ни под один dial-peer описанные выше, для чего создадим voip-диалпир:
dial-peer voice 1001 voip
description BAD-AON-AND-CALLED-NUM
call-block translation-profile incoming BLOCK //блокируем звонок из IP сети
huntstop
preference 7
destination-pattern .T
codec g711alaw
session target ipv4:10.10.10.10
По итогу отправляем входящий звонок из Е1 на адрес 10.10.10.10, который маршрутизируется в никуда.
М.б. кто-то предложит лучшее решение ? С удовольствием послушаем.
Маршрутизируем адрес в «/dev/null»:
ip route 10.10.10.10 255.255.255.255 Null0
Создадим профиль и правило трансляции для блокировки «левых» АОНов:
voice translation-profile BLOCK
translate calling 42
!
voice translation-rule 42
rule 1 reject /^.*/
Для понимания, как и какие диалпиры участвуют в «выборах» при звонке и кто из них «победил» вам поможет команда:
debug voice dialpeer all
Будьте аккуратны – ее вывод может быть очень объемным !
В «отслеживании» звонков в/из IP-сети вам поможет команда:
debug ccsip calls
В трассировке звонка через ISDN вам поможет команда:
debug isdn q931
Увидеть логирование отработки правил трансляции номеров вам поможет команда:
debug voice translation
Замечание:
не забывайте давать команду:
terminal monitor
для того, чтобы вывод дебага отображался у вас в консоли (если вы сидите на циске через telnet), иначе он будет тихо складироваться в буфер логов AS5350 и все 🙂
Выражаю благодарность за помощь в написании статьи Сергею Бабичеву ( ака zaikini )
Ссылки
http://www.cisco.com/en/US/docs/ios/12_2t/12_2t11/feature/guide/ftgwrepg.html
З.Ы. При копировании статьи ссылка на источник ОБЯЗАТЕЛЬНА !
Автор: Панфилов Алексей (lehis (at) subnets.ru)
Похожие статьи:
- Не найдено
Добавить комментарий
Вам следует авторизоваться для размещения комментария.