Rate Limit

tcp socket speed limit

yaml value: mix

Basically it consists of 3 fields:

  • shift_millis | shift

    type: int

    The time slice we use to count is 2 ^ N milliseconds, where N is set by this key and should be in range [0 - 12]. If N is 10, and the time slice is 1024ms. If omitted, this means the limit is not set.

  • upload | north | upload_bytes | north_bytes

    type: humanize usize

    This sets the upload bytes in the time slice. 0 means delay forever.

  • download | south | download_bytes | south_bytes

    type: humanize usize

    This set the max download bytes in the time slice. 0 means delay forever.

The yaml value type can be in varies formats:

  • humanize usize

    This will set upload and download to the same value, with shift_millis set to 10.

  • map

    The keys of this map are the fields as described above.

udp socket speed limit

yaml value: mix

Basically it consists of 4 fields:

  • shift_millis | shift

    type: int

    The time slice we use to count is 2 ^ N milliseconds, where N is set by this key and should be in range [0 - 12]. If N is 10, and the time slice is 1024ms. If omitted, this means the limit is not set.

  • upload_bytes | north_bytes

    type: humanize usize

    This sets the upload bytes in the time slice. 0 means no limit.

  • download_bytes | south_bytes

    type: humanize usize

    This set the max download bytes in the time slice. 0 means no limit.

  • upload_packets | north_packets

    type: int [usize]

    This set the max upload packets in the time slice. 0 means no limit.

  • download_packets | south_packets

    type: int [usize]

    This set the max download packets in the time slice. 0 means no limit.

The yaml value type can be in varies formats:

  • humanize usize

    This will set upload and download bytes to the same value, set shift_millis to 10 and disable check on packets.

  • map

    The keys of this map are the fields as described above.

request limit

yaml value: mix

It consists of 2 fields:

  • shift_millis | shift

    type: int

    The time slice we use to count is 2 ^ N milliseconds, where N is set by this key and should be in range [0 - 12]. If N is 10, and the time slice is 1024ms. If omitted, this means the limit is not set.

  • requests

    type: usize

    This sets the max requests in the time slice. 0 is not allowed.

rate limit quota

yaml value: mix

It consists of 3 fields:

  • rate

    type: nonzero u32

    If int or str without any unit, the default unit will be per second.

    Supported units for str:

    • /s, per second

    • /m, per minute

    • /h, per hour

  • replenish_interval

    type: humanize duration

    Construct a quota that replenishes one cell in a given interval. The default max_burst value is 1 is its not specified along with this option.

  • max_burst

    Adjusts the maximum burst size for a quota to construct a rate limiter with a capacity for at most the given number of cells

Note

rate and replenish_interval is conflict with each other, the latter one in conf will take effect.

The yaml value for u32 limit quota can be in varies formats:

  • simple rate

    Just the rate value. The max_burst value is the same as the one set in the rate.

  • map

    The keys of this map are the fields as described above.

random ratio

yaml value: f64 | str | bool | integer

Set a random ratio between 0.0 and 1.0 (inclusive).

For str value, it can be in fraction form (n/d), in percentage form (n%), or just a float string.

For bool value, false means 0.0, true means 1.0.

For integer value, only 0 and 1 is allowed.