Commit Graph
42 Commits
Author SHA1 Message Date
Vitaliy Filippov a5dbf74123 Add support for full AES-GCM including double encryption of AES-XTS :D 2026-07-05 14:58:24 +03:00
Vitaliy Filippov 9f084f48f6 Add request size validation to prevent OOMDoS 2026-07-05 14:58:24 +03:00
Vitaliy Filippov 47b3294666 Remove TLS support (superseded by direct GCM) 2026-07-05 14:58:24 +03:00
Vitaliy Filippov 3afed2473e Implement TLS 1.3-like handshake manually 2026-07-05 14:58:24 +03:00
Vitaliy Filippov fdeacdcf30 Extract openssl-related code, wire ssl implementation back 2026-07-05 14:58:24 +03:00
Vitaliy Filippov 5803655840 Support isa-l_crypto for AES-GCM 2026-07-05 14:58:24 +03:00
Vitaliy Filippov 61ce26ba29 Remove WITH_OPENSSL from all files except http_client, always require OpenSSL 2026-07-05 14:58:24 +03:00
Vitaliy Filippov 32e651ec96 Use pools for GCM contexts 2026-07-05 14:58:23 +03:00
Vitaliy Filippov 8b39a268b9 Implement direct AES-256-GCM with a static key for benchmark 2026-07-05 14:58:09 +03:00
Vitaliy Filippov 985257f2d7 Parse standard TLS record headers 2026-07-05 14:58:09 +03:00
Vitaliy Filippov a4f3383f21 Omit msgr_tls_record_hdr_t for non-tls data 2026-07-05 14:58:09 +03:00
Vitaliy Filippov b2d828ec84 Allow 2 and 4 byte per block chain_info (allow more than 255 snapshots with encryption) 2026-07-05 14:58:09 +03:00
Vitaliy Filippov b2a74de715 Implement OSD TLS support 2026-07-05 14:58:09 +03:00
Vitaliy Filippov 430761ad2e Allow to skip checksums for headers 2026-07-05 14:58:09 +03:00
Vitaliy Filippov 38a1f6937d Implement protocol-level checksums (xxhash3) 2026-07-05 14:58:09 +03:00
Vitaliy Filippov 1b81e60187 Do not use scrap_buffer in the client (it would block protocol checksum support) 2026-07-05 14:58:09 +03:00
Vitaliy Filippov 5b6a6fce9a Batch handle_immediate_ops more 2026-07-05 14:10:10 +03:00
Vitaliy Filippov 03404ac95d Add basic AES-XTS client-side encryption support 2026-07-05 14:10:10 +03:00
Vitaliy Filippov decf314238 Rework msgr send/receive to allow encryption support 2026-07-05 14:10:10 +03:00
Vitaliy Filippov ca606570f7 Add request size validation 2026-06-15 01:56:54 +03:00
Vitaliy Filippov 84919a10a9 Extract msgr_iothread to separate .{cpp,h} 2026-05-18 01:17:56 +03:00
Vitaliy Filippov 0ee03e7172 Add reply == request opcode check (also just in case) 2026-05-18 01:17:56 +03:00
Vitaliy Filippov 88b7d9afcd Expect to receive bitmap only for successfull response 2026-05-18 01:17:56 +03:00
Vitaliy Filippov 07915c2881 Use surrogate peer IDs instead of FDs 2026-03-30 02:06:10 +03:00
Vitaliy Filippov f7cbb6ed56 Remove FD from the event loop in destroy_client, not in stop_client 2026-03-28 14:18:20 +03:00
Vitaliy Filippov 8f8172db99 clear_immediate_ops is now done by stop_client 2026-03-26 01:08:23 +03:00
Vitaliy Filippov 44c895dc30 Fix clients possibly not destroyed after being switched to RDMA
It could in theory lead to hung operations on RDMA client disconnections.

Workflow (probable):
* OSD switches an outbound connection to PEER_RDMA and removes the FD from epoll
* But a receive request in io_uring is still active
* Receive response is never handled, refs remains > 0
* The connection is dropped, but osd_client_t is not destroyed because refs > 0
* Outbound ops are not canceled, suboperations hang, primary operations hang too
2026-03-17 01:04:17 +03:00
Vitaliy Filippov 310c512b43 Correctly delete handle_immediate_ops when stopping a client
Fixes map::at crash in some cases
2026-03-02 01:48:19 +03:00
ston3luandVitaliy Filippov dd588a0783 Fix ref leak on read path when SQE allocation fails
I accept Vitastor CLA agreement: https://git.yourcmc.ru/vitalif/vitastor/src/branch/master/CLA-en.md
2026-01-29 01:52:07 +03:00
Vitaliy Filippov 52bc3261e9 Do not attempt to free outbound ops in clear_immediate_ops (fix #88) 2025-09-17 12:22:48 +03:00
Vitaliy Filippov 0be86a306d Remove old liburing version support as it's now included 2025-08-24 16:55:58 +03:00
Vitaliy Filippov f0a025428e Postpone read/write handlers using timerfd in the debug use_sync_send_recv mode 2025-06-05 02:22:01 +03:00
Vitaliy Filippov f390e73dae Log broken sequence numbers in "sequencing" errors 2025-06-05 02:09:41 +03:00
Vitaliy Filippov 4afb617f59 Also zero-init sqe 2025-05-23 21:18:37 +03:00
Vitaliy Filippov 2b0a802ea1 Fix iothreads sometimes hanging after adding zerocopy support 2025-05-23 20:54:03 +03:00
Vitaliy Filippov 2ab0ae3bc9 Check operation sequencing and stop clients when it breaks 2025-05-02 17:01:50 +03:00
Vitaliy Filippov 9fa8ae5384 Reset OSD ping state on receiving data from it via RDMA 2025-04-26 14:17:09 +03:00
Vitaliy Filippov c312557ace Do not execute remaining operations if the client is stopped during read 2024-11-10 16:44:13 +03:00
Vitaliy Filippov 9f38b7e5c1 Fix osd_ping_time_remaining reset from 990c3ba7eb, leading to osd disconnections 2024-07-13 16:09:56 +03:00
Vitaliy Filippov 990c3ba7eb Implement FS defragmentation 2024-07-12 16:11:35 +03:00
Vitaliy Filippov abbba6ade4 Support handling TCP I/O in simple separate io_uring-based I/O threads
Required mainly for clients, allows to scale parallel client I/O with TCP
from 100-150k iops to ~400k iops and from 2-3 GB/s to at least 7-8 GB/s
with 4 I/O threads, at the same time increasing Q=1 latency by 2x thread
switching delay, which is ~10 us when CPU powersaving is disabled and may
be as high as 200 us when it's enabled.
2024-07-04 13:29:20 +03:00
Vitaliy Filippov c79b38bd26 Move all sources to subdirs 2024-05-15 11:06:01 +03:00