Skip to content

Two connections, one link — who gets what

Fairness

Two or more flows sharing a bottleneck. Do they end up with equal shares, and if not, why not?

Scenario
How much fits in the wire

50.0 Mbps × 50.0 ms ÷ 8 = 305.2 KiB = 216 × MSS

Capacity times round trip, divided by eight because capacity is quoted in bits and everything else here in bytes. That is how much data can be in transit at once, so it is the amount worth having in flight — and the number the buffer below is measured against. Send less and the wire idles; send more and the extra waits in a queue.

The link
Bandwidth50.0 Mbps
1 Mbps200 Mbps

How fast the narrowest link on the path can forward packets — the .

One-way delay25.0 ms · Base RTT 50.0 ms
1 ms200 ms

Distance, as time. Doubled it is the — the fastest a round trip can possibly be.

Buffer305.2 KiB · 1.00 × BDP
0.05 × BDP8 × BDP

How much may wait at the bottleneck. Read it as a multiple of the : below 0.5 the link goes idle, above 1 the extra is pure latency.

Random loss0
05%

Packets dropped for reasons other than a full queue — radio interference, a bad cable. Leave at zero to see congestion alone.

The sender

The rule the sender uses to decide how fast to go. All of them run through one identical sender, so this compares algorithms and not implementations. CBR is the exception and the control case: it is not an algorithm at all but a source that ignores every signal, pinned just above capacity — watch it fill the buffer and stay there.

The bottleneck queue

What the bottleneck does when it runs out of room. DropTail waits until it is full; RED and CoDel drop early on purpose — .

Run settings120 s · #1
Duration120 s
5 s120 s

How long to simulate. Longer runs show more sawtooth cycles and take longer to compute.

Seed#1
164

Which this run used. Same settings and same seed give a byte-identical result.

Simulating packets…