Real-time Transport Protocol

出典: フリー百科事典『ウィキペディア(Wikipedia)』

Real-time Transport Protocol(リアルタイム トランスポート プロトコル、RTP)は、音声動画などのデータストリームをリアルタイムに配送するためのデータ通信プロトコルである。

概要[編集]

RTSPH.323通信プロトコルのデータ部分に使用される。 ほぼ全てのVoIP関連製品は、RTPを利用して、音声情報をIPネットワーク上へ送出している。 これは、リアルタイムストリームを運ぶためのプロトコルとしてIETFおよびITUによって標準化されている。

RTPは典型的にはUDP上で利用される[1]TCPと違ってUDPのヘッダーには「シーケンス(順序)番号」の項目が存在しないため順序の組み立てができない。しかし、RTPパケットを受信したホストは、RTPパケット内のヘッダーにある情報のうち、時刻情報(タイムスタンプ)から各パケットの時間的な順序関係を把握し、データを再生することができる。(詳細は #順序制御)。

RTPパケットも他のパケットと同様に、ネットワークを経由して転送されていく中で、喪失や、配送の遅れが起こる。しかし、映像や音声のデータ(ストリーミングメディアデータ)は、データの一部が多少欠けていても再生が可能であるため、データの受信側では、喪失や、配送の遅れたパケットは無視し、受信側が期待する時間に到着したパケットだけを利用してデータを再生することができる。

RTPは単独で利用されることはなく、RTCP (RTP Control Protocol) のような制御プロトコルと組み合わせて利用される[2]。RTPとRTCPはともにRFC 3550にて標準化されている。

表. UDP, RTP/UDP, TCP 比較
UDP RTP/UDP TCP
アプリ間通信
パケットトランザクション
ストリーム通信 -
順序制御
到着順序保証 - -[3]
シーケンス順序復元 - [4]
到達保証 - -[5]

機能[編集]

RTPは以下の機能を提供する。

ストリーム送信[編集]

パケット通信プロトコルは独立したパケットを送信するため、パケット間の関係性を扱わない。RTP はストリーム機能を提供することで、音声や動画などデータストリームの送信を可能にする。

順序制御[編集]

ネットワークの輻輳や負荷分散、その他ネットワークの予測できない振る舞いにより、パケットは遅延し順序がばらばらに届きうる。パケット集合をストリームとしてデコードするにはパケットの順序を知る必要がある。RTPはストリームシーケンス番号機能を提供することで順序制御を可能にする[6]

パケットヘッダー[編集]

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バイトが最小サイズである。 ヘッダーの後ろのオプションの拡張ヘッダーは存在してもよい。[7]

順序番号[編集]

順序番号: sequence number)はRTPパケットの送出順序番号である[8]。初期値はランダムである[9]

SSRC識別子[編集]

SSRC識別子: SSRC identifier)はRTPストリームの識別子である。SSRC識別子の実体はRTPセッション内で一意な32bitのランダム値である[10]

仕様[編集]

下層プロトコル[編集]

RTPはトランスポートプロトコル上で利用される。

仕様上、下層プロトコルは特定プロトコルに縛られないが[11]ポート機能を前提とする[12]

規格書[編集]

IETF において RTP に関する規格が策定されている。以下はその一部である:

表. RTP 規格
規格書名 規格種別 発行日
RTP: A Transport Protocol for Real-Time Applications RFC Internet Standard 2003-07
A Taxonomy of Semantics and Mechanisms for Real-Time Transport Protocol (RTP) Sources RFC Informational 2015-11

出典・脚注[編集]

  1. ^ "Applications typically run RTP on top of UDP" RFC 3550 より引用。
  2. ^ 15群(○○○)-8編 - 03gun_04hen_05.pdf
  3. ^ "RTP itself ... does not prevent out-of-order delivery" RFC 3550 より引用。
  4. ^ "The sequence numbers included in RTP allow the receiver to reconstruct the sender's packet sequence" RFC 3550 より引用。
  5. ^ "Note that RTP itself ... does not guarantee delivery" RFC 3550 より引用。
  6. ^ "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 より引用。
  7. ^ Peterson 2007, p. 430
  8. ^ "The sequence number increments by one for each RTP data packet sent" RFC 3550 より引用。
  9. ^ "The initial value of the sequence number SHOULD be random (unpredictable) to make known-plaintext attacks on encryption more difficult" RFC 3550 より引用。
  10. ^ "The SSRC identifier is a randomly chosen value meant to be globally unique within a particular RTP session" RFC 3550 より引用。
  11. ^ "RTP may be used with other suitable underlying network or transport protocols" RFC 3550 より引用。
  12. ^ "RTP depends upon the lower-layer protocol to provide some mechanism such as ports" RFC 3550 より引用。

関連項目[編集]

外部リンク[編集]

  • RFC 3550 - A Transport Protocol for Real-Time Applications
  • RFC 3551 - RTP Profile for Audio and Video Conferences with Minimal Control