Bandwidthd
Installation
opkg install bandwidthd uhttpd /etc/init.d/uhttpd enable /etc/init.d/uhttpd start /etc/init.d/bandwidthd enable /etc/init.d/bandwidthd start
With all dependencies it uses around 500 kB of storage space
Limitations and CPU usage
Bandwidthd uses a lot of cpu power to process and analyse packages, on average TP-Link TL-WR841ND router with 400 Mhz CPU it maxes out CPU with 100% usage around 3 Mpbs speeds. So if you have faster connection it throttles it down to around 3 Mbps because CPU can't handle more packages.
Note: As of build r31249 this is not necessarily true. While bandwidthd still maxes out at 100% cpu and >4 load average even while idle, the router will happily exceed 70mbps download speeds even with QoS on, which by itself uses >80% cpu at those speeds. In other words, even while bandwidthd is using 100% cpu, the above router will still easily exceed most people's connection speeds without the CPU becoming a limitation.
Configuration
Edit /etc/config/bandwidthd
Usage
By default, bandwidthd hosts its statistics at /bandwidthd. For example, if the OpenWRT router's IP address is 192.168.0.1, bandwidthd's stats would be available at http://192.168.0.1/bandwidthd
Storing bandwidthd stats in external permanent storage
The default bandwidthd installation loses your previous statistics on each reboot. To keep statistics between reboots it is needed to modify "/etc/config/bandwidthd" and "/etc/init.d/bandwidthd"
The only thing to understand is that bandwidthd binary, when launched, looks for the "httpd" folder and "bandwidthd.conf" file in the same folder where the binary has been lauched. Default /etc/init.d/bandwidthd init script creates two symlinks:
/httpd >> /www/bandwidthd /bandwidthd.conf >> /etc/bandwidthd.conf
then move to / folder and lauches there the bandwidthd binary.
These modifications change the init script behaviour to create httpd folder and bandwidthd.conf file in external storage.
Suppose we have a usb stick mounted in /mnt/usb and will store the bandwidthd stats in /mnt/usb/bandwidthd. Just modify the start() function in /etc/init.d/bandwidthd
start() { local subnet conffile [ -d /mnt/usb/bandwidthd/htdocs ] || mkdir -p /mnt/usb/bandwidthd/htdocs && cp /www/legend.gif /www/logo.gif /mnt/usb/bandwidthd/htdocs [ -e /www/bandwidthd ] || ln -s /mnt/usb/bandwidthd/htdocs /www/bandwidthd rm -f /mnt/usb/bandwidthd/bandwidthd.conf touch /mnt/usb/bandwidthd/bandwidthd.conf [ -e /etc/bandwidthd.conf ] || ln -s /mnt/usb/bandwidthd/bandwidthd.conf /etc/bandwidthd.conf config_load bandwidthd for cfg in $cfgs; do config_get subnets $cfg subnets for subnet in $subnets; do conffile="${conffile}subnet ${subnet}\n" done export_string dev $cfg export_number skip_intervals $cfg export_number graph_cutoff $cfg export_bool promiscuous $cfg export_bool output_cdf $cfg export_bool recover_cdf $cfg export_string filter $cfg export_bool graph $cfg export_number meta_refresh $cfg [ -n "$conffile" ] && echo -e "$conffile" >>/mnt/usb/bandwidthd/bandwidthd.conf unset conffile done cd /mnt/usb/bandwidthd bandwidthd }
Next modify /etc/config/bandwidthd file to save statistics to disk. You need to change "option output_cdf true" and "option recover_cdf true"
config bandwidthd option dev eth2 option subnets "10.20.30.0/24" option skip_intervals 0 option graph_cutoff 1024 option promiscuous true option output_cdf true option recover_cdf true option filter ip option graph true option meta_refresh 150
After modifying both of the files, restart the service. Afterwards, you will get a file and directory structure on your external mount like this:
root@openwrt:~# ls -la /mnt/usb/bandwidthd/ drwxr-xr-x 3 root root 1024 Aug 25 12:21 . drwxr-xr-x 6 root root 1024 Aug 25 00:39 .. -rw-r--r-- 1 root root 158 Aug 25 00:40 bandwidthd.conf drwxr-xr-x 2 root root 2048 Aug 25 00:40 htdocs -rw-r--r-- 1 root root 50034 Aug 25 12:21 log.1.0.cdf -rw-r--r-- 1 root root 22204 Aug 25 12:21 log.2.0.cdf -rw-r--r-- 1 root root 6698 Aug 25 12:10 log.3.0.cdf -rw-r--r-- 1 root root 529 Aug 25 00:39 log.4.0.cdf
doc/howto/bandwidthd.txt · Last modified: 2013/03/01 06:47 by neospartan
