RFC 4585 - Extended RTP Profile for Real-time Transport Cont(2)

时间:2006-11-02 来源: 作者: 点击:
characterizedbyNB*T/Ras"lowerbound".Anestimateforan upperboundismoredifficult.SettingN=1,weobtainforagiven RandBtheintervalT=R/Basaverageintervalbetweeneventsto bereported.Thisinformationcanbeusedasa
  
      characterized by N > B*T/R as "lower bound".  An estimate for an
      upper bound is more difficult.  Setting N=1, we obtain for a given
      R and B the interval T = R/B as average interval between events to
      be reported.  This information can be used as a hint to determine
      whether or not early transmission of RTCP packets is useful.

   c) Regular RTCP Mode: From some group size upwards, it is no longer
      useful to provide feedback for individual events from receivers at
      all -- because of the time scale in which the feedback could be
      provided and/or because in large groups the sender(s) have no
      chance to react to individual feedback anymore.

      No precise group size threshold can be specified at which this
      mode starts but, obviously, this boundary matches the upper bound
      of the Early RTCP mode as specified in item b) above.

   As the feedback algorithm described in this document scales smoothly,
   there is no need for an agreement among the participants on the
   precise values of the respective FB thresholds within the group.
   Hence, the borders between all these modes are soft.

     ACK
   feedback
     V
     :<- - - -  NACK feedback - - - ->//
     :
     :   Immediate   ||
     : Feedback mode ||Early RTCP mode   Regular RTCP mode
     :<=============>||<=============>//<=================>
     :               ||
    -+---------------||---------------//------------------> group size
     2               ||
      Application-specific FB Threshold
         = f(data rate, packet loss, codec, ...)

                       Figure 1: Modes of operation

   As stated before, the respective FB thresholds depend on a number of
   technical parameters (of the codec, the transport, the type of
   feedback used, etc.) but also on the respective application
   scenarios.  Section 3.6 provides some useful hints (but no precise
   calculations) on estimating these thresholds.

3.4.  Definitions and Algorithm Overview

   The following pieces of state information need to be maintained per
   receiver (largely taken from [1]).  Note that all variables (except
   in item h) below) are calculated independently at each receiver.
   Therefore, their local values may differ at any given point in time.

   a) Let "senders" be the number of active senders in the RTP session.

   b) Let "members" be the current estimate of the number of receivers
      in the RTP session.

   c) Let tn and tp be the time for the next (last) scheduled RTCP RR
      transmission calculated prior to timer reconsideration.

   d) Let Tmin be the minimal interval between RTCP packets as per [1].
      Unlike in [1], the initial Tmin is set to 1 second to allow for
      some group size sampling before sending the first RTCP packet.
      After the first RTCP packet is sent, Tmin is set to 0.

   e) Let T_rr be the interval after which, having just sent a regularly
      scheduled RTCP packet, a receiver would schedule the transmission
      of its next Regular RTCP packet.  This value is obtained following
      the rules of [1] but with Tmin as defined in this document: T_rr =
      T (the "calculated interval" as defined in [1]) with tn = tp + T.
      T_rr always refers to the last value of T that has been computed
      (because of reconsideration or to determine tn).  T_rr is also
      referred to as Regular RTCP interval in this document.

   f) Let t0 be the time at which an event that is to be reported is
      detected by a receiver.

   g) Let T_dither_max be the maximum interval for which an RTCP
      feedback packet MAY be additionally delayed to prevent implosions
      in multiparty sessions; the value for T_dither_max is dynamically
      calculated based upon T_rr (or may be derived by means of another
      mechanism common across all RTP receivers to be specified in the
      future).  For point-to-point sessions (i.e., sessions with exactly
      two members with no change in the group size expected, e.g.,
      unicast streaming sessions), T_dither_max is set to 0.

   h) Let T_max_fb_delay be the upper bound within which feedback to an
      event needs to be reported back to the sender to be useful at all.
      This value is application specific, and no values are defined in
      this document.

   i) Let te be the time for which a feedback packet is scheduled.

   j) Let T_fd be the actual (randomized) delay for the transmission of
      FB message in response to an event at time t0.

   k) Let allow_early be a Boolean variable that indicates whether the
      receiver currently may transmit FB messages prior to its next
      regularly scheduled RTCP interval tn.  This variable is used to
      throttle the feedback sent by a single receiver.  allow_early is
      set to FALSE after Early feedback transmission and is set to TRUE
      as soon as the next Regular RTCP transmission takes place.

   l) Let avg_rtcp_size be the moving average on the RTCP packet size as
      defined in [1].

   m) Let T_rr_interval be an OPTIONAL minimal interval to be used
      between Regular RTCP packets.  If T_rr_interval == 0, then this
      variable does not have any impact on the overall operation of the
      RTCP feedback algorithm.  If T_rr_interval != 0, then the next
      Regular RTCP packet will not be scheduled T_rr after the last
      Regular RTCP transmission (i.e., at tp+T_rr).  Instead, the next
      Regular RTCP packet will be delayed until at least T_rr_interval

      after the last Regular RTCP transmission, i.e., it will be
      scheduled at or later than tp+T_rr_interval.  Note that
      T_rr_interval does not affect the calculation of T_rr and tp;
      instead, Regular RTCP packets scheduled for transmission before
      tp+T_rr_interval will be suppressed if, for example, they do not
      contain any FB messages.  The T_rr_interval does not affect
      transmission scheduling of Early RTCP packets.

      Note: Providing T_rr_interval as an independent variable is meant
      to minimize Regular RTCP feedback (and thus bandwidth consumption)
      as needed by the application while additionally allowing the use
      of more frequent Early RTCP packets to provide timely feedback.
      This goal could not be achieved by reducing the overall RTCP
      bandwidth as RTCP bandwidth reduction would also impact the
      frequency of Early feedback.

   n) Let t_rr_last be the point in time at which the last Regular RTCP
      packet has been scheduled and sent, i.e., has not been suppressed
      due to T_rr_interval.

   o) Let T_retention be the time window for which past FB messages are
      stored by an AVPF entity.  This is to ensure that feedback
      suppression also works for entities that have received FB messages
      from other entities prior to noticing the feedback event itself.
      T_retention MUST be set to at least 2 seconds.

   p) Let M*Td be the timeout value for a receiver to be considered
      inactive (as defined in [1]).

   The feedback situation for an event to report at a receiver is
   depicted in Figure 2 below.  At time t0, such an event (e.g., a
   packet loss) is detected at the receiver.  The receiver decides --
   based upon current bandwidth, group size, and other application-
   specific parameters -- that an FB message needs to be sent back to
   the sender.

   To avoid an implosion of feedback packets in multiparty sessions, the
   receiver MUST delay the transmission of the RTCP feedback packet by a
   random amount of time T_fd (with the random number evenly distributed
   in the interval [0, T_dither_max]).  Transmission of the compound
   RTCP packet MUST then be scheduled for te = t0 + T_fd.

   The T_dither_max parameter is derived from the Regular RTCP interval,
   T_rr, which, in turn, is based upon the group size.  A future
   document may also specify other calculations for T_dither_max (e.g.,
   based upon RTT) if it can be assured that all RTP receivers will use
   the same mechanism for calculating T_dither_max.

   For a certain application scenario, a receiver may determine an upper
   bound for the acceptable local delay of FB messages:  T_max_fb_delay.
   If an a priori estimation or the actual calculation of T_dither_max
   indicates that this upper bound MAY be violated (e.g., because
   T_dither_max > T_max_fb_delay), the receiver MAY decide not to send
   any feedback at all because the achievable gain is considered
   insufficient.

   If an Early RTCP packet is scheduled, the time slot for the next
   Regular RTCP packet MUST be updated accordingly to have a new tn
   (tn=tp+2*T_rr) and a new tp (tp=tp+T_rr) afterwards.  This is to
   ensure that the short-term average RTCP bandwidth used with Early
   feedback does not exceed the bandwidth used without Early feedback.

             event to
             report
             detected
                |
                |  RTCP feedback range
                |   (T_max_fb_delay)
                vXXXXXXXXXXXXXXXXXXXXXXXXXXX     ) )
   |---+--------+-------------+-----+------------| |--------+--->
       |        |             |     |            ( (        |
       |       t0            te                             |
       tp                                                   tn
                 \_______  ________/
                         \/
                   T_dither_max

      Figure 2: Event report and parameters for Early RTCP scheduling

3.5.   AVPF RTCP Scheduling Algorithm

   Let S0 be an active sender (out of S senders) and let N be the number
   of receivers with R being one of these receivers.

   Assume that R has verified that using feedback mechanisms is
   reasonable at the current constellation (which is highly application
   specific and hence not specified in this document).

   Assume further that T_rr_interval is 0, if no minimal interval
   between Regular RTCP packets is to be enforced, or T_rr_interval is
   set to some meaningful value, as given by the application.  This
   value then denotes the minimal interval between Regular RTCP packets.

   With this, a receiver R MUST use the following rules for transmitting
   one or more FB messages as minimal or full compound RTCP packet.

3.5.1.  Initialization

   Initially, R MUST set allow_early = TRUE and t_rr_last = NaN (Not-a-
   Number, i.e., some invalid value that can be distinguished from a
   valid time).

   Furthermore, the initialization of the RTCP variables as per [1]
   applies except for the initial value for Tmin.  For a point-to-point
   session, the initial Tmin is set to 0.  For a multiparty session,
   Tmin is initialized to 1.0 seconds.

3.5.2.  Early Feedback Transmission

   Assume that R had scheduled the last Regular RTCP RR packet for
   transmission at tp (and sent or suppressed this packet at tp) and has
   scheduled the next transmission (including possible reconsideration
   as per [1]) for tn = tp + T_rr.  Assume also that the last Regular
   RTCP packet transmission has occurred at t_rr_last.

   The Early Feedback algorithm then comprises the following steps:

   1. At time t0, R detects the need to transmit one or more FB
      messages, e.g., because media "units" need to be ACKed or NACKed,
      and finds that providing the feedback information is potentially
      useful for the sender.

   2. R first checks whether there is already a compound RTCP packet
      containing one or more FB messages scheduled for transmission
      (either as Early or as Regular RTCP packet).

      2a) If so, the new FB message MUST be included in the scheduled
          packet; the scheduling of the waiting compound RTCP packet
          MUST remain unchanged.  When doing so, the available feedback
          information SHOULD be merged to produce as few FB messages as
          possible.  This completes the course of immediate actions to
          be taken.

      2b) If no compound RTCP packet is already scheduled for
          transmission, a new (minimal or full) compound RTCP packet
          MUST be created and the minimal interval for T_dither_max MUST
          be chosen as follows:

          i)  If the session is a point-to-point session, then

                 T_dither_max = 0.

          ii) If the session is a multiparty session, then

                 T_dither_max = l * T_rr

              with l=0.5.

          The value for T_dither_max MAY be calculated differently
          (e.g., based upon RTT), which MUST then be specified in a
          future document.  Such a future specification MUST ensure that
          all RTP receivers use the same mechanism to calculate
          T_dither_max.

          The values given above for T_dither_max are minimal values.
          Application-specific feedback considerations may make it
          worthwhile to increase T_dither_max beyond this value.  This
          is up to the discretion of the implementer.

   3. Then, R MUST check whether its next Regular RTCP packet would be
      within the time bounds for the Early RTCP packet triggered at t0,
      i.e., if t0 + T_dither_max > tn.

      3a) If so, an Early RTCP packet MUST NOT be scheduled; instead,
          the FB message(s) MUST be stored to be included in the Regular
          RTCP packet scheduled for tn.  This completes the course of
          immediate actions to be taken.

      3b) Otherwise, the following steps are carried out.

   4. R MUST check whether it is allowed to transmit an Early RTCP
      packet, i.e., allow_early == TRUE, or not.

      4a) If allow_early == FALSE, then R MUST check the time for the
          next scheduled Regular RTCP packet:

          1.  If tn - t0 < T_max_fb_delay, then the feedback could still
              be useful for the sender, despite the late reporting.
              Hence, R MAY create an RTCP FB message to be included in
              the Regular RTCP packet for transmission at tn.

          2.  Otherwise, R MUST discard the RTCP FB message.

          This completes the immediate course of actions to be taken.

      4b) If allow_early == TRUE, then R MUST schedule an Early RTCP
          packet for te = t0 + RND * T_dither_max with RND being a
          pseudo random function evenly distributed between 0 and 1.

   5. R MUST detect overlaps in FB messages received from other members
      of the RTP session and the FB messages R wants to send.
      Therefore, while a member of the RTP session, R MUST continuously
      monitor the arrival of (minimal) compound RTCP packets and store
      each FB message contained in these RTCP packets for at least
      T_retention.  When scheduling the transmission of its own FB
      message following steps 1 through 4 above, R MUST check each of
      the stored and newly received FB messages from the RTCP packets
      received during the interval [t0 - T_retention ; te] and act as
      follows:

      5a) If R understands the received FB message’s semantics and the
          message contents is a superset of the feedback R wanted to
          send, then R MUST discard its own FB message and MUST re-
          schedule the next Regular RTCP packet transmission for tn (as
          calculated before).

      5b) If R understands the received FB message’s semantics and the
          message contents is not a superset of the feedback R wanted to
          send, then R SHOULD transmit its own FB message as scheduled.
          If there is an overlap between the feedback information to
          send and the feedback information received, the amount of
          feedback transmitted is up to R: R MAY leave its feedback
          information to be sent unchanged, R MAY as well eliminate any
          redundancy between its own feedback and the feedback received
          so far from other session members.

      5c) If R does not understand the received FB message’s semantics,
          R MAY keep its own FB message scheduled as an Early RTCP
          packet, or R MAY re-schedule the next Regular RTCP packet
          transmission for tn (as calculated before) and MAY append the
          FB message to the now regularly scheduled RTCP message.

          Note: With 5c), receiving unknown FB messages may not lead to
          feedback suppression at a particular receiver.  As a
          consequence, a given event may cause M different types of FB
          messages (which are all appropriate but not mutually
          understood) to be scheduled, so that a "large" receiver group
          may effectively be partitioned into at most M groups.  Among
          members of each of these M groups, feedback suppression will
          occur following 5a and 5b but no suppression will happen
          across groups.  As a result, O(M) RTCP FB messages may be
          received by the sender.  Hence, there is a chance for a very
          limited feedback implosion.  However, as sender(s) and all
          receivers make up the same application using the same (set of)
          codecs in the same RTP session, only little divergence in
          semantics for FB messages can safely be assumed and,
          therefore, M is assumed to be small in the general case.

          Given further that the O(M) FB messages are randomly
          distributed over a time interval of T_dither_max, we find that
          the resulting limited number of extra compound RTCP packets
          (a) is assumed not to overwhelm the sender and (b) should be
          conveyed as all contain complementary pieces of information.

   6. If R’s FB message(s) was not suppressed by other receiver FB
      messages as per 5, when te is reached, R MUST transmit the
      (minimal) compound RTCP packet containing its FB message(s).  R
      then MUST set allow_early = FALSE, MUST recalculate tn = tp +
      2*T_rr, and MUST set tp to the previous tn.  As soon as the newly
      calculated tn is reached, regardless whether R sends its next
      Regular RTCP packet or suppresses it because of T_rr_interval, it
      MUST set allow_early = TRUE again.

3.5.3.  Regular RTCP Transmission

   Full compound RTCP packets MUST be sent in regular intervals.  These
   packets MAY also contain one or more FB messages.  Transmission of
   Regular RTCP packets is scheduled as follows:

   If T_rr_interval == 0, then the transmission MUST follow the rules as
   specified in Sections 3.2 and 3.4 of this document and MUST adhere to
   the adjustments of tn specified in Section 3.5.2 (i.e., skip one
   regular transmission if an Early RTCP packet transmission has
   occurred).  Timer reconsideration takes place when tn is reached as
   per [1].  The Regular RTCP packet is transmitted after timer
   reconsideration.  Whenever a Regular RTCP packet is sent or
   suppressed, allow_early MUST be set to TRUE and tp, tn MUST be
   updated as per [1].  After the first transmission of a Regular RTCP
   packet, Tmin MUST be set to 0.

   If T_rr_interval != 0, then the calculation for the transmission
   times MUST follow the rules as specified in Sections 3.2 and 3.4 of
   this document and MUST adhere to the adjustments of tn specified in
   Section 3.5.2 (i.e., skip one regular transmission if an Early RTCP
   transmission has occurred).  Timer reconsideration takes place when
   tn is reached as per [1].  After timer reconsideration, the following
   actions are taken:

   1. If no Regular RTCP packet has been sent before (i.e., if t_rr_last
      == NaN), then a Regular RTCP packet MUST be scheduled.  Stored FB
      messages MAY be included in the Regular RTCP packet.  After the
      scheduled packet has been sent, t_rr_last MUST be set to tn.  Tmin
      MUST be set to 0.

   2. Otherwise, a temporary value T_rr_current_interval is calculated
      as follows:

         T_rr_current_interval = RND*T_rr_interval

      with RND being a pseudo random function evenly distributed between
      0.5 and 1.5.  This dithered value is used to determine one of the
      following alternatives:

      2a) If t_rr_last + T_rr_current_interval <= tn, then a Regular
          RTCP packet MUST be scheduled.  Stored RTCP FB messages MAY be
          included in the Regular RTCP packet.  After the scheduled
          packet has been sent, t_rr_last MUST be set to tn.

      2b) If t_rr_last + T_rr_current_interval > tn and RTCP FB messages
          have been stored and are awaiting transmission, an RTCP packet
          MUST be scheduled for transmission at tn.  This RTCP packet
          MAY be a minimal or a Regular RTCP packet (at the discretion
          of the implementer), and the compound RTCP packet MUST include
          the stored RTCP FB message(s).  t_rr_last MUST remain
          unchanged.

      2c) Otherwise (if t_rr_last + T_rr_current_interval > tn but no
          stored RTCP FB messages are awaiting transmission), the
          compound RTCP packet MUST be suppressed (i.e., it MUST NOT be
          scheduled).  t_rr_last MUST remain unchanged.

   In all the four cases above (1, 2a, 2b, and 2c), allow_early MUST be
   set to TRUE (possibly after sending the Regular RTCP packet) and tp
   and tn MUST be updated following the rules of [1] except for the five
   second minimum.

3.5.4.  Other Considerations

   If T_rr_interval != 0, then the timeout calculation for RTP/AVPF
   entities (Section 6.3.5 of [1]) MUST be modified to use T_rr_interval
   instead of Tmin for computing Td and thus M*Td for timing out RTP
   entities.

   Whenever a compound RTCP packet is sent or received -- minimal or
   full compound, Early or Regular -- the avg_rtcp_size variable MUST be
   updated accordingly (see [1]) and subsequent computations of tn MUST
   use the new avg_rtcp_size.

3.6.  Considerations on the Group Size

   This section provides some guidelines to the group sizes at which the
   various feedback modes may be used.

3.6.1.  ACK Mode

   The RTP session MUST have exactly two members and this group size
   MUST NOT grow, i.e., it MUST be point-to-point communications.
   Unicast addresses SHOULD be used in the session description.

   For unidirectional as well as bi-directional communication between
   two parties, 2.5% of the RTP session bandwidth is available for RTCP
   traffic from the receivers including feedback.  For a 64-kbit/s
------分隔线----------------------------
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
最新评论 查看所有评论
发表评论 查看所有评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
推荐内容