﻿<?xml version="1.0" encoding="UTF-8"?>
<!-- This template is for creating an Internet Draft using xml2rfc,
    which is available here: http://xml.resource.org. -->
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!-- One method to get references from the online citation libraries.
    There has to be one entity for each item to be referenced. 
    An alternate method (rfc include) is described in the references. -->

<!ENTITY RFC2544 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2544.xml">
<!ENTITY RFC6146 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6146.xml">
<!ENTITY RFC6147 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6147.xml">
<!ENTITY RFC6333 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6333.xml">
<!ENTITY RFC6877 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6877.xml">
<!ENTITY RFC7596 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7596.xml">
<!ENTITY RFC7597 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7597.xml">
<!ENTITY RFC7599 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7599.xml">
<!ENTITY RFC8219 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8219.xml">
<!ENTITY RFC8683 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8683.xml">

]>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<!-- used by XSLT processors -->
<!-- For a complete list and description of processing instructions (PIs), 
    please see http://xml.resource.org/authoring/README.html. -->
<!-- Below are generally applicable Processing Instructions (PIs) that most I-Ds might want to use.
    (Here they are set differently than their defaults in xml2rfc v1.32) -->
<?rfc strict="yes" ?>
<!-- give errors regarding ID-nits and DTD validation -->
<!-- control the table of contents (ToC) -->
<?rfc toc="yes"?>
<!-- generate a ToC -->
<?rfc tocdepth="4"?>
<!-- the number of levels of subsections in ToC. default: 3 -->
<!-- control references -->
<?rfc symrefs="yes"?>
<!-- use symbolic references tags, i.e, [RFC2119] instead of [1] -->
<?rfc sortrefs="yes" ?>
<!-- sort the reference entries alphabetically -->
<!-- control vertical white space 
    (using these PIs as follows is recommended by the RFC Editor) -->
<?rfc compact="yes" ?>
<!-- do not start each main section on a new page -->
<?rfc subcompact="no" ?>
<!-- keep one blank line between list items -->
<!-- end of list of popular I-D processing instructions -->
<rfc category="info" docName="draft-lencse-v6ops-transition-benchmarking-01" ipr="trust200902">

  <front>
    <!-- The abbreviated title is used in the page header - it is only necessary if the 
          full title is longer than 39 characters -->

    <title abbrev="Benchmarking of IPv4aaS Technologies">Performance Analysis of IPv6 Transition
    Technologies for IPv4aaS</title>

    <!-- add 'role="editor"' below for the editors if appropriate -->

    <!-- Another author who claims to be an editor -->

    <author fullname="Gabor Lencse" initials="G." surname="Lencse">
      <organization >Szechenyi Istvan University</organization>
      <address>
        <postal>
          <street>Egyetem ter 1.</street>
          <!-- Reorder these if your country does things differently -->
          <city>Gyor</city>
          <region></region>
          <code>H-9026</code>
          <country>Hungary</country>
        </postal>
        <phone></phone>
        <email>lencse@sze.hu</email>
      </address>
    </author>

    <date year="2022" />

    <!-- Meta-data Declarations -->

    <area>ops</area>

    <workgroup>v6ops</workgroup>

    <!-- WG name at the upperleft corner of the doc,
          IETF is fine for individual submissions.  
    If this element is not present, the default is "Network Working Group",
          which is used by the RFC Editor as a nod to the history of the IETF. -->

    <keyword>IPv6, Transition Technologies, Comparison, IPv4aaS, IPv6-only, 464XLAT, DNS64, Dual Stack Lite, Lightweight 4over6, MAP-E, MAP-T</keyword>

    <!-- Keywords will be incorporated into HTML output
          files in a meta tag but they have no effect on text or nroff
          output. If you submit your draft to the RFC Editor, the
          keywords will be used for the search engine. -->

    <abstract>
      <t>Several IPv6 transition technologies have been developed to
      provide customers with IPv4-as-a-Service (IPv4aaS) for ISPs with an
      IPv6-only access and/or core network. All these technologies have their
      advantages and disadvantages, and depending on existing topology, skills,
      strategy and other preferences, one of these technologies may be the
      most appropriate solution for a network operator.</t>

      <t>This document examines and compares the performance of some free 
	  software implementations of the five most prominent
      IPv4aaS technologies (464XLAT <xref target="RFC6877"/>, Dual Stack Lite 
	  <xref target="RFC6333"/>, Lightweight 4over6 <xref target="RFC7596"/>,
      MAP-E <xref target="RFC7597"/> and MAP-T <xref target="RFC7599"/>) 
	  and DNS64 <xref target="RFC6147"/>.</t>
    </abstract>
  </front>

  <middle>
    <section anchor="intro" title="Introduction">
      <t>IETF has standardized several IPv6 transition technologies 
	  <xref target="LEN2019"/> and occupied a neutral position trusting 
	  the selection of the most appropriate ones to the market.  
	  <xref target="I-D.ietf-v6ops-transition-comparison"/> provides a
      comprehensive comparative analysis of the five most prominent 
	  IPv4aaS technologies to assist operators with this problem. 
	  This document adds one more detail: performance analysis and 
	  comparison of the most important free software implementations of 
	  the examined IPv4aaS technologies and DNS64.</t>

    </section>

   <section anchor="dns64performance" title="Performance Analysis and Comparison of DNS64 Implementations">

      <section title="Purpose and Significance of DNS64">

        <t>DNS64 <xref target="RFC6147"/> can be used together with stateful NAT64 
		<xref target="RFC6146"/> to facilitate the communication of an IPv6-only client 
		with an IPv4-only server. In typical deployments, 464XLAT is used together with DNS64 
		<xref target="RFC6147"/>, see Section 3.1.2 of <xref target="RFC8683"/>. In this case,
		the stateful NAT64 gateway is granted as the PLAT of 464XLAT. Theoretically, DNS64 could 
		be used together with any of the other IPv4aaS technologies, but then it would 
		require the operation of a stateful NAT64 gateway. So DNS64 performance is important
		for those, who choose to use 464XLAT.</t>
		<t>As elaborated in Sections 4.5.2 and 4.5.3 of <xref target="I-D.ietf-v6ops-transition-comparison"/>, 
		the usage of DNS64 reduces the amount of the traffic that undergoes double translation
		at least by an order of magnitude, because the traffic of an IPv6-only client 
		and an IPv4-only server undergoes only a single translation. </t>

      </section>

      <section title="Measurement Method and Parameters">

        <t>The benchmarking method for DNS64 servers is defined in Section 9 of 
		<xref target="RFC8219"/>.  Further details of the method and its design considerations
		are elaborated in <xref target="LEN2017"/>.</t>

		<t>In short, the performance of the DNS64 
		servers is characterized by the number of queries resolved per second, provided that 
		the resolution happens within (one second) timeout time and all the sent queries are 
		resolved. (This is the usual "zero loss" criterion traditionally used in 
		<xref target="RFC2544"/> and its derivatives.)</t>
		
		<t>The worst case test, when there is no cache hit and no "AAAA" record exists, thus 
		the DNS64 server needs to send two queries (one query for the "AAAA" record and another one
		for the "A" record) for each received query is compulsory, and additional tests with 
		varios rates of cache hits and existing "AAAA" records are optional.</t>
		
		
		<t>All the details of the actual measurements 
		are described in <xref target="LEN2018"/>, where all the information given in 
		the rest of <xref target="dns64performance"/> is taken from.</t>
		
        <t>As for implementations, we have benchmarked all usable free software 
		DNS64 implementations we were aware of, namely: BIND (9.10.3-P4-Debian), 
		PowerDNS Recursor (4.0.4) and Unbound (1.6.0). Their performance was examined as the 
		function of the number of active CPU cores using 1, 2, 4, 8 and 16 CPU cores. 
		Besides the compulsory and optional tests defined by <xref target="RFC8219"/>, we have 
		also examined the computing power relative DNS64 performance, that is the number 
		of processed queries per second divided by the CPU utilization of the computer.</t>

        <t>The measurements were performed using the resources of NICT StarBED, Japan. The used 
		Dell PowerEdge C6220 servers had two Intel Xeon E5-2650 2GHz CPUs, having 8 cores each, 
		and 16x8GB 1333MHz DDR3 SDRAM. They were interconnected by 1Gbps speed VLANs. 
		Debian GNU/Linux 9.2 operating system with kernel version 4.9.0-4-amd64 was used 
		on all computers.</t>
		
		<t>All measurements were executed 20 times, and then median, minimum and maximum of the 20 
		results were calculated.</t>

      </section>

      <section title="Measurement Results">
        <t>Only the most important results (median values of the worst case peformance) are summarized 
		here. All the details can be found in <xref target="LEN2018"/>.</t>

		<t>The performance of BIND was 2,425qps (queries per second) at a single core, and it scaled 
		up to 4,788qps and 6,659qps at 2 and 4 cores, respectively. However its performance did not 
		increase at 8 cores and it was practically the same (6,661qps) at 16 cores. Strangely, the 
		minimum and maximum performance was exactly the same as the median at 4, 8 and 16 cores. 
		We have reported this strange issue to the developers of BIND, but we did not receive any 
		reply or bugfix.</t>
		
		<t>The performance of PowerDNS was 3,077qps at a single core, and it scaled up quite well 
		up to 26,620qps at 16 cores. The results were consistent: the difference between the 
		maximum and minimum values was acceptable (under 13% of the median) at any number of CPU cores.</t>

		<t>The performance of Unbound was 8,708qps at a single core with only a low difference 
		between the maximum and minimum values (about 4% of the median). Its median performance 
		showed and acceptable scale-up to 31,502qps at 8 cores, but then it dropped to 17,131qps 
		at 16 cores. And the results were rather inconsistent from 2 to 16 cores. (E.g. the difference 
		of the maximum and minimum values was more than 58% of the median at 16 cores.) </t>

		<t>All-in-all, PowerDNS has shown the best scale-up and the most consitent and predictable 
		results, therefore we recommend its usage in the case of a modern server with 16 or 
		more CPU cores.</t>
		
		<t>In the case of a single core server (e.g. a virtual machine) Unbound can give the highest 
		performance.</t>

		<t>BIND has shown the lowest single core performance and poor scale-up. 
		It can only be used, if very moderate performance is needed.</t>
		
      </section>
	  
   </section>

 
   <section anchor="Acknowledgements" title="Acknowledgements">
     <t>TBD. </t>
   </section>

   <!-- Possibly a 'Contributors' section ... -->

   <section anchor="IANA" title="IANA Considerations">
     <t>This document does not make any request to IANA.</t>
   </section>

   <section anchor="Security" title="Security Considerations">
     <t>TBD. </t>

   </section>
 </middle>

 <!--  *****BACK MATTER ***** -->

 <back>
   <!-- References split into informative and normative -->

   <!-- There are 2 ways to insert reference entries from the citation libraries:
    1. define an ENTITY at the top, and use "ampersand character"RFC2629; here (as shown)
    2. simply use a PI "less than character"?rfc include="reference.RFC.2119.xml"?> here
       (for I-Ds: include="reference.I-D.narten-iana-considerations-rfc2434bis.xml")

    Both are cited textually in the same manner: by using xref elements.
    If you use the PI option, xml2rfc will, by default, try to find included files in the same
    directory as the including file. You can also define the XML_LIBRARY environment variable
    with a value containing a set of directories to search.  These can be either in the local
    filing system or remote ones accessed by http (http://domain/dir/... ).-->

   <references title="Normative References">
    <!--?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml"?-->

    &RFC2544;
	&RFC6146;
	&RFC6147;
	&RFC6333;
	&RFC6877;
	&RFC7596;
    &RFC7597;
    &RFC7599;
    &RFC8219;
	&RFC8683;

   </references>

   <references title="Informative References">
     <!-- Here we use entities that we defined at the beginning. -->
 
    <?rfc include='reference.I-D.ietf-v6ops-transition-comparison'?>

<!--    <?rfc include='reference.I-D.lencse-v6ops-transition-scale-up'?> -->

<!--    <?rfc include='reference.I-D.lencse-v6ops-transition-benchmarking'?> -->

    <reference anchor="LEN2017" 
    target="http://www.hit.bme.hu/~lencse/publications/ECC-2018-DNS64-BM-for-review.pdf">
      <front>
        <title>Benchmarking Methodology for DNS64 Servers</title>

        <author initials="G." surname="Lencse">
          <organization></organization>
        </author>
        <author initials="Y." surname="Kadobayashi">
          <organization></organization>
        </author>

        <date day="1" month="Sep" year="2017"/>
      </front>
      <seriesInfo name="" value="Computer Communications, vol. 109, 
      no. 1, pp. 162-175"/>
      <seriesInfo name="" value="DOI: 10.1016/j.comcom.2017.06.004"/>
    </reference>


    <reference anchor="LEN2018" 
    target="http://www.hit.bme.hu/~lencse/publications/ECC-2018-DNS64-BM-for-review.pdf">
      <front>
        <title>Benchmarking DNS64 Implementations: Theory and Practice</title>

        <author initials="G." surname="Lencse">
          <organization></organization>
        </author>
        <author initials="Y." surname="Kadobayashi">
          <organization></organization>
        </author>

        <date day="1" month="Sep" year="2018"/>
      </front>
      <seriesInfo name="" value="Computer Communications, vol. 127, 
      no. 1, pp. 61-74"/>
      <seriesInfo name="" value="10.1016/j.comcom.2018.05.005"/>
    </reference>
 
    <reference anchor="LEN2019" 
    target="http://www.hit.bme.hu/~lencse/publications/e102-b_10_2021.pdf">
      <front>
        <title>Comprehensive Survey of IPv6 Transition Technologies: 
		A Subjective Classification for Security Analysis
        </title>

        <author initials="G." surname="Lencse">
          <organization></organization>
        </author>
        <author initials="Y." surname="Kadobayashi">
          <organization></organization>
        </author>

        <date day="1" month="Oct" year="2019" />
      </front>
      <seriesInfo name="" value="IEICE Transactions on Communications, vol. E102-B, no.10, pp. 2021-2035."/>
      <seriesInfo name="" value="DOI: 10.1587/transcom.2018EBR0002"/>
    </reference>
	
	
   <!-- 

   <reference anchor="LEN2020" 
    target="http://www.hit.bme.hu/~lencse/publications/291-1113-1-PB.pdf">
      <front>
        <title>Adding RFC 4814 Random Port Feature to Siitperf: Design, Implementation and 
		Performance Estimation
        </title>

        <author initials="G." surname="Lencse">
          <organization></organization>
        </author>
  
		<date day="" month="" year="2020" />
     
      </front>
      <seriesInfo name="" value="International Journal of Advances in Telecommunications, Electrotechnics, Signals and Systems, vol 9, no 3, pp. 18-26"/>
	  <seriesInfo name="" value="DOI: 10.11601/ijates.v9i3.291"/>
    </reference>


	<reference anchor="LEN2021" 
    target="http://www.hit.bme.hu/~lencse/publications/IEICE-2020-siitperf-revised.pdf">
      <front>
        <title>Design and Implementation of a Software Tester for Benchmarking Stateless NAT64 Gateways
        </title>

        <author initials="G." surname="Lencse">
          <organization></organization>
        </author>
		
		<date day="" month="" year="2021" />
     
      </front>
      <seriesInfo name="" value="IEICE Transactions on Communications"/>
	  <seriesInfo name="" value="DOI: 10.1587/transcom.2019EBN0010"/>
    </reference>

 	-->

   </references>

   <section anchor="change_log" title="Change Log">
    <section title="00">
      <t>Initial version.
      </t>
    </section>
    <section title="01">
      <t>DNS64 benchmarking was added.
      </t>
    </section>
   </section>
  </back>
</rfc>