Olaf Beier Studiengang: Dipl. Ing. Informationstechnik - IfI
Olaf Beier Studiengang: Dipl. Ing. Informationstechnik - IfI
Olaf Beier Studiengang: Dipl. Ing. Informationstechnik - IfI
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
<strong>Olaf</strong> <strong>Beier</strong><br />
<strong>Studiengang</strong>: <strong>Dipl</strong>. <strong>Ing</strong>. <strong>Informationstechnik</strong><br />
Kursbezeichnung BA-Mannheim: TIT 99 BGR<br />
Abstract des Praxisbericht<br />
zur 4. Praxisphase (02.07.2001 - 28.09.2001)<br />
Firma dieser Praxisphase: University of Oslo, Department of Informatics<br />
Ausbildungsbetrieb: Fraunhofer IPSI Darmstadt<br />
Thema: “Operating system and protocol enhancements for increased<br />
performance in distributed interactive multimedia<br />
presentations”<br />
Fachliche Ausbildungsbetreuung Oslo: Dr. <strong>Ing</strong>. Carsten Griwodz<br />
Administrative Betreuung Oslo: Prof. Dr. Thomas Plagemann<br />
Administrative Betreuung FhG-IPSI Darmstadt: Dr. Heinz-Dieter Böcker
Abstract:<br />
This “Praxisbericht“ has its main focus on the description of the Transport Protocol<br />
and the Transport Control Protocol for Real-Time Applications as described in RFC<br />
1889. This knowledge has been necessary in order to extend in the source code of the<br />
open source project Komssys (KOM(S) RTSP/RTP streaming system). The protocol<br />
specification was invented 1996 by the Audio-Video Transport Working Group<br />
within the Network Working Group of the Internet Engineering Task Force (IETF).<br />
The Inventors are H. Schulzrinne (GMD Fokus), S. Casner (Precept Software, Inc), R.<br />
Frederick (Xerox Palo Alto Research Center) and V. Jacobson (Lawrence Berkeley<br />
National Laboratory).<br />
My special work in the Komssys project was “to examine the Komssys RTP stack, to<br />
isolate media handling code that can be moved into loadable modules and to compare<br />
KOMS’ Multimedia File System Minorca to SGI XFS”.<br />
This means I had to analyse the existing Komssys RTP Stack and its support for the<br />
following media formats: PCMU, AVI, H.261, MPEG, MPA and MP3. The main<br />
focus of my work was to improve the API. Also those codecs can now be easily<br />
implemented, which must be used with a wrapper because the sources are not<br />
available. It was my task to find a way to divide the existing and well working sourcetree<br />
into an encoder and a decoder part for each currently supported codec separately.<br />
In addition, a new layer that instantiates codecs has been integrated. It is implemented<br />
as factory pattern. The now existing stack is encapsulated in separate modules for<br />
encoding and decoding for each codec separately.<br />
In contrast to the transmission of conventional data such as mails or websites,<br />
particular demands must be met to transmit multimedia data. This “Praxisbericht“ also<br />
describes transport problems of audio- and videostreams and give a brief overview of<br />
existing solutions.<br />
In some cases it can make sense to combine data streams coming from several<br />
participants and forward them as one single data stream. This is the task of a so-called<br />
mixer. If the bandwidth of a participant or a participant group in an audio conference<br />
is low, a mixer can be put at the starting point of this network segment.<br />
Participant 3<br />
Audio 3<br />
Participant 1<br />
Audio 1<br />
PCM<br />
Audio 2<br />
Participant 2<br />
RTP-Data Packet<br />
SSRC: Audio 1<br />
Datatyp: PCM<br />
Sequenceno.: 3231<br />
Timestamp: 84922<br />
PCM-Header<br />
PCM-Payload<br />
RTP-Data Packet<br />
SSRC: Audio 2<br />
Datatyp: PCM<br />
Sequenceno.: 3482<br />
Timestamp: 54765<br />
PCM-Header<br />
PCM-Payload<br />
Figure of a Mixer as explained in chapter 5.3<br />
Mixer<br />
SSRC: Audio M<br />
SSRC: Audio 1<br />
SSRC: Audio 2<br />
SSRC: Audio 3<br />
Datatyp: PCM<br />
Sequenceno.: 9384<br />
Timestamp: 87892<br />
PCM-Header<br />
PCM-Payload<br />
Audio M RTP-Data Packet<br />
Audio 4<br />
Participant 4
<strong>Olaf</strong> <strong>Beier</strong><br />
<strong>Studiengang</strong>: <strong>Dipl</strong>. <strong>Ing</strong>. <strong>Informationstechnik</strong><br />
Kursbezeichnung BA-Mannheim: TIT 99 BGR<br />
Praxisbericht zur 4. Praxisphase (02.07.2001 - 28.09.2001)<br />
Firma dieser Praxisphase: University of Oslo, Department of Informatics<br />
Ausbildungsbetrieb: Fraunhofer IPSI Darmstadt<br />
Thema: “Operating system and protocol enhancements for increased<br />
performance in distributed interactive multimedia<br />
presentations”<br />
Fachliche Ausbildungsbetreuung Oslo:<br />
Dr. <strong>Ing</strong>. Carsten Griwodz<br />
Administrative Betreuung Oslo: Prof. Dr. Thomas Plagemann<br />
Administrative Betreuung FhG-IPSI Darmstadt: Dr. Heinz-Dieter Böcker
Ehrenwörtliche Erklärung Praxisbericht 4<br />
<strong>Olaf</strong> <strong>Beier</strong><br />
TIT 99 BGR<br />
Ehrenwörtliche Erklärung<br />
Hiermit erkläre ich, <strong>Olaf</strong> <strong>Beier</strong>, gemäß den Vorgaben der Berufsakademie Mannheim,<br />
diesen Praxisbericht eigenhändig angefertigt zu haben.<br />
Mannheim, 10.09.2001<br />
<strong>Olaf</strong> <strong>Beier</strong><br />
Seite 2 von 25
Table of Contents Praxisbericht 4<br />
<strong>Olaf</strong> <strong>Beier</strong><br />
TIT 99 BGR<br />
Table of Contents<br />
Ehrenwörtliche Erklärung..............................................................................................2<br />
Table of Contents...........................................................................................................3<br />
List of Figures ................................................................................................................4<br />
1 Introduction............................................................................................................5<br />
1.1 General Information on UIO-IFI-KOMS.......................................................5<br />
1.2 My function within the UIO-IFI Research Group KOMS.............................5<br />
2 Transport problems for multimedia data................................................................7<br />
2.1 Introduction....................................................................................................7<br />
2.2 Methods of resolution: ...................................................................................7<br />
3 The Real-time Transport Protocol (RTP) ..............................................................8<br />
3.1 Tasks of RTP..................................................................................................8<br />
3.2 RTP as service for real time data ...................................................................8<br />
3.3 RTP Protocol Architecture.............................................................................8<br />
3.4 RTP fixed header fields .................................................................................9<br />
3.5 RTP Header Extension.................................................................................10<br />
4 The RTP Control Protocol (RTCP)......................................................................11<br />
4.1 Tasks of RTCP.............................................................................................11<br />
4.2 RTCP CNAME Identifier ............................................................................11<br />
4.3 RTCP Source Description............................................................................12<br />
4.4 RTCP Sender-/Receiver Report...................................................................13<br />
4.5 RTCP Goodbye packet ................................................................................15<br />
4.6 Application-defined RTCP packet...............................................................16<br />
5 Application scenarios...........................................................................................17<br />
5.1 Encapsulation of H.263................................................................................17<br />
5.2 Simple Audio conference.............................................................................17<br />
5.3 Multiplexing of several media streams ........................................................18<br />
5.4 Mixer............................................................................................................19<br />
5.5 Translator .....................................................................................................20<br />
6 What is Komssys?................................................................................................21<br />
6.1 Open Source.................................................................................................21<br />
6.2 General Overview ........................................................................................21<br />
6.3 Other RTSP/RTP based systems..................................................................22<br />
References....................................................................................................................23<br />
HTTP References.........................................................................................................25<br />
Seite 3 von 25
List of Figures Praxisbericht 4<br />
<strong>Olaf</strong> <strong>Beier</strong><br />
TIT 99 BGR<br />
List of Figures<br />
Figure 1 RTP Protocol Architecture [Boo00] ..........................................................9<br />
Figure 2 RTP Packet Header [RFC1889].................................................................9<br />
Figure 3 RTP Header Extension [RFC1889] .........................................................10<br />
Figure 4 CNAME: Canonical end-point Identifier [RFC1889] .............................11<br />
Figure 5 RTCP Source Description packet [RFC1889] .........................................12<br />
Figure 6 RTCP Sender-/Receiver Report packet [RFC1889] ................................15<br />
Figure 7 RTCP Goodbye packet [RFC1889] .........................................................16<br />
Figure 8 Application-defined RTCP packet [RFC1889]........................................16<br />
Figure 9 RTP data over UDP in an IP packet [Chu97] ..........................................17<br />
Figure 10 Simple Audio conference [Boo00] ..........................................................18<br />
Figure 11 Multiplexing of several media streams [Boo00]......................................19<br />
Figure 12 Transatlantic session as example for low bandwidth connections...........19<br />
Figure 13 Mixer [Boo00] .........................................................................................20<br />
Figure 14 Translator [Boo00]...................................................................................20<br />
Figure 15 Client-server configuration overview [GZ01] .........................................21<br />
Figure 16 Screenshot of the QT GUI (currently version 0.2 is the latest) ...............22<br />
Seite 4 von 25
Introduction Praxisbericht 4<br />
<strong>Olaf</strong> <strong>Beier</strong><br />
TIT 99 BGR<br />
1 Introduction<br />
1.1 General Information on UIO-IFI-KOMS<br />
The University of Oslo is Norway’s largest and oldest institution of higher education.<br />
It was founded in 1811 when Norway was still under Danish rule. Today, the<br />
University of Oslo has approximately 33,000 students, 4,500 employees and four<br />
Nobel Prize winners, who indicate the quality of the research at the University.<br />
The communication systems group (KOMS) is one out of ten research and interests<br />
groups at the Department of computer science and consists of twenty persons; KOMS<br />
is also operating an IPv6 Laboratory. KOMS is discussing the following topics:<br />
o Next generation Internet protocols<br />
o Distributed multimedia systems and applications<br />
o Quality-of-Service<br />
o Middleware<br />
o Routing in multiprocessor systems an on the Internet<br />
o High-speed Local and Metropolitan Area Networks<br />
o Close cooperation with MMDBMS systems<br />
Currently, the scientific staff members of KOMS are working in the following<br />
projects:<br />
o NetSim: a project based on the UCB/LBNL/VINT Network Simulator.<br />
o OPNET: Improving server-network performance and reliableness focussing on<br />
TCP/IP Protocol based on the OPNET Network Simulator.<br />
o Distributed Media Journaling: a research project focussing on capturing and<br />
indexing distributed multimedia applications in real time.<br />
o ENNCE: WP1: Enhanced Next-Generation Networked Computing<br />
Environment<br />
o ENNCE: WP2 MULTE: Multimedia Middleware for Low-Latency High-<br />
Throughput Environments.<br />
o INSTANCE: Intermediate Storage Node Concept to support asynchronous<br />
communication in server-based systems.<br />
o OMODIS: Object Oriented Modelling and Database Support in Distributed<br />
Systems.<br />
1.2 My function within the UIO-IFI Research Group KOMS<br />
My scope of duties comprised several different tasks and activities. My vocational<br />
adjustment to the following topics was my major task: multimedia networks,<br />
multimedia streaming, VoD [ZGS01] (using relevant project reports and technical<br />
literature such as RFCs [h:RFC], manuals and articles), along with the main features<br />
of professional software engineering under Linux. For this reason, my main point of<br />
interest was to gain insight into the Open Source project Komssys which I will<br />
introduce shortly in chapter 6.<br />
My special work in this project was “to examine the Komssys RTP stack [RFC1889],<br />
to isolate media handling code that can be moved into loadable modules and to<br />
compare KOMS’ Multimedia File System Minorca [WGP99] to SGI XFS [h:sgixfs]”.<br />
This means I had to analyse the existing Komssys RTP Stack and its support for the<br />
following media formats: PCMU, AVI, H.261, MPEG, MPA and MP3. The main<br />
focus of my work was to get a “nicer” Application Programming Interface (API). This<br />
Seite 5 von 25
Introduction Praxisbericht 4<br />
<strong>Olaf</strong> <strong>Beier</strong><br />
TIT 99 BGR<br />
means a more flexible and well-designed interface to easily implement new codecs -<br />
also those, which must be used with a wrapper because the sources are not available.<br />
It was my task to find a way to divide the existing and well working source-tree into<br />
an encoder and a decoder part for each currently supported codec separately. In<br />
addition, a new layer that instantiates codecs has been integrated. It is implemented as<br />
factory pattern [h:facpat]. The now existing - also stable working - stack is<br />
encapsulated in separate modules for encoding and decoding for each codec<br />
separately.<br />
Besides this, I supported the department with my expertise on the acquisition of<br />
hardware and software and organized a freelancer writing a press article about several<br />
of their current projects.<br />
Seite 6 von 25
Transport problems for multimedia data Praxisbericht 4<br />
<strong>Olaf</strong> <strong>Beier</strong><br />
TIT 99 BGR<br />
2 Transport problems for multimedia data<br />
2.1 Introduction<br />
In contrast to the transmission of conventional data such as mails or websites,<br />
particular demands must be met to transmit multimedia data.<br />
The data should, for example, be transmitted in real time, so that the sender receives<br />
the multimedia stream without interruption in order to avoid any dropout in the<br />
process of decoding the audio or video signal. The most frequent reasons for<br />
interruptions are:<br />
o varying delay (called jitter)<br />
o excessive packet loss<br />
o in synchronous communication such as IP-telephony also delay<br />
In most cases, this is caused by insufficient bandwidth and/or hardware or software<br />
problems or failure.<br />
Another transport feature for multimedia data is the possibility to make connections<br />
not only point-to-point but multicast like in the case of a conference. Additionally,<br />
transmission ought to be adapted to the different performance of client hardware and<br />
networks.<br />
2.2 Methods of resolution:<br />
Currently there are several different opinions about the way to solve these problems.<br />
For example ST2 [DB95], XTP [SDW92] or ATM [T1.627] are such solutions<br />
propagated by a minority of researchers. Another possibility is DiffServ [RFC2474],<br />
[RFC2475] which is favoured by IP-router manufacturer. Also the Resource<br />
ReSerVation Protocol (RSVP) [RFC2205] is a possibility, which provides the clients<br />
to coordinate the reservation of bandwidth.<br />
The original transport of the real time data between the participants will be warranted<br />
by the Real-time Transport Protocol (RTP) [RFC1889].<br />
In the following I will present a closer look on the functionalities and mechanisms of<br />
RTP, as I have concentrated on this part of the Open Source Project Komsys -<br />
KOM(S) RTSP/RTP Streaming System. A more detailed description of Komsys can<br />
be found in chapter 6.<br />
Seite 7 von 25
The Real-time Transport Protocol (RTP) Praxisbericht 4<br />
<strong>Olaf</strong> <strong>Beier</strong><br />
TIT 99 BGR<br />
3 The Real-time Transport Protocol (RTP)<br />
3.1 Tasks of RTP<br />
RTP is a Transport Protocol for Real-Time Applications invented 1996 by the Audio-<br />
Video Transport Working Group within the Network Working Group of the IETF<br />
[h:IETF]. The Inventors are H. Schulzrinne (GMD Fokus), S. Casner (Precept<br />
Software, Inc), R. Frederick (Xerox Palo Alto Research Center) and V. Jacobson<br />
(Lawrence Berkeley National Laboratory).<br />
In order to hold a videoconference, it appears to suffice to build up a network<br />
connection, reserve the resources needed and send the data. This is not the case for the<br />
connectionless IP based networks, as only the following chain of mechanisms can<br />
accomplish the task:<br />
o In the first step the data stream is divided into packets that can be transmitted<br />
separately. The transmission can be unicast (one receiver) or multicast (several<br />
receivers).<br />
o At the side of the receiver, the received packets have to be resequenced. It may<br />
also be necessary to resynchronize them with other incoming data streams.<br />
o In addition, the receiver should be able to adapt to varying network conditions<br />
during the transmission.<br />
o Furthermore, the receiver needs meta data, which provide information on<br />
participating stations.<br />
These are not the tasks of the payload protocol suite but the data serve as input for the<br />
Real-time Transport Protocol, which wraps up the payload.<br />
3.2 RTP as service for real time data<br />
As indicated above, the actual purpose of RTP is to offer a service for the<br />
transmission of multimedia data between the end points of a unicast or multicast<br />
session. Major parts of this service are the marking of the payload and their source,<br />
the allocation of sequence numbers and time stamps for data packets, the monitoring<br />
of network conditions and the transmission of information on all session members.<br />
However, monitoring and meta data are not provided by RTP itself, but by the RTP<br />
Control Protocol (RTCP). RTP cannot enforce a certain QoS or give explicit<br />
guarantees for it. Neither can RTP warrant for the packets‘ arrival at the receiver, their<br />
synchronization and correct order. Sequence numbers and time stamps provided by<br />
RTP have to be used in order to enable the resequencing of the session by the<br />
receiver.<br />
3.3 RTP Protocol Architecture<br />
The specification of the most recent protocols allows the definition of optional fields<br />
or similar mechanisms for future extensions. However, this flexibility also has<br />
disadvantages, as the overhead caused by the more sumptuous parsing of the protocol<br />
headers is undesirable for real time data. For this reason RTP’s architecture differs<br />
fundamentally from other protocols in this point. RFC 1889 explicitly allows<br />
extensions of the RTP header in order to adapt it to certain application scenarios.<br />
These particular interpretations of the RTP header are defined in different Profile<br />
Specifications and apply for specific classes of applications (e.g. audio and video<br />
conferences [RFC1890]).<br />
Seite 8 von 25
The Real-time Transport Protocol (RTP) Praxisbericht 4<br />
<strong>Olaf</strong> <strong>Beier</strong><br />
TIT 99 BGR<br />
Protocol Specification<br />
Profile Specifications<br />
. . .<br />
. . . GSM MPA PCMA<br />
Payload Format Specifications<br />
RTP / RTCP<br />
AV Profile<br />
Figure 1 RTP Protocol Architecture [Boo00]<br />
. . .<br />
JPEG MPV H.263 . . .<br />
As displayed above, a Profile Specification is a link between the RTP kernel and the<br />
Payload Format Specification. It defines how the payload (e.g. H.263 [RFC2190]) is<br />
wrapped up in order to be transported via RTP.<br />
3.4 RTP fixed header fields<br />
A normal RTP Header has the following format; where the picture below shows the<br />
network byte order (i.e. BIG ENDIAN format):<br />
0 1 2 3<br />
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1<br />
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<br />
|V=2|P|X| CC |M| PT | sequence number |<br />
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<br />
| timestamp |<br />
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<br />
| synchronization source (SSRC) identifier |<br />
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+<br />
| contributing source (CSRC) identifiers |<br />
| .... |<br />
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<br />
Figure 2 RTP Packet Header [RFC1889]<br />
The first twelve octets are present in every RTP packet, while the list of CSRC<br />
(contributing source) identifiers is present only when inserted by a mixer. The<br />
individual fields have the following meaning:<br />
o Version (V): 2 bits. Version of RTP. (currently, version 2 is the latest)<br />
The version number defined by [RFC1889] is two (2). (The value 1 is<br />
used by the first draft version of RTP and the value 0 is used by the<br />
protocol initially implemented in the "vat" audio tool.)<br />
o Padding (P): 1 bit. If set, the packet contains one or more additional<br />
padding octets at the end which are not part of the payload. The last<br />
Seite 9 von 25
The Real-time Transport Protocol (RTP) Praxisbericht 4<br />
<strong>Olaf</strong> <strong>Beier</strong><br />
TIT 99 BGR<br />
octet of the padding contains a count of how many padding octets<br />
should be ignored.<br />
o Extension (X): 1 bit. If set, the fixed header is followed by exactly one<br />
header extension.<br />
o CSRC count (CC): 4 bits. The number of CSRC identifiers that follow<br />
the fixed header. This number exceeds one if the payload of the RTP<br />
packet contains data from several sources.<br />
o Marker (M): 1 bit. Defined by a profile, the marker is intended to allow<br />
significant events such as frame boundaries to be marked in the packet<br />
stream.<br />
o Payload type (PT): 7 bits. Identifies the format of the RTP payload.<br />
Some numbers are defined by the RFC but most can be assigned<br />
dynamically by the profile or by externally provided meta information.<br />
o Sequence number: 16 bits. Increments by one for each RTP data packet<br />
sent, may be used by the receiver to detect packet loss and to restore<br />
packet sequence. The initial value should be set randomly and wraps to<br />
0 after 2 16 -1.<br />
o Timestamp: 32 bits. The sampling instant of the first octet in the RTP<br />
data packet. May be used for synchronisation and jitter calculations.<br />
The initial value should be set randomly and wraps to 0 after 2 16 -1.<br />
o SSRC: 32 bits. Randomly chosen number to distinguish<br />
synchronisation sources (different host, users or applications) within<br />
the same RTP session. It indicates where the data has been combined,<br />
or the source of the data if there is only one source.<br />
o CSRC list: 0 to 15 items, 32 bits each. Contributing sources for the<br />
payload contained in this packet. The number of identifiers is given by<br />
the CC field.<br />
3.5 RTP Header Extension<br />
RFC 1889 describes an extension mechanism that is provided to allow individual<br />
implementations to experiment with new payload-format-independent functions that<br />
require additional information to be carried in the RTP data packet header.<br />
Interoperate implementations should be designed in a well-behaving manner, to<br />
ignore these header extensions, which have not been extended to them.<br />
0 1 2 3<br />
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1<br />
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<br />
| defined by profile | length |<br />
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<br />
| header extension |<br />
| .... |<br />
Figure 3 RTP Header Extension [RFC1889]<br />
Seite 10 von 25
The RTP Control Protocol (RTCP) Praxisbericht 4<br />
<strong>Olaf</strong> <strong>Beier</strong><br />
TIT 99 BGR<br />
4 The RTP Control Protocol (RTCP)<br />
4.1 Tasks of RTCP<br />
RTCP is the control protocol that belongs to RTP. RTCP has four tasks:<br />
o RTCP’s main task is to inform the participants regularly on the quality of the<br />
data distribution on the network. This feedback enables the participants to<br />
adapt the data stream they generate to the network conditions. In case of bad<br />
network conditions, this can be done by reducing the data rate in order to<br />
reduce network congestion. For these purposes RTCP periodically transmits<br />
so-called Sender Reports (SR) and Receiver Reports (RR).<br />
o The next important task is the repeated transmission of unambiguous markers<br />
for each participant (Canonical Name, CNAME). These markers enable the<br />
receiver to reassemble several data streams (e.g. audio and video) that have<br />
been transmitted in separated sessions.<br />
o The periodic transmission of the control data is important, but this must not<br />
restrict the payload’s transport if there is a large number of participants.<br />
However, as each participant receives all RTCP packets, because he is<br />
listening at a multicast address, which means simultaneous communication<br />
between groups of computers and is known generically as multipoint<br />
communications, so every client can locally calculate the rate of control<br />
packets that have to be sent from the sum of the participants. For further<br />
details on calculating control packet rates have a look at [RFC1889].<br />
o Last but not least RTCP offers each participant the option to send a Source<br />
Description (SDES) of his own system.<br />
4.2 RTCP CNAME Identifier<br />
The CNAME identifier (Canonical end-point identifier SDES item) has the following<br />
properties:<br />
o The SSRC identifier is randomly allocated, so it may change if a conflict is<br />
discovered or if a program is restarted. For this case the CNAME item is<br />
required to provide the binding from the SSRC identifier to an identifier for<br />
the source that remains constant<br />
o CNAME and SSRC should be unique among all participants within one RTP<br />
session<br />
o The CNAME should be fixed for each participant. In this way a binding across<br />
multiple media tools used by one participant in a set of related RTP sessions is<br />
possible.<br />
o To facilitate third-party monitoring, the CNAME should be suitable for either<br />
a program or a person to locate the source.<br />
0 1 2 3<br />
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1<br />
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<br />
| CNAME=1 | length | user and domain name ...<br />
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<br />
Figure 4 CNAME: Canonical end-point Identifier [RFC1889]<br />
Seite 11 von 25
The RTP Control Protocol (RTCP) Praxisbericht 4<br />
<strong>Olaf</strong> <strong>Beier</strong><br />
TIT 99 BGR<br />
In accordance to these prerequisites the CNAME item should have the format<br />
"user@host", or "host", if a user name is not available. The formatting should be done<br />
in accordance to the rules specified in RFC 1034 [RFC1034], RFC 1035 [RFC1035]<br />
and Section 2.1 of RFC 1123 [RFC1123] or the standard ASCII representation of the<br />
host's numeric address.<br />
4.3 RTCP Source Description<br />
RTCP requires every participant to send Source Description (SDES)-packets<br />
periodically, which can contain additional information about his system. In order to<br />
reduce overhead, several data sources (Synchronization Sources, SSRCs) can be<br />
described within one single packet.<br />
The unambiguous marker of each participant (Canonical Name, CNAME see chapter<br />
4.2) has to be given for each source, as it is important for linking different data<br />
streams of one participant. The other elements are optional, though, and should only<br />
be transmitted within larger intervals in order to save bandwidth. Their meaning is<br />
mostly self-descriptive. Short messages can be sent to all participants via the Short<br />
Message Element. In addition, an element for application specific extensions is<br />
provided.<br />
The available items are:<br />
o Version (V): 2 bits, which means Version of SDES. (Currently, version 2 is<br />
the latest)<br />
o Padding (P), length 1 bit: as described for the SR packet see chapter 4.4.<br />
o Packet type (PT): 8 bits, which contains the constant 202 to identify this as an<br />
RTCP SDES packet.<br />
o Source count (SC): 5 bits the number of SSRC/CSRC chunks contained in this<br />
SDES packet. A value of zero is valid but useless.<br />
0 1 2 3<br />
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1<br />
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<br />
|V=2|P| SC | PT=SDES=202 | length | header<br />
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+<br />
| SSRC/CSRC_1 | chunk<br />
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1<br />
| SDES items |<br />
| ... |<br />
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+<br />
| SSRC/CSRC_2 | chunk<br />
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2<br />
| SDES items |<br />
|<br />
Figure 5 RTCP Source Description packet [RFC1889]<br />
The auxiliary seven SDES items as described in RFC 1889 are:<br />
o NAME: User name of the current session participant<br />
o EMAIL: Electronic mail address of the session participant<br />
o PHONE: Phone number of session participant<br />
o LOC: Geographic user location<br />
o TOOL: Application or tool name<br />
Seite 12 von 25
The RTP Control Protocol (RTCP) Praxisbericht 4<br />
<strong>Olaf</strong> <strong>Beier</strong><br />
TIT 99 BGR<br />
o NOTE: Notice/status<br />
o PRIV: Private extensions<br />
4.4 RTCP Sender-/Receiver Report<br />
Each participant periodically sends Sender and Receiver Reports (SR, RR) to inform<br />
the other participants about the quality of the data transmission.<br />
Besides technical information such as flags and counters, the header contains the<br />
unambiguous marker or the data source (Synchronization Source, SSRC), which has<br />
generated this report. If packets have been sent from this source since the last Sender<br />
or Receiver Report has been sent, the header is followed by a Sender Info Block (in<br />
this case the packet is called „Sender Report“; without the info-block, the packet is<br />
called „Receiver Report“). The Info-Block contains a time stamp containing the local<br />
time when the report has been sent and an equivalent time stamp in the unit the RTP<br />
protocol uses for this stream. Additionally, the number of packets that have been sent<br />
since the start of the transmission is given.<br />
This is followed by a Report Block for each external data source from which this<br />
participant has received payload since the last Sender or Receiver Protocol has been<br />
sent. It contains the percentage rate and number of packets received from each<br />
individual data source (which is identified unambiguously by its SSRC). Furthermore,<br />
it contains the biggest sequence number received, the variance of the time slice<br />
between the arrival of two data packets, the time stamp of the last Sender Report<br />
received as well as the time since then. Additional application specific fields can be<br />
defined in profile specifications.<br />
The available items are:<br />
o Version (V): 2 bits version of RTP (currently, version 2 is the latest)<br />
o Padding (P): 1 bit padding may be needed by some encryption algorithms with<br />
fixed block sizes.<br />
o Reception report count (RC): 5 bits, the number of reception report blocks<br />
contained in this packet.<br />
o Packet type (PT): 8 bits, contains the constant 200 to identify this as an RTCP<br />
SR packet.<br />
o Length: 16 bits, the length of this RTCP packet in 32-bit words minus one,<br />
including the header and any padding.<br />
o SSRC: 32 bits, the synchronization source identifier for the originator of this<br />
SR packet.<br />
o The second section, the sender information, is 20 octets long and is present in<br />
every sender report packet. It summarizes the data transmissions from this<br />
sender.<br />
The fields have the following meaning:<br />
o NTP timestamp: 64 bits, indicates the wallclock time (localized<br />
specified time-zone, non – coordinated time of sender) when this report<br />
was sent<br />
o RTP timestamp: 32 bits, corresponds to the same time as the NTP<br />
timestamp (above)<br />
o Sender’s packet count: 32 bits, the total number of RTP data packets<br />
transmitted by the sender since starting transmission up until the time<br />
this SR packet was generated. The count is reset if the sender changes<br />
its SSRC identifier.<br />
Seite 13 von 25
The RTP Control Protocol (RTCP) Praxisbericht 4<br />
<strong>Olaf</strong> <strong>Beier</strong><br />
TIT 99 BGR<br />
o Sender’s octet count: 32 bits The total number of payload octets (i.e.,<br />
not including header or padding) transmitted in RTP data packets by<br />
the sender since starting transmission up until the time this SR packet<br />
was generated. The count is reset if the sender changes its SSRC<br />
identifier. This field can be used to estimate the average payload data<br />
rate.<br />
o The third section contains zero or more reception report blocks depending on<br />
the number of other sources heard by this sender since the last report.<br />
These statistics are:<br />
o SSRC_n (source identifier): 32 bits The SSRC identifier of the source<br />
to which the information in this reception report block pertains.<br />
o Fraction lost: 8 bits The fraction of RTP data packets from source<br />
SSRC_n lost since the previous SR or RR packet was sent, expressed<br />
as a fixed point number with the binary point at the left edge of the<br />
field.<br />
o Cumulative number of packets lost: 24 bits The total number of RTP<br />
data packets from source SSRC_n that have been lost since the<br />
beginning of reception.<br />
o Extended highest sequence number received: 32 bits The low 16 bits<br />
contain the highest sequence number received in an RTP data packet<br />
from source SSRC_n, and the most significant 16 bits extend that<br />
sequence number with the corresponding count of sequence number<br />
cycles.<br />
o Interarrival jitter: 32 bits An estimate of the statistical variance of the<br />
RTP data packet interarrival time, measured in timestamp units and<br />
expressed as an unsigned integer. The interarrival jitter is defined to be<br />
the mean deviation (smoothed absolute value) of the difference in<br />
packet spacing at the receiver compared to the sender for a pair of<br />
packets.<br />
o Last SR timestamp (LSR): 32 bits The middle 32 bits out of 64 in the<br />
NTP timestamp received as part of the most recent RTCP sender report<br />
(SR) packet from source SSRC_n. If no SR has been received yet, the<br />
field is set to zero.<br />
o Delay since last SR (DLSR): 32 bits The delay, expressed in units of<br />
1/65536 seconds, between receiving the last SR packet from source<br />
SSRC_n and sending this reception report block. If no SR packet has<br />
been received yet from SSRC_n, the DLSR field is set to zero.<br />
Seite 14 von 25
The RTP Control Protocol (RTCP) Praxisbericht 4<br />
<strong>Olaf</strong> <strong>Beier</strong><br />
TIT 99 BGR<br />
0 1 2 3<br />
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1<br />
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<br />
|V=2|P| RC | PT=SR=200 | length | header<br />
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<br />
| SSRC of sender |<br />
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+<br />
| NTP timestamp, most significant word | sender<br />
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ info<br />
| NTP timestamp, least significant word |<br />
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<br />
| RTP timestamp |<br />
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<br />
| sender's packet count |<br />
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<br />
| sender's octet count |<br />
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+<br />
| SSRC_1 (SSRC of first source) | report<br />
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ block<br />
| fraction lost | cumulative number of packets lost | 1<br />
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<br />
| extended highest sequence number received |<br />
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<br />
| interarrival jitter |<br />
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<br />
| last SR (LSR) |<br />
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<br />
| delay since last SR (DLSR) |<br />
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+<br />
| SSRC_2 (SSRC of second source) | report<br />
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ block<br />
: ... : 2<br />
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+<br />
| profile-specific extensions |<br />
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<br />
Figure 6 RTCP Sender-/Receiver Report packet [RFC1889]<br />
4.5 RTCP Goodbye packet<br />
The BYE packet indicates that one or more sources are no longer active. If a mixer<br />
(have a look at chapter 5.4) receives a BYE packet, the mixer forwards the BYE<br />
packet with the SSRC/CSRC identifier(s) unchanged. If a mixer shuts down, it should<br />
send a BYE packet listing all contributing sources it handles, as well as its own SSRC<br />
identifier.<br />
The available items are:<br />
o Version (V) 2 bits, currently version 2 is the latest<br />
o Padding (P) 1 bit, length: as described for the SR packet (have a look at<br />
chapter 4.4)<br />
Seite 15 von 25
The RTP Control Protocol (RTCP) Praxisbericht 4<br />
<strong>Olaf</strong> <strong>Beier</strong><br />
TIT 99 BGR<br />
o Packet type (PT): 8 bits contains the constant 203 to identify this as an RTCP<br />
BYE packet.<br />
o Source count (SC): 5 bits the number of SSRC/CSRC identifiers included in<br />
this BYE packet. A count value of zero is valid, but useless<br />
0 1 2 3<br />
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1<br />
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<br />
|V=2|P| SC | PT=BYE=203 | length |<br />
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<br />
| SSRC/CSRC |<br />
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<br />
: ... :<br />
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+<br />
| length | reason for leaving ... (opt)<br />
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<br />
Figure 7 RTCP Goodbye packet [RFC1889]<br />
4.6 Application-defined RTCP packet<br />
The APP packet is intended for experimental use as new applications and new<br />
features are developed, without requiring packet type value registration. APP packets<br />
with unrecognised names should be ignored.<br />
The available items are:<br />
o Version (V) 2 bits, currently version 2 is the latest<br />
o Padding (P) 1 bit, length: as described for the SR packet in chapter 4.4<br />
o Subtype: 5 bits allow a set of APP packets to be defined under one unique<br />
name, or for any application-dependent data.<br />
o Packet type (PT): 8 bits Contains the constant 204 to identify this as an RTCP<br />
APP packet.<br />
o Name: 4 octets A name chosen by the person defining the set of APP packets<br />
to be unique with respect to other APP packets this application might receive.<br />
The name is interpreted as a sequence of four ASCII characters, with<br />
uppercase and lowercase characters treated as distinct.<br />
0 1 2 3<br />
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1<br />
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<br />
|V=2|P| subtype | PT=APP=204 | length |<br />
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<br />
| SSRC/CSRC |<br />
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<br />
| name (ASCII) |<br />
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<br />
| application-dependent data ...<br />
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<br />
Figure 8 Application-defined RTCP packet [RFC1889]<br />
Seite 16 von 25
Application scenarios Praxisbericht 4<br />
<strong>Olaf</strong> <strong>Beier</strong><br />
TIT 99 BGR<br />
5 Application scenarios<br />
5.1 Encapsulation of H.263<br />
As an introductory example, we will look at the encapsulation of H.263 video data<br />
into RTP packets.<br />
The RTP header consists of the fields that have already been explained in 3.4 and thus<br />
describes the payload transmitted (i.e. the H.263 video stream). The fields are defined<br />
according to the Payload Format Specification [RFC2190].<br />
The H.263 payload header is followed by the video stream itself. The format of the<br />
video stream is also described in the Payload Format Specification. The ideal solution<br />
would be to divide the output of the encoder into packets immediately. For this<br />
purpose, the H.263 bit stream itself is stored including a picture header in the RTP<br />
payload area. It is possible to transport RTP data over UDP, TCP or ATM.<br />
IP header UDP header RTP header RTP payload<br />
Figure 9 RTP data over UDP in an IP packet [Chu97]<br />
5.2 Simple Audio conference<br />
In order to build up an audio conference, all participants must agree on a multicast<br />
address and two port numbers for the RTP and RTCP packets. As RTP cannot<br />
negotiate this, other means like SIP, Mail, RTSP, H.323 are needed.<br />
During the conference, each participant wraps the audio data stream he generates in<br />
RTP packets of a fixed size. The RTP packets are then sent to the multicast address<br />
and forwarded to all participants by the network. Using the additional information<br />
each RTP packet contains besides the payload, the receiver puts the packets back into<br />
the correct order, synchronizes them, identifies the encapsulated data format and thus<br />
synthesizes the payload stream for the play back. For this purpose, each data source<br />
can be identified via its unambiguous marker (Synchronization Source, SSRC).<br />
As the bandwidth available for each participant can vary during the conference, each<br />
station sends RTCP packets periodically, conveying statistics on the QoS.<br />
Besides, every participant sends Metadata in certain time slices (unambiguous<br />
participant marker, real name, e-mail address, actual position, software etc.). As a<br />
result, data sources can be linked to participants and everyone recognizes other<br />
participants entering and leaving the conference. For security reasons, it is important<br />
to know, that listening in is possible if this transmission of reports is suppressed.<br />
Seite 17 von 25
Application scenarios Praxisbericht 4<br />
<strong>Olaf</strong> <strong>Beier</strong><br />
TIT 99 BGR<br />
Participant 3<br />
Audio 3<br />
RTCP-SR-Packet<br />
SSRC: Audio 3<br />
Send Statistic<br />
Receive Statistic 1<br />
Receive Statistic 2<br />
Receive Statistic 4<br />
Participant 1<br />
Audio 1<br />
PCM<br />
Audio 2<br />
Participant 2<br />
Figure 10 Simple Audio conference [Boo00]<br />
RTP-Data Packet<br />
SSRC: Audio 4<br />
Datatyp: PCM<br />
Sequenceno.: 1350<br />
Timestamp: 8473841<br />
PCM-Header<br />
PCM-Payload<br />
5.3 Multiplexing of several media streams<br />
If each participant generates a data stream of individual media types (e.g. audio and<br />
video in a video conference), these are transmitted in separate RTP sessions. The<br />
streams are not multiplexed via a field in the RTP header as the “payload type“ or<br />
synchronization source“, but via their destination address (IP-address and port). This<br />
has technical reasons, as the implementation of the protocols would become more<br />
sumptuous, if it was required to provide a multiplexing mechanism by itself. As a<br />
result, if a participant sends another stream, this requires another pair of ports (one for<br />
RTP and one for RTCP). During the whole communication, different network paths<br />
and resources can be used. In addition, the data processing can be implemented in<br />
different processes. Besides, participants who cannot dispose of sufficient bandwidth<br />
can decide to forego one medium completely and e.g. receive only audio.<br />
Although the video and audio signals in our example are transmitted in separate<br />
sessions, they must be linked for the play back. They are linked to a certain participant<br />
via the unambiguous marker that is conveyed regularly via RTCP; the streams are<br />
synchronized using the time stamp in each RTP packet.<br />
Audio 4<br />
Participant 4<br />
Seite 18 von 25
Application scenarios Praxisbericht 4<br />
<strong>Olaf</strong> <strong>Beier</strong><br />
TIT 99 BGR<br />
RTCP-SDES-Packet<br />
SSRC: Audio 3<br />
CNAME: Participant 3<br />
PRIV: Carsten Griwodz<br />
Participant 3<br />
Video 3 Audio 3<br />
RTCP-SDES-Packet<br />
SSRC: Video 3<br />
CNAME: Participant 3<br />
PRIV: Carsten Griwodz<br />
Audio 2<br />
Participant 1<br />
Video 1<br />
H.263<br />
Participant 2<br />
Audio 1<br />
Video 2<br />
RTP-Data Packet<br />
SSRC: Video 4<br />
Datatyp: H.263<br />
Sequenceno.: 4853<br />
Timestamp: 2947822<br />
H.263-Header<br />
H.263-Payload<br />
Figure 11 Multiplexing of several media streams [Boo00]<br />
5.4 Mixer<br />
In some cases it can make sense to combine data streams coming from several<br />
participants and forward them as one single data stream. This is the task of a so-called<br />
mixer.<br />
If the bandwidth of a participant or a participant group in an audio conference is low,<br />
a mixer can be put at the starting point of this network segment.<br />
Atlantic Ocean<br />
USA Europe<br />
Mixer<br />
Mixer<br />
Participant 4<br />
Video 4 Audio 4<br />
Figure 12 Transatlantic session as example for low bandwidth connections<br />
It combines the streams it receives by decoding the audio signals, mixes them and<br />
encodes the resulting data in a more compressed form before it forwards them in a<br />
new stream and also synchronizes them. The receiver of the newly generated stream<br />
can be a single participant or another multicast group.<br />
Thus the mixer itself becomes a data source and registers as Synchronization Source<br />
in the RTP header of each packet. Since the original packets are lost, the mixer adds a<br />
list of Contributing Sources (CSRC) to each packet, so that the receiver knows, where<br />
the mixed data originally came from.<br />
Seite 19 von 25
Application scenarios Praxisbericht 4<br />
<strong>Olaf</strong> <strong>Beier</strong><br />
TIT 99 BGR<br />
Participant 3<br />
Audio 3<br />
Participant 1<br />
Audio 1<br />
PCM<br />
Audio 2<br />
Participant 2<br />
Figure 13 Mixer [Boo00]<br />
RTP-Data Packet<br />
SSRC: Audio 1<br />
Datatyp: PCM<br />
Sequenceno.: 3231<br />
Timestamp: 84922<br />
PCM-Header<br />
PCM-Payload<br />
RTP-Data Packet<br />
SSRC: Audio 2<br />
Datatyp: PCM<br />
Sequenceno.: 3482<br />
Timestamp: 54765<br />
PCM-Header<br />
PCM-Payload<br />
Mixer<br />
SSRC: Audio M<br />
SSRC: Audio 1<br />
SSRC: Audio 2<br />
SSRC: Audio 3<br />
Datatyp: PCM<br />
Sequenceno.: 9384<br />
Timestamp: 87892<br />
PCM-Header<br />
PCM-Payload<br />
Audio M RTP-Data Packet<br />
5.5 Translator<br />
Another element that can be used in RTP networks is a translator. It can change RTP<br />
packets in several ways, but in contrast to a mixer, it maintains their identity.<br />
Translators can for example change the payload format of streams packet wise<br />
without mixing them in order to serve connections with poor bandwidth or<br />
participants using different technologies. Another application area is the bypassing of<br />
firewalls: e.g. if a firewall does not allow multicast packets, an outside translator<br />
transmits incoming packets via unicast to an inside translator which forwards them via<br />
multicast to the internal participants.<br />
Participant 3<br />
Audio 3<br />
Participant 1<br />
Audio 1<br />
PCM<br />
Audio 2<br />
Participant 2<br />
Figure 14 Translator [Boo00]<br />
RTP-Data Packet<br />
SSRC: Audio 1<br />
Datatyp: PCM<br />
Sequenceno.: 3231<br />
Timestamp: 84922<br />
PCM-Header<br />
PCM-Payload<br />
Translator<br />
RTP-Data Packet<br />
SSRC: Audio 1<br />
Datatyp: MP3<br />
Sequenceno.: 1593<br />
Timestamp: 48458<br />
MP3-Header<br />
MP3-Payload<br />
Participant 4<br />
Audio 4<br />
MP3<br />
Audio 5<br />
Participant 5<br />
Audio 4<br />
Participant 4<br />
Participant 6<br />
Audio 6<br />
Seite 20 von 25
What is Komssys? Praxisbericht 4<br />
<strong>Olaf</strong> <strong>Beier</strong><br />
TIT 99 BGR<br />
6 What is Komssys?<br />
6.1 Open Source<br />
Komssys [h:komssys] is the nickname for “KOM(S) RTSP/RTP streaming system”,<br />
while KOM is the nickname for KOM - Industrial Process and System<br />
Communication at Darmstadt University of Technology, Germany. This is combined<br />
with KOMS, the nickname for the Communication Systems research group at the<br />
University of Oslo, Department of Informatics, Norway.<br />
Because of its claim to be interoperable, based on open standards and build as state of<br />
the art technology, Komssys is released as GPL2 based Open Source Software. So<br />
anyone is able to use, redistribute and/or modify the source code to its own purposes.<br />
6.2 General Overview<br />
The KOM(S) Streaming System provides a server, a client, and a proxy cache for<br />
audio/video streaming.<br />
o The first and foremost encoding format that is used is MPEG-1 System.<br />
o The primary platform is Linux, but it also runs on AIX, Solaris, NetBSD,<br />
OpenBSD and Windows (Cygwin environment).<br />
o The whole project configuration is kde [h:kde] make and autoconf based.<br />
o It does not handle data in pull mode (i.e. HTTP and FTP) but uses RTSP/RTP<br />
(and Files). It uses RTSP as control protocol to communicate with possible<br />
streaming servers. The video data is transported via RTP.<br />
Figure 15 Client-server configuration overview [GZ01]<br />
o The proxy cache provides caching, patching [Bec01] and gleaning [Gri00]<br />
functionality.<br />
o It uses LC-RTP, which is an extension of RTP/RTCP, instead of simple RTP.<br />
LC-RTP enables the recipient to detect packet loss and complete contents by<br />
reordering the lost packets via Loss Collection (LC) for further details see<br />
[Jon99] and [The01].<br />
o On all working platforms, a rudimentary, but functional streaming server is<br />
available. On AIX 4.3, the server is able to act as a replacement RTSP server<br />
for IBM's VideoCharger [h:IBMchar].<br />
Seite 21 von 25
What is Komssys? Praxisbericht 4<br />
<strong>Olaf</strong> <strong>Beier</strong><br />
TIT 99 BGR<br />
o As Figure 15 shows, the architecture is based on a finite state machine and a<br />
graph manager for dynamically handling the stream handlers as described in<br />
[GZ01].<br />
o The server can handle unicast as well as multicast sessions.<br />
o The client Graphical User Interface (GUI) is QT [h:trollqt] based.<br />
Figure 16 Screenshot of the QT GUI (currently version 0.2 is the latest)<br />
o The most recent version also supports RealPlayer 8 [h:real] in addition to<br />
PCMU- and MPEG-Systemstreams.<br />
o The greatest part of the project is documented with Doc++ [h:Doc++].<br />
o For reasons of versioning and quality assurance the project uses IBM<br />
Teamconnection [h:IBMTea].<br />
6.3 Other RTSP/RTP based systems<br />
Currently there are only a few well-implemented RTSP/RTP based streaming<br />
systems. Some of the RTSP based systems are listed at [h:rtsp]. Some RTP based<br />
streaming systems can be found at: [h:gstrm], [h:HGS] and [h:pmayo].<br />
Seite 22 von 25
References Praxisbericht 4<br />
<strong>Olaf</strong> <strong>Beier</strong><br />
TIT 99 BGR<br />
References<br />
[Bec01] Ralf Becker, Konzeption und Implementation eines<br />
patchingfähigen Proxies für die KOM-Videostreaming-Umgebung,<br />
Studienarbeit, Technische Universität Darmstadt, März 2001.<br />
[Boo00] Matthias Book, Resource Reservation Protocol / Realtime<br />
Transport Protocol, Seminar Multimedia-Netzwerke, Universität<br />
Dortmund, Juli 2000.<br />
[Chu97] Chunlei Liu, Multimedia over IP: RSVP, RTP, RTCP, and RTSP,<br />
August 1997.<br />
http://www.cis.ohio-state.edu/~cliu/ipmultimedia/<br />
[DB95] L. Delgrossi and L. Berger, "Internet stream protocol version 2<br />
(ST-2) protocol specification - version ST2+," Request for<br />
Comments RFC 1819, August 1995. ST2 Working Group.<br />
[GZ01] Carsten Griwodz, Michael Zink, Dynamic Data Path<br />
Reconfiguration, In: International Workshop on Multimedia<br />
Middleware 2001, October 2001.<br />
[Gri00] Carsten Griwodz, Wide-area True Video-on-Demand by a Decentralized<br />
Cache-based Distribution Infrastructure, Dissertation,<br />
Fachbereich Informatik, Technische Universität Darmstadt, Juni<br />
2000.<br />
[GZ01b] Carsten Griwodz, Michael Zink, Cache Placement Optimization for<br />
Video Delivery Systems. Technical Report TR-KOM-2001-04,<br />
Darmstadt University of Technology, April 2001.<br />
[Gud00] Gunnar Gudmundsson, Design of a Multiformat Capable Cache for<br />
Videostreaming, <strong>Dipl</strong>omarbeit KOM-D-0121, Technische<br />
Universität Darmstadt, September 2000.<br />
[Kar00] Martin Karsten, Design and Implementation of RSVP based on<br />
Object-Relationships, Technische Universität Darmstadt, May<br />
2000.<br />
[Jon99] Alex Jonas, Integration von Loss-Collection-RTP (LCRTP) in eine<br />
VoD-Architektur, <strong>Dipl</strong>omarbeit KOM-D-0093, Technische<br />
Universität Darmstadt, November 1999.<br />
[Mit96] Joan L. Mitchell, MPEG video compression standards, Chapman<br />
and Hall, 1996.<br />
[RFC1034] P. Mockapetris, Domain names - Concepts and Facilities, RFC<br />
1034, IETF, November 1987.<br />
[RFC1035] P. Mockapetris, Domain names – Implementation and<br />
Specification, RFC 1035, IETF, November 1987.<br />
[RFC1123] R. Braden, Requirements for Internet Hosts -- Application and<br />
Support, RFC 1123, IETF, Oktober 1989.<br />
[RFC1597] Y. Rekhter, B. Moskowitz, D. Karrenberg, G. de Groot, Address<br />
Allocation for Private Internets, RFC 1597, IETF, March 1994.<br />
[RFC1738] T. Berners-Lee, L. Masinter, M. McCahill, Uniform Resource<br />
Locators (URL), RFC 1738, IETF, December 1994.<br />
Seite 23 von 25
References Praxisbericht 4<br />
<strong>Olaf</strong> <strong>Beier</strong><br />
TIT 99 BGR<br />
[RFC1889] H. Schulzrinne, S. Casner, R. Frederick, V. Jacobson, RTP: A<br />
Transport Protocol for Real-Time Applications, RFC 1889, IETF,<br />
Januar 1996.<br />
[RFC1890] H. Schulzrinne, RTP Profile for Audio and Video Conferences with<br />
Minimal Control, RFC 1890, IETF Januar 1996.<br />
[RFC2190] C. Zhu, RTP Payload Format for H.263 Video Streams, RFC 2190,<br />
IETF, September 1997.<br />
[RFC2205] R. Braden, Ed., L. Zhang, S. Berson, S. Herzog, S. Jamin,<br />
Resource ReSerVation Protocol (RSVP) -- Version 1 Functional<br />
Specification, RFC 2205, IETF, September 1997.<br />
[RFC2474] K. Nichols, S. Blake, F. Baker, D. Black, "Definition of the<br />
Differentiated Services Field (DS Field) in the IPv4 and IPv6<br />
Headers", RFC 2474, IETF, December 1998.<br />
[RFC2475] S. Blake, D. Black, M. Carlson, E. Davies, Z. Wang, W. Weiss,<br />
"An Architecture for Differentiated Services", RFC 2475, IETF,<br />
December 1998.<br />
[SDW92] W.T. Strayer, B.J. Dempsey, A.C. Weaver, "XTP: The Xpress<br />
Transfer Protocol", Addison-Wesley, Reading, Mass 1992, ISBN<br />
0-201-56351-7, more recent documents still available at<br />
http://www.ca.sandia.gov/xtp/biblio.html<br />
[Ste00] Ralf Steinmetz, Multimedia-Technologie: Grundlagen,<br />
Komponenten und Systeme,3. überarb. Aufl., Springer-Verlag,<br />
2000.<br />
[T1.627] ATM: ANSI Standard T1.627, Broadband ISDN - ATM Layer<br />
Functionality and Specification.<br />
[Tan98] Andrew S. Tanenbaum, Computernetzwerke,Prentice-Hall, 1998.<br />
[The01] Steffen Theiß, Konzeption und Implementierung eines Multiformatfähigen<br />
Proxycaches für die KOM-VoD-Umgebung, Studienarbeit,<br />
Technische Universität Darmstadt, Juni 2001.<br />
[WGP99] Wang, C., Goebel, V., Plagemann, T.: Techniques to Increase Disk<br />
Access Locality in the Minorca Multimedia File System (short<br />
paper), to be published in Proceedings of the seventh ACM<br />
Multimedia Conference (ACM Multimedia'99), Orlando, Florida,<br />
USA, October 1999.<br />
[ZGS01] Michael Zink, Carsten Griwodz, Ralf Steinmetz. KOM Player - A<br />
Platform for Experimental VoD Research. In: Proceedings of the<br />
6th IEEE Symposium on Computers and Communications, July<br />
2001.<br />
[ZJGS00] Michael Zink, Alex Jonas, Carsten Griwodz, and Ralf Steinmetz.<br />
LC-RTP (Loss Collection RTP): Reliability for Video Caching in<br />
the Internet. In: Proc. of 7th Int'l Conf on Parallel and Distributed<br />
Systems (ICPADS): Workshops, pages 281-286. IEEE, Piscatay<br />
Way, NJ, USA, July 2000. ISBN 0-7695-0571-6.<br />
Seite 24 von 25
HTTP References Praxisbericht 4<br />
<strong>Olaf</strong> <strong>Beier</strong><br />
TIT 99 BGR<br />
HTTP References<br />
[h:Doc++] http://www.linuxsupportline.com/~doc++/<br />
[h:facpat] http://sern.ucalgary.ca/~kebrown/seng60904/wk4/factory.htm<br />
[h:gstrm] http://www.gstreamer.net<br />
[h:HGS] http://www.cs.columbia.edu/~hgs/rtp/<br />
[h:IBMchar] http://www-4.ibm.com/software/data/videocharger<br />
[h:IBMTea] http://www-4.ibm.com/software/ad/teamcon/<br />
[h:IETF] http://www.ietf.org/<br />
[h:kde] http://www.kde.org/<br />
[h:komssys] http://www.kom.e-technik.tu-darmstadt.de/kom-player/<br />
[h:komrsvp] http://www.kom.e-technik.tu-darmstadt.de/rsvp/<br />
[h:pmayo] http://www.projectmayo.com<br />
[h:trollqt] http://www.trolltech.com/<br />
[h:real] http://www.real.com/<br />
[h:RFC] http://www.ietf.org/rfc.html<br />
[h:rtsp] http://www.rtsp.org<br />
[h:sgixfs] http://oss.sgi.com/projects/xfs/1.0_source.html<br />
[h:strserv] http://www.streamingserver.com/<br />
Seite 25 von 25