Asterisk chan_ss7 «12 потоков»

Администратор,

Задача:

Подключение к Городской Телефонной Станций «ГТС» используя систему сигнализации 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 
oadzone = 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 => always 
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