本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及數(shù)據(jù)報文發(fā)送接收的處理方法及裝置。
背景技術(shù):
現(xiàn)有技術(shù)中一般網(wǎng)元之間傳輸IP數(shù)據(jù)報文的報文頭是固定開銷,且不管數(shù)據(jù)報文的有效載荷多小報文頭的開銷都不能省略,因而會造成鏈路帶寬有效利用率較低。以移動通信基站子系統(tǒng)(BSS)為例,當(dāng)BSS網(wǎng)元RNC與NodeB之間的IUB接口采用以太網(wǎng)鏈路傳輸時,語音報文等業(yè)務(wù)報文一般都很短,比如包括14字節(jié)MAC頭、20字節(jié)IP頭、8字節(jié)UDP頭、4字節(jié)MAC層檢驗,以及7字節(jié)前導(dǎo)、1字節(jié)幀定界符,當(dāng)數(shù)據(jù)報文的有效載荷小于54字節(jié)時,則數(shù)據(jù)報文傳輸時的帶寬利用率就達(dá)不到50%。
當(dāng)前解決方法主要是采用IPHC(Internet Protocol Header Compression,IP頭壓縮)以間隔發(fā)全頭報文和壓縮頭報文,但該方法更適合點到點直連場景,而不適合于需要穿越交換機(jī)和路由器的以太網(wǎng)鏈路或其他組網(wǎng)方式,因而需要對現(xiàn)有技術(shù)進(jìn)行改進(jìn)。
技術(shù)實現(xiàn)要素:
本發(fā)明的主要目的在于提供一種數(shù)據(jù)報文發(fā)送接收的處理方法及裝置,旨在解決如何減少數(shù)據(jù)報文的傳輸開銷以提高帶寬利用率的技術(shù)問題。
為實現(xiàn)上述目的,本發(fā)明提供一種數(shù)據(jù)報文發(fā)送的處理方法,所述數(shù)據(jù)報文發(fā)送的處理方法包括:
在發(fā)送數(shù)據(jù)報文前,確定待發(fā)送的數(shù)據(jù)報文是否進(jìn)行報文并包處理;
將確定進(jìn)行報文并包處理的數(shù)據(jù)報文進(jìn)行報文并包處理以生成相應(yīng)的并包報文,其中,并包報文中設(shè)置有并包報文標(biāo)識字段且并包報文至少包括并包報文頭以及與進(jìn)行報文并包處理的數(shù)據(jù)報文相對應(yīng)的若干子包,子包至少包括數(shù)據(jù)報文的目的地址標(biāo)識字段;
將并包報文以及未進(jìn)行報文并包處理的數(shù)據(jù)報文加入發(fā)送隊列中以待發(fā) 送。
優(yōu)選地,所述將確定進(jìn)行報文并包處理的數(shù)據(jù)報文進(jìn)行報文并包處理以生成相應(yīng)的并包報文包括:
申請長度為預(yù)設(shè)最大幀長MFL的并包緩沖區(qū)并開啟定時器進(jìn)行計時;
向所述并包緩沖區(qū)中填充并包報文頭,其中,并包報文頭中設(shè)置有并包報文標(biāo)識字段;
當(dāng)并包報文的當(dāng)前長度小于MFL時和/或定時器時間到達(dá)前,在并包報文頭后依次排列填充若干子包,其中,子包至少還包括數(shù)據(jù)報文去掉報文頭后的載荷字段以及子包的長度字段;
當(dāng)并包報文的當(dāng)前長度大于或等于MFL和/或定時器時間到達(dá)時,更新并包報文頭中的相關(guān)字段以及生成當(dāng)前并包報文的循環(huán)冗余校驗碼CRC并將該CRC填充到當(dāng)前并包報文中,得到可發(fā)送的并包報文。
優(yōu)選地,所述確定待發(fā)送的數(shù)據(jù)報文是否進(jìn)行報文并包處理的方式至少包括:根據(jù)判斷數(shù)據(jù)報文中的源MAC地址或源IP地址是否對應(yīng)為指定的MAC地址或IP地址進(jìn)行確定;
所述并包報文標(biāo)識至少包括指定的MAC地址或IP地址或UDP端口號;所述數(shù)據(jù)報文的目的地址標(biāo)識至少包括接收設(shè)備的IP地址或接收設(shè)備的網(wǎng)絡(luò)號或與接收設(shè)備的IP地址相對應(yīng)的標(biāo)識符。
進(jìn)一步地,為實現(xiàn)上述目的,本發(fā)明還提供一種數(shù)據(jù)報文接收的處理方法,所述數(shù)據(jù)報文接收的處理方法包括:
當(dāng)接收到報文時,確定所接收的報文是否為可拆包的并包報文,其中,并包報文中設(shè)置有并包報文標(biāo)識字段且至少包括并包報文頭以及與進(jìn)行報文并包處理的數(shù)據(jù)報文相對應(yīng)的若干子包;
若確定為可拆包的并包報文,則判斷該并包報文中是否存在對應(yīng)本接收端設(shè)備的子包;
若存在,則將該并包報文中對應(yīng)本接收端設(shè)備的子包進(jìn)行報文拆包處理以得到對應(yīng)本接收端設(shè)備的數(shù)據(jù)報文;
將并包報文中對應(yīng)本接收端設(shè)備的子包進(jìn)行報文拆包處理所得到的數(shù)據(jù)報文加入接收隊列中以待接收。
優(yōu)選地,所述將該并包報文中對應(yīng)本接收端設(shè)備的子包進(jìn)行報文拆包處理以得到對應(yīng)本接收端設(shè)備的數(shù)據(jù)報文包括:
申請拆包緩沖區(qū);
向所述拆包緩沖區(qū)中填充報文頭,其中,該報文頭中的源地址及目的地址分別對應(yīng)為并包報文頭中的源地址及本接收端設(shè)備的地址;
在所述拆包緩沖區(qū)中所填充的報文頭后填充對應(yīng)本接收端設(shè)備的子包的載荷并更新所填充的報文頭中的相關(guān)字段以得到對應(yīng)本接收端設(shè)備的數(shù)據(jù)報文,其中,子包至少包括數(shù)據(jù)報文的目的地址標(biāo)識字段、數(shù)據(jù)報文去掉報文頭后的載荷字段以及子包的長度字段。
優(yōu)選地,所述判斷該并包報文中是否存在對應(yīng)本接收端設(shè)備的子包的方式至少包括:
根據(jù)并包報文內(nèi)子包中數(shù)據(jù)報文的目的地址標(biāo)識與本接收端設(shè)備的目的地址進(jìn)行判斷,其中,根據(jù)子包的長度確定下一子包是否為對應(yīng)本接收端設(shè)備的子包。
優(yōu)選地,所述當(dāng)接收到報文時,確定所接收的報文是否為可拆包的并包報文包括:
當(dāng)接收到報文時,確定并包報文中是否存在并包報文標(biāo)識,若存在,則確定為并包報文;
當(dāng)確定為并包報文后,計算該并包報文的CRC并判斷計算所得到的CRC是否與該并包報文所攜帶的CRC相符合,若符合,則確定為可拆包的并包報文。
優(yōu)選地,所述將并包報文中對應(yīng)本接收端設(shè)備的子包進(jìn)行報文拆包處理所得到的數(shù)據(jù)報文加入接收隊列中以待接收之后,所述數(shù)據(jù)報文接收的處理方法還包括:
當(dāng)本接收端設(shè)備存在下級接收端設(shè)備且下級接收端設(shè)備支持處理并包報文時,將對應(yīng)本接收端設(shè)備的子包從并包報文中刪除并在相應(yīng)更新并包報文的相關(guān)字段后,將更新后的并包報文加入發(fā)送隊列中以待發(fā)送;
當(dāng)本接收端設(shè)備存在下級接收端設(shè)備且下級接收端設(shè)備不支持處理并包報文時,將當(dāng)前未進(jìn)行報文拆包處理的所有子包進(jìn)行報文拆包處理,得到對應(yīng)下級接收端設(shè)備的數(shù)據(jù)報文并將該數(shù)據(jù)報文加入發(fā)送隊列中以待發(fā)送。
進(jìn)一步地,本發(fā)明還提供一種數(shù)據(jù)報文發(fā)送的處理裝置,所述數(shù)據(jù)報文發(fā)送的處理裝置包括:
并包確定模塊,用于在發(fā)送數(shù)據(jù)報文前,確定待發(fā)送的數(shù)據(jù)報文是否進(jìn)行報文并包處理;
并包處理模塊,用于將確定進(jìn)行報文并包處理的數(shù)據(jù)報文進(jìn)行報文并包處理以生成相應(yīng)的并包報文,其中,并包報文中設(shè)置有并包報文標(biāo)識字段且并包報文至少包括并包報文頭以及與進(jìn)行報文并包處理的數(shù)據(jù)報文相對應(yīng)的若干子包,子包至少包括數(shù)據(jù)報文的目的地址標(biāo)識字段;
報文發(fā)送模塊,用于將并包報文以及未進(jìn)行報文并包處理的數(shù)據(jù)報文加入發(fā)送隊列中以待發(fā)送。
優(yōu)選地,所述并包處理模塊包括:
子包數(shù)量控制單元,用于申請長度為預(yù)設(shè)最大幀長MFL的并包緩沖區(qū)并開啟定時器進(jìn)行計時以控制并包報文中子包的數(shù)量;
并包報文頭填充單元,用于向所述并包緩沖區(qū)中填充并包報文頭,其中,并包報文頭中設(shè)置有并包報文標(biāo)識字段;
子包填充單元,用于當(dāng)并包報文的當(dāng)前長度小于MFL時和/或定時器時間到達(dá)前,在并包報文頭后依次排列填充若干子包,其中,子包至少還包括數(shù)據(jù)報文去掉報文頭后的載荷字段以及子包的長度字段;
并包報文生成單元,用于當(dāng)并包報文的當(dāng)前長度大于或等于MFL和/或定時器時間到達(dá)時,更新并包報文頭中的相關(guān)字段以及生成當(dāng)前并包報文的循環(huán)冗余校驗碼CRC并將該CRC填充到當(dāng)前并包報文中,得到可發(fā)送的并包報文。
進(jìn)一步地,本發(fā)明還提供一種數(shù)據(jù)報文接收的處理裝置,所述數(shù)據(jù)報文接收的處理裝置包括:
拆包確定模塊,用于當(dāng)接收到報文時,確定所接收的報文是否為可拆包的并包報文,其中,并包報文中設(shè)置有并包報文標(biāo)識字段且至少包括并包報文頭以及與進(jìn)行報文并包處理的數(shù)據(jù)報文相對應(yīng)的若干子包;
判斷模塊,用于當(dāng)確定所接收的報文為可拆包的并包報文時,判斷該并包報文中是否存在對應(yīng)本接收端設(shè)備的子包;
拆包處理模塊,用于當(dāng)并包報文中存在對應(yīng)本接收端設(shè)備的子包時,將該并包報文中對應(yīng)本接收端設(shè)備的子包進(jìn)行報文拆包處理以得到對應(yīng)本接收端設(shè)備的數(shù)據(jù)報文;
報文接收模塊,用于將并包報文中對應(yīng)本接收端設(shè)備的子包進(jìn)行報文拆包處理所得到的數(shù)據(jù)報文加入接收隊列中以待接收。
優(yōu)選地,所述拆包處理模塊包括:
申請單元,用于申請拆包緩沖區(qū);
數(shù)據(jù)報文頭填充單元,用于向所述拆包緩沖區(qū)中填充報文頭,其中,該報文頭中的源地址及目的地址分別對應(yīng)為并包報文頭中的源地址及本接收端設(shè)備的地址;
數(shù)據(jù)報文生成單元,用于在所述拆包緩沖區(qū)中所填充的報文頭后填充對應(yīng)本接收端設(shè)備的子包的載荷并更新所填充的報文頭中的相關(guān)字段以得到對應(yīng)本接收端設(shè)備的數(shù)據(jù)報文,其中,子包至少包括數(shù)據(jù)報文的目的地址標(biāo)識字段、數(shù)據(jù)報文去掉報文頭后的載荷字段以及子包的長度字段。
優(yōu)選地,所述數(shù)據(jù)報文接收的處理裝置還包括:
第一發(fā)送處理模塊,用于當(dāng)本接收端設(shè)備存在下級接收端設(shè)備且下級接收端設(shè)備支持處理并包報文時,將對應(yīng)本接收端設(shè)備的子包從并包報文中刪除并在相應(yīng)更新并包報文的相關(guān)字段后,將更新后的并包報文加入發(fā)送隊列中以待發(fā)送;
第二發(fā)送處理模塊,用于當(dāng)本接收端設(shè)備存在下級接收端設(shè)備且下級接收端設(shè)備不支持處理并包報文時,將當(dāng)前未進(jìn)行報文拆包處理的所有子包進(jìn)行報文拆包處理,得到對應(yīng)下級接收端設(shè)備的數(shù)據(jù)報文并將該數(shù)據(jù)報文加入發(fā)送隊列中以待發(fā)送。
本發(fā)明中,通過將多個數(shù)據(jù)報文進(jìn)行并包處理以共用一個并包報文頭,從而減少了每個數(shù)據(jù)報文的實際傳輸開銷,也即相對減小了報文頭在整個并包報文中的開銷,進(jìn)而相對提高了報文傳輸?shù)膸捓寐省4送?,本發(fā)明中僅對有需要的數(shù)據(jù)報文進(jìn)行并包處理,數(shù)據(jù)報文可以是來自同一個發(fā)送端,也可以是來自不同的多個發(fā)送端,也即本發(fā)明支持多個目的地址的報文復(fù)用,同時也支持發(fā)送端與接收端的多種組網(wǎng)方式,從而能夠更加靈活地對組網(wǎng)內(nèi) 的數(shù)據(jù)報文進(jìn)行并包處理,從而提高組網(wǎng)內(nèi)報文傳輸?shù)膸捓寐省?/p>
附圖說明
圖1為本發(fā)明一應(yīng)用場景實施例中BSS網(wǎng)元RNC與NodeB的級聯(lián)組網(wǎng)示意圖;
圖2為本發(fā)明數(shù)據(jù)報文發(fā)送的處理方法一實施例的流程示意圖;
圖3為圖2中步驟S120的細(xì)化流程示意圖;
圖4為本發(fā)明并包報文中子包一實施例的結(jié)構(gòu)示意圖;
圖5為本發(fā)明并包報文一實施例的結(jié)構(gòu)示意圖;
圖6為本發(fā)明并包報文另一實施例的結(jié)構(gòu)示意圖;
圖7為本發(fā)明數(shù)據(jù)報文發(fā)送的處理方法一較佳實施例的流程示意圖;
圖8為本發(fā)明數(shù)據(jù)報文接收的處理方法一實施例的流程示意圖;
圖9為本發(fā)明中拆包處理后所得到的數(shù)據(jù)報文一實施例的結(jié)構(gòu)示意圖;
圖10為圖8中步驟S230的細(xì)化流程示意圖;
圖11為本發(fā)明數(shù)據(jù)報文接收的處理方法另一實施例的流程示意圖;
圖12為本發(fā)明數(shù)據(jù)報文接收的處理方法一較佳實施例的流程示意圖;
圖13為本發(fā)明數(shù)據(jù)報文發(fā)送的處理裝置一實施例的功能模塊示意圖;
圖14為圖13中并包處理模塊的細(xì)化功能模塊示意圖;
圖15為本發(fā)明數(shù)據(jù)報文接收的處理裝置一實施例的功能模塊示意圖;
圖16為圖15中拆包處理模塊的細(xì)化功能模塊示意圖;
圖17為本發(fā)明數(shù)據(jù)報文接收的處理裝置另一實施例的功能模塊示意圖。
本發(fā)明目的的實現(xiàn)、功能特點及優(yōu)點將結(jié)合實施例,參照附圖做進(jìn)一步說明。
具體實施方式
應(yīng)當(dāng)理解,此處所描述的具體實施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
本發(fā)明通過將多個數(shù)據(jù)報文進(jìn)行并包處理,從而達(dá)到減少報文頭開銷,進(jìn)而相對提高報文傳輸時對帶寬的利用率。此外,考慮到不同設(shè)備所構(gòu)成的發(fā)送端與接收端的組網(wǎng)方式的不同,本發(fā)明所提供的報文并包處理方式以及報文拆包處理方式能夠靈活適用于各種不同的組網(wǎng),從而提升報文傳輸網(wǎng)絡(luò) 的帶寬利用率?,F(xiàn)在組網(wǎng)拓?fù)溆锌偩€形、級聯(lián)形、星形、樹形、環(huán)形、網(wǎng)狀等等,為便于說明,本發(fā)明中僅以級聯(lián)形組網(wǎng)進(jìn)行舉例說明,其他組網(wǎng)方式類似,因此不做過多贅述。
圖1為本發(fā)明一應(yīng)用場景實施例中BSS網(wǎng)元RNC與NodeB的級聯(lián)組網(wǎng)示意圖。在BSS系統(tǒng)中,RNC與上級設(shè)備NodeB1連接,二者之間所使用的IUB接口的物理層鏈路可以是以太網(wǎng)鏈路,也可以是E1/T1、STM-1鏈路。上級設(shè)備NodeB1再與其下一級設(shè)備NodeB2連接,NodeB2再與其下級設(shè)備NodeBN連接,從而形成如圖1所示的級聯(lián)組網(wǎng)。需要說明的是,通常不同鏈路其所對應(yīng)的傳輸協(xié)議不同,因而存在某些鏈路支持并包(復(fù)用報文)處理,如以太網(wǎng)鏈路,而有些不支持并包處理,如E1/T1鏈路。本發(fā)明中具體以支持并包處理的以太網(wǎng)鏈路進(jìn)行舉例說明。此外,需要進(jìn)一步說明的是,本發(fā)明中,對于接受端設(shè)備與發(fā)送端設(shè)備的設(shè)置不限,如圖1所示的RNC與NodeB既可以是發(fā)送端,同時也可以是接收端,具體根據(jù)實際組網(wǎng)需求進(jìn)行設(shè)置。
參照圖2,圖2為本發(fā)明數(shù)據(jù)報文發(fā)送的處理方法一實施例的流程示意圖。本實施例中,所述數(shù)據(jù)報文發(fā)送的處理方法包括:
步驟S110,在發(fā)送數(shù)據(jù)報文前,確定待發(fā)送的數(shù)據(jù)報文是否進(jìn)行報文并包處理;
本實施例中,在發(fā)送數(shù)據(jù)報文前,比如在通信系統(tǒng)中,核心系統(tǒng)中網(wǎng)元MSC,HLR,VLR,AUC,SGSN,GGSN都可以直接或間接向RNC發(fā)送各種數(shù)據(jù)報文,不同的數(shù)據(jù)報文其報文頭所占開銷不同。比如,RNC與NodeB之間采用以太網(wǎng)鏈路所傳輸?shù)恼Z音報文,若語音報文的報文頭所占字節(jié)數(shù)大于報文的有效載荷,則該語音報文傳輸時的帶寬利用率會大大下降。因此,需要確定待發(fā)送的數(shù)據(jù)報文是否進(jìn)行報文并包處理。
本實施例中,對于確定待發(fā)送的數(shù)據(jù)報文是否進(jìn)行報文并包處理的方式不限,優(yōu)選根據(jù)判斷數(shù)據(jù)報文中的源MAC地址或源IP地址是否對應(yīng)為指定的MAC地址或IP地址進(jìn)行確定。比如有些發(fā)送端設(shè)備只發(fā)送長度較短的數(shù)據(jù)報文或者通過某一接口所發(fā)送的數(shù)據(jù)報文都比較短,因此可以固定將某一設(shè)備或者某一接口所發(fā)送的任意數(shù)據(jù)報文都進(jìn)行并包處理?;蛘咄ㄟ^判斷數(shù)據(jù)報文中報文頭的長度占整個數(shù)據(jù)報文長度的比例進(jìn)行判斷,如果比例大于 50%,則確定需要進(jìn)行并包處理。
另外,需要進(jìn)一步說明的是,本實施例中并不限定不同數(shù)據(jù)報文的屬性是否相同或者是否都發(fā)送到同一目的地址,也即本實施例中支持任何報文屬性以及報文地址的多個數(shù)據(jù)報文的并包處理。
步驟S120,將確定進(jìn)行報文并包處理的數(shù)據(jù)報文進(jìn)行報文并包處理以生成相應(yīng)的并包報文,其中,并包報文中設(shè)置有并包報文標(biāo)識字段且并包報文至少包括并包報文頭以及與進(jìn)行報文并包處理的數(shù)據(jù)報文相對應(yīng)的若干子包,子包至少包括數(shù)據(jù)報文的目的地址標(biāo)識字段;
通常情況下,在任意組網(wǎng)中都不會僅存在一條符合并包處理的數(shù)據(jù)報文,因此,本實施例中可通過將至少兩個數(shù)據(jù)報文進(jìn)行并包處理,也即使各數(shù)據(jù)報文共用一個報文頭,而各數(shù)據(jù)報文以子包的形式連接在并包報文頭后,從而形成一個更大的并包報文,并包報文包括并包報文頭以及若干子包,其中,子包與進(jìn)行報文并包處理的數(shù)據(jù)報文相對應(yīng),也即子包與對應(yīng)的數(shù)據(jù)報文具有相同的傳輸載荷。本實施例中,對于并包處理的方式不限,具體根據(jù)實際需要進(jìn)行設(shè)置。
此外,由于組網(wǎng)傳輸網(wǎng)絡(luò)中一般會同時存在數(shù)據(jù)報文與并包報文,為便于相互區(qū)別,本實施例中優(yōu)選在每個并包報文中設(shè)置一并包報文標(biāo)識字段。優(yōu)選的,并包報文標(biāo)識至少包括指定的MAC地址或IP地址或UDP端口號。比如整個組網(wǎng)傳輸網(wǎng)絡(luò)中僅有指定的少數(shù)幾個發(fā)送端設(shè)備可以進(jìn)行并包處理,因此可將該指定的發(fā)送端設(shè)備的MAC地址或IP地址或傳輸所使用的UDP端口號作為并包報文標(biāo)識。
步驟S130,將并包報文以及未進(jìn)行報文并包處理的數(shù)據(jù)報文加入發(fā)送隊列中以待發(fā)送。
本實施例中,當(dāng)完成一個并包報文后,需要將該并包報文加入到發(fā)送隊列中以等待發(fā)送,同時,由于存在某些數(shù)據(jù)報文并不需要進(jìn)行報文并包處理,因此,可直接將未進(jìn)行報文并包處理的數(shù)據(jù)報文也加入到發(fā)送隊列中以待發(fā)送,其中,將發(fā)送隊列中的報文發(fā)送出去的實現(xiàn)方式與現(xiàn)有技術(shù)方式相同,因此不做過多贅述。
本實施例中,通過將多個數(shù)據(jù)報文進(jìn)行并包處理以共用一個并包報文頭,從而減少了每個數(shù)據(jù)報文的實際傳輸開銷,也即相對減小了報文頭在整個并 包報文中的開銷,進(jìn)而相對提高了報文傳輸?shù)膸捓寐?。此外,本發(fā)明中僅對有需要的數(shù)據(jù)報文進(jìn)行并包處理,數(shù)據(jù)報文可以是來自同一個發(fā)送端,也可以是來自不同的多個發(fā)送端,也即本發(fā)明支持多個目的地址的報文復(fù)用,同時也支持發(fā)送端與接收端的多種組網(wǎng)方式,從而能夠更加靈活地對組網(wǎng)內(nèi)的數(shù)據(jù)報文進(jìn)行并包處理,從而提高組網(wǎng)內(nèi)報文傳輸?shù)膸捓寐省?/p>
參照圖3,圖3為圖2中步驟S120的細(xì)化流程示意圖?;谏鲜鰧嵤├?,本實施例中,上述步驟S120包括:
步驟S1201,申請長度為預(yù)設(shè)最大幀長MFL的并包緩沖區(qū)并開啟定時器進(jìn)行計時;
本實施例中,考慮到報文傳輸?shù)膶崟r性與傳輸大小要求,因此,通過控制存儲并包報文的緩沖區(qū)的大小以及設(shè)置定時器來控制一個并包報文的完成,具體用于控制并包報文中子包的數(shù)量,此外,開啟定時器的時間點也可以根據(jù)實際需要進(jìn)行設(shè)置,比如在并包緩沖區(qū)中填充并包報文頭后再行開啟。
步驟S1202,向所述并包緩沖區(qū)中填充并包報文頭,其中,并包報文頭中設(shè)置有并包報文標(biāo)識字段;
本實施兩種,并包報文頭主要包括MAC報文頭與IP報文頭,其中,MAC報文頭中的源MAC地址對應(yīng)發(fā)送端的MAC地址,IP報文頭中的源IP地址對應(yīng)為發(fā)送端的IP地址;另外,對于MAC報文頭中的目的MAC地址以及IP報文頭中的目的IP地址的設(shè)置具體根據(jù)實際情況進(jìn)行設(shè)置,例如可對應(yīng)設(shè)置為組網(wǎng)的組播地址或接收端設(shè)備的地址。
另外,本實施例中,為便于對網(wǎng)絡(luò)中傳輸?shù)牟鼒笪呐c數(shù)據(jù)報文進(jìn)行區(qū)分,優(yōu)選在并包報文頭中設(shè)置并包報文標(biāo)識字段。對于并包報文標(biāo)識的設(shè)置不限,例如可以是指定的MAC地址或IP地址,比如對并包報文頭中的源MAC地址或源IP地址進(jìn)行指定以作為并包報文標(biāo)識,從而可相應(yīng)減小報文頭的字節(jié)長度。另外,也可以在并包報文頭中加上UDP報文頭,其中,UDP報文頭設(shè)置有指定的UDP端口號。
步驟S1203,當(dāng)并包報文的當(dāng)前長度小于MFL時和/或定時器時間到達(dá)前,在并包報文頭后依次排列填充若干子包,其中,子包至少還包括數(shù)據(jù)報文去掉報文頭后的載荷字段以及子包的長度字段;
本實施例中,為便于子包在進(jìn)行拆包處理后能夠還原為并包處理前的數(shù)據(jù)報文,從而實現(xiàn)對數(shù)據(jù)報文的精確發(fā)送,因此,在子包中需要設(shè)置有數(shù)據(jù)報文的目的地址標(biāo)識字段以及數(shù)據(jù)報文去掉報文頭后的載荷字段,同時,為便于對整個并包報文進(jìn)行長度統(tǒng)計,同時也便于區(qū)分各子包所屬長度范圍,因此,在子包中還設(shè)置有子包的長度字段,如圖4所示。Flag對應(yīng)于數(shù)據(jù)報文的目的地址標(biāo)識字段,SubLen對應(yīng)于子包的長度字段,Data對應(yīng)于數(shù)據(jù)報文去掉報文頭后的載荷字段。
步驟S1204,當(dāng)并包報文的當(dāng)前長度大于或等于MFL和/或定時器時間到達(dá)時,更新并包報文頭中的相關(guān)字段以及生成當(dāng)前并包報文的循環(huán)冗余校驗碼CRC并將該CRC填充到當(dāng)前并包報文中,得到可發(fā)送的并包報文。
本實施例中,在并包報文的長度達(dá)到設(shè)定的MFL或者定時器時間到達(dá)時,需要對并包報文頭中的相關(guān)字段進(jìn)行更新,比如報文頭校驗和、報文長度等。此外,為進(jìn)一步確保并包處理后的并包報文在發(fā)送端與接收端的一致正確性,本實施例中還生成了并包報文的循環(huán)冗余校驗碼CRC并將其作為并包報文的一部分一起進(jìn)行發(fā)送,如圖5、6所示的并包報文的結(jié)構(gòu)示意圖。
參照圖7所示的數(shù)據(jù)報文發(fā)送的處理方法一較佳實施例的流程示意圖。
S11、發(fā)送一個報文,包括發(fā)送數(shù)據(jù)報文、分組報文、包報文等,本發(fā)明中的并包處理優(yōu)選針對報文長度較小的數(shù)據(jù)報文;
S12、判斷是否要求進(jìn)行并包處理,若否則執(zhí)行S13,若是則執(zhí)行S14;
S13、將不需要進(jìn)行并包處理的報文放到發(fā)送隊列;
S14、開啟定時器以及申請一個長度為MFL的緩沖區(qū)以用于存放并包處理過程中的數(shù)據(jù);
S15、向緩沖區(qū)填充報文頭,報文頭包括以太網(wǎng)MAC頭和IP頭,MAC頭中的源MAC地址是發(fā)送端的MAC地址,源IP地址是發(fā)送端的IP地址,并且該填充的報文頭中還包含有并包標(biāo)識;
S16、計算并保存當(dāng)前并包報文的長度Length=Length+subLen,其中Length初始值為0,subLen是子包的長度,子包包括子包的載荷、子包長度字段和子包目的地址標(biāo)識字段,其中,例如目的地址標(biāo)識可以是接收端設(shè)備的IP地址或是接收端設(shè)備的網(wǎng)絡(luò)號,或者是其它網(wǎng)絡(luò)中唯一的標(biāo)識,用于與其它接 收端設(shè)備區(qū)分;
S17、判斷當(dāng)前并包報文的長度Length是否小于MFL,若是執(zhí)行S18,若否執(zhí)行S21;
S18、在緩沖區(qū)中報文頭后依次填充子包的目的地址標(biāo)識字段、子包的長度字段和子包的載荷字段,其中,子包的載荷為對應(yīng)報文去除報文頭后的載荷;
S19、判斷定時器的定時時間是否到達(dá),若是則執(zhí)行S21,若否則執(zhí)行S20;
S20、判斷是否發(fā)送下一個報文,若是則返回S16,若否則返回S19;
S21、更新并包報文頭中的報文頭校驗和、并包報文長度等字段,或者還可以生成CRC校驗碼并將其填充到并包報文尾部;
S22、將生成的并包放入發(fā)送隊列以待發(fā)送;
S23、取消定時器計時;
S24、判斷是否要發(fā)送下一個報文,若是則返回S14,若否則繼續(xù)執(zhí)行本步驟。
本實施例中,定時器和參數(shù)MFL(Max Frame Length,最大幀長)被用來控制一個復(fù)用數(shù)據(jù)的并包的完成。當(dāng)需要并包的第一個報文產(chǎn)生時,定時器開始計時,將報文放入復(fù)用數(shù)據(jù)緩沖區(qū)中。后續(xù)需要并包的報文也依次復(fù)用到該復(fù)用數(shù)據(jù)緩沖區(qū)中,直到定時器到或者并包的總長度超過MFL時并包結(jié)束,整個復(fù)用數(shù)據(jù)的并包會放到發(fā)送隊列中。當(dāng)下一個需要并包的報文又產(chǎn)生時,定時器又重新計時,重復(fù)上述流程。
參照圖8,圖8為本發(fā)明數(shù)據(jù)報文接收的處理方法一實施例的流程示意圖?;谏鲜霰景l(fā)明的數(shù)據(jù)報文發(fā)送的處理方法各實施例,本實施例中,所述數(shù)據(jù)報文接收的處理方法包括:
步驟S210,當(dāng)接收到報文時,確定所接收的報文是否為可拆包的并包報文,其中,并包報文中設(shè)置有并包報文標(biāo)識字段且至少包括并包報文頭以及與進(jìn)行報文并包處理的數(shù)據(jù)報文相對應(yīng)的若干子包;
本實施例中,接收端設(shè)備所接收到的報文既有可能是數(shù)據(jù)報文、分組報文等,同時也有可能是并包報文,因此,需要先判斷接收到的報文是否為并包報文,然而由于并包報文在傳送過程中可能會出現(xiàn)偏差而影響到并包報文 的準(zhǔn)確性,因而需要再次判斷并包報文是否可進(jìn)行拆包處理,也即判斷并包報文是否符合接收端的要求,比如長度要求等。
優(yōu)選地,當(dāng)接收到報文時,確定并包報文中是否存在并包報文標(biāo)識,若存在,則確定為并包報文;當(dāng)確定為并包報文后,計算該并包報文的CRC并判斷計算所得到的CRC是否與該并包報文所攜帶的CRC相符合,若符合,則確定為可拆包的并包報文。其中,并包報文標(biāo)識與CRC校驗碼已在上述數(shù)據(jù)報文發(fā)送的處理方法的實施例中已做說明,因此本實施例中不再做過多贅述。
步驟S220,若確定為可拆包的并包報文,則判斷該并包報文中是否存在對應(yīng)本接收端設(shè)備的子包;
本實施例中,可通過在進(jìn)行并包處理過程中,在并包的某一字段中加入相應(yīng)的標(biāo)示接收端設(shè)備的標(biāo)識以便于接收端進(jìn)行判斷確認(rèn)。其中,該標(biāo)識可以是接收端設(shè)備的IP地址或是接收端設(shè)備的網(wǎng)絡(luò)號,或者是其它網(wǎng)絡(luò)中唯一的標(biāo)識,用于與其它接收端設(shè)備區(qū)分。
本實施例中,考慮到并包報文中可能存在有對應(yīng)本接收端設(shè)備的多個子包,因此,在確定為可拆包的并包報文后,可以一次性將并包報文中對應(yīng)本接收端設(shè)備的所有子包識別出來,然后再一起進(jìn)行拆包處理。此外,也可以是在確定為可拆包的并包報文后進(jìn)行循環(huán)處理,比如先識別一個子包并進(jìn)行拆包處理后,再識別下一個子包,具體處理方式根據(jù)實際需要進(jìn)行設(shè)置。
優(yōu)選地,判斷該并包報文中是否存在對應(yīng)本接收端設(shè)備的子包的方式包括:根據(jù)并包報文內(nèi)子包中數(shù)據(jù)報文的目的地址標(biāo)識與本接收端設(shè)備的目的地址進(jìn)行判斷,其中,根據(jù)子包的長度用于確定下一子包是否為對應(yīng)本接收端設(shè)備的子包。
步驟S230,若存在,則將該并包報文中對應(yīng)本接收端設(shè)備的子包進(jìn)行報文拆包處理以得到對應(yīng)本接收端設(shè)備的數(shù)據(jù)報文;
本實施例中,并包報文的結(jié)構(gòu)主要包括并包報文頭以及若干子包,其中,子包為相應(yīng)數(shù)據(jù)報文進(jìn)行并包處理后所得到,因此,本實施例中對于子包的拆包處理是并包處理的逆向過程,也即子包的拆包處理與數(shù)據(jù)報文的并包處理相對應(yīng),因此子包的拆包處理就是將子包還原為相應(yīng)數(shù)據(jù)報文的過程,具體拆包處理方式不限,根據(jù)實際需要進(jìn)行具體設(shè)置。
步驟S240,將并包報文中對應(yīng)本接收端設(shè)備的子包進(jìn)行報文拆包處理所得到的數(shù)據(jù)報文加入接收隊列中以待接收。
如圖9所示的進(jìn)行拆包處理后所得到的數(shù)據(jù)報文格式。本實施例中,數(shù)據(jù)報文接收的處理與數(shù)據(jù)報文發(fā)送的處理相對應(yīng),由于多個數(shù)據(jù)報文進(jìn)行并包處理后能夠報文頭所占開銷,進(jìn)而相對提高了對于有效載荷的傳輸數(shù)量,也即提高了傳輸帶寬利用率,數(shù)據(jù)報文接收的處理具體與數(shù)據(jù)報文發(fā)送的處理相配合,以達(dá)到從發(fā)送端到接收端都能正確發(fā)送與接收數(shù)據(jù)報文的同時,保證傳輸帶寬利用率的提升。
參照圖10,圖10為圖8中步驟S230的細(xì)化流程示意圖?;谏鲜鰧嵤├?,本實施例中,上述步驟S230包括:
步驟S2301,申請拆包緩沖區(qū);
本實施例中,拆包緩沖區(qū)用于存儲進(jìn)行子包所對應(yīng)的本接收端的數(shù)據(jù)報文的組裝數(shù)據(jù),包括數(shù)據(jù)報文的報文頭、載荷等。
步驟S2302,向所述拆包緩沖區(qū)中填充報文頭,其中,該報文頭中的源地址及目的地址分別對應(yīng)為并包報文頭中的源地址及本接收端設(shè)備的地址;
本實施例中,為便于本接收端設(shè)備對本接收端的數(shù)據(jù)報文進(jìn)行處理,需要將拆包所形成的數(shù)據(jù)報文的報文頭進(jìn)行相應(yīng)的處理,也即將該報文頭中的源地址及目的地址分別對應(yīng)為并包報文頭中的源地址及本接收端設(shè)備的地址。其中,數(shù)據(jù)報文的報文頭中源MAC地址對應(yīng)并包報文頭中的源MAC地址,數(shù)據(jù)報文的報文頭中源IP地址對應(yīng)并包報文頭中的源IP地址,數(shù)據(jù)報文的報文頭中目的MAC地址對應(yīng)本接收端設(shè)備的目的MAC地址,數(shù)據(jù)報文的報文頭中目的IP地址對應(yīng)本接收端設(shè)備的目的IP地址。
步驟S2303,在所述拆包緩沖區(qū)中所填充的報文頭后填充對應(yīng)本接收端設(shè)備的子包的載荷并更新所填充的報文頭中的相關(guān)字段以得到對應(yīng)本接收端設(shè)備的數(shù)據(jù)報文,其中,子包至少包括數(shù)據(jù)報文的目的地址標(biāo)識字段、數(shù)據(jù)報文去掉報文頭后的載荷字段以及子包的長度字段。
本實施例中,對于并包報文中子包的拆包處理過程實質(zhì)就是將子包拆分以組裝成對應(yīng)數(shù)據(jù)報文的過程。在拆包緩沖區(qū)中填充報文頭后填充子包的載荷,也即對應(yīng)為進(jìn)行并包處理時數(shù)據(jù)報文去掉報文頭后的載荷。本實施例中, 數(shù)據(jù)報文接收的處理與數(shù)據(jù)報文發(fā)送的處理相對應(yīng),由于多個數(shù)據(jù)報文進(jìn)行并包處理后能夠報文頭所占開銷,進(jìn)而相對提高了對于有效載荷的傳輸數(shù)量,也即提高了傳輸帶寬利用率,數(shù)據(jù)報文接收的處理具體與數(shù)據(jù)報文發(fā)送的處理相配合,以達(dá)到從發(fā)送端到接收端都能正確發(fā)送與接收數(shù)據(jù)報文的同時,保證傳輸帶寬利用率的提升。
參照圖11,圖11為本發(fā)明數(shù)據(jù)報文接收的處理方法另一實施例的流程示意圖。基于上述實施例,本實施例中,上述步驟S240之后,所述數(shù)據(jù)報文接收的處理方法還包括:
步驟S250,當(dāng)本接收端設(shè)備存在下級接收端設(shè)備且下級接收端設(shè)備支持處理并包報文時,將對應(yīng)本接收端設(shè)備的子包從并包報文中刪除并在相應(yīng)更新并包報文的相關(guān)字段后,將更新后的并包報文加入發(fā)送隊列中以待發(fā)送;
步驟S260,當(dāng)本接收端設(shè)備存在下級接收端設(shè)備且下級接收端設(shè)備不支持處理并包報文時,將當(dāng)前未進(jìn)行報文拆包處理的所有子包進(jìn)行報文拆包處理,得到對應(yīng)下級接收端設(shè)備的數(shù)據(jù)報文并將該數(shù)據(jù)報文加入發(fā)送隊列中以待發(fā)送。
本實施例中,上述步驟S250與S260的執(zhí)行順序不限。
考慮到不同組網(wǎng)方式所對應(yīng)的報文傳輸方式不同,比如圖1所示的級聯(lián)組網(wǎng)方式中,NodeB1設(shè)備存在下一級設(shè)備NodeB2,而并包報文中也可能存在NodeB2設(shè)備的報文,因此,當(dāng)本接收端設(shè)備存在下級接收端設(shè)備且下級接收端設(shè)備支持處理并包報文時,將對應(yīng)本接收端設(shè)備的子包從并包報文中刪除并在相應(yīng)更新并包報文的相關(guān)字段(比如檢驗和字段、報文長度字段、目的地址字段等)后,將更新后的并包報文加入發(fā)送隊列中以待發(fā)送給下一級設(shè)備進(jìn)行拆包處理。
此外,若本接收端設(shè)備存在下級接收端設(shè)備但下級接收端設(shè)備不支持處理并包報文,則將當(dāng)前未進(jìn)行報文拆包處理的所有子包進(jìn)行報文拆包處理,得到對應(yīng)下級接收端設(shè)備的數(shù)據(jù)報文并將該數(shù)據(jù)報文加入發(fā)送隊列中以待發(fā)送給相應(yīng)的下級接收端設(shè)備。需要說明的是,在發(fā)給下級設(shè)備的數(shù)據(jù)報文的報文頭的目的地址需要更新為下級設(shè)備的地址。也即將報文頭的MAC頭中的目的MAC地址更新為下級設(shè)備MAC地址,IP頭中目的IP地址更新為下級 設(shè)備的IP地址。
參照圖12所示的數(shù)據(jù)報文接收的處理方法一較佳實施例的流程示意圖。
S31、接收一個報文,接收端所接收的報文包括數(shù)據(jù)報文、分組報文、并包報文等;
S32、判斷接收到的報文是否為并包報文,若否執(zhí)行S33,若是執(zhí)行S34;
S33、按普通報文處理流程進(jìn)行處理;
S34、取出并包報文頭中的長度字段Length;
S35、判斷并包報文的長度Length是否小于本接收端可接收的最大報文幀長MFL,若否則執(zhí)行S36,若是則執(zhí)行S37;
S36、解包失敗,丟棄整個并包報文,此時并包報文長度不符合接收端的接收要求;
S37、采用指針讀取方式讀取子包的長度subLen以及目的地址標(biāo)識flag;
S38、讀取完后,計算當(dāng)前并包報文長度Length=Length-subLen,并將指針指向下一子包,比如通過子包的長度subLen確定下一子包;
S39、判斷是否存在下級設(shè)備,或者還可以選擇判斷下級設(shè)備是否支持并包;若是則執(zhí)行S40,若否則執(zhí)行S41;其中,若本接收端設(shè)備存在下級設(shè)備,即使本接收端設(shè)備所接收到的并包報文中不存在對應(yīng)本接收端設(shè)備的數(shù)據(jù)報文,也即可以在本接收端將并包報文中的所有子包進(jìn)行拆包處理后,再發(fā)送給相應(yīng)的下級設(shè)備;
S40、獲取的子包的flag是否對應(yīng)為本接收端設(shè)備的標(biāo)識,比如對應(yīng)MAC地址、IP地址或其他標(biāo)識符等,若是則執(zhí)行S41,若否則執(zhí)行S46;
S41、申請一個空閑緩沖區(qū)以用于存放拆包的各種數(shù)據(jù)以生成完整的數(shù)據(jù)報文;
S42、在緩沖區(qū)中填充報文頭,并在報文頭后再填充子包的載荷,其中,報文頭的目的地址為目的地址標(biāo)識flag所對應(yīng)的地址,也即本接收端設(shè)備的地址,子包的載荷對應(yīng)為數(shù)據(jù)報文的載荷;
S43、更新數(shù)據(jù)報文的報文頭的相關(guān)字段,比如報文頭校驗和、報文長度等字段;
S44、將對應(yīng)本接收端的子包拆包后生成的數(shù)據(jù)報文加入到接收隊列中以 待本接收端接收;
S45、可選的,若存在下級設(shè)備且下級設(shè)備也支持并包,則將并包報文中解出的子包刪除并將該刪除子包后面的其他子包都前移;
S46、判斷并包報文當(dāng)前長度Length是否大于零,若是則返回執(zhí)行S37,若否則執(zhí)行S47;
S47、更新解包后的并包報文中報文頭的相關(guān)字段,比如將目的地址更新為下級設(shè)備地址、更新報文校驗和字段、報文長度字段等;
S48、將經(jīng)過拆包處理后的并包報文加入到本接收端設(shè)備的發(fā)送隊列中以待發(fā)送至下級設(shè)備。
參照圖13,圖13為本發(fā)明數(shù)據(jù)報文發(fā)送的處理裝置一實施例的功能模塊示意圖。本實施例中,所述數(shù)據(jù)報文發(fā)送的處理裝置包括:
并包確定模塊110,用于在發(fā)送數(shù)據(jù)報文前,確定待發(fā)送的數(shù)據(jù)報文是否進(jìn)行報文并包處理;
本實施例中,在發(fā)送數(shù)據(jù)報文前,比如在通信系統(tǒng)中,核心系統(tǒng)中網(wǎng)元MSC,HLR,VLR,AUC,SGSN,GGSN都可以直接或間接向RNC發(fā)送各種數(shù)據(jù)報文,不同的數(shù)據(jù)報文其報文頭所占開銷不同。比如,RNC與NodeB之間采用以太網(wǎng)鏈路所傳輸?shù)恼Z音報文,若語音報文的報文頭所占字節(jié)數(shù)大于報文的有效載荷,則該語音報文傳輸時的帶寬利用率會大大下降。因此,需要通過并包確定模塊110確定待發(fā)送的數(shù)據(jù)報文是否進(jìn)行報文并包處理。
本實施例中,對于并包確定模塊110確定待發(fā)送的數(shù)據(jù)報文是否進(jìn)行報文并包處理的方式不限,優(yōu)選根據(jù)判斷數(shù)據(jù)報文中的源MAC地址或源IP地址是否對應(yīng)為指定的MAC地址或IP地址進(jìn)行確定。比如有些發(fā)送端設(shè)備只發(fā)送長度較短的數(shù)據(jù)報文或者通過某一接口所發(fā)送的數(shù)據(jù)報文都比較短,因此可以固定將某一設(shè)備或者某一接口所發(fā)送的任意數(shù)據(jù)報文都進(jìn)行并包處理?;蛘咄ㄟ^判斷數(shù)據(jù)報文中報文頭的長度占整個數(shù)據(jù)報文長度的比例進(jìn)行判斷,如果比例大于50%,則確定需要進(jìn)行并包處理。
另外,需要進(jìn)一步說明的是,本實施例中并不限定不同數(shù)據(jù)報文的屬性是否相同或者是否都發(fā)送到同一目的地址,也即本實施例中支持任何報文屬性以及報文地址的多個數(shù)據(jù)報文的并包處理。
并包處理模塊120,用于將確定進(jìn)行報文并包處理的數(shù)據(jù)報文進(jìn)行報文并包處理以生成相應(yīng)的并包報文,其中,并包報文中設(shè)置有并包報文標(biāo)識字段且并包報文至少包括并包報文頭以及與進(jìn)行報文并包處理的數(shù)據(jù)報文相對應(yīng)的若干子包,子包至少包括數(shù)據(jù)報文的目的地址標(biāo)識字段;
通常情況下,在任意組網(wǎng)中都不會僅存在一條符合并包處理的數(shù)據(jù)報文,因此,本實施例中可通過并包處理模塊120將至少兩個數(shù)據(jù)報文進(jìn)行并包處理,也即使各數(shù)據(jù)報文共用一個報文頭,而各數(shù)據(jù)報文以子包的形式連接在并包報文頭后,從而形成一個更大的并包報文,并包報文包括并包報文頭以及若干子包,其中,子包與進(jìn)行報文并包處理的數(shù)據(jù)報文相對應(yīng),也即子包與對應(yīng)的數(shù)據(jù)報文具有相同的傳輸載荷。本實施例中,對于并包處理的方式不限,具體根據(jù)實際需要進(jìn)行設(shè)置。
此外,由于組網(wǎng)傳輸網(wǎng)絡(luò)中一般會同時存在數(shù)據(jù)報文與并包報文,為便于相互區(qū)別,本實施例中優(yōu)選在每個并包報文中設(shè)置一并包報文標(biāo)識字段。優(yōu)選的,并包報文標(biāo)識至少包括指定的MAC地址或IP地址或UDP端口號。比如整個組網(wǎng)傳輸網(wǎng)絡(luò)中僅有指定的少數(shù)幾個發(fā)送端設(shè)備可以進(jìn)行并包處理,因此可將該指定的發(fā)送端設(shè)備的MAC地址或IP地址或傳輸所使用的UDP端口號作為并包報文標(biāo)識。
報文發(fā)送模塊130,用于將并包報文以及未進(jìn)行報文并包處理的數(shù)據(jù)報文加入發(fā)送隊列中以待發(fā)送。
本實施例中,當(dāng)完成一個并包報文后,報文發(fā)送模塊130將該并包報文加入到發(fā)送隊列中以等待發(fā)送,同時,由于存在某些數(shù)據(jù)報文并不需要進(jìn)行報文并包處理,因此,可直接將未進(jìn)行報文并包處理的數(shù)據(jù)報文也加入到發(fā)送隊列中以待發(fā)送,其中,將發(fā)送隊列中的報文發(fā)送出去的實現(xiàn)方式與現(xiàn)有技術(shù)方式相同,因此不做過多贅述。
另外,需要說明的是,本發(fā)明的數(shù)據(jù)報文發(fā)送的處理裝置可設(shè)置在各發(fā)送端設(shè)備內(nèi),或者也可以作為一個單獨的設(shè)備設(shè)置在報文發(fā)送端的傳輸路徑上,具體設(shè)置方式根據(jù)實際需要進(jìn)行設(shè)置。
本實施例中,通過將多個數(shù)據(jù)報文進(jìn)行并包處理以共用一個并包報文頭,從而減少了每個數(shù)據(jù)報文的實際傳輸開銷,也即相對減小了報文頭在整個并包報文中的開銷,進(jìn)而相對提高了報文傳輸?shù)膸捓寐?。此外,本發(fā)明中 僅對有需要的數(shù)據(jù)報文進(jìn)行并包處理,數(shù)據(jù)報文可以是來自同一個發(fā)送端,也可以是來自不同的多個發(fā)送端,也即本發(fā)明支持多個目的地址的報文復(fù)用,同時也支持發(fā)送端與接收端的多種組網(wǎng)方式,從而能夠更加靈活地對組網(wǎng)內(nèi)的數(shù)據(jù)報文進(jìn)行并包處理,從而提高組網(wǎng)內(nèi)報文傳輸?shù)膸捓寐省?/p>
參照圖14,圖14為圖13中并包處理模塊的細(xì)化功能模塊示意圖?;谏鲜鰧嵤├?,本實施例中,所述并包處理模塊120包括:
子包數(shù)量控制單元1201,用于申請長度為預(yù)設(shè)最大幀長MFL的并包緩沖區(qū)并開啟定時器進(jìn)行計時以控制并包報文中子包的數(shù)量;
本實施例中,考慮到報文傳輸?shù)膶崟r性與傳輸大小要求,因此,子包數(shù)量控制單元1201通過控制存儲并包報文的緩沖區(qū)的大小以及設(shè)置定時器來控制一個并包報文的完成,具體用于控制并包報文中子包的數(shù)量,此外,開啟定時器的時間點也可以根據(jù)實際需要進(jìn)行設(shè)置,比如在并包緩沖區(qū)中填充并包報文頭后再行開啟。
并包報文頭填充單元1202,用于向所述并包緩沖區(qū)中填充并包報文頭,其中,并包報文頭中設(shè)置有并包報文標(biāo)識字段;
本實施兩種,并包報文頭主要包括MAC報文頭與IP報文頭,其中,MAC報文頭中的源MAC地址對應(yīng)發(fā)送端的MAC地址,IP報文頭中的源IP地址對應(yīng)為發(fā)送端的IP地址;另外,對于MAC報文頭中的目的MAC地址以及IP報文頭中的目的IP地址的設(shè)置具體根據(jù)實際情況進(jìn)行設(shè)置,例如可對應(yīng)設(shè)置為組網(wǎng)的組播地址或接收端設(shè)備的地址。
另外,本實施例中,為便于對網(wǎng)絡(luò)中傳輸?shù)牟鼒笪呐c數(shù)據(jù)報文進(jìn)行區(qū)分,優(yōu)選在并包報文頭中設(shè)置并包報文標(biāo)識字段。對于并包報文標(biāo)識的設(shè)置不限,例如可以是指定的MAC地址或IP地址,比如對并包報文頭中的源MAC地址或源IP地址進(jìn)行指定以作為并包報文標(biāo)識,從而可相應(yīng)減小報文頭的字節(jié)長度。另外,也可以在并包報文頭中加上UDP報文頭,其中,UDP報文頭設(shè)置有指定的UDP端口號。
子包填充單元1203,用于當(dāng)并包報文的當(dāng)前長度小于MFL時和/或定時器時間到達(dá)前,在并包報文頭后依次排列填充若干子包,其中,子包至少還包括數(shù)據(jù)報文去掉報文頭后的載荷字段以及子包的長度字段;
本實施例中,為便于子包在進(jìn)行拆包處理后能夠還原為并包處理前的數(shù)據(jù)報文,從而實現(xiàn)對數(shù)據(jù)報文的精確發(fā)送,因此,在子包中需要設(shè)置有數(shù)據(jù)報文的目的地址標(biāo)識字段以及數(shù)據(jù)報文去掉報文頭后的載荷字段,同時,為便于對整個并包報文進(jìn)行長度統(tǒng)計,同時也便于區(qū)分各子包所屬長度范圍,因此,在子包中還設(shè)置有子包的長度字段,如圖4所示。Flag對應(yīng)于數(shù)據(jù)報文的目的地址標(biāo)識字段,SubLen對應(yīng)于子包的長度字段,Data對應(yīng)于數(shù)據(jù)報文去掉報文頭后的載荷字段。
并包報文生成單元1204,用于當(dāng)并包報文的當(dāng)前長度大于或等于MFL和/或定時器時間到達(dá)時,更新并包報文頭中的相關(guān)字段以及生成當(dāng)前并包報文的循環(huán)冗余校驗碼CRC并將該CRC填充到當(dāng)前并包報文中,得到可發(fā)送的并包報文。
本實施例中,在并包報文的長度達(dá)到設(shè)定的MFL或者定時器時間到達(dá)時,需要對并包報文頭中的相關(guān)字段進(jìn)行更新,比如報文頭校驗和、報文長度等。此外,為進(jìn)一步確保并包處理后的并包報文在發(fā)送端與接收端的一致正確性,本實施例中還生成了并包報文的循環(huán)冗余校驗碼CRC并將其作為并包報文的一部分一起進(jìn)行發(fā)送。
參照圖15,圖15為本發(fā)明數(shù)據(jù)報文接收的處理裝置一實施例的功能模塊示意圖。本實施例中,所述數(shù)據(jù)報文接收的處理裝置包括:
拆包確定模塊210,用于當(dāng)接收到報文時,確定所接收的報文是否為可拆包的并包報文,其中,并包報文中設(shè)置有并包報文標(biāo)識字段且至少包括并包報文頭以及與進(jìn)行報文并包處理的數(shù)據(jù)報文相對應(yīng)的若干子包;
本實施例中,接收端設(shè)備所接收到的報文既有可能是數(shù)據(jù)報文、分組報文等,同時也有可能是并包報文,因此,需要通過拆包確定模塊210先判斷接收到的報文是否為并包報文,然而由于并包報文在傳送過程中可能會出現(xiàn)偏差而影響到并包報文的準(zhǔn)確性,因而需要再次判斷并包報文是否可進(jìn)行拆包處理,也即判斷并包報文是否符合接收端的要求,比如長度要求等。
優(yōu)選地,當(dāng)接收到報文時,拆包確定模塊210確定并包報文中是否存在并包報文標(biāo)識,若存在,則確定為并包報文;當(dāng)拆包確定模塊210確定為并包報文后,計算該并包報文的CRC并判斷計算所得到的CRC是否與該并包 報文所攜帶的CRC相符合,若符合,則拆包確定模塊210確定該并包報文為可拆包的并包報文。其中,并包報文標(biāo)識與CRC校驗碼已在上述數(shù)據(jù)報文發(fā)送的處理方法的實施例中已做說明,因此本實施例中不再做過多贅述。
判斷模塊220,用于當(dāng)確定所接收的報文為可拆包的并包報文時,判斷該并包報文中是否存在對應(yīng)本接收端設(shè)備的子包;
本實施例中,可通過在進(jìn)行并包處理過程中,在并包的某一字段中加入相應(yīng)的標(biāo)示接收端設(shè)備的標(biāo)識以便于接收端進(jìn)行判斷確認(rèn)。其中,該標(biāo)識可以是接收端設(shè)備的IP地址或是接收端設(shè)備的網(wǎng)絡(luò)號,或者是其它網(wǎng)絡(luò)中唯一的標(biāo)識,用于與其它接收端設(shè)備區(qū)分。
本實施例中,考慮到并包報文中可能存在有對應(yīng)本接收端設(shè)備的多個子包,因此,在確定為可拆包的并包報文后,可以一次性將并包報文中對應(yīng)本接收端設(shè)備的所有子包識別出來,然后再一起進(jìn)行拆包處理。此外,也可以是在確定為可拆包的并包報文后進(jìn)行循環(huán)處理,比如先識別一個子包并進(jìn)行拆包處理后,再識別下一個子包,具體處理方式根據(jù)實際需要進(jìn)行設(shè)置。
優(yōu)選地,判斷該并包報文中是否存在對應(yīng)本接收端設(shè)備的子包的方式包括:根據(jù)并包報文內(nèi)子包中數(shù)據(jù)報文的目的地址標(biāo)識與本接收端設(shè)備的目的地址進(jìn)行判斷,其中,根據(jù)子包的長度用于確定下一子包是否為對應(yīng)本接收端設(shè)備的子包。
拆包處理模塊230,用于當(dāng)并包報文中存在對應(yīng)本接收端設(shè)備的子包時,將該并包報文中對應(yīng)本接收端設(shè)備的子包進(jìn)行報文拆包處理以得到對應(yīng)本接收端設(shè)備的數(shù)據(jù)報文;
本實施例中,并包報文的結(jié)構(gòu)主要包括并包報文頭以及若干子包,其中,子包為相應(yīng)數(shù)據(jù)報文進(jìn)行并包處理后所得到,因此,本實施例中對于子包的拆包處理是并包處理的逆向過程,也即子包的拆包處理與數(shù)據(jù)報文的并包處理相對應(yīng),因此子包的拆包處理就是將子包還原為相應(yīng)數(shù)據(jù)報文的過程,具體拆包處理方式不限,根據(jù)實際需要進(jìn)行具體設(shè)置。
報文接收模塊240,用于將并包報文中對應(yīng)本接收端設(shè)備的子包進(jìn)行報文拆包處理所得到的數(shù)據(jù)報文加入接收隊列中以待接收。
另外,需要說明的是,本發(fā)明的數(shù)據(jù)報文接收的處理裝置可設(shè)置在各接收端設(shè)備內(nèi),或者也可以作為一個單獨的設(shè)備設(shè)置在報文接收端的傳輸路徑 上,具體設(shè)置方式根據(jù)實際需要進(jìn)行設(shè)置。
本實施例中,數(shù)據(jù)報文接收的處理與數(shù)據(jù)報文發(fā)送的處理相對應(yīng),由于多個數(shù)據(jù)報文進(jìn)行并包處理后能夠報文頭所占開銷,進(jìn)而相對提高了對于有效載荷的傳輸數(shù)量,也即提高了傳輸帶寬利用率,數(shù)據(jù)報文接收的處理具體與數(shù)據(jù)報文發(fā)送的處理相配合,以達(dá)到從發(fā)送端到接收端都能正確發(fā)送與接收數(shù)據(jù)報文的同時,保證傳輸帶寬利用率的提升。
參照圖16,圖16為圖15中拆包處理模塊的細(xì)化功能模塊示意圖?;谏鲜鰧嵤├?,本實施例中,所述拆包處理模塊230包括:
申請單元2301,用于申請拆包緩沖區(qū);
本實施例中,拆包緩沖區(qū)用于存儲進(jìn)行子包所對應(yīng)的本接收端的數(shù)據(jù)報文的組裝數(shù)據(jù),包括數(shù)據(jù)報文的報文頭、載荷等。
數(shù)據(jù)報文頭填充單元2302,用于向所述拆包緩沖區(qū)中填充報文頭,其中,該報文頭中的源地址及目的地址分別對應(yīng)為并包報文頭中的源地址及本接收端設(shè)備的地址;
本實施例中,為便于本接收端設(shè)備對本接收端的數(shù)據(jù)報文進(jìn)行處理,需要將拆包所形成的數(shù)據(jù)報文的報文頭進(jìn)行相應(yīng)的處理,也即將該報文頭中的源地址及目的地址分別對應(yīng)為并包報文頭中的源地址及本接收端設(shè)備的地址。其中,數(shù)據(jù)報文的報文頭中源MAC地址對應(yīng)并包報文頭中的源MAC地址,數(shù)據(jù)報文的報文頭中源IP地址對應(yīng)并包報文頭中的源IP地址,數(shù)據(jù)報文的報文頭中目的MAC地址對應(yīng)本接收端設(shè)備的目的MAC地址,數(shù)據(jù)報文的報文頭中目的IP地址對應(yīng)本接收端設(shè)備的目的IP地址。
數(shù)據(jù)報文生成單元2303,用于在所述拆包緩沖區(qū)中所填充的報文頭后填充對應(yīng)本接收端設(shè)備的子包的載荷并更新所填充的報文頭中的相關(guān)字段以得到對應(yīng)本接收端設(shè)備的數(shù)據(jù)報文,其中,子包至少包括數(shù)據(jù)報文的目的地址標(biāo)識字段、數(shù)據(jù)報文去掉報文頭后的載荷字段以及子包的長度字段。
本實施例中,對于并包報文中子包的拆包處理過程實質(zhì)就是將子包拆分以組裝成對應(yīng)數(shù)據(jù)報文的過程。在拆包緩沖區(qū)中填充報文頭后填充子包的載荷,也即對應(yīng)為進(jìn)行并包處理時數(shù)據(jù)報文去掉報文頭后的載荷。本實施例中,數(shù)據(jù)報文接收的處理與數(shù)據(jù)報文發(fā)送的處理相對應(yīng),由于多個數(shù)據(jù)報文進(jìn)行 并包處理后能夠報文頭所占開銷,進(jìn)而相對提高了對于有效載荷的傳輸數(shù)量,也即提高了傳輸帶寬利用率,數(shù)據(jù)報文接收的處理具體與數(shù)據(jù)報文發(fā)送的處理相配合,以達(dá)到從發(fā)送端到接收端都能正確發(fā)送與接收數(shù)據(jù)報文的同時,保證傳輸帶寬利用率的提升。
參照圖17,圖17為本發(fā)明數(shù)據(jù)報文接收的處理裝置另一實施例的功能模塊示意圖?;谏鲜鰧嵤├?,本實施例中,所述數(shù)據(jù)報文接收的處理裝置還包括:
第一發(fā)送處理模塊250,用于當(dāng)本接收端設(shè)備存在下級接收端設(shè)備且下級接收端設(shè)備支持處理并包報文時,將對應(yīng)本接收端設(shè)備的子包從并包報文中刪除并在相應(yīng)更新并包報文的相關(guān)字段后,將更新后的并包報文加入發(fā)送隊列中以待發(fā)送;
第二發(fā)送處理模塊260,用于當(dāng)本接收端設(shè)備存在下級接收端設(shè)備且下級接收端設(shè)備不支持處理并包報文時,將當(dāng)前未進(jìn)行報文拆包處理的所有子包進(jìn)行報文拆包處理,得到對應(yīng)下級接收端設(shè)備的數(shù)據(jù)報文并將該數(shù)據(jù)報文加入發(fā)送隊列中以待發(fā)送。
本實施例中,考慮到不同組網(wǎng)方式所對應(yīng)的報文傳輸方式不同,比如圖1所示的級聯(lián)組網(wǎng)方式中,NodeB1設(shè)備存在下一級設(shè)備NodeB2,而并包報文中也可能存在NodeB2設(shè)備的報文,因此,當(dāng)本接收端設(shè)備存在下級接收端設(shè)備且下級接收端設(shè)備支持處理并包報文時,將對應(yīng)本接收端設(shè)備的子包從并包報文中刪除并在相應(yīng)更新并包報文的相關(guān)字段(比如檢驗和字段、報文長度字段、目的地址字段等)后,將更新后的并包報文加入發(fā)送隊列中以待發(fā)送給下一級設(shè)備進(jìn)行拆包處理。
此外,若本接收端設(shè)備存在下級接收端設(shè)備但下級接收端設(shè)備不支持處理并包報文,則將當(dāng)前未進(jìn)行報文拆包處理的所有子包進(jìn)行報文拆包處理,得到對應(yīng)下級接收端設(shè)備的數(shù)據(jù)報文并將該數(shù)據(jù)報文加入發(fā)送隊列中以待發(fā)送給相應(yīng)的下級接收端設(shè)備。需要說明的是,在發(fā)給下級設(shè)備的數(shù)據(jù)報文的報文頭的目的地址需要更新為下級設(shè)備的地址。也即將報文頭的MAC頭中的目的MAC地址更新為下級設(shè)備MAC地址,IP頭中目的IP地址更新為下級設(shè)備的IP地址。
以上僅為本發(fā)明的優(yōu)選實施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運用在其他相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護(hù)范圍內(nèi)。