mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Michael Jeanson <mjeanson@efficios.com>
To: David Ahern <dsahern@gmail.com>,
	Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Cc: David <davem@davemloft.net>, netdev <netdev@vger.kernel.org>,
	linux-kernel <linux-kernel@vger.kernel.org>
Subject: Re: [RFC PATCH v2 0/3] l3mdev icmp error route lookup fixes
Date: Wed, 23 Sep 2020 12:04:27 -0400	[thread overview]
Message-ID: <730d8a09-7d3b-1033-4131-520dc42e8855@efficios.com> (raw)
In-Reply-To: <4456259a-979a-7821-ef3d-aed5d330ed2b@gmail.com>

On 2020-09-22 21 h 59, David Ahern wrote:
> On 9/22/20 7:52 AM, Michael Jeanson wrote:
>>>>
>>>> the test setup is bad. You have r1 dropping the MTU in VRF red, but not
>>>> telling VRF red how to send back the ICMP. e.g., for IPv4 add:
>>>>
>>>>     ip -netns r1 ro add vrf red 172.16.1.0/24 dev blue
>>>>
>>>> do the same for v6.
>>>>
>>>> Also, I do not see a reason for r2; I suggest dropping it. What you are
>>>> testing is icmp crossing VRF with route leaking, so there should not be
>>>> a need for r2 which leads to asymmetrical routing (172.16.1.0 via r1 and
>>>> the return via r2).
>>
>> The objective of the test was to replicate a clients environment where
>> packets are crossing from a VRF which has a route back to the source to
>> one which doesn't while reaching a ttl of 0. If the route lookup for the
>> icmp error is done on the interface in the first VRF, it can be routed to
>> the source but not on the interface in the second VRF which is the
>> current behaviour for icmp errors generated while crossing between VRFs.
>>
>> There may be a better test case that doesn't involve asymmetric routing
>> to test this but it's the only way I found to replicate this.
>>
> 
> It should work without asymmetric routing; adding the return route to
> the second vrf as I mentioned above fixes the FRAG_NEEDED problem. It
> should work for TTL as well.
> 
> Adding a second pass on the tests with the return through r2 is fine,
> but add a first pass for the more typical case.

Hi,

Before writing new tests I just want to make sure we are trying to fix 
the same issue. If I add a return route to the red VRF then we don't
need this patchset because whether the ICMP error are routed using the
table from the source or destination interface they will reach the 
source host.

The issue for which this patchset was sent only happens when the 
destination interface's VRF doesn't have a route back to the source 
host. I guess we might question if this is actually a bug or not.

So the question really is, when a packet is forwarded between VRFs 
through route leaking and an icmp error is generated, which table should 
be used for the route lookup? And does it depend on the type of icmp 
error? (e.g. TTL=1 happens before forwarding, but fragmentation needed 
happens after when on the destination interface)

Cheers,

Michael


  reply	other threads:[~2020-09-23 16:04 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-18 18:17 Mathieu Desnoyers
2020-09-18 18:17 ` [RFC PATCH v2 1/3] ipv4/icmp: l3mdev: Perform icmp error route lookup on source device routing table (v2) Mathieu Desnoyers
2020-09-18 18:18 ` [RFC PATCH v2 2/3] ipv6/icmp: " Mathieu Desnoyers
2020-09-18 18:18 ` [RFC PATCH v2 3/3] selftests: Add VRF icmp error route lookup test Mathieu Desnoyers
2020-09-21 18:36 ` [RFC PATCH v2 0/3] l3mdev icmp error route lookup fixes David Ahern
2020-09-21 18:44   ` Mathieu Desnoyers
2020-09-21 19:11     ` David Ahern
2020-09-21 19:33       ` Mathieu Desnoyers
2020-09-22 13:52         ` Michael Jeanson
2020-09-23  1:59           ` David Ahern
2020-09-23 16:04             ` Michael Jeanson [this message]
2020-09-23 17:03               ` Michael Jeanson
2020-09-23 18:46                 ` David Ahern
2020-09-23 19:12                   ` Michael Jeanson
2020-09-23 20:04                     ` David Ahern

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=730d8a09-7d3b-1033-4131-520dc42e8855@efficios.com \
    --to=mjeanson@efficios.com \
    --cc=davem@davemloft.net \
    --cc=dsahern@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mathieu.desnoyers@efficios.com \
    --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

Powered by JetHome