Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

RTCP(アールティーシーピー)とは | 意味や読み方など丁寧でわかりやすい用語解説

RTCP(アールティーシーピー)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

リアルタイム転送制御プロトコル (リアルタイムテンソウセイギョプロトコル)

英語表記

RTCP (アールティーシーピー)

用語解説

RTCP(Real-time Transport Control Protocol)とは、インターネット上でリアルタイム性の高いマルチメディアデータ(音声、映像など)を効率的に伝送するプロトコルであるRTP (Real-time Transport Protocol) を補完し、その通信品質の監視、参加者間の同期、およびセッション管理を行うための制御プロトコルである。RTPが実際のデータを運ぶ「データプレーン」であるのに対し、RTCPは通信の状態を報告し、品質を制御する「コントロールプレーン」の役割を担う。RTP単独では実現できない、リアルタイム通信システムの安定性と信頼性を高める上で不可欠な存在だ。

RTCPは、RTPセッションに参加しているすべてのメンバー(送信者と受信者)が定期的に制御情報を交換し合うことで機能する。この情報交換を通じて、各参加者は他の参加者の通信品質や状態を把握し、自身の送信・受信動作を適切に調整することが可能になる。

RTCPの主な機能は以下の通りだ。 第一に、通信品質の監視とフィードバックがある。RTCPは、パケットの送信元と受信元がそれぞれ通信品質に関する統計情報(送受信されたパケット数、損失したパケット数、ジッタ、往復時間など)を収集し、その情報を定期的に他の参加者に報告する。これにより、送信側はネットワークの状態を把握し、例えばパケット損失が多い場合には送信レートを落としたり、映像の圧縮率を上げたりといった調整を行うことで、通信品質の改善を図ることができる。受信側も、受け取ったレポートから他の参加者の状態を把握できる。 第二に、異なるメディアストリーム間の同期機能がある。ビデオ会議のように音声と映像を同時に扱うシステムでは、両者の再生タイミングがずれると非常に不自然になる。RTCPは、Network Time Protocol (NTP) に基づく絶対時刻と、RTPタイムスタンプに基づく相対時刻を関連付ける情報(Sender Reportに含まれる)を交換することで、受信側が音声と映像などの複数のメディアストリームを正確に同期して再生できるようにする。 第三に、セッション参加者情報の提供がある。RTCPは、セッションに参加している各ユーザーの識別情報(Canonical Name (CNAME) やメールアドレス、電話番号など)を交換するためのメカニズムを提供する。これにより、他の参加者は誰がセッションに接続しているか、どのストリームが誰のものかを認識できるようになる。また、参加者がセッションから離脱する際には、その旨を他の参加者に通知することも可能だ。 第四に、フロー制御や混雑制御への寄与がある。RTCPレポートに含まれる品質情報は、ネットワークの混雑状況を間接的に示唆する。この情報を利用して、アプリケーションやネットワーク機器は送信レートを動的に調整し、ネットワークへの過負荷を防ぎ、安定したデータ転送を維持するのに役立てる。

RTCPのパケットにはいくつかの種類があり、それぞれ異なる情報を伝達する。 最も一般的なのが「Sender Report (SR)」と「Receiver Report (RR)」である。 SRは、現在RTPパケットを送信している参加者(送信者)が定期的に送信する。このレポートには、NTPタイムスタンプとRTPタイムスタンプの対応情報(メディア同期のため)、送信したパケット数とバイト数、およびその送信者が受信したRTPパケットに関する統計情報(パケット損失率、ジッタ、往復時間など)が含まれる。 RRは、RTPパケットを受信しているが、自身はRTPパケットを送信していない参加者、またはRTPパケットを送信している送信者が送信するSRには含めきれない追加の受信品質情報を提供する場合に送られる。主に受信したパケットの統計情報(送信元ごとの損失率、ジッタなど)が含まれる。 「Source Description (SDES)」は、参加者のCNAME(ユニークな識別子)、ユーザー名、電子メールアドレスといったテキストベースの情報を伝えるために使われる。 「Goodbye (BYE)」は、参加者がセッションから正常に離脱する際に、他のすべての参加者に対してその旨を通知するために送信される。 「Application-defined (APP)」は、特定のアプリケーションが独自に定義した制御情報を伝送するための拡張可能なパケットタイプである。

RTCPは、RTPと同じUDPポート番号の次の偶数ポートを使用することが一般的である(例えば、RTPがポート5004を使う場合、RTCPはポート5005を使う)。これは厳密な要件ではないが、多くの実装で採用されている慣例だ。RTCPパケットの送信間隔は固定ではなく、セッションの参加者数や割り当てられた帯域幅に応じて動的に調整される。これは、RTCPパケット自体がネットワーク帯域を過度に消費しないようにするためであり、一般的にセッション全体の帯域幅の約5%程度がRTCPトラフィックに割り当てられる。これにより、RTCPは最小限のオーバーヘッドで重要な制御情報を交換し続けることができる。

このように、RTCPはRTPによるリアルタイムデータ伝送を影で支え、通信の品質保証、複数ストリーム間の連携、セッション参加者の管理といった多様な機能を提供することで、信頼性の高いリアルタイム通信システムを実現するために不可欠なプロトコルとなっている。RTPが単なるデータ転送の「パイプ」であるとすれば、RTCPはそのパイプの状態を監視し、最適な流れを維持するための「制御システム」と言えるだろう。

関連コンテンツ