Subject: [core] Stateless Block1+2 proxy in echo-request-tag and stateless-proxy

From: Christian Amsüss <[email-masked]>
Date: Tue, 3 Mar 2020 14:21:07 +0100

Hello CoRE,

handling blockwise in a stateless fashion is hard, and previous
discussion[1] stalled a bit.

My current impression is that both echo-request-tag and stateless-proxy
expect the other document to say how it's actualy done (and both
documents should be released soon), and nobody is quite sure what *can*
be said at all.

There is one pretty clear-cut case where "the simple thing" works:

Client sends request with Block1 partial data, and the proxy attaches
Request-Tag identifying the original client.

Even the pure Block2 case is a bit doubtful -- I *think* that a
stateless proxy could just forward *safe* requests with Block2 in
request and/or response as long as there is no Block1 around, but I'm
not sure.

When Block1+Block2 comes in, it gets tricky, because

a) some argument is needed that a Request-Tag makes sense at all with
Block2 (it does, as it can be a legitimate leftover from a reassembly,
and can't be changed when going from the Block1 to the Block2 phase),
and

b) the proxy can't statelessly determine whether a late POST with
Block2:n message should have a Request-Tag (as it might belong to a POST
Block1:m messagee that had one), or not (because it might belong to a
POST with no mention of a Block option and thus no Request-Tag) -- at
least not without Request-Tagging *every* message which is clearly
excessive.

I think that a bit more than the clear-cut case can be salvaged, but
honestly am not much driven to make a scenario work for which our best
example is a SOAP exchange.

So, questions to the group:

* Which document should the procedure and limitations be described in
  (I'd suggest stateless, as the Block2 case needs reasoning that's
  unrelated to Request-Tag), and

* are there any better ideas than "Sorry, no stateless forwarding" for
  Block1+Block2 or non-safe Block2?

KR
Christian

[1]: https://mailarchive.ietf.org/arch/msg/core/pA1MIF4S0__mwvq3h2XLWybreWw

-- 
To use raw power is to make yourself infinitely vulnerable to greater powers.
  -- Bene Gesserit axiom