基于多流的重傳策略論文
摘 要 在本篇論文中,針對現有RTP/UDP在傳輸流媒體的不足,我提出了一種新的傳輸技術(shù):MSSR-RTP(Multiple Stream Selective Retransmission-Realtime Transmission Protocol,多流選擇性重傳實(shí)時(shí)傳輸協(xié)議)應用層協(xié)議,然后利用這個(gè)協(xié)議建立了在Internet中傳輸H.264/AVC架構體系。在實(shí)際項目中成功應用,并顯示出其很好的網(wǎng)絡(luò )特性以及TCP友好特性。
關(guān)鍵詞 RTP/RTCP;多流;選擇性重傳
現有的Internet網(wǎng)的“盡力傳輸模式”并不能很好的滿(mǎn)足Qos的需求,大家都在不斷尋求解決方案,著(zhù)名的Diffserv體系和Intserv體系都是在IP網(wǎng)絡(luò )中研究Qos提出的,但由于與現有網(wǎng)絡(luò )的兼容性以及兩者體系架構的復雜性,其到目前都沒(méi)能應用到實(shí)際Internet網(wǎng)絡(luò )中,在對網(wǎng)絡(luò )有特殊Qos需求的流媒體領(lǐng)域,如何在現有網(wǎng)絡(luò )體系中最大限度的解決延時(shí),延遲抖動(dòng),丟包等問(wèn)題一直是大家研究的熱點(diǎn)。目前的主流解決方案中:RTP/UDP架構在一定程度上解決問(wèn)題,但其存在不足,針對它的不足,我提出了MSSR-RTP應用層協(xié)議,利用這個(gè)協(xié)議建立了MSSR-RTP/UDP的架構體系。
1 介紹
在Internet上的流媒體應用越來(lái)越廣泛,但現有的傳輸層UDP和TCP協(xié)議都不能很好的支持流媒體的傳輸,其主要原因跟壓縮技術(shù)和現有的網(wǎng)絡(luò )體系架構有關(guān)。目前在流媒體領(lǐng)域的主流解決方案是:RTP/UDP[1],即在UDP層上封裝RTP層,通過(guò)應用層來(lái)加強和改善多媒體數據在Internet傳輸上的性能。但目前這個(gè)方案仍有不足,我們以目前的主流視頻壓縮算法:H.264/AVC[2]為例:
a.RTP沒(méi)有分優(yōu)先權的字段。
H.264/AVC有3種類(lèi)型的幀(依據不同的軟件,其提供的幀類(lèi)型可能更多):I幀,進(jìn)行幀內獨立編碼,可以看作參考幀;P幀,為前向預測幀,參考前面的I幀和P幀進(jìn)行編碼,采用運動(dòng)補償預測幀間誤差;B幀編碼依賴(lài)于前面的和后面的I或P幀。在傳輸中I幀和P幀數據出現錯誤,接收端視頻流回顯質(zhì)量會(huì )受到嚴重影響。特別是I幀數據,通過(guò)實(shí)際項目的測試發(fā)現,I幀的丟失將使畫(huà)面出現花屏,并且出現動(dòng)畫(huà)效果,畫(huà)面不夠流暢。同時(shí),由于網(wǎng)絡(luò )資源限制,我們又不能把所有視頻數據同樣對待,必須對其分類(lèi),使得關(guān)鍵數據能得到最大限度保障,而一些不重要的數據就不需要進(jìn)行重傳以減輕網(wǎng)絡(luò )負擔,但RTP機制并沒(méi)提供對信息分類(lèi)的功能。在我提出的模型中,利用多流的特點(diǎn),為每個(gè)流設置重傳時(shí)間,在重傳時(shí)間內的數據進(jìn)行重傳,超過(guò)重傳時(shí)間的數據進(jìn)行丟棄,通過(guò)這種方法達到對不同優(yōu)先權的數據進(jìn)行分類(lèi)處理。
b.RTP無(wú)法滿(mǎn)足分片的需要。
由于視頻數據幀通常很大,如果不進(jìn)行分片的話(huà),分片和重組將給路由器和目的主機增加了額外的負擔;ㄙM額外的精力去創(chuàng )建數據報分片和分片重組。由于這個(gè)原因,需要將分片保持為最小,這里通過(guò)將應用層的數據段限制在一個(gè)較小的范圍內實(shí)現。由于所有IP支持的數據鏈路協(xié)議的MTU都被認為至少有576字節,所以可以使用548字節的MSS、8字節的UDP數據段頭部和20字節的IP數據報報頭的分片方法。
c.無(wú)法通過(guò)RTP/RTCP來(lái)提供擁塞控制和流量管理。
網(wǎng)絡(luò )資源的公平共享提出了要終端提供擁塞控制以防止網(wǎng)絡(luò )惡化。為了防止接收端被數據“淹沒(méi)”,也需要發(fā)送端提供流量管理的功能,但標準RTP機制沒(méi)有提供這種功能。
針對現有架構的不足,提出一種在RTP基礎上進(jìn)行擴展的體系:MSSR-RTP/UDP。利用在終端增加多流技術(shù),分片/重組功能,增加CWND/RWND變量對現有的不足進(jìn)行改進(jìn)。
2 體系架構
根據H.264/AVC和現有Internet的特點(diǎn),我擴展了RTP/RTCP的功能,提出了MSSR-RTP(Multiple stream selective retransmission-Realtime transmission protocol)模型,其圖如圖1。
系統的研究對象是H.264/AVC,它為網(wǎng)絡(luò )開(kāi)發(fā)者提供的是I,P,B幀,我把每一幀作為一個(gè)發(fā)送對象,取名:ADU(Application Data Unit應用程序數據單元)。由于通常視頻數據都很大,需要進(jìn)行分片。分片后通過(guò)控制模塊添加MSSR-RTP頭信息,并把封裝后的數據放入緩存,在發(fā)送方,無(wú)論數據屬于哪個(gè)流,都放入同一個(gè)緩存中。最后由調度中心將數據調入傳輸層,然后發(fā)送到接收方,接收方通過(guò)重組分片,收集丟失數據,依據流的特性,將需要重傳的數據通過(guò)MSSR-RTCP回饋到發(fā)送方,進(jìn)行數據重傳。如果一幀的每個(gè)分片都到達接收端,則重組為一幀數據上傳給解碼器。
2.1 MSSR-RTP,MSSR-RTCP的頭格式以及流結構
圖2是MSSR-RTP的頭格式,作為對標準RTP的擴充,有其新特點(diǎn)。頭部信息中,順序號是用于分片重組的。流序號表示分片是屬于哪個(gè)流的。流順序號表示在一個(gè)流中的順序號,如果一個(gè)大的ADU分片,那不同片擁有相同的.流順序號。ADU長(cháng)度是表示此分片對應的ADU的長(cháng)度。ADU偏移量是表示此分片在對應的ADU中的偏移量。
圖3是MSSR-RTCP的頭格式。MSSR-RTCP是在流媒體傳輸中與MSSR-RTP協(xié)同工作的協(xié)議。MSSR-RTCP定期發(fā)送供控制模塊使用的發(fā)送端或則接收端的統計報告。包括發(fā)送分組數、丟失分組數、間隔到達的抖動(dòng)等。對于每個(gè)正在發(fā)送的RTP分組,發(fā)送方會(huì )創(chuàng )建并傳送RTCP發(fā)送方報告分組,在本體系中,與標準的RTCP一致。對于每個(gè)正在接收RTP分組的接收方,作為對標準RTCP的擴展,MSSR-RTCP還提供了RWND字段和ACK GAP字段,前者用于在發(fā)送端進(jìn)行流量控制,后者用于進(jìn)行重傳。省略部分與標準RTCP一致,參考文獻[1]。
圖4是流數據結構。作為我提出的結構的核心,它是決定屬于此流的數據的重傳時(shí)間,對于流媒體,它并不需要所有的數據都到達,對于某些延遲超過(guò)設定的時(shí)間的幀并不需要重傳,這是由流媒體自身特點(diǎn)決定,并且,比其傳統單流,可以避免頭阻塞。
2.2 數據傳輸以及重傳策略
ADU傳到MSSR-RTP層,會(huì )首先進(jìn)行分片處理,然后由控制模塊加上MSSR-RTP報頭,由調度策略進(jìn)行數據發(fā)送,發(fā)送的數據依據其所在流的重傳時(shí)間決定發(fā)送后是否放入緩存。如果重傳時(shí)間不為0,發(fā)送后將緩存,如果重傳時(shí)間為0,則發(fā)送后就丟棄。緩存的數據依據MSSR-RTCP回饋進(jìn)行重傳和移除。其數據傳輸示意圖如下:
圖5 數據傳輸
服務(wù)器端通過(guò)函數SR_CREATE創(chuàng )建端口,然后調用函數SR_LISTEN進(jìn)行偵聽(tīng),客戶(hù)端一旦需要接收數據,通過(guò)調用函數SR_CONNECT與服務(wù)器端建立連接,連接建立后將使用兩個(gè)端口,一個(gè)端口用于傳輸帶有MSSR-RTP頭的視頻數據,另一個(gè)用于傳輸MSSR-RTCP控制信息。
數據發(fā)送規則如下:
a. 如果發(fā)送出去未被確認的數據已經(jīng)達到或者超過(guò)CWND的時(shí)候,數據發(fā)送者不能再傳送任何數據到網(wǎng)絡(luò )中。
b. 當RWND為0的時(shí)候,數據發(fā)送者不能再傳送任何數據到網(wǎng)絡(luò )中。當未被確認的數據未超過(guò)CWND的時(shí)候,數據發(fā)送者必須保證有一個(gè)包在網(wǎng)絡(luò )中未被確認。
c. 當選擇發(fā)送數據的時(shí)候,重發(fā)的數據要比新數據優(yōu)先。
通過(guò)以上的數據發(fā)送規則,能夠進(jìn)行擁塞控制與流量控制,滿(mǎn)足對網(wǎng)絡(luò )資源公平共享的原則,同時(shí)也能防止大量視頻數據“淹沒(méi)”接收端。
重傳規則如下:
a. 超時(shí)重傳。
b. 接收端通過(guò)MSSR-RTCP回饋指示重傳。
超時(shí)重傳的原理與TCP中采用的方法一樣,RTT的時(shí)間計算采用Karn’S算法,參考文獻[3]。
3 接收端丟失判斷和重傳策略
依據H.264/AVC的網(wǎng)絡(luò )特點(diǎn),我們只對I幀數據進(jìn)行數據重傳,并且依據實(shí)際項目對實(shí)時(shí)性的不同要求設置流中重傳時(shí)間大小。
使用MSSR-RTP,接收端通過(guò)到達包的MSSR-RTP頭部信息來(lái)判斷包的丟失。通過(guò)順序號,如果沒(méi)發(fā)生數據丟失,則順序號必定是連續的。如果不連續,則說(shuō)明發(fā)生丟失。對于需要重傳的流中,由于需要時(shí)間信息來(lái)決定是否需要重傳,因此必須要知道丟失的分片的時(shí)間信息,由于I幀數據量大,通;殖蓭资习賯(gè)片,所以可以通過(guò)發(fā)現在同一個(gè)I幀中其他分片(它們擁有相同的流順序號)來(lái)找出丟失分片的時(shí)間信息。
a. 一個(gè)幀中的分片的丟失判斷:通過(guò)在流中重組ADU的時(shí)候來(lái)檢測,如果發(fā)現順序號不連續,則說(shuō)明有分片丟失。這時(shí)候的重傳策略由這個(gè)幀所在的流決定。時(shí)間信息通過(guò)缺失此順序號但有相同流順序號的那些分片提供。
b. 一個(gè)幀中的開(kāi)始分片的丟失判斷:通過(guò)在流中重組ADU的時(shí)候來(lái)檢測。這時(shí)通過(guò)重組ADU發(fā)現找不到偏移量為0的分片知道有開(kāi)始分片丟失。這時(shí)候的重傳策略由這個(gè)幀所在的流決定。時(shí)間信息通過(guò)缺失此順序號的但有相同流順序號那些分片提供。
c. 一個(gè)幀中的結尾分片的丟失判斷:在重組ADU時(shí),通過(guò)發(fā)現ADU長(cháng)度和重組后長(cháng)度不相等,但順序號是連續的,則說(shuō)明一個(gè)幀中的結尾分片的丟失,時(shí)間信息通過(guò)在同一個(gè)ADU的其它分片(即:有相同流順序號的那些分片)提供。這時(shí)候的重傳策略由這個(gè)幀所在的流決定。
d. 一個(gè)幀中的所有分片丟失判斷:在重組ADU時(shí),通過(guò)發(fā)現不連續的流順序號說(shuō)明有一個(gè)幀中的所有分片丟失。這種情況,我們將不重傳此幀的任何數據。原因是因為I幀數據量大,分片多,全部丟失可能性很小和重傳整個(gè)I幀代價(jià)昂貴。
4 結論語(yǔ)
此體系架構已經(jīng)應用在為重慶某集團開(kāi)發(fā)的“重大危險源實(shí)時(shí)視頻監控系統”中,通過(guò)實(shí)際測試,發(fā)現其有很好的網(wǎng)絡(luò )適應性以及TCP友好特性,并且性能比其傳統的RTP/UDP有比較多的改善。
參考文獻
[1] Henning Schulzrinne’s RTP site,
http://www.cs.columbia.edu/~hgs/rtp/,1999
[2] M.-T. Sun and A. R. Reibman, Compressed Video Over Networks.Marcel Dekker Inc., 2001
[3] Karn,P., and C.Partridge.1987.Improving round-trip time estimates in reliable transport protocols. Presentation. SIGCOMM’87
【基于多流的重傳策略論文】相關(guān)文章:
關(guān)于營(yíng)銷(xiāo)策略基于知識的論文06-12
論文:淺談基于IP網(wǎng)絡(luò )的Qos策略研究06-23
論文基于水利質(zhì)量問(wèn)題成因及處理策略06-25
基于營(yíng)銷(xiāo)新形勢的電話(huà)營(yíng)銷(xiāo)策略研究論文04-12
基于權力話(huà)語(yǔ)理論下的翻譯策略研究論文04-15
基于多單片機的串口擴展設計論文04-21