All flags, environment variables, ConfigMap settings, and tuning guidance for unbounded-net.
This document describes all configuration options for unbounded-net components.
For a conceptual introduction, see Networking Concepts.
Runtime Configuration
Both the controller and node agent load runtime settings from a shared YAML
file mounted from the unbounded-net-config ConfigMap.
Default path: /etc/unbounded-net/config.yaml
Override: --config-file=<path>
Startup behavior: fail-fast if the config file is missing or invalid.
CLI flags still work as explicit overrides when set.
Config Structure
common:azureTenantId:""# Only for Azure Portal links in the UIapiserverURL:""# Override API server URL (empty = in-cluster)logLevel:2# klog verbosity (0-10), watched for live changescontroller:healthPort:9999nodeAgentHealthPort:9998informerResyncPeriod:300sstatusStaleThreshold:40sregisterAggregatedAPIServer:trueleaderElection:enabled:trueleaseDuration:15srenewDeadline:5sretryPeriod:10snode:cniConfDir:/host/etc/cni/net.dcniConfFile:10-unbounded.conflistbridgeName:cbr0wireGuardDir:/host/etc/wireguardwireGuardPort:51820mtu:1280healthPort:9998tunnelDataplaneMapSize:16384tunnelIPFamily:IPv4preferredPrivateEncap:GENEVEpreferredPublicEncap:WireGuardgenevePort:6081geneveVni:1vxlanPort:4789
Controller Configuration
Leader Election
Flag
Default
Description
--leader-elect
false
Enable leader election for HA.
--leader-elect-lease-duration
15s
Duration of the leader lease.
--leader-elect-renew-deadline
5s
Deadline for renewing leadership.
--leader-elect-retry-period
10s
Retry period for acquiring leadership.
Health and Monitoring
Flag
Default
Description
--health-port
9999
Health check HTTP server port (0 to disable).
--node-agent-health-port
9998
Node agent health port (for dashboard links).
--status-stale-threshold
40s
Duration after which pushed status is stale.
--register-aggregated-apiserver
true
Enable aggregated API status endpoints.
--informer-resync-period
300s
Informer resync interval.
Logging
Flag
Default
Description
-v
0
Log verbosity level (0-10).
--logtostderr
true
Log to stderr.
Node Agent Configuration
General
Flag
Default
Env Var
Description
--node-name
–
NODE_NAME
Name of this node (required).
--health-port
9998
–
Health check server port.
--informer-resync-period
3600s
–
Informer resync period.
--route-table-id
252
–
Custom routing table ID.
--preferred-private-encap
GENEVE
–
Preferred encap for internal links.
--preferred-public-encap
WireGuard
–
Preferred encap for external links.
--health-flap-max-backoff
120s
–
Max backoff for health check flap dampening.
CNI Configuration
Flag
Default
Description
--cni-conf-dir
/etc/cni/net.d
CNI configuration directory.
--cni-conf-file
10-unbounded.conflist
CNI configuration file name.
--bridge-name
cbr0
Bridge interface name.
--mtu
1280
MTU for tunnel and bridge interfaces.
MTU Guidance
The node.mtu setting controls the MTU on tunnel and bridge interfaces.
Encapsulation overhead:
The three shared tunnel device names (geneve0, vxlan0, ipip0) and the per-port WireGuard interface prefix (default wg) are configurable via the flags above and via the matching YAML fields under node: (geneveInterfaceName, vxlanInterfaceName, ipipInterfaceName, wireGuardInterfacePrefix). Operators rarely need to change them.
Constraints, enforced at startup:
Shared tunnel names: non-empty, at most 15 bytes (Linux IFNAMSIZ limit), pairwise distinct, must not equal unbounded0.
WireGuard prefix: non-empty, at most 10 bytes (so prefix + 5-digit UDP port fits in IFNAMSIZ), no /, must not equal unbounded0.
unbounded0 (the agent’s eBPF dummy device) is not configurable.
When the names are changed, the agent automatically removes previous-run devices it can confidently identify, scoped narrowly so other CNIs (e.g. Cilium) running flow-based GENEVE / VXLAN on different UDP ports are not touched. IPIP is not auto-cleaned: remove a renamed-away IPIP device manually with ip link del <old-name>.
Tunnel Dataplane
The node agent uses an eBPF dataplane: BPF LPM tries on the unbounded0 interface drive per-destination tunnel redirection.
Flag
Default
Description
--tunnel-dataplane-map-size
16384
Max entries per BPF LPM trie map.
--tunnel-ip-family
IPv4
Underlay IP family for tunnel encapsulation (IPv4 or IPv6).
Tunnel Protocol Selection
The tunnelProtocol field is available on all scope CRDs:
Value
Overhead
Encrypted
Use Case
WireGuard
80 bytes
Yes
Cross-site links over public networks
GENEVE
58 bytes
No
High-throughput internal links
VXLAN
~58 bytes
No
Links with VXLAN hardware offload
IPIP
20 bytes
No
Minimal overhead internal links
None
0 bytes
No
Direct L3 routing
Auto
Varies
Varies
System selects based on link type (default)
When Auto, links using external IPs use WireGuard; internal-only links use
the preferred private encap (default GENEVE). The security-wins rule ensures
WireGuard is used if any scope explicitly requests it.
See Routing Flows for
the full protocol selection algorithm.
Status Push
Flag
Default
Description
--status-push-enabled
true
Push status to controller.
--status-push-interval
10s
Push interval.
--status-ws-enabled
true
Enable WebSocket transport.
--status-ws-apiserver-mode
fallback
never, fallback, or preferred for API server relay.
--status-critical-interval
1s
Max critical-delta publish frequency.
--status-stats-interval
15s
Max statistics-delta publish frequency.
Health Check (UDP Probes)
Flag
Default
Description
--healthcheck-port
9997
UDP health check probe port (0 to disable).
--base-metric
1
Base metric for programmed routes.
Health check sessions are automatically created for all routes with nexthops.
Route metric adjustment on failure provides fast failover.