tech-net archive

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

Re: happy eyesockets



gdt%lexort.com@localhost (Greg Troxel) writes:

>"Jonathan A. Kollasch" <jakllsch%kollasch.net@localhost> writes:

>> Attached is a patch to actually treat ICMP(v6) host/net/port unreachables
>> during TCP establishment in a way that doesn't cause ~75 second delays
>> waiting for multiple retransmits to all be reported as unreachable before
>> actually letting getaddrinfo(3) fall back to the next address.
>>
>> Linux seems to handle this like this already.

>I don't object and I think you have a good point, but what do the
>standards say?


RFC1122 describes how to handle ICMP messages and distinguishes
between soft errors (event gets registered, but protocol continues)
and hard errors (a TCP connection is aborted).

Hard errors would be a destination unreachable code 2-4 (bad protocol,
bad port, need fragmentation). The RFC explictely forbids to abort
the connection on code 0,1,5 (net unreachable, host unreachable,
source routing failed).

We translate code 2 and 3 to ECONNREFUSED, code 4 to EMSGSIZE, code 0
to  and code 0,1 and 5 to EHOSTUNREACH.

ENETUNREACH is not the result of an ICMP error, but of a missing
route.

The ICMP6 codes are somewhat different, and there are more RFCs that
apply. It also knows a condition signaled with EHOSTDOWN as a result
of a destination unreachable ICMP6 code 3.



Home | Main Index | Thread Index | Old Index