Отказоустойчивость... её много не бывает. Хочется, чтобы все просто работало. Если не хочется ждать пока выберется запасной SIP маршрут, читаем дальше...
Out Of Dialog (OOD) Sip Options Ping позволяет мониторить состояние удаленного SIP устройства (напр. SIP сервера, шлюза). Это возможно с помощью сообщения Options, которое является стандартным SIP запросом. В случае если удаленная сторона не отвечает несколько раз, маршрут на котором указали OOD Options Ping перейдет в состояние busy-out (неактивный) и должен выбираться запасной путь. Таким образом, если есть запасной маршрут уменьшается время посылки вызова “в никуда”, если нет – пользователь получает отбой сразу, а не через, примерно, минуту тишины.
Cisco Gateway (Call Manager Express)
Появилось это в Cisco IOS Release 15.0(1)M, и в Cisco IOS XE Release 3.1S для ASR маршрутизаторов.
Замечания:
- Только для VoIP dialpeer
- После перезагрузки шлюза все dial-peer переходят в состояние ACTIVE (в случае недостижимости SIP устройства нужно 3 неуспешных OPTION PING для перехода в busy-out)
- Если сконфигурированы SESSION TARGET и OUTBOUND PROXY (последний более приоритетен).
- Если у Вас 10 dial-peer указывающих на один IP адрес – по 1 сообщению SIP OPTION PING будет посылаться для каждого dialpeer (всего 10 сообщений)
- Если используется DNS имя, то OOD Options Ping будут посланы всем возвращенным IP адресам
Если одно из условий не выполняется OOD Options Ping не будет посылаться:
- Dial-peer должен быть в активном (active) состоянии
- Команда session protocol sipv2 на dial-peer
- Команда session target или outbound proxy должна быть сконфигурирована.
В случае если нет ответа от SIP сервера или приходит ответ с кодом из таблицы ниже, dial-peer переходит в неактивное состояние (busy-out).
Код ошибки
|
Описание
|
503
|
сервис недоступен (service unavailable)
|
505
|
версия протокола SIP не поддерживается (sip version not supported)
|
other
|
i.e. request timeout
|
Остальные коды ошибки (включая 4хх и 5хх) не переводят dial-peer в неактивное (busy-out) состояние. Когда dial-peer перешел в состояние busy-out, CUBE продолжает посылать OOD Ping и по получении ответа (200 OK Options) переводит dial-peer в состояние active.
Каждые 15 секунд шлюз будет «пинговать» sip сервер, если шлюз 3 раза подряд не получит ответ от сервера он переведет маршрут в BUSY-OUT, далее он будет пытаться «пинговать» сервер каждые 40 секунд. Если сервер ответит шлюзу 3 раза подряд, шлюз вернет маршрут в состояние ACTIVE.
voice-class sip options-keepalive up-interval 15 down-interval 40 retry 3
- up-interval – интервал в секундах посылки SIP OPTIONS PING сообщений, количество секунд до объявления маршрута неактивным (busy-out). Диапазон 5-1200. Умолчание 60.
- down-interval – время в секундах до объявления маршрута активным (active), в случае когда SIP устройство стало достижимо (отвечает на SIP PING).
- retry retries – количество не полученных ответов для перехода маршрута из активного состояния в неактивное (полученных ответов для перехода в активное состояние). Умолчание 5 раз.
Пример конфигурации Cisco шлюза:
dial-peer voice 2000 voip
description PRIMARY-ROUTE
preference 1
destination-pattern 3...
session protocol sipv2
session target ipv4:10.1.250.102
voice-class sip options-keepalive up-interval 15 down-interval 30 retry 3
dial-peer voice 2001 voip
description SECONDARY-ROUTE
preference 5
destination-pattern 3...
session protocol sipv2
session target ipv4:10.1.4.102
Проверка:
• debug ccsip messages – команда для вывода SIP сообщений
• show dial-peer voice x – просмотр настроек на dial-peer
R1# show dial-peer voice | in options
voice class sip options-keepalive up-interval 60 down-interval 30 retry 5
voice class sip options-keepalive dial-peer action = active
• show dial-peer voice summary – вывод состояния маршрутов
HQ-1(config-dial-peer)#do show dial-peer voice sum
dial-peer hunt 0
AD PRE PASS OUT
TAG TYPE MIN OPER DEST-PAT FER THRU SESS-TARGET STAT PORT KEEPALIVE
2000 voip up up 3... 1 syst ipv4:10.1.250.102 busyout
2001 voip up up 3... 5 syst ipv4:10.1.4.102
HQ-1(config-dial-peer)#
Cisco Unified Communications Manager
На CUCM это делается с помощью SIP профиля для транка в котором нужно указать схожие параметры.
Devices -> Device Default -> Sip Profile
Ping Interval for In-service and Partially In-service Trunks (seconds)
|
Как часто пинговать когда удаленный сервер доступен.
Диапазон 5-600 сек. Умолчание 60 сек.
|
Ping Interval for Out-of-service Trunks (seconds)
|
Как часто пинговать когда удаленный сервер не доступен.
Диапазон 5-600 сек. Умолчание 120 сек.
|
Ping Retry Count
|
Количество не полученных ответов для перехода маршрута из активного состояния в неактивное. Ум. 6 раз
|
Применяем созданный профиль на SIP транке.
Успешной конфигурации!
Добрый день, Александр!
ReplyDeleteВопрос: а если на CUCME диалпиры требуют регистрации, то, судя по дебагу:
*Mar 14 15:12:17.315: //-1/xxxxxxxxxxxx/SIP/Msg/ccsipDisplayMsg:
Received:
SIP/2.0 504 Server Time-out
Via: SIP/2.0/UDP 10.9.22.109:5060;branch=z9hG4bKDA754
Call-ID: F972DE3B-8BEF11E2-809FFF3E-A4DC6DD2@10.9.22.109
From: ;tag=5B3DCC-2470
To: ;tag=af46022a
CSeq: 101 OPTIONS
Content-Length: 0
*Mar 14 15:12:20.303: //413/000000000000/SIP/Msg/ccsipDisplayMsg:
Sent:
OPTIONS sip:10.10.10.100:5060 SIP/2.0
Via: SIP/2.0/UDP 10.9.22.109:5060;branch=z9hG4bKEA1750
From: ;tag=5E08A4-1A25
To:
Date: Thu, 14 Mar 2013 15:12:20 GMT
Call-ID: 668673BB-8BF011E2-80ABFF3E-A4DC6DD2@10.9.22.109
User-Agent: Cisco-SIPGateway/IOS-12.x
Max-Forwards: 70
CSeq: 101 OPTIONS
Contact:
Content-Length: 0
*Mar 14 15:12:21.883: //-1/xxxxxxxxxxxx/SIP/Event/sipSPIEventInfo: Queued event from SIP SPI : SIPSPI_EV_OUTBOUND_REGISTER
*Mar 14 15:12:21.883: //-1/xxxxxxxxxxxx/SIP/Event/sipSPIEventInfo: Queued event from SIP SPI : SIPSPI_EV_DNS_RESOLVE
*Mar 14 15:12:24.387: //-1/xxxxxxxxxxxx/SIP/Msg/ccsipDisplayMsg:
Received:
SIP/2.0 504 Server Time-out
Via: SIP/2.0/UDP 10.9.22.109:5060;branch=z9hG4bKDB20A3
Call-ID: FDA9F854-8BEF11E2-80A0FF3E-A4DC6DD2@10.9.22.109
From: ;tag=5B596C-1129
To: ;tag=689a7239
CSeq: 101 OPTIONS
Content-Length: 0
и сам диалпир находится в устойчивом сотсоянии busyout...
Можно что-нибудь попытаться с этим сделать?
Добрый день, Андрей!
DeleteНе сталкивался с подобным, но думается что проблема может быть с IOS одного из устройств. Проверьте оба шлюза. Версия ОС должна быть выше 15.0(1)M.
Александр... дело в том, что на той стороне - провайдер... со своим хуавеем... Я же так понимаю, что SIP-пинг является стандартной "услугой"? Если да, то может они просто "закрыли" его?
DeleteSIP-OPTIONS пинг входит в стандарт протокола SIP, но хуавеевкий шлюз должен быть сотворен по подобию стандарта, иначе Cisco просто "не поймет"
DeleteСпасибо за статью - благодаря ей - разобрался с проблемными SIP-шлюзами - которые иногда по 3-4 минуты "выпадали" из сети. Теперь есть что начальству объяснить и какие дать предложения по оптимизации связи.
ReplyDeleteКак на cucm промониторить какой из ip в транке лег при включенной этой опции?
ReplyDelete