IPv6 CARE
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 :
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).
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).
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.