Subject: Informal meeting on blind caching

From: Martin Thomson <[email-masked]>
Date: Sun, 17 Jul 2016 19:03:13 +0200

We are having a meeting on blind caching on Tuesday 08:30 in
Charlottenburg I.  Folks who are interested are invited to join us.

Rough agenda is to discuss what this is, the status of specs and
implementations.  Then we are looking to get some input on the work
that has been done and what might need to happen next.

For those not familiar with this, the following drafts are recommended reading:
https://tools.ietf.org/html/draft-thomson-http-scd
https://tools.ietf.org/html/draft-thomson-http-bc
https://tools.ietf.org/html/draft-reschke-http-oob-encoding
https://tools.ietf.org/html/draft-thomson-http-mice
https://tools.ietf.org/html/draft-ietf-httpbis-encryption-encoding

---

From: Göran Eriksson AP <[email-masked]>
Date: Mon, 18 Jul 2016 11:47:28 +0000

>Charlottenburg I.  Folks who are interested are invited to join us.

Please note 08:30 AM, morning. Unfortunately, no beer and no bartender or
other refreshments. Sorry for that! Make sure to have a (big) breakfast
before...

Many Regards
Göran

---

From: Kevin Marks <[email-masked]>
Date: Mon, 18 Jul 2016 10:15:09 -0700

any remote attending/streaming options?

---

From: Göran Eriksson AP <[email-masked]>
Date: Mon, 18 Jul 2016 20:03:55 +0000

>any remote attending/streaming options?

Hi

Sorry but unfortunately this meeting came up a bit sudden and we haven’t
been able to arrange that.

But I hope this is not the last opportunity for discussing the subject.

I can see to that we take notes and share these on the list afterwards if
that is desired?

Best Regards
Göran

---

From: Göran Eriksson AP <[email-masked]>
Date: Tue, 19 Jul 2016 09:54:08 +0000

Hi,

Slides from the meeting in PDF format attached.

Drafts GitHub at: https://github.com/EricssonResearch/Blind-Cache-Drafts.

Notes to come (before Wednesday lunch, promise).

Regards
Göran

---

From: Richard Bradbury <[email-masked]>
Date: Wed, 27 Jul 2016 11:33:26 +0100

> https://tools.ietf.org/html/draft-ietf-httpbis-encryption-encoding

Hi. Thanks for an interesting session last week.

Based on my reading of the Internet Drafts I think these are the two 
main Use Cases under consideration here:

 1. *Blind caching in a CDN edge cache that is acting as a delegated
    origin server.*
      * Described in draft-thomson-http-scd.
      * Making use of the techniques described in
        draft-reschke-http-oob-encoding, draft-thomson-http-mice and
        draft-ietf-httpbis-encryption-encoding.
 2. *Blind caching in an explicitly configured proxy server.*
      * Described in draft-thomson-http-bc.
      * Making use of the techniques described in
        draft-reschke-http-oob-encoding, draft-thomson-http-mice and
        draft-ietf-httpbis-encryption-encoding.

The discussion in Berlin last Tuesday morning flowed fairly freely 
between the two Use Cases, so I just wanted to check my understanding. 
In particular, the I-D for the second Use Case doesn't have a sequence 
diagram, so I attach my best guess of how everything fits together and 
invite comments from the authors.

Finally, a basic question: For this to work, both the origin server and 
the proxy server need to support blind caching. So how does a User Agent 
discover whether both do? Through trial and error?

Regards,

-- 
Richard Bradbury | Lead Research Engineer
BBC Research & Development
Centre House, 56 Wood Lane, London  W12 7SB.
T: 0303 040 9672  F: 020 8811 8815

---

From: Martin Thomson <[email-masked]>
Date: Wed, 27 Jul 2016 13:11:18 +0200

Hi Richard,

Yes you have correctly understood the draft.

On 27 July 2016 at 12:33, Richard Bradbury
<[email-masked]> wrote:
> Finally, a basic question: For this to work, both the origin server and the
> proxy server need to support blind caching. So how does a User Agent

We use Accept-Encoding and a new header field to signal to the origin
server that the client is willing to do this.  The proxy is explicitly
configured and this capability could be part of that configuration,
but we could do something better than that.  Trial and error might
work, but again, a better plan would be to have explicit signaling.
Off the cuff, /.well-known/ might work.

---

From: Amos Jeffries <[email-masked]>
Date: Thu, 28 Jul 2016 00:49:41 +1200

On 27/07/2016 11:11 p.m., Martin Thomson wrote:
> On 27 July 2016 at 12:33, Richard Bradbury wrote:

As would a BC reply header in the initial CONNECT tunnel reply message
which is generated by the explicit proxy.

Amos

---

From: Richard Bradbury <[email-masked]>
Date: Thu, 28 Jul 2016 08:36:05 +0100

> which is generated by the explicit proxy.

Ah yes... A simple and neat idea. The proxy could verify that the origin 
at the far end of the TLS tunnel also supports out-of-band encoding 
before returning that |BC| response header, thereby killing two birds 
with one stone.

I have added this additional pre-flight negotiation to the attached 
sequence. You'll see that I have included |BC| and |Accept-encoding| 
request headers in the initial |CONNECT|. Is this necessary to initiate 
the negotiation? Or should the response just include |BC| regardless?

Thanks both,

---

From: Richard Bradbury <[email-masked]>
Date: Thu, 28 Jul 2016 10:07:26 +0100

> between the two Use Cases, so I just wanted to check my understanding.

OK. Now I feed I understand Use Case 2 better, I attach a couple of 
sequences describing my (incomplete) understanding of Use Case 1 above. 
The main question in my mind here is whether the resources are 
explicitly pushed into the CDN cache (what I have called "Mode P") or 
whether they are retrieved on demand from the origin server by the CDN 
only on cache miss ("Mode G").

Perhaps you are looking to support both modes of operation? The Internet 
Draft could usefully clarify this.

*Mode G*
    In the cache pull-through mode, there appears to be a requirement
    for the CDN to know the resource mapping in order to support the URL
    obfuscation feature. But that appears to negate one of the key
    benefits of the feature – keeping the mapping secret from the CDN
    provider. I'm clearly missing something here. Or maybe URL
    obfuscation just doesn't fly in this mode, which would be a shame
    since this is our primary mode of operation for some media types.
*Mode P*
    With the push mode, the resource mapping can remain secret to the
    origin server, which is great. But the mechanism for pushing content
    onto the CDN remains a bit of a mystery, so I have made an educated
    guess on my diagram. Perhaps you intend this mechanism to remain
    private? In which case, perhaps the Internet Draft could include a
    note to this effect?

Clarifications and comments gratefully received.

Regards,

---

From: Erik Nygren <[email-masked]>
Date: Thu, 28 Jul 2016 10:31:31 -0400

For the "Blind caching in a CDN edge cache that is acting as a delegated
origin server" scenario I think we'd be better off separating out the
high-level mechanism (ie, getting oob-encoding) right from the actual
business model and implementation details for how the caches get
populated.  The former is something we can tractably do here (have a way to
delegate content bodies out to third-parties) but the latter is something
that could easily fill up its own working group to get all of the details
worked through.

I also think that we shouldn't refer to "CDN" in this scenario as much as
referring to delegating between a server acting as an authoritative origin
and a collection of servers at a lower trust level.  (In some deployment
scenarios, the former might be a CDN and the latter might be either a
different trust tier of CDN nodes or federated-but-less-trusted partners.)

The specific blind caching with a configured proxy cache is a well-defined
use-case, but the others have many different ways to implement that trying
to standardize something now before there has been more experience with
implementations and business models seems like asking for trouble (and is
something that some of us may be less interested in than in defining common
underlying mechanisms and affordances to allow developing technologies in
this area).

        Erik

On Thu, Jul 28, 2016 at 5:07 AM, Richard Bradbury <
[email-masked]> wrote:

> For those not familiar with this, the following drafts are recommended reading:https://tools.ietf.org/html/draft-thomson-http-scdhttps://tools.ietf.org/html/draft-thomson-http-bchttps://tools.ietf.org/html/draft-reschke-http-oob-encodinghttps://tools.ietf.org/html/draft-thomson-http-micehttps://tools.ietf.org/html/draft-ietf-httpbis-encryption-encoding
>
>
> Based on my reading of the Internet Drafts I think these are the two main
> Use Cases under consideration here:
>
>       - Described in draft-thomson-http-scd.
>       - Making use of the techniques described in
>       - Described in draft-thomson-http-bc.
>       - Making use of the techniques described in
> The discussion in Berlin last Tuesday morning flowed fairly freely between
> the two Use Cases, so I just wanted to check my understanding.
>
>
> sequences describing my (incomplete) understanding of Use Case 1 above. The
> main question in my mind here is whether the resources are explicitly
> pushed into the CDN cache (what I have called "Mode P") or whether they are
> retrieved on demand from the origin server by the CDN only on cache miss
> ("Mode G").
>
> *Mode G* In the cache pull-through mode, there appears to be a
> requirement for the CDN to know the resource mapping in order to support
> the URL obfuscation feature. But that appears to negate one of the key
> benefits of the feature – keeping the mapping secret from the CDN provider.
> I'm clearly missing something here. Or maybe URL obfuscation just doesn't
> fly in this mode, which would be a shame since this is our primary mode of
> operation for some media types.
> *Mode P* With the push mode, the resource mapping can remain secret to
> the origin server, which is great. But the mechanism for pushing content
> onto the CDN remains a bit of a mystery, so I have made an educated guess
> on my diagram. Perhaps you intend this mechanism to remain private? In
> which case, perhaps the Internet Draft could include a note to this effect?
>

---

From: Göran Eriksson AP <[email-masked]>
Date: Thu, 28 Jul 2016 19:59:36 +0000

On 28/07/16 16:31, "[email-masked]<mailto:[email-masked]> on behalf of Erik Nygren" <[email-masked]<mailto:[email-masked]> on behalf of [email-masked]<mailto:[email-masked]>> wrote:

I also think that we shouldn't refer to "CDN" in this scenario as much as referring to delegating between a server acting as an authoritative origin and a collection of servers at a lower trust level.  (In some deployment scenarios, the former might be a CDN and the latter might be either a different trust tier of CDN nodes or federated-but-less-trusted partners.)

+1. We should not restrict the discussions (or mechanisms) to existing CDN deployments- using CDN's as concrete examples can be useful but we must not limit the discussion to these cases.

For instance, the case when the same actor is running the origin (primary) as well as the secondary server but on someone else site and/or could platform are also relevant.

The specific blind caching with a configured proxy cache is a well-defined use-case, but the others have many different ways to implement that trying to standardize something now before there has been more experience with implementations and business models seems like asking for trouble (and is something that some of us may be less interested in than in defining common underlying mechanisms and affordances to allow developing technologies in this area).

Agreed. Getting the basic HTTP mechanisms in place should be the initial focus. But discussing different use cases may be useful when identifying requirements on the various mechanisms.

Regards
Göran