Table des matières

Tester SS7 entre deux machines virtuelles avec Yate et TDMoE

Note: TDMoE utilise beaucoup de CPU, et transmet 1000 fois / seconde. Cette configuration fonctionne mais la qualité audio est très mauvaise, et le CPU est à 100% pour un appel (environ 50% sans appel).

Choses pour faire baisser l'utilisation CPU:

  #undef ENABLE_TASKLETS

Remplacer #undef par #define donne une charge CPU bien moindre, mais le lien aura du mal à s'aligner et la qualité audio souffrira.

# Virtual Machines 10 and 11 (in my setup)
aptitude install linux-headers-amd64 linux-image-amd64 grub
# put grub on /dev/sda

Configuration details

See below for proper example.

# /etc/dahdi/system.conf
# Notice how we specify the _actual_ number of channels
# (24 for T1, 31 for E1)
# The MAC Address is the address of the remote (far) end.
dynamic=ethmf,eth0/52:54:00:00:00:11/0,31,0
# etc., see below.

( based on http://www.thrallingpenguin.com/articles/tdmoe-mf.htm )

modprobe dahdi
dahdi_cfg

Yate

Compile

Ma copie locale du code SVN http://stephane.shimaore.net/debian/src/yate-clean.tar.gz sinon

  svn checkout http://voip.null.ro/svn/yate/trunk yate

Compiler:

aptitude install sox libspandsp-dev

./autogen.sh
./configure
make

Start with

  sudo ./run -v

sudo est nécessaire pour l'accès aux ports DAHDI FIXME: comment modifier udev pour que ce ne soit pas nécessaire (creer un group “tdm” ou qqch comme ça)

Configure

Voir par exemple http://yate.null.ro/pmwiki/index.php?n=Main.Zapcard

Pour créer à partir des templates existantes:

  ( cd conf.d && mv zapcard.conf.sample zapcard.conf )

Working Configurations

Host 10

Local MAC: 52:54:00:00:00:10

/etc/dahdi/system.conf

dynamic=ethmf,eth0/52:54:00:00:00:11/0,31,0
# dynamic=ethmf,eth0/52:54:00:00:00:11/1,31,0
# dynamic=ethmf,eth0/52:54:00:00:00:11/2,31,0
# dynamic=ethmf,eth0/52:54:00:00:00:11/3,31,0
bchan=1-30
dchan=31

conf.d/zapcard.conf

[general]
format=alaw
[span1]
type=E1
offset=0
sigchan=31
voicechans=1-30

conf.d/ysigchan.conf

[general]
dtmfinband=true
[isup1]
type=ss7-isup
pointcodetype=ITU
pointcode=1011
defaultpointcode=1011
remotepointcode=1012
router=ss7router
voice=span1
range=span1:1-30
strategy-restrict=even-fallback
format=alaw
print-messages=yes    ; troubleshooting
[linkset1]
type=ss7-mtp3
netind2pctype=ITU
adjacent=ITU,1012
local=ITU,1011
router=ss7router
link=span1,1
[span1]
type=ss7-mtp2
[ss7router]
type=ss7-router
local=ITU,1011

conf.d/regexroute.conf

[priorities]
[$once]
[$init]
[extra]
[contexts]
[default]
^99991001$=tone/dial
^99991002$=tone/busy
^99991003$=tone/ring
^99991004$=tone/specdial
^99991005$=tone/congestion
^99991006$=tone/outoforder
^99991007$=tone/milliwatt
^99991008$=tone/info
^123$=tone/info

We'll be using 123 for tests.

Host 11

Local MAC: 52:54:00:00:00:11

/etc/dahdi/system.conf

dynamic=ethmf,eth0/52:54:00:00:00:10/0,31,0
# dynamic=ethmf,eth0/52:54:00:00:00:10/1,31,0
# dynamic=ethmf,eth0/52:54:00:00:00:10/2,31,0
# dynamic=ethmf,eth0/52:54:00:00:00:10/3,31,0
bchan=1-30
dchan=31

conf.d/zapcard.conf

[general]
format=alaw
[span1]
type=E1
offset=0
sigchan=31
voicechans=1-30

conf.d/ysigchan.conf

[general]
dtmfinband=true
[isup1]
type=ss7-isup
pointcodetype=ITU
pointcode=1012
defaultpointcode=1012
remotepointcode=1011
router=ss7router
voice=span1
range=span1:1-30
strategy-restrict=odd-fallback
format=alaw
print-messages=yes   ; troubleshooting
[linkset1]
type=ss7-mtp3
netind2pctype=ITU
adjacent=ITU,1011
local=ITU,1012
router=ss7router
link=span1,1
[span1]
type=ss7-mtp2
[ss7router]
type=ss7-router
local=ITU,1012

conf.d/ysipchan.conf

[general]
[registrar]
[sip-t]
[codecs]
default=disable
alaw=enable
[methods]
[hacks]
[listener sip1]
type=udp

conf.d/regexroute.conf

[priorities]
[$once]
[$init]
[extra]
[contexts]
[default]
^99991001$=tone/dial
^99991002$=tone/busy
^99991003$=tone/ring
^99991004$=tone/specdial
^99991005$=tone/congestion
^99991006$=tone/outoforder
^99991007$=tone/milliwatt
^99991008$=tone/info
^123$=sig/123;trunk=isup1

Other changes

Autres changements possibles mais pas obligatoires. (A documenter pour avoir une configuration qui soit plus efficace.)

conf.d/yate.conf

[general]
modload=disable
[modules]
; production modules
rmanager.yate=yes
regexroute.yate=yes
wpcard.yate=yes
yrtpchan.yate=yes
ysigchan.yate=yes
ysipchan.yate=yes
wavefile.yate=yes
tonedetect.yate=yes
; test modules
zapcard.yate=yes
tonegen.yate=yes
[localsym]
[nounload]
[preload]
[postload]
[debug]
[telephony]