2

I'm wondering if it's possible to use GCS for low latency object storage. Specifically, does it support access over HTTP/3 and would this reduce latency?

1 Answers1

1

According to https://cloud.google.com/storage/docs/request-endpoints they do:

Cloud Storage supports HTTP/1.1, HTTP/2, and HTTP/3 protocols.

An HTTPS connection to https://storage.googleapis.com shows the Alt-Svc header indicating HTTP/3 support using the HTTP Alternative Services mechanism defined in RFC 7838:

Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000

(you can see the current value by looking at the HTTP headers of a test tool such as RedBot or SSL Labs)

This is somewhat hard to confirm with tools like curl because most distributions do not ship a version of curl which has been compiled with the HTTP/3 option but if you want to test yours, use this:

$ curl -v --http3-only https://storage.googleapis.com

To avoid those challenges, use Cloudflare's Quiche tool via Docker:

$ docker run --rm -it cloudflare/quiche quiche-client https://storage.googleapis.com --http-version HTTP/3
[2023-05-26T14:49:16.216069084Z INFO  quiche_apps::client] connecting to 142.250.31.128:443 from 0.0.0.0:37684 with scid 9d8c6165c3217b1054d85ef82058446ae1c38701
[2023-05-26T14:49:16.470654002Z INFO  quiche_apps::common] 1/1 response(s) received in 231.201898ms, closing...
[2023-05-26T14:49:16.613105792Z INFO  quiche_apps::client] connection closed, recv=12 sent=12 lost=0 retrans=0 sent_bytes=1297 recv_bytes=7211 lost_bytes=0 peer_tps={ max_idle_timeout=300000, max_udp_payload_size=1472, initial_max_data=196608, initial_max_stream_data_bidi_local=131072, initial_max_stream_data_bidi_remote=131072, initial_max_stream_data_uni=131072, initial_max_streams_bidi=100, initial_max_streams_uni=103, ack_delay_exponent=3, max_ack_delay=25, disable_active_migration=false, active_conn_id_limit=2, max_datagram_frame_size=Some(65536)} [local_addr=0.0.0.0:37684 peer_addr=142.250.31.128:443 validation_state=Validated active=true recv=12 sent=12 lost=0 retrans=0 rtt=18.805123ms min_rtt=Some(16.405126ms) rttvar=6.864604ms cwnd=13500 sent_bytes=1297 recv_bytes=7211 lost_bytes=0 stream_retrans_bytes=0 pmtu=1350 delivery_rate=1757]
<?xml version='1.0' encoding='UTF-8'?><Error><Code>MissingSecurityHeader</Code><Message>Your request was missing a required header.</Message><Details>Authorization</Details></Error>

So the main problem here is going to be client support. The common tools like gsutil do not currently use libraries which support HTTP/3 so you're likely to need to patch them or build your own.

Chris Adams
  • 4,966
  • 1
  • 30
  • 28