To content | To menu | To search

XiVO – open-minded telecom systems

Libre software, open hardware: the blog of the XiVO projects

Nov.2014 Rencontre Régionale des TIC, Gaspésie-Îles-de-la-Madeleine

Nov.2014 Rencontre Régionale des TIC, Gaspésie-Îles-de-la-Madeleine (version anglaise prochainement) Interview de Gregory Sanderson, Geek Lord de XiVO

1. Dans quel contexte se déroule cette rencontre "Branché sur l'avenir de notre région ?"

La rencontre fût organisée par le Technocentre des TIC, une organisation favorisant le développement des TIC (Technologies de l'information et et des communications) pour la région de la Gaspésie-Îles-de-la-Madeleine.

C'est une occasion permettant aux diverses entreprises et organisations de la région de se rencontrer, réseauter, d'apprendre et d'échanger sur les nouvelles tendances dans le domaine du numérique. La rencontre a pris place au Centre des congrès de Carlton-Sur-Mer.

La rencontre était divisé en 2 parties : Les conférences du jeudi soir et les ateliers du vendredi. Au total 6 ateliers différents se sont déroulés pendant la journée avec des sujets comme le big data, l'e-reputation, les villes intelligentes, le mobile et le webmarketing.

J'ai eu la chance d'être invité par M. Carol Cotton, organisateur de la rencontre, pour venir donner un atelier sur les Logiciels Libres. C'était ma première visite en Gaspésie et je suis très content d'avoir participé. J'ai été accueilli par des gens chaleureux, contents d'échanger avec des nouveaux gens et désireux de faire évoluer leur belle région sur le plan numérique.

J'ai été surpris par les gens que j'ai rencontré en Gaspésie. Au début je m'attendais à ce que les logiciels libres ne soit pas un sujet très connu dans la région, mais je me suis trompé. Vendredi soir, j'ai rencontré un entrepreneur offrant des solutions de réseautique intégrant plusieurs logiciels libres. J'ai aussi rencontré un des mainteneurs de lxterminal, le terminal utilisé dans LXDE.

2. Cette journée comprenait 6 ateliers et le votre était dédié à la section Logiciel Libre. Dans votre présentation, quelles sont les forces du Logiciel Libre dans la téléphonie?

Premièrement, il ne faut pas oublier que nous allons retrouver les mêmes avantages du logiciel libre sur le plan numérique, c'est-à-dire une meilleur qualité, plus de flexibilité, une plus grande durée de vie et une meilleure évolutivité. Ce qui va faire la force du libre dans le domaine de la téléphonie ce sont les économies, l'interopérabilité et les standards ouverts.

Les économies, car nous pouvons remplacer une solution matérielle avec une solution logicielle. Ça permet de faire évoluer l'infrastructure plus facilement et de remplacer le matériel de téléphonie désuet avec des alternatives moins coûteuses.

L'interopérabilité est une autre force car les logiciels libres de téléphonie vont souvent supporter plusieurs protocoles utilisés par divers fournisseurs, puis ils vont aussi permettre d'interconnecter ces technologies de façon transparente. Par exemple : Avec une solution asterisk on peut facilement faire le pont entre un téléphone IP et une ligne analogique. Ou encore, entre un softphone et un téléphone Cisco.

Les standards ouverts vont aussi beaucoup contribuer à l'interopérabilité. Je pense surtout aux standards comme SIP et RTP qui sont utilisés par la grande majorité des fabricants de téléphones IP. Grâce à ces protocoles, les logiciels libres de téléphonie peuvent supporter une grande panoplie d'appareils sans contraintes techniques ou légales. C'est un avantage pour le fabricant qui peut réutiliser des technologies matures, puis c'est aussi un avantage pour le client qui se retrouve avec un plus grand choix.

3. Quels avantages majeurs propose XiVO, projet sur lequel vous travaillez dans le secteur de la téléphonie Libre?

XiVO est une solution basé sur asterisk, un PBX VoIP (serveur de téléphonie IP), un logiciel de téléphonie assez populaire dans le domaine du libre. Asterisk offre une panoplie de fonctionnalités, ce qui le rend très flexible. C'est un grand avantage, mais en contrepartie ça prend du temps à bien configurer ainsi qu'un minimum de connaissances techniques. XiVO permet de simplifier ce processus, rendant la gestion des téléphones plus simple et efficace pour l'administrateur et l'utilisateur.

Je donne quelques exemples de fonctionnalités qui sont configurables en quelques étapes : Provisionnement automatique de téléphones IP, boîtes de messagerie vocal, files d'appels en attente, appels en mode conférence, transfert d'appels, etc. Cette simplification permet aussi de rajouter des fonctionnalités facilement, plus tard, au fil de l'évolution des besoins.

4. Quelle actualité majeure dans la téléphonie est à retenir pour 2014 et quelles évolutions voyez-vous pour 2015?

Je crois qu'en 2015 il faut commencer à porter plus attention à un nouveau codec : Opus. Opus est une technologie permettant de compresser l'audio de la voix de façon plus efficace que les codecs plus connus comme GSM, uLAW ou aLAW.

J'ai beaucoup espoir en Opus car ça permet une meilleur utilisation de la bande passante, un facteur toujours important dans n'importe quel logiciel de réseautique, mais aussi parce que c'est un standard ouvert. Je crois que c'est en encourageant des alternatives libres comme Opus que nous pouvons assurer un plan numérique qui évolue plus rapidement, puis au final un plus grand partage des connaissances au bénéfice de tous.

5. Sujets Libres: quels sont les défis pour le Libre; quels sont les projets qui te passionnes dans la téléphonie; quels sont les éléments motivants à venir ou que tu voudrais tester...?

J'aimerais beaucoup explorer le WebRTC. C'est un nouveau protocole de communication en temps réel développé pour les navigateurs web. Je crois que grâce à cette technologie nous allons pouvoir connecter le navigateur web avec des nouveaux services. Par exemple : On pourrait envisager de connecter un navigateur avec un système de téléphonie IP, ainsi on pourrait téléphoner directement à partir d'une page web.

Sources:

XIVO-G-Sanderson-11-2014.png

Hackfest 2014 - Cybersecurity talks

HACKFEST 2014, Quebec-city

Interview with Valerie Dagrain,team XiVO (version française plus bas)

Valerie , you were present at the Hackfest which took place on 7-8th november 2014 in Quebec City. Can you give us the context?

Each year, the city of Quebec hosts a Hackfest meeting on cybersecurity. This is the schedule:

  • The conferences
  • Projections or reportage about hacking and recent news on data protection.
  • The workshops of lockpicking, 3D printer.
  • The exhibitors in computer security.
  • The game of "Capture the flag": 16H of game, 150 players. 26 teams.
  • Entertainment: arcade, challenge, lockpicking ...

These kind of meeting in cybersecurity are also organized in other countries, with shared a common culture and with lectures, workshops and exhibitors about threats and recent news. This is the global calendar of Hackfests.

What was your participation in this event?

The project XiVO was present for the Hackfest in 2012 . This year, my presence allowed to renew support for these two days dedicated to cybersecurity.

I'm involved in free software community since 2004 (groups users Linux ) and hackerspace since 2009 (Quebec, France and Germany) where I created workshops on privacy and personal data.

A member of LinuQ Quebec and XiVO team informed me about the Hackfest: I proposed to be volunteer and coordinate via IRC (freenode server #hackfest_ca) to assist in the installation.

The welcome and the atmosphere was excellent. I helped to carry cisco's servers (capture the flag game was inside!) and network cables for other groups set up Internet access in the Hotel Plazza. Exchanging with the organizing team I learned the creation of a hackerspace / fablab on Quebec and a meeting in St Foy every 4th thursday of the month. I could also talk about the project key Facil (Add distributions on USB key) initiated in Montreal and distribute documents on other conferences (EHSM- Berlin) or projects as artiq or hack festival news in Europe for 2015.

Can you give an overview of some conferences?

Hackfest 2014 hosted Theo de Raadt the OpenBSD project leader, the testimony to the career of Emily Brandwin "from comedian to Cia" and Brad Haines with a presentation entitled "They are doing what! with air traffic control ?.

I discovered reportage as sneakers and some BBC broadcast , I keep back a souvenir from the 3D printer and visited the SCRS / CSIS 's stand.

I thank all the volunteer organizers, participants and partners. Here is the presspresse which summarizes everything that happened on this hackfest. The reception was outstanding, as part of the sumptuous and comfortable Hotel Plazza since the great Canadian cold began to happen! Thank you to patoff__, the organizing committee, for reviewing!

Numbers: 40 people organize the hackfest, 600 people participated in 2014, 26 speakers, 40% of the experts in this event working in cybersecurity, 26 teams compete during the capture of flag's game and 700 people attend the event on social networks (source ) .

Sources - Website www.hackfest.ca - Schedule 2014 - Press 2013http://www.lapresse.ca/le-soleil - World Calendar Hackfests - Hackfest 2014 - Press report - Join the community Hackfest . - XiVO Add telephony

HackfestQuebec2014-byVDagrain.JPG


HACKFEST 2014, ville de Québec

Entretien de Valerie Dagrain, équipe XiVO

Valérie, tu étais présente au Hackfest qui s'est déroulé le 7-8 novembre 2014 à Québec. Peux-tu nous présenter le contexte?

Chaque année la ville de Québec accueille le Hackfest, une rencontre sur la cybersecurité. Voici les activités qui étaient au programme:

  • des conférences sur les failles des systemes pour les corriger mais aussi parler de la protection des données personnelles et sur les actualités concernant la vie privée des citoyens:
  • des projections de videos sur des reportages concernant le hacking ou des actualités sur la protection des données.
  • des ateliers de lockpicking, imprimante 3D.
  • des exposants en sécurité informatique.
  • Le jeu de "Capture the flag": un jeu de 16H ou plus de 150 joueurs se sont affrontés par équipe afin de pénétrer dans des systèmes (préparés). 26 groupes concurrents s'affrontent,
  • Des animations: bornes d'arcade, challenge lockpicking...

Ces rencontres en cybersécurité existent dans d'autres pays, avec comme point commun des conférences, des ateliers et des exposants pour échanger sur les failles et l'actualité. Vous trouverez ici le calendrier mondial des hackfests.

Quel est le contexte de votre participation?

Le projet XiVO était présent au Hackfest de 2012. Cette année, ma présence permettait de renouveler le soutien à ces 2 journées dédiées à la cybersécurité.

Je suis investie dans le domaine du Logiciel Libre depuis 2004 (des groupes utilisateurs Linux) et hackerspace depuis 2009 (Quebec, France et Allemagne) où j'ai crée des ateliers sur la vie privée et les données personnelles.

Un membre de LinuQ Québec et de l'entreprise XiVO m'a alors informé du Hackfest: j'ai alors proposé du bénévolat, en passant par l'IRC de l’événement, (serveur freenode #hackfest_ca) pour aider à l'installation.

L'accueil et l'ambiance était excellente. J'ai aidé à porter des serveurs cisco et des câbles réseaux (capture de drapeau) pour que d'autres groupes mettent en place l’accès à Internet dans l’Hôtel Plazza. En échangeant avec l’équipe organisatrice j'ai appris la création d'un hackerspace/fablab sur Québec et d'une rencontre à St Foy, tous les 4eme jeudi de la fin du mois à ce sujet. J'ai pu également parler du projet de clé Facil (distributions Libre sur clé usb) initié à Montréal et diffuser des documents concernant d'autres conférences (EHSM- Berlin) ou projets (artiq) de hack pour 2015.

Quels sont les sujets de conférence que vous avez retenu?

Le hackfest 2014 accueillait Theo de Raadt (leader sur le projet OpenBSD), le témoignage sur la carrière de Emily Brandwin, "from comedian to Cia" et de Brad Haines sur une présentation intitulé "They are doing what! with air traffic control?.

J'ai découvert des reportages-video (sneakers, BBC...), rapporté un souvenir de l'atelier avec l'imprimante 3D et échangé sur le stand sécurité informatique et centre de la sécurité des télécommunications (SCRS/CSIS).

Je remercie tous les organisateurs bénévoles, participants et partenaires pour les temps d’échange. Voici le communiqué de presse qu'ils ont édité et qui résume tout ce qui s'est passé sur ce hackfest. L'accueil était exceptionnel, le cadre de l'Hotel Plaza somptueux et confortable puisque le grand froid canadien commençait à arriver! Merci à patoff__, du comité organisateur, pour la relecture!

Des chiffres: 40 personnes se retrouvent dans l'année pour organiser le hackfest, plus de 600 personnes étaient présentes en 2014, 26 conférenciers, 40% des experts présents sont dans la cybersécurité, 26 équipes s'affrontent durant le war game et 700 personnes suivent cet événement sur les réseaux sociaux (sources).

Sources - Le site de l’événement www.hackfest.ca - Le programme 2014 - Presse le Soleil de 2013 http://www.lapresse.ca/le-soleil - Calendrier mondial des hackfests - Hackfest 2014 - Communiqué de presse - Rejoindre la communauté du Hackfest. - XiVO, téléphonie Libre

AstriCon 2014

ASTRICON 2014, Las Vegas (version française plus bas)

Interview with Sylvain Boily, XiVO's founder

lasvegasRS.jpg

Sylvain, you attended AstriCon this year. Can you give us an overview of the atmosphere, the planning and people involved in the event?

AstriCon is the annual conference for Asterisk users and developers. It's organized by Digium in partnership with various partners and exhibitors. The conference takes place over 3 days and welcomes approximately 700 participants every year. The 2014 edition was held in Las Vegas.

AstriCon is comprised of a workday for developers (Astridevcon), various conferences, and partner exhibitions.

Astridevcon, which takes place a day before the presentations, allows people like external developers, contributors and other interested parties to meet and discuss about the next version of Asterisk. For example: During the day I spoke to suggest that Docker should be used to help in the process of automated testing, also known as Asterisk Test Suite. This eventually led to my publication of a repository on https://github.com/sboily/asterisk-testsuite

Finally, the exhibition hall allows partners to promote their business solutions based around Asterisk and the telephony field.

Which opportunities did you have to present work done on XiVO?

AstriCon brings together developers / users / companies from around the world who come to follow projects developed around Asterisk. Being present at this conference represents an opportunity to present XiVO to other actors in the telephony field on an international level.

There are also numerous business opportunities. Among others, we have the possibility of recruiting new partners to distribute XiVO. In 2011, we met with the company BGM IT that is now an Avencall partner and distributor of the XiVO solution.

Can you share with us what you learned during the main presentations ?

Many topics have caught my attention. First was the excellent keynote from Russell Bryant who talked about Openstack and Asterisk, and opportunities on how the Asterisk community can move forward with Openstack. This keynote obviously pleased me because XiVO has been moving in the same direction for over 2 years already and we actively follow Openstack.

Another interesting topic for me was ARI (Asterisk REST Interface) that allows you to build apps based on RESTful APIs in Asterisk. Paul Belanger, the speaker, showed us that we could use ARI instead of app_queue to manage queues.

In the same train of thought, Matt Jordan also talked about the idea of removing app_voicemail. It is clear that for XiVO, the direction taken by Asterisk makes sense and is sign of an exciting future as we will be able to contribute our own expertise in these areas, but it also allows us to continue with our vision of XiVO as a modular and flexible platform while using Asterisk as a powerful tool for the lower layers.

The last thing I learned was during a conference on a competing project, FreePBX. I realized that this project had taken an important place in the community thanks to its modular design. Our latest work on our presence and contacts service (XiVO-dird) is also adopting a modular approach that will go even further! So it's a great time to contribute to XiVO.

Which presentations did you talk about the most with the XiVO team and what should we retain from this year's Astricon for the future ?

I mainly talked about ARI and OpenStack. ARI will be the future for XiVO when we migrate towards Asterisk 13 and our most active discussions within the development team turn around topics related to OpenStack / Docker.

What we should retain this year: Asterisk continues on its momentum started two years ago to orient itself as a real toolkit for simplifying interactions and development in the telephony field. This topic is important for us and confirms our choice of Asterisk as a platform for the future of XiVO .

ARI is a subject that will come back during our discussions in 2015, but we will also discuss PaaS, the cloud, Openstack, scalability and elasticity in XiVO. Also, I think the Asterisk community has every reason to look more closely at the ecosystem around Docker. As a side note, Matt Jordan (lead Asterisk developer) has aleady started talking about it (1).

Finally, I look forward to attending the next AstriCon while keeping in mind that XiVO should be more present for this major event in the Asterisk community. I thank Paul for having shared a part of the AstriCon (2).

__Some links: __

astridevconRS.jpg

ASTRICON 2014, Las Vegas Interview de Sylvain Boily, Fondateur de XiVO

Sylvain, tu étais présent à l'AstriCon. Peux-tu nous présenter l'ambiance, le déroulement et les personnes qui participent à cet événement?

L'Astricon est la conférence annuelle des utilisateurs et développeurs Asterisk. Elle est organisée par Digium avec différents partenaires, également exposants. L'Astricon se déroule sur 3 journées et compte environ 700 participants à chaque année. L'édition 2014 s'est déroulée à Las Vegas.

L'Astricon regroupe la journée de travail des développeurs (Astridevcon), les conférences thématiques et l'exposition des partenaires.

L'Astridevcon, qui a lieu une journée avant, permet entre autres aux développeurs, contributeurs et ceux qui le souhaitent de discuter de la prochaine version d'Asterisk. Par exemple : je suis intervenu pour proposer que Docker soit utilisé pour aider dans le processus des tests automatiques appelé Asterisk Test Suite. Cela a finalement donné naissance à un dépôt sur https://github.com/sboily/asterisk-testsuite.

Pour finir, le hall d'exposition permet aux partenaires de faire la promotion de leurs solutions commerciales autour d'Asterisk et de la téléphonie.

Quelles opportunités tu as eu pour présenter les développements sur XiVO?

L'Astricon rassemble des développeurs/utilisateurs/entreprises venus du monde entier suivre les projets autour d'Asterisk et être présent à cette conférence représente une opportunité de présenter XiVO aux acteurs de la téléphonie à l'international.

Les opportunités sont nombreuses avec entre autre la possibilité de recruter de nouveaux partenaires pour distribuer XiVO. En 2011, nous avions rencontré la compagnie BGM informatique aujourd'hui partenaire Avencall et distributeur de la solution XiVO.

Peux-tu nous partager les présentations principales?

Plusieurs sujets ont retenu mon attention, le premier a été la très bonne keynote de Russell Bryant sur Openstack et Asterisk ainsi que les opportunités de la communauté Asterisk pour aller de l'avant avec Openstack. Cette keynote m'a évidement fait plaisir car XiVO est depuis déjà plus de 2 ans orienté dans cette direction et nous suivons activement Openstack.

Une autre thématique pour moi intéressante était sur ARI (Asterisk REST Interface) qui permet de construire autour d'Asterisk des applications basées sur les interfaces REST dans Asterisk. Une très bonne présentation de Paul Belanger montrant que nous pouvions utiliser ARI à la place de app_queue pour gérer les files d'attente.

Matt Jordan a également présenté dans la même idée la suppression de app_voicemail. Il est clair que pour XiVO, la voie prise par Asterisk est parfaite et nous réserve un avenir très intéressant puisque nous serons capable d'apporter notre expertise sur ces sujets mais aussi de continuer dans notre idée que XiVO sera une plateforme modulaire et élastique tout en utilisant Asterisk comme un outil performant sur les couches basses.

Le dernier point que j'ai retenu, a été en assistant à une conférence sur un projet concurrent au notre, FreePBX. Je me suis aperçu que ce projet avait pris une place importante dans la communauté grâce à son aspect modulaire. Notre dernier développement le serveur de contacts/présence (xivo-dird) est justement orienté dans ce sens et ira même encore plus loin ! Donc n'hésitez pas à contribuer aussi dans XiVO.

Quelle présentation as tu le plus partagé avec l’équipe XiVO et qu'il faut retenir pour les années à venir?

Principalement ARI et openstack. ARI est l'avenir pour XiVO quand nous allons passer sur Asterisk 13 et openstack/ Docker sont les sujets les plus présents dans nos discussions avec l'équipe de développement.

Ce que je retiens de cet Astricon : Asterisk poursuit sur sa lancée commencée il y a 2 ans orienté comme une véritable boite à outil pour simplifier les développements et interactions dans le monde de la téléphonie. Ce sujet est majeur pour nous et nous conforte dans notre choix qu'Asterisk est une véritable plateforme d'avenir pour XiVO.

ARI est un sujet qui va beaucoup revenir dans nos discussions en 2015, mais aussi le PaaS, le cloud, Openstack, la modularité et l'élasticité dans XiVO. Pour finir je pense que la communauté Asterisk a tout intérêt à regarder de plus près le monde de Docker, d'ailleurs Matt Jordan (lead developer Asterisk) a commencé à en parler(1).

Finalement j'ai hâte de retourner aux prochains Astricon en ayant à l'esprit que XiVO sera plus présent pour cet événement majeur de la communauté Asterisk. Merci à Paul de nous avoir partagé une partie de l'Astricon (2).

Quelques liens :

Images jointes : - Salle durant l'Astridevcon, Las vegas, 10.2014 - La Tour Eiffel, Las vegas, 10.2014

Metrics in XUC

XuC also provides statistics for telephony and contact centre applications. The module in charge of statistics is called XucStats. This module now integrates a powerful library with interesting mathematical functions called Metrics.

Continue reading...

Managing agent using Xuc CCManager

Selection_025.png

You may now user ccmanager to manage your #xivo contact center agents.

In addition to drag and drop in ccmanager main window, agents can be easily added in a queue with a specific penalty, penalty can be changed for any queue, and the agent can be removed from a queue.

Just click on the little pen on the main screen agent box, and the agent configuration windows pops up.

Xuc is available on gitlab doc on read the docs

Intervention de Richard M. Stallman à l'Université de Concordia à Montréal sur les Logiciels Libres et Libertés

English version available towards the end of the article

2 personnes du projet XiVO (téléphonie libre) témoignent :

Partage de Valérie Dagrain

Cette conférence de R. M. Stallman intitulée "Logiciel Libre et vos libertés" s'est déroulée à l'Université de Concordia. R. M. Stallman qui s'est vu remettre un titre honorifique de la part d'un responsable de l'Université, pour féliciter ses actions et ses engagements. Plus de 100 étudiants anglophones des universités sur Montréal telles que Concordia et McGill étaient présents ainsi que des enseignants en informatique et entrepreneurs du Libre.

  • Ayant suivi plusieurs interventions de R. M. Stallman, je découvre que ses interventions débutent désormais par un refus d’apparaître sur les réseaux sociaux fermés tels que Facebook et citait plutôt les licences Creative Commons.
  • Un temps est consacré à présenter le Logiciel Libre et les 4 libertés, Unix et le système GNU/Linux puis la Free Software Foundation.
  • R. M. Stallman soutient la nécessité d'utiliser des logiciels libres comme seule alternative aux logiciels propriétaires qu'il dénonce être des logiciels malveillants (malware). Les utilisateurs doivent contrôler leurs systèmes et aller de plus en plus vers des composants Libres. Le Libre était alors présenté comme la seule solution technique et éthique pour lutter contre les failles de sécurité qu'apportent les logiciels de Micosoft, Apple, Google Play, Amazon... et contrôler son système.

R. M. S avançait dans ses précédentes présentations que les logiciels propriétaires étaient devenus privateurs. Désormais il met en garde de leur rôle de "malware", de "spyware" et de menottes numériques (DRM) qui verrouillent des accès et nous entraînent dans une société orwellienne sous contrôle. Du côté des firmes propriétaires, des accès récurrents s'opèrent sur certains de nos appareils (ordinateur, téléphone...) sans accord de l'utilisateur et des actions peuvent être faites sur nos systèmes. Les risques de censure sont possibles tout comme des mauvais usages du fait de notre géolocalisation (GPS).

Face à cela R. M. S. encourage le partage et met en garde contre le discours de propagande visant à associer une personne qui partage avec les pirates. Suite à la révélation par E. Snowden en 2013, sur les programmes américains de surveillance de masse, R. M. Stallman invite à applaudir le courage de cet ancien employé qui était mandaté par la NSA. Un ban d'honneur a ainsi été fait en son nom ! "Nous devons contrôler nos systèmes pour les améliorer. Il faut enseigner le "reverse engineering" dans les écoles !" En conclusion R. M. Stallman appuie l'usage des logiciels libres, notamment en milieu scolaire. Fabian Rodriguez, président de FACIL (Association pour l'appropriation collective de l'Informatique Libre) et promoteur du Libre auprès d'une commission scolaire à Montréal, a su partager sa motivation et son engagement dans ce sens durant les échanges.

La video sera accessible depuis le site de Concordia et d'autres sites partageant les ressources Libres.

Sources :

Partage de Gregory Eric Sanderson

J'ai rencontré R. M. S. pour la première fois en 2010 lors du "Salon du Logiciel Libre du Québec". 4 ans plus tard, malgré le changement du discours, le message principal reste le même.

Pendant la première partie du discours, je me suis rappelé que les concepts soutenant le Logiciel Libre sont tout d'abord fondés sur des questions morales et éthiques. Les 4 libertés (la liberté d'utiliser, étudier, modifier et redistribuer) permettent d'assurer nos droits humains fondamentaux dans notre utilisation de logiciels.

R. M. S. mettait souvent l'emphase sur la différence entre le contrôle exercé par un utilisateur sur un logiciel vs. le contrôle du logiciel sur un utilisateur. Prenons la liseuse électronique de Amazon, le Kindle, en exemple. Puisqu'un utilisateur n'a pas de contrôle sur le logiciel utilisé sur un Kindle, Amazon a pu supprimer toutes les copies du livre 1984. Ironique, n'est-ce pas ? Un deuxième exemple : Les architectures SaaS ("Software as a Service". Autrement dit, du logiciel comme service. R. M. S s'est amusé en substituant l'acronyme pour "Service as a Software Substitute", ou encore "Le service comme un substitut au logiciel") Du SaaS ne peut être catégorisé comme un logiciel libre car il n'existe pas de moyen de vérifier ce que le service fait avec les données qu'on lui envoie. En d'autres mots, le service est capable d'exercer un contrôle sur l'utilisateur.

La différence entre les logiciels libres et "Open Source" était aussi un autre sujet chaud. R. M. S. n'a pas hésité à critiquer les militants de l'Open Source comme des gens sans considérations éthiques. Des gens qui préfèrent des solutions pragmatiques et faciles. Par exemple, dans le noyau Linux nous retrouvons des blocs de "firmware". Ces blocs ne contiennent pas de code source et sont distribués avec le noyau, ce qui implique qu'ils peuvent intervenir à l'encontre des libertés de l'utilisateur, parfois même sans qu'il le sache.

En conclusion, cette conférence m'a rappelé que même si les programmeurs comme moi ont la chance de créer plein de logiciels grâce au logiciel libre, les implications morales et éthiques restent encore pertinentes aujourd'hui.

Gregory Eric Sanderson's Point of View

I saw R.M.S for the first time in 2010 for the "Salon du Logiciel Libre du Québec". 4 years later, although the words have changed, but the core message has stayed the same.

During the first part, I was reminded that the concepts behind Free Software are foremost about moral and ethical considerations. The four liberties (i.e. the liberty to use, study, modify and redistribute) help in establishing human rights when using software, no matter where.

R.M.S often emphasised the difference between a user's control over a program vs. the control of a program over its user. Let's take Amazon's e-reader, the Kindle, as an example: Since a user does not have control over the software on the Kindle, Amazon was able to delete everyone's copy of 1984, therefore exerting control on what the user was allowed to read. Ironic, isn't it? Another example given was Software as a Service. (or, as R.M.S put it, Service as a Software Substitute) SaaS cannot be considered Free Software because there is no feasible way of ascertaining what the service is doing with the data that we send. Therefore, it can exert control over the user.

Another hot topic was the difference between Free Software and Open Source. R.M.S did not hestitate to criticize Open Source advocates as people who did not care about the ethical implications, who preferred pragmatic and easy solutions to problems. An example of this were the firmware blobs in the Linux Kernel. Since these blobs do not contain any source code and are distributed alongside the kernel, they jeopardize a user's freedoms, often without the user even knowing about it.

Over all, this conference was a reminder that even though programmers like myself get to create all sorts of programs thanks to Free Software, the moral and ethical considerations behind the movement still remain relevant today.

Photos

DSCF4499.JPG DSCF4513.JPG DSCF4515.JPG

Sprint Review 14.20

Here are a few links explaining what we are going to ship in XiVO 14.20:

New features include:

  • Support for the SPA122 gateway (available in testing at the moment)
  • Asterisk 11.13.1

We also fixed many bugs in the switchboard:

  • a crash
  • some ergonomic improvements when handling calls
  • some weird caller id behavior when transferring calls from the switchboard

Work of interest:

  • Function key migration towards our new model keeps going forward
  • A first working development version of xivo-dird has been completed, but is not yet integrated into XiVO.

Sprint Review 14.19

Here are a few links explaining what we are going to ship in XiVO 14.19:

XiVO's new directory server

Some of you may know that a new version of the XiVO client is being worked on at the moment. The new look and feel require some work behind the scenes to merge all kind of contacts a XiVO user might have into a single source of information.

What does all this mean ? A personal contact, an entry from an LDAP server or another XiVO user should all be available to the user as one single list of contacts, even if some operations are not available on all kinds of entries.

We already had a directory xlet that merged XiVO users and remote directory entries into a single list. This xlet is used by the switchboard profile. The directory xlet does most of the heavy lifting of merging the different contact lists on the client side. This solution is not ideal for the future of XiVO as we would like to be able to develop a mobile or web-based version of the client without the burden of rewriting the same logic.

The first step of our work on this new client is to move this directory logic back on the server side. To do so, we are creating a new directory service, named xivo-dird, that will be responsible of handling all queries made to all configured directory sources on a XiVO.

This new service will offer a public REST interface. This means that custom client-side applications will be able to integrate the services provided by xivo-dird easily. We are also making this new service runnable without a complete XiVO ecosystem. It will be possible to install xivo-dird on a dedicated server or in a container. The nature of the work done on xivo-dird will also make it easy to run the service in a distributed manner. With some configuration, an administrator will be able to have many xivo-dird servers running behind a load balancer so that it may be used by many XiVOs simultaneously. For example: Avencall has one xivo per office but could use the same xivo-dird proxy for all offices.

archi-xivo-dird.svg

Architecture

We are also designing xivo-dird for extensibility and we are trying to make plugins as easy as possible to create, making it easier for the community to contribute.

Plugins

Currently planned extension points include:

Backends

Backends are plugins that are used to query directory sources. This is where we find the logic for retrieving data from a specific kind of technology. Backends include, but are not limited to, ldap, csv, xivo-directory (the internal directory of a XiVO), xivo-personal-directory (user's personal contact).

HTTP views

HTTP views are different URLs that are exposed by the xivo-dird server. At the moment we know that we will have a json view that will be used by other XiVO services to retrieve lookup results. Other views will be added to support other needs. Phones are a good example of consumers that require a customized view. Adding support for a new brand of phone to xivo-dird will be a matter of adding the HTTP view plugin that formats the lookup results in a way that the phone understands.

Core

The core of the application is responsible for loading all of the plugins. We will probably use a third party library for this job. We have a proof of concept using stevedore at the moment. Concurrency is also managed by the core.

This kind of architecture will become the reference for other XiVO services. Having modular services that can be executed independently from each other will allow us scale the required parts of XiVO when needed.

You can look at the github repository to view the source code and follow our work. Note that the master branch does not include this work yet. The code in other branches are proof of concepts used to confirm that our architecture could handle the kind of load we were aiming for and that our modular architecture could be achieved but this code is not meant for production and will be replaced once we write the production version.

Sprint review 14.18

Here are a few links explaining what we are going to ship in XiVO 14.18:

Update from XiVO 13.20

It's been a while since we gave any updates, but we've been quite active.

We are currently writing a REST API to configure XiVO, giving access to a simplified set of the Web interface's controls and replacing the current Web services. A few examples of what can be done with this API include listing users, lines, extensions, devices, voicemails, creating users, giving them a SIP line and an extension. The documentation of the API is available online.

The REST API offers one new feature that is not possible via the Web interface: associating multiple users to a single SIP line. The main use case is for multiple users sharing the same physical phone. They can be called using the same or different extensions.

The next step to improve the rest api would be to associate a device to a user, which can currently only be done via the web interface. unfortunately, this requires cleaning and rewriting in python a pretty big bunch of code from the php web interface, mainly because of the handling of programmable function keys, so we are taking the time to do it right.

This development has three consequences:

- First, we are cleaning the storage systems for users, lines, devices, etc., which means changing the database schema and removing useless data caches.

- Second, we are developing a Python interface to configure XiVO, which our REST API uses, and which eventually third-party Python scripts will be able to use, once it is documented.

- Third, we're pushing all configuration events into a software bus (RabbitMQ), so that XiVO components are aware of configuration changes, and eventually third-party programs may be aware of them as well. Again, this will be available once it is documented.

We are also going towards upgrading XiVO to the next version of Debian named Wheezy. The next step is to backport PostgreSQL from Wheezy, so that the database migration, which is not so simple, is not done at the same time as the whole system upgrade.

Finally, we moved all our Git repositories to Github. Some time ago, we moved some of our repositories to Gitorious, which we preferred because it is completely based on free software, but we've had a few problems with it. So we decided to switch to Github. You can now fork us at https://github.com/xivo-pbx.

Understanding the XIOH label on our product

Dear XIOH followers,

As we have passed the CE marking certification, we have finalized the label that we will have on our product with the revelant informations necessary to identify the product once on the market :

XIOH_Label

  • "XIOH - version 5" : the name of the product and the hardware version
  • "S/N : XIOH-5-1236-29" ; the serial number including the hardware version (5), the production batch (1236) and the number in this batch (29)
  • "AC input: 100-240V~, 4-2A, 60-50Hz" : indication on the power requirements used by our ATX 180W power supply
  • "Manufacturer :Avencall" : the name of the manufacturer (that could be different is different production project)
  • "Sources : http://0001-0001.okey.ohanda.org" : the OHANDA trademark is our legal umbrella for this OpenHardware project/product and a direct link to the GIT repository of our hardware and software files is indicated on the label. This will help the customers and users getting information on the hardware, contacting us and sharing information
  • "Made in France" : we are currently producing in France (i.e. locally as we are based here) but we would rather talk about local production to track down the carbone footprint of our product from components sourcing to cabling and packaging
  • Differents logos including the "CE" (1) and RoHS process of production as well as the OHANDA logo.

(1) : http://en.wikipedia.org/wiki/CE_marking

Passing the CE marking certification for EU market

Dear XIOH followers and beta-testers,

We are now delighted to announce that we have successly passed the CE marking certification that implies that we can sell to anyone in the EU community

CE_Marking_ImmunityTests

The CE marking consists of 2 sets of tests :

  • Emission tests according to EN55022 (standard for radiation emission) :
    • EN300386 (V.1.6.1) : Emission tests for Electromagnetic compatibility
    • Measurement of radiated electric field in shielded room (EN55022:2006) for the C Class
    • Measurement of conducted disturbance on the AC main power port - Measurement of conducted disturbance on telecom port / control port 
    • EN61000-3-2 : Limits of harmonic current emission 
    • EN61000-3-3 : Limits of voltage fluctuation and flicker in low voltage supply, for apparatus with current <= 16A
  • Safety tests according to IEC60950-1:2005 and EN60950-1:2006

Continue reading...

Starting beta-test period for XIOH power-users and developers

Dear XIOH followers and developers,

We are now entering our beta-test period with our first batch of XIOH appliances available for shipping for developers and power-users that could be interested in testing and giving feedback on our product. The appliances are currently shipped in a metallic 1U-rackable case for up to 50 users and 10 simultaneous calls. It ships with XiVO 12.24. We're using free MSP430 firmware running the power sequence of voltage levels for the different functional blocks, and a free CPU boot firmware based on Coreboot. Each ROM contains MAC addresses with our OUI prefix, and a serial number. Public design source files are also available.

Here is a glimpse on the look-and-feel of the appliance:

XIOHv5 prototype casing

If anyone is interested, please contact us at xcarcelle_at_avencall_dot_com for availability and potential shipping.

The feedback of our first appliances running in production in 5 different locations are good and we are able to confirm that we can handle up to 1000 calls a day on a single XiVO IOH.

HaPPy 2013 OpenHardware to yall.

A Switchboard for XiVO

We have been working on a new switchboard profile for the XiVO client and this post is an overview of what you might expect in the next few releases.

Continue reading...

Hacking at the Hackfest

Hello once again XiVO followers ! What's this ? My first blog post has barely been published and i've already written a second one ! But this time, i'll be writing about something that will be more interesting for 1337 h@X0r$ and the like: the Hackfest !

Hackfest ? What's a Hackfest ?

The Hackfest is one of the biggest events about computer security in the province of Quebec. This year, more than 400 participants were treated to 2 days full of conferences and hacking games like Lockpicking, Cyber warfare and Capture The Flag.

Hackfest cyberwar

XiVO also participated in the Hackfest by giving a conference and organising the XiVO pwn2own hacking game.

What kind of conference ?

We gave a conference about the security and future of free telecommunications, the slides are available in attachment of this post. The conference was supposed to be given by our colleague Nicolas Bouliane, but unfortunately, he got sick a few days before the event. Me and my SCRUM master gave the talk instead. Here's a picture of us during the conference. As you can see, the room was pretty full !

Hackfest 2012: avencall #hf2012

What about the pwn2own ?

Hackers were given 48 hours to try and hack a standard XiVO server and find the most exploits possible. As the game went on, clues were given out through our twitter feed.

XiVO twitter feed

Once a hacker found an exploit, he could submit it to our scoreboard to win points. At the end of the game, the top 3 teams with the most points won cash prizes. Here's a screenshot of the scoreboard at the end of the game.

XiVO Scoreboard

So what happened ? Did you get hacked ?!

Yes ! As you can see from the scoreboard, 3 teams were able to find quite a few exploits in XiVO. What surprised us most was the number of hacks that were found on the web interface. Since XiVO is first and foremost a telephony system, we thought that the hackers would concentrate on hacking the telephone services (For example, control SIP accounts, create fake telephones through the Provisionning service, DDoS the Asterisk server) After all, the web interface is only used for administrative purposes and isn't a critical piece of the XiVO server. Instead, we got a total of 10 web exploits and only 1 telephone exploit.

What happens now ?

The XiVO dev team is working on fixing all the exploits found during the pwn2own. The fixes will be released in version 12.22 at the end of next week.

All in all, we had great fun participating in the Hackfest. We're already thinking about how we can make the game more exciting next year, like how to encourage people to go explore more of XiVO's telephony services.

Thanks again to the 3 teams who participated in XIVO's pwn2own (RingZer0, Abed&Francis and Bitducks). We look forward to more hacking next year !

A conference with Uncle Bob

Hello to everyone following the XiVO blog ! My name is Gregory Eric Sanderson Turcot Temlett MacDonnell Forbes. I've been working on the XiVO software team for 2 months now and the time has come to publish my first official blog post. Enjoy ;)

At the end of last september, the XiVO team had the amazing chance of attending a talk given by none other than Robert C. Martin himself ! Mr. Martin, also known as "Uncle Bob", is a highly experienced software developer with over 30 years of experience. The subject of his talk was seemingly simple: What should we expect from a professional software developer ? More that you would think. Uncle bob divided his talk into about a dozen different expectations. Here is my personal interpretation for each expectation he gave.

Continue reading...

Astricon 2012

astricon.JPG

For a second year, Avencall was present on the biggest Asterisk conference in the world: Astricon. This year, the conference was held in Georgia, Atlanta.

Like every year, the Monday is the AstriDevCon, a small conference for developers by the developers to discuss the future and how to improve Asterisk. It's a very nice place to get to know the other people that are coding inside Asterisk and also to coordinate with others about what has to be done.

You can find a nice resume of the whole day of discussion here: https://wiki.asterisk.org/wiki/display/AST/AstriDevCon+2012

As you can see, this year we also had a booth (#28). It was a great experience to expose ourself at Astricon because there is a huge flow of people interested and interesting. It was a lot of fun to talk about the XiVO project and the XiVO Open Hardware. All the gizmos we had on our table really attracted may people, especially the raspberry pi that was running XiVO.

conf-xav.jpg

To communicate further about us, we also gave a conference to present Avencall and the XiVO telephony system.

Hello XiVO, Add Your Web Page to XiVO Web Interface

XiVO can be managed using a web interface. This interface is developed in PHP language using a XiVO specific framework.

The idea of this post is to begin to demystify XiVO web interface development.

Setting The Development Environment

First of all, we are going to set up of development environment. The best is to enable nfs mount on your development workstation and to mount the web interface development directory onto your XiVO virtual machine. If your development projects is located in /projects/xivo-skaro, the mount command can be :

 mount -t nfs devipaddress:/projects/xivo-skaro/web-interface/src /usr/share/pf-xivo-web-interface

Now each time you will modify a file within the web-interface directory, you can check your update by refreshing your browser.

XiVO Hello World Page

So let's start by writing a simple web page to display "Hello XiVO world", doesn't remind you something ?

XiVO Actions, Applications and Objects.

webi_src.png XiVO web interface is mainly composed of three types of elements :

  • actions, this is kind of controller, and will route the action to be done (list, create, edit) to the proper application
  • applications, to be considered as the business layer, contains the algorithm to be applied
  • objects, mainly where the persistence takes place.

There are many other components, but let's start first be this simple view.

So if we need to display something, we have to follow these necessary steps :

  • Write a simple PHP page as an action
  • Add this action in the authorized control list
  • Add it to the proper menu
  • Link the menu generated URL to the proper URL
  • Add necessary translations to XiVO translation files

Writing The Page

Let's start with a simple page that we want to be displayed in the menu "services -> IPBX -> Call management", edit a file xivo-skaro/web-interface/src/action/www/service/ipbx/asterisk/call_management/hellowivo.php


<?php
	echo "Hello XiVO world !";
?>

XiVO Authorization Framework

You cannot still browse this new page because this page is not declared within XiVO authorization framework. The list of available pages is located in the file xivo-skaro/web-interface/src/object/objectconf/acl/user.inc. Edit this file and add this new action.

....
$array['tree']['service']['ipbx']['call_management']['pickup'] = true;
$array['tree']['service']['ipbx']['call_management']['schedule'] = true;
$array['tree']['service']['ipbx']['call_management']['cel'] = true;
$array['tree']['service']['ipbx']['call_management']['helloxivo'] = true;
.....

Now you can browse the page https://<your xivo host>/service/ipbx/index.php/call_management/helloxivo.

Create a XiVO user (menu Configuration-> Management -> Users) and check the authorizations for this user (click on the small key icon next to the user) and you will see that a new item appears under call management. webi_acl.png

Translation

You can also note that an error message 'missing translation' is displayed. This is a special marker to be sure that nobody forget to write the translation strings. These translations are located in directory src/i18n were a directory per language can be find.

Edit the file en_US/conf/acl.i18n and add the translation service-ipbx-call_management-helloxivo and to not forget to add the french translation, as in XiVO we always complete the french and english translation.

Now we can display the new page, and can authorize a user to use this new page, still to do is to be able to use this new page using XiVO menu.

XiVO Menu Entries

Edit xivo-skaro/web-interface/src/tpl/www/bloc/menu/left/service/ipbx/asterisk.php, add the menu entry :

........
		if(xivo_user::chk_acl('call_management','cel') === true):
			echo	'<dd id="mn-call_management--cel">',
				$url->href_html($this->bbf('mn_left_callmanagement-cel'),
						'service/ipbx/call_management/cel'),
				'</dd>';
		endif;
		if(xivo_user::chk_acl('call_management','helloxivo') === true):
			echo	'<dd id="mn-call_management--helloxivo">',
				$url->href_html($this->bbf('mn_left_callmanagement-helloxivo'),
						'service/ipbx/call_management/helloxivo'),
				'</dd>';
		endif;
		echo	'</dl>';
	endif;

........

Fix the translation by adding in xivo-skaro/web-interface/src/i18n/en_US/tpl/www/bloc/menu/left/service/ipbx/asterisk.i18n the translation to mn_left_callmanagement-helloxivo

The menu is now correctly displayed, but you still cannot click on it to display your new page. We must now register the menu URL within the XiVO framework.

XiVO URL Routing

Edit xivo-skaro/web-interface/src/object/objectconf/url.inc and add the URL translation

.......
$array['service/ipbx/call_management/schedule'] = 'service/ipbx/index.php/call_management/schedule/';
$array['service/ipbx/call_management/voicemenu'] = 'service/ipbx/index.php/call_management/voicemenu/';
$array['service/ipbx/call_management/cel'] = 'service/ipbx/index.php/call_management/cel/';
$array['service/ipbx/call_management/helloxivo'] = 'service/ipbx/index.php/call_management/helloxivo/';

.......

Now you may click on the new menu entry and display the Hello XiVO world page

webi_hello_menu.png As you may notice this page is not displayed using XiVO look and feel, but that's another story.

Visualizing asterisk deadlocks

It has recently come to our attention that a freeze would sometimes occur in the asterisk application shipped with XiVO.

When the freeze happened, no new calls would be accepted and most of the current calls would freeze. A manual restart of the asterisk process would then be required for the situation to get back to normal.

As you can understand, that's quite an unpleasant situation for a telephony system like XiVO.

So we began investigating on what was causing the freeze, knowing it was probably some deadlocks occuring in the asterisk process. Fortunately for us, asterisk provides some compile time flags that help with debugging such conditions. This is documented on the asterisk wiki.

After recompiling the XiVO version of asterisk with the DEBUG_THREADS and DONT_OPTIMIZE flags, and with the help of some other people, we were able to reproduce the freeze and get some information about the various locks held by the various threads of the frozen asterisk process via the "core show locks" command.

The output of the "core show locks" command looks like this:

=======================================================================
=== Currently Held Locks ==============================================
=======================================================================
===
=== <pending> <lock#> (<file>): <lock type> <line num> <function> <lock name> <lock addr> (times locked)
=== Thread ID: 0xb71ffb70 (tps_processing_function started at [  457] taskprocessor.c ast_taskprocessor_get())
=== ---> Lock #0 (event.c): RDLOCK 1488 handle_event &(&ast_event_subs[event_types[i]])->lock 0x822aa78 (1)
	/usr/sbin/asterisk(ast_bt_get_addresses+0x19) [0x812a024]
	/usr/sbin/asterisk(__ast_rwlock_rdlock+0xae) [0x8125263]
	/usr/sbin/asterisk() [0x80ef7a5]
	/usr/sbin/asterisk() [0x8194305]
	/usr/sbin/asterisk() [0x81a5939]
	/lib/i686/cmov/libpthread.so.0(+0x5955) [0xb7324955]
	/lib/i686/cmov/libc.so.6(clone+0x5e) [0xb75361de]
=== ---> Lock #1 (chan_agent.c): MUTEX 421 device_state_cb &(&agents)->lock 0xb64fab48 (1)
	/usr/sbin/asterisk(ast_bt_get_addresses+0x19) [0x812a024]
	/usr/sbin/asterisk(__ast_pthread_mutex_trylock+0xae) [0x8123886]
	/usr/lib/asterisk/modules/chan_agent.so(+0x2f8b) [0xb64e7f8b]
	/usr/sbin/asterisk() [0x80ef81d]
	/usr/sbin/asterisk() [0x8194305]
	/usr/sbin/asterisk() [0x81a5939]
	/lib/i686/cmov/libpthread.so.0(+0x5955) [0xb7324955]
	/lib/i686/cmov/libc.so.6(clone+0x5e) [0xb75361de]
=== ---> Waiting for Lock #2 (chan_agent.c): MUTEX 430 device_state_cb &p->lock 0x96a1a60 (1)
	/usr/sbin/asterisk(ast_bt_get_addresses+0x19) [0x812a024]
	/usr/sbin/asterisk(__ast_pthread_mutex_lock+0xae) [0x812351e]
	/usr/lib/asterisk/modules/chan_agent.so(+0x2fea) [0xb64e7fea]
	/usr/sbin/asterisk() [0x80ef81d]
	/usr/sbin/asterisk() [0x8194305]
	/usr/sbin/asterisk() [0x81a5939]
	/lib/i686/cmov/libpthread.so.0(+0x5955) [0xb7324955]
	/lib/i686/cmov/libc.so.6(clone+0x5e) [0xb75361de]
=== --- ---> Locked Here: chan_agent.c line 516 (agent_lock_owner)
=== -------------------------------------------------------------------
===
=== Thread ID: 0xb6cffb70 (do_devstate_changes  started at [  726] devicestate.c ast_device_state_engine_init())
=== ---> Lock #0 (astobj2.c): MUTEX 661 internal_ao2_callback c 0x9551498 (1)
	/usr/sbin/asterisk(ast_bt_get_addresses+0x19) [0x812a024]
	/usr/sbin/asterisk(__ast_pthread_mutex_lock+0xae) [0x812351e]
	/usr/sbin/asterisk(__ao2_lock+0x48) [0x8087fe4]
	/usr/sbin/asterisk() [0x8088b19]
	/usr/sbin/asterisk(__ao2_callback+0x56) [0x8088fa4]
	/usr/sbin/asterisk(__ao2_find+0x29) [0x80890c0]
	/usr/sbin/asterisk() [0x80afe6c]
	/usr/sbin/asterisk(ast_channel_get_by_name_prefix+0x28) [0x80aff2c]
	/usr/sbin/asterisk(ast_parse_device_state+0x43) [0x80dfc3e]
	/usr/sbin/asterisk() [0x80dff2d]
	/usr/sbin/asterisk() [0x80e03ac]
	/usr/sbin/asterisk() [0x80e0702]
	/usr/sbin/asterisk() [0x81a5939]
	/lib/i686/cmov/libpthread.so.0(+0x5955) [0xb7324955]
	/lib/i686/cmov/libc.so.6(clone+0x5e) [0xb75361de]
=== ---> Waiting for Lock #1 (channel.c): MUTEX 1703 ast_channel_cmp_cb chan 0xae044858 (1)
	/usr/sbin/asterisk(ast_bt_get_addresses+0x19) [0x812a024]
	/usr/sbin/asterisk(__ast_pthread_mutex_lock+0xae) [0x812351e]
	/usr/sbin/asterisk(__ao2_lock+0x48) [0x8087fe4]
	/usr/sbin/asterisk() [0x80afa11]
	/usr/sbin/asterisk() [0x8088bdf]
	/usr/sbin/asterisk(__ao2_callback+0x56) [0x8088fa4]
	/usr/sbin/asterisk(__ao2_find+0x29) [0x80890c0]
	/usr/sbin/asterisk() [0x80afe6c]
	/usr/sbin/asterisk(ast_channel_get_by_name_prefix+0x28) [0x80aff2c]
	/usr/sbin/asterisk(ast_parse_device_state+0x43) [0x80dfc3e]
	/usr/sbin/asterisk() [0x80dff2d]
	/usr/sbin/asterisk() [0x80e03ac]
	/usr/sbin/asterisk() [0x80e0702]
	/usr/sbin/asterisk() [0x81a5939]
	/lib/i686/cmov/libpthread.so.0(+0x5955) [0xb7324955]
	/lib/i686/cmov/libc.so.6(clone+0x5e) [0xb75361de]
=== --- ---> Locked Here: channel.c line 3767 (__ast_read)
=== --- ---> Locked Here: chan_agent.c line 515 (agent_lock_owner)
=== -------------------------------------------------------------------
...

and it continues this way for a total of 363 lines.

The big advantage of this representation is that you have a lot of info to help with precise diagnostics and debugging. But there is a downside to this: it is quite hard to quickly get the "big picture" of which thread is waiting for which other thread, etc.

Since it seemed like there were no tools to help us with getting the big picture, we wrote a really simple python script that takes the output of the "core show locks" command and outputs a directed graph in DOT language of the relations between the threads. The generated graph is then fed to graphviz to generate an image like this:

Asterisk Deadlock

Each node represents a thread, labeled with its thread ID, and edges represent a "is waiting for" relation.

From the above image, we clearly see that there's a deadlock between thread 0xaeb2db70 and thread 0xb6cffb70 since both are waiting for each other. We also see a bunch of other threads waiting directly or indirectly on the deadlocked threads, showing the generalized freeze of the asterisk process.

The script, which is named graph_ast_locks.py, can be found in the xivo-tools repository. Given you have the output of a "core show locks" invocation, and that you have graphviz installed, you can then run the following command to generate a graph in svg format:

graph_ast_locks.py core-show-locks.txt | circo -Tsvg -o graph-locks.svg

- page 1 of 8