SlideShare una empresa de Scribd logo
Construyendo una centralita virtual
con FreeSWITCH
José Francisco Irles
jfirles@siptize.com
@josefu

7 de noviembre de 2013
Construyendo una centralita virtual con FreeSWITCH

José Francisco Irles
@josefu

Sobre Siptize
●

Operador VoIP

●

Satmak: Soft-Switch 4/5

●

Plataforma Hosted PBX

●

Consultoría VoIP

www.siptize.com
Construyendo una centralita virtual con FreeSWITCH

José Francisco Irles
@josefu

¿Qué es FreeSWITCH? (I)
●

Plataforma Open Source de comunicaciones

●

Puede usarse como:
–
–
–
–
–

Biblioteca (libfreeswitch)
Softphone
PBX
Soft-switch
Etc

●

Licencia MPL 1.1

●

B2BUA
www.siptize.com
Construyendo una centralita virtual con FreeSWITCH

José Francisco Irles
@josefu

¿Qué es FreeSWITCH? (y II)
●

Configuración en XML (hay alternativas)

●

Soporte para diferentes protocolos
–
–
–
–
–
–

SIP (udp, tcp, websockets)
H323
XMPP-Jingle
SCCP
Skype
TDM (FreeTDM)
www.siptize.com
Construyendo una centralita virtual con FreeSWITCH

José Francisco Irles
@josefu

¿Por qué elegir FreeSWITCH? (I)
●

Máxima de FreeSWITCH: no reinventar la rueda
–
–
–

Sofia SIP
cURL
PostgreSQL y SQLite para el core

●

Multiplataforma

●

Escalabilidad

●

Flexibilidad

●

Multi dominio

●

Sofia Profiles
www.siptize.com
Construyendo una centralita virtual con FreeSWITCH

José Francisco Irles
@josefu

¿Por qué elegir FreeSWITCH? (y II)
●

Modelo de datos no prefijado

●

Tecnologías estándar para “realtime”:
–
–
–

●

Lenguaje de programación:
–

●

HTTP
XML
JSON
El que tú decidas

Facilidad para clusterizar el backend: HTTP
www.siptize.com
con FreeSWITCH se liga más,
y lo sabes...
Construyendo una centralita virtual con FreeSWITCH

José Francisco Irles
@josefu

Arquitectura Hosted PBX

www.siptize.com
Construyendo una centralita virtual con FreeSWITCH

José Francisco Irles
@josefu

Configuración de FreeSWITCH
●

Módulo mod_xml_curl
–
–

–

Configuración mínima en local (fichero xml)
Resto de configuración cargada mediante servicio
web
RESTful
●

POST a url configurada

www.siptize.com
Construyendo una centralita virtual con FreeSWITCH

José Francisco Irles
@josefu

Ejemplo mod_xml_curl: REGISTER

www.siptize.com
Construyendo una centralita virtual con FreeSWITCH

José Francisco Irles
@josefu

Request/Response de FreeSWITCH al servidor web
Request
[hostname] => testmachine
[section] => directory
[tag_name] => domain
[key_name] => name
[key_value] => domain1.awesomevoipdomain.faketld
[Event-Name] => REQUEST_PARAMS
[Core-UUID] => c5c8cbf4-60c3-45a2-b110-933da620cfd2
[FreeSWITCH-Hostname] => 25515_1_36308_177178
[FreeSWITCH-IPv4] => 192.168.1.10
[FreeSWITCH-IPv6] => ::1
[Event-Date-Local] => 2009-10-27 00:47:10
[Event-Date-GMT] => Tue, 27 Oct 2009 07:47:10 GMT
[Event-Date-Timestamp] => 1256629630733916
[Event-Calling-File] => sofia_reg.c
[Event-Calling-Function] => sofia_reg_parse_auth
[Event-Calling-Line-Number] => 1671
[action] => sip_auth
[sip_profile] => internal
[sip_user_agent] => PolycomSoundPointIP-SPIP_320-UA/3.1.0.0084
[sip_auth_username] => 1004
[sip_auth_realm] => domain1.awesomevoipdomain.faketld
[sip_auth_nonce] => 533c5264-12cb-4f8b-bcdb-5ecabe5e540f
[sip_auth_uri] => sip:domain1.awesomevoipdomain.faketld:5060
[sip_contact_user] => 1004
[sip_contact_host] => 192.168.1.100
[sip_to_user] => 1004
[sip_to_host] => domain1.awesomevoipdomain.faketld
[sip_from_user] => 1004
[sip_from_host] => domain1.awesomevoipdomain.faketld
[sip_request_host] => domain1.awesomevoipdomain.faketld
[sip_request_port] => 5060
[sip_auth_qop] => auth
[sip_auth_cnonce] => hSVnPb32nA/OtkY
[sip_auth_nc] => 00000001
[sip_auth_response] => 6e4e611d7593d52e02451b70900071d8
[sip_auth_method] => REGISTER
[key] => id
[user] => 1004
[domain] => domain1.awesomevoipdomain.faketld
[ip] => 192.168.1.100

Response
<document type="freeswitch/xml">
<section name="directory">
<domain name="domain1.awesomevoipdomain.faketld">
<params>
<param name="dial-string" value="{presence_id=${dialed_user}@$
{dialed_domain}}${sofia_contact(${dialed_user}@${dialed_domain})}"/>
</params>
<groups>
<group name="default">
<users>
<user id="1004">
<params>
<param name="password" value="some_password"/>
</params>
</user>
</users>
</group>
</groups>
</domain>
</section>
</document>

www.siptize.com
Construyendo una centralita virtual con FreeSWITCH

José Francisco Irles
@josefu

Interactuar con FreeSWITCH
●

Módulo mod_event_socket
–
–
–
–
–

●

Modo inbound/outbound
Enviar comandos y recibir la respuestas
Escucha de eventos
Conexión “statefull”: Socket TCP
“Equivalente” en asterisk: manager + FastAGI

Módulo mod_xml_rpc: RESTful
–
–

Sólo para enviar comandos (y recibir su respuesta)
Conexión “stateless”: HTTP (request/response)
www.siptize.com
Construyendo una centralita virtual con FreeSWITCH

José Francisco Irles
@josefu

Eventos en FreeSWITCH
●

mod_event_socket (visto antes)

●

mod_event_multicast
–

Permite replicar registros y presencia sin
compartir base de datos

●

mod_erlang_event

●

mod_event_zmq
–
–
–

Formato JSON
Escalable
Bindings para múltiples lenguajes
www.siptize.com
Construyendo una centralita virtual con FreeSWITCH

José Francisco Irles
@josefu

CDR
●

mod_cdr_xml (recomendado)

●

mod_cdr_csv

●

mod_cdr_mongodb

●

mod_cdr_pg_csv

●

mod_cdr_sqlite

●

mod_json_cdr

●

mod_radius_cdr
www.siptize.com
Construyendo una centralita virtual con FreeSWITCH

José Francisco Irles
@josefu

Ejemplo de CDR en XML
<?xml version="1.0"?>
<cdr core-uuid="5d80b2bf-7ae1-4fed-803e-7edf94468be0">
<channel_data>
<state>CS_REPORTING</state>
<direction>inbound</direction>
<state_number>11</state_number>
<flags>0=1;3=1;19=1;36=1;37=1;39=1;52=1;73=1</flags>
<caps>1=1;2=1;3=1;4=1;5=1;6=1</caps>
</channel_data>
<variables>
<direction>inbound</direction>
<uuid>897211c5-2f67-4c77-9928-c8c0b9e49972</uuid>
<session_id>56</session_id>
<sip_from_user>100</sip_from_user>
<sip_from_uri>100%40testsip.com</sip_from_uri>
<sip_from_host>testsip.com</sip_from_host>
<channel_name>sofia/internal/100%40testsip.com</channel_name>
<sip_received_port>5060</sip_received_port>
<sip_via_protocol>udp</sip_via_protocol>
<sip_authorized>true</sip_authorized>
<accountcode>100%40testsip.com</accountcode>
<user_context>default</user_context>
….
<app_log>
<application app_name="export" app_data="domain_name=testsip.com"
app_stamp="1378365023484959"></application>
<application app_name="export" app_data="domain=testsip.com" app_stamp="1378365023485712"></application>
<application app_name="export" app_data="pbx_id=4028818b40e7e3830140e7e38512002f"
app_stamp="1378365023486343"></application>
….
</app_log>
<callflow dialplan="XML" unique-id="0ff824e3-80c0-495e-9292-4f09c787e942" profile_index="1">
<extension name="default_extension" number="*60600" current_app="transfer">
<application app_name="export" app_data="domain_name=testsip.com"></application>
<application app_name="export" app_data="domain=testsip.com"></application>
…..
</callflow>
….

www.siptize.com
Construyendo una centralita virtual con FreeSWITCH

José Francisco Irles
@josefu

Alta Disponibilidad: cómo dormir más tranquilo

www.siptize.com
Construyendo una centralita virtual con FreeSWITCH

José Francisco Irles
@josefu

Estrategia alta disponibilidad
●

Base de datos en cluster HA

●

Replicar en “n” datacenters:
–

Base de datos (sólo elementos necesarios)
●

–
●

Datos “read-only”

Los CDR's se envían a la db principal

Usar los DNS
–
–

Repartir carga (granularidad: centralita)
Ante un fallo en datacenter:
●
●

Failover automático → SRV
Failover manual → Cambio en DNS
www.siptize.com
Construyendo una centralita virtual con FreeSWITCH

José Francisco Irles
@josefu

sofia recover
●

●

●

●

“Magia” en FreeSWITCH
Se mueve todo (media incluido) de un servidor
a otro
El usuario sólo detecta una pérdida momentánea
de audio
Requerimientos:
–

Base de datos del core compartida
●

●

–

<param name="odbc-dsn" value="odbc://dsn:username:password"/>
<param name="core-recovery-db-dsn" value="odbc://dsn:username:password"/>

Parámetro en configuración de sofia:
●

<param name=”track-calls” value=”true”/>
www.siptize.com
Construyendo una centralita virtual con FreeSWITCH

José Francisco Irles
@josefu

sofia recover: situación normal
●

Nodo activo:
–
–

●

“n” llamadas con media a través de él
“m” llamadas sin media a través de él

Nodo pasivo, dos alternativas:
–
–

FreeSW ITCH apagado
FreeSW ITCH en marcha
●

net.ipv4.ip_nonlocal_bind=1

www.siptize.com
Construyendo una centralita virtual con FreeSWITCH

José Francisco Irles
@josefu

sofia recover: fallo en nodo activo
●

Parar nodo activo

●

Nodo pasivo adquiere la IP flotante

●

●

Forzar update en tabla arp en el router
(arping)
Ejecutar “sofia recover” en nodo pasivo

www.siptize.com
Construyendo una centralita virtual con FreeSWITCH

José Francisco Irles
@josefu

sofia recover: nodo pasivo pasa a activo
●

●

Se recuperan las llamadas activas
Pequeño lapsus (~2 segundos) sin audio
entre las extensiones

www.siptize.com
Construyendo una centralita virtual con FreeSWITCH

José Francisco Irles
@josefu

Visión global de plataforma de centralita virtual

www.siptize.com
¿Preguntas?

www.siptize.com

Más contenido relacionado

Similar a V2 d2013 jose f irles - freeswitch

Despliegue de Imágenes en aulas de informática
Despliegue de Imágenes en aulas de informáticaDespliegue de Imágenes en aulas de informática
Despliegue de Imágenes en aulas de informática
ssuserbd237f
 
Lorenzo Martínez - Welcome to your secure /home, $user [Rooted CON 2012]
Lorenzo Martínez - Welcome to your secure /home, $user [Rooted CON 2012]Lorenzo Martínez - Welcome to your secure /home, $user [Rooted CON 2012]
Lorenzo Martínez - Welcome to your secure /home, $user [Rooted CON 2012]
RootedCON
 
Policyd: Instalacion y configuracion
Policyd: Instalacion y configuracionPolicyd: Instalacion y configuracion
Policyd: Instalacion y configuracion
criscega
 
Guia de configuracion cisco 881 w logicalis
Guia de configuracion cisco 881 w   logicalisGuia de configuracion cisco 881 w   logicalis
Guia de configuracion cisco 881 w logicalis
asesinoevil
 
Semana 7 Despliegue a producción ORACLE OCI
Semana 7   Despliegue a producción ORACLE OCISemana 7   Despliegue a producción ORACLE OCI
Semana 7 Despliegue a producción ORACLE OCI
Richard Eliseo Mendoza Gafaro
 
Analizando la performance del subsistema de IO
Analizando la performance del subsistema de IOAnalizando la performance del subsistema de IO
Analizando la performance del subsistema de IO
SpanishPASSVC
 
Taller IoT: desarrollo visual en Sofia2 con Raspberry Pi, Node-RED y dashboards
Taller IoT: desarrollo visual en Sofia2 con Raspberry Pi, Node-RED y dashboardsTaller IoT: desarrollo visual en Sofia2 con Raspberry Pi, Node-RED y dashboards
Taller IoT: desarrollo visual en Sofia2 con Raspberry Pi, Node-RED y dashboards
Sofia2 Smart Platform
 
SecondNug Febrero 2012 - Automatización de despliegues
SecondNug Febrero 2012 - Automatización de desplieguesSecondNug Febrero 2012 - Automatización de despliegues
SecondNug Febrero 2012 - Automatización de despliegues
Jose Luis Soria
 
Ipco ppre
Ipco ppreIpco ppre
Ipco ppre
cca americas
 
Como implementar un Controlador de Dominio en Linux usando Samba
Como implementar un Controlador de Dominio en Linux usando SambaComo implementar un Controlador de Dominio en Linux usando Samba
Como implementar un Controlador de Dominio en Linux usando Samba
ssuser13b169
 
Detectando DDoS e intrusiones con RouterOS
Detectando DDoS e intrusiones con RouterOSDetectando DDoS e intrusiones con RouterOS
Detectando DDoS e intrusiones con RouterOS
Pavel Odintsov
 
Tips en la instalación de Dynamics 365 Finance and Operations On Premise - LBD
Tips en la instalación de Dynamics 365 Finance and Operations On Premise - LBDTips en la instalación de Dynamics 365 Finance and Operations On Premise - LBD
Tips en la instalación de Dynamics 365 Finance and Operations On Premise - LBD
Juan Fabian
 
Seguridad de las Redes
Seguridad de las RedesSeguridad de las Redes
Seguridad de las Redes
AlexanderGarcia243
 
El servidor perfecto
El servidor perfectoEl servidor perfecto
El servidor perfecto
betabeers
 
Mongodb administración
Mongodb administraciónMongodb administración
Mongodb administración
Juan Ladetto
 
Servidor de mapas en HA con Jboss, Geoserver y PostGIS.
Servidor de mapas en HA con Jboss, Geoserver y PostGIS.Servidor de mapas en HA con Jboss, Geoserver y PostGIS.
Servidor de mapas en HA con Jboss, Geoserver y PostGIS.
David Tabernero Pérez
 
dotnetMalaga-2020 Gestión de la configuración en aplicaciones Web
dotnetMalaga-2020 Gestión de la configuración en aplicaciones WebdotnetMalaga-2020 Gestión de la configuración en aplicaciones Web
dotnetMalaga-2020 Gestión de la configuración en aplicaciones Web
Pedro J. Molina
 
Buildout: Crear y desplegar entornos reproducibles en Python
Buildout: Crear y desplegar entornos reproducibles en PythonBuildout: Crear y desplegar entornos reproducibles en Python
Buildout: Crear y desplegar entornos reproducibles en Python
CodeSyntax
 
Protocolo syslog
Protocolo   syslogProtocolo   syslog
Protocolo syslog
UTP
 
Serverless: La evolucion de la arquitectura a la nube
Serverless: La evolucion de la arquitectura a la nubeServerless: La evolucion de la arquitectura a la nube
Serverless: La evolucion de la arquitectura a la nube
Quito Lambda
 

Similar a V2 d2013 jose f irles - freeswitch (20)

Despliegue de Imágenes en aulas de informática
Despliegue de Imágenes en aulas de informáticaDespliegue de Imágenes en aulas de informática
Despliegue de Imágenes en aulas de informática
 
Lorenzo Martínez - Welcome to your secure /home, $user [Rooted CON 2012]
Lorenzo Martínez - Welcome to your secure /home, $user [Rooted CON 2012]Lorenzo Martínez - Welcome to your secure /home, $user [Rooted CON 2012]
Lorenzo Martínez - Welcome to your secure /home, $user [Rooted CON 2012]
 
Policyd: Instalacion y configuracion
Policyd: Instalacion y configuracionPolicyd: Instalacion y configuracion
Policyd: Instalacion y configuracion
 
Guia de configuracion cisco 881 w logicalis
Guia de configuracion cisco 881 w   logicalisGuia de configuracion cisco 881 w   logicalis
Guia de configuracion cisco 881 w logicalis
 
Semana 7 Despliegue a producción ORACLE OCI
Semana 7   Despliegue a producción ORACLE OCISemana 7   Despliegue a producción ORACLE OCI
Semana 7 Despliegue a producción ORACLE OCI
 
Analizando la performance del subsistema de IO
Analizando la performance del subsistema de IOAnalizando la performance del subsistema de IO
Analizando la performance del subsistema de IO
 
Taller IoT: desarrollo visual en Sofia2 con Raspberry Pi, Node-RED y dashboards
Taller IoT: desarrollo visual en Sofia2 con Raspberry Pi, Node-RED y dashboardsTaller IoT: desarrollo visual en Sofia2 con Raspberry Pi, Node-RED y dashboards
Taller IoT: desarrollo visual en Sofia2 con Raspberry Pi, Node-RED y dashboards
 
SecondNug Febrero 2012 - Automatización de despliegues
SecondNug Febrero 2012 - Automatización de desplieguesSecondNug Febrero 2012 - Automatización de despliegues
SecondNug Febrero 2012 - Automatización de despliegues
 
Ipco ppre
Ipco ppreIpco ppre
Ipco ppre
 
Como implementar un Controlador de Dominio en Linux usando Samba
Como implementar un Controlador de Dominio en Linux usando SambaComo implementar un Controlador de Dominio en Linux usando Samba
Como implementar un Controlador de Dominio en Linux usando Samba
 
Detectando DDoS e intrusiones con RouterOS
Detectando DDoS e intrusiones con RouterOSDetectando DDoS e intrusiones con RouterOS
Detectando DDoS e intrusiones con RouterOS
 
Tips en la instalación de Dynamics 365 Finance and Operations On Premise - LBD
Tips en la instalación de Dynamics 365 Finance and Operations On Premise - LBDTips en la instalación de Dynamics 365 Finance and Operations On Premise - LBD
Tips en la instalación de Dynamics 365 Finance and Operations On Premise - LBD
 
Seguridad de las Redes
Seguridad de las RedesSeguridad de las Redes
Seguridad de las Redes
 
El servidor perfecto
El servidor perfectoEl servidor perfecto
El servidor perfecto
 
Mongodb administración
Mongodb administraciónMongodb administración
Mongodb administración
 
Servidor de mapas en HA con Jboss, Geoserver y PostGIS.
Servidor de mapas en HA con Jboss, Geoserver y PostGIS.Servidor de mapas en HA con Jboss, Geoserver y PostGIS.
Servidor de mapas en HA con Jboss, Geoserver y PostGIS.
 
dotnetMalaga-2020 Gestión de la configuración en aplicaciones Web
dotnetMalaga-2020 Gestión de la configuración en aplicaciones WebdotnetMalaga-2020 Gestión de la configuración en aplicaciones Web
dotnetMalaga-2020 Gestión de la configuración en aplicaciones Web
 
Buildout: Crear y desplegar entornos reproducibles en Python
Buildout: Crear y desplegar entornos reproducibles en PythonBuildout: Crear y desplegar entornos reproducibles en Python
Buildout: Crear y desplegar entornos reproducibles en Python
 
Protocolo syslog
Protocolo   syslogProtocolo   syslog
Protocolo syslog
 
Serverless: La evolucion de la arquitectura a la nube
Serverless: La evolucion de la arquitectura a la nubeServerless: La evolucion de la arquitectura a la nube
Serverless: La evolucion de la arquitectura a la nube
 

Último

Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
AMADO SALVADOR
 
mantenimiento de chasis y carroceria1.pptx
mantenimiento de chasis y carroceria1.pptxmantenimiento de chasis y carroceria1.pptx
mantenimiento de chasis y carroceria1.pptx
MiguelAtencio10
 
Manual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputosManual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputos
cbtechchihuahua
 
Programming & Artificial Intelligence ebook.pdf
Programming & Artificial Intelligence ebook.pdfProgramming & Artificial Intelligence ebook.pdf
Programming & Artificial Intelligence ebook.pdf
Manuel Diaz
 
TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....
TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....
TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....
bendezuperezjimena
 
Manual Web soporte y mantenimiento de equipo de computo
Manual Web soporte y mantenimiento de equipo de computoManual Web soporte y mantenimiento de equipo de computo
Manual Web soporte y mantenimiento de equipo de computo
mantenimientocarbra6
 
Gabinete, puertos y dispositivos que se conectan al case
Gabinete,  puertos y  dispositivos que se conectan al caseGabinete,  puertos y  dispositivos que se conectan al case
Gabinete, puertos y dispositivos que se conectan al case
JuanaNT7
 
Presentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre bloggerPresentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre blogger
larapalaciosmonzon28
 
computacion global 3.pdf pARA TERCER GRADO
computacion global 3.pdf pARA TERCER GRADOcomputacion global 3.pdf pARA TERCER GRADO
computacion global 3.pdf pARA TERCER GRADO
YaniEscobar2
 
Informació Projecte Iniciativa TIC SOPRA STERIA.pdf
Informació Projecte Iniciativa TIC SOPRA STERIA.pdfInformació Projecte Iniciativa TIC SOPRA STERIA.pdf
Informació Projecte Iniciativa TIC SOPRA STERIA.pdf
Festibity
 
Sitios web 3.0 funciones ventajas y desventajas
Sitios web 3.0 funciones ventajas y desventajasSitios web 3.0 funciones ventajas y desventajas
Sitios web 3.0 funciones ventajas y desventajas
paulroyal74
 
Projecte Iniciativa TIC 2024 HPE. inCV.pdf
Projecte Iniciativa TIC 2024 HPE. inCV.pdfProjecte Iniciativa TIC 2024 HPE. inCV.pdf
Projecte Iniciativa TIC 2024 HPE. inCV.pdf
Festibity
 
herramientas de sitio web 3.0 2024
herramientas de sitio web 3.0  2024herramientas de sitio web 3.0  2024
herramientas de sitio web 3.0 2024
julio05042006
 
Computacion cuántica y sus ventajas y desventajas
Computacion cuántica y sus ventajas y desventajasComputacion cuántica y sus ventajas y desventajas
Computacion cuántica y sus ventajas y desventajas
sofiahuarancabellido
 
Tecnología 5G Presentación.pdf trabajo .
Tecnología 5G Presentación.pdf trabajo .Tecnología 5G Presentación.pdf trabajo .
Tecnología 5G Presentación.pdf trabajo .
asrielgamer3421
 
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdfProjecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Festibity
 
edublogs info.docx asdasfasfsawqrdqwfqwfqwfq
edublogs info.docx asdasfasfsawqrdqwfqwfqwfqedublogs info.docx asdasfasfsawqrdqwfqwfqwfq
edublogs info.docx asdasfasfsawqrdqwfqwfqwfq
larapalaciosmonzon28
 
PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdfPLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
70244530
 
Informació Projecte Iniciativa TIC HPE.pdf
Informació Projecte Iniciativa TIC HPE.pdfInformació Projecte Iniciativa TIC HPE.pdf
Informació Projecte Iniciativa TIC HPE.pdf
Festibity
 
HERRAMIENTAS WEB--------------------.pptx
HERRAMIENTAS WEB--------------------.pptxHERRAMIENTAS WEB--------------------.pptx
HERRAMIENTAS WEB--------------------.pptx
maralache30
 

Último (20)

Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
 
mantenimiento de chasis y carroceria1.pptx
mantenimiento de chasis y carroceria1.pptxmantenimiento de chasis y carroceria1.pptx
mantenimiento de chasis y carroceria1.pptx
 
Manual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputosManual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputos
 
Programming & Artificial Intelligence ebook.pdf
Programming & Artificial Intelligence ebook.pdfProgramming & Artificial Intelligence ebook.pdf
Programming & Artificial Intelligence ebook.pdf
 
TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....
TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....
TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....
 
Manual Web soporte y mantenimiento de equipo de computo
Manual Web soporte y mantenimiento de equipo de computoManual Web soporte y mantenimiento de equipo de computo
Manual Web soporte y mantenimiento de equipo de computo
 
Gabinete, puertos y dispositivos que se conectan al case
Gabinete,  puertos y  dispositivos que se conectan al caseGabinete,  puertos y  dispositivos que se conectan al case
Gabinete, puertos y dispositivos que se conectan al case
 
Presentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre bloggerPresentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre blogger
 
computacion global 3.pdf pARA TERCER GRADO
computacion global 3.pdf pARA TERCER GRADOcomputacion global 3.pdf pARA TERCER GRADO
computacion global 3.pdf pARA TERCER GRADO
 
Informació Projecte Iniciativa TIC SOPRA STERIA.pdf
Informació Projecte Iniciativa TIC SOPRA STERIA.pdfInformació Projecte Iniciativa TIC SOPRA STERIA.pdf
Informació Projecte Iniciativa TIC SOPRA STERIA.pdf
 
Sitios web 3.0 funciones ventajas y desventajas
Sitios web 3.0 funciones ventajas y desventajasSitios web 3.0 funciones ventajas y desventajas
Sitios web 3.0 funciones ventajas y desventajas
 
Projecte Iniciativa TIC 2024 HPE. inCV.pdf
Projecte Iniciativa TIC 2024 HPE. inCV.pdfProjecte Iniciativa TIC 2024 HPE. inCV.pdf
Projecte Iniciativa TIC 2024 HPE. inCV.pdf
 
herramientas de sitio web 3.0 2024
herramientas de sitio web 3.0  2024herramientas de sitio web 3.0  2024
herramientas de sitio web 3.0 2024
 
Computacion cuántica y sus ventajas y desventajas
Computacion cuántica y sus ventajas y desventajasComputacion cuántica y sus ventajas y desventajas
Computacion cuántica y sus ventajas y desventajas
 
Tecnología 5G Presentación.pdf trabajo .
Tecnología 5G Presentación.pdf trabajo .Tecnología 5G Presentación.pdf trabajo .
Tecnología 5G Presentación.pdf trabajo .
 
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdfProjecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
 
edublogs info.docx asdasfasfsawqrdqwfqwfqwfq
edublogs info.docx asdasfasfsawqrdqwfqwfqwfqedublogs info.docx asdasfasfsawqrdqwfqwfqwfq
edublogs info.docx asdasfasfsawqrdqwfqwfqwfq
 
PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdfPLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
 
Informació Projecte Iniciativa TIC HPE.pdf
Informació Projecte Iniciativa TIC HPE.pdfInformació Projecte Iniciativa TIC HPE.pdf
Informació Projecte Iniciativa TIC HPE.pdf
 
HERRAMIENTAS WEB--------------------.pptx
HERRAMIENTAS WEB--------------------.pptxHERRAMIENTAS WEB--------------------.pptx
HERRAMIENTAS WEB--------------------.pptx
 

V2 d2013 jose f irles - freeswitch

  • 1. Construyendo una centralita virtual con FreeSWITCH José Francisco Irles jfirles@siptize.com @josefu 7 de noviembre de 2013
  • 2. Construyendo una centralita virtual con FreeSWITCH José Francisco Irles @josefu Sobre Siptize ● Operador VoIP ● Satmak: Soft-Switch 4/5 ● Plataforma Hosted PBX ● Consultoría VoIP www.siptize.com
  • 3. Construyendo una centralita virtual con FreeSWITCH José Francisco Irles @josefu ¿Qué es FreeSWITCH? (I) ● Plataforma Open Source de comunicaciones ● Puede usarse como: – – – – – Biblioteca (libfreeswitch) Softphone PBX Soft-switch Etc ● Licencia MPL 1.1 ● B2BUA www.siptize.com
  • 4. Construyendo una centralita virtual con FreeSWITCH José Francisco Irles @josefu ¿Qué es FreeSWITCH? (y II) ● Configuración en XML (hay alternativas) ● Soporte para diferentes protocolos – – – – – – SIP (udp, tcp, websockets) H323 XMPP-Jingle SCCP Skype TDM (FreeTDM) www.siptize.com
  • 5. Construyendo una centralita virtual con FreeSWITCH José Francisco Irles @josefu ¿Por qué elegir FreeSWITCH? (I) ● Máxima de FreeSWITCH: no reinventar la rueda – – – Sofia SIP cURL PostgreSQL y SQLite para el core ● Multiplataforma ● Escalabilidad ● Flexibilidad ● Multi dominio ● Sofia Profiles www.siptize.com
  • 6. Construyendo una centralita virtual con FreeSWITCH José Francisco Irles @josefu ¿Por qué elegir FreeSWITCH? (y II) ● Modelo de datos no prefijado ● Tecnologías estándar para “realtime”: – – – ● Lenguaje de programación: – ● HTTP XML JSON El que tú decidas Facilidad para clusterizar el backend: HTTP www.siptize.com
  • 7. con FreeSWITCH se liga más, y lo sabes...
  • 8. Construyendo una centralita virtual con FreeSWITCH José Francisco Irles @josefu Arquitectura Hosted PBX www.siptize.com
  • 9. Construyendo una centralita virtual con FreeSWITCH José Francisco Irles @josefu Configuración de FreeSWITCH ● Módulo mod_xml_curl – – – Configuración mínima en local (fichero xml) Resto de configuración cargada mediante servicio web RESTful ● POST a url configurada www.siptize.com
  • 10. Construyendo una centralita virtual con FreeSWITCH José Francisco Irles @josefu Ejemplo mod_xml_curl: REGISTER www.siptize.com
  • 11. Construyendo una centralita virtual con FreeSWITCH José Francisco Irles @josefu Request/Response de FreeSWITCH al servidor web Request [hostname] => testmachine [section] => directory [tag_name] => domain [key_name] => name [key_value] => domain1.awesomevoipdomain.faketld [Event-Name] => REQUEST_PARAMS [Core-UUID] => c5c8cbf4-60c3-45a2-b110-933da620cfd2 [FreeSWITCH-Hostname] => 25515_1_36308_177178 [FreeSWITCH-IPv4] => 192.168.1.10 [FreeSWITCH-IPv6] => ::1 [Event-Date-Local] => 2009-10-27 00:47:10 [Event-Date-GMT] => Tue, 27 Oct 2009 07:47:10 GMT [Event-Date-Timestamp] => 1256629630733916 [Event-Calling-File] => sofia_reg.c [Event-Calling-Function] => sofia_reg_parse_auth [Event-Calling-Line-Number] => 1671 [action] => sip_auth [sip_profile] => internal [sip_user_agent] => PolycomSoundPointIP-SPIP_320-UA/3.1.0.0084 [sip_auth_username] => 1004 [sip_auth_realm] => domain1.awesomevoipdomain.faketld [sip_auth_nonce] => 533c5264-12cb-4f8b-bcdb-5ecabe5e540f [sip_auth_uri] => sip:domain1.awesomevoipdomain.faketld:5060 [sip_contact_user] => 1004 [sip_contact_host] => 192.168.1.100 [sip_to_user] => 1004 [sip_to_host] => domain1.awesomevoipdomain.faketld [sip_from_user] => 1004 [sip_from_host] => domain1.awesomevoipdomain.faketld [sip_request_host] => domain1.awesomevoipdomain.faketld [sip_request_port] => 5060 [sip_auth_qop] => auth [sip_auth_cnonce] => hSVnPb32nA/OtkY [sip_auth_nc] => 00000001 [sip_auth_response] => 6e4e611d7593d52e02451b70900071d8 [sip_auth_method] => REGISTER [key] => id [user] => 1004 [domain] => domain1.awesomevoipdomain.faketld [ip] => 192.168.1.100 Response <document type="freeswitch/xml"> <section name="directory"> <domain name="domain1.awesomevoipdomain.faketld"> <params> <param name="dial-string" value="{presence_id=${dialed_user}@$ {dialed_domain}}${sofia_contact(${dialed_user}@${dialed_domain})}"/> </params> <groups> <group name="default"> <users> <user id="1004"> <params> <param name="password" value="some_password"/> </params> </user> </users> </group> </groups> </domain> </section> </document> www.siptize.com
  • 12. Construyendo una centralita virtual con FreeSWITCH José Francisco Irles @josefu Interactuar con FreeSWITCH ● Módulo mod_event_socket – – – – – ● Modo inbound/outbound Enviar comandos y recibir la respuestas Escucha de eventos Conexión “statefull”: Socket TCP “Equivalente” en asterisk: manager + FastAGI Módulo mod_xml_rpc: RESTful – – Sólo para enviar comandos (y recibir su respuesta) Conexión “stateless”: HTTP (request/response) www.siptize.com
  • 13. Construyendo una centralita virtual con FreeSWITCH José Francisco Irles @josefu Eventos en FreeSWITCH ● mod_event_socket (visto antes) ● mod_event_multicast – Permite replicar registros y presencia sin compartir base de datos ● mod_erlang_event ● mod_event_zmq – – – Formato JSON Escalable Bindings para múltiples lenguajes www.siptize.com
  • 14. Construyendo una centralita virtual con FreeSWITCH José Francisco Irles @josefu CDR ● mod_cdr_xml (recomendado) ● mod_cdr_csv ● mod_cdr_mongodb ● mod_cdr_pg_csv ● mod_cdr_sqlite ● mod_json_cdr ● mod_radius_cdr www.siptize.com
  • 15. Construyendo una centralita virtual con FreeSWITCH José Francisco Irles @josefu Ejemplo de CDR en XML <?xml version="1.0"?> <cdr core-uuid="5d80b2bf-7ae1-4fed-803e-7edf94468be0"> <channel_data> <state>CS_REPORTING</state> <direction>inbound</direction> <state_number>11</state_number> <flags>0=1;3=1;19=1;36=1;37=1;39=1;52=1;73=1</flags> <caps>1=1;2=1;3=1;4=1;5=1;6=1</caps> </channel_data> <variables> <direction>inbound</direction> <uuid>897211c5-2f67-4c77-9928-c8c0b9e49972</uuid> <session_id>56</session_id> <sip_from_user>100</sip_from_user> <sip_from_uri>100%40testsip.com</sip_from_uri> <sip_from_host>testsip.com</sip_from_host> <channel_name>sofia/internal/100%40testsip.com</channel_name> <sip_received_port>5060</sip_received_port> <sip_via_protocol>udp</sip_via_protocol> <sip_authorized>true</sip_authorized> <accountcode>100%40testsip.com</accountcode> <user_context>default</user_context> …. <app_log> <application app_name="export" app_data="domain_name=testsip.com" app_stamp="1378365023484959"></application> <application app_name="export" app_data="domain=testsip.com" app_stamp="1378365023485712"></application> <application app_name="export" app_data="pbx_id=4028818b40e7e3830140e7e38512002f" app_stamp="1378365023486343"></application> …. </app_log> <callflow dialplan="XML" unique-id="0ff824e3-80c0-495e-9292-4f09c787e942" profile_index="1"> <extension name="default_extension" number="*60600" current_app="transfer"> <application app_name="export" app_data="domain_name=testsip.com"></application> <application app_name="export" app_data="domain=testsip.com"></application> ….. </callflow> …. www.siptize.com
  • 16. Construyendo una centralita virtual con FreeSWITCH José Francisco Irles @josefu Alta Disponibilidad: cómo dormir más tranquilo www.siptize.com
  • 17. Construyendo una centralita virtual con FreeSWITCH José Francisco Irles @josefu Estrategia alta disponibilidad ● Base de datos en cluster HA ● Replicar en “n” datacenters: – Base de datos (sólo elementos necesarios) ● – ● Datos “read-only” Los CDR's se envían a la db principal Usar los DNS – – Repartir carga (granularidad: centralita) Ante un fallo en datacenter: ● ● Failover automático → SRV Failover manual → Cambio en DNS www.siptize.com
  • 18. Construyendo una centralita virtual con FreeSWITCH José Francisco Irles @josefu sofia recover ● ● ● ● “Magia” en FreeSWITCH Se mueve todo (media incluido) de un servidor a otro El usuario sólo detecta una pérdida momentánea de audio Requerimientos: – Base de datos del core compartida ● ● – <param name="odbc-dsn" value="odbc://dsn:username:password"/> <param name="core-recovery-db-dsn" value="odbc://dsn:username:password"/> Parámetro en configuración de sofia: ● <param name=”track-calls” value=”true”/> www.siptize.com
  • 19. Construyendo una centralita virtual con FreeSWITCH José Francisco Irles @josefu sofia recover: situación normal ● Nodo activo: – – ● “n” llamadas con media a través de él “m” llamadas sin media a través de él Nodo pasivo, dos alternativas: – – FreeSW ITCH apagado FreeSW ITCH en marcha ● net.ipv4.ip_nonlocal_bind=1 www.siptize.com
  • 20. Construyendo una centralita virtual con FreeSWITCH José Francisco Irles @josefu sofia recover: fallo en nodo activo ● Parar nodo activo ● Nodo pasivo adquiere la IP flotante ● ● Forzar update en tabla arp en el router (arping) Ejecutar “sofia recover” en nodo pasivo www.siptize.com
  • 21. Construyendo una centralita virtual con FreeSWITCH José Francisco Irles @josefu sofia recover: nodo pasivo pasa a activo ● ● Se recuperan las llamadas activas Pequeño lapsus (~2 segundos) sin audio entre las extensiones www.siptize.com
  • 22. Construyendo una centralita virtual con FreeSWITCH José Francisco Irles @josefu Visión global de plataforma de centralita virtual www.siptize.com