Skip to main content
About NSB

Why Network Simulation Bridge Exists

Modern networking research often requires integrating real applications with network simulators. Unfortunately, every simulator exposes different APIs, communication models, and integration workflows, forcing developers to repeatedly build simulator-specific adapters. Network Simulation Bridge (NSB) eliminates that complexity through a unified middleware layer, allowing one application to communicate with multiple network simulators without changing application logic.

Traditional application-to-simulator integrations are often difficult to build, difficult to maintain, and impossible to reuse across different simulators.
NSB introduces a reusable middleware layer that separates applications from simulator-specific implementations, making experiments more portable, maintainable, and reproducible.
Traditional Approach
  • โ€ข One custom adapter per simulator
  • โ€ข Duplicate integration code
  • โ€ข Difficult maintenance
  • โ€ข Poor portability
The Challenge
Every simulator provides different APIs, communication mechanisms, and execution models. Applications become tightly coupled to simulator implementations, making experimentation harder to scale and reproduce.
The NSB Solution
  • โ€ข One middleware layer
  • โ€ข One application implementation
  • โ€ข Multiple supported simulators
  • โ€ข Reusable experiments
  • โ€ข Consistent communication interface
Simulator Agnostic
Supports ns-3, OMNeT++, and any simulator with a C++ or Python integration layer. No simulator modification required.
Two Delivery Modes
PULL polling or PUSH forwarding. System-Wide or Per-Node simulator mode โ€” match your exact co-simulation topology.
Python & C++ APIs
Full-featured client libraries for both languages with identical interfaces, async support, and cross-language interoperability.
Redis Payload Storage
Optional Redis-backed payload storage for large messages beyond TCP buffer limits, with transparent key routing.
RabbitMQ Backend
Swap the TCP daemon for a RabbitMQ broker for scalable, broker-native routing with priority queues and DLX support.
Zero App Changes
NSB acts as a transparent bridge. Your application code stays completely untouched โ€” no refactoring required.
Built for real research problems
NSB was created at UC Santa Cruz INRG to address real co-simulation needs โ€” from autonomous vehicle networking to federated learning over wireless.
Autonomous Vehicles
V2X Communication
Simulate vehicle-to-everything networking at city scale with real application traffic.
Federated Learning
Distributed ML Training
Test federated learning algorithms over realistic wireless network conditions.
IoT Networks
Smart City Sensors
Model large-scale IoT deployments with thousands of sensors and actuators.
Network Research
Protocol Evaluation
Evaluate new networking protocols in controlled yet realistic environments.
How NSB works
A clean five-step pipeline from application send to application receive โ€” with the network simulator transparently in the middle.
1
Application sends
Your application calls NSBAppClient.send() with destination and payload.
2
Daemon routes
NSB Daemon stores the message and routes it to the appropriate simulator client.
3
Simulator processes
The simulator injects the packet into its network model and simulates transmission.
4
Daemon delivers
After simulation, the daemon delivers the message to the destination application.
5
Application receives
The destination application calls NSBAppClient.receive() to get the payload.
Message flow
App("node0")
โ””โ”€ send("node1", payload)
NSB Daemon
โ”œโ”€ stores in Redis
โ””โ”€ routes to SimClient
Simulator
โ”œโ”€ fetch() โ†’ inject packet
โ””โ”€ post("node0","node1",p)
App("node1")
โ””โ”€ receive() โ†’ payload
Simulator modes
System-Widens-3 ยท one global SimClient
Per-NodeOMNeT++ ยท one SimClient per node
Network Simulation Bridge was developed to support reproducible networking research while remaining practical for education, experimentation, and future simulator integrations.
Python & C++
Simulator Agnostic
BSD 3-Clause
Open Source