[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: One socket per AF (Was: 6to4 using ::FFFF:0000:0000/96...)



Christian Huitema wrote :

In the different view, letting applications to have only one socket
interface is *simpler* than obliging them to know whether the IP layer works in IPv4 or IPv6.

We can debate whether that is in fact simpler.
Right.
In this instance, that sems useful.

Most "simple programming" is achieved using high level constructs
such as RPC or Web interfaces. The fraction of programs written on
the "socket" API tend to be written by sophisticated developers who
like "bare to the metal" constructs.
In my view, that's legitimate.
But IMO conformance to RFC 2353 sec 3.7 doesn't make dual stacks less
"bare to the metal"

But even if a single listening was a goal,
In my reading of RFC 2335-3.7, this *was* a goal, and a good one.

it can be achieved without messing with address format,
Listening for an address without being concerned with the remote host
being IPv6 or IPv4 only, as RFC 2353-3.7 permits, was IMO not "messing
with address formats".
Permitting to express a 32 bit address in a 128 bit format was IMO a
good and natural decision.

simply by avoiding early binding of the socket to a specific address
type, and then using specific addresses in their native formats
whenever necessary.
Yes it can work.
And applications that have this behavior can keep it, even if dual
stacks do conform to RFC 2353-3.7.
But they can hardly be considered as *IPv6-only*.
IPv6-only applications *do need* RFC 2353-3.7 dual stack conformance.

Deprecating mapped addresses would be a bad step backward, while
correcting RFC2535-3.7 conformance in dual stacks that don't conform
would be a good step forward.
I would have no adverse effect that I know on any existing application.

The bottom line would be that always:
- Server applications that have IPv4 sockets, or that have unspecified
address family sockets, will receive IPv4 addresses on them.
- Server applications that only have IPv6 sockets will receive IPv4
addresses on them, in mapped format.
- Client applications that have IPv6 sockets, and present on them remote host addresses that are IPv4 mapped addresses will, without having to tell more, activate their IPv4 stacks.
This seems to me the nice and simple logic we need.


Rémi