ncs-netsim is a great tool, but it lack of following features which are developed as part of netsim-wrapper
netsim-wrapper 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.
netsim-wrapper, An open space to automate the ncs-netsim.
2.7+ and 3.1+
, the OS should not matter.The best way to get netsim-wrapper is with setuptools or pip. If you already have setuptools, you can install as usual:
python -m pip install netsim-wrapper
pip install netsim-wrapper
Otherwise download it from PyPi, extract it and run the setup.py
script
python setup.py install
If you're Interested in the source, you can always pull from the github repo:
git clone https://github.com/kirankotari/netsim-wrapper.git
existing device list
⋊> ~/k/i/netsim-wrapper on master ◦ netsim-wrapper list ncs-netsim list for /Users/kkotari/idea/netsim-wrapper/netsim name=xr0 netconf=12022 snmp=11022 ipc=5010 cli=10022 dir=/Users/kkotari/idea/netsim-wrapper/netsim/xr/xr0 name=xr1 netconf=12023 snmp=11023 ipc=5011 cli=10023 dir=/Users/kkotari/idea/netsim-wrapper/netsim/xr/xr1 name=xr2 netconf=12024 snmp=11024 ipc=5012 cli=10024 dir=/Users/kkotari/idea/netsim-wrapper/netsim/xr/xr2 name=xr3 netconf=12025 snmp=11025 ipc=5013 cli=10025 dir=/Users/kkotari/idea/netsim-wrapper/netsim/xr/xr3 ⋊> ~/k/i/netsim-wrapper on master ◦
deleting devices
⋊> ~/k/i/netsim-wrapper on master ◦ netsim-wrapper delete-devices xr1 xr3 [ INFO ] :: [ ncs-netsim ] :: deleting device: xr1 [ INFO ] :: [ ncs-netsim ] :: deleting device: xr3 ⋊> ~/k/i/netsim-wrapper on master ◦
latest device list
⋊> ~/k/i/netsim-wrapper on master ◦ netsim-wrapper list ncs-netsim list for /Users/kkotari/idea/netsim-wrapper/netsim name=xr0 netconf=12022 snmp=11022 ipc=5010 cli=10022 dir=/Users/kkotari/idea/netsim-wrapper/netsim/xr/xr0 name=xr2 netconf=12024 snmp=11024 ipc=5012 cli=10024 dir=/Users/kkotari/idea/netsim-wrapper/netsim/xr/xr2 ⋊> ~/k/i/netsim-wrapper on master ◦
Template to automate the Network/Device creation process.
⋊> ~/k/i/netsim-wrapper on master ◦ netsim-wrapper create-network-template [yaml | json] ⋊> ~/k/i/netsim-wrapper on master ◦ netsim-wrapper create-device-template [yaml | json]
which gives template.json/yaml
file where you can update the files based on your need/requirement.
We are using the templates which are updated based on your requirement
⋊> ~/k/i/netsim-wrapper on master ◦ netsim-wrapper create-network-from [yaml | json] <filename> ⋊> ~/k/i/netsim-wrapper on master ◦ netsim-wrapper create-device-from [yaml | json] <filename>
These templates follows the same process of ncs-netsim, format is your choice
netsim-wrapper create-network-template yaml or json <file>
netsim-wrapper create-device-template yaml or json <file>
Note:- If you need combinations of network/device template, we suggest to create 2 template files and run the command for each type.
You can find the example all supported templates under it's folder.
nso-packages-path: <path-to>/nso-local-lab/nso-run-5.2.1.2/packages compile-neds: true start-devices: true add-to-nso: true add-authgroup-to-nso: true authgroup: type: system device-mode: prefix-based: cisco-ios-cli-6.56: count: 2 prefix: ios-56- cisco-ios-cli-6.55: count: 2 prefix: ios-55- load-day0-config: true config-path: <path-to>/nso-local-lab/nso-run-5.2.1.2/preconfig config-files: - devices_ios_56.xml - devices_ios_55.xml
nso-packages-path: <path-to>/nso-local-lab/nso-run-5.2.1.2/packages compile-neds: true start-devices: true add-to-nso: true add-authgroup-to-nso: true authgroup: type: system device-mode: name-based: cisco-ios-cli-6.56: - ios-56-name-100 - ios-56-name-150 cisco-ios-cli-6.55: - ios-55-name-200 - ios-55-name-250 load-day0-config: true config-path: <path-to>/nso-local-lab/nso-run-5.2.1.2/preconfig config-files: - devices_ios_56.xml - devices_ios_55.xml
nso-packages-path: info: nso package path compile-neds: options: true or false info: which run _make clean all_ for each ned start-devices: options: true or false info: starts devices using _ncs-netsim start_, it's intellegent enought to start only stopped devices add-to-nso: options: true or false info: adds day0 devices config to nso add-authgroup-to-nso: options: type: local or system or custom path: authgroup config file path this option is only for custom info: configuring authgroup device-mode: - prefix-based: ncs-netsim create-network/add-to-network ned-name: ned name options: count: number of devices prefix: prefix text for device names - name-based: ncs-netsim create-device/add-device ned-name: ned name options: device names load-day0-config: options: true or false info: to add day0 config if the value is true config-path: info: configuratin folder path config-files: info: loads each configuration file from given config-path
⋊> ~/k/i/netsim-wrapper on master ◦ netsim-wrapper --help Usage netsim-wrapper [--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-netsim 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 netsim-wrapper?
Answer: Yes, the library is written in python and we wanted not to be dependend on NSO versions.
Question: Is netsim-wrapper backword compatable?
Answer: We recommend to use netsim-wrapper commands instead of ncs-netsim. However couple of commands are still backward compatable ie. ncs-netsim list
, etc.
Question: I am seeing following error ./env.sh: line 12: export: `Fusion.app/Contents/Public:/Applications/Wireshark.app/Contents/MacOS': not a valid identifier
Answer: We recommend to check your env path as recommended in following link
netsim-wrapper is licensed Apache 2.0 2019-2020
netsim-wrapper was developed by Kiran Kumar Kotari, For any suggestions or comments contact kkotari@cisco.com or kirankotari@live.com. If you find any bugs please fix them and send me a pull request.
Code Exchange Community
Get help, share code, and collaborate with other developers in the Code Exchange community.View Community