view mod_limits/README.markdown @ 4690:82dabfffaddf

mod_muc_require_tos: Add this new module
author Emmanuel Gil Peyrot <>
date Thu, 16 Sep 2021 20:41:14 +0200
parents 8de50be756e5
children b935276ab1b4
line wrap: on
line source

- 'Stage-Beta'
summary: 'Connection-level rate limiting'


On some servers, especially public ones, it is desired to make sure that
everyone gets their fair share of system resources (and no more).

mod\_limits allows you to specify traffic bandwidth limits, preventing
any single connection hogging the server's CPU, RAM and bandwidth.


mod\_limits detects when a connection has exceeded its traffic allowance
and temporarily ignores a connection. Due to the way TCP and the OS's
network API works no data is lost, only slowed.


Currently mod\_limits is configured per connection type. The possible
connection types are:

-   c2s
-   s2sin
-   s2sout
-   component

The limits are specified like so in the **global** section of your
config (they cannot be per-host):

``` {.lua}
limits = {
  c2s = {
    rate = "3kb/s";
    burst = "2s";
  s2sin = {
    rate = "10kb/s";
    burst = "5s";

All units are in terms of *bytes*, not *bits*, so that "kb/s" is
interpreted as "kilobytes per second", where a kilobyte is 1000 bytes.


  ----- -------------------
  0.9   Works
  0.8   Doesn't work(\*)
  ----- -------------------

(\*) This module can be made to work in 0.8 if you do two things:

1.  Install
    into your Prosody source's util/ directory.
2.  If you use libevent apply [this
    patch]( to