Minutes of the PTTH BoF at IETF 123.
Welcome to the PoTaToH BOF. (PTTH)
This is a non WG forming BOF.
Discussions from 2009 to now in various forums until AD suggested BoF.
In the traditional client-server communication model, the client
initiates a handshake to establish communication (often complicated by
NATs, firewalls, etc.). then HTTP can be sued bidirectionally. This
topic is reversing this: the server initiates communication with the
client.
Terminology: to dedup "client" and "server" uses, let's use "worker" to
describe the node processing the HTTP request.
Use cases
load balancing / dynamic scaling
prioritization
limiting concurrency of heavy requests
standardization
HTTP Workshop 2024, multiple server vendors expressed interest.
How are PTTH workers supposed to auth themselves? workers to each other
is an internal matter, no longer dependent on PKI
Erum Welling: sense of the increased load coming from the worker to the
CDN? Where are you seeing the overhead?
Martin Seemann: isn't it bad to have bespoke auth between workers?
Should use TLS certs or similar standard
Emile Stephan: what are these servers? they are the same as the workers?
Harald Slvestrand: when the request hits the CDN, it then immediately
goes to the worker, but later you said there was a queue before workers.
Which is it?
Cullen Jennings has to step out - Emily Heron taking over as back up
note taker
Control of proxying process through reverse HTTP
Currently, we assume reverse proxy that forward to origin with load
balancer. In this setup, the origin does not have control over reverse
proxy config.
Alternatively, when the origin is now a PTTH worker connecting to proxy,
it can push per-connection config. Proxy still forwards requests but
with worker input.
Potential configs:
connection draining (graceful shutdown, "stop sending requests and
drain current ones")
All of this is currently possible, but has to be manually configured in
a non-standardized way. This doesn't completely eliminate proxy config,
but reduces a lot.
Erum Welling: now you're pushing config privileges to workers (change to
security model). We need to really think about how this can be abused.
For example, insider threat would mean the worker cannot be trusted.
Ted Hardie: two possibilities: (1) PTTH setting up connection with
config protocols, (2) using HTTP mecahnisms to control the proxy (not a
PTTH side channel).
Reverse HTTP: use cases and missing functionality
At Meta, we maintain some one-off deployments that are separate from
corp environment with L3 connectivity between them, firewall holes only
for what the one-off deployments need. My team operate L7 tunnels to use
HTTP as a substrate for arbitrary TCP/UDP sues cases such as SSH. This
involves a client on the device and internet-facing service. This is
cumbersome doing for every deployment.
Better alternative: have a reflector open to the Internet, but the
one-off deployment now does the connecting to the reflector (reverse
HTTP). Reflector subsumes the role of DNS, BGP, etc. with a direct link.
Workarounds:
Idealized protocol would
Marius Kleidl: do you have real-world deployment of the L7 example you
gave?
Reverse HTTP for CONNECT
In traditional VPNs, client contains to concentrator, gets IP address,
and establishes bidirectional communication. Lots of options (IKEv2,
CONNECT-IP, WG, etc.)
In ZTNA architecture (Zero Trust Network Access), client and worker both
connect to proxy to carry L4 traffic.
for proxy -> client, we have RDP, SSH, etc. for remote assist that
require config today that server initiating would solve
Desired properties
Kazuho: do you mean the same HTTP connection for regular and reverse
flows? or one for each direction?
PTTH
Cloudflare has both CDN / reverse proxy and the ZTNA (ZT SASE) use cases
in production today.
Cloudflare product: Cloudflare Tunnel (connects servers of HTTP and
other protocols safely to Cloudflare). Cloudflared service running
locally on customer server that connects upstream to Cloudflare, with
customer service connecting locally. We label this "worker" and suddenly
it looks a lot like PTTH.
(no questions)
Ted Hardie: thank you, all valuable use cases. There are two very
different scopes: (1) we want transport initiator and make it the HTTP
server (the CDNI use cases look like a previous draft with added
signaling), and (2) the ZT scope and HTTP substrate, which begs the
question "what is the waste of the Internet"? Some of your use cases
have nothing to do with HTTP and we have to recognize people will use
this as their own substrate for other things over HTTP. When writing a
charter in the future, you need to define this scope carefully (huge gap
between work needed for these scopes)
Martin Thompson: +1 to Ted, easiest to focus on the CDN use case.
Unfortunately, that would give everything else for free (looking at
Lucas' presentation) whether intended or not because people will use the
established HTTP themselves for everything, whether we solve the problem
in a standard way or not. The charter needs to ack that and be careful
given we will probably have to do a larger scope.
Mike Blanche: +1 to Ted. I am a user of Cloudflare Tunnel for non-HTTP
traffic, so I selfishly want that, but starting simple makes sense.
Theo Dimitrakos: We have AI agents acting on behalf of users today. Best
way to control those requests is by having corp or user policy enforced
by reverse proxy. This could be in scope also.
Alessandro Ghedini: Imagine I want to expose a homemade website in a
hosted VPN to another across providers... different than corp cases
presented and would still benefit.
Chairs: it's possible to do work in existing WGs or new WG. This is up
to ADs, though we want to hear feedback on this decision also.
Chairs: we have only heard positive energy so far for doing this work
somewhere at the IETF, so please speak up if you are opposed.
Philipp Tiesel: we (SAP) have a product that works by on-prem system
connecting to the cloud, getting WebSocket traffic from cloud
integration to on-prem application. PTTH would help with auditing,
modern practices, and therefore a good thing to work on. I think we are
solving the right problem, but suggest we do not do this in httpbis WG
(it's already a zoo).
Benjamin Schwartz: I've attempted drafts for this space a couple of
times. I heard Ted talk about "origin slicing" (worker wants to claim
some subset of methods, paths, etc. of an origin) which I think is
useful, but we shouldn't try to sovle this yet. Instead, an opaque
deployment defined box to handle configuration (we provide a channel,
then what you do within it is non-standard).
Ben Schwartz: we should do this by splitting httpbis into semantics and
transport topics. Alterantively, a new focused WG.
Mirja Kühlewind: I support solving this in the IETF.
Martin Thompson: given the confusion around the scope, it would be a
good idea to go through WG-forming BoF process even if just to strongly
define scope limits, though I'm leaning toward new WG also.
Mark Nottingham: this all sounds familiar... we hesitated to adopt this
in httpbis for a reason: triggered follow-on work, poorly defined scope.
I'm not saying don't do it, but this not being tightly scoped makes me
nervous.
Abhijit Singh: (left queue???)
Mirja Kühlewind: are there things only HTTP can provide, or are we just
using HTTP because it is what is familiar?
Martin Thompson: I predict the very first thing that will happen after
PTTH starts is browsers will be asked to add a worker implementation.
Mirja Kühlewind: you suggested it might be worse to standardize in
speecific use cases to let vendors invent, but I didn't see requirements
for interop. Is it always single vendor?
Marco Munizaga: HTTP requests can be made from both sides as presented.
Do all your cases need this? Mine does.
Erum Welling: where are security considerations addressed? new to the
IETF
Poll: Do you understand the use cases described today? Yes 48, No 0, No
opinion 1
Poll: Do you think the IETF should work on this? (These use cases and
something that could address this problem space) Yes 40, No 1, No
Opinion 6
Poll: Do you think a tightly scoped charter in this space is possible?
(is it worth it for the proponents to spend time writing one?) Martin:
These are two different questions. ReAsk: Do you think an acceptable to
you charter in this space is possible? Yes 45, No 2, No opinion 3
Mark Nottingham: A tightly scoped charter would be one that just does
the CDN use case and that could be done in the HTTP Working Group which
wouldn't need a charter. The bigger thing is what we keep on trying to
wrap our heads around and that's where I have doubts that we can
actually make progress in a reasonable amount of time. That's why I
voted no.
Ted Hardie:If this is simple reverse, we're doomed. Need to start with a
use case thats easy to understand and has immediate benefit. Cant get
tightly scoped - best hope is well scoped. +1 Martin
Cullen Jennings: Meangingless to go as simple or small as possible. At
min slicing up the name space needs to be in.
Ben Schwartz: Slicing should be out, excluded from scope. Need byte
string container to move blob from worker to proxy.
Erum Welling: Shouldnt be throwing solutions out without proper
discussion. Tied to http group, how can we do this seperately?
Poll: Would you be willing to review or author drafts in this space? (If
we do this, are people willing to actually do the work?) Yes 21, No 8,
No Opinion 7
[as AD] Mike Bishop: happy to see there were multiple different use
cases. Next steps should be a new mailing list and plan to BoF next time