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