Commit Graph

4505 Commits

Author SHA1 Message Date
dignifiedquire 5b839ab9fd Merge branch 'fix-immediate-ack' into wip-testing 2025-12-06 11:54:14 +01:00
dignifiedquire ab123f5d34 fix: cleanup remaining state 2025-12-06 11:53:54 +01:00
dignifiedquire b052e60496 check abandoned_paths 2025-12-06 11:53:54 +01:00
dignifiedquire 1886f8384e fixup: move new_cids cleanup earlier 2025-12-06 11:53:54 +01:00
dignifiedquire df7a2c4a81 fix(proto): handle new CIDs for closed paths 2025-12-06 11:53:54 +01:00
dignifiedquire f0101f0ae2 fix(proto): ensure ImmediateAcks are sent in Data space
Closes https://github.com/n0-computer/quinn/issues/225
2025-12-06 11:48:41 +01:00
Franz Heinzmann abbe27bf07 feat!: update qlog to latest drafts, add more events and QUIC extensions, emit traces per connection (#208)
* refactor: upgrade to latest n0-qlog

* feat: record path id

* feat: add qlog support for multipath frames

* support more frames and error codes

* feat: add support for quic-address-discovery and quic-ack-frequency extensions

* feat: support iroh's NAT traversal extension

* feat: emit TupleAssigned for new paths

* fixup

* chore: update to latest n0-qlog

* feat: emit TransportParameters

* chore: clippy

* deps: update to n0-qlog 0.1.0

* refactor: add qlog factory, move group_id to common_fields

* docs: improve

* chore: clippy

* fixup

* feat: add QlogFileFactory and util methods on TransportConfig

* feat: reexport from quinn

* chore: clippy

* feat: qlog timers

* add more timers

* docs: improve

* refactor: disable keep alive timers in qlog to reduce noise

* address review

* fix: downgrade logging

* cleanup

* fixup naming

---------

Co-authored-by: Friedel Ziegelmayer <me@dignifiedquire.com>
2025-12-06 10:07:30 +00:00
Friedel Ziegelmayer 79aa0f8092 fix!: use PathId in more APIs and remove Connection::network_path_changed (#210)
* chore: add more Debug derives

* fix: do not unconditionally use path 0 in APIs

* fix(quinn): reexport PathId

* fixup: debug for controllermetrics

* cleanup and remove `network_path_changed` api
2025-12-06 09:27:27 +00:00
Friedel Ziegelmayer 988efd8578 fix: cleanup path closing errors (#221)
- update names to more closely match the RFC
- pass a fixed error code when the application closes the path

Closes https://github.com/n0-computer/iroh/issues/3633
2025-12-05 18:58:22 +00:00
Floris Bruynooghe 29c186d154 fix: do not use Instant::now in proto tests (#223)
* fix: do not use Instant::now in proto tests

Proto tests using the Pair driver should not use Instant::now() for
API calls. The Pair keeps track of time itself, and advances time
faster than real time. So time can be ahead of real time. API calls
that need a "now" should take the time from the Pair::time field.

* remove unused import

* Also fixup the non-multipath tests
2025-12-05 17:35:39 +00:00
Floris Bruynooghe f8afb5e861 Add a long and boring comment (#222) 2025-12-05 15:27:46 +00:00
Friedel Ziegelmayer 33156eb69a fix(proto): send path acks only in 1RTT space (#220)
* fix(proto): send path acks only in 1RTT space

Closes https://github.com/n0-computer/iroh/issues/3727

* check for multipath frames being on incoming

* fixup format

* fixup: undo filters

* expand frame checks

* expand check to also restrict QAD frames
2025-12-05 14:06:20 +00:00
Diva Martínez 1778966a91 move future challenges out of Retransmits (#216)
* keep info about sent challenges in the server state

* move the pending challenges to the hp state

This is not retransmittable data
2025-12-05 13:16:13 +00:00
Floris Bruynooghe 685f995826 fix: run MTU discovery on all paths (#215)
* fix: run MTU discovery on all paths

This ensures that MTU discovery is run on all open, validated paths
and not-abandoned paths.

Fixes #3526.

* spelling

* describe the conditions in text
2025-12-05 13:09:22 +00:00
Asmir Avdicevic f95435ef10 fix: add ci timeout to codecov (#217) 2025-12-04 21:48:55 +00:00
Diva Martínez fc35922d64 refactor: split client and server hp state (#214)
* clearly differentiate client and server states

This makes reasoning much easier since only the required fields are
present in the corresponding side state. It also reduces state size, now
it's 112 bytes, before it was 160 bytes

* apply clippy fixes

* fmt
2025-12-04 08:58:21 +00:00
ramfox 9c66e79377 feat: make TransportConfig Clone (#213)
Co-authored-by: “ramfox” <“kasey@n0.computer”>
2025-12-03 23:17:09 +00:00
Floris Bruynooghe c0cf8540eb fix: disable GSO on windows if failures happen (#209)
* fix: disable GSO on windows if failures happen

Unfortunately this is not feature gated, so had the risk of tanking
performance on windows. Though it should not normally happen.

* make this state exist

* love running compiler on ci

* params

* imports

* param

* and slowly doing everything arqu did...

* adjust the test
2025-12-02 19:45:43 +00:00
Franz Heinzmann 238057833a feat(proto): expand qlog support (#181)
* feat: add vantage point to qlog traces

* feat: record outgoing quic frames in qlog

feat: add ConnectionStarted to qlog

feat: track received packets in qlog

fix: cid groups, padding size, cleanups

fixup vantage_point method signature

chore: clippy

* address review!

* fixup

* refactor: use crate::Frame for recording sent frames in qlog

* fixup

* fixup

* docs: fixup

* chore: cleanup
2025-12-02 14:19:27 +00:00
Floris Bruynooghe cb60f6d1b0 Be more aggressive on slow tests (#206)
Tests are currently fast, that's a feature we'd like to keep
ideally. We can tune it if this ends up being flaky for slow CI hosts.
2025-12-02 13:38:21 +00:00
Friedel Ziegelmayer ea9dbb9fb0 feat: expose feature fast-apple-datapath (#204) 2025-12-02 13:13:06 +00:00
Asmir Avdicevic 2f508d5ab2 fix: fmt & spelling 2025-12-02 12:39:06 +00:00
Asmir Avdicevic 35f654b0c0 ci: fix more workflows 2025-12-02 13:24:18 +01:00
Philipp Krüger 1b83e4fea7 fix: Don't allow sending path status frames on non-multipath connections (#191) 2025-12-02 12:27:56 +01:00
Philipp Krüger 656f144f3d Merge branch 'main-iroh' into matheus23/fix-path-status-send 2025-12-02 12:24:41 +01:00
Asmir Avdicevic a1cc539566 ci: setup n0 based CI 2025-12-02 12:11:05 +01:00
Philipp Krüger 083fb7076f Merge remote-tracking branch 'origin/main-iroh' into matheus23/fix-path-status-send 2025-12-02 11:31:27 +01:00
Philipp Krüger 661cbd6f83 Revert OpenPathError -> PathError and NotOpen rename. 2025-12-02 11:31:19 +01:00
Floris Bruynooghe 0805840549 style: use display for PathId in tracing fields (#201) 2025-12-02 10:50:26 +01:00
Friedel Ziegelmayer 8954a64a7f chore: merge upstream (#194)
Updates up to
https://github.com/quinn-rs/quinn/commit/8bf6825da7876dc233434baaea546d3addc4b0ed
2025-12-02 09:53:00 +01:00
Friedel Ziegelmayer 38e61b56b1 Merge branch 'main-iroh' into chore-merge-upstream 2025-12-02 09:51:29 +01:00
Philipp Krüger 4f47e27bfc fmt 2025-12-02 09:48:25 +01:00
Philipp Krüger 138be5aac2 Merge branch 'main-iroh' into matheus23/fix-path-status-send 2025-12-02 09:47:28 +01:00
Philipp Krüger 3d7621f04c fix(proto): correctly check space.rx_packet in key updates (#195)
* fix: Correctly check `space.rx_packet` in key updates

Also refactor `PacketNumberSpace::rx_packet` to be an `Option<u64>` instead of `u64`.

* Update quinn-proto/src/connection/spaces.rs

Co-authored-by: Diva Martínez <26765164+divagant-martian@users.noreply.github.com>

* Code review

---------

Co-authored-by: Friedel Ziegelmayer <me@dignifiedquire.com>
Co-authored-by: Diva Martínez <26765164+divagant-martian@users.noreply.github.com>
2025-12-01 20:05:18 +00:00
dignifiedquire 16f78f0c63 Merge remote-tracking branch 'origin/main-iroh' into chore-merge-upstream 2025-12-01 21:00:10 +01:00
Friedel Ziegelmayer 21a8fdc68f fix(proto): correct logic change for noting congestion on acks
This fixes the drastic perf degradations seen in the benchmarks.

Originally introduced in 334ab73f58
2025-12-01 20:59:45 +01:00
Floris Bruynooghe 7481580ab4 Use %path_id in tracing fields (#197)
Printing `path_id=PahtId(2)` is not very useful, `path_id=2` is
shorter and as readable.
2025-12-01 20:18:48 +01:00
Philipp Krüger ca1b4ffbcf fix: Don't allow sending path status frames on non-multipath connections 2025-12-01 18:36:30 +01:00
dignifiedquire cdf316d44f test: fixup pqc test 2025-12-01 14:40:19 +01:00
dignifiedquire ec7c8035fc ci: fixup wasm builds 2025-12-01 14:40:11 +01:00
dignifiedquire e8b9fb3f34 docs: fixup readme 2025-12-01 14:35:21 +01:00
dignifiedquire 39c190f526 test: assume low latency to avoid pacing issues 2025-12-01 14:27:29 +01:00
dignifiedquire 6380cb3309 ci: fixup package names 2025-12-01 14:18:06 +01:00
dignifiedquire 5ac8f9a428 Merge remote-tracking branch 'origin/main-iroh' into chore-merge-upstream 2025-12-01 14:10:16 +01:00
dignifiedquire c8a655c4b4 Merge remote-tracking branch 'upstream/main' into chore-merge-upstream 2025-12-01 14:08:32 +01:00
Philipp Krüger d5123326ce fix: Ignore PATH_ACKs on abandoned paths (#192) 2025-12-01 13:47:58 +01:00
Philipp Krüger 4fcc804f97 fix: Ignore PATH_ACKs on abandoned paths 2025-12-01 13:03:46 +01:00
Friedel Ziegelmayer fc187cb151 feat: add n0's version of quic nat hole punching (#177)
- **rename PunchMe to ReachOut**
- **use new codes for transport parameter and frames**
- **update frame fields**
- **add the beginnings of nat traversal state**
- **init state when the extension is negotiated**
- **move the client side api away to deal with the error just once**
- **handle removed and added frames**
- **make some types public**
- **move iroh_hp out of connection**
- **thread adding addresses**
- **thread removing addresses**
- **include adding and removing frames in retransmission data**
- **Send ADD_ADDRESS and REMOVE_ADDRESS frames**
- **Add how to query the local nat traversal addresses.**
- **Thread server updates about addresses**
- **Boilerplate threading the nat traversal round call**
- **Remove the path_id from the ReachOut frame**
- **add retransmission fields for reach out frames**
- **Send the reach out frames, probe server addresses**
- **fix docs**
- **Send the reach out frames**
- **add fields to queue pending server-side challenges**
- **Return the remotely advertised nat traversal addresses instead**
- **modify the meaning of the transport parameter**
- **Hook up id tryfrom**
- **Queue server challenges**
- **send rand data instead of path challenges**
- **track sent reach outs in stats and sent frames**
- **track sent add and remove address in stats and sent frames**
- **Change APIs to set addresses**
- **logging conventions**
- **write 8 bytes, not 0**
- **Update `RttEstimator` from path challenge responses**
2025-12-01 12:33:21 +01:00
Friedel Ziegelmayer 8f78a67c9b fix(proto): do not assume PN for the crypto packet (#188)
* fix(proto): allow closed -> closed transitions

* fix(proto): do not assume PN for the crypto packet
2025-12-01 12:29:22 +01:00
dignifiedquire 5f466df38f fix(proto): do not assume PN for the crypto packet 2025-12-01 12:12:16 +01:00