You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Put this in the TITLE field:
os-frr: FRR 10.6.1 (26.1.10) breaks eBGP — bgpd rejects 10.5.x peer OPEN (NOTIFICATION+RST) and staticd fails to start
The template body will be pre-filled with the sections below. Replace each section's placeholder text with the matching text below, leaving the bold section headers and the checkbox lines EXACTLY as the template generated them.
Tick the three checkboxes by putting an x in the brackets.
Everything below is the body, in the template's exact order. Paste section-by-section over the pre-filled placeholders.
Important notices
Before you add a new report, we ask you kindly to acknowledge the following:
I have searched the existing issues, open and closed, and I'm convinced that mine is new.
The title contains the plugin to which this issue belongs
Describe the bug
After updating to OPNsense 26.1.10 (which ships FRRouting 10.6.1 on FreeBSD 14.3), eBGP sessions on the updated node fail to establish. Two distinct failure modes were observed, both tied to FRR 10.6.1:
OPEN rejection / interop failure vs FRR 10.5.x peers — a 10.6.1 node rejects a peer's BGP OPEN and resets the session. The peer was running FRR 10.5.2 / 10.5.3 with identical config; only the FRR version differed. On the wire: TCP connects, the 10.5.x side sends its 153-byte OPEN, the 10.6.1 side ACKs it and replies with a 21-byte BGP NOTIFICATION followed by FIN/RST — without ever sending its own OPEN.
Daemon comes up incomplete after update — on one node, after the update bgpd was running but staticd was NOT started (watchfrr managed only mgmtd zebra bgpd), despite redistribute static being configured, and /var/log/frr/frr.log did not exist. All BGP peers sat Idle/Active with 0 messages received. A full service frr stop + hard kill + service frr start (verified a new bgpd PID) did NOT recover it; only rolling FRR back resolved it.
WireGuard transport was healthy throughout (tunnels up, handshakes current, ICMP across the tunnel fine, TCP/179 three-way handshake completing). This is strictly an FRR/bgpd-layer problem introduced by the 10.6.1 update — it is easy to misdiagnose as a WireGuard/firewall issue because the tunnels stay up while all BGP-learned routes disappear.
Last known working version: FRR 10.5.2 / 10.5.3 (OPNsense 26.1.x prior to 26.1.10). Rolling FRR back to 10.5.x on the affected node restores BGP immediately.
Note on opnsense-revert: opnsense-revert -r 26.1.9 frr10 os-frr did NOT help — the 26.1.9 repo also ships FRR 10.6.1 (only os-frr moved 1.53 -> 1.52). An older release tag that actually shipped FRR 10.5.x, or a boot-environment / snapshot rollback, is required.
To Reproduce
Steps to reproduce the behavior:
Two OPNsense nodes peered via eBGP over a WireGuard point-to-point tunnel, both initially on FRR 10.5.x, session Established.
Update one node to 26.1.10 (FRR 10.6.1) and reboot.
The updated node's BGP session to the 10.5.x peer fails to establish and loops (OpenSent -> NOTIFICATION -> reset). In a subset of cases the updated node's bgpd comes up with staticd not started and no /var/log/frr/frr.log, and all peers stay Idle/Active with MsgRcvd 0.
See error.
Expected behavior
FRR 10.6.1 should interoperate with FRR 10.5.x eBGP peers (BGP OPEN / capability negotiation is meant to be backward compatible), all configured daemons including staticd should start, and the session should reach Established.
Screenshots
N/A (CLI evidence provided below under Relevant log files).
Relevant log files
Wire capture on the 10.6.1 node's tunnel interface during session setup (IPs shown as .1 = 10.5.x peer, .2 = 10.6.1 node):
.1 > .2 [S] peer (10.5.x) SYN
.2 > .1 [S.] 10.6.1 node SYN-ACK
.1 > .2 P. seq 1:154 len 153 BGP peer sends OPEN (153 bytes)
.2 > .1 . ack 154 10.6.1 node ACKs the OPEN (received OK)
.2 > .1 P. seq 1:22 len 21 BGP 10.6.1 node sends 21-byte NOTIFICATION
.2 > .1 F. / R 10.6.1 node closes + RST
show bgp neighbor on the 10.6.1 side:
Opens: Sent N Rcvd 0
Notifications: Sent N Rcvd 0
Last reset: Notification sent (Neighbor Events Error/Receive Unexpected Message in OpenSent State)
Failure mode 2 (staticd missing). show ip bgp summary shows all peers Idle/Active with MsgRcvd 0, and:
# pgrep -lf 'bgpd|zebra|staticd|mgmtd'
<watchfrr> ... -d mgmtd zebra bgpd <-- no staticd in the managed daemon list
<zebra>
<bgpd>
<mgmtd>
# ls /var/log/frr/frr.log
ls: /var/log/frr/frr.log: No such file or directory
service frr stop + pkill -9 -f 'bgpd|zebra|staticd|mgmtd|watchfrr' + service frr start produced a NEW bgpd PID but staticd still did not start and sessions still failed.
Additional context
Topology: hub-and-spoke eBGP, each session over its own WireGuard point-to-point tunnel. Multiple private ASNs.
Relevant FRR config common to all nodes: no bgp ebgp-requires-policy, bgp graceful-restart, redistribute static, per-neighbor default-originate on some neighbors, no per-neighbor route-maps.
Impact: all routes learned/advertised over BGP are lost on the affected node, dropping inter-site prefixes across the mesh even though WireGuard tunnels remain up.
Possibly related: a separately reported FRR 10.6.1-on-FreeBSD regression where kernel routes are overwritten after interface events — suggests 10.6.1 on FreeBSD has broader issues this cycle.
Secondary hardening we applied (not the root cause): pinned bgp router-id to stable tunnel IPs on every node; nodes had blank router-id and were latching onto dynamic DHCP WAN IPs, which aggravated connection-collision behavior during recovery.
Questions for maintainers:
Is FRR 10.6.1 in 26.1.10 known to have a BGP OPEN-handling / capability-negotiation regression vs 10.5.x peers?
Is the missing-staticd / missing-frr.log startup a packaging issue in os-frr for FRR 10.6.1 on FreeBSD 14.3?
Which release / plugin version will carry the fix (or a re-pinned FRR), so we know when it is safe to update BGP nodes again?
Environment
Software version used and hardware type if relevant.
OPNsense 26.1.10 (amd64)
FRRouting 10.6.1 on FreeBSD 14.3-RELEASE-p15 (affected node)
Peers on FRRouting 10.5.2 (FreeBSD 14.3-p9) and 10.5.3 (FreeBSD 14.3-p12) — worked fine
os-frr plugin (26.1.10)
OPNsense bug report — FRR 10.6.1 BGP regression
HOW TO FILE (so the bot doesn't flag it low-priority):
os-frr: FRR 10.6.1 (26.1.10) breaks eBGP — bgpd rejects 10.5.x peer OPEN (NOTIFICATION+RST) and staticd fails to start
Everything below is the body, in the template's exact order. Paste section-by-section over the pre-filled placeholders.
Important notices
Before you add a new report, we ask you kindly to acknowledge the following:
Describe the bug
After updating to OPNsense 26.1.10 (which ships FRRouting 10.6.1 on FreeBSD 14.3), eBGP sessions on the updated node fail to establish. Two distinct failure modes were observed, both tied to FRR 10.6.1:
OPEN rejection / interop failure vs FRR 10.5.x peers — a 10.6.1 node rejects a peer's BGP OPEN and resets the session. The peer was running FRR 10.5.2 / 10.5.3 with identical config; only the FRR version differed. On the wire: TCP connects, the 10.5.x side sends its 153-byte OPEN, the 10.6.1 side ACKs it and replies with a 21-byte BGP NOTIFICATION followed by FIN/RST — without ever sending its own OPEN.
Daemon comes up incomplete after update — on one node, after the update bgpd was running but staticd was NOT started (watchfrr managed only
mgmtd zebra bgpd), despiteredistribute staticbeing configured, and/var/log/frr/frr.logdid not exist. All BGP peers sat Idle/Active with 0 messages received. A fullservice frr stop+ hard kill +service frr start(verified a new bgpd PID) did NOT recover it; only rolling FRR back resolved it.WireGuard transport was healthy throughout (tunnels up, handshakes current, ICMP across the tunnel fine, TCP/179 three-way handshake completing). This is strictly an FRR/bgpd-layer problem introduced by the 10.6.1 update — it is easy to misdiagnose as a WireGuard/firewall issue because the tunnels stay up while all BGP-learned routes disappear.
Last known working version: FRR 10.5.2 / 10.5.3 (OPNsense 26.1.x prior to 26.1.10). Rolling FRR back to 10.5.x on the affected node restores BGP immediately.
Note on opnsense-revert:
opnsense-revert -r 26.1.9 frr10 os-frrdid NOT help — the 26.1.9 repo also ships FRR 10.6.1 (only os-frr moved 1.53 -> 1.52). An older release tag that actually shipped FRR 10.5.x, or a boot-environment / snapshot rollback, is required.To Reproduce
Steps to reproduce the behavior:
/var/log/frr/frr.log, and all peers stay Idle/Active with MsgRcvd 0.Expected behavior
FRR 10.6.1 should interoperate with FRR 10.5.x eBGP peers (BGP OPEN / capability negotiation is meant to be backward compatible), all configured daemons including staticd should start, and the session should reach Established.
Screenshots
N/A (CLI evidence provided below under Relevant log files).
Relevant log files
Wire capture on the 10.6.1 node's tunnel interface during session setup (IPs shown as .1 = 10.5.x peer, .2 = 10.6.1 node):
show bgp neighbor on the 10.6.1 side:
Failure mode 2 (staticd missing). show ip bgp summary shows all peers Idle/Active with MsgRcvd 0, and:
service frr stop+pkill -9 -f 'bgpd|zebra|staticd|mgmtd|watchfrr'+service frr startproduced a NEW bgpd PID but staticd still did not start and sessions still failed.Additional context
no bgp ebgp-requires-policy,bgp graceful-restart,redistribute static, per-neighbordefault-originateon some neighbors, no per-neighbor route-maps.bgp router-idto stable tunnel IPs on every node; nodes had blank router-id and were latching onto dynamic DHCP WAN IPs, which aggravated connection-collision behavior during recovery.Questions for maintainers:
Environment
Software version used and hardware type if relevant.