Static throttling

Server-side and Client-side static throttling settings are described.

Server Side

Server-side static throttling settings control the total amount of download traffic that a server will send out to Clients using static throttling. The amount of bandwidth allocated to any given write connection is simply the "ThrottleKBPS" setting divided by the number of active write connections. Note that plug-in connections do not count as "write" connections. However, file downloads with static or dynamic throttling enabled do count as "write" connections. If you have:
  • ThrottleKBPS = 500
  • One Client connecting without dynamic throttling
  • One Client connecting with dynamic throttling

...then the Client without dynamic throttling will get 250 KBPS of bandwidth allocated. The bandwidth usage of the Client with dynamic throttling will be determined by the dynamic throttling algorithm -- it may turn out to be much less or greater than 250 KBPS, so that the total bandwidth usage of the server will not necessarily be 500 KBPS.

Note: Server-side settings are in KBPS. For Relay and Root Server:
  • _BESRelay_HTTPServer_ThrottleKBPS
    • Default: 0
    • "0" means "no limit"
  • For Web Reports:
    • _WebReports_HTTPServer_ThrottleKBPS
    • Default: 0
    • "0" means "no limit"

Client Side

Client-side static throttling is the simplest of these settings. A "Client" (could be a Client or a Relay) simply tells its parent "please send me files at this speed" and the parent obliges. Settings are in BPS. For a BES Client:
  • _BESClient_Download_LimitBytesPerSecond
    • Default: 0
    • "0" means "no limit"

For a BES Relay downloading files from its parent:
  • _BESGather_Download_LimitBytesPerSecond
    • Default: 0
    • "0" means "no limit"

Throttle Groups

"Throttle Groups" are a part of the static throttling functionality that allow a set of Clients reporting to the same Parent Relay to throttle themselves as a group instead of individually (or along with every other connection through Server-side throttling).

"Throttle Groups" across Clients that report to different Parent Relays is not supported.

When a Client identifies itself as part of a "throttle group", it sends up the name of the group it belongs to, along with the speed it would like the entire group to have. So for example a Client might say "I am in the 'remote' group, and we would like to be given 10000 BPS as a whole". When the Server sends data down to that Client, it throttles based on the total number of connections in the Clients group. So if there are five active connection from the 'remote' group, our Client will get 2000 BPS. Note that different Clients can send up different values for the "limit bytes per second", so another Client could say "I am in the 'remote' group, and we would like to be given 5000 BPS as a whole", and it would be given 1000 BPS at the same time our first Client was given 2000 BPS. The special group "ipaddress" will cause the Server to group this connection along with other connections from the same IP address. This is the default for Relay upstream traffic. Clients default to the group "", so that their "LimitBytesPerSecond" setting is shared among all of their currently active file downloads.

  • _BESGather_Download_ThrottleGroup (valid on Windows Server only)
    • Default: "ipaddress"
    • The parent will consider this Relay to be part of whichever group is specified here
  • _BESClient_Download_ThrottleGroup
    • Default: computer id as string
    • The parent will consider this Client to be part of whichever group is specified here
    • This is a string value: older versions of ClientSettings documentation incorrectly claimed this was a numeric value.
Dynamic throttling is unaffected by throttle groups (an interesting side effect of this is that a Client set to target 20% of available bandwidth may end up using 40% if it's downloading two files simultaneously).