Asterisk SIP performances
by admin on Aug.03, 2010, under Asterisk, Linux, Networking, Telefonia, Tools, VoIP
Vi è un metodo piuttosto semplice per misurare le performance del SIP channel driver in Asterisk, in termini di chiamate simultanee effettuabili e rapidità nella gestione delle chiamate in ingresso.
La conoscenza di tali limiti è di grande utilità nella implementazione di un PBX in ambienti estesi.
Questo test prevede, per il suo svolgimento, di una macchina Asterisk (IP 192.168.1.10), e di una seconda macchina (IP 192.168.1.12), connessa alla precedente in rete locale ethernet, sulla quale viene invece eseguito sipp, un tool Open Source per la generazione di traffico per il protocollo SIP.
Sul server asterisk, è necessaria la presenza di una sezione come la seguente nel file extensions.conf:
[test_sipp]
exten => _X.,1,Answer
exten => _X.,n,Background(demo-instruct)
exten => _X.,n,Hangup
oppure come la seguente nel file extensions.ael:
context test_sipp
{
_X. => {
Answer();
while (1) {
Background(demo-instruct);
}
Hangup();
}
}
Sostanzialmente, ogni chiamata SIP in ingresso riceve risposta, ed il chiamante ascolta un file sonoro (per comodità viene utilizzato il file sonoro demo-instruct, presente nel package di base). In particolare, il test delega al chiamante l’hangup, consentendo in tal modo al tool sipp di predeterminare
la durata di ciascuna chiamata.
Nel file sip.conf è presente una sezione simile:
[sipp01]
type=friend
context=test_sipp
host=192.168.1.12
user=sipp
directmedia=no
disallow=all
allow=ulaw
con una configurazione dello UAC minimale (nessuna autenticazione e ulaw come codec utilizzato).
Per misurare l’ impatto del traffico in ingresso sulla macchina Asterisk, è sufficiente una utility di sistema come vmstat, che offre una visuale della utilizzazione della CPU da parte di Asterisk.
Il sintomo tipico del raggiungimento di valori limite da parte di Asterisk consiste nella totale utilizzazione della CPU (100%) e nella conseguente impossibilità di aumentare il carico di lavoro, cosa che si manifesta con timeouts ed altri problemi, fino al blocco totale.
È consigliabile effettuare il test in due modalità differenti:
La capacità di processare chiamate viene misurata con chiamate di durata estremamente breve, come in:
# sipp -sn uac 192.168.1.10 -i 192.168.1.12 -s 22 -d 100 -l 250
dove a sipp viene impartito di chiamare la macchina Asterisk (192.168.1.10) alla extension 22, con chiamate ciascuna della durata di 0.1 secondi, e con un limite di 250 chiamate simultanee.
Le chiamate simultanee risulteranno la frequenza per secondo delle chiamate entranti diviso la durata di ciascuna chiamata, perciò 1 chiamata simultanea a 10 calls/sec, e 50 a 500 calls/sec.
Il limite impostato a 250 implica che non si intende superare il limite di 2500 calls/sec in fase di test.
Sipp opera inizialmente con 10 calls/sec, ed è possibile aumentare granularmente tale frequenza tramite i tasti ‘*’ o ‘+’.
Quando si è prossimi al 100% nell’utilizzo della CPU sul server Asterisk, si avrà raggiunto il limite massimo.
Le chiamate simultanee possono invece venire quantificate con chiamate di lunga durata. Ad esempio:
# sipp -sn uac 192.168.1.10 -i 192.168.1.12 -s 22 -d 90000 -l 270
istruisce sipp a effettuare chiamate verso il server Asterisk della durata di un minuto e mezzo (90 sec).
Il numero di chiamate simultanee crescerà fino a raggiungere il limite stabilito di 270.
Se Asterisk sopravvive fino al raggiungimento di tale valore senza che la CPU raggiunga il 100% di utilizzo, si può interrompere il test e riprovare con un valore (-l) più alto.

