[ipv6hackers] Windows 7/2008 R2 Improved Resilliency to IPv6 Floods
Owen DeLong
owend at he.net
Mon Apr 15 19:06:30 CEST 2013
On Apr 15, 2013, at 00:19 , Marc Heuse <mh at mh-sec.de> wrote:
> On 15.04.2013 05:24, Jim Small wrote:
>>> In my mind, that's a poor tradeoff. I would much rather have seen MS
>>> implement happy eyeballs. It would have much greater overall benefit,
>>> and none of the drawbacks.
>>
>> I understand what you're saying - that's exactly how I felt. I spoke to someone close to the Microsoft core networking team. From Microsoft's vantage point the most important thing is determinism. The problem with happy eyeballs is you have non-deterministic behavior. For an excellent discussion of this with references, see here:
>> http://blog.ioshints.info/2013/03/happy-eyeballs-happiness-defined-by.html
>>
If this is deterministic, it's about the only result from Windows that is.
Almost by definition, the internet is non-deterministic and when you're talking about
client connections, usually the most important thing is a good user experience. A
deterministically bad one is questionable at best.
>> It would be nice if there were an option to enable happy eyeballs though if the user/organization desired that behavior. But again, I think Microsoft is afraid of the supportability/costs of a non-deterministic approach.
>>
>> I' not sure I completely agree with the end result, but I understand where they are coming from.
>
> I understand Microsoft as well on this point. undeterministic behaviour
> is a big issue if you need to diagnose problems.
>
When you're in diagnostic mode, there are plenty of ways to force the
particular protocol you want. The solution to this is better instrumentation.
That's why we have the -6 option to ping, tracert, and netstat. (Or in most
operating systems ping/ping6, traceroute/traceroute6, etc.)
> But in my opinion, user experience should be the top priority, and IMHO
> the happy eyeballs technique is the best solution.
>
I agree with the first point. As to the second, it seems to be the best current
workaround. In the long run, IPv4 deprecation will help a lot.
> The common unix/network solution fails too at least for me (I mean the
> getaddr(ptr, "foo.com);while(ptr != NULL) { connect(foo->addr)... one)
> because if the IPv6 connection to the destination fails, the user has to
> wait for the timeout before the IPv4 address is tried.
That's why you should use non-blocking connect and select() to see
which one succeeded first.
> About the happy eyeballs technique - is there a simple best practice
> code published somewhere that is cross platform? That would be very
> helpful to point to and encourage developers to implement instead.
I'll work on creating one unless someone has a pointer to one.
Owen
More information about the Ipv6hackers
mailing list