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