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:
- dans une machine KVM (qemu) utiliser un
-net socket
avec une connexion TCP. - utiliser
#define ENABLETASKLETS
contientdans dahdi_dynamic.c (voir ci-dessous) ===== Build a DAHDI TDMoE span ===== ==== Compilation of dahdi-linux and dahdi-tools ==== Testé avec: http://downloads.asterisk.org/pub/telephony/dahdi-linux/releases/dahdi-linux-2.6.1.tar.gz http://downloads.asterisk.org/pub/telephony/dahdi-tools/releases/dahdi-tools-2.6.1.tar.gz mais des paquets Debian existent. Note: dans dahdi-linux,
drivers/dahdi/dahdidynamic.c
#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 )
Starting the TDMoE link
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 : 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]