通用路由封裝協議GRE 提供了將一種協議報文封裝在另一種協議報文中的機制,是一種三層隧道封裝技術;可以對IPv4協議的數據報文進行再封裝,使這些被封裝的數據報文能夠在另一個網絡層協議(如IPv4)中傳輸;報文通過GRE隧道透明的傳輸,可以解決外網主動訪問內網的問題;GRE可以封裝組播數據和路由選擇協議,結合IP Sec使用,從而保證語音、視頻等組播業務的安全。
GRE實現機制簡單,對隧道兩端的設備負擔小;GRE隧道可以有效利用了原有的網絡架構,降低成本;GRE隧道擴展了跳數受限網絡協議的工作範圍,支持企業靈活設計網絡拓撲;GRE隧道支持MPLS LDP,使用GRE隧道承載MPLS LDP報文,建立LDP LSP,實現MPLS骨幹網的互通;GRE隧道將不連續的子網連接起來,用于組建VPN,實現企業總部和分支間安全的連接。
GRE的工作原理:
1、C–校驗和標志位;如配置了checksun則該位置爲1,同時校驗和(可選)、偏離(可選)部分的共4 bytes出現在GRE頭部;如不配置checksun則該位置爲0,同時校驗和(可選)、偏離(可選)部分不出現在GRE頭部。
2、R–路由標志位;如R爲1,校驗和(可選)、偏離(可選)、路由(可選)部分的共8 bytes出現在GRE頭部;如R爲0, 校驗和(可選)、偏離(可選)、路由(可選)部分不出現在GRE頭部。
3、K–密鑰標志位;如配置了KEY則該位置爲1,密鑰(可選)部分出現在GRE頭部;如不配置KEY則該位置爲0,密鑰(可選)部分不出現在GRE頭部。
4、S–序列好同步標志位;如配置了sequence-datagrams則該位置爲1,同時序列號(可選)部分的共4 bytes出現在GRE頭部。如不配置sequence-datagrams則該位置爲0,同時序列號(可選)部分不出現在GRE頭部。
5、s:嚴格源路由標志位。所有的路由都符合嚴格源路由,該位爲1。通常爲0。
6、遞歸控制:該位置需爲0
7、標志位:未定義,需爲0
8、版本:需爲0
9、協議類型:常用的協議,例如IP協議爲0800
▶報文封裝和解封裝過程:
GRE封裝報文時,封裝前的報文稱爲淨荷,封裝前的報文協議稱爲乘客協議,然後先封裝GRE頭部,GRE成爲封裝協議,也叫運載協議,最後負責對封裝後的報文進行轉發的協議稱爲傳輸協議。
1)路由器從連接私網的接口接收到報文後,檢查報文頭中的目的IP地址字段,在路由表查找出接口,發現出接口是隧道接口,將報文發送給隧道模塊進行處理。
2)隧道模塊接收到報文後首先根據乘客協議的類型和當前GRE隧道配置的校驗和參數,對報文進行GRE封裝,添加GRE報頭。
3)路由器給報文添加傳輸協議報頭即IP報頭(公網地址);該IP報頭的源地址就是隧道源地址,目的地址就是隧道目的地址。
4)路由器根據新添加的IP報頭目的地址,在路由表中查找相應的出接口並發送報文,封裝後的報文將在公網中傳輸。
5、接收端路由器從連接公網的接口收到報文後,首先分析IP報文頭,如果發現協議類型字段的值爲47,表示協議爲GRE,于是出接口將報文交給GRE模塊處理。GRE模塊去掉IP報文頭和GRE報文頭,並根據GRE報文頭的協議類型字段,發現此報文的乘客協議爲私網中運行的協議,于是將報文交給該協議處理。
▶Keepalive檢測:
1)Keepalive檢測功能用于在任意時刻檢測隧道鏈路是否處于Keepalive狀態,即檢測隧道對端是否可達。如果對端不可達,隧道連接就會及時關閉,避免形成數據空洞;Keepalive檢測功能開啓後,GRE隧道本端會定期(默認值爲5秒,deadtime爲15秒)向對端發送Keepalive探測報文;若對端可達,則本端會收到對端的回應報文;若對端不可達,則收不到對端的回應報文。
2)如果在隧道一端配置了Keepalive功能,無論對端是否配置Keepalive,配置的Keepalive功能在該端都生效;隧道對端收到Keepalive探測報文,無論是否配置Keepalive,都會給源端發送一個回應報文。
3)Keepalive檢測功能開啓後,源端會創建一個計數器並周期性地發送Keepalive探測報文同時進行計數;每發送一個探測報文,不可達計數加1。
4)如果源端在計數器值達到預先設置的值之前收到回應報文,則表明對端可達。如果計數器值達到預先設置的重試次數,源端還是沒有收到回應報文,則認爲對端不可達。此時,源端將關閉隧道連接。
▶GRE over IPsec
1)GRE本身並不支持加密,因而通過GRE隧道傳輸的流量是不加密的。將IPSec技術與GRE相結合,可以先建立GRE隧道對報文進行GRE封裝,然後再建立IPSec隧道對報文進行加密,以保證報文傳輸的完整性和私密性。
2)IPSec VPN技術可以創建一條跨越共享公網的隧道,從而實現私網互聯;IPSec VPN能夠安全傳輸IP報文,但無法在隧道的兩個端點之間運行RIP和OSPF等路由協議;而GRE可以將路由協議信息封裝在另一種協議報文(IPv4)中進行傳輸。3)使用GRE可以克服IGP協議的一些局限性。例如,RIP路由協議是一種距離矢量路由協議,最大跳數爲15。如果網絡直徑超過15,設備將無法通信。這種情況下,可以使用GRE技術在兩個網絡節點之間搭建隧道,隱藏它們之間的跳數,擴大網絡的工作範圍。