<feed xmlns='http://www.w3.org/2005/Atom'>
<title>pure/research/experiments/019-idle-links/ngtcp2, branch master</title>
<subtitle>Verified execution runtime unifying state, persistence, and replication.
</subtitle>
<id>http://git.yeowoo.org/pure/atom?h=master</id>
<link rel='self' href='http://git.yeowoo.org/pure/atom?h=master'/>
<link rel='alternate' type='text/html' href='http://git.yeowoo.org/pure/'/>
<updated>2026-09-29T16:03:09Z</updated>
<entry>
<title>Let ngtcp2's handshake through a path that reorders</title>
<updated>2026-09-29T16:03:09Z</updated>
<author>
<name>eunhhu</name>
<email>necpition205@gmail.com</email>
</author>
<published>2026-09-29T16:03:09Z</published>
<link rel='alternate' type='text/html' href='http://git.yeowoo.org/pure/commit/?id=d9e1fbddf9f92fc7850b0346f1f2511ddc0b6e54'/>
<id>urn:sha1:d9e1fbddf9f92fc7850b0346f1f2511ddc0b6e54</id>
<content type='text'>
OpenSSL 3.5's ClientHello offers ML-KEM with X25519 and takes two
Initials; when the path brought the second first, ngtcp2's server was
asked for a Retry and the harness gave up. The client now offers X25519
alone, as Pure's links agree, and the server lets go of a connection it
may not keep, so the client's next Initial begins another.
</content>
</entry>
<entry>
<title>Put ngtcp2 beside quinn in M6, as it is in M5</title>
<updated>2026-09-29T15:57:02Z</updated>
<author>
<name>eunhhu</name>
<email>necpition205@gmail.com</email>
</author>
<published>2026-09-29T15:57:02Z</published>
<link rel='alternate' type='text/html' href='http://git.yeowoo.org/pure/commit/?id=1d6d2430960622589f6c11220e09ba4b6dba2989'/>
<id>urn:sha1:1d6d2430960622589f6c11220e09ba4b6dba2989</id>
<content type='text'>
drain.c takes a rate and seconds as quinn's client does (paced messages
stamped with the time they were written, and no more written past the
seconds), and its service writes quinn's line for each stream: the
messages read in each 100 ms and how long they took. 020's run.py runs
it as a third, on port 40005 behind the same bottleneck, and --who
picks whom to run.
</content>
</entry>
<entry>
<title>Put ngtcp2 beside quinn in M5, as the design planned</title>
<updated>2026-09-29T15:13:48Z</updated>
<author>
<name>eunhhu</name>
<email>necpition205@gmail.com</email>
</author>
<published>2026-09-29T15:13:48Z</published>
<link rel='alternate' type='text/html' href='http://git.yeowoo.org/pure/commit/?id=1e562fb73527adb46a6ce8f4f302e22460aedf95'/>
<id>urn:sha1:1e562fb73527adb46a6ce8f4f302e22460aedf95</id>
<content type='text'>
ngtcp2 1.25.0 with OpenSSL 3.5's QUIC TLS (its ossl backend), fetched
and built into build/third by ngtcp2/build.sh; drain.c does in C what
the quinn harness does: one connection, one stream, "pure" and then the
messages each after its u32 length, counted by the service, packets in
GSO bursts. Its stream bytes are a function of their offset, so what
ngtcp2 keeps to send again points into a pattern that never changes.
run.py's drain_ngtcp2 measures both sides' CPU as drain_quic does.

Five rounds each, both sides' CPU a message: 61 B Pure 0.280, ngtcp2
0.270, quinn 0.310 us; 1 KiB 2.62, 3.54, 3.94; 16 KiB 40.2, 54.4, 60.2.
</content>
</entry>
</feed>
