Real-time Transport Protocol (リアルタイム トランスポート プロトコル、RTP )は、音声 や動画 などのデータストリームをリアルタイムに配送するためのデータ通信プロトコル である。
概要
RTSP やH.323 の通信プロトコル のデータ部分に使用される。
ほぼ全てのVoIP 関連製品は、RTPを利用して、音声情報をIPネットワーク 上へ送出している。
これは、リアルタイムストリームを運ぶためのプロトコルとしてIETF およびITU によって標準化されている。
RTPは典型的にはUDP 上で利用される[ 2] 。TCP と違ってUDPのヘッダーには「シーケンス(順序)番号」の項目が存在しないため順序の組み立てができない。しかし、RTPパケット を受信したホスト は、RTPパケット内のヘッダーにある情報のうち、時刻情報(タイムスタンプ)から各パケットの時間的な順序関係を把握し、データを再生することができる。(詳細は #順序制御 )。
RTPパケットも他のパケットと同様に、ネットワークを経由して転送されていく中で、喪失や、配送の遅れが起こる。しかし、映像や音声のデータ(ストリーミングメディアデータ)は、データの一部が多少欠けていても再生が可能であるため、データの受信側では、喪失や、配送の遅れたパケットは無視し、受信側が期待する時間に到着したパケットだけを利用してデータを再生することができる。
RTPは単独で利用されることはなく、RTCP (RTP Control Protocol ) のような制御プロトコルと組み合わせて利用される[ 3] 。RTPとRTCPはともにRFC 3550 にて標準化されている。
表. UDP, RTP/UDP, TCP 比較
UDP
RTP/UDP
TCP
アプリ間通信
✔
✔
✔
パケットトランザクション
✔
✔
✔
ストリーム通信
-
✔
✔
順序制御
到着順序保証
-
-[ 4]
✔
シーケンス順序復元
-
✔[ 5]
✔
到達保証
-
-[ 6]
✔
機能
RTPは以下の機能を提供する。
ストリーム送信
パケット通信プロトコルは独立したパケットを送信するため、パケット間の関係性を扱わない。RTP はストリーム機能を提供することで、音声や動画などデータストリームの送信を可能にする。
順序制御
ネットワークの輻輳や負荷分散、その他ネットワークの予測できない振る舞いにより、パケット は遅延し順序がばらばらに届きうる。パケット集合をストリームとしてデコードするにはパケットの順序を知る必要がある。RTPはストリームシーケンス番号機能を提供することで順序制御を可能にする[ 7] 。
パケットヘッダー
RTP packet header
Bit offset
0-1
2
3
4-7
8
9-15
16-31
0
バージョン
P
X
CC
M
PT
順序番号
32
タイムスタンプ
64
SSRC識別子
96
CSRC識別子 ...
96+32×CC
プロファイル固有の拡張ヘッダーID
拡張ヘッダー長
128+32×CC
拡張ヘッダー ...
RTPヘッダーは、12バイトが最小サイズである。
ヘッダーの後ろのオプションの拡張ヘッダーは存在してもよい。[ 8]
順序番号
順序番号 (英 : sequence number )はRTPパケットの送出順序番号である[ 9] 。初期値はランダムである[ 10] 。
SSRC識別子
SSRC識別子 (英 : SSRC identifier )はRTPストリームの識別子である。SSRC識別子の実体はRTPセッション内で一意な32bitのランダム値である[ 11] 。
仕様
下層プロトコル
RTPはトランスポートプロトコル上で利用される。
仕様上、下層プロトコルは特定プロトコルに縛られないが[ 12] 、ポート 機能を前提とする[ 13] 。
規格書
IETF において RTP に関する規格が策定されている。以下はその一部である:
出典・脚注
^ "Applications typically run RTP on top of UDP"RFC 3550 より引用。
^ 15群(○○○)-8編 - 03gun_04hen_05.pdf
^ "RTP itself ... does not prevent out-of-order delivery"RFC 3550 より引用。
^ "The sequence numbers included in RTP allow the receiver to reconstruct the sender's packet sequence"RFC 3550 より引用。
^ "Note that RTP itself ... does not guarantee delivery"RFC 3550 より引用。
^ "the real-time transport protocol ... provides end-to-end delivery services ... Those services include ... sequence numbering ... The sequence numbers included in RTP allow the receiver to reconstruct the sender's packet sequence ... All packets from a synchronization source form part of the same timing and sequence number space"RFC 3550 より引用。
^ Peterson 2007 , p. 430
^ "The sequence number increments by one for each RTP data packet sent"RFC 3550 より引用。
^ "The initial value of the sequence number SHOULD be random (unpredictable) to make known-plaintext attacks on encryption more difficult"RFC 3550 より引用。
^ "The SSRC identifier is a randomly chosen value meant to be globally unique within a particular RTP session"RFC 3550 より引用。
^ "RTP may be used with other suitable underlying network or transport protocols"RFC 3550 より引用。
^ "RTP depends upon the lower-layer protocol to provide some mechanism such as ports"RFC 3550 より引用。
関連項目
外部リンク
ウィキメディア・コモンズには、Real-time Transport Protocol に関するメディアがあります。
RFC 3550 - A Transport Protocol for Real-Time Applications
RFC 3551 - RTP Profile for Audio and Video Conferences with Minimal Control