Index: [Article Count Order] [Thread]

Date: Mon, 31 Mar 2008 19:28:11 +0900
From: Mitsuru Chinen <mitch@linux.vnet.ibm.com>
Subject: [dhcptest:00262] [Client Test] Wrong calculation at MRD tests
To: dhcptest@tahi.org
Message-Id: <20080331192811.2105aec7.mitch@linux.vnet.ibm.com>
X-Mail-Count: 00262

Hi there,

I think the MRD calcuration in the following test is incorrect.

  #42 Part D : Maximum Retransmission Duration of Confirm message
  #47 Part D : Maximum Retransmission Duration of Renew message, T1 and T2 non-zero
  #51 Part D : Maximum Retransmission Duration of Rebind message, T1 and T2 non-zero

In these tests, expected minimum value of next RD is calculated with
the following calculaton:

  RD = RDprev + RTprev * (1 + RAND_MIN)

[actual code]
|       if($rd + $interval*(1-$RAND) > $MRD){
|               vLogHTML('<FONT COLOR="#FF0000">Next message must not be observed</FONT><BR>');
|               $mrdflag += 1;
|       }

But according to RFC3315 section 14, RT is calculated with:

|   RT = 2*RTprev + RAND*RTprev

Then, the expected minimum value of next RD should be:

  RD = RDprev + RTprev * (2 + RAND_MIN)

I attached proposal patch below. Could you review it?

Thank you,
----
Mitsuru Chinen <mitch@linux.vnet.ibm.com>


diff -uprN DHCPv6_Self_Test_P2_1_0_8.orig/rfc3315/C_RFC3315_18_1_2_RetransCnf.seq DHCPv6_Self_Test_P2_1_0_8/rfc3315/C_RFC3315_18_1_2_RetransCnf.seq
--- DHCPv6_Self_Test_P2_1_0_8.orig/rfc3315/C_RFC3315_18_1_2_RetransCnf.seq	2007-10-30 21:56:45.000000000 +0900
+++ DHCPv6_Self_Test_P2_1_0_8/rfc3315/C_RFC3315_18_1_2_RetransCnf.seq	2008-03-31 12:58:15.000000000 +0900
@@ -253,7 +253,7 @@ while(1){
 		vLogHTML('<FONT COLOR="#FF0000">MRD expired! </FONT><BR>');
 		dhcpExitFail;
 	}
-	if($rd + $interval*(1-$RAND) > $MRD){
+	if($rd + $interval*(2-$RAND) > $MRD){
 		vLogHTML('<FONT COLOR="#FF0000">Next message must not be observed</FONT><BR>');
 		$mrdflag += 1;
 	}
diff -uprN DHCPv6_Self_Test_P2_1_0_8.orig/rfc3315/C_RFC3315_18_1_3_RetransRen.seq DHCPv6_Self_Test_P2_1_0_8/rfc3315/C_RFC3315_18_1_3_RetransRen.seq
--- DHCPv6_Self_Test_P2_1_0_8.orig/rfc3315/C_RFC3315_18_1_3_RetransRen.seq	2007-10-31 17:59:40.000000000 +0900
+++ DHCPv6_Self_Test_P2_1_0_8/rfc3315/C_RFC3315_18_1_3_RetransRen.seq	2008-03-31 12:58:35.000000000 +0900
@@ -250,7 +250,7 @@ while(1){
 		vLogHTML('<FONT COLOR="#FF0000">MRD expired! </FONT><BR>');
 		dhcpExitFail;
 	}
-	if($rd + $interval*(1-$RAND) > $MRD){
+	if($rd + $interval*(2-$RAND) > $MRD){
 		vLogHTML('<FONT COLOR="#FF0000">Next message must not be observed</FONT><BR>');
 		$mrdflag += 1;
 	}
diff -uprN DHCPv6_Self_Test_P2_1_0_8.orig/rfc3315/C_RFC3315_18_1_4_RetransReb.seq DHCPv6_Self_Test_P2_1_0_8/rfc3315/C_RFC3315_18_1_4_RetransReb.seq
--- DHCPv6_Self_Test_P2_1_0_8.orig/rfc3315/C_RFC3315_18_1_4_RetransReb.seq	2007-10-31 17:59:40.000000000 +0900
+++ DHCPv6_Self_Test_P2_1_0_8/rfc3315/C_RFC3315_18_1_4_RetransReb.seq	2008-03-31 12:58:52.000000000 +0900
@@ -250,7 +250,7 @@ while(1){
 		vLogHTML('<FONT COLOR="#FF0000">MRD expired! </FONT><BR>');
 		dhcpExitFail;
 	}
-	if($rd + $interval*(1-$RAND) > $MRD){
+	if($rd + $interval*(2-$RAND) > $MRD){
 		vLogHTML('<FONT COLOR="#FF0000">Next message must not be observed</FONT><BR>');
 		$mrdflag += 1;
 	}