Robin Marx Profile picture
Jun 13 • 9 tweets • 5 min read
Apple's @vidhigoel07 had a great session at #WWDC last week, talking about improving network latency through:

đź”›implementation tuning (for example buffer sizing)
🔜network assistance (like L4S, the new Low-Latency, Low-Loss proposal!).

developer.apple.com/videos/play/ww…

Some thoughts👇
A big part of observed network latencies/delays is due to so-called bufferbloat:

Too large intermediate buffers, both on the endpoints and in the network, cause packets to stay in the buffer too long, delaying them.
On the endpoints, this can be improved by tuning buffer sizes for different protocols (TCP/QUIC, TLS and HTTP have their own buffers!). Default sizes are often too high.

Other good sources:
- blog.cloudflare.com/http-2-priorit…
- slideshare.net/kazuho/program… (the first I ever saw from @kazuho!)
In the network this is often done by Active Queue Management (AQM). This basically comes down to intentionally but smartly dropping some packets if buffers fill up, causing the senders' congestion controllers to slow down, reducing buffer occupancy

@mtaht is the expert on this!
However, using packet loss for this isn't ideal... why can't the network just tell senders to slow down in another way?

That's exactly what ECN (Explicit Congestion Notification) was made for. Here, middleboxes give explicit signals that congestion is (going to be) occurring.
ECN works, but has some problems.

A new, similar proposal called L4S (low-latency, low-loss, scalable throughput) aims to improve on the same ideas: ietf.org/archive/id/dra…

Apple is now (one of) the first to provide an L4S implementation to help test this new approach!
While L4S (like ECN) needs explicit network support to properly work (middleboxes need to set bits in packet headers), I do think this is the next big frontier for big network latency improvements.

And having good endpoint implementations is a crucial step!
Apple has also been working on a new way to measure bufferbloat with a specialized "Round-Trips per Minute" metric and tools to test it: ietf.org/archive/id/dra…

They even mention @hawkinsw's Go implementation (achievement unlocked!):
In conclusion, choosing the correct protocols (like HTTP/3) is often just the first step.

After that comes careful tuning of both endpoints and intermediate networks to squeeze out optimal performance, and that work is still very much active and ongoing!

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Robin Marx

Robin Marx Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @programmingart

Jun 8, 2021
Day 4 of our deep dive into the freshly standardized #QUIC protocol is about one of its most innovative aspects: connection migration!

This is intended to allow #QUIC connections to survive network changes that are disruptive in TCP.

1/12 #RFC9000
Take the "parking lot problem": you have WiFi on your phone inside, but switch to 4G when going to your car.
This switches networks and client IP/port, so all TCP connections are dropped and re-started, since they're only identified based on client+server IP+port (4-tuple). 2/12
QUIC instead assigns each connection a unique Connection ID (CID) of 1-20 bytes.

By using the same CID even after switching networks, the server knows it's actually the same connection, even though the 4-tuple has changed. 3/12
Read 12 tweets
Dec 5, 2018
I wrote a blog post looking at potential threats for #QUIC and HTTP/3 adoption and deployment calendar.perfplanet.com/2018/quic-and-…. This will also be the basis for a talk at the HTTP symposium at curl-up in Prague at the end of March 2019 github.com/curl/curl-up/w…
Yesterday, there was a #QUIC workshop at the #conext18 conference with a large amount of new insights. Most of my notes on this can be found at docs.google.com/document/d/16S…. Following tweets contain the parts relevant to the blogpost.
For example, Intel was here with a demo of a NIC that can offload #QUIC crypto to hardware. When asked later, Manasi Deval mentioned that specifically Variable Integer Encoding (to reduce the amount of bits on the wire) is a serious hindrance for #QUIC hardware support.
Read 9 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us on Twitter!

:(