Throttling

Throttling feature

General overview

Throttling feature depends on two entities: Session and Speed Limit.

Session is a group of packages between local process and remote servers. For TCP protocol Session is the same with TCP connection and rules will be applied when application is establishing the connection but UPD protocol works a bit different. UDP protocol has no determined session and Netfilter groups packages by the pair of the local and remote IP address plus Port. It works by this way for performance reasons and this approach is available because applications with UPD communication listen the same local port for NAT passthrough from the server side.

All Sessions can be applied to the one of pre-registered Speed Limits. SDK assigns Speed Limit on the Session start and all other work occurs on the Netfilter kernel driver level.

Throttling module supports process file name and full path. Unlike the Process bypass and route via modules that support only full path to the process. We recommend to use file names instead full path for better performance on high speed limits.

If one process is added to the different Speed Limits then only the first one will be applied.

When two process files are added to the one Speed Limit then both processes will share the same bandwidth. But different Speed Limits do not share their bandwidth.

Commands

Requests presented below are used for configuring throttling:

RemoveProcess - removes process from throttling list

var throttlingRequest = new ThrottlingRequest
{
    RemoveProcess = new List<RemoveProcessRequest>
    {
        new RemoveProcessRequest { Process = "processName" },
    },
};

RemoveAllProcesses - removes all processes from throttling list

ClearSpeedLimits - clears speed limits

RemoveSpeedLimit - removes speed limits

RemoveAllSpeedLimits - removes speed limits

DefaultSpeedLimit - sets the default speed limit

SetSpeedLimit - sets the speed limit

AddProcesses - sets the process list

Enable - enables throttling

Disable - disables throttling

ConfigureThrottling

Sends throttling configuration to the service. Important: Throttling feature can be applied only thru the connected tunnel.

DownloadSpeed and UploadSpeed determined in bytes per second.

Last updated

Was this helpful?