linux-um archives
 help / color / mirror / Atom feed
From: Lars Ellenberg <Lars.Ellenberg@linbit.com>
To: user-mode-linux-devel@lists.sourceforge.net
Cc: lmb@suse.de, ak@suse.de
Subject: Re: [uml-devel] uml "ip header error" for large (fragmented) udp packets
Date: Wed, 6 Oct 2004 20:48:23 +0200	[thread overview]
Message-ID: <vm4cST3zEEx6OdPLK17ocyg=lge@web.de> (raw)
In-Reply-To: <200410061938.06648.blaisorblade_spam@yahoo.it>

> 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.

Well, then I take Andi Kleen and Lars Marowsky-Brée into CC for now.
Lars, because I expect him to be interessted in having UML as full
featured cluster simulation tool available, and Andi because I hope he
might know the network code much better than me...

FYI, full thread can be found for example at
http://thread.gmane.org/gmane.linux.uml.devel/4607

Thanks,

	Lars Ellenberg

/ 2004-10-06 19:50:46 +0200
\ BlaisorBlade:
> 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

  reply	other threads:[~2004-10-06 18:48 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
2004-10-06 18:48   ` Lars Ellenberg [this message]
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='vm4cST3zEEx6OdPLK17ocyg=lge@web.de' \
    --to=lars.ellenberg@linbit.com \
    --cc=ak@suse.de \
    --cc=lmb@suse.de \
    --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