本發(fā)明涉及網(wǎng)絡(luò)通信領(lǐng)域,尤其涉及一種以太網(wǎng)報(bào)文替換編輯的方法及系統(tǒng)。
背景技術(shù):
以太網(wǎng)交換芯片作為網(wǎng)絡(luò)信息傳遞的重要節(jié)點(diǎn),非常有利于網(wǎng)絡(luò)信息的高速發(fā)展;以太網(wǎng)交換芯片將接收到的報(bào)文進(jìn)行解析、路由,得到報(bào)文下一轉(zhuǎn)發(fā)節(jié)點(diǎn)的信息,并按照網(wǎng)絡(luò)協(xié)議將報(bào)文中的特定字段進(jìn)行替換,最后將報(bào)文發(fā)送至下一轉(zhuǎn)發(fā)節(jié)點(diǎn)。
標(biāo)準(zhǔn)以太網(wǎng)報(bào)文組成格式由二層頭、三層頭、四層頭及負(fù)載四個(gè)部分組成;其中二層頭、三層頭、四層頭統(tǒng)稱為報(bào)文頭;以太網(wǎng)報(bào)文按照其應(yīng)用分成多種類型,每個(gè)類型的以太網(wǎng)報(bào)文對(duì)應(yīng)二層頭、三層頭、四層頭的內(nèi)容以及長(zhǎng)度都是不相同的,同時(shí)二層頭、三層頭、四層頭都有各自最大限制長(zhǎng)度,而且這三個(gè)部分長(zhǎng)度之和也有最大限制長(zhǎng)度;通常情況下,上述內(nèi)容均可以通過芯片里面有邏輯來識(shí)別;例如:識(shí)別出每個(gè)報(bào)文的三層頭,四層頭在報(bào)文中的起始位置,分別以L3Offset和L4Offset來標(biāo)識(shí)。
以太網(wǎng)交換芯片會(huì)根據(jù)報(bào)文類型,在將報(bào)文發(fā)送前,根據(jù)應(yīng)用要求將報(bào)文頭的某些特定字段進(jìn)行替換,因此在以太網(wǎng)交換芯片設(shè)計(jì)中需要有邏輯來滿足對(duì)報(bào)文進(jìn)行替換編輯,在報(bào)文長(zhǎng)度可變的情況下,高效的對(duì)報(bào)文進(jìn)行替換。
通常情況下,所述替換編輯請(qǐng)求包括如下信息:指定替換部分的位置,替換字段的偏移量,以及替換內(nèi)容;所述替換偏移量表示替換的可變范圍,其可以根據(jù)需求具體設(shè)定,在此不做詳細(xì)贅述?,F(xiàn)在技術(shù)中,對(duì)報(bào)文替換編輯方法中,通常情況下,根據(jù)替換編輯請(qǐng)求的偏移量,采用窮舉法將可能的字段均進(jìn)行替換,最后挑出期望的結(jié)果;然而,由于針對(duì)報(bào)文的替換編輯請(qǐng)求又較多,導(dǎo)致響應(yīng)每個(gè)替換編輯請(qǐng)求,均需要使用一次窮舉法進(jìn)行報(bào)文替換編輯操作。如此,傳統(tǒng)的報(bào)文替換編輯操作需要消耗大量的邏輯資源,而且在后端實(shí)現(xiàn)時(shí)會(huì)產(chǎn)生布線擁塞,影響芯片的實(shí)現(xiàn)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于提供一種以太網(wǎng)報(bào)文替換編輯的方法及系統(tǒng)。
為實(shí)現(xiàn)上述目的之一,本發(fā)明一實(shí)施方式的以太網(wǎng)報(bào)文替換編輯的方法,所述方法包括:獲取并解析轉(zhuǎn)發(fā)的原始的以太網(wǎng)報(bào)文,所述以太網(wǎng)報(bào)文的組成格式包括報(bào)文頭以及負(fù)載,所述報(bào)文頭包括三層,依次為二層頭、三層頭、四層頭;
依據(jù)所述以太網(wǎng)報(bào)文的應(yīng)用類型,將所述以太網(wǎng)報(bào)文頭分解為三個(gè)預(yù)估子部分,分別為第一預(yù)估子部分、第二預(yù)估子部分和第三預(yù)估子部分;
所述第一預(yù)估子部分包括至少包括二層頭,所述第二預(yù)估子部分包括至少包括三層頭,所述第三預(yù)估子部分包括至少包括四層頭;
從各個(gè)所述預(yù)估子部分中臨時(shí)抽離出其對(duì)應(yīng)的有效子部分;所述有效子部分依次為:第一有效子部分、第二有效子部分以及第三有效子部分;
接收替換編輯請(qǐng)求,分別在所述三個(gè)預(yù)估子部分的基礎(chǔ)上,對(duì)其對(duì)應(yīng)的有效子部分進(jìn)行替換編輯;所述替換編輯請(qǐng)求包括:指定替換部分的位置,替換字段的偏移量,以及替換內(nèi)容;
在完成全部的替換編輯請(qǐng)求后,從各個(gè)經(jīng)過替換編輯后的所述預(yù)估子部分中抽離出各自的有效子部分,并將三個(gè)有效子部分按照分解順序重新拼裝,形成替換編輯后的以太網(wǎng)報(bào)文。
作為本發(fā)明一實(shí)施方式的進(jìn)一步改進(jìn),“依據(jù)所述以太網(wǎng)報(bào)文的應(yīng)用類型,將所述以太網(wǎng)報(bào)文頭分解為三個(gè)預(yù)估子部分”具體包括:
分別獲取原始的以太網(wǎng)報(bào)文頭中每層報(bào)文頭的起始數(shù)據(jù)段,以及每層報(bào)文頭對(duì)應(yīng)的最大限制長(zhǎng)度;
分別以每層報(bào)文頭對(duì)應(yīng)的起始數(shù)據(jù)段以及最大限制長(zhǎng)度獲取對(duì)應(yīng)的預(yù)估子部分。
作為本發(fā)明一實(shí)施方式的進(jìn)一步改進(jìn),“分別以每層報(bào)文頭對(duì)應(yīng)的起始數(shù)據(jù)段標(biāo)識(shí)以及最大限制長(zhǎng)度獲取對(duì)應(yīng)的預(yù)估子部分”具體包括:
獲取的所述二層頭的起始數(shù)據(jù)段為報(bào)文傳遞的第一個(gè)數(shù)據(jù),最大限制長(zhǎng)度為L(zhǎng)ength2,所述三層頭的起始數(shù)據(jù)段為L(zhǎng)3Offset,最大限制長(zhǎng)度為L(zhǎng)ength3,所述四層頭的起始數(shù)據(jù)段為L(zhǎng)4Offset,最大限制長(zhǎng)度為L(zhǎng)ength4;
則所述第一預(yù)估子部分的數(shù)據(jù)包括報(bào)文傳遞的第一個(gè)數(shù)據(jù)以及其之后Length2-1個(gè)數(shù)據(jù),所述第二預(yù)估子部分的數(shù)據(jù)包括L3Offset以及其之后Length3-1個(gè)數(shù)據(jù),所述第三預(yù)估子部分的數(shù)據(jù)包括L4Offset以及其之后Length4-1個(gè)數(shù)據(jù)。
作為本發(fā)明一實(shí)施方式的進(jìn)一步改進(jìn),“從各個(gè)所述預(yù)估子部分中臨時(shí)抽離出其對(duì)應(yīng)的有效子部分”具體包括:
獲取每層報(bào)文頭對(duì)應(yīng)的下一層報(bào)文頭的起始數(shù)據(jù)段的地址,以及當(dāng)前的以太網(wǎng)報(bào)文的報(bào)文頭編輯的最大限制長(zhǎng)度,根據(jù)其分別獲得各個(gè)所述預(yù)估子部分對(duì)應(yīng)的有效子部分的長(zhǎng)度;
依據(jù)各個(gè)有效子部分的長(zhǎng)度從所述預(yù)估子部分中抽離其對(duì)應(yīng)的有效子部分。
作為本發(fā)明一實(shí)施方式的進(jìn)一步改進(jìn),所述方法具體包括:
獲取所述二層頭的下一層報(bào)文頭的起始數(shù)據(jù)段的地址為L(zhǎng)3Offset的地址L3Offsetad,所述三層頭的下一層報(bào)文頭的起始數(shù)據(jù)段標(biāo)識(shí)地址為L(zhǎng)4Offset的地址L4Offsetad,當(dāng)前的以太網(wǎng)報(bào)文的報(bào)文頭編輯的最大限制長(zhǎng)度Length all;
則所述第一有效子部分的長(zhǎng)度為L(zhǎng)2HdrLen=L3Offsetad-1,所述第二有效子部分的長(zhǎng)度為L(zhǎng)3HdrLen=L4Offsetad- L3Offsetad ,所述第三有效子部分的長(zhǎng)度為L(zhǎng)4HdrLen=Length all-L4Offsetad+1;
依據(jù)各個(gè)有效子部分的長(zhǎng)度從所述預(yù)估子部分的第一個(gè)數(shù)據(jù)開始,依次抽離對(duì)應(yīng)的有效數(shù)據(jù)形成各個(gè)有效子部分。
為實(shí)現(xiàn)上述目的之一,本發(fā)明一實(shí)施方式的以太網(wǎng)報(bào)文替換編輯的系統(tǒng),所述系統(tǒng)包括:所述系統(tǒng)包括:
數(shù)據(jù)獲取解析模塊,用于獲取并解析轉(zhuǎn)發(fā)的原始的以太網(wǎng)報(bào)文,所述以太網(wǎng)報(bào)文的組成格式包括報(bào)文頭以及負(fù)載,所述報(bào)文頭包括三層,依次為二層頭、三層頭、四層頭;
數(shù)據(jù)分解模塊,用于依據(jù)所述以太網(wǎng)報(bào)文的應(yīng)用類型,將所述以太網(wǎng)報(bào)文頭分解為三個(gè)預(yù)估子部分,分別為第一預(yù)估子部分、第二預(yù)估子部分和第三預(yù)估子部分;
所述第一預(yù)估子部分包括至少包括二層頭,所述第二預(yù)估子部分包括至少包括三層頭,所述第三預(yù)估子部分包括至少包括四層頭;
數(shù)據(jù)抽離模塊,用于從各個(gè)所述預(yù)估子部分中臨時(shí)抽離出其對(duì)應(yīng)的有效子部分;所述有效子部分依次為:第一有效子部分、第二有效子部分以及第三有效子部分;
數(shù)據(jù)替換模塊,用于接收替換編輯請(qǐng)求,分別在所述三個(gè)預(yù)估子部分的基礎(chǔ)上,對(duì)其對(duì)應(yīng)的有效子部分進(jìn)行替換編輯;所述替換編輯請(qǐng)求包括:指定替換部分的位置,替換字段的偏移量,以及替換內(nèi)容;
數(shù)據(jù)拼接模塊,用于在完成全部的替換編輯請(qǐng)求后,從各個(gè)經(jīng)過替換編輯后的所述預(yù)估子部分中抽離出各自的有效子部分,并將三個(gè)有效子部分按照分解順序重新拼裝,形成替換編輯后的以太網(wǎng)報(bào)文。
作為本發(fā)明一實(shí)施方式的進(jìn)一步改進(jìn),所述數(shù)據(jù)分解模塊具體用于:
分別獲取原始的以太網(wǎng)報(bào)文頭中每層報(bào)文頭的起始數(shù)據(jù)段,以及每層報(bào)文頭對(duì)應(yīng)的最大限制長(zhǎng)度;
分別以每層報(bào)文頭對(duì)應(yīng)的起始數(shù)據(jù)段以及最大限制長(zhǎng)度獲取對(duì)應(yīng)的預(yù)估子部分。
作為本發(fā)明一實(shí)施方式的進(jìn)一步改進(jìn),所述數(shù)據(jù)分解模塊具體用于:
獲取的所述二層頭的起始數(shù)據(jù)段為報(bào)文傳遞的第一個(gè)數(shù)據(jù),最大限制長(zhǎng)度為L(zhǎng)ength2,所述三層頭的起始數(shù)據(jù)段為L(zhǎng)3Offset,最大限制長(zhǎng)度為L(zhǎng)ength3,所述四層頭的起始數(shù)據(jù)段為L(zhǎng)4Offset,最大限制長(zhǎng)度為L(zhǎng)ength4;
則所述第一預(yù)估子部分的數(shù)據(jù)包括報(bào)文傳遞的第一個(gè)數(shù)據(jù)以及其之后Length2-1個(gè)數(shù)據(jù),所述第二預(yù)估子部分的數(shù)據(jù)包括L3Offset以及其之后Length3-1個(gè)數(shù)據(jù),所述第三預(yù)估子部分的數(shù)據(jù)包括L4Offset以及其之后Length4-1個(gè)數(shù)據(jù)。
作為本發(fā)明一實(shí)施方式的進(jìn)一步改進(jìn),所述數(shù)據(jù)抽離模塊具體用于:
獲取每層報(bào)文頭對(duì)應(yīng)的下一層報(bào)文頭的起始數(shù)據(jù)段的地址,以及當(dāng)前的以太網(wǎng)報(bào)文的報(bào)文頭編輯的最大限制長(zhǎng)度,根據(jù)其分別獲得各個(gè)所述預(yù)估子部分對(duì)應(yīng)的有效子部分的長(zhǎng)度;
依據(jù)各個(gè)有效子部分的長(zhǎng)度從所述預(yù)估子部分中抽離其對(duì)應(yīng)的有效子部分。
作為本發(fā)明一實(shí)施方式的進(jìn)一步改進(jìn),所述數(shù)據(jù)抽離模塊具體用于:
獲取所述二層頭的下一層報(bào)文頭的起始數(shù)據(jù)段的地址為L(zhǎng)3Offset的地址L3Offsetad,所述三層頭的下一層報(bào)文頭的起始數(shù)據(jù)段標(biāo)識(shí)地址為L(zhǎng)4Offset的地址L4Offsetad,當(dāng)前的以太網(wǎng)報(bào)文的報(bào)文頭編輯的最大限制長(zhǎng)度Length all;
則所述第一有效子部分的長(zhǎng)度為L(zhǎng)2HdrLen=L3Offsetad-1,所述第二有效子部分的長(zhǎng)度為L(zhǎng)3HdrLen=L4Offsetad- L3Offsetad ,所述第三有效子部分的長(zhǎng)度為L(zhǎng)4HdrLen=Length all-L4Offsetad+1;
依據(jù)各個(gè)有效子部分的長(zhǎng)度從所述預(yù)估子部分的第一個(gè)數(shù)據(jù)開始,依次抽離對(duì)應(yīng)的有效數(shù)據(jù)形成各個(gè)有效子部分。
與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是:本發(fā)明的以太網(wǎng)報(bào)文替換編輯的方法及系統(tǒng),根據(jù)以太網(wǎng)報(bào)文的組成特點(diǎn),將報(bào)文頭臨時(shí)分割為多個(gè)部分,以分別對(duì)每個(gè)部分做精準(zhǔn)的替換編輯,最后,將經(jīng)過替換編輯后的數(shù)據(jù)重新拼接,可以節(jié)省大量的芯片邏輯開銷,避免后端出現(xiàn)布線擁塞,更能節(jié)省芯片的面積。
附圖說明
圖1是本發(fā)明一實(shí)施方式中以太網(wǎng)報(bào)文替換編輯的方法的流程圖;
圖2是本發(fā)明一實(shí)施方式中以太網(wǎng)報(bào)文替換編輯的系統(tǒng)的模塊圖;
圖3A-3D是本發(fā)明一具體應(yīng)用示例的結(jié)構(gòu)示意圖。
具體實(shí)施方式
以下將結(jié)合附圖所示的具體實(shí)施方式對(duì)本發(fā)明進(jìn)行詳細(xì)描述。但這些實(shí)施方式并不限制本發(fā)明,本領(lǐng)域的普通技術(shù)人員根據(jù)這些實(shí)施方式所做出的結(jié)構(gòu)、方法、或功能上的變換均包含在本發(fā)明的保護(hù)范圍內(nèi)。
如圖1所示,在本發(fā)明的一實(shí)施方式中,以太網(wǎng)報(bào)文替換編輯的方法,包括:
S1、獲取并解析轉(zhuǎn)發(fā)的原始的以太網(wǎng)報(bào)文,所述以太網(wǎng)報(bào)文的組成格式包括報(bào)文頭以及負(fù)載,所述報(bào)文頭包括三層,依次為二層頭、三層頭、四層頭。
進(jìn)一步的,所述方法還包括:
S2、依據(jù)所述以太網(wǎng)報(bào)文的應(yīng)用類型,將所述以太網(wǎng)報(bào)文頭分解為三個(gè)預(yù)估子部分,分別為第一預(yù)估子部分、第二預(yù)估子部分和第三預(yù)估子部分;
所述第一預(yù)估子部分包括至少包括二層頭;所述第二預(yù)估子部分包括至少包括三層頭;所述第三預(yù)估子部分包括至少包括四層頭;
所述以太網(wǎng)報(bào)文按照其應(yīng)用分為多個(gè)類型,對(duì)應(yīng)每個(gè)類型的以太網(wǎng)報(bào)文,其均具有二層頭、三層頭、四層頭以及負(fù)載,對(duì)于每個(gè)類型的以太網(wǎng)報(bào)文,其區(qū)別在于,每層報(bào)文頭以及負(fù)載的長(zhǎng)度及內(nèi)容會(huì)發(fā)生相應(yīng)變化,在此不再詳細(xì)贅述。
本發(fā)明一優(yōu)選實(shí)施方式中,所述步驟S2具體包括:
分別獲取原始的以太網(wǎng)報(bào)文頭中每層報(bào)文頭的起始數(shù)據(jù)段,以及每層報(bào)文頭對(duì)應(yīng)的最大限制長(zhǎng)度;
分別以每層報(bào)文頭對(duì)應(yīng)的起始數(shù)據(jù)段以及最大限制長(zhǎng)度獲取對(duì)應(yīng)的預(yù)估子部分;并將各個(gè)預(yù)估子部分分別作為實(shí)行替換編輯請(qǐng)求的基礎(chǔ)。
相應(yīng)的,獲取的所述二層頭的起始數(shù)據(jù)段為報(bào)文傳遞的第一個(gè)數(shù)據(jù),最大限制長(zhǎng)度為L(zhǎng)ength2,所述三層頭的起始數(shù)據(jù)段為L(zhǎng)3Offset,最大限制長(zhǎng)度為L(zhǎng)ength3,所述四層頭的起始數(shù)據(jù)段為L(zhǎng)4Offset,最大限制長(zhǎng)度為L(zhǎng)ength4;
則所述第一預(yù)估子部分的數(shù)據(jù)包括報(bào)文傳遞的第一個(gè)數(shù)據(jù)以及其之后Length2-1個(gè)數(shù)據(jù);所述第二預(yù)估子部分的數(shù)據(jù)包括L3Offset以及其之后Length3-1個(gè)數(shù)據(jù);所述第三預(yù)估子部分的數(shù)據(jù)包括L4Offset以及其之后Length4-1個(gè)數(shù)據(jù)。
結(jié)合圖3A所示,為了方便理解,本發(fā)明一具體示例中,二層頭、三層頭以及四層頭的最大限制長(zhǎng)度依次為50字節(jié)、48字節(jié)、32字節(jié);獲取的三層頭的起始數(shù)據(jù)段為L(zhǎng)3Offset,所述四層頭的起始數(shù)據(jù)段為L(zhǎng)4Offset;
從當(dāng)前傳遞的報(bào)文頭中獲取傳遞的第一個(gè)數(shù)據(jù)以及其之后的49個(gè)字節(jié)數(shù)據(jù),組成50字節(jié)的第一預(yù)估子部分;
獲取L3Offset以及其之后的47個(gè)字節(jié)數(shù)據(jù),組成48字節(jié)的第二預(yù)估子部分;
獲取L4Offset以及其之后的31個(gè)字節(jié)數(shù)據(jù),組成32字節(jié)的第三預(yù)估子部分。
可以理解的是,所述報(bào)文中的各層報(bào)文頭,其有效數(shù)值并不一定等于每層報(bào)文頭的最大限制長(zhǎng)度,其有效數(shù)值通常小于等于各層報(bào)文頭的最大限制長(zhǎng)度,如此,以第一預(yù)估子部分為例,當(dāng)二層頭的有效長(zhǎng)度小于其最大限制長(zhǎng)度時(shí),所述第一預(yù)估子部分中還有可能包含三層頭,或三層頭+四層頭的數(shù)據(jù)。
另外,需要說明的是,報(bào)文傳遞過程中,每次發(fā)送的報(bào)文所攜帶的信息大小均可能發(fā)生變化,但對(duì)于一固定類型,其每層報(bào)文頭攜帶的最大長(zhǎng)度,以及報(bào)文頭的總長(zhǎng)度一定,因此,在設(shè)計(jì)階段,可以在芯片中設(shè)計(jì)一組緩存寄存器,用于存儲(chǔ)各個(gè)預(yù)估子部分,而各個(gè)預(yù)估子部分被配置的空間大小與每層報(bào)文頭攜帶的最大長(zhǎng)度相同,在此不做詳細(xì)贅述。
進(jìn)一步的,為了更直接有效的對(duì)報(bào)文頭的各層進(jìn)行替換編輯處理,進(jìn)一步的,所述方法還包括:
S3、從各個(gè)所述預(yù)估子部分中臨時(shí)抽離出其對(duì)應(yīng)的有效子部分;所述有效子部分依次為:第一有效子部分、第二有效子部分以及第三有效子部分;
本發(fā)明一優(yōu)選實(shí)施方式中,所述步驟S3具體包括:
獲取每層報(bào)文頭對(duì)應(yīng)的下一層報(bào)文頭的起始數(shù)據(jù)段的地址,以及當(dāng)前的以太網(wǎng)報(bào)文的報(bào)文頭編輯的最大限制長(zhǎng)度,根據(jù)其分別獲得各個(gè)所述預(yù)估子部分對(duì)應(yīng)的有效子部分的長(zhǎng)度;
依據(jù)各個(gè)有效子部分的長(zhǎng)度從所述預(yù)估子部分中抽離其對(duì)應(yīng)的有效子部分。
相應(yīng)的,所述二層頭的下一層報(bào)文頭的起始數(shù)據(jù)段的地址為L(zhǎng)3Offset的地址Layer3Offsetad,所述三層頭的下一層報(bào)文頭的起始數(shù)據(jù)段標(biāo)識(shí)地址為L(zhǎng)4Offset的地址L4Offsetad,當(dāng)前的以太網(wǎng)報(bào)文的報(bào)文頭編輯的最大限制長(zhǎng)度Length all;
則所述第一有效子部分的長(zhǎng)度為L(zhǎng)2HdrLen=L3Offsetad-1;
所述第二有效子部分的長(zhǎng)度為L(zhǎng)3HdrLen=L4Offsetad-1;
所述第三有效子部分的長(zhǎng)度為L(zhǎng)4HdrLen=Length all-L4Offsetad+1。
依據(jù)各個(gè)有效子部分的長(zhǎng)度從所述預(yù)估子部分的第一個(gè)數(shù)據(jù)開始,依次抽離對(duì)應(yīng)的有效數(shù)據(jù)形成各個(gè)有效子部分。
結(jié)合圖3B所示,為了方便理解,本發(fā)明一具體示例中,本示例中,假設(shè)L3Offset的地址L3Offsetad為第41個(gè)字節(jié), L4Offset的地址L4Offsetad為第73個(gè)字節(jié),當(dāng)前的以太網(wǎng)報(bào)文的報(bào)文頭編輯的最大限制長(zhǎng)度Length all為96個(gè)字節(jié);
則,所述第一有效子部分的長(zhǎng)度為L(zhǎng)2HdrLen=L3Offsetad-1=41-1=40字節(jié);
所述第二有效子部分的長(zhǎng)度為L(zhǎng)3HdrLen=L4Offsetad- L3Offsetad-1=73-41=32字節(jié);
所述第三有效子部分的長(zhǎng)度為L(zhǎng)4HdrLen=Length all-L4Offsetad+1=96-73+1
=24字節(jié)。
相應(yīng)的,所述第一有效子部分包括:報(bào)文傳遞的第一個(gè)數(shù)據(jù)以及其之后的39個(gè)字節(jié)數(shù)據(jù),共40字節(jié)的有效數(shù)據(jù);
所述第二有效子部分包括:第41個(gè)字節(jié)數(shù)據(jù)以及其之后的31個(gè)字節(jié)數(shù)據(jù),共32字節(jié)的有效數(shù)據(jù);
所述第三有效子部分包括:第73個(gè)字節(jié)數(shù)據(jù)以及其之后的23個(gè)字節(jié)數(shù)據(jù),共24字節(jié)的有效數(shù)據(jù)。
進(jìn)一步的,所述方法還包括:
S4、接收替換編輯請(qǐng)求,分別在所述三個(gè)預(yù)估子部分的基礎(chǔ)上,對(duì)其對(duì)應(yīng)的有效子部分進(jìn)行替換編輯;
所述替換編輯請(qǐng)求包括:指定替換部分的位置,替換字段的偏移量,以及替換內(nèi)容;所述替換偏移量表示替換的可變范圍,其可以根據(jù)需求具體設(shè)定,在此不做詳細(xì)贅述。
結(jié)合圖3C所示,本發(fā)明一具體實(shí)施方式中,僅以其中的三層頭替換編輯請(qǐng)求為例做具體介紹,該示例中,對(duì)于三層頭的替換編輯請(qǐng)求為兩個(gè),分別對(duì)其第12字節(jié)和第16字節(jié)發(fā)送替換編輯請(qǐng)求;
相應(yīng)的,如上所述,直接對(duì)第二有效子部分中的前32字節(jié)中查找做替換編輯請(qǐng)求的相應(yīng)位置。具體的,從41個(gè)字節(jié)開始,向后查找第二有效子部分的第12字節(jié),即對(duì)第52個(gè)字節(jié)完成替換編輯,以響應(yīng)第一次發(fā)出的替換編輯請(qǐng)求;
進(jìn)一步的,再次從41個(gè)字節(jié)開始,向后查找第二有效子部分的第16字節(jié),即對(duì)第56個(gè)字節(jié)完成替換編輯,以響應(yīng)第二次發(fā)出的替換編輯請(qǐng)求;
進(jìn)一步的,所述方法還包括:
S5、在完成全部的替換編輯請(qǐng)求后,從各個(gè)經(jīng)過替換編輯后的所述預(yù)估子部分中抽離出各自的有效子部分,并將三個(gè)有效子部分按照分解順序重新拼裝,形成替換編輯后的以太網(wǎng)報(bào)文。
從各個(gè)經(jīng)過替換編輯后的所述預(yù)估子部分中抽離出各自的有效子部分的過程可以參照上述步驟S2、S3在此不再繼續(xù)贅述,如上可知,同樣以二層頭為例 ,由于二層頭的最大限制長(zhǎng)度為50,因此,拼接邏輯僅需要實(shí)現(xiàn)1~50的窮舉,即可以得到其對(duì)應(yīng)的有效數(shù)據(jù)。
本發(fā)明優(yōu)選實(shí)施方式中,按照從后向前的順序進(jìn)行拼接,即:
首先從經(jīng)過替換編輯請(qǐng)求后的第二預(yù)估子部分中抽取其對(duì)應(yīng)的第二有效子部分,將其拼接在第三有效子部分的數(shù)據(jù)前面;
之后再?gòu)慕?jīng)過替換編輯請(qǐng)求后的第一預(yù)估子部分中抽取其對(duì)應(yīng)的第一有效子部分,將其拼接在第二有效子部分的數(shù)據(jù)前面;
繼續(xù)上述示例,結(jié)合圖3D所示,該具體示例中,首先從經(jīng)過替換編輯后的各預(yù)估子部分中,抽離其對(duì)應(yīng)的有效子部分?jǐn)?shù)據(jù),之后將第二有效子部分的32字節(jié)有效數(shù)據(jù)拼接至第三有效子部分前面,組成56字節(jié)的有效數(shù)據(jù);最后將第一有效子部分的40字節(jié)有效數(shù)據(jù)拼接在上述56字節(jié)有效數(shù)據(jù)的前面形成96字節(jié)的新的以太網(wǎng)報(bào)文。
結(jié)合圖3所示,本發(fā)明一實(shí)施方式中,所述以太網(wǎng)報(bào)文替換編輯的系統(tǒng)包括:數(shù)據(jù)獲取解析模塊100、數(shù)據(jù)分解模塊200、數(shù)據(jù)抽離模塊300、數(shù)據(jù)替換模塊400以及數(shù)據(jù)拼接模塊500。
數(shù)據(jù)獲取解析模塊100用于獲取并解析轉(zhuǎn)發(fā)的原始的以太網(wǎng)報(bào)文,所述以太網(wǎng)報(bào)文的組成格式包括報(bào)文頭以及負(fù)載,所述報(bào)文頭包括三層,依次為二層頭、三層頭、四層頭。
數(shù)據(jù)分解模塊200用于依據(jù)所述以太網(wǎng)報(bào)文的應(yīng)用類型,將所述以太網(wǎng)報(bào)文頭分解為三個(gè)預(yù)估子部分,分別為第一預(yù)估子部分、第二預(yù)估子部分和第三預(yù)估子部分;
所述第一預(yù)估子部分包括至少包括二層頭;所述第二預(yù)估子部分包括至少包括三層頭;所述第三預(yù)估子部分包括至少包括四層頭;
所述以太網(wǎng)報(bào)文按照其應(yīng)用分為多個(gè)類型,對(duì)應(yīng)每個(gè)類型的以太網(wǎng)報(bào)文,其均具有二層頭、三層頭、四層頭以及負(fù)載,對(duì)于每個(gè)類型的以太網(wǎng)報(bào)文,其區(qū)別在于,每層報(bào)文頭以及負(fù)載的長(zhǎng)度及內(nèi)容會(huì)發(fā)生相應(yīng)變化,在此不再詳細(xì)贅述。
本發(fā)明一優(yōu)選實(shí)施方式中,所述數(shù)據(jù)分解模塊200具體用于:分別獲取原始的以太網(wǎng)報(bào)文頭中每層報(bào)文頭的起始數(shù)據(jù)段,以及每層報(bào)文頭對(duì)應(yīng)的最大限制長(zhǎng)度;
分別以每層報(bào)文頭對(duì)應(yīng)的起始數(shù)據(jù)段以及最大限制長(zhǎng)度獲取對(duì)應(yīng)的預(yù)估子部分;并將各個(gè)預(yù)估子部分分別作為實(shí)行替換編輯請(qǐng)求的基礎(chǔ)。
相應(yīng)的,獲取的所述二層頭的起始數(shù)據(jù)段為報(bào)文傳遞的第一個(gè)數(shù)據(jù),最大限制長(zhǎng)度為L(zhǎng)ength2,所述三層頭的起始數(shù)據(jù)段為L(zhǎng)3Offset,最大限制長(zhǎng)度為L(zhǎng)ength3,所述四層頭的起始數(shù)據(jù)段為L(zhǎng)4Offset,最大限制長(zhǎng)度為L(zhǎng)ength4;
則所述第一預(yù)估子部分的數(shù)據(jù)包括報(bào)文傳遞的第一個(gè)數(shù)據(jù)以及其之后Length2-1個(gè)數(shù)據(jù);所述第二預(yù)估子部分的數(shù)據(jù)包括L3Offset以及其之后Length3-1個(gè)數(shù)據(jù);所述第三預(yù)估子部分的數(shù)據(jù)包括L4Offset以及其之后Length4-1個(gè)數(shù)據(jù)。
可以理解的是,所述報(bào)文中的各層報(bào)文頭,其有效數(shù)值并不一定等于每層報(bào)文頭的最大限制長(zhǎng)度,其有效數(shù)值通常小于等于各層報(bào)文頭的最大限制長(zhǎng)度,如此,以第一預(yù)估子部分為例,當(dāng)二層頭的有效長(zhǎng)度小于其最大限制長(zhǎng)度時(shí),所述第一預(yù)估子部分中還有可能包含三層頭,或三層頭+四層頭的數(shù)據(jù)。
另外,需要說明的是,報(bào)文傳遞過程中,每次發(fā)送的報(bào)文所攜帶的信息大小均可能發(fā)生變化,但對(duì)于一固定類型,其每層報(bào)文頭攜帶的最大長(zhǎng)度,以及報(bào)文頭的總長(zhǎng)度一定,因此,在設(shè)計(jì)階段,可以在芯片中設(shè)計(jì)一組緩存寄存器,用于存儲(chǔ)各個(gè)預(yù)估子部分,而各個(gè)預(yù)估子部分被配置的空間大小與每層報(bào)文頭攜帶的最大長(zhǎng)度相同,在此不做詳細(xì)贅述。
進(jìn)一步的,為了更直接有效的對(duì)報(bào)文頭的各層進(jìn)行替換編輯處理,數(shù)據(jù)抽離模塊300用于從各個(gè)所述預(yù)估子部分中臨時(shí)抽離出其對(duì)應(yīng)的有效子部分;所述有效子部分依次為:第一有效子部分、第二有效子部分以及第三有效子部分;
本發(fā)明一優(yōu)選實(shí)施方式中,數(shù)據(jù)抽離模塊300具體用于:獲取每層報(bào)文頭對(duì)應(yīng)的下一層報(bào)文頭的起始數(shù)據(jù)段的地址,以及當(dāng)前的以太網(wǎng)報(bào)文的報(bào)文頭編輯的最大限制長(zhǎng)度,根據(jù)其分別獲得各個(gè)所述預(yù)估子部分對(duì)應(yīng)的有效子部分的長(zhǎng)度;
依據(jù)各個(gè)有效子部分的長(zhǎng)度從所述預(yù)估子部分中抽離其對(duì)應(yīng)的有效子部分。
相應(yīng)的,所述二層頭的下一層報(bào)文頭的起始數(shù)據(jù)段的地址為L(zhǎng)3Offset的地址Layer3Offsetad,所述三層頭的下一層報(bào)文頭的起始數(shù)據(jù)段標(biāo)識(shí)地址為L(zhǎng)4Offset的地址L4Offsetad,當(dāng)前的以太網(wǎng)報(bào)文的報(bào)文頭編輯的最大限制長(zhǎng)度Length all;
則所述第一有效子部分的長(zhǎng)度為L(zhǎng)2HdrLen=L3Offsetad-1;
所述第二有效子部分的長(zhǎng)度為L(zhǎng)3HdrLen=L4Offsetad-1;
所述第三有效子部分的長(zhǎng)度為L(zhǎng)4HdrLen=Length all-L4Offsetad+1。
依據(jù)各個(gè)有效子部分的長(zhǎng)度從所述預(yù)估子部分的第一個(gè)數(shù)據(jù)開始,依次抽離對(duì)應(yīng)的有效數(shù)據(jù)形成各個(gè)有效子部分。
數(shù)據(jù)替換模塊400用于:接收替換編輯請(qǐng)求,分別在所述三個(gè)預(yù)估子部分的基礎(chǔ)上,對(duì)其對(duì)應(yīng)的有效子部分進(jìn)行替換編輯;
所述替換編輯請(qǐng)求包括:指定替換部分的位置,替換字段的偏移量,以及替換內(nèi)容;所述替換偏移量表示替換的可變范圍,其可以根據(jù)需求具體設(shè)定,在此不做詳細(xì)贅述。
數(shù)據(jù)拼接模塊500用于:在完成全部的替換編輯請(qǐng)求后,從各個(gè)經(jīng)過替換編輯后的所述預(yù)估子部分中抽離出各自的有效子部分,并將三個(gè)有效子部分按照分解順序重新拼裝,形成替換編輯后的以太網(wǎng)報(bào)文。
從各個(gè)經(jīng)過替換編輯后的所述預(yù)估子部分中抽離出各自的有效子部分的過程可以參照上述過程,在此不再繼續(xù)贅述,如上可知,同樣以二層頭為例 ,由于二層頭的最大限制長(zhǎng)度為50,因此,拼接邏輯僅需要實(shí)現(xiàn)1~50的窮舉,即可以得到其對(duì)應(yīng)的有效數(shù)據(jù)。
本發(fā)明優(yōu)選實(shí)施方式中,數(shù)據(jù)拼接模塊500按照從后向前的順序進(jìn)行拼接,即:
首先從經(jīng)過替換編輯請(qǐng)求后的第二預(yù)估子部分中抽取其對(duì)應(yīng)的第二有效子部分,將其拼接在第三有效子部分的數(shù)據(jù)前面;
之后再?gòu)慕?jīng)過替換編輯請(qǐng)求后的第一預(yù)估子部分中抽取其對(duì)應(yīng)的第一有效子部分,將其拼接在第二有效子部分的數(shù)據(jù)前面;
所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡(jiǎn)潔,上述描述的系統(tǒng)和模塊的具體工作過程,可參考前述方法實(shí)施方式中的對(duì)應(yīng)過程,在此不再贅述。
綜上所述,本發(fā)明的以太網(wǎng)報(bào)文替換編輯的方法及系統(tǒng),根據(jù)以太網(wǎng)報(bào)文的組成特點(diǎn),將報(bào)文頭臨時(shí)分割為多個(gè)部分,以分別對(duì)每個(gè)部分做精準(zhǔn)的替換編輯,最后,將經(jīng)過替換編輯后的數(shù)據(jù)重新拼接,可以節(jié)省大量的芯片邏輯開銷,避免后端出現(xiàn)布線擁塞,更能節(jié)省芯片的面積。
為了描述的方便,描述以上裝置時(shí)以功能分為各種模塊分別描述。當(dāng)然,在實(shí)施本申請(qǐng)時(shí)可以把各模塊的功能在同一個(gè)或多個(gè)軟件和/或硬件中實(shí)現(xiàn)。
通過以上的實(shí)施方式的描述可知,本領(lǐng)域的技術(shù)人員可以清楚地了解到本申請(qǐng)可借助軟件加必需的通用硬件平臺(tái)的方式來實(shí)現(xiàn)。
以上所描述的裝置實(shí)施方式僅僅是示意性的,其中所述作為分離部件說明的模塊可以是或者也可以不是物理上分開的,作為模塊顯示的部件可以是或者也可以不是物理模塊,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)模塊上。可以根據(jù)實(shí)際的需要選擇其中的部分或者全部模塊來實(shí)現(xiàn)本實(shí)施方式方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動(dòng)的情況下,即可以理解并實(shí)施。
應(yīng)當(dāng)理解,雖然本說明書按照實(shí)施方式加以描述,但并非每個(gè)實(shí)施方式僅包含一個(gè)獨(dú)立的技術(shù)方案,說明書的這種敘述方式僅僅是為清楚起見,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)將說明書作為一個(gè)整體,各實(shí)施方式中的技術(shù)方案也可以經(jīng)適當(dāng)組合,形成本領(lǐng)域技術(shù)人員可以理解的其他實(shí)施方式。
上文所列出的一系列的詳細(xì)說明僅僅是針對(duì)本發(fā)明的可行性實(shí)施方式的具體說明,它們并非用以限制本發(fā)明的保護(hù)范圍,凡未脫離本發(fā)明技藝精神所作的等效實(shí)施方式或變更均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。