Device Discovery — Supported Platforms
This page lists the vendors, operating systems, and NAPALM drivers supported by the device discovery backend.
The backend connects to network devices over SSH / NETCONF / vendor APIs via NAPALM. Support is driver-bound: a device is supported only if a corresponding NAPALM driver exists.
Compatibility note: driver presence does not guarantee that every feature on every OS version works. Vendors regularly change CLI/API behavior across releases. Report gaps via a GitHub issue against orb-agent.
Auto-discovery behavior
When a scope entry does not specify a driver, device-discovery attempts driver detection automatically. Only the standard NAPALM drivers below are tried during auto-discovery. Custom drivers must be used explicitly by either setting driver: on the scope entry, or by listing them in the discovery_drivers option (see Custom Driver Discovery Example).
Interface ↔ VLAN associations
Drivers that implement get_interfaces_vlans() populate per-interface switching configuration on the emitted Interface entities (mode, untagged/access VLAN, tagged VLAN list). Drivers without the method continue to emit interfaces without VLAN associations — this is opt-in per driver.
| Driver | Status |
|---|---|
eos | Supported (Arista EOS) — via eAPI JSON; works over transport=ssh or transport=https |
ios | Supported (Cisco IOS, IOS-XE) |
nxos | Supported (Cisco NX-OS) — via NX-API JSON |
nxos_ssh | Supported (Cisco NX-OS) — via SSH + ntc-templates |
junos | Supported (Juniper Junos) — EX/QFX switching, handles ELS and non-ELS configurations |
cisco_s300 | Supported (Cisco Small Business 300/350/550) |
mellanox_mlnxos | Supported (Mellanox MLNX-OS) — via SSH; hybrid mode collapses to trunk (native + tagged) |
dell_sonic | Supported (Dell Enterprise SONiC) — via SSH; parses show interface switchport |
cumulus_linux | Supported (Cumulus Linux / NVIDIA) — via SSH using bridge -j vlan show JSON |
aruba_aoscx | Supported (HPE Aruba AOS-CX) — via pyaoscx REST API |
aruba_osswitch | Supported (HPE ArubaOS-Switch / ex-ProCurve) — via REST; per-VLAN→per-port inversion |
See the device discovery README for the contract and the create_unknown_vlans option. Additional vendors land as follow-up PRs as the underlying drivers gain support.
Cisco IOS / NX-OS voice-VLAN quirk: an access port carrying a voice VLAN is reported as mode=tagged (NetBox's tagged-with-untagged-native semantics) with the data VLAN as untagged and the voice VLAN as tagged — because NetBox's strict access mode disallows tagged VLANs. This only fires when the voice VLAN differs from the access VLAN; same-VLAN configurations stay as plain mode=access.
Junos VLAN-name members: v1 reads <interface-vlan-member-tagid> directly from the PyEZ RPC response. Members emitted with only a name (no tagid) are skipped with a warning; resolution against get_vlans() is deferred to a follow-up. Voice-VLAN promotion is also deferred for Junos — VOIP semantics differ from the Cisco family.
Structured-API vs CLI: eos, nxos, junos, and aruba_aoscx fetch via structured APIs (eAPI / NX-API / NETCONF / pyaoscx REST) and have no ntc-templates dependency. The CLI-scrape paths (ios, cisco_s300, nxos_ssh, mellanox_mlnxos, dell_sonic, cumulus_linux) parse vendor-specific output with regex or, in Cumulus's case, the iproute2 JSON format.
ArubaOS-Switch (aruba_osswitch) has no first-class "all VLANs" wildcard in its REST model, so the driver never emits mode=tagged-all; restricted trunks always carry an explicit tagged VLAN list.
Cumulus Linux (cumulus_linux) uses the Linux bridge VLAN model: a port with PVID-only is reported as mode=access; PVID + additional VIDs becomes mode=tagged with the PVID as untagged; VIDs without PVID becomes mode=tagged with no untagged. The driver does not emit mode=tagged-all because the kernel requires explicit VID lists.
AOS-CX (aruba_aoscx) distinguishes vlan_mode=native-untagged (native VID untagged on the wire — emits untagged_vlan) from vlan_mode=native-tagged (native VID is also tagged on egress — the native VID is folded into tagged_vlans and no untagged_vlan is emitted). The REST convention "empty vlan_trunks under vlan_mode=trunk means all VLANs allowed" is honoured and produces mode=tagged-all.
Standard NAPALM drivers
These drivers ship with the NAPALM library and are eligible for auto-discovery.
| Driver | Vendor | Platform / OS |
|---|---|---|
eos | Arista | EOS |
ios | Cisco | IOS / IOS-XE |
iosxr | Cisco | IOS-XR (XML agent) |
iosxr_netconf | Cisco | IOS-XR (NETCONF) |
junos | Juniper | Junos |
nxos | Cisco | NX-OS (NX-API) |
nxos_ssh | Cisco | NX-OS (SSH) |
Custom NAPALM drivers
These drivers are bundled with device-discovery. They are not tried during auto-discovery unless explicitly listed in discovery_drivers; otherwise set driver: on the scope entry.
| Driver | Vendor | Platform / OS |
|---|---|---|
alcatel_aos | Nokia / Alcatel-Lucent Enterprise | AOS |
aruba_aoscx | HPE Aruba Networking | AOS-CX (REST) |
aruba_aoscx_ssh | HPE Aruba Networking | AOS-CX (SSH) |
aruba_os | HPE Aruba Networking | ArubaOS (controllers) |
aruba_osswitch | HPE Aruba Networking | ArubaOS-Switch (ex-ProCurve) |
avaya_ers | Extreme Networks (ex-Avaya) | Ethernet Routing Switch (ERS) |
brocade_fastiron | Ruckus / CommScope (ex-Brocade) | FastIron (ICX) |
brocade_netiron | Extreme Networks (ex-Brocade) | NetIron (MLX / CES / CER) |
checkpoint_gaia | Check Point | Gaia |
ciena_saos | Ciena | SAOS |
cisco_apic | Cisco | ACI APIC |
cisco_asa | Cisco | ASA |
cisco_asa_ssh | Cisco | ASA (SSH) |
cisco_ftd_ssh | Cisco | Firepower Threat Defense (FTD) |
cisco_fxos | Cisco | FXOS |
cisco_s300 | Cisco | Small Business 300/350/550 series |
cisco_viptela_ssh | Cisco | Viptela / SD-WAN |
cisco_wlc | Cisco | Wireless LAN Controller (AireOS) |
cumulus_linux | NVIDIA (ex-Cumulus) | Cumulus Linux |
dell_ftos | Dell | Force10 / FTOS |
dell_powerconnect | Dell | PowerConnect |
dell_sonic | Dell | Enterprise SONiC |
ericsson_ipos | Ericsson | IPOS (ex-Redback SmartEdge) |
extreme_exos | Extreme Networks | EXOS |
extreme_slx | Extreme Networks | SLX-OS |
extreme_vsp | Extreme Networks | VSP / VOSS |
fortinet_fortios_ssh | Fortinet | FortiOS |
hp_comware | HPE / H3C | Comware |
hp_procurve | HPE | ProCurve (legacy) |
huawei_smartax | Huawei | SmartAX (OLT) |
huawei_vrp | Huawei | VRP |
mellanox_mlnxos | NVIDIA / Mellanox | MLNX-OS |
mikrotik_routeros | MikroTik | RouterOS |
nokia_srl | Nokia | SR Linux |
nokia_sros | Nokia | SR OS (gNMI/NETCONF) |
nokia_sros_ssh | Nokia | SR OS (SSH) |
paloalto_panos | Palo Alto Networks | PAN-OS (XML API) |
paloalto_panos_ssh | Palo Alto Networks | PAN-OS (SSH) |
ubiquiti_edgerouter | Ubiquiti | EdgeRouter (EdgeOS) |
ubiquiti_edgeswitch | Ubiquiti | EdgeSwitch |
ubiquiti_unifiswitch | Ubiquiti | UniFi Switch |
The source for the custom drivers is maintained at orb-discovery/device-discovery/custom_napalm.
Querying supported drivers at runtime
device-discovery exposes its effective driver list via its capabilities endpoint:
curl http://<agent-host>:8072/api/v1/capabilities
# => {"supported_drivers": ["eos", "ios", "junos", ...]}