From 420f15d083047fcaf3f2e448af6a9caa3ee9f9fb Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Thu, 8 Dec 2016 11:06:43 +0100 Subject: timers: add random jitter to handshake retry --- src/messages.h | 1 + src/timers.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/messages.h b/src/messages.h index 9b884b0..2a0c736 100644 --- a/src/messages.h +++ b/src/messages.h @@ -41,6 +41,7 @@ enum limits { REKEY_AFTER_MESSAGES = U64_MAX - 0xffff, REJECT_AFTER_MESSAGES = U64_MAX - COUNTER_WINDOW_SIZE - 1, REKEY_TIMEOUT = 5 * HZ, + REKEY_TIMEOUT_JITTER_MAX = HZ / 3, REKEY_AFTER_TIME = 120 * HZ, REJECT_AFTER_TIME = 180 * HZ, INITIATIONS_PER_SECOND = HZ / 50, diff --git a/src/timers.c b/src/timers.c index 9daee0d..0b536d3 100644 --- a/src/timers.c +++ b/src/timers.c @@ -119,7 +119,7 @@ void timers_handshake_initiated(struct wireguard_peer *peer) if (likely(peer->timer_send_keepalive.data)) del_timer(&peer->timer_send_keepalive); if (likely(peer->timer_retransmit_handshake.data)) - mod_timer(&peer->timer_retransmit_handshake, slack_time(jiffies + REKEY_TIMEOUT + HZ / 4)); + mod_timer(&peer->timer_retransmit_handshake, slack_time(jiffies + REKEY_TIMEOUT + prandom_u32_max(REKEY_TIMEOUT_JITTER_MAX))); } /* Should be called after a handshake response message is received and processed. */ -- cgit v1.2.3-59-g8ed1b