mirror of
https://github.com/kristoferssolo/tls-pq-bench.git
synced 2026-03-22 00:36:21 +00:00
57 lines
1.5 KiB
Markdown
57 lines
1.5 KiB
Markdown
# TODO (implementation plan)
|
|
|
|
## Milestone 1 -- Minimal client/server (raw protocol) \[MUST\]
|
|
|
|
### Server (`proto=raw`)
|
|
|
|
- [x] TLS acceptor (rustls)
|
|
- [x] Read 8-byte length `N`
|
|
- [x] Send `N` bytes deterministic payload
|
|
|
|
### Client (`proto=raw`)
|
|
|
|
- [x] Connect TLS
|
|
- [x] Send `N`
|
|
- [x] Read exactly `N` bytes
|
|
|
|
## Milestone 2 -- Measurement instrumentation \[MUST\]
|
|
|
|
- [x] T0 before connect
|
|
- [x] T_hs_done after handshake completion
|
|
- [x] T_last after last byte read
|
|
- [x] Output NDJSON
|
|
|
|
## Milestone 3 -- KX selection (X25519 vs X25519MLKEM768) \[MUST\]
|
|
|
|
- [x] rustls provider wiring (`aws_lc_rs` for PQ)
|
|
- [X] negotiated group logging (debug mode)
|
|
|
|
## Milestone 4 -- Concurrency & runner [MUST]
|
|
|
|
- [x] tokio-based runner
|
|
- [X] concurrency control and warmup
|
|
- [X] 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
|