News from Industry

End-to-end VoIP quality testing probes

TXLAB - Sun, 04/27/2014 - 02:50

This is a result of a project where we needed to measure voice QoS parameters (jitter and packet loss) in the customer network. I’ve set up small probe computers (old 10″ Intel Atom netbooks like Acer Aspire One) with FreeSWITCH and a few scripts for test automation. Each test consists of a 30-second call (producing approximately 1500 RTP packets in each direction), and tshark is measuring the received jitter and loss on each side.

Test details and the installation procedure are outlined on Github:

https://github.com/xlab1/voip_qos_probe

 


Filed under: Networking Tagged: freeswitch, network monitoring, sip, voip, xlab1

FreeSWITCH performance test on PC Engines APU

TXLAB - Sat, 04/19/2014 - 02:08

This test is analogous to the one I described for Intel Atom CPU.This time it’s the new APU board from PC Engines, the maker of famous ALIX and WRAP boards. APU is a fanless appliance board, with a dual-core 1GHz AMD G series CPU. The overall performance is comparable to that of Intel Atom.

In these tests, FreeSWITCH was forwarding the call to itself on request by pressing *1. Each such forwarding resulted in creating four new channels in G722 and G711, thus resulting in transcoding to G711 and back. For example, if “show channels” shows 5 channels, it’s equivalent to 2 simultaneous calls with transcoding.

Test result: 57 channels were running completely fine, 65 channels had slight distortions, and with 85 channels the speech was still recognizable, but with significant distortions. With Speex instead of G722, distortions were quite annoying at 25 channels. Thus, the APU platform can easily be used as a small-to-medium business PBX for  20-30 simultaneous calls if there’s not too much transcoding.

Test details follow.

Debian Wheezy was installed as described in my previous post. Then, GFreeSWITCH version 1.2.23 was installed from packages, as follows:

apt-get install -y curl git sysstat cat >/etc/apt/sources.list.d/freeswitch.list <<EOT deb http://files.freeswitch.org/repo/deb/debian/ wheezy main EOT curl http://files.freeswitch.org/repo/deb/debian/freeswitch_archive_g0.pub | apt-key add - apt-get update apt-get install -y freeswitch-meta-all cd /etc git clone https://github.com/xlab1/freeswitch_conf_minimal.git freeswitch

Then, /etc/freeswitch/dialplan/public/05_test.xml was added as follows:

<include> <!-- Extension 100 accepts the initial call, plays echo, and on pressing *1 it transfers to 101 -->     <extension name="100">       <condition field="destination_number" expression="^100$">         <action application="answer"/>         <action application="bind_meta_app" data="1 a si transfer::101 XML ${context}"/>         <action application="delay_echo" data="1000"/>       </condition>     </extension>     <!-- Extension 101 plays a beep, then makes an outgoing SIP call from our internal profile to our own external profile and extension 200 -->     <extension name="101">       <condition field="destination_number" expression="^101$">         <action application="playback" data="tone_stream://%(100,100,1400,2060,2450,2600)"/>         <action application="unbind_meta_app" data=""/>         <action application="bridge"                 data="{absolute_codec_string=PCMA}sofia/internal/200@${sip_local_network_addr}:5080"/>       </condition>     </extension> <!-- Extension 200 returns the call to 100 as a new outgoing SIP call from our internal profile to our own external profile -->     <extension name="200">       <condition field="destination_number" expression="^200$">         <action application="answer"/>         <action application="bridge"                 data="{max_forwards=65}{absolute_codec_string=G722}sofia/internal/100@${sip_local_network_addr}:5080"/>       </condition>     </extension>     </include>

After sending the initial call from a SIP phone to extension 100 at our APU’s IP address and port 5080, after pressing *1 we get 2 new channels with transcoding. Below are results of “mpstat -P ALL 1″ command during the test:

# quite clear sound root@apu:/etc/freeswitch# fs_cli -x 'show channels' | grep total 57 total. 11:35:07 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle 11:35:08 PM  all   41.71    0.00    8.00    0.00    0.00    0.57    0.00    0.00   49.71 11:35:08 PM    0   43.68    0.00    5.75    0.00    0.00    1.15    0.00    0.00   49.43 11:35:08 PM    1   40.45    0.00   10.11    0.00    0.00    0.00    0.00    0.00   49.44 # slight distortions root@apu:/etc/freeswitch# fs_cli -x 'show channels' | grep total 65 total. 11:36:27 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle 11:36:28 PM  all   55.98    0.00    8.70    0.00    0.00    0.54    0.00    0.00   34.78 11:36:28 PM    0   55.91    0.00    7.53    0.00    0.00    2.15    0.00    0.00   34.41 11:36:28 PM    1   55.43    0.00    9.78    0.00    0.00    0.00    0.00    0.00   34.78 # significant distortions root@apu:/etc/freeswitch# fs_cli -x 'show channels' | grep total 85 total. 11:37:34 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle 11:37:35 PM  all   71.13    0.00    9.28    0.00    0.00    2.06    0.00    0.00   17.53 11:37:35 PM    0   71.72    0.00    9.09    0.00    0.00    2.02    0.00    0.00   17.17 11:37:35 PM    1   71.58    0.00    9.47    0.00    0.00    2.11    0.00    0.00   16.84

If G722 is replaced with Speex codec, the CPU load is significantly higher, and already with 25 channels the distortions are quite significant:

# speex 8kHz, distortions root@apu:/etc/freeswitch# fs_cli -x 'show channels' | grep total 25 total. 12:59:46 AM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle 12:59:47 AM  all   54.10    0.00    1.64    0.00    0.00    0.00    0.00    0.00   44.26 12:59:47 AM    0   53.85    0.00    2.20    0.00    0.00    0.00    0.00    0.00   43.96 12:59:47 AM    1   54.95    0.00    1.10    0.00    0.00    0.00    0.00    0.00   43.96
Filed under: Networking Tagged: freeswitch, pbx, pcengines, sip, voip

Parametri di connessione LiberaIlVoIP

Libera il VoIP - Thu, 04/17/2014 - 00:47

Questa pagina raccoglie le impostazioni di connessione per il servizio LiberIlVoIP

Ciao a tutti !!

Questa pagina riporta le impostazioni aggiornate e valide per la connessione al servizio VoIP di LiberaIlVoIP.

Qui saranno elencati i parametri di connessione SIP di LiV sempre aggiornati:

Server di registrazione (registrar/server/SIP server): sip.liberailvoip.it -> 94.23.65.208
NOTA: Usare l’ip al posto del dns SOLO SE STRETTAMENTE necesario, se usate l’ip e poi un giorno non si registra PRIMA di postare NON FUNZIONA, controlla l’ip indicato in questa discussione.

Porte di registrazione: 53 80 5060-5065
NOTA: Usare porte diverse dalla 5060 solo se STRETTAMENTE necessario, cioè solo se con 5060 non si registra a causa di blocchi dell’ISP o router/NAT

Protocollo di registrazione: UDP, TCP
NOTA: Usare TCP se con UDP non ricevi le chiamate. TCP è attivato in via sperimentale.

Codec attualmente attivi: ulaw,alaw,gsm,ilbc,g722,g726,g726aal2,g723,g729
NOTA: se imposti g729:
Inband DTMF is not supported on codec g729. Use RFC2833

Proxy sip (outbound proxy): sip.liberailvoip.it
NOTA: Non serve quasi mai con LiV, quindi solo se ci sono motivazioni particolari va impostato

Stun Server: stun.liberailvoip.it
NOTA: Non serve quasi mai con LiV, quindi solo se ci sono motivazioni particolari va impostato

Cosiglio di usare i DNS di opendns
208.67.222.222
208.67.220.220

 

Se hai problemi a ricevere le chiamate in ingresso e quindi non funziona nemmeno il Test di chiamata, prova ad usare il protocollo TCP invece dell’UDP.

Approfondimenti

Applicazione Impostazioni rapida nel Fine Settimana

Libera il VoIP - Fri, 04/11/2014 - 01:34

Per agevolare i vostri test:

Al Sabato e Alla domenica applicheremo le impostazioni 4 volte al giorno

Ciao a tutti !!

Abbiamo deciso di provare ad applicare piu spesso le impostazioni durante il finesettimana (SABATO e DOMENICA)in modo da agevolare i vostri test.

Gli orari di applicazione sono:

  1.  4.00
  2. 10.00
  3. 14.00
  4. 17.00
  5. 21.00

Quindi se premete il pulsante SALVA entro gli orari elencati, le impostazioni saranno attive entro 15min dall’ora di applicazione, ad esempio se si salvano le impostazioni prima delle 10.00, queste saranno attivate tra entro le 10.15.

Scrivete nel forum le vostre impressioni/consigli/problemi  QUI

Approfondimenti

Aggiornamento Marzo 2014

Libera il VoIP - Tue, 04/08/2014 - 02:36

Cosa sta facendo lo staff ? E gli utenti ?

Ciao a tutti !!

Pubblichiamo il bollettino dello stato del vostro servizio VoIP preferito

Marzo 2014
  • Provider in uso 4150 di cui 2470 registrati per ricevere le chiamate
  • Interni attivi 1230
  • Chiamate 3360 terminate al giorno
  • 88 nuovi utenti

Novità:
  • La più grande novità di questo mese è l’attivazione del supporto alle videochiamate !! Siamo il primo PBX Italiano a supportare le videochiamate !
  • http://blog.liberailvoip.it/2014/03/28/videochiamata-con-liberailvoip/
Lo staff si sta impegnado su:
  • Miglioramento del Monitor
  • Correzzione automatica degli indirizzi register dei provider voip inseriti
  • Rafforzare la sicurezza dei servizi VoIP
  • Applicazione Android per monitorare il proprio account
  • Report via mail di eventuali problemi riscontrati sul proprio account
  • Supporto ai BLF sui telefoni voip
  • Supporto VPN sui telefoni VoIP
Miglioramento del sito web:
  • Avviso dello stato dell’account in home page
  • Passaggio di tutto il sito in SSL
  • DashBoard dello stato globale dei servizi

Approfondimenti
  • Aggiornamento Gennaio 2014

    Cosa sta facendo lo staff ? E gli utenti ?

    Ciao a tutti !!

    Pubblichiamo il bollettino dello stato del vostro servizio VoIP preferito

    Gennaio 2014
    • Provider in uso 4350 di cui 2550 registrati per ricevere le [...]
  • Aggiornamento Febbraio 2014

    Cosa sta facendo lo staff ? E gli utenti ?

    Ciao a tutti !!

    Pubblichiamo il bollettino dello stato del vostro servizio VoIP preferito

    Febbraio 2014
    • Provider in uso 4150 di cui 2440 registrati per ricevere le [...]
  • Aggiornamento del 25 dicembre 2013

    Cosa sta facendo lo staff ? E gli utenti ?

    Ciao a tutti !!

    Anche se un po in ritardo pubblichiamo il bollettino dello stato del vostro servizio VoIP preferito

    Dicembre 2013
    • Provider in uso 4413 di [...]

PC Engines APU board: installing Debian on mSATA drive

TXLAB - Sun, 04/06/2014 - 06:58

PC Engines started shipping its new APU board in 2014. It can boot from an SD card (slow on writes), and it can also have an mSATA drive and boot from it (fast read-write, and more write cycles). Voyage Linux is well optimized for SD card.

Here I started my scripts for building a Debian CD and installing it on APU’s mSATA drive: https://github.com/ssinyagin/pcengines-apu-debian-cd

 


Filed under: Networking Tagged: debian, linux, pcengines

OlimonTel: Provider VoIP Italiano

Libera il VoIP - Wed, 04/02/2014 - 02:00

Provider VoIP Tutto Italiano

La qualità e professionalità dedicata alle aziende, disponibile anche ai privati


Oggi vi presento OlimonTel

Abbiamo avuto l’opportunità di provare i servizio Telefonico Voip offerto da OlimonTel e testarne le funzionalità direttamente su LiberaIlVoIP.

Configurazione Olimontel

P.S. Il numero geografico NON va inserito nel campo N. Tel ! E’ necessario solo user e password dell’accout VoIP.

Caratterisriche del servizio
  • Codec: I Codec supportati nativamente da OlimonTel sono G729A e G711A a 20ms. Attraverso “transcoding” viene supportato GSM a 20ms. Supporto T.38
    NB: l’utilizzo del transcoding disabilita il funzionamento dell’autonomous transitioning. Questo disabilita il funzionamento del fax/modem sulla linea.
  • Elevata qualità audio
  • Porte SIP: SIP UDP/TCP 5060, SIP UDP/TCP 5062
  • I toni DTMF sono gestiti in modalità RFC 2833.
  • Sicurezza antifrode avanzata
  • di default 1 chiamata contemporanea, su richiesta c’è la possibilità di abilitarne di piu basta aprire un ticket nella sezione SERVIZI ATTIVI –>> UTENZE TELEFONICHE
  • Registrazione Multipla: fino a 3 apparecchi registrati contemporaneamente con priorità paritaria, il primo che risponde vince
  • Time-Out di registrazione 600secondi
Servizi
  • Trasferimento su Non registrato: Il servizio Voip OlimonTel attraverso il portale www.OlimonTel.it dalla sezione SERVIZI ATTIVI –>> UTENZE TELEFONICHE mette a disposizione la funzione backup.
    Tale funzione consente al cliente di settare un numero telefonico dove le chiamate verranno trasferite in caso di mancata registrazione.
    Questo è un utilissimo servizio che non necessita di alcuna configurazione sull’apparato voip ma solo nel pannello di controllo sul sito, in questo modo si può essere reperibili al numero fisso ovunque si voglia anche senza connessione internet.
  • STAR CODE:
    Servizi di chiamata anonima:
    CLIR = CLI id Restriction ( invio della chiamata con numero riservato )
    Servizi di Trasferimento della chiamata:
    Il servizio permette di trasferire le telefonate in arrivo al tuo numero verso un telefonodi rete fissa o mobile a tua scelta.
    CFU = Call Forwarding Unconditional ( deviazione di chiamata incondizionato )
    CFB = Call Forwarding on Busy ( deviazione di chiamata su occupato )
    CFDA = Call Forwarding Don’t Answer ( deviazione di chiamata su mancata risposta )
    Attivazione:
    CLIR *31# + numero
    CFU *21# +numero
    CFB *22# +numero
    CFDA *23# +numero
    Disattivazione:
    CFU #21#
    CFB #22#
    CFDA #23#
  • Numero geografico
  • Portabilità di un numero gerografico verso OlimonTel
  • N.B: Se si richiede la portabilità del numero geografico verso OlimonTel il canone annuale è ZERO !
Infrastuttura ed Info

OlimonTel dispone di diversi datacenter localizzati nel territorio italiano:

  • 3 presidi operativi a Milano
  • 2 presidi operativi a Roma

così da differenziare i servizi e ridondare l’infrastruttura garantendo un uptime elevato. Per quanto riguarda la connettività OlimonTel ha accordi diretti con diversi carrier.

Approfondimenti

Videochiamata con LiberaIlVoIP

Libera il VoIP - Fri, 03/28/2014 - 01:13

Videochiamiamoci con LiV !

Da oggi LiberaIlVoIP supporta la VIDEOCHIAMATA tra interni

Ciao a tutti !!

Siamo liteti di annunciara che da oggi LiberaIlVoIP supporta la videochiamata tra interni !!

Sono stati provati i seguenti Softphone:

  • Linphone: open-source voip software, ve lo consigliamo per la sua estrema semplicità e facilità d’uso. E soprattutto è OPENSOURCE !
  • X-Lite 4.5: software freeware molto noto ma NON opensource

I codec video supportati sono:

  • H.261
  • H.263
  • H.263+
  • H.264

Impostazioni video consigliate: risoluzione massima a 640×480 o minore in funzione della banda a disposizione

Linphone

Queste sono le impostazioni che abbiamo provato.

X-Lite 4.5

Prossimamente aggiungenermo qui anche quelle di X-Lite

 

La discussione relativa la trovate qui

Approfondimenti
  • Hack LiberaIlVoIP Settings

    Questa pagina raccoglie le impostazioni speciali per il servizio LiberIlVoIP

    Ciao a tutti !!

    Abbiamo deciso di riassumere in questa guida le impostazioni SPECIALI disponibili nella GUI di LiV.

    I modificatori vanno aggiunti nella [...]

  • Videochiamate sip to flash e flash to sip

    La rivoluzione passa dalla Russia! Gli ideatori di Flashphone realizzano il primo Media Gateway capace di interfacciare il protocollo SIP ed il linguaggio Flash e che permettere le video chiamate tra browser [...]

  • Liberailvoip sul blog di Inum

    Alcuni giorni addietro il nostro servizio è stato citato nel blog ufficiale di Inum nell’ambito del programma di affiliazione per il rilascio e la gestione delle nuove numerazioni universali +883. E’ con enorme [...]

3CX – PBX VoIP per Windows

Libera il VoIP - Wed, 03/26/2014 - 10:06

Il PBX VoIP per sistemi Windows.

Facile da installare e facile da usare!

IVR disponibile anche nella versione FREE !!

Vediamo assieme l’installazione e la configurazione delle principali funzionalità.
Oggi vi presento il PBX VoIP software per windows: 3CX Phone System

Installazione

L’installazione è molto semplice se si hanno tutti i requisiti richiesti:

  • Windows 7 o superiore aggiornato
  • Framework 4.5 .Net o superiore
  • 4GB RAM di sistema consigliati di cui almeno 1GB liberi

Nella galleria ci sono tutti i passi dell’installazione…

Impostare i messaggi in italiano

La lingua italiana la si imposta direttamente durante l’installazione, ma i messaggi vocali di sistema italiani devono essere scaricati a parte dopo l’avvio del sistema come mostrato qui di seguito.

Funzionalità molto interessanti
  • IVR: Risponditore automatico
  • Segreterie Telefoniche personalizzabili
  • Configurazione automatica dei telefoni IP
  • Connessione Gateway per linee fisse (cablate)
IVR: Interactive Voice Responder

E’ il risponditore automatico vocale interattivo che guida l’utente con messaggi registrati interpretando la scelta numerica impartita con la tastiera del telefono

Un esempio lo potete vedere in questa immagine

Esempio 3CX IVR

Esempio di IVR

Nell’esempio ho costruito un IVR a doppio livello, tipo quelli usati in un call center. L’utente chiama il numero associato all’IVR e parte il messaggio registrato che elenca le possibilità di scelta.

Il messaggio può essere registrato comodamente da un telefono collegato ad un interno del PBX, cliccando l’icona della cornetta, si decide che nome dare alla registrazione e che interno usare per la registrazione. Una volta premuto OK, il telefono squilla e si viene guidati vocalmente alla registrazione: Registra il tuo messaggio e premi asterisco alla fine… Digita zero per salvare.

  • Le prime scelte collegano direttamente  ad un interno
  • Il 4 forza la ripetizione del messaggio vocale di guida
  • Il 5 collega l’utente ad un altro IVR a cui sono associati altri servizi
  • Il 6 collega l’utente alla coda per accedere solitamente ad un pool di operatori
  • Il 7 fa capo alla funzione di chiamata per nome
  • 8 trasferisce la chiamata direttamente alla segreteria
  • Il 9 passa la chiamata all’operatore
  • Lo 0 (zero) termina la chiamata.
La coda

Le code sono molto utili quando si ricevono molte chiamate e il personale preposto non può rispondere a tutte. E’ un modo automatico di mettere il chiamante in attesa senza necessità di un operatore.

In 3CX le code implementano le priorità sia dei chiamanti sia della distribuzione delle chiamate in attesa in funzione della priorità assegnata ad ogni operatore assegnato alla coda.

3CX Coda

Gli algoritmi di assegnazione delle chiamate in attesa sono molteplici ma solo quello di tipo Random è compreso nella versione gratuita.

Utile l’assegnazione di un’azione in caso di timeout, nell’esempio si passa la chiamata alla segreteria.

Chiamata per Nome

Questa simpatica funzione invita l’utente a digitare le prime tre lettere del nome della persona cercata senza quindi conoscerne il numero interno.

Segreterie Telefoniche (Voice Mail)

3CX Voice Mail

Ogni interno ha a disposizione la VM configurabile direttamente dal proprio telefono digitando 999.

Configurazione automatica dei telefoni IP

Questa funzionalità permette di configurare in automatico il telefoni VoIP supportati.

La prima operazione è impostare i parametri generali del provisioning come il fuso orario ed il server dell’ora in modo tale da sincronizzare tutti gli apparecchi ed il PBX. Il secondo passo è annotarsi il modello ed il MAC del telefono da associare ad un specifico interno. Nella sezione Approvvigionamento Telefono dell’interno scelto, si deve impostare il modello ed il MAC, fatto questo verranno visualizzate le impostazioni disponibili.

Configurazione Telefono Per Interno 100

Configurazione generale del provisioning

Connessione Gateway e/o Provider

Configurazione con LiberaIlVoIP

Le immagini seguenti mostrano come configurare un provider voip, ad esempio LiberaIlVoIP

Configurazione Gateway

Per connettere le linee fisiche al PBX VOIP bisogna dotarsi di un apparecchio chiamato Gateway PSTN o ISDN, questo trasforma la linea fissa in una VoIP cosi da poter essere gestita tramite il centralino.

L’unico passaggio da fare dopo è caricare il file di configurazione generato nel gateway.

P.S. Le regole di ingresso vanno impostate dopo aver concluso la creazione del gateway.

Spero di aver reso l’idea della semplicità di configurazione che questo prodotto ha raggiunto !

Buona Sperimentazione !

Approfondimenti

Aggiornamento Febbraio 2014

Libera il VoIP - Tue, 03/04/2014 - 22:28

Cosa sta facendo lo staff ? E gli utenti ?

Ciao a tutti !!

Pubblichiamo il bollettino dello stato del vostro servizio VoIP preferito

Febbraio 2014
  • Provider in uso 4150 di cui 2440 registrati per ricevere le chiamate
  • Interni attivi 1345
  • Chiamate 3350 terminate al giorno
  • 80 nuovi utenti

Novità:
  • Riattivato il test di chiamata
Lo staff si sta impegnado su:
  • Miglioramento del Monitor
  • Correzzione automatica degli indirizzi register dei provider voip inseriti
  • Rafforzare la sicurezza dei servizi VoIP
  • Applicazione Android per monitorare il proprio account
  • Report via mail di eventuali problemi riscontrati sul proprio account
Miglioramento del sito web:
  • Avviso dello stato dell’account in home page
  • Passaggio di tutto il sito in SSL
  • DashBoard dello stato globale dei servizi

Approfondimenti
  • Aggiornamento Gennaio 2014

    Cosa sta facendo lo staff ? E gli utenti ?

    Ciao a tutti !!

    Pubblichiamo il bollettino dello stato del vostro servizio VoIP preferito

    Gennaio 2014
    • Provider in uso 4350 di cui 2550 registrati per ricevere le [...]
  • Aggiornamento Marzo 2014

    Cosa sta facendo lo staff ? E gli utenti ?

    Ciao a tutti !!

    Pubblichiamo il bollettino dello stato del vostro servizio VoIP preferito

    Marzo 2014
    • Provider in uso 4150 di cui 2470 registrati per ricevere le [...]
  • Aggiornamento del 25 dicembre 2013

    Cosa sta facendo lo staff ? E gli utenti ?

    Ciao a tutti !!

    Anche se un po in ritardo pubblichiamo il bollettino dello stato del vostro servizio VoIP preferito

    Dicembre 2013
    • Provider in uso 4413 di [...]

Call forwarding/redirection in FreeSWITCH

TXLAB - Sun, 02/16/2014 - 06:57

Consider you have two different contexts in your dialplan for inbound and outbound calls: the “public” context transfers the calls into “XXX_inbound” (XXX being your organization name), and the user directory has “XXX_outbound” as “user_context” variable.

Having two contexts, you have more flexibility in defining the short dial strings and outbound destinations.

But there’s a little problem: if the SIP client redirects the ringing call, or if the user makes an attended transfer, FreeSWITCH would initiate a new outbound leg in the same context where the call was bridged toward the SIP client.

As a solution, you need to define a new extension in your XXX_inbound context which would match PSTN outbound numbers. The channel will already have all custom variables which were set before bridging toward the SIP client, so you can set an additional condition criteria to make sure that this is the redirected call. This example would be placed at the bottom of the inbound context, and “directory_ext” is the variable that was earlier in the same context before the call was bridged to the SIP client:

    <extension name="call_forward">       <condition field="destination_number" expression="^\d+$"/>       <condition field="${directory_ext}" expression="^70\d$">         <action application="set" data="hangup_after_bridge=true"/>         <action application="set" data="continue_on_fail=false"/>         <action application="bridge" data="${outgw}/${destination_number}"/>       </condition>             </extension>
Filed under: Networking Tagged: freeswitch, pbx, sip, voip

Reusing HTTP connections in client-server applications

TXLAB - Sat, 11/16/2013 - 02:16

I’m working on a clientserver application which uses HTTP as a transport protocol for API requests, and sometimes there are occasions with a need to execute a few hundreds requests, such as data import or synchronization.

With default Apache HTTP server settings and default LWP::UserAgent options, every new request would result in a new HTTP session, and each time a DNS query is sent out. So, a synchronization process with a thousand object floods the DNS service with the same requests for the HTTP server name. This results in delays, and some public DNS servers apply rate limits which cause DNS lookup failures (had this with a domain hosted at Godaddy name servers).

HTTP 1.1 protocol supports reusing of persistent connections, but it’s not enabled by default in Apache and in the client.

In Apache HTTP server, the following options need to be configured:

  KeepAlive On   MaxKeepAliveRequests 500

In the Perl client program, LWP::UserAgent needs the keep-alive option:

  my $ua = LWP::UserAgent->new(keep_alive => 1);

With these modifications, the DNS queries are only sent on every 500th API request, and the HTTP connection is reused between the requests, which saves CPU time on the server. This speeds up the whole process significantly, and also prevents the DNS failures caused by rate limiting.


Filed under: Networking, Programming Tagged: network api, perl

Minimal FreeSWITCH configuration

TXLAB - Wed, 11/13/2013 - 14:15

It’s always a bit of an effort to remove unneeded features from the default FreeSWITCH configuration. So, I made the minimal configuration which still allows to start the server, but does completely nothing. It’s now much easier to start a new server configuration for any new project.

The configuration is placed at Github. It’s very straightforward to use with FreeSWITCH Debian packages, and can also be used if you compile it from sources:

cd /etc git clone https://github.com/xlab1/freeswitch_conf_minimal.git freeswitch

The configuration contains a number of empty “stub.xml” files in order to make the XML pre-processor happy.

It also makes sense to start using Git for your own FreeSWITCH configurations :)


Filed under: Networking Tagged: freeswitch, pbx, sip, voip, xlab1

FreeSWITCH performance on Intel Atom CPU

TXLAB - Sun, 10/13/2013 - 00:22

There are multiple low-power, fanless  appliances on the market, and most of them are powered by Intel Atom processors. I needed an estimation how well an Atom would perform for a FreeSWITCH PBX application.

In this test, I use two Acer Aspire One notebooks with different processors:

  • atom01: Atom N2600 (2 cores, 4 virtual CPUs, 512KB cache and 600MHz per virtual CPU, 12768.02 BogoMIPS)
  • atom02: Atom N570 (2 cores, 4 virtual CPUs, 512KB cache and 1000MHz per virtual CPU, 13302.08 BogoMIPS)

Both notebooks are running 32-bit Debian 7 Wheezy (Kernel version 3.2.0-4-686-pae), and FreeSWITCH version 1.2.13 from pre-built Debian packages.

Test results summary

All calls in this test used transcoding between G.711alaw and G.722. The bottleneck in performance was always at the N2600 (atom01), because of slower CPU. In general, N570 can handle approximately 30% higher load than N2600.

With 10 concurrent calls (21 channels on atom01 and 20 channels on atom02), there is no voice distortion and new call processing does not disturb the ongoing calls. Each virtual CPU is busy at 20-25%

With 20 concurrent calls (41 channels on atom01 and 40 cannels on atom02), there is some minor voice distortion, especially during incoming calls, but quality s still acceptable.

With 27 concurrent calls (55 and 54 channels), voice distortions were too high and not acceptable. Every virtual CPU on atom01 was busy at around 50%, which means full load for the whole CPU.

With 20 concurrent calls without transcoding (PCMA only in all call legs), each CPU core on atom01 was utilized at around 9-10%. So, theoretically the platform can handle up to 40-50 simultaneous calls in non-transcoding mode.

Only the voice quality was tested. CPS was not tested, and it depends heavily on the complexity of the dialplan. But the overall response of the system was quite acceptable.

Testing details

I took my minimal FreeSWITCH configuration for the tests, and extended it as follows:

atom01

sip_profiles/external/itsp.xml registers at my vPBX, so that I could initiate the calls. Incoming calls are sent to extension 500.

sip_profiles/external/atom02.xml defines the gateway that points to atom02:

<include>   <gateway name="atom02">     <param name="register" value="false"/>     <param name="proxy" value="192.168.1.61:5080"/>     <param name="ping" value="27"/>   </gateway> </include>

dialplan/public/15_bulkmatch.xml consists of 100 identical conditions, like shown below. It does not do anything useful, and it’s only used to make FreeSWITCH  busy processing the dialplan:

<include>   <extension name="bmatch" continue="true">     <condition field="destination_number" expression="^(\d+)$">       <action application="set" data="xxxxx=$1"/>     </condition>   </extension>   <extension name="bmatch" continue="true">     <condition field="destination_number" expression="^(\d+)$">       <action application="set" data="xxxxx=$1"/>     </condition>   </extension> ......

dialplan/public/20_perftest.xmltakes the call at extension 500 and plays delayed echo. When I press *1, it makes a new call leg to atom02 in G711alaw codec, and atom02 makes a new call leg back to atom01 in G.722:

<include>   <extension name="500">     <condition field="destination_number" expression="^500$">       <action application="answer"/>       <action application="bind_meta_app" data="1 a si transfer::501 XML ${context}"/>       <action application="delay_echo" data="1000"/>     </condition>   </extension>   <extension name="501">     <condition field="destination_number" expression="^501$">       <action application="playback" data="tone_stream://%(100,100,1400,2060,2450,2600)"/>       <action application="unbind_meta_app" data=""/>       <action application="bridge" data="{absolute_codec_string=PCMA}sofia/gateway/atom02/600"/>     </condition>   </extension>  </include> atom02

sip_profiles/external/atom01.xml defines the gateway pointing to atom01:

<include>   <gateway name="atom01">     <param name="register" value="false"/>     <param name="proxy" value="192.168.1.60:5080"/>     <param name="ping" value="27"/>   </gateway> </include>

dialplan/public/15_bulkmatch.xml is identical to that on atom01.

dialplan/public/20_perftest.xml answers the call at extension 600 and places a new call to extension 500 at atom01:

<include>     <extension name="600">     <condition field="destination_number" expression="^600$">       <action application="answer"/>       <action application="bridge" data="{max_forwards=65}{absolute_codec_string=G722}sofia/gateway/atom01/500"/>     </condition>   </extension> </include>

When non-transcoding tests are made, the codec string is changed to PCMA.


Filed under: Networking Tagged: freeswitch, linux, pbx, sip, testing, voip, xlab1

How I bought Microsoft Visio Pro for Office 365

TXLAB - Tue, 10/08/2013 - 02:01

I needed to have MS Visio Professional on my new Win8 notebook, but paying $900 for the license was somewhat uncomfortable. Also relatively recently, Microsoft started offering Office 365 subscriptions where the software is offered as a monthly or yearly subscription instead of a one-off purchase.

It appears that MS Visio is also offered as subscription, but for some reason it’s not so easy to find: on the product page, you see only the full license for purchasing. But if you click to “Try or buy”, you have a “Learn more” link under the Visio Pro for Office 365 title.

Then, I could not find anywhere, which Office 365 subscription is needed to add Visio to it. So i thought, maybe I should just buy one, so I ordered the one which seemed the right one for my purposes, Office 365 Small Business Premium.

When I tried to add Visio Pro for Office 365 to my account, I got an error that this product is incompatible with my current subscription, and they tried to make me create a new subscription instead.

So, I opened a support request and they explained me that Visio can only be added to Office 365 Enterprise subscriptions!

I then asked them to cancel my subscription and promised to open an Enterprise one.

But: to say the truth, I actually had a valid Office 2007 license, and I only needed Visio. So, I made a new subscription for Visio only. Also funny, that even after deleting my first subscription, I could not use the same account name, and had to come up with a new name.

Actually that was not the end of the fun: after buying it, it took a while to find the installation link in the Office 365 Admin panel. Also when I clicked and downloaded something, it was not an installer in its traditional way. It was a self-extracting archive with a command line utility in it, and a sample XML file. Luckily this XML file had already an example for Visio, so I only needed to uncomment the relevant parts of it, and then use the command-line tool to download and set up the software. It was not difficult, but kind of surprising :)

So, finally I got Visio 2013 working, and Office 2007 has installed and activated smoothly. But I lost about hour or so because of:

  1. obscure product information on MS website
  2. strange incompatibility in subscription plans
  3. command-line installer with an XML that needed manual editing (!)

 


Filed under: Weird things Tagged: microsoft, office 365, visio

Out-of-business greeting with FreeSWITCH

TXLAB - Sat, 08/17/2013 - 23:22

After I got my US number at Callcentric, I got several wrong calls in the following days. The calls were quite late at night, and most of them dropped after few seconds, before I could take up the handset. And another ring around 3am was really long and loud, and it dropped anyway before I could come up and pick the call.

First, I needed to record my own greeting. In “default” dialplan, I added a new extension. It takes a recording and plays it back :

  <!-- 7396: Record a greeting -->   <extension name="app_7396">     <condition field="destination_number" expression="^7396$">       <action application="answer"/>       <action application="sleep" data="500"/>       <action application="playback" data="tone_stream://%(100,100,1400,2060,2450,2600)"/>       <action application="set" data="playback_terminators=#"/>       <action application="set" data="record_waste_resources=true"/>       <action application="set" data="recfilename=$${base_dir}/recordings/greeting_${strftime(%Y-%m-%d-%H-%M-%S)}.wav"/>       <action application="record" data="${recfilename}"/>       <action application="sleep" data="700"/>       <action application="playback" data="tone_stream://%(100,100,1400,2060,2450,2600)"/>       <action application="playback" data="${recfilename}"/>       <action application="hangup"/>     </condition>   </extension>

As I’m using a Gigaset 610IP handset with G722 codec, the produced recording had 16KHz sampling rate, and needed to be resampled, because inbound external calls are G711 only:

sox recordings/greeting_2013-08-17-11-46-35.wav sounds/dvop/8000/ssinyagin_oob.wav rate 8000

Then my extension in “public” dialplan is modified to play the greeting unless the call is between 7am and 11pm. It also plays MOH for 5 seconds before bridging the call, and continues playing MOH while ringing my phone.  This gives the mistaken caller another chance to realize that something is wrong and drop the call.

  <extension name="pub_ssinyagin">     <condition field="destination_number" expression="^ssinyagin$" break="on-false">       <action application="set" data="timezone=Europe/Zurich" inline="true"/>     </condition>     <!-- 7:00 - 23:00 -->     <condition minute-of-day="420-1000" break="on-true">  <action application="answer"/> <action application="set" data="playback_timeout_sec=5"/> <action application="playback" data="$${hold_music}"/> <action application="set" data="ringback=$${hold_music}"/>       <action application="transfer" data="7110 XML default"/>     </condition>     <condition>       <action application="answer"/>       <action application="sleep" data="1000"/>       <action application="playback" data="$${sounds_dir}/dvop/ssinyagin_oob.wav"/>       <action application="hangup"/>     </condition>   </extension>
Filed under: Networking Tagged: freeswitch, pbx, voip

Free US number and Caller ID manipulation

TXLAB - Sat, 08/03/2013 - 17:46

Callcentric offers US numbers in NY area code, with zero recurring costs. This is very convenient if you want your USA customers to connect to your PBX. After ordering a free number, you create a SIP account and route the DID to it. The service allows to register multiple free numbers. Forwarding to SIP URI is not supported.

Upon receiving a call, the caller ID in From field will look like 16313335447, with the country code without any leading symbols. The following piece of FreeSWITCH configuration (in public context) alters the caller ID in order to look like a normal number in a European dial plan:

  <extension name="intl_normalize" continue="true">     <!-- remove Swiss country code -->     <condition field="${caller_id_number}" expression="^41(\d+)" break="on-true">       <action application="set" data="effective_caller_id_number=0$1"/>       <action application="set" data="effective_caller_id_name=0$1"/>     </condition>     <!-- add 00 in front of country code -->     <condition field="${caller_id_number}" expression="^[1-9]" break="on-true">       <action application="set" data="effective_caller_id_number=00${caller_id_number}"/>       <action application="set" data="effective_caller_id_name=00${caller_id_number}"/>     </condition>   </extension>

It is important to set both effective_caller_id_number and effective_caller_id_name variables. If only effective_caller_id_number is set, the effective_caller_id_name still keeps the original caller ID number, and if the call is bridged to a local extension, the SIP phone may want to use it for displaying the caller.

 

 


Filed under: Networking Tagged: freeswitch, pbx, sip, voip

voxserv.ch and Twitter Bootstrap site templates

TXLAB - Thu, 07/25/2013 - 23:48

Here’s a new website where I promote the VoIP integration services on Swiss market: http://www.voxserv.ch/

The website is built with the Twitter Bootstrap, and here are the templates for template-toolkit which separate the Bootstrap HTML from text content: https://github.com/ssinyagin/voxserv.ch/tree/master/builder


Filed under: Networking, Programming Tagged: linux, server management

Handling e164 numbers in FreeSWITCH

TXLAB - Sat, 07/06/2013 - 03:11

SIP clients installed on smartphones may pick up the destination number from the phone book, and it’s sometimes in e.164 format (+[countrycode][localdigits]).

The following piece of XML dialplan transforms such numbers into the standard form that is expected by most PSTN VoIP providers. This example assumes that the FreeSWITCH server is located in Switzerland and +41 is the e.164 prefix for in-land calls. It returns the call to the same context, making the switch traverse the whole context dialplan from the beginning. It makes sense to place this extension at the bottom of a context.

    <extension name="e164_pstn">       <condition field="destination_number" expression="^\+41(\d+)" break="on-true">         <action application="transfer" data="0$1 XML ${context}"/>       </condition>       <condition field="destination_number" expression="^\+(\d+)" break="on-true">         <action application="transfer" data="00$1 XML ${context}"/>       </condition>     </extension>
Filed under: Networking Tagged: freeswitch, pbx, voip

FreeSWITCH: Limiting the number of concurrent calls on multiple SIP accounts

TXLAB - Sun, 06/30/2013 - 02:52

The user has several SIP accounts on a vPBX, and he wants that maximum one call is possible at a time.

The limit application in FreeSWITCH allows to control the number of concurrent calls, but one should be careful with when this limit should be applied. The switch decrements the limit counter automatically when a channel is terminated. But if the limit is executed on a-leg, and b-leg is transferred, the limit counter decreases only when the a-leg finishes the call. As a result, the user may receive a call, transfer it to a new destination and hang up, but the new calls are not coming in because the limit counter is reset when the original call ends.

In order to reset the limit counter after the b-leg is transferred, the limit application needs to be executed on b-leg only. This is possible by exporting the execute_on_answer variable with nolocal modifier.

The example also shows how to retrieve user variables from the XML directory in the calls toward the user.

  <context name="moretti">     <extension name="common_variables" continue="true">       <condition>         <action inline="true" application="set" data="availability_username=moretti"/>       </condition>     </extension>     <extension name="pstn_out">             <condition field="destination_number" expression="^[01]" break="on-false">         <!-- For outbound calls, we only set the limit counters,              but do not limit the call -->         <action application="limit" data="hash ${domain_name} ${availability_username} -1"/>         <action application="set" data="hangup_after_bridge=true"/>         <action application="set" data="continue_on_fail=false"/>       </condition>       <condition>         <action application="bridge" data="${outgw}/${destination_number}"/>       </condition>     </extension>     <extension name="inbound_73x">       <condition field="destination_number" expression="^73(d)$" break="on-false">         <!-- retrieve variables from the user entry in the directory -->         <action application="set" data="directory_userid=70$1@${domain_name}"/>         <action application="set" data="call_timeout=${user_data(${directory_userid} var ring_timeout)}"/>       </condition>       <!-- check the limit -->       <condition field="${cond(${limit_usage(hash ${domain} ${availability_username})} > 0 ? true:false)}"                  expression="^true$" break="on-true">         <action application="hangup"/>       </condition>       <!-- group call to the SIP user and a mobile phone -->       <condition>         <action application="export" data="nolocal:execute_on_answer=limit hash ${domain} ${availability_username} -1"/>         <action application="set" data="ignore_early_media=true"/>         <action application="set" data="transfer_ringback=$${hold_music}"/>         <action application="set" data="hangup_after_bridge=true"/>         <action application="set" data="continue_on_fail=false"/>         <action application="bridge" data="user/${directory_userid},[leg_delay_start=10]${outgw}/0123456789"/>       </condition>     </extension>       </context>
Filed under: Networking Tagged: freeswitch, pbx, sip, voip

Pages

Subscribe to OpenTelecom.IT aggregator

Using the greatness of Parallax

Phosfluorescently utilize future-proof scenarios whereas timely leadership skills. Seamlessly administrate maintainable quality vectors whereas proactive mindshare.

Dramatically plagiarize visionary internal or "organic" sources via process-centric. Compellingly exploit worldwide communities for high standards in growth strategies.

Get free trial

Wow, this most certainly is a great a theme.

John Smith
Company name

Yet more available pages

Responsive grid

Donec sed odio dui. Nulla vitae elit libero, a pharetra augue. Nullam id dolor id nibh ultricies vehicula ut id elit. Integer posuere erat a ante venenatis dapibus posuere velit aliquet.

More »

Typography

Donec sed odio dui. Nulla vitae elit libero, a pharetra augue. Nullam id dolor id nibh ultricies vehicula ut id elit. Integer posuere erat a ante venenatis dapibus posuere velit aliquet.

More »

Startup Growth Lite is a free theme, contributed to the Drupal Community by More than Themes.