vol23. RTPとは

いまさらだけど、RTPってどういう仕組みで低遅延を実現しているの?とふと疑問におもったので、調べてみた。 結論からいうと、低遅延という観点では、結局下位のレイヤーにUDPを使っているだけ。 Ethernet AVBのような、帯域幅の予約やVLANをつかったパケット優先は使用していない。 RTCP経由でRTTやパケットロス率の情報を受け取り、それを元にメディアの品質を調整したりする規格だ。 以下、まとめ。

  • 概要

  • RTPの役割

    • 動画配信といったマルチメディア通信では、低遅延が求められる
    • 低遅延を実現するために、再送処理のないUDPが使用される
    • UDPは以下の機能しかない
      • UDP
        • ポート番号による通信の識別
        • CRCチェック
    • マルチメディア通信に必要な次の機能はRTPが担う
      • パケット化
      • パケット転送時の遅延、ゆらぎへの対策
      • パケット廃棄への対策
      • ビデオ、オーディオ間同期
  • 流れ

    • クライアントは、実行帯域幅や遅延時間をRTCPによってサーバーに送出
    • サーバーはRTCPによって報告された情報に応じて、RTPで送信するデータの品質
      を調整する。
  • RTPで送る情報
    http://www.geekpage.jp/technology/rtp/rtp.php

    • ペイロード
    • 送受信間及びデータ内での同期クロック情報
      • タイムスタンプ
      • SSRC (Synchronization Source)
        • 送信者識別子
      • CSRC (Contributing Source)リスト
        • ペイロードが複数のメディアストリームの合成である場合、
          書くメディアストリームのSSRCのリストがCSRCリストとして格納される
    • 順序番号
    • データタイプ
  • RTCPの役割

    • 最小限の送達確認や監視をおこなうための制御プロトコル
      • パケットロス
      • RTT(Round Trip Time) 情報をRTCPで取得する
    • 各メディアストリームの通信品質制御
    • 複数メディアストリームの同期制御
    • セッションのメンバシップ管理

    • 5種類のパケット

      • 受信レポート
        • ストリーム受信者が発行する
        • 欠落率、累積欠落パケット数、パケット間隔ジッタ等、最新送信レポートのタ
          イムスタンプと経過時間(送信者は、この情報よりRTTを計算できる。)
      • 送信レポート
        • 送信者の情報
          • 受信者がメディアストリームのレートなどを推測することができる
          • オーディオ、ビデオの同期する際に利用
            • タイムスタンプ、パケットカウント
      • ソース記述
        • 参加者の識別に利用
          • 名前、場所、メールアドレス、電話番号
      • メンバシップ管理
        • 参加者の離脱の伝達等
      • アプリケーション定義
        • アプリケーションでの拡張用
  • その他

    • RTP(偶数のポート番号), RTCP(RTPのポート番号+1)という制約が以前はあった。
    • プライオリティの仕組みはないので、帯域が足りないと遅延する
    • RTSP
      • ビデオやオーディオの再生、停止、早送り、巻き戻し機能を提供するプロトコル
      • TCPの上位
      • SDPの下位
        • Session Description Protocol
  • 参考
    https://vcbook.vtv.co.jp/pages/viewpage.action?pageId=721018
    http://www.ieice-hbkb.org/files/03/03gun_04hen_05.pdf