GRE協(xié)議的封裝、解封過(guò)程
在網(wǎng)絡(luò)中,傳輸一個(gè)協(xié)議,我們?nèi)绾巫龅讲煌W(wǎng)絡(luò)的跨界呢?這就需要一個(gè)協(xié)議封裝的概念了。那么完成這個(gè)工作的就是GRE協(xié)議了?,F(xiàn)在對(duì)于這個(gè)重要的協(xié)議我們來(lái)進(jìn)行一個(gè)細(xì)致的講解吧。
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è)過(guò)程,下圖的網(wǎng)絡(luò)為例說(shuō)明這兩個(gè)過(guò)程:
加封裝過(guò)程:
連接Novell group1的接口收到IPX數(shù)據(jù)報(bào)后,首先交由IPX協(xié)議處理。
IPX協(xié)議檢查IPX報(bào)頭中的目的地址域來(lái)確定如何路由此包。如果發(fā)現(xiàn)報(bào)文的目的地址要經(jīng)過(guò)網(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ò)接口處理。
解封裝過(guò)程:
解封裝過(guò)程和加封裝過(guò)程相反。從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)行處理。 #p#
(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)文的形式如下圖所示:
舉例來(lái)說(shuō),一個(gè)封裝在IP Tunnel中的IPX報(bào)文的格式可以表示為:
Passenger Protocol:乘客協(xié)議
Carrier Protocol/Encapsulation Protocol:運(yùn)載協(xié)議/封裝協(xié)議
Transport Protocol:傳輸協(xié)議