Hello, I try to setup multipath routing environment with OpenBSD's bgpd. 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