vol40. RTP関連のRFCたち

RTPにまつわるRFCの内容を整理してみた。

RTP(Real-time Transport Protocol)。音声や動画などのデータストリームをリアルタイ ムに配信するための、通信プロトコル。でも、どういう仕組みで、リアルタイムを実現し ているのか?

RTPはアプリケーション層のプロトコルトランスポート層に通信オーバヘッドの軽く、再送要求のない、UDPを用いるだけでは不 十分なのか?

そんなことをふと疑問に思ったので、調べてみた。

一言でまとめると、UDPはsequence number がないので、順序の組み立てができない。 よって、RTPの「sequence number」を用いて、正しい順番にパケットを並び戻すことができる。 また「timestamp」を用いることで、意図的に遅延したフレームは破棄をすることで、 リアルタイム性を確保できる。

調べてみると、RTP基礎部分のRFCだけでもいくつかあるので、いかにまとめておく。

RTP: A Transport Protocol for Real-Time Applications

  • RFC number
    • RFC3550
    • RFC1889(obsolete)
  • 内容
    • RTP header の定義
      • 送信側のパケット送出タイミングを受信側でも復元できるようにする
        • 符号データのパケット化
        • 送信者のシーケンス番号とタイムスタンプ情報を送信
          • 受信側は、これを参照にリアルタイム性を確保
    • RTP header
            0                   1                   2                   3
            0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
         +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
         |V=2|P|X|  CC   |M|     PT      |       sequence number         |
         +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
         |                           timestamp                           |
         +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
         |           synchronization source (SSRC) identifier            |
         +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
         |            contributing source (CSRC) identifiers             |
         |                             ....                              |
         +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      

RTP Profile for Audio and Video Conferences with Minimal Control

  • RFC number
    • RFC3551
    • RFC1890(obsolete)
  • 内容
    • 符号データごとの具体的なフレーミング方法,すなわちRTPパケットのフォーマット
    • オーティオやビデオデータの圧縮方法ごとにペイロードフォーマットがある  それらを定義

    • 定義されている payload type (audio)

         PT   encoding    media type  clock rate   channels
                    name                    (Hz)
         ___________________________________________________
         0    PCMU        A            8,000       1
         1    reserved    A
         2    reserved    A
         3    GSM         A            8,000       1
         4    G723        A            8,000       1
         5    DVI4        A            8,000       1
         6    DVI4        A           16,000       1
         7    LPC         A            8,000       1
         8    PCMA        A            8,000       1
         9    G722        A            8,000       1
         10   L16         A           44,100       2
         11   L16         A           44,100       1
         12   QCELP       A            8,000       1
         13   CN          A            8,000       1
         14   MPA         A           90,000       (see text)
         15   G728        A            8,000       1
         16   DVI4        A           11,025       1
         17   DVI4        A           22,050       1
         18   G729        A            8,000       1
         19   reserved    A
         20   unassigned  A
         21   unassigned  A
         22   unassigned  A
         23   unassigned  A
         dyn  G726-40     A            8,000       1
         dyn  G726-32     A            8,000       1
         dyn  G726-24     A            8,000       1
         dyn  G726-16     A            8,000       1
         dyn  G729D       A            8,000       1
         dyn  G729E       A            8,000       1
         dyn  GSM-EFR     A            8,000       1
         dyn  L8          A            var.        var.
         dyn  RED         A                        (see text)
         dyn  VDVI        A            var.        1
      
         Table 4: Payload types (PT) for audio encodings
      
    • 定義されている payload type (video)

         PT      encoding    media type  clock rate
                         name                    (Hz)
         _____________________________________________
         24      unassigned  V
         25      CelB        V           90,000
         26      JPEG        V           90,000
         27      unassigned  V
         28      nv          V           90,000
         29      unassigned  V
         30      unassigned  V
         31      H261        V           90,000
         32      MPV         V           90,000
         33      MP2T        AV          90,000
         34      H263        V           90,000
         35-71   unassigned  ?
         72-76   reserved    N/A         N/A
         77-95   unassigned  ?
         96-127  dynamic     ?
         dyn     H263-1998   V           90,000
      
         Table 5: Payload types (PT) for video and combined encodings
      

RTP Payload Format for H.264 Video

  • RFC number RFC6184 RFC3984(obsolete)
  • 内容
    • h264 をRTPにのせる為のpayload format を定義
    • 3種類のpayload structure を用意

      • Single NAL Unit Packet
        • 一つのNAL unitを一つのRTP message で送信する
      • Aggregation Packet
        • 複数のNAL unitを一つのRTP message で送信する
      • Fragmentation Unit
        • 一つのNAL unitを複数のRTP message に分割して送信する
            Table 1.  Summary of NAL unit types and the corresponding packet types
          
            NAL Unit  Packet    Packet Type Name               Section
            Type      Type
            -------------------------------------------------------------
            0        reserved                                     -
            1-23     NAL unit  Single NAL unit packet             5.6
            24       STAP-A    Single-time aggregation packet     5.7.1
            25       STAP-B    Single-time aggregation packet     5.7.1
            26       MTAP16    Multi-time aggregation packet      5.7.2
            27       MTAP24    Multi-time aggregation packet      5.7.2
            28       FU-A      Fragmentation unit                 5.8
            29       FU-B      Fragmentation unit                 5.8
            30-31    reserved                                     -
          
    • Ethernet AVB IEEE1722 で定義されているstream format の一つであるCVFを用 いて、h264 を送信する際も、このプロトコルを利用する

            Value  Name          Description      
            0      MJPEG     MJPEG Format  (RFC 2435)  
            1      H264      H.264 Format  (RFC 6184) 
            2      JPEG2000  JPEG 2000 Video (RFC 5371)  
            IEEE1722-2016 Table 20 format_subtype field for RFC Format より