http://oss.oetiker.ch/mrtg/ MRTG will cover 1) & 2) quite nicely, maybe even 3) if you're willing to put the time configing (and horse power!*) in.
We had one box graphing about 500 nodes for in/out bandwidth use over 3 or four time periods and it seemed to do its job fine.
It does need a bit of time setting up, but there's masses of config help and tutes online. I do have one or two gripes about it, but it has helped me get to the root of a couple of issues.
Might not be quite what you want, but I thought I throw it out there anyway.
*not just the processing on the monitoring box but the overheads on the network hardware
--edit--
while I think about it I've had sucess with observer
http://www.netinst.com/products/observer/index.html for tracking down issues too, but it's not free.