WebRTC的NACK和RTX簡述

背景

在丟包 10%下測試WebRTC,發現丟包導致的卡頓,需要一些開啓一些機制來保證丟包重傳。

摘要

簡述WebRTC中NACK、RTX的功能和聯繫。

正文

NACK、RTX是WebRTC裏丟包重傳策略,兩個策略之間有一定的聯繫。
NACK:接收端通過RTCP將丟包的序列號通知給發送端,讓發送端重傳該包。
RTX:發送端在新的SSRC上發送重傳包或者冗餘包。

兩者均需要通過sdp協商開啓,在支持的服務端(例如Janus)修改SDP即可開啓。

要點

  • 重傳包不一定通過RTX發送;
  • RTX包不一定用來重傳丟失的包。

解釋

在發送端收到NACK後,要重發接收端丟掉的包,發送的模式有兩種:

  • RTX模式
    在接收端通過SDP使能發送端的RTX以後,重發的包封裝到RTX包裏發送,RTX包與原RTP有不同的SSRC,這樣有助於避免SRTP的重放攻擊,也能讓接收端更好的估算帶寬;
  • 普通模式
    在沒有使能RTX時,發送端只是簡單的重發原來的RTP包,這種模式會影響接收端的RTCP統計,比如會出現負的丟包率。

另外,RTX包有兩種

  • 收到NACK重發的包
    如上述;
  • 發送端發送的冗餘Padding包
    發送端的初始碼率在達不到目標碼率的情況下,會通過發送RTX包來補充,以能夠逼近目標碼率,當然這個機制必須啓用RTX才能激活。因此,接收端可能會收到兩種RTX包,一種是被NACK觸發的,一種是發送端用來補充發送碼率的冗餘包。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章