Vamos a comprobar cuantas llamadas podría tener activas una Raspberry Pi con Asterisk sin que el servicio tuviese pérdida de calidad.pi_asterisk

Requisitos:

  • Rasberry Pi con Raspbian.
  • Una maquina donde instalar SIPp.

En mi caso he instalado Asterisk desde los repositorios de debian. Con Raspbian 8.0 ( Conocer vuestra versión de Raspbian: “cat /etc/issue” ) debería instalaros Asterisk 11.13.1.

sudo apt-get install asterisk

En la configuración inicial de Asterisk hay un fallo, el el fichero /etc/asterisk/manager.conf realiza un include de todos los .conf que haya en /etc/asterisk/manager.d/

; #include "manager.d/*.conf"

 

Al final del fichero /etc/asterisk/sip.conf ponéis esto:

[sipp]
type=friend
context=sipp
host=dynamic
port=6000
user=sipp
canreinvite=no
disallow=all
allow=alaw
allow=ulaw

[100]
type=friend
context=sipp
host=dynamic
user=100
secret=<pass>
disallow=all
allow=ulaw

[101]
type=friend
context=sipp
host=dynamic
user=101
secret=<pass>
disallow=all
allow=ulaw

En el fichero /etc/asterisk/extensions.conf, creáis el contexto [sipp] para que nuestras extensiones puedan usarlo. Aquí incluimos al final del fichero:

[sipp]
exten => 1001,1,Answer
exten => 1001,n,SetMusicOnHold(default)
exten => 1001,n,WaitMusicOnHold(20)
exten => 1001,n,Hangup
exten => 1002,1,Answer
exten => 1002,n,Goto(demo,s,1)
exten => 1002,n,Hangup
exten => 100,1,Dial(SIP/100)
exten => 100,n,Hangup
exten => 101,1,Dial(SIP/101)
exten => 101,n,Hangup

Una vez introducidos estos cambios accedemos a la consola de Asterisk.

sudo asterisk –rvvvvvv

Ejecutamos “module reload”, veremos que el sistema recarga toda la configuración, no debe haber errores.

Ahora viene la parte para instalar SIPp. Mi máquina de pruebas para SIPp es una Ubuntu 16.0.4, podemos instalar SIPp directamente desde los repositorios, instalará la versión 3.2.

sudo apt-get install sip-tester

Donde hayamos instalado SIPp lanzamos el siguiente comando:
sipp –sn uac –d 10000 –s 1002 <ip host asterisk> -l 5 –mp 5606

-sn uac Escenario por defecto de SIPp
-d 10000 Tiempo de llamada en milisegundos
-s 1002 Usuario al que vamos a llamar en el otro extremo.
-l 5 Mantener 5 llamadas activas.
-mp 5606 Indicamos donde queremos que nos envíe el RTP de vuelta.

Con esto conseguimos mantener 5 conversaciones activas, de 10 segundos cada una y simulando audio en ambos sentidos. Así conseguiremos un escenario lo más próximo a llamadas reales.

Yo he mantenido dos SSH hacía mi máquina con Asterisk, un terminal con htop para ver los recursos en la Raspberry y otro con la consola de Asterisk para ver la salida.

En una segunda fase, vamos a realizar una llamada real entre dos extensiones para comprobar la calidad de la llamada. Aquí es donde comprobaremos fehacientemente si nuestra pequeña Raspberry está teniendo problemas para mover tantas llamadas.

Para ello, yo he configurado la extensión 100 y 101 que anteriormente hemos configurado en el sip.conf.

Con dos extensiones con el mismo códec (ulaw) hemos mantenido 40 llamadas activas sin que la conversación se viese afectada. Es un valor muy bueno teniendo en cuenta la potencia.

La cosa ha cambiado mucho cuando hemos lanzado una llamada entre ambas extensiones pero cada una con un códec (gsm-ulaw), hemos podido mantener unas 10 llamadas simultaneas.

Conclusiones:
Sin transcoding y sin usar funciones extra de Asterisk podríamos lanzar un numero aceptable de llamadas. Si todas nuestras llamadas van a tener transcoding no creo que se puedan mantener mas de 2 o 3 llamadas simultaneas.

Creo que podríamos mejorar el rendimiento dándole prioridad al proceso Asterisk y eliminando módulos de la configuración del mismo.

Hasta la próxima.

Iperf es una herramienta open source escrita en C, que nos permite medir valores de rendimiento de red creando flujos tanto TCP como UDP. Es multiplataforma, así que podremos hacer uso de ella tanto en Linux como también en Windows.

En mi caso usaré iperf2, existe una reescritura de iperf (iperf3) hecha en enero de 2014. Como quiero medir la calidad de la red para VozIP, los ejemplos serán con el protocolo UDP. Para VozIP lo importante es tener un jitter bajo y no tener perdida de paquetes.

Lado del servidor:

iperf -s -u -f MB -i1

-s Indica que este será el servidor.

-u Indica UDP

-f MB Para formatear la salida.

-i1 Para asignar 1 segundo de intervalo entre las tramas.

 

Lado cliente:

iperf -c 192.168.1.20 -u -f MB -t 60 -b 0.1m

-c  192.168.1.20 Host del servidor.

-u Medir UDP (también lo hemos indicado en el servidor)

-fMB Formato de salida.

-t60 Tiempo de envío, cuanto estará activo. Expresado en segundos.

-b 0.1m Ancho de banda bidireccional

 

 

Este es un comando muy útil cuando queremos copiar ficheros de una ubicación a otra y además conservar la estructura de directorios origen. Esto además de mantener un orden en destino nos evita machacar ficheros que se llamen igual.

En este ejemplo buscaremos con find los ficheros con extensión .log y gracias al parámetro -exec copiaremos todos ellos de /var/log/ a tu carpeta personal.
find /var/log -type f -name "*.log" -exec --parents cp {} /home/usuario/ \;

Espero os sea tan útil como a mi. Hasta el próximo tip.

debian-square_400x400Tras pelearme durante unas cuantas horas con la puesta en marcha de una Debian 7 en mi portátil, he recopilado los pasos que he dado después de mucho ir hacia delante y detrás herrando en muchos de ellos.
El objetivo era obtener un sistema de escritorio con Gnome, útil, sin demasiados añadidos y ante todo ligero, ya que el portátil donde lo iba a instalar tiene algún tiempo.

Voy a saltarme la parte de la instalación, existen muchos tutoriales en internet y creo que para alguien con unos mínimos conocimientos no resta dificultad. Google es tu amigo.

Mi único consejo en este punto es que uséis el netinstall, que seleccioneis «SSH server», «Laptop» y «Standard system utilities» y que cuando comience la descarga desconectéis cualquier dispositivo de almacenamiento sobre todo antes de instalar Grub. A mi me instaló grub en un pendrive por lo que luego tuve que reinstalarlo.

Una vez instalada estos han sido los primeros pasos:

1) Configuración del sudo. Escribir:
su - "visudo"
Añadid esta linea: username ALL=(ALL) ALL (donde username es el usuario que habéis creado en la instalación)

Una vez hecho esto podremos seguir con los demás pasos sin tener que usar el root.

2) Es importante mantener el sistema actualizado.
sudo apt-get update
sudo apt-get upgrade

3) Repositorios, editamos el fichero /etc/apt/sources.list
Esta es la configuración que tengo para los repositiros, despues de estar leyendo un buen rato decidí dejarlo tal que así:

# deb http://ftp.cica.es/debian/ wheezy main

deb http://ftp.cica.es/debian/ wheezy main
deb-src http://ftp.cica.es/debian/ wheezy main

deb http://security.debian.org/ wheezy/updates main
deb-src http://security.debian.org/ wheezy/updates main

# wheezy-updates, previously known as ‘volatile’
deb http://ftp.cica.es/debian/ wheezy-updates main
deb-src http://ftp.cica.es/debian/ wheezy-updates main

# repositorios multimedia
# añadir key «sudo apt-get install deb-multimedia-keyring»
deb http://www.deb-multimedia.org wheezy main non-free
deb-src http://www.deb-multimedia.org wheezy main non-free

# repositorios non-free
deb http://ftp.es.debian.org/debian/ stable main contrib non-free
deb-src http://ftp.es.debian.org/debian/ stable main contrib non-free

Nos aseguramos de actualizar y comprobar que no hay errores en lo que hemos escrito, es posible que tengáis paquetes nuevos listos para descargar sobre todo por los repositorios multimedia añadidos. Sobre todo para codecs.

4) Si no tenemos costumbre de cada poco lanzar los comandos del paso 1, podemos estar enterados por notificaciones instalando:
sudo apt-get install apticron update-notifier-common debian-goodies

5) Drivers de video:
Como sabréis la gráfica suele ser un quebradero de cabeza. En mi caso tengo una «GeForce 9200M G» por lo que he instalado la versión 304 del driver.
Lo ideal es hacerlo desde synaptics, personalmente estuve siguiendo algunos tutoriales de como hacerlo descargando con apt-get lo necesario pero empezó a complicarse.
Tan solo tenéis que saber cual es la versión de vuestro kernel uname -r
Desde synaptics instalamos los siguientes paquetes:

nvidia-kernel-(tuversion de kernel)
nvidia-glx
nvidia-xconfig
nvidia-settings

En mi caso tras la instalación la pantalla se me quedó en negro, comprobé que no se había generado el fichero xorg.conf
Para recrearlo: sudo Xorg :1 -configure

Nos creará en /root un fichero xorg.conf.new, lo movemos a /etc/X11/ y listo.
sudo mv /root/xorg.conf.new /etc/X11/xorg.conf
6) Ajusté los botones de la barra de títulos de las ventanas para ponerlo a la derecha.
gsettings set org.gnome.shell.overrides button-layout ':minimize,maximize,close'

Hasta ahí todo bien, tenemos un escritorio ligero, con Gnome-Shell (que personalmente odio), ligero ya que ocupa unos 500mb en memoria, listo para usar, pero que presenta algunas carencias sobre todo en multimedia que son salvables pero que nos harán la vida un poco más dificil. Si este no es el cometido de tu sistema no tienes de que preocuparte.