RTP/RTCP

 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
RFC3550 - RTP: A Transport Protocol for Real-Time Applications

http://www.ietf.org/rfc/rfc3550.txt?number=3550

RFC3551 - RTP Profile for Audio and Video Conferences with Minimal Control
http://www.ietf.org/rfc/rfc3551.txt?number=3551

RFC2198 - RTP Payload for Redundant Audio Data
http://www.ietf.org/rfc/rfc2198.txt?number=2198

RFC2205 - Resource ReSerVation Protocol (RSVP)
http://www.ietf.org/rfc/rfc2205.txt?number=2205

RFC2750 - RSVP Extensions for Policy Control
http://www.ietf.org/rfc/rfc2750.txt?number=2750

RFC3936 - Procedures for Modifying the Resource reSerVation Protocol (RSVP)
http://www.ietf.org/rfc/rfc3936.txt?number=3936

RFC4495 - A Resource Reservation Protocol (RSVP) Extension for the Reduction of Bandwidth of a Reservation Flow
http://www.ietf.org/rfc/rfc4495.txt?number=4495

RFC2748 - The COPS (Common Open Policy Service) Protocol
http://www.ietf.org/rfc/rfc2748.txt?number=2748

RFC2749 -
COPS usage for RSVP
http://www.ietf.org/rfc/rfc2749.txt?number=2749

RFC4261 - Common Open Policy Service (COPS) Over Transport Layer Security (TLS)
http://www.ietf.org/rfc/rfc4261.txt?number=4261

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - -

因爲IP互聯網不是等時系統,所以在發送實時數字數據時需要額外的協議支持。除了允許檢測複製或重新排序的分組的基本次序信息之外,每個分組還必須傳送單獨的時間戳,告訴接收方應該播放分組中的數據的準確時間。
如果網絡中有抖動,接收方需要實現回放緩衝區來準確地重建信號。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

在IP互聯網上傳輸數字音頻或視頻信號所使用的協議是實時傳輸協議 (Real-Time Transport Protocol, RTP)。RTP不包含確保及時交付的機制,必須由底層系統來保證。

RTP提供兩個關鍵的特性:每個分組中的序號以及時間戳。序號允許接收方檢測不按順序的交付或數據丟失,時間戳允許接收方控制回放。

設計RTP是爲了傳送包括音頻和視頻等廣泛的實時數據,所以RTP不強制統一的語義解釋,而是每個分組以固定的首部開頭,首部中的字段指定如何解釋其餘的首部字段以及如何解釋有效載荷。

***********
*********************************************************************
The RTP header has the following format:
    0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|V=2|P|X| CC |M| PT | sequence number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| timestamp |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| synchronization source (SSRC) identifier |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
| contributing source (CSRC) identifiers |
| .... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| payload (audio, video....) |
| +-+-+-+-+-+-+-+-+-+-+-+-+
| ....| padding | count |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
開始12個八進制出現在每個RTP包中,而CSRC標識列表僅出現在混合器插入時。各段含義如下:<?XML:NAMESPACE PREFIX = O />

①版本(V

2位,標識RTP版本。

②填充標識(P

1位,如設置填充位,在包尾將包含附加填充字,它不屬於有效載荷。填充的最後一個八進制包含應該忽略的八進制計數。某些加密算法需要固定大小的填充字,或爲在底層協議數據單元中攜帶幾個RTP包。

③擴展(X

1位,如設置擴展位,固定頭後跟一個頭擴展。

CSRC計數(CC

4位,CSRC計數包括緊接在固定頭後CSRC標識符個數。

⑤標記(M

1位,標記解釋由設置定義,目的在於允許重要事件在包流中標記出來。設置可定義其他標示位,或通過改變位數量來指定沒有標記位。

⑥載荷類型(PT

7位,記錄後面資料使用哪種 Codec , receiver 端找出相應的 decoder 解碼出來。

常用 types

Payload Type

Codec

0

PCM μ -Law

8

PCM-A Law

9

G..722 audio codec

4

G..723 audio codec

15

G..728 audio codec

18

G..729 audio codec

34

G..763 audio codec

31

G..761 audio codec

⑦系列號

16位,系列號隨每個RTP數據包而增加1,由接收者用來探測包損失。系列號初值是隨機的,使對加密的文本攻擊更加困難。

⑧時標

32位,時標反映RTP數據包中第一個八進制數的採樣時刻,採樣時刻必須從單調、線性增加的時鐘導出,以允許同步與抖動計算。時標可以讓receiver端知道在正確的時間將資料播放出來。
由上圖可知,如果只有系列號,並不能完整按照順序的將data播放出來,因爲如果data中間有一段是沒有資料的,只有系列號的話會造成錯誤,需搭配上讓它知道在哪個時間將data正確播放出來,如此我們才能播放出正確無誤的信息。

SSRC

32位,SSRC段標識同步源。此標識不是隨機選擇的,目的在於使同一RTP包連接中沒有兩個同步源有相同的SSRC標識。儘管多個源選擇同一個標識的概率很低,所有RTP實現都必須探測並解決衝突。如源改變源傳輸地址,也必須選擇一個新SSRC標識以避免插入成環行源。

CSRC列表

0到15項,每項32位。CSRC列表表示包內的對載荷起作用的源。標識數量由CC段給出。如超出15個作用源,也僅標識15個。CSRC標識由混合器插入,採用作用源的SSRC標識。
********************************************************************************


RTP的關鍵部分是對變換 (也就是在中間位置改變數據流的編碼)或混合 (也就是從多個源接收數據流,把它們組合成一個數據流,然後發送結果)的支持。混合和組播技術的結合能使交付給每個參與主機的數據報減少。

RTP首部中的字段標識發送方,指示是否發生混合。同步源標識符字段指定數據流的源站。每個源站必須選擇一個惟一的32位標識符,如果發生衝突,則協議包括解決衝突的機制。當混合器組合多個數據流時,混合器就變成新的數據流的同步源。但是有關初始源的信息沒有丟失,這是因爲混合器使用大小可變的參與源ID字段提供正在混合的數據流的同步ID。4位CC字段給出參與源的數目,最多可以列出15個源。

傳統的TCP 協議是一個面向連接的協議,它的重傳機制和擁塞控制機制都是不適用於實時多媒體傳輸的。RTP 是一個應用型的傳輸層協議,它並不提供任何傳輸可靠性的保證和流量的擁塞控制機制。RTP不像傳輸協議那樣發揮作用,在實際應用中不會在IP中直接封裝,而是RTP在UDP上運行,這意味着把每條RTP報文封裝到UDP數據報中。使用UDP的主要優點是併發性 -- 單個計算機可以有多個使用RTP的應用程序,而不會互相干擾。RTP不使用保留的UDP端口號,而是爲每個會話分配一個端口,因此必須把端口號通知給遠程的應用程序。通常情況下RTP選擇偶數UDP端口號。



- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

RTP控制協議 (RTCP),是RTP的一個完整部分,提供需要的控制功能。RTCP允許發送方和接收方相互傳輸一系列報告,這些報告包含有關正在傳輸的數據以及網絡性能的額外信息。
在RTP會話期間,各參與者週期性地傳送RTCP包,包中含有已發送的數據包的數量、丟失的數據包的數量等統計資料。因此,服務器可以利用這些信息動態地改變傳輸速率,甚至改變有效載荷類型。RTP和RTCP配合使用,能以有效的反饋和最小的開銷使傳輸效率最佳化,故特別適合傳送網上的實時數據。

當應用程序開始一個rtp會話時將使用兩個端口:一個給rtp,一個給rtcp。rtp本身並不能爲按順序傳送數據包提供可靠的傳送機制,也不提供流量控制或擁塞控制,它依靠rtcp提供這些服務。RTCP報文封裝在UDP中,以便進行傳輸,發送時使用比它們所屬的RTP流的端口號大1的協議號。

RTCP使用5個基本報文類型允許發送方和接收方交換有關會話的信息。

類型 含義
-------------------------------------------------------------
200 發送方報告 (SR)
201 接收方報告 (RR)
202 源描述報文 (SDES)
203 結束報文 (BYE)
204 應用程序特定報文 (APP)

1. 發送方在停止發送數據流時傳輸一條結束報文
2. 應用程序特定報文提供了基本功能的擴展,以允許應用程序定義報文類型。
3. 接收方週期性地傳輸接收方報告報文,向源通知接收的條件。
4. 發送方週期性地傳輸發送方報告報文,提供絕對的時間戳。而絕對時間戳爲接收方提供了使多個數據流同步的機制。
5. 發送方還傳輸源站描述報文,提供有關擁有對源站控制權的用戶的常規信息。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

H.323不是單個協議,而是制定如何把多個協議組合起來,形成一個實用的IP電話技術系統。

H.323爲IP電話技術使用的協議:
協議 目的
-----------------------------------------------
H.225.0 建立通話所使用的信令
H.245 在通話中控制和返回
RTP 實時數據傳輸(序列和時限)
T.120 交換和通話有關的數據


SIP只涵蓋信令,不推薦特殊的編碼,也不要求對實時傳輸使用RTP。SIP使用C/S交互方式。爲了提供有關通話的信息,SIP要依靠一個伴生的協議,即會話說明協議 (SDP)。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IETF提供的在IP環境中的QoS方案:
資源預留協議 (Resource Reservation Protocol, RSVP)
通用開放策略服務 (Common Open Policy Services, COPS)

RSVP處理預留請求並進行應答,它不是路由協議,也不強制在建立數據流時就啓用策略,而是在發送任何數據之前運轉。每個RSVP流是單工的 (simplex),也就是單向傳輸的。
端點使用RSVP在指定了QoS界限的IP互聯網上請求單工數據流。如果路徑上的路由器同意請求,則認可數據流,否則拒絕數據流。如果應用程序需要兩個方向上的QoS,則每個端點必須使用RSVP請求單獨的數據流。

當RSVP請求抵達時,路由器必須對兩個方面進行評估:可行性(也就是路由器是否具有滿足請求的資源)和策略(也就是請求是否符合策略約束)。可行性是本地決策,而策略強制要求全局合作。

要實現全局策略,IETF使用兩級模型,用C/S模式在兩級之間交互作用。當路由器接收到RSVP請求時,它就變成客戶,與服務器協商以確定請求是否符合策略約束,該服務器稱爲策略確定點(Policy Decision Point, PDP)。PDP不處理通信量,只對請求進行評估,檢查它是否符合全局策略。如果PDP認可請求,則路由器必須作爲策略執行點(Policy Enforcement Point, PEP)進行操作,確保通信量不會超過認可的策略。


COPS協議定義在路由器和PDP之間的C/S交互作用,或者如果組織有多級策略服務器,就定義路由器和本地PDP之間的C/S交互作用。雖然COPS定義它自己的報文首部,但是底層格式和RSVP共享許多具體字段。而且,對於請求報文中的單個數據項,COPS使用和RSVP一樣的格式。這樣,當路由器接收到RSVP請求時,它可以提取和策略相關的數據項,把它們放在COPS報文中,把結果發送給PDP。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章