RFC 4586

Extended RTP Profile for Real-time Transport Control Protocol (RTCP)-Based Feedback: Results of the Timing Rule Simulations

๐Ÿ“… published July 2006, from ietf

RFC 4586 ๐ŸŽ€ Part 1 of 6

Okay bestie, let's get into RFC 4586 โœจ Its full title is Extended RTP Profile for Real-time Transport Control Protocol (RTCP)-Based Feedback: Results of the Timing Rule Simulations. It was written by C. Burmeister, R. Hakenberg, A. Miyazaki (Panasonic), J. Ott (Helsinki University of Technology), N. Sato, and S. Fukunaga (Oki) ๐Ÿ’œ It came out in July 2006, it's Informational, and its header doesn't list anything it obsoletes or updates.


Status of This Memo ๐Ÿ“œ

This memo provides information for the Internet community. It does not specify an Internet standard of any kind. Distribution of this memo is unlimited. ๐ŸŒธ

Copyright (C) The Internet Society (2006). ๐Ÿฆ‹

Abstract ๐Ÿ’–

Okay so this doc shows what happened when people simulated the timing rules of the Extended RTP Profile for Real-time Transport Control Protocol (RTCP)-Based Feedback, which everyone calls AVPF ๐ŸŽ€ They tested unicast and multicast setups and a bunch of different protocol and environment configs. The verdict? The timing rules give better feedback delay, AND they still keep the well-accepted RTP rules for how much bit rate control traffic is allowed to use. Slay ๐Ÿ’…โœจ

Table of Contents ๐Ÿ—บ๏ธ

1. Introduction ....................................................3
2. Timing Rules of the Extended RTP Profile for RTCP-Based
   Feedback ........................................................4
3. Simulation Environment ..........................................5
   3.1. Network Simulator Version 2 ................................5
   3.2. RTP Agent ..................................................5
   3.3. Scenarios ..................................................5
   3.4. Topologies .................................................6
4. RTCP Bit Rate Measurements ......................................6
   4.1. Unicast ....................................................7
   4.2. Multicast .................................................10
   4.3. Summary of the RTCP Bit Rate Measurements .................10
5. Feedback Measurements ..........................................11
   5.1. Unicast ...................................................11
   5.2. Multicast .................................................12
        5.2.1. Shared Losses vs. Distributed Losses ...............13
6. Investigations on "l" ..........................................14
   6.1. Feedback Suppression Performance ..........................16
   6.2. Loss Report Delay .........................................18
   6.3. Summary of "l" Investigations .............................18
7. Applications Using AVPF ........................................19
   7.1. NEWPRED Implementation in NS2 .............................19
   7.2. Simulation ................................................21
        7.2.1. Simulation A - Constant Packet Loss Rate ...........21
        7.2.2. Simulation B - Packet Loss Due to Congestion .......23
   7.3. Summary of Application Simulations ........................24
8. Summary ........................................................24
9. Security Considerations ........................................25
10. Normative References ..........................................26
11. Informative References ........................................26

1. Introduction ๐ŸŒˆ

Okay so the Real-time Transport Protocol (RTP) is EVERYWHERE for sending real-time or near real-time media over the Internet ๐Ÿ“ก It was originally built to work great for multicast groups at super large scale, but its scope isn't limited to that. More and more apps use RTP for small multicast groups (like video conferences) or even unicast (like IP telephony and media streaming) ๐ŸŽง

RTP comes with its bestie protocol, the Real-time Transport Control Protocol (RTCP) ๐Ÿซถ RTCP keeps an eye on how the media is being transmitted and sends back feedback about reception quality. It can also do loose session control. Since the original design had huge multicast groups in mind, the rules about when to send feedback were kept really tight so you don't get feedback explosions or feedback-related congestion in the network ๐Ÿ™ˆ And honestly? RTP and RTCP have proven they work well on the Internet, especially in large multicast groups, which is why they're so widely used today ๐Ÿ‘‘

BUT (and this is the tea) apps that only send media to small multicast groups or to unicast might actually benefit from more frequent feedback ๐Ÿ“ The source of the packets may be able to react to changes in reception quality, which could come from varying network utilization (like congestion) or other stuff. Possible reactions include transmission rate adaptation using a congestion control algorithm, or turning on error resilience features for the media stream, like retransmissions, reference picture selection, NEWPRED, etc. ๐Ÿ”ฅ

So yeah, more frequent feedback could be really desirable for reception quality, but RTP restricts the use of RTCP feedback. ๐Ÿ˜ญ The solution was to create a brand new extended RTP profile that redefines some of the RTCP timing rules, while keeping most of the RTP and RTCP algorithms that have already proven themselves ๐Ÿ’… The new rules are meant to scale from unicast up to multicast, with unicast and small multicast apps getting the biggest gain. You can find a detailed description of the new profile and its timing rules in [1] ๐Ÿ“–

This document investigates the new algorithms with simulations โœจ We show that the new timing rules scale well and behave in a network-friendly way. First, Section 2 roughly describes the key features of the new RTP profile that matter for our simulations. After that, Section 3 describes the environment we used to run the simulations. Section 4 shows simulation results that demonstrate backwards compatibility with RTP and that the new profile is network-friendly in terms of the bandwidth used for RTCP traffic. In Section 5, we show the benefit apps could get from implementing the new profile. In Section 6, we looked at the effect of the parameter "l" (used to calculate the T_dither_max value) on algorithm performance. Finally, in Section 7, we show the performance gain we could get for a special application, namely NEWPRED in [6] and [7] ๐Ÿฆ‹

2. Timing Rules of the Extended RTP Profile for RTCP-Based Feedback ๐Ÿงš

As I said above, RTP restricts how RTCP feedback is used. The main RTCP restrictions are these:

  • RTCP messages are sent in compound packets, i.e., every RTCP packet contains at least one sender report (SR) or receiver report (RR) message and a source description (SDES) message.
  • The RTCP compound packets are sent in time intervals (T_rr), which are computed as a function of the average packet size, the number of senders and receivers in the group, and the session bandwidth (5% of the session bandwidth is used for RTCP messages; this bandwidth is shared between all session members, where the senders may get a larger share than the receivers.)
  • The average minimum interval between two RTCP packets from the same source is 5 seconds.

Honestly these rules are SO good at preventing feedback explosion and scaling to large multicast groups ๐Ÿ™Œ But they don't allow timely feedback at all ๐Ÿฅฒ The second rule does scale down to small groups or unicast (where the interval might be as small as a few milliseconds), but the third rule can stop receivers from sending feedback in a timely way.

The timing rules for sending RTCP feedback in the new RTP profile [1] have two key parts. First, the minimum interval of 5 seconds gets abolished ๐Ÿ’ฅ Second, during every other one of their (now pretty small) RTCP intervals, receivers get one chance to send an RTCP packet "early". That means it isn't sent according to the calculated interval, but basically right away โšก It's important to note that the RTCP interval calculation is still inherited from the original RTP specification ๐ŸŽ€

The full spec and all the details of the extended timing rules are in [1]. Instead of re-describing the algorithms here, we just reference the original specification [1], so we use the same variable names and abbreviations as in [1] too ๐Ÿซถ

3. Simulation Environment ๐ŸŒธ

This section describes the simulation testbed we used for the investigations and its key features ๐Ÿ’ป The extensions we needed for the simulator are roughly described in the subsections below.

3.1. Network Simulator Version 2 ๐Ÿ–ฅ๏ธ

The simulations were run with the network simulator version 2 (ns2) ๐ŸŒˆ ns2 is an open source project written in a combo of Tool Command Language (TCL) and C++. The scenarios are set up in TCL. The scripts let you specify the topologies (nodes and links, bandwidths, queue sizes, or error rates for links) and the parameters of the "agents", i.e., protocol configurations ๐Ÿ“ The protocols themselves are implemented in C++ in the agents, which are connected to the nodes. The documentation for ns2 and the newest version can be found in [4] ๐Ÿ“š

3.2. RTP Agent ๐Ÿง

We built a brand new agent based on RTP/RTCP ๐Ÿ’– RTP packets are sent at a constant packet rate with the correct header sizes. RTCP packets are sent according to the timing rules of [2] and [3], and its algorithms for group membership maintenance are implemented too. Sender and receiver reports are sent as well ๐Ÿ“จ

We also extended the agent to support the extended profile [1] ๐Ÿฆ‹ You can turn the new timing rules on and off with parameter settings in TCL ๐ŸŽ€

3.3. Scenarios ๐Ÿ—บ๏ธ

The scenarios we simulated are defined in TCL scripts ๐Ÿ’œ We set up several different topologies, ranging from unicast with two session members up to multicast with up to 25 session members ๐Ÿ‘‘ Depending on the sending rates and the corresponding link bandwidths, congestion losses may occur. In some scenarios, bit errors are inserted on certain links ๐Ÿ™ˆ We simulated groups with RTP/AVP agents, RTP/AVPF agents, and mixed groups ๐Ÿซถ

The feedback messages are generally NACK messages, as defined in [1], and they're triggered by packet loss ๐Ÿ”ฅ

3.4. Topologies โœจ

okay so, we mainly simulated four different topologies to show off the key features of the extended profile ๐Ÿ’… for some specific simulations we used different topologies too, and when that happens the results description tells you ๐Ÿงš the main four are named after how many participating RTP agents they have: T-2, T-4, T-8, and T-16. T-2 is the unicast one, T-4 has four agents, and so on ๐ŸŒธ here's Figure 1 ๐Ÿฆ‹

                                                   A5
                                     A5            |   A6
                                    /              |  /
                                   /               | /--A7
                                  /                |/
                    A2          A2-----A6          A2--A8
                   /           /                  /        A9
                  /           /                  /        /
                 /           /                  /        /---A10
   A1-----A2   A1-----A3   A1-----A3-----A7   A1------A3<
                 \           \                  \        \---A11
                  \           \                  \        \
                   \           \                  \        A12
                    A4          A4-----A8          A4--A13
                                                   |\
                                                   | \--A14
                                                   |  \
                                                   |  A15
                                                  A16

       T-2         T-4            T-8               T-16

Figure 1: Simulated topologies

4. RTCP Bit Rate Measurements ๐Ÿ”ฅ

the new timing rules allow more frequent RTCP feedback for small multicast groups ๐Ÿ’– in large groups the algorithm acts pretty much like the normal RTCP timing rules ๐Ÿซถ more frequent feedback is great and all, but it's a hard no to let the RTCP bit rate climb above a fixed limit, which is 5% of the total RTP bandwidth according to RTP ๐Ÿšซ this section shows that the new timing rules keep RTCP bandwidth usage under that 5% limit for all the investigated scenarios, topologies, and group sizes โœจ we also show that mixed groups (some members using AVP, some AVPF) can be allowed, and that each session member behaves fairly according to its own specification ๐Ÿ‘‘ other values for the RTCP bandwidth limit may be specified using the RTCP bandwidth modifiers as in [10].

4.1. Unicast

first we measured the RTCP bandwidth share in the unicast topology T-2 ๐Ÿฆ‹ even with a fixed topology and group size, there are several protocol parameters that get varied so we can simulate a huge range of scenarios ๐Ÿ“ we varied the configurations of the agents, so they may use AVP or AVPF. that means it's possible for one agent to use AVP and the other AVPF in one RTP session, which is how we test the backwards compatibility of the AVPF profile ๐Ÿ™ˆ

next up, scenarios where no losses occur ๐Ÿ’… in this case both RTP session members send RTCP compound packets at regular intervals. they're calculated as T_rr if they use AVPF, and they use a minimum interval of 5 seconds (on average) if they implement AVP. no early packets get sent, because there's no need for early feedback ๐Ÿ’€ still, it's important to see that not more than 5% of the session bandwidth is used for RTCP, and that AVP and AVPF members can coexist without interference โœจ the results are in Table 1 ๐ŸŽ€

       |         |      |      |      |      | Used RTCP Bit Rate |
       | Session | Send | Rec. | AVP  | AVPF | (% of session bw)  |
       |Bandwidth|Agents|Agents|Agents|Agents|  A1  |  A2  | sum  |
       +---------+------+------+------+------+------+------+------+
       |  2 Mbps |  1   |  2   |  -   | 1,2  | 2.42 | 2.56 | 4.98 |
       |  2 Mbps | 1,2  |  -   |  -   | 1,2  | 2.49 | 2.49 | 4.98 |
       |  2 Mbps |  1   |  2   |  1   |  2   | 0.01 | 2.49 | 2.50 |
       |  2 Mbps | 1,2  |  -   |  1   |  2   | 0.01 | 2.48 | 2.49 |
       |  2 Mbps |  1   |  2   | 1,2  |  -   | 0.01 | 0.01 | 0.02 |
       |  2 Mbps | 1,2  |  -   | 1,2  |  -   | 0.01 | 0.01 | 0.02 |
       |200 kbps |  1   |  2   |  -   | 1,2  | 2.42 | 2.56 | 4.98 |
       |200 kbps | 1,2  |  -   |  -   | 1,2  | 2.49 | 2.49 | 4.98 |
       |200 kbps |  1   |  2   |  1   |  2   | 0.06 | 2.49 | 2.55 |
       |200 kbps | 1,2  |  -   |  1   |  2   | 0.08 | 2.50 | 2.58 |
       |200 kbps |  1   |  2   | 1,2  |  -   | 0.06 | 0.06 | 0.12 |
       |200 kbps | 1,2  |  -   | 1,2  |  -   | 0.08 | 0.08 | 0.16 |
       | 20 kbps |  1   |  2   |  -   | 1,2  | 2.44 | 2.54 | 4.98 |
       | 20 kbps | 1,2  |  -   |  -   | 1,2  | 2.50 | 2.51 | 5.01 |
       | 20 kbps |  1   |  2   |  1   |  2   | 0.58 | 2.48 | 3.06 |
       | 20 kbps | 1,2  |  -   |  1   |  2   | 0.77 | 2.51 | 3.28 |
       | 20 kbps |  1   |  2   | 1,2  |  -   | 0.58 | 0.61 | 1.19 |
       | 20 kbps | 1,2  |  -   | 1,2  |  -   | 0.77 | 0.79 | 1.58 |

             Table 1: Unicast simulations without packet loss

look at this ๐Ÿคฉ in configurations where both agents use the new timing rules, each of them uses, at most, about 2.5% of the session bandwidth for RTP, which adds up to 5% of the session bandwidth for both ๐Ÿ’– this holds whether the agent is a sender or a receiver. when agent A1 uses AVP and agent A2 uses AVPF, the total RTCP session bandwidth drops ๐Ÿ“‰ that's because agent A1 can only send RTCP packets with an average minimum interval of 5 seconds, so only a small fraction of the session bandwidth goes to its RTCP packets. for a high-bit-rate session (session bandwidth = 2 Mbps), the fraction of RTCP packets from agent A1 is as small as 0.01% ๐Ÿ™ˆ for smaller session bandwidths the fraction goes up, because the same amount of RTCP data gets sent. the bandwidth share used by RTCP packets from agent A2 is no different from what it was when both agents implemented AVPF. so the interaction of AVP and AVPF agents is not problematic in these scenarios at all ๐Ÿซถ

in our second unicast experiment, we show that the allowed RTCP bandwidth share is not exceeded, even when packet loss happens ๐Ÿ˜ญ we simulated a constant byte error rate (BYER) on the link. the byte errors get inserted randomly, following a uniform distribution.

packets with byte errors are discarded on the link, so the receiving agents won't see the loss right away. the agents detect packet loss by spotting a gap in the sequence number ๐Ÿ•ต๏ธ

when an AVPF agent detects a packet loss, the early feedback procedure starts ๐Ÿ”ฅ as described in AVPF [1], in unicast T_dither_max is always zero, so an early packet can be sent immediately if allow_early is true. if the last packet was already an early one (i.e., allow_early = false), the feedback might get appended to the next regularly scheduled receiver report. the max_feedback_delay parameter (which we set to 1 second in our simulations) decides whether that's allowed ๐Ÿ‘‘

the results are in Table 2, and as you can see there's no difference in the RTCP bandwidth share, whether or not losses occur ๐ŸŒˆ this is what we expected, because even though the RTCP packet size grows and early packets get sent, the interval between packets increases too, so the RTCP bandwidth stays the same. only the RTCP bandwidth of the agents using AVP goes up a bit. this is because the interval between packets is still 5 seconds (on average), but the packet size grew because of the appended feedback ๐Ÿ“

       |         |      |      |      |      | Used RTCP Bit Rate |
       | Session | Send | Rec. | AVP  | AVPF | (% of session bw)  |
       |Bandwidth|Agents|Agents|Agents|Agents|  A1  |  A2  | sum  |
       +---------+------+------+------+------+------+------+------+
       |  2 Mbps |  1   |  2   |  -   | 1,2  | 2.42 | 2.56 | 4.98 |
       |  2 Mbps | 1,2  |  -   |  -   | 1,2  | 2.49 | 2.49 | 4.98 |
       |  2 Mbps |  1   |  2   |  1   |  2   | 0.01 | 2.49 | 2.50 |
       |  2 Mbps | 1,2  |  -   |  1   |  2   | 0.01 | 2.48 | 2.49 |
       |  2 Mbps |  1   |  2   | 1,2  |  -   | 0.01 | 0.02 | 0.03 |
       |  2 Mbps | 1,2  |  -   | 1,2  |  -   | 0.01 | 0.01 | 0.02 |
       |200 kbps |  1   |  2   |  -   | 1,2  | 2.42 | 2.56 | 4.98 |
       |200 kbps | 1,2  |  -   |  -   | 1,2  | 2.50 | 2.49 | 4.99 |
       |200 kbps |  1   |  2   |  1   |  2   | 0.06 | 2.50 | 2.56 |
       |200 kbps | 1,2  |  -   |  1   |  2   | 0.08 | 2.49 | 2.57 |
       |200 kbps |  1   |  2   | 1,2  |  -   | 0.06 | 0.07 | 0.13 |
       |200 kbps | 1,2  |  -   | 1,2  |  -   | 0.09 | 0.08 | 0.17 |
       | 20 kbps |  1   |  2   |  -   | 1,2  | 2.42 | 2.57 | 4.99 |
       | 20 kbps | 1,2  |  -   |  -   | 1,2  | 2.52 | 2.51 | 5.03 |
       | 20 kbps |  1   |  2   |  1   |  2   | 0.58 | 2.54 | 3.12 |
       | 20 kbps | 1,2  |  -   |  1   |  2   | 0.83 | 2.43 | 3.26 |
       | 20 kbps |  1   |  2   | 1,2  |  -   | 0.58 | 0.73 | 1.31 |
       | 20 kbps | 1,2  |  -   | 1,2  |  -   | 0.86 | 0.84 | 1.70 |

               Table 2: Unicast simulations with packet loss

4.2. Multicast

next, we looked at the RTCP bandwidth share in multicast scenarios ๐ŸŒธ we simulated topologies T-4, T-8, and T-16 and measured the fraction of session bandwidth used for RTCP packets. we tried lots of different situations and protocol configurations (e.g., with or without bit errors, groups with AVP and/or AVPF agents, etc.). for readability, we only show selected results. for documentation of all the results, see [5] ๐Ÿ“š

the simulations of the different topologies, in scenarios where no losses occur (neither from bit errors nor from congestion), show behaviour similar to the unicast case โœจ for all group sizes, the maximum RTCP bit rate share used is 5.06% of the session bandwidth, in a simulation of 16 session members in a low-bit-rate scenario (session bandwidth = 20 kbps) with several senders ๐Ÿ˜ณ in all other scenarios without losses, the RTCP bit rate share used is below that. so the requirement that not more than 5% of the session bit rate should be used for RTCP is fulfilled with reasonable accuracy ๐Ÿ’œ

simulations where bit errors are randomly inserted in RTP and RTCP packets, and the corrupted packets get discarded, give the same results ๐ŸŽ€ the 5% rule holds (at most 5.07% of the session bandwidth is used for RTCP).

finally, we ran simulations where we reduced the link bandwidth to cause congestion-related losses ๐Ÿ”ฅ these are different from the bit error simulations, because the losses happen more in bursts and are more correlated, including between different agents ๐Ÿซ  the correlation and "burstiness" of the packet loss comes from the queuing discipline in the routers we simulated. we used simple FIFO queues with a drop-tail strategy to handle congestion. Random Early Detection (RED) queues may enhance performance, because the burstiness of the packet loss might be reduced, but that isn't the subject of our investigations and is left for future study ๐Ÿงš the delay between agents, which also affects RTP and RTCP packets, is much more variable because of the added queuing delay. still, the RTCP bit rate share used does not go beyond 5.09% of the session bandwidth ๐Ÿฅน so for these special cases the requirement is fulfilled too, bestie ๐Ÿ‘‘

4.3. Summary of the RTCP Bit Rate Measurements โœจ

okay so bestie, the big takeaway here is that feedback implosion just doesn't happen ๐Ÿ˜ญ for unicast and reasonable multicast scenarios ๐Ÿ™Œ We're talking no feedback avalanche at all. And the RTCP bandwidth rule? It's giving compliant ๐Ÿ’… The requirement that at maximum 5% of the session bandwidth goes to RTCP is met in every single scenario we tested ๐ŸŽ€

5. Feedback Measurements ๐Ÿ”ฅ

okay this section is where we check out the actual feedback delay results from our simulations ๐Ÿฆ‹ We used two metrics to judge how the algorithms performed: the "mean waiting time" (MWT) ๐Ÿ• and the count of feedback packets that were sent, suppressed, or not allowed ๐Ÿ“Š The waiting time is measured at a given agent, from the moment it spots a packet loss event until the matching feedback goes out โฑ๏ธ We figure the feedback's value drops the longer it takes to arrive, so MWT is a solid way to measure how much we gain by switching from AVP to AVPF ๐Ÿ’œ

here's the deal with the feedback an RTP/AVPF agent wants to send: it either gets sent or it doesn't ๐Ÿค” If it doesn't, that's either because of feedback suppression (someone else already sent the same feedback ๐Ÿซถ) or because the feedback wasn't allowed (the max_feedback_delay got exceeded ๐Ÿ˜ฌ) We tracked every detected loss and logged whether the agent sent its feedback, and if not, why. The more feedback that wasn't allowed, the worse the algorithm is doing ๐Ÿ’€ Combined with the waiting times, that gives us a really good read on how the whole scheme is performing โœจ

5.1. Unicast ๐ŸŽ€

in the unicast case, the maximum dithering interval T_dither_max is fixed and set to zero ๐Ÿ™ˆ That makes sense because a unicast receiver has no reason to wait around for other receivers with the same feedback to send ๐Ÿ™…โ€โ™€๏ธ Feedback can still get delayed, though, or might not be permitted to go out at all ๐Ÿ˜ญ The regularly scheduled packets are spaced according to T_rr, which in the unicast case depends mainly on the session bandwidth ๐ŸŒธ

Table 3 shows the mean waiting times (MWTs), measured in seconds, for some configurations of the unicast topology T-2 ๐Ÿ“ˆ It also lists how many feedback packets were sent or discarded (feedback sent (sent) or feedback discarded (disc)) ๐Ÿ“ We skipped suppressed packets because feedback suppression doesn't apply to unicast, so that column isn't a thing here ๐Ÿ™ƒ In the simulations, agent A1 was the sender and agent A2 was a pure receiver ๐Ÿงš

       |         |       |          Feedback Statistics          |
       | Session |       |       AVP         |       AVPF        |
       |Bandwidth|  PLR  | sent |disc| MWT   | sent |disc| MWT   |
       +---------+-------+------+----+-------+------+----+-------+
       |  2 Mbps | 0.001 |  781 |  0 | 2.604 |  756 |  0 | 0.015 |
       |  2 Mbps | 0.01  | 7480 |  0 | 2.591 | 7548 |  2 | 0.006 |
       |  2 Mbps | cong. |   25 |  0 | 2.557 | 1741 |  0 | 0.001 |
       | 20 kbps | 0.001 |   79 |  0 | 2.472 |   74 |  2 | 0.034 |
       | 20 kbps | 0.01  |  780 |  0 | 2.605 |  709 | 64 | 0.163 |
       | 20 kbps | cong. |  780 |  0 | 2.590 |  687 | 70 | 0.162 |

         Table 3: Feedback statistics for the unicast simulations

look at those numbers, bestie ๐Ÿ˜ The mean waiting time drops dramatically when you use AVPF instead of AVP ๐Ÿš€ AVP agents are stuck at around 2.5 seconds the whole time (half the minimum interval average) ๐Ÿ˜ฉ With AVPF, most configurations get it down to a few ms ๐Ÿ”ฅ

in the high session bandwidth configurations, basically all triggered feedback gets sent ๐Ÿ‘‘ That's because there's more RTCP bandwidth to go around โœจ There are only a few exceptions, and they're probably caused by more than one packet loss inside a single RTCP interval, where the first loss got sent super early by chance ๐Ÿ™ˆ The second feedback might get triggered after that early packet already went out, but too soon to tack it onto the next regularly scheduled report, thanks to the limit of the max_feedback_delay ๐Ÿ˜ฌ

it's different when the session bandwidth is small, because the RTCP bandwidth share is pretty low and T_rr ends up larger ๐Ÿข After an early packet goes out, the time until the next regularly scheduled packet can get really long ๐Ÿฅฒ In some cases that time was bigger than the max_feedback_delay, and in those cases the feedback isn't allowed to be sent at all ๐Ÿ’”

with a different max_feedback_delay setting, you can end up with either more feedback that isn't allowed plus a lower mean waiting time, or more feedback that does get sent but with a higher waiting time ๐ŸŽญ So the parameter should be set with care, according to what the application actually needs ๐Ÿ’…

5.2. Multicast ๐ŸŒˆ

in this section we look at some feedback statistics from the multicast simulations โœจ We picked out a few characteristic and representative results ๐Ÿ’œ We considered the topology T-16, and different scenarios and applications were simulated for it ๐Ÿงš The link parameters were set up like this: agents A2, A3, and A4 connect to the middle node of the multicast tree (that's agent A1) through high bandwidth, low-delay links ๐Ÿš„ The other agents connect to nodes 2, 3, and 4 with different link characteristics ๐ŸŽ€

the agents on node 2 represent mobile users ๐Ÿ“ฑ In certain configurations they deal with a certain byte error rate on their access links, and their delays are high ๐Ÿฅฒ The agents on node 3 have low-bandwidth access links but don't suffer from bit errors ๐ŸŒ The last group, on node 4, has high bandwidth and low delay ๐ŸŽ๏ธ

5.2.1. Shared Losses vs. Distributed Losses ๐Ÿฆ‹

in our first investigation, we wanted to see how the loss characteristic affects the algorithm's performance ๐Ÿ” We looked at cases where packet loss hits several users at the same time (shared losses) versus cases where it happens totally independently (distributed losses) ๐Ÿ’ซ Agent A1 is the sender here ๐Ÿ“ฃ For shared losses, we put a constant byte error rate on one of the middle links, the one between A1 and A2 ๐Ÿ”— For distributed losses, we put the same byte error rate on all the links downstream of A2 ๐ŸŒŠ

these scenarios are super interesting because of the feedback suppression algorithm ๐Ÿ‘€ When every receiver shares the same loss, only one of them needs to send the loss report ๐Ÿ™Œ So if a member gets feedback with the same content it had scheduled, it suppresses its own scheduled feedback ๐Ÿคซ That suppressed feedback doesn't count toward the mean waiting times, which is lowkey genius ๐Ÿง  We expected shorter waiting times for shared losses, since there's a high chance one receiver can send the feedback more or less right away โšก The results are below ๐Ÿ‘‡

       |     |                Feedback Statistics                |
       |     |  Shared Losses          |  Distributed Losses     |
       |Agent|sent|fbsp|disc|sum | MWT |sent|fbsp|disc|sum | MWT |
       +-----+----+----+----+----+-----+----+----+----+----+-----+
       |  A2 | 274| 351|  25| 650|0.267|   -|   -|   -|   -|    -|
       |  A5 | 231| 408|  11| 650|0.243| 619|   2|  32| 653|0.663|
       |  A6 | 234| 407|   9| 650|0.235| 587|   2|  32| 621|0.701|
       |  A7 | 223| 414|  13| 650|0.253| 594|   6|  41| 641|0.658|
       |  A8 | 188| 443|  19| 650|0.235| 596|   1|  32| 629|0.677|

          Table 4: Feedback statistics for multicast simulations

Table 4 shows the feedback statistics for a simulation with a large group size ๐Ÿ˜ All 16 agents of topology T-16 joined the RTP session ๐ŸŽ‰ But only agent A1 acts as an RTP sender; everyone else is a pure receiver ๐ŸŽค Only 4 or 5 agents suffer from packet loss: A2, A5, A6, A7, and A8 for shared losses, and A5, A6, A7, and A8 for distributed losses ๐Ÿฅบ The number of session members is the same in both cases, so T_rr is also the same on average โš–๏ธ Even so, the mean waiting times drop by more than 50% for shared losses ๐Ÿ“‰ That proves our assumption that shared losses boost the algorithm's performance, no matter the loss characteristic ๐Ÿ™Œโœจ

the feedback suppression mechanism seems to be working really well ๐Ÿ’… Some feedback still comes from different receivers, i.e., 1150 loss reports were sent in total for only 650 lost packets, so loss reports got received on average 1.8 times ๐Ÿ“ฌ But most of the redundant feedback got suppressed ๐Ÿซถ Specifically, 2023 loss reports were suppressed out of 3250 individual detected losses, which means more than 60% of the feedback was actually suppressed ๐ŸŽ€๐Ÿ”ฅ

6. Investigations on "l" ๐Ÿ”ฅ

okay so this section is where we poke at the "l" parameter and see how it messes with T_dither_max in RTP/AVPF agents ๐Ÿงš we're looking at feedback suppression performance AND report delay across three sample scenarios, bestie ๐Ÿ’…

Here's the vibe: for all receivers, the formula is T_dither_max = l * T_rr, and we're using l = 0.5 ๐ŸŽ€ why? Because if a receiver has no round-trip time (RTT) estimation, it literally doesn't know how long to wait for everyone else to send feedback ๐Ÿ˜ญ If the wait is too short, the feedback suppression algorithm fails, but if it's too long, the wait gets unnecessarily stretched and the feedback becomes less valuable. The perfect number could be found for each case, but that's not always doable, and tbh that's fine ๐Ÿซถ A decreased feedback value or a failed suppression mechanism doesn't wreck network stability. We showed for the distributed-losses cases that the overall bandwidth constraints are kept no matter what, so picking the wrong time value only costs some performance. โœจ

Now, a good measure for T_dither_max is the RTCP interval T_rr ๐ŸŒธ it grows with the number of session members, and we know we can send feedback at least every T_rr. So making T_dither max bigger than T_rr would be giving no sense at all ๐Ÿ’€ By choosing T_rr/2, we make sure that sometimes (like when a loss gets detected in the first half of the interval between two regularly scheduled RTCP packets) we're allowed to send early packets. And because T_dither is random, we still have a really good shot at sending that early packet on time ๐Ÿฆ‹

The AVPF profile says the T_dither_max calculation, as given above, is the same for session members with an RTT estimation AND those without one ๐Ÿ‘‘ If it weren't, people using different formulas could end up with super different mean waiting times before sending feedback, which means different reporting priorities. Like, in a scenario where T_rr = 1 s and the RTT = 100 ms, receivers using the RTT estimation would, on average, send more feedback than those who aren't ๐Ÿ˜ฌ That could cancel out the feedback suppression mechanism and even cause feedback implosion, which is NOT the vibe.

Also, in a general case where losses are shared, the feedback suppression mechanism only works if each receiver's feedback packets have enough time to reach all the other receivers before the calculated T_dither_max seconds are up โฐ So in scenarios of very high bandwidth (small T_rr), the calculated T_dither_max could end up way smaller than the propagation delay between receivers. That means the suppression mechanism fails ๐Ÿ™ˆ One fix could be limiting the bandwidth available to receivers (see [10]) so this doesn't happen. Another could be developing a feedback suppression mechanism based on the RTT estimation between senders. We're not going to dig into that here, and it might be the subject of another document ๐Ÿ“š Just note that a really high bandwidth media stream isn't that likely to rely on this kind of error repair in the first place ๐Ÿ’–

Okay, so next up, we define three representative sample scenarios ๐Ÿงš We're using the topology from the previous section, T-16. Most of the agents barely contribute to the simulations, because we only introduced an error rate on the link between the sender A1 and the agent A2 ๐ŸŒˆ

The first scenario is about losses being shared between two agents, where one agent sits upstream on the path between the other agent and the sender. So agent A2 and agent A5 see the same losses, the ones introduced on the link between the sender and agent A2. Agents A6, A7, and A8 do NOT join the RTP session. From the other agents, only A3 and A9 join. Everyone is a pure receiver, except A1, which is the sender. ๐Ÿ“

The second scenario ALSO has losses shared between two agents, but this time the agents are on different branches of the multicast tree ๐ŸŒฟ The delays to the sender are roughly the same magnitude. Agents A5 and A6 share the same losses. Agents A3 and A9 join the RTP session, but they're pure receivers and don't see any losses ๐Ÿฆ‹

Finally, the third scenario has losses shared between A5 and A6 again, with the same agents active as in the second scenario ๐Ÿ’œ The difference is the link delays. The delay between agents A2 and A5 is reduced to 20 ms, and between A2 and A6 it's 40 ms โญ

All agents besides agent A1 are pure RTP receivers ๐Ÿซถ So they don't have an RTT estimation to the source. T_dither_max is calculated with the formula above, depending only on T_rr and l, which means all agents should calculate roughly the same T_dither_max โœจ


6.1. Feedback Suppression Performance

Quick definition: the feedback suppression rate for an agent is the ratio of feedback packets NOT sent out of the total feedback packets that agent intended to send (aka the sum of sent and not sent) ๐Ÿงฎ Reasons for not sending a packet include the receiver already seeing the same loss reported in a receiver report from another session member, OR the max_feedback_delay (application-specific) getting surpassed ๐Ÿ™…โ€โ™€๏ธ

Here's the tea on agent Af, the one further from the sender ๐Ÿต Table 5 shows that the feedback suppression rate goes up as l goes up. There IS a threshold, though (it depends on the environment) past which the extra gain isn't significant anymore ๐Ÿฅฑ

                  |      |  Feedback Suppression Rate  |
                  |  l   | Scen. 1 | Scen. 2 | Scen. 3 |
                  +------+---------+---------+---------+
                  | 0.10 |  0.671  |  0.051  |  0.089  |
                  | 0.25 |  0.582  |  0.060  |  0.210  |
                  | 0.50 |  0.524  |  0.114  |  0.361  |
                  | 0.75 |  0.523  |  0.180  |  0.370  |
                  | 1.00 |  0.523  |  0.204  |  0.369  |
                  | 1.25 |  0.506  |  0.187  |  0.372  |
                  | 1.50 |  0.536  |  0.213  |  0.414  |
                  | 1.75 |  0.526  |  0.215  |  0.424  |
                  | 2.00 |  0.535  |  0.216  |  0.400  |
                  | 3.00 |  0.522  |  0.220  |  0.405  |
                  | 4.00 |  0.522  |  0.220  |  0.405  |

Table 5: Fraction of feedback that was suppressed at agent (Af) of the total number of feedback messages the agent wanted to send

Table 6 is giving similar energy for agent An, the one nearer to the sender ๐Ÿ’…

                  |      |  Feedback Suppression Rate  |
                  |  l   | Scen. 1 | Scen. 2 | Scen. 3 |
                  +------+---------+---------+---------+
                  | 0.10 |  0.056  |  0.056  |  0.090  |
                  | 0.25 |  0.063  |  0.055  |  0.166  |
                  | 0.50 |  0.116  |  0.099  |  0.255  |
                  | 0.75 |  0.141  |  0.141  |  0.312  |
                  | 1.00 |  0.179  |  0.175  |  0.352  |
                  | 1.25 |  0.206  |  0.176  |  0.361  |
                  | 1.50 |  0.193  |  0.193  |  0.337  |
                  | 1.75 |  0.197  |  0.204  |  0.341  |
                  | 2.00 |  0.207  |  0.207  |  0.368  |
                  | 3.00 |  0.196  |  0.203  |  0.359  |
                  | 4.00 |  0.196  |  0.203  |  0.359  |

Table 6: Fraction of feedback that was suppressed at agent (An) of the total number of feedback messages the agent wanted to send

Now the feedback suppression FAILURE rate, shown in Table 7 ๐Ÿ“‰ The extra performance increase stops being significant past a certain threshold, and the scenario definitely matters here too ๐ŸŽญ

                  |      |Feedback Suppr. Failure Rate |
                  |  l   | Scen. 1 | Scen. 2 | Scen. 3 |
                  +------+---------+---------+---------+
                  | 0.10 |  0.273  |  0.893  |  0.822  |
                  | 0.25 |  0.355  |  0.885  |  0.624  |
                  | 0.50 |  0.364  |  0.787  |  0.385  |
                  | 0.75 |  0.334  |  0.679  |  0.318  |
                  | 1.00 |  0.298  |  0.621  |  0.279  |
                  | 1.25 |  0.289  |  0.637  |  0.267  |
                  | 1.50 |  0.274  |  0.595  |  0.249  |
                  | 1.75 |  0.274  |  0.580  |  0.235  |
                  | 2.00 |  0.258  |  0.577  |  0.233  |
                  | 3.00 |  0.282  |  0.577  |  0.236  |
                  | 4.00 |  0.282  |  0.577  |  0.236  |

Table 7: The ratio of feedback suppression failures.

Summing up the feedback suppression results ๐Ÿง generally, performance goes up as l goes up. BUT past a certain threshold, which depends on environment parameters like propagation delays or session bandwidth, the extra increase isn't significant anymore. That threshold is NOT uniform across all scenarios ๐Ÿ™ƒ A value of l=0.5 seems to give reasonable results with acceptable (though not optimal) overhead โœจ


6.2. Loss Report Delay

In this section, we show the measured report delay from the simulations of the three sample scenarios โฑ๏ธ This is a metric of how the algorithms are performing, because the value of the feedback for the sender usually drops the longer it takes to arrive ๐Ÿ˜ค The loss report delay is measured at the sender as the time between sending a packet and receiving the first matching loss report ๐Ÿ“ฌ

                  |      |   Mean Loss Report Delay    |
                  |  l   | Scen. 1 | Scen. 2 | Scen. 3 |
                  +------+---------+---------+---------+
                  | 0.10 |  0.124  |  0.282  |  0.210  |
                  | 0.25 |  0.168  |  0.266  |  0.234  |
                  | 0.50 |  0.243  |  0.264  |  0.284  |
                  | 0.75 |  0.285  |  0.286  |  0.325  |
                  | 1.00 |  0.329  |  0.305  |  0.350  |
                  | 1.25 |  0.351  |  0.329  |  0.370  |
                  | 1.50 |  0.361  |  0.363  |  0.388  |
                  | 1.75 |  0.360  |  0.387  |  0.392  |
                  | 2.00 |  0.367  |  0.412  |  0.400  |
                  | 3.00 |  0.368  |  0.507  |  0.398  |
                  | 4.00 |  0.368  |  0.568  |  0.398  |

Table 8: The mean loss report delay, measured at the sender.

As Table 8 shows, the delay goes up, in general, as l goes up ๐Ÿ“ˆ A similar effect to feedback suppression performance is happening too: past a certain threshold, the extra increase in delay stops being significant. That threshold depends on the environment and seems to be linked to the threshold where the feedback suppression gain stops increasing anymore ๐Ÿซง

6.3. Summary of "l" Investigations โœจ

okay so bestie, we showed experimentally that the feedback suppression performance gets better as l goes up ๐Ÿ“ˆ, and the report delay goes up right along with it ๐Ÿ˜ญ. this leads to a threshold where neither the performance nor the delay climbs any further ๐Ÿงš. and the threshold depends on the environment ๐ŸŒธ

so finding an optimum value of l is literally not possible ๐Ÿ’€, because it's always a trade-off between delay and feedback suppression performance ๐ŸŽ€. with l=0.5, we think we landed on a trade-off that's acceptable for typical applications and environments ๐Ÿ’…โœจ

7. Applications Using AVPF ๐Ÿฆ‹

ngl this section is so cute ๐Ÿฅน NEWPRED is one of the error resilience tools, defined in both ISO/IEC MPEG-4 visual part and ITU-T H.263 ๐ŸŽฌ. NEWPRED gets fast error recovery by using feedback messages ๐Ÿ’–. we simulated how NEWPRED behaves in the network simulator environment described above and measured the waiting time statistics ๐Ÿ“Š, to check that the extended RTP profile for RTCP-based feedback (AVPF) [1] is appropriate for the NEWPRED feedback messages ๐Ÿซถ. the simulation results, which show up in the following sections, show that the waiting time is small enough to get the expected performance of NEWPRED ๐Ÿ”ฅ

7.1. NEWPRED Implementation in NS2 ๐ŸŒˆ

the agent that does the NEWPRED functionality is called the NEWPRED agent, and it's different from the RTP agent we described above ๐Ÿงš a few of the added features are in these points:

Application Feedback The "Application Layer Feedback Messages" format is used to transmit the NEWPRED feedback messages ๐Ÿ’œ. so the NEWPRED functionality gets added to the RTP agent โœจ. the NEWPRED agent creates one NACK message for each lost segment of a video frame, then assembles multiple NACK messages for the segments in the same video frame into one Application Layer Feedback Message ๐ŸŽ€. there are two modes in NEWPRED, NACK mode and ACK mode [6][7], but only NACK mode is used in these simulations ๐Ÿ™ˆ. in this simulation the RTP layer doesn't generate feedback messages. instead, the decoder (NEWPRED) generates a NACK message when the segment can't be decoded because the data hasn't arrived or a loss of reference picture has happened ๐Ÿ˜ญ. the decoder detects those conditions using the frame number, segment number, and whether reference pictures exist in the decoder ๐Ÿ’…

the parameters of the NEWPRED agent are:

     f: Frame Rate(frames/sec)
   seg: Number of segments in one video frame
    bw: RTP session bandwidth(kbps)

Generation of NEWPRED's NACK Messages The NEWPRED agent generates NACK messages when segments are lost ๐Ÿฅบ

a. the NEWPRED agent generates multiple NACK messages per video frame when multiple segments are lost ๐Ÿ“. these get assembled into one Feedback Control Information (FCI) message per video frame โœจ. if there's no lost segment, no message is generated or sent ๐Ÿ™…โ€โ™€๏ธ

b. one NACK message is 4 bytes long ๐Ÿ’–. let num be the number of NACK messages in one video frame (1 <= num <= seg) ๐Ÿงฎ. so 12+4*num bytes is the size of the low-delay RTCP feedback message in a compound RTCP packet ๐ŸŽ€

Measurements we defined two values to be measured ๐Ÿ“:

  • Recovery time the recovery time is measured as the time between detecting a lost segment and receiving a recovered segment ๐Ÿ˜ค. we measured this "recovery time" for each lost segment ๐Ÿซถ
  • Waiting time the waiting time is the additional delay caused by the feedback limitation of RTP ๐Ÿ•ฐ๏ธ

Figure 2 shows how a NEWPRED agent behaves when a loss happens ๐Ÿ‘€

the recovery time is approximated like this ๐Ÿง :

   (Recovery time) = (Waiting time) +
                     (Transmission time for feedback message) +
                     (Transmission time for media data)

so the waiting time is derived like this ๐Ÿค“:

   (Waiting time) = (Recovery time) - (Round-trip delay), where

   (Round-trip delay ) = (Transmission time for feedback message) +
                         (Transmission time for media data)
     Picture Reference                            |: Picture Segment
              ____________________                %: Lost Segment
             /_    _    _    _    \
            v/ \  / \  / \  / \    \
            v   \v   \v   \v   \    \
Sender   ---|----|----|----|----|----|---|------------->
                 \    \                 ^ \
                  \    \               /   \
                   \    \             /     \
                    \    v           /       \
                     \    x         /         \
                      \   Lost     /           \
                       \    x     /             \
_____
                        v    x   / NACK          v
Receiver ---------------|----%===-%----%----%----|----->
                             |-a-|               |
                             |-------  b  -------|

                       a: Waiting time
                       b: Recover time (%: Video segments are lost)

Figure 2: Relation between the measured values at the NEWPRED agent ๐Ÿ“ธ

7.2. Simulation ๐ŸŽฌ

we ran two simulations (Simulation A and Simulation B) ๐Ÿงช. in Simulation A, packets get dropped at a fixed packet loss rate on a link between two NEWPRED agents ๐Ÿ’ง. in Simulation B, packet loss happens because of congestion from other traffic sources, i.e., ftp sessions ๐Ÿš—๐Ÿ’จ

7.2.1. Simulation A - Constant Packet Loss Rate ๐ŸŒธ

the network topology for this simulation is in Figure 3 ๐Ÿ—บ๏ธ

      Link 1         Link 2        Link 3
+--------+      +------+       +------+      +--------+
| Sender |------|Router|-------|Router|------|Receiver|
+--------+      +------+       +------+      +--------+
         10(msec)       x(msec)       10(msec)

Figure 3: Network topology that is used for Simulation A ๐Ÿ“

Link1 and link3 are error free, and each link delay is 10 msec ๐Ÿซง. packets may get dropped on link2 ๐Ÿ™ƒ. the packet loss rates (Plr) and link delay (D) are:

D [ms] = {10, 50, 100, 200, 500}
Plr    = {0.005, 0.01, 0.02, 0.03, 0.05, 0.1, 0.2}

session bandwidth, frame rate, and the number of segments are in Table 9 ๐Ÿ“‹

+------------+----------+-------------+-----+
|Parameter ID| bw(kbps) |f (frame/sec)| seg |
+------------+----------+-------------+-----+
| 32k-4-3    |     32   |      4      |  3  |
| 32k-5-3    |     32   |      5      |  3  |
| 64k-5-3    |     64   |      5      |  3  |
| 64k-10-3   |     64   |     10      |  3  |
| 128k-10-6  |    128   |     10      |  6  |
| 128k-15-6  |    128   |     15      |  6  |
| 384k-15-6  |    384   |     15      |  6  |
| 384k-30-6  |    384   |     30      |  6  |
| 512k-30-6  |    512   |     30      |  6  |
| 1000k-30-9 |   1000   |     30      |  9  |
| 2000k-30-9 |   2000   |     30      |  9  |
+------------+----------+-------------+-----+

Table 9: Parameter sets of the NEWPRED agents

Figure 4 shows the key values of the result (packet loss rate vs. mean of waiting time) ๐Ÿ“‰

when the packet loss rate is 5% and the session bandwidth is 32 kbps, the waiting time is around 400 msec ๐Ÿ˜ฌ, which is just allowable for reasonable NEWPRED performance ๐Ÿ‘Œ

when the packet loss rate is less than 1%, the waiting time is less than 200 msec ๐Ÿ’ซ. in such a case NEWPRED allows as much as 200-msec additional link delay ๐Ÿฅฐ

when the packet loss rate is less than 5% and the session bandwidth is 64 kbps, the waiting time is also less than 200 msec ๐ŸŽ€

in 128-kbps cases, the result shows that when the packet loss rate is 20%, the waiting time is around 200 msec ๐ŸŒท. in cases with more than 512-kbps session bandwidth, there's no significant delay ๐Ÿฆ‹. this means the waiting time due to the feedback limitation of RTCP is negligible for NEWPRED performance ๐Ÿซถโœจ

   +------------------------------------------------------------+
   |           | Packet Loss Rate =                             |
   | Bandwidth | 0.005| 0.01 | 0.02 | 0.03 | 0.05 |0.10  |0.20  |
   |-----------+------+------+------+------+------+------+------|
   |       32k |130-  |200-  |230-  |280-  |350-  |470-  |560-  |
   |           |   180|   250|   320|   390|   430|   610|   780|
   |       64k | 80-  |100-  |120-  |150-  |180-  |210-  |290-  |
   |           |   130|   150|   180|   190|   210|   300|   400|
   |      128k | 60-  | 70-  | 90-  |110-  |130-  |170-  |190-  |
   |           |    70|    80|   100|   120|   140|   190|   240|
   |      384k | 30-  | 30-  | 30-  | 40-  | 50-  | 50-  | 50-  |
   |           |    50|    50|    50|    50|    60|    70|    90|
   |      512k | < 50 | < 50 | < 50 | < 50 | < 50 | < 50 | < 60 |
   |           |      |      |      |      |      |      |      |
   |     1000k | < 50 | < 50 | < 50 | < 50 | < 50 | < 50 | < 55 |
   |           |      |      |      |      |      |      |      |
   |     2000k | < 30 | < 30 | < 30 | < 30 | < 30 | < 35 | < 35 |
   +------------------+------+------+------+------+------+------+

Figure 4: The result of simulation A ๐Ÿ“Š

7.2.2. Simulation B - Packet Loss Due to Congestion ๐Ÿšฆ

the configurations of link1, link2, and link3 are the same as in Simulation A, except that link2 is also error-free regarding bit errors ๐Ÿงผ. however, some FTP agents are also deployed to overload link2 ๐Ÿ‹๏ธ. see Figure 5 for the simulation topology ๐Ÿ—บ๏ธ

     Link1         Link2          Link3
+--------+      +------+       +------+      +--------+
| Sender |------|Router|-------|Router|------|Receiver|
+--------+    /|+------+       +------+|\    +--------+
        +---+/ |                       | \+---+
      +-|FTP|+---+                   +---+|FTP|-+
      | +---+|FTP| ...               |FTP|+---+ | ...
      +---+  +---+                   +---+  +---+

       FTP Agents                      FTP Agents

Figure 5: Network Topology of Simulation B ๐ŸŒ

the parameters are defined as for Simulation A, with these values assigned:

D[ms] ={10, 50, 100, 200, 500} 32 FTP agents are deployed at each
edge, for a total of 64 FTP agents active.

the sets of session bandwidth, frame rate, and number of segments are the same as in Simulation A (Table 9) ๐Ÿ’•

we give the results for the cases with 64 FTP agents, because these are the cases where packet losses could be detected to be stable ๐Ÿฅฐ. the results are similar to those for Simulation A, except for a constant additional offset of 50..100 ms ๐Ÿซ . this is due to the delay incurred by the routers' buffers ๐Ÿ โœจ

7.3. Summary of Application Simulations โœจ

okay so the big takeaway from all the NEWPRED sims ๐Ÿ’… the RTP AVPF profile's limitations do NOT cause feedback delays high enough to wreck NEWPRED's performance, for sessions from 32 kbps all the way up to 2 Mbps ๐ŸŽ€ the waiting time goes up when session bandwidth goes down and/or packet loss goes up ๐Ÿ“ˆ and the reason for the loss barely matters, because congestion and constant loss rates behave pretty much the same ๐Ÿ™ˆ so for reasonable conditions and parameters, AVPF is lowkey perfect for carrying the feedback NEWPRED needs ๐Ÿซถ if you want more on NEWPRED, check out [8] and [9] ๐Ÿ“š

8. Summary ๐Ÿฆ‹

the new RTP profile AVPF got the full investigation treatment, both for performance and for any risks to network stability ๐Ÿ”ฅ we ran simulations in the network simulator ns2, covering unicast plus a bunch of differently sized multicast topologies ๐ŸŒˆ all the results are in this document ๐Ÿ’œ

okay network stability is a HUGE deal, so we had to prove the new profile can't cause a feedback implosion or hog more bandwidth than it's allowed to use ๐Ÿ˜ญ we measured how much bandwidth RTCP used compared to the RTP session bandwidth, and it came out to more or less exactly 5% of the session bandwidth in every scenario we tried ๐Ÿ’– other RTCP bandwidth values can be set using the RTCP bandwidth modifiers in [10] โœจ we tested unicast with and without errors, multicast groups of different sizes with and without errors or congestion on the links, and honestly it all checked out ๐Ÿ‘‘ so yes, the new profile is network-friendly ๐Ÿซถ it only uses the RTCP bandwidth that RTP allows, and that's the whole point ๐Ÿ’…

secondly (and this one's giving main character energy ๐ŸŽ€), receivers on the new profile get a real performance gain ๐Ÿ”ฅ we measured it by capturing how long the sender waits for the feedback it receives ๐Ÿ˜ณ with the new profile, that delay can drop by orders of magnitude ๐Ÿš€

in the third place, we looked at what the parameter "l" does to the new algorithms ๐Ÿงš spoiler: there is no magic optimum value for "l" ๐Ÿ™ˆ you can only get a trade-off ๐Ÿ’€ how much it matters depends heavily on the environment, and you always have to balance the feedback suppression algorithm's performance against the delay you experience โš–๏ธ the value l=0.5 given in this document is the recommended one, and it seems reasonable for most applications and environments ๐Ÿ“

9. Security Considerations ๐Ÿ”

โš ๏ธ this part is serious, bestie, so pay attention ๐Ÿ˜ค

this document describes the simulation work done to verify that the RTCP timing rules from the AVPF profile [1] actually work correctly ๐Ÿง because of that, any security considerations about those timing rules are covered in that document instead ๐Ÿ“„

10. Normative References ๐Ÿ“–

[1]  Ott, J., Wenger, S., Sato, N., Burmeister, C., and J. Rey,
     "Extended RTP Profile for Real-time Transport Control Protocol
     (RTCP)-Based Feedback (RTP/AVPF)", RFC 4585, July 2006.

11. Informative References ๐Ÿ“š

[2]  Schulzrinne, H., Casner, S., Frederick, R., and V. Jacobson,
     "RTP: A Transport Protocol for Real-Time Applications", STD 64,
     RFC 3550, July 2003.

[3]  Schulzrinne, H. and S. Casner, "RTP Profile for Audio and Video
     Conferences with Minimal Control", STD 65, RFC 3551, July 2003.

[4]  Network Simulator Version 2 - ns-2, available from
     http://www.isi.edu/nsnam/ns.

[5]  C. Burmeister, T. Klinner, "Low Delay Feedback RTCP - Timing
     Rules Simulation Results".  Technical Report of the Panasonic
     European Laboratories, September 2001, available from:
     http://www.informatik.uni-bremen.de/~jo/misc/
     SimulationResults-A.pdf.

[6]  ISO/IEC 14496-2:1999/Amd.1:2000, "Information technology -
     Coding of audio-visual objects - Part2: Visual", July 2000.

[7]  ITU-T Recommendation, H.263.  Video encoding for low bitrate
     communication.  1998.

[8]  S. Fukunaga, T. Nakai, and H. Inoue, "Error Resilient Video
     Coding by Dynamic Replacing of Reference Pictures", IEEE Global
     Telecommunications Conference (GLOBECOM), pp.1503-1508, 1996.

[9]  H. Kimata, Y. Tomita, H. Yamaguchi, S. Ichinose, T. Ichikawa,
     "Receiver-Oriented Real-Time Error Resilient Video Communication
     System: Adaptive Recovery from Error Propagation in Accordance
     with Memory Size at Receiver", Electronics and Communications in
     Japan, Part 1, vol. 84, no. 2, pp.8-17, 2001.

[10] Casner, S., "Session Description Protocol (SDP) Bandwidth
     Modifiers for RTP Control Protocol (RTCP) Bandwidth", RFC 3556,
     July 2003.

Authors' Addresses ๐Ÿ’Œ

Carsten Burmeister
Panasonic R&D Center Germany GmbH
Monzastr. 4c
D-63225 Langen, Germany

EMail: carsten.burmeister@eu.panasonic.com


Rolf Hakenberg
Panasonic R&D Center Germany GmbH
Monzastr. 4c
D-63225 Langen, Germany

EMail: rolf.hakenberg@eu.panasonic.com


Akihiro Miyazaki
Matsushita Electric Industrial Co., Ltd
1006, Kadoma, Kadoma City, Osaka, Japan

EMail: miyazaki.akihiro@jp.panasonic.com


Joerg Ott
Helsinki University of Technology, Networking Laboratory
PO Box 3000, 02015 TKK, Finland

EMail: jo@acm.org


Noriyuki Sato
Oki Electric Industry Co., Ltd.
1-16-8 Chuo, Warabi, Saitama 335-8510 Japan

EMail: sato652@oki.com


Shigeru Fukunaga
Oki Electric Industry Co., Ltd.
2-5-7 Hommachi, Chuo-ku, Osaka 541-0053 Japan

EMail: fukunaga444@oki.com

Copyright (C) The Internet Society (2006).

the legal bit, but make it cute ๐ŸŽ€: this document is subject to the rights, licenses and restrictions in BCP 78, and except as set out there, the authors keep all their rights ๐Ÿ’…

๐Ÿ“œ the document and the information in it are provided on an "AS IS" basis, and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

Intellectual Property ๐ŸŒธ

the IETF takes no position on the validity or scope of any Intellectual Property Rights or other rights that might be claimed to apply to the implementation or use of the technology in this document, or on whether any license under those rights might be available, and it doesn't claim to have made any independent effort to find such rights ๐Ÿคทโ€โ™€๏ธ info about the procedures for rights in RFC documents is in BCP 78 and BCP 79 ๐Ÿ“–

copies of IPR disclosures made to the IETF Secretariat, any assurances of licenses to be made available, or the results of an attempt to get a general license or permission for implementers or users of this specification can be found in the IETF on-line IPR repository at http://www.ietf.org/ipr ๐Ÿ”—

the IETF invites any interested party to tell it about any copyrights, patents or patent applications, or other proprietary rights that may cover technology needed to implement this standard ๐Ÿ™‹โ€โ™€๏ธ send that info to ietf-ipr@ietf.org ๐Ÿ’Œ

Acknowledgement ๐Ÿซถ

funding for the RFC Editor function comes from the IETF Administrative Support Activity (IASA) ๐Ÿ’–

๐Ÿ“ฆ where this page comes from