• 產品與解決方案
  • 行業解決方案
  • 服務
  • 支持
  • 合作夥伴
  • 關於我們

12-IP隧道配置指導

目錄

02-GRE配置

本章節下載 02-GRE配置  (294.28 KB)

02-GRE配置


1 GRE

1.1  GRE簡介

GRE(Generic Routing Encapsulation,通用路由封裝)協議用來對某種協議(如IP、MPLS、以太網)的數據報文進行封裝,使這些被封裝的數據報文能夠在另一個網絡(如IP)中傳輸。封裝前後數據報文的網絡層協議可以相同,也可以不同。封裝後的數據報文在網絡中傳輸的路徑,稱為GRE隧道。GRE隧道是一個虛擬的點到點的連接,其兩端的設備分別對數據報文進行封裝及解封裝。

1.1.1  GRE封裝後的報文格式

圖1-1所示,GRE封裝後的報文包括如下幾個部分:

·     淨荷數據(Payload packet):需要封裝和傳輸的數據報文。淨荷數據的協議類型,稱為乘客協議(Passenger Protocol)。乘客協議可以是任意的網絡層協議。

·     GRE頭(GRE header):采用GRE協議對淨荷數據進行封裝所添加的報文頭,包括封裝層數、版本、乘客協議類型、校驗和信息、Key信息等內容。添加GRE頭後的報文稱為GRE報文。對淨荷數據進行封裝的GRE協議,稱為封裝協議(Encapsulation Protocol)。

·     傳輸協議的報文頭(Delivery header):在GRE報文上添加的報文頭,以便傳輸協議對GRE報文進行轉發處理。傳輸協議(Delivery Protocol或者Transport Protocol)是指負責轉發GRE報文的網絡層協議。

圖1-1 GRE封裝後的報文格式

 

1.1.2  GRE隧道原理

下麵以圖1-2的網絡為例說明IPv6協議的報文通過GRE隧道穿越IPv4網絡進行傳輸的過程。

(1)     Device A從連接IPv6 network 1的接口收到IPv6報文後,查找路由表判定此報文需要通過GRE隧道模式的Tunnel接口(本例中為Tunnel0)轉發,並將報文發給相應的Tunnel接口。

(2)     GRE隧道模式的Tunnel接口收到此IPv6報文後,先在報文前封裝上GRE頭,再封裝上IPv4頭。IPv4頭中的源地址為隧道的源端地址(本例中為Device A的Interface A接口的IP地址),目的地址為隧道的目的端地址(本例中為Device B的Interface B接口的IP地址)。

(3)     Device A根據封裝的IPv4頭中的目的地址查找路由表,將封裝後的IPv4報文通過GRE隧道的實際物理接口(Interface A)轉發出去。

(4)     封裝後的IPv4報文通過GRE隧道到達隧道的目的端設備Device B後,由於報文的目的地是本設備,且IPv4頭中的協議號為47(表示封裝的報文為GRE報文),Device B將此報文交給GRE協議進行解封裝處理。

(5)     GRE協議先剝離掉此報文的IPv4頭,再對報文進行報文序列號檢查等處理,處理通過後再剝離掉報文的GRE頭,將報文交給IPv6協議進行後續的轉發處理。

圖1-2 IPv6協議網絡通過GRE隧道互連

 

 

1.1.3  GRE應用場景

GRE主要有以下幾種應用場景。

1. 通過單一協議的骨幹網連接采用不同協議的網絡

圖1-3所示,IPv6 network 1和IPv6 network 2是運行IPv6協議的網絡,IPv4 network 1和IPv4 network 2是運行IPv4協議的網絡。在Device A和Device B之間建立GRE隧道,可以使IPv6 network 1和IPv6 network 2、IPv4 network 1和IPv4 network 2通過骨幹網互不影響地進行通信,實現兩地互通。

圖1-3 通過單一協議的骨幹網連接采用不同協議的網絡

 

2. 擴大網絡的工作範圍

在IP網絡中,報文的TTL值最大為255。如果兩台設備之間的跳數超過255,它們將無法通信。通過在網絡中使用GRE隧道可以隱藏一部分跳數,從而擴大網絡的工作範圍。如圖1-4所示,使用了GRE隧道之後,Host A和Host B之間的跳數減少為3跳,GRE隧道經過的設備中隻有隧道兩端的設備(Device A和Device D)參與跳數計算。

圖1-4 擴大網絡的工作範圍

 

3. 組建VPN

圖1-5所示,屬於VPN 1的兩個站點Site 1和Site 2分別位於不同的城市,通過使用GRE隧道可以實現跨越廣域網連接VPN 1的兩個站點。

圖1-5 組建VPN

 

1.1.4  協議規範

與GRE相關的協議規範有:

·     RFC 1701:Generic Routing Encapsulation (GRE)

·     RFC 1702:Generic Routing Encapsulation over IPv4 networks

·     RFC 2784:Generic Routing Encapsulation (GRE)

·     RFC 2890:Key and Sequence Number Extensions to GRE

1.2  GRE配置限製和指導

·     GRE收發雙方的加封裝、解封裝處理,以及由於封裝造成的數據量增加,會導致使用GRE後設備的數據轉發效率有一定程度的下降。

·     隧道兩端必須都配置隧道的源端地址和目的端地址,且本端配置的源端地址(目的端地址)應該與對端配置的目的端地址(源端地址)相同。

·     在同一台設備上,隧道模式相同的Tunnel接口建議不要同時配置完全相同的源端地址和目的端地址。

·     如果封裝前報文的目的地址與Tunnel接口的地址不在同一個網段,則必須配置通過Tunnel接口到達報文目的地址的路由,以便需要進行封裝的報文能正常轉發。用戶可以配置靜態路由,指定到達報文目的地址的路由出接口為本端Tunnel接口;也可以配置動態路由,在Tunnel接口、與私網相連的接口上分別使能動態路由協議,由動態路由協議來建立通過Tunnel接口轉發的路由表項。

·     本配置任務僅列出了配置GRE隧道涉及的隧道接口相關的基礎配置命令(interface tunnelsourcedestinationtunnel discard ipv4-compatible-packet命令),關於隧道接口的更多配置命令的詳細介紹,請參見“接口管理命令參考”中的“隧道接口”。

1.3  GRE配置準備

對於封裝後的報文,設備不能根據目的地址和路由表進行第二次三層轉發,需要將封裝後的報文發送給業務環回組,由業務環回組將報文回送給轉發模塊後,再進行三層轉發。因此,在配置GRE前,需要先在設備上創建業務類型為Tunnel的業務環回組。關於業務環回組的詳細介紹,請參見“二層技術-以太網交換配置指導”中的“業務環回組”。

1.4  配置GRE over IPv4隧道

(1)     進入係統視圖。

system-view

(2)     創建模式為GRE over IPv4隧道的Tunnel接口,並進入該Tunnel接口視圖。

interface tunnel number mode gre

在隧道的兩端應配置相同的隧道模式,否則可能造成報文傳輸失敗。

(3)     根據乘客協議,設置Tunnel接口的IP地址。

(IPv4網絡)

IPv4地址的配置方法,請參見“三層技術-IP業務配置指導”中的“IP地址”。

(IPv6網絡)

IPv6地址的配置方法,請參見“三層技術-IP業務配置指導”中的“IPv6基礎”。

缺省情況下,Tunnel接口上未設置IP地址。

(4)     設置隧道的源端地址或源接口。

source { ip-address | interface-type interface-number }

缺省情況下,未設置隧道的源端地址和源接口。

如果設置的是隧道的源端地址,則該地址將作為封裝後隧道報文的源IPv4地址;如果設置的是隧道的源接口,則該接口的主IP地址將作為封裝後隧道報文的源IPv4地址。

(5)     設置隧道的目的端地址。

destination ip-address

缺省情況下,未設置隧道的目的端地址。

隧道的目的端地址是對端從GRE隧道上接收報文的實際物理接口的地址,該地址將作為封裝後隧道報文的目的IPv4地址。該地址不能與Tunnel接口的地址在同一網段。

(6)     (可選)開啟GRE的keepalive功能,並配置keepalive報文發送周期及最大發送次數。

keepalive [ interval [ times ] ]

缺省情況下,GRE的keepalive功能處於關閉狀態。

1.5  配置丟棄含有IPv4兼容IPv6地址的IPv6報文

1. 功能簡介

開啟本功能後,對於從隧道接收的報文,如果解封裝後原始IPv6報文的源或目的地址為IPv4兼容IPv6地址,則丟棄該報文。

2. 配置步驟

(1)     進入係統視圖。

system-view

(2)     配置丟棄含有IPv4兼容IPv6地址的IPv6報文。

tunnel discard ipv4-compatible-packet

缺省情況下,不會丟棄含有IPv4兼容IPv6地址的IPv6報文。

1.6  GRE顯示和維護

1.6.1  顯示GRE隧道接口的信息

可在任意視圖下執行以下命令:

·     顯示GRE隧道接口的信息。

display tunnel-interface [ number ]

本命令的詳細介紹,請參見“接口管理命令參考”中的“隧道接口命令”。

·     顯示GRE隧道接口的相關信息。

display interface [ tunnel [ number ] ] [ brief [ description | down ] ]

本命令的詳細介紹,請參見“接口管理命令參考”中的“隧道接口命令”。

·     顯示GRE隧道接口的IPv6相關信息。

display ipv6 interface [ tunnel [ number ] ] [ brief ]

本命令的詳細介紹,請參見“三層技術-IP業務命令參考”中的“IPv6基礎”。

1.6.2  清除GRE隧道接口的統計信息

請在用戶視圖下執行以下命令:

·     清除GRE隧道接口的統計信息。

reset counters interface [ tunnel [ number ] ]

本命令的詳細介紹,請參見“接口管理命令參考”中的“接口公共命令”。

·     清除GRE隧道接口的IPv6統計信息。

reset ipv6 statistics [ slot slot-number ]

本命令的詳細介紹,請參見“三層技術-IP業務命令參考”中的“IPv6基礎”。

1.7  GRE典型配置舉例

1.7.1  GRE over IPv4隧道配置舉例

1. 組網需求

Router A和Router B分別連接IPv4私有網絡Group 1和Group 2。這兩個私有網絡都使用私網地址,且屬於同一個VPN。通過在Router A和Router B之間建立GRE隧道,實現兩個私有網絡的互聯。

2. 組網圖

圖1-6 GRE over IPv4隧道應用組網圖

  

3. 配置準備

在開始下麵的配置之前,假設設備各接口的地址都已配置完畢,並且Router A和Router B之間路由可達。

4. 配置步驟

(1)     配置Router A

# 創建業務環回組1,並配置服務類型為Tunnel。

<RouterA> system-view

[RouterA] service-loopback group 1 type tunnel

# 將接口HundredGigE1/0/3加入業務環回組1。

[RouterA] interface hundredgige 1/0/3

[RouterA-HundredGigE1/0/3] port service-loopback group 1

[RouterA-HundredGigE1/0/3] quit

# 創建Tunnel0接口,並指定隧道模式為GRE over IPv4隧道。

[RouterA] interface tunnel 0 mode gre

# 配置Tunnel0接口的IP地址。

[RouterA-Tunnel0] ip address 10.1.2.1 255.255.255.0

# 配置Tunnel0接口的源端地址(Router A的HundredGigE1/0/2的IP地址)。

[RouterA-Tunnel0] source 1.1.1.1

# 配置Tunnel0接口的目的端地址(Router B的HundredGigE1/0/2的IP地址)。

[RouterA-Tunnel0] destination 2.2.2.2

[RouterA-Tunnel0] quit

# 配置從Router A經過Tunnel0接口到Group 2的靜態路由。

[RouterA] ip route-static 10.1.3.0 255.255.255.0 tunnel 0

(2)     配置Router B

# 創建業務環回組1,並配置服務類型為Tunnel。

<RouterB> system-view

[RouterB] service-loopback group 1 type tunnel

# 將接口HundredGigE1/0/3加入業務環回組1。

[RouterB] interface hundredgige 1/0/3

[RouterB-HundredGigE1/0/3] port service-loopback group 1

[RouterB-HundredGigE1/0/3] quit

# 創建Tunnel0接口,並指定隧道模式為GRE over IPv4隧道。

[RouterB] interface tunnel 0 mode gre

# 配置Tunnel0接口的IP地址。

[RouterB-Tunnel0] ip address 10.1.2.2 255.255.255.0

# 配置Tunnel0接口的源端地址(Router B的HundredGigE1/0/2的IP地址)。

[RouterB-Tunnel0] source 2.2.2.2

# 配置Tunnel0接口的目的端地址(Router A的HundredGigE1/0/2的IP地址)。

[RouterB-Tunnel0] destination 1.1.1.1

[RouterB-Tunnel0] quit

# 配置從Router B經過Tunnel0接口到Group 1的靜態路由。

[RouterB] ip route-static 10.1.1.0 255.255.255.0 tunnel 0

5. 驗證配置

# 查看Router A的Tunnel接口狀態。

[RouterA] display interface tunnel 0

Tunnel0

Current state: UP

Line protocol state: UP

Description: Tunnel0 Interface

Bandwidth: 64kbps

Maximum transmission unit: 1476

Internet address: 10.1.2.1/24 (primary)

Tunnel source 1.1.1.1, destination 2.2.2.2

Tunnel keepalive disabled

Tunnel TTL 255

Tunnel protocol/transport GRE/IP

    GRE key disabled

    Checksumming of GRE packets disabled

Last clearing of counters: Never

Last 300 seconds input rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec

Last 300 seconds output rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec

Input: 0 packets, 0 bytes, 0 drops

Output: 0 packets, 0 bytes, 0 drops

# 查看Router B的Tunnel接口狀態。

[RouterB] display interface tunnel 0

Tunnel0

Current state: UP

Line protocol state: UP

Description: Tunnel0 Interface

Bandwidth: 64kbps

Maximum transmission unit: 1476

Internet address: 10.1.2.2/24 (primary)

Tunnel source 2.2.2.2, destination 1.1.1.1

Tunnel keepalive disabled

Tunnel TTL 255

Tunnel protocol/transport GRE/IP

    GRE key disabled

    Checksumming of GRE packets disabled

Last clearing of counters: Never

Last 300 seconds input rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec

Last 300 seconds output rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec

Input: 0 packets, 0 bytes, 0 drops

Output: 0 packets, 0 bytes, 0 drops

# 從Router B可以Ping通Router A上HundredGigE1/0/1接口的地址。

[RouterB] ping -a 10.1.3.1 10.1.1.1

Ping 10.1.1.1 (10.1.1.1) from 10.1.3.1: 56 data bytes, press CTRL_C to break

56 bytes from 10.1.1.1: icmp_seq=0 ttl=255 time=11.000 ms

56 bytes from 10.1.1.1: icmp_seq=1 ttl=255 time=1.000 ms

56 bytes from 10.1.1.1: icmp_seq=2 ttl=255 time=0.000 ms

56 bytes from 10.1.1.1: icmp_seq=3 ttl=255 time=0.000 ms

56 bytes from 10.1.1.1: icmp_seq=4 ttl=255 time=0.000 ms

 

--- Ping statistics for 10.1.1.1 ---

5 packet(s) transmitted, 5 packet(s) received, 0.0% packet loss

round-trip min/avg/max/std-dev = 0.000/2.400/11.000/4.317 ms

 

1.8  GRE常見故障處理

1.8.1  GRE隧道兩端連接的主機之間無法ping通

GRE的配置相對比較簡單,但要注意配置的一致性,大部分的錯誤都可以使用調試命令debugging gredebugging tunnel定位。這裏僅就一種錯誤進行分析。

1. 故障現象

圖1-7所示,Tunnel兩端接口配置正確且Tunnel兩端可以ping通,但Host A和Host B之間卻無法ping通。

圖1-7 GRE排錯示例

 

2. 故障分析

出現該故障的原因可能是Device A或Device C上沒有到達對端網絡的路由。

3. 故障排除

(1)     在Device A和Device C分別執行display ip routing-table命令,觀察在Device A是否有經過Tunnel0接口到10.2.0.0/16的路由;在Device C是否有經過Tunnel0接口到10.1.0.0/16的路由。

(2)     如果不存在上述路由,則在係統視圖下使用ip route-static命令添加靜態路由。以Device A為例,配置如下:

[DeviceA] ip route-static 10.2.0.0 255.255.0.0 tunnel 0

 

不同款型規格的資料略有差異, 詳細信息請向具體銷售和400谘詢。H3C保留在沒有任何通知或提示的情況下對資料內容進行修改的權利!

BOB登陆
官網
聯係我們