draft-ietf-tls-ticketrequests-06.txt   draft-ietf-tls-ticketrequests-07.txt 
Network Working Group T. Pauly Network Working Group T. Pauly
Internet-Draft Apple Inc. Internet-Draft Apple Inc.
Intended status: Standards Track D. Schinazi Intended status: Standards Track D. Schinazi
Expires: 23 May 2021 Google LLC Expires: 6 June 2021 Google LLC
C.A. Wood C.A. Wood
Cloudflare Cloudflare
19 November 2020 3 December 2020
TLS Ticket Requests TLS Ticket Requests
draft-ietf-tls-ticketrequests-06 draft-ietf-tls-ticketrequests-07
Abstract Abstract
TLS session tickets enable stateless connection resumption for TLS session tickets enable stateless connection resumption for
clients without server-side, per-client, state. Servers vend an clients without server-side, per-client, state. Servers vend an
arbitrary number of session tickets to clients, at their discretion, arbitrary number of session tickets to clients, at their discretion,
upon connection establishment. Clients store and use tickets when upon connection establishment. Clients store and use tickets when
resuming future connections. This document describes a mechanism by resuming future connections. This document describes a mechanism by
which clients can specify the desired number of tickets needed for which clients can specify the desired number of tickets needed for
future connections. This extension aims to provide a means for future connections. This extension aims to provide a means for
skipping to change at page 1, line 49 skipping to change at page 1, line 49
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/. Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on 23 May 2021. This Internet-Draft will expire on 6 June 2021.
Copyright Notice Copyright Notice
Copyright (c) 2020 IETF Trust and the persons identified as the Copyright (c) 2020 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents (https://trustee.ietf.org/ Provisions Relating to IETF Documents (https://trustee.ietf.org/
license-info) in effect on the date of publication of this document. license-info) in effect on the date of publication of this document.
Please review these documents carefully, as they describe your rights Please review these documents carefully, as they describe your rights
skipping to change at page 3, line 41 skipping to change at page 3, line 41
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in "OPTIONAL" in this document are to be interpreted as described in
[RFC2119] [RFC8174] when, and only when, they appear in all capitals, [RFC2119] [RFC8174] when, and only when, they appear in all capitals,
as shown here. as shown here.
2. Use Cases 2. Use Cases
The ability to request one or more tickets is useful for a variety of The ability to request one or more tickets is useful for a variety of
purposes: purposes:
* Parallel HTTP connections: To minimize ticket reuse while still * Parallel HTTP connections: To improve performance, a client may
improving performance, it may be useful to use multiple, distinct open parallel connections. To avoid ticket reuse, the client may
tickets when opening parallel connections. Clients must therefore use distinct tickets on each connection. Clients must therefore
bound the number of parallel connections they initiate by the bound the number of parallel connections they initiate by the
number of tickets in their possession, or risk ticket re-use. number of tickets in their possession, or risk ticket re-use.
* Connection racing: Happy Eyeballs V2 [RFC8305] describes * Connection racing: Happy Eyeballs V2 [RFC8305] describes
techniques for performing connection racing. The Transport techniques for performing connection racing. The Transport
Services Architecture implementation from [TAPS] also describes Services Architecture implementation from [TAPS] also describes
how connections can race across interfaces and address families. how connections can race across interfaces and address families.
In such cases, clients may use more than one ticket while racing In such cases, clients may use more than one ticket while racing
connection attempts in order to establish one successful connection attempts in order to establish one successful
connection. Having multiple tickets equips clients with enough connection. Having multiple tickets equips clients with enough
skipping to change at page 4, line 21 skipping to change at page 4, line 21
* Less ticket waste: Currently, TLS servers use application- * Less ticket waste: Currently, TLS servers use application-
specific, and often implementation-specific, logic to determine specific, and often implementation-specific, logic to determine
how many tickets to issue. By moving the burden of ticket count how many tickets to issue. By moving the burden of ticket count
to clients, servers do not generate wasteful tickets. As an to clients, servers do not generate wasteful tickets. As an
example, clients might only request one ticket during resumption. example, clients might only request one ticket during resumption.
Moreover, as ticket generation might involve expensive Moreover, as ticket generation might involve expensive
computation, e.g., public key cryptographic operations, avoiding computation, e.g., public key cryptographic operations, avoiding
waste is desirable. waste is desirable.
* Decline resumption: Clients can indicate they have no intention of * Decline resumption: Clients can indicate they do not intend to
resuming connections by sending a ticket request with count of resume a connection by sending a ticket request with count of
zero. zero.
3. Ticket Requests 3. Ticket Requests
As discussed in Section 1, clients may want different numbers of As discussed in Section 1, clients may want different numbers of
tickets for new or resumed connections. Clients may indicate to tickets for new or resumed connections. Clients may indicate to
servers their desired number of tickets to receive on a single servers their desired number of tickets to receive on a single
connection, in the case of a new or resumed connection, via the connection, in the case of a new or resumed connection, via the
following "ticket_request" extension: following "ticket_request" extension:
skipping to change at page 4, line 45 skipping to change at page 4, line 45
} ExtensionType; } ExtensionType;
Clients MAY send this extension in ClientHello. It contains the Clients MAY send this extension in ClientHello. It contains the
following structure: following structure:
struct { struct {
uint8 new_session_count; uint8 new_session_count;
uint8 resumption_count; uint8 resumption_count;
} ClientTicketRequest; } ClientTicketRequest;
new_session_count The number of tickets desired by the client when new_session_count The number of tickets desired by the client if the
the server chooses to negotiate a new connection. server chooses to negotiate a new connection.
resumption_count The number of tickets desired by the client when resumption_count The number of tickets desired by the client if the
the server is willing to resume using a ticket presented in this server is willing to resume using a ticket presented in this
ClientHello. ClientHello.
A client starting a new connection SHOULD set new_session_count to A client starting a new connection SHOULD set new_session_count to
the desired number of session tickets and resumption_count to 0. the desired number of session tickets and resumption_count to 0.
Once a client's ticket cache is primed, a resumption_count of 1 is a Once a client's ticket cache is primed, a resumption_count of 1 is a
good choice that allows the server to replace each ticket with a new good choice that allows the server to replace each ticket with a new
ticket, without over-provisioning the client with excess tickets. ticket, without over-provisioning the client with excess tickets.
However, clients which race multiple connections and place a separate However, clients which race multiple connections and place a separate
ticket in each will ultimately end up with just the tickets from a ticket in each will ultimately end up with just the tickets from a
single resumed session. In that case, clients can send a single resumed session. In that case, clients can send a
resumption_count equal to the number of sessions they are attempting resumption_count equal to the number of connections they are
in parallel. (Clients which send a resumption_count less than the attempting in parallel. (Clients which send a resumption_count less
number of parallel connection attempts might end up with zero than the number of parallel connection attempts might end up with
tickets.) zero tickets.)
When a client presenting a previously obtained ticket finds that the When a client presenting a previously obtained ticket finds that the
server nevertheless negotiates a new connection, the client SHOULD server nevertheless negotiates a new connection, the client SHOULD
assume that any other tickets associated with the same session as the assume that any other tickets associated with the same session as the
presented ticket are also no longer valid for resumption. This presented ticket are also no longer valid for resumption. This
includes tickets obtained during the initial (new) connection and all includes tickets obtained during the initial (new) connection and all
tickets subsequently obtained as part of subsequent resumptions. tickets subsequently obtained as part of subsequent resumptions.
Requesting more than one ticket in cases when servers complete a new Requesting more than one ticket in cases when servers complete a new
connection helps keep the session cache primed. connection helps keep the session cache primed.
 End of changes. 9 change blocks. 
17 lines changed or deleted 17 lines changed or added

This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/