<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<!-- $Id: draft-dreibholz-rserpool-applic-distcomp-13.xml 4340 2012-12-20 17:55:58Z dreibh $ -->

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

<rfc category="info" ipr="trust200902" docName="draft-dreibholz-rserpool-nextgen-ideas-04.txt">

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


<front>

<title abbrev="RSerPool Next Generation Ideas">
Ideas for a Next Generation of the Reliable Server Pooling Framework
</title>

<!-- ************** THOMAS DREIBHOLZ *************** -->
<author initials="T." surname="Dreibholz" fullname="Thomas Dreibholz">
<organization abbrev="Simula Research Laboratory">Simula Research Laboratory, Network Systems Group</organization>
<address>
<postal>
   <street>Martin Linges vei 17</street>
   <city>1364 Fornebu</city>
   <region>Akershus</region>
   <country>Norway</country>
</postal>
<phone>+47-6782-8200</phone>
<facsimile>+47-6782-8201</facsimile>
<email>dreibh@simula.no</email>
<uri>http://www.iem.uni-due.de/~dreibh/</uri>
</address>
</author>

<date day="05" month="July" year="2015" />
<keyword>Internet-Draft</keyword>

<abstract>
<t>
 This document collects some idea for a next generation of the
 Reliable Server Pooling framework.
</t>
</abstract>


</front>

<middle>


<section title="Introduction">

<section title="Abbreviations">
<t>
<list style="symbols">
 <t>ASAP:     Aggregate Server Access Protocol</t>
 <t>ENRP:     Endpoint Handlespace Redundancy Protocol</t>
 <t>ID:       Identifier</t>  
 <t>MPTCP:    Multi-Path Transmission Control Protocol</t>
 <t>PE:       Pool Element</t>  
 <t>PR:       Pool Registrar</t>
 <t>PU:       Pool User</t>
 <t>RSerPool: Reliable Server Pooling</t>
 <t>SCTP:     Stream Control Transmission Protocol</t>
 <t>TCP:      Transmission Control Protocol</t>
 <t>VNFPOOL:  Virtual Network Function Resource Pooling</t>
</list>
</t>
</section>

<!--<section title="Conventions">
<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL"
in this document are to be interpreted as described in
<xref target="RFC2119"/>.</t>
</section>-->

<section title="Reliable Server Pooling">
<t>
 Reliable Server Pooling&#160;(RSerPool) has been defined as RFCs in <xref target="RFC3237" />, <xref target="RFC5351" />, <xref target="RFC5352" />, <xref target="RFC5353" />, <xref target="RFC5354" />, <xref target="RFC5355" />, <xref target="RFC5356" />, <xref target="RFC5525" />. There is also a detailed introduction provided by <xref target="Dre2006" /> as well as lots of further information material on <xref target="RSerPool-Website" />. RSerPool is therefore not introduced in more detail here.  
</t>
</section>

<section title="Scope">
<t>
 The scope of this document is to collect some ideas of what to update/change for a next generation of the RSerPool framework. It is a result of lessons learned with more than one decade of RSerPool deployment (see also <xref target="OMNeTWorkshop2008" />, <xref target="Dre2012" />,  <xref target="PAMS2013-NorNet" />) as well as ongoing discussions on applying RSerPool for Virtual Network Function Resource Pooling&#160;(VNFPOOL; as introduced in more detail in <xref target="I-D.zong-vnfpool-problem-statement" />).
</t>
</section>

</section>


<section title="What to Change in the Next Generation of RSerPool?">
<t>
 <list style="symbols">
  
  <t>ENRP servers denote the management systems in the context of RSerPool. The term "server" is misleading, since ENRP servers are actually ENRP peers. Literature on RSerPool -- for example <xref target="Dre2006" /> -- therefore uses the more accurate term "Pool Registrar"&#160;(PR). A future revision of RSerPool should also use this term. (The RSerPool documents did not use "registrar" to avoid confusion with SIP registrars.)</t>
  
  <t>Pool Element Identifiers&#160;(PE&#160;ID) and Pool Registrar Identifiers&#160;(PR&#160;ID) are 32-bit random numbers used for the identification of PEs and PRs. Since 64-bit CPUs are standard since quite a long time, these IDs should be extended to 64&#160;bits.</t>
  
  <t>ENRP uses the Internet-16 checksum defined in <xref target="RFC1071" /> to detect handlespace inconsistencies. It is trivially possible to extend the underlying algorithm to 32&#160;bits, and the computation is more efficient on today's CPUs. The checksum algorithm should therefore be changed. (The Internet-16 checksum was finally chosen in&#160;2005 after long decisions to avoid any possible patent issues. The trivial extension of Internet-16 to Internet-32 is probably not an issue any more?)</t>
   
  <t>PR failures lead to possible concentration of all PUs and PEs at a single PR. To achieve a better load balancing, the solution ENRP Takeover Suggestion -- as defined in <xref target="I-D.dreibholz-rserpool-enrp-takeover" /> -- should be included in ENRP.</t>
  
  <t>For a Handle Resolution, a PR has to decide on how many PEs to select. Selecting too many ones causes additional overhead (which might be unnecessary), selecting too few ones may cause problems for the applications. The extension Handle Resolution Option -- defined in <xref target="I-D.dreibholz-rserpool-asap-hropt" /> -- provides a possibility for the PU to specify the amount of PEs to be selected. This possibility should be integrated into ASAP.</t>
   
   <t>RSerPool defines SCTP (defined in <xref target="RFC4960" />) as transport protocol for RSerPool. TCP and particularly Multi-Path TCP (MPTCP; see <xref target="RFC6824" />) should be possible further transport protocols for all RSerPool traffic. SCTP should still be the recommended choice, but allowing TCP/MPTCP could make the deployment much easier. (SCTP is superior, but it lacks of support in operating systems and support by underlying network infrastructure, like firewalls and middleboxes.)</t>

 </list>
</t>


<section title="Security Considerations">
<t>
 Security considerations for RSerPool can be found in <xref target="RFC5355" />.
</t>
</section>


<section title="IANA Considerations">
<t>
 This document introduces no additional considerations for IANA.
</t>
</section>


</section>


<section title="Reference Implementation">
<t>The RSerPool reference implementation RSPLIB, including example applications, can be found at <xref target="RSerPool-Website" />. It supports the functionalities defined by <xref target="RFC5351" />, <xref target="RFC5352" />, <xref target="RFC5353" />, <xref target="RFC5354" /> and <xref target="RFC5355" /> as well as the options <xref target="I-D.dreibholz-rserpool-asap-hropt" />, <xref target="I-D.dreibholz-rserpool-enrp-takeover" /> and <xref target="I-D.dreibholz-rserpool-delay" />. An introduction to this implementation is provided in <xref target="Dre2006" />.</t>
</section>


<section title="Testbed Platform">
<t>NorNet is a large-scale and realistic Internet testbed platform with support for Reliable Server Pooling as well as the underlying transport protocols SCTP and MPTCP. A description of and introduction to NorNet is provided in <xref target="PAMS2013-NorNet" />, <xref target="NNUW1-Dreibholz-NorNetCore-Introduction" />, <xref target="NNUW1-Dreibholz-NorNetCore-Tutorial" />. Further information can be found on the project website <xref target="NorNet-Website" />.</t>
</section>


<section title="Acknowledgments">
<t>
   The author would like to thank
Randall R. Stewart,
Michael Tüxen,
Ning Zong
   for their discussions and support.
</t>
</section>

</middle>


<back>

<references title='Normative References'>
<!--  <?rfc include="reference.RFC.2119" ?> -->
  
 <?rfc include="reference.RFC.3237" ?>
 <?rfc include="reference.RFC.5351" ?>
 <?rfc include="reference.RFC.5352" ?>
 <?rfc include="reference.RFC.5353" ?>
 <?rfc include="reference.RFC.5354" ?>
 <?rfc include="reference.RFC.5355" ?>
 <?rfc include="reference.RFC.5356" ?>
 <?rfc include="reference.RFC.5525" ?>
 
 <?rfc include="reference.RFC.1071" ?>
 <?rfc include="reference.RFC.4960" ?>
 <?rfc include="reference.RFC.6824" ?>

 <?rfc include="reference.I-D.dreibholz-rserpool-asap-hropt" ?>
 <?rfc include="reference.I-D.dreibholz-rserpool-delay" ?>
 <?rfc include="reference.I-D.dreibholz-rserpool-enrp-takeover" ?>
 <?rfc include="reference.I-D.zong-vnfpool-problem-statement" ?>
</references>

<references title='Informative References'>
 <?rfc include="Dre2006" ?>
 <?rfc include="OMNeT++Workshop2008" ?>
 <?rfc include="Dre2012" ?>
 <?rfc include="PAMS2013-NorNet" ?>
 <?rfc include="NNUW1-Dreibholz-NorNetCore-Introduction" ?>
 <?rfc include="NNUW1-Dreibholz-NorNetCore-Tutorial" ?>

 <?rfc include="RSerPool-Website" ?>
 <?rfc include="NorNet-Website" ?>
</references>

</back>


</rfc>
