From: Vlad Yasevich <vladislav.yasevich@hp.com>
To: Felix von Leitner <felix-kernel@fefe.de>
Cc: Brian Haley <brian.haley@hp.com>, netdev@vger.kernel.org
Subject: Re: socket api problem: can't bind an ipv6 socket to ::ffff:0.0.0.0
Date: Tue, 17 Mar 2009 10:57:28 -0400 [thread overview]
Message-ID: <49BFBA58.30501@hp.com> (raw)
In-Reply-To: <20090317141432.GA10575@codeblau.de>
Felix von Leitner wrote:
>> Sorry, I just don't buy this. You imply that you don't want the overhead
>> of storing IPv6 addresses, but you still get this with ::ffff:0.0.0.0.
>> In fact, now your overhead is even worse since ever IPv4 address will be
>> stored stored and interpreted as IPv6 128 bit address.
>
>> If you really care about overhead, run 2 services. Your IPv6 service
>> will only track real IPv6 addresses and will reduce you total overhead.
>
> I am worried about the overhead of storing the IPv6 addresses.
> I am not storing them in the IPv4 case.
>
> But the socket code has been rewritten to use IPv6 addresses only,
> precisely because IPv4-mapped addresses exist.
So, what you want to do is provide IPv4 only service on a fully
configured dual-stacked machine by running an IPv6 enabled application?
Why do you not want to provide IPv6 side of the same service?
You mentioned overhead (and I am guessing that's the answer the above question),
but is the number of IPv6 clients so high that your service would
not be able to handle it.
As I've already mentioned, your overhead of tracking IPv6 clients is actually
lower that tracking all the IPv4 clients using mapped addresses.
One way of preventing the tracking IPv6 clients is by disallowing IPv6 traffic
or even not configuring any IPv6 addresses. That could get what you want
right now, without waiting for a kernel patch.
>
>> If you don't care about overhead, just bind a single socket to :: and
>> you will get behavior identical for the ::fff:0.0.0.0 case, but with
>> the added benefit of tracking real ipv6 addresses as well.
>
> You probably mean well but please stick to the problem at hand and don't
> speculate about my app.
>
>> Having written support for ::ffff:0.0.0.0, I've always thought it was
>> a bastardized case that didn't provide any benefits. It was like saying:
>> "I've got IPv6 on my system, but I don't really support it, even though
>> I pretend that I do."
>
> The app has a command line option to specify which address to bind to.
> The app understands IPv4 addresses and converts them to ipv4 mapped
> addresses so it can only deal with sockaddr_in6 when talking to the
> kernel and does not need to store info on what kind of socket family it
> is dealing with.
>
> If someone specifies 0.0.0.0, it does not work. It's that easy.
>
> Now it may be a fascinating side discussion on whether you think IPv4
> mapped 0.0.0.0 is useful or not, but rest assured: it is useful to at
> least one high profile app that is so far running on Linux.
>
In this case, you are making a trade-off of application complexity against
kernel complexity. You are making your application much simpler, while demanding
more complexity from the kernel.
It is your right as an application developer, and it our right as kernel developers
to push back and provide alternatives.
>>> Why would you say that?
>> Because that case doesn't provide any benefits.
>
> You may not see it but it does.
>
>> It only has the drawback that you have to deal with ipv4-mapped IPv6
>> addresses witch is the overhead of the whole thing.
>
> That is not a drawback. On the contrary. It greatly simplifies how the
> app deals with the socket API.
>
>> If you are prepared to deal with it, you might as well deal with real ipv6 addresses
>> at the same time and mitigate your overhead somewhat.
>
> You are currently proving all the snide remarks by the BSD people about
> the Linux IP stack true, and the "professionalism" snide remarks of the
> Solaris people. Great work, man.
>
This is really a great way to convince someone to do the work... :/
-vlad
next prev parent reply other threads:[~2009-03-17 14:57 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-03-16 23:48 socket api problem: can't bind an ipv6 socket to ::ffff:0.0.0.0 Felix von Leitner
2009-03-17 0:00 ` Stephen Hemminger
2009-03-17 0:18 ` Felix von Leitner
2009-03-17 2:26 ` Brian Haley
2009-03-17 2:47 ` Eric Dumazet
2009-03-17 8:51 ` Bjørn Mork
2009-03-17 16:00 ` Brian Haley
2009-03-17 12:58 ` Felix von Leitner
2009-03-17 13:47 ` Vlad Yasevich
2009-03-17 14:14 ` Felix von Leitner
2009-03-17 14:57 ` Vlad Yasevich [this message]
2009-03-17 17:51 ` Felix von Leitner
2009-03-17 15:21 ` Eric Dumazet
2009-03-17 18:01 ` Felix von Leitner
2009-03-17 15:59 ` Brian Haley
[not found] ` <20090317180840.GC13270@codeblau.de>
2009-03-17 19:21 ` Brian Haley
2009-03-17 19:31 ` David Miller
2009-03-17 21:05 ` Vlad Yasevich
2009-03-17 21:05 ` [RFC PATCH 1/4] ipv6: Disallow binding to v4-mapped address on v6-only socket Vlad Yasevich
2009-03-17 21:06 ` [RFC PATCH 2/4] ipv6: Allow ipv4 wildcard binds after ipv6 address binds Vlad Yasevich
2009-03-17 21:06 ` [RFC PATCH 3/4] ipv6: Make v4-mapped bindings consitant with IPv4 Vlad Yasevich
2009-03-17 21:06 ` [RFC PATCH 4/4] ipv6: Fix conflict resolutions during ipv6 binding Vlad Yasevich
2009-03-18 9:13 ` socket api problem: can't bind an ipv6 socket to ::ffff:0.0.0.0 Jarek Poplawski
2009-03-18 21:36 ` David Miller
2009-03-18 21:53 ` Jarek Poplawski
2009-03-19 0:32 ` David Miller
2009-03-17 9:03 ` Bjørn Mork
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=49BFBA58.30501@hp.com \
--to=vladislav.yasevich@hp.com \
--cc=brian.haley@hp.com \
--cc=felix-kernel@fefe.de \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).