Contador estandar

11. June 2008

FreePBX le planta cara a Fonality y lo acusa de mentir

Como si de una telenovela se tratase, los movimientos estratégicos de Fonality con respecto a FreePBX se está convirtiendo en una historia de amor, engaños, amantes y por último odio.

Cualquiera que esté interesado en esta novela que llevamos contando desde hace algún tiempo, Fonality lleva bastante tiempo buscando un interfaz web para no depender de la aplicación que ha hecho famoso a su conocido TrixBox: FreePBX.

Hace unas semanas Fonality hizo público que estaba cansado de pagar a la gente de FreePBX para que corrigiese bugs y para que siguieran mejorando el interfaz que hace que la gente instale Trixbox, por lo que habían tomado la decisión de hacer un ‘fork’ de FreePBX controlado únicamente por Fonality. No obstante la respuesta, aunque ha tardado en llegar, ha aparecido en forma de queja y presunta acusación de engaño a los usuarios del foro de FreePBX por parte de Kerry Garrison (CEO de Fonality) cuando el administrador de los foros de FreePBX ha detectado que “kgarrison” cambiaba de usuario para seguir comentando hilos bajo otro pseudónimo “GPLLaw” a lo que el administrador de los foros procedió baneando a este último usuario por lo que recibió una carta de queja por parte de GPLLaw:

I am quite disappointed in the fact that I have been blocked from posting on your site. I routinely call out other projects such as trixbox, Elastix, PBX-In-A-Flash, Asterisk, CentOS, Apache and other when either there is a violation of GPL rules or when someone is misinterpreting the GPL license or Free Software Foundation guidelines. Some of your users are completely misconstruing the spirit of the FSF and I have pointed out the links and quotes from the FSF that backup their position. I am sorely disappointed that when I returned today to again reiterate the stance of the FSF and of the GPL I find that opposing views to your community are met with accounts being blocked. Perhaps this is an overstepping of bounds from one of your moderators but I can assure you that I am very disappointed and will have no problem calling this out in a more public forum if this is the policy of the FreePBX team. As I am sure this cannot be the position of a leader of an open source project, I am letting you know about it before publicly accusing the project leaders of blocking users for disagreeing with a very small number of people from the community.

GPLLaw
Cuando la gente de FreePBX recibieron este mensaje no daban crédito (kgarrison tiene su cuenta y puede utilizarla libremente para mostrar su opinión cuando lo desee) así que preguntan en el foro qué hacer con este lío y las respuestas no tardaron en llegar.

Por lo visto, esta técnica se había repetido hasta 4 veces en la página de FreePBX con el mismo usuario.

Kerry Garrison se defiende diciendo que no ha sido él, que habrá sido alguien que habrá utilizado una técnica de IP Spoofing para utilizar su IP, pero la gente no es tonta y las pruebas son bastante contundentes.

Los comentarios no tienen desperdicios ya que se está abriendo un debate sobre lo ético que es montar una empresa para ganar dinero suministrando software que han hecho otros, la licencia GPL así lo permite pero no suele ser bien visto ya que, puestos a ganar dinero debería hacerlo la empresa que lo programa, no obstante, al ser aplicaciones libres ni FreePBX ni Asterisk ganan dinero directamente por hacer ni distribuir el software, algo que sí hacen empresas como Fonality con sus productos TrixBox Pro. Otros comentarios comentan ejemplos de empresas que hacen lo mismo con otros sistemas como Elastix.

lo dicho… una telenovela. Seguro que pronto veremos el siguiente capítulo.

04. June 2008

Frases para recordar (I)

Me gustaría empezar a recopilar ciertas frases leídas o escuchadas a determinadas personas con cierta relevancia en el mundo de la VoIP o de Asterisk y para ello voy a comenzar con dos que me han impresionado gratamente dos cosas: de quién procede y las frases en sí.

“Creo que en los próximos tres años, las soluciones de VoIP basadas en OpenSource como Asterisk generarán más negocio que todo el mercado de Linux hasta el día de hoy”

“Las soluciones PBX de hoy son increiblemente caras, cerradas y propietarias. Las soluciones basadas en Asterisk cuestan aproximadamente una décima parte del precio de una PBX propietaria.”

Jon “maddog” Hall en el congreso ZDNet UK, 06-10-2004

Para quien no conozca a Jon “maddog” (muy mal por cierto) es un señor parecido a Papa Noel (Santa Claus en América) y uno de los personajes más populares e importantes en la comunidad de software libre y además de ser el presidente de Linux Internacional, y se dedica a recorrer el mundo de punta a punta con la finalidad de dar a conocer las ventajas del empleo de Linux como sistema operativo.
Su biografía o lo que se conoce de ella.

Manipulando la voz en Asterisk

En marzo de 2007, escribí un artículo sobre un parche que permitía a Asterisk capturar la voz y distorsionarla lo suficiente para parece que hablaba un “pitufo” o bien un “troll”.

Pues hoy leo que el proyecto ha seguido vivo y han sacado nuevas actualizaciones que permiten modificar el “pitch” (la velocidad de reproducción en tiempo real de la voz) con algunas mejoras interesantes, como la actualización a Asterisk 1.4 y una reducción considerable de la carga de CPU (algo desproporcionada cuando lo probé en aquel momento).

Para probarlo, tan solo hay que ejecutar esto en consola:

# You can also install it through your package manager
cd /usr/src
wget http://www.surina.net/soundtouch/soundtouch-1.3.1.tar.gz
tar xvzf soundtouch-1.3.1.tar.gz
cd soundtouch-1.3.1/
./configure –prefix=/usr
make && make install
# install libsoundtouch4c
cd /usr/src
wget http://www.lobstertech.com/code/libsoundtouch4c/releases/libsoundtouch4c-0.4.tar.gz
tar -xzvf libsoundtouch4c-0.4.tar.gz
cd libsoundtouch4c-0.4
./configure –prefix=/usr
make && make install
# install the voice changer
cd /usr/src
wget http://www.lobstertech.com/code/voicechanger/releases/voicechanger-0.6.tar.gz
tar -xzvf voicechanger-0.6.tar.gz
cd voicechanger-0.6
make && make install
# load it in to asterisk
make start

Y una vez compilado corréctamente, tan solo añadir una linea como esta que deberás modificar convenientemente para ajustarlo a tu dialplan:

exten=>_XXX,1,VoiceChangeDial(SIP/${EXTEN}|T(30)P(-5.0)D(8:9)H(*))

El resultado no tiene precio. :D

Más información: http://www.lobstertech.com/code/voicechanger/

02. June 2008

Resumen de la conferencia de Mark Spencer en Bilbao

Acabo de llegar de Bilbao, concretamente de la conferencia que Mark Spencer ha dado en el museo Guggenheim, una mezcla entre tecnología aplicada a las comunicaciones basadas en software libre y lo más de lo más en el arte. Como decía un amigo: “la programación es un arte:)

Aquellos que no han tenido la suerte de venir, han podido seguirlo en directo mediante streaming en la página de Irontec y si aún así os lo habeis perdido, entonces aun tenéis la oportunidad de verla en la página de Alberto que la tiene grabada.

La conferencia ha sido todo un éxito, tanto por parte de Mark que ha sabido exponer este software como nadie, como por la parte de la organización que ha conseguido (no sin dificultad) una excelente localización, así como los mejores medios (traducción simultanea inglés-español) y un ambiente comunitario sin igual donde curiosos y expertos encontraban el lugar perfecto para compartir experiencias y conocerse.

Con respecto a la conferencia, Mark ha sabido darle ese toque mágico que suele dar cuando un jóven se sube a un escenario y empieza hablar sobre cómo se ha llegado en apenas 9 años a movilizar a tantas y tantas personas convirtiendo al movimiento Asterisk en uno de los más premiados y valorados incluso por las grandes empresas fabricantes de dispositivos de telecomunicaciones.

Entre los puntos a destacar:

- Las ventajas de Asterisk y el OpenSource en las comunicaciones.
Aquí comentó las ventajas que dispone una empresa en modificar el código para ofrecer soluciones altamente personalizadas, a la vez de contribuir para el desarrollo de esta aplicación y mantener vivo el movimiento del software libre. La retroalimentación inteligente provocada por la aportación de la comunidad de software libre y la aportación económica que ofrecen las empresas que utilizan esta aplicación adquiriendo hardware lo que lo convierte en un proyecto doblemente impulsado.

- Asterisk como sistema ideal en entornos con requisitos específicos y nada generales.
Empresas que han desarrollado con Asterisk soluciones muy específicas y curiosas, incluso algunas de las que ya hemos hablado en Sinologic: Asterisk como cuidador de plantas, Asterisk como puerta de acceso telefónico para acceder a eBay, y un largo etcétera que provocó alguna que otra carcajada como la anécdota que contó en la entrevista de Asterisk-Tag sobre la cola de espera con preguntas del trivial y que, a medida que la gente respondía corréctamente, avanzada en la posición de la cola, mientras que si respondían mal, descendía posiciones. :)

- Digium como “sponsor benevolente de Asterisk”.

Explicaba que Digium, al ser el creador de Asterisk, busca el equilibrio entre desarrolladores de la comunidad y desarrolladores propios de Digium para poder crear un sistema tan comercial como comunitario y que todos puedan sacar provecho de esto. Explicó el papel que realiza Digium, el éxito arrollador que está teniendo las soluciones opensource en las comunicaciones actuales, tanto en sistemas en pequeñas y medianas empresas como en soluciones altamente competitivas.

En el turno de preguntas, algunas bastante curiosas, Mark se “soltó” lo que hizo que mucha gente se animara a preguntar cosas tan curiosas como el papel de Asterisk frente a las soluciones propietarias de Nortel, Avaya, Cisco y Microsoft, ventajas de utilizar Asterisk, fecha de publicación de Asterisk 1.6, a lo que respondió que saldrá cuando los desarrolladores consideren que debe salir. ;), también se preguntó sobre el soporte para el chan_sip3 (codename Pineapple) donde comentó que es un proyecto que está en desarrollo de la mano de Olle Johansson y que no sabe cuando podría estar listo.

Fuera de la conferencia, aprovechando que lo tenía cerca, le pregunté un par de dudas que tenía desde hace algún tiempo:

- Diferencias que habrá entre Zaptel y DAHDI cuando finalmente vea la luz.
En principio, DAHDI  es simplemente un cambio de nombre del paquete Zaptel como ya sabemos por temas de registros de marcas, aunque sí comentó que se está desarrollando un soporte propio para las tarjetas ISDN Bri que verá la luz muy pronto y que podría sustituir al mISDN que tantos dolores de cabeza está dando a tanta gente con kernels de Linux demasiado nuevos. (>= 2.6.24)

- Tras 4 años de espera con el draft, para cuando el RFC de IAX.
De momento no puede decir mucho, tan solo que pronto puede haber noticias… (aunque eso se lleva diciendo desde hace 3 años) :P

Además de todo esto, algunas anécdotas bastante curiosas y graciosas que seguro que tardaremos en olvidar y desde aquí, felicitar de todo corazón a la gente de Irontec y de Avanzada7 que han permitido, no solo dar a conocer a más gente este fantástico mundo de comunicaciones opensource, si no también permitirme conocer un poquito Bilbao al que prometo volver pronto.

19. May 2008

Proyectos interesantes sobre Asterisk

Luigi Rizzo comenta en la lista Asterisk-Dev algunos proyectos que están llevando a cabo en la Universidad de Pisa (Italia), algunos muy interesantes:

- Hacer que Asterisk arranque como una extensión de Firefox.
El objetivo de de este proyecto no es que sirva como servidor en producción, si no facilitar la tarea de desarrollar interfaces web sin tener que hacer pruebas contra un Asterisk de verdad.

- Soportar multiples fuentes de vídeo y de audio, de manera que cambien durante una conversación.
Precisamente estuve probando este fin de semana la aplicación app_conference con vídeo y con unos resultados bastante satisfactorios en cuanto a que la fuente de vídeo cambia según quien hable. Muy interesante para videoconferencias con varias personas. Aunque no se vea la pantalla partida, es un paso. Pronto escribiré algo más sobre esto.

- Unir el módulo chan_oss (posiblemente con el chan_alsa) en uno único: chan_console.
La ventaja de esto consiste en unificar las ventajas de cada uno de estos módulos y no tener que preocuparnos sobre la plataforma de audio que vamos a utilizar cuando utilicemos la consola para hacer y recibir llamadas.

¿Conoces alguna universidad que ofrezca proyectos de este tipo y no solo instalar y configurar un Asterisk?

Enlace: http://lists.digium.com/pipermail/asterisk-dev/2008-May/032977.html

18. May 2008

La VoIP del futuro próximo

Después de conocer las alternativas y estar en contínuo contacto con las novedades que las empresas van anunciando mediante notas de prensa, comentarios, rumores, adquisiciones de otras empresas, etc, uno puede intuir los siguientes movimientos que más pronto o más tarde van a tomar estas empresas.

Como si de una complicada partida de ajedrez de tratase con varias decenas de jugadores a la vez, cada uno de ellos va colocando sus piezas estratégicamente para, en un momento indefinido del “mañana”, poder hacer público su nuevo rumbo y dar a conocer a sus posibles nuevos clientes, las maravillosas novedades que ofrecen siempre manipulando al ignorante medio y dando a entender que son los creadores e inventores y dueños de una tecnología que se lleva utilizando muchos años.

En mi opinión (y esto es algo a destacar en todo el artículo), veo algunos movimientos bastante extraños en el mundo de la VoIP. Me parecen extraños por que tienden a adelantar en sus avances hasta tal punto que incluso en la mente del usuario de a pie es incapaz de entender a qué se dedica la empresa que acaban de comprar.

Para que nos agamos una idea, el simple movimiento de compra de la empresa MarraTech por parte de Google es algo que a un usuario final no entenderá si no supiera que meses antes Cisco compró otra empresa de similares objetivos Webex.

Otros movimientos demuestran un cambio de orientación intentando no perder la batalla final como Ericsson y Siemens vendiendo divisiones obsoletas y con poco futuro como son las centralitas tradicionales y buscan profesionales capacitados con conocimientos de protocolos IP para preparar nuevos productos quizá en un momento demasiado tarde.

Son dos partidas de ajedrez muy diferentes dentro del marco de la VoIP o de lo que ellos consideran VoIP:

- Por un lado empresas puramente de caracter informático como Google, Yahoo, Microsoft buscan preparar sus piezas en un marco de VoIP entendiendo esta no únicamente como la transmisión de la voz sobre redes IP, si no mucho más allá: mensajería instantánea, videoconferencia, la información, la multimedia, donde sea y cuando sea, mediante el ordenador de casa, desde el móvil, o la nevera. Este es un cambio bastante radical en la mente del público final y por lo tanto, costará mucho más dar a entender a la gente de la calle que, si quieres hablar con un familiar, en lugar de descolgar el teléfono, tan solo tienes que acercarte a la televisión y pulsar el botón verde y decir “llamar a …”

- Por otro lado, empresas más cercanas a las telecomunicaciones como Cisco, Siemens, Alcatel, 3Com, Nortel, Avaya, buscan actualizar sus sistemas para conseguir acercar la VoIP a sus clientes mediante la transición paulatina de los sistemas que ya conocen. De esta forma, una publicidad irá metiendo la VoIP poco a poco, sin darse cuenta en los hogares hasta el día que todo sea VoIP y puedan seguir cobrando por llamadas aunque a las operadoras les salga prácticamente gratis poner en contacto a dos personas. En definitiva, intentar recortar los gastos para aumentar los beneficios.

мебели

Estas dos tendencias de la VoIP cuentan con empresas que, como desconocen bien hacia donde va a moverse el mercado en un futuro próximo, mueven sus piezas en ambas partidas y cuando vayan a perder una de ellas, simplemente venden la división que investigaba esos avances al mejor postor, de esta manera nunca pierden, o por lo menos, no tanto. Ejemplos como este lo tenemos en empresas como Cisco que, aunque comprando su propia división Linksys adquiere fuerza en el campo de las telecomunicaciones y las redes tradicionales con sus gateways para pequeñas empresas, para así completar la oferta para todo tipo de empresas (grandes, pequeñas y medianas), también se alía con empresas informáticas como IBM y Microsoft para no perder oportunidades una vez que el gran público decida.

Entre medias de estas dos vertientes, se encuentran los fabricantes de “elementos” dispuestos a ser buenos y fieles torres obteniendo avances en investigación que ninguna de las grandes empresas están dispuestas a investigar. Empresas como Truphone, Fring, Jajah, Skype son (con todos los respetos) material en venta desde el primer día a aquel que ofrezca una suma importante para incorporar estas innovaciones a su programa empresarial. Por este motivo, eBay se adelantó a empresas que podrían estar interesadas (Google, Yahoo, Microsoft) y compró Skype no con objeto de que diera dinero en un breve plazo de tiempo, si no con el de obtener el mayor número de usuarios posibles y luego poder vender, no únicamente el sistema de comunicaciones, si no una gran cartera de clientes. Quizá ese sea el motivo que Skype se vende en la prensa como que disponen de N mil millones de usuarios, mientras que las pérdidas económicas se cuentan en millones de dólares. Si ninguna de las empresas antes mencionadas, muestran interés por Skype, eBay tendrá que ponerla a la venta muy barata para dejar de perder dinero, antes de que sea demasiado tarde.

Los emprendedores de empresas “elemento”, como los creadores de Kazaa, que construyeron una de la redes P2P más grandes del mundo, vendieron y empezaron con Skype, cuando se hizo popular, vendieron y empezaron con Joost… cuando termine de despegar, venderán y probarán con otra cosa.

En el otro lado, olvidándonos de los arcaicos oligopolios como Siemens, Alcatel, Ericson, Panasonic,… aparecen empresas con más vista y mejor posicionadas para hacer frente a una necesidad de VoIP entre las empresas y el público general: Cisco, Avaya, Nortel viven actualmente de haber dado el salto antes que el resto de fabricantes y, aunque antes de dar el salto otras muchas empresas pequeñas ya estaban allí (Adtran en 1985, Polycom en 1990,…).

Con la aparición del protocolo SIP y de Asterisk, nuevas empresas se apuntaron al carro para plantar cara a los “grandes” del mundo de las telecomunicaciones para conseguir un trozo del mercado que tardaría en ser conquistado de nuevo, así aparecieron empresas como Snom, GrandStream, Digium, Fonality y algunas otras vieron el filón y cambiaron su rumbo como Sangoma, Dialogic que hasta entonces hacían hardware para un software específico o proporcionando herramientas para ser utilizadas en soluciones propias, vieron en Asterisk una oportunidad única para incorporarse a un nuevo mercado que rápidamente crece a un ritmo exponencial y que poco a poco empieza a ser temida, repudiada y subestimada por defensores de las “grandes”. Pocos profesionales que trabajan con Cisco, Avaya o Nortel darán crédito a sistemas como Asterisk, pero la realidad es que por cada vez que una de estas empresas implanta una solución en España, Asterisk se implanta en cincuenta. Cada uno que saque sus conclusiones.

El futuro podría ser realmente utópico, desapareciendo los números de teléfonos y teniendo (en el mejor de los casos) direcciones SIP como el que tiene una dirección de Email, con millones de sistemas conectados entre sí y permitiendo una comunicacion libre y gratuita, quedando obsoleto los sistemas telefónicos y las redes de telecomunicaciones, permitiendo que la gestión de la información fluya libremente entre Internet y las redes empresariales y haciendo desaparecer conceptos antiguos como “extensiones”, “centralitas”, etc.

Pero el señor D. dinero es poderoso, y las “grandes” buscarán todas las maneras existentes para que sigamos enganchados a la red telefónica, ofreciendo “novedades” inventadas hace 20 años y ofreciendo llamadas internacionales a bajo precio y cobrando los mensajes SMS como si hubieramos hecho que alguien lo transcribiese a mano.

Si crees que en algo de lo que he dicho tengo razón ¿cual de las tendencias crees que se impondrá?

22. April 2008

Cómo ejecutar comandos de Asterisk desde la consola

A veces es necesario ejecutar comandos de Asterisk y sacar el resultado por la consola para luego poder procesarlo con un script y poder obtener información útil.

La manera sencilla es mediante la ejecución de Asterisk con la línea:

asterisk -rx 'comando

Cuando ejecutamos esta línea, lo que realmente ocurre es que nos conectamos a Asterisk, ejecutamos el comando y nos salimos obteniendo por la consola de Linux el volcado de lo que queremos conocer.

Esta es, sin duda una de las mejores maneras cuando queremos obtener el resultado de un comando de forma puntual, pero para “monitorizar” un Asterisk, hay quien crea scripts que utilizan esta forma varias veces cada pocos segundos, lo que provoca que cuando alguien se conecta a la consola de forma natural, se encuentre con estos mensajes molestos:

-- Remote UNIX connection
-- Remote UNIX connection disconnected
-- Remote UNIX connection
-- Remote UNIX connection disconnected
-- Remote UNIX connection
-- Remote UNIX connection disconnected
-- Remote UNIX connection
-- Remote UNIX connection disconnected

En cada conexión podemos obtener los usuarios SIP registrados, el número de llamadas actuales, los canales ZAP utilizados, etc, pero claro, este método hace impracticable el hecho de utilizar la consola de Asterisk.

La manera interesante, es realizarlo mediante el AMI (manager), es decir, hacer una aplicación que se conecte al puerto del Manager (5038 por defecto), se autentifique correctamente y envíe los comandos necesarios para obtener los resultados necesarios de una manera transparente para el Asterisk y sin que los usuarios conectados vean el molesto mensaje.

Para evitar esto, Tzafrir Cohen de Xorcom acaba de publicar un parche para evitar estos mensajes y poder ejecutar comandos sin necesidad de que nadie llegue a molestarse.
Este parche está en la versión Trunk y lo podeis descargar de aquí:
http://svn.digium.com/view/asterisk/trunk/contrib/scripts/astcli

Yo por mi parte, tengo un programita en perl muy sencillo que se conecta al manager y con el que obtengo todos los datos necesarios sin tener que molestar a nadie y bastante rápido.

Pese a ser una tontería de script, aquí os lo pongo por si a alguien le interesa:
http://www.sinologic.net/proyectos/asterisk-cmd

15. April 2008

Aclarando conceptos sobre SIP y VoIP

El protocolo SIP (que significa Protocolo de Iniciación de Sesiones) nació en 1996 cuando Mark Handley y Eve Schooler presentaron el primer borrador ante la IETF de lo que sería un protocolo de comunicaciones IP que solucionaría gran parte de los inconvenientes de protocolos anteriores.

En este borrador se exponían conceptos nuevos y que posteriormente pasaría a utilizarse en todo el mundo como uno de los protocolos más utilizados en las aplicaciones de mensajería instantánea, aplicaciones CRM, ERP y por supuesto VoIP. Entre estos nuevos conceptos destaca alto tan básico como el “registro”, por el cual un usuario informaba a la red dónde podía recibir invitaciones de comunicaciones por parte de otros usuarios, lo que permitía que un usuario pudiera recibir un mensaje en su casa y si luego se trasladaba al trabajo y se “registraba”, el mensaje lo recibiera en el trabajo y no en su casa.

El protocolo SIP es un protocolo de señalización, es decir, SIP no transporta audio ni vídeo, por lo que sería incompleto decir que en una comunicación de VoIP en SIP solo interviene este protocolo que se transmite por el puerto 5060 TCP o UDP.

Entonces ¿como se puede enviar audio y vídeo por SIP?. Sencillamente, no se puede, SIP no está diseñado para esto, aunque sí que permite indicar el sistema y el puerto por el que se puede enviar un flujo de datos que encapsula la voz y el vídeo. Para este flujo de datos se utiliza otro protocolo: SDP (que significa “Session Description Protocol” en español “Protocolo de Descripción de Sesiones“) y envía los parámetros de inicialización de audio y vídeo transmitidos por streaming por varios puertos UDP altos (por encima del 1024)

La comunicación SIP se realiza entre lo que se denominan “Agentes de Usuario SIP” comúnmente conocido como “usuario SIP”, “Servidores de Registro” también conocido como “SIP Server” y “SIP Proxy” también conocido como “SIP Proxy” :P

- Usuarios SIP:
Un usuario SIP puede ser una aplicación de mensajería, un softphone, un teléfono IP, y en general cualquier dispositivo o software que sea compatible con SIP y que tenga la capacidad de “registrarse” con una cuenta SIP. Los usuarios SIP reciben una URI formada por “usuario”@”dominio” donde el campo dominio se corresponde con el Servidor SIP donde se encuentra registrado.

- Servidor SIP:
Un servidor SIP es una aplicación o dispositivo que permite crear y gestionar cuentas SIP y permitir que los Usuarios SIP se “registren” almacenando la dirección IP donde deben acceder para realizar la comunicación con este usuario.

- Proxy SIP:
Un Proxy SIP es una aplicación que permite que cualquier usuario SIP envíe un comando a otro usuario SIP.

Con estos tres conceptos claros, empieza la parte divertida, cuando dos usuarios SIP quieren hablar entre si, hace falta:
- Dos usuarios SIP (100@dominio y 200@dominio)
- Un servidor SIP donde se registrarán los dos usuarios
- Un proxy SIP para enviar los paquetes necesarios desde uno de los usuarios al otro para empezar a establecer una comunicación.

Una vez establecida la comunicación, el envío de los paquetes streaming de audio y vídeo se realiza únicamente y exclusivamente entre la aplicación registrada como 100@dominio y la aplicación registrada como 200@dominio, por lo que queda demostrado que SIP es un protocolo P2P tan mal visto por los medios de comunicación. :)
En este caso, el usuario 100@dominio también podría iniciar la comunicación introduciendo el usuario 200@direccionIP donde “direccionIP” sería la que tuviese ese usuario en ese instante. ¿pero qué ocurre cuando el usuario cambia de IP? ¿Perdemos la posibilidad de llamarle? Justamente para eso sirve el servidor SIP y el Proxy SIP.

Aprovechando estas definiciones interesantes, me gustaría aclarar algunas más relacionadas con la VoIP:

- B2BUA (Back 2 Back User Agent)
El B2BUA es una aplicación para controllar llamadas entre usuarios SIP y se diferencia de un Proxy SIP en que este únicamente gestiona el estado de una llamada cuando se realiza, mientras que el B2BUA mantiene el estado de las llamadas y las mantiene para conseguir información valiosa en determinados entornos como facturación, redireccionamiento de llamadas en caso de caída de un proveedor SIP, etc.
Asterisk es mucho más que un B2BUA ya que no únicamente controla todo esto, si no que incluso puede llegar a realizar acciones que ni un Proxy SIP ni un B2BUA pueden realizar como: grabaciones de llamadas, sistemas de buzón de voz, reproducción de locuciones, ofrecer menús IVR, reproducir música en espera, y un larguísimo etc.

- Media Gateway (MGW)
El Media Gateway es una aplicación o dispositivo que convierte la señalización SIP y el audio streaming, recibidos por SIP en el formato necesario para que sea transportado por otra “tecnología” como líneas analógicas, digitales, diferentes protocolos IP, etc.

- Softswitch
El Softswitch es una aplicación o dispositivo que realiza las labores de un Proxy SIP y un Media Gateway.
Ejemplo de softswitch es el conocido FreeSwitch al que además le han añadido algunas opciones más típicas de centralitas.

- PBX
Un PBX es una centralita basada en la red telefónica (analógica, digital o incluso móvil) que realiza las acciones que ya conocemos de toda centralita: gestionar transferencias, programar menús IVR, grabar conversaciones, etc.

- Media Server
Un Media Server es un dispositivo o aplicación que permite almacenar contenido multimedia (audio, vídeo, imágenes, etc…) y que puede enviarla mediante algún tipo de protocolo sin importarle a quien.
Es un reproductor de contenido multimedia que se conecta a cualquiera de los sistemas que he mencionado con anterioridad y ofrece este contenido a uno o varios usuarios.
Tras esta breve explicación, espero que estos conceptos hayan quedado más claros y evitar utilizar una aplicación para realizar tareas más propias de otras. :)

31. March 2008

Asterisk USB hub

Leo en el blog de Tom Keating que Joel Escalona, un diseñador mexicano tiene un diseño de un hub para conectores USB que seguro que a todos los fans de Asterisk os gustará:

Asterisk-usb

Enlace: http://www.joel.es.kz/

05. March 2008

Códec G729: Diferencias entre la versión free y la comercial

Hace algún tiempo me pregunté qué diferencias existían entre la versión comercial del códec G.729 que distribuye Digium y la versión “opensource” que se puede encontrar en algunas webs.

Mientras buscaba información, me topé con la casualidad de que algunas personas me hacían preguntas sobre esta diferencia, he incluso personas que utilizaban la versión opensource se encontraban con problemas de audio por lo que decidí ponerme a leer e investigar las diferencias.

En este artículo intentaré explicar de la forma más “didáctica” posible estas diferencias, así como el funcionamiento básico de ambos códecs.

El archivo codec_g729 para que Asterisk sea capaz de reproducir o escuchar el códec G.729 se basa en un algoritmo patentado y por lo tanto, la utilización de este algoritmo, no está exenta de pagar una “licencia de uso”, tanto si es para uso comercial, como si es para educación, pruebas, etc… a ellos les da igual para qué lo vayas a utilizar, mientras pagues.

Ahora bien, ese algoritmo, al que pertenecen bastantes empresas muy conocidas (SUN, Nokia, Skype, Intel, etc… http://www.sipro.com/licensees.php) por ser “creadoras” o “patrocinadores” de la creación del G729, tienen a su disposición un gran número de licencias anuales (para meterlo en su propio software, en sus móviles, etc…) y además, esta fundación en sí tiene “vendedores” de licencias para el códec entre las que se encuentran algunas como Global IP Sound, Soundpoint, y algunas otras que venden la licencia para utilizar el algoritmo de compresión únicamente.

sounds2

Digium ha cogido este algoritmo y lo ha introducido como módulo para poder utilizarlo en Asterisk (de ahí las licencias G.279 para Asterisk y el porqué de pagar la licencia, porque el uso de dicho códec cuesta dinero)

Ahora bien, Intel es uno de los “creadores” de este códec y como dispone de licencias para uso particular, ofrece dicha licencia para el algoritmo de compresión de audio completamente gratis para temas docentes, pruebas, etc… nunca nada comercial, pero eso es únicamente el algoritmo, nada del canal para utilizarlo en Asterisk. (http://www.intel.com/cd/software/products/asmo-na/eng/219771.htm)

Más adelante, aprovechando la licencia que Intel ofrece para docencia, pruebas, etc, alquien cogió el binario del algoritmo y se auto-fabricó un archivo codec_g729 compatible con Asterisk pero con la versión que Intel tiene puesta en su página, y otra persona lo llamó opensource (http://www.readytechnology.co.uk/open/ipp-codecs-g729-g723.1/) aunque nadie sabe dónde se encuentra el código fuente que genera finalmente el archivo codec_g729 y aunque existiera, de opensource no tiene nada ya que el hecho de utilizar ese algoritmo ya implica haber pagado la licencia.

En esta última versión, el código que tiene Intel en su página es el mismo desde hace 10 años, cuando el códec “oficial” ha ido evolucionando poco a poco de forma más o menos transparente para su utilización aunque realizando algunas mejoras en cuanto a coste, carga, velocidad, etc.
Muchas personas me han preguntado sobre las diferencias entre estos códecs (saludos a todas ellas y siento el retraso en esta contestación), y aquí va:

El códec G729 contiene lo que sería un diccionario de sonidos. Estas pequeñas partes de sonidos se podría intepretar como micro-fonemas. Cuando le enviamos un trozo de voz al códec, este lo reemplaza con una referencia a una palabra de su diccionario y lo envía, también prepara los siguientes sonidos que cree que pueden precederle. Así es cómo el códec comprime la voz tan bien. Realmente esto no envía absolutamente nada de la voz original, envía trozos matemáticos que ha ido creando en tiempo real. Por este motivo, la voz se escucha perféctamente, mientras que la música (por ejemplo cuando hacemos un MusicOnHold) no. Así se comporta el códec G729 “plano“.

A medida que se va ampliando ese diccionario, la calidad de sonido aumenta, el tiempo para encontrar un sonido “matemático” similar disminuye lo que provoca una menor carga del procesador.

Estos añadidos se conocen como “anexos” y se definen como letras A, B, C,… y de ahí es de donde viene cada letra que acompaña al nombre del códec. Por eso existe el códec G729A, G729B, …

El códec “libre” utiliza las primitivas Intel IPP, por lo que sigue siendo un códec G.729 y la principal diferencia es que utiliza un conjunto diferente de ecuaciones, por lo que la evolución del resto de anexos del códec inicial ya no es viable y de hecho provocan diferencias en la propia carga del procesador.

Como he comentado, el códec G729 tiene muchas variantes (G.729a,b,c,d,e,c+,f,g,h e incluso el g.279i) cada una con sus peculiariedades, aunque el más utilizado es el G.729a y el G.729b por ser el más sencillo y por lo tanto el más rápido de comprimir y descomprimir, el resto se utilizan en telefonía móvil y como base para otros códecs menos conocidos y mucho más caros incluidos en DSPs integrados en tarjetas de comunicaciones.
En cuanto a la legalidad…

En Europa no debe pagarse ninguna licencia por el uso del códec ya que por ahora (y esperemos que siga siendo así) las patentes software no han sido aprobadas y por lo tanto el código sigue sin ser patentable, la pega es que la entidad encargada de este códec está en los EEUU y allí sí que hay patentes software, por lo que si alguien quiere conseguir una licencia, no tendrá más remedio que pagar por ella.

wave2Por esto, en Europa es legal utilizar la versión “opensource” aunque como he dicho antes, las empresas que ofrecen servicios de VoIP y que utilizan la versión patentada del códec, las empresas fabricantes también lo utilizan, por lo que si utilizamos la versión “opensource” en nuestro Asterisk, además de no disponer de las “evoluciones” del códec, mayor velocidad a la hora de comprimir y descomprimir, etc… tal y como he comentado, debería funcionar de manera más o menos transparente y este “mas o menos” es lo que hace que en algunos casos se produzcan cortes en las llamadas cuando se utiliza este códec para comunicar ciertos terminales que sí disponen de la última versión.

Otra de las pegas que nos podemos encontrar con la versión Intel, es que suele dar algún que otro problema con kernels SMP: (Intel g729 crash redhat)  e incluso cortes de audio en Asterisk que se van resolviendo, pero a medida que evoluciona el códec las diferencias aumentan y eso lo vuelve inconsistente.

Espero que con este artículo se hayan resuelto algunas cuestiones :)