Week of 2026-10-05
A week on configuration safety, the public API and the appliance kernel, with fixes across BGP, RSVP-TE and IKEv2. Several changes need a look before upgrading, listed first.
The release queue closed the week at 202 required work items and 224 nice-to-have, against 213 and 221 at the start. 12 required items joined and 23 left. Most of those that left were behaviour that shipped earlier and gained its end-to-end proof this week. The additions are the appliance kernel, live BGP reconfiguration and gaps the RFC checking found. This is an inventory preview. It reads two endpoints, so an item added and finished inside the same week never appears in it, and the counts measure work items rather than readiness: https://ze-software.net/project/roadmap/
⚠️ Changes to check
- Config editor:
commitis nowcommit now, withcommit confirmed <seconds>,commit accept,commit abortandcommit verify. A barecommitis refused and names the form to type. - API: the method names were reorganised by owner, for example
ze-show:ospf-neighborsis nowze-ospf:show-neighbors. Scripts that call methods by name need updating.ze help ai --jsonlists the current set. - BGP: the
bgp-persistplugin is gone. Bindbgp-ribinstead, as described in the plugins guide. Sent-route history no longer survives a restart. - BGP:
route-refreshandextended-messagetakeenable,disable,requireorrefuse. The old bare and{ }spellings are refused, andze config validateprints the new one. - Commands and YANG modules are checked more strictly: an argument outside its declared length or pattern is refused, and so is a plugin module with a misspelt extension.
commit-revisionspruning now works. The default file name never matched before, so an archive over the limit will be trimmed on upgrade.
🛠️ Configuration
New:
- The daemon now owns the
commit confirmedwindow. It survives a restart and is rolled back at boot if it was never accepted. While it is open, other users and every other writer (REST, gNMI, the web editor, rollback) are told who holds it and for how long. ze doctor kernel-capabilitieslists what the running kernel supports for L2TP, PPPoE, WireGuard and IPsec.
Fixed:
commit confirmedwithout config history wrote the change permanently. It now refuses and points atze init.ze signal stopover SSH left the daemon running.
🛰️ Routing
New:
- Administrative distance now lives in the Loc-RIB under
rib { distance { } }. Changing it re-ranks installed routes, and the FIB follows. ze_bgp_open_rejected_bad_peer_as_totalcounts OPENs refused for AS 0 or an unexpected peer AS (RFC 7607, RFC 4271 Section 6.2).
Fixed:
- Adding a receive-only process, such as RPKI, to an established BGP peer no longer resets the session when the peer supports route refresh.
- Changes to the IRR filter took effect only after a restart.
- Peers made with
create bgp peerwere lost on the next reload, and a removed peer's routes stayed in the RIB. - The looking glass showed an empty best-routes table, and counted routes sent to a peer as learned from it.
- RSVP-TE refuses a path MTU below what an MPLS packet needs, which could hang a stock kernel. A repaired LSP now stays on its bypass when refreshed (RFC 4090 Section 6.4.3).
💿 Appliance and VPN
- The appliance now boots only Ze's own kernel, Linux 7.2.9, with WireGuard and every IPsec transform built in. Each image carries the kernel's GPL source notice.
- IKEv2: a refused Child SA no longer tears down the IKE SA. Ze keeps it and retries the Child SA later (RFC 7296 Section 2.21.2).
- IKEv2: a refused rekey was resent every second until the SA expired. It now waits, and never re-offers a group the peer refused.
📚 Standards programme
Ze is being checked against every RFC it implements, one MUST at a time. The work continues.
175 RFCs are on the list. Of 6,452 requirements, 4,524 are MUST-level and 4,147 are checked. 218 still owe a test, down from 248 last week. Each test is also being read again against the RFC sentence it checks. Fixes from that second reading are finished for four of its eight areas and are being checked: https://ze-software.net/quality/rfc-compliance/
🔭 Coming up
Under way:
- Fixing the remaining defects the second reading found in BGP and OSPF.
- Finishing the appliance kernel: VPN support proven on a running image, and the test hosts booting the same kernel.
- Enabling BFD on an established BGP peer without resetting the session, as FRR and BIRD do.
- Deeper route decision and FIB programming, and a third round of hot-path performance work.
Ready to start:
- BGP DelayOpen and automatic start (RFC 4271 Section 8).
- BGP EPE peer segments and SRv6 PeerNode SIDs (RFC 9086, RFC 9514).
- A choice of when a fetched IRR change takes effect: at once, on a schedule, or only when the operator applies it.