β Star us on GitHub β your support motivates us a lot! ππ
- About
- Comparison
- Architecture
- Support Devices
- Quick Start
- Contributions and Requests
- License
- Contacts
NetDriver is an advanced open-source framework for automating network devices. Its main purpose is to use a high-level HTTP RESTful interface to make it easier to execute low-level commands on different networking equipment. This architecture makes it easier to develop generalised automation solutions and integrate third parties. Its design is centred on features that guarantee operational efficiency and stability, such as advanced session management that keeps persistent connections to enhance system performance and a command queue to avoid configuration conflicts during concurrent operations. Its plugin architecture enables simple extensibility to support a broad and changing range of vendor hardware, and its asynchronous foundation provides desirable concurrency.
NetDriver adopts a Monorepo architecture consisting of multiple sub-projects:
- netdriver-agent - Provides REST APIs for device connectivity testing and command execution
- netdriver-simunet - Simulates network device terminals for automated testing and other scenarios requiring device emulation
Features:
- π HTTP RESTful API : Easy integration with third-party platforms
- π Session Management : Customizable session persistence for improved efficiency, eliminating repeated connections per command
- π Command Queue : Ensures sequential command execution on devices, preventing configuration errors and failures caused by concurrent modifications
- β‘ AsyncSSH Foundation : Superior concurrency capabilities through asynchronous SSH implementation
- π Plugin Architecture : Simplified and accelerated development of new vendor support
| Feature | NetDriver | Netmiko |
|---|---|---|
| HTTP RESTful API for third-party integration | β | β |
| Session persistence with customizable duration | β | β |
| Python-based implementation | β | β |
| Command execution queue to prevent concurrent conflicts | β | β |
| Plugin architecture for easier device support development | β | β |
| Standard CLI automation | β | β |
| Open source | β | β |
| AsyncSSH-based architecture for high concurrency | β | β |
βββββββββββββββββββ
β Your App/Tool β
ββββββββββ¬βββββββββ
β HTTP API
βΌ
βββββββββββββββββββ
β NetDriver Agent β
ββββββββββ¬βββββββββ
β SSH
ββββββ΄βββββ
β β
βΌ βΌ
ββββββββββ ββββββββββ
βSimuNet β β Real β
βDevices β βDevices β
ββββββββββ ββββββββββ
NetDriver currently supports a wide range of network devices from major vendors. The plugin architecture makes it easy to add support for new devices.
| Vendor | Model | Device Type | Description |
|---|---|---|---|
| Cisco | ASA | Firewall | Cisco Adaptive Security Appliance |
| ASR | Router | Cisco Aggregation Services Router | |
| Catalyst | Switch | Cisco Catalyst Series Switches | |
| ISR | Router | Cisco Integrated Services Router | |
| Nexus | Switch | Cisco Nexus Data Center Switches | |
| Huawei | CE | Switch | Huawei CloudEngine Series Switches |
| USG | Firewall | Huawei Unified Security Gateway | |
| Juniper | EX | Switch | Juniper EX Series Ethernet Switches |
| MX | Router | Juniper MX Series Universal Routing Platforms | |
| QFX | Switch | Juniper QFX Series Data Center Switches | |
| SRX | Firewall | Juniper SRX Series Services Gateways | |
| Fortinet | FortiGate | Firewall | Fortinet FortiGate Next-Generation Firewalls |
| Palo Alto | PA | Firewall | Palo Alto Networks Next-Generation Firewalls |
| Arista | EOS | Switch | Arista Networks EOS-based Switches |
| H3C | SecPath | Firewall | H3C SecPath Series Firewalls |
| VSR | Router | H3C Virtual Services Router | |
| Check Point | Security Gateway | Firewall | Check Point Security Gateway |
| Hillstone | SG | Firewall | Hillstone StoneOS-based Security Gateways |
| DPTech | FW | Firewall | DPTech Firewall Series |
| Topsec | NGFW | Firewall | Topsec Next-Generation Firewalls |
| Venustech | USG | Firewall | Venustech Unified Security Gateway |
| Maipu | NSS | Switch | Maipu Network Security Switch |
| Array | AG | Gateway | Array Application Gateway |
| Chaitin | CTD-SG | Gateway | Chaitin SafeLine Security Gateway |
| Qianxin | NSG | Gateway | Qianxin Next-Generation Security Gateway |
| Leadsec | PowerV | Firewall | Leadsec PowerV Series |
The plugin system allows for easy extension and customization:
- Vendor Base Plugins: Common functionality shared across device models from the same vendor
- Model-Specific Plugins: Device-specific implementations for unique features and behaviors
- Pattern Matching: Automatic plugin selection based on vendor/model/version detection
- Extensible: Add new device support by creating a new plugin class
To add support for a new device, create a plugin in components/netdriver/plugins/{vendor}/ that inherits from the vendor base class or Base plugin. See Development Guidelines for more information.
We can first run the Simunet service to obtain simulated network devices for testing, then use the Agent to connect and execute commands. Of course, if you have real devices that are on the support devices, you can skip the Simunet guide and start using the Agent service directly.
Your contributions matter!Our project can always be better so we would be happy to recive your help!Please take a look at contributing guide before submiting a pull request! For questions, issues, or feature requests, please open an issue on the project repository.
This project is licensed under the Apache License 2.0.
We look forward to assisting you and ensuring your experience with our products is successful and enjoyable!