vol40. RTP関連のRFCたち
RTPにまつわるRFCの内容を整理してみた。
RTP(Real-time Transport Protocol)。音声や動画などのデータストリームをリアルタイ ムに配信するための、通信プロトコル。でも、どういう仕組みで、リアルタイムを実現し ているのか?
RTPはアプリケーション層のプロトコル。 トランスポート層に通信オーバヘッドの軽く、再送要求のない、UDPを用いるだけでは不 十分なのか?
そんなことをふと疑問に思ったので、調べてみた。
一言でまとめると、UDPはsequence number がないので、順序の組み立てができない。 よって、RTPの「sequence number」を用いて、正しい順番にパケットを並び戻すことができる。 また「timestamp」を用いることで、意図的に遅延したフレームは破棄をすることで、 リアルタイム性を確保できる。
調べてみると、RTP基礎部分のRFCだけでもいくつかあるので、いかにまとめておく。
RTP: A Transport Protocol for Real-Time Applications
- RFC number
- RFC3550
- RFC1889(obsolete)
- 内容
- RTP header の定義
- 送信側のパケット送出タイミングを受信側でも復元できるようにする
- 符号データのパケット化
- 送信者のシーケンス番号とタイムスタンプ情報を送信
- 受信側は、これを参照にリアルタイム性を確保
- 送信側のパケット送出タイミングを受信側でも復元できるようにする
- RTP header
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 | | .... | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- RTP header の定義
RTP Profile for Audio and Video Conferences with Minimal Control
- RFC number
- RFC3551
- RFC1890(obsolete)
- 内容
- 符号データごとの具体的なフレーミング方法,すなわちRTPパケットのフォーマット
オーティオやビデオデータの圧縮方法ごとにペイロードフォーマットがある それらを定義
定義されている payload type (audio)
PT encoding media type clock rate channels name (Hz) ___________________________________________________ 0 PCMU A 8,000 1 1 reserved A 2 reserved A 3 GSM A 8,000 1 4 G723 A 8,000 1 5 DVI4 A 8,000 1 6 DVI4 A 16,000 1 7 LPC A 8,000 1 8 PCMA A 8,000 1 9 G722 A 8,000 1 10 L16 A 44,100 2 11 L16 A 44,100 1 12 QCELP A 8,000 1 13 CN A 8,000 1 14 MPA A 90,000 (see text) 15 G728 A 8,000 1 16 DVI4 A 11,025 1 17 DVI4 A 22,050 1 18 G729 A 8,000 1 19 reserved A 20 unassigned A 21 unassigned A 22 unassigned A 23 unassigned A dyn G726-40 A 8,000 1 dyn G726-32 A 8,000 1 dyn G726-24 A 8,000 1 dyn G726-16 A 8,000 1 dyn G729D A 8,000 1 dyn G729E A 8,000 1 dyn GSM-EFR A 8,000 1 dyn L8 A var. var. dyn RED A (see text) dyn VDVI A var. 1 Table 4: Payload types (PT) for audio encodings
定義されている payload type (video)
PT encoding media type clock rate name (Hz) _____________________________________________ 24 unassigned V 25 CelB V 90,000 26 JPEG V 90,000 27 unassigned V 28 nv V 90,000 29 unassigned V 30 unassigned V 31 H261 V 90,000 32 MPV V 90,000 33 MP2T AV 90,000 34 H263 V 90,000 35-71 unassigned ? 72-76 reserved N/A N/A 77-95 unassigned ? 96-127 dynamic ? dyn H263-1998 V 90,000 Table 5: Payload types (PT) for video and combined encodings
RTP Payload Format for H.264 Video
- RFC number RFC6184 RFC3984(obsolete)
- 内容
- h264 をRTPにのせる為のpayload format を定義
3種類のpayload structure を用意
- Single NAL Unit Packet
- 一つのNAL unitを一つのRTP message で送信する
- Aggregation Packet
- 複数のNAL unitを一つのRTP message で送信する
- Fragmentation Unit
- 一つのNAL unitを複数のRTP message に分割して送信する
Table 1. Summary of NAL unit types and the corresponding packet types NAL Unit Packet Packet Type Name Section Type Type ------------------------------------------------------------- 0 reserved - 1-23 NAL unit Single NAL unit packet 5.6 24 STAP-A Single-time aggregation packet 5.7.1 25 STAP-B Single-time aggregation packet 5.7.1 26 MTAP16 Multi-time aggregation packet 5.7.2 27 MTAP24 Multi-time aggregation packet 5.7.2 28 FU-A Fragmentation unit 5.8 29 FU-B Fragmentation unit 5.8 30-31 reserved -
- 一つのNAL unitを複数のRTP message に分割して送信する
- Single NAL Unit Packet
Ethernet AVB IEEE1722 で定義されているstream format の一つであるCVFを用 いて、h264 を送信する際も、このプロトコルを利用する
Value Name Description 0 MJPEG MJPEG Format (RFC 2435) 1 H264 H.264 Format (RFC 6184) 2 JPEG2000 JPEG 2000 Video (RFC 5371) IEEE1722-2016 Table 20 format_subtype field for RFC Format より