視頻直播中抖動和延遲的區(qū)別
作者 / ALEXANDREA MELLEN, BALáZS KREITH
翻譯 / 小極狗
在視頻直播技術(shù)中,延遲和抖動是相互關(guān)聯(lián)的兩個概念,但它們并不相同。延遲是網(wǎng)絡(luò)傳輸中的一個重要指標(biāo),它由四個關(guān)鍵部分組成:處理延遲、排隊延遲、傳輸延遲和傳播延遲。延遲會影響用戶體驗,同時可能會因為多種因素而發(fā)生變化。而抖動是基于延遲產(chǎn)生的——具體地說,它是延遲時間忽長忽短變化的表現(xiàn)形式。抖動是兩個數(shù)據(jù)包之間延遲時間的差異,通常會導(dǎo)致數(shù)據(jù)包丟失和網(wǎng)絡(luò)擁塞。雖然延遲和抖動有一定的共同點和關(guān)聯(lián)性,但它們并不相同。
什么是延遲?
延遲是網(wǎng)絡(luò)傳輸中的一個重要指標(biāo),它測量了數(shù)據(jù)從一個端點傳輸?shù)搅硪粋€端點所需的時間。在網(wǎng)絡(luò)傳輸中,延遲通常是以毫秒為單位的,并且會因為多種因素而發(fā)生變化,包括端點的位置、數(shù)據(jù)包的大小和流量大小。
延遲(delay)和延時(latency)有何區(qū)別?
延遲和延時本質(zhì)上是緊密聯(lián)系的,有時甚至可以互換使用。然而,它們并不總是相同的。延遲(delay)是數(shù)據(jù)從一個端點傳輸?shù)搅硪粋€端點所需的時間。然而,延時(latency)可能是以下兩種情況之一。
有時,延時(latency)會被認為是數(shù)據(jù)包從一個端點傳輸?shù)搅硪粋€端點的時間,與單向延遲(delay)相同。
更常見的情況是,延時(latency)表示往返時間。往返時間包含了發(fā)送數(shù)據(jù)包所需的時間,以及它返回的時間。但并不包括在目的地處理數(shù)據(jù)包所花費的時間。
通過網(wǎng)絡(luò)監(jiān)控工具,可以獲取在特定網(wǎng)絡(luò)中數(shù)據(jù)往返的準(zhǔn)確時間(延時latency)。具體方法是,通過跟蹤兩個時間點,一個是從發(fā)送端發(fā)送數(shù)據(jù)包的時間點,另一個是發(fā)送端獲得接收端返回的確認結(jié)果的時間點,然后通過計算兩者的時間差異得到準(zhǔn)確的往返時間(延時latency)。但是,兩個端點之間的(單向)延遲(delay)是很難確定的,因為在發(fā)送端并沒有數(shù)據(jù)包到達接收端的時間信息。
導(dǎo)致延遲的原因?
延遲可以理解為四個關(guān)鍵延遲成分的集合:處理延遲、排隊延遲、傳輸延遲和傳播延遲。
1. 處理延遲是指系統(tǒng)對數(shù)據(jù)包報頭進行分析和確定數(shù)據(jù)包被發(fā)送到哪里去所要花費的時間。這很大程度上取決于路由表中的條目數(shù)量、系統(tǒng)中數(shù)據(jù)結(jié)構(gòu)的執(zhí)行以及硬件的實現(xiàn)。
2. 排隊延遲是指數(shù)據(jù)包從進入發(fā)送隊列到被發(fā)送之間經(jīng)過的時間。這取決于流量大小、流量類型以及具體實現(xiàn)中采用什么路由器隊列算法。不同的算法效果不一樣,有的可以根據(jù)系統(tǒng)參數(shù)調(diào)整延遲時間,或者對所有流量設(shè)定相同的延遲時間。
3. 傳輸延遲是指將包中的數(shù)據(jù)位傳入線路所需要的時間。根據(jù)數(shù)據(jù)包的大小和帶寬的不同而有所變化。但并不取決于傳輸線路的距離,因為它僅僅是指將包的數(shù)據(jù)位傳入線路的時間,而不是沿傳輸線路到達接收端點的時間。
4. 傳播延遲是指數(shù)據(jù)包的第一個比特位從發(fā)送端到達接收端的時間。通常也被稱為距離的延遲,受數(shù)據(jù)傳輸距離和傳播速度的影響。
這些延遲組合在一起構(gòu)成了網(wǎng)絡(luò)中的總延遲。而往返時間則是指這些延遲的組合,加上數(shù)據(jù)包從發(fā)送端到達接收端的時間,和發(fā)送端接收到終端的返回信息的時間。
延遲的影響是什么?
延遲主要影響用戶體驗。在嚴(yán)格的音頻通話中,當(dāng)延遲達到150毫秒,延遲會變得很明顯并影響用戶體驗。在嚴(yán)格的視頻通話中,延遲達到400毫秒就很容易被用戶感知。如果將音頻和視頻兩種通話的功能結(jié)合在一起,音頻和視頻的通話應(yīng)該保持同步,并保證低于150毫秒的延遲以保障用戶體驗。然而,一般來說,保持盡可能低的延遲是很重要的。國際電信聯(lián)盟ITU建議網(wǎng)絡(luò)延遲應(yīng)該保持在100毫秒以下。
什么是抖動?
在網(wǎng)絡(luò)上連續(xù)傳輸?shù)臄?shù)據(jù)包,即使選擇相同的路徑可能也會有不同的延遲。這是由分組交換網(wǎng)絡(luò)中兩個內(nèi)在的關(guān)鍵原因造成的。首先,在路由器中數(shù)據(jù)包是被單獨逐個傳輸?shù)?。第二,網(wǎng)絡(luò)設(shè)備從隊列中接收數(shù)據(jù)包,因此不能保證相同的延遲時間。
每個數(shù)據(jù)包之間的這種延遲的差異被稱為抖動。對于實時通信領(lǐng)域,像IP電話、視頻會議和遠程桌面分享基礎(chǔ)服務(wù)等,抖動是一個相當(dāng)大的問題。網(wǎng)絡(luò)中的許多因素都可能導(dǎo)致抖動,而每個網(wǎng)絡(luò)的延遲時間也不盡相同。
抖動有什么影響?
1. 數(shù)據(jù)包丟失-?當(dāng)數(shù)據(jù)包到達時間不一致時,接收端點必須進行時間補償并嘗試糾錯。在某些情況下,接收端沒辦法進行合適的糾錯,導(dǎo)致數(shù)據(jù)包丟失。對最終用戶體驗來說,有多種表現(xiàn)形式。例如,如果一個用戶正在觀看視頻,而視頻突然出現(xiàn)馬賽克,這就是一個網(wǎng)絡(luò)抖動的跡象。
2. 網(wǎng)絡(luò)擁塞 -?網(wǎng)絡(luò)擁塞發(fā)生在傳輸網(wǎng)絡(luò)上。網(wǎng)絡(luò)設(shè)備在接受數(shù)據(jù)后,由于無法發(fā)送同等數(shù)量的數(shù)據(jù),導(dǎo)致數(shù)據(jù)包緩沖區(qū)過滿,就開始丟棄數(shù)據(jù)包。如果在網(wǎng)絡(luò)中的端點沒有遇到網(wǎng)絡(luò)擾動,那么每個數(shù)據(jù)包都會到達。但是,如果端點的緩沖區(qū)滿了,數(shù)據(jù)包的到達時間就會越來越遲,從而導(dǎo)致抖動。這被稱為早期擁塞。通過監(jiān)測抖動,可以觀察到早期擁塞。類似地,如果出現(xiàn)網(wǎng)絡(luò)擁塞,那么表明抖動也在迅速改變。
當(dāng)網(wǎng)絡(luò)設(shè)備開始丟棄數(shù)據(jù)包,導(dǎo)致端點沒有接收到數(shù)據(jù)包時,就會發(fā)生擁塞。端點可能會請求丟包重傳,這會導(dǎo)致網(wǎng)絡(luò)崩潰式的網(wǎng)絡(luò)擁塞。
關(guān)于擁塞,需要注意的是,端點不會直接引起擁塞,同時也不會丟棄數(shù)據(jù)包。就像高速公路兩端的送貨方A和收貨方B,擁堵不是收貨方B造成的,因為它只是沒有足夠的停車位。擁堵是由送貨方A造成的,因為它不斷地運送貨物到?jīng)]有足夠停車位的收貨方B處。
如何補償抖動?
為了彌補抖動,在接收端點使用抖動緩沖。抖動緩沖區(qū)收集并存儲傳入的數(shù)據(jù)包,以便確定何時以相同的時間間隔發(fā)送它們(接收端會反饋給發(fā)送端)。
-靜態(tài)抖動緩沖 -?靜態(tài)抖動緩沖是在系統(tǒng)的硬件中實現(xiàn)的,通常由制造商配置。
-動態(tài)抖動緩沖 -?動態(tài)抖動緩沖是在系統(tǒng)的軟件中實現(xiàn)的,由網(wǎng)絡(luò)管理員配置??梢愿鶕?jù)網(wǎng)絡(luò)的變化進行調(diào)整。
播放延遲
播放延遲是指數(shù)據(jù)包到達后直到渲染播放的時間。當(dāng)抖動緩沖區(qū)存儲傳入的數(shù)據(jù)包,并等待以均勻的時間間隔分發(fā)它們(給渲染緩沖區(qū))時,會增加數(shù)據(jù)包到達和渲染播放的時間,也稱為播放延遲。這個延遲是由抖動緩沖區(qū)引入的,因為它負責(zé)指示新到達的數(shù)據(jù)包何時被分發(fā)(到渲染緩沖區(qū))。
結(jié)論
雖然延遲和抖動是相互關(guān)聯(lián)的,但它們是不相同。延遲是數(shù)據(jù)從網(wǎng)絡(luò)的一個端點傳輸?shù)搅硪粋€端點所需的時間。這是一個受多種因素影響的復(fù)雜的度量指標(biāo)。另一方面,抖動是兩個數(shù)據(jù)包之間延遲時間的差異。同樣,它也可能是由網(wǎng)絡(luò)上的不同因素造成的。盡管抖動和延遲有相似之處,但抖動僅僅是基于延遲產(chǎn)生的,并不等同于它。