Re: show bfd sessions

2024-03-11 Thread Ondrej Zajicek via Bird-users
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

2024-03-11 Thread Alexander Zubkov via Bird-users
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

2024-03-11 Thread Ondrej Zajicek via Bird-users
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

2024-03-11 Thread Zagorski, Michal via Bird-users
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

2024-03-11 Thread Ilham Maulana via Bird-users
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

2024-03-11 Thread Soha Jin via Bird-users
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

2024-03-11 Thread Ilham Maulana
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

2024-03-11 Thread Soha Jin via Bird-users
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

2024-03-11 Thread Soha Jin via Bird-users
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?