The goal of the proposed website is to reduce onboarding friction for first-time users of NSB and provide a structured, user-friendly entry point into the system.
Currently, new users must navigate multiple sources of documentation and infer the correct sequence of steps. This proposal restructures the experience into a clear, guided flow that prioritizes usability without sacrificing depth.
The website is designed around a few key principles:
The site is organized into modular sections that support progressive exploration:
| Section | Page / Route | Priority | Purpose |
|---|---|---|---|
| Home | / | P0 | Overview, value proposition, and entry point |
| /features | P1 | Highlight key capabilities of NSB | |
| /use-cases | P1 | Show practical applications (IoT, SDN, etc.) | |
| /faq | P2 | Answer common beginner questions | |
| Get Started | /get-started | P0 | Central onboarding hub |
| /quickstart | P0 | Run first working simulation (core flow) | |
| /install/* | P0 | Platform-specific installation guides | |
| /troubleshooting | P1 | Resolve common setup issues | |
| Documentation | /docs/architecture | P0 | Explain system structure |
| /docs/config | P0 | Config.yaml reference | |
| /docs/api | P1 | Python/C++ API reference | |
| /docs/protocol | P1 | Message format and communication | |
| Tutorials | /tutorials | P1 | Guided learning paths |
| /tutorials/basic | P0 | End-to-end simulation walkthrough | |
| /tutorials/advanced | P1 | Advanced use cases and integrations | |
| Contribute | /contribute | P1 | Entry point for contributors |
| /contribute/setup | P1 | Development environment setup | |
| /contribute/issues | P2 | Good first issues | |
| Community | /community | P2 | Communication channels |
| /showcase | P2 | Example projects | |
| About | /about | P2 | Project background and team |
The onboarding flow is centered around a first success milestone — users successfully running a basic NSB simulation. To achieve this:
Low-fidelity wireframes were created to visualize the structure and flow of the website. Seven screens cover the full site as an interactive HTML file.
The wireframes focus on structure and user flow rather than visual design.
The proposed structure will be validated through:
Bridge your simulators
with the real world
Network Simulation Bridge (NSB) connects network simulators like ns-3 and OMNeT++ to real applications, giving you Python and C++ control, real-time visualization, and reproducible experiments.
$ python3 --version # must be 3.8 or higher $ git --version $ brew --version
$ brew tap ucsc-ospo/nsb $ brew install nsb-server $ nsb-server --version # verify: NSB Server 0.4.2
$ python3 -m venv nsb-env $ source nsb-env/bin/activate $ pip install nsb-client
$ git clone https://github.com/ucsc-ospo/nsb-examples $ cd nsb-examples
Copy this exactly. You do not need to understand every field yet — that is what the Config Reference is for.
simulator_mode: 1
server_port: 5000
endpoints:
- name: client1
port: 5001
- name: client2
port: 5002
config.yaml in your current working directory.Open a new terminal window and run:
$ nsb-server --config config.yaml
server_port in config.yaml. See port conflicts guide.In a second terminal, inside the nsb-examples/ directory:
$ source nsb-env/bin/activate $ python examples/basic_client.py
You should see output like this in your terminal:
Connecting to NSB server at localhost:5000 client1 connected successfully (port 5001) client2 connected successfully (port 5002) Sending: Hello from client1 to client2 Sending: Hello from client2 to client1 Simulation complete. 10 messages exchanged in 0.34s
The config.yaml file is the primary configuration for the NSB message server. It controls simulator mode, endpoint definitions, port assignments, and logging behaviour.
Full Example
simulator_mode: 1
server_port: 5000
log_level: INFO
endpoints:
- name: client1
port: 5001
- name: client2
port: 5002
Field Reference
| Field | Type | Default | Description |
|---|---|---|---|
simulator_mode | required | — | 1 = basic mode, 2 = ns-3 bridge, 3 = OMNeT++ |
server_port | optional | 5000 | Port the NSB server listens on for client connections |
log_level | optional | INFO | Verbosity level: DEBUG, INFO, WARNING, ERROR |
endpoints | required | — | List of client endpoints — each requires a unique name and port |
endpoints[].name | required | — | Unique identifier used in message routing between clients |
endpoints[].port | required | — | Port this client listens on — must not conflict with other endpoints |
Message Flow
When a client sends a message, the NSB server receives it, looks up the target endpoint by name, and forwards it on the correct port. Clients never communicate directly — all traffic routes through the server.
from nsb_client import NSBClient
client = NSBClient("client1", server_port=5000)
client.connect()
# Send a message to client2
client.send(to="client2", payload={"type": "PING", "seq": 1})
# Receive a reply
msg = client.recv(timeout=2.0)
print(msg.payload)
Local Development Setup
Fork and clone: git clone https://github.com/your-fork/nsb.git && cd nsb
Create a venv and install dev dependencies: pip install -e ".[dev]"
Run the test suite: pytest tests/ -v — all tests should pass before opening a PR.
Create a branch, make your changes, and open a PR against main.
Good First Issues
Community Channels
About NSB
Network Simulation Bridge was created at UC Santa Cruz as part of the Open Source Program Office (UCSC OSPO). The goal is to lower the barrier for researchers and students who want to use mature network simulators without complex integration plumbing.
NSB is actively developed and welcomes contributors at all levels. The GSoC 2026 program is bringing major improvements to documentation, onboarding, and the website.
UCSC OSPO Project — GSoC 2026