From 89c8ed0cf152c8b77aeb95690276b2fbe0bdd4c5 Mon Sep 17 00:00:00 2001 From: Pavel Kirienko Date: Wed, 27 May 2015 11:06:23 +0300 Subject: [PATCH] Docs for dsdl/uavcan/protocol/dynamic_node_id/server/220.AppendEntries.uavcan --- .../server/220.AppendEntries.uavcan | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/dsdl/uavcan/protocol/dynamic_node_id/server/220.AppendEntries.uavcan b/dsdl/uavcan/protocol/dynamic_node_id/server/220.AppendEntries.uavcan index 329bfff8e6..30a966eb78 100644 --- a/dsdl/uavcan/protocol/dynamic_node_id/server/220.AppendEntries.uavcan +++ b/dsdl/uavcan/protocol/dynamic_node_id/server/220.AppendEntries.uavcan @@ -4,11 +4,14 @@ # # -# Given min election timeout and cluster size, the maximum request interval can be derived as follows: -# max request interval = (min election timeout) / 2 requests / (cluster size - 1) -# Obviously, request interval can be lower than that if needed, but not higher. +# Given min election timeout and cluster size, the maximum recommended request interval can be derived as follows: +# max recommended request interval = (min election timeout) / 2 requests / (cluster size - 1) +# The equation assumes that the Leader requests one Follower at a time, so that there's at most one pending call +# at any moment. Such behavior is optimal as it creates uniform bus load, but it is actually implementation-specific. +# Obviously, request interval can be lower than that if needed, but higher values are not recommended as they may +# cause Followers to initiate premature elections in case of intensive frame losses or delays. # -# Real timeout is randomized in the range (MIN, MAX]. +# Real timeout is randomized in the range (MIN, MAX], according to the Raft paper. # uint16 DEFAULT_MIN_ELECTION_TIMEOUT_MS = 4000 uint16 DEFAULT_MAX_ELECTION_TIMEOUT_MS = 6000 @@ -19,8 +22,8 @@ uint8 prev_log_index uint8 leader_commit # -# Worst-case replication time can be computed as: -# worst replication time = (127 log entries) * (2 trips of next_index) * (cluster size - 1) * (request interval) +# Worst-case replication time per Follower can be computed as: +# worst replication time = (127 log entries) * (2 trips of next_index) * (request interval per Follower) # Entry[<=1] entries