From: Balraj Singh <balrajsingh@ieee.org>
To: Jon Crowcroft <jon.crowcroft@cl.cam.ac.uk>
Cc: John Haxby <john.haxby@oracle.com>,
"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
Ian Campbell <Ian.Campbell@citrix.com>,
Mirage List <cl-mirage@lists.cam.ac.uk>,
Anil Madhavapeddy <anil@recoil.org>
Subject: Re: Question about TCP checksum offload in Xen
Date: Thu, 5 Dec 2013 13:43:07 +0000 [thread overview]
Message-ID: <CANeYhgGZJb2HBfprA4ORNr-2c3JWHe83HWMrh-Vj7tSkCs6CPw@mail.gmail.com> (raw)
In-Reply-To: <CAEeTej+o4ZmLKPdSR0G4wjMTcWHVyFu8zWFca7pZQWwW0gQtAg@mail.gmail.com>
[-- Attachment #1.1: Type: text/plain, Size: 4294 bytes --]
That could work too to signal in the packet itself that the checksum is ok.
But I don't think the received packets had 0 in the chksum field. It was
just some random value, though I can check again.
Thanks,
Balraj
On Thu, Dec 5, 2013 at 1:15 PM, Jon Crowcroft <jon.crowcroft@cl.cam.ac.uk>wrote:
> i thought a value of 0 in the tcp chcksum field indicated "no checksum"
> and could be used in the cases you identify and ought not to trigger
> problems in correct code?
>
>
> On Thu, Dec 5, 2013 at 12:37 PM, John Haxby <john.haxby@oracle.com> wrote:
>
>> On 05/12/13 11:39, Ian Campbell wrote:
>> > On Thu, 2013-12-05 at 11:29 +0000, Anil Madhavapeddy wrote:
>> >> > On Tue, Dec 03, 2013 at 01:00:23PM +0000, Balraj Singh wrote:
>> >>> > > Hi,
>> >>> > >
>> >>> > > I'm working on verifying TCP checksums on incoming packets in
>> Mirage, but
>> >>> > > I've run into a bit of a problem.
>> >>> > >
>> >>> > > If TCP checksum offload is turned on on a virtual interface (this
>> is the
>> >>> > > default), and if the TCP connection is local to the machine, it
>> looks like
>> >>> > > Xen does not calculate the checksum at all. This may be valid
>> because Xen
>> >>> > > may be providing a stronger guarantee, but it means that incoming
>> packets
>> >>> > > don't have a valid checksum in the header. This then means that
>> in Mirage
>> >>> > > we can't just have checksum verification turned on all the time.
>> This
>> >>> > > would have been the safe fall back option and detecting that
>> checksum
>> >>> > > offload is on, and then not duplicating the verification in
>> Mirage would
>> >>> > > have been an optimisation. But it looks like this is not an
>> option. Now I
>> >>> > > need to know for every incoming packet whether checksum
>> verification should
>> >>> > > be done or not. It should ideally be for every packet since
>> chksum offload
>> >>> > > can be turned off and on on the VIF and existing tcp connections
>> should
>> >>> > > continue. If not every packet, I need to get a notification or
>> efficiently
>> >>> > > detect right away that the setting is changed on the VIF.
>> >> >
>> >> > This is a question that seems to keep coming up even for Linux and
>> >> > Windows, as the combination of local<->local VMs vs local<->off-host
>> and
>> >> > the checksum offload is quite confusing.
>> >> >
>> >> > CCing xen-devel: is the appropriate behaviour for a guest VM that
>> wants to
>> >> > use checksum offloading in all situations documented anywhere?
>> > I don't understand the question/concern. If you have enabled checksum
>> > offload then of course you don't recalculate the checksum, that's the
>> > whole point of offloading it.
>>
>> I get this a lot.
>>
>> There are a few different cases:
>>
>> * domain to domain traffic
>> * domain to external traffic with egress from a NIC that does offload
>> * domain to external through a non-offloading NIC
>>
>> With xen checksum offloading, domain to domain traffic appears to be
>> received with a bad checksum. This is OK, there is no point in
>> calculating a checksum if the packets are only going through memory. If
>> your memory is going to randomly corrupt packets you have more bigger
>> problems to worry about. However, this does upset at least Solaris: if
>> you're using a Solaris guest for NAT then the NAT module on Solaris gets
>> all upset if the checksum is wrong and drops the packets. (This is
>> Solaris's NAT module being overly picky, it may need to recalculate or
>> at least invalidate the existing checksum, but it doesn't need to check
>> it as well.)
>>
>> The second two cases are of interest from the domain perspective. A
>> domain has no way of knowing how any given packet is going to leave the
>> host (or even if it is) so it can't know ahead of time whether to
>> calculate any checksums: the skb's are just marked with "checksum
>> needed" as usual and either the egress NIC will do the job or dom0 will
>> do it.
>>
>> There is absolutely nothing wrong in any of this (Solaris
>> notwithstanding). The difficulty is getting people to realise that
>> checksums are only calculated when a packet hits the cat-5. It doesn't
>> need documenting, it just needs a little thought. I got tired of
>> hammering the point home :)
>>
>> jch
>>
>>
>
[-- Attachment #1.2: Type: text/html, Size: 5581 bytes --]
[-- Attachment #2: Type: text/plain, Size: 126 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
next prev parent reply other threads:[~2013-12-05 13:43 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CANeYhgE44vTfP8mGQ5nvd8gyBbV_uLiTOgpdUmAYzeW4_KHpMw@mail.gmail.com>
2013-12-05 11:29 ` Question about TCP checksum offload in Xen Anil Madhavapeddy
2013-12-05 11:39 ` Ian Campbell
2013-12-05 11:45 ` Richard Mortier
2013-12-05 11:52 ` Ian Campbell
2013-12-05 12:47 ` Paul Durrant
2013-12-05 12:55 ` Richard Mortier
2013-12-05 13:33 ` Balraj Singh
2013-12-05 13:42 ` Paul Durrant
2013-12-05 11:47 ` Paul Durrant
2013-12-05 12:37 ` John Haxby
2013-12-05 12:56 ` Balraj Singh
2013-12-05 15:19 ` John Haxby
2013-12-05 13:15 ` Jon Crowcroft
2013-12-05 13:43 ` Balraj Singh [this message]
2013-12-05 21:08 ` James Harper
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=CANeYhgGZJb2HBfprA4ORNr-2c3JWHe83HWMrh-Vj7tSkCs6CPw@mail.gmail.com \
--to=balrajsingh@ieee.org \
--cc=Ian.Campbell@citrix.com \
--cc=anil@recoil.org \
--cc=cl-mirage@lists.cam.ac.uk \
--cc=john.haxby@oracle.com \
--cc=jon.crowcroft@cl.cam.ac.uk \
--cc=xen-devel@lists.xenproject.org \
/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;
as well as URLs for NNTP newsgroup(s).