[josm-dev] IPv6 problems

Florian Lohoff f at zz.de
Fri Jan 1 12:31:45 UTC 2016

On Fri, Jan 01, 2016 at 01:09:30PM +0100, Simon Legner wrote:
> Hi!
> On Fri, Jan 1, 2016 at 12:47 AM, Florian Lohoff <f at zz.de> wrote:
> > So please - either fix ipv6 in JOSM by implementing the BCPs or
> > drop the ipv6 support completely - Currently you are breaking tons
> > of user setups and you actively blame ipv6 for it.
> I tried to find some reference implementations for the RFC6555 / Happy
> Eyeballs in Java – without success. None of the popular HTTP client
> libraries [1, 2, 3] seem to have any support for this algorithm.
> Instead, they seem to attempt connections sequentially to the resolved
> addresses [4, 5].
> On GitHub I could only find two Java demo projects on the
> java.net.Socket level [6, 7].

Its not about Happy Eyeballs as the real and only solution. Best Common
Practice is whenever you isse a connection and you get AAAA and A
records you try AAAA first and if they fail you fall back to A records
e.g. IPv6 first. This is the fundamental principle of IPv6 introduction
and transition. You NEED people to first try v6 as you want the traffic
to transition to the new protocol. IPv4 is DEAD - No RIR has v4 adresses
anymore so there will be no new Companys with v4 connectivity. Get
over it.

Currently josm tries to be clever and either does v6 or v4 and tries
to detect whether the host is v6 enabled. This is broken by design.
You cant detect whether you will be able to issue v6 connections
until you try. There are v6 blackholes in the internet, there is
intermittet connectivity, there are ULA prefixes which is just an v6
island whathever. Its the INTERNET - Everything is built on a "best
effort" base. It may work - it may also not. IPv6 put the responsibility
for the user experience in the hands of application writers by making
strong recommendations on how to write your applications. If it fails
because the application is broken people turn off ipv6 and will never 
ever turn it back on because of bad reputation. This will hurt
IPv6 adoption and in the end will hurt us all. 

I had all sorts of tricks in my josm startup scripts in the past years to 
tell josm to ignore v6 - to always enable ipv6 etc. First versions of
josm even thought they would be ipv6 enabled if there were a ::1 on
the lo interface. So the josm startup script included a

	"ifdown lo; josm &; sleep 30; ifup lo"

That got fixed - now i have the issue that i need to restart josm when i
move to a different network. Need to run tcpproxy in the background
to let josm connect to the tracer server because it does not do a ipv4 
fallback etc..

There are even more broken assumptions in josm. I live in the rural
outback and i have 348kbit/s - Sometimes on josm startup it fails to
fetch the motd or mappaint styles or whetever it tries to do on startup.
Some requests on startup timeout because my line is congested. This
causes josm to refuse to do ANY network interaction afterwards. You cant
download data etc etc. Sometimes i need to start josm 3-4 times until it
actually is willing to play with me. This never happens on a VDSL
50MBit/s connection etc.

I really ask myself how the HOT people work around those issues. Network
connectivity isnt even perfect in Germany, and is most likely even more
flaky in HOT areas. Is josm actually usable without internet
connectivity - editing offline files?

Florian Lohoff                                                 f at zz.de
      We need to self-defend - GnuPG/PGP enable your email today!
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 828 bytes
Desc: Digital signature
URL: <http://lists.openstreetmap.org/pipermail/josm-dev/attachments/20160101/1c9587df/attachment.sig>

More information about the josm-dev mailing list