<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.23 (Ruby 3.3.6) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-thomson-scone-merge-criticisms-00" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.26.0 -->
  <front>
    <title abbrev="SCONE Criticisms">A comparative analysis of SCONE relative to TRAIN</title>
    <seriesInfo name="Internet-Draft" value="draft-thomson-scone-merge-criticisms-00"/>
    <author fullname="Martin Thomson">
      <organization>Mozilla</organization>
      <address>
        <email>mt@lowentropy.net</email>
      </address>
    </author>
    <date year="2025" month="February" day="05"/>
    <area/>
    <workgroup>Standard Communication with Network Elements</workgroup>
    <keyword>next generation</keyword>
    <keyword>unicorn</keyword>
    <keyword>sparkling distributed ledger</keyword>
    <abstract>
      <?line 39?>

<t>A merge of the rate availability signaling schemes in the SCONE and TRAIN proposals is analysed and found to be infeasible.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://martinthomson.github.io/scone-merge-criticisms/draft-thomson-scone-merge-criticisms.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-thomson-scone-merge-criticisms/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Standard Communication with Network Elements  mailing list (<eref target="mailto:scone@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/scone"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/scone/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/martinthomson/scone-merge-criticisms"/>.</t>
    </note>
  </front>
  <middle>
    <?line 43?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>There are a few items where we might need to discuss the advantages of SCONE <xref target="SCONE"/>, but overall there are not a lot of advantages to the proposed design over the one that TRAIN <xref target="TRAIN"/> proposes.</t>
      <t>The idea that these designs might be merged does not make a lot of sense. The two designs are largely incompatible, as each relies on a fundamentally different mechanism.</t>
      <t>The one major question about the nature of the signal is separable from a decision about how to design the signaling mechanism.</t>
    </section>
    <section anchor="communication-model">
      <name>Communication Model</name>
      <t>TRAIN is symmetric.  SCONE is initiated by a client only.</t>
      <t>TRAIN is negotiated as part of a connection.  SCONE is unilaterally implemented by clients.</t>
      <t>TRAIN endpoints coalesce a carriage packet with other packets, network elements modify the payload of that carriage.</t>
      <t>SCONE requires that clients announce their willingness to receive signals to network elements.  Thereafter network elements can send a signal any time to that client.</t>
      <section anchor="analysis">
        <name>Analysis</name>
        <t>Like ECN, TRAIN signals follow the flow in the direction in which it might be affected. SCONE signals flow in the reverse direction, which means that if flows take a different path in each direction, the wrong set of network elements are involved.</t>
        <t>SCONE packets have far weaker authentication. Once a packet is captured, any entity can generate a packet that will be accepted.  In comparison, a TRAIN packet is carried along with real packets and so is only good for approximately as long as it takes to get to its destination.  Spoofing requires that the packet be raced.</t>
        <t>The requirement for negotiation in TRAIN makes it a tiny bit more complex.  However, it also means that both client and server agree to its use before it is used.  Negotiation is necessary to enable coalescing in TRAIN.  Whether this is an advantage to TRAIN or SCONE seems subjective.</t>
        <t>Arguably that a network element can send an updated signal at any time is an advantage for SCONE.</t>
      </section>
    </section>
    <section anchor="signal">
      <name>Signal</name>
      <t>TRAIN presently proposes a signal that carries a choice from an (as-yet-unspecified) selection of 64 options.  That’s not a lot.</t>
      <t>SCONE has a 32-bit rate (in kbps) and a window (in ms), which is massively more flexible.</t>
      <section anchor="analysis-1">
        <name>Analysis</name>
        <t>This is not a serious difference.  TRAIN could change to accommodate a richer signal, but that comes with costs, see <xref target="processing"/>.</t>
      </section>
    </section>
    <section anchor="processing">
      <name>Network Element Processing</name>
      <t>TRAIN requires processing similar to ECN: network elements recognize opportunities to send signals when they receive packets for forwarding. Sending a signal involves the flipping of a few bits.  This is designed to require no state and be as simple as possible to process, such that it could be done easily at line rate.  This is a strong reason to limit the expressiveness of the signal: a more complex signal would be harder to apply.</t>
      <t>SCONE involves establishing state at a network element, with the network element sending a signal any time it chooses.  Generating the signal requires the use of an AEAD.  In practice, this is likely a few packets for new flows, then a few any time the flow characteristics at the element change.</t>
      <section anchor="analysis-2">
        <name>Analysis</name>
        <t>SCONE requires that network elements generate new packets, including spoofing the source IP address.  TRAIN only depends on packet modification.</t>
        <t>SCONE requires that network elements remember an address tuple and client connection ID so that they can provide updates.  TRAIN can be processed without any state.</t>
        <aside>
          <t>Elements might benefit from recognizing a flow as QUIC and remembering it to manage <eref target="https://github.com/martinthomson/train-protocol/issues/32">this issue</eref>.  However, that issue might be resolved by a modest protocol change instead.</t>
        </aside>
        <t>SCONE exposes network elements to weird attacks if they don’t maintain additional state.  They can be sent SCONE packets without an associated QUIC flow, which might cause the network element to spend effort on sending packets to a spoofed source address.  Given spoofed SCONE packets, those generated packets go to a destination of the attacker’s choice.  The time frame over which those packets are likely spread means that this is unlikely to be a significant amplification in terms of packet rate.  That might make DoS using this vulnerability less appealing, but it is worth noting as it has no upper bound in quantity.</t>
      </section>
    </section>
    <section anchor="miscellaneous-scone-problems">
      <name>Miscellaneous SCONE Problems</name>
      <t>There are a few things in SCONE that probably could be improved.  None of these really have a bearing on the overall solution.</t>
      <section anchor="packet-protection">
        <name>Packet Protection</name>
        <t>SCONE defines packet protection for the packet that a client sends.  Network elements do not need to decrypt or authenticate packets – the information they need from that packet is not protected – but that’s not obvious from the specification.</t>
        <t>Protection of signals from network elements provides no meaningful security value.  The value is in resilience to accidentally interpreting garbage packets as a signal and the AEAD is definitely better than the UDP checksum at detecting transmission errors.  However, those same benefits might be realized more cheaply by other means.</t>
      </section>
      <section anchor="forwarding-bit">
        <name>Forwarding Bit</name>
        <t>SCONE packets include a forward bit, which – if set – requests that network elements drop the packet. This requires exceptional processing by a network element, other than simply recognizing the packet.  That requirement might take all SCONE packets of the fast path in elements.</t>
        <t>It seems like the point of this is to enable the targeting of a first-hop network element.  However, this assumes that the application of rate limits is done by something on that first network segment.  That’s true in a lot of cases, but this is a bad assumption.  The same might be more easily achieved by altering the IP TTL instead, with greater targeting precision.</t>
        <t>Alternatively, this feature might be used to probe whether a path supports SCONE: if a forward=0 packet makes it to the other end, it might feed that information back.  Two things though:</t>
        <ul spacing="normal">
          <li>
            <t>This feature on its own probably wouldn’t be enough to justify a server implementation.</t>
          </li>
          <li>
            <t>Network elements aren’t required to drop these packets.</t>
          </li>
        </ul>
        <t>TRAIN gets this capability for free.  An endpoint that receives an unmodified TRAIN packet might infer that the path doesn’t support TRAIN.</t>
      </section>
      <section anchor="source-connection-id-on-signals">
        <name>Source Connection ID on Signals</name>
        <t>SCONE insists on a random source connection ID from network elements.  To start with, this might cause things to drop the signals if they expect a particular source connection ID.  Also, as there is no ongoing communication, this could just swap source and destination connection ID from the original. That would strengthen protection against spoofing (many clients do not use connection IDs for QUIC packets they receive) at a small cost in maintained state.  However, any spoofing protection thus gained would not be assured, as there is no minimum entropy for connection IDs in either direction.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Requiring this section is perhaps no longer sensible, when due consideration is given to the topic of security throughout, as is the case with this document.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-informative-references">
      <name>Informative References</name>
      <reference anchor="SCONE">
        <front>
          <title>A new QUIC version for network property communication</title>
          <author fullname="Matt Joras" initials="M." surname="Joras">
            <organization>Meta Platforms, Inc.</organization>
          </author>
          <author fullname="Marcus Ihlar" initials="L. M." surname="Ihlar">
            <organization>Ericsson</organization>
          </author>
          <date day="21" month="October" year="2024"/>
          <abstract>
            <t>   This document describes a new QUIC version.  The proposed wire format
   and a set of procedures can be used to communicate throughput advice
   between an endpoint and an on-path network element.  Throughput
   advice are sent in QUIC packets of a new QUIC version.  These QUIC
   packets are sent adjecent to established QUIC version 1 and 2
   connections, within the same UDP 4-tuple.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-joras-scone-quic-protocol-00"/>
      </reference>
      <reference anchor="TRAIN">
        <front>
          <title>Transparent Rate Adaptation Indications for Networks (TRAIN) Protocol</title>
          <author fullname="Martin Thomson" initials="M." surname="Thomson">
            <organization>Mozilla</organization>
          </author>
          <author fullname="Christian Huitema" initials="C." surname="Huitema">
            <organization>Private Octopus Inc.</organization>
          </author>
          <author fullname="Kazuho Oku" initials="K." surname="Oku">
            <organization>Fastly</organization>
          </author>
          <date day="14" month="October" year="2024"/>
          <abstract>
            <t>   On-path network elements can sometimes be configured to apply rate
   limits to flows that pass them.  This document describes a method for
   signaling to endpoints that rate limiting policies are in force and
   approximately what that rate limit is.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-thomson-scone-train-protocol-00"/>
      </reference>
    </references>
    <?line 136?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Christian Huitema provided useful feedback, but does not necessarily endorse its message.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA51ZzW7kNhK+6ykIz2Vm4W4HyWIPBrKI45kkBjKT2YyDPSz2
wJaoFmOJVEjKPZ2BgbzDnvb18iT7VRUpqW0HCPZguy2RrGL9fPVV9WazqZJN
vblUZ1eq9sOog0723ijtdH+MNirfqg/XP7x7o4Lp5VXy6vbHq5t3Z5Xe7YK5
x15ZcR1ssrWNQzyrap3M3ofjpbKu9VXV+NrpAXKaoNu0SZ0fonebWHtnNoMJ
e7Op5+2bzz6r4rQbbIzWu3Qcse/mze03Sr1Quo8eEq1rzGjwy6Wzc3VmGpt8
sLqnf26uvsYfH/Dpx9tvzio3DTsTLqsGOl1WkBiNi1O8VClMpoL+X1Q6GI1T
z6qDD3f74KeRbpW0a3Ro1LUfhslZ3AnqqINNnXpnEi1Vb3ozQAfc+M4c8aS5
rNRGOfMxqb1xJvAWekT7feCPEVa+663bq8bGFOxuSqZRvWn2JlT3xk3QUqn/
TwulxFxn9HHQtsdHNvJX1qR268OeXuhQd3jRpTTGy4sLWkeP4N1tWXZBDy52
wR+iueATaOMeUqcdtg46JOuyGy+edyNtQMyYmE5krTZu5byt9X9wxMWfCZdt
l4b+rKr0hHWBHADBSrVT30vMnb1loepWjjnj17ijdvZXtualeut/tX2v+Y3J
dhvSV70/wK7Bj8etMwkynA8Dp8FlVVFkz/8pSRME6ub19mcfdMza/jLZejMG
n3zteyzj3JFlp9dKQVu3rKyqzWaj9A4RoutUVVeK700JmTqjEFnI0nvy3M72
Nh1VtHskLYVVrDvEQ0Tq8VLJTkSRyFYQMfqIRFLIb0l0xB+9b/2E30jwnaG8
NTraXW+2ospgm6Y3VfVC3ZBJmqnm2K5uOxOgCv2o1hyUTWaI6sBPDwbb9l1C
Rhg+GBFfTzGyXrq51y7pvVmhzKdP/Pfh4VwhLZS/Rwr1PS3PMpxPkNPjN/as
TsDZdKbcDbIaQ/bgA/gFLIy/OmUbfPrEfx8eyo645Zso2xgtC7ErmnxOzNeA
XdgLON9DKCkz6DuzaETQYraKTkJqzrtJc6TY3vRHGJaBNpFpz5WOyui6I3i1
ZAhHVoQXNCU0rn6EydoWt3cQZeoOMRuHrCvdadAINvXLhCwjWNA7P7Hqyuk0
hTlcJDjI4dEQyEO2aoMfIK0xyKJlb+cP7Cix37KXAmutwItHgPTWNwZRK+Yl
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

-->

</rfc>
