IPv6 support of ipmitool

Solution Unverified - Updated -

Environment

  • Red Hat Enterprise Linux 5
  • Red Hat Enterprise Linux 6
  • ipmitool-1.8.11-13.el6.1.x86_64

Issue

  • The condition of the IPv6 support of ipmitool.

Resolution

ipmitool does not support IPv6 at the moment. Red Hat does not guarantee, if there is going to be support for it in future

Root Cause

Looking at source code, ipmitool sources use obsoleted interfaces that are IPv4 only.

More importantly, the V2.0 IPMI specification does not support IPV6.

Diagnostic Steps

| If you want to check things on your own, have a look at the "interface
| checklist" in http://www.akkadia.org/drepper/userapi-ipv6.html.

Preparation: get sources for analysis
* Take a RHEL6 system
* Enable the source channels
* Use "yumdownloader --source ipmitool" to fetch the ipmitool source RPM.
* Do an "rpmbuild -bp ipmitool-1.8.11-13.el6.1.src.rpm" to unpack the sources.
(Install any missing build dependencies that the command complains about,
or take the shortcut of bypassing build dependency checking using
"--nodeps" - most of the time, the build dependencies are only really needed
when you really want to build the code, and the sources can often be
unpacked without installing additional RPMs)

Main task: analyze the source to identify whether it supports IPv6.

Q: Does RHEL6's ipmitool contain code that uses the obsoleted interfaces?

A: Yes, RHEL6's ipmitool sources use obsoleted interfaces that are IPv4 only /
that are not address family independent:
[ray@rhel6 ipmitool-1.8.11]$ grep -R -E -l 'sockaddr_in|gethostbyname|gethostbyname2|getservbyname|gethostbyaddr|getservbyport|inet_addr|inet_aton|inet_nsap_addr|inet_ntoa|inet_nsap_ntoa|inet_makeaddr|inet_netof|inet_network|inet_neta|inet_net_ntop|inet_net_pton|rcmd|rexec|rresvport' .
./lib/ipmi_tsol.c
./src/plugins/lanplus/lanplus.c.sol-leak
./src/plugins/lanplus/lanplus.c.retransmit
./src/plugins/lanplus/lanplus.c
./src/plugins/lan/lan.c.retransmit
./src/plugins/lan/lan.c
./install-sh
./config.h.in
./configure
./include/ipmitool/ipmi_intf.h
./include/ipmitool/ipmi_intf.h.set-kg
./configure.in

This is a strong indication that the code does not support IPv6, but it
is not proof - for portability reasons, some software packages can have
both code using the obsolete interfaces and code using the address
family independent interfaces in them, so we need to ask a second
question...

Q: Does RHEL6's ipmitool contain code that uses the new interfaces?

A: No, RHEL6's ipmitool sources do not use family independent interfaces:
[ray@rhel6 ipmitool-1.8.11]$ grep -R -E -l 'sockaddr_storage|getaddrinfo|getnameinfo|rcmd_af|rexec_af|rresvport_af' .
[ray@rhel6 ipmitool-1.8.11]$

(Use of the family independent interfaces is a strong indication that
the code has some level of IPv6 support. The full level of support would
need to be determined through detailed code review and/or testing)

Whilst ipmitool uses the older address calls it does make connections, but always subsequently fails. This is due to the fact that the IPMI Specification is explicitly IPV4 only.

http://www.intel.com/design/servers/ipmi/spec.htm
http://download.intel.com/design/servers/ipmi/IPMI2_0E4_Markup_061209.pdf

The protocol only provides space for IPV4 addresses in its protocol specification and extending for IPV6 will require a complete overhaul of the packet specification. As of 2012-11 there is no obvious sign that there has been any work done to handle this. Whilst there is apparently at least one BMC out there capable of talking IPV6 the extensions/hacks/workarounds they have chosen to use are unknown.

This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.

Close

Welcome! Check out the Getting Started with Red Hat page for quick tours and guides for common tasks.