summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc3158.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/rfc/rfc3158.txt')
-rw-r--r--doc/rfc/rfc3158.txt1235
1 files changed, 1235 insertions, 0 deletions
diff --git a/doc/rfc/rfc3158.txt b/doc/rfc/rfc3158.txt
new file mode 100644
index 0000000..adac8d5
--- /dev/null
+++ b/doc/rfc/rfc3158.txt
@@ -0,0 +1,1235 @@
+
+
+
+
+
+
+Network Working Group C. Perkins
+Request for Comments: 3158 USC/ISI
+Category: Informational J. Rosenberg
+ dynamicsoft
+ H. Schulzrinne
+ Columbia University
+ August 2001
+
+
+ RTP Testing Strategies
+
+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 Notice
+
+ Copyright (C) The Internet Society (2001). All Rights Reserved.
+
+Abstract
+
+ This memo describes a possible testing strategy for RTP (real-time
+ transport protocol) implementations.
+
+Table of Contents
+
+ 1 Introduction. . . . . . . . . . . . . . . . . . . . . . 2
+ 2 End systems . . . . . . . . . . . . . . . . . . . . . . 2
+ 2.1 Media transport . . . . . . . . . . . . . . . . . 3
+ 2.2 RTP Header Extension . . . . . . . . . . . . . . . 4
+ 2.3 Basic RTCP . . . . . . . . . . . . . . . . . . . 4
+ 2.3.1 Sender and receiver reports . . . . . . . . 4
+ 2.3.2 RTCP source description packets . . . . . . 6
+ 2.3.3 RTCP BYE packets . . . . . . . . . . . . . . 7
+ 2.3.4 Application defined RTCP packets . . . . . . 7
+ 2.4 RTCP transmission interval . . . . . . . . . . . . 7
+ 2.4.1 Basic Behavior . . . . . . . . . . . . . . 8
+ 2.4.2 Step join backoff . . . . . . . . . . . . 9
+ 2.4.3 Steady State Behavior . . . . . . . . . . 11
+ 2.4.4 Reverse Reconsideration . . . . . . . . . 12
+ 2.4.5 BYE Reconsideration . . . . . . . . . . . 13
+ 2.4.6 Timing out members . . . . . . . . . . . . 14
+ 2.4.7 Rapid SR's . . . . . . . . . . . . . . . . 15
+ 3 RTP translators . . . . . . . . . . . . . . . . . . . . 15
+ 4 RTP mixers. . . . . . . . . . . . . . . . . . . . . . . 17
+ 5 SSRC collision detection. . . . . . . . . . . . . . . . 18
+
+
+
+Perkins, et al. Informational [Page 1]
+
+RFC 3158 RTP Testing Strategies August 2001
+
+
+ 6 SSRC Randomization. . . . . . . . . . . . . . . . . . . 19
+ 7 Security Considerations . . . . . . . . . . . . . . . . 20
+ 8 Authors' Addresses. . . . . . . . . . . . . . . . . . . 20
+ 9 References. . . . . . . . . . . . . . . . . . . . . . . 21
+ Full Copyright Statement. . . . . . . . . . . . . . . . . 22
+
+1 Introduction
+
+ This memo describes a possible testing strategy for RTP [1]
+ implementations. The tests are intended to help demonstrate
+ interoperability of multiple implementations, and to illustrate
+ common implementation errors. They are not intended to be an
+ exhaustive set of tests and passing these tests does not necessarily
+ imply conformance to the complete RTP specification.
+
+2 End systems
+
+ The architecture for testing RTP end systems is shown in Figure 1.
+
+ +-----------------+
+ +--------+ Test instrument +-----+
+ | +-----------------+ |
+ | |
+ +-------+--------+ +-------+--------+
+ | First RTP | | Second RTP |
+ | implementation | | implementation |
+ +----------------+ +----------------+
+
+ Figure 1: Testing architecture
+
+ Both RTP implementations send packets to the test instrument, which
+ forwards packets from one implementation to the other. Unless
+ otherwise specified, packets are forwarded with no additional delay
+ and without loss. The test instrument is required to delay or
+ discard packets in some of the tests. The test instrument is
+ invisible to the RTP implementations - it merely simulates poor
+ network conditions.
+
+ The test instrument is also capable of logging packet contents for
+ inspection of their correctness.
+
+ A typical test setup might comprise three machines on a single
+ Ethernet segment. Two of these machines run the RTP implementations,
+ the third runs the test instrument. The test instrument is an
+ application level packet forwarder. Both RTP implementations are
+ instructed to send unicast RTP packets to the test instrument, which
+ forwards packets between them.
+
+
+
+
+Perkins, et al. Informational [Page 2]
+
+RFC 3158 RTP Testing Strategies August 2001
+
+
+2.1 Media transport
+
+ The aim of these tests is to show that basic media flows can be
+ exchanged between the two RTP implementations. The initial test is
+ for the first RTP implementation to transmit and the second to
+ receive. If this succeeds, the process is reversed, with the second
+ implementation sending and the first receiving.
+
+ The receiving application should be able to handle the following edge
+ cases, in addition to normal operation:
+
+ o Verify reception of packets which contain padding.
+
+ o Verify reception of packets which have the marker bit set
+
+ o Verify correct operation during sequence number wrap-around.
+
+ o Verify correct operation during timestamp wrap-around.
+
+ o Verify that the implementation correctly differentiates packets
+ according to the payload type field.
+
+ o Verify that the implementation ignores packets with unsupported
+ payload types
+
+ o Verify that the implementation can playout packets containing a
+ CSRC list and non-zero CC field (see section 4).
+
+ The sending application should be verified to correctly handle the
+ following edge cases:
+
+ o If padding is used, verify that the padding length indicator
+ (last octet of the packet) is correctly set and that the length
+ of the data section of the packet corresponds to that of this
+ particular payload plus the padding.
+
+ o Verify correct handling of the M bit, as defined by the
+ profile.
+
+ o Verify that the SSRC is chosen randomly.
+
+ o Verify that the initial value of the sequence number is
+ randomly selected.
+
+ o Verify that the sequence number increments by one for each
+ packet sent.
+
+ o Verify correct operation during sequence number wrap-around.
+
+
+
+Perkins, et al. Informational [Page 3]
+
+RFC 3158 RTP Testing Strategies August 2001
+
+
+ o Verify that the initial value of the timestamp is randomly
+ selected.
+
+ o Verify correct increment of timestamp (dependent on the payload
+ format).
+
+ o Verify correct operation during timestamp wrap-around.
+
+ o Verify correct choice of payload type according to the chosen
+ payload format, profile and any session level control protocol.
+
+2.2 RTP Header Extension
+
+ An RTP implementation which does not use an extended header should be
+ able to process packets containing an extension header by ignoring
+ the extension.
+
+ If an implementation makes use of the header extension, it should be
+ verified that the profile specific field and the length field of the
+ extension are set correctly, and that the length of the packet is
+ consistent.
+
+2.3 Basic RTCP
+
+ An RTP implementation is required to send RTCP control packets in
+ addition to data packets. The architecture for testing basic RTCP
+ functions is that shown in Figure 1.
+
+2.3.1 Sender and receiver reports
+
+ The first test requires both implementations to be run, but neither
+ sends data. It should be verified that RTCP packets are generated by
+ each implementation, and that those packets are correctly received by
+ the other implementation. It should also be verified that:
+
+ o all RTCP packets sent are compound packets
+
+ o all RTCP compound packets start with an empty RR packet
+
+ o all RTCP compound packets contain an SDES CNAME packet
+
+ The first implementation should then be made to transmit data
+ packets. It should be verified that that implementation now
+ generates SR packets in place of RR packets, and that the second
+ application now generates RR packets containing a single report
+ block. It should be verified that these SR and RR packets are
+ correctly received. The following features of the SR packets should
+ also be verified:
+
+
+
+Perkins, et al. Informational [Page 4]
+
+RFC 3158 RTP Testing Strategies August 2001
+
+
+ o that the length field is consistent with both the length of the
+ packet and the RC field
+
+ o that the SSRC in SR packets is consistent with that in the RTP
+ data packets
+
+ o that the NTP timestamp in the SR packets is sensible (matches
+ the wall clock time on the sending machine)
+
+ o that the RTP timestamp in the SR packets is consistent with
+ that in the RTP data packets
+
+ o that the packet and octet count fields in the SR packets are
+ consistent with the number of RTP data packets transmitted
+
+ In addition, the following features of the RR packets should also be
+ verified:
+
+ o that the SSRC in the report block is consistent with that in
+ the data packets being received
+
+ o that the fraction lost is zero
+
+ o that the cumulative number of packets lost is zero
+
+ o that the extended highest sequence number received is
+ consistent with the data packets being received (provided the
+ round trip time between test instrument and receiver is smaller
+ than the packet inter-arrival time, this can be directly
+ checked by the test instrument).
+
+ o that the interarrival jitter is small (a precise value cannot
+ be given, since it depends on the test instrument and network
+ conditions, but very little jitter should be present in this
+ scenario).
+
+ o that the last sender report timestamp is consistent with that
+ in the SR packets (i.e., each RR passing through the test
+ instrument should contain the middle 32 bits from the 64 bit
+ NTP timestamp of the last SR packet which passed through the
+ test instrument in the opposite direction).
+
+ o that the delay since last SR field is sensible (an estimate may
+ be made by timing the passage of an SR and corresponding RR
+ through the test instrument, this should closely agree with the
+ DLSR field)
+
+
+
+
+
+Perkins, et al. Informational [Page 5]
+
+RFC 3158 RTP Testing Strategies August 2001
+
+
+ It should also be verified that the timestamps, packet count and
+ octet count correctly wrap-around after the appropriate interval.
+
+ The next test is to show behavior in the presence of packet loss.
+ The first implementation is made to transmit data packets, which are
+ received by the second implementation. This time, however, the test
+ instrument is made to randomly drop a small fraction (1% is
+ suggested) of the data packets. The second implementation should be
+ able to receive the data packets and process them in a normal manner
+ (with, of course, some quality degradation). The RR packets should
+ show a loss fraction corresponding to the drop rate of the test
+ instrument and should show an increasing cumulative number of packets
+ lost.
+
+ The loss rate in the test instrument is then returned to zero and it
+ is made to delay each packet by some random amount (the exact amount
+ depends on the media type, but a small fraction of the average
+ interarrival time is reasonable). The effect of this should be to
+ increase the reported interarrival jitter in the RR packets.
+
+ If these tests succeed, the process should be repeated with the
+ second implementation transmitting and the first receiving.
+
+2.3.2 RTCP source description packets
+
+ Both implementations should be run, but neither is required to
+ transmit data packets. The RTCP packets should be observed and it
+ should be verified that each compound packet contains an SDES packet,
+ that that packet contains a CNAME item and that the CNAME is chosen
+ according to the rules in the RTP specification and profile (in many
+ cases the CNAME should be of the form `example@10.0.0.1' but this may
+ be overridden by a profile definition).
+
+ If an application supports additional SDES items then it should be
+ verified that they are sent in addition to the CNAME with some SDES
+ packets (the exact rate at which these additional items are included
+ is dependent on the application and profile).
+
+ It should be verified that an implementation can correctly receive
+ NAME, EMAIL, PHONE, LOC, NOTE, TOOL and PRIV items, even if it does
+ not send them. This is because it may reasonably be expected to
+ interwork with other implementations which support those items.
+ Receiving and ignoring such packets is valid behavior.
+
+ It should be verified that an implementation correctly sets the
+ length fields in the SDES items it sends, and that the source count
+ and packet length fields are correct. It should be verified that
+ SDES fields are not zero terminated.
+
+
+
+Perkins, et al. Informational [Page 6]
+
+RFC 3158 RTP Testing Strategies August 2001
+
+
+ It should be verified that an implementation correctly receives SDES
+ items which do not terminate in a zero byte.
+
+2.3.3 RTCP BYE packets
+
+ Both implementations should be run, but neither is required to
+ transmit data packets. The first implementation is then made to exit
+ and it should be verified that an RTCP BYE packet is sent. It should
+ be verified that the second implementation reacts to this BYE packet
+ and notes that the first implementation has left the session.
+
+ If the test succeeds, the implementations should be restarted and the
+ process repeated with the second implementation leaving the session.
+
+ It should be verified that implementations handle BYE packets
+ containing the optional reason for leaving text (ignoring the text is
+ acceptable).
+
+2.3.4 Application defined RTCP packets
+
+ Tests for the correct response to application defined packets are
+ difficult to specify, since the response is clearly implementation
+ dependent. It should be verified that an implementation ignores APP
+ packets where the 4 octet name field is unrecognized.
+ Implementations which use APP packets should verify that they behave
+ as expected.
+
+2.4 RTCP transmission interval
+
+ The basic architecture for performing tests of the RTCP transmission
+ interval is shown in Figure 2.
+
+ The test instrument is connected to the same LAN as the RTP
+ implementation being tested. It is assumed that the test instrument
+ is preconfigured with the addresses and ports used by the RTP
+ implementation, and is also aware of the RTCP bandwidth and
+ sender/receiver fractions. The tests can be conducted using either
+ multicast or unicast.
+
+ The test instrument must be capable of sending arbitrarily crafted
+ RTP and RTCP packets to the RTP implementation. The test instrument
+ should also be capable of receiving packets sent by the RTP
+ implementation, parsing them, and computing metrics based on those
+ packets.
+
+
+
+
+
+
+
+Perkins, et al. Informational [Page 7]
+
+RFC 3158 RTP Testing Strategies August 2001
+
+
+ +--------------+
+ | test |
+ | instrument |
+ +-----+--------+
+ |
+ ------+-----------+-------------- LAN
+ |
+ +-------+--------+
+ | RTP |
+ | implementation |
+ +----------------+
+
+ Figure 2: Testing architecture for RTCP
+
+ It is furthermore assumed that a number of basic controls over the
+ RTP implementation exist. These controls are:
+
+ o the ability to force the implementation to send or not send RTP
+ packets at any desired point in time
+
+ o the ability to force the application to terminate its
+ involvement in the RTP session, and for this termination to be
+ known immediately to the test instrument
+
+ o the ability to set the session bandwidth and RTCP sender and
+ receiver fractions
+
+ The second of these is required only for the test of BYE
+ reconsideration, and is the only aspect of these tests not easily
+ implementable by pure automation. It will generally require manual
+ intervention to terminate the session from the RTP implementation and
+ to convey this to the test instrument through some non-RTP means.
+
+2.4.1 Basic Behavior
+
+ The first test is to verify basic correctness of the implementation
+ of the RTCP transmission rules. This basic behavior consists of:
+
+ o periodic transmission of RTCP packets
+
+ o randomization of the interval for RTCP packet transmission
+
+ o correct implementation of the randomization interval
+ computations, with unconditional reconsideration
+
+
+
+
+
+
+
+Perkins, et al. Informational [Page 8]
+
+RFC 3158 RTP Testing Strategies August 2001
+
+
+ The RTP implementation acts as a receiver, and never sends any RTP
+ data packets. The implementation is configured with a large session
+ bandwidth, say 1 Mbit/s. This will cause the implementation to use
+ the minimal interval of 5s rather than the small interval based on
+ the session bandwidth and membership size. The implementation will
+ generate RTCP packets at this minimal interval, on average. The test
+ instrument generates no packets, but receives the RTCP packets
+ generated by the implementation. When an RTCP packet is received,
+ the time is noted by the test instrument. The difference in time
+ between each pair of subsequent packets (called the interval) is
+ computed. These intervals are stored, so that statistics based on
+ these intervals can be computed. It is recommended that this
+ observation process operate for at least 20 minutes.
+
+ An implementation passes this test if the intervals have the
+ following properties:
+
+ o the minimum interval is never less than 2 seconds or more than
+ 2.5 seconds;
+
+ o the maximum interval is never more than 7 seconds or less than
+ 5.5 seconds;
+
+ o the average interval is between 4.5 and 5.5 seconds;
+
+ o the number of intervals between x and x+500ms is less than the
+ number of intervals between x+500ms and x+1s, for any x.
+
+ In particular, an implementation fails if the packets are sent with a
+ constant interval.
+
+2.4.2 Step join backoff
+
+ The main purpose of the reconsideration algorithm is to avoid a flood
+ of packets that might occur when a large number of users
+ simultaneously join an RTP session. Reconsideration therefore
+ exhibits a backoff behavior in sending of RTCP packets when group
+ sizes increase. This aspect of the algorithm can be tested in the
+ following manner.
+
+ The implementation begins operation. The test instrument waits for
+ the arrival of the first RTCP packet. When it arrives, the test
+ instrument notes the time and then immediately sends 100 RTCP RR
+ packets to the implementation, each with a different SSRC and SDES
+ CNAME. The test instrument should ensure that each RTCP packet is of
+ the same length. The instrument should then wait until the next RTCP
+ packet is received from the implementation, and the time of such
+ reception is noted.
+
+
+
+Perkins, et al. Informational [Page 9]
+
+RFC 3158 RTP Testing Strategies August 2001
+
+
+ Without reconsideration, the next RTCP packet will arrive within a
+ short period of time. With reconsideration, transmission of this
+ packet will be delayed. The earliest it can arrive depends on the
+ RTCP session bandwidth, receiver fraction, and average RTCP packet
+ size. The RTP implementation should be using the exponential
+ averaging algorithm defined in the specification to compute the
+ average RTCP packet size. Since this is dominated by the received
+ packets (the implementation has only sent one itself), the average
+ will be roughly equal to the length of the RTCP packets sent by the
+ test instrument. Therefore, the minimum amount of time between the
+ first and second RTCP packets from the implementation is:
+
+ T > 101 * S / ( B * Fr * (e-1.5) * 2 )
+
+ Where S is the size of the RTCP packets sent by the test instrument,
+ B is the RTCP bandwidth (normally five percent of the session
+ bandwidth), Fr is the fraction of RTCP bandwidth allocated to
+ receivers (normally 75 percent), and e is the natural exponent.
+ Without reconsideration, this minimum interval Te would be much
+ smaller:
+
+ Te > MAX( [ S / ( B * Fr * (e-1.5) * 2 ) ] , [ 2.5 / (e-1.5) ] )
+
+ B should be chosen sufficiently small so that T is around 60 seconds.
+ Reasonable choices for these parameters are B = 950 bits per second,
+ and S = 1024 bits. An implementation passes this test if the
+ interval between packets is not less than T above, and not more than
+ 3 times T.
+
+ Note: in all tests the value chosen for B, the RTCP bandwidth, is
+ calculated including the lower layer UDP/IP headers. In a typical
+ IPv4 based implementation, these comprise 28 octets per packet. A
+ common mistake is to forget that these are included when choosing the
+ size of packets to transmit.
+
+ The test should be repeated for the case when the RTP implementation
+ is a sender. This is accomplished by having the implementation send
+ RTP packets at least once a second. In this case, the interval
+ between the first and second RTCP packets should be no less than:
+
+ T > S / ( B * Fs * (e-1.5) * 2 )
+
+ Where Fs is the fraction of RTCP bandwidth allocated to senders,
+ usually 25%. Note that this value of T is significantly smaller than
+ the interval for receivers.
+
+
+
+
+
+
+Perkins, et al. Informational [Page 10]
+
+RFC 3158 RTP Testing Strategies August 2001
+
+
+2.4.3 Steady State Behavior
+
+ In addition to the basic behavior in section 2.4.1, an implementation
+ should correctly implement a number of other, slightly more advanced
+ features:
+
+ o scale the RTCP interval with the group size;
+
+ o correctly divide bandwidth between senders and receivers;
+
+ o correctly compute the RTCP interval when the user is a sender
+
+ The implementation begins operation as a receiver. The test
+ instrument waits for the first RTCP packet from the implementation.
+ When it arrives, the test instrument notes the time, and immediately
+ sends 50 RTCP RR packets and 50 RTCP SR packets to the
+ implementation, each with a different SSRC and SDES CNAME. The test
+ instrument then sends 50 RTP packets, using the 50 SSRC from the RTCP
+ SR packets. The test instrument should ensure that each RTCP packet
+ is of the same length. The instrument should then wait until the
+ next RTCP packet is received from the implementation, and the time of
+ such reception is noted. The difference between the reception of the
+ RTCP packet and the reception of the previous is computed and stored.
+ In addition, after every RTCP packet reception, the 100 RTCP and 50
+ RTP packets are retransmitted by the test instrument. This ensures
+ that the sender and member status of the 100 users does not time out.
+ The test instrument should collect the interval measurements figures
+ for at least 100 RTCP packets.
+
+ With 50 senders, the implementation should not try to divide the RTCP
+ bandwidth between senders and receivers, but rather group all users
+ together and divide the RTCP bandwidth equally. The test is deemed
+ successful if the average RTCP interval is within 5% of:
+
+ T = 101* S/B
+
+ Where S is the size of the RTCP packets sent by the test instrument,
+ and B is the RTCP bandwidth. B should be chosen sufficiently small
+ so that the value of T is on the order of tens of seconds or more.
+ Reasonable values are S=1024 bits and B=3.4 kb/s.
+
+ The previous test is repeated. However, the test instrument sends 10
+ RTP packets instead of 50, and 10 RTCP SR and 90 RTCP RR instead of
+ 50 of each. In addition, the implementation is made to send at least
+ one RTP packet between transmission of every one of its own RTCP
+ packets.
+
+
+
+
+
+Perkins, et al. Informational [Page 11]
+
+RFC 3158 RTP Testing Strategies August 2001
+
+
+ In this case, the average RTCP interval should be within 5% of:
+
+ T = 11 * S / (B * Fs)
+
+ Where S is the size of the RTCP packets sent by the test instrument,
+ B is the RTCP bandwidth, and Fs is the fraction of RTCP bandwidth
+ allocated for senders (normally 25%). The values for B and S should
+ be chosen small enough so that T is on the order of tens of seconds.
+ Reasonable choices are S=1024 bits and B=1.5 kb/s.
+
+2.4.4 Reverse Reconsideration
+
+ The reverse reconsideration algorithm is effectively the opposite of
+ the normal reconsideration algorithm. It causes the RTCP interval to
+ be reduced more rapidly in response to decreases in the group
+ membership. This is advantageous in that it keeps the RTCP
+ information as fresh as possible, and helps avoids some premature
+ timeout problems.
+
+ In the first test, the implementation joins the session as a
+ receiver. As soon as the implementation sends its first RTCP packet,
+ the test instrument sends 100 RTCP RR packets, each of the same
+ length S, and a different SDES CNAME and SSRC in each. It then waits
+ for the implementation to send another RTCP packet. Once it does,
+ the test instrument sends 100 BYE packets, each one containing a
+ different SSRC, but matching an SSRC from one of the initial RTCP
+ packets. Each BYE should also be the same size as the RTCP packets
+ sent by the test instrument. This is easily accomplished by using a
+ BYE reason to pad out the length. The time of the next RTCP packet
+ from the implementation is then noted. The delay T between this (the
+ third RTCP packet) and the previous should be no more than:
+
+ T < 3 * S / (B * Fr * (e-1.5) * 2)
+
+ Where S is the size of the RTCP and BYE packets sent by the test
+ instrument, B is the RTCP bandwidth, Fr is the fraction of the RTCP
+ bandwidth allocated to receivers, and e is the natural exponent. B
+ should be chosen such that T is on the order of tens of seconds. A
+ reasonable choice is S=1024 bits and B=168 bits per second.
+
+ This test demonstrates basic correctness of implementation. An
+ implementation without reverse reconsideration will not send its next
+ RTCP packet for nearly 100 times as long as the above amount.
+
+ In the second test, the implementation joins the session as a
+ receiver. As soon as it sends its first RTCP packet, the test
+ instrument sends 100 RTCP RR packets, each of the same length S,
+ followed by 100 BYE packets, also of length S. Each RTCP packet
+
+
+
+Perkins, et al. Informational [Page 12]
+
+RFC 3158 RTP Testing Strategies August 2001
+
+
+ carries a different SDES CNAME and SSRC, and is matched with
+ precisely one BYE packet with the same SSRC. This will cause the
+ implementation to see a rapid increase and then rapid drop in group
+ membership.
+
+ The test is deemed successful if the next RTCP packet shows up T
+ seconds after the first, and T is within:
+
+ 2.5 / (e-1.5) < T < 7.5 / (e-1.5)
+
+ This tests correctness of the maintenance of the pmembers variable.
+ An incorrect implementation might try to execute reverse
+ reconsideration every time a BYE is received, as opposed to only when
+ the group membership drops below pmembers. If an implementation did
+ this, it would end up sending an RTCP packet immediately after
+ receiving the stream of BYE's. For this test to work, B must be
+ chosen to be a large value, around 1Mb/s.
+
+2.4.5 BYE Reconsideration
+
+ The BYE reconsideration algorithm works in much the same fashion as
+ regular reconsideration, except applied to BYE packets. When a user
+ leaves the group, instead of sending a BYE immediately, it may delay
+ transmission of its BYE packet if others are sending BYE's.
+
+ The test for correctness of this algorithm is as follows. The RTP
+ implementation joins the group as a receiver. The test instrument
+ waits for the first RTCP packet. When the test instrument receives
+ this packet, the test instrument immediately sends 100 RTCP RR
+ packets, each of the same length S, and each containing a different
+ SSRC and SDES CNAME. Once the test instrument receives the next RTCP
+ packet from the implementation, the RTP implementation is made to
+ leave the RTP session, and this information is conveyed to the test
+ instrument through some non-RTP means. The test instrument then
+ sends 100 BYE packets, each with a different SSRC, and each matching
+ an SSRC from a previously transmitted RTCP packet. Each of these BYE
+ packets is also of size S. Immediately following the BYE packets,
+ the test instrument sends 100 RTCP RR packets, using the same
+ SSRC/CNAMEs as the original 100 RTCP packets.
+
+ The test is deemed successful if the implementation either never
+ sends a BYE, or if it does, the BYE is received by the test
+ instrument not earlier than T seconds, and not later than 3 * T
+ seconds, after the implementation left the session, where T is:
+
+ T = 100 * S / ( 2 * (e-1.5) * B )
+
+
+
+
+
+Perkins, et al. Informational [Page 13]
+
+RFC 3158 RTP Testing Strategies August 2001
+
+
+ S is the size of the RTCP and BYE packets, e is the natural exponent,
+ B is the RTCP bandwidth, and Fr is the RTCP bandwidth fraction for
+ receivers. S and B should be chosen so that T is on the order of 50
+ seconds. A reasonable choice is S=1024 bits and B=1.1 kb/s.
+
+ The transmission of the RTCP packets is meant to verify that the
+ implementation is ignoring non-BYE RTCP packets once it decides to
+ leave the group.
+
+2.4.6 Timing out members
+
+ Active RTP participants are supposed to send periodic RTCP packets.
+ When a participant leaves the session, they may send a BYE, however
+ this is not required. Furthermore, BYE reconsideration may cause a
+ BYE to never be sent. As a result, participants must time out other
+ participants who have not sent an RTCP packet in a long time.
+ According to the specification, participants who have not sent an
+ RTCP packet in the last 5 intervals are timed out. This test
+ verifies that these timeouts are being performed correctly.
+
+ The RTP implementation joins a session as a receiver. The test
+ instrument waits for the first RTCP packet from the implementation.
+ Once it arrives, the test instrument sends 100 RTCP RR packets, each
+ with a different SDES and SSRC, and notes the time. This will cause
+ the implementation to believe that there are now 101 group
+ participants, causing it to increase its RTCP interval. The test
+ instrument continues to monitor the RTCP packets from the
+ implementation. As each RTCP packet is received, the time of its
+ reception is noted, and the interval between RTCP packets is stored.
+ The 100 participants spoofed by the test instrument should eventually
+ time out at the RTP implementation. This should cause the RTCP
+ interval to be reduced to its minimum.
+
+ The test is deemed successful if the interval between RTCP packets
+ after the first is no less than:
+
+ Ti > 101 * S / ( 2 * (e-1.5) * B * Fr)
+
+ and this minimum interval is sustained no later than Td seconds after
+ the transmission of the 100 RR's, where Td is:
+
+ Td = 7 * 101 * S / ( B * Fr )
+
+ and the interval between RTCP packets after this point is no less
+ than:
+
+ Tf > 2.5 / (e-1.5)
+
+
+
+
+Perkins, et al. Informational [Page 14]
+
+RFC 3158 RTP Testing Strategies August 2001
+
+
+ For this test to work, B and S must be chosen so Ti is on the order
+ of minutes. Recommended values are S = 1024 bits and B = 1.9 kbps.
+
+2.4.7 Rapid SR's
+
+ The minimum interval for RTCP packets can be reduced for large
+ session bandwidths. The reduction applies to senders only. The
+ recommended algorithm for computing this minimum interval is 360
+ divided by the RTP session bandwidth, in kbps. For bandwidths larger
+ than 72 kbps, this interval is less than 5 seconds.
+
+ This test verifies the ability of an implementation to use a lower
+ RTCP minimum interval when it is a sender in a high bandwidth
+ session. The test can only be run on implementations that support
+ this reduction, since it is optional.
+
+ The RTP implementation is configured to join the session as a sender.
+ The session is configured to use 360 kbps. If the recommended
+ algorithm for computing the reduced minimum interval is used, the
+ result is a 1 second interval. If the RTP implementation uses a
+ different algorithm, the session bandwidth should be set in such a
+ way to cause the reduced minimum interval to be 1 second.
+
+ Once joining the session, the RTP implementation should begin to send
+ both RTP and RTCP packets. The interval between RTCP packets is
+ measured and stored until 100 intervals have been collected.
+
+ The test is deemed successful if the smallest interval is no less
+ than 1/2 a second, and the largest interval is no more than 1.5
+ seconds. The average should be close to 1 second.
+
+3 RTP translators
+
+ RTP translators should be tested in the same manner as end systems,
+ with the addition of the tests described in this section.
+
+ The architecture for testing RTP translators is shown in Figure 3.
+
+ +-----------------+
+ +--------+ RTP Translator +-----+
+ | +-----------------+ |
+ | |
+ +-------+--------+ +-------+--------+
+ | First RTP | | Second RTP |
+ | implementation | | implementation |
+ +----------------+ +----------------+
+
+ Figure 3: Testing architecture for translators
+
+
+
+Perkins, et al. Informational [Page 15]
+
+RFC 3158 RTP Testing Strategies August 2001
+
+
+ The first RTP implementation is instructed to send data to the
+ translator, which forwards the packets to the other RTP
+ implementation, after translating then as desired. It should be
+ verified that the second implementation can playout the translated
+ packets.
+
+ It should be verified that the packets received by the second
+ implementation have the same SSRC as those sent by the first
+ implementation. The CC should be zero and CSRC fields should not be
+ present in the translated packets. The other RTP header fields may
+ be rewritten by the translator, depending on the translation being
+ performed, for example
+
+ o the payload type should change if the translator changes the
+ encoding of the data
+
+ o the timestamp may change if, for example, the encoding,
+ packetisation interval or framerate is changed
+
+ o the sequence number may change if the translator merges or
+ splits packets
+
+ o padding may be added or removed, in particular if the
+ translator is adding or removing encryption
+
+ o the marker bit may be rewritten
+
+ If the translator modifies the contents of the data packets it should
+ be verified that the corresponding change is made to the RTCP
+ packets, and that the receivers can correctly process the modified
+ RTCP packets. In particular
+
+ o the SSRC is unchanged by the translator
+
+ o if the translator changes the data encoding it should also
+ change the octet count field in the SR packets
+
+ o if the translator combines multiple data packets into one it
+ should also change the packet count field in SR packets
+
+ o if the translator changes the sampling frequency of the data
+ packets it should also change the RTP timestamp field in the SR
+ packets
+
+ o if the translator combines multiple data packets into one it
+ should also change the packet loss and extended highest
+ sequence number fields of RR packets flowing back from the
+ receiver (it is legal for the translator to strip the report
+
+
+
+Perkins, et al. Informational [Page 16]
+
+RFC 3158 RTP Testing Strategies August 2001
+
+
+ blocks and send empty SR/RR packets, but this should only be
+ done if the transformation of the data is such that the
+ reception reports cannot sensibly be translated)
+
+ o the translator should forward SDES CNAME packets
+
+ o the translator may forward other SDES packets
+
+ o the translator should forward BYE packets unchanged
+
+ o the translator should forward APP packets unchanged
+
+ When the translator exits it should be verified to send a BYE packet
+ to each receiver containing the SSRC of the other receiver. The
+ receivers should be verified to correctly process this BYE packet
+ (this is different to the BYE test in section 2.3.3 since multiple
+ SSRCs may be included in each BYE if the translator also sends its
+ own RTCP information).
+
+4 RTP mixers
+
+ RTP mixers should be tested in the same manner as end systems, with
+ the addition of the tests described in this section.
+
+ The architecture for testing RTP mixers is shown in Figure 4.
+
+ The first and second RTP implementations are instructed to send data
+ packets to the RTP mixer. The mixer combines those packets and sends
+ them to the third RTP implementation. The mixer should also process
+ RTCP packets from the other implementations, and should generate its
+ own RTCP reports.
+
+ +----------------+
+ | Second RTP |
+ | implementation |
+ +-------+--------+
+ |
+ | +-----------+
+ +-------+ RTP Mixer +-----+
+ | +-----------+ |
+ | |
+ +-------+--------+ +-------+--------+
+ | First RTP | | Third RTP |
+ | implementation | | implementation |
+ +----------------+ +----------------+
+
+ Figure 4: Testing architecture for mixers
+
+
+
+
+Perkins, et al. Informational [Page 17]
+
+RFC 3158 RTP Testing Strategies August 2001
+
+
+ It should be verified that the third RTP implementation can playout
+ the mixed packets. It should also be verified that
+
+ o the CC field in the RTP packets received by the third
+ implementation is set to 2
+
+ o the RTP packets received by the third implementation contain 2
+ CSRCs corresponding to the first and second RTP implementations
+
+ o the RTP packets received by the third implementation contain an
+ SSRC corresponding to that of the mixer
+
+ It should next be verified that the mixer generates SR and RR packets
+ for each cloud. The mixer should generate RR packets in the
+ direction of the first and second implementations, and SR packets in
+ the direction of the third implementation.
+
+ It should be verified that the SR packets sent to the third
+ implementation do not reference the first or second implementations,
+ and vice versa.
+
+ It should be verified that SDES CNAME information is forwarded across
+ the mixer. Other SDES fields may optionally be forwarded.
+
+ Finally, one of the implementations should be quit, and it should be
+ verified that the other implementations see the BYE packet. This
+ implementation should then be restarted and the mixer should be quit.
+ It should be verified that the implementations see both the mixer and
+ the implementations on the other side of the mixer quit (illustrating
+ response to BYE packets containing multiple sources).
+
+5 SSRC collision detection
+
+ RTP has provision for the resolution of SSRC collisions. These
+ collisions occur when two different session participants choose the
+ same SSRC. In this case, both participants are supposed to send a
+ BYE, leave the session, and rejoin with a different SSRC, but the
+ same CNAME. The purpose of this test is to verify that this function
+ is present in the implementation.
+
+ The test is straightforward. The RTP implementation is made to join
+ the multicast group as a receiver. A test instrument waits for the
+ first RTCP packet. Once it arrives, the test instrument notes the
+ CNAME and SSRC from the RTCP packet. The test instrument then
+ generates an RTCP receiver report. This receiver report contains an
+ SDES chunk with an SSRC matching that of the RTP implementation, but
+ with a different CNAME. At this point, the implementation should
+
+
+
+
+Perkins, et al. Informational [Page 18]
+
+RFC 3158 RTP Testing Strategies August 2001
+
+
+ send a BYE RTCP packet (containing an SDES chunk with the old SSRC
+ and CNAME), and then rejoin, causing it to send a receiver report
+ containing an SDES chunk, but with a new SSRC and the same CNAME.
+
+ The test is deemed successful if the RTP implementation sends the
+ RTCP BYE and RTCP RR as described above within one minute of
+ receiving the colliding RR from the test instrument.
+
+6 SSRC Randomization
+
+ According to the RTP specification, SSRC's are supposed to be chosen
+ randomly and uniformly over a 32 bit space. This randomization is
+ beneficial for several reasons:
+
+ o It reduces the probability of collisions in large groups.
+
+ o It simplifies the process of group sampling [3] which depends
+ on the uniform distribution of SSRC's across the 32 bit space.
+
+ Unfortunately, verifying that a random number has 32 bits of uniform
+ randomness requires a large number of samples. The procedure below
+ gives only a rough validation to the randomness used for generating
+ the SSRC.
+
+ The test runs as follows. The RTP implementation joins the group as
+ a receiver. The test instrument waits for the first RTCP packet. It
+ notes the SSRC in this RTCP packet. The test is repeated 2500 times,
+ resulting in a collection of 2500 SSRC.
+
+ The are then placed into 25 bins. An SSRC with value X is placed
+ into bin FLOOR(X/(2**32 / 25)). The idea is to break the 32 bit
+ space into 25 regions, and compute the number of SSRC in each region.
+ Ideally, there should be 40 SSRC in each bin. Of course, the actual
+ number in each bin is a random variable whose expectation is 40.
+ With 2500 SSRC, the coefficient of variation of the number of SSRC in
+ a bin is 0.1, which means the number should be between 36 and 44.
+ The test is thus deemed successful if each bin has no less than 30
+ and no more than 50 SSRC.
+
+ Running this test may require substantial amounts of time,
+ particularly if there is no automated way to have the implementation
+ join the session. In such a case, the test can be run fewer times.
+ With 26 tests, half of the SSRC should be less than 2**31, and the
+ other half higher. The coefficient of variation in this case is 0.2,
+ so the test is successful if there are more than 8 SSRC less than
+ 2**31, and less than 26.
+
+
+
+
+
+Perkins, et al. Informational [Page 19]
+
+RFC 3158 RTP Testing Strategies August 2001
+
+
+ In general, if the SSRC is collected N times, and there are B bins,
+ the coefficient of variation of the number of SSRC in each bin is
+ given by:
+
+ coeff = SQRT( (B-1)/N )
+
+7 Security Considerations
+
+ Implementations of RTP are subject to the security considerations
+ mentioned in the RTP specification [1] and any applicable RTP profile
+ (e.g., [2]). There are no additional security considerations implied
+ by the testing strategies described in this memo.
+
+8 Authors' Addresses
+
+ Colin Perkins
+ USC Information Sciences Institute
+ 3811 North Fairfax Drive
+ Suite 200
+ Arlington, VA 22203
+
+ EMail: csp@isi.edu
+
+
+ Jonathan Rosenberg
+ dynamicsoft
+ 72 Eagle Rock Ave.
+ First Floor
+ East Hanover, NJ 07936
+
+ EMail: jdrosen@dynamicsoft.com
+
+
+ Henning Schulzrinne
+ Columbia University
+ M/S 0401
+ 1214 Amsterdam Ave.
+ New York, NY 10027-7003
+
+ EMail: schulzrinne@cs.columbia.edu
+
+
+
+
+
+
+
+
+
+
+
+Perkins, et al. Informational [Page 20]
+
+RFC 3158 RTP Testing Strategies August 2001
+
+
+9 References
+
+ [1] Schulzrinne, H., Casner, S., Frederick R. and V. Jacobson, "RTP:
+ A Transport Protocol to Real-Time Applications", Work in Progress
+ (update to RFC 1889), March 2001.
+
+ [2] Schulzrinne H. and S. Casner, "RTP Profile for Audio and Video
+ Conferences with Minimal Control", Work in Progress (update to
+ RFC 1890), March 2001.
+
+ [3] Rosenberg, J. and Schulzrinne, H. "Sampling of the Group
+ Membership in RTP", RFC 2762, February 2000.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Perkins, et al. Informational [Page 21]
+
+RFC 3158 RTP Testing Strategies August 2001
+
+
+Full Copyright Statement
+
+ Copyright (C) The Internet Society (2001). All Rights Reserved.
+
+ This document and translations of it may be copied and furnished to
+ others, and derivative works that comment on or otherwise explain it
+ or assist in its implementation may be prepared, copied, published
+ and distributed, in whole or in part, without restriction of any
+ kind, provided that the above copyright notice and this paragraph are
+ included on all such copies and derivative works. However, this
+ document itself may not be modified in any way, such as by removing
+ the copyright notice or references to the Internet Society or other
+ Internet organizations, except as needed for the purpose of
+ developing Internet standards in which case the procedures for
+ copyrights defined in the Internet Standards process must be
+ followed, or as required to translate it into languages other than
+ English.
+
+ The limited permissions granted above are perpetual and will not be
+ revoked by the Internet Society or its successors or assigns.
+
+ This document and the information contained herein is provided on an
+ "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
+ TASK FORCE DISCLAIMS 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.
+
+Acknowledgement
+
+ Funding for the RFC Editor function is currently provided by the
+ Internet Society.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Perkins, et al. Informational [Page 22]
+