[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