rfc8837xml2.original.xml | rfc8837.xml | |||
---|---|---|---|---|
<?xml version="1.0" encoding="US-ASCII"?> | <?xml version='1.0' encoding='utf-8'?> | |||
<!DOCTYPE rfc SYSTEM "rfc2629.dtd"> | <!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent"> | |||
<?rfc toc="yes"?> | ||||
<?rfc tocompact="yes"?> | ||||
<?rfc tocdepth="3"?> | ||||
<?rfc tocindent="yes"?> | ||||
<?rfc symrefs="yes"?> | ||||
<?rfc sortrefs="yes"?> | ||||
<?rfc comments="yes"?> | ||||
<?rfc inline="yes"?> | ||||
<?rfc compact="yes"?> | ||||
<?rfc subcompact="no"?> | ||||
<rfc category="std" docName="draft-ietf-tsvwg-rtcweb-qos-18" | ||||
ipr="trust200902"> | ||||
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" number="8837" | ||||
submissionType="IETF" consensus="true" category="std" | ||||
docName="draft-ietf-tsvwg-rtcweb-qos-18" ipr="trust200902" obsoletes="" upd | ||||
ates="" xml:lang="en" tocInclude="true" symRefs="true" sortRefs="true" version=" | ||||
3"> | ||||
<!-- xml2rfc v2v3 conversion 2.45.2 --> | ||||
<front> | <front> | |||
<title abbrev="WebRTC QoS"> | <title abbrev="WebRTC QoS"> | |||
DSCP Packet Markings for WebRTC QoS | Differentiated Services Code Point (DSCP) Packet Markings for WebRTC QoS | |||
</title> | </title> | |||
<seriesInfo name="RFC" value="8837"/> | ||||
<author fullname="Paul E. Jones" initials="P." surname="Jones"> | <author fullname="Paul E. Jones" initials="P." surname="Jones"> | |||
<organization>Cisco Systems</organization> | <organization>Cisco Systems</organization> | |||
<address> | <address> | |||
<email>paulej@packetizer.com</email> | <email>paulej@packetizer.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Subha Dhesikan" initials="S." surname="Dhesikan"> | <author fullname="Subha Dhesikan" initials="S." surname="Dhesikan"> | |||
<organization>Cisco Systems</organization> | <organization>Individual</organization> | |||
<address> | <address> | |||
<email>sdhesika@cisco.com</email> | <email>sdhesikan@gmail.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Cullen Jennings" initials="C." surname="Jennings"> | ||||
<author fullname="Cullen Jennings" initials="C." | ||||
surname="Jennings"> | ||||
<organization>Cisco Systems</organization> | <organization>Cisco Systems</organization> | |||
<address> | <address> | |||
<email>fluffy@cisco.com</email> | <email>fluffy@cisco.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Dan Druta" initials="D." surname="Druta"> | <author fullname="Dan Druta" initials="D." surname="Druta"> | |||
<organization>AT&T</organization> | <organization>AT&T</organization> | |||
<address> | <address> | |||
<email>dd5826@att.com</email> | <email>dd5826@att.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<date month="July" year="2020"/> | ||||
<date/> | <keyword>Diffserv</keyword> | |||
<keyword>rtcweb</keyword> | ||||
<abstract> | <abstract> | |||
<t> | <t> | |||
Many networks, such as service provider and enterprise networks, | Networks can provide different forwarding treatments for individual | |||
can provide different forwarding treatments for individual | ||||
packets based on Differentiated Services Code Point (DSCP) | packets based on Differentiated Services Code Point (DSCP) | |||
values on a per-hop basis. This document provides the | values on a per-hop basis. This document provides the | |||
recommended DSCP values for web browsers to use for various | recommended DSCP values for web browsers to use for various | |||
classes of WebRTC traffic. | classes of Web Real-Time Communication (WebRTC) traffic. | |||
</t> | </t> | |||
</abstract> | </abstract> | |||
</front> | </front> | |||
<middle> | <middle> | |||
<section title="Introduction"> | <section numbered="true" toc="default"> | |||
<name>Introduction</name> | ||||
<t> | <t> | |||
Differentiated Services Code Point (DSCP) <xref target="RFC2474"/> | Differentiated Services Code Point (DSCP) <xref target="RFC2474" format= "default"/> | |||
packet marking can help provide QoS in some environments. | packet marking can help provide QoS in some environments. | |||
This specification provides default packet marking for browsers | This specification provides default packet marking for browsers | |||
that support WebRTC applications, but does not change any advice | that support WebRTC applications, but does not change any advice | |||
or requirements in other IETF RFCs. The contents of this | or requirements in other RFCs. The contents of this | |||
specification are intended to be a simple set of implementation | specification are intended to be a simple set of implementation | |||
recommendations based on the previous RFCs. | recommendations based on previous RFCs. | |||
</t> | </t> | |||
<t> | <t> | |||
Networks where these DSCP markings are beneficial (likely to | Networks in which these DSCP markings are beneficial (likely to | |||
improve QoS for WebRTC traffic) include: | improve QoS for WebRTC traffic) include: | |||
</t> | </t> | |||
<ol spacing="normal" type="1"> | ||||
<t> | <li> | |||
<list style="numbers"> | ||||
<t> | ||||
Private, wide-area networks. Network administrators have | Private, wide-area networks. Network administrators have | |||
control over remarking packets and treatment of packets. | control over remarking packets and treatment of packets. | |||
</t> | </li> | |||
<li> | ||||
<t> | ||||
Residential Networks. If the congested link is the | Residential Networks. If the congested link is the | |||
broadband uplink in a cable or DSL scenario, often | broadband uplink in a cable or DSL scenario, residential | |||
residential routers/NAT support preferential treatment based | routers/NAT often support preferential treatment based | |||
on DSCP. | on DSCP. | |||
</t> | </li> | |||
<li> | ||||
<t> | ||||
Wireless Networks. If the congested link is a local | Wireless Networks. If the congested link is a local | |||
wireless network, marking may help. | wireless network, marking may help. | |||
</t> | </li> | |||
</list> | </ol> | |||
</t> | ||||
<t> | <t> | |||
There are cases where these DSCP markings do not help, but, | There are cases where these DSCP markings do not help but, | |||
aside from possible priority inversion for "less than best | aside from possible priority inversion for "Less-than-Best-Effort | |||
effort traffic" (see Section 5), they seldom make things worse | traffic" (see <xref target="dscp-mappings" format="default"/>), they seld | |||
om make things worse | ||||
if packets are marked appropriately. | if packets are marked appropriately. | |||
</t> | </t> | |||
<t> | <t> | |||
DSCP values are in principle site specific, with each site | DSCP values are, in principle, site specific with each site | |||
selecting its own code points for controlling per-hop-behavior | selecting its own code points for controlling per-hop behavior | |||
to influence the QoS for transport-layer flows. However in the | to influence the QoS for transport-layer flows. However, in the | |||
WebRTC use cases, the browsers need to set them to something | WebRTC use cases, the browsers need to set them to something | |||
when there is no site specific information. This document | when there is no site-specific information. This document | |||
describes a subset of DSCP code point values drawn from existing | describes a subset of DSCP code point values drawn from existing | |||
RFCs and common usage for use with WebRTC applications. These | RFCs and common usage for use with WebRTC applications. These | |||
code points are intended to be the default values used by a | code points are intended to be the default values used by a | |||
WebRTC application. While other values could be used, using a | WebRTC application. While other values could be used, using a | |||
non-default value may result in unexpected per-hop behavior. It | non-default value may result in unexpected per-hop behavior. It | |||
is RECOMMENDED that WebRTC applications use non-default values | is <bcp14>RECOMMENDED</bcp14> that WebRTC applications use non-default v alues | |||
only in private networks that are configured to use different | only in private networks that are configured to use different | |||
values. | values. | |||
</t> | </t> | |||
<t> | <t> | |||
This specification defines inputs that are provided by the | This specification defines inputs that are provided by the | |||
WebRTC application hosted in the browser that aid the browser in | WebRTC application hosted in the browser that aid the browser in | |||
determining how to set the various packet markings. The | determining how to set the various packet markings. The | |||
specification also defines the mapping from abstract QoS | specification also defines the mapping from abstract QoS | |||
policies (flow type, priority level) to those packet markings. | policies (flow type, priority level) to those packet markings. | |||
</t> | </t> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="Terminology"> | <name>Terminology</name> | |||
<t> | <t> | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL | The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", | |||
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and | "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14> | |||
"OPTIONAL" in this document are to be interpreted as described | ", | |||
in <xref target="RFC2119"/>. | "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", | |||
</t> | "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | |||
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" 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> | ||||
<t> | <t> | |||
The terms "browser" and "non-browser" are defined in | The terms "browser" and "non-browser" are defined in | |||
<xref target="RFC7742"/> and carry the same meaning in this | <xref target="RFC7742" format="default"/> and carry the same meaning in this | |||
document. | document. | |||
</t> | </t> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="Relation to Other Specifications"> | <name>Relation to Other Specifications</name> | |||
<t> | <t> | |||
This document is a complement to <xref target="RFC7657"/>, which | This document is a complement to <xref target="RFC7657" format="default" />, which | |||
describes the interaction between DSCP and real-time | describes the interaction between DSCP and real-time | |||
communications. That RFC covers the implications of using | communications. That RFC covers the implications of using | |||
various DSCP values, particularly focusing on Real-time | various DSCP values, particularly focusing on the Real-time | |||
Transport Protocol (RTP) <xref target="RFC3550"/> streams that | Transport Protocol (RTP) <xref target="RFC3550" format="default"/> strea | |||
ms that | ||||
are multiplexed onto a single transport-layer flow. | are multiplexed onto a single transport-layer flow. | |||
</t> | </t> | |||
<t> | <t> | |||
There are a number of guidelines specified in | There are a number of guidelines specified in | |||
<xref target="RFC7657"/> that apply to marking traffic sent by | <xref target="RFC7657" format="default"/> that apply to marking traffic sent by | |||
WebRTC applications, as it is common for multiple RTP streams to | WebRTC applications, as it is common for multiple RTP streams to | |||
be multiplexed on the same transport-layer flow. Generally, the | be multiplexed on the same transport-layer flow. Generally, the | |||
RTP streams would be marked with a value as appropriate from | RTP streams would be marked with a value as appropriate from | |||
<xref target="table-dscp"/>. A WebRTC application might also | <xref target="tab-dscp" format="default"/>. A WebRTC application might also | |||
multiplex data channel | multiplex data channel | |||
<xref target="I-D.ietf-rtcweb-data-channel"/> traffic over the | <xref target="RFC8831" format="default"/> traffic over the | |||
same 5-tuple as RTP streams, which would also be marked as per | same 5-tuple as RTP streams, which would also be marked per | |||
that table. The guidance in <xref target="RFC7657"/> says that | that table. The guidance in <xref target="RFC7657" format="default"/> s | |||
ays that | ||||
all data channel traffic would be marked with a single value | all data channel traffic would be marked with a single value | |||
that is typically different than the value(s) used for RTP | that is typically different from the value(s) used for RTP | |||
streams multiplexed with the data channel traffic over the same | streams multiplexed with the data channel traffic over the same | |||
5-tuple, assuming RTP streams are marked with a value other than | 5-tuple, assuming RTP streams are marked with a value other than | |||
default forwarding (DF). This is expanded upon further in the | Default Forwarding (DF). This is expanded upon further in the | |||
next section. | next section. | |||
</t> | </t> | |||
<t> | <t> | |||
This specification does not change or override the advice in any | This specification does not change or override the advice in any | |||
other IETF RFCs about setting packet markings. Rather, it | other RFCs about setting packet markings. Rather, it | |||
simply selects a subset of DSCP values that is relevant in the | simply selects a subset of DSCP values that is relevant in the | |||
WebRTC context. | WebRTC context. | |||
</t> | </t> | |||
<t> | <t> | |||
The DSCP value set by the endpoint is not trusted by the | The DSCP value set by the endpoint is not trusted by the | |||
network. In addition, the DSCP value may be remarked at any | network. In addition, the DSCP value may be remarked at any | |||
place in the network for a variety of reasons to any other DSCP | place in the network for a variety of reasons to any other DSCP | |||
value, including default forwarding (DF) value to provide basic | value, including the DF value to provide basic | |||
best effort service. Even so, there is benefit in marking | best-effort service. Even so, there is a benefit to marking | |||
traffic even if it only benefits the first few hops. The | traffic even if it only benefits the first few hops. The | |||
implications are discussed in Secton 3.2 of | implications are discussed in | |||
<xref target="RFC7657"/>. Further, a mitigation for such action | <xref target="RFC7657" sectionFormat="of" section="3.2"/>. Further, a m | |||
itigation for such action | ||||
is through an authorization mechanism. Such an authorization | is through an authorization mechanism. Such an authorization | |||
mechanism is outside the scope of this document. | mechanism is outside the scope of this document. | |||
</t> | </t> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="Inputs"> | <name>Inputs</name> | |||
<t> | <t> | |||
WebRTC applications send and receive two types of flows of | This document recommends DSCP values for two classes of WebRTC flows: | |||
significance to this document: | ||||
<list style="symbols"> | ||||
<t> | ||||
media flows which are RTP streams | ||||
<xref target="I-D.ietf-rtcweb-rtp-usage"/> | ||||
</t> | ||||
<t> | ||||
data flows which are data channels | ||||
<xref target="I-D.ietf-rtcweb-data-channel"/> | ||||
</t> | ||||
</list> | ||||
</t> | </t> | |||
<ul spacing="normal"> | ||||
<li> | ||||
media flows that are RTP streams | ||||
<xref target="RFC8834" format="default"/> | ||||
</li> | ||||
<li> | ||||
data flows that are data channels | ||||
<xref target="RFC8831" format="default"/> | ||||
</li> | ||||
</ul> | ||||
<t> | <t> | |||
Each of the RTP streams and distinct data channels consists of | Each of the RTP streams and distinct data channels consist of | |||
all of the packets associated with an independent media entity, | all of the packets associated with an independent media entity, | |||
so an RTP stream or distinct data channel is not always | so an RTP stream or distinct data channel is not always | |||
equivalent to a transport-layer flow defined by a 5-tuple | equivalent to a transport-layer flow defined by a 5-tuple | |||
(source address, destination address, source port, destination | (source address, destination address, source port, destination | |||
port, and protocol). There may be multiple RTP streams and data | port, and protocol). There may be multiple RTP streams and data | |||
channels multiplexed over the same 5-tuple, with each having a | channels multiplexed over the same 5-tuple, with each having a | |||
different level of importance to the application and, therefore, | different level of importance to the application and, therefore, | |||
potentially marked using different DSCP values than another RTP | potentially marked using different DSCP values than another RTP | |||
stream or data channel within the same transport-layer flow. | stream or data channel within the same transport-layer flow. | |||
(Note that there are restrictions with respect to marking | (Note that there are restrictions with respect to marking | |||
different data channels carried within the same SCTP association | different data channels carried within the same Stream Control | |||
as outlined in <xref target="dscp-mappings"/>.) | Transmission Protocol (SCTP) association | |||
as outlined in <xref target="dscp-mappings" format="default"/>.) | ||||
</t> | </t> | |||
<t> | <t> | |||
The following are the inputs provided by the WebRTC application | The following are the inputs provided by the WebRTC application | |||
to the browser: | to the browser: | |||
<list style="symbols"> | </t> | |||
<t> | <ul spacing="normal"> | |||
<li> | ||||
Flow Type: The application provides this input because it knows | Flow Type: The application provides this input because it knows | |||
if the flow is audio, interactive video <xref target="RFC4594"/> | if the flow is audio, interactive video (<xref target="RFC4594" form | |||
<xref target="G.1010"/> with or without audio, or data. | at="default"/> | |||
</t> | <xref target="G.1010" format="default"/>) with or without audio, or da | |||
ta. | ||||
<t> | </li> | |||
<li> | ||||
Application Priority: Another input is the relative | Application Priority: Another input is the relative | |||
importance of an RTP stream or data channel. Many | importance of an RTP stream or data channel. Many | |||
applications have multiple flows of the same Flow Type and | applications have multiple flows of the same flow type and | |||
often some flows are more important than others. For | some flows are often more important than others. For | |||
example, in a video conference where there are usually audio | example, in a video conference where there are usually audio | |||
and video flows, the audio flow may be more important than | and video flows, the audio flow may be more important than | |||
the video flow. JavaScript applications can tell the | the video flow. JavaScript applications can tell the | |||
browser whether a particular flow is high, medium, low or | browser whether a particular flow is of High, Medium, Low, or | |||
very low importance to the application. | Very Low importance to the application. | |||
</t> | </li> | |||
</list> | </ul> | |||
</t> | ||||
<t> | <t> | |||
<xref target="I-D.ietf-rtcweb-transports"/> defines in more | <xref target="RFC8835" format="default"/> defines in more | |||
detail what an individual flow is within the WebRTC | detail what an individual flow is within the WebRTC | |||
context and priorities for media and data flows. | context and priorities for media and data flows. | |||
</t> | </t> | |||
<t> | <t> | |||
Currently in WebRTC, media sent over RTP is assumed to be | Currently in WebRTC, media sent over RTP is assumed to be | |||
interactive <xref target="I-D.ietf-rtcweb-transports"/> and | interactive <xref target="RFC8835" format="default"/> and | |||
browser APIs do not exist to allow an application to to | browser APIs do not exist to allow an application to | |||
differentiate between interactive and non-interactive video. | differentiate between interactive and non-interactive video. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="dscp-mappings" title="DSCP Mappings"> | <section anchor="dscp-mappings" numbered="true" toc="default"> | |||
<name>DSCP Mappings</name> | ||||
<t> | <t> | |||
The DSCP values for each flow type of interest to WebRTC based | The DSCP values for each flow type of interest to WebRTC based | |||
on application priority are shown in <xref target="table-dscp"/>. | on application priority are shown in <xref target="tab-dscp" format="def ault"/>. | |||
These values are based on the framework and recommended values in | These values are based on the framework and recommended values in | |||
<xref target="RFC4594"/>. A web browser SHOULD use these values | <xref target="RFC4594" format="default"/>. A web browser <bcp14>SHOULD< | |||
to mark the appropriate media packets. More information on EF | /bcp14> use these values | |||
can be found in <xref target="RFC3246"/>. More information on | to mark the appropriate media packets. More information on Expedited | |||
AF can be found in <xref target="RFC2597"/>. DF is default | Forwarding (EF) and Assured Forwarding (AF) can be found in <xref | |||
forwarding which provides the basic best effort service | target="RFC3246" format="default"/> and <xref target="RFC2597" | |||
<xref target="RFC2474"/>. | format="default"/>, respectively. DF is Default Forwarding, which provid | |||
es the basic best-effort service | ||||
<xref target="RFC2474" format="default"/>. | ||||
</t> | </t> | |||
<t> | <t> | |||
WebRTC use of multiple DSCP values may encounter network blocking | WebRTC's use of multiple DSCP values may result in packets with | |||
of packets with certain DSCP values. See section 4.2 of | certain DSCP values being blocked by a network. See | |||
<xref target="I-D.ietf-rtcweb-transports"/> for further | <xref target="RFC8835" sectionFormat="of" section="4.2"/> for further | |||
discussion, including how WebRTC implementations establish and | discussion, including how WebRTC implementations establish and | |||
maintain connectivity when such blocking is encountered. | maintain connectivity when such blocking is encountered. | |||
</t> | </t> | |||
<table anchor="tab-dscp" align="center"> | ||||
<texttable anchor="table-dscp" | <name>Recommended DSCP Values for WebRTC Applications</name> | |||
title="Recommended DSCP Values for WebRTC Applications"> | <thead> | |||
<ttcol align="center">Flow Type</ttcol> | <tr> | |||
<ttcol align="center">Very Low</ttcol> | <th align="center">Flow Type</th> | |||
<ttcol align="center">Low</ttcol> | <th align="center">Very Low</th> | |||
<ttcol align="center">Medium</ttcol> | <th align="center">Low</th> | |||
<ttcol align="center">High</ttcol> | <th align="center">Medium</th> | |||
<c>Audio</c> | <th align="center">High</th> | |||
<c>CS1 (8)</c> | </tr> | |||
<c>DF (0)</c> | </thead> | |||
<c>EF (46)</c> | <tbody> | |||
<c>EF (46)</c> | <tr> | |||
<c> </c> | <td align="center">Audio</td> | |||
<c> </c> | <td align="center">LE (1)</td> | |||
<c> </c> | <td align="center">DF (0)</td> | |||
<c> </c> | <td align="center">EF (46)</td> | |||
<c> </c> | <td align="center">EF (46)</td> | |||
<c>Interactive Video with or without Audio</c> | </tr> | |||
<c>CS1 (8)</c> | <tr> | |||
<c>DF (0)</c> | <td align="center"> </td> | |||
<c>AF42, AF43 (36, 38)</c> | <td align="center"> </td> | |||
<c>AF41, AF42 (34, 36)</c> | <td align="center"> </td> | |||
<c> </c> | <td align="center"> </td> | |||
<c> </c> | <td align="center"> </td> | |||
<c> </c> | </tr> | |||
<c> </c> | <tr> | |||
<c> </c> | <td align="center">Interactive Video with or without Audio</td> | |||
<c>Non-Interactive Video with or without Audio</c> | <td align="center">LE (1)</td> | |||
<c>CS1 (8)</c> | <td align="center">DF (0)</td> | |||
<c>DF (0)</c> | <td align="center">AF42, AF43 (36, 38)</td> | |||
<c>AF32, AF33 (28, 30)</c> | <td align="center">AF41, AF42 (34, 36)</td> | |||
<c>AF31, AF32 (26, 28)</c> | </tr> | |||
<c> </c> | <tr> | |||
<c> </c> | <td align="center"> </td> | |||
<c> </c> | <td align="center"> </td> | |||
<c> </c> | <td align="center"> </td> | |||
<c> </c> | <td align="center"> </td> | |||
<c>Data</c> | <td align="center"> </td> | |||
<c>CS1 (8)</c> | </tr> | |||
<c>DF (0)</c> | <tr> | |||
<c>AF11</c> | <td align="center">Non-Interactive Video with or without Audio</td> | |||
<c>AF21</c> | <td align="center">LE (1)</td> | |||
</texttable> | <td align="center">DF (0)</td> | |||
<td align="center">AF32, AF33 (28, 30)</td> | ||||
<td align="center">AF31, AF32 (26, 28)</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center"> </td> | ||||
<td align="center"> </td> | ||||
<td align="center"> </td> | ||||
<td align="center"> </td> | ||||
<td align="center"> </td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center">Data</td> | ||||
<td align="center">LE (1)</td> | ||||
<td align="center">DF (0)</td> | ||||
<td align="center">AF11</td> | ||||
<td align="center">AF21</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
<t> | <t> | |||
The application priority, indicated by the columns "very low", | The application priority, indicated by the columns "Very Low", | |||
"low", "Medium", and "high", signifies the relative importance | "Low", "Medium", and "High", signifies the relative importance | |||
of the flow within the application. It is an input that the | of the flow within the application. It is an input that the | |||
browser receives to assist in selecting the DSCP value and | browser receives to assist in selecting the DSCP value and | |||
adjusting the network transport behavior. | adjusting the network transport behavior. | |||
</t> | </t> | |||
<t> | <t> | |||
The above table assumes that packets marked with CS1 are treated | The above table assumes that packets marked with LE are treated as | |||
as "less than best effort", such as the LE behavior described in | lower effort (i.e., "less than best effort"), such as the LE behavior | |||
<xref target="RFC3662"/>. However, the treatment of CS1 is | described in <xref target="RFC8622" format="default"/>. However, the treatme | |||
implementation dependent. If an implementation treats CS1 as | nt of LE is | |||
other than "less than best effort", then the actual priority | implementation dependent. If an implementation treats LE as other | |||
(or, more precisely, the per-hop-behavior) of the packets may be | than "less than best effort", then the actual priority (or, more | |||
changed from what is intended. It is common for CS1 to be | precisely, the per-hop behavior) of the packets may be changed from | |||
treated the same as DF, so applications and browsers using CS1 | what is intended. It is common for LE to be treated the same as DF, | |||
cannot assume that CS1 will be treated differently than DF | so applications and browsers using LE cannot assume that LE will be | |||
<xref target="RFC7657"/>. However, it is also possible per | treated differently than DF <xref target="RFC7657" format="default"/>. Durin | |||
<xref target="RFC2474"/> for CS1 traffic to be given better | g development of this | |||
treatment than DF, thus caution should be exercised when | document, the CS1 DSCP was recommended for "very low" application | |||
electing to use CS1. This is one of the cases where marking | priority traffic; implementations that followed that recommendation | |||
packets using these recommendations can make things worse. | <bcp14>SHOULD</bcp14> be updated to use the LE DSCP instead of the CS1 DSCP. | |||
</t> | </t> | |||
<t> | <t> | |||
Implementers should also note that excess EF traffic is dropped. | Implementers should also note that excess EF traffic is dropped. | |||
This could mean that a packet marked as EF may not get through, | This could mean that a packet marked as EF may not get through, | |||
although the same packet marked with a different DSCP value would | although the same packet marked with a different DSCP value would | |||
have gotten through. This is not a flaw, but how excess EF | have gotten through. This is not a flaw, but how excess EF | |||
traffic is intended to be treated. | traffic is intended to be treated. | |||
</t> | </t> | |||
<t> | <t> | |||
The browser SHOULD first select the flow type of the flow. | The browser <bcp14>SHOULD</bcp14> first select the flow type of the flow . | |||
Within the flow type, the relative importance of the flow | Within the flow type, the relative importance of the flow | |||
SHOULD be used to select the appropriate DSCP value. | <bcp14>SHOULD</bcp14> be used to select the appropriate DSCP value. | |||
</t> | </t> | |||
<t> | <t> | |||
Currently, all WebRTC video is assumed to be interactive | Currently, all WebRTC video is assumed to be interactive | |||
<xref target="I-D.ietf-rtcweb-transports"/>, for which the | <xref target="RFC8835" format="default"/>, for which the | |||
Interactive Video DSCP values in Table 1 SHOULD be used. | interactive video DSCP values in Table 1 <bcp14>SHOULD</bcp14> be used. | |||
Browsers MUST NOT use the AF3x DSCP values (for Non-Interactive | Browsers <bcp14>MUST NOT</bcp14> use the AF3x DSCP values (for non-inter | |||
Video in Table 1) for WebRTC applications. Non-browser | active | |||
implementations of WebRTC MAY use the AF3x DSCP values for video | video in Table 1) for WebRTC applications. Non-browser | |||
implementations of WebRTC <bcp14>MAY</bcp14> use the AF3x DSCP values fo | ||||
r video | ||||
that is known not to be interactive, e.g., all video in a WebRTC | that is known not to be interactive, e.g., all video in a WebRTC | |||
video playback application that is not implemented in a | video playback application that is not implemented in a | |||
browser. | browser. | |||
</t> | </t> | |||
<t> | <t> | |||
The combination of flow type and application priority provides | The combination of flow type and application priority provides | |||
specificity and helps in selecting the right DSCP value for the | specificity and helps in selecting the right DSCP value for the | |||
flow. All packets within a flow SHOULD have the same application | flow. All packets within a flow <bcp14>SHOULD</bcp14> have the same app lication | |||
priority. In some cases, the selected application priority cell | priority. In some cases, the selected application priority cell | |||
may have multiple DSCP values, such as AF41 and AF42. These offer | may have multiple DSCP values, such as AF41 and AF42. These offer | |||
different drop precedences. The different drop precedence | different drop precedences. The different drop precedence | |||
values provides additional granularity in classifying packets | values provide additional granularity in classifying packets | |||
within a flow. For example, in a video conference the video | within a flow. For example, in a video conference, the video | |||
flow may have medium application priority, thus either AF42 or | flow may have medium application priority, thus either AF42 or | |||
AF43 may be selected. More important video packets (e.g., a | AF43 may be selected. More important video packets (e.g., a | |||
video picture or frame encoded without any dependency on any | video picture or frame encoded without any dependency on any | |||
prior pictures or frames) might be marked with AF42 and less | prior pictures or frames) might be marked with AF42 and less | |||
important packets (e.g., a video picture or frame encoded based | important packets (e.g., a video picture or frame encoded based | |||
on the content of one or more prior pictures or frames) might be | on the content of one or more prior pictures or frames) might be | |||
marked with AF43 (e.g., receipt of the more important packets | marked with AF43 (e.g., receipt of the more important packets | |||
enables a video renderer to continue after one or more packets | enables a video renderer to continue after one or more packets | |||
are lost). | are lost). | |||
</t> | </t> | |||
skipping to change at line 407 ¶ | skipping to change at line 391 ¶ | |||
flow may have medium application priority, thus either AF42 or | flow may have medium application priority, thus either AF42 or | |||
AF43 may be selected. More important video packets (e.g., a | AF43 may be selected. More important video packets (e.g., a | |||
video picture or frame encoded without any dependency on any | video picture or frame encoded without any dependency on any | |||
prior pictures or frames) might be marked with AF42 and less | prior pictures or frames) might be marked with AF42 and less | |||
important packets (e.g., a video picture or frame encoded based | important packets (e.g., a video picture or frame encoded based | |||
on the content of one or more prior pictures or frames) might be | on the content of one or more prior pictures or frames) might be | |||
marked with AF43 (e.g., receipt of the more important packets | marked with AF43 (e.g., receipt of the more important packets | |||
enables a video renderer to continue after one or more packets | enables a video renderer to continue after one or more packets | |||
are lost). | are lost). | |||
</t> | </t> | |||
<t> | <t> | |||
It is worth noting that the application priority is utilized by | It is worth noting that the application priority is utilized by | |||
the coupled congestion control mechanism for media flows per | the coupled congestion control mechanism for media flows per | |||
<xref target="I-D.ietf-rmcat-coupled-cc"/> and the SCTP | <xref target="RFC8699" format="default"/> and the SCTP | |||
scheduler for data channel traffic per | scheduler for data channel traffic per | |||
<xref target="I-D.ietf-rtcweb-data-channel"/>. | <xref target="RFC8831" format="default"/>. | |||
</t> | </t> | |||
<t> | <t> | |||
For reasons discussed in Section 6 of | For reasons discussed in | |||
<xref target="RFC7657"/>, if multiple flows are multiplexed | <xref target="RFC7657" sectionFormat="of" section="6"/>, if multiple flo | |||
using a reliable transport (e.g., TCP) then all of the packets | ws are multiplexed | |||
for all flows multiplexed over that transport-layer flow MUST be | using a reliable transport (e.g., TCP), then all of the packets | |||
for all flows multiplexed over that transport-layer flow <bcp14>MUST</bc | ||||
p14> be | ||||
marked using the same DSCP value. Likewise, all WebRTC data | marked using the same DSCP value. Likewise, all WebRTC data | |||
channel packets transmitted over an SCTP association MUST be | channel packets transmitted over an SCTP association <bcp14>MUST</bcp14> be | |||
marked using the same DSCP value, regardless of how many data | marked using the same DSCP value, regardless of how many data | |||
channels (streams) exist or what kind of traffic is carried over | channels (streams) exist or what kind of traffic is carried over | |||
the various SCTP streams. In the event that the browser wishes | the various SCTP streams. In the event that the browser wishes | |||
to change the DSCP value in use for an SCTP association, it MUST | to change the DSCP value in use for an SCTP association, it <bcp14>MUST< /bcp14> | |||
reset the SCTP congestion controller after changing values. | reset the SCTP congestion controller after changing values. | |||
Frequent changes in the DSCP value used for an SCTP association | However, frequent changes in the DSCP value used for an SCTP association | |||
are discouraged, though, as this would defeat any attempts at | are discouraged, as this would defeat any attempts at | |||
effectively managing congestion. It should also be noted that | effectively managing congestion. It should also be noted that | |||
any change in DSCP value that results in a reset of the | any change in DSCP value that results in a reset of the | |||
congestion controller puts the SCTP association back into slow | congestion controller puts the SCTP association back into slow | |||
start, which may have undesirable effects on application | start, which may have undesirable effects on application | |||
performance. | performance. | |||
</t> | </t> | |||
<t> | <t> | |||
For the data channel traffic multiplexed over an SCTP | For the data channel traffic multiplexed over an SCTP | |||
association, it is RECOMMENDED that the DSCP value selected be | association, it is <bcp14>RECOMMENDED</bcp14> that the DSCP value select ed be | |||
the one associated with the highest priority requested for all | the one associated with the highest priority requested for all | |||
data channels multiplexed over the SCTP association. Likewise, | data channels multiplexed over the SCTP association. Likewise, | |||
when multiplexing multiple flows over a TCP connection, | when multiplexing multiple flows over a TCP connection, | |||
the DCSP value selected should be the one associated with the | the DCSP value selected <bcp14>SHOULD</bcp14> be the one associated with the | |||
highest priority requested for all multiplexed flows. | highest priority requested for all multiplexed flows. | |||
</t> | </t> | |||
<t> | <t> | |||
If a packet enters a network that has no support for a flow | If a packet enters a network that has no support for a flow-type-applica | |||
type-application priority combination specified in | tion priority combination specified in | |||
<xref target="table-dscp"/>, then the network node at the edge | <xref target="tab-dscp" format="default"/>, then the network node at the | |||
edge | ||||
will remark the DSCP value based on policies. This could result | will remark the DSCP value based on policies. This could result | |||
in the flow not getting the network treatment it expects based | in the flow not getting the network treatment it expects based | |||
on the original DSCP value in the packet. Subsequently, if the | on the original DSCP value in the packet. Subsequently, if the | |||
packet enters a network that supports a larger number of these | packet enters a network that supports a larger number of these | |||
combinations, there may not be sufficient information in the | combinations, there may not be sufficient information in the | |||
packet to restore the original markings. Mechanisms for | packet to restore the original markings. Mechanisms for | |||
restoring such original DSCP is outside the scope of this | restoring such original DSCP is outside the scope of this | |||
document. | document. | |||
</t> | </t> | |||
<t> | <t> | |||
In summary, DSCP marking provides neither guarantees nor | In summary, DSCP marking provides neither guarantees nor | |||
promised levels of service. However, DSCP marking is expected | promised levels of service. However, DSCP marking is expected | |||
to provide a statistical improvement in real-time service as a | to provide a statistical improvement in real-time service as a | |||
whole. The service provided to a packet is dependent upon the | whole. The service provided to a packet is dependent upon the | |||
network design along the path, as well as the network conditions | network design along the path, as well as the network conditions | |||
at every hop. | at every hop. | |||
</t> | </t> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="Security Considerations"> | <name>Security Considerations</name> | |||
<t> | <t> | |||
Since the JavaScript application specifies the flow type and | Since the JavaScript application specifies the flow type and | |||
application priority that determine the media flow DSCP values | application priority that determine the media flow DSCP values | |||
used by the browser, the browser could consider application use | used by the browser, the browser could consider application use | |||
of a large number of higher priority flows to be suspicious. | of a large number of higher priority flows to be suspicious. | |||
If the server hosting the JavaScript application is compromised, | If the server hosting the JavaScript application is compromised, | |||
many browsers within the network might simultaneously transmit | many browsers within the network might simultaneously transmit | |||
flows with the same DSCP marking. The DiffServ architecture | flows with the same DSCP marking. The Diffserv architecture | |||
requires ingress traffic conditioning for reasons that include | requires ingress traffic conditioning for reasons that include | |||
protecting the network from this sort of attack. | protecting the network from this sort of attack. | |||
</t> | </t> | |||
<t> | <t> | |||
Otherwise, this specification does not add any additional | Otherwise, this specification does not add any additional | |||
security implications beyond those addressed in the following | security implications beyond those addressed in the following | |||
DSCP-related specifications. For security implications on use | DSCP-related specifications. For security implications on use | |||
of DSCP, please refer to Section 7 of <xref target="RFC7657"/> | of DSCP, please refer to <xref target="RFC7657" | |||
and Section 6 of <xref target="RFC4594"/>. Please also see | sectionFormat="of" section="7"/> | |||
<xref target="I-D.ietf-rtcweb-security"/> as an additional | and <xref target="RFC4594" sectionFormat="of" section="6"/>. Please als | |||
o see | ||||
<xref target="RFC8826" format="default"/> as an additional | ||||
reference. | reference. | |||
</t> | </t> | |||
</section> | </section> | |||
<section title="IANA Considerations"> | <section numbered="true" toc="default"> | |||
<t> | <name>IANA Considerations</name> | |||
This specification does not require any actions from IANA. | <t>This document has no IANA actions.</t> | |||
</t> | ||||
</section> | </section> | |||
<section title="Downward References"> | <section numbered="true" toc="default"> | |||
<name>Downward References</name> | ||||
<t> | <t> | |||
This specification contains a downwards reference to | This specification contains downwards references to | |||
<xref target="RFC4594"/> and <xref target="RFC7657"/>. However, | <xref target="RFC4594" format="default"/> and <xref target="RFC7657" for | |||
the parts of the former RFC used by this specification are | mat="default"/>. However, | |||
sufficiently stable for this downward reference. The guidance | the parts of the former RFCs used by this specification are | |||
sufficiently stable for these downward references. The guidance | ||||
in the latter RFC is necessary to understand the Diffserv | in the latter RFC is necessary to understand the Diffserv | |||
technology used in this document and the motivation | technology used in this document and the motivation | |||
for the recommended DSCP values and procedures. | for the recommended DSCP values and procedures. | |||
</t> | </t> | |||
</section> | </section> | |||
</middle> | ||||
<back> | ||||
<references> | ||||
<name>References</name> | ||||
<references> | ||||
<name>Normative References</name> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.4594.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.2119.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.7657.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.7742.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.8174.xml"/> | ||||
<section title="Acknowledgements"> | <!-- draft-ietf-rtcweb-data-channel: 8831 --> | |||
<reference anchor="RFC8831" target="https://www.rfc-editor.org/info/rfc8831"> | ||||
<front> | ||||
<title>WebRTC Data Channels</title> | ||||
<author initials="R" surname="Jesup" fullname="Randell Jesup"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="S" surname="Loreto" fullname="Salvatore Loreto"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="M" surname="Tüxen" fullname="Michael Tüxen"> | ||||
<organization/> | ||||
</author> | ||||
<date month='July' year='2020'/> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8831"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8831"/> | ||||
</reference> | ||||
<!--draft-ietf-rtcweb-security: RFC 8826 --> | ||||
<reference anchor="RFC8826" target="https://www.rfc-editor.org/info/rfc8826"> | ||||
<front> | ||||
<title>Security Considerations for WebRTC</title> | ||||
<author initials='E.' surname='Rescorla' fullname='Eric Rescorla'> | ||||
<organization/> | ||||
</author> | ||||
<date month='July' year='2020'/> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8826"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8826"/> | ||||
</reference> | ||||
<!-- draft-ietf-rtcweb-rtp-usage; RFC 8834 --> | ||||
<reference anchor="RFC8834" target="https://www.rfc-editor.org/info/rfc8834"> | ||||
<front> | ||||
<title>Media Transport and Use of RTP in WebRTC</title> | ||||
<author initials="C." surname="Perkins" fullname="Colin Perkins"> | ||||
<organization /> | ||||
</author> | ||||
<author initials="M." surname="Westerlund" fullname="Magnus Westerlund"> | ||||
<organization /> | ||||
</author> | ||||
<author initials="J." surname="Ott" fullname="Jörg Ott"> | ||||
<organization /> | ||||
</author> | ||||
<date month="July" year="2020" /> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8834" /> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8834"/> | ||||
</reference> | ||||
<!-- draft-ietf-rtcweb-transports-17: 8835 --> | ||||
<reference anchor="RFC8835" target="https://www.rfc-editor.org/info/rfc8835"> | ||||
<front> | ||||
<title>Transports for WebRTC</title> | ||||
<author initials="H." surname="Alvestrand" fullname="Harald Alvestrand"> | ||||
<organization /> | ||||
</author> | ||||
<date month="July" year="2020" /> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8835" /> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8835"/> | ||||
</reference> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.8622.xml"/> | ||||
</references> | ||||
<references> | ||||
<name>Informative References</name> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.2474.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.2597.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.3246.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.3550.xml"/> | ||||
<!-- draft-ietf-rmcat-coupled-cc (RFC 8699) (Published) --> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8699. | ||||
xml"/> | ||||
<reference anchor="G.1010"> | ||||
<front> | ||||
<title>End-user multimedia QoS categories</title> | ||||
<author> | ||||
<organization>ITU-T</organization> | ||||
</author> | ||||
<date month="November" year="2001"/> | ||||
</front> | ||||
<seriesInfo name="ITU-T Recommendation" value="G.1010"/> | ||||
</reference> | ||||
</references> | ||||
</references> | ||||
<section numbered="false" toc="default"> | ||||
<name>Acknowledgements</name> | ||||
<t> | <t> | |||
Thanks to David Black, Magnus Westerlund, Paolo Severini, Jim | Thanks to <contact fullname="David Black"/>, <contact fullname="Magnus | |||
Hasselbrook, Joe Marcus, Erik Nordmark, Michael Tuexen, and | Westerlund"/>, <contact fullname="Paolo Severini"/>, <contact fullname="J | |||
Brian Carpenter for their invaluable input. | im | |||
Hasselbrook"/>, <contact fullname="Joe Marcus"/>, <contact fullname="Eri | ||||
k | ||||
Nordmark"/>, <contact fullname="Michael Tüxen"/>, and | ||||
<contact fullname="Brian Carpenter"/> for their invaluable input. | ||||
</t> | </t> | |||
</section> | </section> | |||
<section numbered="false" toc="default"> | ||||
<section title="Dedication"> | <name>Dedication</name> | |||
<t> | <t> | |||
This document is dedicated to the memory of James Polk, a | This document is dedicated to the memory of <contact fullname="James Pol k"/>, a | |||
long-time friend and colleague. James made important | long-time friend and colleague. James made important | |||
contributions to this specification, including serving initially | contributions to this specification, including serving initially | |||
as one of the primary authors. The IETF global community mourns | as one of the primary authors. The IETF global community mourns | |||
his loss and he will be missed dearly. | his loss and he will be missed dearly. | |||
</t> | </t> | |||
</section> | </section> | |||
<section title="Document History"> | ||||
<t> | ||||
Note to RFC Editor: Please remove this section. | ||||
</t> | ||||
<t> | ||||
This document was originally an individual submission in RTCWeb WG. | ||||
The RTCWeb working group selected it to be become a WG document. | ||||
Later the transport ADs requested that this be moved to the TSVWG WG | ||||
as that seemed to be a better match. | ||||
</t> | ||||
</section> | ||||
</middle> | ||||
<back> | ||||
<references title="Normative References"> | ||||
<?rfc include='reference.RFC.4594'?> | ||||
<?rfc include='reference.RFC.2119'?> | ||||
<?rfc include='reference.RFC.7657'?> | ||||
<?rfc include='reference.RFC.7742'?> | ||||
<?rfc include='reference.I-D.ietf-rtcweb-security'?> | ||||
<?rfc include='reference.I-D.ietf-rtcweb-transports'?> | ||||
<?rfc include='reference.I-D.ietf-rtcweb-rtp-usage'?> | ||||
<?rfc include='reference.I-D.ietf-rtcweb-data-channel'?> | ||||
</references> | ||||
<references title="Informative References"> | ||||
<?rfc include='reference.RFC.2474'?> | ||||
<?rfc include='reference.RFC.2597'?> | ||||
<?rfc include='reference.RFC.3246'?> | ||||
<?rfc include='reference.RFC.3550'?> | ||||
<?rfc include='reference.RFC.3662'?> | ||||
<?rfc include='reference.I-D.ietf-rmcat-coupled-cc'?> | ||||
<reference anchor="G.1010"> | ||||
<front> | ||||
<title>End-user multimedia QoS categories</title> | ||||
<author> | ||||
<organization>International Telecommunications Union</organization> | ||||
</author> | ||||
<date month="November" year="2001"/> | ||||
</front> | ||||
<seriesInfo name="Recommendation" value="ITU-T G.1010"/> | ||||
</reference> | ||||
</references> | ||||
</back> | </back> | |||
</rfc> | </rfc> | |||
End of changes. 106 change blocks. | ||||
308 lines changed or deleted | 380 lines changed or added | |||
This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |