Ticket #513 (closed enhancement: fixed)

Opened 10 years ago

Last modified 9 years ago

Support for RTCP XR

Reported by: bennylp Owned by: nanang
Priority: normal Milestone: release-0.9.0
Component: pjmedia Version: trunk
Keywords: Cc: Phil Torre
Backport to 1.x milestone: Backported:

Description (last modified by bennylp) (diff)

Some specs:

  1. The following RTCP XR block types shall be supported:
    • Receiver Reference Time Report Block
    • DLRR Report Block
    • Statistics Summary Report Block
    • VoIP Metrics Report Block
  2. XR packet source and destination (source -> destination):
    • Receiver Reference Time Report Block: RTP receiver -> RTP transmitter
    • DLRR Report Block: RTP transmitter -> RTP receiver
    • Statistics Summary Report Block: RTP receiver -> RTP transmitter or network management server
    • VoIP Metrics Report Block: RTP receiver -> RTP transmitter or network management server
  3. In order to reduce XR traffic, Statistics Summary Report Block and VoIP Metrics Report Block shall always be stacked together and sent out in one RTCP XR packet.
  4. The period for sending Statistics Summary Report and VoIP Metrics Report shall be configurable.
  5. In addition to periodical reports, at the end of a call or PTT, the RTP receiver shall send out one XR packet containing the final Statistics Summary Report and VoIP Metrics Report.
  6. In order to allow enough time to measure round trip delay, the sending of Receiver Reference Time Report Block shall be scheduled to occur at least 500 msec before "each" periodical sending of Statistics Summary Report and VoIP Metrics Report.
  7. The destination where Statistics Summary Report and VoIP Metrics Report are sent shall be configurable:
    • either the RTP transmitter or network management server.
  8. It shall be configurable to use either a fixed assigned number or a randomly generated number for the 32-bit RTP Synchronization Source (SSRC) used to identify each RTP end point.
    • In a closed system (such as P25 and OpenSky), it is preferred to assign each device with a unique SSRC (a combination of device type and device ID). The advantages with assigned SSRC are that SSRC alone can be used to identify RTP end points and no two end points will use the same SSRC.
    • With randomly generated SSRC, network management server will not know the end points of XR reports unless it also receives other info such as RTCP SDES packets.
  9. The following fields in the Statistics Summary Report Block shall be supported:
    • begin_seq
    • end_seq
    • lost_packets (in the above sequence number interval)
    • dup_packets (in the above sequence number interval)
    • min_jitter (in the above sequence number interval)
    • max_jitter (in the above sequence number interval)
    • mean_jitter (in the above sequence number interval)
    • dev_jitter (in the above sequence number interval)
  10. The following fields in the VoIP Metrics Report Block shall be supported:
    • loss rate (accumulated since the beginning of a call)
    • discard rate (accumulated since the beginning of a call)
    • burst density (accumulated since the beginning of a call)
    • gap density (accumulated since the beginning of a call)
    • burst duration (accumulated since the beginning of a call)
    • gap duration (accumulated since the beginning of a call)
    • round trip delay (the most recently measured)
    • end system delay (= JB nominal delay + 2 * audio frame size per RTP packet)
    • Gmin (= 16)
    • RX config (= PLC + adaptive or fixed jitter buffer)
    • JB nominal (= initial jitter buffer delay if fixed jitter buffer is used)

Attachments

xr.patch (62.9 KB) - added by nanang 9 years ago.
xr.2.patch (39.4 KB) - added by nanang 9 years ago.
xr.3.patch (7.6 KB) - added by nanang 9 years ago.

Change History

comment:1 Changed 10 years ago by bennylp

  • Description modified (diff)

Changed 9 years ago by nanang

comment:2 Changed 9 years ago by bennylp

Committed xr.patch in r1942

comment:3 Changed 9 years ago by nanang

Attachment 'xr.2.patch':

  • Added RTCP XR reports to streamutil.
  • Added new API to stream, pjmedia_stream_get_stat_xr(), to get the RTCP XR statistic
  • Swapped the wrong RTCP XR statistic storage (encoding direction should be stored in TX, decoding direction in RX, it was the opposite)

Changed 9 years ago by nanang

comment:4 Changed 9 years ago by nanang

Committed xr.2.patch in r1943

comment:5 Changed 9 years ago by nanang

Attachment xr.3.patch:

  • Added new API pjmedia_transport_send_rtcp2() to enable sending RTCP to remote address other than specified in pjmedia_transport_attach().
  • Added RTCP XR features on stream: configurable RTCP XR sending interval, third-party destination for RTCP XR, and sending last RTCP XR packet when stream destroyed.
  • Updated end system delay of RTCP XR: sound device latency estimated based on sound device implementation.

Changed 9 years ago by nanang

comment:6 Changed 9 years ago by nanang

In r1945: commited xr.3.patch but removed the first point (pjmedia transport updates are put in the separate ticket: #528)

comment:7 Changed 9 years ago by bennylp

  • Status changed from new to closed
  • Resolution set to fixed

Done, closing the ticket.

Note: See TracTickets for help on using tickets.