專利名稱:一種數(shù)據(jù)包序列接收的方法及設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)包接收技術(shù),特別涉及一種數(shù)據(jù)包序列接收的方法及設(shè)備。
背景技術(shù):
在網(wǎng)絡(luò)中,發(fā)送端將需要發(fā)送的數(shù)據(jù)封裝在各種協(xié)議的數(shù)據(jù)包里進(jìn)行傳 輸。雖然不同協(xié)議的數(shù)據(jù)包報(bào)文頭部格式不同,但在數(shù)據(jù)包報(bào)文頭部中都包
含有兩個(gè)常見的信息字段序號(Sequence Number)和時(shí)戳(Timestamp )。 接收端接收到發(fā)送端發(fā)送的數(shù)據(jù)包后,根據(jù)數(shù)據(jù)包報(bào)文頭部中包含的序號或 時(shí)戳信息作為重排序的依據(jù),恢復(fù)發(fā)送端發(fā)出的原始數(shù)據(jù)包序列。
以播放音視頻為例,服務(wù)器每次從節(jié)目中獲取一幀數(shù)據(jù),分成幾個(gè)實(shí)時(shí) 傳輸協(xié)議(RTP, Real Time Protocol)數(shù)據(jù)包,將編碼數(shù)據(jù)封裝成RTP數(shù)據(jù) 包,然后將時(shí)戳和序號添加到RTP包頭,屬于同一幀的數(shù)據(jù)包具有相同的 時(shí)戳。當(dāng)?shù)竭_(dá)數(shù)據(jù)包所應(yīng)播放的時(shí)間后,服務(wù)器便將這一幀的音視頻數(shù)據(jù)包 發(fā)送出去,然后再讀取下一幀數(shù)據(jù)。
音視頻RTP數(shù)據(jù)包經(jīng)互聯(lián)網(wǎng)絡(luò)傳輸?shù)娇蛻艚邮斩撕?,先進(jìn)入一個(gè)緩沖 隊(duì)列等待,這個(gè)緩沖隊(duì)列中的所有數(shù)據(jù)包按照包頭中包含的序號重新排序, 如果有遲到的數(shù)據(jù)包,則根據(jù)遲到的數(shù)據(jù)包中包含的序號重新將遲到的數(shù)據(jù) 包插入到正確的位置上,以避免亂序的問題。
客戶接收端每次從緩沖隊(duì)列頭部讀取一幀的數(shù)據(jù),從包頭中包含的時(shí)戳 信息解出該幀的播放時(shí)間,然后進(jìn)行音視頻同步處理。同步后的數(shù)據(jù)將送入 解碼器進(jìn)行解碼,解碼后的數(shù)據(jù)被送入一個(gè)循環(huán)讀取的緩存中等待。 一旦該 幀的播放時(shí)間到達(dá),解碼數(shù)據(jù)就被從緩存中取出,送入播放模塊驅(qū)動底層硬
件設(shè)備進(jìn)行顯示或播放。客戶接收端還可根據(jù)序列號對丟失、損壞和重復(fù)的 數(shù)據(jù)包進(jìn)行檢測。
在現(xiàn)有技術(shù)中,例如上述播放音視頻中,客戶接收端根據(jù)數(shù)據(jù)包包頭包 含的序號對發(fā)送端發(fā)送的原始數(shù)據(jù)包重新排序,恢復(fù)原始數(shù)據(jù)包序列。在實(shí) 際應(yīng)用中,如果發(fā)送的數(shù)據(jù)包間隔發(fā)生變化,也就是數(shù)據(jù)包包頭序號信息所 表示的時(shí)間長度發(fā)生變化時(shí),基于序號排序不能體現(xiàn)出這種數(shù)據(jù)包發(fā)包的間 隔變化,因此,在現(xiàn)有技術(shù)中,對于發(fā)包時(shí)間間隔變化的數(shù)據(jù)包,采用其它 控制處理技術(shù),需要額外的處理開銷。
此外,發(fā)送端發(fā)送的數(shù)據(jù)包時(shí)間間隔正常,而序號可能因?yàn)槟撤N原因清 零或發(fā)生大的跳變的情況下,客戶接收端接收數(shù)據(jù)包,根據(jù)包含的序號(序 號清零或發(fā)生大的跳變)不能確定發(fā)送端的情況,增加了進(jìn)行統(tǒng)計(jì)和處理的 復(fù)雜度。
進(jìn)一 步地,如果客戶接收端單純根據(jù)接收的數(shù)據(jù)包包含的序號來恢復(fù)發(fā) 送端的原始數(shù)據(jù)包序列,在某些應(yīng)用場合下會受限于序號的位寬。舉例來說,
如果序號位寬為16bit,則序號的最大值為65535,傳輸過程中,可能很快就 將出現(xiàn)序號溢出的現(xiàn)象,如果序號位寬更小,序號溢出的頻率也就越頻繁, 需要系統(tǒng)增加額外的開銷來處理序號溢出回轉(zhuǎn)歸零問題,降低了系統(tǒng)資源的 利用率。
現(xiàn)有技術(shù)中另外一種恢復(fù)發(fā)送端的原始數(shù)據(jù)包序列的方法是通過數(shù)據(jù) 包中包含的時(shí)戳信息,客戶接收端根據(jù)時(shí)戳對原始數(shù)據(jù)包序列重新排序。發(fā) 送端在采樣數(shù)據(jù)包分組中的第 一個(gè)字節(jié)設(shè)置時(shí)戳,時(shí)戳值隨著發(fā)送分組的時(shí) 間推遲而遞增,客戶接收端接收到數(shù)據(jù)包后,利用時(shí)戳信息重建數(shù)據(jù)包原始 時(shí)間,同步數(shù)據(jù)包,并以正確的速率播放信息。
但上述基于時(shí)戳恢復(fù)原始數(shù)據(jù)包序列的方法,時(shí)戳精度要求較高,相對 于序號,相同位寬的時(shí)戳,其溢出的頻率比序號快很多,這也需要增加系統(tǒng) 額外的開銷來處理溢出回轉(zhuǎn)歸零問題。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供一種數(shù)據(jù)包序列接收的方法,可以適應(yīng)不同的數(shù)據(jù)包 時(shí)間間隔,提高資源利用率。
本發(fā)明實(shí)施例還提供一種數(shù)據(jù)包序列接收的設(shè)備,可以適應(yīng)不同的數(shù)據(jù) 包時(shí)間間隔,提高資源利用率。
為達(dá)到上述目的,本發(fā)明實(shí)施例的技術(shù)方案具體是這樣實(shí)現(xiàn)的
一種數(shù)據(jù)包序列接收的方法,該方法包含
接收數(shù)據(jù)包序列,為接收的數(shù)據(jù)包分配虛擬序號;
當(dāng)接收的當(dāng)前數(shù)據(jù)包是第 一個(gè)分配虛擬序號的數(shù)據(jù)包以后的數(shù)據(jù)包時(shí), 根據(jù)上一個(gè)數(shù)據(jù)包虛擬序號及時(shí)戳信息、當(dāng)前數(shù)據(jù)包時(shí)戳信息以及最小數(shù)據(jù) 打包間隔獲取當(dāng)前數(shù)據(jù)包的虛擬序號;
根據(jù)虛擬序號對所述接收的數(shù)據(jù)包序列重新排序。
一種數(shù)據(jù)包序列接收的設(shè)備,該設(shè)備包含
數(shù)據(jù)包接收單元,用于接收數(shù)據(jù)包序列;
虛擬序號生成單元,用于給數(shù)據(jù)包接收單元接收到的數(shù)據(jù)包分配虛擬序 號,并在接收單元接收到的當(dāng)前數(shù)據(jù)包是第一個(gè)分配虛擬序號的數(shù)據(jù)包以后 的數(shù)據(jù)包時(shí),根據(jù)上一個(gè)數(shù)據(jù)包虛擬序號及時(shí)戳信息、當(dāng)前數(shù)據(jù)包時(shí)戳信息, 以及最小數(shù)據(jù)打包間隔獲取當(dāng)前數(shù)據(jù)包的虛擬序號;
數(shù)據(jù)包處理單元,用于根據(jù)數(shù)據(jù)包包含的虛擬序號對接收的數(shù)據(jù)包序列 重新排序。
由上述技術(shù)方案可見,本發(fā)明實(shí)施例的一種數(shù)據(jù)包序列接收的方法及設(shè) 備,通過將數(shù)據(jù)包中的時(shí)戳信息轉(zhuǎn)換成位寬不受限的虛擬序號,虛擬序號攜 帶時(shí)戳信息,并根據(jù)虛擬序號對接收的數(shù)據(jù)包序列進(jìn)行重新排序,虛擬序號 的位寬大,溢出頻率低,虛擬序號與時(shí)戳及數(shù)據(jù)包打包時(shí)長相關(guān),其溢出的 頻率可以控制,工作的確定性更高,穩(wěn)定性更好,可以自適應(yīng)任意數(shù)據(jù)包打 包時(shí)長,提高了資源的利用率。
圖1為本發(fā)明實(shí)施例一種數(shù)據(jù)包序列接收的設(shè)備結(jié)構(gòu)示意圖; 圖2為本發(fā)明實(shí)施例一種數(shù)據(jù)包序列接收的方法流程示意圖。
具體實(shí)施例方式
為使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下參照附圖并舉 實(shí)施例,對本發(fā)明作進(jìn)一步詳細(xì)說明。
本發(fā)明實(shí)施例通過為數(shù)據(jù)包序列的第 一個(gè)數(shù)據(jù)包分配虛擬序號并存儲 相應(yīng)的虛擬序號和時(shí)戳信息,后續(xù)中根據(jù)上一個(gè)數(shù)據(jù)包虛擬序號及時(shí)戳信 息、當(dāng)前數(shù)據(jù)包時(shí)戳信息以及最小數(shù)據(jù)打包間隔獲取當(dāng)前數(shù)據(jù)包的虛擬序 號,將數(shù)據(jù)包中的時(shí)戳信息轉(zhuǎn)換成位寬不受限的虛擬序號,根據(jù)虛擬序號對 接收的數(shù)據(jù)包序列進(jìn)行重新排序,并可以使用虛擬序號對接收隊(duì)列以數(shù)據(jù)分 片或數(shù)據(jù)包為單位進(jìn)行排序和輸出管理。
為了實(shí)現(xiàn)上述目的,本發(fā)明實(shí)施例提出了一種數(shù)據(jù)包序列接收的設(shè)備。
圖1為本發(fā)明實(shí)施例一種數(shù)據(jù)包序列接收的設(shè)備結(jié)構(gòu)示意圖。參見圖1, 該設(shè)備包含數(shù)據(jù)包接收單元、虛擬序號生成單元及數(shù)據(jù)包處理單元,其中,
數(shù)據(jù)包接收單元,用于接收數(shù)據(jù)包序列;
虛擬序號生成單元,用于給數(shù)據(jù)包接收單元接收到的數(shù)據(jù)包隨機(jī)分配虛 擬序號,并在接收單元接收到的當(dāng)前數(shù)據(jù)包是第 一個(gè)分配虛擬序號的數(shù)據(jù)包 以后的數(shù)據(jù)包時(shí),根據(jù)上一個(gè)數(shù)據(jù)包虛擬序號及時(shí)戳信息、當(dāng)前數(shù)據(jù)包時(shí)戳 信息,以及最小數(shù)據(jù)打包間隔獲取當(dāng)前數(shù)據(jù)包的虛擬序號。
實(shí)際應(yīng)用中,虛擬序號生成單元具體可以為第一虛擬序號生成單元,用 于根據(jù)當(dāng)前數(shù)據(jù)包的時(shí)戳和上一個(gè)數(shù)據(jù)包的時(shí)戳獲取當(dāng)前數(shù)據(jù)包與上一個(gè) 數(shù)據(jù)包的打包間隔,將所述打包間隔與所述最小數(shù)據(jù)打包間隔相比,得到虛 擬序號增量,將上一個(gè)數(shù)據(jù)包的虛擬序號加上所述虛擬序號增量獲取所述當(dāng) 前數(shù)據(jù)包的虛擬序號;
虛擬序號生成單元也可以為第二虛擬序號生成單元,用于根據(jù)當(dāng)前數(shù)據(jù)包的時(shí)戳和上一個(gè)數(shù)據(jù)包的時(shí)戳獲取當(dāng)前數(shù)據(jù)包與上一個(gè)數(shù)據(jù)包的打包間 隔,將所述打包間隔與設(shè)置的調(diào)度發(fā)包補(bǔ)償時(shí)間相加后與最小數(shù)據(jù)打包間隔 相比,對相比后的結(jié)果進(jìn)行取整運(yùn)算得到虛擬序號增量,將上一個(gè)數(shù)據(jù)包的 虛擬序號加上所述虛擬序號增量獲取所述當(dāng)前數(shù)據(jù)包的虛擬序號。
虛擬序號生成單元包括虛擬序號生成模塊及存儲模塊,其中,
存儲模塊,用于存儲數(shù)據(jù)包的虛擬序號及時(shí)戳信息;
虛擬序號生成模塊,用于給數(shù)據(jù)包接收單元接收到的數(shù)據(jù)包虛擬序號, 將分配的虛擬序號及對應(yīng)數(shù)據(jù)包的時(shí)戳信息存儲至存儲模塊;并在接收單元 接收到的當(dāng)前數(shù)據(jù)包是第 一個(gè)分配虛擬序號的數(shù)據(jù)包以后的數(shù)據(jù)包時(shí),根據(jù) 存儲模塊存儲的上一個(gè)數(shù)據(jù)包虛擬序號及時(shí)戳信息、當(dāng)前數(shù)據(jù)包時(shí)戳信息以 及最小數(shù)據(jù)打包間隔獲取當(dāng)前數(shù)據(jù)包的虛擬序號,將獲取的虛擬序號及當(dāng)前 數(shù)據(jù)包的時(shí)戳信息更新至存儲模塊。
實(shí)際應(yīng)用中,判斷接收到的當(dāng)前數(shù)據(jù)包是否為第 一個(gè)分配虛擬序號的數(shù) 據(jù)包,可以根據(jù)用戶的實(shí)際需求來進(jìn)行選擇,如用戶可以根據(jù)實(shí)際需求選擇 接收的數(shù)據(jù)包序列中一個(gè)數(shù)據(jù)包為第一個(gè)數(shù)據(jù)包,為該數(shù)據(jù)包隨機(jī)分配虛擬 序號,則后續(xù)依次接收的數(shù)據(jù)包為第二個(gè),第三個(gè),…,第k個(gè)。當(dāng)計(jì)算出 的虛擬序號溢出時(shí),進(jìn)行溢出回轉(zhuǎn)歸零處理,由于虛擬序號的位寬可較序號 和時(shí)戳的位寬大很多,大大降低了其溢出的頻率。
數(shù)據(jù)包處理單元,用于根據(jù)數(shù)據(jù)包包含的虛擬序號對接收的數(shù)據(jù)包序列 重新排序。
實(shí)際應(yīng)用中,數(shù)據(jù)包處理單元還可以包括緩存模塊以及排序模塊; 緩存模塊,用于緩存數(shù)據(jù)包;
緩存模塊緩存的大小可以根據(jù)實(shí)際需要進(jìn)行設(shè)置,緩存數(shù)據(jù)包后,形成 緩存數(shù)據(jù)包隊(duì)列,
排序模塊,用于根據(jù)當(dāng)前數(shù)據(jù)包的虛擬序號進(jìn)行排序,將當(dāng)前數(shù)據(jù)包插 入到緩存模塊的數(shù)據(jù)包隊(duì)列的相應(yīng)位置。
該設(shè)備還可以進(jìn)一步包括數(shù)據(jù)分片單元,用于將當(dāng)前數(shù)據(jù)包的打包間隔
與最小數(shù)據(jù)打包間隔相比得到當(dāng)前數(shù)據(jù)包包含的數(shù)據(jù)分片數(shù)N,給當(dāng)前數(shù)據(jù)
包的N個(gè)分片分配從虛擬序號生成單元得到的當(dāng)前數(shù)據(jù)包的虛擬序號開始 的連續(xù)N個(gè)虛擬序號,每個(gè)虛擬序號對應(yīng)一個(gè)最小打包間隔時(shí)間的數(shù)據(jù)分 片。
圖2為本發(fā)明實(shí)施例一種數(shù)據(jù)包序列接收的方法流程示意圖。參見圖2, 該流程包括
步驟201,記錄接收到的數(shù)據(jù)包序列,為接收的數(shù)據(jù)包分配虛擬序號;
本步驟中,設(shè)置接收到的數(shù)據(jù)包序列的第一個(gè)數(shù)據(jù)包的虛擬序號為N, 記錄接收到的數(shù)據(jù)包序列的第 一個(gè)數(shù)據(jù)包的時(shí)戳信息及設(shè)置的虛擬序號。
實(shí)際應(yīng)用中,N值可以根據(jù)實(shí)際需要進(jìn)行設(shè)置,其設(shè)置的初值,即第一 個(gè)數(shù)據(jù)包的虛擬序號可以不受限制,同樣,虛擬序號的位寬也可以不受限制。
設(shè)置接收的數(shù)據(jù)包作為當(dāng)前數(shù)據(jù)包。舉例來說,如果接收到數(shù)據(jù)包序列 的第一個(gè)數(shù)據(jù)包,則第一個(gè)數(shù)據(jù)包為當(dāng)前數(shù)據(jù)包;當(dāng)接收到數(shù)據(jù)包序列的第 二個(gè)數(shù)據(jù)包時(shí),第二個(gè)數(shù)據(jù)包為當(dāng)前數(shù)據(jù)包,第一個(gè)數(shù)據(jù)包為上一個(gè)數(shù)據(jù)包, 依此類推。
步驟202,當(dāng)接收的當(dāng)前數(shù)據(jù)包是第 一個(gè)分配虛擬序號的數(shù)據(jù)包以后的 數(shù)據(jù)包時(shí),根據(jù)上一個(gè)數(shù)據(jù)包虛擬序號及時(shí)戳信息、當(dāng)前數(shù)據(jù)包時(shí)戳信息以 及最小數(shù)據(jù)打包間隔獲取當(dāng)前數(shù)據(jù)包的虛擬序號;
本步驟中,獲取當(dāng)前數(shù)據(jù)包的虛擬序號,即虛擬序號算法可以是
當(dāng)前數(shù)據(jù)包的虛擬序號-上一個(gè)數(shù)據(jù)包的虛擬序號十M[(當(dāng)前數(shù)據(jù)包的 時(shí)戳-上一個(gè)數(shù)據(jù)包的時(shí)戳)/最小數(shù)據(jù)打包間隔];
虛擬序號算法也可以是
當(dāng)前數(shù)據(jù)包的虛擬序號上一個(gè)數(shù)據(jù)包的虛擬序號+M[(當(dāng)前數(shù)據(jù)包的 時(shí)戳-上一個(gè)數(shù)據(jù)包的時(shí)戳+Delta) /最小數(shù)據(jù)打包間隔]; 其中,
Delta為調(diào)度發(fā)包補(bǔ)償時(shí)間,是考慮調(diào)度數(shù)據(jù)包發(fā)包存在的時(shí)間誤差所 引入的參數(shù),如果數(shù)據(jù)包嚴(yán)格按打包間隔進(jìn)行調(diào)度,則Delta可以設(shè)置為零
或不進(jìn)行設(shè)置,Delta最大不超過最小數(shù)據(jù)打包間隔。實(shí)際應(yīng)用中,可以取 最小數(shù)據(jù)打包間隔的一半,單位與時(shí)戳的單位一致;
當(dāng)前數(shù)據(jù)包的時(shí)戳-上一個(gè)數(shù)據(jù)包的時(shí)戳,為當(dāng)前數(shù)據(jù)包的打包間隔。
最小數(shù)據(jù)打包間隔,與時(shí)戳的單位保持一致;
M[],表示對[]進(jìn)行取整運(yùn)算的運(yùn)算符。
舉例來說,例如實(shí)際最小數(shù)據(jù)打包間隔為10ms,時(shí)戳單位為1/8ms,則 公式中最小數(shù)據(jù)打包間隔與時(shí)戳的單位保持一致,為80 (1/8ms); 假設(shè)此時(shí)時(shí)戳之差是160 (1/8ms) , Delta取40 ( 1/8ms ),則 當(dāng)前數(shù)據(jù)包的虛擬序號=上一數(shù)據(jù)包的虛擬序號+2。 實(shí)際應(yīng)用中,也可以設(shè)定其它的算法計(jì)算數(shù)據(jù)包序列的虛擬序號,并將 當(dāng)前數(shù)據(jù)包的時(shí)戳信息及計(jì)算好的虛擬序號進(jìn)行存儲,即用當(dāng)前數(shù)據(jù)包的時(shí) 戳信息及計(jì)算好的虛擬序號替換存儲的上一個(gè)時(shí)戳信息及虛擬序號。對于虛 擬序號算法中的除以最小數(shù)據(jù)包打包間隔取值的運(yùn)算,也可以通過移位運(yùn)算 來實(shí)現(xiàn)。
步驟203,根據(jù)當(dāng)前數(shù)據(jù)包的打包間隔與最小數(shù)據(jù)打包間隔,計(jì)算得到 當(dāng)前數(shù)據(jù)包包含的數(shù)據(jù)分片數(shù),重新排序;
本步驟中,當(dāng)前數(shù)據(jù)包的打包間隔=當(dāng)前數(shù)據(jù)包的時(shí)戳-上一個(gè)數(shù)據(jù)包 的時(shí)戳。舉例來說,假設(shè)數(shù)據(jù)包最小打包間隔為10ms,當(dāng)前數(shù)據(jù)包的打包 間隔為30ms,時(shí)戳單位為1/8ms,上一數(shù)據(jù)包的虛擬序號為97,則依據(jù)算 法當(dāng)前數(shù)據(jù)包的虛擬序號-上一個(gè)數(shù)據(jù)包的虛擬序號+M[(當(dāng)前數(shù)據(jù)包的 時(shí)戳-上一個(gè)數(shù)據(jù)包的時(shí)戳+Ddta) /最小數(shù)據(jù)打包間隔]。
計(jì)算出當(dāng)前數(shù)據(jù)包的虛擬序號為100,當(dāng)前數(shù)據(jù)包打包間隔是最小數(shù)據(jù) 打包間隔單位的3倍,則認(rèn)為當(dāng)前數(shù)據(jù)包中包含了虛擬序號為100、 101、 102的三個(gè)數(shù)據(jù)分片,并將這三個(gè)數(shù)據(jù)分片按照虛擬序號順序進(jìn)行排序并插 入到緩存數(shù)據(jù)包隊(duì)列的適當(dāng)位置。
實(shí)際應(yīng)用中,如果根據(jù)上述算法計(jì)算得到當(dāng)前數(shù)據(jù)包的虛擬序號是L, 而當(dāng)前數(shù)據(jù)包中的數(shù)據(jù)(實(shí)際打包間隔)是最小數(shù)據(jù)打包間隔單位的P倍,
即計(jì)算得到當(dāng)前數(shù)據(jù)包包含的數(shù)據(jù)分片數(shù)為P,則可以認(rèn)為當(dāng)前數(shù)據(jù)包中包
含了虛擬序號為L、 L+l......L + P-1的P個(gè)K據(jù)分片,每個(gè)虛擬序號
對應(yīng) 一個(gè)最小打包間隔時(shí)間的數(shù)據(jù)分片,并將這P個(gè)數(shù)據(jù)分片按虛擬序號的 順序進(jìn)行排序并插入到緩存數(shù)據(jù)包隊(duì)列中。
實(shí)際應(yīng)用中,對于緩存數(shù)據(jù)包隊(duì)列,也可以不以數(shù)據(jù)分片為單位而直接 以數(shù)據(jù)包為單位進(jìn)行管理即多個(gè)數(shù)據(jù)分片的數(shù)據(jù)包序列可以不分解成虛擬 序號不同的數(shù)據(jù)分片,而直接以虛擬序號間隔為P的數(shù)據(jù)包為單位進(jìn)行緩存 以及數(shù)據(jù)包隊(duì)列的排序,舉例來說,假設(shè)P = 3,上一個(gè)數(shù)據(jù)包虛擬序號為 97,則當(dāng)前數(shù)據(jù)包虛擬序號為100,按照虛擬序號間隔為3對數(shù)據(jù)包進(jìn)行緩 存和排序,即不考慮數(shù)據(jù)包包含的的數(shù)據(jù)分片的虛擬序號,在輸出的時(shí)候再 根據(jù)數(shù)據(jù)包內(nèi)包含的數(shù)據(jù)分片數(shù)決定該數(shù)據(jù)包持續(xù)播放的時(shí)間。
對于接收的數(shù)據(jù)包序列,數(shù)據(jù)包的重復(fù)和亂序也可以基于虛擬序號進(jìn)行 判斷,其判斷的方法與基于序號的判斷方法相類似,在此不再贅述。
由上述實(shí)施例可見,豐發(fā)明實(shí)施例的一種數(shù)據(jù)包序列接收的方法及設(shè) 備,通過為數(shù)據(jù)包序列的第 一個(gè)數(shù)據(jù)包分配虛擬序號并存儲相應(yīng)的虛擬序號 和時(shí)戳信息,后續(xù)中根據(jù)上一個(gè)數(shù)據(jù)包虛擬序號及時(shí)戳信息、當(dāng)前數(shù)據(jù)包時(shí) 戳信息,采用設(shè)定的虛擬序號算法計(jì)算得到當(dāng)前數(shù)據(jù)包的虛擬序號,將數(shù)據(jù) 包中的時(shí)戳信息轉(zhuǎn)換成位寬不受限的虛擬序號,并根據(jù)虛擬序號對接收的數(shù) 據(jù)包序列進(jìn)行重新排序,并可以使用虛擬序號對接收的數(shù)據(jù)包序列以數(shù)據(jù)分 片或數(shù)據(jù)包為單位進(jìn)行排序和輸出管理。由于虛擬序號的位寬和初值可以進(jìn) 行設(shè)置,大大拓寬了虛擬序號的范圍,降低了溢出的頻率;而且,虛擬序號 與時(shí)戳及數(shù)據(jù)包打包時(shí)長相關(guān),其溢出的頻率可以控制,工作的確定性更高, 穩(wěn)定性更好,可以自適應(yīng)任意數(shù)據(jù)包打包時(shí)長,提高了資源的利用率。
以上舉較佳實(shí)施例,對本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)進(jìn)行了進(jìn)一步詳 細(xì)說明,所應(yīng)理解的是,以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以 限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、 改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種數(shù)據(jù)包序列接收的方法,其特征在于,該方法包括接收數(shù)據(jù)包序列,為接收的數(shù)據(jù)包分配虛擬序號;當(dāng)接收的當(dāng)前數(shù)據(jù)包是第一個(gè)分配虛擬序號的數(shù)據(jù)包以后的數(shù)據(jù)包時(shí),根據(jù)上一個(gè)數(shù)據(jù)包虛擬序號及時(shí)戳信息、所述當(dāng)前數(shù)據(jù)包時(shí)戳信息以及最小數(shù)據(jù)打包間隔獲取所述當(dāng)前數(shù)據(jù)包的虛擬序號;根據(jù)虛擬序號對所述接收的數(shù)據(jù)包序列重新排序。
2. 如權(quán)利要求1所述的方法,其特征在于,所述獲取當(dāng)前數(shù)據(jù)包的虛 擬序號包括根據(jù)當(dāng)前數(shù)據(jù)包的時(shí)戳和上一個(gè)數(shù)據(jù)包的時(shí)戳獲取當(dāng)前數(shù)據(jù)包與上一 個(gè)數(shù)據(jù)包的打包間隔,將所述打包間隔與所述最小數(shù)據(jù)打包間隔相比,得到 虛擬序號增量,將上一個(gè)數(shù)據(jù)包的虛擬序號加上所述虛擬序號增量獲取所述 當(dāng)前數(shù)據(jù)包的虛擬序號。
3. 如權(quán)利要求1所述的方法,其特征在于,所述獲取當(dāng)前數(shù)據(jù)包的虛 擬序號包括設(shè)置調(diào)度發(fā)包補(bǔ)償時(shí)間,根據(jù)當(dāng)前數(shù)據(jù)包的時(shí)戳和上一個(gè)數(shù)據(jù) 包的時(shí)戳獲取當(dāng)前數(shù)據(jù)包與上一個(gè)數(shù)據(jù)包的打包間隔,將所述打包間隔與所 述設(shè)置的調(diào)度發(fā)包補(bǔ)償時(shí)間相加后與最小數(shù)據(jù)打包間隔相比,對相比后的結(jié) 果進(jìn)行取整運(yùn)算得到虛擬序號增量,將上一個(gè)數(shù)據(jù)包的虛擬序號加上所述虛 擬序號增量獲取所述當(dāng)前數(shù)據(jù)包的虛擬序號。
4. 如權(quán)利要求1或2或3所述的方法,其特征在于,在為第一個(gè)數(shù)據(jù) 包分配虛擬序號后,所述方法進(jìn)一步包括存儲分配的虛擬序號及數(shù)據(jù)包包 含的時(shí)戳信息。
5. 如權(quán)利要求4所述的方法,其特征在于,在所述獲取所述當(dāng)前數(shù)據(jù) 包的虛擬序號后,所述方法進(jìn)一步包括用所述當(dāng)前數(shù)據(jù)包時(shí)戳信息及獲取 的當(dāng)前數(shù)據(jù)包虛擬序號分別替換存儲的所述當(dāng)前數(shù)據(jù)包的上一個(gè)包的虛擬 序號及時(shí)戳信息。
6. 如權(quán)利要求1或2或3所述的方法,其特征在于,所述獲取當(dāng)前數(shù) 據(jù)包的虛擬序號進(jìn)一步包括根據(jù)當(dāng)前數(shù)據(jù)包的打包間隔與最小數(shù)據(jù)打包間 隔,計(jì)算得到當(dāng)前數(shù)據(jù)包包含的數(shù)據(jù)分片數(shù)N,分片數(shù)為N的數(shù)據(jù)包,占用 從計(jì)算得到的虛擬序號開始的連續(xù)N個(gè)虛擬序號,每個(gè)虛擬序號對應(yīng)一個(gè) 最小打包間隔時(shí)間的數(shù)據(jù)分片。
7. 如權(quán)利要求6所述的方法,其特征在于,所述根據(jù)虛擬序號對接收 的數(shù)據(jù)包序列重新排序包括根據(jù)獲取的數(shù)據(jù)包包含的數(shù)據(jù)分片按虛擬序號 的順序重新排序。
8. 如權(quán)利要求1所述的方法,其特征在于,所述根據(jù)虛擬序號對接收 的數(shù)據(jù)包序列重新排序之后進(jìn)一步包括根據(jù)數(shù)據(jù)包的打包間隔與最小數(shù)據(jù) 打包間隔,計(jì)算得到數(shù)據(jù)包的數(shù)據(jù)分片數(shù),根據(jù)數(shù)據(jù)包內(nèi)包含的數(shù)據(jù)分片數(shù) 決定該數(shù)據(jù)包持續(xù)播放的時(shí)間。
9. 一種數(shù)據(jù)包序列接收的設(shè)備,其特征在于,該設(shè)備包含 數(shù)據(jù)包接收單元,用于接收數(shù)據(jù)包序列;虛擬序號生成單元,用于給所述數(shù)據(jù)包接收單元接收到的數(shù)據(jù)包分配虛 擬序號,并在所述接收單元接收到的當(dāng)前數(shù)據(jù)包是第一個(gè)分配虛擬序號的數(shù) 據(jù)包以后的數(shù)據(jù)包時(shí),根據(jù)上一個(gè)數(shù)據(jù)包虛擬序號及時(shí)戳信息、所述當(dāng)前數(shù) 據(jù)包時(shí)戳信息,以及最小數(shù)據(jù)打包間隔獲取所述當(dāng)前數(shù)據(jù)包的虛擬序號;數(shù)據(jù)包處理單元,用于根據(jù)數(shù)據(jù)包包含的虛擬序號對所述接收的數(shù)據(jù)包 序列重新排序。
10. 如權(quán)利要求9所述的設(shè)備,其特征在于,所述虛擬序號生成單元具 體為第一虛擬序號生成單元,用于根據(jù)當(dāng)前數(shù)據(jù)包的時(shí)戳和上一個(gè)數(shù)據(jù)包的 時(shí)戳獲取當(dāng)前數(shù)據(jù)包與上一個(gè)數(shù)據(jù)包的打包間隔,將所述打包間隔與所述最 小數(shù)據(jù)打包間隔相比,得到虛擬序號增量,將上一個(gè)數(shù)據(jù)包的虛擬序號加上 所述虛擬序號增量獲取所述當(dāng)前數(shù)據(jù)包的虛擬序號。
11. 如權(quán)利要求9所述的設(shè)備,其特征在于,所述虛擬序號生成單元具 體為第二虛擬序號生成單元,用于根據(jù)當(dāng)前數(shù)據(jù)包的時(shí)戳和上一個(gè)數(shù)據(jù)包的時(shí)戳獲取當(dāng)前數(shù)據(jù)包與上 一個(gè)數(shù)據(jù)包的打包間隔,將所述打包間隔與設(shè)置的 調(diào)度補(bǔ)償時(shí)間相加后與最小數(shù)據(jù)打包間隔相比,對相比后的結(jié)果進(jìn)行取整運(yùn) 算得到虛擬序號增量,將上一個(gè)數(shù)據(jù)包的虛擬序號加上所述虛擬序號增量獲 取所述當(dāng)前數(shù)據(jù)包的虛擬序號。
12. 如權(quán)利要求9所述的設(shè)備,其特征在于,所述虛擬序號生成單元包括存儲模塊,用于存儲數(shù)據(jù)包的虛擬序號及時(shí)戳信息;虛擬序號生成模塊,用于給所述數(shù)據(jù)包接收單元接收到的數(shù)據(jù)包分配虛 擬序號,將分配的虛擬序號及對應(yīng)數(shù)據(jù)包的時(shí)戳信息存儲至所述存儲模塊; 并在所述接收單元接收到的當(dāng)前數(shù)據(jù)包是第 一個(gè)分配虛擬序號的數(shù)據(jù)包以 后的數(shù)據(jù)包時(shí),根據(jù)所述存儲模塊存儲的上一個(gè)數(shù)據(jù)包虛擬序號及時(shí)戳信 息、當(dāng)前數(shù)據(jù)包時(shí)戳信息以及最小數(shù)據(jù)打包間隔獲取所述當(dāng)前數(shù)據(jù)包虛擬序 號;將獲取的虛擬序號及當(dāng)前數(shù)據(jù)包的時(shí)戳信息更新至所述存儲模塊。
13. 如權(quán)利要求9~ 12中的任一項(xiàng)所述的設(shè)備,其特征在于,所述設(shè)備 還包括數(shù)據(jù)分片單元,用于將當(dāng)前數(shù)據(jù)包的打包間隔與最小數(shù)據(jù)打包間隔相 比得到當(dāng)前數(shù)據(jù)包包含的數(shù)據(jù)分片數(shù)N,給當(dāng)前數(shù)據(jù)包的N個(gè)分片分配從所 述虛擬序號生成單元得到的當(dāng)前數(shù)據(jù)包的虛擬序號開始的連續(xù)N個(gè)虛擬序 號,每個(gè)虛擬序號對應(yīng) 一 個(gè)最小打包間隔時(shí)間的數(shù)據(jù)分片。
14. 如權(quán)利要求9~ 12中的任一項(xiàng)所述的設(shè)備,其特征在于,所述數(shù)據(jù) 包處理單元包括緩存模塊,用于緩存數(shù)據(jù)包;排序模塊,用于根據(jù)當(dāng)前數(shù)據(jù)包的虛擬序號進(jìn)行排序,將當(dāng)前數(shù)據(jù)包插 入到所述緩存模塊的數(shù)據(jù)包隊(duì)列的相應(yīng)位置。
全文摘要
本發(fā)明公開了一種數(shù)據(jù)包序列接收的方法,包含接收數(shù)據(jù)包序列,為接收的數(shù)據(jù)包分配虛擬序號;當(dāng)接收的當(dāng)前數(shù)據(jù)包是第一個(gè)分配虛擬序號的數(shù)據(jù)包以后的數(shù)據(jù)包時(shí),根據(jù)上一個(gè)數(shù)據(jù)包虛擬序號及時(shí)戳信息、當(dāng)前數(shù)據(jù)包時(shí)戳信息以及最小數(shù)據(jù)打包間隔獲取當(dāng)前數(shù)據(jù)包的虛擬序號;根據(jù)虛擬序號對接收的數(shù)據(jù)包序列重新排序。本發(fā)明同時(shí)公開了一種數(shù)據(jù)包序列接收的設(shè)備。應(yīng)用本發(fā)明,可以降低虛擬序號溢出的頻率,適應(yīng)不同的數(shù)據(jù)包時(shí)間間隔,提高資源利用率。
文檔編號H04L1/00GK101188477SQ200710301380
公開日2008年5月28日 申請日期2007年12月25日 優(yōu)先權(quán)日2007年12月25日
發(fā)明者凡 余 申請人:華為技術(shù)有限公司