GRE封裝解封裝過程


GRE(Generic Routing Encapsulation,通用路由封裝)協議是對某些網絡層協議(IPX, AppleTalk, IP,etc.)的數據報文進行封裝,使這些被封裝的數據報文能夠在另一個網絡層協議(如IP)中傳輸。這是GRE最初的定義,最新的GRE封裝規范,已經可以封裝二層數據幀了,如PPP幀、MPLS等。在RFC2784中,GRE的定義是“X over Y”,X和Y可以是任意的協議。GRE真的變成了“通用路由封裝”了。

        GRE采用了Tunnel(隧道)技術,是VPN(Virtual Private Network)的第三層隧道協議。Tunnel是一個虛擬的點對點的連接,提供了一條通路使封裝的數據報文能夠在這個通路上傳輸,並且在一個Tunnel的兩端分別對數據報進行封裝及解封裝

GRE加封裝過程如下:

 

      1、Router A 收到X 協議報文后,首先交由X 協議處理

  2、X 協議檢查報文頭中的目的地址域來確定如何路由此包

  3、若報文的目的地址要經過Tunnel 才能到達,則設備將此報文發給相應的Tunnel 接口

  4、Tunnel 口收到此報文后進行GRE 封裝,在封裝IP 報文頭后,設備根據此IP 包的目的地址及路由表對報文進行轉發,從相應的網絡接口發送出去。

    5、Router A根據封裝的IP報文頭的目的地址,查找路由表,對封裝后的報文進行轉發。

 

      GRE協議實際上是一種封裝協議,它提供了將一種協議的報文封裝在另一種協議報文中的機制,使報文能夠在異種網絡中傳輸。異種報文傳輸的通道稱為tunnel(隧道)。GRE隧道不能配置二層信息,但可以配置IP地址。GRE利用為隧道指定的實際物理接口完成轉發,轉發過程如下:

  (1) 所有發往遠端VPN的原始報文,首先被發送到隧道源端;

  (2) 原始報文在隧道源端進行GRE封裝,填寫隧道建立時確定的隧道源地址和目的地址,然后再通過公共IP網絡轉發到遠端VPN網絡。

      GRE封裝后的報文格式:

 

[Delivery header(Transport protocol)]——[GRE header(Encapsulation protocol)]——[Payload header(Passenger potrocol)]

 

圖1.GRE協議棧

圖2.GRE封裝格式

GRE解封裝過程:與加封裝過程相反

 

(1)RouterB 從Tunnel 接口收到IP報文,檢查目的地址
(2)如果發現目的地是本路由器,則RouterB 剝掉此報文的IP 報頭,交給GRE 協議處理(進行檢驗密鑰、檢查校驗和及報文的序列號等)
(3)GRE 協議完成相應的處理后,剝掉GRE 報頭,再交由X 協議對此數據報進行后續的轉發處理。

 

 

注:GRE收發雙方的加封裝、解封裝處理,以及由於封裝造成的數據量增加,會導致使用GRE后設備的數據轉發效率有一定程度的下降。

      總結起來,GRE的封裝過程如下:當報文需要經由隧道接口處理時,IP層的輸出函數調用tunnel接口的輸出函數進行加封裝處理。加封裝處理結束后,再進行IP轉發。GRE隧道對端的解封裝過程如下:當IP層接收到GRE報文,檢查到外層IP報文頭部中的協議號是47時(UDP為17,TCP為6,ICMP為1),那么,IP層輸入入口函數會根據協議開關表,直接調用GRE的解封裝處理函數,對GRE解封裝。解封裝完成后,再將原始數據報文送入IP輸入隊列中,以便進行進一步的傳輸。

轉自:http://www.pbsvpn.com/article/20150330110849.html

參考:http://baike.baidu.com/view/3871502.htm#3

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM