Open MPI logo

Open MPI Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Development mailing list

From: Adrian Knoth (adi_at_[hidden])
Date: 2006-09-01 08:17:51


yesterday I felt impelled to create a new ORTE oob component: tcp6.

I was able to either compile the library with IPv4 or IPv6 support,
but not with both (so to say: two different ompi installations or
at least two different DSO versions).

As far as I can see, many functions use mca_oob_tcp_component.tcp_listen_sd.
Unfortunately, as I am not allowed to use v4mapped addresses (not supported
by the Windows IPv6 stack, disabled by default on *BSD), this socket
is either AF_INET or AF_INET6, but not both (both means AF_INET6 *and*
accepting v4mapped addresses).

Do you agree to go on with two oob components, tcp and tcp6?
There is a lot of duplicated code, but we might refactor this
when everything else will be done.

On the other hand, this whole procedure might be totally useless:
two nodes may exchange IPv4-URIs via IPv6 containing identical
RFC1918 networks. One would prefer IPv4 due to less overhead,
but with IPv6, these v4-addresses might be at different locations
anywhere in the world.

In other words: IPv6 must be tried first or mixing with IPv4
cannot be reliable. In this case, a lot of code may be removed
and we'll end up with either two installations/DSOs (a mentioned
above) or with runtime detection of af_family (i.e. look for
global IPv6 addresses and iff found, disable IPv4 completely)

What do you think - which way is best? Use cases?

mail: adi_at_[hidden]	PGP: v2-key via keyserver
Was du tun willst, tue ganz! Oder halb. Oder laß es bleiben.