public inbox for netdev@vger.kernel.org
 help / color / mirror / Atom feed
From: Eric Dumazet <eric.dumazet@gmail.com>
To: Julian Anastasov <ja@ssi.bg>
Cc: David Miller <davem@davemloft.net>,
	chris2553@googlemail.com, netdev@vger.kernel.org, gpiez@web.de,
	Dave Jones <davej@redhat.com>
Subject: [PATCH] udp: increment UDP_MIB_NOPORTS in mcast receive
Date: Wed, 03 Oct 2012 09:28:48 +0200	[thread overview]
Message-ID: <1349249328.12401.1364.camel@edumazet-glaptop> (raw)
In-Reply-To: <alpine.LFD.2.00.1210030032430.25856@ja.ssi.bg>

On Wed, 2012-10-03 at 02:24 +0300, Julian Anastasov wrote:
> 	Hello,
> 
> On Tue, 2 Oct 2012, Eric Dumazet wrote:
> 
> > > David, shouldnt we use a nh_rth_forward instead of a nh_rth_input in
> > > __mkroute_input() ?
> > > 
> > > (And change rt_cache_route() as well ?)
> > > 
> > > I am testing a patch right now.
> > 
> > Yeah, this patch seems to fix the bug for me.
> > 
> > [PATCH] ipv4: properly cache forward routes
> > 
> > commit d2d68ba9fe8 (ipv4: Cache input routes in fib_info nexthops.)
> > introduced a regression for forwarding.
> > 
> > This was hard to reproduce but the symptom was that packets were
> > delivered to local host instead of being forwarded.
> > 
> > Add a separate cache (nh_rth_forward) to solve the problem.
> 
> 	Can it be a problem related to fib_info reuse
> from different routes. For example, when local IP address
> is created for subnet we have:
> 
> broadcast 192.168.0.255 dev DEV  proto kernel  scope link  src 192.168.0.1
> 192.168.0.0/24 dev DEV  proto kernel  scope link  src 192.168.0.1
> local 192.168.0.1 dev DEV  proto kernel  scope host  src 192.168.0.1
> 
> 	The "dev DEV  proto kernel  scope link  src 192.168.0.1" is
> a reused fib_info structure where we put cached routes.
> The result can be same fib_info for 192.168.0.255 and
> 192.168.0.0/24. RTN_BROADCAST is cached only for input
> routes. Incoming broadcast to 192.168.0.255 can be cached
> and can cause problems for traffic forwarded to 192.168.0.0/24.
> So, this patch should solve the problem because it
> separates the broadcast from unicast traffic.
> 
> 	And the ip_route_input_slow caching will work for
> local and broadcast input routes (above routes 1 and 3) just
> because they differ in scope and use different fib_info.
> 
> 	Another possible failure is for output routes:
> 
> multicast 224.0.0.0/4 fib_info
> with unicast
> 192.168.0.0/24 fib_info
> 
> 	The multicast sets RTCF_MULTICAST | RTCF_LOCAL
> and can cause problems for generated unicast traffic on
> fib_info reuse. Depends on the scope, for multicast it is
> usually scope global, so may be it is difficult to happen
> in practice.
> 
> 	__mkroute_output works for local/unicast routes
> because they differ in scope.


Thanks Julian for these informations.

BTW, it seems we dont properly increase UDP MIB counters when a
multicast message is not delivered to at least one socket.

Lets fix this to ease future bug hunting.

I hate when "netstat -s" is useless and we have to use dropwatch to
figure out where we drop a frame.

[PATCH] udp: increment UDP_MIB_NOPORTS in multicast receive

We should increment UDP_MIB_NOPORTS in the case we found
no socket to deliver a copy of one incoming UDP message.

(RFC 4113 udpNoPorts)

Signed-off-by: Eric Dumazet <edumazet@google.com>
---
 net/ipv4/udp.c |    1 +
 net/ipv6/udp.c |    1 +
 2 files changed, 2 insertions(+)

diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c
index 79c8dbe..dfa73c5 100644
--- a/net/ipv4/udp.c
+++ b/net/ipv4/udp.c
@@ -1591,6 +1591,7 @@ static int __udp4_lib_mcast_deliver(struct net *net, struct sk_buff *skb,
 			sock_put(stack[i]);
 	} else {
 		kfree_skb(skb);
+		UDP_INC_STATS_BH(net, UDP_MIB_NOPORTS, udptable != &udp_table);
 	}
 	return 0;
 }
diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c
index fc99972..0be9ac2 100644
--- a/net/ipv6/udp.c
+++ b/net/ipv6/udp.c
@@ -748,6 +748,7 @@ static int __udp6_lib_mcast_deliver(struct net *net, struct sk_buff *skb,
 			sock_put(stack[i]);
 	} else {
 		kfree_skb(skb);
+		UDP6_INC_STATS_BH(net, UDP_MIB_NOPORTS, udptable != &udp_table);
 	}
 	return 0;
 }

  parent reply	other threads:[~2012-10-03  7:28 UTC|newest]

Thread overview: 59+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-09-17 15:44 Possible networking regression in 3.6.0 Chris Clayton
2012-09-18 14:21 ` Chris Clayton
2012-09-18 14:31   ` Chris Clayton
2012-09-18 14:40     ` Eric Dumazet
2012-09-18 15:51       ` Chris Clayton
2012-09-19 15:26       ` Chris Clayton
2012-09-22  6:26         ` Chris Clayton
2012-09-27 11:50           ` Chris Clayton
2012-09-27 12:14             ` Eric Dumazet
2012-09-27 18:05               ` Chris Clayton
2012-09-27 21:03                 ` Eric Dumazet
2012-09-27 21:17                   ` Eric Dumazet
2012-09-28  6:53                     ` David Miller
2012-09-28  9:14                       ` Chris Clayton
2012-09-28  9:22                     ` Chris Clayton
2012-09-28 11:26                       ` Eric Dumazet
2012-09-28 14:28                         ` Chris Clayton
2012-09-30 15:26                         ` Chris Clayton
2012-09-30 19:45                           ` Eric Dumazet
2012-10-01  8:36                             ` Chris Clayton
2012-10-01  9:15                               ` Eric Dumazet
2012-10-01 15:13                                 ` Chris Clayton
2012-10-01 15:31                                   ` Eric Dumazet
2012-10-01 16:19                                     ` Chris Clayton
2012-10-01 16:37                                       ` Eric Dumazet
2012-10-01 18:28                                         ` Chris Clayton
2012-10-01 18:34                                     ` Captain Obvious
2012-10-01 19:21                                       ` Eric Dumazet
2012-10-01 19:55                                         ` Chris Clayton
2012-10-01 19:22                                       ` Chris Clayton
2012-10-01 19:34                                 ` Dave Jones
2012-10-01 20:01                                   ` David Miller
2012-10-01 20:04                                     ` Eric Dumazet
2012-10-02 15:27                                       ` Edivaldo de Araújo Pereira
2012-10-02 15:35                                       ` Eric Dumazet
2012-10-02 15:48                                         ` Eric Dumazet
2012-10-02 15:57                                           ` Dave Jones
2012-10-02 16:06                                             ` Eric Dumazet
2012-10-02 18:25                                           ` David Miller
2012-10-02 21:14                                             ` Alexander Duyck
2012-10-02 21:35                                               ` Eric Dumazet
2012-10-02 23:24                                           ` Julian Anastasov
2012-10-03  3:10                                             ` David Miller
2012-10-03 15:01                                               ` Chris Clayton
2012-10-03 20:57                                               ` Julian Anastasov
2012-10-03  7:28                                             ` Eric Dumazet [this message]
2012-10-03 12:45                                               ` [PATCH] udp: increment UDP_MIB_NOPORTS in mcast receive David Stevens
2012-10-03 13:15                                                 ` Eric Dumazet
2012-10-03 14:09                                                   ` David Stevens
2012-10-03 15:29                                                     ` Eric Dumazet
2012-10-03 17:31                                                       ` David Stevens
2012-10-03 19:30                                                         ` David Miller
2012-10-03 17:39                                                     ` Rick Jones
2012-10-03  2:55                                           ` Possible networking regression in 3.6.0 David Miller
2012-10-04 11:25                                           ` [PATCH] ipv4: add a fib_type to fib_info Eric Dumazet
2012-10-04 13:08                                             ` Chris Clayton
2012-10-04 13:32                                               ` Eric Dumazet
2012-10-04 18:14                                                 ` David Miller
2012-09-18 14:44     ` Possible networking regression in 3.6.0 Chris Clayton

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=1349249328.12401.1364.camel@edumazet-glaptop \
    --to=eric.dumazet@gmail.com \
    --cc=chris2553@googlemail.com \
    --cc=davej@redhat.com \
    --cc=davem@davemloft.net \
    --cc=gpiez@web.de \
    --cc=ja@ssi.bg \
    --cc=netdev@vger.kernel.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