Asterisk y Openser
Matrimonio de conveniencia
[email protected]
Qué es Asterisk
• Centralita IP
• Modular
• Multiprotocolo
• Gateway
• Voicemail
• Media Server / Conference Server
• IVR
Qué NO es Asterisk
• Plataforma escalable de comunicaciones IP
• Plataforma enfocada al usuario
• Proxy SIP
Qué NO es Asterisk II
• Estándar:
• ./configure --prefix=/usr/local/asterisk-1.4.13
• Asterisk way of life:
• ./configure --prefix=/usr/local/asterisk-1.4.13 --exec-prefix=/usr/local/
asterisk-1.4.13/ --bindir=/usr/local/asterisk-1.4.13/bin --datarootdir=/usr/
local/asterisk-1.4.13/share --includedir=/usr/local/asterisk-1.4.13/include
--libdir=/usr/local/asterisk-1.4.13/lib --libexecdir=/usr/local/asterisk-1.4.13/
libexec --localstatedir=/usr/local/asterisk-1.4.13/var --sbindir=/usr/local/
asterisk-1.4.13/sbin --sharedstatedir=/usr/local/asterisk-1.4.13/com --
sysconfdir=/usr/local/asterisk-1.4.13/etc
Asterisk y SIP
• chan_sip.c tiene 17840 líneas
• Stack SIP incompleto
• Transaction stateless, dialog stateful - B2BUA
• No soporta TCP ni TLS
• Modo “pedantic” ¿opcional?
• Espirales no soportadas
• Concepto de “alias” no soportado
Asterisk y SIP II
• Múltiples registros de un mismo AOR no soportado
• Forking, serial o parallel, no soportado
• VIA limitado a 256 bytes
• Outbound proxy no soportado
• OPTIONS in-dialog no soportado
• Resolución SRV incompleta
Qué es OpenSER
• Proxy SIP (registrar, location, proxy y redirect)
• Modular
• Escalable
• Transaction stateful, dialog stateless
• NAT Traversal
• Presencia
• Soporta J2EE y Perl
Qué NO es OpenSER
• Plataforma enfocada al usuario
• Consciente de media o codecs
• Media Server, IVR, transcoding, etc
• Gateway
• Servidor de aplicaciones SIP
Matrimonio de conveniencia
• Asterisk no es un Proxy SIP, OpenSER sí
• Asterisk no tiene un stack SIP completo, OpenSER sí
• Asterisk no soporta TCP ni TLS, OpenSER sí
• Asterisk no dispone de NAT traversal efectivo, OpenSER sí
• Asterisk no es escalable, OpenSER sí
• Asterisk actúa como b2bua, OpenSER no
• Asterisk soporta media, OpenSER no
Matrimonio de conveniencia II
• Asterisk hace transcoding, IVR, etc, OpenSER no
• Asterisk tiene voicemail, meetme, etc, OpenSER no
• Asterisk dispone de interfaces físicos, OpenSER no
• Asterisk puede hacer de gateway, OpenSER no
Integración - Escenario inicial
• 4 Asterisk diferentes en una central y 3 delegaciones
• El Asterisk de la central con 2xE1
• 1xE1 a la centralita - 1xE1 de la centralita a PSTN
• 1 de las delegaciones con 2 extensiones remotas
• Cada Asterisk ofrece servicio de voicemail local
• Enrutamiento global configurado en cada Asterisk
• Redirección de puertos en los routers de acceso
Integración - Escenario inicial
Centralita
PSTN
Asterisk
Asterisk
Asterisk
Asterisk
Remoto
Remoto
Integración - Primer paso
• Instalar un OpenSER en la central que se encarga de:
• Unificar el enrutamiento en un único punto
• Gestión de extensiones remotas
• NAT Traversal unificado
Integración - Primer paso
Centralita
PSTN
Asterisk
Asterisk
Asterisk
Asterisk
Remoto
Remoto
Integración - Segundo paso
• Mover 1xE1 de PSTN al Asterisk de la central
Integración - Segundo paso
PSTN
Centralita
Asterisk
Asterisk
Asterisk
Asterisk
Remoto
Remoto
Integración - Tercer paso
• Creación de servicios unificados en el Asterisk de la central:
• Voicemail
• IVR
• Conference
• ...
• Es posible unificar los usuarios de Asterisk y OpenSER
Integración - Tercer paso
PSTN
Centralita
Conference
IVR
Asterisk
Voicemail
Asterisk
Asterisk
Asterisk
Remoto
Remoto
Integración - Cuarto paso
• Conexión a un ITSP para terminación PSTN
• OpenSER no es un UAC por lo que el ITSP debe autentificar por IP o usar el
módulo UAC, de funcionalidad limitada
• Usar E1 PSTN del Asterisk como backup
Integración - Cuarto paso
VoIP
Provider
PSTN
Centralita
Conference
IVR
Asterisk
Voicemail
Asterisk
Asterisk
Asterisk
Remoto
Remoto
Otras integraciones
• Balanceo de carga
• Redundancia
• Servicios
• AGI y WeSIP
Balanceo de carga
Asterisk 1
Asterisk 2
Asterisk 3
Balanceo persistente basado en:
- Hash Call-ID
- Hash From URI
- Hash To URI
- Hash RURI
- Round robin
OpenSER
Redundancia
MySQL
Compartiendo el mismo backend
se obtiene redundancia completa
Asterisk 1
Asterisk 2
Asterisk 3
OpenSER
Servicios
Voicemail
Echo test
23 - 30
Locuciones
Conference
IVR
25
Doble marcado
Servicios varios:
- Voicemail: *123
- Conference: *125
- Echo test: *130
- Locuciones
- IVR: Auto attendant
- Doble marcado
OpenSER
PSTN
Creación de dialplan:
- *1: prefijo servicios de media
- Dos dígitos extensión Asterisk
Locuciones:
- Usuario no disponible
- Servicio no disponible
- Ringback tones
Asterisk usa vistas de la base de
datos de usuarios de OpenSER
para integrar la provisión
Configuraciones de ejemplo
• Configuración OpenSER
• Configuración Asterisk
AGI y WeSIP
OpenSER
WeSIP
App Server
Asterisk
SIP
SIP
AGI HTTP
RTP
Aplicaciones complejas:
- Señalización controlada por WeSIP
- Media y DTMF por Asterisk
- Autoattendant
- Ringback tones
- IVR complejos
- Consultas bases de datos externas
- Consultas otras fuentes de datos
- Cualquier apliación signaling/media
AGI II
• exten => ivrapp,1,GotoIf($["${SIP_HEADER(X-AGI-AppType)}" == "1"]?
simpleacd,s,1)
• exten => ivrapp,2,GotoIf($["${SIP_HEADER(X-AGI-AppType)}" == "2"]?
simpleatt,s,1)
• exten => ivrapp,3,Hangup
AGI III
• [simpleacd]
• exten => s,1,Answer
• exten => s,2,Set(TIMEOUT(digit)=7)
• exten => s,3,AGI(agi://${SIP_HEADER(X-AGI-Host)}:${SIP_HEADER(X-AGI-
Port)}/org.asteriskjava.web.ScriptedAgi?script=simple.acd&AppID=$
{SIP_HEADER(X-AGI-AppID)});
• exten => s,4,Hangup
AGI y WeSIP II
Múltiples servidores de aplicaciones:
- Distribución de aplicaciones
- Redundancia
- Balanceo de carga
OpenSER
SIP
WeSIP
WeSIP
WeSIP
RTP
AGI HTTP
SIP
AGI HTTP
Asterisk
Ejemplo real de integración: www.oigaa.com
Conclusiones
• Cada aplicación tiene su función:
• OpenSER: Core SIP, routing, NAT traversal
• Asterisk: Ipbx, servicios de media, gateway, AGI
• Son perfectamente complementarios; lo que tiene uno le falta al otro
• Muchas posibilidades de integración
• Ninguno de los dos es sencillo de configurar y administrar
Muchas gracias!
[email protected]
Comentarios de: Asterisk y Openser Matrimonio de conveniencia (0)
No hay comentarios