LVS
lvs-users
Google
 
Web LinuxVirtualServer.org

Re: ipvs 0.8.1 tcp checksum failed

To: Roberto Nibali <ratz@xxxxxxxxxxxx>
Subject: Re: ipvs 0.8.1 tcp checksum failed
Cc: <lvs-users@xxxxxxxxxxxxxxxxxxxxxx>
From: Julian Anastasov <ja@xxxxxx>
Date: Wed, 17 Oct 2001 00:04:19 +0000 (GMT)
        Hello,

On Tue, 16 Oct 2001, Roberto Nibali wrote:

> Good evening Julian,
>
> > > and the driver says :
> > > "catter-gather and hardware TCP cksumming disabled."
> >
> >         Hm, very strange. I'll think on it. Thanks!
>
> This means no zerocopy and no firmware has been loaded. If there is no
> firmware, rx/tx hardware checksumming doesn't work and we should get
> skb->ip_summed=CHECKSUM_UNNECESSARY.
>
> Julian, in the starfire we have the rx_copybreak feature that passes all
> incoming frames which are smaller then RX_COPYBREAK directly to the
> stack
> and if not, a new skbuff is allocated. Do you think it would be possible
> that small frames being copied up the stack don't get CHECKSUM_NONE
> because
> of the prior state of the skbuff?

        Hm, I see that skb->ip_summed is initialized to 0 (NONE) when
the skb is created in skb_headerinit(), so it should be correct if
not touched. Yes, these small frames are TCP SYNs with options.

> Puzzled right now, still reading the source ...

        I too :) BTW, one missing skb_cow was added in 0.9.4, so
I'm not sure if this can trigger such problems in the following
datagrams?!?

@@ -672,13 +672,15 @@
        EnterFunction(10);

        h.raw = (char*) iph + iph->ihl * 4;
+       if ((skb = vs_skb_cow(&skb, &iph, &h.raw)) == NULL)
+               return NF_DROP;
        size = ntohs(iph->tot_len) - (iph->ihl * 4);
        doff = ip_vs_proto_doff(iph->protocol, h.raw, size);

> Roberto Nibali, ratz

Regards

--
Julian Anastasov <ja@xxxxxx>



<Prev in Thread] Current Thread [Next in Thread>