Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Config reference

ndn-fwd.toml configures the forwarder. The shipped example is examples/ndn-fwd.example.toml — every option with its default in a comment.

This page lists the option groups; consult examples/ndn-fwd.example.toml for the full set with defaults.

File location

OrderPath
1--config <path> (highest precedence)
2$NDN_CONFIG
3./ndn-fwd.toml
4~/.config/ndn-rs/ndn-fwd.toml
5/etc/ndn-fwd/ndn-fwd.toml

Absent file → defaults from ndn-config.

[engine] — pipeline tuning

KeyDefaultUse
cs_capacity_mb64Content-store capacity (MiB). Deprecated alias for [cs] capacity_mb.
pipeline_channel_cap4096Depth of the inter-task pipeline channel. Increase under sustained load.
pipeline_threads0Pipeline parallelism. 0 = auto (CPU count). 1 = single-threaded inline.

[cs] — content store

KeyDefaultValues
variantlrulru, sharded-lru, null.
capacity_mb64Capacity in MiB.
shards(auto)Number of LRU shards (sharded-lru only).
admission_policydefaultdefault (PIT-bound) or admit-all.
unsolicited_policydrop-allCaching of Data with no pending PIT entry: drop-all, admit-local, admit-network, admit-all. Use admit-network on a broadcast/ad-hoc bearer.

Persistent backends (feature-gated). For a CS that survives restarts, prefer the SQLite backend in production: it implements true LRU eviction with race-free byte/entry accounting. The fjall (LSM) backend currently evicts in NDN key order rather than by recency, its accounting can drift under concurrent insert, and eviction is O(N) per insert (a recency-indexed rewrite is tracked). In-memory lru / sharded-lru remain the default and are unaffected.

[mgmt] — management plane

KeyDefaultUse
socket/tmp/ndn-fwd.sockIPC socket the management protocol listens on.
prefix/localhost/ndn-fwdManagement protocol prefix.
auth.requirefalseRequire signed mgmt commands on non-Unix faces.
auth.signer(none)Identity name allowed to sign mgmt commands.

[[face]] — face listeners

Repeated table. Order determines face index (used by [[route]]).

[[face]]
kind = "udp"
bind = "0.0.0.0:6363"

[[face]]
kind = "multicast"
group = "224.0.23.170"
port = 56363

[[face]]
kind = "webtransport"
listen = "0.0.0.0:4443"
cert = "/etc/ndn-fwd/wt.pem"
key  = "/etc/ndn-fwd/wt.key"

Face kinds: udp, tcp, unix, multicast, ether, webtransport, ws, webrtc, shm, serial, bluetooth. See Face transports for the per-kind options.

[[route]] — static routes

[[route]]
prefix = "/lab"
face = 0          # face index from [[face]] order
cost = 100        # optional

[discovery] — neighbour discovery

KeyDefaultUse
enabledtrueRun the autoconf discovery protocol.
discovery_transportudpudp, ether, both.
interval_ms5000HELLO interval.

[demo_ca] — embedded NDNCERT CA

Off by default; enabled = true runs an in-process CA. See NDNCERT setup.

KeyDefaultUse
enabledfalseRun the embedded CA.
prefix/demo/CACA prefix; issues under the parent namespace.
tokens[]Legacy: non-empty selects a token challenge (ignored when challenge is set).
emit_attestationsfalseEmbed a challenge attestation in each issued cert.

[[demo_ca.challenge]] — explicit challenge set (replaces the tokens shortcut). Each entry has kind = "nop"|"token"|"pin"|"email":

[[demo_ca.challenge]]
kind = "email"
ttl_secs = 300
smtp = { host = "smtp.example.com", port = 587, from = "ca@example.com", starttls = true }

email delivers via SMTP only with --features smtp (lettre); otherwise (or with smtp.log_only = true) the code is logged. [demo_ca.require_attestation] (prefix/kind/require_signed) gates issuance on a challenge attestation. possession/yubikey/device-approval are wired in code.

[log] — log filter

KeyDefaultUse
filterinfoRUST_LOG-style filter (info,ndn_engine=debug).
formatcompactcompact, json, pretty.
with_targettrueInclude the tracing target.

[rate_limit] — token-bucket rate limits

Per project memory project_dashboard_multi_forwarder.

See also

  • examples/ndn-fwd.example.toml — the source of truth; every key with defaults and inline comments.
  • ndn-fwd — operator workflows.
  • Face transports — per-face configuration shapes.