Choosing an Error Correction Method for SRT Streams
Haivision Media Gateway and Haivision SRT Gateway offer various error correction options for SRT streams. See the following table and sections for a high-level comparison of the available options:
ARQ | FEC | FEC+ARQ | Path Redundancy using ARQ | ||
---|---|---|---|---|---|
Active-Active | Active-Backup | ||||
Overhead | Low | High | Higher | Highest | Lowest |
Recovery | Great | Low | Greater | Greatest | Great |
Latency | Low | Very low | Low | Low | Low |
Link Break Result | Losses | Losses | Losses | Stable | Mostly Stable |
Target Usecase | Low RTT | High RTT/few losses | Higher RTT/more losses | Link redundancy | Link redundancy |
Automatic Repeat Request (ARQ)
By default, SRT uses an automatic repeat request for lost packets. When a receiver determines that a packet is lost, it requests the transmitter to resend the packet. The buffering of data packets on the receiver makes it possible to recover from packet losses (and to deal with varying RTT times (network jitter) in the network) providing a near constant end-to-end latency of the transmission.
Forward Error Correction (FEC)
FEC allows the receiver to recover a lost packet without retransmission. Applications that can benefit from using SRT FEC include:
- Networks with very high RTT, in which retransmission would bear latency penalty higher than for FEC (e.g. satellite).
- In the networks with really high BDP, the end-to-end latency of the FEC without ARQ might be superior to ARQ-only.
FEC Matrix Size and Layout Considerations
When FEC is enabled for SRT streams, you may choose your desired matrix size and layout.
Increasing the size of the FEC matrix improves error correction while increasing the overhead and processing needed. You will need to fine tune the matrix size to determine the best compromise for your network and hardware.
Two FEC matrix layouts are available:
- Even (block-aligned): The packet sequence numbers at the start of each column increment by 1. The FEC column control packets are only transmitted with the last row, resulting in twice the normal bandwidth for that row.
- Staircase (non-block aligned): The packet sequence numbers at the start of each column increment by R+1, where R is the row size. The transmission of the FEC control packets is well spaced, thus avoiding spikes in the use of available bandwidth. Also, staircase arrangement increases the probability of recovering a long sequence of lost packets when consecutive lost packets in a row belong to different column groups. The disadvantage is slightly more memory and CPU usage for assembling/disassembling the staircase layout.
For more details about the FEC layout options, see https://github.com/Haivision/srt/blob/944287050f58a7901d485c21f75bf636742f3fdd/docs/features/packet-filtering-and-fec.md.
Path Redundancy
If you have multiple network links, SRT Path Redundancy provides a failover mechanism for your video stream. Two modes are available: active-active and active-backup. See Using Path Redundancy with SRT Streaming for more details.