On Sun, 5 Nov 2023 at 15:32, Gorry Fairhurst <[email protected]> wrote:
On 05/11/2023 10:04, Marten Seemann wrote:
In the design of RFC 9000, frames are used to communicate
information between two endpoints. This is not what the BDP_FRAME
frame does: It's only saved by the client and echoed back to the
server on a later connection. It is questionable to me if the
client’s ability to inspect (but not modify) the contents of the
frame provides a lot of value: Congestion controllers are
inherently endpoint-specific, and (for example) reusing the
parameters of an L4S CC with a Cubic CC, and vice versa, doesn't
sound like a good idea.
That's not what the ID says.
On different CC's: the set of parameters exchanged are fairly
generic, and I think it's very likely a client will use the same
CC to talk to the same server when it next resumes a session, so I
am unsure i share the concern about different CCs.
Section 1.2 of the ID speaks about the possibility to share the
infromation with the application... which might be important to
tuning the use of the token (choosing which connection ought to
use the Careful-Resume), and ensuring appropriate polices are used
for flow-credit, choosing content encoding appropriate to rate, etc.
As Kazuho pointed out, RFC 9000 already contains the concept of a
resumption token.
I'd like to understand more what that is.
Tokens are opaque, so servers can encode whatever information
they want into the token. Resumption tokens are used to validate
the client’s IP address, so they’re inherently bound to the path.
This is pretty much exactly the property that you’d want for
resuming CC parameters. Apart from that, using tokens has
multiple other advantages as well:
1. We don’t need interoperability between implementations here.
The client is resuming the connection with the same server (or a
different server in the same deployment), so it doesn’t matter
how the information is encoded.
I like that.
2. Depending on their CC, servers might want to encode a
different set of parameters. This is possible when using a token,
whereas the BDP_FRAME frame limits us to the few fields defined
in the draft.
Good - but I do expect that a BDP_FRAME could be made extensible.
3. The BDP_FRAME frame can only be sent in 0-RTT packets (if I
understand correctly, I'm very confused by the phrasing of
section 4), so it can’t be used for non-0-RTT session resumption.
I think that depends a little on how we decide to finally
transport the parms - we're open to changing this.
4. Obviously, using the token doesn’t require clients to be aware
that this is going on, so it will work with every QUIC stack
without any modification.
Yes, that's nice also.
Best wishes,
Gorry
On Sun, 5 Nov 2023 at 11:14, Kazuho Oku <[email protected]> wrote:
2023年11月4日(土) 15:44 <[email protected]>:
BDP frame is about QUIC transport (RFC9000) resumption.
IMO, it does not have dependencies on RFC9001.
I think I tend to agree with Lucas modulo the point that it
would make more sense to store BDP information in tokens
issued by the QUIC servers[1] than the TLS session ticket.
Tokens are defined in RFC 9000. The only use case being
mandated at the moment is address validation but it is
designed so that it can hold arbitrary data. Tokens can hold
BDP information as well.
1: https://datatracker.ietf.org/doc/html/rfc9000#frame-new-token
Orange Restricted
*De :* Gorry Fairhurst <[email protected]>
*Envoyé :* samedi 4 novembre 2023 14:45
*À :* STEPHAN Emile INNOV/NET <[email protected]>;
Nicolas Kuhn <[email protected]>; [email protected]
*Objet :* Re: Authentication in
draft-kuhn-quic-bdpframe-extension
On 04/11/2023 13:28, [email protected] wrote:
Hi
IMO, we are speaking of QUIC resumption not TLS.
Regards
Emile
I think QUIC CC resumption could be a part of TLS
resumption. Are there also cases where these could be
different things?
Gorry
*De :* QUIC <[email protected]>
<mailto:[email protected]> *De la part de*
Nicolas Kuhn
*Envoyé :* samedi 4 novembre 2023 12:43
*À :* [email protected]
*Objet :* Re: Authentication in
draft-kuhn-quic-bdpframe-extension
Dear all,
Thank you for your interest in this work !
I would tend to agree with Lucas and think we should
consider scenarios where BDP frames would be used
with TLS resumption and I do not see the need for
proposing another trust mechanism; But there may be
scenarios I do not see ?
More comments inline.
Kind regards,
Nico
On 11/3/23 16:44, Lucas Pardue wrote:
Hi folks,
I'm still trying to come up to speed on this
spec. But when I've thought about it a little,
its seemed very natural to associate the BDP
frame (contents) with the TLS session. We already
have a lot of text about TLS session resumption
in QUIC. It feels like there is already a
template design with HTTP/3 - a server sends
SETTINGS to tell a client something unique about
the active QUIC connection. RFC 9114 section
7.2.4.2 [1]states
> When a 0-RTT QUIC connection is being used, the
initial value of each server setting is the value
used in the previous session. Clients
*SHOULD* store the settings the server provided
in the HTTP/3 connection where resumption
information was provided, but they *MAY* opt not
to store settings in certain cases (e.g., if the
session ticket is received before the SETTINGS
frame). A client *MUST* comply with stored
settings -- or default values if no values are
stored -- when attempting 0-RTT. Once a server
has provided new settings, clients *MUST* comply
with those values.¶
<https://www.rfc-editor.org/rfc/rfc9114.html#section-7.2.4.2-6>
So with a bit of massaging, if we can link BDP
frame to session resumption. we know that it is
based on a previous trust relationship.
Is there any scenario where BDP frame would want
to be used without TLS resumption?
[NK] I agree.
Cheers
Lucas
[1] -
https://www.rfc-editor.org/rfc/rfc9114.html#section-7.2.4.2-6
On Thu, Nov 2, 2023 at 6:17 PM Gorry Fairhurst
<[email protected]> wrote:
On 02/11/2023 16:43, Q Misell wrote:
Hi all,
I've been working with Gorry (and others)
on actually implementing the BDP frame
extension, and further refining the draft
based on experience from implementation.
Q, I think I can help a little, see below,
but I think there are good questions here.
[NK] If the draft is not clear enough on these
relevant questions, we ought to make things clearer.
One thing that came up that I'd like to
ask the WG's opinion on is that of
authentication of the BDP frame, and when
it should be sent in the exchange. I've
had a few thoughts on this, it'd be great
to hear what others think of them, or
what other suggestions people might have.
First, my thoughts on authentication. Do
the CC parameters need to be
authenticated at all? I would say "yes"
as a client sending some unauthenticated
CC parameters could cause a DoS of the
server (or any other node along the path)
by trying to send far too much data at once.
The reason for the secure hash around the
contents of the BDP Frame is to allow a
server to know the CC params had not been
modified. Of course you caould ask what sort
of information contributes to that hash, to
make the server confident that it can accept
CC params from the client and believe that
these have not been modifed? That could be
important?
[NK] The client should not be able to transmit
unauthenticated CC parameters that are not checked /
known by the server. In the current spec, the client
can only send data previously received by the server.
Malicious clients could try to cause a DoS on the
server but that would not be specific to BDP Frame
but to 0-RTT in general.
Should the CC parameters be encrypted?
Probably not, as a client which is aware
of a major decrease in available
capacity could compare the new link
capacity to its stored CC parameters and
decide not to send them. If they're
encrypted the client can't inspect what
CC parameters the server thinks the link
will have.
Perhaps the ID ought to be clearer. The QUIC
Session is of course encrypted and
authenticated, so, in this respect, the BDP
Frame is protected in transit along the path
using TLS.
The current proposal is not to additionally
encrypt the CC params *within* the BDP, so
that a client could read these and utlise as
it sees fit. This still needs to authenticate
the entire set of params, so that the server
could trust them.
The params include an endpoint token used by
a server to represent the remote endpoint -
we could have used the client IP source
address for this if the client had an
invariant public IP source address. That's
not so common with IPv6 or the use of IPv4
NAPT - so the server has to find a way to
represent it's view of the client as the
endpoint token. There could be possibilities
to do this quite differently.
How should they be authenticated? There
are a few options I can see here, and I'm
unsure which is best:
(1) Authenticated with the TLS certificate
(2) Authenticated with some other
asymmetric key
(3) Authenticated using some
symmetric key known only to the server
(4) Same as 3 but with a key identifier
Options 1 and 2 allow the client to
verify the authentication over the CC
parameters, but this doesn't seem to be
of much use to me. Option 1 additionally
sets a time limit on use of stored CC
parameters, as the TLS certificate will
eventually expire. This doesn't seem to
me to be much of an issue. A new
connection far into the future (say 1-2
months) would almost certainly have
different CC parameters anyway.
Option 3 seems the best to me. It would
allow one key to be shared across an
array of anycast servers, without sharing
other keying material that might be used
to protect more sensitive parts of the
connection. Option 4 additionally expands
on this by allowing key rotation without
immediately invalidating all current
stored CC parameters.
So, if this is about how to construct the
secure hash, irt seems like an interesting
topic to find out more, I'd agree.
[NK] We may not specify how to compute the secure
hash but that could be interesting discussions if you
think the draft needs to be more specific on this.
IMHO the client does not need to know how the secure
hash is compute and thus not sure we need
interoperability.
When should the BDP frame be sent? There
are two places I can see BDP frames being
useful to send:
(1) After initial frames but before
crypto frames
(2) After crypto frames and before
application data
Option 1 allows for the previously
calculated CC parameters to be used for
the sometimes quite large TLS handshake,
but also precludes options 1 and 2 for
authentication. Option 2 allows for
greater flexibility in authentication,
and also makes the BDP frame encrypted in
transit. I'm unsure what the privacy
implications of an unencrypted BDP frame
are, so if anyone can come up with a
reason CC data shouldn't be observable to
an intermediary that would be greatly
appreciated.
:-)
[NK] Do we need to specify this in the draft or
should this be let to implementers to define the most
relevant approach (w.r.t. frame scheduling to format
QUIC packets).
Looking forward to hearing your thoughts.
[NK] Thank you for your comments !
Cheers,
Q Misell
Gorry
------------------------------------------------------------------------
Any statements contained in this email
are personal to the author and are not
necessarily the statements of the company
unless specifically stated. AS207960
Cyfyngedig, having a registered office at
13 Pen-y-lan Terrace, Caerdydd, Cymru,
CF23 9EU, trading as Glauca Digital, is a
company registered in Wales under №
12417574
<https://find-and-update.company-information.service.gov.uk/company/12417574>,
LEI 875500FXNCJPAPF3PD10. ICO register №:
ZA782876
<https://ico.org.uk/ESDWebPages/Entry/ZA782876>.
UK VAT №: GB378323867. EU VAT №:
EU372013983. Turkish VAT №: 0861333524.
South Korean VAT №: 522-80-03080.
AS207960 Ewrop OÜ, having a registered
office at Lääne-Viru maakond, Tapa vald,
Porkuni küla, Lossi tn 1, 46001, trading
as Glauca Digital, is a company
registered in Estonia under № 16755226.
Estonian VAT №: EE102625532. Glauca
Digital and the Glauca logo are
registered trademarks in the UK, under №
UK00003718474 and № UK00003718468,
respectively.
____________________________________________________________________________________________________________
Ce message et ses pieces jointes peuvent contenir des
informations confidentielles ou privilegiees et ne doivent donc
pas etre diffuses, exploites ou copies sans autorisation. Si
vous avez recu ce message par erreur, veuillez le signaler
a l'expediteur et le detruire ainsi que les pieces jointes. Les
messages electroniques etant susceptibles d'alteration,
Orange decline toute responsabilite si ce message a ete altere,
deforme ou falsifie. Merci.
This message and its attachments may contain confidential or
privileged information that may be protected by law;
they should not be distributed, used or copied without
authorisation.
If you have received this email in error, please notify the
sender and delete this message and its attachments.
As emails may be altered, Orange is not liable for messages
that have been modified, changed or falsified.
Thank you.
____________________________________________________________________________________________________________
Ce message et ses pieces jointes peuvent contenir des informations
confidentielles ou privilegiees et ne doivent donc
pas etre diffuses, exploites ou copies sans autorisation. Si vous
avez recu ce message par erreur, veuillez le signaler
a l'expediteur et le detruire ainsi que les pieces jointes. Les
messages electroniques etant susceptibles d'alteration,
Orange decline toute responsabilite si ce message a ete altere,
deforme ou falsifie. Merci.
This message and its attachments may contain confidential or
privileged information that may be protected by law;
they should not be distributed, used or copied without
authorisation.
If you have received this email in error, please notify the sender
and delete this message and its attachments.
As emails may be altered, Orange is not liable for messages that
have been modified, changed or falsified.
Thank you.
--
Kazuho Oku