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

ss7

Alexcr2

Задача:


Подключение к Городской Телефонной Станций «ГТС» используя систему сигнализации N7 (Общеканальная сигнализация № 7(ОКС7 или SS7)

Решение по этапам:

 
  • Сервер
  • Система и софт
  • Настройка подключения
  • Проблемы и их решения
  • Тестирование

Сервер:

Про сервер мне мало известно, я все настраивал удаленно и не видел его но все что мне нужно я увидел.
Проц:
[root@ss7 ~]# cat /proc/cpuinfo |grep "model name"
model name : Pentium(R) Dual-Core CPU E5700 @ 3.00GHz
model name : Pentium(R) 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.
 
Система и софт

Перед тем как приступить к данной задачи я много искал в интернете какое решение лучше использовать вот список который я нашел:
Выбор пал на 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. Если нужны подробности по настройке или помощь пишите :)