Skip to content

docs: improve README for human readers - #7

Merged
gspivey merged 2 commits into
mainfrom
claude/improve-readme-docs-iEINN
Feb 15, 2026
Merged

gspivey merged 2 commits into
mainfrom
claude/improve-readme-docs-iEINN

Conversation

@gspivey

@gspivey gspivey commented Feb 14, 2026

Copy link
Copy Markdown
Owner

Restructure README to be more accessible and informative:

  • Add "Why" section explaining kernel bypass benefits and DPDK value
  • Lead with library usage examples instead of CLI commands
  • Highlight 100% API compatibility as primary feature
  • Add backend comparison table (DPDK vs AF_PACKET vs MMAP)
  • Clarify development workflow with ci-validate.sh
  • Update architecture diagram to show backend abstraction
  • De-emphasize DPDK installation (optional, not required)
  • Remove confusing "Synthetic Mode" terminology
  • Add project status section with implementation phases

Aimed at developers who want to understand what this is, why it
exists, and how to use/contribute without reading agent docs.

https://claude.ai/code/session_01XHuW8tZS65TFqx1FV4wmiY

Restructure README to be more accessible and informative:

- Add "Why" section explaining kernel bypass benefits and DPDK value
- Lead with library usage examples instead of CLI commands
- Highlight 100% API compatibility as primary feature
- Add backend comparison table (DPDK vs AF_PACKET vs MMAP)
- Clarify development workflow with ci-validate.sh
- Update architecture diagram to show backend abstraction
- De-emphasize DPDK installation (optional, not required)
- Remove confusing "Synthetic Mode" terminology
- Add project status section with implementation phases

Aimed at developers who want to understand what this is, why it
exists, and how to use/contribute without reading agent docs.

https://claude.ai/code/session_01XHuW8tZS65TFqx1FV4wmiY
Bring back the cleaner ASCII box diagram format from the original README,
updated to show current architecture with backend abstraction layer.

The diagram now clearly shows:
- Layered crate structure (dpdk-sys → dpdk → dpdk-udp → dpdk-tokio)
- Three backend implementations (DPDK, RawSocket, RawSocket+MMAP)
- Optional DPDK library dependency (kernel bypass)

More visual and easier to parse than the tree diagram.

https://claude.ai/code/session_01XHuW8tZS65TFqx1FV4wmiY
@gspivey
gspivey merged commit 065db4f into main Feb 15, 2026
1 of 2 checks passed
@gspivey
gspivey deleted the claude/improve-readme-docs-iEINN branch February 15, 2026 06:03
gspivey pushed a commit that referenced this pull request Apr 11, 2026
64B/700K rust-dpdk holds 698k pps (0.27% drop) vs plain-rust's
615k (12.1% drop). 512B/700K rust-dpdk delivers 696k pps (0.57%
drop) vs plain-rust's 459k (34.4% drop). No regression from the
new RX buffer accounting — byte-counting cost is below the
measurement noise floor at all tested rates.
gspivey pushed a commit that referenced this pull request Jun 6, 2026
Performance results from GH Actions run 27063712285. No regressions:
- native-dpdk: 0.04% drop at 700K/64B (Run #33: 0.13%)
- rust-dpdk: 0.2% drop at 700K/64B (Run #33: 0.4%)
- tokio-dpdk: caps ~323K PPS (Run #33: ~326K)

All within normal variance. Change is documentation-only.
gspivey added a commit that referenced this pull request Jun 6, 2026
…#71)

## Roadmap Item

Addresses roadmap item #7: `dpdk-stdlib-quic`: Stats, gateway-MAC
acquisition, and `LoopbackBackend`

Spec: `.kiro/specs/s2n-quic-provider/` · tasks 8.1, 8.2, 8.3, 8.4

## Summary

All four spec tasks were already implemented as part of prior PRs (#66
skeleton). This PR formally marks them complete in the task spec:

- **8.1** `ProviderStats` atomic counters (`rx_burst_calls`,
`tx_burst_calls`, `datagrams_received`, `datagrams_transmitted`,
`rx_drops`, `tx_drops`, `timer_wakeups`) + `StatsSnapshot::snapshot()` +
`ProviderHandle` with `Arc<AtomicBool>` shutdown, `JoinHandle`,
`shutdown()`
- **8.2** `ProviderBuilder::with_gateway_mac([u8; 6])` for explicit
gateway MAC configuration, with `Option<[u8; 6]>` stored in config for
kernel ARP cache fallback at `start()` time
- **8.3** `LoopbackBackend` implementing all 9 `PacketBackend` methods
(send_frame, recv_frames, mac_address, backend_name, set_promiscuous,
is_promiscuous, set_allmulticast, is_allmulticast, rx_readiness)
- **8.4** 8 unit tests covering all LoopbackBackend methods (roundtrip,
empty recv, mac, name, promiscuous, allmulticast, multiple frames
ordering, rx_readiness)

## Tests

All 748 workspace tests pass (0 failures). The 40 dpdk-stdlib-quic tests
include:
- 8 LoopbackBackend integration tests (`tests/loopback_backend.rs`)
- 3 provider initialization tests (`tests/provider_init.rs`)
- 29 unit tests across modules (clock, ecn, error, frame, path_handle,
rx, tx)

## Tradeoffs

None — this is a documentation-only change marking already-implemented
work as complete.

---------

Co-authored-by: Agent Router <agent@agent-router.dev>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants