I also have a question about a portion of the "show ip fib" I omitted in
the previous email:
forwarding: unicast-ip4-chain
[@0]: dpo-load-balance: [proto:ip4 index:252585 buckets:2 uRPF:70
to:[1685469:651002574]]
[0] [@5]: ipv4 via a.b.c.d BondEthernet0: mtu:1500 next:8 flags:[]
5a80bd2968e03cfdfe9ec4e40800
[1] [@5]: ipv4 via x.y.z.w uplink1: mtu:1500 next:5 flags:[]
b49691b2a989b49691b2a6200800
Does "dpo-load-balance" in the output with two routes mean VPP is using
both routes simultaneously (ECMP)? If so, is there a way to configure it
to just install the one best available route?
Thanks,
Andre
On 8/5/25 9:41 AM, Andre Nathan via lists.fd.io wrote:
Hello
I have a two-router setup where one is running VPP with LCP and the
other is a regular Linux box. I took down the Linux router to reinstall
it with VPP and noticed the following issue on the VPP router.
For context, the routers each have two BGP sessions with uplink
providers and an iBGP session with each other, for redundancy. When I
turned off the Linux router, I noticed that the routes learned via the
iBGP session remained in the VPP FIB.
In the output below, a.b.c.d is the IP of the Linux router and x.y.z.w
is the IP of the uplink provider's router.
# vppctl show ip fib 138.117.103.55/32
ipv4-VRF:0, fib_index:0, flow hash:[src dst sport dport proto
flowlabel ] epoch:0 flags:none locks:[adjacency:1, default-route:1, lcp-
rt:1, ]
138.117.102.0/23 fib:0 index:252584 locks:2
lcp-rt-dynamic refs:1 src-flags:added,contributing,active,
path-list:[352] locks:4258 flags:shared,popular, uPRF-list:70 len:2
itfs:[3, 7, ]
path:[65] pl-index:352 ip4 weight=1 pref=32 attached-nexthop:
oper-flags:resolved,
a.b.c.d BondEthernet0
[@0]: ipv4 via a.b.c.d BondEthernet0: mtu:1500 next:8 flags:[]
5a80bd2968e03cfdfe9ec4e40800
path:[374] pl-index:352 ip4 weight=1 pref=32 attached-nexthop:
oper-flags:resolved,
x.y.z.w uplink1
[@0]: ipv4 via x.y.z.w uplink1: mtu:1500 next:5 flags:[]
b49691b2a989b49691b2a6200800
However in bird this is the available route:
bird> show route for 138.117.103.55
Table master4:
138.117.102.0/23 unicast [uplink2_ipv4 2025-07-24] * (100) [AS262387i]
via k.l.m.n on uplink2
So in fact both routes in the VPP FIB were stale, and the correct route
wasn't installed (The uplink2 interface is not compatible with DPDK so
it's managed by Linux, but it's moved to the VPP namespace so that
forwarding works).
I tried removing the route manually with "vppctl ip route del
138.117.102.0/23 via a.b.c.d" but that had no effect.
I've found this thread about LCP routes not being deleted [1] but not
much else.
Has anyone ever seen this behavior, and is there a workaround? The
output above is just an example for a single prefix, but it seems all
routes previously learned via the iBGP session were still in the FIB,
and likely many routes from the other BGP sessions were stale too.
My configuration files follow. I'm using VPP 24.04 on this router.
# cat /etc/vpp/startup.conf
unix {
gid vpp
nodaemon
cli-listen /run/vpp/cli.sock
exec /etc/vpp/bootstrap.vpp
}
api-trace { on }
api-segment { gid vpp }
socksvr { default }
memory {
main-heap-size 2G
main-heap-page-size default-hugepage
}
cpu {
main-core 1
corelist-workers 3,5,7,9,11,13,15,17,19
}
buffers {
buffers-per-numa 128000
default data-size 16384
page-size default-hugepage
}
statseg {
size 1G
page-size default-hugepage
per-node-counters off
}
plugins {
plugin default { disable }
plugin dpdk_plugin.so { enable }
plugin linux_nl_plugin.so { enable }
plugin linux_cp_plugin.so { enable }
}
logging {
default-log-level warn
default-syslog-log-level warn
}
dpdk {
uio-driver vfio-pci
dev 0000:41:00.0 {
name uplink1
}
dev 0000:05:00.0 {
name ext0
}
dev 0000:05:00.1 {
name ext1
}
}
linux-cp {
default netns vpp
lcp-sync
lcp-auto-subint
}
# cat /etc/vpp/bootstrap.vpp
lcp create uplink1 host-if uplink1
set interface state uplink1 up
set interface ip address uplink1 x.y.z.z/30
set interface ip address uplink1 x:y:z::z/126
lcp create ext0 host-if ext0
lcp create ext1 host-if ext1
create bond mode active-backup
bond add BondEthernet0 ext0
bond add BondEthernet0 ext1
set interface state ext0 up
set interface state ext1 up
lcp create BondEthernet0 host-if external
set interface state BondEthernet0 up
set interface ip address BondEthernet0 a.b.c.e/22
set interface ip address BondEthernet0 a:b:c::e/48
Thanks in advance,
Andre
[1] https://lists.fd.io/g/vpp-dev/topic/111508185
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#26238): https://lists.fd.io/g/vpp-dev/message/26238
Mute This Topic: https://lists.fd.io/mt/114547460/21656
Group Owner: vpp-dev+ow...@lists.fd.io
Unsubscribe: https://lists.fd.io/g/vpp-dev/leave/14379924/21656/631435203/xyzzy
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-