12/06/2013

Seleccionando el hardware del servidor Asterisk

La selección de un servidor es a la vez simple y complicado: simple porque, en realidad, cualquier plataforma basada en x86 será suficiente, pero complicado porque el rendimiento fiable de su sistema dependerá del cuidado que se ponga en el diseño de la plataforma. Cuando este seleccionando su hardware, usted debe considerar cuidadosamente el diseño global del sistema y la funcionalidad que necesita que este soporte. Esto le ayudará a determinar los requisitos para CPU, motherboard y fuente de alimentación. Si simplemente está configurando su primera Sistema Asterisk con el propósito de aprender, puede ignorar la información de esta sección. Sin embargo, si usted está construyendo un sistema de misión crítica adecuada para la implementación, se trata de cuestiones que requieren una reflexión.







Problemas de rendimiento

Entre otras consideraciones, la hora de seleccionar el hardware para una instalación de Asterisk debe tener en cuenta una pregunta que es fundamental: Que tan poderoso debe ser mi sistema? Esta no es una pregunta fácil de responder, porque la manera en que el sistema se valla a utilizar va a jugar un papel importante en los recursos que este consuma. No hay tal cosa como una matriz de desempeño de ingeniería de Asterisk, por lo que tendrá que entender cómo Asterisk utiliza el sistema con el fin de tomar decisiones inteligentes acerca de que tipos de recursos serán necesarios. Usted tendrá que tener en cuenta varios factores, entre ellos:

El número máximo  de conexiones concurrente que se espera que el sistema  soporte. Cada conexión aumenta la carga de trabajo sobre el sistema.

El porcentaje de tráfico que requieren uso intensivo del procesador DSP de codecs comprimido (tales como G.729 y GSM).  El procesamiento de señal digital (DSP) que se realiza en el software Asterisk puede tener un impacto impresionante sobre número de llamadas simultáneas que serán soportados. Un sistema que podría felizmente manejar 50 llamadas simultáneas usando el códec G.711 se puede poner de rodillas por una solicitud de conferencia con 10 canales comprimidos usando el códec G.729.

Si se va a proporcionar conferencia y que nivel de actividad de conferencia se espera. Si el sistema será usado fuertemente? Las conferencias requieren que el sistema codifique (transcodificación)  cada stream de audio entrante en múltiples  stream de audio saliente s. Mesclar múltiples streams de audio en tiempo casi real puede poner un carga de trabajo significante al CPU.

Cancelación de Eco. La cancelación de eco puede necesaria  sobre cualquier llamada donde una interface de Red telefónica pública conmutada (PSTN) esté involucrada. Ya que la cancelación de eco es una función matemática, el sistema tendrá que realizarla, mayor será la carga sobre el CPU.

Lógica scripting en el Dialplan. Si Asterisk tiene que pasar el control de la llamada para programa externo, habrá una ligera pérdida de rendimiento. Si se usaran scripts externo, ellos deben ser diseñados con consideraciones críticas de rendimiento y eficiencia.

Como el impacto de rendimiento de esto factores, es difícil de saber con exactitud. El efecto de cada uno se conoce en términos generales, pero una calculadora de rendimiento preciso aún no ha sido definida con éxito. Esto es en parte debido a que el efecto de cada componente del sistema depende de numerosas variables, tales como la potencia del CPU, chipset del motherboard y sobre todo la calidad, la carga de tráfico total sobre el sistema, la optimización del Kernel de Linux, el tráfico de redes, cantidad y tipo de las interfaces PSTN, y el trafico PSTN, sin mencionar cualquier servicios de Asterisk que el sistema corra concurrentemente. Echemos un vistazo a los efectos de varios factores clave:

Codecs y Transcodificación

En poca palabra, un códec (es la forma corta de codificar/decodificar, o comprimir /descomprimir) es un conjunto de reglas matemáticas que define como una forma de onda analógica será digitalizada. La diferencia entre los diferentes codecs se debe en gran parte al nivel de compresión y calidad que ellos ofrecen. Generalmente hablando, a mayor compresión requerida, mayor será el trabajo que el DSP debe realizar para codificar y decodificar la señal. Un códec sin compresión, pone mucho menos tensión  sobre el CPU, pero requiere mucho más ancho de banda. La selección de un códec debe ser estrictamente balanceada entre el ancho de bando y el uso de procesador.

Unidad Central de Proceso (y unidad de punto flotante)

Un CPU está compuesto por varios componentes, uno de los cuales es la unidad de punto flotante (FPU). La velocidad del CPU, junto con la eficiencia de su FPU, juega un papel significante en la cantidad de conexiones concurrentes que un sistema puede efectivamente soportar.

Otros procesos corriendo concurrente mente sobre el sistema

Al similar a Unix, Linux está diseñado para ser capaz de realizar múltiples tareas en diferentes procesos. Un problema sucede cuando uno de estos procesos (tal como Asterisk) exige un nivel muy alto de la capacidad de respuesta del sistema. Por defecto, Linux distribuye los recursos equitativamente entre todas las aplicaciones que los soliciten. Si usted instala un sistema con muchas aplicaciones diferentes, cada una de estas aplicaciones se le permitirá un uso razonable del CPU. Pero como Asterisk requiere  frecuentemente acceso de alta prioridad para el CPU, este no se llevara bien con otras aplicaciones, y si Asterisk debe coexistir con otras aplicaciones, el sistema puede requerir optimización especial. Esto primeramente involucra la asignación de prioridades para las varias aplicaciones en el sistema y, durante la instalación, especial atención para cuales aplicaciones serán instaladas como servicios.

Optimización del Kernel

Un Kernel optimizado para el rendimiento de una aplicación específica es algo que muy poca distribuciones de Linux ofrecen por defecto, y esto requiere pensar un poco. Como mínimo, --cualquiera que sea la distribución  que usted selecciones—usted debe descargar u compilar sobre su plataforma una copia fresca del Kernel de Linux (disponible desde  http://www.kernel.org). También puede ser capaz de adquirir parches que  mejoran el rendimiento, pero esto es considerado hackeo a los kernels oficialmente soportado.

IRQ latencia

IRQ latencia es básicamente el retraso entre el momento que una tarjeta periférica (tal como una tarjeta de interface telefónica) solicita el  CPU para que pare lo que está haciendo y el momento cuando el CPU responde y está listo para manejar la tarea. Periféricos de Asterisk (especialmente las tarjetas DAHDI) han sido históricamente intolerante IRQ latencia, aunque han habidos mejoras considerables de DAHDI para ayudar a mejorar estos problemas. Esto no se debe a ningún problema con las tarjetas, sino que más bien es parte de la naturaleza de cómo un motor de TDM basada en software tiene que trabajar.

Versión del Kernel

Asterisk es oficialmente soportado con Linux versión 2.6. Casi la totalidad de Asterisk en realidad no se preocupa por la versión del kernel, pero  DAHDI si requiere la versión 2.6.

Distribución Linux

Las distribuciones de Linux son muchas y variadas. Asterisk debería funcionar en todas ellas. Elija la que usted se sienta más cómodo.


Save up to $80 on JAMBOX Music Accessories
Save up to $80 on JAMBOX Music Accessories Offer Expires 09/18/15

Coupon Code: None Needed

 


Shop E3 Gaming Deals on Microsoft Store Today
Shop E3 Gaming Deals on Microsoft Store Today Offer Expires 06/09/20

Coupon Code: None Needed

Breve historia de la telefonía





Lo que hoy conocemos como teléfonos  se originó con un interesante movimiento ha mediado del siglo 19.

En 1849 un médico de origen Italiano llamado Antonio Meucci, considerado por muchos como el inventor del teléfono, llevo a cabo una demostración de un dispositivo capaz de transmitir la voz  en La Habana. Un tiempo después, en 1854, en la ciudad de Nueva York, Meucci hace una nueva demostración de su invento.

Pero la idea de construir  un telégrafo parlante no era exclusiva de Meucci, y es así como 1860 el alemán Johann Philipp Reis construye un dispositivo capaz de transmitir voz basado en la idea original de Charles Bourseul, quien en 1854 había descrito la construcción de dicho dispositivo pero nunca lo construyó.  Reis continuó mejorando su aparato y un año más tarde ya estaba transmitiendo voz a más de 100 metros de distancia. A continuación podemos ver una ilustración del teléfono de Reis.

Ilustración del Teléfono de Reis.



Un par de años más tarde Innocenzo Manzetti construye el esperado  “telégrafo parlante”, pero no se interesa en patentarlo.

Las Patentes

Esta este momento ya existían prototipos de teléfonos pero nadie lo había patentado. Meucci fue el primero en tratar de patentar su invento, quien en 1871 suscribió un documento de “aviso de patente” pero por sus condiciones económicas nunca pudo pagar el dinero para terminar este trámite y su “aviso de patente” expiró pocos años después.

Para 1875, un año después de expirar el trámite de patente de Meucci, el escocés Alexander Graham Bell, radicado en los Estados Unidos, logra patentar un aparato similar y es el primero en hacerlo. Gracias a la patente Bell pudo hacer de la idea del teléfono un negocio rentable y tiene el mérito de hacer desarrollado la idea y convertirla en algo práctico para la sociedad.

Ya para 1886, existían 150,000 abonados telefónicos en los Estados Unidos. A partir de entonces la telefonía se empezó a convertir en un servicio básico de la sociedad actual.

Evolución  de la tecnología telefónica

Al principio, para que un abonado telefónico se comunicara con otro este tenía que solicitarle la llamada a una operadora, quien manualmente conectaba los cables para conmutar un punto con otro. En 1891 se inventó un teléfono “automático” que permitía marcar directamente.

Bell en un principio fue casi exclusivamente la única compañía en explotar la tecnología debido  sus patentes.  Sin embargo, cuando estas expiraron surgieron cientos de pequeñas compañías que  empezaron a dar servicio, la mayoría en sitios rurales donde Bell aún no llegaba. 

Poco a poco estas compañías empezaron a crecer y ya a inicios del siglo 20 tenían en su conjunto más abonado que la propia Bell.  A finales de la segunda guerra mundial el servicio telefónico llegaba a millones de abonados.

En 1947, científicos de Bell inventaron el transistor y cambian el curso de la historia de la humanidad. En 1948 ganan el Premio Nobel por su trabajo.

En los años 60s se lanzan los primeros satélites de comunicaciones y las comunicaciones entre continentes se facilitan. Todo esto fue posible gracias a la invención del Transistor.


Aprende a Implementar Asterisk paso a paso y en español
Libro: Asterisk PBX: Instalación, implementación y puesta en marcha.

DESCARGAR AHORA


Order Xbox One Games Today
Order Xbox One Games Today.

Titles include:

Forza Motorsport 5 for Xbox One
Kinect Sports Rivals for Xbox One
Ryse: Son of Rome for Xbox One
Dead Rising 3 for Xbox One
Call of Duty: Ghosts for Xbox One
Madden NFL 25 for Xbox One
Battlefield 4 for Xbox One
NBA Live 14 for Xbox One
Dying Light for Xbox One
Need for Speed: Rivals for Xbox One
FIFA 14 for Xbox One
Destiny for Xbox One
Just Dance 2014 Xbox One Game for Kinect
NBA 2K14 for Xbox One
Watch Dogs for Xbox One
Assassin's Creed IV: Black Flag for Xbox One


Offer Expires 09/23/20

Coupon Code: None Needed

10/16/2013

Creando cuentas SIP






Para que nuestros teléfonos puedan comunicarse con los demás, tenemos que configurar una cuenta para cada teléfono en el canal de drivers  al cual corresponda al protocolo que los teléfonos usan. Como ambos teléfonos están usando el protocolo SIP, nosotros configuraremos las cuentas en el archivo de configuración del canal de drivers SIP, llamado sip.conf (este reside en el directorio de configuración de Asterisk, el cual típicamente es /etc/Asterisk, usaremos nombres sencillos para identificar nuestro teléfonos fácilmente, pero por razones de seguridad es muy importante utilizar nombre más complejos, como por ejemplo la  dirección MAC del dispositivo o cualquier otros que no se tan fácil identificar por los ataques de fuerza bruta.
 
Navegue hasta el directorio de configuración de Asterisk, en mi caso es /etc/asteisk, habrá o cree, si no está creado, el archivo sip.conf con su editor favorito. Para este ejemplo usare vim, pero puedo usar cualquier otro como nano, emacs, etc. Ok ahora escriba en la interface de línea de comando de Linux el comando siguiente:

$ cd /etc/asterisk/
$ vim sip.conf

Para editar  este archivo presione la tecla “i” y ya estamos listo para comenzar a introducir el código necesario. Como todos los archivos en Asterisk, este está compuesto de varias secciones llamadas contexto, en la sección [general] copie o pegue las siguientes instrucciones:




[general]
context=public
allowguest=no
udpbindaddr=0.0.0.0
tcpenable=no
transport=udp
srvlookup=yes
language=es                     ; si su idioma es el español

; Ahora declaramos las cuentas para registrar nuestros teléfonos

[phone1]                                  ; cuenta para el primer teléfono
type=friend
host=dynamic
secret=   coloque aquí una contraseña segura
context=from-internal                ; en el dialplan crear un contexto from-internal, donde entraran las llamadas interna
dtmfmode=auto                       
disallow=all
allow=ulaw
allow=alaw
nat=auto


[phone2]                                  ; cuenta para el segundo teléfono
type=friend
host=dynamic
secret=   ; coloque aquí una contraseña segura
context=from-internal
dtmfmode=auto
disallow=all
allow=ulaw
allow=alaw
nat=auto

; Esto también los podemos hacer usando témplate  o plantilla de la manera siguiente:

[phone-interno](!)                   ; Esta es la plantilla con todos los parámetros que usaran
type=friend                               ; los teléfonos         
host=dynamic
secret=    ; coloque aquí una contraseña segura
context=from-internal
disallow=all
allow=ulaw
allow=ulaw
nat=auto

; Ahora para crear las cuentas para registrar los teléfonos hacemos los siguientes:


[phone1](phone-interno)

[phone2](phone-interno)   


Cuando termine de editar el archivo sip.conf  para grabar presione la tecla ESC y luego escriba :wq (w: graba y la q sale del archivo.


Listo ya tenemos 2 cuenta para registrar dos teléfonos que utilicen protocolo SIP.  Ahora debemos escribir el comando siguiente en la línea de comando de Linux:



$ asterisk -r                          ; esto nos muestra el CLI de Asterisk



Desde la línea de comando de Asterisk ejecute el comando:


*CLI> sip reload

Reloading  SIP

*CLI>


Este comando nos permite cargar el modulo chan_sip.so que es el módulos que controlas los canales SIP.

Si ejecutamos el comando sip show peers o sip show users veremos que aún no tenemos ningún dispositivos o usuarios registrados en Asterisk.  Por lo que nuestros siguientes pasos es registrar los teléfonos con las cuentas que ya creamos para que se comuniquen con Asterisk.

Para esto voy a utilizar un teléfono físico (Cisco 7912) y un Softphone (3CXPhone). Si no tienes teléfonos SIP físico, puedes usar softphone que para los fines de prácticas es lo mismo. Algunos que puedes descargar son Zoiper y X-Lite. A continuación realice las siguientes instrucciones:

En el Teléfonos  Cisco 7912
  • Presiones el botón de menú sobre el teclado del teléfono
  • En el menú busque la opción setting y presiones el botón select
  • Luego busque la opción  SIP Configuration  y presione el botón select
  • Ahora digite  **#, le pedirá el password, en esto teléfonos el password por defecto es 1234, si lo ha cambiado entonces introduzca el que le puso. Esto lo hacemos para que el teléfono nos permita editar las opciones siguientes:
  • Colóquese sobre la opción SIP Proxy y presione el botón Edit, luego introduzca aquí la dirección IP de su central Asterisk. Presiones Aceptar.
  • Ahora busque la opción  User ID y presione el botón Edit. Introduzca aquí unas de las cuentas que creamos en el sip.conf, en mi caso pondré phone1. Presiones Aceptar
  • El siguiente paso es buscar la opción PASSWORD y presiones el botón Edit. Aquí ponemos el password que creamos en la opción secret,  cuando creamos las cuentas en el sip.conf. Ejemplo:

            [phone1]                                  ; cuenta para el primer teléfono

            type=friend

            host=dynamic

            secret=   coloque aquí una contraseña segura

Una vez ponemos el password correspondiente, presionamos Aceptar.

Ahora buscamos la opción Use Login ID: presiones Edit y debe quedar así:

Use Login ID: YES

En la opción Login ID ponemos la cuenta de teléfonos, en nuestro caso phone1.

Login ID: phone1

Por último selecciones la opción Local SIP Port, presiones el botón Edit  y verifique que tenga el puerto 5060. Presiones Aceptar el teléfono debe reiniciarse y listo.

Lo que nos resta ahora es configurar el Softphone 3CX para que se registre con Asterisk, tranquilo que esto es bien sencillo. Lo puede descargar de la página oficial http://www.3cx.com/3CXPhone/Windows/

Ok. Una vez descargado el software, el proceso de instalación es igual a cualquier aplicación Windows. Con el software ya instalado, habrá el 3CXPhone y configurelo como se muestra:


  1. Abre el 3CXPhone
  2. Click derecho sobre la pantalla de 3CXPhone
  3. Elegir la opción Accounts
  4. El la siguiente pantalla hacer clic en el botón New.
  5. En la pantalla siguiente rellena los siguientes campos:
          Account Name: phone2
          Caller ID:   phone2                        ; o el nombre de quien usa el telefono.
 
      Credenciales
          Extensions: phone2
          ID: phone2
          Password:                  ; la contraseña que puse en la opción secret de su archivos sip.conf

     My location
          I am in the office - local IP:         ; coloque la dirección IP de su central Asterisk.

Presiones OK, si todo esta correcto su teléfonos debe registrarse con Asterisk. Para confirmar si se registraron los teléfonos, ejecute el comando desde el CLI de asterisk el comando:

$ sip show peers

Name/username               Host                Dyn                 NAT       ACL            Port         Status
phone1                       192.168.1.104           D                                    A               5060    Unmonitored
phone2                       192.168.1.105           D                                    A               5060    Unmonitored
2 sip peers     [Monitored:  0 online,   0 offline  Unmonitored:  2 online, 0 offline]

Si la salida del comando sip show peers es similar a esta, su teléfonos se están comunicando con Asterisk. Pero tranquiloooo, todavía no podemos hacer llamadas. Para realizar llamadas debemos crear las extensiones correspondiente en dialplan. Hablaremos de este tema en la próxima entrega.       
         
Nota: los teléfonos Cisco 79XX no soportan el protocolo SIP por defecto, para hacer que trabaje con SIP debemos actualizar el Fimeware, con una versión para SIP.


 
Aprende a Implementar Asterisk paso a paso y en español
Libro: Asterisk PBX: Instalación, implementación y puesta en marcha.


Descargar ahora