Throttling options

BigFix has a great number of settings that control how different components throttle traffic between one another. Throttling is always done for specific components, and some components might not have throttling available.

Throttled Components

These are any files that are downloaded directly from the wwwrootbes directory of the Relay, Server, or WebReports. Files downloaded for actions (for example, patches, service packs, and so forth) are downloaded this way. The contents of Fixlet sites are also downloaded this way during the gather interaction (although the site directory listing comes in separately).

Un-throttled Components

There are however, a number of "throttle-like" capabilities around client registration. The amount of downstream UDP traffic generated can be rate limited on the Relay/Server side, the frequency of client registration can be turned down on the client side, and the amount of ICMP traffic generated during relay selection can be rate limited on the client side. Note that client registration is not bandwidth intensive, although it can be a significant source of load. Download request plugin, status reporting plugins, the "Web Reports" plug-in, etc. For the Client, we expect this traffic to be negligible. However, things like the download status report generate a lot of traffic between the Console and the Root Server, and they cannot be throttled. When the Client asks the Relay "please tell me the latest contents of site X" (logged as 'GatherActionMV command received. Version difference, gathering'), the interaction is not throttled. The response of the Relay is typically small (anywhere from 0-~40k). If absolutely necessary, you can turn down the gather intervals on Clients to get this information less frequently, but this traffic should usually be negligible.

There are also things you can do to control the amount of traffic going upstream through the "PostResults" interface. The most basic "throttling" mechanism is simply to turn up the minimum report interval on the Client or lengthen the heartbeat interval. You can also put a crude limit on the amount of traffic a Relay can send up through a combination of the "ResultSizeLimit" and "ResultTimeLimit" Relay settings. However, you should check with Customer Support before doing so: it's unlikely that you'll get the behavior you expect. Posting results takes more bandwidth than client registration, but is still much smaller than the amount of bandwidth used by the download and upload components. For most deployments, the amount of traffic should be negligible.

Throttling Minimum Transfer Rates

During throttled communication, the BigFix Client will send chunks of data and then wait longer than necessary before sending the next chunk. The BigFix Client can vary the amount of data in each chunk along with the amount of time to wait. By lowering the amount of data per chunk and maximizing the amount of data between chunks, a minimum transfer rate will be established for throttling.

The BigFix Relay component actually does the throttling work so if you need to upgrade BigFix to change the minimum throttling rate, it is important to upgrade the BigFix Relays along with the BigFix Clients to the newer version.

The effective minimum throttling rate is 100 Bytes/Sec.

All throttling settings are given in either BPS (Bytes per Second) or KBPS (KBPS). Given the effective minimum values listed above, if you set the throttling rate below the effective minimum it doesn't go that low, it only goes to the effective minimum value. Also notice that the effective minimum is less than 1 KBPS but the minimum value you can set KBPS throttling setting to is only 1 so you can't reach the effective minimum. IE., in some cases the effective minimum rate is controlled by the setting and in other cases the effective minimum is controlled by the client's throttling limits.

The settings used to specify the chunk size are:

_BESClient_UploadManager_ChunkSize

The value is specified in bytes (Default: 131072, that corresponds to 128 KB).

"0" means that the upload is done in a single chunk.

In a conflict between this computer and the upstream computer, the size of the chunk is set to the smaller of the two.

_BESRelay_UploadManager_ChunkSize

The value is specified in bytes (Default: 131072, that corresponds to 128 KB).

"0" means that the upload is done in a single chunk.

In a conflict between this computer and the upstream computer, the size of the chunk is set to the smaller of the two.

Upload Throttling

The uploads generated by the "Upload Manager" can be throttled from the Client side or from the Relay/Server side. This component only supports static throttling. There is a "PostFile" setting that sets an overall throttle on incoming connections, and an "UploadManager" setting that sets the throttle on outgoing connections (there is only one outgoing connection at a time). When both are set, the child is responsible for using the lesser of the two values.

_BESRelay_PostFile_ThrottleKBPS

"0" means "no limit" (Default: 0)

This setting is not sufficient to throttle PostFile, indeed it needs _BESClient_UploadManager_ThrottleKBPS to be set on Client with a non-0 value to work. The limit will be the lesser of the two values.

At the start of an upload interaction, the PostFilePlugIn divides this number by the total number of uploads currently in progress on the Relay and sends the result down to the child, who is responsible for respecting the resulting limit.

Same setting on both Server and Relay

_BESRelay_UploadManager_ThrottleKBPS

Default: 0

Only relevant on Relay (Server has no one to upload *to*, although DSA may change that at some point)

When Relay uploads files to its parent, it will limit itself to this rate. It provides the limitation by breaking the interaction into chunks and doing a connection for each chunk, with waits in between (this in contrast to download throttling, which maintains a single connection over the length of the interaction).

"0" means "no limit"

_BESClient_UploadManager_ThrottleKBPS

Default: 0

Only relevant on Client

When Client uploads files to its parent, it will limit itself to this rate. It provides the limitation by breaking the interaction into chunks and doing a connection for each chunk, with waits in between (this in contrast to download throttling, which maintains a single connection over the length of the interaction).

"0" means "no limit"

These are files uploaded from the endpoints through the "Upload Manager".

Two major axes of download throttling settings

"Server Side" or "Client side"

Server-side throttling (Server/Relay/Web Reports) is expressed as an amount of bandwidth to be shared among all connecting children

Client-side throttling (Client/Relay) is expressed as an amount of bandwidth to be used on a single upstream connection. Note that Clients may use more bandwidth if they have multiple simultaneous upstream connections.

Static or Dynamic

When Server-side and Client-side throttling is in effect, BigFix components use the lower of the calculated bandwidth limits. When Dynamic and Static throttling are both in effect, the Dynamic throttling settings are used in place of the Static throttling settings.

Server-side static throttling is the only type of throttling that can affect non-BigFix components (such as Web Browsers).