Skip to content

Latest commit

 

History

History
38 lines (28 loc) · 2.04 KB

README.md

File metadata and controls

38 lines (28 loc) · 2.04 KB

HECnet Tunnel Manager

History

The HECnet Tunnel Manager is a small tool I wrote maybe 6 or so years ago to assist with configuring multiple Cisco routers. It sets up a mesh of GRE tunnels with DECnet routing enabled. It was a quick and dirty python script I wrote in an afternoon. To its credit it is still running to this day without too many problems, however it is fragile and hard to configure (configuring tunnels is literally hand writing SQL queries).

More about HECnet here: http://mim.stupi.net/hecnet.htm

The architecture is said python script using the LISTEN/NOTIFY mechanism of PostgreSQL to respond to a trigger. Once triggered it builds a Cisco config snippet that is placed on a tftp server. It then uses SNMP to instruct the router to fetch the config snippet and apply it.

This has several downsides.

The primary issue is in order to have this system configure your router you need to open SNMP to the internet. Most people firewall it so that the host that runs the python script is the only one that can talk to SNMP. That also has issues because I can't move to a new IP without orchestrating the change with everyone who uses the service.

The second largest issue is it's also not really able to tell who needs to be updated so everyone gets their config updated regardless of if they need it or not.

HECnet Tunnel Manager "2.0"

(NOTE: I'm not actually going to call or version it as such. Just gotta get with the hip kids or whatever.)

The new architecture is going to be agent/server based. An agent that you run would be notified of changes and would use the same SNMP/tftp/snippet process as before only limited to your local network. The IP address of the server would be totally irrelevant.

Components

Tunnel Engine

Back end service that handles all configuration management and GRPC generated API service. Also running grpc-gateway for RESTful access. Will push config changes to a RabbitMQ queue for agents to pick up.

Tunnel Agent

Agent that configures routers. Will connect to a RabbitMQ queue and listen for instructions.