From eba4626589e33ba05983de7ea848c6e1c2b4aa86 Mon Sep 17 00:00:00 2001 From: orignal Date: Sun, 31 Jul 2022 09:45:18 -0400 Subject: [PATCH] kappa for RTO culculation --- libi2pd/SSU2Session.cpp | 4 ++-- libi2pd/SSU2Session.h | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/libi2pd/SSU2Session.cpp b/libi2pd/SSU2Session.cpp index cc358778..761fdf8e 100644 --- a/libi2pd/SSU2Session.cpp +++ b/libi2pd/SSU2Session.cpp @@ -25,7 +25,7 @@ namespace transport m_DestConnID (0), m_SourceConnID (0), m_State (eSSU2SessionStateUnknown), m_SendPacketNum (0), m_ReceivePacketNum (0), m_IsDataReceived (false), m_WindowSize (SSU2_MIN_WINDOW_SIZE), m_RTT (SSU2_RESEND_INTERVAL), - m_RTO (SSU2_RESEND_INTERVAL*1.5), m_RelayTag (0), + m_RTO (SSU2_RESEND_INTERVAL*SSU2_kAPPA), m_RelayTag (0), m_ConnectTimer (server.GetService ()), m_TerminationReason (eSSU2TerminationReasonNormalClose), m_MaxPayloadSize (SSU2_MIN_PACKET_SIZE - IPV6_HEADER_SIZE - UDP_HEADER_SIZE - 32) // min size { @@ -1462,7 +1462,7 @@ namespace transport { auto rtt = ts - it1->second->sendTime; m_RTT = (m_RTT*m_SendPacketNum + rtt)/(m_SendPacketNum + 1); - m_RTO = m_RTT*1.5; + m_RTO = m_RTT*SSU2_kAPPA; if (m_RTO < SSU2_MIN_RTO) m_RTO = SSU2_MIN_RTO; if (m_RTO > SSU2_MAX_RTO) m_RTO = SSU2_MAX_RTO; } diff --git a/libi2pd/SSU2Session.h b/libi2pd/SSU2Session.h index b2d61e80..0ca4933a 100644 --- a/libi2pd/SSU2Session.h +++ b/libi2pd/SSU2Session.h @@ -42,6 +42,7 @@ namespace transport const size_t SSU2_MAX_WINDOW_SIZE = 256; // in packets const size_t SSU2_MIN_RTO = 100; // in milliseconds const size_t SSU2_MAX_RTO = 2500; // in milliseconds + const float SSU2_kAPPA = 1.8; const size_t SSU2_MAX_OUTGOING_QUEUE_SIZE = 500; // in messages const int SSU2_MAX_NUM_ACK_RANGES = 32; // to send