Skip to main content

CLI flags

The simulator binary is driven entirely by command-line flags. This page is the authoritative catalog — new flags land here first.

Run the simulator with:

sudo ./simulator [options]

Root is required because the simulator creates TUN interfaces and manages the opensim network namespace. See Network namespace for the namespace details and Quick start for a minimal invocation.

Core flags

FlagTypeDefaultPurpose
-auto-start-ipstringAuto-create devices starting from this IP (e.g. 192.168.100.1).
-auto-countint0Number of devices to auto-create. Requires -auto-start-ip.
-auto-netmaskstring24Netmask for auto-created devices.
-portstring8080HTTP API server port.
-snmp-portint161UDP port for the SNMP listener on each device. Use 1161 to avoid requiring CAP_NET_BIND_SERVICE.
-no-namespaceboolfalseDisable network namespace isolation (run in the root namespace).
-helpShow the help message and exit.

SNMPv3 flags

Omit the engine-id flag to run in v2c-only mode.

FlagValuesDefaultPurpose
-snmpv3-engine-idstringEnable SNMPv3 with the specified engine ID (e.g. 0x80001234).
-snmpv3-authnone | md5 | sha1md5SNMPv3 auth protocol.
-snmpv3-privnone | des | aes128noneSNMPv3 privacy protocol.

See SNMP reference for the auth/priv compatibility matrix.

Interface-state scenarios

The -if-scenario flag controls the SNMP admin/oper status reported for all simulated interfaces, so you can reproduce common network conditions without editing resource files.

FlagTypeDefaultPurpose
-if-scenarioint2Interface state scenario: 1=all-shutdown, 2=all-normal, 3=all-failure, 4=pct-failure.
-if-failure-pctint10Percentage of interfaces with oper-down (used with -if-scenario 4, 0–100).
ScenarioNameifAdminStatusifOperStatusUse case
1all-shutdowndown (2)down (2)Planned maintenance, device decommission
2all-normal (default)up (1)up (1)Normal steady-state operations
3all-failureup (1)down (2)Link failures, SFP issues, cable pull
4pct-failureup (1)down for n%Partial outage, staged rollout testing

Scenario 4 uses a deterministic rule (ifIndex % 100 < n) so test runs are reproducible across restarts.

Flow export flags

See Flow export (operator guide) for prerequisites and collector setup, and Flow export reference for protocol details.

FlagTypeDefaultPurpose
-flow-collectorstringEnable flow export to this UDP collector (e.g. 192.168.1.10:2055).
-flow-protocolnetflow9 | ipfix | netflow5 | sflownetflow9Flow export protocol (alias: sflow5).
-flow-tick-intervalint (seconds)5Flow ticker interval.
-flow-active-timeoutint (seconds)30Active flow timeout.
-flow-inactive-timeoutint (seconds)15Inactive flow timeout.
-flow-template-intervalint (seconds)60Template retransmission interval (NetFlow v9 / IPFIX only).
-flow-source-per-devicebooltrueUse each device's IP as the UDP source address.

SNMP trap / INFORM export flags

See SNMP trap / INFORM export (operator guide) for prerequisites and snmptrapd smoke-test, and SNMP trap reference for wire format and catalog JSON.

FlagTypeDefaultPurpose
-trap-collectorstringEnable trap export to this UDP collector (e.g. 192.168.1.10:162). Empty disables the feature.
-trap-modetrap | informtrapNotification mode. TRAP is fire-and-forget; INFORM is acknowledged and retried.
-trap-intervalduration30sPer-device mean firing interval (Poisson-distributed, not periodic).
-trap-global-capint (tps)0Simulator-wide rate ceiling across fires + INFORM retries. 0 is unlimited.
-trap-catalogstringPath to a JSON catalog; empty uses the embedded universal 5-trap catalog + per-type overlays from resources/<slug>/traps.json. Setting this flag disables per-type overlays — the file becomes the sole catalog for every device.
-trap-communitystringpublicSNMPv2c community string.
-trap-source-per-devicebooltrueUse each device's IP as the UDP source address. Required when -trap-mode inform.
-trap-inform-timeoutduration5sPer-retry timeout in INFORM mode.
-trap-inform-retriesint2Maximum retransmissions per INFORM before it's declared failed.

UDP syslog export flags

See UDP syslog export (operator guide) for prerequisites and netcat smoke-test, and UDP syslog reference for wire format and catalog JSON.

FlagTypeDefaultPurpose
-syslog-collectorstringEnable syslog export to this UDP collector (e.g. 192.168.1.10:514). Empty disables the feature.
-syslog-format5424 | 31645424Wire format. RFC 5424 is structured (recommended); RFC 3164 is legacy BSD. One format per process — they don't mix on a single UDP socket.
-syslog-intervalduration10sPer-device mean firing interval (Poisson-distributed, not periodic).
-syslog-global-capint (rate)0Simulator-wide rate ceiling across scheduled fires. On-demand HTTP fires bypass the cap. 0 is unlimited.
-syslog-catalogstringPath to a JSON catalog; empty uses the embedded universal 6-entry catalog + per-type overlays from resources/<slug>/syslog.json. Setting this flag disables per-type overlays — the file becomes the sole catalog for every device.
-syslog-source-per-devicebooltrueUse each device's IP as the UDP source address. Per-device bind failures are non-fatal (unlike INFORM mode on the trap side) — the exporter falls back to the shared socket with a warning.

Examples

# Start server only (all interfaces up/up by default)
sudo ./simulator

# Auto-create 5 devices starting from 192.168.100.1
sudo ./simulator -auto-start-ip 192.168.100.1 -auto-count 5

# Custom API port and subnet
sudo ./simulator -auto-start-ip 10.10.10.1 -auto-count 100 -port 9090

# Non-privileged SNMP port (no CAP_NET_BIND_SERVICE needed)
sudo ./simulator -auto-start-ip 10.10.10.1 -auto-count 10 -snmp-port 1161

# SNMPv3 with MD5 auth and AES128 privacy
sudo ./simulator -snmpv3-engine-id 0x80001234 -snmpv3-auth md5 -snmpv3-priv aes128

# Disable network namespace isolation
sudo ./simulator -no-namespace -auto-start-ip 192.168.100.1 -auto-count 10

# Maintenance window — all interfaces admin-shutdown
sudo ./simulator -auto-start-ip 192.168.100.1 -auto-count 10 -if-scenario 1

# Link failure — all interfaces admin-up but oper-down
sudo ./simulator -auto-start-ip 192.168.100.1 -auto-count 10 -if-scenario 3

# Partial outage — 30% of interfaces oper-down
sudo ./simulator -auto-start-ip 192.168.100.1 -auto-count 10 \
-if-scenario 4 -if-failure-pct 30