IPv6 CARE

Fiche logiciel à valider
  • Création ou MAJ importante : 07/10/13
  • Correction mineure : 07/10/13
  • Rédacteur de la fiche : Etienne Dublé - Concepteur du logiciel - Laboratoire d'Informatique de Grenoble (CNRS, Grenoble INP, UMPC, Université Joseph Fourrier, INRIA)
  • Responsable thématique : fenix-contact fenix-contact (CNRS)
Mots-clés
Fiche en recherche de relecteurs
Cette fiche est en recherche de relecteurs. Si vous êtes intéressé(e)s, contactez-nous !

IPv6 CARE : outil d'aide à la migration des programmes vers IPv6 (Linux / UNIX)

Ce logiciel est en cours d'évaluation par la communauté PLUME. Si vous utilisez ce logiciel en production dans notre communauté, merci de déposer un commentaire.
Une fiche Dév Ens Sup est en relation avec cette fiche, consultez-la pour plus d'informations : IPv6 CARE
Description
Fonctionnalités générales

IPv6 CARE, "IPv6 Compliant Automatic Runtime Environment", est une boite à outils dédiée à la migration des programmes vers IPv6.

En utilisant un mécanisme avancé de détection des appels de fonctions réseau effectués par les programmes lorsqu'ils s'exécutent, l'outil permet de :

  • corriger à la volée les comportements non-compatible IPv6 d'un programme donné, le rendant ainsi compatible IPv6 (mode 'patch'),
  • détecter ces éventuels comportements non-IPv6,
  • générer un rapport détaillé de compatibilité en conséquence (mode 'check').

L'utilisation est très simple, il suffit de préfixer les commandes habituelles, par exemple

ipv6_care patch /etc/init.d/mysql start

Cette commande lance le service mysql avec le mode 'patch' activé de manière à le rendre compatible IPv6 (N.B. : les versions récentes de mysql sont maintenant compatibles IPv6).

On trouvera une démonstration concernant le mode 'patch' et le cas de mysql (serveur et client).

En mode 'check', le rapport généré indique, pour chaque problème détecté :

  • une description du problème,
  • un conseil sur la manière d'éviter ce problème,
  • la pile d'appels de fonctions, ce qui est utile pour identifier où dans le programme les appels ont été effectués.

De plus il génère un fichier traçant les appels de fonctions relatifs au réseau.

IPv6 CARE fonctionne avec une très grande majorité des programmes. Plus précisément, il s'agit des programmes liés à la librairie standard C partagée, c'est à dire :

  • les programmes compilés (C/C++, ...) de manière standard (c-à-d pas compilés en statique),
  • les programmes "interprétés" (Java, Perl, Python,...) dès lors que l'interpréteur ou la machine virtuelle est compilée de manière standard (voir limitations plus loin).
Interopérabilité

IPv6 CARE a été testé sur des systèmes Linux, FreeBSD et Open Solaris.
Il doit pouvoir fonctionner sur d'autres systèmes de type UNIX, la condition principale étant que ceux-ci disposent d'un mécanisme de chargement dynamique de librairie partagée (variable d'environnement LD_PRELOAD).

Contexte d'utilisation dans mon laboratoire/service

Ce programme a été développé initialement dans le cadre du projet de grille de calcul EGEE, qui devait rendre son middleware (gLite) compatible IPv6. Il a ensuite été repris par son concepteur, puis par l'équipe de recherche 'Drakkar' du Laboratoire d'Informatique de Grenoble (LIG).

Limitations, difficultés, fonctionnalités importantes non couvertes

Certains paramètres peuvent empêcher le chargement de IPv6 CARE à l'exécution d'un programme donné :

  • Les environnements sécurisés de type SELinux ou AppArmor, selon leur configuration.
  • Les exécutables dont le bit SUID / GUID est activé (il existe un moyen simple de contourner ce problème).
  • Les commandes qui ne transmettent pas toutes les variables d'environnement (ex : sudo, là aussi il existe un moyen simple de contourner ce problème).
  • Les programmes utilisant l'API RPC.

Le mode 'patch' a quelques limitations spécifiques :

  • La version actuelle (3.2d) ne gère que TCP.
  • L'outil ne va pas gérer correctement certains programmes faisant un usage très bas niveau des adresses IP, ou utilisant des fonctions autres que les fonctions standard de l'API socket.

Concernant le mode 'check', la principale difficulté concerne les langages "interprétés" (dans le sens général où ils ne sont pas compilés en langage machine). Dans ce cas, l'outil se place entre l'interpréteur et la librairie C. De ce fait, IPv6 CARE va diagnostiquer le comportement de l'interpréteur et non pas directement celui du script. Ceci rend le diagnostique généré plus difficile à comprendre.

Consulter la documentation pour plus d'informations sur ces limitations.

Environnement du logiciel
Distributions dans lesquelles ce logiciel est intégré

Ce logiciel n'a pas encore été intégré à une distribution.

Plates-formes

Dans la version actuelle, ce logiciel fonctionne sous Linux, OpenSolaris et FreeBSD.

Logiciels connexes

De manière à limiter les problèmes de portabilité, IPv6 CARE a été développé de manière à limiter au maximum ses dépendances. Celles-ci sont donc très bas niveau (librairie standard C, etc.) et ne devraient pas poser de problèmes.
En ce qui concerne le paquet source de IPv6 CARE, il se suffit donc à lui-même.
Pour le développement, le gestionnaire de version git et les "autotools" sont utilisés.

Autres logiciels aux fonctionnalités équivalentes

Aucun à ma connaissance.

Environnement de développement
Type de structure associée au développement

Ce logiciel est développé dans le cadre de l'équipe DRAKKAR du LIG, par moi-même. En cas de requête de nouvelle fonctionnalité demandant un travail important, d'autres personnes pourraient être impliquées.

Eléments de pérennité

Ce logiciel est open source et a été diffusé sur Sourceforge pour améliorer sa diffusion et permettre une maintenance continue. D'autre part, le logiciel étant maintenant mature, il demande peu de maintenance.

Références d'utilisateurs institutionnels
Environnement utilisateur
Liste de diffusion ou de discussion, support et forums
Documentation utilisateur
Contributions

Pour une éventuelle contribution, merci de contacter l'auteur de cette fiche.