RTP Payload Format for Reed Solomon FEC of Multiple Flows IETF 75 – July 2009 draft-galanos-fecframe-rtp-reedsolomon-mf-00 Sarit Galanos, RADVISION sarit@radvision.com Einat Yellin, RADVISION einat@radvision.com
Background Searched for a method of protecting RTP packets in multiple flows against random, bursty losses which enables: Backward compatibility Low recovery delay Dynamic on/off switching This draft Describes FEC scheme based on Reed Solomon code and FEC framework Specifies RTP payload format for such FEC packets
Relation to other drafts
Relevant existing work Document FEC code Transport #protected flows Comments RFC 5109 XOR RTP Single draft-ietf-fecframe-1d2d-parity-scheme-01 High delay/FEC overhead draft-ietf-avt-reedsolomon-00 RS Expired 1999 draft-roca-fecframe-rs-00 UDP Multiple draft-galanos-fecframe-rtp-reedsolomon-mf-00 Low delay
Basic approach
RTP header for repair packets 0 1 2 3 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |V=2|P|X| CC |M| PT | sequence number | | timestamp | | synchronization source (SSRC) identifier | +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ | contributing source (CSRC) identifiers | | .... | Marker bit (M) – not used Payload Type (PT) – dynamically determined in SDP Sequence Number initiated randomly [rfc3550] One higher than number in the previously transmitted repair packet Timestamp – corresponds to repair packet transmit time Synchronization source (SSRC) – randomly assigned [rfc3550]
FEC header for repair packets 0 1 2 3 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |FEC Header Len | N-K | i | Num flows | | FID | Num Packets | SN Base | General fields FEC Header Len – length (in octets) of this FEC header N-K – the number of FEC packets used to protect this block i – index of this FEC packet among all protecting packets in this block Num flows – number of flows protected in this FEC block Per-flow fields FID – flow ID. Determined by SDP. Num Packets –number of packets from this flow that are used in this block SN base –sequence number of the first packet from this flow that is used in this block
IANA Registration Required parameters Register subtype name reed-solomon-mf-fec for audio/video/text/application Required parameters Max_N – upper limit for N, which is the total number of source and repair packets in a block Repair window (us) – time span of the source and repair packets
SDP example v=0 o=sarit 1122334455 1122334466 IN IP4 fec.example.com s= Reed Solomon FEC for multiple flows Example t=0 0 a=group:FEC S1 S2 R1 m=video 30000 RTP/AVP 100 c=IN IP4 224.1.1.1/127 a=rtpmap:100 MP2T/90000 a=fec-source-flow: id=0 a=mid:S1 m=video 30000 RTP/AVP 101 c=IN IP4 224.1.1.2/127 a=rtpmap:101 MP2T/90000 a=fec-source-flow: id=1 a=mid:S2 m=application 30000 RTP/AVP 110 c=IN IP4 224.1.2.1/127 a=rtpmap:110 reed-solomon-mf-fec /90000 a=fmtp:110 max_N:5; repair-window: 200000 a=mid:R1
Use cases Video conferencing Scalable Video Coding 3D video delivery Unequal Error Protection (among packets) 3D video delivery UEP between 2D and depth Multi Session for 2 video sequences
Open issues Fast switching between RS and simple XOR
Next steps Comments are welcome! Add more examples for the different use cases Recommend to make this draft a WG item