Skip to content

History / peers

Revisions

  • docs(wiki): sync wiki with 15f9b98ae..acbef856e (93 commits) No new pages. Updated 26 existing pages covering: the plugin peer-up barrier and exclusive role claims, progress-bounded plugin startup, the route-server replay/live partition at a peer-up cut, one End-of-RIB per family per session, forward refusal on an unresolvable source, IRR filtering becoming opt-in, same-subnet interface renumbering, all- participant config reload and nested config roots, tc noqueue snapshot and per-protocol filter priorities, DDoS fail-closed on an unresolved victim, OSPF interface-open resilience and the OSPFv3 DAD source, L2TP control frames on the adopted socket, runtime state persistence, the appliance e2fsprogs resolution, and off-Linux unit tests. Corrects two false claims found while syncing: - rfc-implementation.md said Ze "deviates from RFCs in a small number of cases, and every deviation is documented in exabgp-differences.md or in the relevant in-tree architecture doc". Neither half held. There are 539 {gap:} annotations across 84 of the 166 enrolled RFCs, and that is where deviations live, on the specific requirement line with the producing file:line. Replaced with the real shape plus three worked RFC 4271 examples. - The attribute-ordering deviation it cited no longer exists: all three builders keep type-code order since ea9c83ca5. Stale counts fixed: 86 registered plugins is now 87.

    @thomas-mangin thomas-mangin committed Jul 26, 2026
  • docs(wiki): sync wiki with 44673dfea..15f9b98ae (211 commits) Updated 29 existing pages. No new pages. Breaking CLI change: a bare `ze <config-file>` no longer starts the daemon. Position 1 accepted a command OR a free-form path, so a config named like a command was dispatched as that command and never loaded. Launch is now `ze start <config-file>`, with `-` kept as the stdin sentinel. Corrected in quick-start, starting-and-stopping (including its systemd unit), command-reference, debugging, scenarios, chaos-tested-peering and exabgp-migration-walkthrough. command-reference also gains a `ze start` section with its own flags. Also flipped: `ze config set`, `activate` and `deactivate` no longer notify a running daemon by default. `--reload` opts in and `--no-reload` is gone. Feature gates grew from 12 to 36 and now include the BGP engine itself, the BNG, IPsec, VPP and every routing protocol. building.md gets the full grouped list, the generated `go install` line, and the dependency rules that make it usable: ze_bmp needs ze_bgp, and bfd/api stays always-on so a BFD-less build still runs BGP and OSPF unchanged. status, feature-inventory, comparison and glossary all carried the stale twelve-tag list. RFC gate: 138 enrolled RFCs over 1466 gated requirements became 166 documents over 2720, none outstanding. Documented the four regression ratchets and the extraction-completeness pass, including why deleting a requirement is blocked: it would otherwise be the cheapest route from red to green, cheaper than declaring a gap, which would pressure contributors to hide obligations. Protocol correctness, documented where an operator would look for it: - route-injection: an operator-supplied as-path gets the local AS prepended for a plain eBGP peer (RFC 4271 5.1.2). Verbatim transparency is scoped to RS clients, so the two never share a built UPDATE. - peers: RFC 6286 identifier validation on both receive rails, AS-wide uniqueness, and the allow-shared-router-id opt-out for anycast speakers. - graceful-restart: RFC 9494 4.6 depreference on stale readvertisement is driven by stale level rather than restart state, so mark-stale routes are covered too. - bgp-nlri-ls: an unknown NLRI type is skipped, not fatal to every NLRI after it, per RFC 9552 5.1. - bgp-nlri-evpn: Ze is a control-plane relay and not a PE; malformed IP Address Length is rejected. - bgp-rib: multipath ECMP group installation and the ecmp-paths field. Security and robustness: authorization fails closed on an unresolved profile, with the reserved-namespace break-glass path and the AAA ingress filtering that stops an untrusted RADIUS or TACACS+ server naming it. EAP-TLS refuses a responder that has no trust anchor to validate against. static isolates one unprogrammable route instead of failing the whole section, withdraws the orphaned old route on a skipped replacement, and surfaces both through skip-reason and a doctor check. Operator traps now named: the pinned appliance kernel ships no L2TP and Ze's fail-closed probe crash-loops the daemon on it with nothing useful on serial; policy routing needs a filter chain because nftables rejects a route chain on prerouting, which took the plugin down at startup; nft set-element timeouts silently never expired until the set-level flag was set. ci.md claimed the CI configuration was not in the repository. It is: validation moved off Codeberg's shared Woodpecker runners onto GitHub Actions, six workflows, with the stage list single-sourced in stagesForMode so a gate absent from that function runs nowhere. testing.md gains the test-health dashboard (is our testing correct, not is it large), the two sensitivity ratchets, the accept-only .ci lint and its shrink-only baseline, and the needs-linux and netns-link directives. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

    @thomas-mangin thomas-mangin committed Jul 25, 2026
  • docs(wiki): sync wiki with 952308c..0318cf8 (192 commits) New pages: ipsec, docker, health-checks, production-diagnostics, self-update, ze-install. Updated 25 existing pages covering: IPsec/IKEv2, diagnostics suite, self-update with fleet rollout, ze doctor, health registry, crash capture, XFRM interfaces, interface rate tracking, FlowSpec-to-firewall bridge, ASPA policy enforcement, RS dynamic peers, AIGP support, DHCP named ranges, Docker support, zero-touch provisioning, ZeFS integrity, config schema stamp, graceful listener migration, chaos v2 actions, monitor ping/traceroute/netlink, live packet capture, DNS cache management, conntrack nfs/sqlnet helpers, archive pruning, performance optimization campaign, Go 1.26, and glossary additions. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    @thomas-mangin thomas-mangin committed May 24, 2026
  • docs(wiki): sync wiki with ab0d20c..952308c (22 user-facing commits) ASPA path verification, named archive blocks, per-family address containers, named interface units, offload/steering, rpf-check enum, PPPoE client, keepalive timer, static route tables, kernel redistribute, DHCP server, conntrack, serial console, firmware update, RPF lookup, ze-analyse aspath, RIB attribute bundling, show <noun> grammar. New page: dhcp-server.md

    @thomas-mangin thomas-mangin committed May 17, 2026
  • Critical-review fixes: correct show uptime, rename syntax, and stale examples Self-review of the wiki-update pass caught several factual errors and fabricated sample outputs. Fixes: - show uptime is daemon start-time + duration, not per-peer uptime. Corrected in show-commands.md, peers.md verification section, and command-reference.md (moved from Peers group to Daemon group). - rename syntax is "rename <path> <old-key> to <new-key>" with a mandatory "to" keyword (JunOS style), not "rename <path> <new-key>" as previously documented in editor-workflow.md. - Removed the unverified claim that rename preserves live session state. rename is a config-tree operation; runtime reconcile behaviour is implementation-dependent and was not checked. - Added the insert ambiguity gotcha (values literally named first / last / before / after collide with position keywords). - Added the copy verb (deep-copy a list entry to a new key, same "to" syntax as rename) -- previously undocumented. - show interface brief / counters: dropped fabricated sample tables and replaced with a description of the fields and command forms. - Fixed stale peer syntax (remote { ip; as; }) inside code blocks on pages this pass touched: redistribution.md, editor-workflow.md, go-plugins.md, cli-tour.md. All now use the canonical connection { remote { ip } } + session { asn } form. - Replaced "leaf-pass" placeholder filter name in peers.md with <filter-name>. - gRPC Python example: simplified the import path to a generic form, noting that the exact package layout depends on protoc invocation. check-links.go reports all links OK. Broader stale peer syntax still exists on pages not touched this pass (cli.md, bgp-rs.md, blueprints, graceful-restart.md, rpki.md, etc.) -- out of scope for this cleanup but flagged for a future sweep. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    @thomas-mangin thomas-mangin committed Apr 11, 2026
  • Update peers.md and bgp.md for session policy and multipath peers.md: rewrite to the canonical connection/session YANG paths (connection/remote/ip, session/asn/local|remote, session/family/*). Add a new Session policy section covering route-reflector-client, cluster-id, next-hop auto/self/unchanged/<ip>, as-override, asn/local-options (no-prepend, replace-as), community/send, and per-family default-originate with default-originate-filter. Fold the filter chain reference to redistribution.md. Update required-fields table and common-problems diagnostics to match the new paths. bgp.md: fix the minimal example to current syntax and add a Multipath section covering maximum-paths and relax-as-path under bgp/multipath. Source commit: 7fcc8083 (main repo). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    @thomas-mangin thomas-mangin committed Apr 11, 2026
  • Update plugin config to use 'use' keyword for built-in plugins Replace 'run "ze plugin <name>"' with 'use <name>' across all wiki pages (46 files). The 'use' keyword is for built-in (in-process) plugins; 'run' is now reserved for external process plugins. Updated system.md plugin section to document both keywords. Based on main@80b7b7da (feat: add 'use' keyword for built-in plugins). Added .source-commit to track the codebase commit this wiki is synced to. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    @thomas-mangin thomas-mangin committed Apr 8, 2026
  • Flatten wiki to root directory for GitHub wiki compatibility GitHub wiki resolves pages by filename in the root directory only. Moved all 123 .md files from subdirectories to root. Renamed configuration/interfaces.md to configuration-interfaces.md to avoid collision with interfaces/interfaces.md. Fixed 8 image paths. Subdirectories are now empty (images/ retained for assets). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    @thomas-mangin thomas-mangin committed Apr 8, 2026