quack icon indicating copy to clipboard operation
quack copied to clipboard

Erlang implementation of Google QUIC protocol

  • QUIC version 35
  • Client only (for now)

Progress:

  • Most (perhaps all?) packet formats can be encoded/decoded (from/to records)
  • Most (perhaps all?) frame types can be encoded/decoded (from/to records)
  • Tag value maps can be encoded/decoded (from/to maps)
  • Error codes can be encoded/decoded (from/to atoms)
  • Connection-level out-of-order packet arrival is handled
  • Stream-level out-of-order frame arrival is handled
  • Received packets are acknowledged to the other end (current approach is very naive)
  • Sent packets are kept in memory and purged/resent as requested by ther other end (current approach is very naive)
  • Outbound packets are automatically padded as necessary to fill the target IPv4 MTU (1350 bytes)
  • Initial connection can be established
  • Crypto stream is opened, key diversification is handled, forward-secure parameters are negotiated (curve25519 / AES GCM)
  • Basic HTTP-over-QUIC requests working partially