RTP packet streaming

From Hackerspace ACKspace
Revision as of 18:38, 27 December 2012 by Danny Witberg (talk | contribs) (Data encapsulation)
Jump to: navigation, search
Project: RTP packet streaming
Featured:
State Active
Members Danny Witberg
GitHub No GitHub project defined. Add your project here.
Description Project to send and receive RTP packets
Picture
No project picture! Fill in form Picture or Upload a jpeg here


What are RTP packets?

RTP or Real-time Transport Protocol are a form of UDP-IP packets to send data over an ethernet connection. RTP packets are sent when a constant stream of data is needed. In this example it will be sent to a multicast address to propagate across the connected network. Diffrent data transfer speeds can be achieved, varying from a midi signal all the way to a videostream with encapsulated audio. The ultimate goal of this project is to send multiple streams of audio to an FPGA-based board for processing. An intermediate step may be needed: sending a single stream of audio data to a microcontroller based PCB.

Data encapsulation

To send RTP data, we first have to form an ethernet packet. This is needed because the data needs to be transported over ethernet switches and/or routers. The payload of the ethernet packet consists of an IP packet, commonly used for sending data over the internet. The payload of the IP frame is an UDP packet. An UDP packet is suitable for sending real time data because of the lack of ARQ mechanism to correct faulty received data. UDP is also needed because we need to send multicast data. finally, the data portion of the UDP packet is the RTP packet. A graphical representation of this construction of encapsulated data looks like this:

RTP packet.gif

All of these headers contain data like the source address, destination, length of the frame, priorities, checksums etc. This overhead data for an RTP packet is 40 bytes:

File:FTP header.gif