Sunday, May 12, 2013

Позвони мне, позвони. Подключаем к Call Manager Express телефоны по протоколу SIP


 В этой небольшой лабораторной работе мы подключим к СМЕ телефоны по протоколу SIP. Кто не знает, SIP это такой протокол передачи данных для медиасообщений. Протокол стандартизирован и широко используется в Asterisk. Телефоны Cisco можно научить передавать данные по SIP, но для этого необходимо прошивать телефон соответствующей прошивкой. По умолчанию установлена прошивка с Cisco-вским протоколом SCCP.
Это довольно широкая тема, так что не будем на ней останавливаться, а перейдем к настройке.
За основу взят конфиг из предыдущей лабы.


Для начала включим на СМЕ поддержку SIPa, точнее, возможность совершать звонки между соответствующими типами VoIP точек. По умолчанию эта возможность отключена для IP-IP звонков. Протокола SCCP это не касается, так как там несколько по-другому все реализовано. Это клиент-серверный протокол, в отличии от SIP. Вместе с SIP здесь же можно разрешать H.323
CME(config)#voice service voipCME(conf-voi-serv)#allow-connections sip to sip
Переходим в режим настройки sip-протокола, запускаем на роутере сервер регистрации
CME(conf-voi-serv)#sipCME(conf-serv-sip)#registrar server expires ?
max  Default registration max expires
timemin  Default registration min expires time<cr>
CME(conf-serv-sip)#registrar server expires max 1200 min 300
CME(conf-serv-sip)#
registrar server expires max 1200 min 300 - устанавливаем минимальное и, соответственно, максимальное время до перерегистрации IP-телефонов. Это надо для того, чтобы после перезагрузки CME, он сам автоматически перерегистрировал IP-телефоны, так как при перезагрузке, CME не сохраняет базу зарегистрированных телефонов.
Переходим к редактированию параметров регистрации. Процесс напоминает такой же для протокола SCCP.
CME(config)#voice register global
                                            ^
% Invalid input detected at ‘^’ marker.
но, как видно, меня тут ждало разочарование. Нет такой команды.
Что ж, как показало вскрытие гугление, мой не самый старый IOS 12.4 (25d), пусть и adventerprise, но все равно он таких радостей жизни не поддерживает. Насколько я понял, для поддержки нужны последние Т-ные версии. Загрузил IOS 12.4 (15)Т14 и возрадовался. Так что если столкнетесь с такой проблемой, то вам самое время заглянуть на software.cisco.com или обратиться к своему дилеру интегратору. К слову, этот новый IOS требует вдвое больше памяти и это была не первая неожиданность. Но вернемся к нашим баранам телефонам.
Настроим параметры регистрации:
CME(config)#voice register global
CME(config-register-global)#mode cme
CME(config-register-global)#source-address 192.168.10.20 ?
           port  Define tcp port for SIP CME
           <cr>
CME(config-register-global)#source-address 192.168.10.20 port 5060
CME(config-register-global)#max-dn 10
CME(config-register-global)#max-pool 5
CME(config-register-global)#authenticate register
CME(config-register-global)#tftp-path flash:
CME(config-register-global)#create profile
CME(config-register-global)#do show flash
System CompactFlash directory:File  Length   Name/status 1   69       syncinfo.xml
 2   1828     SIPDefault.cnf
 3   3579     softkeyDefault_kpml.xml
 4   3613     softkeyDefault.xml
[9352 bytes used, 16767860 available, 16777212 total]16384K bytes of ATA System CompactFlash (Read/Write)
CME(config-register-global)#

voice register global - переход в режим глобальных параметров регистрации.
source-address 192.168.10.20 port 5060 - указывает, адрес и порт сервера регистрации
max-dn 10 - максимальное количество линий
max-pool 5 - максимальное количество телефонов. pool в даном случае соотносится с телефоном.
authenticate register - указывает, что логин-пароль для регистрации должны находится в настройках отдельных телефонов. Теперь в секциях каждого voice pool их необходимо будет указывать.
tftp-path flash: - содержимое нашего tftp сервера будет на флеш-памяти. Нет необходимости публиковать отдельные файлы командой tftp-server, нужные файлы и конфиги публикуются автоматически.
create profile - команда создает или обновляет конфигурацию на tftp-сервере. Обратите внимание, что ее нужно вводить после каждого изменения настроек.

Теперь перейдем к настройкам линий и номеров
CME(config)#voice register dn 1
CME(config-register-dn)#number 211
CME(config-register-dn)#name Clint Eastwood
CME(config-register-dn)#exit
CME(config)#voice register dn 2
CME(config-register-dn)#number 212
CME(config-register-dn)#name Bruce Willis  
CME(config-register-dn)#
voice register dn 1 - команда создает dn. Понятие имеет то же значение, что и ephone-dn в настройках SCCP. Более подробно можно посмотреть в предыдущей статье.
name Clint Eastwood - имя, отображается на экране телефона, которому будет назначен этот dn, а также на экране абонента когда мы ему будем звонить с этого телефона.

Теперь добавим телефоны:
CME(config)#voice register pool 1
CME(config-register-pool)#id mac e811.32c6.d5dd  
CME(config-register-pool)#type 7905
CME(config-register-pool)#username 211 password 211pass
CME(config-register-pool)#description Clint_Eastwood 
CME(config-register-pool)#number 1 dn 1
CME(config-register-pool)#codec g711ulaw
voice register pool 1 - входим в режим настройки телефона. В терминологии SCCP это ephone 1.
id mac e811.32c6.d5dd  - мак-адрес телефона.
username 211 password 211pass - логин и пароль для регистрации телефона. В телефонах cisco указывается в Settings->SIP configuration.
 number 1 dn 1 - привязываем к первой линии телефона первый dn. Соответственно, номер телефона будет взят из него.
codec g711ulaw - указываем, какой кодек будет использоваться.

После этих манипуляций телефоны должны регистрироваться.
Проверяем командой show voice register dial-peers
CME#show voice register dial-peers
dial-peer voice 40001 voip destination-pattern 211 session target ipv4:192.168.10.51:5060 session protocol sipv2 codec  g711ulaw bytes 160  after-hours-exempt   FALSE      
CME#
Даже работает :)
В качестве заметки на полях: если телефон со всеми настройками не регистрируется, но с него можно позвонить на зарегистрированные телефоны на CME, то половина настроек, которые мы вводили выше было введено зря. Такая ситуация с телефонами не редкая. В моем понимании, это из-за того, что SIP это протокол типа точка-точка (не клиент-серверный как SCCP), соответственно, когда мы набираем номер, то вызов идет на указанный нами в настройках телефона SIP-proxy (что есть тот же CME) в формате number@sip.proxy.ip.addr. В таком виде он приходит на CME, а тот уже знает, что с ним делать, так как номер, куда мы звоним у него зарегистрирован. Но на SIP-телефон позвонить не можем, потому что он не зарегистрирован и CME понятия не имеет, что делать, когда приходит вызов на этот номер.
Потраблшутить регистрацию можно командами:
debug voice register eventsdebug ccsip messages
Вторая выдает намного более подробную информацию.
Под занавес скажу, что нормально регистрируется и звонит только настольный Cisco-телефон с SIP прошивкой, софт-фон стороннего производителя пока не удалось заставить работать. Authentication failed. Но уже пол-третьего ночи и одним глазом я уже сплю, так что оставим эту затею до лучших времен.

No comments:

Post a Comment