Ethring

JavaScripting Network Topology

Me

  • Started as a router jock
  • Got bored with routine operations
  • Learned to code the routine
    • bash
    • LAMP
  • Coded myself out of the router jock position

Why I'm Talking

  • I love JavaScript
  • It's not just client-side!
  • Ethring is my baby and I'm proud of it
  • Jesse said I could

What is Ethring

  • Company-internal, web-based network topology application
  • Built on JavaScript from start to finish
    • NodeJS
      • Express
      • net-snmp
    • Backbone
    • Bootstrap
    • D3.js
    • MongoDB

Why "ETHRING"?

  • Because "That network-mapping-tool-thing-that-that-guy-made" was a mouthful.
  • Because it was the first thing that came to mind when my boss asked me what we should call it.
  • It's an "ethernet" "ring" mapping tool.
  • *shrug*

The Problem

  • Company network is BIG
    • >2000 Cisco devices
    • >9000 total devices
    • 11 states
  • Network grows/changes constantly
    • +2 or 3 Cisco switches per night
  • Documentation sucks
    • Static & local
    • Unique to the individual (mental maps)
    • Non-existent
  • Human-based configuration management
  • Security concerns prevent running topology protocols

THE SOLUTION

  • Single-point of reference
  • Derived from the device
  • Extensible
    • Provide mechanism for evaluating configurations
    • Able to produce reports on connectivity
    • Able to interact with third-party systems

The how

  • Data collected from devices via SNMP (net-snmp.js)
  • Clever interpretation of data
    • Interface description (human-maintained in router)
      AS01.BLAH_Gi0/1.ifAlias = 'AS01.BLAHBLAH-AS02.BLAHBLAH';AS02.BLAH_Gi0/2.ifAlias = 'AS02.BLAHBLAH-AS01.BLAHBLAH';
    • MAC Table (device-maintained)
      AS01.BLAH_Gi0/1.macTable = [ 'abcdef1234' ];AS02.BLAH_Gi0/2.mac = 'abcdef1234'
    • LLDP (hopefully! no cleverness required)
      AS01.BLAH_Gi0/1.lldpNeighbor = 'AS02.BLAH_Gi0/2';AS02.BLAH_Gi0/2.lldpNeighbor = 'AS01.BLAH_Gi0/1';
  • GUI presentation of interpreted information (Express)

The Architecture (v1)


The Architecture (v2)


The Architecture (v3)

  • Same as V2, but with abstraction
  • Polling done by modules
    • Collecting arbitrary data possible by dropping a new module in the directory
  • Company-specific logic removed
    • Abstracted the business logic from the applications to a config file so that it can be customized to suit concepts in other networks
  • GitHub?
Pointy-Talky Demo

References

V1 UI


V2 UI (Bootstrap & D3)


Ethring

By ben-bradley

Ethring

  • 2,065