6
29.10.2013
FlashInformatique.epfl.ch
p/a EPFL - Domaine IT - Station 8 - CH 1015 Lausanne - tél. +41 21 69 322 11
Analyse
Lire en page 16
Les entrailles de my
Actualités DIT-info
2
Predrag.Viceic@epfl.ch, EPFL - Domaine IT, concepteur de my.epfl
Analyse Les entrailles de my Predrag Vicei´c
1
Avancée technologiques pour le VDI Eric Krejci & Steve von Siebenthal
3
Comment faire ? Contrôle parental 2.0. Laurent Kling
16
Algorithme CORDIC Benjamin Barras
20
Logiciel libre Vingt ans pour FreeBSD Pascal Fabbri
7
The article unveils the brewing secrets of the new release of my.epfl service. Cheers! Voici enfin le voile levé sur l’architecture du service my.epfl. Âmes sensibles s’abstenir ! Sept ans déjà que le projet my.epfl fournit aux utilisateurs un outil maison de partage de fichiers et d’agendas. La nouvelle version, le fruit de dix-huit mois de développement, a été mise en production au début de l’été. La température retombée, il est venu le temps de dévoiler quelques secrets de brassage de cette nouvelle mouture. Les trois fonctions principales de my.epfl sont le partage de documents, le partage d’agenda et la gestion des groupes. Ces trois fonctions sont accessibles principalement depuis l’interface Web, qu’on trouve à l’adresse my.epfl.ch.
Le portail Web
Prochaines parutions No Délai de rédaction Parution 7
14.11.13
tout public public averti expert
03.12.13
Le portail Web sert de conteneur aux trois applications qui sont Documents, Agendas et Groupes. Il fournit l’entête du site, s’occupe de la gestion des onglets, de l’authentification et détermine, selon les critères basés sur les groupes, la disponibilité des onglets pour les personnes authentifiées.
Le portail, basé sur uPortal v3.2.4, est un produit open source, fourni sous licence Apache. Il implémente les normes Portlet v1 (JSR-168) et Portlet v2 (JSR-286). Ces normes permettent l’intégration d’applications Web (servlets) dans un environnement de portail. Ainsi, une application Web respectant la norme peut être intégrée sans modification dans n’importe lequel des environnements conteneur JSR-168/286. Le placement sur la page, l’état de l’application Web, ainsi que les identifiants des objets de l’arbre DOM générés par l’application sont gérés par le portail. L’implémentation du standard est fournie par Pluto 1.0 / 2.0, le conteneur de portlet du projet Apache qui est également l’implémentation de référence de la norme en question. L’avantage de uPortal, en plus de sa généralisation en tant que portail universitaire ayant une grande communauté d’utilisateurs et de développeurs, est son extrême souplesse lors de l’intégration dans les environnements IT existants. Ainsi, lors d’implémentation de la charte graphique de l’École, il n’a pas été nécessaire d’écrire une ligne de code. Tout s’est fait en manipulant les CSS et les fichiers XSL décrivant la structure visuelle du site. Lors de l’intégration de l’authentification Téquila, le SSO (single sign-on) de l’École, il a suffi de déployer le filtre Téquila légèrement modifié pour l’occasion. Toute la ../.. Suite page 11
Actualités
DIT-info
Quelques nouveaux au Domaine IT
Emmanuel et Laurent à la WinTeam
Fabrice à la TI
Emmanuel Jaep est entré en fonction le 1er septembre. Il occupe un poste d'ingénieur système dans la WinTeam (DIT-SB). Ses principales responsabilités consistent en la reprise de l'ingénierie myPrint (impression et copie centralisées avec comptabilité), assumée jusque-là par Thomas Becker, la réalisation d'un projet de réfection de la synchronisation Active Directory, la mise en place de la supervision des services basés sur Windows et la suppléance de l'administration Exchange (messagerie EPFL). Au bénéfice de diplômes dans l'hôtellerie (BSc in international hospitality management) et dans la gestion de projet et d'équipe, il a opté pour une orientation résolument technique en acquérant des compétences sur Novell Netware, Novel Identity Manager, la gestion SAN/NAS, VMWare, le développement, la cryptographie, SharePoint et SAS.
Le groupe DIT-TI a eu le plaisir d’accueillir Fabrice Bavaud au début du mois d’août. Fabrice travaillera aux côtés de Paul-André Rumley pendant quelques mois pour être à même de le remplacer complètement dès avril 2014. En effet Paul-André prendra sa retraite à fin mars 2014. Bienvenue à Fabrice ! Yves.Despond@epfl.ch, Domaine IT
Ewan et Michel à l'Exploitation Ewan Roche arrivé le 1er septembre. De formation universitaire, Ewan a travaillé quelques années à l’université d’Édimbourg puis au CERN. Ewan a rejoint l’équipe HPC pour participer à l’administration des machines du service de calcul et prendre la responsabilité de l’ordonnanceur PBSPro dès le départ à la retraite, début 2014, de notre collègue Jean-Claude Leballeur. Nous lui souhaitons la bienvenue et plein succès dans ses nouvelles fonctions.
Michel Dermont arrivé le 1er octobre. Ingénieur système et chef de projet dans le privé pendant une vingtaine d’années, Michel vient de rejoindre le DIT pour participer au développement du service de base de données Microsoft-SQL. Son expérience et ses nombreuses certifications lui permettrons sans aucun doute de réussir ce nouveau projet. Nous lui souhaitons la bienvenue et plein succès dans ses nouvelles fonctions. Fabien.Figueras@epfl.ch, Domaine IT
Impressum Revue consacrée aux technologies de l’information, éditée par le Domaine IT de l’EPFL (DIT). Les articles n’engagent que leurs auteurs, sauf ceux qui concernent de façon évidente des prestations officielles (sous la responsabilité du DIT ou d’autres entités). Toute reproduction, même partielle, n’est autorisée qu’avec l’accord de la rédaction et des auteurs.
2 flash informatique
Laurent Durrer est entré en fonction le 1er septembre. Il occupe un poste d'ingénieur système dans la WinTeam (DIT-SB). Il reprend le rôle de responsable de l'annuaire Active Directory et assumera aussi l'exploitation et l'évolution d'Exchange (messagerie EPFL), de SharePoint ainsi que le support de second/troisième niveau. Laurent est de formation technique (mécanique de précision et microtechnique) et a complété son bagage en suivant plusieurs cursus Microsoft et VMWare.
Rédacteur en chef a.i.: Appoline Raposo de Barbosa, fi@epfl.ch Mise en page & graphisme: Appoline Raposo de Barbosa Comité de rédaction: Jean-Daniel Bonjour, Sébastien Ferrara, Patrice Fumasoli, Florence Hagen, Laurent Kling, Michel Naguib, Julia Paolini, François Roulet, Christophe Salzmann & Predrag Vicei´c
Thomas.Becker@epfl.ch, Domaine IT
Impression: Atelier de Reprographie EPFL Tirage: 4000 exemplaires Adresse Web: flashinformatique.epfl.ch Adresse: Domaine IT EPFL Station 8, CH-1015 Lausanne Téléphone: +41 21 69 32246 & 32247 Abonnement au fi par e-mail à: fi-subscribe@listes.epfl.ch
Analyse
Avancées technologiques pour le VDI Eric.Krejci@epfl.ch & Steve.vonSiebenthal@epfl.ch, EPFL - Domaine IT, spécialistes de la virtualisation
Virtualization of destkops is at the heart of modern information systems and occupies a more and more important space. Innovations are constantly being made to erase growing differences with a traditional computer. We present here the ones we tested. La virtualisation des postes de travail est au cœur des systèmes d’informations modernes et occupe une place de plus en plus importante. Des innovations sont constamment réalisées afin de gommer toujours plus les différences avec un poste traditionnel. Nous présentons ici celles que nous avons testées.
Virtualisation au DIT La virtualisation au DIT est présente sous deux formes: z la virtualisation centralisée des serveurs, ce service existant depuis 2006 (myvm.epfl.ch); z la virtualisation des postes de travail. La première infrastructure a été installée en 2009, mais le service dédié est officiellement ouvert en 2013 (myvdi.epfl.ch). La virtualisation du poste de travail a d’abord été introduite pour répondre à des besoins liés à des salles de cours. À l’époque nous avons choisi d’utiliser la solution de VMware, VMware View (www. vmware.com/products/horizon-view), car VMware était déjà présent comme hyperviseur au service de virtualisation centralisée. (www.vmware.com/products/vsphere). Comme évoqué, la première utilisation de la solution de virtualisation des postes de travail était dans le contexte de salle de cours, puisque ce sont des machines ayant une période de vie très courte (la durée du cours). Au fil du temps, un nouveau besoin est venu se rajouter aux postes de travail virtuels: celui des postes permanents de collaborateurs. En 2010 un pilote a été lancé en ce sens. La solution ayant montré de réels attraits pour les postes de collaborateurs, c’est tout naturellement que les premiers postes ont été mis en place début 2012. Comme cette fois il s’agissait de remplacer les postes de travail de collaborateur, une infrastructure avec un haut niveau de disponibilité a été mise en place. Le nombre de postes permanents basculés dans le tout virtuel augmente chaque année. Le monde de la virtualisation des postes de travail est très dynamique. Comme il s’agit d’un marché très lucratif et ayant un fort potentiel de croissance, c’est tout naturellement que les éditeurs de solutions redoublent d’efforts pour faire évoluer leur solution sur le plan technologique, mais pas seulement. Pour rendre
une solution de virtualisation attractive, énormément d’aspects rentrent en ligne de compte. Administration facilitée, mutualisation des ressources, coûts, expérience utilisateurs, etc. C’est sur ce dernier point Expérience utilisateurs que nous allons baser cet article. Ou plus exactement les percées technologiques basées sur l’expérience utilisateur (ce que perçoit l’utilisateur du poste de travail: ressenti, utilisabilité); lorsqu’on remplace un poste physique par un poste virtuel, on souhaite que la transition soit la plus transparente possible pour l’utilisateur.
vSGA (accélération matérielle 3D partagée) Un point faible des solutions de virtualisation reconnu jusqu’alors était la difficulté de faire de la 3D dans le poste de travail virtualisé. La 3D peut être extrêmement gourmande en ressource, d’où le besoin d’avoir une carte graphique (GPU) dans un poste de travail conventionnel. De nos jours avoir une carte graphique coule de source lorsque l’on parle de PC. Et du coup l’utilisation de logiciel utilisant ses capacités aussi. Sans aller dans l’utilisation de logiciel 3D professionnel pour la réalisation de structure en 3D comme Autocad, on utilise plus banalement la 3D avec Google Earth, la fonction Aero de Windows 7, etc. c’est tout naturellement qu’un utilisateur voudrait continuer à utiliser ces fonctionnalités sur son poste de travail. Qu’il soit virtualisé ou non ! Et c’est là que la virtualisation pose problème. Nous n’allons parler que de la 3D avec la solution de VMware, car les autres éditeurs auront essayé de répondre à ce problème à leur manière, mais nous ne les avons pas testés. Nous n’aborderons que ce que nous avons expérimenté avec la solution de VMware. VMware a, dans un premier temps, donné la possibilité de faire de la 3D logicielle, c’est-à-dire que tout le calcul et la mémoire nécessaire au rendu 3D étaient faits par l’hyperviseur. Celle-ci s’est révélée peu efficace, car pas très fluide et très gourmande en ressources du côté de l’hyperviseur. Dans un deuxième temps, il était possible de mettre une carte graphique dans un hyperviseur et de la connecter directement à un poste de travail virtuel, le vDGA (Virtual Dedicated Graphics Acceleration). Là il y avait de la 3D dans le poste virtualisé, mais la connexion directe à la carte amenait de nouveaux problèmes, notamment une carte graphique dédiée par poste virtualisé, ce qui va à l’encontre du principe de mutualisation des ressources, essentielle à une bonne solution de virtualisation. Également l’impossibilité d’utiliser le vMotion: déplacement dynamique du poste virtualisé entre les hyperviseurs sans éteindre le poste au préalable (www.vmware. com/products/vsphere/features/vmotion.html). De nouveau, une réponse partielle.
29 OCTOBRE 2013 - N° 6
3
Avancées technologiques pour le VDI C’est courant 2012 que VMware mettait à disposition ce qui est aujourd’hui la réponse la plus complète à ce problème: le vSGA (virtual Shared Graphic Acceleration). En effet, le vSGA permet de partager virtuellement les ressources de la carte graphique entre plusieurs postes virtuels. Ce faisant, toutes les fonctionnalités inhérentes à la virtualisation sont conservées au niveau du poste de travail virtuel tout en ayant le rendu 3D fait par la carte graphique. Il est donc possible d’avoir de l’affichage 3D pendant un déplacement dynamique du poste entre deux hyperviseurs. (vMotion).
Capture de la vidéo comparative de la visite du Grand Canyon avec Google Earth
Nous avons également enregistré et rejoué une partie du jeu Trackmania à titre comparatif.
vMotion: déplacement d’une VM d’un hyperviseur à un autre en conservant la 3D matérielle
Tests Nous avons pu tester cette solution utilisant une carte graphique Nvidia installée dans nos hyperviseurs, www. nvidia.com/object/vmware-horizon.html.
Capture de la vidéo comparative de la partie enregistrée du jeu Trackmania
Nous l’avons lancé en simultané sur huit postes de travail virtuels utilisant la même carte. Voici l’utilisation du GPU de la carte graphique lors de ce test.
carte graphique Nvidia utilisable pour la vSGA
Nous avons fait des tests comparatifs visuels de différentes catégories. Par exemple, nous avons enregistré et comparé une visite du Grand Canyon dans Google Earth. La même visite a été effectuée sur un poste de travail physique ayant une carte graphique GeForce GTX 680, sur un poste virtuel avec le vSGA et sur un poste virtuel avec le rendu 3D logiciel.
Utilisation du GPU en % lors du test du jeu Trackmania avec 8 VM en simultanés
4 flash informatique
Avancées technologiques pour le VDI Avec la technologie vSGA, nous avons observé que le rendu 3D se montrait satisfaisant pour une utilisation non intensive. Ce qui est le cas de la majorité des postes de travail que l’on peut trouver dans un environnement professionnel. Retrouvez toutes les vidéos des tests vSGA sur www.youtube.com/user/DITVMEPFL. VMware a publié un blog très complet sur ce sujet blogs.vmware. com/performance/tag/vsga.
Test comparatif
PC-over-IP De quoi s’agit-il ? Le protocole PC-over-IP, abrégé PCoIP (www.teradici.com/pcoiptechnology.php), est un protocole d’affichage déporté développé par les sociétés Teradici et VMware. Il constitue une alternative au protocole RDP employé par Microsoft. Il a comme avantage d’améliorer significativement la qualité d’image et son et, ainsi, se retrouve donc plus adapté pour fournir une meilleure expérience en matière de postes de travail virtualisés. L’essentiel des calculs pour le rendu d’affichage s’effectue dans un processus sur le poste virtuel et, par conséquent, sur le processeur physique de l’hyperviseur. Cette tâche est gourmande en ressources et a nécessité le dimensionnement des postes à deux vCPU (processeurs virtuels) dans les infrastructures actuelles pour pouvoir l’absorber. La société Teradici a récemment développé une carte d’extension matérielle PCIe permettant de réduire cette charge sur les machines virtuelles, on parle communément de PCoIP offload. Les tests et résultats menés ci-après ont été effectués avec une carte Teradici APEX 2800 LP.
vue de l’utilisation CPU du processus PCoIP non soulagé (%/t)
vue de l’utilisation CPU du processus PCoIP soulagé (%/t)
Ici, nous observons une véritable réduction de charge d’en moyenne 60% à 15%. Ceci diminue également la consommation globale du processeur de la VM; elle passe ainsi de 60% à 40% en moyenne. Nous constatons donc que la carte d’extension produit un réel gain de performance.
Test de charge Nous avons effectué ensuite plusieurs tests de charge avec différentes quantités de machines virtuelles. carte Teradici APEX 2800 LP
Tests et résultats Buts et environnement Les buts des tests étaient de: 1. comparer l’effet entre une machine soulagée ou non et d’apprécier le gain potentiel, 2. évaluer la capacité de soulagement en circonstances de charge. Le PCoIP sollicite principalement des ressources lorsque l’affichage change. Le procédé des tests consistait à visionner une vidéo de quelques minutes au format HD (720p) et de mesurer la consommation processeur résultante. charge de 12 VM sur l’hyperviseur, vue de l’utilisation CPU du processus PCoIP d’une VM non soulagée (%/t)
29 OCTOBRE 2013 - N° 6
5
Avancées technologiques pour le VDI
charge de 12 VM sur l’hyperviseur, vue de l’utilisation CPU du processus PCoIP d’une VM soulagée (%/t)
vue de l’utilisation CPU des processus PCoIP et VLC d’une VM avec GPU et soulagée (%/t)
Ce test de 12 VM concurrentes montre que la carte absorbe bien la charge et apporte un vrai soulagement. Alors que les VM non soulagées sont à la limite de la congestion, celles soulagées restent tout à fait utilisables.
Comme présenté précédemment, le protocole PCoIP consomme moins de ressources, mais on constate également que le lecteur multimédia VLC bénéficie d’un allégement grâce à une prise en charge par la carte graphique. <img7901|left> Les cartes GPU dans les serveurs peuvent donc fournir une accélération 3D, mais apportent également un soutien à l’affichage de contenu vidéo.
Combinaison Nous avons évoqué plus haut les possibilités offertes par l’accélération 3D matérielle dans les serveurs. En combinant les deux technologies, nous obtenons des résultats très encourageants.
vue de l’utilisation CPU des processus PCoIP et VLC d’une VM sans GPU et non soulagée (%/t).
6 flash informatique
Conclusion L’accélération matérielle par les GPU fournit la possibilité d’avoir un rendu 3D dans les solutions de postes de travail virtualisés sans pour autant être équivalente à une carte graphique dédiée. Cependant, il peut aisément répondre à des besoins non intensifs. Le vSGA vient donc en complément des fonctionnalités existantes de virtualisation sans avoir à en sacrifier d’autres et ne consomme pas de ressources supplémentaires au niveau de l’hyperviseur pour fonctionner. Le PCoIP offload apporte un vrai gain de performances en soulageant l’affichage déporté et lisse davantage la transition avec un poste traditionnel. Comme observé lors de nos tests et en fonction de l’utilisation de l’environnement, ce type de carte peut amener une augmentation du taux de consolidation (plus de VM par hyperviseur) et, par conséquent, diminuer le coût par poste virtualisé dans l’infrastructure de postes de travail. Finalement, le domaine du VDI est très attrayant et ces avancées technologiques le montrent bien. Il est certain que celles-ci vont continuer à évoluer rapidement; en témoigne la nouvelle version de l’hyperviseur vSphere 5.5 apportant déjà une amélioration du support graphique (vSGA). n
Logiciel libre
Vingt ans pour FreeBSD Pascal.Fabbri@epfl.ch, Domaine-IT, Responsable Unix au Domaine IT
An overview of the progress made by FreeBSD over the last twenty years. Aperçu du chemin parcouru par FreeBSD depuis vingt ans.
Introduction Alors que NetBSD [1] fêtait ses 20 ans au mois d’avril et que Linux soufflait ses 20 bougies il y a deux ans, FreeBSD [2] quant à lui célébrera sa 20ème année d’existence en novembre prochain concomitant de la libération prévue, le même mois, de FreeBSD 10. Sa première version officielle fut présentée en décembre 1993. Cet article se penche sur le parcours de FreeBSD et met en évidence les caractéristiques qui en font un excellent système d'exploitation. Il apporte aussi une compréhension de la structure de son organisation ainsi qu’une sensibilisation à un modèle de développement particulier distribuant ses sources librement au public. Le monde du libre, bien qu’il soit universellement identifié à travers le noyau Linux et le panorama de distributions et logiciels qui l’enrobe, a, parmi les membres de sa lignée les moins connus des systèmes d’exploitation de la famille BSD &, tous héritiers directs de la variante Unix qui vit le jour à l’Université de Berkeley en 1977, dont le plus célèbre est FreeBSD.
Présentation On ne peut pas parler des débuts de FreeBSD sans évoquer également NetBSD, tant leurs origines sont étroitement liées. Ces deux systèmes d’exploitation ont démarré en 1993, mais leur histoire est encore plus ancienne que celle de Linux. NetBSD est un système d’exploitation dérivé d’Unix, libre, très portable et disponible sur un grand nombre de plates-formes. Le développement d’Unix débuta au sein des laboratoires Bell (Bell Labs AT&T) dans les années 1960. Le terme BSD fait référence à une famille de systèmes d’exploitation, dérivés des travaux de l’Université de Berkeley et qui partagent des idées communes comme, la façon de compiler le noyau et celle de distribuer le système comprenant le noyau, le système de base et ses outils. À l’opposé de Linux, qui n’est pas un authentique dérivé Unix, BSD prit racine dans le système Unix fourni par AT&T dont découlent, à partir de 1990, respectivement 4.3BSD-Lite et 386BSD & qui avec la FSF [3] permirent de constituer FreeBSD 1.0 en décembre 1993. L’année suivante le cofondateur de NetBSD, Theo de Raadt, quitte le projet pour fonder en octobre 1995 le projet OpenBSD [4].
Les systèmes d’exploitation de la famille BSD partagent la même architecture monolithique du noyau, les mêmes approches d’implémentation des fonctionnalités ainsi que la même philosophie. Chaque système de la famille est un système d’exploitation distribué dans un ensemble fonctionnel complet avec un noyau prêt à l’emploi comprenant le code source – recompilable au besoin, le système de base, sans avoir recours à des paquetages supplémentaires, eux-mêmes intégrés au système de base comportant quelquefois d’autres types de licences que celle de BSD [5]. D’un point de vue strict, Linux est un noyau, et pour en faire un système d’exploitation complet il faut lui ajouter un système de base. Ce sont les ensembliers (agrégateurs) comme Fedora ou Ubuntu qui, par leur travail d’agencement réunissant des librairies et un système de paquetages, forment un système d’exploitation appelé distribution Linux. Que se soit pour NetBSD ou FreeBSD, le développement du logiciel – noyau et système de base – est contenu dans un seul ensemble, tandis qu’une distribution Linux peut se passer de développeurs participatifs au noyau Linux, au profit d’agrégateurs en mesure de réunir des logiciels travaillant ensemble pour former une distribution Linux organisée autour d’un système de paquet. Les distributions connaissent trois grands types de système (archives) de paquets, RPM pour Fedora (Red Hat), DEB pour Debian (Ubuntu) et TGZ.
FreeBSD face à Linux En parcourant les différents forums de discussions sur FreeBSD recueillant des commentaires à caractère technique ou des moqueries plus ou moins voilées face à Linux et les distributions qui l’embarquent, on peut relever quelques arguments en sa faveur: z système d’exploitation très bien structuré (systèmes de fichiers, noyau, documentation, ...) et cohérent; z FreeBSD n’est pas Linux, il est digne de confiance, stable, simple (on n’y trouve pas d’outils laborieux et compliqués (comme udev & et dbus &); z contrairement à la croyance en vogue, la licence libérale BSD a permis des développements de qualité au sein de FreeBSD; z la communauté se focalise plus sur l’aspect technique que sur les licences et l’activisme idéologique; z il est reconnu dans sa capacité à soutenir un trafic réseau intense en maintenant ses performances; z sa communauté n’est pas fragmentée comme Linux à travers plusieurs distributions différentes possédant chacune sa communauté individuelle; z du côté coupe-feux, son Packet Filtering est meilleur que ceux qui se succèdent sous Linux;
29 OCTOBRE 2013 - N° 6
7
Vingt ans pour FreeBSD et continuer avec les arguments en sa défaveur: z dans le domaine des machines portables, FreeBSD n’excelle pas vraiment (pas de mise en veille ou d’hibernation); z les pilotes pour les cartes graphiques arrivent tardivement et péniblement (à l’exception de ceux propriétaires de Nvidia) z beaucoup moins de systèmes de fichiers disponibles intrinsèquement par le noyau, ou au niveau utilisateur à travers un outil comme FUSE &; z la licence BSD n’offre pas la même protection sur le logiciel que la licence GNU GPL [6-7] qui impose d’importantes restrictions contre la réutilisation du code source dans un logiciel propriétaire; z pas suffisamment agile dans la prise en charge de nouveaux matériels; z OS X &est plus facile à utiliser que FreeBSD; z les logiciels sont moins nombreux que pour la distribution Debian et ses dérivées. Quelquefois il devient nécessaire de passer par la couche d’émulation Linux pour exécuter un logiciel qui n’existe que pour Linux.
Faits marquants Dans sa première version, FreeBSD précise que son noyau ne contient pas de code permettant le chiffrement DES &, ce qui empêcherait son exportation en dehors des États-Unis, puisqu’il est illégal d'exporter des États-Unis l'algorithme de chiffrement DES. Cependant, le système de base met à disposition un paquet logiciel regroupant tous les logiciels faisant appel au chiffrement DES exploitables uniquement aux États-Unis. Sans ironie, la documentation propose une librairie basée sur du code source écrit par l'Australien David Burren permettant de contourner cette limitation sans devoir modifier les programmes existants disponibles sur les sites FTP d'Afrique du Sud, du Brésil et de Finlande. Depuis ses débuts, le système de fichiers natif de FreeBSD fut Unix File System (UFS), qui par la suite se modernisa largement pour devenir UFS2, ajoutant la possibilité de sauvegardes instantanées (snapshot) et permettant une grande volumétrie dans les systèmes de fichiers (16 TB par système). Depuis 2008 avec FreeBSD 7.0, Z File System (ZFS &) est aussi disponible comme système de fichiers natif. En 2000, le mécanisme Jails fait son introduction afin de permettre le confinement d’environnement d’exploitation. Les processus ainsi isolés ne peuvent pas communiquer avec les processus existant en dehors du confinement. Chaque environnement confiné possède, entre autres, son propre plan d’adressage réseau. FreeBSD 4.0 fut salué pour sa stabilité et était le système d’exploitation préféré des fournisseurs d’accès Internet et d’hébergement Web. Cette version fut supportée par le projet pendant plus de six ans, en terminant sa vie au début de l’année 2007 avec le numéro 4.11. Le réseau a toujours été au coeur de FreeBSD, et c'est ainsi que naturellement il prit part dès son lancement en 1998 au projet KAME 1 de recherche et de développement sur le protocole IPv6, en servant d'implémentation de référence. Deux ans plus tard, en KAME n'est pas un acronyme. Il signifie tortue en Japonais, mascotte du projet.
1
8 flash informatique
2000 avec la version 4.0, un ensemble fonctionnel complet fut rendu disponible avec notamment la pile du protocole incluse au noyau, des outils dédiés et des applications modifiées pour prendre en charge IPv6. FreeBSD 7.1 introduit DTrace & fin 2008, l’outil d’analyse du noyau et des applications en temps réel permettant d’obtenir des informations détaillées sur les événements et opérations du système d’exploitation. Non seulement DTrace est un outil d’analyse de performance, mais il est aussi un véritable langage de type script. Son utilisation n’introduit aucune pénalité sur les performances du système en production. ZFS est devenu un des systèmes de fichiers naturels qui combine un gestionnaire de volumes avec un système de fichiers. ZFS protège toutes les données avec des sommes de contrôle 64 bits qui détectent et corrigent la corruption silencieuse des données.
Licences FreeBSD ou NetBSD sont des systèmes d’exploitation open source au même titre que Linux, mais couvrant des horizons différents. Cependant, en raison de leur licence BSD, tout un chacun, un particulier comme une société de petite comme de grande importance, peut se saisir de son code source distribué librement, le modifier pour ses besoins spécifiques sans jamais le dévoiler pour en faire profiter la communauté. Cette façon de faire, sans doute, heurtera une partie des adeptes du libre, mais laissera une chance à de petites entreprises de pouvoir grandir à leur rythme sans être prises de cours par d’autres concurrentes dont les moyens sont plus importants, leur permettant aussi de réduire le temps, les risques et les coûts liés au développement, et sans doute d’améliorer la qualité de leurs produits sur le long terme. Cette souplesse reste impossible face à la licence GNU GPL très dogmatique en terme de liberté. La liberté ne peut être accaparée et il est mal venu de l’enfermer dans une pensée unique. On entend souvent dire que la liberté s’arrête là où commence celle des autres. Ainsi, en gardant une attitude conservatrice et intransigeante, même lorsque l’on cherche à défendre la liberté, on se rend néfaste à la liberté. Les petites entreprises, les organisations comme les personnes ont le droit d’exister.
Structure organisationnelle FreeBSD est un système d’exploitation complet et bien conçu, possédant une communauté de développement forte et active, en parallèle à celle des utilisateurs, en mesure de suivre le fil d’avancement des technologies permettant de garder un système puissant avec des fonctionnalités récentes s’intégrant sans bouleversement avec celles déjà en place. La cohérence du système est probablement une de ses grandes forces, facilitant son apprentissage et le maintien des connaissances à travers le temps, car les modifications significatives restent inexistantes 2, évitant ainsi la rupture avec ses acquis. FreeBSD est développé et géré par ses contributeurs autour d'une organisation de projet divisée en trois niveaux non hiérarchiques. On pourrait presque parler d’une bonne mise en œuvre du processus de changement.
2
Vingt ans pour FreeBSD
1969
Unics
1971 to 1973
UnixTSS 1 to 4
1974 to 1975
UnixTSS 5 to 6
Open Source Mixed/Shared Source Closed Source
1978 BSD 1.0 to 2.0
1979
UnixTSS 7 Unix 32v
1980
BSD 3.0 to 4.1
1981 1982
BSD 4.2
1983
Sun OS 1 to 1.1
1984 1985
UnixTSS 8 BSD 4.3
1986 1987 1988 1989 1990 1991
UnixTSS (Time Sharing System) 9 to 10
Sun OS 1.2 to 3.0
BSD 4.3 Tahoe BSD 4.3 Reno
BSD NET/2 Sun OS 4
1992 1993 1994 1995 1996 1997 1998
386BSD
FreeBSD 1.0 to 2.2.x
BSD 4.4 to 4.4 lite2
FreeBSD 3.0 to 3.2
NetBSD 0.8 to 1.0
NetBSD 1.1 to 1.2
OpenBSD 1.0 to 2.2
NetBSD 1.3
1999 2000 2005
OpenBSD 2.3 to 5.x FreeBSD 3.3 to 9.x
NetBSD 1.3 to 6.x
2008 2009 2010 2011
diagramme historique BSD tiré d'une histoire simple d'Unix [8]
29 OCTOBRE 2013 - N° 6
9
Vingt ans pour FreeBSD Comme la ressource principale de la communauté FreeBSD est formée des développeurs catégorisés en deux groupes: les commiters qui ont les droits d’écriture permettant de modifier les dépôts des sources, et les contributeurs sans ce privilège. Les commiters sont les développeurs les plus actifs contribuant au projet de manière récurrente qui passent leur temps non seulement à l'intégration de leur code source, mais aussi, et surtout, à celui soumis par les contributeurs qui constituent plus de 75 % des changements apportés à l'ensemble du code source. La Core Team constitue une sorte de conseil d'administration responsable de décider des objectifs et des directions générales du projet. Cette équipe de base, formée de stakhanoviste, est élue tous les deux ans par le groupe de commiters. Elle promeut les contributeurs actifs à la fonction de commiters et leur assigne un rôle au sein du projet. En résumé, il y a: z plusieurs milliers de contributeurs, z plus de 340 commiters, z la Core Team se constitue de neuf membres.
Version 10 Avec FreeBSD 10 s’ajoutera le VPS (Virtual Private System), une nouvelle technologie de virtualisation native au système, qui offrira une vraie virtualisation des ressources du noyau allant jusqu’à permettre la migration à chaud entre machines physiques. L’hyperviseur & BSD aussi prévu, exécutera FreeBSD dans un hyperviseur de type 2 – comme QEMU ou VirtualBox. Des deux points de vue technique et philosophique un élément important reste à souligner, c’est la suppression de la licence GNU GPL du système de base. Cette décision est l'apanage de la FreeBSD Core Team qui considère important pour le projet d'accompagner des environnements naissants n'appréciant pas ou simplement n'acceptant pas la licence GPL.
Conclusion Si votre parcours informatique n’a que rarement croisé la culture Unix, songez à FreeBSD qui s’avérera un excellent choix pour vos besoins en services d’infrastructure nécessitant une stratégie à long terme. Pour des besoins plus modestes ou simplement pour en mesurer ses caractéristiques, un ordinateur personnel fera l’affaire que ce soit avec FreeBSD lui-même ou avec son dérivatif PC-BSD [9] facilitant son expérience. Comme pour toute nouvelle matière, son apprentissage peut prendre du temps, mais une fois ces connaissances acquises, vous les trouverez certainement bien plus pérennes que celles obtenues sur d’autres systèmes d’exploitation. Puis, à relativement court terme, FreeBSD vous apportera beaucoup de satisfaction tout en vous libérant énormément de temps pour poursuivre dans d’autres activités essentielles.
Références [1] Projet NetBSD, netbsd.org [2] Projet FreeBSD, www.freebsd.org [3] FSF (Free Software Fondation), www.fsf.org/about/ [4] Projet OpenBSD, openbsd.org [5] Licence BSD, eng.anarchopedia.org/index.php/BSD_license [6] Licence GNU GPL, https://www.gnu.org/licenses/gpl.html [7] GNU 30th, https://gnu.org/gnu30 [8] Diagramme historique BSD, https://en.wikipedia.org/wiki/ File:Unix_history-simple.svg [9] PC-BSD, www.pcbsd.org/fr/about/.
Article du FI-EPFL 2013 sous licence CC BY-SA 3.0 / P. Fabbri
Autre anniversaire Autre anniversaire marquant cette année: celui des 30 ans du projet GNU de Richard Stallman, fondé en septembre 1983 dans le but de créer un système d'exploitation libre. Les outils de développement furent en premier lieu produits avec en particulier le compilateur qui participa généreusement au lancement du noyau Linux en 1991 ainsi qu'au lancement des systèmes d'exploitation FreeBSD et NetBSD en 1993.
GLOSSAIRE
&
386BSD: Le premier portage BSD sur processeur iNTEL 386. BSD (Berkeley Software Distribution): famille de systèmes d'exploitation composée principalement de NetBSD, FreeBSD et OpenBSD. dbus: logiciel de communication interprocessus. DES: système de chiffrement symétrique des données, la même clé de 56 bits
10 flash informatique
est utilisée pour le chiffrement et le déchiffrement. Aujourd’hui, on lui préférera Triple DES. DTrace (Dynamic Tracing): développé par Sun Microsystems et mis en production en 2005 avec Solaris 10 3/05. DTRT (Do The Right Thing): souvent rencontré dans les fils de discussions pour dire: faites les choses correctement. FUSE: ce projet est spécialisé dans la mise en place de systèmes de fichiers virtuels dans l’espace de travail utilisateur (userspace, en dehors du noyau)
Hyperviseur: logiciel permettant la création et la gestion de machine virtuelle. OS X:Système d’exploitation d’Apple Inc., plus connu par l’acronyme Mac OS X. OS X prend ses origines dans la famille BSD et NexTSTEP. udev: fournit un gestionnaire dynamique de périphérique sous Linux. ZFS (Zettabyte File System): développé par Sun Microsystems et mis en production en 2006 avec Solaris 10 1/06.
Les entrailles de my ../.. Suite de la première page
structure de l’authentification existante dans uPortal et basée sur CAS (Central Authentication System, l’autre grand système de SSO) a pu alors être remplacée par Téquila, sans modifier le code de uPortal. La gestion des autorisations, basée sur les personnes et les groupes a pu sans autre être intégrée avec notre infrastructure LDAP.
Serveur d’applications: Tomcat L’application uPortal s’exécute sur deux serveurs physiques, le premier dans le bâtiment MA et l’autre dans le nouveau data center de l’EPFL dans le bâtiment INJ. Les serveurs exécutant la distribution RedHat Linux font tourner le conteneur d’applications Web Tomcat 6, un autre grand projet de la fondation Apache. Les disques réseau du projet Sanas de l’EPFL servent comme stockage des logs système et donnent un moyen de communication entre les serveurs. Ces montages sont accédés en protocole NFS v3.
Serveur Web: Apache Sur le chemin de l’utilisateur au serveur, le service Tomcat est précédé par le service Apache, qui redirige toutes les requêtes entrantes en utilisant le protocole AJP. AJP (Apache Jserv Protocol) est un protocole permettant la redirection des requêtes Web entre le serveur Web (Apache) et le serveur d’applications (Tomcat). Il va sans dire que les deux services sont exécutés sur la même machine physique. Apache en front-end peut paraître superflu et complexifiant inutilement l’architecture. La plupart du temps cette affirmation est vraie. Toutefois, en cas d’attaque du type déni (distribué) de service, il est très facile de bloquer les clients fautifs au niveau du service Apache, tâche beaucoup moins évidente à faire au niveau du serveur d’applications.
les deux serveurs se trouvant dans les deux salles. Finalement, il s’occupe du cryptage/décryptage de la communication lorsque celle-ci est établie à travers le protocole SSL. Ceci est toujours le cas avec le projet my.epfl. Anecdotiquement, notons que le premier content-switch de l’École a été acquis pour les besoins du projet my.epfl, le hardware servant à beaucoup d’autres services depuis lors. Comme nous le verrons plus tard, le répartiteur de charge effectue une surveillance des serveurs et décide, selon des critères bien définis, quand un serveur ne peut plus répondre aux requêtes. Dans ce cas il arrête de rediriger le trafic vers ce serveur, en attendant que le problème soit résolu.
La base de données La base de données est de couleur PostgreSQL v8, fournie en licence PostgreSQL, semblable aux licences BSD ou MIT. Les bases de données, une active et une passive sont, à l’image des serveurs d’applications, reparties dans les deux salles. La réplication des données se fait à l’aide du protocole DRBD ((Distributed Replicated Block Device – périphérique en mode bloc répliqué et distribué), une implémentation open source (GPL v2) du mirroring par bloc à travers le réseau. DRBD pourrait être comparé à du RAID-1 réseau.
Le répartiteur de charge Architecture DRBD
Architecture de my.epfl
La dernière pièce d’infrastructure entre les serveurs d’application et l’utilisateur final est le répartiteur de charge de l’École, le Cisco ACE (Application Control Engine). Appelé par son petit nom: le content-switch, le Cisco ACE exécute deux tâches pour le projet my.epfl. Tout d’abord il repartit les requêtes (round-robbin) entre
Architecture base de données
Cette infrastructure nous permet de nous assurer que le système continuera de fonctionner en cas de perte d’un des deux serveurs. C’est le logiciel open source Heartbeat qui détecte l’indisponibilité 29 OCTOBRE 2013 - N° 6
11
Les entrailles de my du serveur actif et qui lance la modification de la configuration réseau ainsi que la configuration DRBD, redirigeant ainsi les requêtes vers la base de données fonctionnelle. Comme les deux partitions contenant les données sont synchrones grâce au DRBD, le fonctionnement peut reprendre sans perte d’informations. Le choix de PostgreSQL vs. MySQL s’est imposé à cause d’une implémentation beaucoup plus mature des requêtes transactionnelles, un luxe peu usité dans les projets Web, mais indispensable pour la partie documents de my.epfl.
LDAP Le système d’autorisation sur lequel reposent les applications du service my.epfl est le serveur LDAP de l’École. L’EPFL possède deux services LDAP, l’un du type annuaire, reproduisant la structure hiérarchique des unités administratives, et l’autre, SCOLdap (Ldap des Services Collaboratifs) présentant une structure à plat, beaucoup plus facilement intégrable avec les différents outils du marché. SCOLdap a été conçu il y a sept ans pour les besoins du projet my.epfl, mais depuis il est utilisé par de nombreux autres services de l’École. Le service LDAP est actuellement déployé sur quatre serveurs positionnés dans deux salles distinctes et précédé par le content-switch. Ainsi nous pouvons garantir une haute disponibilité et une résilience à la charge de cet ingrédient essentiel pour beaucoup d’autres applications de l’École.
Les subtilités du développement des interfaces hautement dynamique telles que celles de my.epfl dépassent largement le cadre de cet article. Je note toutefois que nous utilisons Spring pour l’injection de dépendances (Inversion de contrôle), Hibernate pour la couche persistance, C3P0 comme pooler des connexions BDD, Ehcache comme implémentation des caches, pour un total de plus d’une centaine de librairies externes. La partie documents développée à l’EPFL, qui exclut l’API Xythos et toutes les librairies externes, correspond à environ 16’000 lignes de code java et plus de 1’600 lignes de markup ZK. Ce qui, entre nous, n’est pas beaucoup.
Le serveur WebDAV
Documents Portlet Documents L’application Documents, accessible depuis l’onglet du même nom sert à manipuler l’espace de stockage collaboratif de my.epfl. L’application utilise l’API Xythos v7, la seule partie de my.epfl à être en licence propriétaire. Le produit Xythos, utilisé dans les produits SAP, Oracle,… fournit la couche métier de l’onglet Documents. C’est cette API qui communique avec la base de données Documents, hébergée sur les deux serveurs PosgreSQL mentionnés plus haut. C’est également l’API Xythos qui manipule les fichiers stockés sur le NAS et accédés avec le protocole NFS 3. Cette API s’occupe des versions, du verrouillage des fichiers et de beaucoup d’autres fonctions. Xythos communique également avec Lucene, un projet Apache sous licence Apache, afin d’indexer les documents pour que ceux-ci soient retrouvables par la recherche full-text de my.epfl. La partie interface de l’onglet Documents a été développée ici, au KIS, en utilisant le framework ZK. ZK est le produit de la firme taiwanaise Potix. ZK existe en double licence, LGPL et Licence commerciale. ZK se charge de fournir l’interface Ajax des onglets Documents, Groups et Agenda du projet my.epfl. En plus de fournir un environnement de développement moderne, agréable et très efficace, ZK offre une intégration de la norme JSR-168 (Portlet). Ceci nous permet de développer les applications intégrables dans diverses solutions de portail. Ni la norme Portlet v1, ni la norme Portlet v2 n’ont pas été conçues pour les requêtes du type Ajax. C’est pour cela que le framework ZK fournit un filtre Tomcat qui intercepte tous les appels asynchrones et les redirige vers la portlet.
12 flash informatique
Documents. Les connexions à la base de données ne sont pas représentées pour plus de clarté.
En plus de fournir l’API utilisée pour développer l’interface Web, Xythos fournit également une excellente implémentation du protocole WebDAV: le service documents.epfl.ch. Ce service est déployé sur deux serveurs physiques, hébergés dans les deux data-centers. Notre ami le répartiteur de charge sert de front-end à l’application. Le serveur WebDAV fournit l’accès aux fichiers sur l’interface Web documents.epfl.ch. Il permet également le montage réseau de l’espace de documents sur les machines des utilisateurs. Ainsi nous pouvons manipuler les documents non seulement à travers l’interface my.epfl.ch, mais également en utilisant le gestionnaire de fichiers natifs d’une machine Linux, OSX, Windows, mais également Android et IOS. Le serveur WebDAV est connecté à la même base de données que tout le reste, et accède aux mêmes montages NAS que l’API de l’interface my.epfl. Le protocole AJP étant peu conciliant avec le protocole WebDAV, nous ne déployons pas de serveurs Apache devant les serveurs Tomcat dans le cas du service documents.epfl.ch. En utilisant le protocole WebDAV, d’autres applications telles que wiki.epfl.ch, blogs.epfl.ch ou encore inform.epfl.ch déposent les fichiers sur l’infrastructure des documents de my.epfl. Les applica-
Les entrailles de my tions wiki et blogs vont jusqu’à modifier les droits d’accès sur les fichiers au gré des modifications des droits d’accès sur les wikis ou les blogs correspondants.
Agendas Bedework L’application de gestion des calendriers est accessible depuis l’onglet Agenda du portail my.epfl. Afin de fournir les fonctionnalités nécessaires, nous utilisons l’API du projet Bedework, v3.4, fournie en licence BSD modifiée. Bedework est un projet de l’Université de Washington. En 2003, le projet est repris par Rensselaer Polytechnic Institute. Actuellement, le service Bedework est déployé dans une douzaine d’universités à travers le monde, dont Yale, Duke, Université de Navarre et même la bourse allemande (market data). Bedework fournit une API puissante, mais malheureusement l’interface Web laisse à désirer. Ce petit détail ne nous a pas découragés, c’est donc ici, au KIS, que la première mouture de l’application Agenda a été développée en utilisant l’API Bedework et le framework JSF. JSF, pour Java Server Faces, est un cadriciel (sic) de la fondation Apache fournissant les outils pour le développement d’interfaces Web. Une fois la première version de l’application Agenda achevée et mise en production à l’EPFL, le projet fut repris par le Centre Informatique de l’Université de Lausanne et déployé en tant que système d’agendas collaboratifs de l’Université. C’est là-bas, chez nos collègues de l’UNIL, que la nouvelle version a vu le jour sous le nom de MyAgenda. Cette version continue à utiliser l’API Bedework, mais l’interface a été conçue en utilisant le framework ZK, beaucoup plus moderne que le JSF. Le développement de l’UNIL a été ensuite repris par l’EPFL, où nous avons implémenté notre charte graphique et refait l’ergonomie de l’application. Depuis, ces améliorations ont été introduites dans la version déployée à l’UNIL. À l’Université de Lausanne, MyAgenda est déployé dans le portail académique my.unil, qui utilise le conteneur de portlet Jahia. La version actuelle déployée dans my.epfl est donc le fruit d’une collaboration entre les deux institutions s’étendant sur plusieurs années. L’API Bedework communique avec la base de données (repartie, DRBD, oui c’est toujours la même… ) et fournit ainsi toutes les fonctionnalités nécessaires à un système d’agendas partagés. La manipulation des évènements, des calendriers, des vues et la gestion des droits d’accès se font par l’API Bedework, que nous avons modifiée pour supporter notre infrastructure d’autorisations (SCOLdap). Notre collaboration avec le Rensselaer Polytechnic Institute nous permet de supprimer à chaque nouvelle version une partie de nos ajouts ou modifications, celles-ci se retrouvant dans la version originelle de l’API Bedework. Des rumeurs racontent que le Centre Informatique de l’Université de Lausanne se prépare à porter l’application à la version Bedework 3.9, ce qui permettra, entre autres, une configuration beaucoup plus aisée des appareils mobiles.
Le serveur CalDAV Le projet Bedework, en plus de fournir une API très puissante, fournit également un serveur implémentant la norme CalDAV. Une version légèrement modifiée de celui-ci est déployée en tant que service calendars.epfl.ch. Le service Calendars permet la manipulation des évènements des agendas du projet my.epfl avec les clients desktop ou mobiles. Tout périphérique ou application d’agenda supportant la norme CalDAV, peut donc y accéder, permettant ainsi l’intégration des agendas de my.epfl dans les applications habituelles des utilisateurs. Il va également sans dire que la seule application notable ne supportant pas le protocole CalDAV est Microsoft Outlook. Le service calendars.epfl.ch est déployé sur deux serveurs physiques installés dans les deux salles en MA et en INJ. Le répartiteur de charge se charge de la distribution balancée entre les deux instances. La partie Agenda développée à l’UNIL et EPFL, ce qui exclut l’API Bedework et toutes les librairies externes, correspond à environ 21’000 lignes de code java et environ 1’300 lignes de markup ZK.
Calendars
Groupes La dernière application du projet my.epfl est l’application de gestion des Groupes. Cette application permet la création et la manipulation des groupes d’utilisateurs. Comme de coutume, il s’agit là de nouveau d’un service à l’architecture n-tiers. Le service de groupes, accessible sur l’interface groups.epfl.ch a une vie indépendante du projet my.epfl. Développé également au KIS, ce service manie la base de données des groupes et leurs membres, et se charge de la réplication de cette structure vers les services tels que LDAP ou Active Directory.
29 OCTOBRE 2013 - N° 6
13
Les entrailles de my My.epfl utilise intensivement les groupes comme source pour les autorisations, il est donc normal qu’il fournisse une interface pour leur manipulation. L’interface est développée avec le framework ZK et utilise les services Web pour communiquer avec le service groupes.epfl.ch. Ainsi, chaque manipulation de groupe via l’interface my.epfl.ch génère les requêtes vers le service groupes.epfl.ch. Ces requêtes respectent (approximativement) la norme REST et encodent les informations à l’aide de la syntaxe JSON. L’ancienne version de my.epfl utilisait XML-RPC pour communiquer avec le service des groupes. Nous avons décidé, et le temps nous donne raison d’abandonner cette norme bien après que les autres l’aient fait. La partie Groupes correspond à environ 12’000 lignes de code java et environ 1’700 lignes de markup ZK.
Déploiement & Monitoring Puppet et le déploiement Le projet my.epfl est déployé sur huit serveurs, sans compter les serveurs de développement et de staging. Il serait impossible de gérer une telle architecture d’une manière efficace sans mettre en œuvre les outils spécialisés. Ainsi, le déploiement des serveurs (OS, couche service) se fait à l’aide du logiciel open source Puppet, fourni en licence Apache 2.0. Notre partenaire dans l’aventure, l’entreprise Camp to Camp présente sur le campus de l’EPFL, cuisine nos recettes Puppet, qui sont une sorte de fichiers de déploiement. Les clients Puppet sur chaque serveur interprètent et appliquent ces recettes sur la configuration logicielle. Ainsi il devient un jeu d’enfant de déployer un nouveau serveur, soit pour en faire un serveur de test, pour pallier à une panne hardware, ou pour soutenir une éventuelle augmentation de charge. Avant, ce genre d’opérations étaient faites à la main et pouvaient prendre plusieurs heures, voire des jours. Actuellement, ce n’est plus qu’une question de quelques dizaines de minutes. En plus de nous assister lors de la phase d’installation et déploiement, Puppet permet les modifications centralisées de la configuration des serveurs déjà en service. Ceci s’avère être très pratique lorsqu’on doit modifier un paramètre sur tous les serveurs, ou ajouter un binaire particulier sur un service.
Nagios et le monitoring
Groupes
Services Web La communication entre my.epfl et le service des groupes ne s’effectue pas dans un seul sens. En effet, dès qu’un groupe est créé, et ceci indépendamment du fait que l’action soit faite à travers my.epfl.ch ou groupes.epfl.ch, les services Web déployés sur les serveurs de my.epfl sont notifiés par l’application groupes.epfl.ch. Cette voie de retour permet de créer, supprimer ou renommer les espaces de stockage des groupes de my.epfl, reflétant ainsi les modifications faites au niveau de l’application de gestion des groupes. En plus des services Web permettant la manipulation des structures de stockage, le service my.epfl déploie également d’autres services servant à l’upload depuis une page Web, affichage de la structure des dossiers / agendas dans une page Web et affichage des disponibilités pour en citer que les plus utilisés. De nouveaux services sont ajoutés régulièrement, permettant ainsi une meilleure intégration du projet my.epfl dans la structure IT de l’École.
14 flash informatique
Dans tout service potentiellement accessible en mode 24/7/365, il est primordial de pouvoir détecter les pannes avant les utilisateurs. La surveillance automatisée (monitoring) des serveurs devient alors indispensable. Le projet my.epfl utilise le logiciel Nagios, en licence GPL, pour assumer cette tâche. Nagios, configuré et bichonné par Camp to Camp, effectue en continu toute une série de vérifications sur l’ensemble des serveurs my.epfl. Il vérifie l’occupation du disque local et celui du montage NAS. Nagios vérifie la disponibilité de la base de données, ainsi que le nombre de connexions clientes sur celle-ci. Il vérifie l’existence du processus httpd (Apache) ainsi que celle du processus Tomcat. En remontant l’infrastructure, Nagios vérifie la disponibilité du service Webdav en tentant en continu l’accès à un fichier donné. Il vérifie également si les services sont lancés avec les bons droits et toute une suite d’autres paramètres permettant de détecter un problème au plus tôt. Dès que le problème est détecté, les personnes en charge de l’infrastructure sont notifiées, selon leur rôle dans la résolution du problème en question.
Répartiteur de charge et le monitoring Nagios n’est pas le seul à surveiller les services my.epfl. Le répartiteur de charge effectue également une série des tests sur les services my, documents et calendars. Il teste la réponse du serveur au niveau de la connexion TCP, mais pas uniquement. Le ACE appelle régulièrement un service Web, conçu pour l’occasion et qui vérifié l’empreinte mémoire de la machine virtuelle Java, ainsi que la quantité de threads concurrents s’exécutant sur la machine. Les valeurs hors limite signalent un problème d’emballement de la machine virtuelle ou une charge trop grande.
Les entrailles de my Une fois l’emballement détecté, le service Web modifie sa réponse au content-switch, ce qui provoque la sortie du serveur de la ferme. Les requêtes ne sont plus envoyées vers ce serveur, mais uniquement vers son alter ego fonctionnel. Le répartiteur de charge continue néanmoins à appeler le service Web du serveur dans les choux, en espérant une réponse positive. Une fois les choses tassées, la récupération de mémoire ayant été faite par le ramasse-miettes de la JVM, le service Web notifie le répartiteur du retour à la normale. Le serveur guéri est alors remis dans le cluster, avec comme seule trace de la panne, quelques mails matinaux automatiques nous notifiant du dysfonctionnement. Le service Web en charge de la surveillance de la machine virtuelle Java utilise le protocole JMX (Java Management eXtensions).
Créature de Frankenstein Avant que d’autres le fassent, je ferai la comparaison moi-même: le service my.epfl utilise une multitude d’applications diverses, de librairies logicielles, de services et de frameworks, cousus ensemble dans un but commun. Parfois, ce service me fait penser à la créature de Frankenstein, à quelques différences près: une apparence plus jolie, une durée de vie plus longue, consommant beaucoup plus d’électricité et je l’espère beaucoup plus utile. n
Backups Il y en a beaucoup. Partout.
Tâches de maintenance Plusieurs tâches périodiques s’assurent du bon fonctionnement des services. Elles vérifient l’attribution correcte des droits d’accès, configurent les quotas et vérifient la présence des espaces des groupes et des agendas de groupes. Il y en a pour tous les goûts. Certaines vérifient l’état de la machine virtuelle et notent les statistiques afin de permettre l’analyse des patrons d’utilisation d’un service particulier. Elles évaluent en temps réel l’usage du système de stockage du service Documents et construisent les statistiques de son utilisation. Elles permettent également de corriger les couacs des opérations effectuées à la volée. En bref c’est en tout une dizaine de scripts qui sont exécutés en permanence et qui s’assurent de la cohérence des données et de la bonne marche du service.
29 OCTOBRE 2013 - N° 6
15
Comment faire ?
Contrôle parental 2.0 Laurent.Kling@epfl.ch, EPFL -STI, coordinateur informatique à la Faculté des Sciences et Techniques de l’Ingénieur
Skydog, How to manage Internet usages for teenagers ? Skydog, comment gérer Internet pour les adolescents.
Le rôle des parents est d’accompagner leurs enfants dans leur développement. Skydog les aide à établir un dialogue raisonné avec leurs adolescents dans l’utilisation d’Internet. En coexistence avec l’école, ils doivent permettre aux futurs adultes d’acquérir les connaissances qui leur permettront de définir leurs propres raisonnements. Dans ce contexte, Internet est synonyme de liberté. Ce don d’accéder à toutes les informations est un apport essentiel de la fin du XXe siècle. Cependant, il est nécessaire de définir ce qui est ouvert, compte tenu de l’évolution cognitive de chaque enfant. Un autre élément à prendre en compte est la durée de ce type d’activité, elle ne doit pas s’exercer au détriment de loisirs tout aussi formateurs que sont le sport ou les réunions avec les copains. Le phénomène Bring Your Own Device touche également les enfants. Presque tous les appareils modernes possèdent un accès Internet. Connectés au réseau Wi-Fi de la famille, ils permettent d’atteindre des contenus, souvent publicitaires, ou parfois carrément dérangeants. Offrir Internet à la maison semble innocent, en réalité on se retrouve devant les mêmes choix difficiles qu’une entreprise. z faut-il filtrer le contenu ? z est-il nécessaire de limiter le volume ? z faut-il définir des limites de temps ?
Une réponse concertée
ver dans la situation d’un état totalitaire où les limites sont imposées par la peur ou l’ignorance. Au premier abord, ce programme est totalement irréaliste. Comment introduire un contrôle où les enfants et les parents sont impliqués ? En réalité ces mécanismes sont plus simples à mettre en œuvre. Trois éléments se combinent pour réaliser ce contrôle parental 2.0: z gérer les appareils, z gérer le comportement, z gérer Internet.
Gérer les appareils Le premier verrou est l’accessibilité au réseau Internet. Maintenant, la quasi-totalité des appareils se connecte sans fil (Wi-Fi). Au départ, un accès Wi-Fi est très simple à mettre en place, votre fournisseur d’accès se charge de tout ! Dans ce contexte, est-il nécessaire que chaque équipement, chaque console de jeu, soient reliés à Internet ? La solution est simple, ne pas diffuser le mot de passe du Wi-Fi ! L’adolescent doit demander le sésame à ses parents pour pouvoir raccorder un nouvel appareil sur Internet. Ce contrôle s’effondre si vos voisins sont trop laxistes (quand le mot de passe n’existe pas ou est disponible trop facilement).
Gérer le comportement Presque tous les appareils offrent la capacité de limiter l’accès aux ressources. Les systèmes d’exploitation z OS X, support.apple.com/kb/PH11354 z Windows 8, windows.microsoft.com/fr-ch/windows-8/set-upkids-accounts
Les smartphones et tablettes z iPhone, iPad, support.apple.com/kb/ht4213 z Android, www.crazyandroid.com/android-parental-control3-ways-to-protect-your-child/
On pourrait se donner l’illusion de trouver une réponse facile en supprimant Internet. Enlever l’accès à Internet, c’est également se priver de sources de savoir de très grande qualité. Wikipédia est maintenant une encyclopédie en ligne d’envergure comparable à nos volumes papier. Couplé avec un moteur de recherche, on se retrouve devant une forme vivante de la connaissance, un rêve que Diderot n’aurait pas renié. Un rapport anglo-saxon présente une vision détaillée des risques et bénéfices d’Internet et des composants connexes comme les consoles de jeux: webarchive.nationalarchives.gov.uk/20100202100434/ et dcsf.gov.uk/byronreview/ pdfs/final%20Report%20Bookmarked.pdf. Le choix de la qualité et de la quantité des informations mises à disposition doit être défini d’un commun accord. Selon ce principe, je présente des mesures de supervision pour éviter de me retrou-
16 flash informatique
Les consoles de jeux z www.pegi.info/ch_fr/index/id/908/. La mise en pratique de ces limitations est simple à réaliser. Le principal inconvénient est qu’il faut répéter ces réglages sur chaque appareil pour chaque enfant. Pour l’écosystème iOS, j’aimerais cependant présenter trois méthodes aisées pour contrôler les coûts.
Contrôle parental 2.0 Des concepteurs de logiciels ont inventé une source quasi infinie de financement, les achats intégrés. Plutôt que de faire payer un logiciel, il est offert aux utilisateurs. A priori le coût est nul, car gratuit. La pratique est tout autre, car captivée par le jeu on se retrouve devant une difficulté qui nécessite un jeton pour aller au niveau suivant. C’est l’instant crucial, pour aller plus loin il faut payer ! Le jeu contient une boutique pour dépenser ses crédits virtuels, naturellement le renflouement est effectué en argent réel ! La presse regorge d’histoire de parents devant faire face à des factures faramineuses. La meilleure illustration de ce piège est présentée par le classement des applications selon leur rentabilité. Seulement trois applications payantes se retrouvent parmi les vingt-et-un logiciels les plus profitables chez Apple. Ensemble, le règlement par carte prépayée et la désactivation des achats intégrés permettent une gestion raisonnable du budget de l’enfant ou de l’adolescent.
Exiger immédiatement le mot de passe pour un achat
contrôle parental sur iPad
Utiliser un compte iTunes avec uniquement des cartes prépayées Cela permet de définir un budget pour l’adolescent. Le dépassement n’entraîne pas de conséquences fâcheuses, car il n’est plus possible de faire des achats quand le montant disponible est épuisé. Dépositaire d’un compte iTunes, c’est la méthode que je suis moi-même pour éviter de me retrouver devant des factures vertigineuses sur ma carte de crédit. L’affichage du crédit restant permet de contrôler cette consommation en évitant des achats inconsidérés.
Activer le contrôle parental pour désactiver les achats intégrés
Applications gratuites très lucratives
Si le compte iTunes est commun à toute la famille, le mot de passe nécessaire pour valider l’achat de toute nouvelle application est une régulation très simple à réaliser. Pour renforcer le dialogue entre les enfants et les parents, la dernière option exiger le mot de passe: immédiatement (voir figure ci-contre), évite des achats intempestifs pendant les quinze minutes suivant une authentification.
Gérer Internet Les parents doivent endosser le rôle de Big Brother. Gérer l’accès à Internet entraîne immédiatement un dilemme éthique: z promouvoir l’accès à l’information, z restreindre cette liberté par une censure. Par analogie, je reprends l’idée d’un système de classification des jeux en Europe, PEGI (Pan-European Game Information) www. pegi.info/ch_fr/index/id/912/. Ces pictogrammes disponibles sur toutes les boites de jeu devraient permettre aux enfants, aux adolescents et aux parents de quantifier le contenu d’un jeu électronique. Cette aide permet d’éviter de mettre dans toutes les mains des contenus dignes de films d’horreur. Les tablettes, smartphones et consoles de jeu intégré présentent tous une caractéristique très agréable, ils sont portables. Avec Internet cela rend le contrôle nocturne particulièrement difficile. Votre adolescent a sûrement une activité essentielle, comme écouter de la musique, nécessitant son appareil favori à l’heure de se coucher. Naturellement il omet de vous préciser que cette activité s’accompagne d’extra comme discuter avec ses camarades ou jouer ! Cerise sur le gâteau, quasiment tous les jeux offrent la possibilité d’écouter sa liste de musique favorite. Le Graal serait de pouvoir limiter l’accès à Internet en fonction de plages horaires, limitant de facto les activités annexes (comment discuter en ligne quand le réseau n’existe pas). La méthode la plus simple est de mettre un interrupteur horaire sur l’accès Wifi, rendant la période de couvrefeu obligatoire pour tous. Avec la convergence des technologies, il est probable que cette coupure soit également radicale pour tous les usages d’Internet comme la téléphonie ou la télévision.
29 OCTOBRE 2013 - N° 6
17
Contrôle parental 2.0 Écartant cette solution extrême, il existe une méthode qui permet de filtrer l’accès pour chaque appareil, le filtrage par identifiant MAC (Media Access Control). Sous ce vocable complexe se cache un principe simple: chaque appareil connecté à Internet possède une adresse physique MAC unique, fr.wikipedia.org/wiki/Adresse_ MAC. Associée à une adresse IP, elle permet d’identifier l’appareil sur Internet. Dans le FI 6/2005, Jacques Virchaux décrivait déjà cette technique, flashinformatique.epfl.ch/spip.php?article894. L’évolution a permis de démocratiser les outils, fait peu connu, un boîtier Time Capsule possède cette fonctionnalité.
Skydog, le bonheur des parents
filtrer l’utilisation d’Internet avec Time Capsule Pour mettre en œuvre un tel écrémage, il faut procéder par étape: 1 éviter de multiplier les réseaux Wi-Fi, cela implique souvent de désactiver ceux fournis par votre fournisseur d’accès à Internet; 2 identifier tous les triplets utilisateur-appareil-adresse MAC. Pour réaliser cette opération, ces deux sites Web vous seront utiles: www.wikihow.com/find-the-MAC-Address-of-YourComputer et www.net.princeton.edu/enetAddress.howto.html; 3 activer le contrôle d’accès: a entrer chaque adresse MAC et définir un profil d’utilisation pour chacune; b un paresseux peut se limiter à faire ce travail uniquement pour les appareils des enfants !
Time Capsule - activer les contrôles d’accès
Time Capsule, définir une limitation
Ce travail, malgré tout fastidieux, ne permet pas d’avoir une vue dynamique de l’utilisation dans la maison.
18 flash informatique
Skydog, routeur Wi-Fi relié avec les nuages
Une nouvelle solution bien plus facile à mettre en œuvre existe, c’est Skydog. La mise en place est enfantine: z connecter Skydog sur son boîtier Internet, z enregistrer l’appareil sur le site Web du constructeur, z désactiver l’accès Wi-Fi existant, ensuite les réglages sont évidents: z tous les appareils du réseau Wi-Fi sont automatiquement détectés, z créer autant d’utilisateurs que nécessaire, z assigner à chacun ses appareils.
les clients Wifi mis en relation avec leurs utilisateurs
L’application de gestion est immatérielle, elle se trouve dans le nuage, n’importe quel butineur Web permet d’y accéder. Ce découplage entre le sujet et l’observateur engendre un curieux sentiment d’irréalité ou de déjà vu, par exemple, en surveillant sa propre utilisation en temps réel ou en télésurveillant la consommation familiale . L’objectif premier de Skydog est de pouvoir se rendre compte de l’usage effectif d’Internet pour chacun. Dans cet espace onirique, on peut oublier le déroulement du temps. Pour un adolescent, il est encore plus difficile de se séparer de cette étrange lucarne (le temps réellement passé sera minimisé). La construction des garde-fous doit être établie en commun entre les parents avec les enfants. Le profil définissant l’espace de liberté accordé à l’adolescent est créé.
Contrôle parental 2.0
filtrage de contenu
Une grille horaire de la semaine, week-end compris est définie. Des marqueurs peuvent être posés pour mesurer un débit maximum par jour, par exemple deux heures devant YouTube. En pratique son utilisation peut générer ce genre de dialogue avec un adolescent: z tu as passé ton après-midi devant ta tablette ! z non, j’ai fait une pause de 1 heure. z oui, pour allumer ta console de jeu… L’outil offre également la possibilité d’avertir directement les enfants et les parents quand la limite est atteinte. Sur le plan technique, Skydog représente la jonction logique entre deux espaces: la sphère privée et Internet. Signe de l’évolution des outils, la gestion n’est plus directement intégrée dans le boitier physique avec une interface utilisateur rudimentaire, parfois complètement incompréhensible. Maintenant le contrôle est une application Web, résidant dans le nuage informatique (Cloud) avec une approche très simple. La technologie est naturellement présente, mais sans son aspect rébarbatif. La connexion au nuage offre également la capacité immédiate de mises à jour.
Conclusion, un contrôle existant
grille d’utilisation
Dans l’imaginaire collectif, Internet est assimilé à un espace de liberté sans limites ni frontière. Une sorte de Far West moderne où chacun peut dégainer son pistolet pour régler son compte à son adversaire de duel. Les récentes révélations d’Edward Snowden démontrent la main mise des gouvernements sur cette infrastructure: fr.wikipedia.org/wiki/Edward_Snowden. Pour éviter de tomber dans des actions arbitraires, il est essentiel de disposer d’outils qui permettent d’agir en connaissance de cause. Dans cet esprit, l’équipe réseau de l’EPFL a développé depuis 2000 des outils internes pour présenter une vue synthétique de son utilisation: FI 5/01, T’as MATHE ces courbes? Oui, mais j’ai encore MATUS pour savoir ce que ça coûte ! dit-archives.epfl.ch/fi01/fi-51/5-1-page7a.html
FI 9/01, La musique adoucit les mœurs, flashinformatique.epfl.ch/ spip.php?article248
limite de consommation
FI 7/07, Du bon usage du réseau: flashinformatique.epfl.ch/spip. php?article1377. Ce type d’outil nécessite un contrôle total sur l’équipement réseau et une très bonne compréhension des technologies employées. Maintenant, il est possible de disposer des mêmes atouts avec un appareil domestique. De la même manière que l’EPFL, l’utilisation des mesures de la consommation Internet doit conduire à un dialogue éclairé entre tous les interlocuteurs. Ainsi chacun peut assumer ses responsabilités en connaissance de cause. L’effet de Skydog est quasiment miraculeux, chacun retrouve le plaisir de la discussion quand Internet n’est plus omnipotent. Votre adolescent peut également faire preuve d’humour, mettre son iPad en mode avion plutôt que de se retrouver devant un écran qui affiche qu’Internet n’est pas disponible ! n
utilisation effective de la consommation familiale d’Internet
29 OCTOBRE 2013 - N° 6
19
Comment faire ?
Algorithme CORDIC Benjamin.Barras@epfl.ch, Domaine-IT, Responsable Linux
The CORDIC algorithm calculates trigonometric functions in a simple and efficient way. L’algorithme CORDIC permet de calculer des fonctions trigonométriques de manière simple et efficace.
Introduction Il est remarquable de savoir que William E. Egbert, ingénieur chez HP (Hewlett-Packard), a publié quatre articles (1977-78) dans le HPJournal 1 concernant les algorithmes cachés 2 des calculatrices HP, à savoir: z Personal Calculator Algorithms I: Square Roots 3, z Personal Calculator Algorithms II: Trigonometric Functions 4, z Personal Calculator Algorithms III: Inverse Trigonometric Functions 5, z Personal Calculator Algorithms IV: Logarithmic Functions 6. Il est paradoxalement regrettable de constater qu’aujourd’hui il serait quasiment impossible de voir de tels articles publiés étant donné que le savoir est devenu une marchandise qui se négocie, par brevet interposé, par des rapaces et des vautours de toute espèce.
cesseurs ne disposaient que d’un nombre restreint de registres. À titre d’exemple, la mémoire ROM de microprogramme de la HP-35 8 comportait 768 mots de 10 bits, soit l’équivalent de 960 octets. Ce qui explique que des ingénieurs, très brillants, ont mis au point des algorithmes simples et d’une efficacité redoutable, n’utilisant que l’addition, la soustraction et le décalage (shift). Dans cet algorithme, on utilise que le décalage (shift), l’addition/soustraction et surtout des nombres entiers. Les nombres à virgule flottante n’étant qu’une vue de l’esprit, car dans une machine ce ne sont que des nombres entiers avec une virgule qui se déplace à gauche ou à droite. Il faut avoir deux choses à l’esprit avant de commencer: z les calculatrices HP utilisent le système de numération BCD (Binary Coded Decimal); z l’algorithme original de HP utilise le radian comme unité de calcul. Dans le premier exemple, on utilisera le degré pour une raison purement pédagogique.
L’idée de l'algorithme On se donne un angle θ et on veut connaître sa tangente tan ( ) = Y . X
y
Présentation Cet article présente en détail le deuxième algorithme, à savoir le calcul des fonctions trigonométriques. Cet algorithme est connu sous le nom de CORDIC (COordinate Rotation DIgital Computer) et dont la première publication, par Jack E. Volder, date de 1959 7.
X
Y
Il s’agit tout d’abord de casser un mythe ! Non, les fonctions trigonométriques ne sont pas calculées avec des séries de Taylor. tan ( x) =x+ 1 x 3+ 2 x 5+ 17 x 7+... 3 15 315
Il faut bien comprendre qu’à cette époque, les processeurs ne traitaient que de l’addition et dans certains cas de la soustraction. Donc, la multiplication était coûteuse en temps et donc peu efficace. De plus, la mémoire était vraiment très petite et les pro HP Journal: www.hpl.hp.com/hpjournal/journal.html www.jacques-laporte.org/LeSecretDesAlgorithmes.htm 3 HPJ-1977-05.pdf 4 HPJ-1977-06.pdf 5 HPJ-1977-11.pdf 6 HPJ-1978-04.pdf 7 VOLDER, Jack E., The CORDIC Trigonometric Computing Technique. IRE Transactions on Electronic Computers, septembre 1959 1 2
20 flash informatique
θ x Pour cela, on prend un vecteur de départ connu, par exemple un vecteur unité, et on le fait tourner d’un angle θi précis et connu qui devient toujours plus petit lorsque l’on s’approche de notre Y angle de départ. On calcule au fur et à mesure le rapport i Xi à chaque rotation.
ROULET, François. La saga HP-35. FI 7/07. flashinformatique.epfl.ch/ spip.php?article1366
8
Algorithme CORDIC y
Calculons ensuite
X
X3
X3
cos (
θ3
X1
Y3
θ1
cos (
Y1 x
Démonstration
) = XY1
1
1
3
)
et tan ( 1+
) = XY2
2
3
=Y2+tan (
3
X2' tan (
3
Y2'+tan (
3
et Yi '=
X2 θ2
) Y2')=cos ( 2) X3'
X3
cos (
2) cos ( 3)
cos (
2
Y3
) cos ( 3)
cos (
cos (
i
1'
i
1'
i ) cos (
) cos (
Xi
Yi i 1
i 1
) ... cos ( 2)
) ... cos ( 2)
et toujours tan ( ) tan ( i +
Y'
Y
) = Xi = Xi '
i 1 +...+ 1
i
i
Deuxième astuce
Y1
x
On commence par les équations de rotation suivantes: X2=cos (
) X2'=Y3'=
) Yi 1 '+tan ( i ) X i
avec Xi '=
θ1
3
) X2=cos ( 2) (Y2'+tan ( 3) X2)' =cos ( 2) Y3'
) Y2'=X3'=
Xi '=X i 1 ' tan ( Yi '=Y i
Y2
tan (
Ce qui nous donne, de manière générale, l’équation de récurrence suivante:
2
y
X1
) Y2=cos ( 2) (X2'
=X2 tan (
où l’on pose
Y2
θ
Nous avons par définition: tan (
)
Y3
θ2
Y
3
) X1 sin ( 2) Y1 Y2=cos ( 2) Y1+sin ( 2) X1 2
On va choisir θi de manière à ce que tan(θi) soit une puissance de 10: tan(θi) = 10-j . Nos équations deviennent alors: Xi' = X(i-1)' - 10(-j). Y(i-1)'
Yi' = Y(i-1)' + 10(-j). X(i-1)'
On a remplacé une multiplication par un simple décalage (shift), il ne nous reste plus que l’addition et la soustraction. Nous devons donc construire une table avec les valeurs de θi , ce qui nous donne:
Première astuce
j
On va faire apparaître la tangente, pour cela on va diviser l’équation précédente de chaque côté par cos (θ2), ce qui nous donne:
tan(θi) = 10-j
θi
0
1
45°
1
0.1
5.710593137499°
) Y1=X2'
2
0.01
0.572938697683°
3
0.001
0.057295760414°
) X1=Y2'
4
0.0001
0.005729577932°
5
0.00001
0.000572957795°
X2
cos (
2
Y2
cos (
2
) )
=X1 tan (
2
=Y1+tan (
2
Pourquoi astuce ? tan ( 1+
2
) = XY2 = XY2'' 2
2
Les rapports restent identiques !
Un esprit aiguisé ne manquera pas de remarquer qu’il faut calculer les angles ci-dessus et si possible, sans machine à calculer si l’on veut être cohérent. Il existe plusieurs méthodes qui sont toutes longues et fastidieuses, et que nos ancêtres, qui ont calculé les tables de trigonométrie 9, ont abondamment utilisées, voire inventées. Construction des tables trigonométriques: en.wikipedia.org/wiki/Trigo-
9
nometric_tables
29 OCTOBRE 2013 - N° 6
21
Algorithme CORDIC
Exemple Le nombre de décimales est volontairement plus grand que celui d’une calculatrice afin, justement, de faire mieux que ces dernières à l’aide uniquement d’un crayon et d’une feuille de papier. Remarque: tous les angles sont en degrés. θ=18 X0=1 Y0=0 j = 0 tan(θi)=1; θi=45 0+45>18⇒STOP
j=1 tan(θi)=0.1; θi=5.710593137499 0+5.710593137499=5.710593137499<18 X1'=X0−0.1⋅Y0=1−0.1⋅0=1.0 Y1'=Y0+0.1⋅X0=0+0.1⋅1=0.1 5.710593137499+5.710593137499=11.421186274999<18 X2'=X1'−0.1⋅Y1'=1.0−0.1⋅0.1=0.99 Y2'=Y1'+0.1⋅X1'=0.1−0.1⋅1.0=0.20 11.421186274999+5.710593137499=17.131779412498<18 X3'=X2'−0.1⋅Y2'=0.99−0.1⋅0.20=0.970 Y3'=Y2'+0.1⋅X2'=0.20+0.1⋅0.99=0.299 17.131779412498+5.710593137499>18⇒STOP
j=2 tan(θi)=0.01; θi=0.572938697683 17.131779412498+0.572938697683=17.704718110182<18 X4'=X3'−0.01⋅Y3'=0.970−0.01⋅0.299=0.96701 Y4'=Y3'+0.01⋅X3'=0.299+0.01⋅0.970=0.30870 17.704718110182+0.572938697683>18⇒STOP
j=3 tan(θi)=0.001; θi=0.057295760414 17.704718110182+0.057295760414=17.762013870596<18 X5'=X4'−0.001⋅Y4'=0.96701−0.001⋅0.30870=0.96670130 Y5'=Y4'+0.001⋅X4'=0.30870+0.001⋅0.96701=0.30966701 17.762013870596+0.057295760414=17.819309631011<18 X6'=X5'−0.001⋅Y5'=0.96670130−0.001⋅0.30966701=0.96639163299 Y6'=Y5'+0.001⋅X5'=0.30966701+0.001⋅0.96670130=0.31063371130 17.819309631011+0.057295760414=17.876605391425<18 X7'=X6'−0.001⋅Y6'=0.96639163299−0.001⋅0.31063371130=0.96608099927870 Y7'=Y6'+0.001⋅X6'=0.31063371130+0.001⋅0.96639163299=0.31160010293299 17.876605391425+0.057295760414=17.933901151840<18 X8'=X7'−0.001⋅Y7'=0.96608099927870−0.001⋅0.31160010293299=0.96576939917576701 Y8'=Y7'+0.001⋅X7'=0.31160010293299+0.001⋅0.96608099927870=0.31256618393226870 17.933901151840+0.057295760414=17.991196912254<18 X9'=X8'−0.001⋅Y8'=0.96576939917576701−0.001⋅0.31256618393226870=0.96545683299183474130 Y9'=Y8'+0.001⋅X8'=0.31256618393226870+0.001⋅0.96576939917576701=0.31353195333144446701 17.991196912254+0.057295760414>18⇒STOP …
22 flash informatique
Algorithme CORDIC
j = 17 tan(θi)=0.00000000000000001; θi=0.000000000000000572957795130823 … 17.999999999999999359893381975846+0.000000000000000572957795130823 =17999999999999999932851177106669<18 X80'=X79'−0.00000000000000001⋅Y79' =0.965408654718813480084209861507−0.00000000000000001⋅0.313680286831855612515132822077 =0.965408654718813476947406993189 Y80'=Y79'+0.00000000000000001⋅X79' =0.313680286831855612515132822077+0.00000000000000001⋅0.965408654718813480084209861507 =0.313680286831855622169219369265
On vérifie à l’aide de la commande bc (bc - An arbitrary precision calculator language) de la fondation GNU (gnu.org): # 25 décimales et une division echo 'scale=25;0.313680286831855622169219369265/0.965408654718813476947406993189' | bc 0.3249196962329063248601754 # 18 décimales, a(1) = arctg(1) = pi/4, theta = (18/45) * pi/4 # tg(theta) = sin(theta)/cos(theta) echo 'scale=25;s(18/45*a(1))/c(18/45*a(1))' | bc -l 0.3249196962329063261558713 HP-15C: tan(18) = 0.324919696
Remarques Nous avons vu et appliqué l’algorithme CORDIC. z L’algorithme CORDIC original (Volder) permet de dépasser l’angle initial, mais change de sens de rotation lorsqu’il dépasse l’angle initial. Maintenant, on va voir comment les ingénieurs de HP ont fait: z ils ne dépassent jamais l’angle initial (comme l’exemple ci-dessus); z ils utilisent le radian à la place du degré; z ils utilisent l’approximation suivante: tan(x)≅x pour x petit.
Méthode HP Remarque: tous les angles sont en radian, et 18°=0.314159265358979323 [rad]. θ=0.314159265358979323= +0⋅0.78539816339744830 +3⋅0.09966865249116202 +1⋅0.00999966668666523 +5⋅0.00099999966666686 +1⋅0.00009999999966666 +5⋅0.00000999999999966 +0.00000364286582877
On vérifie que
tan(0.00000364286582877)=0.00000364
286582878611418,
où 0.00000364286582877 représente le reste de l’addition. On utilisera ce reste comme valeur de départ pour Y0.
θ=0.314159265358979323 X0=1 Y0=0.00000364286582877
j = 0 (0 boucle) tan(θi)=1; θi=0.78539816339744830
j = 1 (3 boucles) tan(θi)=0.1; θi=0.09966865249116202 0.09966865249116202<0.314159265358979323 X1'=X0−0.1⋅Y0=1−0.1⋅0.00000364286582877=0.99999963571341713 Y1'=Y0+0.1⋅X0=0.00000364286582877+0.1⋅1=0.10000364286582877 X2'=X1'−0.1⋅Y1' Y2'=Y1'+0.1⋅X1' X3'=X2'−0.1⋅Y2' Y3'=Y2'+0.1⋅X2'
j = 2 (1 boucle) tan(θi)=0.01; θi=0.00999966668666523 X4'=X3'−0.01⋅Y3' Y4'=Y3'+0.01⋅X3'
j = 3 (5 boucles) tan(θi)=0.001; θi=0.00099999966666686 X5'=X4'−0.001⋅Y4' Y5'=Y4'+0.001⋅X4' … X9'=X8'−0.001⋅Y8' Y9'=Y8'+0.001⋅X8'
j = 4 (1 boucle) tan(θi)=0.0001; θi=0.00009999999966666 X10'=X9'−0.0001⋅Y9' Y10'=Y9'+0.0001⋅X9'
j = 5 (5 boucles) tan(θi)=0.00001; θi=0.00099999966666686 X11'=X10'−0.00001⋅Y10' Y11'=Y10'+0.00001⋅X10' … X15'=X14'−0.00001⋅Y14'=0.96540865472374197 Y15'=Y14'+0.00001⋅X14'=0.31368028683345698
On vérifie: # 18 décimales et une division echo 'scale=18;0.31368028683345698/0.96540865472374197' | bc 0.324919696232906317 # 18 décimales, a(1) = arctg(1) = pi/4, θ = (18/45) * pi/4 # tg(theta) = sin(theta)/cos(theta) echo 'scale=18;s(18/45*a(1))/c(18/45*a(1))' | bc -l 0.324919696232906325
29 OCTOBRE 2013 - N° 6
23
Algorithme CORDIC 16 décimales exactes pour 15 itérations: REMARQUABLE! HP-15C: tan(18) = 0.324919696
Le nombre de 9 et de 6 apparaissant dans les constantes cidessus n’aura pas échappé à un oeil exercé. Raison pour laquelle, Dave Cochran concepteur de la HP35 a choisi, afin d’économiser de la place mémoire, de ne mettre qu’une constante en mémoire et de calculer les autres à l’aide d’une boucle et de chiffres donnant la position et le nombre de 9 (ou de 6).
Fonctions trigonométriques À l’aide du calcul de tan(θ), on déduit les fonctions trigonométriques sin & cos à l’aide des équations suivantes: sin ( ) =
cos ( ) =
tan ( )
1+tan ( ) 2 cot ( )
1+cot ( ) 2
avec tan ( ) = Y
X
et cot ( ) = X
la fameuse HP-35
24 flash informatique
Y
On inverse simplement X et Y, puis on utilise la même équation et donc le même algorithme de calcul. Il reste encore à savoir calculer une racine carrée, ce qui est justement le sujet du premier article de William E. Egbert.
Bonus On peut aussi utiliser les nombres complexes pour effectuer des rotations, on a vu que l’on a tourné: z 0 fois pour j = 0 z 3 fois pour j = 1 z 1 fois pour j = 2 z 5 fois pour j = 3 z 1 fois pour j = 4 z 5 fois pour j = 5 Ce qui nous donne: X+i⋅Y≅(1+i⋅0) ⋅[(1+i⋅0.1) 3⋅(1+i⋅0.01) ⋅(1+i⋅0.001) 5⋅(1+i⋅0.0001) ⋅(1+i⋅0.0001) 5] X+i⋅Y≅0.965409797+i⋅0.313676769 0.313676769 tan ( 18) =0.324919 Y = =0.324915 X 0.965409797
On retrouve facilement l’algorithme ci-dessus ! n