[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

option for setting non-default Keepalive Timeout in REAP



Jari and Iljitsch,

As I mentioned at the mike at the meeting, I drafted some text to
suggest how shim6 nodes might notify a peer to use a non-default value
of the Keepalive Timeout interval.  In summary, it defines a new
Keepalive Timeout Option that can be sent in the I2, I2bis, R2, or
UPDATE packets.

There would need to be a Parameter Type allocated for this option; I
left it TBD.  There may need to be also a cross-reference in the
shim6-proto draft.

In the course of drafting the text, I noticed that the current draft was
a bit inconsistent in the use of Keepalive Timeout and Keepalive
Interval.  I took the liberty of trying to clarify and make consistent
what I thought was the intended behavior:  that multiple Keepalive
messages (spaced Keepalive Interval apart) may be sent during the
interval that Keepalive Timeout is running.  You should review these
changes to make sure that I did not change your intended behavior.

The below is a diff file against the -06 version that may be used also
as a patch -p0 file.

Regards,
Tom

--- draft-ietf-shim6-failure-detection-06.txt	2006-10-02
10:48:18.000000000 -0700
+++ draft-ietf-shim6-failure-detection-06.bis.txt	2006-11-16
21:32:18.000000000 -0800
@@ -83,6 +83,7 @@
    5.  Protocol Definition  . . . . . . . . . . . . . . . . . . . . .
14
        5.1.  Keepalive Message  . . . . . . . . . . . . . . . . . . .
14
        5.2.  Probe Message  . . . . . . . . . . . . . . . . . . . . .
15
+       5.3.  Keepalive Timeout Option . . . . . . . . . . . . . . . . ?
    6.  Behaviour  . . . . . . . . . . . . . . . . . . . . . . . . . .
20
    7.  Example Protocol Runs  . . . . . . . . . . . . . . . . . . . .
24
    8.  Protocol Constants . . . . . . . . . . . . . . . . . . . . . .
29
@@ -520,23 +521,26 @@
        packets from its peer but not sending any of its own.  The
        keepalives are sent at certain intervals so that the other side
        knows there is a reachability problem when it doesn't receive
any
-       incoming packets for 10 seconds, the Keepalive Timeout.
-       (Mechanisms to negotiate an alternative Keepalive Timeout may be
-       provided in the future.)
+       incoming packets for its Send Timeout period.  The host 
+       communicates its Send Timeout value to the peer as an Keepalive
+       Timeout Option (section 5.3) in the I2, I2bis, R2, or UPDATE 
+       messages.  The peer then maps this value to its Keepalive 
+       Timeout value.
 
        The interval after which keepalives are sent is named Keepalive
        Interval.  This document doesn't specify a value for Keepalive
        Interval, but recognizes that an often used approach is sending
-       keepalives at three times the timeout interval, which would be 3
-       seconds here, and suggest a possible alternative of 4 seconds so
-       that two keepalives are generated and have time to reach the
-       correspondent.  An upper bound would be 8 seconds, so that one
-       keepalive has time to reach the other side, assuming a maximum
-       one-way delay of 2 seconds.
+       keepalives at one-half to one-third of the Keepalive 
+       Timeout interval, so that multiple keepalives are generated and 
+       have time to reach the correspondent before it times out.  
+       An upper bound on this interval would be (Keepalive Timeout - 2)

+       seconds, so that one keepalive has time to reach the other side,

+       assuming a maximum one-way delay of 2 seconds.
 
    2.  Whenever outgoing data packets are generated, a timer is started
        to reflect the requirement that the peer should generate return
-       traffic from data packets.
+       traffic from data packets.  The timeout value is set to the 
+       value of Send Timeout.
 
        For the purposes of this specification, "data packet" refers to
        any packet that is part of a shim context, including both upper
@@ -546,7 +550,8 @@
    3.  Whenever incoming data packets are received, the timer
associated
        with the return traffic from the peer is stopped, and another
        timer is started to reflect the requirement for this node to
-       generate return traffic.
+       generate return traffic.  This timeout value is set to the
+       value of Keepalive Timeout.
 
    4.  The reception of a REAP keepalive packet leads to stopping the
        timer associated with the return traffic from the peer.
@@ -566,18 +571,19 @@
        and transmitted to the correspondent.  A host may send the
        keepalive sooner than Keepalive Interval seconds if
        implementation considerations warrant this, but should take care
-       to avoid sending keepalives at an excessive rate.  After sending
-       a single keepalive message, no additional keepalive messages are
-       sent until a data packet is received within this shim context.
+       to avoid sending keepalives at an excessive rate.  REAP
keepalive
+       packets SHOULD continue to be sent at the Keepalive Interval
until
+       either a data packet in the shim context has been received from 
+       the peer or the Keepalive Timeout expires.
        Keepalives are not sent at all when a data packet was sent since
        the last received data packet.
 
-   6.  Send Timeout seconds (10 seconds; see Section 8) after the
+   6.  Send Timeout seconds after the
        transmission of a data packet with no return traffic on this
        context, a full reachability exploration is started.
 
-   Note that the above timeout values are suggestions to be used as
-   defaults.  Experience from the deployment of the SHIM6 protocol is
+   Section 8 provides some suggested defaults for these timeout values.
+   Experience from the deployment of the SHIM6 protocol is
    needed in order to determine what values are most suitable.  The
    setting of these values is also related to various parameters in
    transport protocols, such as TCP keepalive interval.
@@ -1052,12 +1058,33 @@
       For future extensions.
 
 
+5.3.  Keepalive Timeout Option Format
 
+   Either side of a shim6 context can notify the peer of the value
+   that it would prefer the peer to use as its Keepalive Timeout
+   value.  If the host is using a non-default Send Timeout value,
+   it SHOULD communicate this value as a Keepalive Timeout value
+   to the peer in the below option.  This option MAY be sent in
+   the I2, I2bis, R2, or UPDATE messages.  The option SHOULD only need 
+   to be sent once in a given shim6 association.  If a host 
+   receives this option it SHOULD update its Keepalive Timeout 
+   value for the correspondent.
 
+    0                   1                   2                   3
+    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   |           Type = TBD        |0|        Length  = 4            |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   +           Reserved            |      Keepalive Timeout        | 
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
+   Fields:
+ 
+   Reserved:       16-bit field reserved for future use.  Set to zero
+                   upon transmit and MUST be ignored upon receipt.
 
-
-
+   Keepalive Timeout:   Value in seconds corresponding to suggested
+                        Keepalive Timeout value for the peer.
 
 
 Arkko & van Beijnum      Expires March 27, 2007                [Page
19]
@@ -1104,6 +1131,12 @@
    reception of SHIM6 control messages other than the Keepalive and
    Probe messages are treated similarly with payload packets.
 
+   While the Keepalive timer is running, the node SHOULD send Keepalive
+   messages to the peer with an interval of Keepalive Interval seconds.
+   Conceptually, a separate timer is used to distinguish between the
+   interval between Keepalive messages and the overall Keepalive
Timeout
+   interval.
+
    When sending a Probe message, the State field MUST be set to a value
    that matches the conceptual state of the sender after sending the
    Probe.
@@ -1145,8 +1178,9 @@
      START Send;              -                      START Send
      STOP Keepalive
 
-   Upon a timeout on the Keepalive timer the node sends a Keepalive
-   message.  This can only happen in the Operational state.
+   Upon a timeout on the Keepalive timer, the node cancels the timer
+   governing the sending of the next Keepalive message.  This can only 
+   happen in the Operational state.
 
      3. EVENT: Keepalive timeout
 
@@ -1406,8 +1440,8 @@
       |            (A,B1) payload packet            |
       |----------------------------------------/    |
       |                                             |
-      |                                             |
-      |                                             | 10 seconds after
+      |                                             | Send Timeout 
+      |                                             | seconds after
       |             (B1,A) Probe id=p,              | T1, sends a com-
       |                          state=exploring    | plaint that
       |   /-----------------------------------------| it is not rec-
@@ -1490,8 +1524,8 @@
       |                                             |
       |           (A1,B1) payload packet            |
       |----------------------------------------/    |
-      |                                             |
-      |                                             | 10 seconds after
+      |                                             | Send Timeout
+      |                                             | seconds after
       |          (B1,A1) Probe id=p,                | T1, B sends a
com-
       |                        state=exploring      | plaint that
       |<--------------------------------------------| it is not rec-
@@ -1579,6 +1613,9 @@
    Number of Initial Probes                   4 probes
    Max Probe Timeout                         60 seconds
 
+   Alternate values of the Send Timeout may be selected by a host
+   and communicated to the peer in the Keepalive Timeout Option.
+