<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">

<?rfc toc="yes"?>
<?rfc compact="yes" ?>
<?rfc subcompact="no" ?>
<?rfc strict="no" ?>
<?rfc symrefs="yes" ?>

<rfc category="std" ipr="full3978" docName="draft-dreibholz-rserpool-delay-02.txt">

<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>


<front>

<title abbrev="Delay-Sensitive Policy">
Definition of a Delay Measurement Infrastructure and
Delay-Sensitive Least-Used Policy for Reliable Server Pooling
</title>


<!-- ****** THOMAS DREIBHOLZ ****************************** -->
<author initials="T." surname="Dreibholz" fullname="Thomas Dreibholz">
<organization abbrev="University of Duisburg-Essen">University of Duisburg-Essen, Institute for Experimental Mathematics</organization>
<address>
<postal>
   <street>Ellernstrasse 29</street>
   <city>45326 Essen</city>
   <region>Nordrhein-Westfalen</region>
   <country>Germany</country>
</postal>
<phone>+49-201-1837637</phone>
<facsimile>+49-201-1837673</facsimile>
<email>dreibh@iem.uni-due.de</email>
<uri>http://www.iem.uni-due.de/~dreibh/</uri>
</address>
</author>
<!-- ****************************************************** -->

<!-- ****** XING ZHOU ************************************* -->
<author initials="X." surname="Zhou" fullname="Xing Zhou">
<organization abbrev="Hainan University">Hainan University, College of Information Science and Technology</organization>
<address>
   <postal>
   <street>Renmin Road 58</street>
   <city>570228 Haikou</city>
   <region>Hainan</region>
   <country>China</country>
   </postal>
   <phone>+86-898-66279141</phone>
   <email>xing.zhou@uni-due.de</email>
</address>
</author>
<!-- ****************************************************** -->


<date day="11" month="July" year="2008" />
<keyword>Internet-Draft</keyword>

<abstract>
<t>This document contains the definition of a delay measurement infrastructure
   and a delay-sensitive Least-Used policy for Reliable Server Pooling.</t>
</abstract>


</front>

<middle>


<section title="Introduction">
<t>Reliable Server Pooling defines protocols for providing highly available
   services. PEs of a pool may be distributed over a large geographical area,
   in order to provide redundancy in case of localized disasters. But the
   current pool policies defined in
   <xref target="I-D.ietf-rserpool-policies" /> do not incorporate the
   fact of distances (i.e. delay) between PU and PE. This leads to a low
   performance for delay-sensitive applications.</t>

<section title="Scope">
<t>This draft defines a delay measurement infrastructure for ENRP servers to
   add delay information into the handlespace. Furthermore, a delay-sensitive
   Least-Used policy is defined. Performance evaluations can be found in
   <xref target="KiVS2007" />.</t>
</section>


<section title="Terminology">
<t>The terms are commonly identified in related work and can be found
   in the Aggregate Server Access Protocol and Endpoint Handlespace Redundancy
   Protocol Common Parameters document
   <xref target="I-D.ietf-rserpool-common-param" />.</t>
</section>
</section>


<section anchor="delayMsmtIntrastructure" title="Delay-Measurement Infrastructure">

<t>This section describes the necessary delay measurement infrastructure for
   the policy later defined in <xref target="LU-DPF" />. It has to be provided as
   part of the ENRP servers.</t>

<section anchor="quantifyingDistance" title="Quantification of Distance">
   <t>Measuring delay for SCTP associations is easy: the SCTP protocol
   <xref target="RFC2960" /> already calculates a smoothed round-trip time
   (RTT) for the primary path. This RTT only has to be queried via the standard
   SCTP API as defined in <xref target="I-D.ietf-tsvwg-sctpsocket" />.
   By default, the calculated RTT has a small restriction: a SCTP endpoint waits
   up to 200ms before acknowledging a packet, in order to piggyback the
   acknowledgement chunk with payload data. In this case, the RTT would include
   this latency. Using the option SCTP_DELAYED_ACK_TIME
   (see <xref target="I-D.ietf-tsvwg-sctpsocket" />), the maximum delay before
   acknowledging a packet can be set to 0ms (i.e. "acknowledge as soon as
   possible"). After that, the RTT approximately consists of the network latency
   only. Then, using the RTT, the end-to-end delay between two associated
   components is approximately 0.5*RTT.</t>

   <t>In real networks, there may be negligible delay differences: for example, the
   delay between a PU and PE #1 is 5ms and the latency between the PU and PE #2
   is 6ms. From the service user's perspective, such minor delay differences may be
   ignored and are furthermore unavoidable in Internet scenarios. Therefore, the
   distance parameter between two components A and B is defined as follows:</t>

   <t>Distance = DistanceStep * round( (0.5*RTT) / DistanceStep )</t>

   <t>That is, the distance parameter is defined as the nearest integer multiple
   of the constant DistanceStep for the measured delay (i.e. 0.5*RTT).</t>
</section>

<section title="Distance Measurement Environment">
   <t>In order to define a distance-aware policy, it is first necessary to
   define a basic rule: PEs and PUs choose "nearby" ENRP servers. Since the
   operation scope of RSerPool is restricted to a single organization, this
   condition can be met easily by appropriately locating ENRP servers.
   <list style="symbols">
      <t>A Home ENRP server can measure the delay of the ASAP associations to
         its PE. As part of its ENRP updates to other ENRP servers, it can
         report this measured delay together with the PE information.</t>
      <t>A non-Home-ENRP server receiving such an update simply adds the delay
         of the ENRP association with the Home ENRP server to the PE's reported
         delay.</t>
   </list>
   Now, each ENRP server can approximate the distance to every PE in the
   operation scope using the equation in
   <xref target="quantifyingDistance" />.</t>

   <t>Note, that delay changes are propagated to all ENRP servers upon PE re-registrations,
   i.e. the delay information (and the approximated distance) dynamically adapts
   to the state of the network.</t>
</section>

</section>


<section anchor="LU-DPF" title="Distance-Sensitive Least-Used Policy">

<t>In this section, a distance-sensitive Least Used policy is defined,
based on the delay-measurement infrastructure introduced in
<xref target="delayMsmtIntrastructure" />.</t>

   <section title="Description">
      <t>
         The Least Used with Distance Penalty Factor (LU-DPF) policy uses load
         information provided by the pool elements to select the
         lowest-loaded pool elements within the pool. If there are multiple
         elements having lowest load, the nearest PE should be chosen.
      </t>
   </section>
   <section title="ENRP Server Considerations">
      <t>
         The ENRP server SHOULD select at most the requested number of pool elements.
         Their load values SHOULD be the lowest possible ones within the pool and
         their distances also SHOULD be lowest. Each element MUST NOT be reported
         more than once to the pool user. If there is a choice of equal-loaded and
         equal-distanced pool elements, round robin selection SHOULD
         be made among these elements. The returned list of pool elements MUST be
         sorted by load value in ascending order (1st key) and distance in ascending
         order (2nd key).
      </t>
   </section>
   <section title="Pool User Considerations">
      <t>
         The pool user should try to use the pool elements returned from the list
         in the order returned by the ENRP server. A subsequent call for handle
         resolution may result in the same list. Therefore, it is RECOMMENDED
         for a pool user to request multiple entries in order to have a sufficient
         amount of feasible backup entries available.
      </t>
   </section>
   <section title="Pool Member Selection Policy Parameter">
      <t>
         <figure><artwork>
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Parameter Type = 0x6     |         Length = 0x14          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                  Policy Type = 0x40000010                     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            Load                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          Load DPF                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          Distance                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
            </artwork></figure>
         <list style="symbols">
            <t>Load: Current load of the pool element.</t>
            <t>Load DPF: The LoadDPF setting of the PE.</t>
            <t>Distance: The approximated distance in milliseconds.
               <list style="symbols">
                  <t>Between PE and Home ENRP server: The distance SHOULD be set to 0.</t>
                  <t>Between Non-Home ENRP server and Home ENRP server:
                     The delay measured on the ASAP association between Home ENRP
                     server and PE.</t>
                  <t>Between ENRP server and PU: The sums of the measured delays on
                     the ASAP association and the ENRP association to the Home ENRP
                     server.</t>
               </list>
            </t>
         </list>
      </t>
   </section>
</section>


<section title="Reference Implementation">
<t>The reference implementation based on the RSerPool prototype implementation
   rsplib can be found at <xref target="RSerPoolPage" />.</t>
</section>


<section title="Security Considerations">
   <t>This document does not identify security requirements beyond those already
      documented in the ENRP and ASAP protocol specifications.</t>
</section>


<section title="IANA Considerations">
   <t>This document does not require additional IANA actions beyond those
      already identified in the ENRP and ASAP protocol specifications.</t>
</section>


</middle>


<back>

<references title='Normative References'>
<?rfc include="reference.I-D.ietf-rserpool-arch" ?>
<?rfc include="reference.I-D.ietf-rserpool-asap" ?>
<?rfc include="reference.I-D.ietf-rserpool-enrp" ?>
<?rfc include="reference.I-D.ietf-rserpool-common-param" ?>
<?rfc include="reference.I-D.ietf-rserpool-policies" ?>
<?rfc include="reference.RFC.2960" ?>
<?rfc include="reference.I-D.ietf-tsvwg-sctpsocket" ?>
</references>

<references title='Informative References'>
<?rfc include="reference.KiVS2007" ?>
<?rfc include="reference.Dre2006" ?>
<?rfc include="reference.RSerPoolPage" ?>
<?rfc include="reference.LCN2005" ?>
<?rfc include="reference.Contel2005" ?>
<?rfc include="reference.Euromicro2007" ?>
<?rfc include="reference.Infocom2005" ?>
</references>

</back>


</rfc>
