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