Integration of Nextbox UI Topology Viewer in Netbox

In this blog post I’m showing how to integrate NextBox UI Plugin into my Netbox installation. NextBox UI Plugin is a topology visualization plugin which is based on Cisco neXt toolkit.

The plugin installation is documented on the NextBox UI Plugin GitHub page and is straight-forward, therefore I am not writing anything about this process. The interesting part for me is the PLUGIN_CONFIG where I need to do some adjustments for my home network. For example, the plugin looks for names like edge-switch, core-router, leaf, spine and so on. Those names should to match the Device roles where I am using a different naming convention. Netbox Device roles which are not of interest like patch panels, 19” Shelfs, 19” Power strips should be excluded.

I have three different types of Wireless access points (Cisco 3x AIR-CAP2602I, 1x AIR-CAP360E and 1x UbiQuiti Unifi UAP-AC Lite for Freifunk) in use. This means the plugin should also draw for those different Wireless access points the corresponding WiFi icon.

Netbox/NextBox UI Plugin: configuration.py

To “map” my naming convention in NetBox to the NextBox UI Pluging I’m setting up the layers_sort_order, first the WAN devices like routers or firewalls, then the switches and wireless controller and then devices like wireless access points or IP phones. In the next step I’m “mapping” the Netbox Device Types to the corresponding icons. A substring like AIR-CAP is sufficient for all Cisco Controller-based wireless access points (this would include AIR-CAP2602I, AIR-CAP2602E, AIR-CAP2802I, AIR-CAP2802E, and so on.) All other Netbox Devices roles which should not be shown are defined in undisplayed_device_role_slugs.

Please note that the PLUGIN_CONFIG lines can be more or less complex, depending on your Netbox setup.

    PLUGINS_CONFIG = {
      'nextbox_ui_plugin': {
        'layers_sort_order': (
          'undefined',
          'NET-WAN-Router',
          'NET-WAN-Optimizer',
          'NET-WAN-Firewall',
          'NET-Core-Switch',
          'NET-Access-Switch',
          'NET-Wireless-LAN-Controller',
          'NET-Wireless-Access-Point',
          'NET-IP-Phone'
        ),
        'icon_model_map': {
          'AIR-AP': 'accesspoint',
          'AIR-CAP': 'accesspoint',
          'AIR-SAP': 'accesspoint',
          'UAP-AC': 'accesspoint',
          'AIR-CT': 'wlc',
          'ASA': 'firewall',
          '2901': 'router',
          '2911': 'router',
          'Fritzbox': 'router',
          'CP-7': 'ipphone',
          'WS-C': 'switch'
        },
        'undisplayed_device_role_slugs': (
          'env-environment-sensor',
          'net-printer',
          'rck-blank-panel',
          'rck-cable-management',
          'rck-network-outlet',
          'rck-patch-panel',
          'rck-shelf',
          'pwr-power-strip',
          'pwr-uninterruptable-power-supply',
          'srv-rack-server',
          'srv-rack-storage',
          'srv-virtual-machine'
        ),
      }
    }
Netbox/NextBox UI Plugin: configuration.py

Topology View in Netbox

Based on the PLUGIN_CONFIG the plugin is drawing as expected the topology of my home network. Because I’m using redundancy where possible (for example between core switch and wireless controller) a lot of redundant connections are drawn. Also the icons for routers (Fritzbox and a Cisco 2911 for Lab) and access points are drawn correctly.

Based on the devices and connections in Netbox the plugin draws automatically the network topology. To verify this I’m disconnecting in Netbox the patch cord between my Cisco 2911 Lab router and 3750G Lab switch. By refreshing the topology view, the connection between the router and switch is now gone and this is also drawn in the topology: The lab router does not have anymore the connection to the lab switch. This means if the devices and connections defined in Netbox are matching the reality of your network, you have always an up date network drawing.

Netbox: Nextbox UI Topology view
Netbox: Nextbox UI Topology view

Share: