mirror of https://github.com/vacp2p/nim-quic.git
79ed2515db | ||
---|---|---|
.github/workflows | ||
quic | ||
tests | ||
.editorconfig | ||
.gitignore | ||
.tool-versions | ||
Readme.md | ||
nim.cfg | ||
quic.nim | ||
quic.nimble |
Readme.md
QUIC for Nim
We're working towards an implementation of the QUIC protocol for Nim. This is very much a work in progress, and not yet in a usable state.
Building and testing
Install dependencies:
nimble install -d
Run tests:
nimble test
Roadmap
This is a rough outline of the steps that we expect to take during implemenation. They are bound to change over time.
- Wrap existing C library for QUIC, to test Nim implementation against
- Wrap C library with Nimterop
- Dummy TLS implementation
- Open connection
- Complete handshake
- Create uni-directional stream
- Send data over stream
- Close stream
- Close connection
- Interface with real TLS library
- Packet formats
- Frames
- Initial & Handshake frames
- Other frames
- Connections
- Handshake
- Streams
- Outgoing (writing)
- Incoming (reading)
- Uni-directional
- Bi-directional
- Integrate QUIC as a transport in libp2p
- ACKs and retransmissions
- Flow control
- Packet encryption
- Start by using dummy TLS implementation
- Select suitable TLS lib
- Integrate TLS lib
- Loss detection
- Congestion control
- Address validation
- Connection migration
- Version negotiation