FreeSwitch Stéphane Alnet RMLL 2009 – Nantes.

Slides:



Advertisements
Présentations similaires
Bibliothèque Centrale de l’École Polytechnique Session pratique Recherches documentaires en sciences dures PSC 2011 septembre/octobre 2011 Denis Roura,
Advertisements

GCstar Gestionnaire de collections personnelles Christian Jodar (Tian)
QuickPlace de LOTUS Logiciel générateur de SITE WEB : Installé sur un serveur (grenet), Permet de créer / gérer / utiliser un site privé, De donner des.
Logiciel Assistant Gestion d’Événement Rémi Papillié (Chef d’équipe) Maxime Brodeur Xavier Pajani Gabriel Rolland David St-Jean.
Projet tuteuré 2009 Les clients légers Alexandre Cédric Joël Benjamin.
Système de gestion d'entrées pour un cinéma Scanvion Michel – Etudiant 4.
Travailler à l'ensimag avec son matériel personnel (dans les locaux Ensimag ou depuis l'extérieur) 1.Introduction 2.La clé USB Ensilinux 3.Rappels : Accès.
Nicolas Dewaele Téléphonie.
PILOTER VOTRE INFRASTRUCTURE VIRTUALISEE AVEC PYTHON ( UN RETOUR D’EXPÉRIENCE EN ENVIRONNEMENT VMWARE ET IRONPYTHON) Jean-marc Pouchoulon PYCON FR 2009.
1- Introduction 1ère partie Le langage SQL 2- Connexion 3- Structure & Contenu 4- Requêtes.
Séminaire Novembre 2006 Séminaire Novembre 2006 Bilan et perspectives.
Le DOM Le Document Object Model (DOM) est une interface de programmation pour les documents HTML et XML Il fournit une représentation structurée du document.
Février 2006X. Belanger / Guilde Introduction à. Février 2006X. Belanger / Guilde Qu'est ce que Samba ? ● Implémentation libre du protocole CIFS/SMB (client.
1 Y a-t-il une place pour Opensocial dans l'enseignement supérieur ? David Verdin RENATER JRES - Toulouse – novembre 2011.
Module 13 : Implémentation de la protection contre les sinistres.
Interfaçage entre Maple et du code externe
Outils (MailIntegration et autres)
Framework EHop/Ecenvir
Licence Informatique DEVELOPPEUR ANDROID
Communication client-serveur
Mise en place d’un système de partage de fichiers
Asynchronous Javascript And Xml
Threads et Lightweight Processes
Environnement du développement de BD ORACLE REPORTS 10g
Phishing : Techniques et sensibilisation
6GEN720 Réseaux d’ordinateurs
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
Automatisez votre expérience utilisateur Veeam
Commande ip nat service
Utentomatic - Gestion des comptes Unix sous Active Directory
INSIA SRT 3 PAM !.
Séminaire EOLE Beaune Septembre 2007
Javadoc et débogueur Semaine 03 Version A17.
Guide Share MQ HA & Appliance
Les Tests de performances
Séminaire EOLE Dijon Octobre 2010
Installation et Configuration Internet Information Server (IIS 5)
Clients riches RIA (Rich Internet Application) / RDA
Centralisation de logs
Routage S 7 - Questionnaire N°1
Chapitre 12 Surveillance des ressources et des performances
Les technologies AJAX.
Sécurité - Configuration de -
Module S41 Chapitre 9  Configuration de Microsoft Windows 7 pour fonctionner sur des réseaux Microsoft.
fonctionnalités iiS iis
Outils Statistiques pour la Sémantique Décembre 2013
Windows Apache MySQL PHP
Développement d’une application Android destinée aux commerciaux
Présentation OCS-Inventory au LAPP
Chapitre 7 Configuration de l'environnement du bureau
Août 2009.
SRT2 APACHE.
Plus de 4000 langages....
Introduction à Internet
A. DAAIF ENSET Mohammedia Université Hassan II Casablanca.
Gestion du patrimoine informatique
Les protocoles de la couche application Chapitre 7.
Système d’exploitation UNIX
Gestion de Séminaires, Réunions et Conférences avec Indico
Catherine Cyrot - bibliothèques numériques - Cours 5
PLATE FORME DE GESTION ÉLECTRONIQUE DE DOCUMENTS Présenté par: Amine LARIBI.
Présentation des services IT
Principes de programmation (suite)
Threads et Lightweight Processes
CONFIGURATION D’UN ROUTEUR Introduction et planification du cours  Configuration d’un routeur  Administration d’un routeur  Protocoles RIP et IGRP 
COURS ADMINISTRATION DE BASES DE DONNÉES IMPORT/EXPORT Karim LABIDI ISET Ch
YII Yes It Is !.
ScienceDirect Guide d’utilisation de la base de données : ScienceDirect Pr R. EL OUAHBI.
LES RESEAUX. Besoin de communication LES RESEAUX Pour communiquer via un réseau informatique Support de transmission Carte réseau Éléments de réseau.
Les Commandes de base Linux. 1 L’aide sur les commandes Linux ◦ help : obtenir de l’aide pour une commande interne du shell. Elle permet aussi d'afficher.
Transcription de la présentation:

FreeSwitch Stéphane Alnet RMLL 2009 – Nantes

Pour en savoir plus... Cluecon, Chicago

Histoire de FreeSwitch Anthony Minessale – Développeur Asterisk de longue date Frustration autour d'Asterisk – Création de threads – Listes liées (au lieu de table de hashage) – etc. – Tous les détails: Été 2005: FreeSwitch

FreeSwitch Core + modules – Core ● Gestionnaire d'évènements ● Gestion des codecs, fichiers, memoire, … ● Création d'appels (canaux / « channels ») ● Chargement des modules – Modules ● Plus de 80 modules ● Codecs, répertoires, gestion des appels (« dialplans »), média local (« endpoints »), formats de média, langages de programmation, commandes (API),...

FreeSwich Ré-utilise un grand nombre d'outils existants – Sofia-SIP – APR, PCRE – Teletone, SpanDSP, OpenZap

Évènements Echanges entre modules via des évènements (« events ») – Ça me rappelle Erlang – En pratique on ne les voit pas ● Les différents modules s'occupent de les cacher

« dialplans » = comment un appel est géré – Par défaut, syntaxe XML – XML peut être « stocké » dans: ● Fichiers – Comme le reste de la configuration ● Web serveur (via xml_curl) ← dynamique! – Peut aussi être stocké dans un répertoire LDAP ● Euh... Intégration avec des langages de programmation – Lua, Perl, Javascript, Python, et d'autres Gestion des appels

Applications, Commandes Les « applications » – Sont activées par les « dialplans » ou les langages de programmation – S'appliquent à la session (appel) en cours – XML: Ne pas confondre avec les « API commands » – Pas besoin de session – Pas disponible dans le « dialplan » – Utilisés (p.ex.) pour contrôler un appel « depuis l'extérieur »

Fichiers pour démarrer./bin/fs_cli./log/freeswitch.log./conf/autoload_configs/*./conf/dialplan/*./conf/directory/*./conf/sip_profiles/*./conf/vars.xml

CLI fs_cli peut être utilisé pour exécuter des « API commands », par exemple fs_cli -x 'reloadxml' fs_cli -x 'show calls' fs_cli -x 'sofia status profile internal' Fonctionne aussi en mode interactif

conf/autoload_configs Fichiers de configuration des modules – switch.conf.xml – Configuration du « core » – modules.conf.xml – Quels modules sont chargés au démarrage – acl.conf.xml – Utilisé pour « authentifier » par IP – xml_curl.conf.xml – Définir un serveur xml_curl

conf/dialplans

bridge « bridge » crée un nouvel appel sortant (« B- leg ») – destinationA|destinationB|... en série – destinationA1&destinationA2&... en parallèle – [paramètre]destinationA – paramètres spécifique à cette destination – {paramètre}destinations – paramètres appliqué à toutes les destinations – Nombreux paramètres (>100)

Destinations – Utilise le répertoire (« directory ») sofia/profil/URI – Utilise les paramètres du profil pour placer l'appel sofia/gateway/gateway/destination – Utilise la passerelle (ou fournisseur) indiquée

bridge

confirm.js // Confirmation d'appel en Javascript if(!session.getVariable("leg_confirm")) exit(); if(session.ready()) session.streamFile(prompt_file,onInput); function onInput( session, type, data, arg ) { if(type=="dtmf" && data.digit=="1") { confirmed = true; return false; } return true; }

Multi-domaines Deux pages pour montrer comment gérer plusieurs domaines sur un même serveur.

Multi-domaines./conf/sip_profiles/internal.xml

Multi-domaines./conf/directory/example.com.xml ● (Respectivement pour example.net) Les utilisateurs définis dans example.com/*.xml et example.net/*.xml peuvent avoir les mêmes numéros mais sont vus comme différents: et

Sofia-SIP Sofia-SIP supporte plusieurs instances SIP – Possibilité de créer plusieurs serveurs SIP virtuels complètement indépendants à l'intérieur d'une seule instance FreeSwitch Sofia-SIP supporte UDP, TCP, et TLS

FreeSwitch + CouchDB

Idée un peu folle: – FreeSwitch peut obtenir sa configuration en temps réel via le web (module xml_curl) – CouchDB peut générer du contenu à la volée ● Pourquoi pas du XML? – Solution facile à deployer – Faire plus grand: utiliser les techniques de cache web (Squid par exemple)

CouchDB ?? CouchDB est une base de donnée « plate », sans schéma ou contraintes – Données stockées au format JSON ● Pas de schéma – Clef composite (JSON) – Accès direct ou séquentiel (intervalle de clefs) – Vues dynamiques (MapReduce) écrites en Javascript – Réplication

CouchDB use Net::CouchDb; my $cdb = new Net::CouchDb; $cdb->create_db('dialplan'); my $doc = new Net::CouchDb::Document; $doc->extension = '200'; $doc->context = 'routing'; $doc->pstn_cfa = ' '; $cdb->put($doc);

Vue CouchDb: Générer du XML en Javascript function(doc) { var xml_header = " " + " " + " "; var xml_footer = " "; var key = if(doc.pstn_cfa) { var xml = " "; emit(key,xml_header+xml+xml_footer); return; } }

JSON { key => value => ' ' }

Et pour finir La clef de la vue a le format « » – xml_curl fournit les paramètres ● Hunt-Destination-Number ● Hunt-Context – Un script fait le pont entre FreeSwitch et CouchDb ● Récupère les paramètres envoyés par xml_curl ● Envoie la demande à CouchDb ● Renvoie le résultat (texte XML) directement à xml_curl ● FreeSwitch interprète le XML

Conclusion: FreeSwitch + CouchDb Le concept fonctionne Temps de développement: deux soirées Écrire une interface web de gestion: $doc = $dialplan->get($number); $doc->pstn_cfa = $cgi->param('pstn_cfa'); $dialplan->put($doc); Mais performance à améliorer – Trop de connections TCP

En résumé FreeSwitch: performance et élégance – Développement très actif – Sofia-SIP = SIP comme il faut – Nombreux modules ● XMPP+Jingle ● Conference – Programmable ● XML n'est qu'une des nombreuses options

Merci! Obtenir la présentation: Venez nous voir à l'Atelier!