All of lore.kernel.org
 help / color / mirror / Atom feed
* IPv6 state match - possible bug.
@ 2006-02-13 12:54 Ben Skeggs
  2006-02-14  4:03 ` Yasuyuki KOZAKAI
  0 siblings, 1 reply; 11+ messages in thread
From: Ben Skeggs @ 2006-02-13 12:54 UTC (permalink / raw)
  To: netfilter

[-- Attachment #1: Type: text/plain, Size: 926 bytes --]

Hello,

I'm not sure if this is a bug, or something I'm doing incorrectly.

With the (attached) ruleset, I am able to receive ICMPv6 echo replies
correctly but any other type of connection fails.  The SYN+ACK reply
appears to get dropped by netfilter.

IP6-IN: IN=eth0 OUT= MAC=00:0f:ea:70:eb:f9:00:50:8d:e3:b5:89:86:dd
SRC=2001:0200:0000:8002:0203:47ff:fea5:3085
DST=2001:0388:c17d:0000:020f:eaff:fe70:ebf9 LEN=80 TC=0 HOPLIMIT=56
FLOWLBL=1295 PROTO=TCP SPT=80 DPT=33215 WINDOW=57344 RES=0x00 ACK SYN
URGP=0

The above is from trying to "wget -6 www.kame.net".

araqiel ~ # gzcat /proc/config.gz | grep -E "NF_CO|STATE"
CONFIG_NF_CONNTRACK=y
# CONFIG_NF_CONNTRACK_MARK is not set
CONFIG_NF_CONNTRACK_EVENTS=y
CONFIG_NF_CONNTRACK_FTP=y
CONFIG_NETFILTER_XT_MATCH_STATE=y
CONFIG_NF_CONNTRACK_IPV4=y
# CONFIG_IP_NF_CONNTRACK is not set
CONFIG_NF_CONNTRACK_IPV6=y

Does the above config seem okay?

Thanks in advance,
Ben Skeggs.

[-- Attachment #2: Type: text/plain, Size: 1959 bytes --]

Chain INPUT (policy DROP 821 packets, 66160 bytes)
 pkts bytes target     prot opt in     out     source               destination         
   44  3648 ACCEPT     all      lo     any     anywhere             anywhere           
 195K   70M allow-in   all      any    any     anywhere             anywhere           
  850 68504 LOG        all      any    any     anywhere             anywhere           limit: avg 10/min burst 5 LOG level warning prefix `IP6-IN: ' 

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 LOG        all      any    any     anywhere             anywhere           limit: avg 10/min burst 5 LOG level warning prefix `IP6-FW: ' 

Chain OUTPUT (policy DROP 20 packets, 5116 bytes)
 pkts bytes target     prot opt in     out     source               destination         
   44  3648 ACCEPT     all      any    lo      anywhere             anywhere           
 181K   20M allow-out  all      any    any     anywhere             anywhere           
    0     0 LOG        all      any    any     anywhere             anywhere           limit: avg 10/min burst 5 LOG level warning prefix `IP6-OU: ' 

Chain allow-fwd (0 references)
 pkts bytes target     prot opt in     out     source               destination         

Chain allow-in (1 references)
 pkts bytes target     prot opt in     out     source               destination         
 190K   70M ACCEPT     all      eth0   any     2001:388:c17d::/64   anywhere           
   37  3992 ACCEPT     all      any    any     anywhere             anywhere           state RELATED,ESTABLISHED 
 3804  295K ACCEPT     all      any    any     fe80::/10            anywhere           

Chain allow-out (1 references)
 pkts bytes target     prot opt in     out     source               destination         
 181K   20M ACCEPT     all      any    any     anywhere             anywhere           

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: IPv6 state match - possible bug.
  2006-02-13 12:54 IPv6 state match - possible bug Ben Skeggs
@ 2006-02-14  4:03 ` Yasuyuki KOZAKAI
  2006-02-14  4:16   ` Yasuyuki KOZAKAI
       [not found]   ` <200602140416.k1E4GXbM015693@toshiba.co.jp>
  0 siblings, 2 replies; 11+ messages in thread
From: Yasuyuki KOZAKAI @ 2006-02-14  4:03 UTC (permalink / raw)
  To: darktama; +Cc: netfilter

From: Ben Skeggs <darktama@iinet.net.au>
Date: Mon, 13 Feb 2006 23:54:38 +1100

> Hello,
> 
> I'm not sure if this is a bug, or something I'm doing incorrectly.
> 
> With the (attached) ruleset, I am able to receive ICMPv6 echo replies
> correctly but any other type of connection fails.  The SYN+ACK reply
> appears to get dropped by netfilter.
> 
> IP6-IN: IN=eth0 OUT= MAC=00:0f:ea:70:eb:f9:00:50:8d:e3:b5:89:86:dd
> SRC=2001:0200:0000:8002:0203:47ff:fea5:3085
> DST=2001:0388:c17d:0000:020f:eaff:fe70:ebf9 LEN=80 TC=0 HOPLIMIT=56
> FLOWLBL=1295 PROTO=TCP SPT=80 DPT=33215 WINDOW=57344 RES=0x00 ACK SYN
> URGP=0
> 
> The above is from trying to "wget -6 www.kame.net".
> 
> araqiel ~ # gzcat /proc/config.gz | grep -E "NF_CO|STATE"
> CONFIG_NF_CONNTRACK=y
> # CONFIG_NF_CONNTRACK_MARK is not set
> CONFIG_NF_CONNTRACK_EVENTS=y
> CONFIG_NF_CONNTRACK_FTP=y
> CONFIG_NETFILTER_XT_MATCH_STATE=y
> CONFIG_NF_CONNTRACK_IPV4=y
> # CONFIG_IP_NF_CONNTRACK is not set
> CONFIG_NF_CONNTRACK_IPV6=y
> 
> Does the above config seem okay?

looks fine to me. I tested with recent kernel, same kernrel config,
and same rules, but couldn't reproduce above log.

Which version of kernel(or git commit id) and ip6tables ?
And could you do
	echo 255 > /proc/sys/net/ipv4/netfilter/ip_conntrack_log_invalid

and test same rule ?

Regards,

-- Yasuyuki Kozakai


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: IPv6 state match - possible bug.
  2006-02-14  4:03 ` Yasuyuki KOZAKAI
@ 2006-02-14  4:16   ` Yasuyuki KOZAKAI
       [not found]   ` <200602140416.k1E4GXbM015693@toshiba.co.jp>
  1 sibling, 0 replies; 11+ messages in thread
From: Yasuyuki KOZAKAI @ 2006-02-14  4:16 UTC (permalink / raw)
  To: yasuyuki.kozakai; +Cc: darktama, netfilter

From: Yasuyuki KOZAKAI <yasuyuki.kozakai@toshiba.co.jp>
Date: Tue, 14 Feb 2006 13:03:15 +0900 (JST)

> looks fine to me. I tested with recent kernel, same kernrel config,
> and same rules, but couldn't reproduce above log.
> 
> Which version of kernel(or git commit id) and ip6tables ?
> And could you do
> 	echo 255 > /proc/sys/net/ipv4/netfilter/ip_conntrack_log_invalid

Sorry, right sysctl is

  	echo 255 > /proc/sys/net/netfilter/nf_conntrack_log_invalid

-- Yasuyuki Kozakai


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: IPv6 state match - possible bug.
       [not found]   ` <200602140416.k1E4GXbM015693@toshiba.co.jp>
@ 2006-02-14  4:24     ` Ben Skeggs
       [not found]       ` <200602140647.k1E6lerK011885@toshiba.co.jp>
  2006-02-14  5:53     ` Ben Skeggs
  1 sibling, 1 reply; 11+ messages in thread
From: Ben Skeggs @ 2006-02-14  4:24 UTC (permalink / raw)
  To: Yasuyuki KOZAKAI; +Cc: netfilter

On Tue, 2006-02-14 at 13:16 +0900, Yasuyuki KOZAKAI wrote:
> From: Yasuyuki KOZAKAI <yasuyuki.kozakai@toshiba.co.jp>
> Date: Tue, 14 Feb 2006 13:03:15 +0900 (JST)
> 
> > looks fine to me. I tested with recent kernel, same kernrel config,
> > and same rules, but couldn't reproduce above log.
> > 
> > Which version of kernel(or git commit id) and ip6tables ?
> > And could you do
> > 	echo 255 > /proc/sys/net/ipv4/netfilter/ip_conntrack_log_invalid
> 
> Sorry, right sysctl is
> 
>   	echo 255 > /proc/sys/net/netfilter/nf_conntrack_log_invalid
Okay, seems there is an issue somewhere..  I'm using 2.6.16-rc3, and
also had the same issue with -rc2.  iptables is version 1.3.5.

nf_ct_tcp: bad TCP checksum IN= OUT=
SRC=2001:0200:0000:8002:0203:47ff:fea5:3085
DST=2001:0388:c17d:0000:020f:eaff:fe70:ebf9 LEN=80 TC=0 HOPLIMIT=56
FLOWLBL=525788 PROTO=TCP SPT=80 DPT=52498 SEQ=1589838125 ACK=2289866071
WINDOW=57344 RES=0x00 ACK SYN URGP=0 OPT
(020405A0010303000101080A2DA73166049359BE)
IP6-IN: IN=eth0 OUT= MAC=00:0f:ea:70:eb:f9:00:50:8d:e3:b5:89:86:dd
SRC=2001:0200:0000:8002:0203:47ff:fea5:3085
DST=2001:0388:c17d:0000:020f:eaff:fe70:ebf9 LEN=80 TC=0 HOPLIMIT=56
FLOWLBL=525788 PROTO=TCP SPT=80 DPT=52498 WINDOW=57344 RES=0x00 ACK SYN
URGP=0

Which is odd, without any ip6tables rules everything seems to work well.

Thanks,
Ben Skeggs.
> 
> -- Yasuyuki Kozakai


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: IPv6 state match - possible bug.
       [not found]   ` <200602140416.k1E4GXbM015693@toshiba.co.jp>
  2006-02-14  4:24     ` Ben Skeggs
@ 2006-02-14  5:53     ` Ben Skeggs
  2006-02-14  6:47       ` Yasuyuki KOZAKAI
  1 sibling, 1 reply; 11+ messages in thread
From: Ben Skeggs @ 2006-02-14  5:53 UTC (permalink / raw)
  To: Yasuyuki KOZAKAI; +Cc: netfilter

On Tue, 2006-02-14 at 13:16 +0900, Yasuyuki KOZAKAI wrote:
> From: Yasuyuki KOZAKAI <yasuyuki.kozakai@toshiba.co.jp>
> Date: Tue, 14 Feb 2006 13:03:15 +0900 (JST)
> 
> > looks fine to me. I tested with recent kernel, same kernrel config,
> > and same rules, but couldn't reproduce above log.
> > 
> > Which version of kernel(or git commit id) and ip6tables ?
> > And could you do
> > 	echo 255 > /proc/sys/net/ipv4/netfilter/ip_conntrack_log_invalid
> 
> Sorry, right sysctl is
> 
>   	echo 255 > /proc/sys/net/netfilter/nf_conntrack_log_invalid
Just another followup with some more info.. I built 2.6.16-rc3 on my
other machine (x86) and it does indeed appear to work correctly there.

I'm wondering if there is some amd64-specific bug?

Cheers,
Ben.
> 
> -- Yasuyuki Kozakai


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: IPv6 state match - possible bug.
  2006-02-14  5:53     ` Ben Skeggs
@ 2006-02-14  6:47       ` Yasuyuki KOZAKAI
  0 siblings, 0 replies; 11+ messages in thread
From: Yasuyuki KOZAKAI @ 2006-02-14  6:47 UTC (permalink / raw)
  To: darktama; +Cc: netfilter-devel, netfilter

From: Ben Skeggs <darktama@iinet.net.au>
Date: Tue, 14 Feb 2006 15:24:31 +1100

> On Tue, 2006-02-14 at 13:16 +0900, Yasuyuki KOZAKAI wrote:
> > From: Yasuyuki KOZAKAI <yasuyuki.kozakai@toshiba.co.jp>
> > Date: Tue, 14 Feb 2006 13:03:15 +0900 (JST)
> > 
> > > looks fine to me. I tested with recent kernel, same kernrel config,
> > > and same rules, but couldn't reproduce above log.
> > > 
> > > Which version of kernel(or git commit id) and ip6tables ?
> > > And could you do
> > > 	echo 255 > /proc/sys/net/ipv4/netfilter/ip_conntrack_log_invalid
> > 
> > Sorry, right sysctl is
> > 
> >   	echo 255 > /proc/sys/net/netfilter/nf_conntrack_log_invalid
> Okay, seems there is an issue somewhere..  I'm using 2.6.16-rc3, and
> also had the same issue with -rc2.  iptables is version 1.3.5.
> 
> nf_ct_tcp: bad TCP checksum IN= OUT=
> SRC=2001:0200:0000:8002:0203:47ff:fea5:3085
> DST=2001:0388:c17d:0000:020f:eaff:fe70:ebf9 LEN=80 TC=0 HOPLIMIT=56
> FLOWLBL=525788 PROTO=TCP SPT=80 DPT=52498 SEQ=1589838125 ACK=2289866071
> WINDOW=57344 RES=0x00 ACK SYN URGP=0 OPT
> (020405A0010303000101080A2DA73166049359BE)

checksumming with your eth0 driver might be broken.
I'm not sure why, but I saw some reports about checksum for a few weeks.

> IP6-IN: IN=eth0 OUT= MAC=00:0f:ea:70:eb:f9:00:50:8d:e3:b5:89:86:dd
> SRC=2001:0200:0000:8002:0203:47ff:fea5:3085
> DST=2001:0388:c17d:0000:020f:eaff:fe70:ebf9 LEN=80 TC=0 HOPLIMIT=56
> FLOWLBL=525788 PROTO=TCP SPT=80 DPT=52498 WINDOW=57344 RES=0x00 ACK SYN
> URGP=0
> 
> Which is odd, without any ip6tables rules everything seems to work well.

From: Ben Skeggs <darktama@iinet.net.au>
Date: Tue, 14 Feb 2006 16:53:01 +1100

> Just another followup with some more info.. I built 2.6.16-rc3 on my
> other machine (x86) and it does indeed appear to work correctly there.
> 
> I'm wondering if there is some amd64-specific bug?

Or they have different ether card, maybe. I'm using e100 and it works fine.

-- Yasuyuki Kozakai



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: IPv6 state match - possible bug.
  2006-02-15  1:11         ` Ben Skeggs
@ 2006-02-14 18:43           ` Yasuyuki KOZAKAI
       [not found]           ` <200602141843.k1EIhnqD012520@toshiba.co.jp>
  1 sibling, 0 replies; 11+ messages in thread
From: Yasuyuki KOZAKAI @ 2006-02-14 18:43 UTC (permalink / raw)
  To: darktama; +Cc: netfilter-devel, netfilter, yasuyuki.kozakai

[-- Attachment #1: Type: Text/Plain, Size: 1294 bytes --]


Hi, Ben,

From: Ben Skeggs <darktama@iinet.net.au>
Date: Wed, 15 Feb 2006 12:11:47 +1100

> > > > Sorry, right sysctl is
> > > > 
> > > >   	echo 255 > /proc/sys/net/netfilter/nf_conntrack_log_invalid
> > > Okay, seems there is an issue somewhere..  I'm using 2.6.16-rc3, and
> > > also had the same issue with -rc2.  iptables is version 1.3.5.
> > > 
> > > nf_ct_tcp: bad TCP checksum IN= OUT=
> > > SRC=2001:0200:0000:8002:0203:47ff:fea5:3085
> > > DST=2001:0388:c17d:0000:020f:eaff:fe70:ebf9 LEN=80 TC=0 HOPLIMIT=56
> > > FLOWLBL=525788 PROTO=TCP SPT=80 DPT=52498 SEQ=1589838125 ACK=2289866071
> > > WINDOW=57344 RES=0x00 ACK SYN URGP=0 OPT
> > > (020405A0010303000101080A2DA73166049359BE)
> > 
> > checksumming with your eth0 driver might be broken.
> > I'm not sure why, but I saw some reports about checksum for a few weeks.
> Thank you!  This was indeed the problem.

Finally I got time to check codes for this and found bug.
If you have some time, could you try attached patch ?
I tested with sky2, but it's great if I can confirm that it works fine
with other device.

> I swapped from my onboard Yukon (skge driver), to the nvidia card
> (forcedeth driver) and everything seems to work correctly now.
> 
> Sorry for the noise!

No. Thanks a lot for this report.

-- Yasuyuki Kozakai

[-- Attachment #2: nfct_checksum.patch --]
[-- Type: Text/Plain, Size: 2053 bytes --]

[NETFILTER] nf_conntrack: Fix TCP/UDP checksum handling for IPv6 packet

If skb->ip_summed is CHECKSUM_HW here, skb->csum includes checksum
of actual IPv6 header and extension headers. Then such excess
checksum must be subtruct when nf_conntrack calculates TCP/UDP checksum
with psuedo IPv6 header.

Signed-off-by: Yasuyuki Kozakai <yasuyuki.kozakai@toshiba.co.jp>

---
commit 7f5523d7f49865e62b683b0519408cf15a5b5624
tree e79868f93168aadd3e07e96605c351009019197f
parent 5552c28f6937d2a2b873d06c6d09b96204722dd0
author <kozakai@camellia.isl.rdc.toshiba.co.jp> Wed, 15 Feb 2006 03:16:28 +0900
committer <kozakai@camellia.isl.rdc.toshiba.co.jp> Wed, 15 Feb 2006 03:16:28 +0900

 net/netfilter/nf_conntrack_proto_tcp.c |    4 +++-
 net/netfilter/nf_conntrack_proto_udp.c |    4 +++-
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/net/netfilter/nf_conntrack_proto_tcp.c b/net/netfilter/nf_conntrack_proto_tcp.c
--- a/net/netfilter/nf_conntrack_proto_tcp.c
+++ b/net/netfilter/nf_conntrack_proto_tcp.c
@@ -864,7 +864,9 @@ static int csum6(const struct sk_buff *s
 {
 	return csum_ipv6_magic(&skb->nh.ipv6h->saddr, &skb->nh.ipv6h->daddr,
 			       skb->len - dataoff, IPPROTO_TCP,
-			       skb->ip_summed == CHECKSUM_HW ? skb->csum
+			       skb->ip_summed == CHECKSUM_HW
+			       ? csum_sub(skb->csum,
+					  skb_checksum(skb, 0, dataoff, 0))
 			       : skb_checksum(skb, dataoff, skb->len - dataoff,
 					      0));
 }
diff --git a/net/netfilter/nf_conntrack_proto_udp.c b/net/netfilter/nf_conntrack_proto_udp.c
--- a/net/netfilter/nf_conntrack_proto_udp.c
+++ b/net/netfilter/nf_conntrack_proto_udp.c
@@ -161,7 +161,9 @@ static int csum6(const struct sk_buff *s
 {
 	return csum_ipv6_magic(&skb->nh.ipv6h->saddr, &skb->nh.ipv6h->daddr,
 			       skb->len - dataoff, IPPROTO_UDP,
-			       skb->ip_summed == CHECKSUM_HW ? skb->csum
+			       skb->ip_summed == CHECKSUM_HW
+			       ? csum_sub(skb->csum,
+					  skb_checksum(skb, 0, dataoff, 0))
 			       : skb_checksum(skb, dataoff, skb->len - dataoff,
 					      0));
 }

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: IPv6 state match - possible bug.
       [not found]       ` <200602140647.k1E6lerK011885@toshiba.co.jp>
@ 2006-02-15  1:11         ` Ben Skeggs
  2006-02-14 18:43           ` Yasuyuki KOZAKAI
       [not found]           ` <200602141843.k1EIhnqD012520@toshiba.co.jp>
  0 siblings, 2 replies; 11+ messages in thread
From: Ben Skeggs @ 2006-02-15  1:11 UTC (permalink / raw)
  To: Yasuyuki KOZAKAI; +Cc: netfilter-devel, netfilter

On Tue, 2006-02-14 at 15:47 +0900, Yasuyuki KOZAKAI wrote:
> From: Ben Skeggs <darktama@iinet.net.au>
> Date: Tue, 14 Feb 2006 15:24:31 +1100
> 
> > On Tue, 2006-02-14 at 13:16 +0900, Yasuyuki KOZAKAI wrote:
> > > From: Yasuyuki KOZAKAI <yasuyuki.kozakai@toshiba.co.jp>
> > > Date: Tue, 14 Feb 2006 13:03:15 +0900 (JST)
> > > 
> > > > looks fine to me. I tested with recent kernel, same kernrel config,
> > > > and same rules, but couldn't reproduce above log.
> > > > 
> > > > Which version of kernel(or git commit id) and ip6tables ?
> > > > And could you do
> > > > 	echo 255 > /proc/sys/net/ipv4/netfilter/ip_conntrack_log_invalid
> > > 
> > > Sorry, right sysctl is
> > > 
> > >   	echo 255 > /proc/sys/net/netfilter/nf_conntrack_log_invalid
> > Okay, seems there is an issue somewhere..  I'm using 2.6.16-rc3, and
> > also had the same issue with -rc2.  iptables is version 1.3.5.
> > 
> > nf_ct_tcp: bad TCP checksum IN= OUT=
> > SRC=2001:0200:0000:8002:0203:47ff:fea5:3085
> > DST=2001:0388:c17d:0000:020f:eaff:fe70:ebf9 LEN=80 TC=0 HOPLIMIT=56
> > FLOWLBL=525788 PROTO=TCP SPT=80 DPT=52498 SEQ=1589838125 ACK=2289866071
> > WINDOW=57344 RES=0x00 ACK SYN URGP=0 OPT
> > (020405A0010303000101080A2DA73166049359BE)
> 
> checksumming with your eth0 driver might be broken.
> I'm not sure why, but I saw some reports about checksum for a few weeks.
Thank you!  This was indeed the problem.

I swapped from my onboard Yukon (skge driver), to the nvidia card
(forcedeth driver) and everything seems to work correctly now.

Sorry for the noise!

Ben Skeggs.
> 
> > IP6-IN: IN=eth0 OUT= MAC=00:0f:ea:70:eb:f9:00:50:8d:e3:b5:89:86:dd
> > SRC=2001:0200:0000:8002:0203:47ff:fea5:3085
> > DST=2001:0388:c17d:0000:020f:eaff:fe70:ebf9 LEN=80 TC=0 HOPLIMIT=56
> > FLOWLBL=525788 PROTO=TCP SPT=80 DPT=52498 WINDOW=57344 RES=0x00 ACK SYN
> > URGP=0
> > 
> > Which is odd, without any ip6tables rules everything seems to work well.
> 
> From: Ben Skeggs <darktama@iinet.net.au>
> Date: Tue, 14 Feb 2006 16:53:01 +1100
> 
> > Just another followup with some more info.. I built 2.6.16-rc3 on my
> > other machine (x86) and it does indeed appear to work correctly there.
> > 
> > I'm wondering if there is some amd64-specific bug?
> 
> Or they have different ether card, maybe. I'm using e100 and it works fine.
> 
> -- Yasuyuki Kozakai


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: IPv6 state match - possible bug.
       [not found]           ` <200602141843.k1EIhnqD012520@toshiba.co.jp>
@ 2006-02-15  3:15             ` Ben Skeggs
  2006-02-15  4:32               ` Yasuyuki KOZAKAI
       [not found]               ` <200602150432.k1F4WR99027202@toshiba.co.jp>
  0 siblings, 2 replies; 11+ messages in thread
From: Ben Skeggs @ 2006-02-15  3:15 UTC (permalink / raw)
  To: Yasuyuki KOZAKAI; +Cc: netfilter-devel, netfilter

On Wed, 2006-02-15 at 03:43 +0900, Yasuyuki KOZAKAI wrote:
> Hi, Ben,
> 
> From: Ben Skeggs <darktama@iinet.net.au>
> Date: Wed, 15 Feb 2006 12:11:47 +1100
> 
> > > > > Sorry, right sysctl is
> > > > > 
> > > > >   	echo 255 > /proc/sys/net/netfilter/nf_conntrack_log_invalid
> > > > Okay, seems there is an issue somewhere..  I'm using 2.6.16-rc3, and
> > > > also had the same issue with -rc2.  iptables is version 1.3.5.
> > > > 
> > > > nf_ct_tcp: bad TCP checksum IN= OUT=
> > > > SRC=2001:0200:0000:8002:0203:47ff:fea5:3085
> > > > DST=2001:0388:c17d:0000:020f:eaff:fe70:ebf9 LEN=80 TC=0 HOPLIMIT=56
> > > > FLOWLBL=525788 PROTO=TCP SPT=80 DPT=52498 SEQ=1589838125 ACK=2289866071
> > > > WINDOW=57344 RES=0x00 ACK SYN URGP=0 OPT
> > > > (020405A0010303000101080A2DA73166049359BE)
> > > 
> > > checksumming with your eth0 driver might be broken.
> > > I'm not sure why, but I saw some reports about checksum for a few weeks.
> > Thank you!  This was indeed the problem.
> 
> Finally I got time to check codes for this and found bug.
> If you have some time, could you try attached patch ?
> I tested with sky2, but it's great if I can confirm that it works fine
> with other device.
I applied your patch to 2.6.16-rc3, and swapped back to the skge chip, I
seem to have working IPv6 state matching now.  I set
nf_conntrack_log_invalid again, and have not seen any invalid packet
messages on dmesg at all.

Thanks for checking this out for me!

Ben Skeggs.
> 
> > I swapped from my onboard Yukon (skge driver), to the nvidia card
> > (forcedeth driver) and everything seems to work correctly now.
> > 
> > Sorry for the noise!
> 
> No. Thanks a lot for this report.
> 
> -- Yasuyuki Kozakai
> plain text document attachment (nfct_checksum.patch)
> [NETFILTER] nf_conntrack: Fix TCP/UDP checksum handling for IPv6 packet
> 
> If skb->ip_summed is CHECKSUM_HW here, skb->csum includes checksum
> of actual IPv6 header and extension headers. Then such excess
> checksum must be subtruct when nf_conntrack calculates TCP/UDP checksum
> with psuedo IPv6 header.
> 
> Signed-off-by: Yasuyuki Kozakai <yasuyuki.kozakai@toshiba.co.jp>
> 
> ---
> commit 7f5523d7f49865e62b683b0519408cf15a5b5624
> tree e79868f93168aadd3e07e96605c351009019197f
> parent 5552c28f6937d2a2b873d06c6d09b96204722dd0
> author <kozakai@camellia.isl.rdc.toshiba.co.jp> Wed, 15 Feb 2006 03:16:28 +0900
> committer <kozakai@camellia.isl.rdc.toshiba.co.jp> Wed, 15 Feb 2006 03:16:28 +0900
> 
>  net/netfilter/nf_conntrack_proto_tcp.c |    4 +++-
>  net/netfilter/nf_conntrack_proto_udp.c |    4 +++-
>  2 files changed, 6 insertions(+), 2 deletions(-)
> 
> diff --git a/net/netfilter/nf_conntrack_proto_tcp.c b/net/netfilter/nf_conntrack_proto_tcp.c
> --- a/net/netfilter/nf_conntrack_proto_tcp.c
> +++ b/net/netfilter/nf_conntrack_proto_tcp.c
> @@ -864,7 +864,9 @@ static int csum6(const struct sk_buff *s
>  {
>  	return csum_ipv6_magic(&skb->nh.ipv6h->saddr, &skb->nh.ipv6h->daddr,
>  			       skb->len - dataoff, IPPROTO_TCP,
> -			       skb->ip_summed == CHECKSUM_HW ? skb->csum
> +			       skb->ip_summed == CHECKSUM_HW
> +			       ? csum_sub(skb->csum,
> +					  skb_checksum(skb, 0, dataoff, 0))
>  			       : skb_checksum(skb, dataoff, skb->len - dataoff,
>  					      0));
>  }
> diff --git a/net/netfilter/nf_conntrack_proto_udp.c b/net/netfilter/nf_conntrack_proto_udp.c
> --- a/net/netfilter/nf_conntrack_proto_udp.c
> +++ b/net/netfilter/nf_conntrack_proto_udp.c
> @@ -161,7 +161,9 @@ static int csum6(const struct sk_buff *s
>  {
>  	return csum_ipv6_magic(&skb->nh.ipv6h->saddr, &skb->nh.ipv6h->daddr,
>  			       skb->len - dataoff, IPPROTO_UDP,
> -			       skb->ip_summed == CHECKSUM_HW ? skb->csum
> +			       skb->ip_summed == CHECKSUM_HW
> +			       ? csum_sub(skb->csum,
> +					  skb_checksum(skb, 0, dataoff, 0))
>  			       : skb_checksum(skb, dataoff, skb->len - dataoff,
>  					      0));
>  }


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: IPv6 state match - possible bug.
  2006-02-15  3:15             ` Ben Skeggs
@ 2006-02-15  4:32               ` Yasuyuki KOZAKAI
       [not found]               ` <200602150432.k1F4WR99027202@toshiba.co.jp>
  1 sibling, 0 replies; 11+ messages in thread
From: Yasuyuki KOZAKAI @ 2006-02-15  4:32 UTC (permalink / raw)
  To: darktama, kaber, laforge; +Cc: netfilter-devel, netfilter, yasuyuki.kozakai

[-- Attachment #1: Type: Text/Plain, Size: 861 bytes --]

From: Ben Skeggs <darktama@iinet.net.au>
Date: Wed, 15 Feb 2006 14:15:29 +1100

> > > > checksumming with your eth0 driver might be broken.
> > > > I'm not sure why, but I saw some reports about checksum for a few weeks.
> > > Thank you!  This was indeed the problem.
> > 
> > Finally I got time to check codes for this and found bug.
> > If you have some time, could you try attached patch ?
> > I tested with sky2, but it's great if I can confirm that it works fine
> > with other device.
> I applied your patch to 2.6.16-rc3, and swapped back to the skge chip, I
> seem to have working IPv6 state matching now.  I set
> nf_conntrack_log_invalid again, and have not seen any invalid packet
> messages on dmesg at all.

Thanks for test. Harald or Patrick, please apply attached patch.
# I've added "Spotted by Ben Skeggs" to previous one.

-- Yasuyuki Kozakai

[-- Attachment #2: nfct_checksum.patch --]
[-- Type: Text/Plain, Size: 2076 bytes --]

[NETFILTER] nf_conntrack: Fix TCP/UDP checksum handling for IPv6 packet

If skb->ip_summed is CHECKSUM_HW here, skb->csum includes checksum
of actual IPv6 header and extension headers. Then such excess
checksum must be subtruct when nf_conntrack calculates TCP/UDP checksum
with psuedo IPv6 header. Spotted by Ben Skeggs.

Signed-off-by: Yasuyuki Kozakai <yasuyuki.kozakai@toshiba.co.jp>

---
commit 7f5523d7f49865e62b683b0519408cf15a5b5624
tree e79868f93168aadd3e07e96605c351009019197f
parent 5552c28f6937d2a2b873d06c6d09b96204722dd0
author <kozakai@camellia.isl.rdc.toshiba.co.jp> Wed, 15 Feb 2006 03:16:28 +0900
committer <kozakai@camellia.isl.rdc.toshiba.co.jp> Wed, 15 Feb 2006 03:16:28 +0900

 net/netfilter/nf_conntrack_proto_tcp.c |    4 +++-
 net/netfilter/nf_conntrack_proto_udp.c |    4 +++-
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/net/netfilter/nf_conntrack_proto_tcp.c b/net/netfilter/nf_conntrack_proto_tcp.c
--- a/net/netfilter/nf_conntrack_proto_tcp.c
+++ b/net/netfilter/nf_conntrack_proto_tcp.c
@@ -864,7 +864,9 @@ static int csum6(const struct sk_buff *s
 {
 	return csum_ipv6_magic(&skb->nh.ipv6h->saddr, &skb->nh.ipv6h->daddr,
 			       skb->len - dataoff, IPPROTO_TCP,
-			       skb->ip_summed == CHECKSUM_HW ? skb->csum
+			       skb->ip_summed == CHECKSUM_HW
+			       ? csum_sub(skb->csum,
+					  skb_checksum(skb, 0, dataoff, 0))
 			       : skb_checksum(skb, dataoff, skb->len - dataoff,
 					      0));
 }
diff --git a/net/netfilter/nf_conntrack_proto_udp.c b/net/netfilter/nf_conntrack_proto_udp.c
--- a/net/netfilter/nf_conntrack_proto_udp.c
+++ b/net/netfilter/nf_conntrack_proto_udp.c
@@ -161,7 +161,9 @@ static int csum6(const struct sk_buff *s
 {
 	return csum_ipv6_magic(&skb->nh.ipv6h->saddr, &skb->nh.ipv6h->daddr,
 			       skb->len - dataoff, IPPROTO_UDP,
-			       skb->ip_summed == CHECKSUM_HW ? skb->csum
+			       skb->ip_summed == CHECKSUM_HW
+			       ? csum_sub(skb->csum,
+					  skb_checksum(skb, 0, dataoff, 0))
 			       : skb_checksum(skb, dataoff, skb->len - dataoff,
 					      0));
 }

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: IPv6 state match - possible bug.
       [not found]               ` <200602150432.k1F4WR99027202@toshiba.co.jp>
@ 2006-02-15 10:14                 ` Patrick McHardy
  0 siblings, 0 replies; 11+ messages in thread
From: Patrick McHardy @ 2006-02-15 10:14 UTC (permalink / raw)
  To: Yasuyuki KOZAKAI; +Cc: darktama, netfilter-devel, netfilter, laforge

Yasuyuki KOZAKAI wrote:
> Thanks for test. Harald or Patrick, please apply attached patch.
> # I've added "Spotted by Ben Skeggs" to previous one.

Also applied, thanks.


^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2006-02-15 10:14 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-02-13 12:54 IPv6 state match - possible bug Ben Skeggs
2006-02-14  4:03 ` Yasuyuki KOZAKAI
2006-02-14  4:16   ` Yasuyuki KOZAKAI
     [not found]   ` <200602140416.k1E4GXbM015693@toshiba.co.jp>
2006-02-14  4:24     ` Ben Skeggs
     [not found]       ` <200602140647.k1E6lerK011885@toshiba.co.jp>
2006-02-15  1:11         ` Ben Skeggs
2006-02-14 18:43           ` Yasuyuki KOZAKAI
     [not found]           ` <200602141843.k1EIhnqD012520@toshiba.co.jp>
2006-02-15  3:15             ` Ben Skeggs
2006-02-15  4:32               ` Yasuyuki KOZAKAI
     [not found]               ` <200602150432.k1F4WR99027202@toshiba.co.jp>
2006-02-15 10:14                 ` Patrick McHardy
2006-02-14  5:53     ` Ben Skeggs
2006-02-14  6:47       ` Yasuyuki KOZAKAI

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.