Skip to main content

ncs-netsim2 is a wrapper of ncs-netsim tool with added features.

Project description


ncs-netsim is a great tool, but it lack of following features which are developed as part of ncs-netsim2

  • ncs-netsim2 features
    • delete-devices <device-names>
    • create-network-from [ yaml | json ] <filename>
    • create-device-from [ yaml | json ] <filename>
    • create-network-template [ yaml | json ]
    • create-device-template [ yaml | json ]

ncs-netsim2 is a wrapper on top of ncs-netsim with added features. It's written in python and we opened the space to add more features to it.


ncs-netsim, It's a powerful tool to build a simulated network environment for Network Service Orchestrator (NSO) it's also called as NCS - NSO. In these network topologies we can test the network configurations based on the need as per the use case.

ncs-netsim2, An open space to automate the ncs-netsim.


  • ncs-netsim command must be reconginsed by the terminal.
  • ncs-netsim2 supports both trains of python 2.7+ and 3.1+, the OS should not matter.

Installation and Downloads

The best way to get ncs-netsim2 is with setuptools or pip. If you already have setuptools, you can install as usual:

python -m pip install ncs-netsim2

Otherwise download it from PyPi, extract it and run the script

python install

If you're Interested in the source, you can always pull from the github repo:

  • From github git clone


Delete a device(s) from topology

existing device list

⋊> ~/k/i/ncs-netsim2 on master ◦ ncs-netsim2 list
ncs-netsim list for  /Users/kkotari/idea/ncs-netsim2/netsim

name=xr0 netconf=12022 snmp=11022 ipc=5010 cli=10022 dir=/Users/kkotari/idea/ncs-netsim2/netsim/xr/xr0
name=xr1 netconf=12023 snmp=11023 ipc=5011 cli=10023 dir=/Users/kkotari/idea/ncs-netsim2/netsim/xr/xr1
name=xr2 netconf=12024 snmp=11024 ipc=5012 cli=10024 dir=/Users/kkotari/idea/ncs-netsim2/netsim/xr/xr2
name=xr3 netconf=12025 snmp=11025 ipc=5013 cli=10025 dir=/Users/kkotari/idea/ncs-netsim2/netsim/xr/xr3
⋊> ~/k/i/ncs-netsim2 on master ◦

deleting devices

⋊> ~/k/i/ncs-netsim2 on master ◦ ncs-netsim2 delete-devices xr1 xr3
[ INFO ] :: [ ncs-netsim ] :: deleting device: xr1
[ INFO ] :: [ ncs-netsim ] :: deleting device: xr3
⋊> ~/k/i/ncs-netsim2 on master ◦

latest device list

⋊> ~/k/i/ncs-netsim2 on master ◦  ncs-netsim2 list
ncs-netsim list for  /Users/kkotari/idea/ncs-netsim2/netsim

name=xr0 netconf=12022 snmp=11022 ipc=5010 cli=10022 dir=/Users/kkotari/idea/ncs-netsim2/netsim/xr/xr0
name=xr2 netconf=12024 snmp=11024 ipc=5012 cli=10024 dir=/Users/kkotari/idea/ncs-netsim2/netsim/xr/xr2
⋊> ~/k/i/ncs-netsim2 on master ◦

Create Network/Device Template

Template to automate the Network/Device creation process.

⋊> ~/k/i/ncs-netsim2 on master ◦ ncs-netsim2 create-network-template [yaml | json]
⋊> ~/k/i/ncs-netsim2 on master ◦ ncs-netsim2 create-device-template [yaml | json]

which gives template.json/yaml file where you can update the files based on your need/requirement.

Create Network/Device From Template

We are using the templates which are updated based on your requirement

⋊> ~/k/i/ncs-netsim2 on master ◦ ncs-netsim2 create-network-from [yaml | json] <filename>
⋊> ~/k/i/ncs-netsim2 on master ◦ ncs-netsim2 create-device-from [yaml | json] <filename>

How to choose the Templates and How they look

These templates follows the same process of ncs-netsim, format is your choice

  1. prefix based creation - ncs-netsim2 create-network-template yaml
  2. name based creation - ncs-netsim2 create-device-template yaml

Note:- So far we are not supporting combinations.

You can find the examples in the same directory start with template-create-<...>.yaml/json.


ned-path: <path-to>/nso-local-lab/nso-run-
start: true
ncs_load: true
      count: 2
      prefix: ios-56-
      count: 2
      prefix: ios-55-


ned-path: <path-to>/nso-local-lab/nso-run-
start: true
ncs_load: true
    - ios-56-name-100
    - ios-56-name-150
    - ios-55-name-200
    - ios-55-name-250


⋊> ~/k/i/ncs-netsim2 on master ◦ ncs-netsim2 --help
Usage ncs-netsim2  [--dir <NetsimDir>]
                  create-network-template [yaml | json]             |
                  create-network-from [yaml | json] <fileName>      |
                  create-network <NcsPackage> <NumDevices> <Prefix> |
                  create-device-template  [yaml | json]             |
                  create-device-from [yaml | json] <fileName>       |
                  create-device <NcsPackage> <DeviceName>           |
                  add-to-network <NcsPackage> <NumDevices> <Prefix> |
                  add-device <NcsPackage> <DeviceName>  |
                  delete-devices <DeviceNames>           |
                  delete-network                     |
                  [-a | --async]  start [devname]    |
                  [-a | --async ] stop [devname]     |
                  [-a | --async ] reset [devname]    |
                  [-a | --async ] restart [devname]  |
                  list                      |
                  is-alive [devname]        |
                  status [devname]          |
                  whichdir                  |
                  ncs-xml-init [devname]    |
                  ncs-xml-init-remote <RemoteNodeName> [devname] |
                  [--force-generic]                  |
                  packages                  |
                  netconf-console devname [XpathFilter] |
                  [-w | --window] [cli | cli-c | cli-i] devname |
                  get-port devname [ipc | netconf | cli | snmp] |
                  -v | --version            |
                  -h | --help

See manpage for ncs-netsim2 for more info. NetsimDir is optional
and defaults to ./netsim, any netsim directory above in the path,
or $NETSIM_DIR if set.


  • Question: Do I need to install ncs-netsim too?
    Answer: Not really, ncs-netsim tool comes along with NSO. If you are working with NSO it's won't be a problem.

  • Question: Is python mandatory for ncs-netsim2?
    Answer: Yes, the library is written in python and we wanted not to be dependend on NSO versions.

  • Question: Is ncs-netsim2 backword compatable?
    Answer: We recommend to use ncs-netsim2 commands instead of ncs-netsim. However couple of commands are still backward compatable ie. ncs-netsim list, etc.

  • Question: I am seeing following error ./ line 12: export: `': not a valid identifier
    Answer: We recommend to check your env path as recommended in following link

Bug Tracker and Support

  • Please report any suggestions, bug reports, or annoyances with ncs-netsim2 through the Github bug tracker.

License and Copyright

  • ncs-netsim2 is licensed MIT 2019-2020

    License: MIT

Author and Thanks

ncs-netsim2 was developed by Kiran Kumar Kotari

Project details

Download files

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

Files for ncs-netsim2, version 2.4.2
Filename, size File type Python version Upload date Hashes
Filename, size ncs_netsim2-2.4.2-py3-none-any.whl (11.9 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size ncs-netsim2-2.4.2.tar.gz (14.7 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page