# google/bbr architecture

> Architecture diagram of the GitHub repository google/bbr, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/google/bbr
- Repository: https://github.com/google/bbr

## Overview

This repository is a documentation and simulation-materials distribution about BBR, not the implementation of the congestion-control algorithm. Its user-facing path is reading the FAQ or quick start, then using the documented GCE configuration to run TCP BBR. Separate startup-gain and parking-lot simulations support algorithm analysis; the tree shows related analysis documents and simulation outputs. The README points to Linux and QUIC implementations maintained elsewhere. Source excerpts were unavailable, so simulation wiring beyond the documented/tree-indicated associations is left unspecified.

Main entry points: [`Documentation/bbr-faq.md`](https://github.com/google/bbr/blob/master/Documentation/bbr-faq.md) (BBR FAQ), [`Documentation/bbr-quick-start.md`](https://github.com/google/bbr/blob/master/Documentation/bbr-quick-start.md) (TCP quick start), [`Documentation/startup/gain`](https://github.com/google/bbr/tree/master/Documentation/startup/gain) (Startup gain overview), [`Documentation/startup/gain/simulation/startup.c`](https://github.com/google/bbr/blob/master/Documentation/startup/gain/simulation/startup.c) (Startup simulation)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_guides["Guides and setup"]
  node_faq["BBR FAQ<br/>[bbr-faq.md]"]
  node_quickstart["TCP quick start<br/>[bbr-quick-start.md]"]
  node_gceconfig["GCE configuration<br/>[config.gce]"]
end

subgraph group_startup["Startup analysis"]
  node_startupdoc["Startup gain overview"]
  node_startupsim["Startup simulation<br/>[startup.c]"]
  node_startupanalysis["Startup analysis"]
end

subgraph group_parking["Parking-lot simulation"]
  node_parkingdoc["Parking-lot topology"]
  node_parkingsim["Parking-lot simulation<br/>[parking_lot_sim.c]"]
  node_parkingoutput["Simulation outputs"]
end

subgraph group_external["External implementations"]
  node_linuxbbr["Linux TCP BBR"]
  node_quicbbr["QUIC BBR"]
end

node_engineer(("Network engineer"))

node_engineer -->|"consults"| node_faq
node_engineer -->|"follows"| node_quickstart
node_quickstart -->|"uses"| node_gceconfig
node_quickstart -.->|"runs"| node_linuxbbr
node_engineer -->|"studies"| node_startupdoc
node_startupdoc -->|"describes"| node_startupsim
node_startupsim -->|"informs"| node_startupanalysis
node_engineer -->|"studies"| node_parkingdoc
node_parkingdoc -->|"describes"| node_parkingsim
node_parkingsim -->|"produces"| node_parkingoutput
node_faq -.->|"references"| node_linuxbbr
node_faq -.->|"references"| node_quicbbr

click node_faq "https://github.com/google/bbr/blob/master/Documentation/bbr-faq.md"
click node_quickstart "https://github.com/google/bbr/blob/master/Documentation/bbr-quick-start.md"
click node_gceconfig "https://github.com/google/bbr/blob/master/Documentation/config.gce"
click node_startupdoc "https://github.com/google/bbr/tree/master/Documentation/startup/gain"
click node_startupsim "https://github.com/google/bbr/blob/master/Documentation/startup/gain/simulation/startup.c"
click node_startupanalysis "https://github.com/google/bbr/tree/master/Documentation/startup/gain/analysis"
click node_parkingdoc "https://github.com/google/bbr/tree/master/Documentation/simulation/topologies/parking_lot"
click node_parkingsim "https://github.com/google/bbr/blob/master/Documentation/simulation/topologies/parking_lot/parking_lot_sim.c"
click node_parkingoutput "https://github.com/google/bbr/tree/master/Documentation/simulation/topologies/parking_lot/outputs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_faq,node_quickstart,node_gceconfig toneBlue
class node_startupdoc,node_startupsim,node_startupanalysis toneAmber
class node_parkingdoc,node_parkingsim,node_parkingoutput toneMint
class node_linuxbbr,node_quicbbr toneRose
class node_engineer toneIndigo
```

## Components

### Guides and setup

- [BBR FAQ](https://github.com/google/bbr/blob/master/Documentation/bbr-faq.md): `Documentation/bbr-faq.md`
- [TCP quick start](https://github.com/google/bbr/blob/master/Documentation/bbr-quick-start.md): `Documentation/bbr-quick-start.md`
- [GCE configuration](https://github.com/google/bbr/blob/master/Documentation/config.gce): `Documentation/config.gce`

### Startup analysis

- [Startup gain overview](https://github.com/google/bbr/tree/master/Documentation/startup/gain): `Documentation/startup/gain`
- [Startup simulation](https://github.com/google/bbr/blob/master/Documentation/startup/gain/simulation/startup.c): `Documentation/startup/gain/simulation/startup.c`
- [Startup analysis](https://github.com/google/bbr/tree/master/Documentation/startup/gain/analysis): `Documentation/startup/gain/analysis`

### Parking-lot simulation

- [Parking-lot topology](https://github.com/google/bbr/tree/master/Documentation/simulation/topologies/parking_lot): `Documentation/simulation/topologies/parking_lot`
- [Parking-lot simulation](https://github.com/google/bbr/blob/master/Documentation/simulation/topologies/parking_lot/parking_lot_sim.c): `Documentation/simulation/topologies/parking_lot/parking_lot_sim.c`
- [Simulation outputs](https://github.com/google/bbr/tree/master/Documentation/simulation/topologies/parking_lot/outputs): `Documentation/simulation/topologies/parking_lot/outputs`

### External implementations

- **Linux TCP BBR**
- **QUIC BBR**

### Other components

- **Network engineer**

## Connections

- Network engineer → BBR FAQ: consults
- Network engineer → TCP quick start: follows
- TCP quick start → GCE configuration: uses
- TCP quick start → Linux TCP BBR: runs
- Network engineer → Startup gain overview: studies
- Startup gain overview → Startup simulation: describes
- Startup simulation → Startup analysis: informs
- Network engineer → Parking-lot topology: studies
- Parking-lot topology → Parking-lot simulation: describes
- Parking-lot simulation → Simulation outputs: produces
- BBR FAQ → Linux TCP BBR: references
- BBR FAQ → QUIC BBR: references
