TCP BBR (Bottleneck Bandwidth and Round-trip propagation time) is a TCP congestion-control algorithm.
Artica lets you switch the appliance from the default algorithm (CUBIC) to BBR with a single click on the proxy status page.
The change applies immediately, needs no reboot and does not restart the proxy.
Available from Artica 4.50 SP8 with update 20260923-18 or later.
Every TCP connection has a sender that decides how fast to push data.
The congestion-control algorithm is the logic that makes this decision.
Important: BBR acts on what the appliance sends
Congestion control is a sender-side mechanism.
On a proxy, this means:
The biggest gain is therefore on the proxy-to-user leg when users sit behind a slow, distant or lossy link:
branch offices over WAN or VPN, remote workers, Wi-Fi or mobile networks.
The algorithm is chosen when a TCP connection opens.
Connections that already exist keep their algorithm until they close; every new connection uses the new one.
Nothing is interrupted, which is why no proxy restart is needed.
| Situation | Benefit of BBR |
|---|---|
| Central proxy serving branch offices over MPLS, SD-WAN or IPsec/OpenVPN tunnels | High. Pages and downloads delivered to remote sites are no longer throttled by occasional losses on the WAN. |
| Remote workers connected through a VPN to the proxy | High. Home Internet and 4G/5G links lose packets; BBR keeps delivery speed stable. |
| Guest or HotSpot proxy for Wi-Fi users | High. Wireless losses are not congestion; BBR does not slow down for them. |
| Proxy in a data center serving users on another continent | High. Long round-trip times are where CUBIC is slowest to reach full speed. |
| Uploads through the proxy (cloud storage, backups, large attachments) | Medium to high. The proxy is the sender toward the Internet server. |
| Saturated Internet access where browsing becomes sluggish during big transfers | Medium. Shorter queues keep interactive traffic responsive. |
| Users on the same fast, clean LAN as the proxy | Low. No harm, little gain. |
| Slow downloads from a given Internet site | None. That direction depends on the remote server's algorithm. |
Your proxy > Status.cubic.To go back to CUBIC, open the same dialog and click on the switch again.
| Tile badge | Meaning | What to do |
|---|---|---|
Active (green), bbr · fq |
The kernel is using BBR for new connections. | Nothing. |
Inactive, cubic |
BBR is disabled; the standard algorithm is in use. | Enable it if one of the use cases above applies. |
| Not supported (orange) | BBR is enabled but the kernel cannot load tcp_bbr. The appliance stays on CUBIC. |
See Troubleshooting below. |
| Configured but could not be applied (red) | The setting is saved but the kernel value differs from it. | Open the dialog and toggle again; check the logs. |
| Sub-title starting with HaCluster | This proxy is a HaCluster node and the load-balancer decides its BBR setting. |
Change it on the load-balancer (see below). |
The feature is driven by the articarest REST service (Unix socket /usr/share/artica-postfix/bin/run/articarest.sock, or the REST port with the usual access restrictions).
| Method and path | Action |
|---|---|
GET /system/bbr/status |
Returns the configured value and the real kernel state. Read-only. |
POST /system/bbr/1 / POST /system/bbr/0 |
Enables or disables BBR, applies it and returns the resulting state. Any other value is refused with HTTP 400. Refused with HTTP 409 when the load-balancer manages this node. |
GET or POST /system/bbr/apply |
Re-applies the stored setting (for instance after a kernel change) and returns the resulting state. |
Example:
# curl -s -X POST --unix-socket /usr/share/artica-postfix/bin/run/articarest.sock http://localhost/system/bbr/1
{
"success": true,
"outcome": "applied",
"data": {
"configured": true,
"cluster_managed": false,
"cluster_mode": 0,
"supported": true,
"active": true,
"state": "active",
"available": ["reno", "cubic", "bbr"],
"current_cc": "bbr",
"current_qdisc": "fq",
"message": ""
}
}
The outcome field tells you what really happened:
applied: the kernel now matches the setting.saved_unsupported: the setting is saved, but the kernel cannot run BBR.apply_failed: the setting is saved, but the kernel value differs from it.The state field is one of active, inactive, unsupported or error.
On a HaCluster, BBR is best managed from the load-balancer: a single switch applies it to the load-balancer itself (which delivers the data to users) and to every proxy of the cluster. While the cluster manages BBR, the tile of each proxy shows HaCluster and its dialog no longer offers the switch. See TCP BBR on a HaCluster.
The message comes from the appliance: missing privileges (you need proxy administrator rights), node managed by the HaCluster load-balancer, or REST service not reachable.
The saved value is never hidden: the diagnostic block always shows the real kernel state.
That is expected: connections opened before the change keep their algorithm until they close.