Skip to main content

Simulated Network Operating System

Project description

English | 日本語

Downloads PyPI PyPI versions GitHub Discussion Ruff Tests

Simulated Network Operating Systems - SIMNOS

"Reality is merely an illusion, albeit a very persistent one."

~ Albert Einstein

SIMNOS simulates Network Operating Systems interactions. You can simulate network devices like Cisco IOS or Huawei SmartAX interactions over SSH with little effort. This project is mainly intended for testing and development purposes.

Documentation | Examples | Platforms

Origin

SIMNOS is an independent project derived from FakeNOS, created by Denis Mulyalin and maintained by Enric Perpinyà Pitarch. After significant divergence in tooling, platforms, and architecture, it was rebranded as SIMNOS to avoid confusion with the upstream project.

AI Transparency: AI-assisted development (Claude Code, Codex, Gemini, etc.) is actively used in this project. All AI-generated changes are reviewed by a human maintainer before merging.

Key differences from FakeNOS:

  • Package name: simnos (on PyPI)
  • Package manager: uv (migrated from Poetry)
  • Linter/Formatter: Ruff (migrated from Black/Pylint)
  • Python support: 3.13 / 3.14
  • CI: Modernized GitHub Actions workflow
  • NOS platforms: 5 additional platforms enabled (brocade_fastiron, ciena_saos, fortinet, juniper_screenos, ruckus_fastiron)
  • Paramiko: upgraded to 4.0 with DH Group Exchange server-mode workaround

Why?

Crucial aspect of writing applications or scripts for Network Automation is testing, often testing done using physical or virtual instances of network appliances running certain version of Network Operating System (NOS). That approach, while gives best integration results, in many cases carries a lot of overhead to setup, run and tear down as well as putting significant burden on compute and storage resource utilization.

Other approach is to mock underlying libraries methods to fool applications under testing into believing that it is getting output from real devices. That approach works very well for unit testing, but fails to simulate such aspects as connection establishment and handling.

SIMNOS positions itself somewhere in the middle between full integration testing and testing that mocks device interactions. SIMNOS allows to create NOS plugins to produce pre-defined output to test applications behavior while running servers to establish connections with.

What?

SIMNOS can:

  • Run thousands of servers to stress test applications
  • Simulate Network Operating Systems Command Line Interface (CLI) interactions
  • Provide high-level API to create custom NOS plugins
  • Run in docker container to simplify integration with your infrastructure
  • Make use of SIMNOS CLI tool for quick run and prototype simulations
  • Works on Windows, Mac and Linux under Python 3.13 and 3.14

How?

Send input and get the output - this is how we interact with many Network Operating Systems, SIMNOS allows to pre-define the output to sent in response to certain input commands, making it ideal for isolated feature testing.

SIMNOS is a micro-kernel framework that can be extended using plugins. The core is kept small and optimized while most of the functionality offloaded to plugins.

SIMNOS has these pluggable systems:

  • Server Plugins - plugins responsible for running various servers to connect with
  • Shell Plugins - plugins to simulate command line interface shell
  • NOS plugins - plugins to simulate Network Operating System commands

What not?

SIMNOS is a simulator, it does not emulate any of Network Control, Data or Management planes, it merely takes the commands as input and responds with predefined output.

Acknowledgments

SIMNOS is built upon the work of FakeNOS. We are grateful to the original creators and contributors:

Inspired by and borrowed from

  • sshim - library for testing and debugging SSH automation clients
  • PythonSSHServerTutorial - tutorial on creating paramiko based SSH server
  • fake-switches - pluggable switch/router command-line simulator
  • ncs-netsim - tool to simulate a network of devices
  • cisshgo - concurrent SSH server to emulate network equipment for testing purposes
  • scrapli-replay - tools to enable easy testing of SSH programs and to create semi-interactive SSH servers

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

simnos-2.3.0.tar.gz (496.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

simnos-2.3.0-py3-none-any.whl (527.0 kB view details)

Uploaded Python 3

File details

Details for the file simnos-2.3.0.tar.gz.

File metadata

  • Download URL: simnos-2.3.0.tar.gz
  • Upload date:
  • Size: 496.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for simnos-2.3.0.tar.gz
Algorithm Hash digest
SHA256 3920438fde60a178f72edd81fbb195c354e705869d87b8741cba6a0aa194d206
MD5 54cdb7566a20b095b318cd6b6b969051
BLAKE2b-256 45f32ff2f4eea05e6fad25bacfef855d829d2c5279f91e4de57d9f8c4e968dec

See more details on using hashes here.

Provenance

The following attestation bundles were made for simnos-2.3.0.tar.gz:

Publisher: pypi-publish.yml on Route-Reflector/simnos

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file simnos-2.3.0-py3-none-any.whl.

File metadata

  • Download URL: simnos-2.3.0-py3-none-any.whl
  • Upload date:
  • Size: 527.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for simnos-2.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6f9259c8dd6bec4260dc368ae02cedcd293d7dbd8bfe34e48c2acc5b12828b75
MD5 d3eaaec797ee5c93c10bd18a85fa3c16
BLAKE2b-256 edc231a1cf27bdc211e5e3001ca5aa33828517fda00ecd3d6cba8fd840a68454

See more details on using hashes here.

Provenance

The following attestation bundles were made for simnos-2.3.0-py3-none-any.whl:

Publisher: pypi-publish.yml on Route-Reflector/simnos

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page