management_of_10000_wifi_routers_using_perl


This is a story about developing and using a system to manage 10000 wifi routers used by
The Cloud - http://www.thecloud.co.uk/

Essential logic that enabled us to do it was that of Unix: many small tools and processees
working together in asynchronous manner eg not depending on each other to perform
the tasks that each component was built to do. Other than Perl, it was an extensive use
of shell scripts (including grep/awk/sed/cut) and filesystem that was key.

Each of these routers was connecting into the core network on an ADSL line, with PPP,
inside few LT2P tunnels which contained all the sessions. Core routers were 7200 class
Cisco. Edge routers were mostly Ericsson and Speedtouch, with later addition of Cisco
and other vendors for more sophisticated edge applications and protocols.

FreeRADIUS was another key component. Mechanism we used to capture events which would
enable us to manage routers was via radius proxy (see RFC 2865 Proxy-State). We transparently
intercepted radius accounting packets and created an event from each PPP login from the edge
into the core. These events were then stored locally on radius proxy servers as XML files, using
our own implementation of maildir (http://cr.yp.to/proto/maildir.html), written as a Perl Library.

Events were delivered to servers which managed routers using Beep protocol.

Notes on next componet in the system coming soon ...