Reliable Internet Stream Transport (RIST) is an error correcting protocol published by the RIST forum It is designed for the rapid and faithful transmission of media streams over lossy networks such as the Internet.
RIST ensures that a media stream will traverse the Internet with accuracy and efficiency by detecting and correcting any transmission errors at the receiving end, through its re-request mechanism. The RIST sender listens for the incoming media on one IP/Port. It forwards each media packet to the receiver out through another port. The sender also creates a “message†that includes the number of packets sent so far, and other data. The receiver examines the media packets and "messages," and can therefore determine whether it received all the packets, and whether they're in the right order. The receiver sends a message to the sender requesting retransmission of any packets it didn't receive. The server resends the lost packets. The receiver holds the stream in a buffer to allow time for these resends, and with the media complete, it places allin the right order and releases the stream out another port, to a viewer or other application.
SipRadius is the original creator of the libRIST open source library, which is licensed under the --- license, and it also prepared this document, though we expect that others will contribute as time passes and RIST gains acceptance.
At the current time, the RIST protocol consists of two profiles. The "Simple" Profile is the most basic and works in the way described above. The "Main" Profile adds the ability to create a tunnel, which in turn allows for encryption and other features, and which only requires the one port. Proprietary "Advanced" Profiles also exist which may add additional features such as path redundancy.
A Few Suggestions for Your Initial Testing
- Test using the Simple Profile first.
- Test inside your private network first.
- After that, you will find that testing with a publicly accessible external address is easier. If one sine has an external address and the other a private address, it will be easier for your testing to put the external address in "listening" mode.
- The Simple Profile requires an even numbered UDP port for the media transmission, and the next higher numbered port for messaging. Check the firewall first when one side or the other cannot communicate.
- Two utilities, ristsender and ristreceiver, are part of the libRIST project. You will probably find it easier to use them in your initial testing. Once you establish that RIST suits your error correction needs, you'll find documenation here for writing your own calls to the libRIST.
- If you're accustomed to other proprietary error correction protocols you may find that RIST uses slightly less resources by default. You should find RIST to be quite efficient. If you wish to "bulk it up" to the same level as your proprietary protocol, the options are there.
- You will find in general that the buffer size and the maximum bitrate parameters provide the most control over "tuning" your error corrected media link. In general, allow four to seven times the average round trip time between the two points for the buffer. When dealing with large large delays such as trans-oceanic segments, allow time for "tuning." For variable bitrate streams with large variations in bitrates, be generous with the maximum bitrate.
- Be sure to use the logs to the fullest.