On Thu, Jun 01, 2023 at 04:58:54PM +0000, Valdrin MUJA wrote: > Hi Claudio, > > Thanks for your reply. I think this is the saddest news lately. > At this point, I have a question: > This should not be a kernel issue, right? > So, can I use an alternative like bird until this feature is developed?
I'm not sure if bird does multipath on OpenBSD. Guess you will find out. > ________________________________ > From: Claudio Jeker <[email protected]> > Sent: Thursday, June 1, 2023 19:34 > To: Valdrin MUJA <[email protected]> > Cc: [email protected] <[email protected]> > Subject: Re: Multi path routing with BGPD > > On Mon, May 29, 2023 at 07:29:14PM +0000, Valdrin MUJA wrote: > > Hello, > > > > I try to setup multipath routing environment with OpenBSD's bgpd. > > multipath != add-path. OpenBGPD currently does not do multipath routing. > It only uses the best path for the FIB and the nexthops are only resolved > to one gateway. > > > As I understand from man page the keyword is add-path. > > Here is my environmental report: > > > > 1. In my lab I simulate two wan links for each device. > > 2. Each device also has a LAN network to announce. > > 3. In the middle of these two devices there is another OpenBSD acting as > > Router. > > > > Device 1 : > > WAN1 : 192.168.10.2/24 > > WAN2: 10.1.1.2/24 > > LAN : 172.16.1.1/24 > > GRE1 : 172.31.1.1 -> 172.31.1.2 netmask /24 (over wan1) > > GRE2 : 172.31.2.1 -> 172.31.2.2 netmask /24 (over wan2) > > > > Device 2 : > > WAN1 : 192.168.20.2/24 > > WAN2: 10.1.2.2/24 > > LAN : 172.16.2.1/24 > > GRE1 : 172.31.1.2 -> 172.31.1.1 netmask /24 (over wan1) > > GRE2 : 172.31.2.2 -> 172.31.2.1 netmask /24 (over wan2) > > > > > > Router : > > 192.168.10.1/24 > > 192.168.20.1/24 > > 10.1.1.1/24 > > 10.1.2.1/24 > > > > --------- > > > > Here bgpd.conf file contents : > > > > Device1# cat /etc/bgpd.conf > > AS 100 > > network 172.16.1.0/24 > > neighbor 172.31.1.2 { > > remote-as 100 > > log updates > > announce IPv4 unicast > > announce add-path recv yes > > announce add-path send best > > } > > neighbor 172.31.2.2 { > > remote-as 100 > > log updates > > announce IPv4 unicast > > announce add-path recv yes > > announce add-path send best > > } > > allow quick from { ibgp } > > allow quick to { ibgp } > > > > Device2# cat /etc/bgpd.conf > > AS 100 > > network 172.16.2.0/24 > > neighbor 172.31.1.1 { > > remote-as 100 > > log updates > > announce IPv4 unicast > > announce add-path recv yes > > announce add-path send best > > } > > neighbor 172.31.2.1 { > > remote-as 100 > > log updates > > announce IPv4 unicast > > announce add-path recv yes > > announce add-path send best > > } > > allow quick from { ibgp } > > allow quick to { ibgp } > > > > Here bgpctl show outputs: > > > > #bgp connection is OK > > > > Device1# bgpctl show > > Neighbor AS MsgRcvd MsgSent OutQ Up/Down > > State/PrfRcvd > > 172.31.1.2 100 9 9 0 00:02:34 1 > > 172.31.2.2 100 9 9 0 00:02:34 1 > > > > # we can see rib tables are ready > > > > Device1# bgpctl show rib > > flags: * = Valid, > = Selected, I = via IBGP, A = Announced, > > S = Stale, E = Error > > origin validation state: N = not-found, V = valid, ! = invalid > > origin: i = IGP, e = EGP, ? = Incomplete > > > > flags ovs destination gateway lpref med aspath origin > > AI*> N 172.16.1.0/24 0.0.0.0 100 0 i > > I*> N 172.16.2.0/24 172.31.1.2 100 0 i > > I*m N 172.16.2.0/24 172.31.2.2 100 0 i > > > > Device2# bgpctl show rib > > flags: * = Valid, > = Selected, I = via IBGP, A = Announced, > > S = Stale, E = Error > > origin validation state: N = not-found, V = valid, ! = invalid > > origin: i = IGP, e = EGP, ? = Incomplete > > > > flags ovs destination gateway lpref med aspath origin > > I*> N 172.16.1.0/24 172.31.1.1 100 0 i > > I*m N 172.16.1.0/24 172.31.2.1 100 0 i > > AI*> N 172.16.2.0/24 0.0.0.0 100 0 i > > > > > > But there is only one path in FIB table: > > > > Device1# bgpctl show fib | grep B > > flags: B = BGP, C = Connected, S = Static > > N = BGP Nexthop reachable via this route > > B 48 172.16.2.0/24 172.31.1.2 > > > > Device2# bgpctl show fib | grep B > > flags: B = BGP, C = Connected, S = Static > > N = BGP Nexthop reachable via this route > > B 48 172.16.1.0/24 172.31.1.1 > > > > Also my sysctl.conf is ok (net.inet.ip.multipath=1) > > I just wanna add multpath routes for my networks as dynamic. > > > > It's ok with static routing(*) but I would like to achieve it as > > dynamically with bgpd. > > What is wrong with my configuration? Can you please help me. > > Thanks. > > > > (*) > > Device1# route add 172.16.2.0/24 172.31.1.2 -mpath > > add net 172.16.2.0/24: gateway 172.31.1.2 > > Device1# route add 172.16.2.0/24 172.31.2.2 -mpath > > add net 172.16.2.0/24: gateway 172.31.2.2 > > Device1# netstat -rnf inet | grep 172.16.2 > > 172.16.2/24 172.31.1.2 UGSP 0 0 - 8 gre1 > > 172.16.2/24 172.31.2.2 UGSP 0 0 - 8 gre2 > > > > Device2# route add 172.16.1.0/24 172.31.1.1 -mpath > > add net 172.16.1.0/24: gateway 172.31.1.1 > > Device2# route add 172.16.1.0/24 172.31.2.1 -mpath > > add net 172.16.1.0/24: gateway 172.31.2.1 > > Device2# netstat -rnf inet | grep 172.16.1 > > 172.16.1/24 172.31.1.1 UGSP 0 0 - 8 gre1 > > 172.16.1/24 172.31.2.1 UGSP 0 0 - 8 gre2 > > > > You don't need add-path for your setup (also you did only send the best > path and not the best path plus an alternative). You want to use both the > path from router 172.31.1.1 and the one from 172.31.2.1. > > As mentioned above bgpd currently does not do multipath. It is on the > todo list but don't hold your breath I have a few other things I need to > tackle first. > > -- > :wq Claudio -- :wq Claudio

