SlideShare ist ein Scribd-Unternehmen logo
1 von 23
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (18)

Mtcna mikrotik informatix
Mtcna mikrotik informatixMtcna mikrotik informatix
Mtcna mikrotik informatix
 
Virtualización Avanzada con Elastix
Virtualización Avanzada con ElastixVirtualización Avanzada con Elastix
Virtualización Avanzada con Elastix
 
La Nueva Serie QNAP Turbo NAS TS-53 y TS-51
La Nueva Serie QNAP Turbo NAS TS-53 y TS-51La Nueva Serie QNAP Turbo NAS TS-53 y TS-51
La Nueva Serie QNAP Turbo NAS TS-53 y TS-51
 
Exposicion sistemas seguridad_linux_software_libre
Exposicion sistemas seguridad_linux_software_libreExposicion sistemas seguridad_linux_software_libre
Exposicion sistemas seguridad_linux_software_libre
 
OpenVPN: una solución VPN basada en SSL/TLS
OpenVPN: una solución VPN basada en SSL/TLSOpenVPN: una solución VPN basada en SSL/TLS
OpenVPN: una solución VPN basada en SSL/TLS
 
Configuracion del servidor dns en linux
Configuracion del servidor dns en linuxConfiguracion del servidor dns en linux
Configuracion del servidor dns en linux
 
Ipv6
Ipv6 Ipv6
Ipv6
 
Certification Day
Certification DayCertification Day
Certification Day
 
Apache (XAMPP)
Apache (XAMPP)Apache (XAMPP)
Apache (XAMPP)
 
MythTV Mediacenter on an IGEPv2
MythTV Mediacenter on an IGEPv2 MythTV Mediacenter on an IGEPv2
MythTV Mediacenter on an IGEPv2
 
Uso del escaner de puertos nmap
Uso del escaner de puertos nmapUso del escaner de puertos nmap
Uso del escaner de puertos nmap
 
¿Estás preparado para IPv6?
¿Estás preparado para IPv6?¿Estás preparado para IPv6?
¿Estás preparado para IPv6?
 
Alfresco y SOLR, presentación en español
Alfresco y SOLR, presentación en españolAlfresco y SOLR, presentación en español
Alfresco y SOLR, presentación en español
 
Protocolos wan tema4_ciclo_i_2016
Protocolos wan tema4_ciclo_i_2016Protocolos wan tema4_ciclo_i_2016
Protocolos wan tema4_ciclo_i_2016
 
Honeypots2006 2007
Honeypots2006 2007Honeypots2006 2007
Honeypots2006 2007
 
IPv6: Introducción y Ataques
IPv6: Introducción y AtaquesIPv6: Introducción y Ataques
IPv6: Introducción y Ataques
 
Seguridad en i pv6 (2)
Seguridad en  i pv6 (2)Seguridad en  i pv6 (2)
Seguridad en i pv6 (2)
 
OSPF MULTIAREA
OSPF  MULTIAREAOSPF  MULTIAREA
OSPF MULTIAREA
 

Andere mochten auch

Boletín Municipal Nº 0314 – 22 de Abril de 2016
Boletín Municipal Nº 0314 – 22 de Abril de 2016 Boletín Municipal Nº 0314 – 22 de Abril de 2016
Boletín Municipal Nº 0314 – 22 de Abril de 2016 Eduardo Nelson German
 
Funds in Fashion - Beteiligungskapital in der Modebranche
Funds in Fashion - Beteiligungskapital in der ModebrancheFunds in Fashion - Beteiligungskapital in der Modebranche
Funds in Fashion - Beteiligungskapital in der ModebrancheBVK
 
VMware Monitoring-Discover And Monitor Your Virtual Environment
VMware Monitoring-Discover And Monitor Your Virtual EnvironmentVMware Monitoring-Discover And Monitor Your Virtual Environment
VMware Monitoring-Discover And Monitor Your Virtual EnvironmentSite24x7
 
Portfolio. documento semfyc nº 22
Portfolio. documento semfyc nº 22Portfolio. documento semfyc nº 22
Portfolio. documento semfyc nº 22Jose Antonio Prados
 
Catalogue soditex & veloutex velours
Catalogue soditex & veloutex veloursCatalogue soditex & veloutex velours
Catalogue soditex & veloutex veloursMAGETEX
 
Llamada Movistar
Llamada MovistarLlamada Movistar
Llamada Movistardeadius
 
Curso Dirección Medioambiental (Zamudio)
Curso Dirección Medioambiental (Zamudio)Curso Dirección Medioambiental (Zamudio)
Curso Dirección Medioambiental (Zamudio)Formabask
 
Conento. Arquímedes AEDEMO TV
Conento. Arquímedes AEDEMO TVConento. Arquímedes AEDEMO TV
Conento. Arquímedes AEDEMO TVConento
 
Exemplos da vida da fé na vida e época de david
Exemplos da vida da fé na vida e época de  davidExemplos da vida da fé na vida e época de  david
Exemplos da vida da fé na vida e época de davidRosangela Borkoski
 
Esther Álvarez - Innovación es más
Esther Álvarez - Innovación es másEsther Álvarez - Innovación es más
Esther Álvarez - Innovación es másinnovaec
 
The German Internet Portal Indernet
The German Internet Portal IndernetThe German Internet Portal Indernet
The German Internet Portal IndernetYeungnam University
 
Mediciones epidemio completo
Mediciones epidemio completoMediciones epidemio completo
Mediciones epidemio completoHugo Pinto
 
00 elect p. anna paddon may 2013 mla.
00 elect p. anna paddon may 2013 mla.00 elect p. anna paddon may 2013 mla.
00 elect p. anna paddon may 2013 mla.ConstitutionTunnel
 
COMMUNITY MANAGER. ASPECTOS LEGALES QUE DEBE CONOCER.
COMMUNITY MANAGER. ASPECTOS LEGALES QUE DEBE CONOCER.COMMUNITY MANAGER. ASPECTOS LEGALES QUE DEBE CONOCER.
COMMUNITY MANAGER. ASPECTOS LEGALES QUE DEBE CONOCER.Javier Alvarez Hernando
 

Andere mochten auch (20)

Boletín Municipal Nº 0314 – 22 de Abril de 2016
Boletín Municipal Nº 0314 – 22 de Abril de 2016 Boletín Municipal Nº 0314 – 22 de Abril de 2016
Boletín Municipal Nº 0314 – 22 de Abril de 2016
 
Funds in Fashion - Beteiligungskapital in der Modebranche
Funds in Fashion - Beteiligungskapital in der ModebrancheFunds in Fashion - Beteiligungskapital in der Modebranche
Funds in Fashion - Beteiligungskapital in der Modebranche
 
VMware Monitoring-Discover And Monitor Your Virtual Environment
VMware Monitoring-Discover And Monitor Your Virtual EnvironmentVMware Monitoring-Discover And Monitor Your Virtual Environment
VMware Monitoring-Discover And Monitor Your Virtual Environment
 
Portfolio. documento semfyc nº 22
Portfolio. documento semfyc nº 22Portfolio. documento semfyc nº 22
Portfolio. documento semfyc nº 22
 
Catalogue soditex & veloutex velours
Catalogue soditex & veloutex veloursCatalogue soditex & veloutex velours
Catalogue soditex & veloutex velours
 
Llamada Movistar
Llamada MovistarLlamada Movistar
Llamada Movistar
 
Curso Dirección Medioambiental (Zamudio)
Curso Dirección Medioambiental (Zamudio)Curso Dirección Medioambiental (Zamudio)
Curso Dirección Medioambiental (Zamudio)
 
Presentacion nuevo emblue
Presentacion nuevo embluePresentacion nuevo emblue
Presentacion nuevo emblue
 
Conento. Arquímedes AEDEMO TV
Conento. Arquímedes AEDEMO TVConento. Arquímedes AEDEMO TV
Conento. Arquímedes AEDEMO TV
 
Rcp comunidad
Rcp comunidadRcp comunidad
Rcp comunidad
 
Exemplos da vida da fé na vida e época de david
Exemplos da vida da fé na vida e época de  davidExemplos da vida da fé na vida e época de  david
Exemplos da vida da fé na vida e época de david
 
Esther Álvarez - Innovación es más
Esther Álvarez - Innovación es másEsther Álvarez - Innovación es más
Esther Álvarez - Innovación es más
 
Aegis Media case study
Aegis Media case study Aegis Media case study
Aegis Media case study
 
The German Internet Portal Indernet
The German Internet Portal IndernetThe German Internet Portal Indernet
The German Internet Portal Indernet
 
Mediciones epidemio completo
Mediciones epidemio completoMediciones epidemio completo
Mediciones epidemio completo
 
00 elect p. anna paddon may 2013 mla.
00 elect p. anna paddon may 2013 mla.00 elect p. anna paddon may 2013 mla.
00 elect p. anna paddon may 2013 mla.
 
Viradyne Compensation Plan
Viradyne Compensation PlanViradyne Compensation Plan
Viradyne Compensation Plan
 
Parva
ParvaParva
Parva
 
COMMUNITY MANAGER. ASPECTOS LEGALES QUE DEBE CONOCER.
COMMUNITY MANAGER. ASPECTOS LEGALES QUE DEBE CONOCER.COMMUNITY MANAGER. ASPECTOS LEGALES QUE DEBE CONOCER.
COMMUNITY MANAGER. ASPECTOS LEGALES QUE DEBE CONOCER.
 
Magazine congo3
Magazine congo3Magazine congo3
Magazine congo3
 

Ähnlich wie VOIP2DAY 2013: Construyendo una centralita virtual con 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áticassuserbd237f
 
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 configuracioncriscega
 
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 logicalisasesinoevil
 
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 IOSpanishPASSVC
 
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 dashboardsSofia2 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 desplieguesJose Luis Soria
 
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 Sambassuser13b169
 
Detectando DDoS e intrusiones con RouterOS
Detectando DDoS e intrusiones con RouterOSDetectando DDoS e intrusiones con RouterOS
Detectando DDoS e intrusiones con RouterOSPavel 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 - LBDJuan Fabian
 
6sos instalacion ipv6_windows_v4_0
6sos instalacion ipv6_windows_v4_06sos instalacion ipv6_windows_v4_0
6sos instalacion ipv6_windows_v4_0Victor Garcia Vara
 
El servidor perfecto
El servidor perfectoEl servidor perfecto
El servidor perfectobetabeers
 
Mongodb administración
Mongodb administraciónMongodb administración
Mongodb administraciónJuan 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 WebPedro 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 PythonCodeSyntax
 
Protocolo syslog
Protocolo   syslogProtocolo   syslog
Protocolo syslogUTP
 

Ähnlich wie VOIP2DAY 2013: Construyendo una centralita virtual con 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
 
6sos instalacion ipv6_windows_v4_0
6sos instalacion ipv6_windows_v4_06sos instalacion ipv6_windows_v4_0
6sos instalacion ipv6_windows_v4_0
 
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
 

Kürzlich hochgeladen

EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxJorgeParada26
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIhmpuellon
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxFederico Castellari
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxMiguelAtencio10
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxAlan779941
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativanicho110
 

Kürzlich hochgeladen (12)

EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 

VOIP2DAY 2013: Construyendo una centralita virtual con 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