Повышение отказоустойчивости в Cisco телефонии

Posted: 2012-10-31 in Cisco, UCM
Tags: , , , ,

В случае отказа используемого интернет канала, при правильной настройке должна произойти перемаршрутизация через запасной. Но в случае телефонии (протоколов H.323 & SIP) по-умолчанию она произойдет по истечению таймеров… через 30-60 секунд тишины. Можно не заставлять своих абонентов ждать так долго. Об этом ниже.

Технология «out-of-dialog options ping» позволяет мониторить состояние удаленного SIP устройства (SIP сервера, шлюза, операторского оборудования). Это возможно с помощью сообщения OPTIONS, которое является стандартным SIP запросом. В случае если удаленная сторона не отвечает несколько раз, dial-peer на котором указали OOD Options Ping перейдет в состояние busy-out (неактивный) и должен выбираться запасной dial-peer. Таким образом, если есть запасной маршрут, то время посылки вызова “в никуда” сокращается до 1-2 секунд (на переключение маршрута), если нет – пользователь получает отбой сразу, а не через (примерно) минуту тишины.

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

sipOOD-prof1

sipOOD-trunk2 

Ping Interval for In-service and Partially In-service Trunks (seconds) Как часто пинговать когда удаленный сервер доступен.Диапазон 5-600 сек. Умолчание 60 сек.
Ping Interval for In-service and Partially In-service Trunks (seconds) Как часто пинговать когда удаленный сервер не доступен.Диапазон 5-600 сек. Умолчание 120 сек.
Ping Retry Count Количество не полученных ответов для перехода маршрута из активного состояния в неактивное. Ум. 6 раз

sipOOD-prof2

Применяем созданный профиль на SIP транке.

Успешной конфигурации!

Advertisements
Comments
  1. Добрый день, Александр!Вопрос: а если на CUCME диалпиры требуют регистрации, то, судя по дебагу:*Mar 14 15:12:17.315: //-1/xxxxxxxxxxxx/SIP/Msg/ccsipDisplayMsg:Received: SIP/2.0 504 Server Time-outVia: SIP/2.0/UDP 10.9.22.109:5060;branch=z9hG4bKDA754Call-ID: F972DE3B-8BEF11E2-809FFF3E-A4DC6DD2@10.9.22.109From: ;tag=5B3DCC-2470To: ;tag=af46022aCSeq: 101 OPTIONSContent-Length: 0*Mar 14 15:12:20.303: //413/000000000000/SIP/Msg/ccsipDisplayMsg:Sent: OPTIONS sip:10.10.10.100:5060 SIP/2.0Via: SIP/2.0/UDP 10.9.22.109:5060;branch=z9hG4bKEA1750From: ;tag=5E08A4-1A25To: Date: Thu, 14 Mar 2013 15:12:20 GMTCall-ID: 668673BB-8BF011E2-80ABFF3E-A4DC6DD2@10.9.22.109User-Agent: Cisco-SIPGateway/IOS-12.xMax-Forwards: 70CSeq: 101 OPTIONSContact: 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-outVia: SIP/2.0/UDP 10.9.22.109:5060;branch=z9hG4bKDB20A3Call-ID: FDA9F854-8BEF11E2-80A0FF3E-A4DC6DD2@10.9.22.109From: ;tag=5B596C-1129To: ;tag=689a7239CSeq: 101 OPTIONSContent-Length: 0и сам диалпир находится в устойчивом сотсоянии busyout…Можно что-нибудь попытаться с этим сделать?

  2. Спасибо за статью – благодаря ей – разобрался с проблемными SIP-шлюзами – которые иногда по 3-4 минуты "выпадали" из сети. Теперь есть что начальству объяснить и какие дать предложения по оптимизации связи.

  3. Добрый день, Андрей!Не сталкивался с подобным, но думается что проблема может быть с IOS одного из устройств. Проверьте оба шлюза. Версия ОС должна быть выше 15.0(1)M.

  4. Александр… дело в том, что на той стороне – провайдер… со своим хуавеем… Я же так понимаю, что SIP-пинг является стандартной "услугой"? Если да, то может они просто "закрыли" его?

  5. SIP-OPTIONS пинг входит в стандарт протокола SIP, но хуавеевкий шлюз должен быть сотворен по подобию стандарта, иначе Cisco просто "не поймет"

  6. Как на cucm промониторить какой из ip в транке лег при включенной этой опции?

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s