摘 要:TCP網(wǎng)絡(luò)視頻質(zhì)量監(jiān)測系統(tǒng)以實(shí)時(shí)顯示當(dāng)前在線的用戶數(shù)量,計(jì)算TCP延遲因素、TCP重傳次數(shù)、TCP亂序次數(shù)、TCP亂序間距、錯(cuò)誤碼流、IP碼流這些指標(biāo)。此外還可以下發(fā)實(shí)時(shí)監(jiān)測命令,實(shí)時(shí)顯示對(duì)應(yīng)用戶的指標(biāo),并將監(jiān)測期間的視頻數(shù)據(jù)存成TS文件,以便檢查故障時(shí)直接回看原始的視頻數(shù)據(jù)是否完整。
關(guān)鍵詞:TCP網(wǎng)絡(luò)視頻;質(zhì)量監(jiān)測系統(tǒng)
系統(tǒng)主要由以下幾個(gè)模塊構(gòu)成:TCP數(shù)據(jù)包處理模塊、實(shí)時(shí)監(jiān)測命令模塊、指標(biāo)計(jì)算模塊、視頻數(shù)據(jù)的存儲(chǔ)和維護(hù)模塊、數(shù)據(jù)交換模塊、用戶控制模塊,TCP網(wǎng)絡(luò)視頻質(zhì)量監(jiān)測系統(tǒng)的詳細(xì)設(shè)計(jì):
1 數(shù)據(jù)包采集線程
數(shù)據(jù)采集線程:每從網(wǎng)卡上收到一個(gè)包,就去環(huán)形緩沖區(qū)查看是否還有剩余空間,若有,則將數(shù)據(jù)寫入該空閑區(qū),并標(biāo)記該地址已經(jīng)被占用(TCP數(shù)據(jù)包解碼線程處理完該數(shù)據(jù)包,會(huì)標(biāo)記此地址恢復(fù)空閑),解碼至口層獲取目的IP(對(duì)應(yīng)點(diǎn)播節(jié)目的用戶),分發(fā)到該用戶對(duì)應(yīng)的收包隊(duì)列,等待TCP數(shù)據(jù)包解碼線程來處理。
2 發(fā)送更新消息線程
發(fā)送更新消息線程:每隔一秒鐘往所有的收包隊(duì)列發(fā)送一個(gè)消息,以提醒各個(gè)TCP數(shù)據(jù)包解碼線程檢查用戶斷流情況,并每隔五秒顯示一次當(dāng)前處理的用戶各數(shù)。
3 TCP數(shù)據(jù)包解碼線程
TCP數(shù)據(jù)包解碼線程:由相應(yīng)的收包隊(duì)列中取消息,若是數(shù)據(jù)包則進(jìn)行解碼,標(biāo)記是否為實(shí)時(shí)監(jiān)測用戶,將解碼結(jié)果送指標(biāo)計(jì)算隊(duì)列,將實(shí)時(shí)監(jiān)測用戶的視頻數(shù)據(jù)送視頻數(shù)據(jù)的存儲(chǔ)和維護(hù)模塊;若是實(shí)時(shí)監(jiān)測開始命令,更新用戶實(shí)時(shí)監(jiān)測狀態(tài)表,標(biāo)記該用戶為實(shí)時(shí)監(jiān)測用戶。
4 實(shí)時(shí)監(jiān)測命令處理
收到實(shí)時(shí)監(jiān)測命令時(shí),首先查詢用戶實(shí)時(shí)監(jiān)測狀態(tài)表是否存在該用戶:若存在并且沒有超過最大實(shí)時(shí)監(jiān)測用戶數(shù)(配置文件)查看實(shí)時(shí)監(jiān)測標(biāo)記,若已經(jīng)被標(biāo)記為實(shí)時(shí)監(jiān)測用戶則發(fā)送命令錯(cuò)誤的回復(fù),否則在用戶實(shí)時(shí)監(jiān)測狀態(tài)表中標(biāo)記此用戶為實(shí)時(shí)監(jiān)測用戶命令執(zhí)行成功,發(fā)送命令執(zhí)行成功回復(fù);若不存在并且沒有超過最大實(shí)時(shí)監(jiān)測用戶數(shù)則將此用戶信息提前插入用戶實(shí)時(shí)監(jiān)測狀態(tài)表,命令執(zhí)行成功;若不存在且超過最大實(shí)時(shí)監(jiān)測用戶數(shù),則發(fā)送命令執(zhí)行失敗回復(fù)。
5 更新消息處理
收到更新消息線程發(fā)過來的更新消息時(shí),遍歷整個(gè)用戶實(shí)時(shí)監(jiān)測狀念表,對(duì)所有用戶的OutageTime增1(每次收到某用戶的網(wǎng)絡(luò)視頻數(shù)據(jù)包時(shí)又將此值恢復(fù)為1),所以只要不斷流,此值不會(huì)持續(xù)增大到一定程度,若遍歷過程中發(fā)現(xiàn)某用戶的OutageTime大于配置文件設(shè)置的閥值時(shí),則表明此用戶斷流,進(jìn)行斷流處理。遍歷完整個(gè)用戶實(shí)時(shí)監(jiān)測狀態(tài)表后,再遍歷整個(gè)TCP亂序鏈表將呆在環(huán)形緩沖區(qū)時(shí)間過長的數(shù)據(jù)包的地址置為空閑,并從鏈表中刪除。
6 TCP數(shù)據(jù)包排序
TCP數(shù)據(jù)包在網(wǎng)絡(luò)上傳送時(shí),會(huì)出現(xiàn)亂序、重傳、丟失等現(xiàn)象,但這些問題經(jīng)過TCP協(xié)議棧處理后,最終實(shí)現(xiàn)了TCP傳輸?shù)捻樞蚩煽啃?。因此此系統(tǒng)必須采取一種算法來對(duì)TCP數(shù)據(jù)包進(jìn)行重排序、過濾掉重復(fù)的數(shù)據(jù)包。同時(shí)計(jì)算TCP延遲因素、TCP重傳次數(shù)、TCP亂序次數(shù)、TCP亂序間距這四個(gè)指標(biāo),保證TCP數(shù)據(jù)能夠順序地進(jìn)行的應(yīng)用數(shù)據(jù)重組,計(jì)算應(yīng)用層相關(guān)指標(biāo)。
7 系統(tǒng)的測試與分析
為了驗(yàn)證本文觀點(diǎn)的正確性,本節(jié)通過損傷儀對(duì)當(dāng)前正常的TCP網(wǎng)絡(luò)視頻流進(jìn)行模擬損傷(丟包、抖動(dòng)等),得到各種情況下的指標(biāo)值,分析其合理性。不同情況的大量的實(shí)驗(yàn)結(jié)果確實(shí)能準(zhǔn)確反映當(dāng)前網(wǎng)絡(luò)視頻所受到的相應(yīng)損傷。
取5秒為一個(gè)指標(biāo)計(jì)算周期,在不同的測試環(huán)境下,對(duì)正常的、添加模擬重傳損傷的、添加模擬抖動(dòng)延時(shí)損傷的、原數(shù)據(jù)不完整的TCP網(wǎng)絡(luò)視頻流進(jìn)行測試。比較分析各種情況下的指標(biāo)結(jié)果來驗(yàn)證該TCP網(wǎng)絡(luò)視頻質(zhì)量監(jiān)測系統(tǒng)對(duì)各種情況的有效反映能力。
在正常情況下,不用損傷儀,測得的指標(biāo)結(jié)果如表1
經(jīng)過大量實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果證明TCP-DF可以反映當(dāng)前網(wǎng)絡(luò)上的抖動(dòng)情況;TCP.RE可以有效反映當(dāng)前網(wǎng)絡(luò)上視頻數(shù)據(jù)包的重傳情況;TCP-DDE、TCP.DPE能如實(shí)反映網(wǎng)絡(luò)上數(shù)據(jù)包的亂序情況;RTP-MLR、RTP-LDE、RTP-LPE、\"IS CC Error能反映出應(yīng)用層數(shù)據(jù)的完整性與正確性。當(dāng)視頻質(zhì)量下降時(shí),我們可以通過在不同的網(wǎng)段設(shè)置運(yùn)行此系統(tǒng)的監(jiān)測點(diǎn)進(jìn)行網(wǎng)絡(luò)視頻監(jiān)測來定位出現(xiàn)問題的位置,還可以通過TCP、RTP層的兩類指標(biāo)來判斷問題的大概原因是在應(yīng)用層還是網(wǎng)絡(luò)傳輸層。
盡管TCP網(wǎng)絡(luò)視頻質(zhì)量監(jiān)測系統(tǒng)在實(shí)驗(yàn)中取得了不錯(cuò)的效果,但在實(shí)際應(yīng)用中還有很多問題需要進(jìn)一步探討和研究的。