GRE協議的封裝功能簡述
接下來我們主要介紹一下GRE協議。那么什么是GRE協議呢?或許不少朋友都覺得比較陌生。那么首先我們還是簡單說一下這個概念。然后對這個協議的一些結構進行一下分析。
1. GRE協議概念
通用路由封裝GRE(Generic Routing Encapsulation)是對某些網絡層協議(如IP和IPX)的報文進行封裝,使這些被封裝的報文能夠在另一網絡層協議(如IP)中傳輸。
GRE可以作為VPN的第三層隧道協議,在協議層之間采用隧道(Tunnel)技術。Tunnel是一個虛擬的點對點的連接,可以看成僅支持點對點連接的虛擬接口,這個接口提供了一條通路,使封裝的數據報能夠在這個通路上傳輸,并在一個Tunnel的兩端分別對數據報進行封裝及解封裝。
2. 報文封裝及解封裝
(1) 報文的傳輸
報文在Tunnel中傳輸包括加封裝與解封裝兩個過程,下圖的網絡為例說明這兩個過程:
加封裝過程:
連接Novell group1的接口收到IPX數據報后,首先交由IPX協議處理。
IPX協議檢查IPX報頭中的目的地址域來確定如何路由此包。如果發現報文的目的地址要經過網號為1f的網絡(Tunnel的虛擬網號),則將此報文發給網號為1f的Tunnel接口。
Tunnel接口收到此報文后進行GRE協議封裝,封裝完成后交給IP模塊處理,在封裝IP報文頭后,根據報文目的地址及路由表交由相應的網絡接口處理。
解封裝過程:
解封裝過程和加封裝過程相反。從Tunnel接口收到IP報文,檢查目的地址,當發現目的地就是此路由器時,系統去掉此報文的IP報頭,交給GRE協議模塊處理;GRE協議模塊完成相應的處理后,去掉GRE報頭,再交由IPX協議模塊處理,IPX協議模塊象對待一般數據報一樣對此數據報進行處理。
(2) 基本概念
系統收到的需要封裝和路由的數據報稱為凈荷(Payload),凈荷首先被加上GRE協議封裝,成為GRE報文;再被封裝在IP報文中,這樣IP層就可以完全負責此報文的轉發(forward)。
負責轉發的IP協議被稱為傳輸協議(Delivery Protocol或者Transport Protocol)。封裝好的報文的形式如下圖所示:
舉例來說,一個封裝在IP Tunnel中的IPX報文的格式可以表示為:
Passenger Protocol:乘客協議
Carrier Protocol/Encapsulation Protocol:運載協議/封裝協議
Transport Protocol:傳輸協議