etcp: wire-MTU кап 2048→1500 (согласовано с TUN_MAX_PACKET_SIZE), enc_buf привязан к MTU; тест multilink: per-link проверка трафика с ретраем через keepalive-тики

This commit is contained in:
evgeny committed 2026-09-12 13:53:55 +03:00
1 parent 13e2697f80
commit 56d0928632
3 files changed
+21 -11

No files matched your search

+1 -1
View File
@@ -1255,7 +1255,7 @@ int etcp_encrypt_send(struct ETCP_DGRAM* dgram) {
int udp_ov = (dgram->link->remote_addr.ss_family == AF_INET6) ? IP_UDP_OVERHEAD_V6 : IP_UDP_OVERHEAD_V4;
int wire_ov = udp_ov + SC_ENCRYPT_OVERHEAD;
if (len<0 || len + (int)dgram->noencrypt_len > (int)(dgram->link->mtu - wire_ov)) { dgram->link->send_errors++; errcode=1; goto es_err; }
uint8_t enc_buf[PACKET_DATA_MAX_MTU];// должно вмещать mtu - udp_ov (до 2020 байт)
uint8_t enc_buf[PACKET_DATA_MAX_MTU];// макс запись = data_len + 32 <= mtu - wire_ov + 32 = 1468
size_t enc_buf_len=0;
dgram->timestamp=get_current_timestamp();
+3 -1
View File
@@ -28,7 +28,9 @@ extern "C" {
#define INFLIGHT_LIM_MAX 1048576 // 1M
#define PACKET_DATA_SIZE 2048
#define PACKET_DATA_MAX_MTU 2048
// Wire-MTU кап: пакет на проводе не должен превышать 1500 (согласовано с TUN_MAX_PACKET_SIZE).
// PACKET_DATA_SIZE (2048) — это внутренний буфер аллокации/приёма, а не wire-MTU.
#define PACKET_DATA_MAX_MTU 1500
#define ETCP_MAX_PAYLOAD_SIZE (PACKET_DATA_SIZE - ETCP_ACK_BASE_SIZE - 5) /* 2035 */
#define ETCP_RFC791_MIN_MTU 576