Subject: [quicwg/base-drafts] PULBIC_RESET is server centric (#466)

From: MikkelFJ <[email-masked]>
Date: Wed, 26 Apr 2017 06:07:39 -0700

A client may operate on equal footing with a server, i.e. it is not always a HTTP browser client, but currently a client cannot send a PUBLIC_RESET:

> A Public Reset packet is only sent by servers and is used to abruptly terminate communications. Public Reset is provided as an option of last resort for a server that does not have access to the state of a connection.

The probelm is also that the purpose of PUBLIC_RESET is vague. The problem here is primarily that and endpoint might loose state during a crash and cannot tell peer to terminate the connection. The related use case for informing middle boxes is a separate topic.

Use case: Datacenters might have a private networking, but not across datacenters. QUIC could be used to form a peer-to-peer server network. There might be edge routers in each datacenter (e.g. into a Kubernetes network), or not, but either way end-points may have high volume bidirectional traffic that needs to stop. The situation can also happen within datacenters with private networks with co-location where QUIC protects against other customers on the network.

Edge routers may have to also tear down the connection across datacenters (border gateway routing) which is then the separate middlebox issue.

Lost-state teardown need not involve any public activity and could avoid an obvious attack vector by using a non-public reset mechanism, but middlebox signalling need this. For the endpoint tear down, it could be replacing PUBLIC_RESET with a hint on lost connection which triggers surviving endpoint to perform a low volume liveness check, e.g. PING/ack at most every x ms.

Further consideration is that post-crash a server might have to load state from persistent storage in order to perform a reset proof that is not predictable. If this can be avoided via hint/live-ness verification, stateful might be avoidable.

also discussed here:
https://github.com/quicwg/base-drafts/issues/462#issuecomment-297383356

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/issues/466