draft-ietf-rmcat-rtp-cc-feedback-02.txt   draft-ietf-rmcat-rtp-cc-feedback-03.txt 
Network Working Group C. Perkins Network Working Group C. Perkins
Internet-Draft University of Glasgow Internet-Draft University of Glasgow
Intended status: Informational October 31, 2016 Intended status: Informational November 14, 2016
Expires: May 4, 2017 Expires: May 18, 2017
RTP Control Protocol (RTCP) Feedback for Congestion Control in RTP Control Protocol (RTCP) Feedback for Congestion Control in
Interactive Multimedia Conferences Interactive Multimedia Conferences
draft-ietf-rmcat-rtp-cc-feedback-02 draft-ietf-rmcat-rtp-cc-feedback-03
Abstract Abstract
This memo discusses the types of congestion control feedback that it This memo discusses the types of congestion control feedback that it
is possible to send using the RTP Control Protocol (RTCP), and their is possible to send using the RTP Control Protocol (RTCP), and their
suitability of use in implementing congestion control for unicast suitability of use in implementing congestion control for unicast
multimedia applications. multimedia applications.
Status of This Memo Status of This Memo
skipping to change at page 1, line 34 skipping to change at page 1, line 34
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 http://datatracker.ietf.org/drafts/current/. Drafts is at http://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 May 4, 2017. This Internet-Draft will expire on May 18, 2017.
Copyright Notice Copyright Notice
Copyright (c) 2016 IETF Trust and the persons identified as the Copyright (c) 2016 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
(http://trustee.ietf.org/license-info) in effect on the date of (http://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
skipping to change at page 5, line 9 skipping to change at page 5, line 9
header, 16 octets of data, and 2 octets of padding, for a total SDES header, 16 octets of data, and 2 octets of padding, for a total SDES
packet size of 28 octets. The RC2F packets contains an XR block packet size of 28 octets. The RC2F packets contains an XR block
header and SSRC (8 octets), a block type and timestamp (8 octets), header and SSRC (8 octets), a block type and timestamp (8 octets),
the SSRC, beginning and ending sequence numbers (8 octets), and 2*Nr the SSRC, beginning and ending sequence numbers (8 octets), and 2*Nr
octets of reports, for a total of 24 + 2*Nr octets. If IPv4 is used, octets of reports, for a total of 24 + 2*Nr octets. If IPv4 is used,
with no IP options, the UDP/IP header will be 28 octets in size. with no IP options, the UDP/IP header will be 28 octets in size.
This gives a total compound RTCP packet size of Sc = 132 + 2*Nr This gives a total compound RTCP packet size of Sc = 132 + 2*Nr
octets. octets.
The non-compound RTCP packets will comprise just the RC2F packet with The non-compound RTCP packets will comprise just the RC2F packet with
a UDP/IP header. It can be seen that these packets will be Snc = 52 a UDP/IP header. It can be seen that these packets will be Snc = 48
+ 2*Nr octets in size. + 2*Nr octets in size.
The RTCP reporting interval calculation ([RFC3550], Section 6.2) for The RTCP reporting interval calculation ([RFC3550], Section 6.2) for
a two-party session where both participants are senders, reduces to a two-party session where both participants are senders, reduces to
Trtcp = n * Srtcp/Brtcp where Srtcp = (Sc + Nnc * Snc)/(1 + Nnc) is Trtcp = n * Srtcp/Brtcp where Srtcp = (Sc + Nnc * Snc)/(1 + Nnc) is
the average RTCP packet size in octets, Brtcp is the bandwidth the average RTCP packet size in octets, Brtcp is the bandwidth
allocated to RTCP in octets per second, and n is the number of allocated to RTCP in octets per second, and n is the number of
participants (n=2 in this scenario). participants (n=2 in this scenario).
To ensure a report is sent every Nr frames, it is necessary to set To ensure a report is sent every Nr frames, it is necessary to set
skipping to change at page 6, line 12 skipping to change at page 6, line 12
sends RTCP reports once per second, giving an RTCP bandwidth of sends RTCP reports once per second, giving an RTCP bandwidth of
2.66kbps. 2.66kbps.
The overhead can be reduced by sending some reports in non-compound The overhead can be reduced by sending some reports in non-compound
RTCP packets [RFC5506]. For example, if we alternate compound and RTCP packets [RFC5506]. For example, if we alternate compound and
non-compound RTCP packets, i.e., Nnc = 1, the calculation gives: non-compound RTCP packets, i.e., Nnc = 1, the calculation gives:
+--------------+-------------+----------------+ +--------------+-------------+----------------+
| Tf (seconds) | Nr (frames) | rtcp_bw (kbps) | | Tf (seconds) | Nr (frames) | rtcp_bw (kbps) |
+--------------+-------------+----------------+ +--------------+-------------+----------------+
| 20ms | 2 | 37.5 | | 20ms | 2 | 36.7 |
| 20ms | 4 | 19.5 | | 20ms | 4 | 19.1 |
| 20ms | 8 | 10.5 | | 20ms | 8 | 10.4 |
| 20ms | 16 | 6.1 | | 20ms | 16 | 6.0 |
| 60ms | 2 | 12.5 | | 60ms | 2 | 12.2 |
| 60ms | 4 | 6.5 | | 60ms | 4 | 6.4 |
| 60ms | 8 | 3.5 | | 60ms | 8 | 3.5 |
| 60ms | 16 | 2.01 | | 60ms | 16 | 2.0 |
+--------------+-------------+----------------+ +--------------+-------------+----------------+
Table 2: Required RTCP bandwidth for VoIP feedback (alternating Table 2: Required RTCP bandwidth for VoIP feedback (alternating
compound and non-compound reports) compound and non-compound reports)
The RTCP bandwidth needed for 60ms frames, reporting every 16 frames The RTCP bandwidth needed for 60ms frames, reporting every 16 frames
(once per second), can be seen to drop to 2.01kbps. This calculation (once per second), can be seen to drop to 2.01kbps. This calculation
can be repeated for other patterns of compound and non-compound RTCP can be repeated for other patterns of compound and non-compound RTCP
packets, feedback frequency, and frame duration, as needed. packets, feedback frequency, and frame duration, as needed.
skipping to change at page 8, line 10 skipping to change at page 8, line 10
congestion control feedback report comprises an 8 octet XR header, an congestion control feedback report comprises an 8 octet XR header, an
8 octet RC2F header, then for each of the remote audio and video 8 octet RC2F header, then for each of the remote audio and video
SSRCs, an 8 octet report header, and 2 octets per packet reported SSRCs, an 8 octet report header, and 2 octets per packet reported
upon, and padding to a 4 octet boundary, if needed; that is 8 + 8 + 8 upon, and padding to a 4 octet boundary, if needed; that is 8 + 8 + 8
+ (2 * Nv) + 8 + (2 * Na) where Nv is the number of video packets per + (2 * Nv) + 8 + (2 * Na) where Nv is the number of video packets per
report, and Na is the number of audio packets per report. report, and Na is the number of audio packets per report.
The complete compound RTCP packet contains the RTCP packets from both The complete compound RTCP packet contains the RTCP packets from both
the reporting and non-reporting SSRCs, an SRTP authentication tag, the reporting and non-reporting SSRCs, an SRTP authentication tag,
and a UDP/IPv4 header. The size of this RTCP packet is therefore: and a UDP/IPv4 header. The size of this RTCP packet is therefore:
156 + (2 * Nv) + (2 * Na) octets. Since the aggregate RTCP packet 252 + (2 * Nv) + (2 * Na) octets. Since the aggregate RTCP packet
contains reports from two SSRCs, the RTCP packet size is halved contains reports from two SSRCs, the RTCP packet size is halved
before use [I-D.ietf-avtcore-rtp-multi-stream]. Accordingly, we before use [I-D.ietf-avtcore-rtp-multi-stream]. Accordingly, we
define Sc = (156 + (2 * Nv) + (2 * Na))/2 for this scenario. define Sc = (252 + (2 * Nv) + (2 * Na))/2 for this scenario.
How many packets does the RTCP XR congestion control feedback packet How many packets does the RTCP XR congestion control feedback packet
report on? This is obviously highly dependent on the choice of codec report on? This is obviously highly dependent on the choice of codec
and encoding parameters, and might be quite bursty if the codec sends and encoding parameters, and might be quite bursty if the codec sends
I-frames from which later frames are predicted. For now though, I-frames from which later frames are predicted. For now though,
assume constant rate media with an MTU around 1500 octets, with assume constant rate media with an MTU around 1500 octets, with
reports for both audio and video being aggregated and sent to align reports for both audio and video being aggregated and sent to align
with video frames. This gives the following, assuming Nr =1 and Nnc with video frames. This gives the following, assuming Nr =1 and Nnc
= 0 (i.e., send a compound RTCP packet for each video frame, and no = 0 (i.e., send a compound RTCP packet for each video frame, and no
non-compound packets), and using the calculation from Scenario 1: non-compound packets), and using the calculation from Scenario 1:
Brtcp = (n * (Sc + Nnc * Snc))/(Nr * Tf * (1 + Nnc)) Brtcp = (n * (Sc + Nnc * Snc))/(Nr * Tf * (1 + Nnc))
+---------+---------+--------------+--------------+-----------------+ +---------+---------+--------------+--------------+-----------------+
| Data | Video | Video | Audio | Required RTCP | | Data | Video | Video | Audio | Required RTCP |
| Rate | Frame | Packets per | Packets per | bandwidth: | | Rate | Frame | Packets per | Packets per | bandwidth: |
| (kbps) | Rate | Report: Nv | Report: Na | Brtcp (kbps) | | (kbps) | Rate | Report: Nv | Report: Na | Brtcp (kbps) |
+---------+---------+--------------+--------------+-----------------+ +---------+---------+--------------+--------------+-----------------+
| 100 | 8 | 1 | 6 | 21 (21%) | | 100 | 8 | 1 | 6 | 33.3 (33%) |
| 200 | 16 | 1 | 3 | 41 (21%) | | 200 | 16 | 1 | 3 | 65.0 (33%) |
| 350 | 30 | 1 | 2 | 76 (21%) | | 350 | 30 | 1 | 2 | 120.1 (35%) |
| 700 | 30 | 2 | 2 | 77 (11%) | | 700 | 30 | 2 | 2 | 121.9 (17%) |
| 700 | 60 | 1 | 1 | 150 (21%) | | 700 | 60 | 1 | 1 | 240.0 (34%) |
| 1024 | 30 | 3 | 2 | 78 ( 8%) | | 1024 | 30 | 3 | 2 | 122.8 (12%) |
| 1400 | 60 | 2 | 1 | 152 (11%) | | 1400 | 60 | 2 | 1 | 241.8 (17%) |
| 2048 | 30 | 6 | 2 | 81 ( 4%) | | 2048 | 30 | 6 | 2 | 125.6 ( 6%) |
| 2048 | 60 | 3 | 1 | 154 ( 8%) | | 2048 | 60 | 3 | 1 | 243.8 (12%) |
| 4096 | 30 | 12 | 2 | 86 ( 2%) | | 4096 | 30 | 12 | 2 | 131.3 ( 3%) |
| 4096 | 60 | 6 | 1 | 159 ( 4%) | | 4096 | 60 | 6 | 1 | 294.4 ( 6%) |
+---------+---------+--------------+--------------+-----------------+ +---------+---------+--------------+--------------+-----------------+
Table 3: Required RTCP bandwidth, reporting on every frame Table 3: Required RTCP bandwidth, reporting on every frame
The RTCP bandwidth needed scales inversely with Nr. That is, it is The RTCP bandwidth needed scales inversely with Nr. That is, it is
halved if Nr=2 (report on every second packet), is reduced to one- halved if Nr=2 (report on every second packet), is reduced to one-
third if Nr=3 (report on every third packet), and so on. third if Nr=3 (report on every third packet), and so on.
The needed RTCP bandwidth scales as a percentage of the data rate The needed RTCP bandwidth scales as a percentage of the data rate
following the ratio of the frame rate to the data rate. As can be following the ratio of the frame rate to the data rate. As can be
skipping to change at page 9, line 26 skipping to change at page 9, line 26
reporting SSRC. This will be 12 + 28 + 12 + 8 + 2*Nv + 8 + 2*Na reporting SSRC. This will be 12 + 28 + 12 + 8 + 2*Nv + 8 + 2*Na
octets, plus UDP/IP header. That is, Snc = (96 + 2*Nv + 2*Na)/2. octets, plus UDP/IP header. That is, Snc = (96 + 2*Nv + 2*Na)/2.
Repeating the analysis above, but alternating compound and non- Repeating the analysis above, but alternating compound and non-
compound reports, i.e., setting Nnc = 1, gives: compound reports, i.e., setting Nnc = 1, gives:
+---------+---------+--------------+--------------+-----------------+ +---------+---------+--------------+--------------+-----------------+
| Data | Video | Video | Audio | Required RTCP | | Data | Video | Video | Audio | Required RTCP |
| Rate | Frame | Packets per | Packets per | bandwidth: | | Rate | Frame | Packets per | Packets per | bandwidth: |
| (kbps) | Rate | Report: Nv | Report: Na | Brtcp (kbps) | | (kbps) | Rate | Report: Nv | Report: Na | Brtcp (kbps) |
+---------+---------+--------------+--------------+-----------------+ +---------+---------+--------------+--------------+-----------------+
| 100 | 8 | 1 | 6 | 18 (18%) | | 100 | 8 | 1 | 6 | 23.5 (23%) |
| 200 | 16 | 1 | 3 | 33 (17%) | | 200 | 16 | 1 | 3 | 45.5 (23%) |
| 350 | 30 | 1 | 2 | 62 (18%) | | 350 | 30 | 1 | 2 | 84.4 (24%) |
| 700 | 30 | 2 | 2 | 62 ( 9%) | | 700 | 30 | 2 | 2 | 85.3 (12%) |
| 700 | 60 | 1 | 1 | 121 (17%) | | 700 | 60 | 1 | 1 | 166.9 (24%) |
| 1024 | 30 | 3 | 2 | 64 ( 6%) | | 1024 | 30 | 3 | 2 | 86.2 ( 8%) |
| 1400 | 60 | 2 | 1 | 123 ( 9%) | | 1400 | 60 | 2 | 1 | 168.8 (12%) |
| 2048 | 30 | 6 | 2 | 66 ( 3%) | | 2048 | 30 | 6 | 2 | 89.1 ( 4%) |
| 2048 | 60 | 3 | 1 | 125 ( 6%) | | 2048 | 60 | 3 | 1 | 170.6 ( 8%) |
| 4096 | 30 | 12 | 2 | 72 ( 2%) | | 4096 | 30 | 12 | 2 | 94.7 ( 2%) |
| 4096 | 60 | 6 | 1 | 131 ( 3%) | | 4096 | 60 | 6 | 1 | 176.3 ( 4%) |
+---------+---------+--------------+--------------+-----------------+ +---------+---------+--------------+--------------+-----------------+
Table 4: Required RTCP bandwidth, reporting on every frame, with Table 4: Required RTCP bandwidth, reporting on every frame, with
reduced-size reports reduced-size reports
The use of reduced-size RTCP gives a noticeable reduction in the The use of reduced-size RTCP gives a noticeable reduction in the
needed RTCP bandwidth, and can be combined with reporting every few needed RTCP bandwidth, and can be combined with reporting every few
frames rather than every frames. Overall, it is clear that the RTCP frames rather than every frames. Overall, it is clear that the RTCP
overhead can be reasonable across the range of data and frame rates, overhead can be reasonable across the range of data and frame rates,
if RTCP is configured carefully. if RTCP is configured carefully.
 End of changes. 10 change blocks. 
36 lines changed or deleted 36 lines changed or added

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