<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="3"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<rfc category="info" docName="draft-du-quic-store-and-forward-00"
     ipr="trust200902">
  <front>
    <title abbrev="Store-and-forward in QUIC">Delayed Transmission and
    Store-and-forward in QUIC</title>

    <author fullname="Zongpeng Du" initials="Z." surname="Du">
      <organization>China Mobile</organization>

      <address>
        <postal>
          <street>No.32 XuanWuMen West Street</street>

          <city>Beijing</city>

          <code>100053</code>

          <country>China</country>
        </postal>

        <email>duzongpeng@foxmail.com</email>
      </address>
    </author>

    <date month="" year=""/>

    <area>WIT Area</area>

    <workgroup>QUIC Working Group</workgroup>

    <keyword>Delayed Transmission, Store-and-forward, QUIC</keyword>

    <abstract>
      <t>This document describes two mechanisms in QUIC. The first is the
      delayed transmission, in which the sender would negotiate a proper time
      to send traffic to the receiver. The second is the store-and-forward, in
      which the sender would send the traffic to another place that supports
      temporary data store and data upload instead of the sender.</t>
    </abstract>

    <note title="Requirements Language">
      <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">RFC 2119</xref>.</t>
    </note>
  </front>

  <middle>
    <section title="Introduction">
      <t>In today's Internet, some software update work can be scheduled on
      the evening so that normal work will not be disturbed. However, it is
      downstream traffic that from the cloud to the client. In future, an
      agentic Internet would appear, where more upstream traffic would emerge.
      The agentic APP would trigger more upstream traffic that needs to be
      uploaded to the cloud. For the communication between the Agents, some
      use cases and requirements for AI Agent protocols are introduced in
      <xref target="I-D.rosenberg-ai-protocols"/>. </t>

      <t>The AI Agents are considered to be more intelligent than normal
      devices. If the upload speed is slow due to limited available bandwidth,
      they should support delaying the upload job and restarting it in a
      proper time. Also, if the network can provide a temporary data store
      service, the AI Agents can choose to upload the data to a temporary
      place, which works as a proxy for the upload job. For example, an MEC
      node can provide this store-and-forward service. The client can upload
      the data to an MEC, and then the MEC uploads the data to the cloud in a
      proper time.</t>

      <t>This document suggests making some extension to QUIC <xref
      target="RFC9000"/> to support the delayed transmission and the
      store-and-forward. The client and the server should all support the
      extension to enable the time-shifted upload.&#8204;</t>
    </section>

    <section anchor="DelayedTransmission"
             title="Procedure of Delayed Transmission">
      <t>The performance of upload work is mainly related the load of the
      nodes and links along the path between the client and the server. It may
      include the user network, the operator network, and the cloud network.
      If anyone of the networks becomes congested, the upload performance
      would be influenced.</t>

      <t>In this case, the client can negotiate with the server about the
      execution time of the upload task. An example procedure is introduced as
      follows, in which a client needs to upload some data to the server.</t>

      <t><list style="numbers">
          <t>The client decides to delay the transmission due to the poor
          performance when executing the upload task. It wants to restart the
          task after a while.</t>

          <t>The client sends a packet including the task information, for
          example, the total size of the data, the expected complete time of
          the task, etc., to the server. Meanwhile, the packet also includes
          information to show the intent to trigger the delayed transmission
          mechanism.</t>

          <t>After receiving the packet, the server may respond another packet
          including a suggested restart time.</t>

          <t>The client receives the response packet from the server, and acts
          accordingly. When the restart time comes, the client restarts the
          task and uploads the data.</t>
        </list>We need to extend some new frames in QUIC to carry the
      information in the step 2 and the step 3. </t>

      <t> </t>
    </section>

    <section anchor="Store-and-forward" title="Procedure of Store-and-forward">
      <t>In this case, the client can negotiate with the server in the cloud
      about the proxy of the upload task. An example procedure is introduced
      as follows, in which a client needs to upload some data to the server by
      using a proxy.</t>

      <t><list style="numbers">
          <t>The client connects the server in the cloud, and starts the
          upload task. Due to the poor performance, The client decides to find
          a proxy for the task.</t>

          <t>The client sends a packet including the task information, for
          example, the total size of the data, the expected complete time of
          the task, etc., to the server in the cloud. Meanwhile, the packet
          also includes information to show the intent to trigger the
          store-and-forward mechanism, and optionally the address of the
          store-and-forward server.</t>

          <t>The server in the cloud receives the packet, and responds another
          packet including information about the store-and-forward server, for
          example, the address of the store-and-forward server, which means
          the server in the cloud agrees with triggering the store-and-forward
          mechanism.</t>

          <t>The client receives the response packet from the server in the
          cloud. Accordingly, the client connects the store-and-forward
          server, and uploads the data. The client can send a packet including
          the task information to the store-and-forward server. Meanwhile, the
          packet also includes information about the server in the cloud.</t>

          <t>The store-and-forward server uploads the data to the server in
          the cloud.</t>
        </list>Similarly, we need to extend some new frames in QUIC to carry
      the information in the procedure. Besides, the server in the cloud can
      issue a token to the client in the response packet of the step 3. The
      token can be provided to the store-and-forward server in the step 4, and
      be provided to the server in the cloud in the step 5 to make a
      verification.</t>
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <t>TBD.</t>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t>TBD.</t>
    </section>

    <section anchor="Acknowledgements" title="Acknowledgements">
      <t>TBD.</t>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      <?rfc include="reference.RFC.2119"?>

      <?rfc include="reference.RFC.9000"?>
    </references>

    <references title="Informative References">
      <?rfc include="reference.I-D.rosenberg-ai-protocols"?>
    </references>
  </back>
</rfc>
