Mot clé - device management

Fil des billets - Fil des commentaires

17 mai 07

Au service de l'état

Chez un opérateur Internet, quand un client s'abonne à la Voix sur IP par exemple, il faut configurer le logiciel qui tourne dans sa box : adresse du serveur VoIP, login et mot de passe du client, etc. C'est ce qu'on appelle l'activation du terminal. Alors soit on envoie ces infos au client par mail et c'est à lui de les rentrer dans la box, soit on essaye de lui faciliter la vie avec un mécanisme d'auto-provisioning.

Ça paraît simple, mais ça ne l'est pas tant que ça : il faut être certain qu'on configure la bonne box, il ne faut pas que n'importe qui puisse faire la même chose, la box peut être éteinte, lors d'un échange de box il faut automatiquement déconfigurer l'ancienne et reconfigurer la nouvelle, etc.

Souvent aujourd'hui, ce genre d'activation est géré par événements : pour schématiser, l'abonnement est saisi dans l'application de commande, qui passe l'info d'un côté à l'application de facturation, de l'autre à l'application de livraison, cette dernière transmet à une application d'aiguillage qui d'abord envoie l'ordre d'activation à la plate-forme VoIP qui génère la configuration, puis passe cette configuration à la brique de gestion des box, qui enfin la dépose là où il faut, quand elle parvient à joindre la box. Ouf !

Ce qu'il faut retenir c'est qu'il y a plein d'interfaces, que le processus complet dure des heures voire des jours, et qu'à chaque fois qu'on passe un ordre on transmet toutes les infos nécessaires (quelle offre, pour quel client, quels paramètres etc.). Résultat ces infos sont dupliquées à chaque niveau, avec tous les risques de désynchronisation qui en découlent : par exemple si le client change son abonnement avant que la configuration n'ait été mise sur sa box, on a au début de la chaîne la nouvelle configuration, alors qu'à la fin de la chaîne l'ancienne configuration attend toujours d'être déposée. Si pour une raison quelconque la nouvelle arrive avant l'ancienne, on a un problème. À l'opposé si on perd un ordre l'activation ne se fera jamais, mais comment s'en rend-on compte avant que le client mécontent nous appelle ?

Et si le client réinitialise sa box et perd la configuration, comment réémettre l'ordre d'activation ? Ce cas montre l'erreur fondamentale d'une gestion reposant uniquement sur le passage d'ordres : on prétend connaître l'état du terminal qui se trouve chez le client, alors qu'il a pu lui arriver n'importe quoi. Un terminal chez le client n'est pas un équipement réseau comme les autres. C'est un peu comme si on avait donné à tous les clients les clefs de nos salles machines. Il faut repenser la gestion de ces fragiles terminaisons que sont les box. Un ordre qui se perd ou une box qui efface sa configuration ne doivent plus être considérés comme des anomalies sur lesquelles on pose un pansement, mais comme des éléments normaux de la vie du réseau.

La solution c'est de passer d'un enchaînement d'ordres à une synchronisation d'états : lorsque la configuration est générée, au lieu de la passer dans un ordre à la brique de gestion des box qui la passera à son tour à la box si tant est qu'elle soit connectée, on ne fait rien ! De toute façon il faut que ça marche sans qu'on ne fasse rien à ce niveau-là, parce que des ordres peuvent se perdre, ou parce que la box peut effacer sa configuration. Donc on attend : on garde la configuration bien au chaud dans une base unique, un référentiel, et on attend que la box viennent nous demander si on a une configuration pour elle. Pour ça il faut qu'elle soit programmée pour venir nous voir réguilèrement. À ce moment on est sûr que la box est joignable, on connaît son état réel (a-t-elle modifié sa conf sans nous prévenir ?), et comme on n'a pas dupliqué la configuration à tous les étages on est sûr que celle qu'on va chercher dans le référentiel est la bonne. C'est juste de la synchronisation. Et si ça rate ce n'est pas grave : on se synchronisera la fois d'après.

Moralité : simplicité

28 jan 07

Tu tires ou tu pousses ?

devices.jpg

Le Device Management est l'art de gérer les terminaux, qui peuvent être des PC, des téléphones, des décodeurs télé, en fait n'importe quel équipement connecté à un réseau. Gérer ça veut dire pouvoir faire à distance tout ce que l'on pourrait faire en étant sur place : mettre à jour les logiciels, corriger un mauvais paramétrage, rentrer un code pour accéder à un nouveau service, etc. Mais gérer c'est aussi gérer le nombre, à la manière d'un épicier qui ferait l'inventaire de son magasin : combien de boîtes de haricots, leur date limite, comment on y accède, etc. Pour une Livebox ce sera plutôt son numéro de série, la date de sa premère connexion, ou son IP.

Les applications sont nombreuses : permettre à un expert d'intervenir à distance et d'économiser le temps de déplacement, automatiser à grande échelle des actions répétitives, tout ça pour qu'au final l'utilisateur du terminal ait l'impression que ça marche « tout seul ».

On l'imagine, les facettes de ce domaine sont aussi nombreuses que passionnantes : éthiques, techniques, organisationnelles, ergonomiques. Aujourd'hui nous parlerons d'une question technique fondamentale : mode pull ou mode push ?

Avec la généralisation des protocoles en mode connecté comme HTTP, le terminal et le serveur échangent des informations au cours d'un dialogue entamé par l'un des deux. Lorsque c'est le terminal qui a appelé le serveur on parle de mode Pull (tirer) ; si c'est le serveur qui a réveillé le terminal c'est du Push (pousser).

Push et Pull sont souvent perçus par les décideurs informatiques comme deux antagonismes présentant chacun des avantages et des inconvénients finalement mal connus. Ce que j'ai observé, c'est que ceux qui font du Push lorgnent sur le Pull, et ceux qui font du Pull bavent sur le Push. Alors lequel choisir ?

Pull

En mode Pull le terminal est une amoureuse impatiente qui va tous les jours demander à la poste s'il y a du courrier pour elle : le terminal connaît l'adresse du serveur et va régulièrement lui demander s'il a quelquechose pour lui. Le cas échéant, le serveur lui renvoie un paramétrage à appliquer, un nouveau logiciel à installer, oui lui demande de lui décrire sa configuration.

classe.jpg

AvantagesInconvénients
  • ne nécessite pas de connaître le terminal au préalable : autoprovisioning
  • fonctionne même s'il y a plusieurs terminaux derrière la même IP (NAT)
  • peut être lié à des événements côté terminal pour moins perturber l'utilisateur : mise en veille, etc.
  • les reprises sur échec (coupure d'un téléchargement par exemple) sont automatiques
  • le lissage de charge se fait tout seul : si l'on dit aux terminaux de venir tous les 5 jours, on en traitera ~20% chaque jour
  • sécurité : le terminal appelant une adresse non modifiable, il est très difficile de prendre la place du serveur, ou d'intercepter les messages envoyés à un autre terminal
  • peu réactif : il faut attendre que le terminal vienne
  • peu scalable : pour obtenir une réactivité correcte il faut des requêtes très fréquentes, ce qui charge le serveur

C'est comme ça que fonctionne le système de mise à jour de tous vos logiciels habituels : Firefox, Windows Update, McAfee, etc. Le principal avantage est de pouvoir décrire les campagnes de déploiement avec des règles génériques (ceux qui sont en version A reçoivent la version B, etc.) et de laisser les choses se faire d'elles-mêmes.

Push

En mode Push le postier connaît l'adresse d'Aglaé et court lui porter les messages dès qu'ils arrivent : c'est même plutôt un coursier qui fera le voyage trois fois dans la journée s'il y a trois messages.

fedex.jpg

AvantagesInconvénients
  • très réactif : l'action à effectuer est transmise immédiatement
  • permet même une interactivité entre un expert et le terminal
  • scalable : s'il y a en moyenne pour chaque terminal une action toutes les 3 semaines, pas la peine d'être dimensionné pour traiter une requête toutes les 2 heures
  • on ne peut agir que sur les terminaux que l'on connaît déjà : provisioning nécessaire, souvent en mode Pull
  • un network mapping (association entre l'identifiant du terminal et son adresse réseau) fiable est nécessaire, avec une synchronisation à chaque changement d'IP par exemple ; il faut cependant être conscient qu'il ne sera jamais fiable à 100%
  • il faut que le terminal soit joignable, et gérer la reprise en cas d'échec
  • nécessite une participation de la passerelle s'il y a plusieurs terminaux derrière la même IP
  • sécurité : il faut une authentification forte du terminal pour éviter de lui envoyer les données confidentielles destinées à un autre, et du serveur pour éviter de prendre des ordres de n'importe qui

C'est comme ça que fonctionnent les systèmes en mode non connecté (SNMP), et surtout la plupart des progiciels de Device Management : IBM Tivoli, Microsoft SMS, etc. Le principal avantage est de permettre des actions en direct. L'inconvénient est que la gestion des campagnes massives nécessite beaucoup de ressources.

And the winner is...

Alors que choisir ? Je ne tournerai pas autour du pot : commencez par le Pull ! En effet le Pull n'est pas une option : c'est la seule solution réaliste pour établir le network mapping fiable nécessaire au Push. De plus lorsqu'en Push un terminal n'est pas joignable, il faut bien qu'il s'annonce lorsqu'il revient, et que l'on soit capable de traiter cette requête Pull. Si vous faites du Device Management, vous avez besoin du Pull.

La nécessité du Push va ensuite dépendre de ce que vous voulez faire.

S'il s'agit de gérer des campagnes massives d'audit, de mise à jour, de reconfiguration etc. où vous pouvez décrire votre campagne avec des règles génériques et vous permettre d'attendre une journée pour connaître le résultat (ne serait-ce que parce que les capacités de votre réseau ne vous permettraient pas, même en Push, de tout faire en moins de temps), alors restez en Pull : je me suis occupé d'une infrastructure où pour gérer les campagnes en Push sur 100.000 terminaux il fallait 30 personnes. J'ai aussi mis en place des campagnes en Pull sur 4 millions de terminaux, avec 3 personnes.

En revanche sur des actions unitaires le Push ouvre de nouvelles voies : activation de service immédiate, interactivité entre un expert et le terminal dans un processus de diagnostic/réparation, etc.

Il n'y a donc pas de dichotomie entre Push et Pull : les deux sont complémentaires, et la meilleure illustration en est le fonctionnement du TR-069. Il s'agit d'un protocole standard défini par le DSL Forum et en cours d'adoption par l'ensemble du monde des télécoms : dans ce protocole, le Push consiste simplement à demander au terminal de faire une requête Pull. Mais nous en reparlerons...

9 dec 06

À propos

Jean-Michel Grimaldi

JM

Je travaille chez Orange pour améliorer la Qualité de Service des offres Multiplay : Livebox, Internet, IPTV, VoIP, ... dans nos différents pays.

Auparavant j'ai piloté la mise en place de l'infrastructure de Device Management du réseau domestique des clients Orange : mise à jour de la Livebox, activation de la VoIP, etc. Ce projet a été primé meilleur projet IT du groupe en 2007. Avant j'ai aussi été responsable de l'infra de télégestion des postes de travail et serveurs de France Télécom. 40 fois moins de volume, 40 fois plus de complexité, un PC étant une « box » beaucoup plus ouverte.

Je ne livrerai pas ici de grand secret ; la discussion qui m'intéresse c'est le contexte : d'une part celui des télécoms, univers en pleine mutation avec la fin des monopoles, la chute du prix des accès, et le lancement de services à valeur ajoutée toujours plus innovants pour trouver des relais de croissance. D'autre part celui du Device Management en particulier avec l'émergence de standards et de problématiques complexes : comment trouver l'équilibre entre le masquage de la complexité pour le plus grand nombre, et la volonté des technophiles d'aller plus loin ? Quelle responsabilité pour les grands groupes dans l'adoption des standards ? Comment trouver une valeur ajoutée sur un service idéalement transparent ? Comment s'appuyer sur la communauté pour améliorer le produit ? etc.

Je précise que les propos tenus sur ce site sont strictement personnels et n'engagent que moi... et vous, si vous les lisez !

Je suis né en 1979 et j'habite Paris. Quand je ne parle pas des technos je suis au ciné, en voyage au bout du monde, dans un bon roman, ou simplement avec les gens que j'apprécie. Parce que les technos ne rapprochent que ceux qui ne restent pas toujours derrière leur écran...

LinkedIn : My Profile

Me contacter : Jean-Michel.Grimaldi (at) centraliens.net