Difference between revisions of "Mesh/Bandwidth Quotas"

From Sudo Room
Jump to navigation Jump to search
 
(2 intermediate revisions by the same user not shown)
Line 14: Line 14:
* [http://wiki.openwrt.org/doc/howto/bwmon bmon] - [http://freecode.com/projects/bmon/ download it]
* [http://wiki.openwrt.org/doc/howto/bwmon bmon] - [http://freecode.com/projects/bmon/ download it]
* [http://wiki.openwrt.org/doc/howto/bwmon iftop], [http://www.ex-parrot.com/pdw/iftop/ man page] - "iftop does for network usage what top(1) does for CPU usage. It listens to network traffic on a named interface and displays a table of current bandwidth usage by pairs of hosts."
* [http://wiki.openwrt.org/doc/howto/bwmon iftop], [http://www.ex-parrot.com/pdw/iftop/ man page] - "iftop does for network usage what top(1) does for CPU usage. It listens to network traffic on a named interface and displays a table of current bandwidth usage by pairs of hosts."
== monthly quota ==
[https://code.google.com/p/ipt-account/ ipt-account] is an iptables module capable of recording e.g. traffic usage on different interfaces and subnets.  This is what the EFF open wireless router uses. They currently use a [https://github.com/EFForg/OpenWireless/blob/0785708984cdae7ebf9ae83ae8d1d278d3a1d4fb/routerapi/get_bytecounts.py python script] that calls the iptaccount command to get usage info and display it in the browser.
The EFF wireless firmware probably intermittently calls [https://github.com/EFForg/OpenWireless/blob/02841f7f4c22bd58e6712b98de05613011076ccf/routerapi/accumulate_bytes this script] which accumulates bytes used in a UCI config file. We could do something similar but with a lua script called by a cron job that simply takes down the tunnel when the quota is reached.
There is also an iptables module called quota which can automatically enable/disable iptable rules when a quota is reached. It is not clear if it can be used to count both upstream and downstream bandwidth towards one total quota and it also has no built-in mechanism to persist the usage count between reboots.


== tc − show / manipulate traffic control settings ==
== tc − show / manipulate traffic control settings ==

Latest revision as of 01:23, 20 February 2015

See Also: Technical Documentation, Monitoring

notes about bandwidth monitoring and quotas

The system can apportion the shareable bandwidth to a percentage of total bandwidth available. The goal is to find a way to cap bandwidth usage, in and out. Here we research how this can be done.

monitoring

to track bandwidth we need a way to quantify it. Here are some likely candidates:

  • bandwidthd - very popular, but apparently it is resource heavy
  • bmon - download it
  • iftop, man page - "iftop does for network usage what top(1) does for CPU usage. It listens to network traffic on a named interface and displays a table of current bandwidth usage by pairs of hosts."

monthly quota

ipt-account is an iptables module capable of recording e.g. traffic usage on different interfaces and subnets. This is what the EFF open wireless router uses. They currently use a python script that calls the iptaccount command to get usage info and display it in the browser.

The EFF wireless firmware probably intermittently calls this script which accumulates bytes used in a UCI config file. We could do something similar but with a lua script called by a cron job that simply takes down the tunnel when the quota is reached.

There is also an iptables module called quota which can automatically enable/disable iptable rules when a quota is reached. It is not clear if it can be used to count both upstream and downstream bandwidth towards one total quota and it also has no built-in mechanism to persist the usage count between reboots.

tc − show / manipulate traffic control settings

Tc is used to configure Traffic Control in the Linux kernel.

QOS

Quality of Service (qos-scripts) configuration

Once we have the monitoring in hand we can then handle the bandwidth caps. We might want to cut off access once the limit has been reached.

ubus

OpenWrt micro bus architecture - there is a Lua module for ubus...