IPv6 CARE

Higher Edu - Research dev card
Development from the higher education and research community
  • Creation or important update: 17/04/09
  • Minor correction: 16/12/09
Keywords

IPv6 CARE : IPv6 compliance testing

This software was developed (or is under development) within the higher education and research community. Its stability can vary (see fields below) and its working state is not guaranteed.
  • Web site
  • System: UNIX-like
  • Current version: 2.2 - 9 March 2009
  • License(s): Other - Apache Licence (open source without copyleft)
  • Status: stable release
  • Support: maintained, ongoing development
  • Designer(s): Etienne DublΓ©
  • Contact designer(s): etienne.duble _at_ urec.cnrs.fr
  • Laboratory, service: UREC, EGEE Project

 

General software features

IPv6 CARE, β€œIPv6 Compliance Automatic Runtime Experiment”, is a Linux tool able to diagnose the IPv6 compliance of programs at run time.

Mainly, it detects non IPv6 compliant function calls performed by the running program, for example gethostbyname().

For each problem detected, it generates :

  • a description of the problem
  • a tip explaining how to avoid this problem
  • the function calls stack, which is useful in order to know where the calls were performed in the source code

Moreover it generates a log file of all network related function calls.

IPv6 CARE works with all programs linked to the standard shared library (libc), which means:

  • Programs compiled (C/C++, …) in a standard way (that is, not statically compiled).
  • Programs written in some "Interpreted" language (Java, Perl, Python,…) if the interpreter or the virtual machine is compiled in a standard way (see limits below).
Usage example:
This shows how to test the IPv6 compliance of the telnet program:

$ ipv6_care check -v telnet localhost 7777
IPV6 CARE detected: getaddrinfo() with [ ai_family=AF_UNSPEC ai_socktype=SOCK_STREAM nodename=localhost servname=7777 ]
IPV6 CARE detected: getnameinfo() with [ sa.ip=127.0.0.1 sa.port=7777 ]
Trying 127.0.0.1…
IPV6 CARE detected: socket() with [ domain=AF_INET type=SOCK_STREAM protocol=ip ]
IPV6 CARE detected: connect() with [ socket=3 address.ip=127.0.0.1 address.port=7777 ]
IPV6 CARE detected: getnameinfo() with [ sa.ip=::1 sa.port=7777 ]
Trying ::1…
IPV6 CARE detected: close() with [ fd=3 ]
IPV6 CARE detected: socket() with [ domain=AF_INET6 type=SOCK_STREAM protocol=ip ]
IPV6 CARE detected: connect() with [ socket=3 address.ip=::1 address.port=7777 ]
telnet: Unable to connect to remote host: Connection refused
IPV6 CARE detected: close() with [ fd=3 ]
β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”
IPv6 diagnosis for β€˜telnet localhost 7777’ was generated in: /tmp/ipv6_diagnosis/telnet/by_pid/pid_16537
β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”
$

The generated messages show that telnet has an IPv6 compliant behavior (mainly because it uses getaddrinfo).
For more information, we can check the details of the diagnosis in the directory indicated.

Interoperability:
Until now IPv6 CARE has only been tested on Linux systems.

It should also work on other UNIX-like systems if they allow dynamic loading of shared libraries (defined by the environment variable LD_PRELOAD) and if they have the program β€œaddr2line”.

Limits:

In the case of "interpreted" langages (in the sense that they are not compiled into machine code), the tool interacts between the interpreter and the standard library (libc). For this reason IPv6 CARE diagnoses the behavior of the interpreter and not directly the script's behavior, which makes the diagnosis harder to be understood. Please refer to the documentation for further information on this issue.

Durability indicators:
IPv6 CARE is open source software and it is published on the sourceforge server in order to extend its audience and to allow a continuation of the development, even after the end of the EGEE project.


Downloads statistics:

http://sourceforge.net/project/stats/detail.php?gr...

Help and documentation
Forum: http://sourceforge.net/forum/forum.php?forum_id=89...
User guide: https://sourceforge.net/project/showfiles.php?grou...
Wikipedia article (in french) : http://fr.wikipedia.org/wiki/IPv6_CARE
Article explaining how to use IPv6 CARE (french, early version) : http://www.g6.asso.fr/blog/?p=33
Examples of IPv6 compliance reports using IPv6 CARE: https://edms.cern.ch/document/980424, https://edms.cern.ch/document/980820.

Contribution:
For contributions to IPv6 CARE please contact the author of this card.

Context in which the software is used

I developped this program for the EGEE project, in order to ease the IPV6 compliance tests of the middleware (gLite).