Задача:
Подключение к Городской Телефонной Станций «ГТС» используя систему сигнализации N7 (Общеканальная сигнализация № 7(ОКС7 или SS7)
Решение по этапам:
- Сервер
- Система и софт
- Настройка подключения
- Проблемы и их решения
- Тестирование
Сервер:
Про сервер мне мало известно, я все настраивал удаленно и не видел его но все что мне нужно я увидел.
Проц:
[root@ss7 ~]# cat /proc/cpuinfo |grep "model name"
model name : Pentium® Dual-Core CPU E5700 @ 3.00GHz
model name : Pentium® Dual-Core CPU E5700 @ 3.00GHz
Память:
[root@ss7 ~]# free -m total used free shared buffers cached Mem: 4051 3899 152 0 142 3628 -/+ buffers/cache: 128 3923 Swap: 5247 0 5247
Винт:
2 винта в райде по 250 Гигов, обычные SATA
Материнская плата:
Модель и производитель меня не интересовали мне нужно было только знать нет ли USB или ETH на одном прерывание с платами DIGIUM.
[root@ss7 ~]# cat /proc/interrupts .... 58: 6425 2287054760 IO-APIC-level ata_piix, wct4xxp 74: 2285708690 4349 IO-APIC-level wct4xxp 82: 4161 2285686641 IO-APIC-level wct4xxp ....
то что одна из плат на одном прерывание с винтом (ata_piix, wct4xxp) это проблема но все что было предпринято ничего не дало.
Потоковые платы:
[root@ss7 ~]# dahdi_hardware pci:0000:05:00.0 wct4xxp+ d161:1405 Wildcard TE405P (5th Gen) pci:0000:05:01.0 wct4xxp+ d161:0405 Wildcard TE405P (4th Gen) pci:0000:05:02.0 wct4xxp+ d161:0405 Wildcard TE405P (4th Gen)
Используются 3 платы DIGIUM TE405 слот PCI.
Система и софт
Перед тем как приступить к данной задачи я много искал в интернете какое решение лучше использовать вот список который я нашел:
- openss7.org
- Yate SS7
- Freeswitch SS7
- Asterisk libss7
- Asterisk chan_ss7
Выбор пал на asterisk и chan_ss7 он самый простой по моему в настройке и очень хорошо выводит дебуг который очень нужен для таких подключении. Система была поднята на Centos 5.5 далее из sourse было собран DAHDI и Asterisk после скачал сhan_ss7-2.0.0.
Настройка подключения
Потоки были поданы через спец. модемы до сервера, для подключения нужно было только обычный Е1 кабель. Конфиг dahdi:
[root@ss7 asterisk]# cat /etc/dahdi/system.conf span=1,1,0,ccs,hdb3,crc4 bchan=1-31 echocanceller=mg2,1-31 span=2,2,0,ccs,hdb3,crc4 bchan=32-62 echocanceller=mg2,32-62 span=3,3,0,ccs,hdb3,crc4 bchan=63-93 echocanceller=mg2,63-93 span=4,4,0,ccs,hdb3,crc4 bchan=94-124 echocanceller=mg2,94-124 span=5,5,0,ccs,hdb3,crc4 bchan=125-155 echocanceller=mg2,125-155 span=6,6,0,ccs,hdb3,crc4 bchan=156-186 echocanceller=mg2,156-186 span=7,7,0,ccs,hdb3,crc4 bchan=187-217 echocanceller=mg2,187-217 span=8,8,0,ccs,hdb3,crc4 bchan=218-248 echocanceller=mg2,218-248 span=9,9,0,ccs,hdb3,crc4 bchan=249-279 echocanceller=mg2,249-279 span=10,10,0,ccs,hdb3,crc4 bchan=280-310 echocanceller=mg2,280-310 span=11,11,0,ccs,hdb3,crc4 bchan=311-341 echocanceller=mg2,311-341 span=12,12,0,ccs,hdb3,crc4 bchan=342-372 echocanceller=mg2,342-372 loadzone = us defaultzone = us
Конфиг chan_ss7:
[root@ss7 ~]# cat /etc/asterisk/ss7.conf [linkset-mtc] enabled => yes enable_st => yes use_connect => no hunting_policy => even_mru context => ss7 language => ru t35 => 15000,timeout subservice => 8 [link-mtcl1] linkset => mtc channels => 2-31 schannel => 1 firstcic => 1 enabled => yes echocancel => allways echocan_train => 350 echocan_taps => 128 [link-mtcl2] linkset => mtc channels => 1-31 schannel => firstcic => 33 enabled => yes echocancel => allways echocan_train => 350 echocan_taps => 128 [link-mtcl3] linkset => mtc channels => 1-31 schannel => firstcic => 65 enabled => yes echocancel => allways echocan_train => 350 echocan_taps => 128 [link-mtcl4] linkset => mtc channels => 1-31 schannel => firstcic => 97 enabled => yes echocancel => allways echocan_train => 350 echocan_taps => 128 [link-mtcl5] linkset => mtc channels => 1-31 schannel => firstcic => 129 enabled => yes echocancel => allways echocan_train => 350 echocan_taps => 128 [link-mtcl6] linkset => mtc channels => 1-31 schannel => firstcic => 161 enabled => yes echocancel => allways echocan_train => 350 echocan_taps => 128 [link-mtcl7] linkset => mtc channels => 1-31 schannel => firstcic => 193 enabled => yes echocancel => allways echocan_train => 350 echocan_taps => 128 [link-mtcl8] linkset => mtc channels => 1-31 schannel => firstcic => 225 enabled => yes echocancel => allways echocan_train => 350 echocan_taps => 128 [link-mtcl9] linkset => mtc channels => 1-31 schannel => firstcic => 257 enabled => yes echocancel => allways echocan_train => 350 echocan_taps => 128 [link-mtcl10] linkset => mtc channels => 1-31 schannel => firstcic => 289 enabled => yes echocancel => allways echocan_train => 350 echocan_taps => 128 [link-mtcl11] linkset => mtc channels => 1-31 schannel => firstcic => 321 enabled => yes echocancel => allways echocan_train => 350 echocan_taps => 128 [link-mtcl12] linkset => mtc channels => 1-31 schannel => firstcic => 353 enabled => yes echocancel => allways echocan_train => 350 echocan_taps => 128 [host-ss7.host.ru] enabled => yes opc => 0x62 dpc => mtc:0x0d links => mtcl1:1,mtcl2:2,mtcl3:3,mtcl4:4,mtcl5:5,mtcl6:6,mtcl7:7,mtcl8:8,mtcl9:9,mtcl10:10,mtcl11:11,mtcl12:12
Проблемы и их решения
1) Порядок подключения потоков (физически):
При подключение физических линков надо синхронно втыкать их в порт 1 ГТС — 1 DIGUM, 2 -2… это была первая проблема потому что потоки сначала включили как попало.
2) CRC4 — ГТС на 3 день настроек сказал что у них CRC4 выключен когда на DIGIUM у меня они были включены и влияли на работу сигнального канала. Не знаю как вышло думаю что это и за модемов поэтому попросил ГТС включить CRC4.
Лог:
[May 24 11:46:48] NOTICE[6229] mtp.c: Failover not possible, no other signalling link and no other host available. [May 24 11:46:48] WARNING[6229] chan_ss7.c: MTP is now DOWN on link 'mtcl1'. [May 24 11:46:50] WARNING[6229] chan_ss7.c: MTP is now UP on link 'mtcl1'. [May 24 11:46:50] NOTICE[6229] mtp.c: Sending TRA to peer on link 'mtcl1'....
3) При подключение более одного потока используется обычно всего один сигнальный линк тот что в первом потоке для этого выделен. Поэтому у меня в настройках link-mtcl1 указан schannel => 1 и голосовые каналы от 2 до 31 а остальные потоки используют для голоса от 1 до 31(все).
Тестирование
Проверка статуса сигнального линка:
*CLI> ss7 link status linkset mtc, link mtcl1/1 INSERVICE, sls 0, total: 3173888, 3173904
Проверка статуса каналов:
ss7*CLI> ss7 show channels Linkset: mtc CIC 2 Idle CIC 3 Idle CIC 4 Idle . . . CIC 382 Idle CIC 383 Idle
Максимальное количество каналов которую я успел поймать:
root@ss7 ~]# asterisk -rx "core show channels"
….
1069 active channels
362 active calls
P.S. Если нужны подробности по настройке или помощь пишите