



版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、RTP 協議分析計算機網絡2009-09-11 19:37:17閱讀 1807 評論 0 字號: 大中小 訂閱一RTP 協議背景二RTP 協議原理及工作機制21 RTP 協議原理21 1 RTP 協議原理21 2 RTCP 協議原理22 RTP 數據包格式22 1 RTP 數據包格式22 2 RTCP 數據包格式23 RTP 工作機制23 1 RTP 工作機制23 2 RTCP 工作機制三RTP 協議關鍵技術指標31 時間戳32 時延33 抖動34 丟包率35 會話和流兩級分用36 多種流同步控制四RTP 協議應用方案41 RTP 協議應用方案之單播42 RTP 協議應用方案之廣播43 RTP
2、 協議應用方案之組播43.1 RTP 協議組播方案總體概述43.2 RTP 協議組播方案服務器端實現43. 3RTP 協議組播方案客戶端實現43. 4RTP 協議視頻幀率和質量調整策略五RTP 協議移植計劃六RTP 協議安全方面考慮一RTP協議背景流( Streaming )是近年在 Internet 上出現的新概念, 其定義非常廣泛, 主要是指通過網絡傳輸多媒體數據的技術總稱。 流媒體包含廣義和狹義兩種內涵: 廣義上的流媒體指的是使音頻和視頻形成穩定和連續的傳輸流和回放流的一系列技術、 方法和協議的總稱, 即流媒體技術;狹義上的流媒體是相對于傳統的下載 - 回放方式而言的, 指的是一種從 I
3、nternet 上獲取音頻和視頻等多媒體數據的新方法, 它能夠支持多媒體數據流的實時傳輸和實時播放。 通過運用流媒體技術, 服務器能夠向客戶機發送穩定和連續的多媒體數據流, 客戶機在接收數據的同時以一個穩定的速率回放,而不用等數據全部下載完之后再進行回放。流式傳輸有順序流式傳輸(Progressive Streaming)和實時流式傳輸(Realtime Streaming)兩種方式。實時流式傳輸是實時傳送,特別適合現場事件, 實時流式傳輸必須匹配連接帶寬,這意味著圖像質量會因網絡速度降低而變差,以減少對傳輸帶寬的需求。“實時” 的概念是指在一個應用中數據的交付必須與數據的產生保持精確的時間關
4、系,這需要相應的協議支持,這樣 RTP和 RTCP就相應的出現了。實時傳輸協議RTP( Realtime Transport Protocol):是針對 Internet上多媒體數據流的一個傳輸協議 ,由 IETF 作為 RFC1889發布,現在最新的為 RFC3550。RTP被定義為在一對一或一對多的傳輸情況下工作,其目的是提供時間信息和實現流同步。RTP的典型應用建立在 UDP上,但也可以在 TCP等其他協議之上工作。RTP 本身只保證實時數據的傳輸,并不能為按順序傳送數據包提供可靠的傳送機制,也不提供流量控制或擁塞控制,它依靠RTCP提供這些服務。實時傳輸控制協議RTCP( Realti
5、me Transport Control Protocol):負責管理傳輸質量,在當前應用進程之間交換控制信息,提供流量控制和擁塞控制服務。在 RTP會話期間, 各參與者周期性地傳送RTCP包,包中含有已發送的數據包的數量、丟失的數據包的數量等統計資料,因此,服務器可以利用這些信息動態地改變傳輸速率,甚至改變有效載荷類型。RTP和 RTCP配合使用,能以有效的反饋和最小的開銷使傳輸效率最佳化,故特別適合傳送網上的實時數據。二RTP 協議原理及工作機制讓我們先看一下下圖 1-1 所示:RTP 和RTCP在網絡層次中的位置,以便我們更加清楚的了解該協議,如圖 1-1 RTP&RTCP 網絡
6、層次關系圖下面我們就從 RTP 以及 RTCP 的協議原理,數據包格式,工作機制三個方面來對該協議做一個基本的認識和了解:21 RTP 協議原理211 RTP 協議原理RTP協議原理比較簡單, 負責對流媒體數據進行封包并實現媒體流的實時傳輸,即它按照RPT數據包格式來封裝流媒體數據,并利用與它綁定的協議進行數據包的傳輸,具體見本文數據格式; RTP本身只保證實時數據的傳輸,并不能為按順序傳送數據包提供可靠的傳送機制,也不提供流量控制或擁塞控制,它依靠RTCP提供這些服務.2 1 2 RTCP 協議原理RTCP原理是向會話中的所有成員周期性地發送控制包來實現的,應用程序通過接收這些控制數據包,
7、從中獲取會話參與者的相關資料,以及網絡狀況、 分組丟失概率等反饋信息,從而能夠對服務質量進行控制或者對網絡狀況進行診斷.RTCP協議的功能是通過不同的RTCP數據報文( 具體描述的見數據包格式) 來實現的,主要有如下幾種類型:SR(Sender Report)發送端報告,所謂發送端是指發出RTP數據報的應用程序或者終端,發送端同時也可以是接收端。RR( ReceiverReport)接收端報告, 所謂接收端是指僅接收但不發送RTP數據報的應用程序或者終端。SDES源描述,主要功能是作為會話成員有關標識信息的載體,如用戶名、郵件地址、電話號碼等,此外還具有向會話成員傳達會話控制信息的功能。BYE
8、通知離開,主要功能是指示某一個或者幾個源不再有效,即通知會話中的其他成員自己將退出會話。APP 由應用程序自己定義, 解決了 RTCP的擴展性問題, 并且為協議的實現者提供了很大的靈活性。RTCP數據報攜帶有服務質量監控的必要信息,能夠對服務質量進行動態的調整,并能夠對網絡擁塞進行有效的控制。由于 RTCP數據報采用的是組播方式,因此會話中的所有成員都可以通過 RTCP數據報返回的控制信息,來了解其他參與者的當前情況。例如在流媒體應用場合下,發送媒體流的應用程序將周期性地產生發送端報告SR,該 RTCP數據報含有不同媒體流間的同步信息,以及已經發送的數據報和字節的計數,接收端根據這些信息可以估
9、計出實際的數據傳輸速率。另一方面, 接收端會向所有已知的發送端發送接收端報告 RR,該 RTCP數據報含有已接收數據報的最大序列號、丟失的數據報數目、延時抖動和時間戳等重要信息, 發送端應用根據這些信息可以估計出往返時延,并且可以根據數據報丟失概率和時延抖動情況動態調整發送速率,以改善網絡擁塞狀況,或者根據網絡狀況平滑地調整應用程序的服務質量。RTCP具有以下四個功能:1、基本功能是提供數據傳輸質量的反饋. 這是 RTP作為一種傳輸協議的主要作用, 它與其他協議的流量和阻塞控制相關. 反饋可能對自適應編碼有直接作用, 但是 IP 組播的實驗表明它對于從接收機得到反饋信息以診斷傳輸故障也有決定性
10、作用. 向所有成員發送接收反饋可以使" 觀察員 " 評估這些問題是局部的還是全局的. 利用類似多點廣播的傳輸機制 , 可以使某些實體 , 諸如沒有加入會議的網絡網絡業務觀察員 , 接收到反饋信息并作為第三類監視員來診斷網絡故障 . 反饋功能通過 RTCP發射機和接收機報告實現 .2、 RTCP為每個 RTP源傳輸一個固定的識別符 , 稱為標稱名或 CNAME由.于當發生沖突或程序重啟時 SSRC可能改變 , 接收機要用 CNAME來跟蹤每個成員 . 接收機還要用 CNAME來關聯一系列相關 RTP會話期中來自同一個成員的多個數據流, 例如同步語音和圖象 .3、前兩個功能要求
11、所有成員都發送RTCP包, 因此必須控制速率以使RTP成員數可以逐級增長. 通過讓每個成員向所有成員發送控制包 , 各個成員都可以獨立地觀察會議中所有成員的數目 .4、可選的功能是傳輸最少的會議控制信息, 例如在用戶接口中顯示的成員識別. 這最可能在 "松散控制 " 的會議中起作用, 在 " 松散控制 " 會議里 , 成員可以不經過資格控制和參數協商而加入或退出會議 .RTCP 作為一個延伸到所有成員的方便通路 , 必須要支持具體應用所需的所有控制信息通信 .22 RTP 數據包格式221 RTP 數據包格式RTP 報文頭格式(見RFC3550 Page
12、12):+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|V=2|P|X|CC|M|PT|sequencenumber|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|timestamp|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|synchronization source (SSRC)identifier|+=+=+=+=+=+=+=+=+
13、=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+|contributing source (CSRC)identifiers|.|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+以上域具體意義如下:版本值 0( V):2比特此域定義了RTP的版本 . 此協議定義的版本是用在最初 "vat"語音工具使用的協議中.)2.(值 1 被RTP草案版本使用,填料 ( P):1比特若填料比特被設置, 此包包含一到多個附加在末端的填充比特, 不是負載的一部分
14、. 填料的最后一個字節包含可以忽略多少個填充比特. 填料可能用于某些具有固定長度的加密算法, 或者在底層數據單元中傳輸多個RTP包.擴展 ( X):1比特若設置擴展比特, 固定頭 ( 僅 ) 后面跟隨一個頭擴展.CSRC計數 ( CC):4比特CSRC計數包含了跟在固定頭后面CSRC識別符的數目.標志范圍( M):1比特標志的解釋由具體協議規定. 它用來允許在比特流中標記重要的事件. 規定該標志在靜音后的第一個語音包時置位., 如幀負載類型 ( PT):7 比特 此域定義了負載的格式 , 由具體應用決定其解釋 . 協議可以規定負載類型碼和負載格式之間一個默認的匹配 . 其他的負載類型碼可以通過
15、非 RTP方法動態定義.RTP 發射機在任意給定時間發出一個單獨的 RTP負載類型 ; 此域不用來復用不同的媒體流.序列號( sequence number ):16 比特 每發送一個 RTP數據包 , 序列號加一 , 接收機可以據此檢測包損和重建包序列 . 序列號的初始值是隨機的 ( 不可預測 ), 以使即便在源本身不加密時( 有時包要通過翻譯器, 它會這樣做 ), 對加密算法泛知的普通文本攻擊也會更加困難.時間標志( timestamp ) :32 比特 時間標志反映了RTP數據包中第一個比特的抽樣瞬間. 抽樣瞬間必須由隨時間單調和線形增長的時鐘得到,以進行同步和抖動計算. 時鐘的分辨率必
16、須滿足要求的同步準確度, 足以進行包到達抖動測量. 時鐘頻率與作為負載傳輸的數據格式獨立 , 在協議中或定義此格式的負載類型說明中靜態定義, 也可以在通過非RTP方法定義的負載格式中動態說明 . 若 RTP包周期性生成 , 可以使用由抽樣時鐘確定的額定抽樣瞬間, 而不是讀系統時鐘 . 例如 , 對于固定速率語音 , 時間標志鐘可以每個抽樣周期加1. 若語音設備從輸入設備讀取覆蓋 160 個抽樣周期的數據塊, 對于每個這樣的數據塊 , 時間標志增加160, 無論此塊被發送還是被靜音壓縮 .時間標志的起始值是隨機的, 如同序列號 . 多個連續的 RTP包可能由同樣的時間標志, 若他們在邏輯上同時產
17、生 . 如屬于同一個圖象幀 . 若數據沒有按照抽樣的順序發送 , 連續的 RTP包可以包含不單調的時間標志, 如 MPEG交織圖象幀 .同步源( SSRC) :32 比特SSRC域用以識別同步源. 標識符被隨機生成, 以使在同一個RTP會話期中沒有任何兩個同步源有相同的SSRC識別符 . 盡管多個源選擇同一個SSRC識別符的概率很低 , 所有 RTP實現工具都必須準備檢測和解決沖突. 若一個源改變本身的源傳輸地址,必須選擇新的SSRC識別符 , 以避免被當作一個環路源.有貢獻源( CSRC)列表 :0 到 15 項 , 每項 32 比特 CSRC列表識別在此包中負載的有貢獻源 . 識別符的數目
18、在 CC域中給定 . 若有貢獻源多于 15 個 , 僅識別 15 個 .CSRC識別符由混合器插入, 用有貢獻源的 SSRC識別符 . 例如語音包 , 混合產生新包的所有源的 SSRC標識符都被陳列 , 以期在接收機處正確指示交談者 .注意: 前 12 個字節出現在每個RTP包中 , 僅僅在被混合器插入時, 才出現 CSRC識別符列表 .RTP 報文擴展頭格式(見RFC3550 Page18):0123+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|defined byprofile|length|+-+-+-
19、+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|headerextension|.|若 RTP頭中的擴展比特位X 置 1, 則一個長度可變的頭擴展部分被加到RTP固定頭之后 ,. 頭擴展包含 16 比特的長度域 , 指示擴展項中 32 比特字的個數 , 不包括 4 個字節擴展頭 ( 因此零是有效值 ).RTP 固定頭之后只允許有一個頭擴展 . 為允許多個互操作實現獨立生成不同的頭擴展 , 或某種特定實現有多種不同的頭擴展, 擴展項的前16 比特用以識別標識符或參數. 這16 比特的格式由具體實現的上層協議定義. 基本的 R
20、TP說明并不定義任何頭擴展本身。2 2 2 RTCP 數據包格式RTCP 包括五種數據包類型(RFC3550 Page69):value(該值 RTCP頭格式中的PT 類型字段)SRsender report200RRreceiver report201SDESsource description202BYEgoodbye203APPapplication-defined204現在我們就SR 報文為例詳細描述一下RTCP報文格式( RFC3550 Page35 ):0123+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
21、+-+-+-+-+-+-+-+header|V=2|P|RC|PT=SR=200|length|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|SSRC ofsender|+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+sender |NTP timestamp, most significantword|info+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
22、-+-+-+|NTP timestamp, least significantword|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|RTPtimestamp|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|sender's packetcount|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|sender's octetco
23、unt|+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+report |SSRC_1 (SSRC of firstsource)|block+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+1| fraction lost |cumulative number of packetslost|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|extende
24、d highest sequence numberreceived|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|interarrivaljitter|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|last SR(LSR)|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|delay since last SR(DLSR)|+=+=+=+=+=
25、+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+report |SSRC_2 (SSRC of secondsource)|block+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+2:.:+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+|profile-specificextensions|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
26、+-+-+-+-+-+-+-+-+-+-+-+-+每個 RTCP 包的開始部分是與 RTP 數據包相類似的固定部分,隨后是一塊結構化單元 ,它隨負載類型不同長度發生變化,但是總以 32 比特終止 .發射機報告包由 3 部分組成 , 若定義 , 可能跟隨第 4 個面向協議的擴展部分 .第一部分:8 字節長 . 該域有以下意義 :版本 ( V):2比特 RTP版本識別符 , 在 RTCP包內的意義與 RTP包中的相同 . 此協議中定義的版本號為 2.填料 ( P):1比特若設置填料比特 , 該 RTCP包在末端包含一些附加填料比特, 并不是控制信息的基本部分 . 填料的最后一個比特統計了多少個字節
27、必須被忽略. 某些有固定塊大小的加密算法可能需要填料比特. 在復合 RTCP包中 , 復合包作為一個整體加密 , 填料比特只能加在最后一個單包的后面 .接收報告塊計數 ( RC):5比特該包中所含接收報告塊的數目. 零值有效 .包類型 ( PT):8比特包含常數200, 用以識別這個為RTCP SR包 .長度 :16 比特 以 32 比特字為單位 , 該 RTCP包的長度減一 , 包括頭和任何填料 .( 偏移量 1 保證零值有效 , 避免了在掃描 RTCP包長度時可能發生的無限循環 , 同時以 32 比特為單位避免了對以 4 為倍數的有效性檢測.)SSRC:32 比特SR包發起者的同步源標識符
28、.第二部分:發射機信息 ,20 比特長 , 在每個發射機報告包中出現. 它概括了從此發射機發出的數據傳輸情況 . 此域有以下意義 :NTP時間標志 :64 比特 指示了此報告發送時的壁鐘時刻, 它可以與從其它接收機返回的接收報告塊中的時間標志結合起來, 測量到這些接收機的環路時沿. 接收機必須期望此時間標志的準確度遠低于 NTP時間標志的分辨率. 測量的不確定度不可知 , 因此也無需指示 . 某個發射機, 能夠跟蹤逝去時間但是無法跟蹤壁鐘時間, 可以用加入會議后的逝去時間代替. 假定該值小于 68 年 , 則最高比特為零 . 允許用抽樣時鐘估計逝去壁鐘時間. 無法用壁鐘時間或逝去時間的可以設置
29、此項為零 .RTP時間標志 :32 比特 與以上的 NTP時間標志對應同一時刻, 但是與數據包中的RTP時間標志具有相同的單位和偏移量. 這個一致性可以用來讓NTP時間標志已經同步的源間進行媒體內/ 間同步 , 還可以讓與媒體無關的接收機估計標稱RTP時鐘頻率 . 注意在大多數情況下此時間標志不等于任何臨近的RTP包中的時間標志 . 然而 , 通過 "RTP 時間標志計數器 " 和 " 由在抽樣點上周期性檢測壁鐘時間得到的實際時間" 兩者之間的關系 , 可以通過相應的NTP時間標志計算得到此 RTP時間標志 .發送的報文數 :32 比特從開始傳輸到此SR
30、包產生時該發射機發送的RTP數據包總數 . 若發射機改變 SSRC識別符 , 該計數器重設 .發送的字節文數 :32 比特從開始傳輸到此SR包產生時該發射機在RTP數據包發送的字節總數( 不包括頭和填料 ). 若發射機改變 SSRC識別符 , 該計數器重設 . 此域可以用來估計平均負載類型數據速率 .第三部分:零到多個接收報告塊, 塊數等于從上一個報告以來該發射機收聽到的其它源的數目. 每個接收報告塊傳輸關于從某個同步源來的數據包的接收統計信息. 若某個源因沖突而改變其SSRC識別符 , 接收機并不延續統計數字. 這些統計數字是:SSRC_n(源識別符 ) :32 比特在此接收報告塊中信息所屬
31、源的SSRC識別符 .丟包率 :8 比特自從前一SR包或 RR包發射以來 , 從 SSRC_n傳來的 RTP數據包的損失比例, 以固定點小數的形式表示, 小數點在此域的左側, 等于將損失比例乘256 后取整數部分. 該值定義為損失包數被期望接收的包數除, 在下一段中定義. 若由于復制而導致包損為負值, 損失比例值設為零 . 注意在收到上一個包后, 接收機無法告之以后的包是否丟失, 若在上一個接收報告間隔內從某個源發出的所有數據包都丟失, 那么將不為此源發送接收報告塊.累計包丟失數:24 比特從開始接收到現在, 從源 SSRC_n發到本源的RTP數據包的丟包總數.該值定義為期望接收的包數減去實際
32、接收的包數, 接收的包括復制的或遲到的. 由于遲到的包不算作損失 , 在發生復制時包損可能為負值. 期望接收的包數定義為擴展的上一接收序號( 隨后定義 ) 減去最初接收序號.接收到的擴展的最高序列號:32 比特低 16 比特包含從源SSRC_n來的最高接收序列號, 高 16比特用相應的序列號周期計數器擴展該序列號. 注意在同一會議中的不同接收機, 若啟動時間明顯不同 , 將產生不同的擴展項 .到達間隔抖動 :32 比特RTP數據包到達時刻統計方差的估計值, 以時間標志為單位測量, 用無符號整數表達 . 到達時刻抖動 J 定義為一對包中接收機相對發射機的時間跨度差值的平均偏差 ( 平滑后的絕對值
33、 ).如以下等式所示 , 該值等于兩個包相對傳輸時間的差值, 相對傳輸時間是指包的 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
34、)/16計算 . 無論何時發送接收報告, 都用當前的 J 值.此處描述的抖動計算允許與協議獨立的監視器對來自不同實現的報告進行有效的解釋.上一 SR報文 (LSR):32比特 接收到的來自源SSRC_n的最新 RTCP發射機報告 (SR) 的 64 位NTP時間標志的中間 32位 . 若還沒有接收到 SR,該域值為零 .自上一 SR的時間延時 (DLSR) :32 比特 是從收到來自 SSRC_n的 SR包到發送此接收報告塊之間的延時 , 以 1/65536 秒為單位 . 若還未收到來自 SSRC_n的 SR包 , 該域值為零 .假設 SSRC_r為發出此接收報告塊的接收機. 源 SSRC_n
35、可以通過記錄收到此接收報告塊的時刻 A來計算到 SSRC_r的環路傳輸時延 . 可以利用最新的 SR時間標志 (LSR) 域計算整個環路時間 A-LSR, 然后減去此 DLSR域得到環路傳播時延 .可以用此來近似測量到一族接收機的距離, 盡管有些連接可能有非常不對稱的時延.接收機報告包 (RR)與發射機報告包基本相同 ,除了包類型域包含常數的 5 個字 (NTP 和 RTP 時間標志和發射機包和字節計數 ).余下區域與發送和接收據報告 ,在 RTCP 復合包頭部加入空的 RR 包(RC=0) 。201 和沒有發射機信息SR 包意義相同 .若沒有其它三種報文的格式由于比較簡單,不再具體描述;2
36、3 RTP 工作機制2 3 1 RTP 工作機制RTP根據應用程序的要求將流媒體數據包封裝成RTP數據包并進行發送;它靠上層的調用以及依賴網絡層發送來實現;工作時, RTP 協議從上層接收流媒體信息碼流(如H.263 ),裝配成RTP 數據包發送給下層,下層協議提供RTP 和 RTCP 的分流。如在UDP 中, RTP 使用一個偶數號端口,則相應的 RTCP 使用其后的奇數號端口。 RTP 數據包沒有長度限制,它的最大包長只受下層協議的限制。2 3 2 RTCP 工作機制RTCP 報文不封裝音視頻數據,而是封裝發送端或者接收端的統計報表信息;在 RTP會話期間,每個參與者周期性的向其它參與者發
37、送RTCP控制信息包,如下圖1-2所示:圖 1-2 RTCP 工作示意圖因為網絡的情況很不穩定,如果網絡情況好我們可以減少語音的延遲時間,也可以增大視頻的發送幀率或質量。 若網絡狀況不好我們可以增大語音延遲時間以保證語音連續, 也可減少視頻的發送幀率或質量,以減少網絡的阻塞。RTCP 包的發送率根據與會者的數量來調整.三RTP 協議關鍵技術指標31 時間戳時間戳字段是 RTP首部中說明數據包時間的同步信息, 是數據能以正確的時間順序恢復的關鍵。時間戳的值給出了分組中數據的第一個字節的采樣時間 (Sampling Instant) ,要求發送方時間戳的時鐘是連續、 單調增長的, 即使在沒有數據輸
38、入或發送數據時也是如此。 在靜默時,發送方不必發送數據, 保持時間戳的增長, 在接收端, 由于接收到的數據分組的序號沒有丟失, 就知道沒有發生數據丟失, 而且只要比較前后分組的時間戳的差異, 就可以確定輸出的時間間隔。RTP規定一次會話的初始時間戳必須隨機選擇,但協議沒有規定時間戳的單位,也沒有規定該值的精確解釋, 而是由負載類型來確定時鐘的顆粒, 這樣各種應用類型可以根據需要選擇合適的輸出計時精度。在 RTP傳輸音頻數據時, 一般選定邏輯時間戳速率與采樣速率相同, 但是在傳輸視頻數據時, 必須使時間戳速率大于每幀的一個滴答。 如果數據是在同一時刻采樣的, 協議標準還允許多個分組具有相同的時間
39、戳值,如多個分組屬于同一畫像。RTCP 中的 SR( Sender Report 發送端報告)控制分組包含NTP(網絡時間,是以1900-1-1零時為起點的系統絕對時間)時間戳和RTP 時間戳(封裝數據時候打上的時間戳與媒體幀上打上的時間戳不同)可用于同步音視頻媒體流。其實現機制如下:RTP時間戳是依據鄰近的RTP數據包中的時間戳結合NTP 時間差得到的,用公式表達為:RTP_tsi = tsi + NTPi-NTP'i其中:RTP_tsi 表示 RTCP 中的 RTP 時間戳; tsi 表示鄰近的RTP 包中的時間戳;NTPi 表示 RTCP的網絡時間戳;NTP'i表示鄰近的
40、RTP包對應的網絡時間戳;下標表示第i 個源。RTP_tsj=tsj+NTPj NTP'j表示第j 個源的RTP時間戳;因此,i 和源j 之間的相對時差可以表示為:(RTP_tsitsi)-( RTP_tsj - tsj) = (NTPiNTP'i) -( NTPj NTP'j );由于 NTP 同步,差值可以反映出兩個源的相對時差。因為要同步不同來源的媒體流,必須使得同步他們的絕對時間基準,而NTP 時間戳正是這樣的絕對時間基準4 。而對于同一來源的媒體流,應用RTP 的時間戳來保證其同步。32 時延影響時延的因素有多個方面:編解碼、網絡、防抖動緩沖、報文隊列等都影響
41、時延,其中有些是固定時延,如編解碼網絡速率等;有些是變化的,如防抖動緩沖和隊列調度等,固定的時延可以通過改變編解碼方式和提高網絡速率來改變, 而變化的時延通常采用提高轉發效率來提高;假設 SSRC_r為發出一個接收報告塊的接收機. 源 SSRC_n可以通過記錄收到接收報告塊的時刻 A來計算到 SSRC_r的環路傳輸時延 . 可以利用最新的 SR時間標志 (LSR) 域計算整個環路時間 A-LSR, 然后減去此 DLSR域得到環路傳播時延 .33 抖動在視頻電話中,語音、視頻數據都是使用UDP 協議傳送的,但這種協議傳輸的數據包在網絡層不能保證其發送順序, 需要應用層進行排序。 在網絡的傳輸中都
42、會有延時, 且隨著網絡負載的變化, 延時的長短也不相同, 對于語音數據, 如果接收方收到后立即播放, 很容易造成語音的抖動。RTP數據包到達時刻統計方差的估計值, 以時間標志為單位測量, 用無符號整數表達到達時刻抖動J 定義為一對包中接收機相對發射機的時間跨度差值的平均偏差( 平滑后的絕對值 ). 如以下等式所示, 該值等于兩個包相對傳輸時間的差值, 相對傳輸時間是指包的RTP時間標志和到達時刻接收機時鐘 , 以同一單位的差值 . 若 Si 是包 i 的 RTP時間標志 ,Ri 是包 i 以 RTP時間標志單位的到達時刻值 , 對于兩個包 i 和 j,D 可以表達為D(i,j) = (Rj -
43、 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計算 . 無論何時發送接收報告, 都用當前的J 值 .為了更好的解決抖動的問題,最好能實現抖動緩存 (原理比較簡單, 在此不做詳細描述) ,一是保證語通道讀取數據包的順序正確, 二是控制接收方按照采集的時間順序播放語音, 減少語音的抖動;另外提供 QoS 和資源預留使語音數據獲得優先
44、發送和獲得固定的帶寬也是解決抖動問題的主要手段。3 4 丟包率丟包率是通過計算接收包數量和發送包數量的比率得到的,丟包率獲得的整個流程是:發送方每間隔一定時間讀取每個發送通道的發包數量和數據長度,組成一個此通道的RTCP報文發送給接收方,同時將發送數據包計數清零;接收方收到RTCP 包后, 讀取接收通道接收到的包數量, 并計算出丟包率,通過一個RTCP 接收匯報包發送給發送方,同時對接收數據包計數清零。自從前一SR 包或 RR包發射以來 , 從 SSRC_n傳來的 RTP數據包的損失比例, 以固定點小數的形式表示 , 定義為損失包數被期望接收的包數除 , 在下一段中定義 . 若由于復制而導致包
45、損為負值 , 損失比例值設為零 . 注意在收到上一個包后 , 接收機無法告之以后的包是否丟失 , 若在上一個接收報告間隔內從某個源發出的所有數據包都丟失, 那么將不為此源發送接收報告塊.3 5 會話和流兩級分用一個 RTP 會話 (Session)包括傳給某個指定目的地對(Destination Pair) 的所有通信量,發送方可能包括多個。而從同一個同步源發出的RTP 分組序列稱為流(Stream),一個 RTP 會話可能包含多個 RTP 流。一個 RTP 分組在服務器端發送出去的時候總是要指定屬于哪個會話和流,在接收時也需要進行兩級分用,即會話分用和流分用。只有當RTP 使用同步源標識(S
46、SRC)和分組類型 (PTYPE) 把同一個流中的分組組合起來,才能夠使用序列號 (Sequence Number) 和時間戳 (Timestamp) 對分組進行排序和正確回放。3 6 多種流同步控制RTCP的一個關鍵作用就是能讓接收方同步多個RTP流,例如:當音頻與視頻一起傳輸的時候,由于編碼的不同, RTP使用兩個流分別進行傳輸,這樣兩個流的時間戳以不同的速率運行,接收方必須同步兩個流,以保證聲音與影像的一致。為能進行流同步,RTCP要求發送方給每個傳送一個唯一的標識數據源的規范名(Canonical Name ),盡管由一個數據源發出的不同的流具有不同的同步源標識(SSRC),但具有相同
47、的規范名,這樣接收方就知道哪些流是有關聯的。 而發送方報告報文所包含的信息可被接收方用于協調兩個流中的時間戳值。發送方報告中含有一個以網絡時間協議NTP(Network Time Protocol)格式表示的絕對時間值,接著 RTCP報告中給出一個 RTP時間戳值,產生該值的時鐘就是產生RTP分組中的 TimeStamp字段的那個時鐘。 由于發送方發出的所有流和發送方報告都使用同一個絕對時鐘,接收方就可以比較來自同一數據源的兩個流的絕對時間,從而確定如何將一個流中的時間戳值映射為另一個流中的時間戳值。四RTP 協議應用方案4 1 RTP 協議應用方案之單播在客戶端與媒體服務器之間建立一個單獨的
48、數據通道,從一臺服務器送出的每個數據包只能傳送給一個客戶端,這種傳送方式稱為單播。優點:便于控制和管理;缺點:每個用戶必須分別對媒體服務器發送單獨的查詢,而媒體服務器必須向每個用戶發送所申請的數據包拷貝。這種巨大冗余造成服務器負擔沉重,響應需要很長時間.4 2 RTP 協議應用方案之廣播廣播指的是用戶被動地接收流。在廣播過程中,數據包的單獨一個拷貝將發送給網絡上的所有用戶,客戶端接收流,但不能控制流 ; 廣播方式中資料包的單獨一個拷貝將發送給網絡上的所有用戶 , 而不管用戶是否需要,會非常浪費網絡帶寬。優點:簡單缺點:浪費網絡帶寬4 3 RTP 協議應用方案之組播組播技術構建的網絡,允許路由器一次將數據包復制到多個通道上。采用組播方式,媒體服務器只需要發送一個信息包,所有發出請求的客戶端即可同時收到連續數據流而無延時。這就大大減少了網絡上傳輸的信息包的總量,組播吸收了單播和廣播兩種發送方式的長處,克服了上述兩種發送方式的弱點,將資料包的單獨一個拷貝發送給需要的那些客戶。組播不會復制資料包的多個拷貝傳輸到網絡上,也不會將資料包發送給不需要它的那些客戶,保證了網絡上多媒體應用占用網絡的最小帶寬。優點:減少網絡上傳輸的信息包的總量。網絡利用效率大大提高,成本大為下降;缺點: 當不同的用戶同時點播同一個節目時, 由于點播總有先后順序,從開始播放, 而是依照網絡中同時點播此節目的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 設備維修工作總結
- 設備設施部強電與暖通管理方案
- 安徽省阜陽市阜南實驗中學2024-2025學年高二下學期第二次階段性檢測(期中)生物試卷(有答案)
- 打造高效運營網絡劇與微電影行業公司的策略框架
- 森林古猿生物題目及答案
- 日語授受關系題目及答案
- 2021年12月山東省普通高中學業水平合格性考試物理仿真模擬試卷A(考試版)
- 2025屆北京市西城區高三一模語文試題(解析版)
- 2024-2025學年四川省樂山市普通高中高二上學期期末質量檢測語文試題(解析版)
- 高爐爐頂裝料設備課件
- 國家開放大學電大《機電一體化系統》機考形考任務1及2題庫答案
- 真空系統的設計計算課件
- 潘祖仁版高分子化學(第五版)課后習題答案.24401
- 搭橋手術配合改
- 《愛的教育》課外閱讀指導課課件
- 10以內序數(課堂)課件
- 2021年安徽省農業信貸融資擔保有限公司招聘筆試試題及答案解析
- 精選芭蕾舞男女演員之間的潛規則匯總
- Q∕SY 1770.6-2014 連續管常規修井作業規程 第6部分:速度管柱作業
- 大型污泥脫水離心機機組安裝及調試工法
- 國家重點保護野生植物(Ⅱ級)采集申請表
評論
0/150
提交評論