Files
tls-pq-bench/docs/TODO.md
2026-01-25 15:57:47 +02:00

57 lines
1.5 KiB
Markdown

# TODO (implementation plan)
## Milestone 1 -- Minimal client/server (raw protocol) \[MUST\]
### Server (`proto=raw`)
- [ ] TLS acceptor (rustls)
- [ ] Read 8-byte length `N`
- [ ] Send `N` bytes deterministic payload
### Client (`proto=raw`)
- [ ] Connect TLS
- [ ] Send `N`
- [ ] Read exactly `N` bytes
## Milestone 2 -- Measurement instrumentation \[MUST\]
- [ ] T0 before connect
- [ ] T_hs_done after handshake completion
- [ ] T_last after last byte read
- [ ] Output NDJSON
## Milestone 3 -- KX selection (X25519 vs X25519MLKEM768) \[MUST\]
- [ ] rustls provider wiring (`aws_lc_rs` for PQ)
- [ ] negotiated group logging (debug mode)
## Milestone 4 -- Concurrency & runner [MUST]
- [ ] tokio-based runner
- [ ] concurrency control and warmup
- [ ] matrix runner over (mode, payload, concurrency)
## Milestone 5 -- HTTP/1.1 mode (hyper) \[OPTIONAL\]
### Server (`proto=http1`)
- [ ] Implement HTTP routes:
- [ ] `GET /bytes/{n}`
- [ ] Response body = `n` bytes deterministic payload
- [ ] Ensure keep-alive behavior is controlled (prefer 1 request per connection)
### Client (`proto=http1`)
- [ ] `GET /bytes/n` and read full body
- [ ] TTLB measured to last byte of body
- [ ] Keep behavior comparable with raw mode:
- [ ] 1 request per new TLS connection (for now)
## Milestone 6 -- Compare `raw` vs `http1` [OPTIONAL]
- [ ] Run a small matrix:
- [ ] payload: 1 KB, 100 KB, 1 MB
- [ ] concurrency: 1, 10
- [ ] Document overhead differences and why `raw` is used for microbench