lunes, 9 de junio de 2008

Asterisk sobre linux, Asterisk sobre windows, IPPBX y codecs:G.711 y G.729

Hoy en dia la VoIP aumenta rapidamente, casi todos los operadores estan migrando o tienen en sus planes estrategicos destinar recursos para que buena parte de su plataforma sea IP, pero no es necesario ser uno de los grandes para beneficiarse de esta tecnologia, o incluso con un poco de dinero, suerte, y conocimientos es posible adentrarse en este fascinante mundo. El porque es basicamente ahorro de costos, ademas de agregar caracteristicas especiales y valores añadidos que seria muy complicado tenerlo en otro sistema, el hecho de poder estructurar un sistema en capas y que ademas no estemos atado a hardware propietario hace que sea atractivo. Luego viene todo el tema del carrier class (99,99 o 99,999, confiabilidad de los equipos IT, respaldos, UPS, conexiones a internet redundantes, ipv4, ipv6, etc)

Por ejemplo ya hemos hablado en este mismo blog muchas veces de asterisk, incluso hemos arrancado sistemas de este tipo con distribuciones tipo livecd, incluso nuestro atrevimiento ha sido mayor al arrancar un sistema de este tipo con qemu (maquina virtual) y luego puesto a funcionar un pequeño sistema VoIP casero con telefonos virtuales. Algunos conceptos claves:

1.- IPPBX: En un PBX ip nativo que no requiere tarjetas adicionales para tener mayor funcionalidad, la activación de más extensiones o nuevas características se realiza mediante licencias de software. A veces para aligerar de carga a los procesadores del servidor se pueden adquirir tarjetas especializadas en determinadas tareas, ejemplo: la codificacion G.729, esta tarea al ser ejecutada en una tarjeta con su propio procesador le quita carga a los procesadores centrales. Basicamente estamos hablando de un servidor con varios procesadores, discos SCSI ( o serial-ATA segun lo que se necesite y el presupuesto) . Los codecs se pueden activar por licencias lo cual implica que seran asociados a la mac de la tarjeta de red (ejemplo no se que pasaria si se me quema la tarjeta de red, las licencias son transferibles???, no lo se buena pregunta) o se pueden comprar la tarjeta con las licencias activadas. Recomiendo visitar esta pagina:

http://atorresa.wordpress.com/category/quintum/


2.- Codecs G.729 y G.711:

El codec g711 tiene dos versiones conocidas como alaw (usado en Europa) y ulaw (usado en USA y Japón). U-law se corresponde con el estandar T1 usado en Estados Unidos y A-law con el estandar E1 usado en el resto del mundo. La diferencia es el método que se utiliza para muestrear la señal. La señal no se muestrea de forma lineal sino de forma logaritmica. A-law tiene un mayor rango.

G729: Coding of speech at 8 kbit/s using conjugate-structure algebraic-code-excited linear-prediction (CS-ACELP). Retardo menores de 15 ms.

Existen varias versiones del codec g729 que es interesante explicar por su extendido uso
G729: es el códec original
G729A o anexo A: es una simplificación de G729 y es compatible con G729. Es menos complejo pero tiene algo menos de calidad.
G729B o anexo B: Es G729 pero con supresion de silencios y no es compatible con las anteriores.
G729AB: Es g729A con supresión de silencios y sería compatible solo con G729B.
Aparte de esto G729 (todas las versiones) en general tienen un bit rate de 8Kbps pero existen versiones de 6.4 kbps (anexo D) y 11.4 Kbps (anexo E).

Desde que inicio el proyecto asterisk, digium vendió el codec g729 para que pudiera ser instalado dentro de asterisk por un costo de 10 dólares por canal. Existe la manera de para hacer funcionar el codec g729 sin cargos.

Hasta donde tengo entendido solo funciona en motherboards que tengan un procesador Intel, pero para aquellos que si lo tengan pues ya no tendrán que pagar 10 dólares por canal, creo que tambien ha funcionado en computadoras con procesadores AMD.

El g729 es un equipo que traen muchos equipos y es un codec que funciona incluso en una conexión por MODEM.

Tambien existe el codec g723 para H323, algunos dicen que es el codec utilizado por Skype.

Muchos expertos afirman que G729 es mucho mejor que G711 (tanto en compresiòn como en calidad, es el standard de compresiòn VoIP ) a continuacion algunos datos:
Conexion a 80 K (64 K + cabeceras de ruteo) usando G711.

En cambio, G729 usa aproximadamente 22 K: 8K + cabeceras de ruteo.

Existe un codec en desarrollo que se llama Speex, si se llegara a perfeccionar Speex (un muy cercano competidor de G729) entonces serìa aplicable la comunicación de VoIP libre y sin limitaciones. ILBC está en el mismo rango que G711u/a.

3.- Asterisk es una centralita software (PBX) de codigo abierto. Tomado de para futuras referencias: (http://www.voipforo.com/asterisk/)
Como cualquier centralita PBX permite interconectar telefonos y conectar dichos telefonos a la red telefónica convencional (RTB - Red telefónica básica)- Su nombre viene del simbolo asterisco (*) en inglés.

El creador original de esta centralita es Mark Spencer de la compañia Digium que sigue siendo el principal desarrollador de las versiones estables. Pero al ser de código libre, existen multitud de desarrolladores que han aportado funciones y nuevas aplicaciones. Originalmente fue creada para sistemas Linux pero hoy en día funciona también en sistemas OpenBSD, FreeBSD, Mac OS X, Solaris Sun y Windows. Pero Linux sigue siendo la que mas soporte presenta.

El paquete básico de Asterisk incluye muchas características que antes sólo estaban disponibles en caros sistemas propietarios como creación de extensiones, envío de mensajes de voz a e-mail, llamadas en conferencia, menus de voz interactivos y distribución automática de llamadas. Además se pueden crear nuevas funcionalidades mediante el propio lenguaje de Asterisk o módulos escritos en C o mediante scripts AGI escritos en Perl o en otros lenguajes.

Para poder utilizar telefonos convencionales en un servidor Linux corriendo Asterisk o para conectar a una línea de teléfono analógica se suele necesitar hardware especial (no vale con un modem ordinario). Digium y otras compañias venden tarjetas para este fin.

Pero quizás lo mas interesante es que Asterisk soporta numerosos protocolos de VoIP como SIP y H.323. Asterisk puede operar con muchos telefonos SIP, actuando como "registrar" o como "gateway" o entre telefónos IP y la red telefónica convencional. Los desarrolladores de Asterisk han diseñado un nuevo protocolo llamado IAX para un correcta optimización de las conexiones entre centralitas Asterisk.

Al soportar una mezcla de la telefonía tradicional y los servicios de VoIP, Asterisk permite a los desarrolladores construir nuevos sistemas telefónicos de forma eficiente o migrar de forma gradual los sistemas existentes a las nuevas tecnologías. Algunos sitios usan Asterisk para reemplazar a antiguas centralitas propietarias, otros para proveer funcionalidades adicionales y algunas otras para reducir costes en llamadas a larga distancia utilizando Internet.

Asterisk para windows

Asterisk puede ser instalado en windows. Se basa en cygwin, es decir fue compilado bajo esta paltaforma para poder ser luego corrido en windows.

Aunque es preferible para aplicaciones comerciales instalarlo bajo Linux o FreeBSD es una buena manera de conocer su funcionamiento y de probar numerosos comandos y opciones. Paea windows es basado en cygwin, este programa permite correr aplicaciones nativas linux en sistemas operativos windows.

La página de referencia es http://www.asteriskwin32.com

Nos descargamos la versión Setup0.56.exe y ejecutamos el programa de instalación. En principio seleccionamos la "full instalation" que nos instalará ejemplos de los ficheros de configuración.

Una vez acabada la instalación debemos arrancar el servidor asterisk. Para ello podemos ejecutar C:\cygroot\bin\asteriskwin32.exe

Al principio nos saldrán unos cuantos errores o warnings pero no nos preocupamos demasiado (son debido a que no tenemos tarjetas RDSI o modems TAPI). En principio ya tenemos instalado y funcionando Asterisk. Vamos a comprobar que funciona.

Configuramos un softphone como el SJPhone (para más info consultar configuracion del sjphone) para poder acceder a nuestro propio Asterisk. La configuración que hemos hecho trae dos usuarios por defecto que podemos utilizar:

A: usuario: 3000 password=cualquiera vale
B: usuario: 3001 password=cualquiera vale

Una vez que lo tenemos configurado y el usuario se ha registrado correctamente en nuestro servidor podemos llamar a algunos numeros de prueba que vienen por defecto en el plan de numeración:

1000 - Menú principal
1234 - Pasar llamada a la consola (veréis en la consola la llamada)
1235 - Contestador automático de la consola
1236 - LLamar a la consola

3000 - LLamar al usuario SIP 3000
3001 - LLamar al usuario SIP 3001

500 - Llamar a Digium

600 - Prueba de eco

Ejemplos practicos de dimensionamiento de los equipos:

El tema del dimensionamiento inicial pasa por saber las necesidades del cliente: trafico a cursar, intentos (BHCA o busy hour call atempt), tiempo promedio de una llamada (MHT, mean holding time), en base a todos estas premisas iniciales se debe escoger el servidor que se usara como PBX. He aqui algunos detalles utiles:

.- Aunque es muy relativo, un servidor con un procesador Dual Core Xeon de 1.6 Ghz con 2 GB de ram puede manejar un promedio de 60 a 75 llamadas simultaneas en g729.

.- Al usar tarjetas adicionales de proceasmiento en hardware, ejemplo la tarjeta de transcoding Digium TC400B permite que el proceso de transcoding (convertir de un codec a otro) no utilice el procesador del servidor sino que ese trabajo se haga en la tarjeta, esto mejora el proceso.
La tarjeta provee licenciamiento y garantiza hasta 96 canales simultaneos en g729 y algunos menos en g723.1

.- No hay una ciencia clara respecto a las capacidades de crecimiento de Asterisk
Algunas personas indican que Asterisk esta limitado a 400 llamadas simultaneas, aunque hay gente que incluso comercializa una version (soft y hardware)que podrian soportar 5000 extensiones, pero no hay muchas cosas claras porque afecta, el protocolo, el codec, tipos de lineas, etc.
Por ejemplo Asterisk puede manejar mas llamadas simultaneas en IAX que en SIP, y muchas menos en H323.
Tambien afecta el uso de aplicaciones en base de datos, sistemas de billing, ivr, etc.
El hardware es un factor que esta variando mucho, ya que ahora con la posibilidad de contar con multiples procesadores de 4 cores cada uno hacen que esos limites cambien.
De todas maneras las empresas que estan trabajando cosas muy grandes con Asterisk se han orientado por evitar los problemas de sobrecarga haciendo balanceo de carga y registrando las extensiones SIP en otros servidores sip proxy (ejemplo OpenSer), y que ademas enruta el trafico RTP entre varios servidores asterisk o gateways lo que genera balanceo de carga y permite que se aprovechen las funcionalidades de Asterisk distribuido en muchos servidores.


Algunas direcciones que considero utiles para seguir aprendiendo:

http://es.wikipedia.org/wiki/Asterisk

http://www.asterisk.org/

http://www.digium.com/en/training/

http://groups.google.es/group/asterisk-es/browse_thread/thread/e6ba95ebf752509f

http://www.sinologic.net/2007-07/configura-tu-cluster-de-asterisk-facilmente/

http://voip-cluster.org/

http://www.voipnovatos.es/

http://blog.aliax.net/

http://bytecoders.homelinux.com/

No hay comentarios:

Sudoku