<?xml version="1.0" encoding="us-ascii"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.5.11 -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
]>

<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<?rfc comments="yes"?>

<rfc ipr="trust200902" docName="draft-huitema-quic-ts-07" category="exp">

  <front>
    <title abbrev="QUIC-TS">Quic Timestamps For Measuring One-Way Delays</title>

    <author initials="C." surname="Huitema" fullname="Christian Huitema">
      <organization>Private Octopus Inc.</organization>
      <address>
        <email>huitema@huitema.net</email>
      </address>
    </author>

    <date year="2022"/>

    <area>Transport</area>
    
    <keyword>Internet-Draft</keyword>

    <abstract>


<t>The TIMESTAMP frame can be added to Quic packets when one way delay measurements
are useful. The timestamp is set to the number of microseconds from the
beginning of the node&#39;s epoch to the time at which the packet is sent. The draft
defines the &quot;enable_timestamp&quot; transport parameter for negotiating the
use of this extension frame, and the TIMESTAMP frame.</t>



    </abstract>


  </front>

  <middle>


<section anchor="introduction"><name>Introduction</name>

<t>The QUIC Transport Protocol <xref target="QUIC-TRANSPORT"/> provides a
secure, multiplexed connection for transmitting reliable streams of
application data. The algorithms for QUIC Loss Detection and Congestion Control
<xref target="QUIC-RECOVERY"/> use measurement of Round Trip Time (RTT) to
determine when packets should be retransmitted. RTT measurements are useful,
but there are however many cases in which more precise One-Way Delay (1WD)
measurements enable more efficient Loss Detection and Congestion Control.</t>

<t>An example would be the Low Extra Delay Background
Transport (LEDBAT) <xref target="RFC6817"/> which uses variations in transmission
delay to detect competition for transmission resource. Experience shows
that while LEDBAT may be implemented using RTT measurements, it is 
somewhat inefficient because it will cause unnecessary slowdowns in
case of queues or delayed ACKs on the return path. Using 1WD solves
these issues. Similar argument can be made for most delay-based algorithms.</t>

<t>We propose to enable one way delay measurements in QUIC by defining
a TIMESTAMP frame carrying the time at which a packet is sent. The use of this
extension frame is negotiated with a transport parameter,
&quot;enable_timestamp&quot;. When the extension is negotiated by
both parties, this frame can be used in conjunction with other
such as ACK to measure one way delays.</t>

<section anchor="terms-and-definitions"><name>Terms and Definitions</name>

<t>The keywords &quot;MUST&quot;, &quot;MUST NOT&quot;, &quot;REQUIRED&quot;, &quot;SHALL&quot;, &quot;SHALL NOT&quot;, &quot;SHOULD&quot;,
&quot;SHOULD NOT&quot;, &quot;RECOMMENDED&quot;, &quot;NOT RECOMMENDED&quot;, &quot;MAY&quot;, and &quot;OPTIONAL&quot; in this
document are to be interpreted as described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/>
when, and only when, they appear in all capitals, as shown here.</t>

</section>
</section>
<section anchor="specification"><name>Specification</name>

<t>The enable_timestamp transport parameter used for negotiating the use
of the extension frame
is defined in <xref target="negotiation"/>. The timestamp frame format is defined
in <xref target="TIMESTAMP-format"/>.</t>

<section anchor="negotiation"><name>Negotiation</name>

<t>The use of the timestamp frame extension is negotiated using a transport
parameter:</t>

<t><list style="symbols">
  <t>enable_timestamp (TBD)</t>
</list></t>

<t>The enable timestamp transport parameter is included if the endpoint
wants to receive or accepts to send timestamp frames for this connection. 
This parameter is encoded as a variable integer as specified in
section 16 of <xref target="QUIC-TRANSPORT"/>. It
can take one of the following three values:</t>

<t><list style="numbers">
  <t>I would like to receive TIMESTAMP frames</t>
  <t>I am able to generate TIMESTAMP frames</t>
  <t>I am able to generate TIMESTAMP frames and I would like to receive them</t>
</list></t>

<t>Peers receiving another value SHOULD terminate the connection with a TRANSPORT
PARAMETER error.</t>

<t>A peer that advertises its capability of sending TIMESTAMP frames using
option values 2 or 3 MUST NOT send these frames if the other
peer does not announce advertise its desire to receive them by
sending the enable_timestamp TP with option 1 or 3. This condition is
described as &quot;successful sending negotiation&quot; in <xref target="sending"/>.</t>

<t>Peers that receive TIMESTAMP frames when they have not advertised
their desire to receive them MAY terminate the connection with a PROTOCOL
VIOLATION error.</t>

<section anchor="zero-rtt-and-timestamp-option"><name>Zero RTT and Timestamp Option</name>

<t>Implementations MUST NOT remember the value of the enable_timestamp
parameter and try to use it when attempting 0-RTT on subsequent connections.
This rules is in line with the suggestions in section 7.4.2 of <xref target="QUIC-TRANSPORT"/>
to adopt conservative defaults and avoid compatibility issues. It is also
consistent with the specification to only use TIMESTAMP frames in 1RTT packets,
see <xref target="sending"/>.</t>

</section>
</section>
<section anchor="sending"><name>Sending TIMESTAMP frames</name>

<t>Following successful sending negotiation, a peer SHOULD add a timestamp frame to
1RTT packets carrying an ACK frame. This specification does not
impose a placement of TIMESTAMP frames in the packet. They MAY be sent
either before or after the ACK frame.</t>

<t>Implementations SHOULD NOT send more than one TIMESTAMP frame per
packet, but they MAY send more than one in rare circumstances. When
multiple TIMESTAMP frames are present in a packet, the receiver
retains the frame indicating the largest timestamp.</t>

<t>Implementations MUST NOT send
the TIMESTAMP frame in Initial, 0-RTT or Handshake packets, because
there is a risk that the peer will receive such packets before the
negotiation completes. This restriction may appear excessive because
some Handshake packets are typically sent after the negotiation
completes, but restricting TIMESTAMP frames to 1RTT packets is
simpler and less error prone than allowing the
TIMESTAMP frame in just a fraction of Handshake packets.</t>

</section>
<section anchor="TIMESTAMP-format"><name>TIMESTAMP frame format</name>

<t>TIMESTAMP frames are identified by the frame
type:</t>

<t><list style="symbols">
  <t>TIMESTAMP (TBD)</t>
</list></t>

<t>TIMESTAMP frames carry a single parameter, the timestamp.</t>

<figure title="TIMESTAMP Frame Format with Timestamp" anchor="ack-format"><artwork><![CDATA[
 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          Timestamp (i)                      ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<t>The timestamp encodes the number of microseconds since the beginning
of the epoch, as measured by the peer at the time at which the packet
is sent. It is encoded using the exponent selected by the peer
in the ack_delay_exponent. The exponent reduced timestamp is encoded 
as a variable length integer.</t>

<t>TIMESTAMP frames are not ack-eliciting. Their loss does not
require retransmission.</t>

<t>For congestion control, TIMESTAMP frames are treated like ACK frames. 
Section 7 of <xref target="QUIC-RECOVERY"/> specifies that 
&quot;packets containing only ACK frames do not count towards bytes in flight and are not congestion controlled&quot;.
The same applies to packets containing only TIMESTAMP frames, or a combination of ACK frames and
TIMESTAMP frames.</t>

</section>
<section anchor="rtt-measurements"><name>RTT Measurements</name>

<t>RTT measurements are performed as specified in Section 4 of
<xref target="QUIC-RECOVERY"/>, without reference to the Timestamp
parameter of the Timestamped ACK frames.</t>

</section>
<section anchor="choice-of-epoch"><name>Choice of Epoch</name>

<t>Each peer can chose its epoch as it sees fit, but it MUST remain constant for
the duration of the connection, and the resulting timestamps MUST be
positive integers. Plausible values for the epoch could be:</t>

<t><list style="symbols">
  <t>the beginning of the connection, i.e., the time at which the first
packet for that connection was sent or received.</t>
  <t>the time at which the first timestamp is sent.</t>
</list></t>

<t>Chosing values close to the beginning of the connection ensures that the
timestamps value will be at most equal to the duration of the connection,
which limits the amount of bytes required to encode the timestamps.</t>

</section>
<section anchor="one-way-delay-measurements"><name>One-Way Delay Measurements</name>

<t>An endpoint generates a One Way Delay Sample on receiving a
packet containing both a TIMESTAMP frame and an ACK frame that
meets the following two conditions:</t>

<t><list style="symbols">
  <t>the largest acknowledged packet number is newly acknowledged, and</t>
  <t>at least one of the newly acknowledged packets was ack-eliciting.</t>
</list></t>

<t>The One Way Delay sample, latest_1wd, is generated as the time elapsed since
the largest acknowledged packet was sent, corrected for the difference
between local time at the sending peer and connection time at the
receiving peer, phase_shift.</t>

<t>latest_1wd = timestamp - send_time_of_largest_acked - phase_shift</t>

<t>By convention, the phase_shift is estimated upon reception of the first
RTT sample, first_rtt. It is set to:</t>

<t>phase_shift = timestamp - send_time_of_largest_acked - latest_rtt/2</t>

<t>In that formula, we assume that the local time are measured in
microseconds since the beginning of the connection.
The formula does not depend on the choice of epoch by each peer, but
simply of the hypothesis that delays on the data path and the return
path are about equal.</t>

<t>We understand that clocks may drift over time, and that simply
estimating a phase shift at the beginning of a connection may be
too simplistic for long duration connections. Implementations
MAY adopt different strategies to reestimate the phase shift
at appropriate intervals. Specifying these strategies is beyond
the scope of this document.</t>

</section>
</section>
<section anchor="discussion"><name>Discussion</name>

<t>This document replaces an earlier proposal to modify the format
of the ACK frame by including a timestamp inside the modified
frame. The revised proposal encodes the timestamp independently
of the ACK frame, which requires slightly more overhead to
encode the type of the TIMESTAMP frame.</t>

<t>Defining an independent frame allows for more flexibility. This
draft defines the combination of TIMESTAMP with ACK frames, but
they could be combined with other frames as well. For example,
adding a TIMESTAMP to packets carrying a Path Response could
allow measuring one way delays before deciding
to migrate to a new path.</t>

<section anchor="management-of-time"><name>Management of Time</name>

<t>There are two known issues with deducing one way delays from RTT
measurements: clock drift and undefined phase difference.</t>

<t>The phase difference problem is easy to understand. We start from a list
of measurements associating the send time of packet number x (s[x]), the
receive time of the acknowledgement of packet (a[x]), and the timestamp
indicating when packet x was received by the peer (p[x]). The peer&#39;s
timestamp are expressed in the peer&#39;s clock.</t>

<t>Suppose that we model the peer&#39;s clock as local time plus phase
difference f, and that we model the rtt as the sum of two one way
delays, up (u[x]) and down (d[x]). We get:</t>

<figure><artwork><![CDATA[
    u[x] = p[x] + f - s[x]

    d[x] = a[x] - p[x] - f
]]></artwork></figure>

<t>Just looking at the equation shows that the value of f cannot be
determined from the a series of measurement (s[x], a[x], p[x]). You can
just add constraints that all u[x] and d[x] are positive numbers, which
gives a range of plausible values for f:   max(s[x] - p[x]) &lt; f &lt;
min(a[x]-p[x]). In case you wonder, you get similar formulations in a
multipath scenario. The plausible range may narrow to the min rtt of the
shortest path, but no further.</t>

<t>The phase difference uncertainty is not a big issue in practice, because
control algorithms are much more interested in the variations of the
delays than by their absolute values. Suppose we want to compare one way
delays at measurement (x) and (y). We get:</t>

<figure><artwork><![CDATA[
    u[x] = p[x] + f - s[x]

    u[y] = p[y] + f - s[y]

    u[x] - u[y] = p[x] - p[y] - s[x] + s[y]
]]></artwork></figure>

<t>The phase difference does not affect the measurement of variations in the
one way delay.</t>

<t>The clock drift is another matter. All the equations above assume that
the local clock and the remote clock have the same frequency. This is an
approximation. Clocks drift over time. Instead of just considering a
stable phase difference, one should consider the sum of a phase
difference and a time-varying drift component. Estimating drift is a
complex problem. This was studied in detail in the development of the
Network Time Protocol (NTP) <xref target="RFC5905"/>. In theory, implementations of
Quic could copy the algorithms of NTP to build a model of the clocks
used by the local node and the peer. That would be very complex.</t>

<t>Fortunately, implementations of Quic no not need to implement something as
complex as NTP. Most time based algorithms are only interested in
variations of delays over a short horizon. Clock drift happens at a slow
pace, maybe 1 millisecond per minute. Time base congestion control
algorithms already have to cope with the potential drift of the minimum RTT
due to changing network conditions. They do that by periodically restarting
the measurement of the minimum RTT after some delay, typically less than a
minute. A simple implementation of one way delay measurements could
follow the same approach, for example resetting the phase difference
every 30 seconds or so.</t>

</section>
<section anchor="application-to-quic-multipath"><name>Application to QUIC Multipath</name>

<t>Time Stamps are very useful in multipath environments, as mentioned
in <xref section="5" sectionFormat="of" target="MULTIPATH-QUIC"/>.</t>

</section>
</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>The Timestamp value in the TIMESTAMP frame is asserted by the sender
of the packet. Adversarial peers could chose values of the timestamp
designed to exercise side effects in congestion control algorithms
or other algorithms relying on the one-way delays. This can be
mitigated by running plausibility checks on the received values.
For example, each peer can maintain statistics not just on the
One Way Delays, but also on the differences between One Way Delays
and RTT, and detect outlier values. Peers can also compare the 
differences between timestamps in packets carrying acknowledgements and
the differences between the sending times of corresponding packets,
and detect anomalies if the delays between acknowledging packets appears
shorter than the delays when sending them.</t>

</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<t>This document registers a new value in the QUIC Transport Parameter
Registry:</t>

<t>Value:  TBD (using value 0x7158 in early deployments)</t>

<t>Parameter Name:  enable_timestamp</t>

<t>Specification:  Indicates that the connection should use TimeStamped ACK frames</t>

<t>This document also registers a new value in the QUIC Frame Type registry:</t>

<t>Value:  TBD (using value 757 in early deployments)</t>

<t>Frame Name:  TIMESTAMP</t>

<t>Specification:  Timestamp set at the time packet was sent</t>

</section>
<section anchor="acknowledgements"><name>Acknowledgements</name>

<t>Thanks to Dmitri Tikhonov, Tal Misrahi, Watson Ladd, Martin Thomson and Ian Swett
for their reviews and suggestions.</t>

</section>


  </middle>

  <back>

    <references title='Normative References'>

<reference anchor="QUIC-TRANSPORT" >
  <front>
    <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
    <author initials="J." surname="Iyengar" fullname="Jana Iyengar" role="editor">
      <organization>Fastly</organization>
    </author>
    <author initials="M." surname="Thomson" fullname="Martin Thomson" role="editor">
      <organization>Mozilla</organization>
    </author>
    <date />
  </front>
  <seriesInfo name="RFC" value="9000"/>
</reference>
<reference anchor="QUIC-RECOVERY" >
  <front>
    <title>QUIC Loss Detection and Congestion Control</title>
    <author initials="J." surname="Iyengar" fullname="Jana Iyengar" role="editor">
      <organization>Fastly</organization>
    </author>
    <author initials="I." surname="Swett" fullname="Ian Swett" role="editor">
      <organization>Google</organization>
    </author>
    <date />
  </front>
  <seriesInfo name="RFC" value="9002"/>
</reference>




<reference anchor='RFC2119' target='https://www.rfc-editor.org/info/rfc2119'>
<front>
<title>Key words for use in RFCs to Indicate Requirement Levels</title>
<author fullname='S. Bradner' initials='S.' surname='Bradner'><organization/></author>
<date month='March' year='1997'/>
<abstract><t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t></abstract>
</front>
<seriesInfo name='BCP' value='14'/>
<seriesInfo name='RFC' value='2119'/>
<seriesInfo name='DOI' value='10.17487/RFC2119'/>
</reference>



<reference anchor='RFC8174' target='https://www.rfc-editor.org/info/rfc8174'>
<front>
<title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
<author fullname='B. Leiba' initials='B.' surname='Leiba'><organization/></author>
<date month='May' year='2017'/>
<abstract><t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t></abstract>
</front>
<seriesInfo name='BCP' value='14'/>
<seriesInfo name='RFC' value='8174'/>
<seriesInfo name='DOI' value='10.17487/RFC8174'/>
</reference>




    </references>

    <references title='Informative References'>

<reference anchor="MULTIPATH-QUIC" >
  <front>
    <title>Multipath Extension for QUIC</title>
    <author initials="Y." surname="Liu" fullname="Yanmei Liu" role="editor">
      <organization>Alibaba Inc.</organization>
    </author>
    <author initials="Y." surname="Ma" fullname="Yunfei Ma">
      <organization>Alibaba Inc.</organization>
    </author>
    <author initials="Q." surname="De Coninck" fullname="Quentin De Coninck" role="editor">
      <organization>UCLouvain</organization>
    </author>
    <author initials="O." surname="Bonaventure" fullname="Olivier Bonaventure">
      <organization>UCLouvain</organization>
    </author>
    <author initials="C." surname="Huitema" fullname="Christian Huitema">
      <organization>Private Octopus Inc.</organization>
    </author>
    <author initials="M." surname="Kuehlewind" fullname="Mirja Kuehlewind" role="editor">
      <organization>Ericsson</organization>
    </author>
    <date />
  </front>
  <seriesInfo name="Internet-Draft" value="draft-ietf-quic-multipath"/>
</reference>




<reference anchor='RFC6817' target='https://www.rfc-editor.org/info/rfc6817'>
<front>
<title>Low Extra Delay Background Transport (LEDBAT)</title>
<author fullname='S. Shalunov' initials='S.' surname='Shalunov'><organization/></author>
<author fullname='G. Hazel' initials='G.' surname='Hazel'><organization/></author>
<author fullname='J. Iyengar' initials='J.' surname='Iyengar'><organization/></author>
<author fullname='M. Kuehlewind' initials='M.' surname='Kuehlewind'><organization/></author>
<date month='December' year='2012'/>
<abstract><t>Low Extra Delay Background Transport (LEDBAT) is an experimental delay-based congestion control algorithm that seeks to utilize the available bandwidth on an end-to-end path while limiting the consequent increase in queueing delay on that path.  LEDBAT uses changes in one-way delay measurements to limit congestion that the flow itself induces in the network.  LEDBAT is designed for use by background bulk-transfer applications to be no more aggressive than standard TCP congestion control (as specified in RFC 5681) and to yield in the presence of competing flows, thus limiting interference with the network performance of competing flows.  This document defines  an Experimental Protocol for the Internet community.</t></abstract>
</front>
<seriesInfo name='RFC' value='6817'/>
<seriesInfo name='DOI' value='10.17487/RFC6817'/>
</reference>



<reference anchor='RFC5905' target='https://www.rfc-editor.org/info/rfc5905'>
<front>
<title>Network Time Protocol Version 4: Protocol and Algorithms Specification</title>
<author fullname='D. Mills' initials='D.' surname='Mills'><organization/></author>
<author fullname='J. Martin' initials='J.' role='editor' surname='Martin'><organization/></author>
<author fullname='J. Burbank' initials='J.' surname='Burbank'><organization/></author>
<author fullname='W. Kasch' initials='W.' surname='Kasch'><organization/></author>
<date month='June' year='2010'/>
<abstract><t>The Network Time Protocol (NTP) is widely used to synchronize computer clocks in the Internet.  This document describes NTP version 4 (NTPv4), which is backwards compatible with NTP version 3 (NTPv3), described in RFC 1305, as well as previous versions of the protocol. NTPv4 includes a modified protocol header to accommodate the Internet Protocol version 6 address family.  NTPv4 includes fundamental improvements in the mitigation and discipline algorithms that extend the potential accuracy to the tens of microseconds with modern workstations and fast LANs.  It includes a dynamic server discovery scheme, so that in many cases, specific server configuration is not required.  It corrects certain errors in the NTPv3 design and implementation and includes an optional extension mechanism.   [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='5905'/>
<seriesInfo name='DOI' value='10.17487/RFC5905'/>
</reference>




    </references>




  </back>

<!-- ##markdown-source:
H4sIAO9UJWIAC81b63MbN5L/jr8CJ39Y+ZbkSYodx6rduqMl+aKsZCkSnVQu
m3KBMyCJaGYwAWZEcbXO3779AOZFynbq7sM5VRE5D6C70f3rJ8fjsahMlelj
+X1tEjkzufaVyksv31onL7XytTPFUl4Vevyj2shTnamNF2o+d/oeXnp/fjKe
3YrUJoXKYZXUqUU1XtWm0rka/wZrjis/PnglElXppXWbY6kfSpHCt2N5dHB0
JATsV6QfVGYLuLTRXghTumNZudpXRwcHrw+OhHJaHcuZU4UvravE3fpYnheV
doWuxqe4pRCJTYHQY1n7sfKJMaI0x/LnyiYj6eEdpxcePm1y/pDYPNdF5X8R
QtXVyrpjIenfOPyV0hT+WJ5M5LfMTHOdGT1ZOeMro4qt+9YBFdfO3AOP8iqp
bFl7oDaZNE/A0yY7lkFK/xX+ToAZIQrrclWZe40EsXhvpu9ur69uZkxiOK49
vHcsp/L96fX4jfI6lZd1Vpky0w/wGUQqb3VSO92KbY/eZ9E/nk5nZx/pgtfO
aG+KhY0yuHkLK78+ODig75+Uz3cTeb7RxVK5gXy+U4XaukWieat8lW2aa84i
Ozo1lXW797icyNnK5t4Wgz0ulatMsXWTdrm0/zBZpnZvE0V7c3Zy9cPZzU/b
kpUX1nvQ9konlbEFyfPEFkuwDvwKHytY8Q9L9Oj/h0TPJ/J2ratqsMM5aHP/
Oi3/39YuM/2EJJHLjsZevr+YnV9PZ9+OST97cmX9VNVKnj1UuvAoSHiZjuKL
Jdk3+wg4RlcLRps8bvJ5Sf80kRemHsjgJ1Xk2vRu7JBnkMw0M3M1V13rbvdo
NrlstTBuUhcL2KR740vX+34CWon6Z4rkbrju9zVgGljErid2csHbvj+5sPW9
MsUTe15N5BtbqHtYHABluOlVZu6Ndrsf+aL1d4DsZ1H2szA73ARQ5G+1XmV6
bYp0uM+lcb+qnfc/IbYzZxKPwCPG47FUc185lQCEz1YAuueXZ7ez6eW1XDjY
QSbAwlxLlaYAzpVlb1uq5E5XXq5XupDg/uQaPGyKHlbm5Hk1+Sh0f+DW9KLO
EAk1GFTw0tJ4MJEKF6zgelHnczgIu5C5SZz1OrFF6oECm+N9MddLUxTozuER
esGm+k9e6tImq7gILi5VBUQZvAhXmEzeq6iYBDI7keqFKbSnp/Z0oeaZ/tAQ
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
IFW0//4F+9S/hIs8AAA=

-->

</rfc>

