一種數(shù)據(jù)重傳方法及裝置的制造方法
【專利摘要】本發(fā)明提供一種數(shù)據(jù)重傳方法及裝置,所述方法包括:當(dāng)NVR收到IPC發(fā)送的數(shù)據(jù)包時,判斷該數(shù)據(jù)包是否為重傳數(shù)據(jù);若是重傳數(shù)據(jù),則將該數(shù)據(jù)包保存在公共緩存區(qū);在NVR收到客戶端請求對該IPC中的指定數(shù)據(jù)包進(jìn)行重傳時,該NVR在公共緩存區(qū)中查找該指定數(shù)據(jù)包;在查找到該指定數(shù)據(jù)包時,將該指定數(shù)據(jù)包發(fā)送至該客戶端。因此本發(fā)明可以通過緩存重傳數(shù)據(jù)包來使后續(xù)其他客戶端請求相同的數(shù)據(jù)包時可以快速的重傳,從而可以向客戶端重傳時間較早的數(shù)據(jù)包,提升用戶體驗。
【專利說明】
一種數(shù)據(jù)重傳方法及裝置
技術(shù)領(lǐng)域
[0001 ]本發(fā)明涉及視頻監(jiān)控技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)重傳方法及裝置。
【背景技術(shù)】
[0002]在視頻監(jiān)控系統(tǒng)中,一般采用組播方式發(fā)送實時視頻數(shù)據(jù)到固定組播組,而接收者只需要加入相應(yīng)的組播組即可接收到視頻數(shù)據(jù)?,F(xiàn)有的視頻監(jiān)控系統(tǒng)中,NVR(NetWOrkVideo Recorder,網(wǎng)絡(luò)視頻錄像機)管理多臺IPC以及多臺點播客戶端,基于UDP機制,IPC的數(shù)據(jù)先傳輸?shù)絅VR,NVR將數(shù)據(jù)進(jìn)行存儲或者解碼播放,如果有客戶端也在點播該IPC的實況數(shù)據(jù),那么NVR就將該數(shù)據(jù)包轉(zhuǎn)發(fā)給客戶端。由于UDP是不可靠的通信協(xié)議,現(xiàn)有的視頻監(jiān)控系統(tǒng)一般都會采用消息重傳來實現(xiàn)其可靠性。因此客戶端可以通過數(shù)據(jù)包的序列表檢測數(shù)據(jù)包的丟失情況。當(dāng)檢測到數(shù)據(jù)包丟失時,客戶端通常會向NVR端發(fā)起重傳請求,NVR再從緩存中再次發(fā)送該數(shù)據(jù)包給客戶端。然而NVR自身的緩存資源十分有限,通常無法緩存太多數(shù)據(jù),因此當(dāng)客戶端請求重傳時間較早的丟包數(shù)據(jù)時,NVR通常很難實現(xiàn)數(shù)據(jù)重傳服務(wù)。
【發(fā)明內(nèi)容】
[0003]有鑒于此,本發(fā)明提供一種數(shù)據(jù)重傳方法及裝置來解決現(xiàn)有技術(shù)中NVR無法重傳時間較早的數(shù)據(jù)包的問題。
[0004]具體地,本發(fā)明是通過如下技術(shù)方案實現(xiàn)的:
[0005]本發(fā)明提供一種數(shù)據(jù)重傳方法,所述方法包括:
[0006]當(dāng)NVR收到IPC發(fā)送的數(shù)據(jù)包時,判斷該數(shù)據(jù)包是否為重傳數(shù)據(jù);若是重傳數(shù)據(jù),則將該數(shù)據(jù)包保存在公共緩存區(qū);
[0007]在NVR收到客戶端請求對該IPC中的指定數(shù)據(jù)包進(jìn)行重傳時,該NVR在公共緩存區(qū)中查找該指定數(shù)據(jù)包;
[0008]在查找到該指定數(shù)據(jù)包時,將該指定數(shù)據(jù)包發(fā)送至該客戶端。
[0009]進(jìn)一步的,所述方法還包括:
[0010]若所述IPC發(fā)送的數(shù)據(jù)包不是重傳數(shù)據(jù)時,則將該數(shù)據(jù)包保存在該IPC對應(yīng)的獨立緩存區(qū);
[0011]當(dāng)NVR在公共緩存區(qū)中未查找到該指定數(shù)據(jù)包時,在該IPC對應(yīng)的獨立緩存區(qū)中查找該指定數(shù)據(jù)包;
[0012]在查找到該指定數(shù)據(jù)包時,將該指定數(shù)據(jù)包發(fā)送至該客戶端。
[0013]進(jìn)一步的,所述方法還包括:
[0014]當(dāng)NVR在該IPC對應(yīng)的獨立緩存區(qū)中未查找到該指定數(shù)據(jù)包時,向該IPC請求對該指定數(shù)據(jù)包進(jìn)行重傳;
[0015]當(dāng)收到該IPC重傳的所述指定數(shù)據(jù)包時,將該指定數(shù)據(jù)包保存在公共緩存區(qū),并將該指定數(shù)據(jù)包發(fā)送至客戶端。
[0016]進(jìn)一步的,所述方法還包括:
[0017]NVR按照預(yù)設(shè)時間間隔將該IPC對應(yīng)的獨立緩存區(qū)的緩存空間大小發(fā)送到該IPC,以使該IPC根據(jù)當(dāng)前流量將自身的緩存數(shù)據(jù)大小反饋至該NVR,NVR接收并記錄該IPC的緩存數(shù)據(jù)大小;
[0018]在NVR向該IPC請求對該指定數(shù)據(jù)包進(jìn)行重傳之前,所述方法還包括:
[0019]通過記錄的該IPC的緩存數(shù)據(jù)大小判斷該IPC是否緩存該指定數(shù)據(jù)包,若是,則向該IPC請求對該指定數(shù)據(jù)包進(jìn)行重傳。
[0020]進(jìn)一步的,所述若所述IPC發(fā)送的數(shù)據(jù)包不是重傳數(shù)據(jù)時,則將該數(shù)據(jù)包保存在該IPC對應(yīng)的獨立緩存區(qū),具體包括:
[0021]當(dāng)NVR收到IPC發(fā)送的非重傳的第一數(shù)據(jù)包時,判斷該IPC對應(yīng)的獨立緩存區(qū)是否存滿;
[0022]若存滿,則NVR根據(jù)該IPC的緩存數(shù)據(jù)大小判斷該IPC的緩存數(shù)據(jù)中是否包括該IPC對應(yīng)的獨立緩存區(qū)中時間最早的第二數(shù)據(jù)包,若包括,則將該第二數(shù)據(jù)包刪除;若不包括,則將該第二數(shù)據(jù)包回傳至該IPC;并將該第一數(shù)據(jù)包按照時間順序存儲到該獨立緩存區(qū);
[0023]若未存滿,則NVR將該第一數(shù)據(jù)包按照時間順序存儲到該獨立緩存區(qū)。
[0024]基于相同的構(gòu)思,本發(fā)明還提供一種數(shù)據(jù)重傳裝置,所述裝置包括:
[0025]保存單元,用于在NVR收到IPC發(fā)送的數(shù)據(jù)包時,判斷該數(shù)據(jù)包是否為重傳數(shù)據(jù);若是重傳數(shù)據(jù),則將該數(shù)據(jù)包保存在公共緩存區(qū);
[0026]查找單元,用于在NVR收到客戶端請求對該IPC中的指定數(shù)據(jù)包進(jìn)行重傳時,該NVR在公共緩存區(qū)中查找該指定數(shù)據(jù)包;
[0027]發(fā)送單元,用于在查找到該指定數(shù)據(jù)包時,將該指定數(shù)據(jù)包發(fā)送至該客戶端。
[0028]進(jìn)一步的,所述保存單元,還用于當(dāng)所述IPC發(fā)送的數(shù)據(jù)包不是重傳數(shù)據(jù)時,將該數(shù)據(jù)包保存在該IPC對應(yīng)的獨立緩存區(qū);
[0029]所述查找單元,還用于在公共緩存區(qū)中未查找到該指定數(shù)據(jù)包時,在該IPC對應(yīng)的獨立緩存區(qū)中查找該指定數(shù)據(jù)包;
[0030]所述發(fā)送單元,還用于在查找到該指定數(shù)據(jù)包時,將該指定數(shù)據(jù)包發(fā)送至該客戶端。
[0031]進(jìn)一步的,所述裝置還包括:
[0032]請求單元,用于在該IPC對應(yīng)的獨立緩存區(qū)中未查找到該指定數(shù)據(jù)包時,向該IPC請求對該指定數(shù)據(jù)包進(jìn)行重傳;當(dāng)收到該IPC重傳的所述指定數(shù)據(jù)包時,將該指定數(shù)據(jù)包保存在公共緩存區(qū),并將該指定數(shù)據(jù)包發(fā)送至客戶端。
[0033]進(jìn)一步的,所述裝置還包括:
[0034]檢測單元,用于按照預(yù)設(shè)時間間隔將該IPC對應(yīng)的獨立緩存區(qū)的緩存空間大小發(fā)送到該IPC,以使該IPC根據(jù)當(dāng)前流量將自身的緩存數(shù)據(jù)大小反饋至該NVR,NVR接收并記錄該IPC的緩存數(shù)據(jù)大??;
[0035]所述請求單元,還用于在NVR向該IPC請求對該指定數(shù)據(jù)包進(jìn)行重傳之前,通過記錄的該IPC的緩存數(shù)據(jù)大小判斷該IPC是否緩存該指定數(shù)據(jù)包,若是,則向該IPC請求對該指定數(shù)據(jù)包進(jìn)行重傳。
[0036]進(jìn)一步的,所述保存單元,具體用于在NVR收到IPC發(fā)送的非重傳的第一數(shù)據(jù)包時,判斷該IPC對應(yīng)的獨立緩存區(qū)是否存滿;若存滿,則NVR根據(jù)該IPC的緩存數(shù)據(jù)大小判斷該IPC的緩存數(shù)據(jù)中是否包括該IPC對應(yīng)的獨立緩存區(qū)中時間最早的第二數(shù)據(jù)包,若包括,則將該第二數(shù)據(jù)包刪除;若不包括,則將該第二數(shù)據(jù)包回傳至該IPC;并將該第一數(shù)據(jù)包按照時間順序存儲到該獨立緩存區(qū);若未存滿,則NVR將該第一數(shù)據(jù)包按照時間順序存儲到該獨立緩存區(qū)。
[0037]由此可見,本發(fā)明可以將IPC重傳的數(shù)據(jù)包保存在NVR的公共緩存區(qū),并在收到客戶端請求IPC對指定數(shù)據(jù)包進(jìn)行重傳時,在公共緩存區(qū)查找該指定數(shù)據(jù)包,并將查找的該指定數(shù)據(jù)包發(fā)送至該客戶端。因此本發(fā)明可以通過緩存重傳數(shù)據(jù)包來使后續(xù)其他客戶端請求相同的數(shù)據(jù)包時可以快速的重傳,從而可以向客戶端重傳時間較早的數(shù)據(jù)包,提升用戶體驗。
【附圖說明】
[0038]圖1是本發(fā)明一種示例性實施方式中的一種數(shù)據(jù)重傳方法的處理流程圖;
[0039]圖2是本發(fā)明一種示例性實施方式中的數(shù)據(jù)重傳組網(wǎng)架構(gòu)的示意圖;
[0040]圖3本發(fā)明一種示例性實施方式中的數(shù)據(jù)重傳裝置所在設(shè)備的硬件結(jié)構(gòu)圖;
[0041]圖4本發(fā)明一種示例性實施方式中的一種數(shù)據(jù)重傳裝置的邏輯結(jié)構(gòu)圖。
【具體實施方式】
[0042]為了解決現(xiàn)有技術(shù)存在的問題,本發(fā)明提供一種數(shù)據(jù)重傳方法及裝置,可以將IPC重傳的數(shù)據(jù)包保存在NVR的公共緩存區(qū),并在收到客戶端請求IPC對指定數(shù)據(jù)包進(jìn)行重傳時,在公共緩存區(qū)查找該指定數(shù)據(jù)包,并將查找的該指定數(shù)據(jù)包發(fā)送至該客戶端。因此本發(fā)明可以通過緩存重傳數(shù)據(jù)包來使后續(xù)其他客戶端請求相同的數(shù)據(jù)包時可以快速的重傳,從而可以向客戶端重傳時間較早的數(shù)據(jù)包,提升用戶體驗。
[0043]請參考圖1,是本發(fā)明一種示例性實施方式中的一種數(shù)據(jù)重傳方法的處理流程,所述方法可應(yīng)用于NVR,所述方法包括:
[0044]步驟101、當(dāng)NVR收到IPC發(fā)送的數(shù)據(jù)包時,判斷該數(shù)據(jù)包是否為重傳數(shù)據(jù);若是重傳數(shù)據(jù),則將該數(shù)據(jù)包保存在公共緩存區(qū);
[0045]在本實施例中,NVR除了為每個IPC設(shè)置對應(yīng)的獨立緩存區(qū)以外,還會設(shè)置公共緩存區(qū),該公共緩存區(qū)用于存儲所有IPC已重傳的數(shù)據(jù)包。因此,當(dāng)NVR收到IPC發(fā)送的數(shù)據(jù)包時,先判斷該數(shù)據(jù)包是否為重傳數(shù)據(jù),若是重傳數(shù)據(jù),則將該數(shù)據(jù)包保存在公共緩存區(qū),這就是公共緩存區(qū)的數(shù)據(jù)來源方式。公共緩存區(qū)可以按照時間的順序進(jìn)行隊列的出入操作,緩存空間被存滿時,會刪除時間較早的數(shù)據(jù)包。因此,結(jié)合上述方案,當(dāng)NVR收到客戶端請求IPC對指定數(shù)據(jù)包進(jìn)行重傳時,該NVR具體可以在公共緩存區(qū)的已重傳數(shù)據(jù)包中查找該指定數(shù)據(jù)包。由于現(xiàn)有技術(shù)中NVR只緩存每個IPC在一段時間內(nèi)發(fā)送的數(shù)據(jù)包,因此當(dāng)用戶需要重傳更早的數(shù)據(jù)包時,NVR通常無法實現(xiàn)數(shù)據(jù)重傳。但本發(fā)明在緩存每個IPC在一段時間內(nèi)發(fā)送的數(shù)據(jù)包之外,還可以在公共緩存區(qū)緩存這些IPC已重傳的數(shù)據(jù)包。因此當(dāng)其他客戶端也請求重傳的數(shù)據(jù)包時,NVR則可以將數(shù)據(jù)包發(fā)送給客戶端,從而可以擴大NVR緩存的數(shù)據(jù)量,提升用戶體驗。
[0046]步驟102、在NVR收到客戶端請求對該IPC中的指定數(shù)據(jù)包進(jìn)行重傳時,該NVR在公共緩存區(qū)中查找該指定數(shù)據(jù)包;
[0047]在本實施例中,當(dāng)客戶端接收IPC的數(shù)據(jù)過程中檢測到丟包時,可以向NVR發(fā)送重傳請求,請求中包括該IPC的IP地址等標(biāo)識信息,以及需要重傳的指定數(shù)據(jù)包對應(yīng)的序列號。當(dāng)NVR收到客戶端的重傳請求時,可以根據(jù)該重傳請求中的IPC標(biāo)識信息以及該指定數(shù)據(jù)包對應(yīng)的序列號,在本地的公共緩存區(qū)中保存的已重傳的數(shù)據(jù)包中查找該指定數(shù)據(jù)包。
[0048]步驟103、在查找到該指定數(shù)據(jù)包時,將該指定數(shù)據(jù)包發(fā)送至該客戶端。
[0049]當(dāng)NVR在公共緩存區(qū)查找到該指定數(shù)據(jù)包時,可以將該指定數(shù)據(jù)包發(fā)送至該客戶端。由于已重傳的數(shù)據(jù)包相比于其他數(shù)據(jù)包來講,其被請求重傳的概率會更高,因此本發(fā)明通過公共緩存區(qū)緩存這些IPC已重傳的數(shù)據(jù)包,可以擴大NVR緩存的數(shù)據(jù)量,為客戶端提供更高效的重傳服務(wù)。
[0050]若IPC發(fā)送的數(shù)據(jù)包不是重傳數(shù)據(jù),則NVR可以將該數(shù)據(jù)包保存在該IPC對應(yīng)的獨立緩存區(qū)。由于公共緩存區(qū)只緩存已重傳的數(shù)據(jù)包,而不是所有獨立緩存區(qū)中的數(shù)據(jù)包,因此當(dāng)NVR在公共緩存區(qū)中未查找到該指定數(shù)據(jù)包時,還可以在該IPC對應(yīng)的獨立緩存區(qū)中查找該指定數(shù)據(jù)包,并在查找到該指定數(shù)據(jù)包時,將該指定數(shù)據(jù)包發(fā)送至該客戶端。
[0051 ]若NVR在該IPC對應(yīng)的獨立緩存區(qū)中亦未查找到該指定數(shù)據(jù)包時,還可以向該IPC請求對該指定數(shù)據(jù)包進(jìn)行重傳。若該IPC中存儲該指定數(shù)據(jù)包時,可以將該指定數(shù)據(jù)包發(fā)送到NVR。當(dāng)NVR收到該IPC重傳的所述指定數(shù)據(jù)包時,可以將該指定數(shù)據(jù)包保存在公共緩存區(qū),并將該指定數(shù)據(jù)包發(fā)送至客戶端。需要說明的是,由于IPC發(fā)送的指定數(shù)據(jù)包的源地址為IPC的地址,目的地址為NVR的地址,因此NVR在將該指定數(shù)據(jù)包發(fā)送到客戶端時需要重新封裝該指定數(shù)據(jù)包的IP頭部,即將該指定數(shù)據(jù)包IP頭部的源地址改為該NVR的地址,目的地址改為請求該指定數(shù)據(jù)包的客戶端的地址。從而可以使該客戶端收到重傳的指定數(shù)據(jù)包。
[0052]然而在一般情況下,IPC和NVR的獨立緩存區(qū)中的數(shù)據(jù)包都是同一時間段內(nèi)的最新數(shù)據(jù),比如通過計算IPC獨立緩存區(qū)的空間只能保存30秒的數(shù)據(jù),假設(shè)此時最新時間為10:00:00秒,那么緩存數(shù)據(jù)保存范圍就應(yīng)該是9:59:30秒到10點這30秒的數(shù)據(jù)。重傳的數(shù)據(jù)如果超出此時間范圍則無法重傳。由于目前IPC和NVR二者都保存著最新時間段的30秒的數(shù)據(jù),所以二者緩存區(qū)的數(shù)據(jù)是重復(fù)的,換言之,IPC緩存區(qū)的存在的數(shù)據(jù)NVR中該IPC獨立緩存區(qū)中也會存在,反之則二者都不存在。
[0053]為了解決上述問題,本發(fā)明在NVR和IPC之間建立一種協(xié)同工作機制。具體來講,NVR可按照預(yù)設(shè)時間間隔將該IPC對應(yīng)的獨立緩存區(qū)的緩存空間大小發(fā)送到該IPC,以使該IPC根據(jù)當(dāng)前流量確定自身的緩存數(shù)據(jù)大小并向該NVR反饋該緩存數(shù)據(jù)大小,NVR接收并記錄該IPC的緩存數(shù)據(jù)大小。例如,IPC在被NVR管理上線后,NVR在自己的緩存里為該IPC劃分獨立緩存區(qū),假設(shè)該緩存空間大小為5MB,之后NVR可定期向該IPC發(fā)送緩存空間大小。例如NVR通過SIP/0NVIF等協(xié)議通知IPC,告知IPC對應(yīng)的獨立緩存區(qū)為5MB。考慮到獨立緩存區(qū)空間如果有變化,則NVR需要定期發(fā)送該消息來通報實時的緩存區(qū)空間大小,例如間隔I分鐘。當(dāng)IPC接收到該信息后,即得知NVR的對應(yīng)IPC的獨立緩存區(qū)的空間為5MB,此時IPC再實時檢測自身的視頻碼流大小,假設(shè)視頻流量為8Mb/s,即IMB/s,通過運算得知NVR的獨立緩存區(qū)可以接收當(dāng)前碼流為5秒。假設(shè)IPC的緩存空間為5MB,則IPC可以告知NVR其可以緩存更早一點,例如IPC可以緩存比NVR更早5秒的數(shù)據(jù)。IPC確定自身的緩存數(shù)據(jù)大小后,會進(jìn)一步向該NVR反饋該緩存數(shù)據(jù)大小。NVR接收并記錄IPC發(fā)送的緩存數(shù)據(jù)大小,從而可以在請求重傳數(shù)據(jù)前進(jìn)行預(yù)判操作。具體來講,在NVR向該IPC請求對該指定數(shù)據(jù)包進(jìn)行重傳之前,NVR可以通過記錄的IPC的緩存數(shù)據(jù)大小可以判斷該IPC是否緩存該指定數(shù)據(jù)包,若是,則向該IPC請求對該指定數(shù)據(jù)包進(jìn)行重傳。例如,如果IPC將自身的緩存數(shù)據(jù)大小為1-5秒告知NVR,當(dāng)NVR向該IPC請求對第二秒的數(shù)據(jù)包進(jìn)行重傳之前,根據(jù)IPC的緩存數(shù)據(jù)大小判斷得知IPC緩存有第二秒的數(shù)據(jù)包,因此可以向IPC發(fā)送重傳請求,并獲得IPC的重傳數(shù)據(jù);如果IPC將自身的緩存數(shù)據(jù)大小為3-5秒告知NVR,當(dāng)NVR向該IPC請求對第二秒的數(shù)據(jù)包進(jìn)行重傳之前,根據(jù)IPC的緩存數(shù)據(jù)大小判斷得知IPC未緩存第二秒的數(shù)據(jù)包,因此可以避免向IPC發(fā)送重傳請求,因此本實施例可以進(jìn)一步提高NVR的重傳效率。
[0054]在本發(fā)明可選的實施例中,當(dāng)NVR收到IPC發(fā)送的非重傳的第一數(shù)據(jù)包時,可以進(jìn)一步判斷該IPC對應(yīng)的獨立緩存區(qū)是否存滿;若存滿,則NVR根據(jù)IPC的緩存數(shù)據(jù)大小判斷該IPC的緩存數(shù)據(jù)中是否包括該IPC對應(yīng)的獨立緩存區(qū)中時間最早的第二數(shù)據(jù)包,若包括,則將該第二數(shù)據(jù)包刪除;若不包括,則將該第二數(shù)據(jù)包回傳至該IPC,并將該第一數(shù)據(jù)包按照時間順序存儲到該獨立緩存區(qū)。具體來講,當(dāng)IPC的緩存空間大于NVR中IPC對應(yīng)的獨立緩存區(qū)時,IPC中緩存的數(shù)據(jù)包中會包括所述第二數(shù)據(jù)包,因此NVR可以將該第二數(shù)據(jù)包刪除;當(dāng)IPC的緩存空間小于等于NVR中IPC對應(yīng)的獨立緩存區(qū)時,IPC中緩存的數(shù)據(jù)包中則不包括所述第二數(shù)據(jù)包,因此NVR可以將該第二數(shù)據(jù)包回傳至該IPC,以使IPC緩存該第二數(shù)據(jù)包,需要說明的是,NVR在向IPC回傳之前,需要通知IPC該回傳消息,以使IPC啟動與NVR的回傳機制。此外,在本發(fā)明可選的實施例中,IPC也可以根據(jù)NVR發(fā)送的緩存空間大小以及IPC自身的緩存數(shù)據(jù)大小判斷是否需要NVR進(jìn)行回傳數(shù)據(jù),判斷方法與NVR端的判斷方法類似,不同的是,若需要NVR回傳,則IPC會向NVR發(fā)送回傳請求,并主動啟動與NVR的回傳機制。
[0055]若NVR中的獨立緩存區(qū)未存滿,說明IPC發(fā)送的數(shù)據(jù)包沒有超過緩存范圍,則NVR可以將該第一數(shù)據(jù)包按照時間順序存儲到該獨立緩存區(qū)。
[0056]為使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,下面對本發(fā)明該方案作進(jìn)一步地詳細(xì)說明。
[0057]請參考圖2,該數(shù)據(jù)重傳組網(wǎng)架構(gòu)中包括NVR、IPC以及客戶端。該NVR上將緩存區(qū)預(yù)先劃分為公共緩存區(qū)以及為在線IPCl至IPCn劃分對應(yīng)的獨立緩存區(qū),即緩存區(qū)I至緩存區(qū)η。有當(dāng)客戶端點播IPCl的實況數(shù)據(jù)時,假設(shè)IPCl為客戶端發(fā)送序列號為1-15的數(shù)據(jù)包,假設(shè)NVR的緩存區(qū)I的緩存空間為5個數(shù)據(jù)包,則NVR每次可以將最新的5個數(shù)據(jù)包緩存在IPCl對應(yīng)的緩存區(qū)I中,并發(fā)送到客戶端。當(dāng)客戶端檢測到丟包時,客戶端可向NVR發(fā)送重傳請求,其中包括IPCl的IP地址以及丟包的數(shù)據(jù)包的序列號,例如數(shù)據(jù)包3。當(dāng)NVR收到重傳請求后,首先在公共緩存區(qū)查找該數(shù)據(jù)包IP頭部為IPCl的IP地址,且序列號為3的數(shù)據(jù)包。若之前有其他客戶端也請求重傳該IPCl中的數(shù)據(jù)包3,則NVR此時可以在公共緩存區(qū)中查找到數(shù)據(jù)包3,并將該數(shù)據(jù)包3發(fā)送至客戶端。但若之前沒有客戶端請求重傳過IPCl中的數(shù)據(jù)包3,貝IjNVR可以在IPCl對應(yīng)的緩存區(qū)I中查找該數(shù)據(jù)包3,若查找到則將該數(shù)據(jù)包3發(fā)送至客戶端。若在獨立緩存區(qū)仍未查找到該數(shù)據(jù)包3,則NVR需要再向?qū)?yīng)的IPCl發(fā)送重傳請求。IPCl收到NVR的重傳請求后,在IPCl本地的緩存區(qū)查找該數(shù)據(jù)包3,并將該數(shù)據(jù)包3發(fā)送到NVR。NVR從IPCl獲取到數(shù)據(jù)包3后,首先將該數(shù)據(jù)包放入到公共緩存區(qū),再將數(shù)據(jù)包3轉(zhuǎn)發(fā)給客戶端。轉(zhuǎn)發(fā)時需要重新封裝數(shù)據(jù)包3的IP頭部,因為IPCl的發(fā)過來的數(shù)據(jù)包3的IP源地址和目的地址分別為IPCl的地址和NVR的地址,此時NVR將該數(shù)據(jù)包3轉(zhuǎn)發(fā)至客戶端,需要將源地址和目的地址分別改成NVR的地址和客戶端的地址。此后,若有其他客戶端請求IPCl的數(shù)據(jù)包3,則NVR可以在公共緩存區(qū)查找到該數(shù)據(jù)包3,并將數(shù)據(jù)包3發(fā)送至該客戶端。從而可以快速實現(xiàn)數(shù)據(jù)重傳。
[0058]另外,IPCl在被NVR管理上線后,假設(shè)NVR為IPCl劃分獨立緩存區(qū)(緩存區(qū)I)的緩存空間大小為5MB,之后NVR通過SIP/0NVIF等協(xié)議通知IPCl該緩存空間大小的消息。當(dāng)IPCl接收到該信息后,會再次檢查自身數(shù)據(jù)緩存區(qū)空間,如果IPCl的數(shù)據(jù)緩存區(qū)空間大于NVR的獨立緩存區(qū)空間,比如IPCl數(shù)據(jù)緩存區(qū)空間為1MB,那么意味著IPCl自身可以緩存的數(shù)據(jù)比NVR要多,因此IPCl自身可以緩存10秒的數(shù)據(jù),如果按一秒一個數(shù)據(jù)生成序列號的話,SPIPCl的數(shù)據(jù)緩存區(qū)空間緩存了序列號為1-10數(shù)據(jù)包,而NVR的獨立緩存區(qū)緩存了序列號為11-15數(shù)據(jù)包(較新數(shù)據(jù))。此時IPCl得知自己比NVR可以多緩存5個序列號的數(shù)據(jù)包時,IPCl會回應(yīng)NVR的定期緩存通知消息,IPCl回應(yīng)的內(nèi)容包括IPCl可以緩存更老10秒的數(shù)據(jù)??紤]到獨立緩存區(qū)空間可能會發(fā)生變化,因此NVR可以設(shè)置定時器,例如每隔I分鐘向IPCl發(fā)送消息來通報實時的緩存區(qū)空間大小。當(dāng)NVR在實況數(shù)據(jù)發(fā)送的過程中,接收到客戶端發(fā)送的重傳請求時,若NVR無法查詢到需要的數(shù)據(jù)包,則會通過需要重傳的數(shù)據(jù)序列號來判斷IPCl中是否會存在該數(shù)據(jù)包,假設(shè)需要重傳的數(shù)據(jù)序列號為2,NVR獨立緩存區(qū)中最老的數(shù)據(jù)序列號為11,由于IPCl可以緩存更老1秒的數(shù)據(jù),,則NVR可知IPCI此時的緩存數(shù)據(jù)中包括序列號1-10的數(shù)據(jù)包,因此IPCl包含有序列號2的數(shù)據(jù)包,在這個條件滿足后,NVR才會向IPCl發(fā)送重傳申請,反之則不會發(fā)出。
[0059]上述情況為IPCl的緩存空間大于NVR的獨立緩存區(qū),這樣IPCl才能存放更多更舊的數(shù)據(jù)包,但I(xiàn)PCI的緩存空間小于等于NVR的緩存區(qū)時,例如NVR獨立緩存區(qū)空間為1MB,IPC的數(shù)據(jù)緩存區(qū)空間為5MB時,在NVR的緩存空間定期消息上報到IPCl后,IPCl通過自身計算可得知自身緩存可以緩存的包的數(shù)量。并得知自身數(shù)據(jù)緩存區(qū)空間小于NVR的獨立緩存區(qū)空間時,IPCl會回應(yīng)NVR的定期緩存通知消息,IPCl回應(yīng)的內(nèi)容包括IPCl可以緩存更老5秒的數(shù)據(jù)。因此,當(dāng)NVR需要將該IPCl對應(yīng)的獨立緩存區(qū)(緩存區(qū)I)的數(shù)據(jù)丟棄時,則可以將該數(shù)據(jù)反向傳回給IPCl。例如,IPCl發(fā)送了數(shù)據(jù)序列1-15,NVR的緩存區(qū)I會保存最新的一部分?jǐn)?shù)據(jù)(10個數(shù)據(jù)包),假設(shè)當(dāng)前NVR的緩存區(qū)I數(shù)據(jù)包序列號為5-14,那么當(dāng)序列號為15的數(shù)據(jù)包到達(dá)后,緩存區(qū)I會自動清除最老的數(shù)據(jù)包,也就是序列號為5的數(shù)據(jù)包,此時NVR可以根據(jù)IPCl的反饋得知IPCl的緩存空間中沒有序列號為5的數(shù)據(jù)包,因此NVR會在清除序列號為5的數(shù)據(jù)包之前將該數(shù)據(jù)回傳到IPCUIPC1接收到回傳的序列號為5的數(shù)據(jù)包后,會將其放入自身的緩存空間,這樣就保障了 IPCl的緩存空間為舊數(shù)據(jù),NVR的為新數(shù)據(jù)。并且由于IPCl和NVR—般帶寬是足夠的,數(shù)據(jù)回傳并不會帶來負(fù)面的影響。
[0060 ]因此本發(fā)明可以通過緩存通知的機制使得IPC和NVR能保存不同時間范圍的數(shù)據(jù),從而使總緩存時間大大延長。
[0061]基于相同的構(gòu)思,本發(fā)明還提供一種數(shù)據(jù)重傳裝置,該裝置可以通過軟件實現(xiàn),也可以通過硬件或者軟硬件結(jié)合的方式實現(xiàn)。以軟件實現(xiàn)為例,本發(fā)明的數(shù)據(jù)重傳裝置作為一個邏輯意義上的裝置,是通過其所在NVR設(shè)備中的CPU將存儲器中對應(yīng)的計算機程序指令讀取后運行而成。
[0062]請參考圖3及圖4,是本發(fā)明一種示例性實施方式中的一種數(shù)據(jù)重傳裝置400,該裝置基本運行環(huán)境包括CPU,存儲器以及其他硬件,從邏輯層面上來看,該裝置400包括:
[0063]保存單元401,用于在NVR收到IPC發(fā)送的數(shù)據(jù)包時,判斷該數(shù)據(jù)包是否為重傳數(shù)據(jù);若是重傳數(shù)據(jù),則將該數(shù)據(jù)包保存在公共緩存區(qū);
[0064]查找單元402,用于在NVR收到客戶端請求對該IPC中的指定數(shù)據(jù)包進(jìn)行重傳時,該NVR在公共緩存區(qū)中查找該指定數(shù)據(jù)包;
[0065]發(fā)送單元403,用于在查找到該指定數(shù)據(jù)包時,將該指定數(shù)據(jù)包發(fā)送至該客戶端。
[0066]可選的,所述保存單元401,還用于當(dāng)所述IPC發(fā)送的數(shù)據(jù)包不是重傳數(shù)據(jù)時,將該數(shù)據(jù)包保存在該IPC對應(yīng)的獨立緩存區(qū);
[0067]所述查找單元402,還用于在公共緩存區(qū)中未查找到該指定數(shù)據(jù)包時,在該IPC對應(yīng)的獨立緩存區(qū)中查找該指定數(shù)據(jù)包;
[0068]所述發(fā)送單元403,還用于在查找到該指定數(shù)據(jù)包時,將該指定數(shù)據(jù)包發(fā)送至該客戶端。
[0069]可選的,所述裝置還包括:
[0070]請求單元404,用于在該IPC對應(yīng)的獨立緩存區(qū)中未查找到該指定數(shù)據(jù)包時,向該IPC請求對該指定數(shù)據(jù)包進(jìn)行重傳;當(dāng)收到該IPC重傳的所述指定數(shù)據(jù)包時,將該指定數(shù)據(jù)包保存在公共緩存區(qū),并將該指定數(shù)據(jù)包發(fā)送至客戶端。
[0071]可選的,所述裝置還包括:
[0072]檢測單元405,用于按照預(yù)設(shè)時間間隔將該IPC對應(yīng)的獨立緩存區(qū)的緩存空間大小發(fā)送到該IPC,以使該IPC根據(jù)當(dāng)前流量將自身的緩存數(shù)據(jù)大小反饋至該NVR,NVR接收并記錄該IPC的緩存數(shù)據(jù)大?。?br>[0073]所述請求單元404,還用于在NVR向該IPC請求對該指定數(shù)據(jù)包進(jìn)行重傳之前,通過記錄的該IPC的緩存數(shù)據(jù)大小判斷該IPC是否緩存該指定數(shù)據(jù)包,若是,則向該IPC請求對該指定數(shù)據(jù)包進(jìn)行重傳。
[0074]可選的,所述保存單元401,具體用于在NVR收到IPC發(fā)送的非重傳的第一數(shù)據(jù)包時,判斷該IPC對應(yīng)的獨立緩存區(qū)是否存滿;若存滿,則NVR根據(jù)該IPC的緩存數(shù)據(jù)大小判斷該IPC的緩存數(shù)據(jù)中是否包括該IPC對應(yīng)的獨立緩存區(qū)中時間最早的第二數(shù)據(jù)包,若包括,則將該第二數(shù)據(jù)包刪除;若不包括,則將該第二數(shù)據(jù)包回傳至該IPC;并將該第一數(shù)據(jù)包按照時間順序存儲到該獨立緩存區(qū);若未存滿,則NVR將該第一數(shù)據(jù)包按照時間順序存儲到該獨立緩存區(qū)。
[0075]由此可見,本發(fā)明可以將IPC重傳的數(shù)據(jù)包保存在NVR的公共緩存區(qū),并在收到客戶端請求IPC對指定數(shù)據(jù)包進(jìn)行重傳時,在公共緩存區(qū)查找該指定數(shù)據(jù)包,并將查找的該指定數(shù)據(jù)包發(fā)送至該客戶端。因此本發(fā)明可以通過緩存重傳數(shù)據(jù)包來使后續(xù)其他客戶端請求相同的數(shù)據(jù)包時可以快速的重傳,從而可以向客戶端重傳時間較早的數(shù)據(jù)包,提升用戶體驗。
[0076]上述裝置中各個單元的功能和作用的實現(xiàn)過程具體詳見上述方法中對應(yīng)步驟的實現(xiàn)過程,在此不再贅述。
[0077]對于裝置實施例而言,由于其基本對應(yīng)于方法實施例,所以相關(guān)之處參見方法實施例的部分說明即可。以上所描述的裝置實施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部模塊來實現(xiàn)本申請方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動的情況下,即可以理解并實施。
[0078]以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明保護的范圍之內(nèi)。
【主權(quán)項】
1.一種數(shù)據(jù)重傳方法,其特征在于,所述方法包括: 當(dāng)NVR收到IPC發(fā)送的數(shù)據(jù)包時,判斷該數(shù)據(jù)包是否為重傳數(shù)據(jù);若是重傳數(shù)據(jù),則將該數(shù)據(jù)包保存在公共緩存區(qū); 在NVR收到客戶端請求對該IPC中的指定數(shù)據(jù)包進(jìn)行重傳時,該NVR在公共緩存區(qū)中查找該指定數(shù)據(jù)包; 在查找到該指定數(shù)據(jù)包時,將該指定數(shù)據(jù)包發(fā)送至該客戶端。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括: 若所述IPC發(fā)送的數(shù)據(jù)包不是重傳數(shù)據(jù)時,則將該數(shù)據(jù)包保存在該IPC對應(yīng)的獨立緩存區(qū); 當(dāng)NVR在公共緩存區(qū)中未查找到該指定數(shù)據(jù)包時,在該IPC對應(yīng)的獨立緩存區(qū)中查找該指定數(shù)據(jù)包; 在查找到該指定數(shù)據(jù)包時,將該指定數(shù)據(jù)包發(fā)送至該客戶端。3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述方法還包括: 當(dāng)NVR在該IPC對應(yīng)的獨立緩存區(qū)中未查找到該指定數(shù)據(jù)包時,向該IPC請求對該指定數(shù)據(jù)包進(jìn)行重傳; 當(dāng)收到該IPC重傳的所述指定數(shù)據(jù)包時,將該指定數(shù)據(jù)包保存在公共緩存區(qū),并將該指定數(shù)據(jù)包發(fā)送至客戶端。4.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述方法還包括: NVR按照預(yù)設(shè)時間間隔將該IPC對應(yīng)的獨立緩存區(qū)的緩存空間大小發(fā)送到該IPC,以使該IPC根據(jù)當(dāng)前流量將自身的緩存數(shù)據(jù)大小反饋至該NVR,NVR接收并記錄該IPC的緩存數(shù)據(jù)大??; 在NVR向該IPC請求對該指定數(shù)據(jù)包進(jìn)行重傳之前,所述方法還包括: 通過記錄的該IPC的緩存數(shù)據(jù)大小判斷該IPC是否緩存該指定數(shù)據(jù)包,若是,則向該IPC請求對該指定數(shù)據(jù)包進(jìn)行重傳。5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述若所述IPC發(fā)送的數(shù)據(jù)包不是重傳數(shù)據(jù)時,則將該數(shù)據(jù)包保存在該IPC對應(yīng)的獨立緩存區(qū),具體包括: 當(dāng)NVR收到IPC發(fā)送的非重傳的第一數(shù)據(jù)包時,判斷該IPC對應(yīng)的獨立緩存區(qū)是否存滿;若存滿,則NVR根據(jù)該IPC的緩存數(shù)據(jù)大小判斷該IPC的緩存數(shù)據(jù)中是否包括該IPC對應(yīng)的獨立緩存區(qū)中時間最早的第二數(shù)據(jù)包,若包括,則將該第二數(shù)據(jù)包刪除;若不包括,則將該第二數(shù)據(jù)包回傳至該IPC;并將該第一數(shù)據(jù)包按照時間順序存儲到該獨立緩存區(qū); 若未存滿,則NVR將該第一數(shù)據(jù)包按照時間順序存儲到該獨立緩存區(qū)。6.一種數(shù)據(jù)重傳裝置,其特征在于,所述裝置包括: 保存單元,用于在NVR收到IPC發(fā)送的數(shù)據(jù)包時,判斷該數(shù)據(jù)包是否為重傳數(shù)據(jù);若是重傳數(shù)據(jù),則將該數(shù)據(jù)包保存在公共緩存區(qū); 查找單元,用于在NVR收到客戶端請求對該IPC中的指定數(shù)據(jù)包進(jìn)行重傳時,該NVR在公共緩存區(qū)中查找該指定數(shù)據(jù)包; 發(fā)送單元,用于在查找到該指定數(shù)據(jù)包時,將該指定數(shù)據(jù)包發(fā)送至該客戶端。7.根據(jù)權(quán)利要求6所述的方法,其特征在于, 所述保存單元,還用于當(dāng)所述IPC發(fā)送的數(shù)據(jù)包不是重傳數(shù)據(jù)時,將該數(shù)據(jù)包保存在該IPC對應(yīng)的獨立緩存區(qū); 所述查找單元,還用于在公共緩存區(qū)中未查找到該指定數(shù)據(jù)包時,在該IPC對應(yīng)的獨立緩存區(qū)中查找該指定數(shù)據(jù)包; 所述發(fā)送單元,還用于在查找到該指定數(shù)據(jù)包時,將該指定數(shù)據(jù)包發(fā)送至該客戶端。8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述裝置還包括: 請求單元,用于在該IPC對應(yīng)的獨立緩存區(qū)中未查找到該指定數(shù)據(jù)包時,向該IPC請求對該指定數(shù)據(jù)包進(jìn)行重傳;當(dāng)收到該IPC重傳的所述指定數(shù)據(jù)包時,將該指定數(shù)據(jù)包保存在公共緩存區(qū),并將該指定數(shù)據(jù)包發(fā)送至客戶端。9.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述裝置還包括: 檢測單元,用于按照預(yù)設(shè)時間間隔將該IPC對應(yīng)的獨立緩存區(qū)的緩存空間大小發(fā)送到該IPC,以使該IPC根據(jù)當(dāng)前流量將自身的緩存數(shù)據(jù)大小反饋至該NVR,NVR接收并記錄該IPC的緩存數(shù)據(jù)大?。?所述請求單元,還用于在NVR向該IPC請求對該指定數(shù)據(jù)包進(jìn)行重傳之前,通過記錄的該IPC的緩存數(shù)據(jù)大小判斷該IPC是否緩存該指定數(shù)據(jù)包,若是,則向該IPC請求對該指定數(shù)據(jù)包進(jìn)行重傳。10.根據(jù)權(quán)利要求7所述的裝置,其特征在于, 所述保存單元,具體用于在NVR收到IPC發(fā)送的非重傳的第一數(shù)據(jù)包時,判斷該IPC對應(yīng)的獨立緩存區(qū)是否存滿;若存滿,則NVR根據(jù)該IPC的緩存數(shù)據(jù)大小判斷該IPC的緩存數(shù)據(jù)中是否包括該IPC對應(yīng)的獨立緩存區(qū)中時間最早的第二數(shù)據(jù)包,若包括,則將該第二數(shù)據(jù)包刪除;若不包括,則將該第二數(shù)據(jù)包回傳至該IPC;并將該第一數(shù)據(jù)包按照時間順序存儲到該獨立緩存區(qū);若未存滿,則NVR將該第一數(shù)據(jù)包按照時間順序存儲到該獨立緩存區(qū)。
【文檔編號】H04L29/06GK106059718SQ201610292019
【公開日】2016年10月26日
【申請日】2016年5月5日
【發(fā)明人】周迪, 余劍聲
【申請人】浙江宇視科技有限公司