Re: show bfd sessions
On Mon, Mar 11, 2024 at 11:27:34PM +0100, Alexander Zubkov via Bird-users wrote: > Hi all, > > I noticed in the new version 'show bfd sessions' was extended with > 'all' option. But I also noticed that in case of 'show protocols', > 'show ospf state|topology' this option comes before [name], but for > 'show bfd sessions' it is the other way. I think it would be better to > be consistent here and use 'all' keyword before [name] too. Hi In fact, for 'show bfd sessions' you can use the option 'all' either before or after [name], as there is no fixed order of options for this command. In documentation, there is an order in which they appear, e.g.: show bfd sessions [] [address ] [(interface|dev) ""] [ipv4|ipv6] [direct|multihop] [all] but that is just simplification, they can be used in any order. In general, there are commands that have a few options and depend on fixed order (e.g. 'show protocols' or 'show ospf neighbors'), and there are commands that have more complex options, use key/value scheme and allow options in arbitrary order (e.g. 'show route', 'show ospf lsadb', or 'show bfd sessions'). I think that the first scheme is lazy and non-extensible, and most commands should be converted to the second scheme. > I also noticed some incompleteness of the "Remote control" > documentation now. I.e. it lists: > show protocols [all] > When it is actually: > show protocols [all] [|""] Yes, that is missing. > Also "show route ... [options]" does not have clear description of > what these options are. Not sure if you mean interactive help or reference documentation, as in the documentation they are described: https://bird.network.cz/?get_doc&v=20&f=bird-4.html#cli-show-route (but of course, it could always be improved.) > It seems there are ways to improve this part of the documentation. I > can offer a hand to examine it in more details what else might be > missing and maybe prepare patches. You are welcome. -- Elen sila lumenn' omentielvo Ondrej 'Santiago' Zajicek (email: santi...@crfreenet.org) "To err is human -- to blame it on a computer is even more so."
show bfd sessions
Hi all, I noticed in the new version 'show bfd sessions' was extended with 'all' option. But I also noticed that in case of 'show protocols', 'show ospf state|topology' this option comes before [name], but for 'show bfd sessions' it is the other way. I think it would be better to be consistent here and use 'all' keyword before [name] too. I also noticed some incompleteness of the "Remote control" documentation now. I.e. it lists: show protocols [all] When it is actually: show protocols [all] [|""] Also "show route ... [options]" does not have clear description of what these options are. It seems there are ways to improve this part of the documentation. I can offer a hand to examine it in more details what else might be missing and maybe prepare patches. Regards, Alexander
Re: BIRD 2.15
On Mon, Mar 11, 2024 at 11:30:12AM +, Zagorski, Michal via Bird-users wrote: > Hi, > Looks like our build from sources with reconfiguration failed on static > routes config definitions. > When configuring with ./configure --with-protocols="bgp static bmp pipe rpki" > - static without bfd, > DEV keyword in proto/static/config.Y isn't recognized: > $ make -j9 Thanks, merged. -- Elen sila lumenn' omentielvo Ondrej 'Santiago' Zajicek (email: santi...@crfreenet.org) "To err is human -- to blame it on a computer is even more so."
RE: BIRD 2.15
Hi, Looks like our build from sources with reconfiguration failed on static routes config definitions. When configuring with ./configure --with-protocols="bgp static bmp pipe rpki" - static without bfd, DEV keyword in proto/static/config.Y isn't recognized: $ make -j9 MKDIR -p obj/client obj/conf obj/doc obj/filter obj/lib obj/nest obj/test obj/proto/bgp obj/proto/static obj/proto/bmp obj/proto/pipe obj/proto/rpki obj/sysdep/linux obj/sysdep/unix obj/doc GEN obj/sysdep/paths.h m4 -s -P conf/gen_parser.m4 conf/confbase.Y conf/flowspec.Y client/cmds.Y filter/config.Y nest/config.Y nest/mpls.Y proto/bgp/config.Y proto/static/config.Y proto/bmp/config.Y proto/pipe/config.Y proto/rpki/config.Y sysdep/linux/netlink.Y sysdep/unix/config.Y sysdep/unix/krt.Y >obj/conf/cf-parse.y m4 -s -P conf/gen_keywords.m4 conf/confbase.Y conf/flowspec.Y client/cmds.Y filter/config.Y nest/config.Y nest/mpls.Y proto/bgp/config.Y proto/static/config.Y proto/bmp/config.Y proto/pipe/config.Y proto/rpki/config.Y sysdep/linux/netlink.Y sysdep/unix/config.Y sysdep/unix/krt.Y >obj/conf/keywords.h m4 -s -P conf/gen_commands.m4 conf/confbase.Y conf/flowspec.Y client/cmds.Y filter/config.Y nest/config.Y nest/mpls.Y proto/bgp/config.Y proto/static/config.Y proto/bmp/config.Y proto/pipe/config.Y proto/rpki/config.Y sysdep/linux/netlink.Y sysdep/unix/config.Y sysdep/unix/krt.Y >obj/conf/commands.h m4 -s -DTARGET=I -P filter/decl.m4 filter/f-inst.c obj/.dir-stamp >obj/filter/inst-interpret.c m4 -s -DTARGET=H -P filter/decl.m4 filter/f-inst.c obj/.dir-stamp >obj/filter/inst-gen.h flex -f -s -B -8 -Pcf_ -oobj/conf/cf-lex.c conf/cf-lex.l GEN obj/nest/proto-build.c m4 -s -DTARGET=C -P filter/decl.m4 filter/f-inst.c obj/.dir-stamp >obj/filter/inst-gen.c bison -Dparse.lac=full -Dparse.error=verbose -dv -pcf_ -b obj/conf/cf-parse obj/conf/cf-parse.y proto/static/config.Y:90.18-20: error: symbol ‘DEV’ is used, but is not defined as a token and has no rules; did you mean ‘DEVICE’? 90 | | stat_nexthop DEV TEXT { | ^~~ | DEVICE make: *** [conf/Makefile:23: obj/conf/cf-parse.tab.c] Error 1 make: *** Waiting for unfinished jobs Proposed change: diff --git a/proto/static/config.Y b/proto/static/config.Y index e746b63c..7b282898 100644 --- a/proto/static/config.Y +++ b/proto/static/config.Y @@ -45,7 +45,7 @@ static_route_finish(void) CF_DECLS -CF_KEYWORDS(STATIC, ROUTE, VIA, DROP, REJECT, PROHIBIT, PREFERENCE, CHECK, LINK) +CF_KEYWORDS(STATIC, ROUTE, VIA, DROP, REJECT, PROHIBIT, PREFERENCE, CHECK, LINK, DEV) CF_KEYWORDS(ONLINK, WEIGHT, RECURSIVE, IGP, TABLE, BLACKHOLE, UNREACHABLE, BFD, MPLS) -- Thanks, Michał Zagórski -Original Message- From: Bird-users On Behalf Of Ondrej Filip Sent: Sunday, March 10, 2024 9:55 PM To: bird Subject: BIRD 2.15 Dear BIRD users, we're releasing a new version 2.15. As usually, I am just a messenger, all credits go to my colleagues: Version 2.15 o BGP: Send hold timer o BGP: New options to specify required BGP capabilities o BFD: Improvements to 'show bfd sessions' command o RPKI: New 'local address' configuration option o Linux: Support for more route attributes, including TCP congestion control algorithm o Support for UDP logging o Static routes can have both nexthop and interface specified o Completion of command options in BIRD client o Many bugfixes and improvements Happy routing! Ondrej smime.p7s Description: S/MIME cryptographic signature
RE: BIRD 2.15
Hello Soha, Which router produces these warning? In my example topology below, Its Router A and Router C. Yes, it all connect using Wireguard. OSPF neighbor is good. Interface type is ptp. Thanks. On 11/03/2024 16:23:19, Soha Jin wrote: Hello Ilham, Looks like this is not a same bug. There should be a missing condition in next-hop resolving. Which router produces these warning? How it connects to 1.2.3.4/5.6.7.8/9.1.2.3, by WireGuard? What are interface types of those connections? (`show ospf interface ospfv3v6` will tell) Regards, Soha From: Ilham Maulana Sent: Monday, March 11, 2024 5:02 PM To: Soha Jin Cc: Soha Jin via Bird-users Subject: RE: BIRD 2.15 Hello Soha, Thank you. It works with 'ecmp off'. One more thing I notice in Bird 2.15, is this warning message. --- Kernel dropped some netlink messages, will resync on next scan. ospfv3v6: Unexpected case in next hop calculation ospfv3v6: Cannot find next hop for LSA (Type: 2001, Id: 0.0.0.0, Rt: 1.2.3.4) ospfv3v6: Unexpected case in next hop calculation ospfv3v6: Cannot find next hop for LSA (Type: 2001, Id: 0.0.0.0, Rt: 5.6.7.8) ospfv3v6: Unexpected case in next hop calculation ospfv3v6: Cannot find next hop for LSA (Type: 2001, Id: 0.0.0.0, Rt: 9.1.2.3) -- Here's the simple topology. Router A - Router B - Router C. Router B got LSA information from from A and C, and install it in B' routing table.. and( I guess) forward it to its adjacent neighbor. Router C does not install the LSA Information of Router A in OSPF Database and vice versa. Thanks. On 11/03/2024 14:19:57, Soha Jin wrote: Hello Ilham, You can disable ECMP with `ecmp off;` in the protocol `ospfv3v6` as a workaround (if you don’t need ECMP). Since 31aa62ae6d2e111e87c08b4b27a16ead968f0689, OSPFv3 will use direct route for pointopoint interfaces. Unfortunately, kernel doesn’t support multipath with a device only route, so there is a ! on the route. BIRD v2.15 ready. bird> show route Table master4: 192.88.99.0/24 unicast [ospf2 14:55:01.553] * I (150/20) [1.9.1.9] dev wg-main dev wg-main2 Table master6: 2001:db8:272::/48 unicast [ospf1 14:55:01.553] ! I (150/20) [1.9.1.9] dev wg-main dev wg-main2 I am drafting a patch to fix it. Regards, Soha -- From: Bird-users On Behalf Of Ilham Maulana Sent: Monday, March 11, 2024 12:27 PM To: Ondrej Filip ; Ondrej Zajicek via Bird-users Subject: Re: BIRD 2.15 Hello, After upgrading to 2.15, OSPFv3 is broken. Previously working on 2.14. No configuration changes. This capture taken from router with Bird 2.15 installed. OSPF route from router with Bird 2.15. it has ! sign. birdc show route all 2a05:abcd:abcd:abcd::/128 BIRD 2.15 ready. Table master6: 2a05:abcd:abcd:abcd::/128 unicast [ospfv3v6 2024-03-11 10:05:40] ! I (150/10) [1.1.1.1] dev wg6 dev wg7 Type: OSPF univ OSPF.metric1: 10 OSPF.router_id: 1.1.1.1 - OSPF route from router with Bird 2.14, working as expected, with * sign. birdc show route all 2a05:abcd:abcd:abcd::3/128 BIRD 2.15 ready. Table master6: 2a05:abcd:abcd:abcd::3/128 unicast [ospfv3v6 2024-03-11 08:23:55] * I (150/10) [192.168.99.141] dev wg2 Type: OSPF univ OSPF.metric1: 10 OSPF.router_id: 192.168.99.141 Any idea, what's going on? [Image removed by sender. db9d2b2e-8584-49c3-9a35-0f4b93fea0bb] [a8f53a11-6d8d-4899-8c7c-1a130a0cb03c]
RE: BIRD 2.15
Hello Ilham, Looks like this is not a same bug. There should be a missing condition in next-hop resolving. Which router produces these warning? How it connects to 1.2.3.4/5.6.7.8/9.1.2.3, by WireGuard? What are interface types of those connections? (`show ospf interface ospfv3v6` will tell) Regards, Soha From: Ilham Maulana Sent: Monday, March 11, 2024 5:02 PM To: Soha Jin Cc: Soha Jin via Bird-users Subject: RE: BIRD 2.15 � Hello Soha, � Thank you. It works with 'ecmp off'. � One more thing I notice in Bird 2.15, is this warning message. --- Kernel dropped some netlink messages, will resync on next scan. ospfv3v6: Unexpected case in next hop calculation ospfv3v6: Cannot find next hop for LSA (Type: 2001, Id: 0.0.0.0, Rt: 1.2.3.4) ospfv3v6: Unexpected case in next hop calculation ospfv3v6: Cannot find next hop for LSA (Type: 2001, Id: 0.0.0.0, Rt: 5.6.7.8) ospfv3v6: Unexpected case in next hop calculation ospfv3v6: Cannot find next hop for LSA (Type: 2001, Id: 0.0.0.0, Rt: 9.1.2.3) -- Here's the simple topology. � Router A - Router B - Router C. � Router B got LSA information from from A and C, and install it in B' routing table.. and( I guess) forward it to its adjacent neighbor. � Router C does not install the LSA Information of Router A in OSPF Database and vice versa. � Thanks. On 11/03/2024 14:19:57, Soha Jin wrote: Hello Ilham, You can disable ECMP with `ecmp off;` in the protocol `ospfv3v6` as a workaround (if you don’t need ECMP). Since 31aa62ae6d2e111e87c08b4b27a16ead968f0689, OSPFv3 will use direct route for pointopoint interfaces. Unfortunately, kernel doesn’t support multipath with a device only route, so there is a ! on the route. BIRD v2.15 ready. bird> show route Table master4: 192.88.99.0/24 unicast [ospf2 14:55:01.553] * I (150/20) [1.9.1.9] dev wg-main dev wg-main2 Table master6: 2001:db8:272::/48 unicast [ospf1 14:55:01.553] ! I (150/20) [1.9.1.9] dev wg-main dev wg-main2 I am drafting a patch to fix it. Regards, Soha -- From: Bird-users On Behalf Of Ilham Maulana Sent: Monday, March 11, 2024 12:27 PM To: Ondrej Filip ; Ondrej Zajicek via Bird-users Subject: Re: BIRD 2.15 Hello, After upgrading to 2.15, OSPFv3 is broken. Previously working on 2.14. No configuration changes. This capture taken from router with Bird 2.15 installed. OSPF route from router with Bird 2.15. it has ! sign. birdc show route all 2a05:abcd:abcd:abcd::/128 BIRD 2.15 ready. Table master6: 2a05:abcd:abcd:abcd::/128 unicast [ospfv3v6 2024-03-11 10:05:40] ! I (150/10) [1.1.1.1] dev wg6 dev wg7 Type: OSPF univ OSPF.metric1: 10 OSPF.router_id: 1.1.1.1 - OSPF route from router with Bird 2.14, working as expected, with * sign. birdc show route all 2a05:abcd:abcd:abcd::3/128 BIRD 2.15 ready. Table master6: 2a05:abcd:abcd:abcd::3/128 unicast [ospfv3v6 2024-03-11 08:23:55] * I (150/10) [192.168.99.141] dev wg2 Type: OSPF univ OSPF.metric1: 10 OSPF.router_id: 192.168.99.141 Any idea, what's going on?
RE: BIRD 2.15
Hello Soha, Thank you. It works with 'ecmp off'. One more thing I notice in Bird 2.15, is this warning message. --- Kernel dropped some netlink messages, will resync on next scan. ospfv3v6: Unexpected case in next hop calculation ospfv3v6: Cannot find next hop for LSA (Type: 2001, Id: 0.0.0.0, Rt: 1.2.3.4) ospfv3v6: Unexpected case in next hop calculation ospfv3v6: Cannot find next hop for LSA (Type: 2001, Id: 0.0.0.0, Rt: 5.6.7.8) ospfv3v6: Unexpected case in next hop calculation ospfv3v6: Cannot find next hop for LSA (Type: 2001, Id: 0.0.0.0, Rt: 9.1.2.3) -- Here's the simple topology. Router A - Router B - Router C. Router B got LSA information from from A and C, and install it in B' routing table.. and( I guess) forward it to its adjacent neighbor. Router C does not install the LSA Information of Router A in OSPF Database and vice versa. Thanks. On 11/03/2024 14:19:57, Soha Jin wrote: Hello Ilham, You can disable ECMP with `ecmp off;` in the protocol `ospfv3v6` as a workaround (if you don’t need ECMP). Since 31aa62ae6d2e111e87c08b4b27a16ead968f0689, OSPFv3 will use direct route for pointopoint interfaces. Unfortunately, kernel doesn’t support multipath with a device only route, so there is a ! on the route. BIRD v2.15 ready. bird> show route Table master4: 192.88.99.0/24 unicast [ospf2 14:55:01.553] * I (150/20) [1.9.1.9] dev wg-main dev wg-main2 Table master6: 2001:db8:272::/48 unicast [ospf1 14:55:01.553] ! I (150/20) [1.9.1.9] dev wg-main dev wg-main2 I am drafting a patch to fix it. Regards, Soha -- From: Bird-users On Behalf Of Ilham Maulana Sent: Monday, March 11, 2024 12:27 PM To: Ondrej Filip ; Ondrej Zajicek via Bird-users Subject: Re: BIRD 2.15 Hello, After upgrading to 2.15, OSPFv3 is broken. Previously working on 2.14. No configuration changes. This capture taken from router with Bird 2.15 installed. OSPF route from router with Bird 2.15. it has ! sign. birdc show route all 2a05:abcd:abcd:abcd::/128 BIRD 2.15 ready. Table master6: 2a05:abcd:abcd:abcd::/128 unicast [ospfv3v6 2024-03-11 10:05:40] ! I (150/10) [1.1.1.1] dev wg6 dev wg7 Type: OSPF univ OSPF.metric1: 10 OSPF.router_id: 1.1.1.1 - OSPF route from router with Bird 2.14, working as expected, with * sign. birdc show route all 2a05:abcd:abcd:abcd::3/128 BIRD 2.15 ready. Table master6: 2a05:abcd:abcd:abcd::3/128 unicast [ospfv3v6 2024-03-11 08:23:55] * I (150/10) [192.168.99.141] dev wg2 Type: OSPF univ OSPF.metric1: 10 OSPF.router_id: 192.168.99.141 Any idea, what's going on? [e905e712-5927-4e57-bd61-6d2a5f7530f8]
[PATCH] OSPF: don't skip next-hop resolve for PtP link for v2 and v3 with IPv6
This is a hack for Linux kernel, who does not support device-only routes for IPv6 multipath. Signed-off-by: Soha Jin --- proto/ospf/rt.c | 16 +--- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/proto/ospf/rt.c b/proto/ospf/rt.c index efcd4e17..54372070 100644 --- a/proto/ospf/rt.c +++ b/proto/ospf/rt.c @@ -1796,13 +1796,6 @@ calc_next_hop(struct ospf_area *oa, struct top_hash_entry *en, if (ifa->type == OSPF_IT_VLINK) return new_nexthop(p, IPA_NONE, NULL, 0); -/* - * The type of the ospf_iface is PtP and the iface is a physical PtP link, - * so we can simply use the iface, and skip further resolving. - */ -if (ifa->type == OSPF_IT_PTP && !(ifa->iface->flags & IF_MULTIACCESS)) - return new_nexthop(p, IPA_NONE, ifa->iface, ifa->ecmp_weight); - if (ospf_is_v2(p) || ospf_is_ip6(p)) { /* @@ -1819,6 +1812,15 @@ calc_next_hop(struct ospf_area *oa, struct top_hash_entry *en, } else { + /* + * The type of the ospf_iface is PtP and the iface is a physical PtP link, + * so we can simply use the iface, and skip further resolving. + * HACK: Linux kernel doesn't support device-only routes for IPv6 + * multipath, that's why this if-branch is placed here rather than above. + */ + if (ifa->type == OSPF_IT_PTP && !(ifa->iface->flags & IF_MULTIACCESS)) + return new_nexthop(p, IPA_NONE, ifa->iface, ifa->ecmp_weight); + /* * Next-hop is taken from lladdr field of Link-LSA, based on Neighbor * Iface ID (nif) field in our Router-LSA, which is just nbr->iface_id. -- 2.39.2
RE: BIRD 2.15
Hello Ilham, You can disable ECMP with `ecmp off;` in the protocol `ospfv3v6` as a workaround (if you don’t need ECMP). Since 31aa62ae6d2e111e87c08b4b27a16ead968f0689, OSPFv3 will use direct route for pointopoint interfaces. Unfortunately, kernel doesn’t support multipath with a device only route, so there is a ! on the route. BIRD v2.15 ready. bird> show route Table master4: 192.88.99.0/24 unicast [ospf2 14:55:01.553] * I (150/20) [1.9.1.9] dev wg-main dev wg-main2 Table master6: 2001:db8:272::/48unicast [ospf1 14:55:01.553] ! I (150/20) [1.9.1.9] dev wg-main dev wg-main2 I am drafting a patch to fix it. Regards, Soha -- From: Bird-users On Behalf Of Ilham Maulana Sent: Monday, March 11, 2024 12:27 PM To: Ondrej Filip ; Ondrej Zajicek via Bird-users Subject: Re: BIRD 2.15 Hello, After upgrading to 2.15, OSPFv3 is broken. Previously working on 2.14. No configuration changes. This capture taken from router with Bird 2.15 installed. OSPF route from router with Bird 2.15. it has ! sign. birdc show route all 2a05:abcd:abcd:abcd::/128 BIRD 2.15 ready. Table master6: 2a05:abcd:abcd:abcd::/128 unicast [ospfv3v6 2024-03-11 10:05:40] ! I (150/10) [1.1.1.1] dev wg6 dev wg7 Type: OSPF univ OSPF.metric1: 10 OSPF.router_id: 1.1.1.1 - OSPF route from router with Bird 2.14, working as expected, with * sign. birdc show route all 2a05:abcd:abcd:abcd::3/128 BIRD 2.15 ready. Table master6: 2a05:abcd:abcd:abcd::3/128 unicast [ospfv3v6 2024-03-11 08:23:55] * I (150/10) [192.168.99.141] dev wg2 Type: OSPF univ OSPF.metric1: 10 OSPF.router_id: 192.168.99.141 Any idea, what's going on?