Return-Path: <noreply@github.com>
X-Original-To: quic-issues@ietfa.amsl.com
Delivered-To: quic-issues@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1])
 by ietfa.amsl.com (Postfix) with ESMTP id EC5711286D9
 for <quic-issues@ietfa.amsl.com>; Wed,  7 Nov 2018 01:01:05 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -8.47
X-Spam-Level: 
X-Spam-Status: No, score=-8.47 tagged_above=-999 required=5
 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.47, DKIM_SIGNED=0.1,
 DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001,
 MAILING_LIST_MULTI=-1, RCVD_IN_DNSWL_HI=-5, SPF_PASS=-0.001]
 autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key)
 header.d=github.com
Received: from mail.ietf.org ([4.31.198.44])
 by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id UDqVl7PWOnYt for <quic-issues@ietfa.amsl.com>;
 Wed,  7 Nov 2018 01:00:59 -0800 (PST)
Received: from out-7.smtp.github.com (out-7.smtp.github.com [192.30.252.198])
 (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by ietfa.amsl.com (Postfix) with ESMTPS id 09128123FFD
 for <quic-issues@ietf.org>; Wed,  7 Nov 2018 01:00:59 -0800 (PST)
Date: Wed, 07 Nov 2018 01:00:57 -0800
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=github.com;
 s=pf2014; t=1541581258;
 bh=M5QZMGM28F67nccsgGie4iJN2ekXFldcUthjy7Uk0Oo=;
 h=Date:From:Reply-To:To:Cc:In-Reply-To:References:Subject:List-ID:
 List-Archive:List-Post:List-Unsubscribe:From;
 b=ZXedunjweMZ/DER4/LZt1RSDkCMAkdvZfF80omgHaOsFOxWCm+LPAsfAc+Dqus1Tl
 gcVfK6z3o3wlChgaHoND4KLaoEUw+VJ9fxH5clAQGJ/sTR04yMG91vuDomA27BhGuc
 HJ6dAwgCNPqWyggIBRC94cQEe9FKRdLp0LY71NmM=
From: Bob Briscoe <notifications@github.com>
Reply-To: quicwg/base-drafts
 <reply+0166e4ab11301ab9b927d17a46ce3ab5579914fbc30df20992cf0000000117fa6bc992a169ce168acaf3@reply.github.com>
To: quicwg/base-drafts <base-drafts@noreply.github.com>
Cc: Subscribed <subscribed@noreply.github.com>
Message-ID: <quicwg/base-drafts/issues/1978/436552267@github.com>
In-Reply-To: <quicwg/base-drafts/issues/1978@github.com>
References: <quicwg/base-drafts/issues/1978@github.com>
Subject: Re: [quicwg/base-drafts] Sender-Controlled Delayed ACK Ratio (#1978)
Mime-Version: 1.0
Content-Type: multipart/alternative;
 boundary="--==_mimepart_5be2a9c916e2b_9683f922ccd45bc763795";
 charset=UTF-8
Content-Transfer-Encoding: 7bit
Precedence: list
X-GitHub-Sender: bbriscoe
X-GitHub-Recipient: quic-issues
X-GitHub-Reason: subscribed
X-Auto-Response-Suppress: All
X-GitHub-Recipient-Address: quic-issues@ietf.org
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic-issues/d-dWUwJjbl6bJh1_eOpGLGvBPQw>
X-BeenThere: quic-issues@ietf.org
X-Mailman-Version: 2.1.29
List-Id: Notification list for GitHub issues related to the QUIC WG
 <quic-issues.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/quic-issues>,
 <mailto:quic-issues-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/quic-issues/>
List-Post: <mailto:quic-issues@ietf.org>
List-Help: <mailto:quic-issues-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/quic-issues>,
 <mailto:quic-issues-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 07 Nov 2018 09:01:06 -0000


----==_mimepart_5be2a9c916e2b_9683f922ccd45bc763795
Content-Type: text/plain;
 charset=UTF-8
Content-Transfer-Encoding: 7bit

### Some scenarios where the sender's preferred ack_ratio changes through the connection:

1. A sender CC that wants the receiver to turn off DelAcks during flow-start (e.g. it's using hybrid slow-start as in Cubic and wants to get delay measurements more frequently) sets ack_exp=0 during flow-start (ack_ratio=1), then increases ack_exp during congestion avoidance. If it goes idle, then re-starts, it would set ack_exp=0 again. 

   Note on heuristics: A Linux TCP receiver currently uses a heuristic to determine when the sender has exited slow-start. However, heuristics ->  ossification. A Linux receiver's heuristic only works with the current pattern of slow-start. In TCP, when we tried to improve the pattern on the sender (paced chirping), the heuristic on the receiver killed us.

2. Imagine a paced sender has hardware generic receive offload (GRO), so for a long-running flow it doesn't want a high rate of QUIC ACKs that are opaque to GRO. Let's say it would prefer at least 8 ACKs per RTT. Again, it starts with ack_exp=0, but in congestion avoidance it would use:
> ack_ratio <= cwnd_in_packets/8

   So calculation of ack_ratio lends itself to fast integer arithmetic.

    Upshot: By remote controlling the receiver, the server offloads nearly all the ACKs from large downloads, but still focuses its ACK-receiving resources on getting each client up to speed.

-- 
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/1978#issuecomment-436552267
----==_mimepart_5be2a9c916e2b_9683f922ccd45bc763795
Content-Type: text/html;
 charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<h3>Some scenarios where the sender's preferred ack_ratio changes through=
 the connection:</h3>
<ol>
<li>
<p>A sender CC that wants the receiver to turn off DelAcks during flow-st=
art (e.g. it's using hybrid slow-start as in Cubic and wants to get delay=
 measurements more frequently) sets ack_exp=3D0 during flow-start (ack_ra=
tio=3D1), then increases ack_exp during congestion avoidance. If it goes =
idle, then re-starts, it would set ack_exp=3D0 again.</p>
<p>Note on heuristics: A Linux TCP receiver currently uses a heuristic to=
 determine when the sender has exited slow-start. However, heuristics -&g=
t;  ossification. A Linux receiver's heuristic only works with the curren=
t pattern of slow-start. In TCP, when we tried to improve the pattern on =
the sender (paced chirping), the heuristic on the receiver killed us.</p>=

</li>
<li>
<p>Imagine a paced sender has hardware generic receive offload (GRO), so =
for a long-running flow it doesn't want a high rate of QUIC ACKs that are=
 opaque to GRO. Let's say it would prefer at least 8 ACKs per RTT. Again,=
 it starts with ack_exp=3D0, but in congestion avoidance it would use:</p=
>
</li>
</ol>
<blockquote>
<p>ack_ratio &lt;=3D cwnd_in_packets/8</p>
</blockquote>
<p>So calculation of ack_ratio lends itself to fast integer arithmetic.</=
p>
<pre><code>Upshot: By remote controlling the receiver, the server offload=
s nearly all the ACKs from large downloads, but still focuses its ACK-rec=
eiving resources on getting each client up to speed.
</code></pre>

<p style=3D"font-size:small;-webkit-text-size-adjust:none;color:#666;">&m=
dash;<br />You are receiving this because you are subscribed to this thre=
ad.<br />Reply to this email directly, <a href=3D"https://github.com/quic=
wg/base-drafts/issues/1978#issuecomment-436552267">view it on GitHub</a>,=
 or <a href=3D"https://github.com/notifications/unsubscribe-auth/AWbkq8CD=
2FSSSVYqzwYXDcaIbz_5lMkcks5usqFJgaJpZM4YSA-X">mute the thread</a>.<img sr=
c=3D"https://github.com/notifications/beacon/AWbkq70LQN1vdLuJ1xOZ_ofbqxjO=
JaSCks5usqFJgaJpZM4YSA-X.gif" height=3D"1" width=3D"1" alt=3D"" /></p>
<script type=3D"application/json" data-scope=3D"inboxmarkup">{"api_versio=
n":"1.0","publisher":{"api_key":"05dde50f1d1a384dd78767c55493e4bb","name"=
:"GitHub"},"entity":{"external_key":"github/quicwg/base-drafts","title":"=
quicwg/base-drafts","subtitle":"GitHub repository","main_image_url":"http=
s://assets-cdn.github.com/images/email/message_cards/header.png","avatar_=
image_url":"https://assets-cdn.github.com/images/email/message_cards/avat=
ar.png","action":{"name":"Open in GitHub","url":"https://github.com/quicw=
g/base-drafts"}},"updates":{"snippets":[{"icon":"PERSON","message":"@bbri=
scoe in #1978: ### Some scenarios where the sender's preferred ack_ratio =
changes through the connection:\r\n\r\n1. A sender CC that wants the rece=
iver to turn off DelAcks during flow-start (e.g. it's using hybrid slow-s=
tart as in Cubic and wants to get delay measurements more frequently) set=
s ack_exp=3D0 during flow-start (ack_ratio=3D1), then increases ack_exp d=
uring congestion avoidance. If it goes idle, then re-starts, it would set=
 ack_exp=3D0 again. \r\n\r\n   Note on heuristics: A Linux TCP receiver c=
urrently uses a heuristic to determine when the sender has exited slow-st=
art. However, heuristics -\u003e  ossification. A Linux receiver's heuris=
tic only works with the current pattern of slow-start. In TCP, when we tr=
ied to improve the pattern on the sender (paced chirping), the heuristic =
on the receiver killed us.\r\n\r\n2. Imagine a paced sender has hardware =
generic receive offload (GRO), so for a long-running flow it doesn't want=
 a high rate of QUIC ACKs that are opaque to GRO. Let's say it would pref=
er at least 8 ACKs per RTT. Again, it starts with ack_exp=3D0, but in con=
gestion avoidance it would use:\r\n\u003e ack_ratio \u003c=3D cwnd_in_pac=
kets/8\r\n\r\n   So calculation of ack_ratio lends itself to fast integer=
 arithmetic.\r\n\r\n    Upshot: By remote controlling the receiver, the s=
erver offloads nearly all the ACKs from large downloads, but still focuse=
s its ACK-receiving resources on getting each client up to speed."}],"act=
ion":{"name":"View Issue","url":"https://github.com/quicwg/base-drafts/is=
sues/1978#issuecomment-436552267"}}}</script>
<script type=3D"application/ld+json">[
{
"@context": "http://schema.org",
"@type": "EmailMessage",
"potentialAction": {
"@type": "ViewAction",
"target": "https://github.com/quicwg/base-drafts/issues/1978#issuecomment=
-436552267",
"url": "https://github.com/quicwg/base-drafts/issues/1978#issuecomment-43=
6552267",
"name": "View Issue"
},
"description": "View this Issue on GitHub",
"publisher": {
"@type": "Organization",
"name": "GitHub",
"url": "https://github.com"
}
},
{
"@type": "MessageCard",
"@context": "http://schema.org/extensions",
"hideOriginalBody": "false",
"originator": "AF6C5A86-E920-430C-9C59-A73278B5EFEB",
"title": "Re: [quicwg/base-drafts] Sender-Controlled Delayed ACK Ratio (#=
1978)",
"sections": [
{
"text": "",
"activityTitle": "**Bob Briscoe**",
"activityImage": "https://assets-cdn.github.com/images/email/message_card=
s/avatar.png",
"activitySubtitle": "@bbriscoe",
"facts": [

]
}
],
"potentialAction": [
{
"name": "Add a comment",
"@type": "ActionCard",
"inputs": [
{
"isMultiLine": true,
"@type": "TextInput",
"id": "IssueComment",
"isRequired": false
}
],
"actions": [
{
"name": "Comment",
"@type": "HttpPOST",
"target": "https://api.github.com",
"body": "{\n\"commandName\": \"IssueComment\",\n\"repositoryFullName\": \=
"quicwg/base-drafts\",\n\"issueId\": 1978,\n\"IssueComment\": \"{{IssueCo=
mment.value}}\"\n}"
}
]
},
{
"name": "Close issue",
"@type": "HttpPOST",
"target": "https://api.github.com",
"body": "{\n\"commandName\": \"IssueClose\",\n\"repositoryFullName\": \"q=
uicwg/base-drafts\",\n\"issueId\": 1978\n}"
},
{
"targets": [
{
"os": "default",
"uri": "https://github.com/quicwg/base-drafts/issues/1978#issuecomment-43=
6552267"
}
],
"@type": "OpenUri",
"name": "View on GitHub"
},
{
"name": "Unsubscribe",
"@type": "HttpPOST",
"target": "https://api.github.com",
"body": "{\n\"commandName\": \"MuteNotification\",\n\"threadId\": 4073757=
67\n}"
}
],
"themeColor": "26292E"
}
]</script>=

----==_mimepart_5be2a9c916e2b_9683f922ccd45bc763795--

