基于RTP的QOS算法简介
服務質量QoS(Quality of Service)用于評估服務方滿足客戶服務需求的能力。通過配置QoS,對企業的網絡流量進行調控,避免并管理網絡擁塞,減少報文的丟失率,同時也可以為企業用戶提供專用帶寬或者為不同的業務(語音、視頻、數據等)提供差分服務。
本方案的QOS是狹義上的QOS,特指用來解決RTP(UDP)傳輸在不可靠線路(尤其是3G,4G,WIFI)下網絡亂序,包重復,包延時抖動的一種技術。
RTP協議頭的包序號為我們進行亂序重排以及重復包丟棄提供了理想的參考值。正常情況下,包序號逐包遞增。本方案通過對接收的數據包進行局部緩存并排序,同時去除接收的重復包以及超時包,最大限度保證接收質量。
本方案相比其他不同的排序方案優勢在于“邊排序邊輸出”,而不是簡單的“先排序后輸出”。在沒有丟包的情況下,后者也會引入【系統延時】,而本方案則僅在出現亂序,丟包時才會引入“等待延時”,這種等待延時是實現QOS無法避免的。
經過QOS處理后的數據包按照包序號從小到大輸出給后面的FEC解碼環節,后者進行丟包的恢復,二者相互配合,各司其職。
方案使用環形隊列作為數據結構,通過“條件輸入”與“周期取包”實現所需功能。其中,前者負責將輸入的包放到合適的位置或做丟棄處理,后者“周期取包”是外部觸發的,對隊列進行掃描并輸出滿足條件的包的過程。
新到數據包根據其序號和QOS隊列中已有序列號進行對比,計算出其存放位置,設Pnew為新到包的位置,Pout為即將輸出的第一個數據包的位置,Nnew為新到包的包序號,Nout為即將輸出的第一個數據包的包序號,Qsize為整個環形隊列大小,則:
Pnew = ( Pout + ( Nnew - Nout ) ) % Qsize
找到位置后,首先判斷該位置是否已經存在數據包,如果存在,則說明當前包是重復包,直接丟棄,以此消除重復包。
總結
以上是生活随笔為你收集整理的基于RTP的QOS算法简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 谁是卧底题目大全经典110个
- 下一篇: 数据结构【队列专题】