sctp: Fix the RTO-doubling on idle-link heartbeats
SCTP incorrectly doubles rto ever time a Hearbeat chunk is generated. However RFC 4960 states: On an idle destination address that is allowed to heartbeat, it is recommended that a HEARTBEAT chunk is sent once per RTO of that destination address plus the protocol parameter 'HB.interval', with jittering of +/- 50% of the RTO value, and exponential backoff of the RTO if the previous HEARTBEAT is unanswered. Essentially, of if the heartbean is unacknowledged, do we double the RTO. Signed-off-by: Vlad Yasevich <vladislav.yasevich@hp.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
4458f04c02
commit
faee47cdbf
@@ -910,8 +910,10 @@ struct sctp_transport {
|
||||
* should be set. Every time the RTT
|
||||
* calculation completes (i.e. the DATA chunk
|
||||
* is SACK'd) clear this flag.
|
||||
* hb_sent : a flag that signals that we have a pending heartbeat.
|
||||
*/
|
||||
__u8 rto_pending;
|
||||
__u8 hb_sent;
|
||||
|
||||
/* Flag to track the current fast recovery state */
|
||||
__u8 fast_recovery;
|
||||
|
Reference in New Issue
Block a user