[josm-dev] IPv6 problems

Dirk Stöcker openstreetmap at dstoecker.de
Fri Jan 1 20:12:50 UTC 2016


On Fri, 1 Jan 2016, Philip Homburg wrote:

> - Ideally, operating systems should ship with a happy eyeballs implementation
>  in the C library. I don't know any that does. It is not such a great idea
>  for applications to roll their own. Mostly because you may want knobs to
>  configure things system wide.

For C there probably are libraries.

> - All applications should loop over all addresses returned by getaddrinfo.
>  There is simply no excuse not to. If java makes it impossible to iterate
>  over all addresses that it is java that is horribly broken.

I disagree here. ATM most services only have one IPv4 address. In the 
transition time between protocols many will have IPv4 AND IPv6 but in the 
near future (let's say 5-10 years) most will either have IPv4 OR IPv6 and 
dual stack will slowly fade out.

And it's not so easy to handle multiple connects. You can either optimize 
for speed (open multiple connections parallel) or for load (open one after 
the other) or ignore it (single connect) or randomly choose an address 
(e.g. what postfix does). All of these methods have advantages and 
disadvantages and depend on the application.

And it's not so easy to decide when a connection works or not, as it can 
fail on multiple levels and so on and so on. Many programs are extremely 
simple and implementing a full featured we-try-all network access is total 
overkill. So also in the future the majority of tools will only open one 
connection and try once. It's wishful thinking to assume otherwise.

For our company applications it took me a lot of time and experience to 
create a non-blocking non-threading portable C network library to cope 
with the many existing issues. I know how much work that involves both in 
the application and the libraries.

Thus the main question here is if parallel connects are important 
enough, so that JOSM needs to support that feature or not. Currently I 
think not.

We have a number of network issues with the Java network code beside the 
rather ugly IPv6 handling and maybe in the future we'll replace it with 
another library and maybe that will include algorithms for multiple 
connects. The question already came up in a recent ticket. But that's a 
lot of work and also does not magically solve all the problems.

Ciao
-- 
http://www.dstoecker.eu/ (PGP key available)



More information about the josm-dev mailing list