Commit Graph

76 Commits (master)

Author SHA1 Message Date
Mark Qvist b28f5ebf7a
Allow inbound queue utilization in drainer benchmarks 2026-08-28 11:11:42 +02:00
Mark Qvist e714c559cc
Updated tests init 2026-08-27 22:17:38 +02:00
Mark Qvist 10848b7cff
Added egress control HWM limiter test 2026-08-27 01:55:28 +02:00
Mark Qvist ac9130f01f
Added coalesced transmit test 2026-08-26 21:38:15 +02:00
Mark Qvist 54a919f045
Added optimized HDLC implementation 2026-08-26 20:59:38 +02:00
Mark Qvist 47add6381d
Increase queues for throughput tests 2026-08-25 11:14:38 +02:00
Mark Qvist dd204e11ce
Added 32k throughput run 2026-08-25 11:07:38 +02:00
Mark Qvist 9f66b5a6a3
Merge branch 'optimize' 2026-08-25 02:51:54 +02:00
Mark Qvist f111709902
Updated througput benchmarker 2026-08-25 01:41:31 +02:00
Mark Qvist 516cb106c1 Updated througput benchmarker 2026-08-24 21:54:11 +02:00
Mark Qvist 7e197542e5 Updated througput bench 2026-08-24 21:54:11 +02:00
Mark Qvist 5e013464da Added throughput benchmarker 2026-08-24 21:54:11 +02:00
Mark Qvist b9278ce352
Added throughput benchmarker 2026-08-24 20:42:57 +02:00
Mark Qvist 171868c6cb
Added IFAC and HKDF tests to test runner 2026-08-23 23:49:59 +02:00
Mark Qvist cfddb9abe6
Added HKDF tests 2026-08-23 23:48:48 +02:00
Mark Qvist 929aba0282
Added IFAC tests 2026-08-23 23:47:34 +02:00
Mark Qvist 7488336985
Use test runner config loglevel setting 2026-08-21 11:32:53 +02:00
Mark Qvist df80181006
Utilize full link MDU in RawChannelWriter 2026-08-19 17:57:14 +02:00
Mark Qvist 3db15dae44
Updated identity test 2026-08-16 21:28:03 +02:00
Mark Qvist 12c21d4e25
Cleanup 2026-07-24 15:33:19 +02:00
Jeremy O'Brien 794e437f6d Channel: prevent sequence holes and ghost envelopes when sending on a dying outlet
RNSChannelOutlet.send() can return a packet that never reached the wire
(link not ACTIVE, no capable interface, etc). The old Channel.send()
queued the envelope in _tx_ring before calling outlet.send(), then
tried to rewind _next_sequence and remove the envelope if the outlet
returned a failed packet. Two problems:

- Between queueing and outlet.send() returning, _tx_ring held an
envelope with packet.raw=None. Any worker thread iterating the
ring (timeout fire, proof callback) crashed in get_packet_id's
packet.get_hash() with a TypeError on None.raw.

- The rewind was only safe for a single-threaded sender: it checked
"is _next_sequence one past mine?" and skipped the rewind otherwise.
Under concurrent senders, the rewind silently failed, leaving a
hole in the on-wire sequence stream. The receiver's contiguous
seqnum rule then stalled the channel permanently with no error.

This fix serializes the reservation-and-transmit pair with a per-channel
_send_lock so the rewind is always correct, and defers queueing until
outlet.send() returns a real packet so _tx_ring never contains a
packet-less envelope. _packet_tx_op() and get_packet_id() now also
defensively skip/return-None for packet-less envelopes.

Also handle the small race where a proof arrives between outlet.send()
registering the receipt and us installing the delivery callback: after
registration, re-read the receipt status and synthesize the
_packet_delivered() call if it's already DELIVERED.
2026-05-19 14:52:59 -04:00
Mark Qvist 23c0a493b1 Refactoring work for free-threaded transport I/O 2026-04-12 14:55:42 +02:00
Mark Qvist a699d7c110 Run github workflow tests on Python 3.11 2025-11-02 22:43:12 +01:00
Mark Qvist 0896df05b6 Workaround for https://github.com/python/cpython/issues/138720 2025-11-02 11:50:17 +01:00
Mark Qvist 045cb662ef Removed legacy AES-128 handlers 2025-05-26 19:04:30 +02:00
Mark Qvist 5f502746a4 Updated tests 2025-05-13 13:16:37 +02:00
Mark Qvist 3dc260a300 Updated link tests 2025-05-10 20:59:23 +02:00
Mark Qvist 7065856229 Added resource with metadata tests 2025-05-10 15:31:35 +02:00
Mark Qvist 38241452d3 Dynamic link mode establishment 2025-05-06 16:31:36 +02:00
Mark Qvist 3cbcbec942 Updated tests for link modes 2025-05-06 14:23:42 +02:00
Mark Qvist 13b4291840 Epoll backend switch 2025-04-08 02:33:32 +02:00
Mark Qvist 08751a762a Add timing deviation stats to encrypt/decrypt tests 2025-02-25 12:31:29 +01:00
Mark Qvist e5c22b8a3f Run tests against CRNS 2025-02-24 12:04:10 +01:00
Mark Qvist cd0f82d9ad Updated tests 2025-01-13 15:42:32 +01:00
Mark Qvist f595648a9b Updated tests 2024-05-04 20:27:27 +02:00
Mark Qvist a2caa47334 Improved link tests 2024-01-14 00:12:30 +01:00
Mark Qvist 5ba789f782 Updated single-packet timing 2023-11-06 11:10:38 +01:00
Mark Qvist 9ce2ea4a5c Updated link test 2023-11-05 23:36:19 +01:00
Mark Qvist 09e146ef0b Updated channel tests 2023-09-18 00:34:02 +02:00
Mark Qvist 4c272aa536 Updated buffer tests for windowed channel 2023-05-18 23:32:29 +02:00
Mark Qvist e184861822 Enabled channel tests 2023-05-18 23:31:29 +02:00
Mark Qvist 387b8c46ff Cleanup 2023-05-11 18:35:01 +02:00
Mark Qvist a4c64abed4 Initial framework for channel windowing 2023-05-10 18:43:17 +02:00
Mark Qvist f522cb1db1 Added per-packet compression to buffer 2023-05-09 22:13:57 +02:00
Aaron Heise 6d9d410a70
Address multiple issues with Buffer and Channel
- StreamDataMessage now packed by struct rather than umsgpack for a more predictable size
- Added protected variable on LocalInterface to allow tests to simulate a low bandwidth connection
- Retry timer now has exponential backoff and a more sane starting value
- Link proves packet _before_ sending contents to Channel; this should help prevent spurious retries especially on half-duplex links
- Prevent Transport packet filter from filtering out duplicate packets for Channel; handle duplicates in Channel to ensure the packet is reproven (in case the original proof packet was lost)
- Fix up other tests broken by these changes
2023-03-04 23:37:58 -06:00
Aaron Heise aac2b9f987
Buffer: send and receive binary data over Channel
(also some minor fixes in channel)
2023-03-02 17:17:18 -06:00
Aaron Heise d2d121d49f
Fix broken Channel test 2023-02-28 08:38:36 -06:00
Aaron Heise d3c4928eda
Tidy up PR 2023-02-27 21:31:41 -06:00
Aaron Heise 68f95cd80b
Tidy up PR 2023-02-27 21:30:13 -06:00
Aaron Heise 464dc23ff0
Add some internal documenation 2023-02-27 17:36:04 -06:00