All of lore.kernel.org
 help / color / mirror / Atom feed
* Question: should local address be expired when updating PMTU?
@ 2015-02-02  8:20 shengyong
  2015-02-02 21:31 ` David Miller
                   ` (2 more replies)
  0 siblings, 3 replies; 25+ messages in thread
From: shengyong @ 2015-02-02  8:20 UTC (permalink / raw)
  To: davem; +Cc: netdev, yangyingling, steffen.klassert, hannes

Hi, David Miller
Since commit 81aded246 (ipv6: Handle PMTU in ICMP error handlers), the entries
in neigh table may get expired. But in the situation:

          Host only
    PC <------------> Virtual Machine

a packet is sent from PC to VM, and the packet looks like:
-----------------------------------
| IPv6 (src=PC-addr, dst=VM-addr) |
|---------------------------------|
|     ICMPv6 (Packet Too Big)     |
|---------------------------------|
| IPv6 (src=VM-addr, dst=VM-addr) |
|---------------------------------|
| ICMPv6 (Neighbor Advertisement) |
-----------------------------------

Then the local addr on VM will be updated with an expire value. After the
lifetime of the local addr is expired, the VM is unreachable from PC.

	# ip -6 route list table local
	local fe80::1 dev lo  metric 0 *expire 596*

I find that the current code seems not check whether the entry is a local one
when doing PMTU update. And if the following code is added, the situation could
be avoided.

diff --git a/net/ipv6/route.c b/net/ipv6/route.c
index b2614b2..b80317a 100644
--- a/net/ipv6/route.c
+++ b/net/ipv6/route.c
@@ -1136,6 +1136,9 @@ static void ip6_rt_update_pmtu(struct dst_entry *dst, struct sock *sk,
 {
        struct rt6_info *rt6 = (struct rt6_info*)dst;

+       if (rt6->rt6i_flags & RTF_LOCAL)
+               return;
+
        dst_confirm(dst);
        if (mtu < dst_mtu(dst) && rt6->rt6i_dst.plen == 128) {
                struct net *net = dev_net(dst->dev);

So is this modification correct? Or how can we avoid such expiring?

thx & BR,
Sheng

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

end of thread, other threads:[~2015-04-01  8:09 UTC | newest]

Thread overview: 25+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-02-02  8:20 Question: should local address be expired when updating PMTU? shengyong
2015-02-02 21:31 ` David Miller
2015-02-03  0:52 ` Alex Gartrell
2015-02-03  0:52   ` Alex Gartrell
2015-02-03  1:28   ` shengyong
2015-02-03  1:28     ` shengyong
2015-02-03  2:10   ` Calvin Owens
2015-02-03  2:10     ` Calvin Owens
2015-02-03  3:21     ` shengyong
2015-02-03  3:21       ` shengyong
2015-02-03  9:28 ` Steffen Klassert
2015-02-03 10:54   ` shengyong
2015-02-03 12:01     ` Steffen Klassert
2015-02-04  1:59       ` shengyong
2015-02-05  7:21         ` Steffen Klassert
2015-02-27  2:37           ` shengyong
2015-02-27 10:32             ` Steffen Klassert
2015-03-30 10:32             ` Steffen Klassert
2015-03-30 10:33               ` [PATCH RFC 1/3] ipv6: Fix after pmtu events dissapearing host routes Steffen Klassert
2015-03-30 11:15                 ` Sheng Yong
2015-03-30 18:24                 ` Martin Lau
2015-04-01  8:09                   ` Steffen Klassert
2015-03-30 10:33               ` [PATCH RFC 2/3] ipv6: Extend the route lookups to low priority metrics Steffen Klassert
2015-03-30 10:34               ` [PATCH RFC 3/3] ipv6: Don't update pmtu on uncached routes Steffen Klassert
2015-03-30 11:13               ` Question: should local address be expired when updating PMTU? Sheng Yong

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.