DCCP protocol discussions
 help / color / mirror / Atom feed
* [Patch 6/12]: Sanity-check RTT samples
@ 2006-12-07 21:13 Gerrit Renker
  2006-12-07 22:08 ` Ian McDonald
  0 siblings, 1 reply; 2+ messages in thread
From: Gerrit Renker @ 2006-12-07 21:13 UTC (permalink / raw)
  To: dccp

[CCID3] Sanity-check RTT samples

CCID3 performance depends much on the accuracy of RTT samples.  If RTT
samples grow too large, performance can be catastrophically poor.

To limit the amount of possible damage in such cases, the patch
 * introduces an upper limit which identifies a maximum `sane' RTT value;
 * uses a macro to enforce this upper limit.

Using a macro was given preference, since it is necessary to identify the
calling function in the warning message. Since exceeding this threshold
identifies a critical condition, DCCP_CRIT is used and not DCCP_WARN.

Many thanks to Ian McDonald for collaboration on this issue.

Signed-off-by: Gerrit Renker <gerrit@erg.abdn.ac.uk>
---
 net/dccp/ccids/ccid3.c |    2 ++
 net/dccp/ccids/ccid3.h |   10 ++++++++++
 2 files changed, 12 insertions(+)

--- a/net/dccp/ccids/ccid3.c
+++ b/net/dccp/ccids/ccid3.c
@@ -456,6 +456,7 @@ static void ccid3_hc_tx_packet_recv(stru
 				  r_sample, t_elapsed);
 		else
 			r_sample -= t_elapsed;
+		CCID3_RTT_SANITY_CHECK(r_sample);
 
 		/* Update RTT estimate by 
 		 * If (No feedback recv)
@@ -1005,6 +1006,7 @@ static void ccid3_hc_rx_packet_recv(stru
 				  r_sample, t_elapsed);
 		else
 			r_sample -= t_elapsed;
+		CCID3_RTT_SANITY_CHECK(r_sample);
 
 		if (hcrx->ccid3hcrx_state = TFRC_RSTATE_NO_DATA)
 			hcrx->ccid3hcrx_rtt = r_sample;
--- a/net/dccp/ccids/ccid3.h
+++ b/net/dccp/ccids/ccid3.h
@@ -51,6 +51,16 @@
 /* Parameter t_mbi from [RFC 3448, 4.3]: backoff interval in seconds */
 #define TFRC_T_MBI		   64
 
+/* What we think is a reasonable upper limit on RTT values */
+#define CCID3_SANE_RTT_MAX	   (4 * USEC_PER_SEC)
+
+#define CCID3_RTT_SANITY_CHECK(rtt) 			do {		   \
+		if (rtt > CCID3_SANE_RTT_MAX) {				   \
+			DCCP_CRIT("RTT (%ld) too large, substituting %ld", \
+				  rtt, CCID3_SANE_RTT_MAX);		   \
+			rtt = CCID3_SANE_RTT_MAX;			   \
+		} 					} while (0)
+
 enum ccid3_options {
 	TFRC_OPT_LOSS_EVENT_RATE = 192,
 	TFRC_OPT_LOSS_INTERVALS	 = 193,

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [Patch 6/12]: Sanity-check RTT samples
  2006-12-07 21:13 [Patch 6/12]: Sanity-check RTT samples Gerrit Renker
@ 2006-12-07 22:08 ` Ian McDonald
  0 siblings, 0 replies; 2+ messages in thread
From: Ian McDonald @ 2006-12-07 22:08 UTC (permalink / raw)
  To: dccp

On 12/8/06, Gerrit Renker <gerrit@erg.abdn.ac.uk> wrote:
> [CCID3] Sanity-check RTT samples
>
Acked-by:Ian McDonald <ian.mcdonald@jandi.co.nz>
--
Web: http://wand.net.nz/~iam4
Blog: http://imcdnzl.blogspot.com
WAND Network Research Group

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2006-12-07 22:08 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-12-07 21:13 [Patch 6/12]: Sanity-check RTT samples Gerrit Renker
2006-12-07 22:08 ` Ian McDonald

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox