From: BlaisorBlade <blaisorblade_spam@yahoo.it>
To: user-mode-linux-devel@lists.sourceforge.net
Cc: Lars Ellenberg <Lars.Ellenberg@linbit.com>,
Gerd Knorr <kraxel@bytesex.org>
Subject: Re: [uml-devel] uml "ip header error" for large (fragmented) udp packets
Date: Wed, 6 Oct 2004 19:50:46 +0200 [thread overview]
Message-ID: <200410061938.06648.blaisorblade_spam@yahoo.it> (raw)
In-Reply-To: </ydgn6vAKqzNNA6XYwRcEgI=lge@web.de>
On Sunday 03 October 2004 04:36, Lars Ellenberg wrote:
> in the upcomming new heartbeat design of linux-ha, we use relatively
> large udp packets (passing large xml blobs back and forth between the
> nodes). now, cluster development and testing is convenient on UML.
> but:
> uml seems to silently and systematically lose all fragmented
> udp packets, that is packages larger than mtu, and 1480 byte
> max for xml blobs just does not work out too good ...
> I investigated a little bit (using two simple perl snippets to
> generate/[not]receive the udp packets), and it turns out that:
> sending large (up to 64K; fragmented) udp packets
> using tuntap:
> HOST -> UML works.
> UML -> HOST nope :(
> UML <-> UML nope :( [ neither with mcast or other ]
>
> looking into /proc/net/snmp on the UMLs and the HOST
> show on the not receiving side an increase of
> InHdrError!
> (it never is reassembled into a proper udp packet)
>
> this is easy to reproduce (because it just happens all the time)
> tested with 2.6.6 and 2.6.8 plus respective UML patches.
>
> it seems to me that UML corrupts the ip header of
> fragmented udp packets somehow at sending time.
I've traced this with Ethereal (v0.10.5) running on tap0 and it complains that
the IP header checksum is always incorrect when the packet is fragmented.
This does not happen when running both programs on the host; I've set an mtu
of 1500 for "lo" fot this test.
However, it seems that Ethereal always shows the UDP checksum, which is
different, as incorrect for not fragmented packets, when they are sent over
the "lo" link (on my 2.6.7 host kernel); by comparison, when sending them
over local network it never complains. The Ethereal doc say that when
capturing on an interface that supports TCP checksum offloading (i.e.
hardware checksumming), this is normal for TCP checksums, so I guess this can
happen for UDP checksums, too.
But why the loopback driver should mark itself as capable of doing "hardware
checksum"? However, it seems that actually this is the situation. In the
source code, the loopback driver is marked as "needing no checksum at all
because it's safe (see NETIF_F_NO_CSUM in include/linux/skbuff.h).
Also, it seems that the UML code happily ignores specifying what checksum
support. And this could help us.
include/linux/skbuff.h describes the Checksum flags, and UML does not use
them: these two commands return no output.
find arch/um/ -name '*.[ch]'|xargs grep NETIF
find arch/um/ -name '*.[ch]'|xargs grep CHECKSUM
Actually I've never done any work *at all* on the networking code, so this is
just a wild guess.
> the way it is now we probably need to reanimate some of our old
> boxes to form a real test cluster. and believe me, that is no fun :(
I've tried UML 2.4, and it does not seem to experience this bug: it does not
increases the host error count in /proc/net/snmp, UdpRecv receives all
packet sizes (I stopped the test at 49100 bytes), and even Ethereal shows
correct datas. The test were run sending
the packets from UML to the Host, as you say.
So this could help you for now, while we try to find a clue about this. Quite
frankly, I must say that I'm not seeing any network kernel hacker here
(correct me if I'm wrong), so it will take some time to debug it. Maybe Gerd
Knorr is an exception, actually.
> if some kind soul would be able to fix that...
> would make cluster testing as we do it
> so much more convenient :-)
--
Paolo Giarrusso, aka Blaisorblade
Linux registered user n. 292729
-------------------------------------------------------
This SF.net email is sponsored by: IT Product Guide on ITManagersJournal
Use IT products in your business? Tell us what you think of them. Give us
Your Opinions, Get Free ThinkGeek Gift Certificates! Click to find out more
http://productguide.itmanagersjournal.com/guidepromo.tmpl
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel
next prev parent reply other threads:[~2004-10-06 18:02 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-10-03 2:36 [uml-devel] uml "ip header error" for large (fragmented) udp packets Lars Ellenberg
2004-10-03 15:11 ` BlaisorBlade
2004-10-03 19:29 ` Lars Ellenberg
2004-10-04 11:07 ` Gerd Knorr
2004-10-04 11:56 ` Henrik Nordstrom
2004-10-06 17:50 ` BlaisorBlade [this message]
2004-10-06 18:48 ` Lars Ellenberg
2004-10-06 20:35 ` Andi Kleen
2004-10-06 21:48 ` Lars Ellenberg
2004-10-07 18:41 ` BlaisorBlade
2004-10-07 18:41 ` BlaisorBlade
2004-10-07 20:24 ` Lars Ellenberg
2004-10-11 17:55 ` Lars Ellenberg
2004-10-12 0:03 ` [uml-devel] SOLVED: " Lars Ellenberg
2004-10-12 0:11 ` Andi Kleen
2004-10-12 1:10 ` BlaisorBlade
2004-10-12 1:53 ` Michael Richardson
2004-10-15 15:25 ` [uml-devel] larger MTU _does_ work Lars Ellenberg
2004-10-12 0:27 ` [uml-devel] SOLVED: uml "ip header error" for large (fragmented) udp packets BlaisorBlade
2004-10-12 14:00 ` Lars Ellenberg
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200410061938.06648.blaisorblade_spam@yahoo.it \
--to=blaisorblade_spam@yahoo.it \
--cc=Lars.Ellenberg@linbit.com \
--cc=kraxel@bytesex.org \
--cc=user-mode-linux-devel@lists.sourceforge.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox