Arvind Narayanan wrote:
A few weeks back there was a discussion about bandwidth usage...
on home "broadband" connections. It occured to me that for people
who face such constraints it would be useful to have a breakdown
of their bandwidth utilization app-wise so that they can modify
their 'net usage habits accordingly.
The design of this hypothetical app for linux would be like this:
* The backend would be a daemon coupled with a kernel module that
would intercept TCP send/recv calls and log them. The data logged
would be name of the executable, user, and size of packet. The
daemon would listen on some port and pass this data on to clients
(there should be some security rules to specify which clients are
allowed to connect.) The backend should also offer a way to throttle
bandwidth in an app-wise manner. If the limit is exceeded the packet
should be dropped. The challenge is to do all this without greatly
* The frontend collects this data and presents it in various pretty
ways to the user. Some examples:
-- Show real time bandwidth usage graphs, app wise, user wise and
machine wise, both incoming and outgoing.
-- Show aggregate graphs ala webalizer, again app wise, user wise
and machine wise.
-- Allow throttling and bandwidth quotas.
etc. Of course, multiple frontends can exist.