亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種TLV格式數(shù)據(jù)的組包方法及系統(tǒng)與流程

文檔序號(hào):12621884閱讀:1683來源:國(guó)知局
一種TLV格式數(shù)據(jù)的組包方法及系統(tǒng)與流程

本發(fā)明涉及TLV格式數(shù)據(jù)處理技術(shù)領(lǐng)域,本發(fā)明公開了一種TLV格式數(shù)據(jù)的組包方法及系統(tǒng)。



背景技術(shù):

在數(shù)據(jù)通信網(wǎng)絡(luò)中,設(shè)備間傳輸交換的很多報(bào)文的內(nèi)容就是TLV格式,比如EPON系統(tǒng)中的OAM報(bào)文等。TLV格式數(shù)據(jù)是由類型type、長(zhǎng)度length和值value三部分構(gòu)成,TLV就是這三個(gè)英文首寫字符的縮寫。在一個(gè)包中就可能包含有多個(gè)TLV的數(shù)據(jù)內(nèi)容,這些TLV的格式是相同的,但長(zhǎng)度是不同的。一個(gè)包中能包含有多少個(gè)TLV數(shù)據(jù)是由包的有效負(fù)載的最大長(zhǎng)度和各個(gè)TLV的長(zhǎng)度之和決定的。

常規(guī)的組包方法就是在包的頭部數(shù)據(jù)后面依次追加各個(gè)TLV數(shù)據(jù)的type值、長(zhǎng)度length值和對(duì)應(yīng)的數(shù)據(jù)內(nèi)容value值。在這種方法中,在追加新的TLV內(nèi)容時(shí),需要時(shí)刻考慮追加數(shù)據(jù)是否存在新增的TLV數(shù)據(jù)的長(zhǎng)度值不能提前預(yù)知的情況,是否存在多個(gè)TLV數(shù)據(jù)存在依賴關(guān)聯(lián)需要在一個(gè)包中的情況,是否會(huì)超出了包的有效負(fù)載的最大長(zhǎng)度,是否能在最少個(gè)數(shù)的包中包含所有預(yù)組包的TLV數(shù)據(jù)內(nèi)容等問題。當(dāng)超出允許的長(zhǎng)度時(shí)就需要將新增的內(nèi)容進(jìn)行回退,以保證一個(gè)包中的所有TLV數(shù)據(jù)都是完整的。因這種方法不能靈活進(jìn)行TLV數(shù)據(jù)的組合組建更多的包、多種情況條件的疊加判斷會(huì)使得處理邏輯復(fù)雜、處理困難、實(shí)現(xiàn)代碼邏輯不清晰、存在難維護(hù)等問題。



技術(shù)實(shí)現(xiàn)要素:

針對(duì)現(xiàn)有技術(shù)中TLV格式數(shù)據(jù)組包存在組包多,邏輯復(fù)雜難以維護(hù)的技術(shù)問題,本發(fā)明公開了一種TLV格式數(shù)據(jù)的組包方法及系統(tǒng)。

本發(fā)明的技術(shù)方案如下:

本發(fā)明公開了一種TLV格式數(shù)據(jù)的組包方法,其具體包括以下的步驟:步驟一、將組建完成的TLV數(shù)據(jù)塊保存在數(shù)據(jù)塊集合中;步驟二、獲取TLV數(shù)據(jù)塊的依賴關(guān)系,將具有依賴關(guān)系的數(shù)據(jù)塊從集合中提取出來,組合成一個(gè)大的虛擬TLV數(shù)據(jù)塊,并將這個(gè)虛擬TLV數(shù)據(jù)塊加入到TLV數(shù)據(jù)塊集合中;步驟三、根據(jù)包的有效負(fù)載的長(zhǎng)度和各個(gè)TLV數(shù)據(jù)塊的長(zhǎng)度進(jìn)行分組,使得每個(gè)分組的總長(zhǎng)度小于等于包負(fù)載的長(zhǎng)度和分組數(shù)目最少,最后將分組后的數(shù)據(jù)塊依照分組方式放入包負(fù)載空間中。

更進(jìn)一步地,上述步驟二中虛擬TLV數(shù)據(jù)塊的類型是一個(gè)虛擬的類型,長(zhǎng)度是構(gòu)成該虛擬TLV數(shù)據(jù)塊的所有子TLV數(shù)據(jù)塊的長(zhǎng)度之和,值由構(gòu)成虛擬TLV數(shù)據(jù)塊的所有真實(shí)的TLV數(shù)據(jù)塊組成。

更進(jìn)一步地,上述步驟三分組后每個(gè)分組對(duì)應(yīng)一個(gè)虛擬TLV數(shù)據(jù)塊,Tp、Lp和Vp分別為分組后新構(gòu)成的虛擬TLV數(shù)據(jù)塊的類型、長(zhǎng)度和值。

更進(jìn)一步地,上述步驟一中組建TLV數(shù)據(jù)的過程具體為:根據(jù)TLV格式中定義的類型type和長(zhǎng)度length預(yù)留對(duì)應(yīng)長(zhǎng)度的空間并填充具體的類型type值,在length空間的后面構(gòu)建該類型的內(nèi)容數(shù)據(jù),將內(nèi)容數(shù)據(jù)的長(zhǎng)度值填充到length域。

本發(fā)明還公開了一種TLV格式數(shù)據(jù)的組包系統(tǒng),其具體包括TLV數(shù)據(jù)組建單元、TLV數(shù)據(jù)存儲(chǔ)單元、TLV數(shù)據(jù)依賴關(guān)系獲取單元、分組單元和數(shù)據(jù)塊填充單元;所述TLV數(shù)據(jù)組建單元用于依次組建TLV數(shù)據(jù)塊;所述TLV數(shù)據(jù)存儲(chǔ)單元用于將組建完成的TLV數(shù)據(jù)塊保存在數(shù)據(jù)塊集合中,并將虛擬TLV數(shù)據(jù)塊加入到TLV數(shù)據(jù)塊集合中;所述TLV數(shù)據(jù)依賴關(guān)系獲取單元用于將具有依賴關(guān)系的數(shù)據(jù)塊從集合中提取出來,組合成一個(gè)大的虛擬TLV數(shù)據(jù)塊;所述分組單元用于根據(jù)包的有效負(fù)載的長(zhǎng)度和各個(gè)TLV數(shù)據(jù)塊的長(zhǎng)度進(jìn)行分組,使得每個(gè)分組的總長(zhǎng)度小于等于包負(fù)載的長(zhǎng)度和分組數(shù)目最少;所述數(shù)據(jù)塊填充單元用于將分組后的數(shù)據(jù)塊依照分組方式放入包負(fù)載空間中。

通過采用以上的技術(shù)方案,本發(fā)明的有益效果包括:1. 充分減少組包的個(gè)數(shù),在數(shù)據(jù)量比較大的情況下,其優(yōu)勢(shì)更為明顯。充分利用包的有效負(fù)載空間,充分利用好現(xiàn)有的系統(tǒng)資源和傳輸資源。2. 分層次分步驟完成所有的組包功能,消除層次之間的耦合關(guān)系,降低處理邏輯的復(fù)雜性,提高代碼的可讀性,代碼實(shí)現(xiàn)簡(jiǎn)單明了,易讀和易于維護(hù)。3. 使得每一步都處理獨(dú)立的功能,提供處理操作的靈活性。

附圖說明

圖1為常規(guī)組包過程示意圖。

圖2為組建6個(gè)TLV數(shù)據(jù)塊集合示意圖。

圖3為處理依賴關(guān)聯(lián)的TLV數(shù)據(jù)塊的示意圖。

圖4為進(jìn)行TLV數(shù)據(jù)塊組包分組示意圖。

圖5為分組中的TLV數(shù)據(jù)塊加入包負(fù)載后的示意圖。

具體實(shí)施方式

為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)的說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。

圖1就是常規(guī)方法進(jìn)行組建包的示意過程。其中T表示類型type,L表示長(zhǎng)度length,V表示值value,S表示新增數(shù)據(jù)的開始位置,C表示新增數(shù)據(jù)的當(dāng)前位置。數(shù)字表示TLV數(shù)據(jù)塊的序號(hào),比如T1、L1、V1分別表示第一個(gè)TLV數(shù)據(jù)塊的類型、長(zhǎng)度和值,T2、L2、V2分別表示第二個(gè)TLV數(shù)據(jù)塊的類型、長(zhǎng)度和值,依此類推。

在包的負(fù)載空間中依次追加TLV格式的數(shù)據(jù),每次加數(shù)據(jù)時(shí),需要記錄新增數(shù)據(jù)的開始位置和當(dāng)前位置,如示意圖中分別用S和C表示,以便回退處理。

每次追加新的TLV格式的數(shù)據(jù)時(shí),都要考慮是否超出了負(fù)載的長(zhǎng)度,如果超出了就要將新增的數(shù)據(jù)回退,重新開始一個(gè)新包的構(gòu)建。還要考慮處理TLV數(shù)據(jù)塊間是否存在依賴關(guān)系。如果存在,就需要將它們組建在一個(gè)包中。圖示1是在組建第三個(gè)TLV數(shù)據(jù)塊時(shí),第三個(gè)TLV數(shù)據(jù)塊與第五個(gè)TLV的依賴關(guān)系,在將第五個(gè)TLV加入包中超出負(fù)載長(zhǎng)度而進(jìn)行回退的情況,這時(shí)負(fù)載中有很大的空間沒有被使用,本來在兩個(gè)包中能組建完成的,卻需要多于兩個(gè)包才能組建完成。正因?yàn)榈谌齻€(gè)TLV數(shù)據(jù)塊與第五個(gè)TLV的依賴關(guān)系,因此圖1中沒有出現(xiàn)第四個(gè)TLV數(shù)據(jù)塊,因?yàn)樵谶@種情況下,需要先處理第五個(gè)TLV塊后再處理第四個(gè)TLV數(shù)據(jù)塊。

本發(fā)明公開了一種TLV格式數(shù)據(jù)的組包方法,其具體包括以下的步驟:步驟一、將組建完成的TLV數(shù)據(jù)塊保存在數(shù)據(jù)塊集合中;步驟二、獲取TLV數(shù)據(jù)塊的依賴關(guān)系,將具有依賴關(guān)系的數(shù)據(jù)塊從集合中提取出來,組合成一個(gè)大的虛擬TLV數(shù)據(jù)塊,并將這個(gè)虛擬TLV數(shù)據(jù)塊加入到TLV數(shù)據(jù)塊集合中;步驟三、根據(jù)包的有效負(fù)載的長(zhǎng)度和各個(gè)TLV數(shù)據(jù)塊的長(zhǎng)度進(jìn)行分組,使得每個(gè)分組的總長(zhǎng)度小于等于包負(fù)載的長(zhǎng)度和分組數(shù)目最少,最后將分組后的數(shù)據(jù)塊依照分組方式放入包負(fù)載空間中。通過上述方法,使得分組的數(shù)目最少,且降低了處理邏輯的復(fù)雜性,提高代碼的可讀性,代碼實(shí)現(xiàn)簡(jiǎn)單明了,易讀和易于維護(hù)。

本發(fā)明將組包分拆為最終包的組建和TLV格式數(shù)據(jù)塊的組建兩個(gè)層次。為分步處理實(shí)現(xiàn)提供整體結(jié)構(gòu)參照、功能劃分和處理次序的依據(jù)。然后分以下三步處理實(shí)現(xiàn):第一步,組建各個(gè)具體的TLV數(shù)據(jù);第二步,將已組建好的TLV數(shù)據(jù)根據(jù)依賴關(guān)聯(lián)性或長(zhǎng)度大小等條件因素進(jìn)行優(yōu)化組合;第三步,構(gòu)建包頭數(shù)據(jù),將已經(jīng)組建好的TLV數(shù)據(jù)或多個(gè)依賴關(guān)聯(lián)TLV數(shù)據(jù)組合追加到包中。

圖2就是第一步處理后的示意圖,組建各個(gè)具體的TLV數(shù)據(jù)。根據(jù)TLV格式中定義的type和length的長(zhǎng)度預(yù)留對(duì)應(yīng)長(zhǎng)度的空間并填充具體的類型type的值。在length空間的后面構(gòu)建該類型的內(nèi)容數(shù)據(jù),將內(nèi)容數(shù)據(jù)的長(zhǎng)度值填充到length域。將組建完成的TLV數(shù)據(jù)塊以某種數(shù)據(jù)結(jié)構(gòu)保存起來,一般采用數(shù)組、鏈表和紅黑樹等數(shù)據(jù)結(jié)構(gòu),TLV數(shù)據(jù)塊分別對(duì)應(yīng)保存在數(shù)組項(xiàng)、鏈表節(jié)點(diǎn)和樹的節(jié)點(diǎn)中。數(shù)組操作邏輯簡(jiǎn)單,需要預(yù)分配內(nèi)存空間,預(yù)分配的大小難以確定適合的值,分配小了,存在組建子TLV數(shù)據(jù)個(gè)數(shù)較多時(shí)不夠用的問題;分配大了,存在內(nèi)存資源浪費(fèi)的問題;鏈表就克服了數(shù)組存在的問題,適合于進(jìn)行頻繁增刪操作的場(chǎng)景。但鏈表在查詢方面的效率要低一些;樹的結(jié)構(gòu)特別適合查詢應(yīng)用場(chǎng)景,但對(duì)增刪操作效率較低,消耗cpu的資源較大。相比之下,采用按照TLV塊的長(zhǎng)度降序的鏈表數(shù)據(jù)結(jié)構(gòu)更為合適。然后再組建下一個(gè)TLV的數(shù)據(jù)塊,一直到組建完所有的TLV數(shù)據(jù)塊。示意圖圖2中是組建6個(gè)TLV數(shù)據(jù)塊。

圖3就是處理存在依賴關(guān)聯(lián)性TLV數(shù)據(jù)塊后的示意圖,從TLV數(shù)據(jù)塊集合中,找出存在依賴關(guān)聯(lián)性的TLV數(shù)據(jù)塊:第三個(gè)、第五個(gè)和第六個(gè)TLV數(shù)據(jù)塊,并將它們從集合中取出來。根據(jù)他們的依賴關(guān)聯(lián)關(guān)系確定他們各自在包中的前后次序。將他們組合成一個(gè)大的虛擬TLV數(shù)據(jù)塊,圖中的Tv1、Lv1和Vv1就是新組合成的虛擬TLV數(shù)據(jù)塊的類型、長(zhǎng)度和值的表示。并將這個(gè)虛擬TLV數(shù)據(jù)塊加入到TLV數(shù)據(jù)塊集合中。集合中的TLV數(shù)據(jù)塊數(shù)有6個(gè)變?yōu)榱?個(gè)。

虛擬TLV數(shù)據(jù)塊是指它的類型值不是真實(shí)的,是一個(gè)虛擬的類型;它的長(zhǎng)度是構(gòu)成該虛擬TLV數(shù)據(jù)塊的所有子TLV數(shù)據(jù)塊的長(zhǎng)度之和;類型和長(zhǎng)度不會(huì)被放進(jìn)最終組建的包中,僅在組包的過程中做輔助作用;它的值域是由構(gòu)成虛擬TLV數(shù)據(jù)塊的所有真實(shí)的TLV數(shù)據(jù)塊組成;是有效的數(shù)據(jù),最終會(huì)被放入組建的包中。

圖4是根據(jù)包的有效負(fù)載的長(zhǎng)度和各個(gè)TLV數(shù)據(jù)塊的長(zhǎng)度進(jìn)行的分組,分組原則是每個(gè)分組的總長(zhǎng)度小于等于包負(fù)載的長(zhǎng)度和分組數(shù)目最少。分組數(shù)目最少的方法可以是:第一步,從已組好的TLV數(shù)據(jù)塊集合中找到長(zhǎng)度最大的TLV數(shù)據(jù)塊,第二步,計(jì)算出剩余的負(fù)載空間長(zhǎng)度,即用負(fù)載長(zhǎng)度減去剛找到TLV數(shù)據(jù)塊的長(zhǎng)度得到,在剩余的TLV數(shù)據(jù)塊集合中找出長(zhǎng)度最大且長(zhǎng)度值小于等于剩余的負(fù)載空間的長(zhǎng)度的TLV數(shù)據(jù)塊,第三步,重復(fù)進(jìn)行第二步操作,直到找不到符合條件的TLV數(shù)據(jù)塊了,就結(jié)束這一次分組,在這個(gè)過程中找到的所有TLV數(shù)據(jù)塊就形成了一個(gè)分組。在剩下的集合中重復(fù)上述分組過程,直到集合中沒有TLV數(shù)據(jù)塊了,就完成分組。示意圖中,將4個(gè)TLV數(shù)據(jù)塊分為了兩組(先設(shè)定Lmax表示有效負(fù)載的最大長(zhǎng)度,Lremain表示剩下的負(fù)載長(zhǎng)度。根據(jù)上述分組方法,第一步從圖示3的集合中找到長(zhǎng)度最大的TLV數(shù)據(jù)塊Tv1Lv1Vv1;第二步,計(jì)算Lremain = Lmax - Lv1,從剩下的TLV數(shù)據(jù)塊集合中找長(zhǎng)度最大且長(zhǎng)度小于等于Lremain,找到符合條件的T1L1V1數(shù)據(jù)塊,第三步,計(jì)算Lremain = Lremain – L1,再在剩下的集合中找符合條件的TLV數(shù)據(jù)塊,沒有找出,結(jié)束這次分組過程。在剩下的集合中重復(fù)進(jìn)行上述步驟,最終形成了圖示4的分組),每組重新構(gòu)成一個(gè)新的更大的虛擬TLV數(shù)據(jù)塊。圖中的分組是分組數(shù)最少的。其他的分組都會(huì)多于當(dāng)前分組數(shù)。其中,圖中的Tp、Lp和Vp分別為新構(gòu)成的虛擬TLV數(shù)據(jù)塊的類型、長(zhǎng)度和值的表示。

圖5就是將分組后的TLV數(shù)據(jù)放入包負(fù)載后的示意圖。將虛擬TLV數(shù)據(jù)塊中的有效數(shù)據(jù)放入包負(fù)載空間后完成一個(gè)數(shù)據(jù)包的組建工作。虛擬TLV數(shù)據(jù)中的虛擬類型和長(zhǎng)度都不是有效數(shù)據(jù),這些數(shù)據(jù)只在組包的過程中起到輔助的作用。有效數(shù)據(jù)是在圖1中構(gòu)建的所有TLV數(shù)據(jù)塊的數(shù)據(jù)。圖中是組建了兩個(gè)包的有效負(fù)載的情況。

上述的實(shí)施例中所給出的系數(shù)和參數(shù),是提供給本領(lǐng)域的技術(shù)人員來實(shí)現(xiàn)或使用發(fā)明的,發(fā)明并不限定僅取前述公開的數(shù)值,在不脫離發(fā)明的思想的情況下,本領(lǐng)域的技術(shù)人員可以對(duì)上述實(shí)施例作出種種修改或調(diào)整,因而發(fā)明的保護(hù)范圍并不被上述實(shí)施例所限,而應(yīng)該是符合權(quán)利要求書提到的創(chuàng)新性特征的最大范圍。

當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1