Добрый день.
Есть голосовой шлюз с 2-мя dial-peer:
dial-peer voice 1 voip
destination-pattern 200
voice-class sip early-offer forced
session protocol sipv2
session target ipv4:10.0.131.13
dtmf-relay rtp-nte
codec g711ulaw
no vad
!
dial-peer voice 2 voip
destination-pattern 20[0-1]
voice-class sip early-offer forced
session protocol sipv2
session target ipv4:10.0.131.101
dtmf-relay rtp-nte
codec g711ulaw
no vad
Пользователь набирает номер 200
Судя по документации, должен отработать первый dial-peer, т.к. происходит максимальное совпадение цифр, но по факту dial-peer выбираются в произвольном порядке, то один, то другой.
Сначала столкнулся с проблемой у Заказчика, потом воспроизвёл на стенде - то же самое. Как объяснить подобное недокументированное поведение шлюза?
IOS 12.4-24.T5
так у вас и по второму dial-peer происходит максимальное совпадение, ведь и там есть 200.
dial-peer voice 1 voip
destination-pattern 555[1-3]...
session target ipv4:10.1.1.1
dial-peer voice 2 voip
destination-pattern 5551...
session target ipv4:10.1.1.2
If a user dials the number 5551234, both dial peers match, but the router chooses to use
dial peer 2 because it is a more specific match (5551... matches 1000 numbers while 555[1-
3]... matches 3000 numbers).
CCNA Voice - sert guide
у себя проверил вашу схему, выбирает реально рандомно, то 1й то 2й диалпиры.
инетресно просто. Но в обоих же случаях при звонке начинающих на 5551 будет 1000 номеров. Почему тогд атак выбор идет, то есть учитывает все возможные варианты.
А в документации, кстати, вот что написано:
When matching dial peers, the router defaults to variable-length matching, which means that as long as the left-justified digits in the dial string match the configured pattern in the dial peer, any digits beyond the configured pattern are ignored for the purposes of matching. For example, dial string 5551212 would match both of the following dial peers:
dial-peer voice 1 voip destination-pattern 555 session target ipv4:10.10.1.1 dial-peer voice 2 voip destination-pattern 5551212 session target ipv4:10.10.1.2
To disable variable-length matching for a dial peer, add the dollar sign ($) to the end of the destination pattern, as shown:
dial-peer voice 1 voip destination-pattern 555$ session target ipv4:10.10.1.1
Конечно, шаблоны здесь не используются, но я полагаю, это тоже применимо.
http://www.cisco.com/en/US/docs/ios-xml/ios/voice/dialpeer/configuration/12-4/vd-dp-feat-cfg.html
Константин, спасибо за ссылку.
В общем для себя я сделал следующий вывод:
т.к. документация в общем довольно размыто описывает поведение шлюза в подобных случаях (особенно в учебнике по CVOICE), то для определённости лучше в конце строки ставить $, например destination-pattern 200$, если мы хотим, чтобы шлюз отработал вызов именно по этому диалпиру.
Да, именно так.
Константин,
А не подскажите, как выключить variable-length matching на CUCM(чтобы настроить звонки для филиалов без набора когда города, а добавлять его автоматически через translation rule)? К примеру, есть:
Route pattern 7[2-8]!
Translation rule 7.XXXXXXX
Так вот, при наборе 7 + 7-ми значный номер, всегда матчится route pattern.
Дамир, попробуйте
7.XXXXXXX#
http://www.cisco.com/en/US/docs/voice_ip_comm/cucm/admin/6_0_1/ccmsys/a03rp.html#wp1043520
The octothorpe (#) character generally identifies the end of the dialing sequence.
Ensure the # character is the last character in the pattern.
The route pattern 901181910555# routes or blocks an international number that is dialed from within the NANP. The # character after the last 5 identifies this digit as the last digit in the sequence.
Юрий,
Это работает. Но тогда пользователям придется набирать # после набора номера. А хотелось бы уж совсем юзер-френдли. Тем более, что это логично.. количество потенциально совпадающих номеров
Route pattern 7[2-8]! - 720000000000000 до 789999999999999 (если брать максимально 15 символов в номере)
Translation rule 7.XXXXXXX - 7000000 до 79999999
Второй диапазон явно меньше. Но видимо CUCM интерпретирует ! как-то по другому. Интересно, как-нибудь возможно это обойти
Думаю, что Route Pattern выбирается, т.к. при наборе приходят цифры при одной и 7.[2-8] дает меньше вариантов, чем 7.X
Почему бы вам не убрать Route Pattern в другой Partition? Перекрывающиеся паттерны никогда не являются хорошим дизайном.
_____
Please rate helpful posts
Пожалуйста оценивайте полезные сообщения
Он и так в другом Partition. Просто через CSS пользователя доступны оба. Убрать какой-то один Pt нельзя, так как они отвечают за разные направления.
К примеру, для Питера. Для местных звонков используется translation pattern 7.X, а для междугородних направлений 7.[2-8].
Сейчас translation pattern реализован как 7.[1-5]XXXXXX (что перекрывает 7.[2-8]). Но хочется чтобы было красиво
Дамир, для междугороднего направления можно указать чёткое количество цифр для набора номера. Разное количество цифр может быть только на международном направлении.
Ниже примеры Route Pattern'ов для стандартного филиала с 7-значными городскими номерами и выходом в город через "9":
9.8[2-478]XXXXXXXXX Long distance calls
9.[1-79]XXXXXX Local calls
9.89XXXXXXXXX Mobile calls
9.810X+ International calls
9.810X+# International calls
Работает без проблем. Решётку надо набирать только для международных звонков или дождаться Interdigit Timeout.
Правильно ли я понимаю, что у вас 7 используется для выхода на PSTN?
В таком случае, у вас после 7 должен идти либо местный 7-и значный номер, либо префикс для выхода на национальные номера 8хх либо префикс выхода на международные номера 8хх
т.е.
7.[1234679]XXXXXX - местные
7.8[34689]XXXXXXXXX - национальные
7.82[1-3]ХХХХХХХХХХ - национальные через альтернативного оператора
7.85[1-5]ХХХХХХХХХХ - национальные через альтернативного оператора
7.810! - международные
7.82[6-8]!- международные через альтернативного оператора
7.85[6-9]!- международные через альтернативного оператора
И никаких перекрывающихся паттернов
_____
Please rate helpful posts
Пожалуйста оценивайте полезные сообщения
Нужно попробовать.
А что значит "Альтернативный оператор"?