Help Appreciated: netsim-tools Device Features
There are (at least) two steps to get new functionality (like VLANs) implemented in netsim-tools:
- We have to develop a data transformation module that takes high-level lab-, node-, link- or interface attributes and transforms them into device data.
- Someone has to create Jinja2 templates for each supported device that transform per-device netsim-tools data into device configurations.
I usually implement new features on Cisco IOSv and Arista EOS1, Stefano Sasso adds support for VyOS, Dell OS10, and Mikrotik RouterOS, and Jeroen van Bemmel adds Nokia SR Linux and/or SR OS support. That’s less than half of the platforms supported by netsim-tools, and anything you could do to help us increase the coverage would be highly appreciated.
GitHub Issues always contain the up-to-date list of missing devices, at this moment we’d appreciate:
- VLAN support for CSR 1000v, Nexus OS, Junos, and Cumulus Linux (old-style config and NVUE)
- MPLS LDP support for most platforms, including Nexus OS and Junos
- BGP-LU support for the same set of platforms
- VRF support for old-style Cumulus Linux and Junos (someone is already working on Cisco Nexus OS implementation).
- OSPFv3 support on Nexus OS and Cumulus Linux
Willing to help? Contributor Guidelines will give you more information (in particular New Configuration Features for an Existing Device); once you’re ready to get started open a GitHub issue saying “I’m working on this bit”, and submit a pull request when you’re done. Thanks a million!
Being an old-timer, I still believe in the ancient “have two independent interoperable implementations” IETF mantra. ↩︎
Interesting project which got more and more functionality over time. For me a big hurdle is to have an overview of the data models you guys have created. Is there a UML diagram or the like?
IMO with a visual representation of the data models it would be easier to understand the (bowl of spaghetti) code and know what to expect for device data. Once outcome of device data is known then Jinja2 templates can be created.
Apart from that the project seems to be well documented.
The "developer documentation" for most of the features I mentioned describes the device data models you need to create the Jinja2 templates, and there are several independent implementations for each of those features that you can use as a boilerplate template.
That should be more than good enough for anyone seriously interested in adding value, but if those documents are unclear, I would love to hear how to make them easier to understand. Even better: fix them and submit a PR.