RTCP RR的格式

RTCP RR的格式
接受者報告的RTCP類型是201,如圖1.1所示。
在這裏插入圖片描述
圖1.1

reporter ssrc
rr報告發送者的ssrc,也就是rtp報文接受者自己的ssrc.

reportee ssrc
rr報告接受者的ssrc,也就是rtp報文發送者的ssrc.

cumulative number of packet lost
累積報文丟失總數,該字段是一個24-bits的有符號整數。

理論計算方式, packet lost = 期待得到報文數量 - 實際收到報文的數量

實際計算方式, packet lost = 期待收到最新sequence - 第一次收到報文的sequence。

需要注意的有一下幾點:

  • sequence爲16位,容易翻轉
    可以通過計算extend_sequence來區分翻轉的sequence。
  • packet lost可能爲負數
    因爲有rtp報文的重傳,如果重傳次數多,可能造成負數
  • 該值的測量週期是整個會話
    測量週期是整個會話,而不是RR的發送間隔

extended highest sequence number received
計算方法,extended_seq_num = seq_num + (65536 * wrap_around_count)

其中wrap_around_count爲sequence翻轉的次數

Loss fraction
丟包率,它是定義一個rr發送間隔中rtp報文的丟失率。

它是一個8bits的數據段,計算方法爲,loss fraction=lost rate x 256.

舉例,丟包率爲25%,該字段爲25%*256=64

interarrival jitter
這裏的延時抖動指的是rtp報文發送方的網絡傳輸時間的變量估計值。

計算單位是基於時間戳的基礎單位,也是32位無符號整形。

因爲rtp的發送和接收方沒有時間同步系統,所以不大可能能準確的測量網絡傳送時間。

相反,傳輸時間= |rtp的時間戳-rtp接受者本地時間|

因爲沒有發送和接收方的時間同步機制,所以這裏關心的不是傳輸時間,是兩次接收到rtp報文傳輸時間的對比,計算公式如圖1.2。
在這裏插入圖片描述
圖1.2

  • R是接收到的時間戳,Rj是packet j接收到的時間戳,Ri是packet i接收到的時間戳
  • S是rtp報文的時間戳,Sj是packet j的rtp時間戳,Si是packet i的rtp時間戳
    而Jitter的計算公式如圖1.3:
    在這裏插入圖片描述
    圖1.3

LSR
LSR: The last sender report timestamp,是最新接收到SR報文的時間戳。
具體值是,SR報文裏64位NTP時間戳中的32位bit的時間戳。如果沒有收到SR報文,該字段爲0.

DLSR
DLSR: The delay since last sender report,是接收到SR報文的時刻與發送該RR報文時刻的時間差值,單位時間是1/65536 seconds. 如果沒有收到SR報文,該字段爲0.

RTT
RTT: Round-Trip Time,發送者計算的發送來回時間。
發送者可以通過RR報文中的LSR和DLSR來計算RTT。

計算方法: 發送者用接收到RR報文的當前時間-RR報文的LSR,得到發送SR和接收到RR所花費的網絡延時。

再進行: (接收到RR報文的當前時間-RR報文的LSR) - RR中的DLSR,也就是去除了在RTP接收者方本地的SR接收和RR發送的延時,這樣就得到了RTT。

RTT = 接收到RR報文的當前時間-RR報文的LSR - RR中的DLSR

經驗表明,如果RTT大於300ms,這樣的質量網絡通話無法完成。只能通過降低比特率,降低打包延時或應用好的錯誤修復機制來完成。

作者:IT荒野獵人
來源:CSDN
原文:https://blog.csdn.net/sweibd/article/details/79335748
版權聲明:本文爲博主原創文章,轉載請附上博文鏈接!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章