<?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.29 (Ruby 3.3.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-mboned-cbacc-06" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="CBACC">Circuit Breaker Assisted Congestion Control</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-mboned-cbacc-06"/>
    <author initials="J." surname="Holland" fullname="Jake Holland">
      <organization>Akamai Technologies, Inc.</organization>
      <address>
        <postal>
          <street>145 Broadway</street>
          <city>Cambridge, MA 02144</city>
          <country>United States of America</country>
        </postal>
        <email>jakeholland.net@gmail.com</email>
      </address>
    </author>
    <author initials="K." surname="Rose" fullname="Kyle Rose">
      <organization>Akamai Technologies, Inc.</organization>
      <address>
        <postal>
          <street>145 Broadway</street>
          <city>Cambridge, MA 02144</city>
          <country>United States of America</country>
        </postal>
        <email>krose@krose.org</email>
      </address>
    </author>
    <author initials="M." surname="Franke" fullname="Max Franke">
      <organization>TU Berlin</organization>
      <address>
        <postal>
          <country>Germany</country>
        </postal>
        <email>mfranke@inet.tu-berlin.de</email>
      </address>
    </author>
    <date year="2025" month="October" day="17"/>
    <area>Ops</area>
    <workgroup>Mboned</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 171?>

<t>This document specifies Circuit Breaker Assisted Congestion Control (CBACC).
CBACC enables fast-trip Circuit Breakers by publishing rate metadata about multicast channels from senders to intermediate network nodes or receivers.
The circuit breaker behavior is defined as a supplement to receiver driven congestion control systems, to preserve network health if misbehaving or malicious receiver applications subscribe to a volume of traffic that exceeds capacity policies or capability for a network or receiving device.</t>
    </abstract>
  </front>
  <middle>
    <?line 177?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This document defines Circuit Breaker Assisted Congestion Control (CBACC).
CBACC defines a Network Transport Circuit Breaker (CB), as described by <xref target="RFC8084"/>.</t>
      <t>The CB behavior defined in this document uses bit-rate metadata about multicast data streams coupled with policy, capacity, and load information at a network location to prune multicast channels so that the network's aggregate capacity at that location is not exceeded by the subscribed channels.</t>
      <t>To communicate the required metadata, this document defines a YANG <xref target="RFC7950"/> module that augments the DORMS <xref target="I-D.draft-ietf-mboned-dorms"/> YANG module.
DORMS provides a mechanism for senders to publish metadata about the multicast streams they're sending through a RESTCONF service, so that receivers or forwarding nodes can discover and consume the metadata with a set of standard methods.
The CBACC metadata MAY be communicated to receivers or forwarding nodes by some other method, but the definition of any alternative methods is out of scope for this document.</t>
      <t>The CB behavior defined in this document matches the description provided in Section 3.2.3 of <xref target="RFC8084"/> of a unidirectional CB over a controlled path.
The control messages from that description are composed of the messages containing the metadata required for operation of the CB.</t>
      <t>CBACC is designed to supplement protocols that use IP multicast and rely on well-behaved receivers to achieve congestion control.
Examples of congestion control systems fitting this description include <xref target="PLM"/>, <xref target="RLM"/>, <xref target="RLC"/>, <xref target="FLID-DL"/>, <xref target="SMCC"/>, and WEBRC <xref target="RFC3738"/>.</t>
      <t>CBACC addresses a problem with "overjoining" by untrusted receivers.</t>
      <t>In an overjoining condition, receivers (either malicious, misconfigured, or with implementation errors) subscribe to multicast channels but do not respond appropriately to congestion.
When sufficient multicast traffic is available for subscription by such receivers, this can overload any network.</t>
      <t>The overjoining problem is relevant to misbehaving receivers for both receiver-driven and feedback-driven congestion control strategies, as described in Section 4.1 of <xref target="RFC8085"/>.</t>
      <t>Overjoining attacks and the challenges they present are discussed in more detail in <xref target="ref-overjoining"/>.</t>
      <t>CBACC follows Section 4 of <xref target="RFC8085"/>, which recommends the use of circuit breakers even where congestion control is optional.</t>
      <section anchor="background-and-terminology">
        <name>Background and Terminology</name>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" 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 anchor="venue">
        <name>Venues for Contribution and Discussion</name>
        <t>This document is in the Github repository at:</t>
        <t>https://github.com/GrumpyOldTroll/ietf-dorms-cluster</t>
        <t>Readers are welcome to open issues and send pull requests for this document.</t>
        <t>Please note that contributions may be merged and substantially edited, and as a reminder, please carefully consider the Note Well before contributing: https://datatracker.ietf.org/submit/note-well/</t>
        <t>Substantial discussion of this document should take place on the MBONED working group mailing list (mboned@ietf.org).</t>
        <ul spacing="normal">
          <li>
            <t>Join: https://www.ietf.org/mailman/listinfo/mboned</t>
          </li>
          <li>
            <t>Search: https://mailarchive.ietf.org/arch/browse/mboned/</t>
          </li>
        </ul>
      </section>
      <section anchor="non-obvious-doc-choices">
        <name>Non-obvious doc choices</name>
        <ul spacing="normal">
          <li>
            <t>TBD: might need more and better examples explaining the point in <xref target="ordering"/>?  Some reason to believe it's not sufficiently clear...</t>
          </li>
          <li>
            <t>Another TBD: consider Dino's suggestion from 2020-04-09 to include an operational considerations section that addresses some possible optimizations for CB placement and configuration.</t>
          </li>
          <li>
            <t>TBD: add a section walking through the requirements in <eref target="https://datatracker.ietf.org/doc/html/rfc8084#section-4">https://datatracker.ietf.org/doc/html/rfc8084#section-4</eref> and explaining how this matches. --&gt; The MUST in 2. does not seem to fit here</t>
          </li>
          <li>
            <t>I'm unclear on whether <eref target="https://datatracker.ietf.org/doc/html/rfc8407#section-3.8.2">https://datatracker.ietf.org/doc/html/rfc8407#section-3.8.2</eref> applies here, such that providing an augmentation inside the DORMS namespace causes an update to the DORMS document.</t>
          </li>
          <li>
            <t>TBD: What should happen if a new join would lead to exceeding the capacity?
 When is the data from DORMS pulled?
 Probably before the group gets joined.
 Current behavior is quite reactive is there any reason to not be proactive (as well)?</t>
          </li>
          <li>
            <t>TBD: Should we in general move away from the circuit breaker model? It seems like there is more hassle with trying to fit it than is worth</t>
          </li>
          <li>
            <t>TBD: Should there be groups instead of priorities?
 I.e., senders can specify that certain groups only make sense if they are all received in an all or nothing manner.
 Or should there be both?</t>
          </li>
          <li>
            <t>TBD: Discuss timescale of trigger function per Brians comments
# Circuit Breaker Behavior</t>
          </li>
        </ul>
      </section>
      <section anchor="functional-components">
        <name>Functional Components</name>
        <t>This section maps the functional components described in Section 3.1 of <xref target="RFC8084"/> to the operational components of the CBACC CB defined by this document.</t>
        <t>It should be noted, that CBACC changes some of the architectural assumptions made in <xref target="RFC8084"/>, which are also detailed in the following sections.</t>
        <section anchor="bit-ad">
          <name>Bitrate Advertisement</name>
          <t>The metadata provides an advertised maximum data bit-rate, namely the "max-speed" field in the YANG model in <xref target="ref-yang"/>.
This is a self-report by the sender about the maximum amount of traffic a sender will send within any time interval given by the "data-rate-window" field, which is the measurement interval for the CB.
This value refers to the total IP Payload data for all packets in the same (S,G), and its units are in kilobits per second.</t>
          <t>The sender MUST NOT send more data for a data stream than the amount of data declared according to its advertised data rate within any measurement window, and it's RECOMMENDED for the sender to provide some margin to account for the possibility of burst forwarding after traffic encounters a non-empty queue, e.g. as sometimes observed with ACK compression (see <xref target="ZSC91"/> for a description of the phenomenon).
If a CB node observes a higher data rate transmitted within any measurement window, it MAY circuit-break that flow immediately.</t>
          <t>In the terminology of <xref target="RFC8084"/>, the bitrate advertisement qualifies as an ingress meter.
It should be noted, that unlike other CBs, the ingress meter does not actively measure any network traffic.
It rather just requests the metadata provided by the sender.</t>
        </section>
        <section anchor="cb-node">
          <name>Circuit Breaker Node</name>
          <t>A circuit breaker node (CB node) is a location in a network where the constraints of the network and the observations about active traffic are compared to the bitrate advertisement in order to make the decision loop about when and whether to perform the circuit breaking behavior.
In the terminology of <xref target="RFC8084"/>, the CB node qualifies as an egress meter.
Unlike other CBs, the egress meter is located at the same location, e.g. router, as the ingress meter.
This means that while it might seem that the reaction to the trigger function is applied to the egress, it is still simultaneously applied to the ingress.</t>
          <t>The CB node has access to several pieces of information that can be used as relevant egress metrics that may include:</t>
          <ol spacing="normal" type="1"><li>
              <t>Physical capacity limits on each interface.</t>
            </li>
            <li>
              <t>Configured capacity limits for multicast traffic for each interface.</t>
            </li>
            <li>
              <t>The observed received data rates of subscribed multicast channels with CBACC metadata.</t>
            </li>
            <li>
              <t>The observed received data rates of subscribed multicast channels without CBACC metadata.</t>
            </li>
            <li>
              <t>The observed received data rates of competing non-multicast traffic.</t>
            </li>
            <li>
              <t>The loss rate for subscribed multicast channels, when available.
The loss rate is only sometimes observable at a CB node; for example, when using AMBI <xref target="I-D.draft-ietf-mboned-ambi"/>, or when the data stream carries a protocol that is known to the CB node by some out of band means, and whose traffic can be monitored for loss.
When available, the loss rates may be used.</t>
            </li>
          </ol>
          <t>Note that any on-path router can behave as a CB node, even though there may be other CB nodes downstream or upstream covering the same data streams.
When viewing CB nodes as egress meters in the context of <xref target="RFC8084"/>, it's important to recall there's not a single egress meter in the network, but rather an egress meter per CB node, representing potentially multiple overlaid circuit breakers that may redundantly cover parts of the same path, with potentially different constraints based on the network location where the egress meter operates.
All of the CB nodes anywhere on a path constitute separate circuit breakers that may trip independently of other circuit breakers.</t>
          <t>Also note that other kinds of components besides on-path routers forwarding the traffic can act as CB nodes, for example the operating system or browser on a device receiving the traffic, or the receiving application itself.</t>
        </section>
        <section anchor="communication-method">
          <name>Communication Method</name>
          <t>CBACC generally operates at a CB node, where metrics such as those described in <xref target="cb-node"/> are available through system calls, or by communication with various locally deployable system monitoring applications.
However, the CBACC processing can equivalently occur on a separate device that can monitor statistics gathered at a CB node, as long as the necessary control functions to trigger the CB can be invoked.</t>
          <t>The communication path defined in this document for the CB node to obtain the bitrate advertisement in <xref target="bit-ad"/> is the use of DORMS <xref target="I-D.draft-ietf-mboned-dorms"/>.
Other methods MAY be used as well or instead, but are out of scope for this document.</t>
        </section>
        <section anchor="measurement-function">
          <name>Measurement Function</name>
          <t>The measurement function maintains a few values for each interface, computed from the metrics described in <xref target="cb-node"/> and <xref target="bit-ad"/>:</t>
          <ol spacing="normal" type="1"><li>
              <t>The aggregate advertised maximum bit-rate capacity consumed by CBACC data streams.
This is the sum of the max-speed values in the CBACC metadata for all data streams subscribed through an interface</t>
            </li>
            <li>
              <t>An oversubscription threshold for each interface.
The oversubscription threshold will be determined differently for CB nodes in different contexts.
In some network devices, it might be as simple as an administratively configured absolute value or proportion of an interface's capacity.
For other situations, like a CB node operating in a context with loss visibility, it could be a dynamically changing value that grows when data streams are successfully subscribed and receiving data without loss, and shrinks as loss is observed across subscribed data streams.
The oversubscription threshold calculation could also incorporate other information like out-of-band path capacity measurements with bandwidth detection techniques such as <xref target="PathChirp"/> or <xref target="CapProbe"/>.  </t>
              <t>
This document covers some non-normative examples of valid oversubscription threshold functions in <xref target="ref-oversubscribe-thresh"/>.
In general, the oversubscription threshold is the primary parameter that different CBs in different contexts can tune to provide the safety guarantees necessary for their context.</t>
            </li>
          </ol>
        </section>
        <section anchor="trigger-function">
          <name>Trigger Function</name>
          <t>The trigger function fires when the aggregate advertised maximum bit-rate exceeds the oversubscription threshold for any interface.</t>
          <t>When oversubscribed, the trigger function changes the states of subscribed channels to "blocked" until the aggregate subscribed bit-rate is below the oversubscription threshold again.</t>
          <section anchor="ordering">
            <name>Fairness and Inter-flow Ordering</name>
            <t>The trigger function orders the monitored flows according to a fairness function and a within-sender priority ordering (chosen by the sender as part of the CBACC metadata).
When flows are blocked, they're blocked in order until the aggregate bitrate of the permitted flows do not exceed the oversubscription thresholds monitored by the CB node.</t>
            <t>Flows from a single sender MUST be ordered according to their priority field from the CBACC metadata when compared with each other.  This takes precedence over the fairness function ordering, since certain flows from the same sender may need strict priority over others.</t>
            <t>For example, consider a sender using File Delivery over Unidirectional Transport (FLUTE, defined in <xref target="RFC6726"/>) that sends File Delivery Table (FDT) Instances (see section 3.2 of <xref target="RFC6726"/>) in one (S,G) and data for the various referenced files in other (S,G)s.
In this case the data for the files will not be consumable without the (S,G) containing the FDT.
Other transport protocols may similarly send control information (often with a lower bitrate) on one channel, and data information on another.
In these cases, the sender may need to ensure that data channels are only available when the control channels are also available.</t>
            <t>When comparing flows between senders, (S,G)s from the same sender with different priorities should be treated as aggregated (S,G)s with regard to their declared bitrate consumption, to ensure that if any flows from the same sender need to be pruned by the circuit-breaker, the least preferred priority flows from that sender are pruned first.</t>
            <t>Between-sender flows and flows from the same sender with the same priority are ordered according to the fairness function.  TBD: need to work thru detsils, this does not work as written.  Sample fairness function would reward senders for splitting a flow in 2 (more total subscribers).  Maybe should count offload instead?  This has trouble from favoring padding in your flow, but is (i think?) dominated by subscriber count where that's known.
The fairness function can be different for CBs in different contexts.</t>
            <t>A CBACC CB implementation SHOULD provide mechanisms for administrative controls to configure explicit biases, as this may be necessary to support Service Level Agreements for specific events or providers, or to block or de-prioritize channels with historically known misbehavior.</t>
            <t>Subject to the above constraints, where possible the default fairness behavior SHOULD favor streams with many receivers over streams with few receivers, and streams with a low bit-rate over streams with a high bit-rate.  See <xref target="fairness"/> for further considerations and examples.</t>
          </section>
        </section>
        <section anchor="reaction">
          <name>Reaction</name>
          <t>When the trigger function fires and a subscribed channel becomes blocked, the reaction depends on whether it's an upstream interface or a downstream interface.</t>
          <t>If a channel is blocked on one or more downstream interfaces, it may still be unblocked on other downstream interfaces.
When this is the case, traffic is simply not forwarded along blocked interfaces, even though clients might still be joined downstream of those interfaces.</t>
          <t>When a channel is blocked on all downstream interfaces or when the upstream interface is oversubscribed, the channel is pruned so that data no longer arrives from the network on the upstream interface.
The prune would be performed with a PIM prune (Section 3.5 of <xref target="RFC7761"/>), or a "leave" operation to be communicated via IGMP, MLD, or another multicast group signaling mechanism, according to the expected signaling within the network.</t>
          <t>Once initially pruned, a flow SHOULD remain pruned for a minimum amount of time.
The minimum hold-down duration SHOULD be no less than 2.5 minutes by default, even if available bitrate space clears up, to ensure downstream subscriptions will notice and respond.
The hold-down duration SHOULD be extended from the minimum by a randomly chosen number of seconds uniformly distributed over a configurable desynchronization period, to avoid synchronized recovery of different circuit breakers along the path.
The default length of the desynchronization period should be at least 30 seconds.</t>
          <t>2.5 minutes is chosen to exceed the default maximum lifetime of 2 minutes that can occur if an IGMP responder suddenly stops operation, and ceases responding to IGMP queries with membership reports, and 30 seconds is chosen to allow for some flexibility in lost packets.
The values MAY be administratively tuned as needed by network operators to meet performance goals specific to their networks or to the traffic they're forwarding.</t>
          <t>When enough capacity is available for a circuit-broken stream to be unblocked and the circuit-breaker hold-down time is expired, flows SHOULD be unblocked according to the priority order until no more flows can be unblocked without exceeding the circuit breaker limits.</t>
        </section>
        <section anchor="feedback-control-mechanism">
          <name>Feedback Control Mechanism</name>
          <t>The bitrate advertisement metadata from <xref target="bit-ad"/> should be refreshed as needed to maintain up to date values.
When using DORMS and RESTCONF, the Subscription to YANG Notifications for Datastore Updates <xref target="RFC8641"/> is the preferred method to receive changes if available.</t>
          <t>If datastore subscriptions are not supported by the client or server, the HTTP Cache Control headers provide valid refresh time properties from the server, and SHOULD be used if present.
If No-Cache is used, the default refresh timing SHOULD be 30 seconds.
A uniformly distributed random value between 0 and 10 seconds SHOULD be added to the Cache Control or the default refresh timing to avoid synchronization across multiple clients.</t>
        </section>
      </section>
      <section anchor="states">
        <name>States</name>
        <section anchor="interface-state">
          <name>Interface State</name>
          <t>A CB holds the following state for each interface, for both the inbound and outbound directions on that interface:</t>
          <ul spacing="normal">
            <li>
              <t>aggregate bandwidth:  The sum of the bandwidths of all non-circuit-broken CBACC flows that transit this interface in this direction.</t>
            </li>
            <li>
              <t>bandwidth limit:  The maximum aggregate CBACC advertised bandwidth allowed, not including circuit-broken flows.  </t>
              <t>
When reducing the bandwidth limit due to congestion, the circuit breaker SHOULD NOT reduce the limit by more than half its value in 10 seconds, and SHOULD use a smoothing function to reduce the limit gradually over time.  </t>
              <t>
It is RECOMMENDED that no more than half the capacity for a link be allocated to CBACC flows if the link might be shared with unicast traffic that is responsive to congestion.</t>
            </li>
          </ul>
        </section>
        <section anchor="flow-state">
          <name>Flow State</name>
          <t>Data streams with CBACC metadata have a state for the upstream interface through which the stream is joined:</t>
          <ul spacing="normal">
            <li>
              <t>'subscribed'<br/>
Indicates that the circuit breaker is subscribed upstream to the flow and forwarding packets through zero or more egress interfaces.</t>
            </li>
            <li>
              <t>'pruned'<br/>
Indicates that the flow has been circuit-broken.
A request to unsubscribe from the flow has been sent upstream, e.g. a PIM prune (Section 3.5 of <xref target="RFC7761"/>) or a "leave" operation communicated via IGMP, MLD, or another group membership management mechanism.</t>
            </li>
          </ul>
          <t>Data streams also have a per-interface state for downstream interfaces with subscribers, where the data is being forwarded.
It's one of:</t>
          <ul spacing="normal">
            <li>
              <t>'forwarding'<br/>
Indicates that the flow is a non-circuit-broken flow in steady state, forwarding packets downstream.</t>
            </li>
            <li>
              <t>'blocked'<br/>
Indicates that data packets for this flow are NOT forwarded downstream via this interface.</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="implementation-design-considerations">
        <name>Implementation Design Considerations</name>
        <section anchor="ref-oversubscribe-thresh">
          <name>Oversubscription Thresholds</name>
          <t>TBD.</t>
        </section>
        <section anchor="fairness">
          <name>Fairness Functions</name>
          <t>As an example fairness function that makes good sense for a general case of unknown traffic:</t>
          <t>Consider a network where the receiver count for multicast channels is known, for example via the experimental PIM extension for population count defined in <xref target="RFC6807"/>.</t>
          <t>A good fairness metric for a flow is max-bandwidth divided by receiver-count, with lower values of the fairness metric favored over higher values.</t>
          <t>An overview of some other approaches to appropriate fairness metrics is given in Section 2.3 of <xref target="RFC5166"/>.</t>
        </section>
      </section>
    </section>
    <section anchor="ref-yang">
      <name>YANG Module</name>
      <section anchor="tree-diagram">
        <name>Tree Diagram</name>
        <t>The tree diagram below follows the notation defined in <xref target="RFC8340"/>.</t>
        <artwork><![CDATA[
module: ietf-cbacc

  augment /dorms:dorms/dorms:metadata/dorms:sender/dorms:group:
    +--rw cbacc!
       +--rw max-speed           uint32
       +--rw max-packet-size?    uint16
       +--rw data-rate-window?   uint32
       +--rw priority?           uint16

]]></artwork>
      </section>
      <section anchor="module">
        <name>Module</name>
        <sourcecode markers="true"><![CDATA[ file ietf-cbacc@2025-10-17.yang
module ietf-cbacc {
  yang-version 1.1;

  namespace "urn:ietf:params:xml:ns:yang:ietf-cbacc";
  prefix "cbacc";

  import ietf-dorms {
    prefix "dorms";
    reference "I-D.jholland-mboned-dorms";
  }

  organization "IETF";

  contact
      "Author:   Jake Holland
                 <mailto:jholland@akamai.com>
      ";

  description
  "Copyright (c) 2019 IETF Trust and the persons identified as
   authors of the code.  All rights reserved.

   Redistribution and use in source and binary forms, with or
   without modification, is permitted pursuant to, and subject to
   the license terms contained in, the Simplified BSD License set
   forth in Section 4.c of the IETF Trust's Legal Provisions
   Relating to IETF Documents
   (https://trustee.ietf.org/license-info).

   This version of this YANG module is part of
   draft-jholland-mboned-cbacc.  See the internet draft for full
   legal notices.

   The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
   NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
   'MAY', and 'OPTIONAL' in this document are to be interpreted as
   described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
   they appear in all capitals, as shown here.

   This module contains the definition for bandwidth consumption
   metadata for SSM channels, as an extension to DORMS
   (draft-ietf-mboned-dorms).";

  revision 2021-07-08 {
    description "Draft version, post-early-review.";
    reference
      "draft-ietf-mboned-cbacc";
  }

  augment
    "/dorms:dorms/dorms:metadata/dorms:sender/dorms:group" {
      description "Definition of the manifest stream providing
          integrity info for the data stream";

    container cbacc {
      presence "CBACC-enabled flow";
      description
        "Information to enable fast-trip circuit breakers";
      leaf max-speed {
        type uint32;
        units "kilobits/second";
        mandatory true;
        description "Maximum bitrate for this stream, in Kilobits
            of IP packet data (including headers) of native
            multicast traffic per second";
      }
      leaf max-packet-size {
        type uint16;
        default 1400;
        description "Maximum IP payload size, in octets.";
      }
      leaf data-rate-window {
          type uint32;
          units "milliseconds";
          default 2000;
          description
            "Time window over which data rate is guaranteed,
             in milliseconds.";
          /* TBD: range limits? */
      }
      leaf priority {
          type uint16;
          default 256;
          description
            "The relative preference level for keeping this flow
             compared to other flows from this sender (higher
             value is more preferred to keep)";
      }
    }
  }
}

]]></sourcecode>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="yang-module-names-registry">
        <name>YANG Module Names Registry</name>
        <t>This document adds one YANG module to the "YANG Module Names" registry maintained at &lt;https://www.iana.org/assignments/yang-parameters&gt;.
The following registrations are made, per the format in Section 14 of <xref target="RFC6020"/>:</t>
        <artwork><![CDATA[
      name:      ietf-cbacc
      namespace: urn:ietf:params:xml:ns:yang:ietf-cbacc
      prefix:    cbacc
      reference: I-D.draft-ietf-mboned-cbacc
]]></artwork>
      </section>
      <section anchor="the-xml-registry">
        <name>The XML Registry</name>
        <t>This document adds the following registration to the "ns" subregistry of the "IETF XML Registry" defined in <xref target="RFC3688"/>, referencing this document.</t>
        <artwork><![CDATA[
       URI: urn:ietf:params:xml:ns:yang:ietf-cbacc
       Registrant Contact: The IESG.
       XML: N/A, the requested URI is an XML namespace.
]]></artwork>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TBD: Yang Doctor review from Reshad said this should "mention the YANG data nodes".  I think this means "do what https://tools.ietf.org/html/rfc8407#section-3.7 says"?</t>
      <section anchor="metadata-security">
        <name>Metadata Security</name>
        <t>Be sure to authenticate the metadata.
See DORMS security considerations, and don't accept unauthenticated metadata if using an alternative means.</t>
      </section>
      <section anchor="denial-of-service">
        <name>Denial of Service</name>
        <section anchor="state-overload">
          <name>State Overload</name>
          <t>Since CBACC flows require state, it may be possible for a set of receivers and/or senders, possibly acting in concert, to generate many flows in an attempt to overflow the circuit breakers' state tables.</t>
          <t>It is permissible for a network node to behave as a CBACC circuit breaker for some CBACC flows while treating other CBACC flows as non-CBACC, as part of a load balancing strategy for the network as a whole, or simply as defense against this concern when the number of monitored flows exceeds some threshold.</t>
          <t>The same techniques described in Section 3.1 of <xref target="RFC4609"/> can be used to help mitigate this attack, for much the same reasons.
It is RECOMMENDED that network operators implement measures to mitigate such attacks.</t>
        </section>
      </section>
    </section>
    <section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>Many thanks to Devin Anderson, Ben Kaduk, Cheng Jin, Scott Brown, Miroslav Ponec, Bob Briscoe, Lenny Giuliani, Christian Worm Mortensen, Dino Farinacci, and Reshad Rahman for their thoughtful comments and contributions.</t>
      <t>Part of this work was supported by the Federal Ministry of Research, Technology and Space in the programme of “Souverän. Digital. Vernetzt.” Joint project 6G-RIC, project identification number: 16KISK030.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <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="RFC7950">
          <front>
            <title>The YANG 1.1 Data Modeling Language</title>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>YANG is a data modeling language used to model configuration data, state data, Remote Procedure Calls, and notifications for network management protocols. This document describes the syntax and semantics of version 1.1 of the YANG language. YANG version 1.1 is a maintenance release of the YANG language, addressing ambiguities and defects in the original specification. There are a small number of backward incompatibilities from YANG version 1. This document also specifies the YANG mappings to the Network Configuration Protocol (NETCONF).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7950"/>
          <seriesInfo name="DOI" value="10.17487/RFC7950"/>
        </reference>
        <reference anchor="RFC8084">
          <front>
            <title>Network Transport Circuit Breakers</title>
            <author fullname="G. Fairhurst" initials="G." surname="Fairhurst"/>
            <date month="March" year="2017"/>
            <abstract>
              <t>This document explains what is meant by the term "network transport Circuit Breaker". It describes the need for Circuit Breakers (CBs) for network tunnels and applications when using non-congestion- controlled traffic and explains where CBs are, and are not, needed. It also defines requirements for building a CB and the expected outcomes of using a CB within the Internet.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="208"/>
          <seriesInfo name="RFC" value="8084"/>
          <seriesInfo name="DOI" value="10.17487/RFC8084"/>
        </reference>
        <reference anchor="RFC8085">
          <front>
            <title>UDP Usage Guidelines</title>
            <author fullname="L. Eggert" initials="L." surname="Eggert"/>
            <author fullname="G. Fairhurst" initials="G." surname="Fairhurst"/>
            <author fullname="G. Shepherd" initials="G." surname="Shepherd"/>
            <date month="March" year="2017"/>
            <abstract>
              <t>The User Datagram Protocol (UDP) provides a minimal message-passing transport that has no inherent congestion control mechanisms. This document provides guidelines on the use of UDP for the designers of applications, tunnels, and other protocols that use UDP. Congestion control guidelines are a primary focus, but the document also provides guidance on other topics, including message sizes, reliability, checksums, middlebox traversal, the use of Explicit Congestion Notification (ECN), Differentiated Services Code Points (DSCPs), and ports.</t>
              <t>Because congestion control is critical to the stable operation of the Internet, applications and other protocols that choose to use UDP as an Internet transport must employ mechanisms to prevent congestion collapse and to establish some degree of fairness with concurrent traffic. They may also need to implement additional mechanisms, depending on how they use UDP.</t>
              <t>Some guidance is also applicable to the design of other protocols (e.g., protocols layered directly on IP or via IP-based tunnels), especially when these protocols do not themselves provide congestion control.</t>
              <t>This document obsoletes RFC 5405 and adds guidelines for multicast UDP usage.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="145"/>
          <seriesInfo name="RFC" value="8085"/>
          <seriesInfo name="DOI" value="10.17487/RFC8085"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <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>
        <reference anchor="RFC8340">
          <front>
            <title>YANG Tree Diagrams</title>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <author fullname="L. Berger" initials="L." role="editor" surname="Berger"/>
            <date month="March" year="2018"/>
            <abstract>
              <t>This document captures the current syntax used in YANG module tree diagrams. The purpose of this document is to provide a single location for this definition. This syntax may be updated from time to time based on the evolution of the YANG language.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="215"/>
          <seriesInfo name="RFC" value="8340"/>
          <seriesInfo name="DOI" value="10.17487/RFC8340"/>
        </reference>
        <reference anchor="I-D.draft-ietf-mboned-dorms">
          <front>
            <title>Discovery Of Restconf Metadata for Source-specific multicast</title>
            <author fullname="Jake Holland" initials="J." surname="Holland">
              <organization>Akamai Technologies, Inc.</organization>
            </author>
            <author fullname="Kyle Rose" initials="K." surname="Rose">
              <organization>Akamai Technologies, Inc.</organization>
            </author>
            <author fullname="Max Franke" initials="M." surname="Franke">
              <organization>TU Berlin</organization>
            </author>
            <date day="15" month="September" year="2025"/>
            <abstract>
              <t>   This document defines DORMS (Discovery Of Restconf Metadata for
   Source-specific multicast), a method to discover and retrieve
   extensible metadata about source-specific multicast channels using
   RESTCONF.  The reverse IP DNS zone for a multicast sender's IP
   address is configured to use SRV resource records to advertise the
   hostname of a RESTCONF server that publishes metadata according to a
   new YANG module with support for extensions.  A new service name and
   the new YANG module are defined.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-mboned-dorms-07"/>
        </reference>
        <reference anchor="I-D.draft-ietf-mboned-ambi">
          <front>
            <title>Asymmetric Manifest Based Integrity</title>
            <author fullname="Jake Holland" initials="J." surname="Holland">
              <organization>Akamai Technologies, Inc.</organization>
            </author>
            <author fullname="Kyle Rose" initials="K." surname="Rose">
              <organization>Akamai Technologies, Inc.</organization>
            </author>
            <author fullname="Max Franke" initials="M." surname="Franke">
              <organization>TU Berlin</organization>
            </author>
            <date day="7" month="May" year="2025"/>
            <abstract>
              <t>   This document defines Asymmetric Manifest-Based Integrity (AMBI).
   AMBI allows each receiver or forwarder of a stream of multicast
   packets to check the integrity of the contents of each packet in the
   data stream.  AMBI operates by passing cryptographically verifiable
   hashes of the data packets inside manifest messages, and sending the
   manifests over authenticated out-of-band communication channels.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-mboned-ambi-04"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC3688">
          <front>
            <title>The IETF XML Registry</title>
            <author fullname="M. Mealling" initials="M." surname="Mealling"/>
            <date month="January" year="2004"/>
            <abstract>
              <t>This document describes an IANA maintained registry for IETF standards which use Extensible Markup Language (XML) related items such as Namespaces, Document Type Declarations (DTDs), Schemas, and Resource Description Framework (RDF) Schemas.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="81"/>
          <seriesInfo name="RFC" value="3688"/>
          <seriesInfo name="DOI" value="10.17487/RFC3688"/>
        </reference>
        <reference anchor="RFC3738">
          <front>
            <title>Wave and Equation Based Rate Control (WEBRC) Building Block</title>
            <author fullname="M. Luby" initials="M." surname="Luby"/>
            <author fullname="V. Goyal" initials="V." surname="Goyal"/>
            <date month="April" year="2004"/>
            <abstract>
              <t>This document specifies Wave and Equation Based Rate Control (WEBRC), which provides rate and congestion control for data delivery. WEBRC is specifically designed to support protocols using IP multicast. It provides multiple-rate, congestion-controlled delivery to receivers, i.e., different receivers joined to the same session may be receiving packets at different rates depending on the bandwidths of their individual connections to the sender and on competing traffic along these connections. WEBRC requires no feedback from receivers to the sender, i.e., it is a completely receiver-driven congestion control protocol. Thus, it is designed to scale to potentially massive numbers of receivers attached to a session from a single sender. Furthermore, because each individual receiver adjusts to the available bandwidth between the sender and that receiver, there is the potential to deliver data to each individual receiver at the fastest possible rate for that receiver, even in a highly heterogeneous network architecture, using a single sender. This memo defines an Experimental Protocol for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3738"/>
          <seriesInfo name="DOI" value="10.17487/RFC3738"/>
        </reference>
        <reference anchor="RFC4609">
          <front>
            <title>Protocol Independent Multicast - Sparse Mode (PIM-SM) Multicast Routing Security Issues and Enhancements</title>
            <author fullname="P. Savola" initials="P." surname="Savola"/>
            <author fullname="R. Lehtonen" initials="R." surname="Lehtonen"/>
            <author fullname="D. Meyer" initials="D." surname="Meyer"/>
            <date month="October" year="2006"/>
            <abstract>
              <t>This memo describes security threats for the larger (intra-domain or inter-domain) multicast routing infrastructures. Only Protocol Independent Multicast - Sparse Mode (PIM-SM) is analyzed, in its three main operational modes: the traditional Any-Source Multicast (ASM) model, the source-specific multicast (SSM) model, and the ASM model enhanced by the Embedded Rendezvous Point (Embedded-RP) group-to-RP mapping mechanism. This memo also describes enhancements to the protocol operations that mitigate the identified threats. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4609"/>
          <seriesInfo name="DOI" value="10.17487/RFC4609"/>
        </reference>
        <reference anchor="RFC5166">
          <front>
            <title>Metrics for the Evaluation of Congestion Control Mechanisms</title>
            <author fullname="S. Floyd" initials="S." role="editor" surname="Floyd"/>
            <date month="March" year="2008"/>
            <abstract>
              <t>This document discusses the metrics to be considered in an evaluation of new or modified congestion control mechanisms for the Internet. These include metrics for the evaluation of new transport protocols, of proposed modifications to TCP, of application-level congestion control, and of Active Queue Management (AQM) mechanisms in the router. This document is the first in a series of documents aimed at improving the models that we use in the evaluation of transport protocols.</t>
              <t>This document is a product of the Transport Modeling Research Group (TMRG), and has received detailed feedback from many members of the Research Group (RG). As the document tries to make clear, there is not necessarily a consensus within the research community (or the IETF community, the vendor community, the operations community, or any other community) about the metrics that congestion control mechanisms should be designed to optimize, in terms of trade-offs between throughput and delay, fairness between competing flows, and the like. However, we believe that there is a clear consensus that congestion control mechanisms should be evaluated in terms of trade-offs between a range of metrics, rather than in terms of optimizing for a single metric. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5166"/>
          <seriesInfo name="DOI" value="10.17487/RFC5166"/>
        </reference>
        <reference anchor="RFC6020">
          <front>
            <title>YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)</title>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <date month="October" year="2010"/>
            <abstract>
              <t>YANG is a data modeling language used to model configuration and state data manipulated by the Network Configuration Protocol (NETCONF), NETCONF remote procedure calls, and NETCONF notifications. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6020"/>
          <seriesInfo name="DOI" value="10.17487/RFC6020"/>
        </reference>
        <reference anchor="RFC6726">
          <front>
            <title>FLUTE - File Delivery over Unidirectional Transport</title>
            <author fullname="T. Paila" initials="T." surname="Paila"/>
            <author fullname="R. Walsh" initials="R." surname="Walsh"/>
            <author fullname="M. Luby" initials="M." surname="Luby"/>
            <author fullname="V. Roca" initials="V." surname="Roca"/>
            <author fullname="R. Lehtonen" initials="R." surname="Lehtonen"/>
            <date month="November" year="2012"/>
            <abstract>
              <t>This document defines File Delivery over Unidirectional Transport (FLUTE), a protocol for the unidirectional delivery of files over the Internet, which is particularly suited to multicast networks. The specification builds on Asynchronous Layered Coding, the base protocol designed for massively scalable multicast distribution. This document obsoletes RFC 3926. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6726"/>
          <seriesInfo name="DOI" value="10.17487/RFC6726"/>
        </reference>
        <reference anchor="RFC6807">
          <front>
            <title>Population Count Extensions to Protocol Independent Multicast (PIM)</title>
            <author fullname="D. Farinacci" initials="D." surname="Farinacci"/>
            <author fullname="G. Shepherd" initials="G." surname="Shepherd"/>
            <author fullname="S. Venaas" initials="S." surname="Venaas"/>
            <author fullname="Y. Cai" initials="Y." surname="Cai"/>
            <date month="December" year="2012"/>
            <abstract>
              <t>This specification defines a method for providing multicast distribution-tree accounting data. Simple extensions to the Protocol Independent Multicast (PIM) protocol allow a rough approximation of tree-based data in a scalable fashion. This document defines an Experimental Protocol for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6807"/>
          <seriesInfo name="DOI" value="10.17487/RFC6807"/>
        </reference>
        <reference anchor="RFC7761">
          <front>
            <title>Protocol Independent Multicast - Sparse Mode (PIM-SM): Protocol Specification (Revised)</title>
            <author fullname="B. Fenner" initials="B." surname="Fenner"/>
            <author fullname="M. Handley" initials="M." surname="Handley"/>
            <author fullname="H. Holbrook" initials="H." surname="Holbrook"/>
            <author fullname="I. Kouvelas" initials="I." surname="Kouvelas"/>
            <author fullname="R. Parekh" initials="R." surname="Parekh"/>
            <author fullname="Z. Zhang" initials="Z." surname="Zhang"/>
            <author fullname="L. Zheng" initials="L." surname="Zheng"/>
            <date month="March" year="2016"/>
            <abstract>
              <t>This document specifies Protocol Independent Multicast - Sparse Mode (PIM-SM). PIM-SM is a multicast routing protocol that can use the underlying unicast routing information base or a separate multicast-capable routing information base. It builds unidirectional shared trees rooted at a Rendezvous Point (RP) per group, and it optionally creates shortest-path trees per source.</t>
              <t>This document obsoletes RFC 4601 by replacing it, addresses the errata filed against it, removes the optional (*,*,RP), PIM Multicast Border Router features and authentication using IPsec that lack sufficient deployment experience (see Appendix A), and moves the PIM specification to Internet Standard.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="83"/>
          <seriesInfo name="RFC" value="7761"/>
          <seriesInfo name="DOI" value="10.17487/RFC7761"/>
        </reference>
        <reference anchor="RFC8641">
          <front>
            <title>Subscription to YANG Notifications for Datastore Updates</title>
            <author fullname="A. Clemm" initials="A." surname="Clemm"/>
            <author fullname="E. Voit" initials="E." surname="Voit"/>
            <date month="September" year="2019"/>
            <abstract>
              <t>This document describes a mechanism that allows subscriber applications to request a continuous and customized stream of updates from a YANG datastore. Providing such visibility into updates enables new capabilities based on the remote mirroring and monitoring of configuration and operational state.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8641"/>
          <seriesInfo name="DOI" value="10.17487/RFC8641"/>
        </reference>
        <reference anchor="PathChirp">
          <front>
            <title>pathChirp: Efficient Available Bandwidth Estimation for Network Paths</title>
            <author initials="V. J." surname="Ribeiro" fullname="Vinay J. Ribeiro">
              <organization/>
            </author>
            <author initials="R. H." surname="Riedi" fullname="Rudolf H. Riedi">
              <organization/>
            </author>
            <author initials="R. G." surname="Baraniuk" fullname="Richard G. Baraniuk">
              <organization/>
            </author>
            <author initials="J." surname="Navratil" fullname="Jiri Navratil">
              <organization/>
            </author>
            <author initials="L." surname="Cottrell" fullname="Les Cottrell">
              <organization/>
            </author>
            <author>
              <organization>Department of Electrical and Computer Engineering Rice University</organization>
            </author>
            <author>
              <organization>SLAC/SCS-Network Monitoring, Stanford University</organization>
            </author>
            <date year="2003"/>
          </front>
        </reference>
        <reference anchor="CapProbe" target="https://dl.acm.org/doi/pdf/10.1145/1015467.1015476">
          <front>
            <title>CapProbe: A Simple and Accurate Capacity Estimation Technique</title>
            <author initials="R." surname="Kapoor" fullname="Rohit Kapoor">
              <organization/>
            </author>
            <author initials="L.-J." surname="Chen" fullname="Ling-Jyh Chen">
              <organization/>
            </author>
            <author initials="L." surname="Lao" fullname="Li Lao">
              <organization/>
            </author>
            <author initials="M." surname="Gerla" fullname="Mario Gerla">
              <organization/>
            </author>
            <author initials="M. Y." surname="Sanadidi" fullname="M. Y. Sanadidi">
              <organization/>
            </author>
            <date year="2004" month="September"/>
          </front>
        </reference>
        <reference anchor="FLID-DL" target="https://ieeexplore.ieee.org/document/1038584">
          <front>
            <title>FLID-DL: congestion control for layered multicast</title>
            <author initials="J. W." surname="Byers">
              <organization/>
            </author>
            <author initials="G." surname="Horn">
              <organization/>
            </author>
            <author initials="M." surname="Luby">
              <organization/>
            </author>
            <author initials="M." surname="Mitzenmacher">
              <organization/>
            </author>
            <author initials="W." surname="Shaver">
              <organization/>
            </author>
            <author>
              <organization>IEEE</organization>
            </author>
            <date>n.d.</date>
          </front>
          <seriesInfo name="DOI" value="10.1109/JSAC.2002.803998"/>
        </reference>
        <reference anchor="PLM" target="http://www.eurecom.fr/en/publication/340/download/ce-legoar-000601.pdf">
          <front>
            <title>PLM: Fast Convergence for Cumulative Layered Multicast Transmission Schemes</title>
            <author initials="A. L. W." surname="Biersack, Institut EURECOM">
              <organization/>
            </author>
            <date year="1999"/>
          </front>
        </reference>
        <reference anchor="RLC" target="http://www.iet.unipi.it/~a007834/rlc99.ps.gz">
          <front>
            <title>The RLC multicast congestion control algorithm</title>
            <author initials="L." surname="Rizzo" fullname="Luigi Rizzo">
              <organization/>
            </author>
            <author initials="L." surname="Vicisano" fullname="Lorenzo Vicisano">
              <organization/>
            </author>
            <author initials="J." surname="Crowcroft" fullname="John Crowcroft">
              <organization/>
            </author>
            <date year="1999"/>
          </front>
        </reference>
        <reference anchor="RLM" target="http://www1.cs.columbia.edu/~danr/courses/6761/Fall00/week9/layering.pdf">
          <front>
            <title>Receiver-driven Layered Multicast</title>
            <author initials="S." surname="McCanne" fullname="Steven McCanne">
              <organization/>
            </author>
            <author initials="V." surname="Jacobson" fullname="Van Jacobson">
              <organization/>
            </author>
            <author initials="M." surname="Vetterli" fullname="Martin Vetterli">
              <organization/>
            </author>
            <author>
              <organization>University of California, Berkeley</organization>
            </author>
            <author>
              <organization>Lawrence Berkeley National Laboratory</organization>
            </author>
            <date year="1995"/>
          </front>
        </reference>
        <reference anchor="SMCC" target="http://www.cs.bu.edu/techreports/pdf/2002-025-smcc.pdf">
          <front>
            <title>Smooth Multirate Multicast Congestion Control</title>
            <author initials="G.-I." surname="Kwon" fullname="Gu-In Kwon">
              <organization/>
            </author>
            <author initials="J. W." surname="Byers" fullname="John W. Byers">
              <organization/>
            </author>
            <author>
              <organization>Computer Science Department, Boston University</organization>
            </author>
            <date year="2002"/>
          </front>
        </reference>
        <reference anchor="ZSC91">
          <front>
            <title>Observations and Dynamics of a Congestion Control Algorithm: The Effects of Two-Way Traffic</title>
            <author initials="L." surname="Zhang" fullname="Lixia Zhang">
              <organization/>
            </author>
            <author initials="S." surname="Shenker" fullname="Scott Shenker">
              <organization/>
            </author>
            <author initials="D. D." surname="Clark" fullname="David D. Clark">
              <organization/>
            </author>
            <date year="1991"/>
          </front>
          <seriesInfo name="Proc. ACM SIGCOMM, ACM Computer Communications Review (CCR), Vol 21, No 4, pp.133-147." value=""/>
        </reference>
      </references>
    </references>
    <?line 594?>

<section anchor="ref-overjoining">
      <name>Overjoining</name>
      <t><xref target="RFC8085"/> describes several remedies for unicast congestion control under UDP, even though UDP does not itself provide congestion control.
In general, any network node under congestion could in theory collect evidence that a unicast flow's sending rate is not responding to congestion, and would then be justified in circuit-breaking it.</t>
      <t>With multicast IP, the situation is different, especially in the presence of malicious receivers.
A well-behaved sender using a receiver-controlled congestion scheme such as WEBRC does not reduce its send rate in response to congestion, instead relying on receivers to leave the appropriate multicast groups.</t>
      <t>This leads to a situation where, when a network accepts inter-domain multicast traffic, as long as there are senders somewhere in the world with aggregate bandwidth that exceeds a network's capacity, receivers in that network can join the flows and overflow the network capacity.
A receiver controlled by an attacker could do this at the IGMP/MLD level without running the application layer protocol that participates in the receiver-controlled congestion control.</t>
      <t>A network might be able to detect and defend against the most naive version of such an attack by blocking end users that try to join too many flows at once.
However, an attacker can achieve the same effect by joining a few high-bandwidth flows, if those exist anywhere, and an attacker that controls a few machines in a network can coordinate the receivers so they join disjoint sets of non-responsive sending flows.</t>
      <t>This scenario will produce congestion in a middle node in the network that can't be easily detected at the edge where the IGMP/MLD join is accepted.
Thus, an attacker with a small set of machines in a target network can always trip a circuit breaker if present, or can induce excessive congestion among the bandwidth allocated to multicast.
This problem gets worse as more multicast flows become available.</t>
      <t>Although the same can apply to non-responsive unicast traffic, network operators can assume that non-responsive sending flows are in violation of congestion control best practices, and can therefore cut off flows associated with the misbehaving senders.
By contrast, non-responsive multicast senders are likely to be well-behaved participants in receiver-controlled congestion control schemes.</t>
      <t>However, receiver controlled congestion control schemes also show the most promise for efficient massive scale content distribution via multicast, provided network health can be ensured.
Therefore, mechanisms to mitigate overjoining attacks while still permitting receiver-controlled congestion control are necessary.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA81963IbSbLefzxFmfpB6RgASd3F3RgNb9JwhpRkktrxHq/D
0WgUgB42urF9IQUptHEexP7nN/GbnCdxfplZl8ZF0tr+4Y3YEQhU1yUrK/PL
S2UPBoNekzW5PTQnWZW2WWOOK5vc2soc1XVWN3ZsTspiausmKwt8bKoy7yWj
UWXv6Jnjo5OT3rhMi2ROXYyrZNIMMttMBvNRWdjxIB0laTrYf94bJ4097KX0
32lZLQ9N3Yx7vWxRHZqmauvm8f7+q/3HvYTGPjTvF3Xvvqxup1XZLg7NJXfV
u7VL+nJ8aM6LxlaFbQanGK7Xq5ukGP+3JKdWh2Zp694iOzT/pSnTvqnLqqns
pKZPyzk+/NdeL2mbWVkd9sygZ+h/WVEfml+H5pcyz6kf/k5W8yuRofN1WU0P
zdFtMk8yc2PTWVHm5TSz1Pt5kQ65SU3D2ebQHDx9RoQsk/F9suQf0qyhVZ8k
81GVjae2by6PzP7jg6dP5deyJcJSg49FBpJfN0So2pQTczS3VZYm3MrSwPmh
+YPmNZNpDYkMP0/x9TAt550l/TY0V2Vto/X8tsxt+O7/k8XcVjShn/m/Q5pS
ZwmXQ/OmSorbeBGXyaf4S17FzUdzbKs8K+KO5xNu9XNGJBo27WDELYZj253j
W1vNk2LZ6xUlfWiyO+JSY67enDw+OHilH1+8eravH1/uv3waPj5zHw9e+G+f
POW254PT4fpxGNMg9fafiaDZIR2LYrIymSfPX750H188cR+fPt93U3x28Py5
fny+/9jN9vmLx/7bl/sv3HJePD9ws33+lD9+SJrZySyrFodMHZUIOwv/tTmb
TLI0s0Vjju6IvsmIeOmYOPA+Gzczc0biARMmEUFTN+9sg/PL3dY73KU/dfy/
gf7rdvUvWZEscQqvspHNqnJLs6t2XOYT8wva2XG2rVWWzpJqbN4OaYbEBFl7
u6Xlr1mVmXfJXUVTz7e0uSDWPSkbOgr5ehNmv1O7SKpmDtoQj5/lNm3A5bkh
8tCj80VL8sqcFVNiReL/YooZWpyOO1vVdJQ2d3t9cXSyd31yPXDUvCzpPJXo
oI8zBSYZr/bCYtaQNH1Cf54kiw9VObLdTfXfmiNznc0XtJGY6FGatkQHi6cS
HPB4U1lAZH9v7Y9s5lU5IzXyW7Ioy2obUWkRg1+XM3Mys8XWNuYi2cYJl0mV
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
PjQuNZ1kUzIy6UDQ3vG47A7Cpsgu2qoqq/pRV+FuEM84T+OSBS2tZ0FzgMKu
ykUF/EE715QR3Ye93wkMUqfepRi6dBqcNiDxfkYWcDIF2Q+c6jadhSWqUE6V
GqxxcJxVV+gBjQnlyJ0BZOT2LhFMEyORQEBMYATbpFqxGrG9E1IsI7L5B9+A
QQ00qnjXO7o6OuxPhwfxUX/GbPI+mnHSNDSKYHycLaI+nXOMxVJc8BWtAscY
AritaxlhXuIbOrBZjj+/fKnsZBDRImLICYmO8r4Ok1qZUt/czzIhPIlh0hki
yHBkcbS6OLI2bB3fE+ttOpYsVxciwWgCDx6YY1ofYj5gH/r/DSHYjMMSS9m/
W1olQkC12bn8eH2z05d/zbv3/Pnq7D99PL86O8Xn61+OLi78B9fi+pf3Hy9O
w6fwJGyKs3en8jB9a1a+IuWzI6d55/2Hm/P3744udtaFO0hPTETnhPE37Ugj
0Lmz48cnH8zBUyErogwk1IXEBy8g4IlehQxVFnR05E/eYTpTNqnQBe08ME/W
JLmwVD0r7wsDSgsp/2KL1grjMsrM6IiyjIeBKMyBP788uEPDr6solj7z4qx5
S2KhHRnYqTW8z4BYh72ec2pO+WcEn/beVu18sXyfj2+ggPYY0TCUGZDwJNFV
9XpXNmGUAjqRJE+hmYlepDYA1GrMGBMEGCEYQ2uEdiGuqTfq3A+5TYjxSOoo
xkqjldYk7ZbYiTlcf8JQkCGENJqMyLc0ZBw1kH34ha2byhK70fzIRpSeU5rn
pEVbYBjSzhWT5B0G/J0UEXU/KSsbjVtMI5cyqUcYknQS4KKasMOXpjDPmj3M
eQBdttfrXYdZuXPrNWjH/pyVbU5HH1HJRZ6kFvoQ87k8fv/u7BQn4xZygqOm
BkEw/EVQsDEPBVn+7KZBpkbP/Iv5lc5/mK+60mSeeHyeFHt4HNB9T3rAU9fE
g+ksPIem+IaEX3geX+yNKpIlVh/dY758VxaDcnTHxh2tjIRYSdiyRr83x6eH
JH+ns4bENgA3SIvNGbFbjCC8KnF40SMosqBVNCLYSDawx+nr19fGXIO7SBLV
YluMbM74IGt2xSQI+gcbTDteDYdCl6NC4CLPyG/9KcmiXRifUyfIGEY93n+8
P9h/Oth/JXa3IAUoIgeGaF9dJ86AVfEqloEHAYxU6ZzVGbQeZOM8+6yP8Ek+
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
5K6NBhbj94h8h3CcX+tuuw17/xvaAs/Vmn0AAA==

-->

</rfc>
