[En-Nut-Discussion] TCP/IP problems with httpd
Ulrich Prinz
uprinz2 at netscape.net
Sun Jan 16 11:52:44 CET 2011
Hi!
Short summary of the email and phone discussion of Bernd and me:
The described Multicaststorm and possibly non proper funcioning PHYs
have an influence on the ping problem. They don't rise the problem but
they make it more visible cause they might slow down the stack and
therefore widen the time window where the ping problem can happen.
What we have to inspect in more detail is the behavior of the stack if a
host is retrieving any kind of non ICMP data from a Nut while it is
pinging it in parallel.
It looks like the ICMP stack is involved for ARP requests but cannot
handle more than one packet at a time. So if any kind of non ICMP packet
requires an ARP request everything works fine. If ICMP needs an ARP
request the system hangs for a long time. The larger the ammount of ARP
cache size is, the longer the system hangs. Not only the ICMP is
hanging, but any other packet with the host as destination is blocked too.
There are some possible solutions:
1) ICMP and ARP hev to be handled by two totally independent parts of
the stack so they can work in parallel.
2) In case of ICMP issues ARP, ICMP discards the Echo Request but
updates ARP. This will result in one packet lost. Normally that
shouldn't harm.
3) ICMP gets a small queue of 2..4 entries and can reorder this. In case
of an ICMP requiring an ARP first, the ICMP is moved one entry up and
the ARP is inserted instead.
If I take into account that IPv6 will need much more ARP and Multicast
handling and with Bernds explanations in mind I would prefer a
combination 1) and 3) where the connection handling parts of the stack
get a small queue and all of the protocols get their own handler. The
handlers may then decide if they need information from another part of
the stack and delay a packet or if they need to get more important
information and insert transfers at a higher position of the queue.
Well, its a lot of theoretical stuff in this thread so somehow me should
start to look into the code.
What about that idea?
Best regards
Ulrich
More information about the En-Nut-Discussion
mailing list