專(zhuān)利名稱(chēng):一種基于gre隧道的數(shù)據(jù)傳輸方法、設(shè)備和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信技術(shù)領(lǐng)域,特別是涉及一種基于GRE隧道的數(shù)據(jù)傳輸方法、設(shè)備 和系統(tǒng)。
背景技術(shù):
GRE (Generic Routing Encapsulation,通用路由封裝)協(xié)議是一種封裝協(xié)議,GRE 提供了將一種網(wǎng)絡(luò)層協(xié)議(例如,IP,IPX,AppleTalk等)的數(shù)據(jù)報(bào)文封裝在另一種協(xié)議的 報(bào)文中的機(jī)制,并使封裝后的報(bào)文能夠在另一個(gè)網(wǎng)絡(luò)層協(xié)議(例如,IP)中進(jìn)行傳輸。其中, 報(bào)文進(jìn)行傳輸?shù)耐ǖ婪Q(chēng)為T(mén)urmel (隧道)。具體的,Tunnel是一個(gè)虛擬的點(diǎn)對(duì)點(diǎn)連接,提供了一條能夠使封裝的數(shù)據(jù)報(bào)文進(jìn) 行傳輸?shù)耐?,其中,在使用Turmel進(jìn)行報(bào)文傳輸時(shí),需要在Turmel的兩端分別對(duì)數(shù)據(jù)報(bào) 文進(jìn)行封裝及解封裝。如圖1所示的Net (Network,網(wǎng)絡(luò))1和Net2通過(guò)GRE隧道互聯(lián)的示意圖,GRE采 用了 Turmel技術(shù),是VPN (Virtual Private Network,虛擬專(zhuān)用網(wǎng)絡(luò))的第三層隧道協(xié)議, 其中,GRE隧道不能配置二層信息,但可以配置IP地址,GRE可以利用為隧道指定的實(shí)際物 理接口完成轉(zhuǎn)發(fā)。在圖1中,所有發(fā)送到Net2的原始報(bào)文,將首先被發(fā)送到隧道源端,隧道源端將 根據(jù)報(bào)文頭中的目的地址域來(lái)確定如何路由該原始報(bào)文。其中,該原始報(bào)文的目的地址 為Net2的網(wǎng)段地址,需要經(jīng)過(guò)Turmel接口,此時(shí),設(shè)備需要將該原始報(bào)文發(fā)送給相應(yīng)的 Tunnel接口。另外,原始報(bào)文需要在隧道源端進(jìn)行GRE封裝,填寫(xiě)隧道創(chuàng)建時(shí)確定的隧道源 地址和目的地址,然后通過(guò)公共IP網(wǎng)絡(luò)轉(zhuǎn)發(fā)到遠(yuǎn)端的VPN網(wǎng)絡(luò)。具體的,在對(duì)原始報(bào)文進(jìn)行GRE封裝時(shí),其封裝過(guò)程如圖2所示的示意圖,在圖2 中,原始數(shù)據(jù)包可以是IP報(bào)文,也可以是其它的協(xié)議報(bào)文,例如,IPX報(bào)文、PPP(Point to Point Protocol,點(diǎn)對(duì)點(diǎn)協(xié)議)、MPLS (Multi-ProtocolLabel Switching,多協(xié)議標(biāo)簽交換)寸。當(dāng)隧道遠(yuǎn)端接收到IP報(bào)文后,將檢查目的地址和外層IP報(bào)文頭部中的協(xié)議號(hào)。如 果發(fā)現(xiàn)是本地路由器,外層協(xié)議號(hào)是47 (GRE協(xié)議號(hào))時(shí),則剝掉該報(bào)文的IP報(bào)頭,并交給 GRE協(xié)議進(jìn)行相應(yīng)處理(例如,進(jìn)行檢驗(yàn)密鑰、檢查校驗(yàn)和及報(bào)文的序列號(hào)等處理)。進(jìn)一 步的,GRE協(xié)議完成解封裝處理后得到原始報(bào)文,并根據(jù)原始報(bào)文進(jìn)行后續(xù)的轉(zhuǎn)發(fā)處理。GRE報(bào)文頭以RFC1701定義的GRE頭部格式為基礎(chǔ),如表1所示的GRE報(bào)文頭部格 式。表 1 在表1中,C、R、K、S、s為GRE報(bào)文頭部的最前5位,是一些標(biāo)志位,其含義如表2所示。表2 另外,在表1中,其他字段含義如下Recur :bits 5-7, Recur域是記錄允許的封裝次數(shù)的計(jì)數(shù)器。其中,GRE提供了一 種特定的機(jī)制來(lái)防止遞歸封裝,如果路由器想對(duì)經(jīng)過(guò)GRE封裝的數(shù)據(jù)報(bào)文作進(jìn)一步封裝,應(yīng)在封裝前檢查這個(gè)域。如果Recur域?yàn)榉?,則數(shù)據(jù)報(bào)文還可以進(jìn)行封裝,新的GRE報(bào)頭 中的Recur域取值將減1 ;否則,如果Recur域的值已經(jīng)是0 了,則該數(shù)據(jù)報(bào)文不可以再進(jìn) 行封裝。Flags :bits 8-12,暫沒(méi)有定義,保留。Ver :bits 13-15,版本號(hào)。
Protocol Type :2byte, Protocol Type 指出 GRE 報(bào)文凈荷的協(xié)議類(lèi)型,IP 是 0x0800, Novell IPX 是0x8137。Offset :2byte, Offset域指出Routing域到凈荷的字節(jié)偏移。Checksum :2byte,Checksum 包括 GRE 頭部和凈荷的 IP 校驗(yàn)和,當(dāng) Checksum Present位為1時(shí),Checksum域有效。Key :4byte, Key域用來(lái)標(biāo)識(shí)隧道內(nèi)部單個(gè)的業(yè)務(wù)流,屬于同一個(gè)業(yè)務(wù)流的數(shù)據(jù)報(bào) 文使用同一個(gè)Key值來(lái)封裝,隧道的拆封點(diǎn)根據(jù)Key域的值識(shí)別屬于某個(gè)業(yè)務(wù)流的數(shù)據(jù)報(bào) 文,當(dāng)Key Present位為1時(shí),KEY域有效。Sequence Number :4byte,Sequence Number 域用來(lái)維持 GRE 隧道內(nèi)數(shù)據(jù)報(bào)文的順 序,當(dāng) Sequence Number Present 位為 1 時(shí),Sequence Number 域有效。Routing :4byte, Routing白勺,ξ^ Routing Present 位為 1 B^, Routing _有效。Payload 凈荷,GRE所封裝的協(xié)議報(bào)文。可以看出,通過(guò)GRE隧道進(jìn)行傳輸?shù)乃袌?bào)文均需要在隧道頭部進(jìn)行加封裝,其 中,需要傳輸?shù)臄?shù)據(jù)報(bào)文為凈荷,加封裝后新添加的IP頭至少為20個(gè)字節(jié),GRE頭為8至 16個(gè)字節(jié),因此,GRE隧道每傳輸一份數(shù)據(jù)報(bào)文,附加的報(bào)文頭至少需要48字節(jié)(2個(gè)IP頭 和1個(gè)GRE頭對(duì)應(yīng)的字節(jié)數(shù))。由于現(xiàn)有的GRE方式傳輸數(shù)據(jù)報(bào)文需要攜帶兩個(gè)IP頭和一個(gè)GRE頭,GRE隧道的 傳輸效率較低,設(shè)備隧道接口的MTU (Maximum TransmissionUnit,最大傳輸單元)越小時(shí), 傳輸效率就越低。在設(shè)備發(fā)送數(shù)據(jù)報(bào)文較大的情況下,如果加封裝后的數(shù)據(jù)報(bào)文超過(guò)設(shè)備 接口的MTU閾值,則該數(shù)據(jù)報(bào)文無(wú)法正常傳輸。此時(shí),如果設(shè)備不支持分片,將導(dǎo)致數(shù)據(jù)報(bào)文的傳輸中斷;如果設(shè)備支持分片,GRE 隧道將傳輸大量的數(shù)據(jù)碎片報(bào)文,繼而導(dǎo)致傳輸效率將進(jìn)一步下降,隧道尾部需要對(duì)數(shù)據(jù) 報(bào)文進(jìn)行重組合后解封裝,將導(dǎo)致隧道傳輸數(shù)據(jù)亂序、抖動(dòng)等網(wǎng)絡(luò)問(wèn)題。
發(fā)明內(nèi)容
本發(fā)明提供一種基于GRE隧道的數(shù)據(jù)傳輸方法、設(shè)備和系統(tǒng),以減少加封裝后所 增加的報(bào)文字節(jié),提高GRE隧道的數(shù)據(jù)傳輸效率。為了達(dá)到上述目的,本發(fā)明提出了一種基于通用路由封裝GRE隧道的數(shù)據(jù)傳輸方 法,應(yīng)用于包括發(fā)送端和接收端的系統(tǒng)中,所述發(fā)送端和所述接收端為GRE隧道的兩端,所 述發(fā)送端向所述接收端發(fā)送第一數(shù)據(jù)報(bào)文,所述發(fā)送端和所述接收端中存儲(chǔ)了第一數(shù)據(jù)報(bào) 文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)且其狀態(tài)為Forwarding狀態(tài),所述方法包括以下步驟根據(jù)所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng),所述發(fā)送端刪除所述第一數(shù)據(jù) 報(bào)文的自帶IP頭并封裝成帶有流標(biāo)簽的第二數(shù)據(jù)報(bào)文,然后將所述第二數(shù)據(jù)報(bào)文發(fā)送給所述接收端;所述接收端收到所述第二數(shù)據(jù)報(bào)文,根據(jù)所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā) 表項(xiàng),對(duì)所述第二數(shù)據(jù)報(bào)文解封裝并重新封裝成所述第一數(shù)據(jù)報(bào)文后進(jìn)行轉(zhuǎn)發(fā)。
所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)的內(nèi)容包括GRE隧道的隧道標(biāo)識(shí)、第 一數(shù)據(jù)報(bào)文的源IP地址和目的IP地址、流標(biāo)簽、表項(xiàng)狀態(tài);所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)的創(chuàng)建包括以下步驟所述發(fā)送端為所述第一數(shù)據(jù)報(bào)文分配流標(biāo)簽,根據(jù)所述流標(biāo)簽創(chuàng)建所述第一數(shù)據(jù) 報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng);并將所述流標(biāo)簽發(fā)送給所述接收端,由所述接收端根據(jù)所 述流標(biāo)簽,創(chuàng)建所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)。將所述流標(biāo)簽發(fā)送給所述接收端,由所述接收端根據(jù)所述流標(biāo)簽,創(chuàng)建所述第一 數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng),具體包括所述發(fā)送端判斷所述第一數(shù)據(jù)報(bào)文加上新增IP頭和GRE頭的長(zhǎng)度是否超過(guò)預(yù)設(shè) MTU閾值;如果是,所述發(fā)送端向所述接收端發(fā)送凈荷為空的數(shù)據(jù)報(bào)文,所述凈荷為空的數(shù) 據(jù)報(bào)文中攜帶所述第一數(shù)據(jù)報(bào)文的源IP地址和目的IP地址、所述流標(biāo)簽;如果否,所述發(fā) 送端向所述接收端發(fā)送凈荷不為空的數(shù)據(jù)報(bào)文,所述凈荷不為空的數(shù)據(jù)報(bào)文中攜帶所述流 標(biāo)簽和所述第一數(shù)據(jù)報(bào)文;所述接收端接收所述凈荷為空的數(shù)據(jù)報(bào)文或者所述凈荷不為空的數(shù)據(jù)報(bào)文,并根 據(jù)接收到報(bào)文中的源IP地址、目的IP地址和流標(biāo)簽創(chuàng)建所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo) 簽轉(zhuǎn)發(fā)表項(xiàng),將所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)設(shè)置為Forwarding狀態(tài),并向 所述發(fā)送端返回創(chuàng)建成功消息,由所述發(fā)送端根據(jù)所述創(chuàng)建成功消息將自身記錄的所述第 一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)設(shè)置為Forwarding狀態(tài)。所述方法還包括在所述發(fā)送端和所述接收端創(chuàng)建所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)之 后,為所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)設(shè)置?;疃〞r(shí)器,所述發(fā)送端根據(jù)所述 ?;疃〞r(shí)器定時(shí)向所述接收端發(fā)送負(fù)荷為空的IP報(bào)文,所述負(fù)荷為空的IP報(bào)文中攜帶流 標(biāo)簽,由所述接收端根據(jù)所述負(fù)荷為空的IP報(bào)文向所述發(fā)送端回應(yīng)成功報(bào)文;如果預(yù)設(shè)第 一時(shí)間內(nèi)所述發(fā)送端無(wú)法接收到所述成功報(bào)文,所述發(fā)送端將所述第一數(shù)據(jù)報(bào)文GRE隧道 流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)設(shè)置為Init狀態(tài),并向所述接收端重新發(fā)起流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)同步過(guò)程;且所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)設(shè)置老化定時(shí)器,如果預(yù)設(shè)第二時(shí)間 內(nèi)沒(méi)有接收到所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)對(duì)應(yīng)的第一數(shù)據(jù)報(bào)文,所述發(fā)送 端將所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)設(shè)置為Stale狀態(tài),并向所述接收端發(fā)送 流標(biāo)簽回收消息,所述流標(biāo)簽回收消息中攜帶流標(biāo)簽和流標(biāo)簽轉(zhuǎn)發(fā)結(jié)束標(biāo)記;當(dāng)所述接收 端接收到所述流標(biāo)簽回收消息,則根據(jù)所述流標(biāo)簽回收消息中的流標(biāo)簽清空對(duì)應(yīng)的第一數(shù) 據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng),并向所述發(fā)送端回應(yīng)確認(rèn)消息;當(dāng)所述發(fā)送端接收到所 述確認(rèn)消息后,清空對(duì)應(yīng)的第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)。所述發(fā)送端刪除所述第一數(shù)據(jù)報(bào)文的自帶IP頭并封裝成帶有流標(biāo)簽的第二數(shù)據(jù) 報(bào)文,具體包括所述發(fā)送端刪除所述第一數(shù)據(jù)報(bào)文自帶IP頭,在所述第一數(shù)據(jù)報(bào)文中新增IP頭和GRE頭,并封裝成所述第二數(shù)據(jù)報(bào)文;其中,所述GRE頭中攜帶了所述第一數(shù)據(jù)報(bào)文GRE 隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)中的流標(biāo)簽,所述新增IP頭的源IP地址和目的IP地址為GRE隧道接 口的源IP地址和目的IP地址,且所述新增IP頭中攜帶了從所述第一數(shù)據(jù)報(bào)文自帶IP頭 中復(fù)制的域信息;根據(jù)所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng),對(duì)所述第二數(shù)據(jù)報(bào)文解封裝并 重新封裝成所述第一數(shù)據(jù)報(bào)文后進(jìn)行轉(zhuǎn)發(fā),具體包括所述接收端將所述第二數(shù)據(jù)報(bào)文解封裝去掉所述新增IP頭和GRE頭,并根據(jù)所述 GRE頭中攜帶的流標(biāo)簽查找所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng),并根據(jù)查找到的 所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)中第一數(shù)據(jù)報(bào)文的源IP地址和目的IP地址、 以及所述新增IP頭中攜帶的從所述第一數(shù)據(jù)報(bào)文自帶IP頭中復(fù)制的域信息,將解封裝后 的第二數(shù)據(jù)報(bào)文重新封裝成所述第一數(shù)據(jù)報(bào)文后進(jìn)行轉(zhuǎn)發(fā)。所述發(fā)送端刪除所述第一數(shù)據(jù)報(bào)文的自帶IP頭并封裝成帶有流標(biāo)簽的第二數(shù)據(jù) 報(bào)文,具體包括所述發(fā)送端刪除所述第一數(shù)據(jù)報(bào)文自帶IP頭并封裝成帶有流標(biāo)簽的第二數(shù)據(jù)報(bào) 文;其中,所述新增IP頭的源IP地址和目的IP地址為GRE隧道接口的源IP地址和目的IP 地址,TOS域字段攜帶了所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)中的流標(biāo)簽,協(xié)議字段 為GRE協(xié)議類(lèi)型,且所述新增IP頭中攜帶了從所述第一數(shù)據(jù)報(bào)文自帶IP頭中復(fù)制的域信 息;根據(jù)所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng),對(duì)所述第二數(shù)據(jù)報(bào)文解封裝并 重新封裝成所述第一數(shù)據(jù)報(bào)文后進(jìn)行轉(zhuǎn)發(fā),具體包括當(dāng)收到所述第二數(shù)據(jù)報(bào)文后,如果所述第二數(shù)據(jù)報(bào)文的TOS域字段中攜帶了流標(biāo) 簽,則所述接收端將所述第二數(shù)據(jù)報(bào)文解封裝去掉所述新增IP頭,并根據(jù)所述TOS域字段 中攜帶的流標(biāo)簽查找所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng),并根據(jù)查找到的所述第 一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)中第一數(shù)據(jù)報(bào)文的源IP地址和目的IP地址、以及所 述新增IP頭中攜帶的從所述第一數(shù)據(jù)報(bào)文自帶IP頭中復(fù)制的域信息,將解封裝后的第二 數(shù)據(jù)報(bào)文重新封裝成所述第一數(shù)據(jù)報(bào)文后進(jìn)行轉(zhuǎn)發(fā)。一種基于GRE隧道的發(fā)送端,應(yīng)用于包括所述發(fā)送端和接收端的系統(tǒng)中,所述發(fā) 送端和所述接收端為GRE隧道的兩端,所述發(fā)送端和所述接收端中存儲(chǔ)了第一數(shù)據(jù)報(bào)文 GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)且其狀態(tài)為Forwarding狀態(tài),所述發(fā)送端包括存儲(chǔ)模塊,與生成模塊連接,用于存儲(chǔ)第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng);生成模塊,分別與存儲(chǔ)模塊和第一發(fā)送模塊連接,用于當(dāng)接收到需要通過(guò)GRE隧 道進(jìn)行轉(zhuǎn)發(fā)的第一數(shù)據(jù)報(bào)文后,根據(jù)所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)列表,刪除所 述第一數(shù)據(jù)報(bào)文的自帶IP頭并封裝成帶有流標(biāo)簽的第二數(shù)據(jù)報(bào)文;第一發(fā)送模塊,與所述生成模塊連接,用于將所述第二數(shù)據(jù)報(bào)文發(fā)送給所述接收 端。所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)中的內(nèi)容包括GRE隧道的隧道標(biāo)識(shí)、 第一數(shù)據(jù)報(bào)文的源IP地址和目的IP地址、流標(biāo)簽、表項(xiàng)狀態(tài);所述發(fā)送端還包括處理模塊,與所述生成模塊連接,用于為所述第一數(shù)據(jù)報(bào)文分配流標(biāo)簽,并根據(jù)所述流標(biāo)簽為所述第一數(shù)據(jù)報(bào)文創(chuàng)建第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng);
第二發(fā)送模塊,與所述處理模塊連接,用于將所述流標(biāo)簽發(fā)送給所述接收端,由所 述接收端根據(jù)所述流標(biāo)簽為所述第一數(shù)據(jù)報(bào)文創(chuàng)建第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表 項(xiàng)。所述第二發(fā)送模塊,具體用于判斷所述第一數(shù)據(jù)報(bào)文加上新增IP頭和GRE頭的長(zhǎng) 度是否超過(guò)預(yù)設(shè)MTU閾值;如果是,向所述接收端發(fā)送凈荷為空的數(shù)據(jù)報(bào)文,所述凈荷為空 的數(shù)據(jù)報(bào)文中攜帶所述第一數(shù)據(jù)報(bào)文的源IP地址和目的IP地址、所述流標(biāo)簽;如果否,向 所述接收端發(fā)送凈荷不為空的數(shù)據(jù)報(bào)文,所述凈荷不為空的數(shù)據(jù)報(bào)文中攜帶所述流標(biāo)簽和 所述第一數(shù)據(jù)報(bào)文。所述發(fā)送端還包括
表項(xiàng)維護(hù)模塊,用于為所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)設(shè)置?;疃〞r(shí) 器,根據(jù)所述?;疃〞r(shí)器定時(shí)向所述接收端發(fā)送負(fù)荷為空的IP報(bào)文,所述負(fù)荷為空的IP報(bào) 文中攜帶流標(biāo)簽,由所述接收端根據(jù)所述負(fù)荷為空的IP報(bào)文向所述發(fā)送端回應(yīng)成功報(bào)文; 如果預(yù)設(shè)第一時(shí)間內(nèi)無(wú)法接收到所述成功報(bào)文,將所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā) 表項(xiàng)設(shè)置為Init狀態(tài),并向所述接收端重新發(fā)起流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)同步過(guò)程;并為所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)設(shè)置老化定時(shí)器,如果預(yù)設(shè)第二 時(shí)間內(nèi)沒(méi)有接收到所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)對(duì)應(yīng)的第一數(shù)據(jù)報(bào)文,將所 述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)設(shè)置為Stale狀態(tài),并向所述接收端發(fā)送流標(biāo)簽 回收消息,所述流標(biāo)簽回收消息中攜帶流標(biāo)簽和流標(biāo)簽轉(zhuǎn)發(fā)結(jié)束標(biāo)記;接收來(lái)自所述接收 端的確認(rèn)消息,并清空對(duì)應(yīng)的第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)。所述生成模塊,具體用于刪除所述第一數(shù)據(jù)報(bào)文自帶IP頭,在所述刪除自帶IP頭 的第一數(shù)據(jù)報(bào)文中新增IP頭和GRE頭,并封裝成所述第二數(shù)據(jù)報(bào)文;其中,所述GRE頭中攜 帶了所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)中的流標(biāo)簽,所述新增IP頭的源IP地址 和目的IP地址為GRE隧道接口的源IP地址和目的IP地址,且所述新增IP頭中攜帶了從 所述第一數(shù)據(jù)報(bào)文自帶IP頭中復(fù)制的域信息;或者,刪除所述第一數(shù)據(jù)報(bào)文自帶IP頭,在所述刪除自帶IP頭的第一數(shù)據(jù)報(bào)文中新增 IP頭,并封裝成所述第二數(shù)據(jù)報(bào)文;其中,所述新增IP頭的源IP地址和目的IP地址為GRE 隧道接口的源IP地址和目的IP地址,TOS域字段攜帶了所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo) 簽轉(zhuǎn)發(fā)表項(xiàng)中的流標(biāo)簽,協(xié)議字段為GRE協(xié)議類(lèi)型,且所述新增IP頭中攜帶了從所述第一 數(shù)據(jù)報(bào)文自帶IP頭中復(fù)制的域信息。一種基于GRE隧道的接收端,應(yīng)用于包括發(fā)送端和所述接收端的系統(tǒng)中,所述 發(fā)送端和所述接收端為GRE隧道的兩端,所述發(fā)送端向所述接收端發(fā)送第一數(shù)據(jù)報(bào)文, 所述發(fā)送端和所述接收端中存儲(chǔ)了第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)且其狀態(tài)為 Forwarding狀態(tài),所述接收端包括存儲(chǔ)模塊,分別與第一接收模塊和第二接收模塊連接,用于存儲(chǔ)第一數(shù)據(jù)報(bào)文GRE 隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng);第一接收模塊,分別與存儲(chǔ)模塊和創(chuàng)建模塊連接,用于當(dāng)存儲(chǔ)模塊沒(méi)有存儲(chǔ)對(duì)應(yīng) 的第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)時(shí),接收來(lái)自所述發(fā)送端的流標(biāo)簽;創(chuàng)建模塊,與所述第一接收模塊連接,用于根據(jù)所述流標(biāo)簽為所述第一數(shù)據(jù)報(bào)文 創(chuàng)建第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng);
第二接收模塊,與所述存儲(chǔ)模塊連接,用于當(dāng)存儲(chǔ)模塊存儲(chǔ)了對(duì)應(yīng)的第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)時(shí),接收第二數(shù)據(jù)報(bào)文,所述第二數(shù)據(jù)報(bào)文為所述發(fā)送端刪除 所述第一數(shù)據(jù)報(bào)文的自帶IP頭并封裝成帶有流標(biāo)簽的數(shù)據(jù)報(bào)文。所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)的內(nèi)容包括GRE隧道的隧道標(biāo)識(shí)、第 一數(shù)據(jù)報(bào)文的源IP地址和目的IP地址、流標(biāo)簽、表項(xiàng)狀態(tài);所述創(chuàng)建模塊,具體用于當(dāng)接收到凈荷為空的數(shù)據(jù)報(bào)文或者凈荷不為空的數(shù)據(jù)報(bào) 文時(shí),根據(jù)接收到報(bào)文中的源IP地址、目的IP地址和流標(biāo)簽為所述第一數(shù)據(jù)報(bào)文創(chuàng)建第一 數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng),將所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)設(shè)置為 Forwarding狀態(tài),并向所述發(fā)送端返回創(chuàng)建成功消息,由所述發(fā)送端根據(jù)所述創(chuàng)建成功消 息將自身記錄的所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)設(shè)置為Forwarding狀態(tài)。還包括表項(xiàng)維護(hù)模塊,用于為所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)設(shè)置?;疃〞r(shí) 器,當(dāng)接收到來(lái)自發(fā)送端的負(fù)荷為空的IP報(bào)文時(shí),根據(jù)所述負(fù)荷為空的IP報(bào)文向所述發(fā)送 端回應(yīng)成功報(bào)文;所述負(fù)荷為空的IP報(bào)文中攜帶流標(biāo)簽;并為所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)設(shè)置老化定時(shí)器,當(dāng)接收到來(lái)自 發(fā)送端的流標(biāo)簽回收消息時(shí),則根據(jù)所述流標(biāo)簽回收消息中的流標(biāo)簽清空對(duì)應(yīng)的第一數(shù)據(jù) 報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng),并向所述發(fā)送端回應(yīng)確認(rèn)消息;所述流標(biāo)簽回收消息中攜 帶流標(biāo)簽和流標(biāo)簽轉(zhuǎn)發(fā)結(jié)束標(biāo)記。還包括處理模塊,與所述第二接收模塊連接,用于當(dāng)確定所述第二數(shù)據(jù)報(bào)文的GRE頭中 攜帶了流標(biāo)簽時(shí),將所述第二數(shù)據(jù)報(bào)文解封裝去掉新增IP頭和GRE頭,并根據(jù)所述GRE頭 中攜帶的流標(biāo)簽查找所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng),并根據(jù)查找到的所述第 一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)中第一數(shù)據(jù)報(bào)文的源IP地址和目的IP地址、以及所 述新增IP頭中攜帶的從所述第一數(shù)據(jù)報(bào)文自帶IP頭中復(fù)制的域信息,將解封裝后的第二 數(shù)據(jù)報(bào)文重新封裝成所述第一數(shù)據(jù)報(bào)文;或者,當(dāng)確定所述第二數(shù)據(jù)報(bào)文的協(xié)議類(lèi)型為GRE類(lèi)型,且所述第二數(shù)據(jù)報(bào)文的TOS域 字段中攜帶了流標(biāo)簽時(shí),將所述第二數(shù)據(jù)報(bào)文解封裝去掉新增IP頭,并根據(jù)所述TOS域字 段中攜帶的流標(biāo)簽查找所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng),并根據(jù)查找到的所述 第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)中第一數(shù)據(jù)報(bào)文的源IP地址和目的IP地址、以及 所述新增IP頭中攜帶的從所述第一數(shù)據(jù)報(bào)文自帶IP頭中復(fù)制的域信息,將解封裝后的第 二數(shù)據(jù)報(bào)文重新封裝成所述第一數(shù)據(jù)報(bào)文。一種基于GRE隧道的數(shù)據(jù)傳輸系統(tǒng),包括發(fā)送端和接收端,所述發(fā)送端和所述接 收端為GRE隧道的兩端,所述發(fā)送端向所述接收端發(fā)送第一數(shù)據(jù)報(bào)文,所述發(fā)送端和所述 接收端中存儲(chǔ)了第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)且其狀態(tài)為Forwarding狀態(tài);所述發(fā)送端,用于根據(jù)所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng),刪除所述第 一數(shù)據(jù)報(bào)文的自帶IP頭并封裝成帶有流標(biāo)簽的第二數(shù)據(jù)報(bào)文,然后將所述第二數(shù)據(jù)報(bào)文 發(fā)送給所述接收端;所述接收端,用于收到所述第二數(shù)據(jù)報(bào)文,根據(jù)所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo) 簽轉(zhuǎn)發(fā)表項(xiàng),對(duì)所述第二數(shù)據(jù)報(bào)文解封裝并重新封裝成第一數(shù)據(jù)報(bào)文后轉(zhuǎn)發(fā)。
與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點(diǎn)通過(guò)為源IP地址和目的IP地址相同的數(shù)據(jù)報(bào)文分配唯一的流標(biāo)簽,并根據(jù)該流 標(biāo)簽創(chuàng)建第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng),從而可以根據(jù)該第一數(shù)據(jù)報(bào)文GRE隧道 流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)進(jìn)行數(shù)據(jù)報(bào)文的傳輸,減少加封裝后所增加的報(bào)文字節(jié),提高 GRE隧道的 數(shù)據(jù)傳輸效率,并解決了數(shù)據(jù)報(bào)文無(wú)法經(jīng)過(guò)GRE隧道進(jìn)行傳輸?shù)膯?wèn)題。
圖1為現(xiàn)有技術(shù)中Netl和Net2通過(guò)GRE隧道互聯(lián)的示意圖;圖2為現(xiàn)有技術(shù)中對(duì)原始報(bào)文進(jìn)行GRE封裝的示意圖;圖3為本發(fā)明提出的一種基于GRE隧道的數(shù)據(jù)傳輸方法流程圖;圖4為本發(fā)明提出的一種應(yīng)用場(chǎng)景示意圖;圖5為本發(fā)明應(yīng)用場(chǎng)景下所提出的一種基于GRE隧道的數(shù)據(jù)傳輸方法流程圖;圖6為本發(fā)明提出的一種發(fā)送端的結(jié)構(gòu)圖;圖7為本發(fā)明提出的一種接收端的結(jié)構(gòu)圖。
具體實(shí)施例方式本發(fā)明中,通過(guò)為源IP地址和目的IP地址相同的數(shù)據(jù)報(bào)文分配唯一的流標(biāo)簽,并 根據(jù)該流標(biāo)簽創(chuàng)建第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng),從而可以根據(jù)該第一數(shù)據(jù)報(bào)文 GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)進(jìn)行數(shù)據(jù)報(bào)文的傳輸,減少加封裝后所增加的報(bào)文字節(jié),提高GRE 隧道的數(shù)據(jù)傳輸效率。本發(fā)明提供一種基于GRE隧道的數(shù)據(jù)傳輸方法,應(yīng)用于包括發(fā)送端和接收端的系 統(tǒng)中,所述發(fā)送端和所述接收端為GRE隧道的兩端,所述發(fā)送端向所述接收端發(fā)送第一數(shù) 據(jù)報(bào)文,所述發(fā)送端和所述接收端中存儲(chǔ)了第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)且其狀 態(tài)為Forwarding狀態(tài),如圖3所示,該方法包括以下步驟步驟301,根據(jù)所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng),所述發(fā)送端刪除所述 第一數(shù)據(jù)報(bào)文的自帶IP頭并封裝成帶有流標(biāo)簽的第二數(shù)據(jù)報(bào)文,然后將所述第二數(shù)據(jù)報(bào) 文發(fā)送給所述接收端。步驟302,所述接收端收到所述第二數(shù)據(jù)報(bào)文,根據(jù)所述第一數(shù)據(jù)報(bào)文GRE隧道流 標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng),對(duì)所述第二數(shù)據(jù)報(bào)文解封裝并重新封裝成所述第一數(shù)據(jù)報(bào)文后進(jìn)行轉(zhuǎn)發(fā)。為了更加清楚的闡述本發(fā)明提供的技術(shù)方案,以下結(jié)合圖4所示的應(yīng)用場(chǎng)景對(duì)本 發(fā)明進(jìn)行詳細(xì)說(shuō)明。在圖4中,GRE隧道A端和GRE隧道B端為GRE隧道的兩端,在實(shí)際應(yīng) 用中,GRE隧道A端可以作為發(fā)送端或者接收端,而GRE隧道B端對(duì)應(yīng)的可以作為接收端或 者發(fā)送端,本應(yīng)用場(chǎng)景下以GRE隧道A端為發(fā)送端為例進(jìn)行說(shuō)明。如圖5所示,該基于GRE隧道的數(shù)據(jù)傳輸方法包括以下步驟步驟501,發(fā)送端接收需要通過(guò)GRE隧道進(jìn)行轉(zhuǎn)發(fā)的數(shù)據(jù)報(bào)文。本應(yīng)用場(chǎng)景下,為了和后續(xù)其他類(lèi)型的數(shù)據(jù)報(bào)文進(jìn)行區(qū)分,本步驟中將該數(shù)據(jù)報(bào) 文作為第一數(shù)據(jù)報(bào)文。步驟502,發(fā)送端查詢(xún)是否記錄了該第一數(shù)據(jù)報(bào)文對(duì)應(yīng)的第一數(shù)據(jù)報(bào)文GRE隧道 流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)。如果否,轉(zhuǎn)到步驟503,如果是,轉(zhuǎn)到步驟507。其中,GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)的內(nèi)容包括但不限于GRE隧道的隧道標(biāo)識(shí)、源IP地址和目的IP地址、流標(biāo)簽、表項(xiàng) 狀態(tài)。具體的,本發(fā)明中,根據(jù)第一數(shù)據(jù)報(bào)文的源IP地址和目的IP地址,發(fā)送端可以為該第一數(shù)據(jù)報(bào)文分配流標(biāo)簽,而所分配的流標(biāo)簽對(duì)于GRE隧道來(lái)說(shuō)是唯一的,從而可以根 據(jù)該流標(biāo)簽確定第一數(shù)據(jù)報(bào)文的源IP地址和目的IP地址。而基于該流標(biāo)簽、以及第一數(shù)據(jù)報(bào)文的源IP地址和目的IP地址,發(fā)送端能夠?yàn)樵?第一數(shù)據(jù)報(bào)文創(chuàng)建對(duì)應(yīng)的第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng),,該第一數(shù)據(jù)報(bào)文GRE隧 道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)的創(chuàng)建過(guò)程將在后續(xù)步驟中詳細(xì)說(shuō)明,本步驟中不再贅述。本應(yīng)用場(chǎng)景下,GRE隧道A端需要獲取第一數(shù)據(jù)報(bào)文的源IP地址和目的IP地址, 并根據(jù)第一數(shù)據(jù)報(bào)文的源IP地址和目的IP地址查詢(xún)第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)列 表中第一數(shù)據(jù)報(bào)文的源IP地址和目的IP地址,如果有匹配的記錄,記錄了第一數(shù)據(jù)報(bào)文對(duì) 應(yīng)的GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng),如果沒(méi)有匹配的記錄,沒(méi)有記錄第一數(shù)據(jù)報(bào)文對(duì)應(yīng)的GRE隧 道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)。步驟503,發(fā)送端為第一數(shù)據(jù)報(bào)文分配流標(biāo)簽,并根據(jù)流標(biāo)簽為第一數(shù)據(jù)報(bào)文創(chuàng)建 第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)。其中,發(fā)送端需要根據(jù)第一數(shù)據(jù)報(bào)文的源IP地址 和目的IP地址為第一數(shù)據(jù)報(bào)文分配唯一的流標(biāo)簽。如表3所示的GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)列表,該GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)列表中記錄了各 個(gè)第一數(shù)據(jù)報(bào)文對(duì)應(yīng)的第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)。表3 可以看出,隧道ID可標(biāo)識(shí)該GRE隧道,以根據(jù)第一數(shù)據(jù)報(bào)文的源IP地址(源IP 地址2)和目的IP地址(目的IP地址2)為第一數(shù)據(jù)報(bào)文分配唯一的流標(biāo)簽2為例,則可 以創(chuàng)建表3所示的第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng),此時(shí),該GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表 項(xiàng)的表項(xiàng)狀態(tài)為Init狀態(tài)。步驟504,發(fā)送端將流標(biāo)簽發(fā)送給接收端。本應(yīng)用場(chǎng)景下,當(dāng)發(fā)送端的第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)創(chuàng)建完成后, 該發(fā)送端需要向接收端發(fā)送流標(biāo)簽。具體的,發(fā)送端需要判斷接收到的第一數(shù)據(jù)報(bào)文加上新增IP頭和GRE頭的長(zhǎng)度是 否超過(guò)預(yù)設(shè)MTU閾值,(該預(yù)設(shè)MTU閾值可以根據(jù)實(shí)際需要進(jìn)行選擇,可默認(rèn)為接口 MTU值 減去新增IP頭長(zhǎng)度和GRE頭長(zhǎng)度,也可進(jìn)行人為設(shè)置)。如果是,發(fā)送端向接收端發(fā)送凈荷為空的數(shù)據(jù)報(bào)文,該凈荷為空的數(shù)據(jù)報(bào)文中攜 帶源IP地址、目的IP地址和流標(biāo)簽。優(yōu)選的,該凈荷為空的數(shù)據(jù)報(bào)文中可以攜帶新增IP 頭、GRE頭和第一數(shù)據(jù)報(bào)文自帶IP頭,其中,第一數(shù)據(jù)報(bào)文自帶IP頭中攜帶源IP地址和目 的IP地址(該源IP地址和目的IP地址為流標(biāo)簽對(duì)應(yīng)的源IP地址和目的IP地址),GRE頭中攜帶流標(biāo)簽,該流標(biāo)簽包括第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)中的流標(biāo)簽、以及 流標(biāo)簽轉(zhuǎn)發(fā)開(kāi)始標(biāo)記。如果否,發(fā)送端向接收端發(fā)送凈荷不為空的數(shù)據(jù)報(bào)文,凈荷不為空的數(shù)據(jù)報(bào)文中 攜帶源IP地址、目的IP地址、流標(biāo)簽和第一數(shù)據(jù)報(bào)文的凈荷。優(yōu)選的,發(fā)送端需要在第一 數(shù)據(jù)報(bào)文頭部新增IP頭和GRE頭,該第一數(shù)據(jù)報(bào)文的自帶IP頭和數(shù)據(jù)報(bào)文凈荷保持不變。 其中,該新增IP頭的源IP地址和目的IP地址為GRE隧道的接口源IP地址和目的IP地址, GRE頭中攜帶流標(biāo)簽,該流標(biāo)簽包括第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)中的流標(biāo)簽、 以及流標(biāo)簽轉(zhuǎn)發(fā)開(kāi)始標(biāo)記。當(dāng)然,在實(shí)際應(yīng)用中,還可以使用其他部分?jǐn)y帶源IP地址、目的IP地址和流標(biāo)簽, 例如,當(dāng)該凈荷為空的數(shù)據(jù)報(bào)文或者凈荷不為空的數(shù)據(jù)報(bào)文中只攜帶新增IP頭和第一數(shù) 據(jù)報(bào)文自帶IP頭時(shí),還可以通過(guò)新增IP頭攜帶流標(biāo)簽,本發(fā)明中不再詳加贅述。步驟505,接收端根據(jù)流標(biāo)簽為第一數(shù)據(jù)報(bào)文創(chuàng)建第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽 轉(zhuǎn)發(fā)表項(xiàng)。具體的,在接收端中同樣存儲(chǔ)了如表3所示的GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)列表,本步驟 中,接 收端需要根據(jù)流標(biāo)簽為第一數(shù)據(jù)報(bào)文創(chuàng)建對(duì)應(yīng)的第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā) 表項(xiàng)。本步驟中,當(dāng)接收到凈荷為空的數(shù)據(jù)報(bào)文或者凈荷不為空的數(shù)據(jù)報(bào)文后,接收 端需要根據(jù)接收到報(bào)文中的源IP地址、目的IP地址和流標(biāo)簽為第一數(shù)據(jù)報(bào)文創(chuàng)建第一 數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng),并將第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)設(shè)置為 Forwarding 狀態(tài)。步驟506,接收端向發(fā)送端返回創(chuàng)建成功消息,發(fā)送端根據(jù)創(chuàng)建成功消息將GRE隧 道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)設(shè)置為Forwarding狀態(tài)。其中,該創(chuàng)建成功消息中包含IP頭和GRE頭, 且該GRE頭中攜帶同樣的流標(biāo)簽。發(fā)送端之前創(chuàng)建第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)時(shí),將第一數(shù)據(jù)報(bào)文GRE 隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)設(shè)置為Init狀態(tài),本步驟中,當(dāng)接收到創(chuàng)建成功消息后,發(fā)送端確定 第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)創(chuàng)建成功,并將第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā) 表項(xiàng)設(shè)置為Forwarding狀態(tài)。需要說(shuō)明的是,為了對(duì)GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)進(jìn)行合理的優(yōu)化,本發(fā)明中,還需 要在發(fā)送端和接收端分別為第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)設(shè)置保活定時(shí)器和/或 老化定時(shí)器。(1)第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)設(shè)置?;疃〞r(shí)器。本應(yīng)用場(chǎng)景下,發(fā)送端根據(jù)?;疃〞r(shí)器定時(shí)向接收端發(fā)送負(fù)荷為空的IP報(bào)文,其 中,負(fù)荷為空的IP報(bào)文中攜帶流標(biāo)簽,接收端根據(jù)負(fù)荷為空的IP報(bào)文向發(fā)送端回應(yīng)成功報(bào) 文。如果預(yù)設(shè)第一時(shí)間內(nèi)(即一定周期內(nèi))發(fā)送端無(wú)法接收到該回應(yīng)的成功報(bào)文,則 發(fā)送端確定接收端出現(xiàn)異常或者第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)出現(xiàn)不同步,此 時(shí),發(fā)送端需要將第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)設(shè)置為Init狀態(tài),并向接收端重 新發(fā)起流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)同步過(guò)程(即上述步驟504-步驟506中的過(guò)程)。(2)第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)設(shè)置老化定時(shí)器(即流標(biāo)簽老化定時(shí)器)O本應(yīng)用場(chǎng)景下,如果預(yù)設(shè)第二時(shí)間內(nèi)沒(méi)有接收到第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn) 發(fā)表項(xiàng)對(duì)應(yīng)的第一數(shù)據(jù)報(bào)文,則確定需要將對(duì)應(yīng)的流標(biāo)簽進(jìn)行回收,此時(shí),發(fā)送端需要將 GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)設(shè)置為Stale狀態(tài),并向接收端發(fā)送流標(biāo)簽回收消息,該流標(biāo)簽回 收消息中攜帶流標(biāo)簽和流標(biāo)簽轉(zhuǎn)發(fā)結(jié)束標(biāo)記(例如,可以通過(guò)GRE頭進(jìn)行攜帶)。當(dāng)接收端接收到流標(biāo)簽回收消息后,則需要根據(jù)流標(biāo)簽回收消息中的流標(biāo)簽清空 對(duì)應(yīng)的流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng),并向發(fā)送端回應(yīng)確認(rèn)消息。而當(dāng)發(fā)送端接收到該確認(rèn)消息后,則清 空對(duì)應(yīng)的流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)。此時(shí),GRE隧道兩端的第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng) 保持同步清空。需要注意的是,在發(fā)送端將第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)設(shè)置為Stale 狀態(tài),且發(fā)送端尚未清空對(duì)應(yīng)的流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)時(shí),如果發(fā)送端接收到第一數(shù)據(jù)報(bào)文GRE 隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)對(duì)應(yīng)的第一數(shù)據(jù)報(bào)文,則發(fā)送端將第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā) 表項(xiàng)的表項(xiàng)狀態(tài)轉(zhuǎn)為Init狀態(tài),并進(jìn)入第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)的創(chuàng)建階 段,此時(shí),不需要分配新的流標(biāo)簽。另外,如果接收端的老化定時(shí)器先到期,則也會(huì)執(zhí)行與發(fā)送端相應(yīng)的處理方式,在 此不再 贅述。步驟507,發(fā)送端根據(jù)第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)和第一數(shù)據(jù)報(bào)文生 成第二數(shù)據(jù)報(bào)文。具體的,當(dāng)需要經(jīng)過(guò)GRE隧道進(jìn)行轉(zhuǎn)發(fā)的第一數(shù)據(jù)數(shù)據(jù)報(bào)文到達(dá)發(fā)送端之后,如 果不存在對(duì)應(yīng)的第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)或者第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽 轉(zhuǎn)發(fā)表項(xiàng)不是Forwarding狀態(tài),則按照現(xiàn)有的GRE隧道流程進(jìn)行處理,該處理過(guò)程本發(fā)明 中不再贅述。如果存在對(duì)應(yīng)的第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)且第一數(shù)據(jù)報(bào)文GRE 隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)為Forwarding狀態(tài)時(shí),發(fā)送端需要根據(jù)第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽 轉(zhuǎn)發(fā)表項(xiàng)對(duì)數(shù)據(jù)報(bào)文進(jìn)行相應(yīng)處理。以上述的第一數(shù)據(jù)報(bào)文為例,則發(fā)送端需要根據(jù)該第 一數(shù)據(jù)報(bào)文和第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)生成第二數(shù)據(jù)報(bào)文。第一種情況當(dāng)接收到第一數(shù)據(jù)報(bào)文后,發(fā)送端刪除第一數(shù)據(jù)報(bào)文自帶IP頭,并在第一數(shù)據(jù)報(bào) 文中新增IP頭和GRE頭,從而生成第二數(shù)據(jù)報(bào)文。其中,GRE頭中攜帶了第一數(shù)據(jù)報(bào)文GRE 隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)中的流標(biāo)簽,新增IP頭的源IP地址和目的IP地址為GRE隧道接口的 源IP地址和目的IP地址,且新增IP頭中攜帶了從第一數(shù)據(jù)報(bào)文自帶IP頭中復(fù)制的域信 肩、ο具體的,新增IP頭中還攜帶了其他字段,該其他字段包括但不限于T0S(服務(wù)類(lèi) 型)域、標(biāo)識(shí)域、標(biāo)記域、TTL(生存時(shí)間)域等字段,而該其他字段中的信息均可以從第一 數(shù)據(jù)報(bào)文自帶IP頭中進(jìn)行復(fù)制,即從第一數(shù)據(jù)報(bào)文自帶IP頭的各個(gè)域中復(fù)制相關(guān)信息。另外,需要注意的是,對(duì)于無(wú)法從第一數(shù)據(jù)報(bào)文自帶IP頭中進(jìn)行復(fù)制的字段(例 如,校驗(yàn)和字段),可以在接收端進(jìn)行重封裝時(shí)重新校驗(yàn)。第二種情況在不需要QoS (服務(wù)質(zhì)量)功能,TOS域字段閑置的小型網(wǎng)絡(luò)中,當(dāng)接收到第一數(shù)據(jù) 報(bào)文后,發(fā)送端刪除第一數(shù)據(jù)報(bào)文自帶IP頭,并在第一數(shù)據(jù)報(bào)文中新增IP頭,從而生成第二數(shù)據(jù)報(bào)文。其中,新增IP頭的源IP地址和目的IP地址為GRE隧道接口的源IP地址和 目的IP地址,TOS域字段攜帶了 GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)中的流標(biāo)簽,協(xié)議字段為GRE協(xié) 議類(lèi)型,且新增IP頭中攜帶了從第一數(shù)據(jù)報(bào)文自帶IP頭中復(fù)制的域信息。具體的,新增IP頭中還攜帶了其他字段,該其他字段包括但不限于標(biāo)識(shí)域、標(biāo)記 域、TTL(生存時(shí)間)域等字段,而該其他字段中的信息均可以從第一數(shù)據(jù)報(bào)文自帶IP頭中 進(jìn)行復(fù)制,即從第一數(shù)據(jù)報(bào)文自帶IP頭的各個(gè)域中復(fù)制相關(guān)信息。另外,需要注意的是,對(duì)于無(wú)法從第一數(shù)據(jù)報(bào)文自帶IP頭中進(jìn)行復(fù)制的字段(例 如,校驗(yàn)和字段),可以在接收端進(jìn)行重封裝時(shí)重新校驗(yàn)。步驟508,發(fā)送端將第二數(shù)據(jù)報(bào)文發(fā)送給接收端。步驟509,接收端對(duì)第二數(shù)據(jù)報(bào)文進(jìn)行解封裝,并根據(jù)第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo) 簽轉(zhuǎn)發(fā)表項(xiàng)還原成第一數(shù)據(jù)報(bào)文。針對(duì)上述步驟507中的第一種情況當(dāng)接收到第二數(shù)據(jù)報(bào)文后,接收端根據(jù)GRE頭是否攜帶了流標(biāo)簽來(lái)判斷是否進(jìn)行 流標(biāo)簽轉(zhuǎn)發(fā)。如果第二數(shù)據(jù)報(bào)文的GRE頭中攜帶了流標(biāo)簽時(shí),接收端將第二數(shù)據(jù)報(bào)文解封 裝去掉新增IP頭和GRE頭,并根據(jù)GRE頭中攜帶的流標(biāo)簽查找第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo) 簽轉(zhuǎn)發(fā)表項(xiàng),并根據(jù)查找到的第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)中的源IP地址和目的 IP地址將解封裝后的第二數(shù)據(jù)報(bào)文重新封裝還原成第一數(shù)據(jù)報(bào)文。其中,在還原成第一數(shù)據(jù)報(bào)文的過(guò)程中,TOS域、標(biāo)識(shí)域、標(biāo)記域、TTL域的相關(guān)信 息均可以從接收到的第二數(shù)據(jù)報(bào)文的IP頭中進(jìn)行復(fù)制,而校驗(yàn)和等字段需要重新進(jìn)行計(jì) 笪弁。針對(duì)上述步驟507中的第二種情況當(dāng)接收到第二數(shù)據(jù)報(bào)文后,接收端需要根據(jù)IP報(bào)文所攜帶的協(xié)議類(lèi)型是否為GRE 類(lèi)型來(lái)判斷是否需要進(jìn)行報(bào)文的重封裝,如果是GRE類(lèi)型,則需要解析TOS域字段所攜帶的 流標(biāo)簽信息來(lái)判斷是否進(jìn)行流標(biāo)簽轉(zhuǎn)發(fā)。當(dāng)確定第二數(shù)據(jù)報(bào)文的協(xié)議類(lèi)型為GRE類(lèi)型,且 第二數(shù)據(jù)報(bào)文的TOS域字段中攜帶了流標(biāo)簽時(shí),接收端將第二數(shù)據(jù)報(bào)文解封裝去掉新增IP 頭,并根據(jù)TOS域字段中攜帶的流標(biāo)簽查找GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng),并根據(jù)查找到的第一 數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)中的源IP地址和目的IP地址將解封裝后的第二數(shù)據(jù)報(bào) 文重新封裝成第一數(shù)據(jù)報(bào)文。其中,在還原成第一數(shù)據(jù)報(bào)文的過(guò)程中,TOS域、標(biāo)識(shí)域、標(biāo)記域、TTL域的相關(guān)信 息均可以從接收到的第二數(shù)據(jù)報(bào)文的IP頭中進(jìn)行復(fù)制,而校驗(yàn)和等字段需要重新進(jìn)行計(jì)算.
需要說(shuō)明的是,在根據(jù)GRE頭或者TOS域字段中攜帶的流標(biāo)簽查找GRE隧道流 標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)時(shí),如果未找到該流標(biāo)簽對(duì)應(yīng)的第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng),該 接收端確定需要將對(duì)應(yīng)的流標(biāo)簽進(jìn)行回收,此時(shí),接收端還需要向發(fā)送端發(fā)送流標(biāo)簽回收 消息。而當(dāng)發(fā)送端接收到該流標(biāo)簽回收消息后,將對(duì)應(yīng)的第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽 轉(zhuǎn)發(fā)表項(xiàng)設(shè)置為Init狀態(tài),并向接收端重新發(fā)起流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)同步過(guò)程(即上述步驟 504-步驟506中的過(guò)程),以保證GRE隧道兩端的第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng) 能夠同步。基于與上述方法同樣的發(fā)明構(gòu)思,本發(fā)明還提出了一種基于GRE隧道的發(fā)送端,應(yīng)用于包括所述發(fā)送端和接收端的系統(tǒng)中,所述發(fā)送端和所述接收端為GRE隧道的兩端, 所述發(fā)送端和所述接收端中存儲(chǔ)了第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)且其狀態(tài)為 Forwarding狀態(tài),如圖6所示,所述發(fā)送端包括存儲(chǔ)模塊11,與生成模塊12連接,用于存儲(chǔ)第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表 項(xiàng);生成模塊12,分別與存儲(chǔ)模塊11和第一發(fā)送模塊13連接,用于當(dāng)接收到需要通過(guò) GRE隧道進(jìn)行轉(zhuǎn)發(fā)的第一數(shù)據(jù)報(bào)文后,根據(jù)所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)列表,刪 除所述第一數(shù)據(jù)報(bào)文的自帶IP頭并封裝成帶有流標(biāo)簽的第二數(shù)據(jù)報(bào)文;第一發(fā)送模塊13,與所述生成模塊12連接,用于將所述第二數(shù)據(jù)報(bào)文發(fā)送給所述 接收端。所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)中的內(nèi)容包括GRE隧道的隧道標(biāo)識(shí)、 第一數(shù)據(jù)報(bào)文的源IP地址和目的IP地址、流標(biāo)簽、表項(xiàng)狀態(tài);所述發(fā)送端還包括處理模塊14,與所述生成模塊12連接,用于為所述第一數(shù)據(jù)報(bào)文分配流標(biāo)簽,并 根據(jù)所述 流標(biāo)簽為所述第一數(shù)據(jù)報(bào)文創(chuàng)建第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng);第二發(fā)送模塊15,與所述處理模塊14連接,用于將所述流標(biāo)簽發(fā)送給所述接收 端,由所述接收端根據(jù)所述流標(biāo)簽為所述第一數(shù)據(jù)報(bào)文創(chuàng)建第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽 轉(zhuǎn)發(fā)表項(xiàng)。所述第二發(fā)送模塊15,具體用于判斷所述第一數(shù)據(jù)報(bào)文加上新增IP頭和GRE頭的 長(zhǎng)度是否超過(guò)預(yù)設(shè)MTU閾值;如果是,向所述接收端發(fā)送凈荷為空的數(shù)據(jù)報(bào)文,所述凈荷為 空的數(shù)據(jù)報(bào)文中攜帶所述第一數(shù)據(jù)報(bào)文的源IP地址和目的IP地址、所述流標(biāo)簽;如果否, 向所述接收端發(fā)送凈荷不為空的數(shù)據(jù)報(bào)文,所述凈荷不為空的數(shù)據(jù)報(bào)文中攜帶所述流標(biāo)簽 和所述第一數(shù)據(jù)報(bào)文。所述發(fā)送端還包括表項(xiàng)維護(hù)模塊16,用于為所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)設(shè)置?;疃?時(shí)器,根據(jù)所述?;疃〞r(shí)器定時(shí)向所述接收端發(fā)送負(fù)荷為空的IP報(bào)文,所述負(fù)荷為空的IP 報(bào)文中攜帶流標(biāo)簽,由所述接收端根據(jù)所述負(fù)荷為空的IP報(bào)文向所述發(fā)送端回應(yīng)成功報(bào) 文;如果預(yù)設(shè)第一時(shí)間內(nèi)無(wú)法接收到所述成功報(bào)文,將所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽 轉(zhuǎn)發(fā)表項(xiàng)設(shè)置為Init狀態(tài),并向所述接收端重新發(fā)起流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)同步過(guò)程;并為所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)設(shè)置老化定時(shí)器,如果預(yù)設(shè)第二 時(shí)間內(nèi)沒(méi)有接收到所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)對(duì)應(yīng)的第一數(shù)據(jù)報(bào)文,將所 述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)設(shè)置為Stale狀態(tài),并向所述接收端發(fā)送流標(biāo)簽 回收消息,所述流標(biāo)簽回收消息中攜帶流標(biāo)簽和流標(biāo)簽轉(zhuǎn)發(fā)結(jié)束標(biāo)記;接收來(lái)自所述接收 端的確認(rèn)消息,并清空對(duì)應(yīng)的第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)。所述生成模塊12,具體用于刪除所述第一數(shù)據(jù)報(bào)文自帶IP頭,在所述刪除自帶IP 頭的第一數(shù)據(jù)報(bào)文中新增IP頭和GRE頭,并封裝成所述第二數(shù)據(jù)報(bào)文;其中,所述GRE頭中 攜帶了所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)中的流標(biāo)簽,所述新增IP頭的源IP地 址和目的IP地址為GRE隧道接口的源IP地址和目的IP地址,且所述新增IP頭中攜帶了 從所述第一數(shù)據(jù)報(bào)文自帶IP頭中復(fù)制的域信息;或者,刪除所述第一數(shù)據(jù)報(bào)文自帶IP頭,在所述刪除自帶IP頭的第一數(shù)據(jù)報(bào)文中新增IP頭,并封裝成所述第二數(shù)據(jù)報(bào)文;其中,所述新增IP頭的源IP地址和目的IP地址為GRE 隧道接口的源IP地址和目的IP地址,TOS域字段攜帶了所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo) 簽轉(zhuǎn)發(fā)表項(xiàng)中的流標(biāo)簽,協(xié)議字段為GRE協(xié)議類(lèi)型,且所述新增IP頭中攜帶了從所述第一 數(shù)據(jù)報(bào)文自帶IP頭中復(fù)制的域信息。其中,本發(fā)明裝置的各個(gè)模塊可以集成于一體,也可以分離部署。上述模塊可以合 并為一個(gè)模塊,也可以進(jìn)一步拆分成多個(gè)子模塊。基于與上述方法同樣的發(fā)明構(gòu)思,本發(fā)明還提出了一種基于GRE隧道的接收端, 應(yīng)用于包括發(fā)送端和所述接收端的系統(tǒng)中,所述發(fā)送端和所述接收端為GRE隧道的兩端, 所述發(fā)送端向所述接收端發(fā)送第一數(shù)據(jù)報(bào)文,所述發(fā)送端和所述接收端中存儲(chǔ)了第一數(shù)據(jù) 報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)且其狀態(tài)為Forwarding狀態(tài),如圖7所示,所述接收端包括存儲(chǔ)模塊21,分別與第一接收模塊22和第二接收模塊24連接,用于存儲(chǔ)第一數(shù)據(jù) 報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng); 第一接收模塊22,分別與存儲(chǔ)模塊21和創(chuàng)建模塊23連接,用于當(dāng)存儲(chǔ)模塊沒(méi)有存 儲(chǔ)對(duì)應(yīng)的第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)時(shí),接收來(lái)自所述發(fā)送端的流標(biāo)簽;創(chuàng)建模塊23,與所述第一接收模塊22連接,用于根據(jù)所述流標(biāo)簽為所述第一數(shù)據(jù) 報(bào)文創(chuàng)建 第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng);第二接收模塊24,與所述存儲(chǔ)模塊21連接,用于當(dāng)存儲(chǔ)模塊21存儲(chǔ)了對(duì)應(yīng)的第一 數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)時(shí),接收第二數(shù)據(jù)報(bào)文,所述第二數(shù)據(jù)報(bào)文為所述發(fā)送 端刪除所述第一數(shù)據(jù)報(bào)文的自帶IP頭并封裝成帶有流標(biāo)簽的數(shù)據(jù)報(bào)文。所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)的內(nèi)容包括GRE隧道的隧道標(biāo)識(shí)、第 一數(shù)據(jù)報(bào)文的源IP地址和目的IP地址、流標(biāo)簽、表項(xiàng)狀態(tài);所述創(chuàng)建模塊23,具體用于當(dāng)接收到凈荷為空的數(shù)據(jù)報(bào)文或者凈荷不為空的數(shù)據(jù) 報(bào)文時(shí),根據(jù)接收到報(bào)文中的源IP地址、目的IP地址和流標(biāo)簽為所述第一數(shù)據(jù)報(bào)文創(chuàng)建第 一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng),將所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)設(shè)置 為Forwarding狀態(tài),并向所述發(fā)送端返回創(chuàng)建成功消息,由所述發(fā)送端根據(jù)所述創(chuàng)建成功 消息將自身記錄的所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)設(shè)置為Forwarding狀態(tài)。所述接收端還包括表項(xiàng)維護(hù)模塊25,用于為所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)設(shè)置?;疃?時(shí)器,當(dāng)接收到來(lái)自發(fā)送端的負(fù)荷為空的IP報(bào)文時(shí),根據(jù)所述負(fù)荷為空的IP報(bào)文向所述發(fā) 送端回應(yīng)成功報(bào)文;所述負(fù)荷為空的IP報(bào)文中攜帶流標(biāo)簽;并為所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)設(shè)置老化定時(shí)器,當(dāng)接收到來(lái)自 發(fā)送端的流標(biāo)簽回收消息時(shí),則根據(jù)所述流標(biāo)簽回收消息中的流標(biāo)簽清空對(duì)應(yīng)的第一數(shù)據(jù) 報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng),并向所述發(fā)送端回應(yīng)確認(rèn)消息;所述流標(biāo)簽回收消息中攜 帶流標(biāo)簽和流標(biāo)簽轉(zhuǎn)發(fā)結(jié)束標(biāo)記。所述接收端還包括處理模塊26,與所述第二接收模塊24連接,用于當(dāng)確定所述第二數(shù)據(jù)報(bào)文的GRE 頭中攜帶了流標(biāo)簽時(shí),將所述第二數(shù)據(jù)報(bào)文解封裝去掉新增IP頭和GRE頭,并根據(jù)所述GRE 頭中攜帶的流標(biāo)簽查找所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng),并根據(jù)查找到的所述 第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)中第一數(shù)據(jù)報(bào)文的源IP地址和目的IP地址、以及所述新增IP頭中攜帶的從所述第一數(shù)據(jù)報(bào)文自帶IP頭中復(fù)制的域信息,將解封裝后的第 二數(shù)據(jù)報(bào)文重新封裝成所述第一數(shù)據(jù)報(bào)文;或者,當(dāng)確定所述第二數(shù)據(jù)報(bào)文的協(xié)議類(lèi)型為GRE類(lèi)型,且所述第二數(shù)據(jù)報(bào)文的TOS域 字段中攜帶了流標(biāo)簽時(shí),將所述第二數(shù)據(jù)報(bào)文解封裝去掉新增IP頭,并根據(jù)所述TOS域字 段中攜帶的流標(biāo)簽查找所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng),并根據(jù)查找到的所述 第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)中第一數(shù)據(jù)報(bào)文的源IP地址和目的IP地址、以及 所述新增IP頭中攜帶的從所述第一數(shù)據(jù)報(bào)文自帶IP頭中復(fù)制的域信息,將解封裝后的第 二數(shù)據(jù)報(bào)文重新封裝成所述第一數(shù)據(jù)報(bào)文。其中,本發(fā)明裝置的各個(gè)模塊可以集成于一體,也可以分離部署。上述模塊可以合 并為一個(gè)模塊,也可以進(jìn)一步拆分成多個(gè)子模塊。基于與上述方法同樣的發(fā)明構(gòu)思,本發(fā)明還提出了一種基于GRE隧道的數(shù)據(jù)傳輸 系統(tǒng),包括發(fā)送端和接收端,所述發(fā)送端和所述接收端為GRE隧道的兩端,所述發(fā)送端向所 述接收端發(fā)送第一數(shù)據(jù)報(bào)文,所述發(fā)送端和所述接收端中存儲(chǔ)了第一數(shù)據(jù)報(bào)文GRE隧道流 標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)且其狀態(tài)為Forwarding狀態(tài);所述發(fā)送端,用于根據(jù)所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng),刪除所述第 一數(shù)據(jù)報(bào)文的自帶IP頭并封裝成帶有流標(biāo)簽的第二數(shù)據(jù)報(bào)文,然后將所述第二數(shù)據(jù)報(bào)文 發(fā)送給所述接收端;
所述接收端,用于收到所述第二數(shù)據(jù)報(bào)文,根據(jù)所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo) 簽轉(zhuǎn)發(fā)表項(xiàng),對(duì)所述第二數(shù)據(jù)報(bào)文解封裝并重新封裝成第一數(shù)據(jù)報(bào)文后轉(zhuǎn)發(fā)。通過(guò)以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可以通 過(guò)硬件實(shí)現(xiàn),也可以借助軟件加必要的通用硬件平臺(tái)的方式來(lái)實(shí)現(xiàn)?;谶@樣的理解,本發(fā) 明的技術(shù)方案可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該軟件產(chǎn)品可以存儲(chǔ)在一個(gè)非易失性存儲(chǔ) 介質(zhì)(可以是⑶-ROM,u盤(pán),移動(dòng)硬盤(pán)等)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可 以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。本領(lǐng)域技術(shù)人員可以理解附圖只是一個(gè)優(yōu)選實(shí)施例的示意圖,附圖中的模塊或流 程并不一定是實(shí)施本發(fā)明所必須的。本領(lǐng)域技術(shù)人員可以理解實(shí)施例中的裝置中的模塊可以按照實(shí)施例描述進(jìn)行分 布于實(shí)施例的裝置中,也可以進(jìn)行相應(yīng)變化位于不同于本實(shí)施例的一個(gè)或多個(gè)裝置中。上 述實(shí)施例的模塊可以合并為一個(gè)模塊,也可以進(jìn)一步拆分成多個(gè)子模塊。上述本發(fā)明序號(hào)僅僅為了描述,不代表實(shí)施例的優(yōu)劣。以上公開(kāi)的僅為本發(fā)明的幾個(gè)具體實(shí)施例,但是,本發(fā)明并非局限于此,任何本領(lǐng) 域的技術(shù)人員能思之的變化都應(yīng)落入本發(fā)明的保護(hù)范圍。
權(quán)利要求
一種基于通用路由封裝GRE隧道的數(shù)據(jù)傳輸方法,應(yīng)用于包括發(fā)送端和接收端的系統(tǒng)中,所述發(fā)送端和所述接收端為GRE隧道的兩端,所述發(fā)送端向所述接收端發(fā)送第一數(shù)據(jù)報(bào)文,其特征在于,所述發(fā)送端和所述接收端中存儲(chǔ)了第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)且其狀態(tài)為Forwarding狀態(tài),所述方法包括以下步驟根據(jù)所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng),所述發(fā)送端刪除所述第一數(shù)據(jù)報(bào)文的自帶IP頭并封裝成帶有流標(biāo)簽的第二數(shù)據(jù)報(bào)文,然后將所述第二數(shù)據(jù)報(bào)文發(fā)送給所述接收端;所述接收端收到所述第二數(shù)據(jù)報(bào)文,根據(jù)所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng),對(duì)所述第二數(shù)據(jù)報(bào)文解封裝并重新封裝成所述第一數(shù)據(jù)報(bào)文后進(jìn)行轉(zhuǎn)發(fā)。
2.如權(quán)利要求1所述的方法,其特征在于,所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng) 的內(nèi)容包括GRE隧道的隧道標(biāo)識(shí)、第一數(shù)據(jù)報(bào)文的源IP地址和目的IP地址、流標(biāo)簽、表項(xiàng) 狀態(tài);所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)的創(chuàng)建包括以下步驟所述發(fā)送端為所述第一數(shù)據(jù)報(bào)文分配流標(biāo)簽,根據(jù)所述流標(biāo)簽創(chuàng)建所述第一數(shù)據(jù)報(bào)文 GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng);并將所述流標(biāo)簽發(fā)送給所述接收端,由所述接收端根據(jù)所述流 標(biāo)簽,創(chuàng)建所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)。
3.如權(quán)利要求2所述的方法,其特征在于,將所述流標(biāo)簽發(fā)送給所述接收端,由所述接 收端根據(jù)所述流標(biāo)簽,創(chuàng)建所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng),具體包括所述發(fā)送端判斷所述第一數(shù)據(jù)報(bào)文加上新增IP頭和GRE頭的長(zhǎng)度是否超過(guò)預(yù)設(shè)MTU 閾值;如果是,所述發(fā)送端向所述接收端發(fā)送凈荷為空的數(shù)據(jù)報(bào)文,所述凈荷為空的數(shù)據(jù)報(bào) 文中攜帶所述第一數(shù)據(jù)報(bào)文的源IP地址和目的IP地址、所述流標(biāo)簽;如果否,所述發(fā)送端 向所述接收端發(fā)送凈荷不為空的數(shù)據(jù)報(bào)文,所述凈荷不為空的數(shù)據(jù)報(bào)文中攜帶所述流標(biāo)簽 和所述第一數(shù)據(jù)報(bào)文;所述接收端接收所述凈荷為空的數(shù)據(jù)報(bào)文或者所述凈荷不為空的數(shù)據(jù)報(bào)文,并根據(jù)接 收到報(bào)文中的源IP地址、目的IP地址和流標(biāo)簽創(chuàng)建所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn) 發(fā)表項(xiàng),將所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)設(shè)置為Forwarding狀態(tài),并向所述 發(fā)送端返回創(chuàng)建成功消息,由所述發(fā)送端根據(jù)所述創(chuàng)建成功消息將自身記錄的所述第一數(shù) 據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)設(shè)置為Forwarding狀態(tài)。
4.如權(quán)利要求1至3任一權(quán)利要求所述的方法,其特征在于,所述方法還包括在所述發(fā)送端和所述接收端創(chuàng)建所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)之后,為 所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)設(shè)置?;疃〞r(shí)器,所述發(fā)送端根據(jù)所述?;疃?時(shí)器定時(shí)向所述接收端發(fā)送負(fù)荷為空的IP報(bào)文,所述負(fù)荷為空的IP報(bào)文中攜帶流標(biāo)簽,由 所述接收端根據(jù)所述負(fù)荷為空的IP報(bào)文向所述發(fā)送端回應(yīng)成功報(bào)文;如果預(yù)設(shè)第一時(shí)間 內(nèi)所述發(fā)送端無(wú)法接收到所述成功報(bào)文,所述發(fā)送端將所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽 轉(zhuǎn)發(fā)表項(xiàng)設(shè)置為Init狀態(tài),并向所述接收端重新發(fā)起流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)同步過(guò)程;且所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)設(shè)置老化定時(shí)器,如果預(yù)設(shè)第二時(shí)間內(nèi)沒(méi) 有接收到所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)對(duì)應(yīng)的第一數(shù)據(jù)報(bào)文,所述發(fā)送端將 所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)設(shè)置為Stale狀態(tài),并向所述接收端發(fā)送流標(biāo)簽回收消息,所述流標(biāo)簽回收消息中攜帶流標(biāo)簽和流標(biāo)簽轉(zhuǎn)發(fā)結(jié)束標(biāo)記;當(dāng)所述接收端接 收到所述流標(biāo)簽回收消息,則根據(jù)所述流標(biāo)簽回收消息中的流標(biāo)簽清空對(duì)應(yīng)的第一數(shù)據(jù)報(bào) 文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng),并向所述發(fā)送端回應(yīng)確認(rèn)消息;當(dāng)所述發(fā)送端接收到所述確 認(rèn)消息后,清空對(duì)應(yīng)的第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)。
5.如權(quán)利要求1所述的方法,其特征在于,所述發(fā)送端刪除所述第一數(shù)據(jù)報(bào)文的自帶 IP頭并封裝成帶有流標(biāo)簽的第二數(shù)據(jù)報(bào)文,具體包括所述發(fā)送端刪除所述第一數(shù)據(jù)報(bào)文自帶IP頭,在所述第一數(shù)據(jù)報(bào)文中新增IP頭和GRE 頭,并封裝成所述第二數(shù)據(jù)報(bào)文;其中,所述GRE頭中攜帶了所述第一數(shù)據(jù)報(bào)文GRE隧道流 標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)中的流標(biāo)簽,所述新增IP頭的源IP地址和目的IP地址為GRE隧道接口的源 IP地址和目的IP地址,且所述新增IP頭中攜帶了從所述第一數(shù)據(jù)報(bào)文自帶IP頭中復(fù)制的 域信息;根據(jù)所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng),對(duì)所述第二數(shù)據(jù)報(bào)文解封裝并重新 封裝成所述第一數(shù)據(jù)報(bào)文后進(jìn)行轉(zhuǎn)發(fā),具體包括所述接收端將所述第二數(shù)據(jù)報(bào)文解封裝去掉所述新增IP頭和GRE頭,并根據(jù)所述GRE 頭中攜帶的流標(biāo)簽查找所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng),并根據(jù)查找到的所述 第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)中第一數(shù)據(jù)報(bào)文的源IP地址和目的IP地址、以及 所述新增IP頭中攜帶的從所述第一數(shù)據(jù)報(bào)文自帶IP頭中復(fù)制的域信息,將解封裝后的第 二數(shù)據(jù)報(bào)文重新封裝成所述第一數(shù)據(jù)報(bào)文后進(jìn)行轉(zhuǎn)發(fā)。
6.如權(quán)利要求1所述的方法,其特征在于,所述發(fā)送端刪除所述第一數(shù)據(jù)報(bào)文的自帶 IP頭并封裝成帶有流標(biāo)簽的第二數(shù)據(jù)報(bào)文,具體包括所述發(fā)送端刪除所述第一數(shù)據(jù)報(bào)文自帶IP頭并封裝成帶有流標(biāo)簽的第二數(shù)據(jù)報(bào)文; 其中,所述新增IP頭的源IP地址和目的IP地址為GRE隧道接口的源IP地址和目的IP地 址,TOS域字段攜帶了所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)中的流標(biāo)簽,協(xié)議字段為 GRE協(xié)議類(lèi)型,且所述新增IP頭中攜帶了從所述第一數(shù)據(jù)報(bào)文自帶IP頭中復(fù)制的域信息;根據(jù)所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng),對(duì)所述第二數(shù)據(jù)報(bào)文解封裝并重新 封裝成所述第一數(shù)據(jù)報(bào)文后進(jìn)行轉(zhuǎn)發(fā),具體包括當(dāng)收到所述第二數(shù)據(jù)報(bào)文后,如果所述第二數(shù)據(jù)報(bào)文的TOS域字段中攜帶了流標(biāo)簽, 則所述接收端將所述第二數(shù)據(jù)報(bào)文解封裝去掉所述新增IP頭,并根據(jù)所述TOS域字段中攜 帶的流標(biāo)簽查找所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng),并根據(jù)查找到的所述第一數(shù) 據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)中第一數(shù)據(jù)報(bào)文的源IP地址和目的IP地址、以及所述新 增IP頭中攜帶的從所述第一數(shù)據(jù)報(bào)文自帶IP頭中復(fù)制的域信息,將解封裝后的第二數(shù)據(jù) 報(bào)文重新封裝成所述第一數(shù)據(jù)報(bào)文后進(jìn)行轉(zhuǎn)發(fā)。
7.一種基于GRE隧道的發(fā)送端,應(yīng)用于包括所述發(fā)送端和接收端的系統(tǒng)中,所述發(fā)送 端和所述接收端為GRE隧道的兩端,其特征在于,所述發(fā)送端和所述接收端中存儲(chǔ)了第一 數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)且其狀態(tài)為Forwarding狀態(tài),所述發(fā)送端包括存儲(chǔ)模塊,與生成模塊連接,用于存儲(chǔ)第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng);生成模塊,分別與存儲(chǔ)模塊和第一發(fā)送模塊連接,用于當(dāng)接收到需要通過(guò)GRE隧道進(jìn) 行轉(zhuǎn)發(fā)的第一數(shù)據(jù)報(bào)文后,根據(jù)所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)列表,刪除所述第 一數(shù)據(jù)報(bào)文的自帶IP頭并封裝成帶有流標(biāo)簽的第二數(shù)據(jù)報(bào)文;第一發(fā)送模塊,與所述生成模塊連接,用于將所述第二數(shù)據(jù)報(bào)文發(fā)送給所述接收端。
8.如權(quán)利要求7所述的發(fā)送端,其特征在于,所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表 項(xiàng)中的內(nèi)容包括GRE隧道的隧道標(biāo)識(shí)、第一數(shù)據(jù)報(bào)文的源IP地址和目的IP地址、流標(biāo)簽、 表項(xiàng)狀態(tài);所述發(fā)送端還包括處理模塊,與所述生成模塊連接,用于為所述第一數(shù)據(jù)報(bào)文分配流標(biāo)簽,并根據(jù)所述流 標(biāo)簽為所述第一數(shù)據(jù)報(bào)文創(chuàng)建第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng);第二發(fā)送模塊,與所述處理模塊連接,用于將所述流標(biāo)簽發(fā)送給所述接收端,由所述接 收端根據(jù)所述流標(biāo)簽為所述第一數(shù)據(jù)報(bào)文創(chuàng)建第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)。
9.如權(quán)利要求8所述的發(fā)送端,其特征在于,所述第二發(fā)送模塊,具體用于判斷所述第一數(shù)據(jù)報(bào)文加上新增IP頭和GRE頭的長(zhǎng)度是 否超過(guò)預(yù)設(shè)MTU閾值;如果是,向所述接收端發(fā)送凈荷為空的數(shù)據(jù)報(bào)文,所述凈荷為空的數(shù) 據(jù)報(bào)文中攜帶所述第一數(shù)據(jù)報(bào)文的源IP地址和目的IP地址、所述流標(biāo)簽;如果否,向所述 接收端發(fā)送凈荷不為空的數(shù)據(jù)報(bào)文,所述凈荷不為空的數(shù)據(jù)報(bào)文中攜帶所述流標(biāo)簽和所述 第一數(shù)據(jù)報(bào)文。
10.如權(quán)利要求9所述的發(fā)送端,其特征在于,所述發(fā)送端還包括表項(xiàng)維護(hù)模塊,用于為所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)設(shè)置?;疃〞r(shí)器, 根據(jù)所述?;疃〞r(shí)器定時(shí)向所述接收端發(fā)送負(fù)荷為空的IP報(bào)文,所述負(fù)荷為空的IP報(bào)文 中攜帶流標(biāo)簽,由所述接收端根據(jù)所述負(fù)荷為空的IP報(bào)文向所述發(fā)送端回應(yīng)成功報(bào)文;如 果預(yù)設(shè)第一時(shí)間內(nèi)無(wú)法接收到所述成功報(bào)文,將所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表 項(xiàng)設(shè)置為Init狀態(tài),并向所述接收端重新發(fā)起流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)同步過(guò)程;并為所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)設(shè)置老化定時(shí)器,如果預(yù)設(shè)第二時(shí)間 內(nèi)沒(méi)有接收到所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)對(duì)應(yīng)的第一數(shù)據(jù)報(bào)文,將所述第 一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)設(shè)置為Stale狀態(tài),并向所述接收端發(fā)送流標(biāo)簽回收 消息,所述流標(biāo)簽回收消息中攜帶流標(biāo)簽和流標(biāo)簽轉(zhuǎn)發(fā)結(jié)束標(biāo)記;接收來(lái)自所述接收端的 確認(rèn)消息,并清空對(duì)應(yīng)的第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)。
11.如權(quán)利要求7至10任一權(quán)利要求所述的發(fā)送端,其特征在于,所述生成模塊,具體用于刪除所述第一數(shù)據(jù)報(bào)文自帶IP頭,在所述刪除自帶IP頭的第 一數(shù)據(jù)報(bào)文中新增IP頭和GRE頭,并封裝成所述第二數(shù)據(jù)報(bào)文;其中,所述GRE頭中攜帶了 所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)中的流標(biāo)簽,所述新增IP頭的源IP地址和目 的IP地址為GRE隧道接口的源IP地址和目的IP地址,且所述新增IP頭中攜帶了從所述 第一數(shù)據(jù)報(bào)文自帶IP頭中復(fù)制的域信息;或者,刪除所述第一數(shù)據(jù)報(bào)文自帶IP頭,在所述刪除自帶IP頭的第一數(shù)據(jù)報(bào)文中新增IP 頭,并封裝成所述第二數(shù)據(jù)報(bào)文;其中,所述新增IP頭的源IP地址和目的IP地址為GRE隧 道接口的源IP地址和目的IP地址,TOS域字段攜帶了所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽 轉(zhuǎn)發(fā)表項(xiàng)中的流標(biāo)簽,協(xié)議字段為GRE協(xié)議類(lèi)型,且所述新增IP頭中攜帶了從所述第一數(shù) 據(jù)報(bào)文自帶IP頭中復(fù)制的域信息。
12.一種基于GRE隧道的接收端,應(yīng)用于包括發(fā)送端和所述接收端的系統(tǒng)中,所述發(fā)送 端和所述接收端為GRE隧道的兩端,所述發(fā)送端向所述接收端發(fā)送第一數(shù)據(jù)報(bào)文,其特征 在于,所述發(fā)送端和所述接收端中存儲(chǔ)了第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)且其狀態(tài)為Forwarding狀態(tài),所述接收端包括存儲(chǔ)模塊,分別與第一接收模塊和第二接收模塊連接,用于存儲(chǔ)第一數(shù)據(jù)報(bào)文GRE隧 道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng);第一接收模塊,分別與存儲(chǔ)模塊和創(chuàng)建模塊連接,用于當(dāng)存儲(chǔ)模塊沒(méi)有存儲(chǔ)對(duì)應(yīng)的第 一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)時(shí),接收來(lái)自所述發(fā)送端的流標(biāo)簽;創(chuàng)建模塊,與所述第一接收模塊連接,用于根據(jù)所述流標(biāo)簽為所述第一數(shù)據(jù)報(bào)文創(chuàng)建 第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng);第二接收模塊,與所述存儲(chǔ)模塊連接,用于當(dāng)存儲(chǔ)模塊存儲(chǔ)了對(duì)應(yīng)的第一數(shù)據(jù)報(bào)文GRE 隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)時(shí),接收第二數(shù)據(jù)報(bào)文,所述第二數(shù)據(jù)報(bào)文為所述發(fā)送端刪除所述第 一數(shù)據(jù)報(bào)文的自帶IP頭并封裝成帶有流標(biāo)簽的數(shù)據(jù)報(bào)文。
13.如權(quán)利要求12所述的接收端,其特征在于,所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā) 表項(xiàng)的內(nèi)容包括GRE隧道的隧道標(biāo)識(shí)、第一數(shù)據(jù)報(bào)文的源IP地址和目的IP地址、流標(biāo)簽、 表項(xiàng)狀態(tài);所述創(chuàng)建模塊,具體用于當(dāng)接收到凈荷為空的數(shù)據(jù)報(bào)文或者凈荷不為空的數(shù)據(jù)報(bào)文 時(shí),根據(jù)接收到報(bào)文中的源IP地址、目的IP地址和流標(biāo)簽為所述第一數(shù)據(jù)報(bào)文創(chuàng)建第一 數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng),將所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)設(shè)置為 Forwarding狀態(tài),并向所述發(fā)送端返回創(chuàng)建成功消息,由所述發(fā)送端根據(jù)所述創(chuàng)建成功消 息將自身記錄的所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)設(shè)置為Forwarding狀態(tài)。
14.如權(quán)利要求13所述的接收端,其特征在于,所述接收端還包括表項(xiàng)維護(hù)模塊,用于為所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)設(shè)置保活定時(shí)器, 當(dāng)接收到來(lái)自發(fā)送端的負(fù)荷為空的IP報(bào)文時(shí),根據(jù)所述負(fù)荷為空的IP報(bào)文向所述發(fā)送端 回應(yīng)成功報(bào)文;所述負(fù)荷為空的IP報(bào)文中攜帶流標(biāo)簽;并為所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)設(shè)置老化定時(shí)器,當(dāng)接收到來(lái)自發(fā)送 端的流標(biāo)簽回收消息時(shí),則根據(jù)所述流標(biāo)簽回收消息中的流標(biāo)簽清空對(duì)應(yīng)的第一數(shù)據(jù)報(bào)文 GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng),并向所述發(fā)送端回應(yīng)確認(rèn)消息;所述流標(biāo)簽回收消息中攜帶流 標(biāo)簽和流標(biāo)簽轉(zhuǎn)發(fā)結(jié)束標(biāo)記。
15.如權(quán)利要求12至14任一權(quán)利要求所述的接收端,其特征在于,所述接收端還包括處理模塊,與所述第二接收模塊連接,用于當(dāng)確定所述第二數(shù)據(jù)報(bào)文的GRE頭中攜帶 了流標(biāo)簽時(shí),將所述第二數(shù)據(jù)報(bào)文解封裝去掉新增IP頭和GRE頭,并根據(jù)所述GRE頭中攜 帶的流標(biāo)簽查找所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng),并根據(jù)查找到的所述第一數(shù) 據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)中第一數(shù)據(jù)報(bào)文的源IP地址和目的IP地址、以及所述新 增IP頭中攜帶的從所述第一數(shù)據(jù)報(bào)文自帶IP頭中復(fù)制的域信息,將解封裝后的第二數(shù)據(jù) 報(bào)文重新封裝成所述第一數(shù)據(jù)報(bào)文;或者,當(dāng)確定所述第二數(shù)據(jù)報(bào)文的協(xié)議類(lèi)型為GRE類(lèi)型,且所述第二數(shù)據(jù)報(bào)文的TOS域字段 中攜帶了流標(biāo)簽時(shí),將所述第二數(shù)據(jù)報(bào)文解封裝去掉新增IP頭,并根據(jù)所述TOS域字段中 攜帶的流標(biāo)簽查找所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng),并根據(jù)查找到的所述第一 數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)中第一數(shù)據(jù)報(bào)文的源IP地址和目的IP地址、以及所述 新增IP頭中攜帶的從所述第一數(shù)據(jù)報(bào)文自帶IP頭中復(fù)制的域信息,將解封裝后的第二數(shù)據(jù)報(bào)文重新封裝成所述第一數(shù)據(jù)報(bào)文。
16. 一種基于GRE隧道的數(shù)據(jù)傳輸系統(tǒng),包括發(fā)送端和接收端,所述發(fā)送端和所述接收 端為GRE隧道的兩端,所述發(fā)送端向所述接收端發(fā)送第一數(shù)據(jù)報(bào)文,其特征在于,所述發(fā)送 端和所述接收端中存儲(chǔ)了第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng)且其狀態(tài)為Forwarding 狀態(tài);所述發(fā)送端,用于根據(jù)所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng),刪除所述第一數(shù) 據(jù)報(bào)文的自帶IP頭并封裝成帶有流標(biāo)簽的第二數(shù)據(jù)報(bào)文,然后將所述第二數(shù)據(jù)報(bào)文發(fā)送 給所述接收端;所述接收端,用于收到所述第二數(shù)據(jù)報(bào)文,根據(jù)所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn) 發(fā)表項(xiàng),對(duì)所述第二數(shù)據(jù)報(bào)文解封裝并重新封裝成第一數(shù)據(jù)報(bào)文后轉(zhuǎn)發(fā)。
全文摘要
本發(fā)明公開(kāi)了一種基于GRE隧道的數(shù)據(jù)傳輸方法,包括以下步驟根據(jù)第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng),發(fā)送端刪除所述第一數(shù)據(jù)報(bào)文的自帶IP頭并封裝成帶有流標(biāo)簽的第二數(shù)據(jù)報(bào)文,然后將所述第二數(shù)據(jù)報(bào)文發(fā)送給所述接收端;所述接收端收到所述第二數(shù)據(jù)報(bào)文,根據(jù)所述第一數(shù)據(jù)報(bào)文GRE隧道流標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng),對(duì)所述第二數(shù)據(jù)報(bào)文解封裝并重新封裝成所述第一數(shù)據(jù)報(bào)文后進(jìn)行轉(zhuǎn)發(fā)。本發(fā)明中,減少加封裝后所增加的報(bào)文字節(jié),提高GRE隧道的數(shù)據(jù)傳輸效率,并解決了數(shù)據(jù)報(bào)文無(wú)法經(jīng)過(guò)GRE隧道進(jìn)行傳輸?shù)膯?wèn)題。
文檔編號(hào)H04L12/56GK101848171SQ20101021400
公開(kāi)日2010年9月29日 申請(qǐng)日期2010年7月1日 優(yōu)先權(quán)日2010年7月1日
發(fā)明者蔣益群, 顧雷雷 申請(qǐng)人:杭州華三通信技術(shù)有限公司