The DSCP values for each flow type of interest to WebRTC based on application priority are shown in
Table 1. These values are based on the framework and recommended values in [
RFC 4594]. A web browser
SHOULD use these values to mark the appropriate media packets. More information on Expedited Forwarding (EF) and Assured Forwarding (AF) can be found in [
RFC 3246] and [
RFC 2597], respectively. DF is Default Forwarding, which provides the basic best-effort service [
RFC 2474].
WebRTC's use of multiple DSCP values may result in packets with certain DSCP values being blocked by a network. See
Section 4.2 of
RFC 8835 for further discussion, including how WebRTC implementations establish and maintain connectivity when such blocking is encountered.
Flow Type |
Very Low |
Low |
Medium |
High |
Audio |
LE (1) |
DF (0) |
EF (46) |
EF (46) |
|
|
|
|
|
Interactive Video with or without Audio |
LE (1) |
DF (0) |
AF42, AF43 (36, 38) |
AF41, AF42 (34, 36) |
|
|
|
|
|
Non-Interactive Video with or without Audio |
LE (1) |
DF (0) |
AF32, AF33 (28, 30) |
AF31, AF32 (26, 28) |
|
|
|
|
|
Data |
LE (1) |
DF (0) |
AF11 |
AF21 |
Table 1: Recommended DSCP Values for WebRTC Applications
The application priority, indicated by the columns "Very Low", "Low", "Medium", and "High", signifies the relative importance of the flow within the application. It is an input that the browser receives to assist in selecting the DSCP value and adjusting the network transport behavior.
The above table assumes that packets marked with LE are treated as lower effort (i.e., "less than best effort"), such as the LE behavior described in [
RFC 8622]. However, the treatment of LE is implementation dependent. If an implementation treats LE as other than "less than best effort", then the actual priority (or, more precisely, the per-hop behavior) of the packets may be changed from what is intended. It is common for LE to be treated the same as DF, so applications and browsers using LE cannot assume that LE will be treated differently than DF [
RFC 7657]. During development of this document, the CS1 DSCP was recommended for "very low" application priority traffic; implementations that followed that recommendation
SHOULD be updated to use the LE DSCP instead of the CS1 DSCP.
Implementers should also note that excess EF traffic is dropped. This could mean that a packet marked as EF may not get through, although the same packet marked with a different DSCP value would have gotten through. This is not a flaw, but how excess EF traffic is intended to be treated.
The browser
SHOULD first select the flow type of the flow. Within the flow type, the relative importance of the flow
SHOULD be used to select the appropriate DSCP value.
Currently, all WebRTC video is assumed to be interactive [
RFC 8835], for which the interactive video DSCP values in Table 1
SHOULD be used. Browsers
MUST NOT use the AF3x DSCP values (for non-interactive video in Table 1) for WebRTC applications. Non-browser implementations of WebRTC
MAY use the AF3x DSCP values for video that is known not to be interactive, e.g., all video in a WebRTC video playback application that is not implemented in a browser.
The combination of flow type and application priority provides specificity and helps in selecting the right DSCP value for the flow. All packets within a flow
SHOULD have the same application priority. In some cases, the selected application priority cell may have multiple DSCP values, such as AF41 and AF42. These offer different drop precedences. The different drop precedence values provide additional granularity in classifying packets within a flow. For example, in a video conference, the video flow may have medium application priority, thus either AF42 or AF43 may be selected. More important video packets (e.g., a video picture or frame encoded without any dependency on any prior pictures or frames) might be marked with AF42 and less important packets (e.g., a video picture or frame encoded based on the content of one or more prior pictures or frames) might be marked with AF43 (e.g., receipt of the more important packets enables a video renderer to continue after one or more packets are lost).
It is worth noting that the application priority is utilized by the coupled congestion control mechanism for media flows per [
RFC 8699] and the SCTP scheduler for data channel traffic per [
RFC 8831].
For reasons discussed in
Section 6 of
RFC 7657, if multiple flows are multiplexed using a reliable transport (e.g., TCP), then all of the packets for all flows multiplexed over that transport-layer flow
MUST be marked using the same DSCP value. Likewise, all WebRTC data channel packets transmitted over an SCTP association
MUST be marked using the same DSCP value, regardless of how many data channels (streams) exist or what kind of traffic is carried over the various SCTP streams. In the event that the browser wishes to change the DSCP value in use for an SCTP association, it
MUST reset the SCTP congestion controller after changing values. However, frequent changes in the DSCP value used for an SCTP association are discouraged, as this would defeat any attempts at effectively managing congestion. It should also be noted that any change in DSCP value that results in a reset of the congestion controller puts the SCTP association back into slow start, which may have undesirable effects on application performance.
For the data channel traffic multiplexed over an SCTP association, it is
RECOMMENDED that the DSCP value selected be the one associated with the highest priority requested for all data channels multiplexed over the SCTP association. Likewise, when multiplexing multiple flows over a TCP connection, the DSCP value selected
SHOULD be the one associated with the highest priority requested for all multiplexed flows.
If a packet enters a network that has no support for a flow-type-application priority combination specified in
Table 1, then the network node at the edge will remark the DSCP value based on policies. This could result in the flow not getting the network treatment it expects based on the original DSCP value in the packet. Subsequently, if the packet enters a network that supports a larger number of these combinations, there may not be sufficient information in the packet to restore the original markings. Mechanisms for restoring such original DSCP is outside the scope of this document.
In summary, DSCP marking provides neither guarantees nor promised levels of service. However, DSCP marking is expected to provide a statistical improvement in real-time service as a whole. The service provided to a packet is dependent upon the network design along the path, as well as the network conditions at every hop.