Gre報(bào)文的封裝方法、解封裝方法及對(duì)應(yīng)的裝置制造方法
【專利摘要】本發(fā)明涉及一種GRE報(bào)文的封裝方法、解封裝方法及對(duì)應(yīng)的裝置,本發(fā)明通過(guò)預(yù)設(shè)的封裝規(guī)則對(duì)遵守不同協(xié)議的GRE報(bào)文頭進(jìn)行屬性設(shè)置并進(jìn)行封裝,并通過(guò)預(yù)設(shè)的對(duì)應(yīng)解封裝規(guī)則對(duì)接收的GRE報(bào)文的報(bào)文頭進(jìn)行解封裝解析以解封出接收的GRE報(bào)文中的原始報(bào)文,保證了遵守不同協(xié)議的網(wǎng)絡(luò)設(shè)備之間的互聯(lián)互通。
【專利說(shuō)明】GRE報(bào)文的封裝方法、解封裝方法及對(duì)應(yīng)的裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及網(wǎng)絡(luò)【技術(shù)領(lǐng)域】,尤其涉及一種GRE報(bào)文的封裝方法、解封裝方法及對(duì)應(yīng)的裝置。
【背景技術(shù)】
[0002]GRECGeneric Routing Encapsulat1n,通用路由封裝協(xié)議)是一種封裝協(xié)議,它提供了將一種協(xié)議的報(bào)文封裝在另一種協(xié)議報(bào)文中的機(jī)制,使報(bào)文能夠在異種網(wǎng)絡(luò)中傳輸。GRE 由 Cisco 和 Net Smiths 公司于 1994 年提交給 IETF,標(biāo)號(hào)為 RFC 170URFC 1702。2000年,Cisco等公司又對(duì)GRE協(xié)議進(jìn)行了修訂,稱為GRE V2,標(biāo)號(hào)為RFC 2784。目前RFC1701雖然不作為遵循的主要標(biāo)準(zhǔn),但現(xiàn)網(wǎng)中仍然存在使用RFC1701的設(shè)備。
[0003]在報(bào)文發(fā)送方,GRE隧道將原始報(bào)文和GRE報(bào)文頭進(jìn)行封裝成GRE報(bào)文后通過(guò)協(xié)議報(bào)文進(jìn)行“包裝”,放在IP報(bào)文的“數(shù)據(jù)區(qū)”中進(jìn)行傳輸。接收方在接收到GRE報(bào)文后,根據(jù)GRE報(bào)文頭的格式進(jìn)行GRE報(bào)文的解封裝,對(duì)原始報(bào)文進(jìn)行復(fù)原。在解析GRE報(bào)文頭部時(shí),由于在GRE報(bào)文頭中沒(méi)有一個(gè)顯式的字段來(lái)標(biāo)識(shí)整個(gè)GRE報(bào)文頭的長(zhǎng)度。如果報(bào)文發(fā)送方采用RFC2784的路由設(shè)備時(shí),其GRE報(bào)文頭部長(zhǎng)度可能是32至64個(gè)比特位,如果報(bào)文接收方采用RFC1701的路由設(shè)備,GRE報(bào)文頭部長(zhǎng)度可能是32至160個(gè)比特位。由于GRE報(bào)文頭中的格式及比特位的長(zhǎng)度不統(tǒng)一無(wú)法正確識(shí)別相應(yīng)的字段以解析完整的報(bào)文頭,從而導(dǎo)致路由器無(wú)法互聯(lián)互通。因此如何解決以上問(wèn)題已成為業(yè)界亟待的技術(shù)問(wèn)題。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的主要目的是提供一種GRE報(bào)文的封裝方法、解封裝方法及對(duì)應(yīng)的裝置,旨在解決因GRE報(bào)文頭格式的不一致而導(dǎo)致路由器無(wú)法互聯(lián)互通。
[0005]一種GRE報(bào)文的封裝方法,該方法包括:在對(duì)原始報(bào)文進(jìn)行GRE報(bào)文封裝時(shí),按照預(yù)設(shè)的封裝規(guī)則對(duì)GRE報(bào)文頭的預(yù)先確定的比特位進(jìn)行屬性設(shè)置;將屬性設(shè)置后的所述GRE報(bào)文頭與所述原始報(bào)文進(jìn)行GRE報(bào)文封裝。
[0006]優(yōu)選地,所述預(yù)先確定的比特位包括GRE報(bào)文頭的第一位至第十六位比特位,所述預(yù)設(shè)的封裝規(guī)則包括:將GRE報(bào)文頭的第一比特位填零或一;將GRE報(bào)文頭的第二比特位填零JfGRE報(bào)文頭的第三比特位填零或一 JfGRE報(bào)文頭的第四比特位填零或一;將GRE報(bào)文頭的第五至第十三比特位填零;將GRE報(bào)文頭的第十四至第十六比特位填零。
[0007]一種GRE報(bào)文的解封裝方法,該方法包括:在接收到GRE報(bào)文時(shí),按照預(yù)設(shè)的解封裝規(guī)則對(duì)接收的GRE報(bào)文的報(bào)文頭的預(yù)先確定的比特位進(jìn)行解封裝解析;根據(jù)解析結(jié)果將接收的GRE報(bào)文進(jìn)行解封裝,以解封出接收的GRE報(bào)文中的原始報(bào)文。
[0008]優(yōu)選地,所述預(yù)先確定的比特位包括GRE報(bào)文頭的第一位至第十六位比特位,所述預(yù)設(shè)的解封裝規(guī)則包括:在GRE報(bào)文頭的第一比特位為零時(shí),直接進(jìn)行解封裝;在GRE報(bào)文頭的第一比特位為一時(shí),進(jìn)行校驗(yàn)和的檢查,在通過(guò)校驗(yàn)和檢查時(shí)直接進(jìn)行解封裝,在未通過(guò)校驗(yàn)和檢查時(shí)丟棄該GRE報(bào)文;在GRE報(bào)文頭的第二比特位為零時(shí),直接解封裝;在GRE報(bào)文頭的第三比特位為零時(shí),直接解封裝;在GRE報(bào)文頭的第三比特位為一時(shí),進(jìn)行關(guān)鍵字校驗(yàn)并根據(jù)校驗(yàn)的結(jié)果判斷是否直接進(jìn)行解封裝;在GRE報(bào)文頭的第四比特位為零時(shí),直接解封裝;在GRE報(bào)文頭的第四比特位為一時(shí),進(jìn)行序列號(hào)的檢查根據(jù)檢查的結(jié)果判斷是否直接進(jìn)行解封裝JiGRE報(bào)文頭的第五至第十三比特位進(jìn)行忽略,直接解封裝;在GRE報(bào)文頭的第十四至第十六比特位為零時(shí),直接進(jìn)行解封裝;在GRE報(bào)文頭的第十四至第十六比特位任一位不為零時(shí),丟棄該GRE報(bào)文。
[0009]優(yōu)選地,所述根據(jù)解析結(jié)果將接收的GRE報(bào)文進(jìn)行解封裝,以解封出接收的GRE報(bào)文中的原始報(bào)文的步驟之前還包括:在對(duì)接收的GRE報(bào)文的報(bào)文頭的預(yù)先確定的比特位進(jìn)行解封裝解析時(shí),獲取預(yù)先確定的比特位對(duì)應(yīng)的偏移量;根據(jù)所述偏移量計(jì)算所述GRE報(bào)文頭的長(zhǎng)度。
[0010]一種GRE報(bào)文的封裝裝置,包括:設(shè)置模塊,用于在對(duì)原始報(bào)文進(jìn)行GRE報(bào)文封裝時(shí),按照預(yù)設(shè)的封裝規(guī)則對(duì)GRE報(bào)文頭的預(yù)先確定的比特位進(jìn)行屬性設(shè)置;封裝模塊,用于將屬性設(shè)置后的所述GRE報(bào)文頭與所述原始報(bào)文進(jìn)行GRE報(bào)文封裝。
[0011]優(yōu)選地,所述預(yù)先確定的比特位包括GRE報(bào)文頭的第一位至第十六位比特位,所述預(yù)設(shè)的封裝規(guī)則包括:將GRE報(bào)文頭的第一比特位填零或一;將GRE報(bào)文頭的第二比特位填零JfGRE報(bào)文頭的第三比特位填零或一 JfGRE報(bào)文頭的第四比特位填零或一;將GRE報(bào)文頭的第五至第十三比特位填零;將GRE報(bào)文頭的第十四至第十六比特位填零。
[0012]一種GRE報(bào)文的解封裝裝置,包括:解析模塊,用于在接收到GRE報(bào)文時(shí),按照預(yù)設(shè)的解封裝規(guī)則對(duì)接收的GRE報(bào)文的報(bào)文頭的預(yù)先確定的比特位進(jìn)行解封裝解析;解封裝模塊,用于根據(jù)解析結(jié)果將接收的GRE報(bào)文進(jìn)行解封裝,以解封出接收的GRE報(bào)文中的原始報(bào)文。
[0013]優(yōu)選地,所述預(yù)先確定的比特位包括GRE報(bào)文頭的第一位至第十六位比特位,所述預(yù)設(shè)的解封裝規(guī)則包括:在GRE報(bào)文頭的第一比特位為零時(shí),直接進(jìn)行解封裝;在GRE報(bào)文頭的第一比特位為一時(shí),進(jìn)行校驗(yàn)和的檢查,在通過(guò)校驗(yàn)和檢查時(shí)直接進(jìn)行解封裝,在未通過(guò)校驗(yàn)和檢查時(shí)丟棄該GRE報(bào)文;在GRE報(bào)文頭的第二比特位為零時(shí),直接解封裝;在GRE報(bào)文頭的第三比特位為零時(shí),直接解封裝;在GRE報(bào)文頭的第三比特位為一時(shí),進(jìn)行關(guān)鍵字校驗(yàn)并根據(jù)校驗(yàn)的結(jié)果判斷是否直接進(jìn)行解封裝;在GRE報(bào)文頭的第四比特位為零時(shí),直接解封裝;在GRE報(bào)文頭的第四比特位為一時(shí),進(jìn)行序列號(hào)的檢查根據(jù)檢查的結(jié)果判斷是否直接進(jìn)行解封裝JiGRE報(bào)文頭的第五至第十三比特位進(jìn)行忽略,直接解封裝;在GRE報(bào)文頭的第十四至第十六比特位為零時(shí),直接進(jìn)行解封裝;在GRE報(bào)文頭的第十四至第十六比特位任一位不為零時(shí),丟棄該GRE報(bào)文。
[0014]優(yōu)選地,所述解析模塊還包括:獲取單元,用于在對(duì)接收的GRE報(bào)文的報(bào)文頭的預(yù)先確定的比特位進(jìn)行解封裝解析時(shí),獲取預(yù)先確定的比特位對(duì)應(yīng)的偏移量;計(jì)算單元,用于根據(jù)所述偏移量計(jì)算所述GRE報(bào)文頭的長(zhǎng)度。
[0015]本發(fā)明通過(guò)預(yù)設(shè)的封裝規(guī)則對(duì)遵守不同協(xié)議的GRE報(bào)文頭進(jìn)行屬性設(shè)置并進(jìn)行封裝,并通過(guò)預(yù)設(shè)的對(duì)應(yīng)解封裝規(guī)則對(duì)接收的GRE報(bào)文的報(bào)文頭進(jìn)行解封裝解析以解封出接收的GRE報(bào)文中的原始報(bào)文,保證了遵守不同協(xié)議的網(wǎng)絡(luò)設(shè)備之間的互聯(lián)互通。
【專利附圖】
【附圖說(shuō)明】
[0016]圖1為本發(fā)明GRE報(bào)文的封裝方法實(shí)施例流程示意圖;
[0017]圖2為本發(fā)明GRE報(bào)文的解封裝方法第一實(shí)施例流程示意圖;
[0018]圖3為本發(fā)明GRE報(bào)文的解封裝方法第二實(shí)施例流程示意圖;
[0019]圖4為本發(fā)明GRE報(bào)文的封裝裝置實(shí)施例結(jié)構(gòu)示意圖;
[0020]圖5為本發(fā)明GRE報(bào)文的解封裝裝置第一實(shí)施例結(jié)構(gòu)示意圖;
[0021]圖6為本發(fā)明GRE報(bào)文的解封裝裝置中解析模塊實(shí)施例結(jié)構(gòu)示意圖。
[0022]本發(fā)明目的的實(shí)現(xiàn)、功能特點(diǎn)及優(yōu)點(diǎn)將結(jié)合實(shí)施例,參照附圖做進(jìn)一步說(shuō)明。
【具體實(shí)施方式】
[0023]下面結(jié)合附圖及具體實(shí)施例就本發(fā)明的技術(shù)方案做進(jìn)一步的說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0024]參照?qǐng)D1所示,為本發(fā)明GRE報(bào)文的封裝方法實(shí)施例流程示意圖。
[0025]需要強(qiáng)調(diào)的是:圖1所示流程圖僅為一個(gè)較佳實(shí)施例,本領(lǐng)域的技術(shù)人員當(dāng)知,任何圍繞本發(fā)明思想構(gòu)建的實(shí)施例都不應(yīng)脫離于如下技術(shù)方案涵蓋的范圍:
[0026]在對(duì)原始報(bào)文進(jìn)行GRE報(bào)文封裝時(shí),按照預(yù)設(shè)的封裝規(guī)則對(duì)GRE報(bào)文頭的預(yù)先確定的比特位進(jìn)行屬性設(shè)置;將屬性設(shè)置后的所述GRE報(bào)文頭與所述原始報(bào)文進(jìn)行GRE報(bào)文封裝。
[0027]以下是結(jié)合本實(shí)施例逐步實(shí)現(xiàn)對(duì)遵守不同協(xié)議的GRE報(bào)文頭進(jìn)行屬性設(shè)置并進(jìn)行封裝的過(guò)程(本實(shí)施例中以RFC2784協(xié)議及RFC2890協(xié)議中對(duì)報(bào)文頭的封裝規(guī)則來(lái)實(shí)現(xiàn)對(duì)GRE報(bào)文的封裝為例)。
[0028]步驟S10,在對(duì)原始報(bào)文進(jìn)行GRE報(bào)文封裝時(shí),按照預(yù)設(shè)的封裝規(guī)則對(duì)GRE報(bào)文頭的第一至第十六比特位進(jìn)行屬性設(shè)置;
[0029]所述原始報(bào)文是指需要封裝和路由的數(shù)據(jù)報(bào)文。本實(shí)施例中在對(duì)所述原始報(bào)文進(jìn)行GRE報(bào)文頭封裝時(shí),對(duì)所述GRE報(bào)文頭的比特位按照預(yù)設(shè)的封裝規(guī)則對(duì)GRE報(bào)文頭的第一至第十六比特位進(jìn)行屬性設(shè)置。GRE隧道在封裝GRE報(bào)文時(shí)都遵守著相應(yīng)的封裝協(xié)議以此作為封裝的標(biāo)準(zhǔn)。比如常見(jiàn)的協(xié)議如,RFC2784協(xié)議、RFC2890協(xié)議及RFC1701協(xié)議等等。
[0030]具體地,根據(jù)RFC2784協(xié)議將GRE報(bào)文頭的第一比特位設(shè)置為(Checksum校驗(yàn)和)屬性,該屬性的屬性值用戶可根據(jù)自己的需求選擇填零或一,在選擇填零時(shí)所述校驗(yàn)和無(wú)效即在解封裝時(shí)無(wú)需進(jìn)行校驗(yàn)和的檢查;在選擇填一時(shí)所述校驗(yàn)和有效即在解封裝時(shí)需進(jìn)行校驗(yàn)和的檢查。在將GRE報(bào)文頭的第二比特位設(shè)置為(ReservedO預(yù)留)屬性時(shí),將該屬性值設(shè)置為零。
[0031]進(jìn)一步地,根據(jù)RFC2890協(xié)議將GRE報(bào)文頭的第三比特位設(shè)置為(Key Present密鑰)屬性,該屬性的屬性值用戶可以選擇性設(shè)置。在該屬性的屬性值選擇填零時(shí)所述密鑰無(wú)效即在解封裝時(shí)無(wú)需進(jìn)行關(guān)鍵字認(rèn)證;在屬性值選擇填一時(shí)所述密鑰有效即在解封裝時(shí)需進(jìn)行關(guān)鍵字認(rèn)證,只有通過(guò)關(guān)鍵字認(rèn)證之后才能對(duì)GRE報(bào)文進(jìn)行解封裝。在將GRE報(bào)文頭的第四比特位設(shè)置為(Sequence Number Present序列號(hào))屬性時(shí),該屬性的屬性值用戶也可以選擇性的設(shè)置為零或一。在第四比特位屬性的屬性值為一時(shí),在解封裝時(shí)需進(jìn)行GRE報(bào)文序列號(hào)的檢查,只有通過(guò)序列號(hào)的檢查之后才能對(duì)GRE報(bào)文進(jìn)行解封裝;在第四比特位屬性的屬性值為零時(shí),在解封裝時(shí)無(wú)需進(jìn)行GRE報(bào)文序列號(hào)的檢查。
[0032]進(jìn)一步地,根據(jù)RFC2784協(xié)議將GRE報(bào)文頭的第五至第十三比特位設(shè)置為(ReservedO預(yù)留)屬性,并設(shè)置該屬性值為零。在將GRE報(bào)文頭的第十四至第十六比特位設(shè)置為(Vers1n版本號(hào))屬性時(shí)設(shè)置該屬性值為零。
[0033]步驟S20,將屬性設(shè)置后的所述GRE報(bào)文頭與所述原始報(bào)文進(jìn)行GRE報(bào)文封裝。
[0034]本實(shí)例中按照預(yù)設(shè)的封裝規(guī)則對(duì)GRE報(bào)文頭的第一位至第十六位比特位進(jìn)行屬性設(shè)置,將屬性設(shè)置后的所述GRE報(bào)文頭作為所述GRE報(bào)文的封裝格式并與所述原始報(bào)文進(jìn)行GRE報(bào)文封裝。
[0035]本發(fā)明通過(guò)預(yù)設(shè)的封裝規(guī)則對(duì)遵守不同協(xié)議的GRE報(bào)文頭進(jìn)行屬性設(shè)置并進(jìn)行封裝,保證了遵守不同協(xié)議的網(wǎng)絡(luò)設(shè)備之間的互聯(lián)互通。
[0036]參照?qǐng)D2所示,為本發(fā)明GRE報(bào)文的解封裝方法第一實(shí)施例流程示意圖。
[0037]需要強(qiáng)調(diào)的是:圖2所示流程圖僅為一個(gè)較佳實(shí)施例,本領(lǐng)域的技術(shù)人員當(dāng)知,任何圍繞本發(fā)明思想構(gòu)建的實(shí)施例都不應(yīng)脫離于如下技術(shù)方案涵蓋的范圍:
[0038]在接收到GRE報(bào)文時(shí),按照預(yù)設(shè)的解封裝規(guī)則對(duì)接收的GRE報(bào)文的報(bào)文頭的預(yù)先確定的比特位進(jìn)行解封裝解析;根據(jù)解析結(jié)果將接收的GRE報(bào)文進(jìn)行解封裝,以解封出接收的GRE報(bào)文中的原始報(bào)文。
[0039]以下是結(jié)合本實(shí)施例逐步通過(guò)預(yù)設(shè)的對(duì)應(yīng)解封裝規(guī)則對(duì)接收的GRE報(bào)文的報(bào)文頭進(jìn)行解封裝解析以解封出接收的GRE報(bào)文中的原始報(bào)文的過(guò)程。
[0040]步驟SI 10,在接收到GRE報(bào)文時(shí),按照預(yù)設(shè)的解封裝規(guī)則對(duì)接收的GRE報(bào)文的報(bào)文頭的預(yù)先確定的比特位進(jìn)行解封裝解析;
[0041]所述GRE報(bào)文包括:原始數(shù)據(jù)報(bào)文及GRE報(bào)文頭。在解析時(shí)按照預(yù)設(shè)的解封裝規(guī)則對(duì)接收的GRE報(bào)文的報(bào)文頭的第一至第十六比特位進(jìn)行解封裝解析。
[0042]具體地,在解析第一比特位時(shí),將GRE報(bào)文頭的第一比特位作為(Checksum校驗(yàn)和)屬性,在該屬性的屬性值為零時(shí),直接解封裝;在該屬性的屬性值為一時(shí),對(duì)接收到的GRE報(bào)文計(jì)算校驗(yàn)和,并將計(jì)算得出的校驗(yàn)和與所述GRE報(bào)文中的原始校驗(yàn)和進(jìn)行校驗(yàn)和的檢查,如果計(jì)算得出的校驗(yàn)和與所述GRE報(bào)文中的原始校驗(yàn)和完全一致時(shí),則表明通過(guò)校驗(yàn)和的檢查對(duì)所述GRE報(bào)文進(jìn)行解封裝;如果計(jì)算得出的校驗(yàn)和與所述GRE報(bào)文中的原始校驗(yàn)和不一致時(shí),則表明沒(méi)有通過(guò)校驗(yàn)和的檢查需丟棄所述GRE報(bào)文。在解析第二比特位時(shí),將GRE報(bào)文頭的第二比特位作為(ReservedO預(yù)留)屬性,該屬性的屬性值是零時(shí)直接解封裝。其中,如果是RFC2784協(xié)議的路由器兼容RFC1701協(xié)議的路由器并由RFC1701協(xié)議的路由器對(duì)所述第二比特位進(jìn)行解析,在所述比特位的屬性值為零時(shí),直接進(jìn)行解封裝;在所述比特位的屬性值為I時(shí),直接進(jìn)行解封裝同時(shí)在計(jì)算GRE報(bào)文頭的長(zhǎng)度時(shí)需加上所述比特位產(chǎn)生的偏移量。
[0043]進(jìn)一步地,在解析第三比特位時(shí),將GRE報(bào)文頭的第三比特位作為(Key Present密鑰)屬性,在該屬性的屬性值是零時(shí)直接進(jìn)行GRE報(bào)文解封裝;在該屬性的屬性值是一時(shí),進(jìn)行關(guān)鍵字校驗(yàn)只有在路由器的接受方和路由器的發(fā)送方兩端識(shí)別的關(guān)鍵字完全一致時(shí)才能通過(guò)驗(yàn)證并對(duì)所述GRE報(bào)文進(jìn)行解封裝,否則將所述GRE報(bào)文丟棄。在對(duì)GRE報(bào)文頭的第四比特位作為(Sequence Number Present序列號(hào))屬性進(jìn)行解析時(shí),在該屬性的屬性值是零時(shí)直接解封裝;在該屬性的屬性值是一時(shí)需進(jìn)行序列號(hào)的檢查,只有在路由器的接受方和路由器的發(fā)送方兩端在所述序列號(hào)完全一致時(shí)才進(jìn)行GRE報(bào)文解封裝,路由器的接受方和路由器的發(fā)送方兩端在所述序列號(hào)不一致時(shí)將所述GRE報(bào)文丟棄。對(duì)GRE報(bào)文頭的第五至第十三比特位作(ReservedO預(yù)留)屬性時(shí),該屬性的屬性值為零或者非零時(shí)進(jìn)行忽略直接解封裝;對(duì)GRE報(bào)文頭的第十四至第十六比特位作為(Vers1n版本號(hào))屬性時(shí),在該屬性的屬性值為零時(shí)直接解封裝;在GRE報(bào)文頭的第十四至第十六比特位任一位的屬性值不為零時(shí),丟棄該GRE報(bào)文。
[0044]步驟S120,根據(jù)解析結(jié)果將接收的GRE報(bào)文進(jìn)行解封裝,以解封出接收的GRE報(bào)文中的原始報(bào)文。
[0045]在對(duì)接收到的GRE報(bào)文頭進(jìn)行解析后,根據(jù)解析結(jié)果將接收的GRE報(bào)文進(jìn)行解封裝,以解封出接收的GRE報(bào)文中的原始報(bào)文。本實(shí)施例中根據(jù)所述GRE報(bào)文頭的長(zhǎng)度對(duì)接收的GRE報(bào)文進(jìn)行解封裝。
[0046]本發(fā)明通過(guò)預(yù)設(shè)的對(duì)應(yīng)解封裝規(guī)則對(duì)接收的GRE報(bào)文的報(bào)文頭進(jìn)行解封裝解析以解封出接收的GRE報(bào)文中的原始報(bào)文,保證了遵守不同協(xié)議的網(wǎng)絡(luò)設(shè)備之間的互聯(lián)互通。
[0047]參照?qǐng)D3所示,為本發(fā)明GRE報(bào)文的解封裝方法第二實(shí)施例流程示意圖。
[0048]基于上述實(shí)施例提出本發(fā)明GRE報(bào)文的解封裝方法第二實(shí)施例,在上述實(shí)施例中步驟S120之前包括:
[0049]步驟S140,在對(duì)接收的GRE報(bào)文的報(bào)文頭的預(yù)先確定的比特位進(jìn)行解封裝解析時(shí),獲取預(yù)先確定的比特位對(duì)應(yīng)的偏移量;
[0050]步驟S150,根據(jù)所述偏移量計(jì)算所述GRE報(bào)文頭的長(zhǎng)度。
[0051]其中,所述偏移量是指所述比特位屬性的屬性值為一時(shí),所述比特位在所述GRE報(bào)文頭中所占的比特位位數(shù)。本實(shí)施中以解析第一比特位為例來(lái)說(shuō)明所述偏移量。例如,在第一比特位的屬性值為一時(shí),需進(jìn)行校驗(yàn)和的驗(yàn)證即校驗(yàn)和(可選)部分以及偏離(可選)部分共32個(gè)比特位出現(xiàn)在GRE報(bào)文頭中同時(shí)在進(jìn)行GRE報(bào)文頭長(zhǎng)度計(jì)算時(shí),需加上所述32個(gè)比特位。
[0052]通過(guò)對(duì)整個(gè)GRE報(bào)文頭的比特位進(jìn)行解析之后,獲取各個(gè)比特位屬性值為一時(shí)產(chǎn)生的各個(gè)偏移量,根據(jù)所述各個(gè)偏移量計(jì)算出整個(gè)GER報(bào)文頭的長(zhǎng)度,根據(jù)GER報(bào)文頭的長(zhǎng)度能更準(zhǔn)確的解封出接收的GRE報(bào)文中的原始報(bào)文。
[0053]參照?qǐng)D4所示,為本發(fā)明GRE報(bào)文的封裝裝置實(shí)施例結(jié)構(gòu)示意圖。
[0054]本實(shí)例所提供的GRE報(bào)文的封裝裝置I,包括:
[0055]設(shè)置模塊10,用于在對(duì)原始報(bào)文進(jìn)行GRE報(bào)文封裝時(shí),按照預(yù)設(shè)的封裝規(guī)則對(duì)GRE報(bào)文頭的第一至第十六比特位進(jìn)行屬性設(shè)置;
[0056]所述原始報(bào)文是指需要封裝和路由的數(shù)據(jù)報(bào)文。本實(shí)施例中在對(duì)所述原始報(bào)文進(jìn)行GRE報(bào)文頭封裝時(shí),設(shè)置模塊10對(duì)所述GRE報(bào)文頭的比特位按照預(yù)設(shè)的封裝規(guī)則對(duì)GRE報(bào)文頭的第一至第十六比特位進(jìn)行屬性設(shè)置。GRE隧道在封裝GRE報(bào)文時(shí)都遵守著相應(yīng)的封裝協(xié)議以此作為封裝的標(biāo)準(zhǔn)。比如常見(jiàn)的協(xié)議如,RFC2784協(xié)議、RFC2890協(xié)議及RFC1701
協(xié)議等等。
[0057]具體地,設(shè)置模塊10根據(jù)RFC2784協(xié)議將GRE報(bào)文頭的第一比特位設(shè)置為(Checksum校驗(yàn)和)屬性,該屬性的屬性值用戶可根據(jù)自己的需求選擇填零或一,在選擇填零時(shí)所述校驗(yàn)和無(wú)效即在解封裝時(shí)無(wú)需進(jìn)行校驗(yàn)和的檢查;在選擇填一時(shí)所述校驗(yàn)和有效即在解封裝時(shí)需進(jìn)行校驗(yàn)和的檢查。設(shè)置模塊10在將GRE報(bào)文頭的第二比特位設(shè)置為(ReservedO預(yù)留)屬性時(shí),將該屬性值設(shè)置為零。
[0058]進(jìn)一步地,設(shè)置模塊10根據(jù)RFC2890協(xié)議將GRE報(bào)文頭的第三比特位設(shè)置為(KeyPresent密鑰)屬性,該屬性的屬性值用戶可以選擇性設(shè)置。在該屬性的屬性值選擇填零時(shí)所述密鑰無(wú)效即在解封裝時(shí)無(wú)需進(jìn)行關(guān)鍵字認(rèn)證;在屬性值選擇填一時(shí)所述密鑰有效即在解封裝時(shí)需進(jìn)行關(guān)鍵字認(rèn)證,只有通過(guò)關(guān)鍵字認(rèn)證之后才能對(duì)GRE報(bào)文進(jìn)行解封裝。設(shè)置模塊10在將GRE報(bào)文頭的第四比特位設(shè)置為(Sequence Number Present序列號(hào))屬性時(shí),該屬性的屬性值用戶也可以選擇性的設(shè)置為零或一。在第四比特位屬性的屬性值為一時(shí),在解封裝時(shí)需進(jìn)行GRE報(bào)文序列號(hào)的檢查,只有通過(guò)序列號(hào)的檢查之后才能對(duì)GRE報(bào)文進(jìn)行解封裝;在第四比特位屬性的屬性值為零時(shí),在解封裝時(shí)無(wú)需進(jìn)行GRE報(bào)文序列號(hào)的檢查。
[0059]進(jìn)一步地,設(shè)置模塊10根據(jù)RFC2784協(xié)議將GRE報(bào)文頭的第五至第十三比特位設(shè)置為(ReservedO預(yù)留)屬性,并設(shè)置該屬性值為零。設(shè)置模塊10在將GRE報(bào)文頭的第十四至第十六比特位設(shè)置為(Vers1n版本號(hào))屬性時(shí)設(shè)置該屬性值為零。
[0060]封裝模塊20,用于將屬性設(shè)置后的所述GRE報(bào)文頭與所述原始報(bào)文進(jìn)行GRE報(bào)文封裝。
[0061]本實(shí)例中設(shè)置模塊10按照預(yù)設(shè)的封裝規(guī)則對(duì)GRE報(bào)文頭的第一位至第十六位比特位進(jìn)行屬性設(shè)置,封裝模塊20將屬性設(shè)置后的所述GRE報(bào)文頭作為所述GRE報(bào)文的封裝格式并與所述原始報(bào)文進(jìn)行GRE報(bào)文封裝。
[0062]本發(fā)明通過(guò)預(yù)設(shè)的封裝規(guī)則對(duì)遵守不同協(xié)議的GRE報(bào)文頭進(jìn)行屬性設(shè)置并進(jìn)行封裝,保證了遵守不同協(xié)議的網(wǎng)絡(luò)設(shè)備之間的互聯(lián)互通。
[0063]參照?qǐng)D5所示,為本發(fā)明GRE報(bào)文的解封裝裝置第一實(shí)施例結(jié)構(gòu)示意圖。
[0064]本實(shí)例所提供的GRE報(bào)文的解封裝裝置2,包括:
[0065]解析模塊30,用于在接收到GRE報(bào)文時(shí),按照預(yù)設(shè)的解封裝規(guī)則對(duì)接收的GRE報(bào)文的報(bào)文頭的預(yù)先確定的比特位進(jìn)行解封裝解析;
[0066]所述GRE報(bào)文包括:原始數(shù)據(jù)報(bào)文及GRE報(bào)文頭。解析模塊30在解析時(shí)按照預(yù)設(shè)的解封裝規(guī)則對(duì)接收的GRE報(bào)文的報(bào)文頭的第一至第十六比特位進(jìn)行解封裝解析。
[0067]具體地,解析模塊30在解析第一比特位時(shí),將GRE報(bào)文頭的第一比特位作為(Checksum校驗(yàn)和)屬性,在該屬性的屬性值為零時(shí),直接解封裝;在該屬性的屬性值為一時(shí),對(duì)接收到的GRE報(bào)文計(jì)算校驗(yàn)和,并將計(jì)算得出的校驗(yàn)和與所述GRE報(bào)文中的原始校驗(yàn)和進(jìn)行校驗(yàn)和的檢查,如果計(jì)算得出的校驗(yàn)和與所述GRE報(bào)文中的原始校驗(yàn)和完全一致時(shí),則表明通過(guò)校驗(yàn)和的檢查對(duì)所述GRE報(bào)文進(jìn)行解封裝;如果計(jì)算得出的校驗(yàn)和與所述GRE報(bào)文中的原始校驗(yàn)和不一致時(shí),則表明沒(méi)有通過(guò)校驗(yàn)和的檢查需丟棄所述GRE報(bào)文。在解析第二比特位時(shí),解析模塊30將GRE報(bào)文頭的第二比特位作為(ReservedO預(yù)留)屬性,該屬性的屬性值是零時(shí)直接解封裝。其中,如果是RFC2784協(xié)議的路由器兼容RFC1701協(xié)議的路由器并由RFC1701協(xié)議的路由器對(duì)所述第二比特位進(jìn)行解析,解析模塊30在所述比特位的屬性值為零時(shí),直接進(jìn)行解封裝;在所述比特位的屬性值為I時(shí),直接進(jìn)行解封裝同時(shí)計(jì)算單元32在計(jì)算GRE報(bào)文頭的長(zhǎng)度時(shí)需加上所述比特位產(chǎn)生的偏移量。
[0068]進(jìn)一步地,解析模塊30在解析第三比特位時(shí),將GRE報(bào)文頭的第三比特位作為(Key Present密鑰)屬性,在該屬性的屬性值是零時(shí)直接進(jìn)行GRE報(bào)文解封裝;在該屬性的屬性值是一時(shí),進(jìn)行關(guān)鍵字校驗(yàn)只有在路由器的接受方和路由器的發(fā)送方兩端識(shí)別的關(guān)鍵字完全一致時(shí)才能通過(guò)驗(yàn)證并對(duì)所述GRE報(bào)文進(jìn)行解封裝,否則將所述GRE報(bào)文丟棄。解析模塊30在對(duì)GRE報(bào)文頭的第四比特位作為(Sequence Number Present序列號(hào))屬性進(jìn)行解析時(shí),在該屬性的屬性值是零時(shí)直接解封裝;在該屬性的屬性值是一時(shí)需進(jìn)行序列號(hào)的檢查,只有在路由器的接受方和路由器的發(fā)送方兩端在所述序列號(hào)完全一致時(shí)才進(jìn)行GRE報(bào)文解封裝,路由器的接受方和路由器的發(fā)送方兩端在所述序列號(hào)不一致時(shí)將所述GRE報(bào)文丟棄。解析模塊30對(duì)GRE報(bào)文頭的第五至第十三比特位作(ReservedO預(yù)留)屬性時(shí),該屬性的屬性值為零或者非零時(shí)進(jìn)行忽略直接解封裝;解析模塊30對(duì)GRE報(bào)文頭的第十四至第十六比特位作為(Vers1n版本號(hào))屬性時(shí),在該屬性的屬性值為零時(shí)直接解封裝;在GRE報(bào)文頭的第十四至第十六比特位任一位的屬性值不為零時(shí),丟棄該GRE報(bào)文。
[0069]解封裝模塊40,用于根據(jù)解析結(jié)果將接收的GRE報(bào)文進(jìn)行解封裝,以解封出接收的GRE報(bào)文中的原始報(bào)文。
[0070]在對(duì)接收到的GRE報(bào)文頭進(jìn)行解析后,解封裝模塊40根據(jù)解析結(jié)果將接收的GRE報(bào)文進(jìn)行解封裝,以解封出接收的GRE報(bào)文中的原始報(bào)文。本實(shí)施例中根據(jù)所述GRE報(bào)文頭的長(zhǎng)度對(duì)接收的GRE報(bào)文進(jìn)行解封裝。
[0071]本發(fā)明通過(guò)預(yù)設(shè)的對(duì)應(yīng)解封裝規(guī)則對(duì)接收的GRE報(bào)文的報(bào)文頭進(jìn)行解封裝解析以解封出接收的G RE報(bào)文中的原始報(bào)文,保證了遵守不同協(xié)議的網(wǎng)絡(luò)設(shè)備之間的互聯(lián)互通。
[0072]參照?qǐng)D6所示,為本發(fā)明GRE報(bào)文的解封裝裝置中解析模塊實(shí)施例結(jié)構(gòu)示意圖。
[0073]基于上述實(shí)施例提出本發(fā)明GRE報(bào)文的解封裝裝置中解析模塊實(shí)施例,所述解析模塊30包括:
[0074]獲取單元31,用于在對(duì)接收的GRE報(bào)文的報(bào)文頭的預(yù)先確定的比特位進(jìn)行解封裝解析時(shí),獲取預(yù)先確定的比特位對(duì)應(yīng)的偏移量;
[0075]計(jì)算單元32,用于根據(jù)所述偏移量計(jì)算所述GRE報(bào)文頭的長(zhǎng)度。
[0076]其中,所述偏移量是指所述比特位屬性的屬性值為一時(shí),所述比特位在所述GRE報(bào)文頭中所占的比特位位數(shù)。本實(shí)施中以解析第一比特位為例來(lái)說(shuō)明所述偏移量。例如,在第一比特位的屬性值為一時(shí),需進(jìn)行校驗(yàn)和的驗(yàn)證即校驗(yàn)和(可選)部分以及偏離(可選)部分共32個(gè)比特位出現(xiàn)在GRE報(bào)文頭中同時(shí)在進(jìn)行GRE報(bào)文頭長(zhǎng)度計(jì)算時(shí),需加上所述32個(gè)比特位。
[0077]通過(guò)對(duì)整個(gè)GRE報(bào)文頭的比特位進(jìn)行解析之后,獲取單元31獲取各個(gè)比特位屬性值為一時(shí)產(chǎn)生的各個(gè)偏移量,計(jì)算單元32根據(jù)所述各個(gè)偏移量計(jì)算出整個(gè)GER報(bào)文頭的長(zhǎng)度,根據(jù)GER報(bào)文頭的長(zhǎng)度能更準(zhǔn)確的解封出接收的GRE報(bào)文中的原始報(bào)文。
[0078]以上所述僅為本發(fā)明的優(yōu)選實(shí)施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說(shuō)明書及附圖內(nèi)容所作的等效結(jié)構(gòu)變換,或直接或間接運(yùn)用在其他相關(guān)的【技術(shù)領(lǐng)域】,均同理包括在本發(fā)明的專利保護(hù)范圍內(nèi)。
【權(quán)利要求】
1.一種GRE報(bào)文的封裝方法,其特征在于,該方法包括: 在對(duì)原始報(bào)文進(jìn)行GRE報(bào)文封裝時(shí),按照預(yù)設(shè)的封裝規(guī)則對(duì)GRE報(bào)文頭的預(yù)先確定的比特位進(jìn)行屬性設(shè)置; 將屬性設(shè)置后的所述GRE報(bào)文頭與所述原始報(bào)文進(jìn)行GRE報(bào)文封裝。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述預(yù)先確定的比特位包括GRE報(bào)文頭的第一位至第十六位比特位,所述預(yù)設(shè)的封裝規(guī)則包括: 將GRE報(bào)文頭的第一比特位填零或一; 將GRE報(bào)文頭的第二比特位填零; 將GRE報(bào)文頭的第三比特位填零或一; 將GRE報(bào)文頭的第四比特位填零或一; 將GRE報(bào)文頭的第五至第十三比特位填零; 將GRE報(bào)文頭的第十四至第十六比特位填零。
3.—種GRE報(bào)文的解封裝方法,其特征在于,該方法包括: 在接收到GRE報(bào)文時(shí),按照預(yù)設(shè)的解封裝規(guī)則對(duì)接收的GRE報(bào)文的報(bào)文頭的預(yù)先確定的比特位進(jìn)行解封裝解析; 根據(jù)解析結(jié)果將接收的GRE報(bào)文進(jìn)行解封裝,以解封出接收的GRE報(bào)文中的原始報(bào)文。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述預(yù)先確定的比特位包括GRE報(bào)文頭的第一位至第十六位比特位,所述預(yù)設(shè)的解封裝規(guī)則包括: 在GRE報(bào)文頭的第一比特位為零時(shí),直接進(jìn)行解封裝; 在GRE報(bào)文頭的第一比特位為一時(shí),進(jìn)行校驗(yàn)和的檢查,在通過(guò)校驗(yàn)和檢查時(shí)直接進(jìn)行解封裝,在未通過(guò)校驗(yàn)和檢查時(shí)丟棄該GRE報(bào)文; 在GRE報(bào)文頭的第二比特位為零時(shí),直接解封裝; 在GRE報(bào)文頭的第三比特位為零時(shí),直接解封裝; 在GRE報(bào)文頭的第三比特位為一時(shí),進(jìn)行關(guān)鍵字校驗(yàn)并根據(jù)校驗(yàn)的結(jié)果判斷是否直接進(jìn)行解封裝; 在GRE報(bào)文頭的第四比特位為零時(shí),直接解封裝; 在GRE報(bào)文頭的第四比特位為一時(shí),進(jìn)行序列號(hào)的檢查根據(jù)檢查的結(jié)果判斷是否直接進(jìn)行解封裝; 對(duì)GRE報(bào)文頭的第五至第十三比特位進(jìn)行忽略,直接解封裝; 在GRE報(bào)文頭的第十四至第十六比特位為零時(shí),直接進(jìn)行解封裝; 在GRE報(bào)文頭的第十四至第十六比特位任一位不為零時(shí),丟棄該GRE報(bào)文。
5.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述根據(jù)解析結(jié)果將接收的GRE報(bào)文進(jìn)行解封裝,以解封出接收的GRE報(bào)文中的原始報(bào)文的步驟之前還包括: 在對(duì)接收的GRE報(bào)文的報(bào)文頭的預(yù)先確定的比特位進(jìn)行解封裝解析時(shí),獲取預(yù)先確定的比特位對(duì)應(yīng)的偏移量; 根據(jù)所述偏移量計(jì)算所述GRE報(bào)文頭的長(zhǎng)度。
6.一種GRE報(bào)文的封裝裝置,其特征在于,包括: 設(shè)置模塊,用于在對(duì)原始報(bào)文進(jìn)行GRE報(bào)文封裝時(shí),按照預(yù)設(shè)的封裝規(guī)則對(duì)GRE報(bào)文頭的預(yù)先確定的比特位進(jìn)行屬性設(shè)置; 封裝模塊,用于將屬性設(shè)置后的所述GRE報(bào)文頭與所述原始報(bào)文進(jìn)行GRE報(bào)文封裝。
7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述預(yù)先確定的比特位包括GRE報(bào)文頭的第一位至第十六位比特位,所述預(yù)設(shè)的封裝規(guī)則包括: 將GRE報(bào)文頭的第一比特位填零或一; 將GRE報(bào)文頭的第二比特位填零; 將GRE報(bào)文頭的第三比特位填零或一; 將GRE報(bào)文頭的第四比特位填零或一; 將GRE報(bào)文頭的第五至第十三比特位填零; 將GRE報(bào)文頭的第十四至第十六比特位填零。
8.—種GRE報(bào)文的解封裝裝置,其特征在于,包括: 解析模塊,用于在接收到GRE報(bào)文時(shí),按照預(yù)設(shè)的解封裝規(guī)則對(duì)接收的GRE報(bào)文的報(bào)文頭的預(yù)先確定的比特位進(jìn)行解封裝解析; 解封裝模塊,用于根據(jù)解析結(jié)果將接收的GRE報(bào)文進(jìn)行解封裝,以解封出接收的GRE報(bào)文中的原始報(bào)文。
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述預(yù)先確定的比特位包括GRE報(bào)文頭的第一位至第十六位比特位,所述預(yù)設(shè)的解封裝規(guī)則包括: 在GRE報(bào)文頭的第一比特位為零時(shí),直接進(jìn)行解封裝; 在GRE報(bào)文頭的第一比特位為一時(shí),進(jìn)行校驗(yàn)和的檢查,在通過(guò)校驗(yàn)和檢查時(shí)直接進(jìn)行解封裝,在未通過(guò)校驗(yàn)和檢查時(shí)丟棄該GRE報(bào)文; 在GRE報(bào)文頭的第二比特位為零時(shí),直接解封裝; 在GRE報(bào)文頭的第三比特位為零時(shí),直接解封裝; 在GRE報(bào)文頭的第三比特位為一時(shí),進(jìn)行關(guān)鍵字校驗(yàn)并根據(jù)校驗(yàn)的結(jié)果判斷是否直接進(jìn)行解封裝; 在GRE報(bào)文頭的第四比特位為零時(shí),直接解封裝; 在GRE報(bào)文頭的第四比特位為一時(shí),進(jìn)行序列號(hào)的檢查根據(jù)檢查的結(jié)果判斷是否直接進(jìn)行解封裝; 對(duì)GRE報(bào)文頭的第五至第十三比特位進(jìn)行忽略,直接解封裝; 在GRE報(bào)文頭的第十四至第十六比特位為零時(shí),直接進(jìn)行解封裝; 在GRE報(bào)文頭的第十四至第十六比特位任一位不為零時(shí),丟棄該GRE報(bào)文。
10.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述解析模塊還包括: 獲取單元,用于在對(duì)接收的GRE報(bào)文的報(bào)文頭的預(yù)先確定的比特位進(jìn)行解封裝解析時(shí),獲取預(yù)先確定的比特位對(duì)應(yīng)的偏移量; 計(jì)算單元,用于根據(jù)所述偏移量計(jì)算所述GRE報(bào)文頭的長(zhǎng)度。
【文檔編號(hào)】H04L12/951GK104348759SQ201310312219
【公開日】2015年2月11日 申請(qǐng)日期:2013年7月23日 優(yōu)先權(quán)日:2013年7月23日
【發(fā)明者】黎英 申請(qǐng)人:中興通訊股份有限公司