2007年12月20日掲載
第19回 RTP/RTCP概要
■RTPとは
RTPは「Real-time Transport Protocol」の略で、リアルタイム性を要求されるアプリケーションで使用するデータをネットワーク経由で転送出来る様にする為IETF(※1)で策定されたプロトコルである。音声や映像データは、ネットワーク伝送中にデータが失われたとしても致命的では無いため、パケット伝送の信頼性よりリアルタイム性を重視しTCPではなくUDPが用いられる。
RTPの特徴は、送信側の時刻情報が含まれているという点で、受信側はこの時刻情報を参照しリアルタイム性を確保する。また、RTPで伝送するデータ自体には取り決めは無いため、動画、音声データ以外の、例えばリアルタイムシミュレータのデータを伝送する際にも利用される。
RTPのRFC(※2)管理番号は「1889」「3550」で、RTPは「RFC1889」「RFC3550」とも呼ばれる。
(※1) IETF
「Internet Engineering Task Force」の略で、インターネット上で利用される技術を策定、標準化する組織。
(※2) RFC
IETFが策定した技術仕様文章。「Request For Comment」の略で、当初は新しい技術を実現する為の
取り決め(プロトコル)を考えたのでコメントを寄せて下さいという意味であったが、
現在ではインターネット上の様々なサービスを提供する際に利用される標準規格となっている。
例えばメール関連では「SMTP」「POP3」「IMAP4」があり、Web(WWW)関連では「HTTP」「HTML」がRFCで標準化されている。
(HTMLについては、現在W3Cにより標準化されている)
IETFで策定されたRFCには管理番号が付けられる。代表的なRFCと内容(プロトコル名)を以下に示す。
RFC管理番号 | プロトコル名 |
---|---|
RFC 769 | UDP(User Datagram Protocol) |
RFC 793 | TCP(Transmission Control Protocol) |
RFC 821 | SMTP(Simple Mail Transfer Protocol) |
RFC 959 | FTP(File Transfer Protocol) |
RFC 1939 | POP3(Post Office Protocol - Version 3) |
RFC 2060 | IMAP4(Internet Message Access Protocol - Version 4rev1) |
RFC 2068 | HTTP 1.1(Hypertext Transfer Protocol) |
RFC 2080 | HTML 2.0(Hypertext Markup Language - 2.0) |
■RTCPとは
RTCPは、「RTP Control Protocol」の略で、RTPデータの受信状況を送信側に伝えたり、送信側の情報や、受信側のセッション情報をやりとりする為のプロトコルである。RTCPも、RTPと同じく「RFC1889」「RFC3550」で標準化されている。
■RTP/RTCPの目的と活用事例
RTPは、上述の通りネットワーク経由でなんらかのデータをリアルタイム性を確保しながら伝送する目的で利用される。RTP自体は、内包する伝送データの内容に依存する設計では無いが、主に映像や音声を伝送する為の
基本技術として利用されている。RTCPはRTPを使用する上でのネットワーク伝送特性を測定する目的で利用する。RTP/RTCPの具体的な活用事例として、IP電話(VoIP:Voice over Internet Protocol)、テレビ会議システム、IPTV、PC向けの映像配信(Windows Mediaストリーミング配信など)が挙げられる(伝送特性を知る必要が無い場合、RTCPを使用せずRTPのみで映像や音声を伝送する場合もある)。
■RTPの構造
RTPは時刻情報やパケット順序番号が格納された「RTPヘッダ」部分と、伝送する実データが含まれる
「ペイロード」部分で構成される。

![]() |
![]() |
RTPのバージョン識別子。RFC1889、RFC3550で規定されているバージョンは「2」。「0」と「1」は、RTPが規格化される前のドラフト版で使用されていた。 |
![]() |
![]() |
パディング設定フラグ。この部分が1となっていた時、RTPパケットの終端にパディングバイトが追加されている。パディングバイトはペイロードの一部分では無い。 |
![]() |
![]() |
拡張ヘッダ設定フラグ。この部分が1となっていた時、RTPヘッダの後に拡張ヘッダが続く。 (上図の"K"の部分) |
![]() |
![]() |
CSRC(Contributing Sources:上図で"J"に位置するデータ)の数。 |
![]() |
![]() |
マーカービット。RTPストリーム中で特殊なパケットである事を示すために使用される。このビットの意味は、RTPが内包するペイロードの種類によって変化する。 |
![]() |
![]() |
RTPパケットが内包するペイロードの識別子。下表「ペイロードの種類」を参照。下表で定義されている以外に、動的に識別子を割り当てる手法が使われる。 |
![]() |
![]() |
RTPパケットのシーケンス番号。RTPパケット毎に1ずつ増加していく。受信側はこの値を参照する事で、パケット欠落やパケット順序の入れ替わりを検出出来る。 |
![]() |
![]() |
タイムスタンプ。1秒に対応する周波数はペイロードの種類により変化する。 |
![]() |
![]() |
SSRC(Synchronization Source:RTPパケットのストリームの送信側識別子)。同じRTPセッションでこの識別子が衝突してはならない。 |
![]() |
![]() |
CSRC(Contributing Sources:RTPパケットのストリームの結合識別子)。 |
![]() |
![]() |
RTP拡張ヘッダ。RTPを使用するアプリケーションが、RTPヘッダに付加情報を追加したい時に使用する。拡張ヘッダは、ヘッダ拡張用の識別子と、拡張ヘッダのサイズ、拡張ヘッダの内容が含まれる。 |
・ペイロードの種類
ペイロードの種類 | コーデック | Video/Audio | タイムスタンプの周波数 |
---|---|---|---|
0 |
ITU-T G.711 A-law |
Audio |
8000 |
1 |
U.S. Standard 1016 |
Audio |
8000 |
2 |
ITU-T G.721 |
Audio |
8000 |
3 |
GSM06.10 |
Audio |
8000 |
4 |
(未割り当て) |
Audio |
8000 |
5 |
DVI ADPCM |
Audio |
8000 |
6 |
DVI ADPCM |
Audio |
16000 |
7 |
Xerox linear predictive encoding |
Audio |
8000 |
8 |
ITU-T G.711 mu-law |
Audio |
8000 |
9 |
ITU-T G.722 |
Audio |
8000 |
10 |
8-bit Liner Audio |
Audio |
44100 |
11 |
16-bit Liner Audio |
Audio |
44100 |
12 |
(未割り当て) |
Audio |
|
13 |
(未割り当て) |
Audio |
|
14 |
MPEG-1/-2 Audio |
Audio |
90000 |
15 |
ITU-T G.728 |
Audio |
8000 |
16〜23 |
(未割り当て) |
Audio |
|
24 |
(未割り当て) |
Video |
|
25 |
Sun Microsystems CELL-B encoding |
Video |
90000 |
26 |
JPEG |
Video |
90000 |
27 |
(未割り当て) |
Video |
|
28 |
Xerox NetVideo |
Video |
|
29 |
(未割り当て) |
Video |
|
30 |
(未割り当て) |
Video |
|
31 |
H.261 |
Video |
90000 |
32 |
MPEG-1/-2 Video |
Video |
90000 |
33 |
MPEG-2 TS |
Audio/Video |
90000 |
34〜71 |
(未割り当て) |
||
72〜76 |
(予約) |
||
77〜95 |
(未割り当て) |
||
96 |
(動的割り当て用) |
<< | 1 | 2 | 3 | 4 |
---|
(コラム記事/ (株)アイ・ビー・イー 開発部)

