draft-ietf-mboned-cbacc-00.txt   draft-ietf-mboned-cbacc-01.txt 
Mboned J. Holland Mboned J. Holland
Internet-Draft Akamai Technologies, Inc. Internet-Draft Akamai Technologies, Inc.
Intended status: Standards Track March 10, 2020 Intended status: Standards Track October 30, 2020
Expires: September 11, 2020 Expires: May 3, 2021
Circuit Breaker Assisted Congestion Control Circuit Breaker Assisted Congestion Control
draft-ietf-mboned-cbacc-00 draft-ietf-mboned-cbacc-01
Abstract Abstract
This document specifies Circuit Breaker Assisted Congestion Control This document specifies Circuit Breaker Assisted Congestion Control
(CBACC). CBACC enables fast-trip Circuit Breakers by publishing rate (CBACC). CBACC enables fast-trip Circuit Breakers by publishing rate
metadata about multicast channels from senders to intermediate metadata about multicast channels from senders to intermediate
network nodes or receivers. The circuit breaker behavior is defined network nodes or receivers. The circuit breaker behavior is defined
as a supplement to receiver driven congestion control systems, to as a supplement to receiver driven congestion control systems, to
preserve network health if receivers subscribe to a volume of traffic preserve network health if misbehaving or malicious receiver
that exceeds capacity policies or capability for a network or applications subscribe to a volume of traffic that exceeds capacity
receiver. policies or capability for a network or receiving device.
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79. provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/. Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on September 11, 2020. This Internet-Draft will expire on May 3, 2021.
Copyright Notice Copyright Notice
Copyright (c) 2020 IETF Trust and the persons identified as the Copyright (c) 2020 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info) in effect on the date of (https://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1. Background and Terminology . . . . . . . . . . . . . . . 3 1.1. Background and Terminology . . . . . . . . . . . . . . . 4
2. Circuit Breaker Behavior . . . . . . . . . . . . . . . . . . 4 1.2. Venues for Contribution and Discussion . . . . . . . . . 4
2.1. Functional Components . . . . . . . . . . . . . . . . . . 4 1.3. Non-obvious doc choices . . . . . . . . . . . . . . . . . 4
2.1.1. Ingress Meter . . . . . . . . . . . . . . . . . . . . 4 2. Circuit Breaker Behavior . . . . . . . . . . . . . . . . . . 5
2.1.2. Egress Meter . . . . . . . . . . . . . . . . . . . . 4 2.1. Functional Components . . . . . . . . . . . . . . . . . . 5
2.1.3. Communication Method . . . . . . . . . . . . . . . . 5 2.1.1. Bitrate Advertisement . . . . . . . . . . . . . . . . 5
2.1.4. Measurement Function . . . . . . . . . . . . . . . . 5 2.1.2. Circuit Breaker Node . . . . . . . . . . . . . . . . 5
2.1.5. Trigger Function . . . . . . . . . . . . . . . . . . 6 2.1.3. Communication Method . . . . . . . . . . . . . . . . 6
2.1.6. Reaction . . . . . . . . . . . . . . . . . . . . . . 7 2.1.4. Measurement Function . . . . . . . . . . . . . . . . 6
2.1.7. Feedback Control Mechanism . . . . . . . . . . . . . 7 2.1.5. Trigger Function . . . . . . . . . . . . . . . . . . 7
2.2. States . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.1.6. Reaction . . . . . . . . . . . . . . . . . . . . . . 8
2.2.1. Interface State . . . . . . . . . . . . . . . . . . . 7 2.1.7. Feedback Control Mechanism . . . . . . . . . . . . . 9
2.2.2. Flow State . . . . . . . . . . . . . . . . . . . . . 8 2.2. States . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.3. Implementation Design Considerations . . . . . . . . . . 8 2.2.1. Interface State . . . . . . . . . . . . . . . . . . . 10
2.3.1. Oversubscription Thresholds . . . . . . . . . . . . . 8 2.2.2. Flow State . . . . . . . . . . . . . . . . . . . . . 10
2.3.2. Fairness Functions . . . . . . . . . . . . . . . . . 9 2.3. Implementation Design Considerations . . . . . . . . . . 11
3. YANG Module . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.3.1. Oversubscription Thresholds . . . . . . . . . . . . . 11
3.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . . . 9 2.3.2. Fairness Functions . . . . . . . . . . . . . . . . . 11
3.2. Module . . . . . . . . . . . . . . . . . . . . . . . . . 9 3. YANG Module . . . . . . . . . . . . . . . . . . . . . . . . . 11
4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 11 3.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . . . 11
4.1. YANG Module Names Registry . . . . . . . . . . . . . . . 11 3.2. Module . . . . . . . . . . . . . . . . . . . . . . . . . 11
5. Security Considerations . . . . . . . . . . . . . . . . . . . 11 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 13
5.1. Metadata Security . . . . . . . . . . . . . . . . . . . . 11 4.1. YANG Module Names Registry . . . . . . . . . . . . . . . 13
5.2. Denial of Service . . . . . . . . . . . . . . . . . . . . 11 4.2. The XML Registry . . . . . . . . . . . . . . . . . . . . 14
5.2.1. State Overload . . . . . . . . . . . . . . . . . . . 11 5. Security Considerations . . . . . . . . . . . . . . . . . . . 14
6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 12 5.1. Metadata Security . . . . . . . . . . . . . . . . . . . . 14
7. References . . . . . . . . . . . . . . . . . . . . . . . . . 12 5.2. Denial of Service . . . . . . . . . . . . . . . . . . . . 14
7.1. Normative References . . . . . . . . . . . . . . . . . . 12 5.2.1. State Overload . . . . . . . . . . . . . . . . . . . 14
7.2. Informative References . . . . . . . . . . . . . . . . . 13 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 14
Appendix A. Overjoining . . . . . . . . . . . . . . . . . . . . 14 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 15
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 15 7.1. Normative References . . . . . . . . . . . . . . . . . . 15
7.2. Informative References . . . . . . . . . . . . . . . . . 15
Appendix A. Overjoining . . . . . . . . . . . . . . . . . . . . 17
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 18
1. Introduction 1. Introduction
This document defines Circuit Breaker Assisted Congestion Control This document defines Circuit Breaker Assisted Congestion Control
(CBACC). CBACC defines a Network Transport Circuit Breaker (CB), as (CBACC). CBACC defines a Network Transport Circuit Breaker (CB), as
described by [RFC8084]. described by [RFC8084].
The CB behavior defined in this document uses bit-rate metadata about The CB behavior defined in this document uses bit-rate metadata about
multicast data streams, coupled with policy, capacity, and load multicast data streams coupled with policy, capacity, and load
information at a network node, to prune multicast channels so that information at a network location to prune multicast channels so that
the node's aggregate capacity is not exceeded by the subscribed the network's aggregate capacity at that location is not exceeded by
channels. the subscribed channels.
To communicate the required metadata, this document defines a YANG To communicate the required metadata, this document defines a YANG
[RFC7950] module that augments the DORMS [RFC7950] module that augments the DORMS
[I-D.draft-jholland-mboned-dorms-02] YANG module. DORMS provides a [I-D.draft-ietf-mboned-dorms-00] YANG module. DORMS provides a
mechanism for senders to publish metadata about the multicast streams mechanism for senders to publish metadata about the multicast streams
they're sending through a RESTCONF service, so that receivers or they're sending through a RESTCONF service, so that receivers or
forwarding nodes can discover and consume the metadata with a set of forwarding nodes can discover and consume the metadata with a set of
standard methods. The metadata MAY be communicated to receivers or standard methods. The CBACC metadata MAY be communicated to
forwarding nodes by some other method, but the definition of any receivers or forwarding nodes by some other method, but the
alternative methods is out of scope for this document. definition of any alternative methods is out of scope for this
document.
The CB behavior defined in this document matches the description The CB behavior defined in this document matches the description
provided in Section 3.2.3 of [RFC8084] of a unidirectional CB over a provided in Section 3.2.3 of [RFC8084] of a unidirectional CB over a
controlled path. The control messages from that description are controlled path. The control messages from that description are
composed of the messages containing the metadata required for composed of the messages containing the metadata required for
operation of the CB. operation of the CB.
CBACC is designed to supplement protocols that use multicast IP and CBACC is designed to supplement protocols that use multicast IP and
rely on well-behaved receivers to achieve congestion control. rely on well-behaved receivers to achieve congestion control.
Examples of congestion control systems fitting this description Examples of congestion control systems fitting this description
skipping to change at page 4, line 7 skipping to change at page 4, line 13
congestion control is optional. congestion control is optional.
1.1. Background and Terminology 1.1. Background and Terminology
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in BCP "OPTIONAL" in this document are to be interpreted as described in BCP
14 [RFC2119] [RFC8174] when, and only when, they appear in all 14 [RFC2119] [RFC8174] when, and only when, they appear in all
capitals, as shown here. capitals, as shown here.
1.2. Venues for Contribution and Discussion
This document is in the Github repository at:
https://github.com/GrumpyOldTroll/ietf-dorms-cluster
Readers are welcome to open issues and send pull requests for this
document.
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/
Substantial discussion of this document should take place on the
MBONED working group mailing list (mboned@ietf.org).
o Join: https://www.ietf.org/mailman/listinfo/mboned
o Search: https://mailarchive.ietf.org/arch/browse/mboned/
1.3. Non-obvious doc choices
o Since nothing is necessarily being actively measured by a network
component at the ingress, referring to the bitrate advertisement
as an "ingress meter" for this context was considered confusing by
reviewers, so the section was renamed with just a note pointing to
the link. Likewise the egress meter and "CB node".
o TBD: might need more and better examples explaining the point in
Section 2.1.5.1? Some reason to believe it's not sufficiently
clear...
o 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.
2. Circuit Breaker Behavior 2. Circuit Breaker Behavior
2.1. Functional Components 2.1. Functional Components
This section maps the functional components described in Section 3.1 This section maps the functional components described in Section 3.1
of [RFC8084] to the operational components of the CBACC CB defined by of [RFC8084] to the operational components of the CBACC CB defined by
this document. this document.
2.1.1. Ingress Meter 2.1.1. Bitrate Advertisement
The metadata provides an ingress meter in the form of an advertised The metadata provides an advertised maximum data bit-rate, namely the
maximum data bit-rate, namely the "max-bits-per-second" field in the "max-bits-per-second" field in the YANG model in Section 3. This is
YANG model in Section 3. This is a self-report by the sender about a self-report by the sender about the maximum amount of traffic a
the maximum amount of traffic a sender will send within the interval sender will send within the interval given by the "data-rate-window"
given by the "data-rate-window" field, which is the measurement field, which is the measurement interval.
interval.
The sender MUST NOT send more data for a data stream than the amount The sender MUST NOT send more data for a data stream than the amount
of data implied by its advertised data rate within any measurement of data declared according to its advertised data rate within any
window, and it's RECOMMENDED for the sender to provide some margin to measurement window, and it's RECOMMENDED for the sender to provide
account for forwarding bursts. If an egress node observes a higher some margin to account for forwarding bursts. If a CB node observes
data rate within any measurement window, it MAY circuit-break that a higher data rate within any measurement window, it MAY circuit-
flow immediately. break that flow immediately.
2.1.2. Egress Meter In the terminology of [RFC8084], this qualifies as an ingress meter.
The node implementing the CB behavior has access to several pieces of 2.1.2. Circuit Breaker Node
information that can be used as relevant egress metrics:
A circuit breaker node (CB node) is a location in a network where the
costraints 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 [RFC8084], the CB node qualifies as
an egress meter.
The CB node has access to several pieces of information that can be
used as relevant egress metrics that may include:
1. Physical capacity limits on each interface. 1. Physical capacity limits on each interface.
2. Configured capacity limits for multicast traffic for each 2. Configured capacity limits for multicast traffic for each
interface, if any. interface.
3. The observed received data rates of subscribed multicast channels 3. The observed received data rates of subscribed multicast channels
with CBACC metadata. with CBACC metadata.
4. The observed received data rates of subscribed multicast channels 4. The observed received data rates of subscribed multicast channels
without CBACC metadata. without CBACC metadata.
5. The observed received data rates of competing non-multicast 5. The observed received data rates of competing non-multicast
traffic. traffic.
6. The loss rate for subscribed multicast channels, when available. 6. The loss rate for subscribed multicast channels, when available.
The loss rate is only sometimes observable at an egress node; for The loss rate is only sometimes observable at a CB node; for
example, when using AMBI [I-D.draft-jholland-mboned-ambi-05], or example, when using AMBI [I-D.draft-ietf-mboned-ambi-00], or when
when the data stream carries a protocol that is known to the the data stream carries a protocol that is known to the CB node
egress node by some out of band means, and whose traffic can be by some out of band means, and whose traffic can be monitored for
monitored for loss. When available, the loss rates may be used. loss. When available, the loss rates may be used.
Note that any on-path router can be considered an egress node for Note that any on-path router can behave as a CB node, even though
purposes of this CB, even though it may be forwarding traffic there may be other CB nodes downstream or upstream covering the same
downstream, and even though other egress points may also be operating data streams. When viewing CB nodes as egress meters in the context
a downstream CB that covers the same data stream. Components in the of [RFC8084], it's important to recall there's not a single egress
receiving devices, such as an operating system or browser can also meter in the network, but rather an egress meter per CB node,
act as an egress node, as can a receiving application. 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.
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.
2.1.3. Communication Method 2.1.3. Communication Method
CBACC operates at an egress node, so the egress metrics in CBACC generally operates at a CB node, where metrics such as those
Section 2.1.2 are available through system calls, or by communication described in Section 2.1.2 are available through system calls, or by
with various locally deployable system monitoring applications. Any communication with various locally deployable system monitoring
suitable application that provides the necessary egress meter is applications. However, the CBACC processing can equivalently occur
appropriate. 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.
The communication path defined in this document for the information The communication path defined in this document for the CB node to
from the ingress meter is the use of DORMS obtain the bitrate advertisement in Section 2.1.1 is the use of DORMS
[I-D.draft-jholland-mboned-dorms-02]. Other methods MAY be used as [I-D.draft-ietf-mboned-dorms-00]. Other methods MAY be used as well
well, but are out of scope for this document. or instead, but are out of scope for this document.
2.1.4. Measurement Function 2.1.4. Measurement Function
The measurement function maintains a few values for each interface, The measurement function maintains a few values for each interface,
computed from the egress and ingress meter values: computed from the metrics described in Section 2.1.2 and
Section 2.1.1:
1. The aggregate advertised maximum bit-rate capacity consumed by 1. The aggregate advertised maximum bit-rate capacity consumed by
CBACC data streams. This is the sum of the max-bit-rate values CBACC data streams. This is the sum of the max-bit-rate values
in the CBACC metadata for all data streams subscribed through an in the CBACC metadata for all data streams subscribed through an
interface interface
2. An oversubscription threshold for each interface. The 2. An oversubscription threshold for each interface. The
oversubscription threshold will be determined differently for CBs oversubscription threshold will be determined differently for CB
in different contexts. In some network devices, it might be as nodes in different contexts. In some network devices, it might
simple as an administratively configured absolute value or be as simple as an administratively configured absolute value or
proportion of an interface's capacity. For other situations, proportion of an interface's capacity. For other situations,
like a CB operating in a context with loss visibility, it could like a CB node operating in a context with loss visibility, it
be a dynamically changing value that grows when data streams are could be a dynamically changing value that grows when data
successfully subscribed and receiving data without loss, and streams are successfully subscribed and receiving data without
shrinks as loss is observed across subscribed data streams. The loss, and shrinks as loss is observed across subscribed data
oversubscription threshold calculation could also incorporate streams. The oversubscription threshold calculation could also
other information like out-of-band path capacity measurements incorporate other information like out-of-band path capacity
with [PathChirp], if available. measurements with [PathChirp], if available.
This document covers some non-normative examples of valid This document covers some non-normative examples of valid
oversubscription threshold functions in Section 2.3.1, but in oversubscription threshold functions in Section 2.3.1. In
general, the oversubscription threshold is the primary parameter general, the oversubscription threshold is the primary parameter
that different CBs in different contexts can tune to provide the that different CBs in different contexts can tune to provide the
safety guarantees necessary for their context. safety guarantees necessary for their context.
2.1.5. Trigger Function 2.1.5. Trigger Function
The trigger function fires when the aggregate advertised maximum bit- The trigger function fires when the aggregate advertised maximum bit-
rate exceeds the oversubscription threshold for any interface. rate exceeds the oversubscription threshold for any interface.
When oversubscribed, the trigger function changes the states of When oversubscribed, the trigger function changes the states of
subscribed channels to "blocked" until the aggregate subscribed bit- subscribed channels to "blocked" until the aggregate subscribed bit-
rate is below the oversubscription threshold again. rate is below the oversubscription threshold again.
2.1.5.1. Fairness and Inter-flow Ordering 2.1.5.1. Fairness and Inter-flow Ordering
The trigger function orders the monitored flows according to a The trigger function orders the monitored flows according to a
fairness function, and blocks flows in order as needed to ensure that fairness function and a within-sender priority ordering (chosen by
only a safe level of bandwidth can be consumed by subscribed flows. the sender as part of the CBACC metadata). When flows are blocked,
The fairness function can be different for CBs in different contexts. they're blocked in order until the aggregate bitrate of the permitted
flows do not exceed the oversubscription thresholds monitored by the
CB node.
Flows from a single sender MUST be ordered according to their Flows from a single sender MUST be ordered according to their
priority field from the CBACC metadata when compared with each other. 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.
For example, consider a sender using File Delivery over
Unidirectional Transport (FLUTE, defined in [RFC6726]) that sends
File Delivery Table Instances (see section 3.2 of [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.
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.
Between-sender flows and flows from the same sender with the same Between-sender flows and flows from the same sender with the same
priority are ordered according to the fairness function. Where flows priority are ordered according to the fairness function. The
from the same sender have a priority order that conflicts with the fairness function can be different for CBs in different contexts.
ordering the fairness function would use, it's appropriate to treat
those out of order flows from the sender as an aggregate flow for
between-sender flow comparisons. (TBD: the aggregation algorithm
probably needs more explaining and good examples.)
A CB implementation SHOULD provide mechanisms for administrative A CBACC CB implementation SHOULD provide mechanisms for
controls to configure explicit biases, as this may be necessary to administrative controls to configure explicit biases, as this may be
support Service Level Agreements for specific events or providers, or necessary to support Service Level Agreements for specific events or
to blacklist or de-prioritize channels with historically known providers, or to block or de-prioritize channels with historically
misbehavior. known misbehavior.
Subject to the above constraints, where possible the default fairness Subject to the above constraints, where possible the default fairness
behavior SHOULD favor streams with many receivers over streams with behavior SHOULD favor streams with many receivers over streams with
few receivers, and streams with a low bit-rate over streams with a few receivers, and streams with a low bit-rate over streams with a
high bit-rate. For example, when receiver count is known, a good high bit-rate. See Section 2.3.2 for further considerations and
fairness metric is max-bandwidth divided by receiver-count. examples.
(Receiver count in some networks can be known through technologies
such as the experimental PIM extension for population count described
in [RFC6807], or other custom signaling methods.)
An overview of some other approaches to appropriate fairness metrics
is given in Section 2.3 of [RFC5166].
2.1.6. Reaction 2.1.6. Reaction
When the trigger function fires and a subscribed channel becomes When the trigger function fires and a subscribed channel becomes
blocked, the reaction depends on whether it's an upstream interface blocked, the reaction depends on whether it's an upstream interface
or a downstream interface. or a downstream interface.
If a channel is blocked on one downstream interface, it may still be If a channel is blocked on one or more downstream interfaces, it may
unblocked on other downstream interfaces. When this is the case, still be unblocked on other downstream interfaces. When this is the
traffic is simply not forwarded along blocked interfaces, even though case, traffic is simply not forwarded along blocked interfaces, even
clients might still be joined. though clients might still be joined downstream of those interfaces.
When a channel is blocked on all downstream interfaces, or when the When a channel is blocked on all downstream interfaces or when the
upstream interface is oversubscribed, the channel is pruned so that upstream interface is oversubscribed, the channel is pruned so that
data no longer arrives from the network on the upstream interface, by data no longer arrives from the network on the upstream interface.
a PIM prune (Section 3.5 of [RFC7761]), or a "leave" operation with The prune would be performed with a PIM prune (Section 3.5 of
IGMP, MLD, or another multicast signaling mechanism.
Once initially circuit-broken, a flow SHOULD remain circuit-broken [RFC7761]), or a "leave" operation to be communicated via IGMP, MLD,
for no less than 3 minutes, even if space clears up, to ensure or another multicast group signaling mechanism, according to the
downstream subscriptions will notice and respond. (3 minutes is expected signaling within the network.
chosen to exceed the default maximum lifetime of 2 minutes that can
occur if an IGMP responder suddenly stops operation, and ceases Once initially pruned, a flow SHOULD remain pruned for a minimum
responding to IGMP queries with membership reports.) 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.
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.
When enough capacity is available for a circuit-broken stream to be When enough capacity is available for a circuit-broken stream to be
unblocked and the circuit-breaker hold-down time is expired, the unblocked and the circuit-breaker hold-down time is expired, flows
flows SHOULD be unblocked according to the priority order. SHOULD be unblocked according to the priority order until no more
flows can be unblocked without exceeding the circuit breaker limits.
2.1.7. Feedback Control Mechanism 2.1.7. Feedback Control Mechanism
The metadata should be refreshed as needed to maintain up to date The bitrate advertisement metadata from Section 2.1.1 should be
values. When using DORMS and RESTCONF, the HTTP Cache Control refreshed as needed to maintain up to date values. When using DORMS
headers provide valid refresh time properties from the server, and and RESTCONF, the Subscription to YANG Notifications for Datastore
SHOULD be used if present. If No-Cache is used, the default refresh Updates [RFC8641] is the preferred method to receive changes if
timing SHOULD be 30 seconds plus a random value between 0 and 10 available.
seconds.
2.2. States 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.
2.2. States
2.2.1. Interface State 2.2.1. Interface State
A CB holds the following state for each interface, for both the A CB holds the following state for each interface, for both the
inbound and outbound directions on that interface: inbound and outbound directions on that interface:
o aggregate bandwidth: The sum of the bandwidths of all non- o aggregate bandwidth: The sum of the bandwidths of all non-circuit-
circuit-broken CBACC flows which transit this interface in this broken CBACC flows that transit this interface in this direction.
direction.
o bandwidth limit: The maximum aggregate CBACC advertised bandwidth o bandwidth limit: The maximum aggregate CBACC advertised bandwidth
allowed, not including circuit-broken flows. allowed, not including circuit-broken flows.
When reducing the bandwidth limit due to congestion, the circuit When reducing the bandwidth limit due to congestion, the circuit
breaker SHOULD NOT reduce the limit by more than half its value in breaker SHOULD NOT reduce the limit by more than half its value in
10 seconds, and SHOULD use a smoothing function to reduce the 10 seconds, and SHOULD use a smoothing function to reduce the
limit gradually over time. limit gradually over time.
It is RECOMMENDED that no more than half the capacity for a link 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 TCP be allocated to CBACC flows if the link might be shared with
or other traffic that is responsive to congestion. unicast traffic that is responsive to congestion.
2.2.2. Flow State 2.2.2. Flow State
Data streams with CBACC metadata have a state for the upstream Data streams with CBACC metadata have a state for the upstream
interface through which the stream is joined: interface through which the stream is joined:
o 'subscribed' Indicates that the circuit breaker is subscribed o 'subscribed'
upstream to the flow and forwarding packets through zero or more Indicates that the circuit breaker is subscribed upstream to the
egress interfaces. flow and forwarding packets through zero or more egress
interfaces.
o 'pruned' Indicates that the flow has been circuit-broken. A o 'pruned'
request to unsubscribe from the flow has been sent upstream, e.g. Indicates that the flow has been circuit-broken. A request to
a PIM prune (Section 3.5 of [RFC7761]) or a "leave" operation via unsubscribe from the flow has been sent upstream, e.g. a PIM prune
(Section 3.5 of [RFC7761]) or a "leave" operation communicated via
IGMP, MLD, or another group membership management mechanism. IGMP, MLD, or another group membership management mechanism.
Data streams also have a per-interface state for downstream Data streams also have a per-interface state for downstream
interfaces with subscribers, where the data is being forwarded. It's interfaces with subscribers, where the data is being forwarded. It's
one of: one of:
o 'forwarding' Indicates that the flow is a non-circuit-broken flow o 'forwarding'
in steady state, forwarding packets downstream. Indicates that the flow is a non-circuit-broken flow in steady
state, forwarding packets downstream.
o 'blocked' Indicates that data packets for this flow are NOT o 'blocked'
forwarded downstream via this interface. Indicates that data packets for this flow are NOT forwarded
downstream via this interface.
2.3. Implementation Design Considerations 2.3. Implementation Design Considerations
2.3.1. Oversubscription Thresholds 2.3.1. Oversubscription Thresholds
TBD. TBD.
2.3.2. Fairness Functions 2.3.2. Fairness Functions
TBD. As an example fairness function that makes good sense for a general
case of unknown traffic:
Consider a network where the receiver count for multicast channels is
known, for example via the experimental PIM extension for population
count defined in [RFC6807].
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.
An overview of some other approaches to appropriate fairness metrics
is given in Section 2.3 of [RFC5166].
3. YANG Module 3. YANG Module
3.1. Tree Diagram 3.1. Tree Diagram
The tree diagram below follows the notation defined in [RFC8340].
module: ietf-cbacc module: ietf-cbacc
augment /dorms:metadata/dorms:sender/dorms:group/dorms:udp-stream: augment /dorms:metadata/dorms:sender/dorms:group/dorms:udp-stream:
+--rw cbacc! +--rw cbacc!
+--rw max-bits-per-second uint32 +--rw max-bits-per-second uint32
+--rw max-mss? uint16 +--rw max-mss? uint16
+--rw data-rate-window? uint32 +--rw data-rate-window? uint32
+--rw priority? uint16 +--rw priority? uint16
3.2. Module 3.2. Module
<CODE BEGINS> file ietf-cbacc@2020-03-10.yang <CODE BEGINS> file ietf-cbacc@2020-10-31.yang
module ietf-cbacc { module ietf-cbacc {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-cbacc"; namespace "urn:ietf:params:xml:ns:yang:ietf-cbacc";
prefix "ambi"; prefix "ambi";
import ietf-dorms { import ietf-dorms {
prefix "dorms"; prefix "dorms";
reference "I-D.jholland-mboned-dorms"; reference "I-D.jholland-mboned-dorms";
} }
organization "IETF"; organization "IETF";
contact contact
"Author: Jake Holland "Author: Jake Holland
<mailto:jholland@akamai.com> <mailto:jholland@akamai.com>
"; ";
description description
"Copyright (c) 2019 IETF Trust and the persons identified as "Copyright (c) 2019 IETF Trust and the persons identified as
authors of the code. All rights reserved. authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject to without modification, is permitted pursuant to, and subject to
the license terms contained in, the Simplified BSD License set the license terms contained in, the Simplified BSD License set
forth in Section 4.c of the IETF Trust's Legal Provisions forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents Relating to IETF Documents
(https://trustee.ietf.org/license-info). (https://trustee.ietf.org/license-info).
This version of this YANG module is part of This version of this YANG module is part of
draft-jholland-mboned-cbacc. See the internet draft for full draft-jholland-mboned-cbacc. See the internet draft for full
legal notices. legal notices.
The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
'MAY', and 'OPTIONAL' in this document are to be interpreted as 'MAY', and 'OPTIONAL' in this document are to be interpreted as
described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
they appear in all capitals, as shown here. they appear in all capitals, as shown here.
This module contains the definition for bandwidth consumption This module contains the definition for bandwidth consumption
metadata for SSM channels, as an extension to DORMS metadata for SSM channels, as an extension to DORMS
(draft-jholland-mboned-dorms)."; (draft-jholland-mboned-dorms).";
revision 2019-09-26 { revision 2019-09-26 {
description "Initial revision as an extension."; description "Initial revision as an extension.";
reference reference
""; "";
} }
augment augment
"/dorms:metadata/dorms:sender/dorms:group/dorms:udp-stream" { "/dorms:metadata/dorms:sender/dorms:group/dorms:udp-stream" {
description "Definition of the manifest stream providing description "Definition of the manifest stream providing
integrity info for the data stream"; integrity info for the data stream";
container cbacc { container cbacc {
presence "cbacc-enabled flow"; presence "cbacc-enabled flow";
description "Information to enable fast-trip circuit breakers"; description
leaf max-bits-per-second { "Information to enable fast-trip circuit breakers";
type uint32; leaf max-bits-per-second {
mandatory true; type uint32;
description "Maximum bitrate for this stream, in Kilobits mandatory true;
of IP packet data (including headers) of native description "Maximum bitrate for this stream, in Kilobits
multicast traffic per second"; of IP packet data (including headers) of native
} multicast traffic per second";
leaf max-mss { }
type uint16; leaf max-mss {
default 1400; type uint16;
description "Maximum payload size, in bytes"; default 1400;
} description "Maximum payload size, in bytes";
leaf data-rate-window { }
type uint32; leaf data-rate-window {
default 2000; type uint32;
description "Time window over which data rate is guaranteed, default 2000;
in milliseconds."; description
/* TBD: range limits? */ "Time window over which data rate is guaranteed,
} in milliseconds.";
leaf priority { /* TBD: range limits? */
type uint16; }
default 256; leaf priority {
description "The relative preference level for keeping this type uint16;
flow compared to other flows from this sender (higher default 256;
value is more preferred to keep)"; description
} "The relative preference level for keeping this flow
} compared to other flows from this sender (higher
} value is more preferred to keep)";
} }
}
}
}
<CODE ENDS> <CODE ENDS>
4. IANA Considerations 4. IANA Considerations
4.1. YANG Module Names Registry 4.1. YANG Module Names Registry
This document adds one YANG module to the "YANG Module Names" This document adds one YANG module to the "YANG Module Names"
registry maintained at <https://www.iana.org/assignments/yang- registry maintained at <https://www.iana.org/assignments/yang-
parameters>. The following registrations are made, per the format in parameters>. The following registrations are made, per the format in
Section 14 of [RFC6020]: Section 14 of [RFC6020]:
name: ietf-cbacc name: ietf-cbacc
namespace: urn:ietf:params:xml:ns:yang:ietf-cbacc namespace: urn:ietf:params:xml:ns:yang:ietf-cbacc
prefix: cbacc prefix: cbacc
reference: I-D.draft-jholland-mboned-cbacc reference: I-D.draft-ietf-mboned-cbacc
4.2. The XML Registry
This document adds the following registration to the "ns" subregistry
of the "IETF XML Registry" defined in [RFC3688], referencing this
document.
URI: urn:ietf:params:xml:ns:yang:ietf-cbacc
Registrant Contact: The IESG.
XML: N/A, the requested URI is an XML namespace.
5. Security Considerations 5. Security Considerations
5.1. Metadata Security 5.1. Metadata Security
Be sure to authenticate the metadata. See DORMS security Be sure to authenticate the metadata. See DORMS security
considerations, and don't accept unauthenticated metadata if using an considerations, and don't accept unauthenticated metadata if using an
alternative means. alternative means.
5.2. Denial of Service 5.2. Denial of Service
skipping to change at page 12, line 13 skipping to change at page 14, line 51
monitored flows exceeds some threshold. monitored flows exceeds some threshold.
The same techniques described in Section 3.1 of [RFC4609] can be used The same techniques described in Section 3.1 of [RFC4609] can be used
to help mitigate this attack, for much the same reasons. It is to help mitigate this attack, for much the same reasons. It is
RECOMMENDED that network operators implement measures to mitigate RECOMMENDED that network operators implement measures to mitigate
such attacks. such attacks.
6. Acknowledgements 6. Acknowledgements
Many thanks to Devin Anderson, Ben Kaduk, Cheng Jin, Scott Brown, Many thanks to Devin Anderson, Ben Kaduk, Cheng Jin, Scott Brown,
Miroslav Ponec, Bob Briscoe, Lenny Giuliani, and Christian Worm Miroslav Ponec, Bob Briscoe, Lenny Giuliani, Christian Worm
Mortensen for their thoughtful comments and contributions. Mortensen, and Dino Farinacci for their thoughtful comments and
contributions.
7. References 7. References
7.1. Normative References 7.1. Normative References
[I-D.draft-jholland-mboned-ambi-05] [I-D.draft-ietf-mboned-ambi-00]
Holland, J. and K. Rose, "Asymmetric Manifest Based Holland, J. and K. Rose, "Asymmetric Manifest Based
Integrity", draft-jholland-mboned-ambi-05 (work in Integrity", draft-ietf-mboned-ambi-00 (work in progress),
progress), March 2020. March 2020.
[I-D.draft-jholland-mboned-dorms-02] [I-D.draft-ietf-mboned-dorms-00]
Holland, J., "Discovery Of Restconf Metadata for Source- Holland, J., "Discovery Of Restconf Metadata for Source-
specific multicast", draft-jholland-mboned-dorms-02 (work specific multicast", draft-ietf-mboned-dorms-00 (work in
in progress), March 2020. progress), March 2020.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997, DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>. <https://www.rfc-editor.org/info/rfc2119>.
[RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language",
RFC 7950, DOI 10.17487/RFC7950, August 2016, RFC 7950, DOI 10.17487/RFC7950, August 2016,
<https://www.rfc-editor.org/info/rfc7950>. <https://www.rfc-editor.org/info/rfc7950>.
skipping to change at page 13, line 5 skipping to change at page 15, line 42
<https://www.rfc-editor.org/info/rfc8084>. <https://www.rfc-editor.org/info/rfc8084>.
[RFC8085] Eggert, L., Fairhurst, G., and G. Shepherd, "UDP Usage [RFC8085] Eggert, L., Fairhurst, G., and G. Shepherd, "UDP Usage
Guidelines", BCP 145, RFC 8085, DOI 10.17487/RFC8085, Guidelines", BCP 145, RFC 8085, DOI 10.17487/RFC8085,
March 2017, <https://www.rfc-editor.org/info/rfc8085>. March 2017, <https://www.rfc-editor.org/info/rfc8085>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, <https://www.rfc-editor.org/info/rfc8174>. May 2017, <https://www.rfc-editor.org/info/rfc8174>.
[RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams",
BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018,
<https://www.rfc-editor.org/info/rfc8340>.
7.2. Informative References 7.2. Informative References
[FLID-DL] Byers, J., Horn, G., Luby, M., Mitzenmacher, M., Shaver, [FLID-DL] Byers, J., Horn, G., Luby, M., Mitzenmacher, M., Shaver,
W., and IEEE, "FLID-DL: congestion control for layered W., and IEEE, "FLID-DL: congestion control for layered
multicast", DOI 10.1109/JSAC.2002.803998, n.d., multicast", DOI 10.1109/JSAC.2002.803998, n.d.,
<https://ieeexplore.ieee.org/document/1038584>. <https://ieeexplore.ieee.org/document/1038584>.
[PathChirp] [PathChirp]
Ribeiro, V., Riedi, R., Baraniuk, R., Navratil, J., Ribeiro, V., Riedi, R., Baraniuk, R., Navratil, J.,
Cottrell, L., Department of Electrical and Computer Cottrell, L., Department of Electrical and Computer
Engineering Rice University, and SLAC/SCS-Network Engineering Rice University, and SLAC/SCS-Network
Monitoring, Stanford University, "pathChirp: Efficient Monitoring, Stanford University, "pathChirp: Efficient
Available Bandwidth Estimation for Network Paths", 2003. Available Bandwidth Estimation for Network Paths", 2003.
[PLM] Biersack, Institut EURECOM, A., "PLM: Fast Convergence for [PLM] Biersack, Institut EURECOM, A., "PLM: Fast Convergence for
Cumulative Layered Multicast Transmission Schemes", 1999. Cumulative Layered Multicast Transmission Schemes", 1999.
[RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
DOI 10.17487/RFC3688, January 2004,
<https://www.rfc-editor.org/info/rfc3688>.
[RFC3738] Luby, M. and V. Goyal, "Wave and Equation Based Rate [RFC3738] Luby, M. and V. Goyal, "Wave and Equation Based Rate
Control (WEBRC) Building Block", RFC 3738, Control (WEBRC) Building Block", RFC 3738,
DOI 10.17487/RFC3738, April 2004, DOI 10.17487/RFC3738, April 2004,
<https://www.rfc-editor.org/info/rfc3738>. <https://www.rfc-editor.org/info/rfc3738>.
[RFC4609] Savola, P., Lehtonen, R., and D. Meyer, "Protocol [RFC4609] Savola, P., Lehtonen, R., and D. Meyer, "Protocol
Independent Multicast - Sparse Mode (PIM-SM) Multicast Independent Multicast - Sparse Mode (PIM-SM) Multicast
Routing Security Issues and Enhancements", RFC 4609, Routing Security Issues and Enhancements", RFC 4609,
DOI 10.17487/RFC4609, October 2006, DOI 10.17487/RFC4609, October 2006,
<https://www.rfc-editor.org/info/rfc4609>. <https://www.rfc-editor.org/info/rfc4609>.
[RFC5166] Floyd, S., Ed., "Metrics for the Evaluation of Congestion [RFC5166] Floyd, S., Ed., "Metrics for the Evaluation of Congestion
Control Mechanisms", RFC 5166, DOI 10.17487/RFC5166, March Control Mechanisms", RFC 5166, DOI 10.17487/RFC5166, March
2008, <https://www.rfc-editor.org/info/rfc5166>. 2008, <https://www.rfc-editor.org/info/rfc5166>.
[RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for
the Network Configuration Protocol (NETCONF)", RFC 6020, the Network Configuration Protocol (NETCONF)", RFC 6020,
DOI 10.17487/RFC6020, October 2010, DOI 10.17487/RFC6020, October 2010,
<https://www.rfc-editor.org/info/rfc6020>. <https://www.rfc-editor.org/info/rfc6020>.
[RFC6726] Paila, T., Walsh, R., Luby, M., Roca, V., and R. Lehtonen,
"FLUTE - File Delivery over Unidirectional Transport",
RFC 6726, DOI 10.17487/RFC6726, November 2012,
<https://www.rfc-editor.org/info/rfc6726>.
[RFC6807] Farinacci, D., Shepherd, G., Venaas, S., and Y. Cai, [RFC6807] Farinacci, D., Shepherd, G., Venaas, S., and Y. Cai,
"Population Count Extensions to Protocol Independent "Population Count Extensions to Protocol Independent
Multicast (PIM)", RFC 6807, DOI 10.17487/RFC6807, December Multicast (PIM)", RFC 6807, DOI 10.17487/RFC6807, December
2012, <https://www.rfc-editor.org/info/rfc6807>. 2012, <https://www.rfc-editor.org/info/rfc6807>.
[RFC7761] Fenner, B., Handley, M., Holbrook, H., Kouvelas, I., [RFC7761] Fenner, B., Handley, M., Holbrook, H., Kouvelas, I.,
Parekh, R., Zhang, Z., and L. Zheng, "Protocol Independent Parekh, R., Zhang, Z., and L. Zheng, "Protocol Independent
Multicast - Sparse Mode (PIM-SM): Protocol Specification Multicast - Sparse Mode (PIM-SM): Protocol Specification
(Revised)", STD 83, RFC 7761, DOI 10.17487/RFC7761, March (Revised)", STD 83, RFC 7761, DOI 10.17487/RFC7761, March
2016, <https://www.rfc-editor.org/info/rfc7761>. 2016, <https://www.rfc-editor.org/info/rfc7761>.
[RFC8641] Clemm, A. and E. Voit, "Subscription to YANG Notifications
for Datastore Updates", RFC 8641, DOI 10.17487/RFC8641,
September 2019, <https://www.rfc-editor.org/info/rfc8641>.
[RLC] Rizzo, L., Vicisano, L., and J. Crowcroft, "The RLC [RLC] Rizzo, L., Vicisano, L., and J. Crowcroft, "The RLC
multicast congestion control algorithm", 1999. multicast congestion control algorithm", 1999.
[RLM] McCanne, S., Jacobson, V., Vetterli, M., University of [RLM] McCanne, S., Jacobson, V., Vetterli, M., University of
California, Berkeley, and Lawrence Berkeley National California, Berkeley, and Lawrence Berkeley National
Laboratory, "Receiver-driven Layered Multicast", 1995. Laboratory, "Receiver-driven Layered Multicast", 1995.
[SMCC] Kwon, G., Byers, J., and Computer Science Department, [SMCC] Kwon, G., Byers, J., and Computer Science Department,
Boston University, "Smooth Multirate Multicast Congestion Boston University, "Smooth Multirate Multicast Congestion
Control", 2002. Control", 2002.
 End of changes. 68 change blocks. 
239 lines changed or deleted 383 lines changed or added

This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/