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

Replace handshake with crypto #1859

Merged
merged 9 commits into from Oct 16, 2018
17 changes: 9 additions & 8 deletions draft-ietf-quic-recovery.md
Expand Up @@ -303,9 +303,10 @@ Retransmission Timeout mechanisms.

Data in CRYPTO frames is critical to QUIC transport and crypto negotiation, so a
more aggressive timeout is used to retransmit it. Below, the term "crypto
packet" is used to refer to packets containing CRYPTO frames.
packet" is used to refer to packets containing CRYPTO frames before the
handshake is complete.

The initial crypto timeout SHOULD be set to twice the initial RTT.
The initial crypto handshake timeout SHOULD be set to twice the initial RTT.
Copy link
Member

Choose a reason for hiding this comment

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

initial crypto retransmission timeout


At the beginning, there are no prior RTT samples within a connection. Resumed
connections over the same network SHOULD use the previous connection's final
Expand All @@ -318,8 +319,8 @@ When CRYPTO frames are sent, the sender SHOULD set a timer for the crypto
timeout period. Upon timeout, the sender MUST retransmit all unacknowledged
CRYPTO data by calling RetransmitAllUnackedCryptoData(). On each consecutive
expiration of the crypto timer without receiving an acknowledgement for a new
packet, the sender SHOULD double the crypto timeout and set a timer for this
period.
packet, the sender SHOULD double the crypto handshake timeout and set a timer
for this period.

When CRYPTO frames are outstanding, the TLP and RTO timers are not active unless
the CRYPTO frames were sent at 1-RTT encryption.
Copy link
Contributor

Choose a reason for hiding this comment

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

Now that you have a definition for "crypto packets" above which excludes 1-RTT, you could probably simplify this by saying that "When crypto packets are outstanding, the TLS and RTO timers are not active."

Copy link
Contributor

Choose a reason for hiding this comment

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

TLS->TLP (referring to Mike's comment)

Expand Down Expand Up @@ -766,7 +767,7 @@ below shows how the single timer is set.
#### Crypto Handshake Timer

When a connection has unacknowledged handshake data, the handshake timer is
Copy link
Contributor

Choose a reason for hiding this comment

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

"handshake data" -> "crypto handshake data"
"handshake timer" -> "crypto handshake timer"

set and when it expires, all unacknowledgedd CRYPTO data is retransmitted.
set and when it expires, all unacknowledged CRYPTO data is retransmitted.

When stateless rejects are in use, the connection is considered immediately
closed once a reject is sent, so no timer is set to retransmit the reject.
Expand Down Expand Up @@ -814,8 +815,8 @@ Pseudocode for SetLossDetectionTimer follows:
timeout = timeout * (2 ^ crypto_count)
loss_detection_timer.set(
time_of_last_sent_crypto_packet + timeout)
return;
else if (loss_time != 0):
return
if (loss_time != 0):
// Early retransmit timer or time loss detection.
timeout = loss_time -
time_of_last_sent_retransmittable_packet
Expand Down Expand Up @@ -846,7 +847,7 @@ Pseudocode for OnLossDetectionTimeout follows:
~~~
OnLossDetectionTimeout():
if (crypto packets are outstanding):
// Crypto timeout.
// Crypto handshake timeout.
RetransmitAllUnackedCryptoData()
crypto_count++
else if (loss_time != 0):
Expand Down