[Из песочницы] Настройка SIP агента сети IMS (Белтелеком) на маршрутизаторе CISCO

0e2f05cca708425194b410879c2574d2.jpgВ настоящее время в Беларуси оператор электросвязи Белтелеком усиленно внедряет телефонную связь на базе сети IMS. Предоставляется оборудование в пользование. Представляет оно собой обычный ADSL модем, но со встроенным SIP клиентом.

Но у нас есть CISCO 2951 с поднятой телефонией. Возникла мысль, а можно ли настроить такой телефонный номер без оборудования Белтелеком и напрямую в маршрутизаторе.
При разборе настроек в модеме выяснилось следующее. VoIP подается по отдельному PVC (VCI/VPI=2/35) в режиме IP/DHCP:

3882a031fb6b48d28d57f97f79d31047.jpg

Модем получает настройки IP и шлюза по DHCP.

fa9bd95b90d341f5bc49b4a775b35c10.jpg

Нам важно запомнить адрес шлюза, для дальнейшей настройки на CISCO.

При заключении договора выдаются следующие данные:

Номер телефона: +37517xxxxxxx
Login: +37517xxxxxxx@ims.beltel.by

Необходимо также узнать пароль к сервису IMS: passIMS. У меня в маршрутизаторе Cisco установлена ADSL2 and ADSL2 High-Speed WAN Interface Cards.

Настраиваем сначала подключение по нужному PVC (2/35).

interface ATM0/1/0.2 point-to-point
 ip address dhcp
 no ip proxy-arp
 ip nat outside
 ip virtual-reassembly in
 atm route-bridged ip
  pvc 2/35
  encapsulation aal5snap


.02 в имени интерфейса выбрана произвольно, так как у меня уже есть одно соединение на этом же интерфейсе.

sh int atm 0/1/0.2


убеждаемся что интерфейс поднялся и IP адрес получен.

Настройки SIP серверов тоже можно увидеть в модеме, если предварительно в telnet дать следующую команду: sendcmd 3 webd setconfig voippagedisp y.

2aeb9f5c32a3498c8270cc6b0e579bb2.jpg

Будем использовать один из SIP серверов, а именно 10.56.0.9. Далее необходимо прописать маршруты.

ip route 10.56.0.9 255.255.255.255 10.233.64.1
ip route 10.56.0.10 255.255.255.255 10.233.64.1
ip route 10.56.0.11 255.255.255.255 10.233.64.1


10.56.0.10 и 10.56.0.11 — это адрес RTP сервера обслуживающего аудио поток. Так как ims.beltel.by не имеет в DNS записи, то прописываем ее руками.

ip host ims.beltel.by 10.56.0.9


Теперь переходим к непосредственной настройки sip-ua. Здесь есть особенность, авторизация должна проходить с указанием домена, т.е. вида +37517xxxxxxx@ims.beltel.by. Поэтому используем еще параметр number.

sip-ua
 credentials number +37517xxxxxxx username +37517xxxxxxx@ims.beltel.by password PassIMS realm ims.beltel.by
 authentication username +37517xxxxxxx password PassIMS realm ims.beltel.by
 retry invite 3
 retry response 3
 retry bye 3
 retry cancel 3
 retry register 5
 registrar dns:ims.beltel.by:5060 expires 3600 auth-realm ims.beltel.by
 sip-server dns:ims.beltel.by:5060
 connection-reuse
 host-registrar


Об успешной регистрации будет видно из команды:

sh sip-ua register status


Далее создаем dial-peer для исходящих звонков.

dial-peer voice 8017 voip
 description #toIMS#
 translation-profile outgoing fromIMS
 destination-pattern 8017[2,3,5].T
 session protocol sipv2
 session target sip-server
 session transport udp
 voice-class codec 1
 dtmf-relay rtp-nte
 no vad


Необходимо также обязательно подменять свой внутренний номер на номер выданный Белтелекомом, чтобы звонок обслуживался. Это делается через translation-profile.

voice translation-rule 1
 rule 1 /.*/ /+37517xxxxxxx/

voice translation-profile fromIMS
translate calling 1


Так как у меня используются телефоны Cisco 6921, то для входящего звонка просто прописан параметр secondary на внутреннем номере.

ephone-dn  1  dual-line
 number 1234 secondary +37517xxxxxxx no-reg both


Таким образом мы получаем SIPовский номер в нашу телефонную сеть без дополнительного стороннего оборудования и в цифровом виде.

Update: С недавнего времени Белтелеком начал работать по UDP протоколу. Поэтому для входящих соединений уже не получится вписать secondary номер. Необходимо делать dial-peer с входящим правилом.

Примерно такой:

dial-peer voice 9192 voip
 description #Incoming_IMS#
 translation-profile incoming incomIMS
 session protocol sipv2
 session target dns:ims.beltel.by
 session transport udp
 incoming called-number +37517xxxxxxx
 voice-class codec 1
 dtmf-relay rtp-nte


где translation-profile incoming incomIMS это правило сопоставления номера IMS вашему внутреннему, на который необходимо принять звонок.

Например:

voice translation-rule 5
 rule 1 /.*/   /1234/

voice translation-profile incomIMS
  translate called 5

© Habrahabr.ru