What would be some suitable transport and application layer protocols for a secure payments network where low latency is a key goal?
Here "low latency" means completing an encrypted transaction as fast as is possible given current networking technology, taking much less than one second for the networking bits, all round trips included, not counting human activity. Assume distances of no more than 1,000 miles (1609 km).
In this scenario, messages would usually occupy a single packet of perhaps 1 KB size. It would be slightly bursty in that discrete transactions would trigger brief bursts of traffic, while most clients most of the time would be idle.
Reliability is important, where "reliability" means something like 99% of sessions succeed on the first attempt. At this stage reliability doesn't refer to its common usage in describing networking protocols as "reliable" – I wouldn't want to bias the process by smuggling in implementation details like reliability at the transport layer...
At the transport layer, I'm aware of TCP, UDP, SCTP, Reliable UDP, DCCP, and things I don't understand yet like Enet.
At the application layer, I'm aware of HTTPS/TLS/HTTP/2, and QUIC / HTTP/3. (I think QUIC might collapse some layers and simplify things, so maybe it also encompasses the transport layer.)
What would you recommend? Do you think UDP can meet the reliability target under typical internet conditions? Perhaps UDP wrapped in application layer reliability, such as QUIC? Or do you think TCP can hit the latency target?
Does your recommendation change if we assume a private network where any protocol can get though middle boxes and such? I'm intrigued by SCTP – any thoughts there?