Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Proposal for adding ECN support to QUIC. #1372

Merged
merged 43 commits into from Jun 27, 2018
Merged
Changes from 1 commit
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
961d5d9
According to text in wiki. Some MD fixes to get right formating.
gloinul May 18, 2018
b50fe18
Modified proposed text to integrate better and take care of issues ar…
gloinul May 18, 2018
57278fe
Fixed a typo on anchor creation
gloinul May 21, 2018
44a70f8
According to text in wiki. Some MD fixes to get right formating.
gloinul May 18, 2018
afd15f2
Modified proposed text to integrate better and take care of issues ar…
gloinul May 18, 2018
da68127
Fixed a typo on anchor creation
gloinul May 21, 2018
a9755ce
Merge branch 'ecn' of https://github.com/gloinul/base-drafts into ecn
gloinul May 22, 2018
3a95c40
Clarified that ACK or ACK_ECN can be used for acknowledgment in hands…
gloinul May 22, 2018
12b1054
Added ECN intro paragraph. Various editorial improvements of ECN text.
gloinul May 22, 2018
bfe80d5
Fixed bullet list, Added parenthis around section refs.
gloinul May 22, 2018
88f76dc
Fixed indentation and formating
gloinul May 22, 2018
f14134f
Spelling fixed
gloinul May 22, 2018
71c2794
Rewrote the ECN check algorithm for connection migration to be robust.
gloinul May 24, 2018
2ff5ac9
Removed trailing spaces.
gloinul May 24, 2018
19d3b53
Fixed trailing spaces in recovery.
gloinul May 24, 2018
f71e933
Rewraped text in both recovery and transport. Added a new sub-section…
gloinul May 24, 2018
fc94546
Added textual description of ECN-CE indicating congestion events.
gloinul May 28, 2018
66505a3
Editorial fixes
martinthomson May 29, 2018
d525046
Merge pull request #1 from quicwg/ecn
gloinul May 29, 2018
28ef4c1
Editing some formulations. Rewraping more text
gloinul May 29, 2018
6dd9237
Fixed trailing spaces and remaining line length issues, I hope.
gloinul May 30, 2018
0bb5bad
Reflowing now saved
gloinul May 30, 2018
0f94847
Merge branch 'master' of https://github.com/quicwg/base-drafts into ecn
gloinul Jun 4, 2018
0e7d43b
Merge branch 'master' of https://github.com/quicwg/base-drafts into ecn
gloinul Jun 7, 2018
822aded
Changed so that additional ECN-CE marks are sent in immediate ACKs to…
gloinul Jun 7, 2018
345f593
Fixed lint issues
gloinul Jun 7, 2018
e60cc8f
Adding security consideration around ECN into transport.
gloinul Jun 8, 2018
fdf9df7
Reverting some rewrapping that are not necessary to reduce clutter.
gloinul Jun 12, 2018
ec97fd8
Addressing issues raised by Ian Sweet on 180611. Editorial improvemen…
gloinul Jun 12, 2018
bf30190
Clarifying that both cases are capability checks. Correcting a number…
gloinul Jun 12, 2018
60468a7
Fixed a too too much
gloinul Jun 12, 2018
f577c8e
Addressing Martin Thomson's comments. Several editorial changes. The …
gloinul Jun 13, 2018
2d76935
Added paragraph on dealing with persistent loss of acknowledgement of…
gloinul Jun 13, 2018
4af108c
Fixing typo in new paragraph.
gloinul Jun 13, 2018
55fa3d6
Merge branch 'master' of https://github.com/quicwg/base-drafts into ecn
gloinul Jun 18, 2018
e06a2a0
Added requirement on ECN marking suppression for packet duplicates.
gloinul Jun 18, 2018
1636ebc
Clarifying that idefinite state are not requeired in duplication dete…
gloinul Jun 19, 2018
139f1ee
Martin Thomson's editorial suggestions. Restructured pseudo code sect…
gloinul Jun 19, 2018
dbfe4d8
partial editorial fixes
janaiyengar Jun 20, 2018
73bf8cb
Merge pull request #2 from janaiyengar/ecn
gloinul Jun 20, 2018
be91e8f
Moved the ECN block in the ACK prior to the ACK blocks themselves. Re…
gloinul Jun 21, 2018
f8d3d5c
Merge branch 'ecn' of https://github.com/gloinul/base-drafts into ecn
gloinul Jun 21, 2018
cf312f9
Merged ECN counters into single ACK frame section and move them befor…
gloinul Jun 25, 2018
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
40 changes: 11 additions & 29 deletions draft-ietf-quic-transport.md
Expand Up @@ -2971,7 +2971,7 @@ number of packets that were received with the corresponding ECN codepoint in the
IP header. If the header is not readable from the application, the codepoint 00
(Not-ECT) MUST be assumed. If any packet are duplicated by the network then only
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

s/packet/packets/

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

s/by the network/by the network,/

the value of the ECN field of the packet copy first received SHALL be included
in the counters. This to prevent the on-side attack ({{security-ecn}}) and
in the counters. This to prevent the on-the-side attack ({{security-ecn}}) and
ensure that ACK_ECN frames becomes idempotent in the event of packet
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

s/becomes/are/

duplication. Note, a receiver is not required to maintain indefinite state for
which packet numbers have been received far into the history. Packets discarded
Expand All @@ -2985,8 +2985,7 @@ had an IP header with the ECN field marked as Not-ECT.
The ACK_ECN frame is used by the receiver to echo the value of these counters
back to the sender of these packets. This allows the sender to utilize these
counter values for congestion control. The ACK_ECN frame contains all the
elements of the ACK frame ({{frame-ack}}) with the addition of an ECN block
appended at the end.
elements of the ACK frame ({{frame-ack}}) with the addition of the ECN counters.


~~~
Expand All @@ -2997,40 +2996,23 @@ appended at the end.
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ACK Delay (i) ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ACK Block Count (i) ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ECN Block ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ACK Blocks (*) ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~~~
{: #ACN_ECN_FRAME_FORMAT title="ACK_ECN Frame Format"}


### ECN Block {#ECN-Block}

The ECN block is described below. The size (i) indicates variable-length
encoding, explained in {{integer-encoding}}.

~~~
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ECT(0) Count (i) ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ECT(1) Count (i) ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ECN-CE Count (i) ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ACK Block Count (i) ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ACK Blocks (*) ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~~~
{: #ECN-BLOCK-FIG title="ECN Block"}


### ECN Counters
{: #ACN_ECN_FRAME_FORMAT title="ACK_ECN Frame Format"}

The receiver side report three ECN counters in the ECN block part of the ACK_ECN
frame. These counters counts the number of packets marked with this codepoint
since the start of the QUIC connection.
The receiver side report three ECN counters in the ACK_ECN frame. These counters
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

s/side //

counts the number of packets marked with this codepoint since the start of the
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

s/counts/count/

QUIC connection. The size (i) indicates variable-length encoding, explained in
{{integer-encoding}}.

ECT(0) Count:
: A variable-length integer representing the number of ECT(0) marked packets
Expand Down