mod_asn: A new Apache module to look up routing data

Tue, 10 Feb 2009

For the purpose of implementing a finer grained mirror selection (than based on country and region as GeoIP database lookup), mod_asn was created.

mod_asn is an Apache module that uses BGP routing data to look up the autonomous system (AS), and the network prefix (subnet), which contains a given (clients) IP address.

It is written with scalability in mind. To do lookups in high-speed, it uses the PostgreSQL ip4r datatype that is indexable with a Patricia Trie algorithm to store network prefixes. This is the algorithm that can search through the ~250.000 existing prefixes in a breeze.

It comes with script to create such a database (and keep it up to date) with snapshots from global routing data - from a router's "view of the world", so to speak.

Apache-internally, the module sets the looked up data as env table variables, for perusal by other Apache modules. In addition, it can send it as response headers to the client.

MirrorBrain actually uses this already. Announcement to follow. :-)

The source code is available under the terms of the Apache License, Version 2.0.

It is available here (requires an openSUSE buildservice account) or here (in source RPM form). You can browse (or check out) the source code from the svn repository (viewvc link).

View other news