Skip to main content

Glossary

Short definitions for NSB's core terminology, each linked to the page that covers it in full.

NSB Daemon โ€” The central server process that registers clients, distributes configuration, and routes payloads between application clients and simulator clients. See Architecture Overview.

NSBAppClient โ€” The application-side client class. Presents a simplified send()/receive() interface so an application can communicate over NSB as if it were a regular network. See Python / C++.

NSBSimClient โ€” The simulator-side client class. Presents a fetch()/post() interface that integrates a network simulator into the NSB pipeline. See Python / C++.

MessageEntry โ€” The object/struct returned by receive(), fetch(), and listen(), containing the source, destination, payload, and payload size of a delivered message. See Python / C++.

PULL Mode โ€” A system mode (mode: 0) where clients explicitly poll the daemon for messages; no message is delivered unless requested. See System Modes.

PUSH Mode โ€” A system mode (mode: 1) where the daemon automatically forwards payloads to clients as soon as they're available, requiring persistent connections. See System Modes.

System-Wide Mode โ€” A simulator mode (simulator_mode: 0) where a single NSBSimClient handles all message routing for the entire simulation. Used by top-down simulators like ns-3. See Simulator Modes.

Per-Node Mode โ€” A simulator mode (simulator_mode: 1) where each simulated node has its own NSBSimClient, identifier-matched to its corresponding NSBAppClient. Used by bottom-up simulators like OMNeT++. See Simulator Modes.

Payload โ€” The actual data being transmitted between an application and a network simulator through NSB โ€” raw bytes in Python, a std::string in C++. See Payload Lifecycle.

Redis Key โ€” A short (<32 byte>) lookup string returned when a payload is cached in Redis, transmitted through the bridge instead of the full payload to keep bridge performance independent of payload size. See Redis Storage.

nsbm โ€” The single Protobuf message type used for all communication between the daemon, application clients, and simulator clients in NSB. See Protobuf Schema.

INIT Handshake โ€” The registration sequence every client performs on startup: introducing itself to the daemon and receiving the system configuration in response. See Payload Lifecycle โ†’ Initialization Handshake.

fetch() โ€” The NSBSimClient method that retrieves a payload waiting to be routed through the simulated network. See Python / C++.

post() โ€” The NSBSimClient method that notifies NSB a payload has arrived at its destination within the simulated network. See Python / C++.

Transport Backend โ€” The underlying mechanism NSB uses to move messages between clients and the daemon โ€” either raw TCP sockets (default) or RabbitMQ (AMQP). See Socket Backend / RabbitMQ Backend.

Co-Simulation โ€” Running application logic natively in its own process while a separate network simulator models the communication layer, rather than re-implementing the application inside the simulator. See Background & Related Work.

Go Deeperโ€‹