Commit Graph

95 Commits

Author SHA1 Message Date
Brennan Watt e4a7d01e10
Rust v1.63 (#27303)
* Upgrade to Rust v1.63.0

* Add nightly_clippy_allows

* Resolve some new clippy nightly lints

* Increase QUIC packets completion timeout

* Update quinn-udp crate

Co-authored-by: Michael Vines <mvines@gmail.com>
2022-08-22 18:01:03 -07:00
Michael Vines 3f4731b37f Standardize thread names
Tenets:
1. Limit thread names to 15 characters
2. Prefix all Solana-controlled threads with "sol"
3. Use Camel case. It's more character dense than Snake or Kebab case
2022-08-20 07:49:39 -07:00
Brennan Watt 7573000d87
Revert "Rust v1.63.0 (#27148)" (#27245)
This reverts commit a2e7bdf50a.
2022-08-19 09:19:44 +01:00
Brennan Watt a2e7bdf50a
Rust v1.63.0 (#27148)
* Upgrade to Rust v1.63.0

* Add nightly_clippy_allows

* Resolve some new clippy nightly lints

* Increase QUIC packets completion timeout

Co-authored-by: Michael Vines <mvines@gmail.com>
2022-08-17 15:48:33 -07:00
Lijun Wang ddd660e2d3
Different staked vs unstaked chunks_received (#27033)
* Different staked vs unstaked chunks_received

* Suppress a clippy warning
2022-08-09 17:39:14 -07:00
Lijun Wang a69470fd45
Set receive_window per quic connection (#26936)
This change sets the receive_window for non-staked node to 1 * PACKET_DATA_SIZE, and maps the staked nodes's connection's receive_window between 1.2 * PACKET_DATA_SIZE to 10 * PACKET_DATA_SIZE based on the stakes.

The changes is based on Quinn library change to support per connection receive_window tweak at the server side. quinn-rs/quinn#1393
2022-08-09 10:02:47 -07:00
Pankaj Garg 3c15d26840
Refactor QUIC new connection handler function (#26855)
* Refactor QUIC new connection handler function

* cleanup setup_connection

* more cleanup
2022-08-05 11:24:07 -07:00
Pankaj Garg fb922f613c
Compute maximum parallel QUIC streams using client stake (#26802)
* Compute maximum parallel QUIC streams using client stake

* clippy fixes

* Add unit test
2022-07-29 08:44:24 -07:00
Pankaj Garg 27866aeab4
Fix transaction chunking on QUIC batch send (#26642)
* Fix chunking of transaction at batch transmit via QUIC

* clippy fixes
2022-07-22 08:56:15 -07:00
sakridge 9714cb3764
Remove some unchecked math from the quic chunk handling (#26408) 2022-07-16 17:03:31 +02:00
Richard Patel 048b9f670b
Set solana-tpu ALPN protocol ID (#26587) 2022-07-13 20:55:13 +02:00
Pankaj Garg 49a112ae74
Use pubkey of peer for active QUIC connection table (#26597)
* Use pubkey of peer for active QUIC connection table

* clippy

* update code
2022-07-13 09:59:01 -07:00
Pankaj Garg 14ee87d793
Move QUIC TLS certificate code in its own file (#26569) 2022-07-12 13:34:37 -07:00
Pankaj Garg ea7448c568
Use client certs in QUIC to get peer's stake (#26477)
* Use client certs in QUIC to get peer's stake

* fixes to cert processing

* integrate the code

* clippy

* more cleanup

* sort cargo deps

* test fixes

* info -> debug
2022-07-11 18:06:40 +00:00
ryleung-solana 4772a93109
Quic handshake timeout (#26306)
* Implement timeout for the quic client and server handshake
2022-07-11 14:10:12 +08:00
Pankaj Garg 94685e1222
Implement randomized pruning of QUIC connection from staked peers (#26299) 2022-06-30 17:56:15 -07:00
Pankaj Garg 71087ac94f
Use correct QUIC connection table for removing the entry (#26328)
* Use correct QUIC connection table for removing the entry

* fix test

* address review comments

* address comments
2022-06-30 10:21:53 -07:00
Pankaj Garg e8ed7c1c46
Close QUIC connection before dropping the entry (#26269) 2022-06-28 13:46:56 -07:00
Pankaj Garg 31d870fe1b
Do not unwrap the oldest IP in QUIC connectiont table (#26272) 2022-06-28 00:17:08 +00:00
sakridge 2cc48a650b
Spawn for each stream (#26086) 2022-06-27 21:03:40 +02:00
Justin Starry 974db28e4d
Increase the QUIC stream timeout duration to improve perf (#26247) 2022-06-27 17:01:39 +01:00
Miles Obare b26c79b77b
[quic]Decrement total_streams correctly (#26158) 2022-06-23 14:09:43 -07:00
Pankaj Garg 17cf010ae6
Tune stream timeout and reading after timeouts (#26133)
* Tune stream timeout and reading after timeouts

* update sleep in test
2022-06-22 21:07:31 +00:00
Pankaj Garg d5dbfb67fd
QUIC stream timeouts if no data is received (#26116) 2022-06-21 18:56:47 -07:00
Pankaj Garg 4ad32eb412
Perform QUIC handshake asynchronously to allow parallel handshakes (#26043)
* Perform QUIC handshake asynchronously to allow parallel handhskaes

* address comments

* update cargo.lock

* change sleep to 1ms
2022-06-21 23:22:11 +00:00
Lijun Wang 61946a49c3
Weight concurrent streams by stake (#25993)
Weight concurrent streams by stake for staked nodes
Ported changes from #25056 after address merge conflicts and some refactoring
2022-06-21 12:06:44 -07:00
ryleung-solana 84a1aae555
Fix incorrect total connection table size in the quic server when removing multiple connections with the same IP:Port (#26073)
* Fix incorrect total connection table size in the quic server when removing multiple connections with the same IP:Port
2022-06-21 15:13:35 +08:00
Jon Cinque 061dc5322a
streamer: Add nonblocking quic server (#25806) 2022-06-07 18:22:46 +02:00
behzad nouri 5dbf7d8f91
removes raw indexing into packet data (#25554)
Packets are at the boundary of the system where, vast majority of the
time, they are received from an untrusted source. Raw indexing into the
data buffer can open attack vectors if the offsets are invalid.
Validating offsets beforehand is verbose and error prone.

The commit updates Packet::data() api to take a SliceIndex and always to
return an Option. The call-sites are so forced to explicitly handle the
case where the offsets are invalid.
2022-06-03 01:05:06 +00:00
Pankaj Garg 1c2ae470c5
Fix forwarding of transactions over QUIC (#25674)
* Spawn QUIC server to receive forwarded txs

* Update validator port range

* forward votes using UDP

* no forwarding from unstaked nodes

* forwarding stats in banking stage

* fix test builds

* fix lifetime of forward sender
2022-06-02 11:14:58 -07:00
behzad nouri 880684565c
limits read access into Packet data to Packet.meta.size (#25484)
Bytes past Packet.meta.size are not valid to read from.

The commit makes the buffer field private and instead provides two
methods:
* Packet::data() which returns an immutable reference to the underlying
  buffer up to Packet.meta.size. The rest of the buffer is not valid to
  read from.
* Packet::buffer_mut() which returns a mutable reference to the entirety
  of the underlying buffer to write into. The caller is responsible to
  update Packet.meta.size after writing to the buffer.
2022-05-25 16:52:54 +00:00
Justin Starry cad1c41ce2 Add Packet::deserialize_slice convenience method 2022-05-24 17:31:14 +08:00
steviez ec7ca411dd
Make PacketBatch packets vector non-public (#25413)
Upcoming changes to PacketBatch to support variable sized packets will
modify the internals of PacketBatch. So, this change removes usage of
the internal packet struct and instead uses accessors (which are
currently just wrappers of Vector functions but will change down the
road).
2022-05-23 15:30:15 -05:00
behzad nouri c248fb3f51
renames Packet Meta::{,set_}addr methods to {,set_}socket_addr (#25478)
In order to distinguish between Meta.addr field which is an IpAddr and
the methods which refer to a SocketAddr.
2022-05-23 15:48:59 +00:00
Michael Vines b05c7d91ed Fix derive_partial_eq_without_eq clippy lint 2022-05-22 22:22:21 -07:00
sakridge a56ce8283a
quic: Fix prune_oldest table size calculation (#25431) 2022-05-22 00:06:05 +02:00
Justin Starry 773b2f23f4
Fix flakey streamer_send_test (#25440) 2022-05-22 01:09:26 +08:00
Jon Cinque a5792885ca
streamer: Add nonblocking versions of sendmmsg / recvmmsg (#25415) 2022-05-20 22:40:40 +02:00
sakridge 3d96a1ab76
Block packets in vote-only mode (#24906) 2022-05-14 17:53:37 +02:00
sakridge 5be138826b
Add sender stake to quic packets (#25054) 2022-05-07 16:45:03 +02:00
Justin Starry 7100f1c94b
Collect stats in streamer receiver and report fetch stage metrics (#25010) 2022-05-06 02:56:18 +08:00
Pankaj Garg 0910d9a209
Increase worker thread limits in quic streamer runtime (#24751)
* Resurrect "Increase worker thread limits in quic streamer runtime (#24535)""

* Fix test_quic_server_block_multiple_connections

* remove sleep
2022-04-27 20:50:08 +00:00
Pankaj Garg ded6ac6696
Swap quic counters with 0 while reporting (#24754) 2022-04-27 20:17:40 +00:00
Justin Starry 2f62fb2031 Revert "Increase worker thread limits in quic streamer runtime (#24535)"
This reverts commit f244a2e141.
2022-04-28 00:46:42 +08:00
Pankaj Garg f244a2e141
Increase worker thread limits in quic streamer runtime (#24535)
* Increase worker thread limits in quic streamer runtime

* fix Cargo.lock

* fix test, and use a constant for controlling thread count
2022-04-26 21:25:02 +00:00
Pankaj Garg 564bd4b34b
Add more datapoints in QUIC streamer (#24611) 2022-04-25 10:12:11 -07:00
dependabot[bot] 8d4e53d23c
chore: bump nix from 0.23.1 to 0.24.0 (#24548)
* chore: bump nix from 0.23.1 to 0.24.0

Bumps [nix](https://github.com/nix-rust/nix) from 0.23.1 to 0.24.0.
- [Release notes](https://github.com/nix-rust/nix/releases)
- [Changelog](https://github.com/nix-rust/nix/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nix-rust/nix/commits)

---
updated-dependencies:
- dependency-name: nix
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* [auto-commit] Update all Cargo lock files

* allow deprecated

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: dependabot-buildkite <dependabot-buildkite@noreply.solana.com>
Co-authored-by: Tyera Eulberg <tyera@solana.com>
2022-04-22 01:41:11 +00:00
Pankaj Garg 5d0dcca1e7
Add some datapoints in quic for error conditions (#24489) 2022-04-19 13:05:02 -07:00
kirill lykov 5c7060eaeb
fix test compilation error (#24413) 2022-04-16 14:41:33 +02:00
sakridge d71986cecf
Separate staked and un-staked on quic tpu port (#24339) 2022-04-16 10:54:22 +02:00