4. 再送ペイロード形式 (Retransmission Payload Format)
再送パケットの形式を以下に示す.
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| RTP Header |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| OSN | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| Original RTP Packet Payload |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
RTP ヘッダの用法は次のとおりである.
セッション多重化の場合, オリジナルストリームと再送ストリームには同一の SSRC 値を MUST で用いなければならない. オリジナルセッションまたは再送セッションのいずれかで SSRC 衝突が生じた場合, RTP 仕様では衝突が起きたセッションで RTCP BYE パケットを MUST で送ることが求められる. 加えて, 関連するストリームについても各自のセッションで RTCP BYE パケットを MUST で送らなければならない. 新しい SSRC 識別子を取得した後, 両ストリームの SSRC を MUST でこの値に設定しなければならない.
SSRC 多重化の場合, RTP の要求に従い, オリジナルストリームと再送ストリームには 2 つの異なる SSRC 値を MUST で用いなければならない. オリジナルストリームまたは再送ストリームのいずれかで SSRC 衝突が検出された場合, RTP 仕様では当該ストリームに対して RTCP BYE パケットを MUST で送ることが求められる. 関連ストリームに対して RTCP BYE パケットを MUST NOT で送ってはならない. したがって, SSRC 衝突を経験したストリームのみが新しい SSRC 値を選ばなければならない. 受信者におけるオリジナルストリームと再送ストリームの SSRC 関連付けへの影響は 5.3 節を参照.
いずれの多重化方式でも, シーケンス番号は標準的な定義を持つ, すなわち再送ストリームで送られた直前のパケットのシーケンス番号より 1 大きくなければならない (MUST).
再送パケットのタイムスタンプは MUST でオリジナルのタイムスタンプ, すなわちオリジナルパケットのタイムスタンプに設定しなければならない. その結果, 再送ストリームの最初のパケットの初期 RTP タイムスタンプはランダムではなく, 再送される最初のパケットのオリジナルタイムスタンプと等しい. セキュリティ上の含意については本ドキュメントのセキュリティに関する考慮を参照.
実装者は, 再送ストリームの RTCP ジッタ値が実際のネットワークジッタを反映しない可能性があることに注意しなければならない. パケットが再送された時刻とそのオリジナルタイムスタンプの間に相関が小さい場合があるためである.
ペイロード型は動的である. オリジナルストリームに再送を用いる複数のペイロード型が存在する場合, それぞれについて動的ペイロード型を再送ペイロード形式に MUST でマッピングしなければならない. セッション記述プロトコル (SDP) でオリジナルと再送のペイロード型のマッピングを行う方法の仕様は 8.1 節を参照.
再送パケットのタイムスタンプがオリジナルのメディアタイムスタンプを運ぶため, 再送ペイロード型が用いるタイムスタンプクロックレートは MUST で関連するオリジナルペイロード型が用いるものと同一でなければならない. したがって, RTP ストリームが異なるクロックレートのペイロード型を運ぶ場合, 関連する再送ストリームも同様となる. RTP ストリームが通常, 異なるクロックレートのペイロード型を運ぶことはないことに注意.
RTP 再送パケットのペイロードは, 再送ペイロードヘッダに続けてオリジナル RTP パケットのペイロードで構成される. 再送ペイロードヘッダの長さは 2 オクテットである. このペイロードヘッダは OSN (original sequence number, オリジナルシーケンス番号) の 1 フィールドのみを含み, MUST で関連するオリジナル RTP パケットのシーケンス番号に設定しなければならない. オリジナル RTP パケットのペイロードは, オリジナルペイロード型固有の可能性のあるペイロードヘッダを含め, MUST で再送ペイロードヘッダの直後に置かなければならない.
複数レートでの符号化を支援するペイロード形式では, 送信者は MAY でオリジナル RTP パケットと同一のペイロードではなく, 同一データをより低いレートで符号化したものを再送してよい. これは再送ストリームの帯域使用を抑えることを目的とする. その際, 送信者は MUST で, 受信者が, 失われたオリジナルパケットのペイロードに基づいて符号化されていた可能性のある, すでに送られたオリジナルパケットのペイロードを依然として復号できることを保証しなければならない. 加えて, 送信者がより低いレートで再送することを選んだ場合, オリジナル RTP パケットのペイロードヘッダ内の値は再送パケットには当てはまらなくなりうるため, レート変更を反映するために再送パケット内で修正が必要になりうる. 送信者は SHOULD で, より低いレートでの再送による帯域使用の減少と, それに伴う品質の低下とのトレードオフを考慮すべきである.
オリジナル RTP ヘッダにプロファイル固有の拡張があった場合, 再送パケットは SHOULD で, このプロファイル下で動作するアプリケーションが期待するとおり固定 RTP ヘッダの直後に同一の拡張を含めるべきである. この場合, 再送ペイロードヘッダは MUST でプロファイル固有の拡張の後に置かなければならない.
オリジナル RTP ヘッダに RTP ヘッダ拡張があった場合, 再送パケットは SHOULD で同一のヘッダ拡張を運ぶべきである. このヘッダ拡張は MUST で RTP [3] で指定されるとおり固定 RTP ヘッダの直後に置かなければならない. この場合, 再送ペイロードヘッダは MUST でヘッダ拡張の後に置かなければならない.
オリジナル RTP パケットに RTP パディングが含まれていた場合, 再送パケットを構成する前にそのパディングを MUST で除去しなければならない. 再送パケットにパディングが必要な場合, 任意の RTP パケットと同様にパディングを MUST で行い, パディングビットを MUST で設定しなければならない.
マーカビット (M), CSRC 数 (CC), およびオリジナル RTP ヘッダの CSRC リストは MUST で再送パケットの RTP ヘッダにそのままコピーしなければならない.