- From: Erik Nygren <erik@nygren.org>
- Date: Thu, 8 Aug 2019 21:55:51 -0400
- To: Daniel Stenberg <daniel@haxx.se>
- Cc: Bin Ni <nibin@quantil.com>, Jack Firth <jackhfirth@gmail.com>, Chris Lemmons <alficles@gmail.com>, Amos Jeffries <squid3@treenet.co.nz>, HTTP Working Group <ietf-http-wg@w3.org>
- Message-ID: <CAKC-DJi7Ua8atTCUUsYOkd25s9J5+v9Zw2K5yU+n=ACsHWCOgQ@mail.gmail.com>
On Thu, Aug 1, 2019 at 5:21 AM Daniel Stenberg <daniel@haxx.se> wrote:
>
> If we for a moment play with the idea that we'd do something like this,
> then I
> think it should be aligned with and work together with Alt-Svc in a better
> way
> than what is currently proposed..
>
Agreed that if we go down the Alt-Svc-like-road that this needs to play well
with Alt-Svc. A major difference is that Alt-Svc is scoped to Origins
(ie, all requests for that Origin are encouraged to use the Alt-Svc).
But in this case the scope is presumably for individual URLs.
If the client asks for a bunch of different objects it is possible
that each one of them might want to be directed to a different
alternative service, and some of these might be running in-parallel.
It seems like on the Alt-Svc route there are two design questions
that must be addressed:
1) How to signal client support
2) How to allow different alternative services to be used for different
URIs.
For #1, maybe there is a new request header?
"Accept-Redirect-to-Alternative" ?
For #2, maybe we allow for labeled alternatives? For example:
GET /abc/foo345678.mp4
Host: videos.example.com
HTTP/1.1 312 Redirect URI to Alternative
Alt-Svc: h2="cdn-node-98765.example.net:443"; ma=3600;
label="cdn-cluster-98765"
Alt-Svc: h3="cdn-node-98765.example.net:443"; ma=3600;
label="cdn-cluster-98765"
Alt-Svc-Location-for-URI: "cdn-cluster-98765"
In this case there would be an additional cache of Alt-Svcs keyed by
{origin,label}.
On receiving one of these redirects, a client supporting this synchronously
look for
a connection to an Alt-Svc keyed by {"https://videos.example.com
","cdn-cluster-98765"}
and then re-issue the request there (sending along the Alt-Used request
header as well
which would somehow want to include the label used.
Presumably other URIs for the origin would not use the labelled Alt-Svc
unless
specifically redirected.
Another way to handle #2 would be to allow Alt-Svc to be scoped to URI
patterns,
so the "synchronous redirect to alternative" could include a set of Alt-Svc
entries with: scope="/abc/*"
That said for the above, I think that something along the lines of an
out-of-band
encoding solves a bunch of these use-cases in a more flexible manner.
Alt-Svc requires the alternatives all have the same degree of trust.
Being able for an origin to say "get the bytes from this other URL but
use integrity-validation and decryption information provided as part
of this response" opens up many more use-cases.
Erik
Received on Friday, 9 August 2019 01:56:27 UTC