Недавно появилась задача, реализацию которой я опишу ниже. Возможно куму-то пригодится. Я в телефонии далеко не гуру, поэтому прошу строго не судить если что не совсем корректно излагаю.
Требуется реализовать следующую схему работы:
РостелекомАТС1АТС2SIPабонент.
Ростелеком- это провайдер к которому подключаемся по ОКС-7. Он нам дает номерную емкость.
АТС1 и АТС2 это наши атски, собранные на базе Asterisk 1.6.2
Для работы с ОКС-7 используется модуль chan_ss7-2.0.0 Этот модуль пропатченный, так как в исходном виде он не умеет работать с NOA (Nature of Address Indicator). Как пропатчить и суть проблемы, можно почитать тут
В итоге нам необходимо чтобы SIP абонент мог пользоваться номером выданным Ростелеком, при этом получается что АТС1 работает в транзитном режиме.
На АТС1 стоит двухпортовая плата Quasar-M Драйвер адаптера используется Quasar-mini, так как с обычным драйвером (Версия драйвера 3.1.1) возникли проблемы.
На АТС2 стоит однопортовая плата Digium TE121.
Используются следующие коды пунктов сигнализации ОКС7:
Ростелеком- 164
АТС1-845
АТС2-16
Итак приступим.
1) Проверяем что сервера нашли платы потока Е1
| Код: |
| АТС1, на ней установлена плата Quasar-M [root@ip0-2-58 1]# lspci 03:00.0 Network controller: Altera Corporation Device 2230 (rev 10) |
| Код: |
| АТС2, на ней установлена плата Digium TE121 [root@sip2 asterisk]# lspci 10:08.0 Ethernet controller: Digium, Inc. Wildcard TE121 single-span T1/E1/J1 card (PCI-Express) (rev 11) |
2) Конфигурим на каждом из серверов DAHDI и подгружаем модули (драйвера) плат.
| Код: |
| АТС1 [root@ip0-2-58 dahdi]# cat /etc/dahdi/modules quasar cat /etc/dahdi/system.conf # Define SPAN configuration span = 1,1,0,ccs,hdb3 #это линк на Ростелеком, порт 1 настроен как slave span = 2,0,0,ccs,hdb3 #это линк на АТС2 , и порт 2 настроен как master #SPAN1, CCS signaling (PRI/SS7) bchan=1-31 #SPAN2, CCS signaling (PRI/SS7) bchan=32-62 loadzone = ru defaultzone = ru |
| Код: |
| АТС2 [root@sip2 dahdi]# cat /etc/dahdi/modules wcte12xp [root@ip0-2-58 dahdi]# cat /etc/dahdi/system.conf # Span 1: WCT1/0 "Wildcard TE121 Card 0" (MASTER) span=1,1,0,ccs,hdb3 #это линк на АТС1 , и порт соответственно настроен как slave bchan=1-31 loadzone = ru defaultzone = ru |
То что модули плат успешно подгрузились в систему можем посмотреть следующим образом:
| Код: |
| [root@ip0-2-58 dahdi]# lsmod Module Size Used by quasar 24864 0 [root@sip2 dahdi]# lsmod Module Size Used by wcte12xp 31155 31 |
3) Приступаем к настройке linkset ОКС-7
| Код: |
| АТС1 cat /etc/asterisk/ss7.conf [linkset-rtk] enabled => yes enable_st => no use_connect => yes hunting_policy => even_mru context => fromSS7 language => ru t35 => 15000,timeout subservice => auto [linkset-peer2] enabled => yes enable_st => no use_connect => yes hunting_policy => even_mru context => fromSS7 language => ru t35 => 15000,timeout subservice => auto [link-l1] linkset => rtk channels => 1-15,17-31 schannel => 16 firstcic => 1 enabled => yes [link-l2] linkset => peer2 channels => 1-15,17-31 schannel => 16 firstcic => 1 enabled => yes [host-ip0-2-58.home.net.ru] enabled => yes default_linkset => rtk opc => 845 dpc => rtk:164,peer2:16 links => l1:1,l2:2 #The links on the host is 'l1', connected to span/connector #1 |
| Код: |
| АТС2 [root@sip2 asterisk]# cat /etc/asterisk/ss7.conf [linkset-rtk1] enabled => yes enable_st => no use_connect => yes hunting_policy => even_mru context => fromSS7 language => ru t35 => 15000,timeout subservice => auto [link-l1] linkset => rtk1 channels => 1-15,17-31 schannel => 16 firstcic => 1 enabled => yes [host-sip2.net.ru] enabled => yes default_linkset => rtk1 opc => 16 dpc => rtk1:845 links => l1:1 |
Для диагностики и настройки chan_ss7 удобно производить загрузку и выгрузку модуля ручным способом- анализировать информацию на экране и читать логи
| Код: |
| [root@ip0-2-58 asterisk]# asterisk -r Asterisk 1.6.2.19, Copyright (C) 1999 - 2010 Digium, Inc. and others. ip0-2-58*CLI> module unload chan_ss7.so ip0-2-58*CLI> module load chan_ss7.so |
Проверку линков производим следующим способом:
| Код: |
| [root@ip0-2-58 asterisk]# asterisk -r ip0-2-58*CLI> ss7 linestat Linkset: rtk CIC 1 Idle CIC 2 Idle .. CIC 31 Idle Linkset: peer2 CIC 1 Idle CIC 2 Idle .. CIC 31 Idle Либо так: ip0-2-58*CLI> ss7 link status linkset rtk, link l1/16 INSERVICE, sls 0, total: 3317788976, 3317784304 linkset peer2, link l2/16 INSERVICE, sls 0, total: 3317788960, 3317784352 Можно так же оценить текущее состояние каждого из линков ip0-2-58*CLI> ss7 status linkset idle busy initiating resetting total incoming total outgoing rtk 30 0 0 0 0 0 linkset idle busy initiating resetting total incoming total outgoing peer2 30 0 0 0 5 0 |
4) Ну и наконец создаем диалплан.
| Код: |
| АТС1 cat /etc/asterisk/extensions.conf [fromSS7] exten => 4957058909,1,Dial(SS7/peer2/${EXTEN},300,T) exten => 4957058909,n,Hangup() exten => _XXXXXXX,1,Dial(SS7/rtk/${EXTEN},300,T) exten => _XXXXXXX,n,Hangup() АТС2 cat /etc/asterisk/extensions.conf [fromSS7] exten => 4957058909,1,Set(CALLERID(num)=8${CALLERID(num)}) exten => 4957058909,n,Dial(SIP/209,60,t) exten => 4957058909,n,Hangup() [SS7] exten => _XXXXXXX,1,Set(CALLERID(num)=${IF($[ ${CALLERID(num)} = 209]?4957058909:${CALLERID(num)})}) exten => _XXXXXXX,n,Dial(SS7/rtk1/L${EXTEN},300,T) exten => _XXXXXXX,n,Hangup() |
_________________
Один телефон – это необходимость, два телефона – богатство,
три телефона – роскошь, а ни одного телефона – блаженство.