第4章GRE协议配置.docx
- 文档编号:24592558
- 上传时间:2023-05-29
- 格式:DOCX
- 页数:62
- 大小:336.42KB
第4章GRE协议配置.docx
《第4章GRE协议配置.docx》由会员分享,可在线阅读,更多相关《第4章GRE协议配置.docx(62页珍藏版)》请在冰豆网上搜索。
第4章GRE协议配置
第4章GRE协议配置4-1
4.1简介4-1
4.1.1GRE协议概述4-2
4.1.2GRE协议应用4-3
4.1.3采用GRE隧道接入MPLSVPN4-6
4.1.4支持Keepalive特性4-6
4.1.5参考信息4-7
4.2配置普通GRE隧道4-8
4.2.1建立配置GRE的任务4-8
4.2.2配置Tunnel接口4-9
4.2.3配置Tunnel的路由4-10
4.2.4配置GRE的安全选项4-11
4.2.5检查配置结果4-12
4.3配置CE-PE间的GRE隧道4-12
4.3.1建立配置任务4-12
4.3.2在CE配置Tunnel接口4-13
4.3.3在PE配置Tunnel接口4-14
4.3.4在PE上将GRETunnel与CE所在的VPN进行绑定4-14
4.3.5检查配置结果4-14
4.4配置GRE支持Keepalive特性4-15
4.4.1建立配置任务4-15
4.4.2配置源端和对端的GRE隧道4-16
4.4.3使能GRE隧道源端的Linkalive功能4-17
4.4.4检查配置结果4-17
4.5典型配置举例4-18
4.5.1配置GRE使用静态路由示例4-18
4.5.2配置GRE使用动态路由协议示例4-23
4.5.3在CE-PE间配置穿过公网的GRE隧道,使CE的用户接入MPLSVPN4-27
4.5.4在CE-PE间配置穿过VPN的GRE隧道,使CE的用户接入MPLSVPN4-34
4.5.5配置GRE支持Keepalive特性示例4-41
4.6故障处理4-44
第4章GRE协议配置
通用路由封装GRE(GenericRoutingEncapsulation)是对使用某些网络层协议封装的报文能够在另一网络层协议中传输。
下表列出了本章所包含的内容。
如果您需要……
请阅读……
了解GRE的基本原理和概念
简介
配置普通的、较简单的GRE隧道
配置任务:
配置普通GRE隧道
配置举例1:
配置GRE使用静态路由示例
配置举例2:
配置GRE使用动态路由协议示例
配置私网用户边缘设备CE使用GRE隧道接入公网
配置任务:
配置CE-PE间的GRE隧道
配置举例1:
在CE-PE间配置穿过公网的GRE隧道,使CE的用户接入MPLSVPN
配置举例2:
在CE-PE间配置穿过VPN的GRE隧道,使CE的用户接入MPLSVPN
配置具有Keepalive特性的GRE隧道
配置任务:
配置GRE支持Keepalive特性
配置举例:
配置GRE支持Keepalive特性示例
检测和排除GRE的运行故障
故障处理
4.1简介
本节介绍配置GRE所需理解的基本知识,具体包括:
●GRE协议概述
●GRE协议应用
●采用GRE隧道接入MPLSVPN
●支持Keepalive特性
●参考信息
4.1.1GRE协议概述
1.GRE协议
通用路由封装GRE(GenericRoutingEncapsulation)是对某些网络层协议(如IP和IPX)的报文进行封装,使这些被封装的报文能够在另一网络层协议(如IP)中传输。
GRE可以作为VPN的第三层隧道协议,在协议层之间采用隧道(Tunnel)技术。
Tunnel是一个虚拟的点对点的连接,可以看成仅支持点对点连接的虚拟接口,这个接口提供了一条通路,使封装的数据报能够在这个通路上传输,并在一个Tunnel的两端分别对数据报进行封装及解封装。
2.报文封装及解封装
(1)报文的传输
报文在Tunnel中传输包括加封装与解封装两个过程,下面以图4-1的网络为例说明这两个过程:
图4-1IPX网络通过GRE隧道互连
●加封装过程
连接Novellgroup1的接口收到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协议被称为传输协议(DeliveryProtocol或者TransportProtocol)。
封装好的报文的形式如图4-2所示:
图4-2封装好的Tunnel报文格式
举例来说,一个封装在IPTunnel中的IPX报文的格式可以表示为:
PassengerProtocol:
乘客协议
CarrierProtocol/EncapsulationProtocol:
运载协议/封装协议
TransportProtocol:
传输协议
图4-3Tunnel中传输报文的格式
4.1.2GRE协议应用
GRE主要可用于实现以下几种服务类型:
1.多协议的本地网通过单一协议的骨干网传输
图4-4多协议本地网通过单一协议骨干网传输
图4-4中,Group1和Group2是运行NovellIPX的本地网,Term1和Term2是运行IP的本地网。
通过在RouterA和RouterB之间采用GRE协议封装的隧道(Tunnel),Group1和Group2、Team1和Team2可以互不影响地进行通信。
2.扩大了步跳数受限协议(如IPX)的网络的工作范围
图4-5扩大网络工作范围
在图4-5中,如果两台终端之间的步跳数超过15,它们将无法通信。
在网络中使用隧道(Tunnel)可以隐藏一部分步跳,从而扩大网络的工作范围。
3.将不连续的子网连接起来,用于组建VPN
图4-1Tunnel连接不连续子网
运行NovellIPX协议的两个子网Group1和Group2分别在不同的城市,通过使用隧道可以实现跨越广域网的VPN。
4.与IPSec结合使用,弥补IPSec不能保护组播数据的缺陷
图4-1GRE-IPSec隧道应用
GRE可以封装组播数据并在GRE隧道中传输,而IPSec目前只能对单播数据进行加密保护。
对于组播数据需要在IPSec隧道中传输的情况,可以先建立GRE隧道,对组播数据进行GRE封装,再对封装后的报文进行IPSec加密,从而实现组播数据在IPSec隧道中的加密传输。
5.其他特性
GRE本身提供两种比较弱的安全机制:
校验和验证和识别关键字验证。
前者对封装的报文进行端到端校验,后者对Tunnel接口进行校验。
RFC1701(GenericRoutingEncapsulation)中规定:
如果GRE报文头中的Checksum位置位,则校验和有效。
发送方将根据GRE头及payload信息计算校验和,并将包含校验和的报文发送给对端。
接收方对接收到的报文计算校验和,并与报文中的校验和比较,如果一致则对报文进一步处理,否则丢弃报文。
隧道两端可以根据实际需要选择是否配置校验和,从而决定是否触发校验功能。
如果本端配置了校验和而对端没有配置,则本端将不会对接收到的报文进行校验和检查;相反
,如果本端没有配置校验和而对端已配置,本端将对从对端发来的报文进行校验和检查。
RFC1701中还规定:
若GRE报文头中的KEY位置位,则收发双方将进行通道识别关键字的验证。
只有Tunnel两端设置的识别关键字完全一致时才能通过验证,否则将报文丢弃。
4.1.3采用GRE隧道接入MPLSVPN
在MPLSVPN中,为了让用户端设备CE接入VPN中往往需要CE与PE之间有直接的物理链路,即在同一个网络中。
在这样的组网中,需要在PE上将VPN与PE到CE的物理接口进行绑定。
在CE和PE不是直连的情况下,为了让CE也能接入到VPN中,可以考虑在CE和PE之间创建“逻辑上的直连”,也就是在CE与PE之间创建GRE隧道。
在这样的组网中,就需要在PE上将VPN与PE-CE之间的GRE隧道进行绑定。
其实就是把GRE隧道当作一个物理接口来看待。
采用GRE隧道接入MPLSVPN时,在PE上的配置可按以下三种情形来划分:
(1)GRE隧道的源接口绑定VPN实例,GRE隧道的目的地址也属于该VPN实例。
(2)GRE隧道绑定VPN实例,GRE隧道的源地址和目的地址不属于VPN实例。
(3)GRE隧道绑定一个VPN实例(例如VPN1),GRE隧道的源接口绑定了另一个VPN实例(例如VPN2),即GRE隧道需要穿过VPN2。
由于在第1种情形中,GRE隧道的源和目的地址都属于私有网络,在实际的应用中在私有网络里再创建一个隧道到PE,没有什么价值。
因此第1种情形不会在实际网络中存在。
后面的配置过程和举例主要针对第2和第3种情况。
4.1.4支持Keepalive特性
目前,GRE协议并不具备探测链路状态的功能。
如果远端端口不可达,隧道并不能及时关闭该Tunnel连接。
这样会造成源端会不断的向对端转发数据,而对端却因Tunnel不通而丢弃所有报文,由此就会形成数据发送的空洞。
而GRE的Link-alive功能能够使Tunnel检测隧道状态。
如果对端不可达,隧道连接就会及时关闭,避免形成数据空洞。
在GRE隧道的源端使能link-alive功能后,就会周期地发送一个link-alive探测报文。
Link-alive报文格式如图4-8。
图4-1Link-alive报文格式
此报文包含两个IP头和两个GRE头。
外层IP头(OuterIPheaderGREheader)的源地址为GRE隧道的源地址,目的地址为GRE隧道的目的地址。
而内层IP头(InnerIPheader)的源地址为GRE隧道的目的地址,目的地址为GRE隧道的源地址。
紧跟在外层IP头字段后面的GREheader的PT(ProtocolType)为IP协议。
紧跟在内层IP头字段后面的GREheader的PT值为0。
Linkalive报文的作用是为了探测对端Tunnel是否可达。
故该报文不携带数据部分。
另外,本端实现Linkalive功能并不要求对端也具备linkalive,对端只需实现转发功能。
源端周期性的发送link-alive报文。
每发送一个,不可达计数器加1。
当此计数器到达预先设置的值还没收到回送报文,就认为对端不可达。
接着该Tunnel连接就会被关闭。
若对端收到此报文,就会对该报文进行解封装——去掉外层IP头字段,去掉并分析紧跟其后的GREheader字段,发现PT为IP协议,就将解封装后的报文交给IP进程处理。
由于该报文有内层IP头字段,IP进程就会直接转发该报文。
由于内层IP头的目的地址为GRE隧道的源地址。
这样,报文就回到了源端。
源端接收到该回应报文,检查PT值,如果PT的值是0,则不可达计数器清零,丢弃该报文并接着发送link-alive报文。
若对端不可达,则源端发送的link-alive报文后不会收到对端的回应报文,不可达报文计数器增1。
说明:
Linkalive报文的作用是为了探测对端Tunnel是否可达,故该报文不携带数据部分。
另外,本端实现Linkalive功能并不要求对端也具备linkalive,对端只需要实现转发功能。
4.1.5参考信息
如果要更详细了解GRE的原理,请参考以下文档。
●RFC1701:
GenericRoutingEncapsulation(GRE)
●RFC1702:
GenericRoutingEncapsulationoverIPv4networks
●RFC2784:
GenericRoutingEncapsulation(GRE)
4.2配置普通GRE隧道
4.2.1建立配置GRE的任务
1.应用环境
配置GRE需要创建Tunnel接口,在Tunnel接口上进行功能特性的配置。
当删除Tunnel接口后,该接口上的所有配置也将被删除。
2.前置任务
在配置GRE之前,需完成以下任务:
●配置源接口和目的接口的链路层协议
●配置源接口和目的接口的网络层协议
3.数据准备
在配置GRE之前,需准备以下数据。
序号
数据
1
Tunnel接口的编号
2
Tunnel的源地址和目的地址
3
Tunnel接口的IP地址
4
Tunnel接口的识别关键字
4.配置过程
序号
过程
1
配置Tunnel接口
2
配置Tunnel的路由
3
配置GRE的安全选项
4
检查配置结果
4.2.2配置Tunnel接口
说明:
Tunnel两端的封装模式必须相同。
当在分布式设备上创建Tunnel接口时,建议Tunnel接口的槽号与所设置的源端接口所在槽位保持一致,即,使用发出GRE报文的实际接口的槽位号,这样可以提高转发效率。
步骤
操作
命令
1
进入系统视图
system-view
2
创建Tunnel接口,并进入Tunnel接口视图
interfacetunnelinterface-number
3
将Tunnel封装为GRE隧道
tunnel-protocolgre
4
设置Tunnel接口的源端地址
source{source-ip-address|interface-typeinterface-number}
5
设置Tunnel接口的目的端地址
destination[vpn-instancevpn-instance-name]ip-address
6
设置Tunnel接口的IP地址
ipaddressip-address{mask|mask-length}[sub]
或配置Tunnel接口借用IP地址
ipaddressunnumberedinterfaceinterface-typeinterface-number
当IP地址不够用或需要节约IP地址时,可以配置Tunnel接口借用其他接口的IP地址。
&说明:
当配置Tunnel接口借用IP地址时,由于Tunnel接口本身没有IP地址,无法在此接口上启用动态路由协议,必须手工配置一条到对端网段的静态路由,指定下一跳的出口为对端的tunnel接口,才能实现路由器间的连通。
在创建Tunnel接口后,还需要指定隧道的源端地址和目的端地址,前者是发出GRE报文的实际物理接口IP地址,后者是接收GRE报文的实际物理接口IP地址。
如果使用接口类型和接口编号指定隧道源端,不能指定成本端Tunnel接口。
Tunnel的源端地址与目的端地址唯一标识了一条隧道。
这些配置在Tunnel两端必须配置,且两端地址互为源地址和目的地址。
为使隧道支持动态路由协议,还要配置Tunnel接口的网络地址。
Tunnel接口的网络地址可以不是公网地址。
隧道两端的网络地址应该位于同一网段。
缺省情况下,未设置Tunnel接口的网络地址。
4.2.3配置Tunnel的路由
步骤
操作
命令
1
进入系统视图
system-view
2
配置静态路由
iproute-staticdest-ip-address{mask|mask-length}tunneltunnel-number
3
配置动态路由
(略)
说明:
实际配置时,根据需要选择上述步骤2、3中的一种即可。
在源端路由器和目的端路由器上都必须存在经过Tunnel转发的路由,这样,需要进行GRE封装的报文才能正确转发。
可以配置静态路由或配置动态路由。
在Tunnel的两端都要配置。
配置静态路由时,需要注意:
目的地址不是Tunnel的目的端地址,而是未进行GRE封装的报文的目的地址,下一跳是对端Tunnel接口的地址。
配置动态路由协议时,在Tunnel接口和与私网相连的路由器接口上都要使能该动态路由协议。
并且,为保证能够选到正确的路由,在配置动态路由协议时,应注意避免去往Tunnel目的端物理地址的路由下一跳被选为Tunnel接口。
图4-2GRE动态路由协议配置图
在图4-9中,以RouterA为例,Tunnel1/0/1的源端物理接口为RouterA的POS1/0/0,目的端物理接口为RouterC的POS2/0/0。
如果使用动态路由协议,则Tunnel接口和接入PC的GigabitEthernet接口上都需要配置动态路由协议,并且,路由表中去往RouterC的POS2/0/0网段地址的出接口不能是Tunnel1/0/1。
实际配置时,可以采用多进程路由协议或改变Tunnel接口度量值,避免Tunnel接口被选为去往Tunnel目的端物理地址的路由出接口。
4.2.4配置GRE的安全选项
步骤
操作
命令
1
进入系统视图
system-view
2
进入Tunnel接口视图
interfacetunnelinterface-number
3
设置Tunnel进行端到端校验
grechecksum
4
设置Tunnel接口的识别关键字
grekeykey-number
本节的配置都是可选配置,且步骤3和步骤4相互没有影响。
缺省情况下,禁止Tunnel两端进行端到端校验;Tunnel不使用识别关键字。
4.2.5检查配置结果
步骤
操作
命令
1
查看Tunnel接口的工作状态
displayinterfacetunnel[interface-number]
2
查看路由表
displayiprouting-table
3
查看隧道两端是否能互通
ping-asource-ip-addressdest-ip-address
在配置成功时,执行上面的命令,应能得到如下的结果:
●Tunnel接口状态为Up,且链路层协议状态为Up。
●路由表中有“Interface”为此Tunnel接口,且“Destination”为所设置的Tunnel的目的端地址。
●从本端隧道接口地址ping目的端隧道接口地址,能ping通。
4.3配置CE-PE间的GRE隧道
4.3.1建立配置任务
1.应用环境
如果CE不与PE直接连接,但CE所挂的用户需要接入到MPLSVPN中,这种需求可以通过在CE-PE间配置GRE隧道实现。
通常,在如下2种情况下需要创建CE-PE之间的GRE隧道:
●CE经过公网与PE互连
●CE经过二级运营商的VPN与PE互连
2.前置任务
在配置CE-PE间的GRE隧道之前,需完成以下任务:
●配置CE与PE上接口的IP地址
●配置CE-PE间的路由
●如果CE-PE间的GRE隧道穿过另外的VPN,还需要完成该VPN的配置。
3.数据准备
在配置CE-PE间的GRE隧道之前,需准备以下数据。
序号
数据
1
CE上GRETunnel接口的编号
2
CE上GRETunnel的源地址和目的地址
3
PE上GRETunnel接口的编号
4
PE上GRETunnel接口的源地址和目的地址
5
如果GRETunnel穿过另外的VPN,还需知道该VPN的名字
4.配置过程
序号
过程
1
在CE配置Tunnel接口
2
在PE配置Tunnel接口
3
在PE上将GRETunnel与CE所在的VPN进行绑定
4
检查配置结果
说明:
要让CE所挂的用户接入到MPLSVPN中,还需在配置PE上的MPLSVPN,以及PE与CE间的路由。
4.3.2在CE配置Tunnel接口
步骤
操作
命令
1
进入系统视图
system-view
2
创建Tunnel接口,并进入Tunnel接口视图
interfacetunnelinterface-number
3
将Tunnel封装为GRE隧道
tunnel-protocolgre
4
设置Tunnel接口的源端地址
source{source-ip-address|interface-typeinterface-number}
5
设置Tunnel接口的目的端地址
destination[vpn-instancevpn-instance-name]ip-address
6
设置Tunnel接口的IP地址
ipaddressip-address{mask|mask-length}
CE上隧道的源地址与PE上隧道的目的地址相同,CE上隧道的目的地址与PE上隧道的源地址相同。
4.3.3在PE配置Tunnel接口
步骤
操作
命令
1
进入系统视图
system-view
2
创建Tunnel接口,并进入Tunnel接口视图
interfacetunnelinterface-number
3
将Tunnel封装为GRE隧道
tunnel-protocolgre
4
设置Tunnel接口的源端地址
source{source-ip-address|interface-typeinterface-number}
5
设置Tunnel接口的目的端地址
destination[vpn-instancevpn-instance-name]ip-address
6
设置Tunnel接口的IP地址
ipaddressip-address{mask|mask-length}
PE上隧道的源地址与CE上隧道的目的地址相同,PE上隧道的目的地址与CE上隧道的源地址相同。
在PE上配置隧道的目的地址时,如果隧道需要穿过另外的VPN,则要指定参数vpn-instancevpn-instance-name,如果隧道穿过公网,则不需要指定参数vpn-instancevpn-instance-name。
4.3.4在PE上将GRETunnel与CE所在的VPN进行绑定
步骤
操作
命令
1
进入系统视图
system-view
2
创建Tunnel接口,并进入Tunnel接口视图
interfacetunnelinterface-number
3
将Tunnel与VPN实例进行绑定
ipbindingvpn-instancevpn-instance-name
4.3.5检查配置结果
步骤
操作
命令
1
查看Tunnel接口的工作状态
displayinterfacetunnel[interface-number]
2
在PE上查看VPN路由表
displayiprouting-tablevpn-insta
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- GRE 协议 配置