GROUT(8)
π GROUT(8) β the graph router daemon, bestie edition π
okay so. grout is section 8 of the System Manager's Manual, and she is that girl. Let's get into it. π¦
β¨ NAME β¨
grout β graph router daemon
πΈ DESCRIPTION πΈ
Grout is a software router based on DPDK rte_graph. That's it. That's the whole vibe. No cap. π
π SYNOPSIS π
grout [-M ADDR:PORT] [-S] [-V] [-h] [-m PERMISSIONS] [-o USER:GROUP]
[-p] [-s PATH] [-t] [-u MTU] [-v] [-x] [-- EAL ARGS...]
β¨ OPTIONS β¨
here's the full roster, no skips, no cuts, we eat every flag. π
-h,--helpβ shows you the usage help. the "what do I even do here" button.-M,--metrics [tcp:]ADDR:PORT | unix:PATHβ sets the listen address and port, or the unix socket, where openmetrics gets exported via HTTP GET, in its own dedicated thread. to turn it off, use-M :0.
Default: [::]:9111
-m,--socket-mode PERMISSIONSβ changes the API socket file permissions after creating it. only octal values are supported, bestie, don't get creative.
Default: GROUT_SOCK_MODE from environment or 0660.
-o,--socket-owner USER:GROUPβ changes the owner of the API socket file after creating it. symbolic names and numeric IDs both work, we're flexible like that. π«Ά
Default: GROUT_SOCK_OWNER from environment or current user and current group.
-p,--poll-modeβ disables the automatic micro-sleep. can also be enabled viaGROUT_POLL_MODE.-a,--adaptive-irqβ makes idle workers block on their RX queue interrupts instead of busy-polling, so the CPU can actually chill during quiet periods. an incoming packet raises the interrupt and the worker resumes polling. it requires PMD support for RX queue interrupts; without it a worker falls back to the micro-sleep ramp, unless--poll-modeis also given.
Can also be enabled via GROUT_ADAPTIVE_IRQ.
-S,--syslogβ redirects logs to syslog. can also be enabled viaGROUT_SYSLOG.-s,--socket PATHβ the path to the control plane API socket.
Default: GROUT_SOCK_PATH from environment or /run/grout.sock.
-t,--test-modeβ runs in test mode (no huge pages). can also be enabled viaGROUT_TEST_MODE.-u,--max-mtu MTUβ Maximum Transmission Unit. can also be set viaGROUT_MAX_MTU.
Default: 1800.
-v,--verboseβ increases verbosity. yes you can specify it multiple times. stack it. π-V,--versionβ prints the version and exits. quick little peek, then bye.-x,--trace-packetsβ prints all ingress/egress packets (for debugging purposes). can also be enabled viaGROUT_TRACE_PACKETS.
π ENVIRONMENT π
every single setting can be configured via environment variables. and when both an environment variable and a CLI flag are set, the CLI flag takes precedence β flags are the main character here, periodt.
boolean variables accept 1, true, on, yes (case insensitive) to enable, and 0, false, off, no to disable. easy.
π§ Daemon settings
GROUT_SOCK_PATHβ path to the control plane API socket. see-s.GROUT_SOCK_MODEβ API socket file permissions in octal notation. see-m.
Default: 0660.
GROUT_SOCK_OWNERβ API socket file ownership asUSER:GROUP. see-o.GROUT_TEST_MODEβ run in test mode (no huge pages). see-t.GROUT_POLL_MODEβ disable automatic micro-sleep. see-p.GROUT_ADAPTIVE_IRQβ enable adaptive interrupt RX. see-a.GROUT_SYSLOGβ redirect logs to syslog. see-S.GROUT_TRACE_PACKETSβ print all ingress/egress packets. see-x.GROUT_MAX_MTUβ Maximum Transmission Unit. see-u.
Default: 1800.
GROUT_OVERRIDE_DEFAULT_ROUTEβ when set to1,true,on, oryes(case insensitive), override the existing default route in the main routing table with metric0. this is required when running in a network namespace or a container where another default route (e.g. from Kubernetes) takes priority over grout's own default route. iykyk. πGROUT_OVERRIDE_RP_FILTERβ when set to1,true,on, oryes(case insensitive), set loose reverse path filtering (rp_filter=2) on control plane TAP interfaces. this prevents the kernel from dropping packets delivered by grout when strict reverse path filtering (rp_filter=1) is enabled globally. this is required whennet.ipv4.conf.all.rp_filteris set to1(strict) in the network namespace where grout is running.GROUT_FLUSH_ROUTES_ON_IFACE_DOWNβ when set to1,true,on, oryes(case insensitive), delete the routes going out of an interface when it goes administratively down, like zebra and Linux do. when disabled, these routes are kept with an unresolved nexthop and start working again when the interface goes back up. can also be changed at runtime withgrcli interface config set flush-routes-on-iface-down.
Default: false.
GROUT_SKIP_ROUTE_EVENTS_ON_IFACE_DOWNβ when set to1,true,on, oryes(case insensitive), do not emit route events for the routes deleted along with an interface. only useful for a control plane which already evicts those routes when it receives the interface event. can also be changed at runtime withgrcli interface config set skip-route-events-on-iface-down.
Default: false.
π¦ Sizing
these variables control the size of internal data structures. reducing them lowers memory consumption, which is useful for testing and CI environments. tiny grout, tiny footprint. π£
variables marked [startup only] are fixed once grout starts and cannot be changed at runtime. other sizing variables provide initial defaults that can be adjusted at runtime via the API (e.g. grcli route config set, grcli nexthop config set).
GROUT_MAX_IFACES[startup only] β maximum number of interfaces.
Default: 1024.
GROUT_MEMPOOL_CHUNK_SIZE[startup only] β initial mempool chunk size in number of mbufs.
Default: 65535.
GROUT_MAX_NEXTHOPSβ maximum number of nexthops for all address families.
Default: 131072.
GROUT_MAX_ROUTESβ default maximum number of routes per VRF (both IPv4 and IPv6).
Default: 65536.
GROUT_MAX_FDB_ENTRIESβ maximum number of bridge FDB entries.
Default: 4096.
GROUT_MAX_CONNTRACKSβ maximum number of conntrack entries for stateful NAT.
Default: 16384.
GROUT_PORT_QUEUE_SIZE[startup only, testing] β default port RX/TX queue ring size. when set to0, the device driver default is used. only use in test/CI environments to reduce memory.
Default: 0.
GROUT_FIB4_ALGORITHM[startup only, testing] β IPv4 FIB lookup algorithm. supported values:DIR24_8,DUMMY. theDUMMYalgorithm avoids the large static arrays ofDIR24_8at the cost of linear-time lookups. only useDUMMYin test/CI environments.
Default: DIR24_8.
GROUT_FIB6_ALGORITHM[startup only, testing] β IPv6 FIB lookup algorithm. supported values:TRIE,DUMMY. theDUMMYalgorithm avoids the trie memory overhead at the cost of linear-time lookups. only useDUMMYin test/CI environments.
Default: TRIE.
π₯ EXTRA EAL ARGUMENTS π₯
any DPDK EAL argument can be specified after an optional --.
β οΈ bestie listen to me: this is an advanced debugging/development feature that can break things. use with great care. i'm not kidding. π
π SEE ALSO π
π AUTHORS π
Created and maintained by Robin Jarry. (iconic behavior, honestly. we love a maintainer.) π
and that's the whole page, bestie β straight from the System Manager's Manual, dated 2026-10-01, no cap, every single detail intact. slay. π β¨
π¦ where this page comes from
- fedora 44: grout 0.18.0-2.fc44 Β· BSD-3-Clause
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms