Subject: [quicwg/base-drafts] Exempt all ACK frames from congestion control (#1977)

From: martinduke <[email-masked]>
Date: Wed, 07 Nov 2018 00:51:50 -0800

I realize there are quite a few retired PRs in this space.

However, the current system sets up perverse incentives. If I want to maximize my throughput given a certain congestion window, the optimal behavior is to always send ACK frames in their own packets.

IMO, simply not counting ACK frames in flightsize (and the header of ack-only packets) is conceptually cleaner and a pretty simple change to the implementation.

If there are no objections I can file a PR.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/issues/1977

---

From: Marten Seemann <[email-masked]>
Date: Wed, 07 Nov 2018 01:57:48 -0800

If you want to send more data than your congestion window allows, nobody can stop you from doing so. 

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/issues/1977#issuecomment-436569067

---

From: Subodh Iyengar <[email-masked]>
Date: Wed, 07 Nov 2018 02:11:57 -0800

I agree with @marten-seemann here, we're solving for a sender that wants to do the right thing and be nice to the network. If I understand this proposal, you're suggesting not counting ack frames towards size even in the packets that contain them?

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/issues/1977#issuecomment-436573326

---

From: ianswett <[email-masked]>
Date: Wed, 07 Nov 2018 02:32:51 -0800

Agreed, I'm happy with the status quo.  If you want to game congestion control, there are plenty of ways to be unilaterally more aggressive.

The reason ACK-only packets are the only ones that aren't congestion controlled is to allow sending ACKs even if there's no available congestion control or you'd otherwise be pacing limited.  And the main reason they don't count towards bytes in flight is because they don't elicit an ACK to allow them to be removed from bytes in flight.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/issues/1977#issuecomment-436579227

---

From: Marten Seemann <[email-masked]>
Date: Wed, 07 Nov 2018 18:59:29 -0800

If I remember correctly, we had a lengthy discussion of @martinduke's proposal at one of the early interims. The conclusion was to count ACKs for congestion control, because QUIC ACK frames can become quite large, and therefore should be considered as load on the network. The exception for ACK-only packets is unfortunate, but the only way to not end up in an acknowledgement loop.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/issues/1977#issuecomment-436856476

---

From: janaiyengar <[email-masked]>
Date: Mon, 12 Nov 2018 02:00:22 -0800

Fair enough. I chatted with @martinduke and thought it was a fine proposal (I think it still is). But I agree with @marten-seemann that it leaves large ACKs out, which is unfortunate.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/issues/1977#issuecomment-437822141

---

From: martinduke <[email-masked]>
Date: Mon, 12 Nov 2018 23:37:29 +0000 (UTC)

Closed #1977.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/issues/1977#event-1961643490

---

From: martinduke <[email-masked]>
Date: Mon, 12 Nov 2018 23:37:29 +0000 (UTC)

To answer @marten-seemann 's first point, I do think that the congestion control rules in the spec matter, even though they're unenforceable. Implementers will sometimes do whatever the spec lets them get away with. The reason I brought it up was the fairly stupid "never send an ACK with data" loophole.

Regardless, this is clearly DOA and I'm closing it.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/issues/1977#issuecomment-438070970