1. 協議簡介
gre(generic routing encapsulation,通用路由封裝)協議是對某些網絡層協議(如ip 和ipx)的數據報進行封裝,使這些被封裝的數據報能夠在另一個網絡層協議(如ip)中傳輸。gre 是vpn(virtual private network)的第三層隧道協議,在協議層之間采用了一種被稱之為tunnel(隧道)的技術。tunnel 是一個虛擬的點對點的連接,在實際中可以看成僅支持點對點連接的虛擬接口,這個接口提供了一條通路使封裝的數據報能夠在這個通路上傳輸,並且在一個 tunnel 的兩端分別對數據報進行封裝及解封裝。
一個報文要想在tunnel中傳輸,必須要經過加封裝與解封裝兩個過程,下面以圖3-1的網絡為例說明這兩個過程:
(1) 加封裝過程
連接novell group1 的接口收到ipx 數據報后首先交由ipx 協議處理,ipx 協議檢查ipx 報頭中的目的地址域來確定如何路由此包。若報文的目的地址被發現要路由經過網號為1f 的網絡(tunnel 的虛擬網號),則將此報文發給網號為1f 的tunnel端口。tunnel 口收到此包后進行gre 封裝,封裝完成后交給ip 模塊處理,在封裝ip 報文頭后,根據此包的目的地址及路由表交由相應的網絡接口處理。
(2) 解封裝的過程
解封裝過程和加封裝的過程相反。從tunnel 接口收到的ip 報文,通過檢查目的地址,當發現目的地就是此路由器時,系統剝掉此報文的ip 報頭,交給gre 協議模塊處理(進行檢驗密鑰、檢查校驗和及報文的序列號等);gre 協議模塊完成相應的處理后,剝掉gre 報頭,再交由ipx 協議模塊處理,ipx 協議模塊象對待一般數據報一樣對此數據報進行處理。
系統收到一個需要封裝和路由的數據報,稱之為凈荷(payload),這個凈荷首先被加上gre 封裝,成為gre 報文;再被封裝在ip 報文中,這樣就可完全由ip 層負責此報文的向前傳輸(forwarded)。人們常把這個負責向前傳輸ip 協議稱為傳輸協議(delivery protocol 或者transport protocol)。
封裝好的報文的形式如下圖所示:
舉例來說,一個封裝在ip tunnel 中的ipx 傳輸報文的格式如下:
2. 應用范圍
gre 主要能實現以下幾種服務類型:
(1) 多協議的本地網通過單一協議的骨干網傳輸
上圖中,group1 和group2 是運行novell ipx 協議的本地網,term1 和term2 是運行ip 協議的本地網。通過在routera 和routerb 之間采用gre 協議封裝的隧道(tunnel),group1 和group2、team1 和team2 可以互不影響地進行通信。
(2) 擴大了步跳數受限協議(如ipx)的網絡的工作范圍
若上圖中的兩台終端之間的步跳數超過15,它們將無法通信。而通過在網絡中使用隧道(tunnel)可以隱藏一部分步跳,從而擴大網絡的工作范圍。
(3) 將一些不能連續的子網連接起來,用於組建vpn
運行novell ipx 協議的兩個子網group1 和group2 分別在不同的城市,通過使用隧道可以實現跨越廣域網的vpn。
GRE(Generic Routing Encapsulation)通用路由封裝:是對某些網絡層協議(如IP和IPX)的報文進行封裝,使這些被封裝的報文能夠在另一網絡層協議(如IP)中傳輸。GRE可以作為第三層隧道協議,在協議層之間采用隧道(Tunnel)技術。Tunnel是一個虛擬的點對點的連接,可以看成僅支持點對點連接的虛擬接口,這個接口提供了一條通路,使封裝的數據報能夠在這個通路上傳輸,並在一個Tunnel的兩端分別對數據報進行封裝及解封裝。
我們使用兩台AR28進行互聯,並在之間創建GRE最簡單的隧道。互聯拓撲圖如下:
AR28-31<++++++++++>AR28-31
【AR28-1】
#
sysname AR28-1
#
interface Ethernet2/0
ip address 202.101.1.2 255.255.255.0 /公網IP/
#
interface Ethernet2/1
ip address 192.168.1.1 255.255.255.0 //內部私網IP
#
interface Tunnel0 //創建GRE隧道 tunnel 0
ip address 192.168.0.1 255.255.255.252 // tunnel IP和對方tunnel IP在同一網段
source 202.101.1.2 //GRE隧道源地址
destination 202.101.2.2 //GRE隧道目的地址
#
ip route-static 0.0.0.0 0.0.0.0 202.101.1.1 preference 60
//到公網的默認路由
ip route-static 192.168.2.0 255.255.255.0 Tunnel 0 preference 60
//通過tunnel訪問對方私網的路由
#
【AR28-2】
#
sysname AR28-2
#
interface Ethernet2/0
ip address 202.101.2.2 255.255.255.0 //內部私網IP
#
interface Tunnel0 //創建tunnel 0
ip address 192.168.0.2 255.255.255.252 //tunnel IP和對方tunnel IP在同一網段
source 202.101.2.2 /源地址
destination 202.101.1.2 //目的地址
#
ip route-static 0.0.0.0 0.0.0.0 202.101.2.1 preference 60
//到公網的默認路由
ip route-static 192.168.1.0 255.255.255.0 Tunnel 0 preference 60
//通過tunnel訪問對方私網的路由
GRE
GRE(Generic Routing Encapsulation)通用路由封裝:是對某些網絡層協議(如IP和IPX)的報文進行封裝,使這些被封裝的報文能夠在另一網絡層協議(如IP)中傳輸。GRE可以作為第三層隧道協議,在協議層之間采用隧道(Tunnel)技術。Tunnel是一個虛擬的點對點的連接,可以看成僅支持點對點連接的虛擬接口,這個接口提供了一條通路,使封裝的數據報能夠在這個通路上傳輸,並在一個Tunnel的兩端分別對數據報進行封裝及解封裝。
我們使用兩台AR28進行互聯,並在之間創建GRE最簡單的隧道。互聯拓撲圖如下:
AR28-31<++++++++++>AR28-31
【AR28-1】
#
sysname AR28-1
#
interface Ethernet2/0
ip address 202.101.1.2 255.255.255.0 //公網IP
#
interface Ethernet2/1
ip address 192.168.1.1 255.255.255.0 //內部私網IP
#
interface Tunnel0 //創建GRE隧道 tunnel 0
ip address 192.168.0.1 255.255.255.252 // tunnel IP和對方tunnel IP在同一網段
source 202.101.1.2 //GRE隧道源地址
destination 202.101.2.2 //GRE隧道目的地址
#
ip route-static 0.0.0.0 0.0.0.0 202.101.1.1 preference 60
//到公網的默認路由
ip route-static 192.168.2.0 255.255.255.0 Tunnel 0 preference 60
//通過tunnel訪問對方私網的路由
#
【AR28-2】
#
sysname AR28-2
#
interface Ethernet2/0
ip address 202.101.2.2 255.255.255.0 //內部私網IP
#
interface Tunnel0 //創建tunnel 0
ip address 192.168.0.2 255.255.255.252 //tunnel IP和對方tunnel IP在同一網段
source 202.101.2.2 /源地址
destination 202.101.1.2 //目的地址
#
ip route-static 0.0.0.0 0.0.0.0 202.101.2.1 preference 60
//到公網的默認路由
ip route-static 192.168.1.0 255.255.255.0 Tunnel 0 preference 60
//通過tunnel訪問對方私網的路由
GRE隧道建立之后,我們在任何一台AR28上面都可以Ping通對方的私網地址,這個就是GRE隧道發揮的作用。GRE隧道還有更加復雜的應用,我們將陸續介紹基於華為路由器、華為交換機設備進行的GRE各種應用配置。