You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
For more information about using the Gateway API with Cilium, see the [Cilium Gateway API documentation](https://docs.cilium.io/en/stable/network/servicemesh/gateway-api/).
279
279
280
+
## Bandwidth Manager and BBR
281
+
282
+
Cilium can enforce per-Pod egress bandwidth limits (via the `kubernetes.io/egress-bandwidth` annotation) using its eBPF-based [Bandwidth Manager](https://docs.cilium.io/en/stable/network/kubernetes/bandwidth-manager/), and optionally use [BBR](https://docs.cilium.io/en/stable/network/kubernetes/bandwidth-manager/#bbr-tcp-congestion-control) as the TCP congestion control algorithm for Pod traffic.
283
+
284
+
You can enable the Bandwidth Manager on its own:
285
+
286
+
```yaml
287
+
spec:
288
+
networking:
289
+
cilium:
290
+
enableBandwidthManager: true
291
+
```
292
+
293
+
Or enable Bandwidth Manager **and** BBR together:
294
+
295
+
```yaml
296
+
spec:
297
+
networking:
298
+
cilium:
299
+
enableBandwidthManager: true
300
+
enableBBR: true
301
+
```
302
+
303
+
`enableBBR`requires `enableBandwidthManager` — Cilium's BBR path plugs into the Bandwidth Manager's eBPF EDT scheduler, so without Bandwidth Manager there is nothing for it to attach to. When `enableBBR` is set, kOps also writes the node sysctls `net.core.default_qdisc=fq` and `net.ipv4.tcp_congestion_control=bbr` so the host kernel TCP stack uses BBR as well.
304
+
305
+
**Requirements**
306
+
307
+
- Linux kernel **>= 5.18** on every node when `enableBBR` is set (the eBPF BBR pacing path needs a recent kernel). The Bandwidth Manager on its own works on older 5.x kernels.
308
+
- Direct routing or BPF host routing. The default kOps + Cilium setup satisfies this.
309
+
310
+
**Notes on AWS + Ubuntu**
311
+
312
+
- Ubuntu 22.04 (kernel 5.15) does not include the BBR pacing path Cilium uses; prefer Ubuntu 24.04 (kernel 6.8) or a newer HWE kernel.
313
+
- The kOps default AWS AMI (Ubuntu) ships with the `tcp_bbr` module; no extra image customization is required.
314
+
315
+
**When BBR helps in AWS**
316
+
317
+
BBR's advantage scales with the bandwidth-delay product (BDP). Modern AWS instances have ENA NICs in the 10–100 Gbps range, so even at sub-millisecond intra-AZ RTT — and especially at 1–2 ms cross-AZ — the BDP is large enough that a single CUBIC flow needs seconds to ramp up to line rate and backs off hard on any random loss. BBR converges to the bottleneck bandwidth much faster and is far more resilient to spurious loss. Workloads that typically benefit:
318
+
319
+
- Large pod-to-pod or pod-to-service transfers (model checkpoints, dataset shuffles, backups, log shipping).
320
+
- Cross-AZ replication and database streaming.
321
+
- Egress to S3 / other AWS services over VPC endpoints, and any egress to the internet.
322
+
- Workloads on instances with 25 Gbps+ networking where a single flow is expected to fill the pipe.
323
+
324
+
For workloads dominated by very short, low-volume RPCs on the same AZ, the practical difference is smaller — but BBR is generally safe to enable cluster-wide.
325
+
280
326
## Getting help
281
327
282
328
For problems with deploying Cilium please post an issue to Github:
0 commit comments