RTP協議

1 RTP協議背景及概述

流(Streaming)是近年在Internet上出現的新概念,其定義非常廣泛,主要是指通過網絡傳輸多媒體數據的技術總稱。

流式傳輸分爲兩種

  • 順序流式傳輸  (Progressive Streaming)
  • 實時流式傳輸  (Real time Streaming)

實時流式傳輸是實時傳送,特別適合現場事件。“實時”是指在一個應用中數據的交付必須與數據的產生保持精確的時間關係,這需要相應的協議支持,這樣RTP和RTCP就相應的出現了。

RTP全名:Real-time Transport Protocol(實時傳輸協議)。它是IETF提出的一個標準,對應的RFC文檔爲RFC3550。

  • RFC3550定義了RTP,也定義了配套的實時傳輸控制協議RTCP(Real-time Transport Control Protocol)。
  • RTP用來爲IP網上的語音、圖像、傳真等多種需要實時傳輸的多媒體數據提供端到端的實時傳輸服務。
  • RTP爲Internet上端到端的實時傳輸提供時間信息和流同步,但並不保證服務質量,服務質量由RTCP來提供。

詳細的協議參考:

鏈接:https://pan.baidu.com/s/10fMJI8AQFZAqvUChBpVD_g 
提取碼:rd1v 

 

RTP協議原理:較簡單,負責對流媒體數據進行封包並實現媒體流的實時傳輸,即它按照RPT數據包格式來封裝流媒體數據,並利用與它綁定的協議進行數據包的傳輸。

RTCP原理:向會話中的所有成員週期性地發送控制包來實現的,應用程序通過接收這些控制數據包,從中獲取會話參與者的相關資料,以及網絡狀況、分組丟失概率等反饋信息,從而能夠對服務質量進行控制或者對網絡狀況進行診斷。

RTP在端口號1025到65535之間選擇一個未使用的偶數UDP端口號,而在同一次會話中的RTCP則使用下一個基數UDP端口號

默認端口號:    RTP:5004    RTCP:5005

從下圖可看出RTP被劃分在傳輸層,它建立在UDP上。同UDP協議一樣,爲了實現其實時傳輸功能,RTP也有固定的封裝形式。RTP用來爲端到端的實時傳輸提供時間信息和流同步,但並不保證服務質量。服務質量由RTCP來提供。

2 RTP協議封裝

多媒體處理流程

從開發者的角度看,RTP 應當是應用層的一部分。

RTP實現者在發送RTP數據時,需先將數據封裝成RTP包,而在接收到RTP數據包,需要將數據從RTP包中提取出來。

下圖爲RTP部格式:

有效載荷類型:7位,指出後面的RTP數據屬於何種格式的應用。應用層可根據次類型進行處理。

音頻:μ律PCM(0),GMS(3)             A律PCM(8),G.722(9),G728(1)

視頻:活動JPEG(26)、H.261(31)、                MPEG1(32)、MPEG2(33)、H.264(96)等

RTCP的主要功能

  • 提供數據傳輸質量的反饋
  • 爲每個RTP源傳輸一個固定的識別符CNAME
  • 知曉成員數目,控制包的發送速率
  • 傳輸最小連接控制信息,如參加者標識

RTCP也是用UDP來傳送的,但RTCP封裝的僅僅是一些控制信息,因而分組很短,所以可以將多個RTCP分組封裝在一個UDP包中。RTCP有如下五種分組類型:

 

發送端報告分組SR(Sender Report)用來使發送端以多播方式向所有接收端報告發送情況。SR分組的主要內容有:相應的RTP流的SSRC,RTP流中最新產生的RTP分組的時間戳和NTP,RTP流包含的分組數,RTP流包含的字節數。

3 RTP協議關鍵技術

  • 時間戳
  • 時延
  • 抖動
  • 丟包率
  • 會話和流兩級分用

****************************************************************************************************

時間戳(1)

時間戳字段是RTP首部中說明數據包時間的同步信息,是數據能以正確的時間順序恢復的關鍵。

時間戳的值給出了分組中數據的第一個字節的採樣時間,要求發送方時間戳的時鐘是連續、單調增長的,即使在沒有數據輸入或發送數據時也是如此。

在靜默時,發送方不必發送數據,保持時間戳的增長,在接收端,由於接收到的數據分組的序號沒有丟失,就知道沒有發生數據丟失,而且只要比較前後分組的時間戳的差異,就可以確定輸出的時間間隔。

時間戳(2)

RTCP 中的 SR (Sender Report發送端報告)控制分組包含NTP(網絡時間)時間戳和RTP時間戳可用於同步音視頻媒體流。

RTP時間戳是依據鄰近的RTP數據包中的時間戳結合NTP時間差得到的。

公式表達爲:RTP_tsi = tsi + NTPi - NTP'i

RTP_tsi表示RTCP中的RTP時間戳;tsi表示鄰近的RTP包中的時間戳;NTPi表示RTCP的網絡時間戳;NTP'i表示鄰近的RTP包對應的網絡時間戳;下標表示第i個源。

時間戳(3)

因此,i和源j之間的相對時差可以表示爲:

RTP_tsi - RTP_tsj = ( tsi + NTPi - NTP'i ) - ( tsj + NTPj - NTP'j )


(RTP_tsi – tsi)-( RTP_tsj - tsj) = (NTPi –NTP'i) - (NTPj—NTP'j) 

由於NTP同步,差值可以反映出兩個源的相對時差。因爲要同步不同來源的媒體流,必須使得同步他們的絕對時間基準,而NTP時間戳正是這樣的絕對時間基準。

應用RTP時間戳來保證同一來源的媒體流同步。

****************************************************************************************************

時延

影響時延的因素有多個方面:

  • 編解碼
  • 網絡
  • 防抖動緩衝
  • 報文隊列

其中有些是固定時延,如編解碼網絡速率等;有些是變化的,如防抖動緩衝等,固定的時延可以通過改變編解碼方式和提高網絡速率來改變,而變化時延通常採用提高轉發效率來提高。

****************************************************************************************************

抖動

到達時刻抖動J的定義:一對包中接收機相對發射機的時間跨度差值的平均偏差。

該值等於兩個包相對傳輸時間的差值,相對傳輸時間是指包的RTP時間標誌和到達時刻接收機時鐘,以同一單位的差值.若Si是包i的RTP時間標誌,Ri是包i以RTP時間標誌單位的到達時刻值。對於兩個包i和j,D可以表達爲

 D(i,j) = (Rj - Ri) - (Sj - Si) = (Rj - Sj) - (Ri - Si)

到達時刻抖動可以在收到從源SSRC_n來的每個數據包i後連續計算,利用該包和前一包i-1的偏差D。

根據公式J(i) = J(i-1) + (|D(i-1,i)| - J(i-1))/16計算

****************************************************************************************************

丟包率

丟包率是通過計算接收包數量和發送包數量的比率得到。

流程    

發送方:每間隔一定時間讀取每個發送通道的發包數量和數據長度,組成一個此通道的RTCP報文發送給接收方,同時將發送數據包計數清零。    

接收方:收到RTCP包後,讀取接收通道接收到的包數量,並計算出丟包率,通過一個RTCP接收匯報包發送給發送方,同時對接收數據包計數清零。

****************************************************************************************************

會話和流兩級分化

一個RTP會話包括傳給某個指定目的地對的所有通信量,發送方可能包括多個。而從同一個同步源發出的RTP分組序列稱爲流(Stream),一個RTP會話可能包含多個RTP流。

一個RTP分組在服務器端發送出去的時候總是要指定屬於哪個會話和流,在接收時也需要進行兩級分用,即會話分用和流分用。

只有當RTP使用同步源標識和分組類型把同一個流中的分組組合起來,才能夠使用序列號和時間戳對分組進行排序和正確回放。

 

RTP協議運用

RTP協議應用方案——單播

在客戶端與媒體服務器之間建立一個單獨的數據通道,從一臺服務器送出的每個數據包只能傳送給一個客戶端,這種傳送方式稱爲單播。

  • 優點:便於控制和管理  
  • 缺點:每個用戶必須分別對媒體服務器發送單 獨的查詢,而媒體服務器必須向每個用戶發送所申請的數據包拷貝。這種巨大冗餘造成服務器負擔沉重,響應需要很長時間

RTP協議應用方案——廣播

 廣播指的是用戶被動地接收流。

在廣播過程中,數據包的單獨一個拷貝將發送給網絡上的所有用戶,客戶端接收流,但不能控制流; 廣播方式中資料包的單獨一個拷貝將發送給網絡上的所有用戶, 而不管用戶是否需要,會非常浪費網絡帶寬。    

  • 優點:簡單    
  • 缺點:浪費網絡帶寬

組播技術構建的網絡,允許路由器一次將數據包複製到多個通道上。採用組播方式,媒體服務器只需要發送一個信息包,所有發出請求的客戶端即可同時收到連續數據流而無延時。

組播吸收了單播和廣播兩種發送方式的長處,     克服了上述兩種發送方式的弱點。

  • 優點:減少網絡上傳輸的信息包的總量;網絡利用效率大大提高,成本大爲下降。  
  • 缺點:當不同的用戶同時點播同一個節目時,由於點播總有先後順序,後點播的用戶依照網絡中同時點播此節目的其它用戶的播放進度,這就造成當前用戶極有可能從節目的中間開始看起,很難做到個性化。

RTP協議安全

RTP提供的安全性包括保密性、認證與完整性、密鑰管理。

保密性

客戶端都支持缺省的加密算法 ,RTCP包頭隨機附加前綴加以迷惑,CBC模式具有隨機接入功能,實現加密的同時還能保證丟失的包不 被他自己或下一個包解密。

認證與完整性

RTP標準協議對任何認證過程都不加特別說明,除非在密鑰已知時採用內部認證。僅在通過其他方法認證RTP流媒體時,命令行認證機制才啓動工作。

密鑰管理

由SIP,SAP和SDP協議完成,這些協議有強大的認證功能和密鑰管理功能。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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