From: Hangbin Liu <liuhangbin@gmail.com>
To: Stephen Hemminger <stephen@networkplumber.org>
Cc: Ido Schimmel <idosch@idosch.org>,
David Ahern <dsahern@kernel.org>,
netdev@vger.kernel.org, "David S . Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
Thomas Haller <thaller@redhat.com>
Subject: [Questions] Some issues about IPv4/IPv6 nexthop route (was Re: [PATCH net-next] ipv4/fib: send RTM_DELROUTE notify when flush fib)
Date: Wed, 26 Jul 2023 18:17:05 +0800 [thread overview]
Message-ID: <ZMDyoRzngXVESEd1@Laptop-X1> (raw)
In-Reply-To: <20230724084820.4aa133cc@hermes.local>
Hi Stephen, Ido, David,
On Mon, Jul 24, 2023 at 08:48:20AM -0700, Stephen Hemminger wrote:
> On Mon, 24 Jul 2023 16:56:37 +0800
> Hangbin Liu <liuhangbin@gmail.com> wrote:
>
> > The NetworkManager keeps a cache of the routes. Missing/Wrong events mean that
> > the cache becomes inconsistent. The IPv4 will not send src route delete info
> > if it's bond to other device. While IPv6 only modify the src route instead of
> > delete it, and also no notify. So NetworkManager developers complained and
> > hope to have a consistent and clear notification about route modify/delete.
>
> Read FRR they get it right. The routing daemons have to track kernel,
> and the semantics have been worked out for years.
Since we are talking about whether we should fix the issues or doc them. I
have some other route issues reported by NetworkManager developers. And want
discuss with you.
For IPv4, we add new route instead append the nexthop to same dest(or do I
miss something?). Since the route are not merged, the nexthop weight is not
shown, which make them look like the same for users. For IPv4, the scope is
also not shown, which look like the same for users.
While IPv6 will append another nexthop to the route if dest is same. But there
are 2 issues here:
1. the *type* and *protocol* field are actally ignored
2. when do `ip monitor route`, the info dumpped in fib6_add_rt2node()
use the config info from user space. When means `ip monitor` show the
incorrect type and protocol
So my questions are, should we show weight/scope for IPv4? How to deal the
type/proto info missing for IPv6? How to deal with the difference of merging
policy for IPv4/IPv6?
Here is the reproducer:
+ ip link add dummy0 up type dummy
+ ip link add dummy1 up type dummy
+ ip link add dummy2 up type dummy
+ ip addr add 172.16.104.1/24 dev dummy1
+ ip addr add 172.16.104.2/24 dev dummy2
+ ip route add 172.16.105.0/24 table 100 via 172.16.104.100 dev dummy1
+ ip route append 172.16.105.0/24 table 100 via 172.16.104.100 dev dummy2
+ ip route add 172.16.106.0/24 table 100 nexthop via 172.16.104.100 dev dummy1 weight 1
+ ip route append 172.16.106.0/24 table 100 nexthop via 172.16.104.100 dev dummy1 weight 2
+ ip route show table 100
172.16.105.0/24 via 172.16.104.100 dev dummy1
172.16.105.0/24 via 172.16.104.100 dev dummy2
172.16.106.0/24 via 172.16.104.100 dev dummy1
172.16.106.0/24 via 172.16.104.100 dev dummy1
+ ip route add local default dev dummy1 table 200
+ ip route add 172.16.107.0/24 table 200 nexthop via 172.16.104.100 dev dummy1
+ ip route prepend default dev dummy1 table 200
+ ip route append 172.16.107.0/24 table 200 nexthop via 172.16.104.100 dev dummy1
+ ip route show table 200
default dev dummy1 scope link
local default dev dummy1 scope host
172.16.107.0/24 via 172.16.104.100 dev dummy1
172.16.107.0/24 via 172.16.104.100 dev dummy1
+ ip addr add 2001:db8:101::1/64 dev dummy1
+ ip addr add 2001:db8:101::2/64 dev dummy2
+ ip route add 2001:db8:102::/64 via 2001:db8:101::10 dev dummy1 table 100
+ ip route prepend 2001:db8:102::/64 via 2001:db8:101::10 dev dummy2 table 100
+ ip route add local 2001:db8:103::/64 via 2001:db8:101::10 dev dummy1 table 100
+ ip route prepend unicast 2001:db8:103::/64 via 2001:db8:101::10 dev dummy2 table 100
+ ip monitor route &
+ sleep 1
+ ip route add 2001:db8:104::/64 via 2001:db8:101::10 dev dummy1 proto kernel table 100
2001:db8:104::/64 via 2001:db8:101::10 dev dummy1 table 100 proto kernel metric 1024 pref medium
+ ip route prepend 2001:db8:104::/64 via 2001:db8:101::10 dev dummy2 proto bgp table 100
2001:db8:104::/64 table 100 proto bgp metric 1024 pref medium
nexthop via 2001:db8:101::10 dev dummy2 weight 1
nexthop via 2001:db8:101::10 dev dummy1 weight 1
+ ip -6 route show table 100
2001:db8:102::/64 metric 1024 pref medium
nexthop via 2001:db8:101::10 dev dummy1 weight 1
nexthop via 2001:db8:101::10 dev dummy2 weight 1
local 2001:db8:103::/64 metric 1024 pref medium
nexthop via 2001:db8:101::10 dev dummy1 weight 1
nexthop via 2001:db8:101::10 dev dummy2 weight 1
2001:db8:104::/64 proto kernel metric 1024 pref medium
nexthop via 2001:db8:101::10 dev dummy1 weight 1
nexthop via 2001:db8:101::10 dev dummy2 weight 1
+ kill $!
Thanks
Hangbin
next prev parent reply other threads:[~2023-07-26 10:17 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-07-18 8:00 [PATCH net-next] ipv4/fib: send RTM_DELROUTE notify when flush fib Hangbin Liu
2023-07-18 10:19 ` Ido Schimmel
2023-07-18 10:32 ` Ido Schimmel
2023-07-18 14:45 ` David Ahern
2023-07-18 15:58 ` Stephen Hemminger
2023-07-20 7:51 ` Hangbin Liu
2023-07-20 14:29 ` Ido Schimmel
2023-07-21 1:34 ` Hangbin Liu
2023-07-21 4:01 ` David Ahern
2023-07-21 5:46 ` Hangbin Liu
2023-07-23 7:38 ` Ido Schimmel
2023-07-24 8:56 ` Hangbin Liu
2023-07-24 15:48 ` Stephen Hemminger
2023-07-25 8:20 ` Hangbin Liu
2023-07-25 16:36 ` Stephen Hemminger
2023-07-28 13:01 ` Nicolas Dichtel
2023-07-28 15:42 ` David Ahern
2023-08-02 9:10 ` Thomas Haller
2023-08-08 1:44 ` David Ahern
2023-08-08 18:59 ` Benjamin Poirier
2023-09-11 9:50 ` Thomas Haller
2023-09-13 7:58 ` Nicolas Dichtel
2023-09-13 9:54 ` Hangbin Liu
2023-09-13 14:11 ` Nicolas Dichtel
2023-09-13 14:43 ` David Ahern
2023-09-13 14:53 ` Nicolas Dichtel
2023-09-14 15:43 ` Nicolas Dichtel
2023-09-15 3:07 ` David Ahern
2023-09-15 15:54 ` Nicolas Dichtel
2023-09-13 14:41 ` David Ahern
2023-09-15 16:59 ` Stephen Hemminger
2023-07-26 10:17 ` Hangbin Liu [this message]
2023-07-26 15:57 ` [Questions] Some issues about IPv4/IPv6 nexthop route (was Re: [PATCH net-next] ipv4/fib: send RTM_DELROUTE notify when flush fib) David Ahern
2023-07-27 4:19 ` [Questions] Some issues about IPv4/IPv6 nexthop route Hangbin Liu
2023-07-27 15:35 ` David Ahern
2023-07-27 14:45 ` [Questions] Some issues about IPv4/IPv6 nexthop route (was Re: [PATCH net-next] ipv4/fib: send RTM_DELROUTE notify when flush fib) Ido Schimmel
2023-08-28 7:53 ` [Questions] Some issues about IPv4/IPv6 nexthop route Hangbin Liu
2023-08-28 15:06 ` David Ahern
2023-08-29 1:07 ` Hangbin Liu
2023-08-29 1:42 ` David Ahern
2023-08-02 9:06 ` [PATCH net-next] ipv4/fib: send RTM_DELROUTE notify when flush fib Thomas Haller
2023-08-04 8:09 ` Hangbin Liu
2023-08-09 7:06 ` Ido Schimmel
2023-08-09 10:02 ` Hangbin Liu
2023-07-25 14:13 ` kernel test robot
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=ZMDyoRzngXVESEd1@Laptop-X1 \
--to=liuhangbin@gmail.com \
--cc=davem@davemloft.net \
--cc=dsahern@kernel.org \
--cc=edumazet@google.com \
--cc=idosch@idosch.org \
--cc=kuba@kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=stephen@networkplumber.org \
--cc=thaller@redhat.com \
/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