Some feedback on this, and a bit of a performance indicator which might be of use to someone else.
I got the new box put in our live network on Sunday, so it's now running with real traffic. At the moment we're running with around 10Mbps in and out of general hosting traffic (not large media/video files). The traffic is accounted for by perhaps a dozen or two hosts, with a fair mix of stuff going on - mostly web based access to business systems, and public web servers. We sell on some of our bandwidth to other tenants in the building, and also to another nearby building via a wireless link. Some of these get dedicated bandwidth, others share bandwidth. Also, some of our hosting customers get dedicated bandwidth. In all, at the moment we have 6 groups, and each group has four priority levels - so it's very much like the "wondershaper" setup, but multiplied by 6 and working on both inbound (as best it's possible) and outbound traffic. The System is an Alix 2D2 LX800 board. 500MHz AMD Geode processor, 256M RAM, Debian Wheezy OS & 3.2.0 kernel. The system is routing (no NAT) at the network boundary, and doing traffic shaping and accounting. It runs from a 4G Compact Flash card, logging (syslog) is sent to another server, and RRD updates are sent to another server using RRDCached. Overall, excluding my collection & RRD update scripts, the system runs at around 40-50% idle and 50-60% system interrupt. When collection scripts are running, idle can drop to 10-20%, so not a huge amount of headroom, but enough for what we need now - and it takes a lot less power than the old 1.1GHz Pentium 3 rack mount server it replaces ! I also costs a lot less than a replacement for the old server which had died. If we significantly increase out bandwidth, then I'll need to look for an alternative board with a little more horsepower - the Alix boards are attractive as they have multiple real NICs on them. I've used some includes, and the intention is that some of these files will be script generated once I've written the script. Eg, the traffic shaping classes in particular will have a text file listing the groups and the rates allowed - the script will then do some checks (make sure the committed rates don't add up to more than the parents and so on) before building the include file and sending it to both routers - as well as updating the graphing we have. The accounting comprises : ># Outside global stats >outside:COUNT - ethext - >outside:COUNT - - ethext >DONE outside > ># Do acocunting by IP address >account-ip - - - >total-ip:COUNT account-ip ethext - >total-ip:COUNT account-ip - ethext >DONE total-ip > >acc-serv >total-serv:COUNT acc-serv ethext - >total-serv:COUNT acc-serv - ethext >DONE total-serv > > >INCLUDE accounting.ip >INCLUDE accounting.service And accounting.ip contains : >acc1:COUNT account-ip ethext a.b.c.1 >acc1:COUNT account-ip a.b.c.1 ethext >DONE acc1 > >acc2:COUNT account-ip ethext a.b.c.2 >acc2:COUNT account-ip a.b.c.2 ethext >DONE acc2 >