大家好,我是大白,正所谓老骥伏枥,志在千里;烈士暮年,壮心不已。优质的帖子也在尽力中提供,也希望各位道友多多支持,让我引劫渡劫成功哈哈哈。
大白队口号就是:砸锅卖铁我最行,拼死拼活就要赢!!!!!!!!!!!!
本贴不做技术分享,今天要开始我们新的网络技术篇章GRE(General Routing Encapsulation ,通用路由封装)解析分享,之前我们也做过STP实验以及STP的原理,以及RSTP的实验与原理讲解。对于网络技术的讲解各位小伙伴的反馈还是相当的不错的,对于已毕业STP的小伙伴也是积极的私信我出新的技术讲解,鉴于之前在跨区桌面云项目的分享上还提到过GRE的使用,今天我就分享一下GRE的技术解析。
传统的GRE隧道是一个点到点的连接。GRE应用企业网时,需要在企业中心节点和各个分支机构之间建立多条点到点GRE隧道。当企业分支机构众多时,配置工作量巨大;而且,如果新增分支机构,则需要在中心节点上增加配置,增加了网络维护的负担;此外,分支机构采用ADSL等方式拨号上网时,分支机构公网地址的不确定性也增加了中心节点配置的复杂度。
虽然动态VPN技术,如DVPN(Dynamic Virtual Private Network,动态虚拟私有网络),可以学习公网地址和私网地址的对应关系,并动态地在中心节点和分支机构、不同分支机构之间建立隧道,但是目前动态VPN技术没有统一的规范,各个厂商都采用私有协议实现动态VPN,无法互通。
点到多点GRE隧道很好地解决了上述问题,非常适用于分支机构众多的企业网络。点到多点GRE隧道组网中,需要在中心节点上配置点到多点GRE模式的隧道接口(以下简称为点到多点GRE隧道接口)、分支机构上配置传统的点到点GRE over IPv4模式的隧道接口(以下简称为点到点GRE隧道接口),这样就可以实现在中心节点和多个分支机构之间动态建立隧道
首先我们要知道GRE隧道是什么?
通用路由封装协议GRE(Generic Routing Encapsulation)可以对某些网络层协议是对某些网络层协议如IP和IPX的数据报文进行封装,使这些被封装的数据报文能够在Tunnel(隧道)中传输。Tunnel是一个虚拟的点对点的连接,提供了一条通路使封装的数据报文能够在这个通路上传输,并且在一个Tunnel的两端分别对数据报文进行封装及解封装。
GRE提供了将一种协议的报文封装在另一种协议报文中的机制,是一种三层隧道封装技术,使报文可以通过GRE隧道透明的传输,解决异种网络的传输问题。
GRE原理:
报文在GRE隧道中传输包括封装和解封装两个过程。如果X协议报文从Ingress PE向Egress PE传输,则封装在Ingress PE上完成,而解封装在Egress PE上进行。封装后的数据报文在网络中传输的路径,称为GRE隧道。
Ingress PE【Mpls的入口路由器】
Egress PE 【Mpls的出口路由器】
通过GRE隧道实现X协议互通
封装:
Ingress PE从连接X协议的接口接收到X协议报文后,首先交由X协议处理。
X协议根据报文头中的目的地址在路由表或转发表中查找出接口,确定如何转发此报文。如果发现出接口是GRE Tunnel接口,则对报文进行GRE封装,即添加GRE头。
根据骨干网传输协议为IP,给报文加上IP头。IP头的源地址就是隧道源地址,目的地址就是隧道目的地址。
根据该IP头的目的地址(即隧道目的地址),在骨干网路由表中查找相应的出接口并发送报文。之后,封装后的报文将在该骨干网中传输。
解封装:
解封装过程和封装过程相反。
Egress PE从GRE Tunnel接口收到该报文,分析IP头发现报文的目的地址为本设备,则Egress PE去掉IP头后交给GRE协议处理。
GRE协议剥掉GRE报头,获取X协议,再交由X协议对此数据报文进行后续的转发处理。
报文格式:
乘客协议(Passenger Protocol):封装前的报文称为净荷,封装前的报文协议称为乘客协议。
封装协议(Encapsulation Protocol):GRE Header是由封装协议完成并填充的,封装协议也称为运载协议(Carrier Protocol)。
传输协议(Transport Protocol或者Delivery Protocol):负责对封装后的报文进行转发的协议称为传输协议。
GRE头字段
字段解释
C 【校验和验证位。•该位置1,表示GRE头插入了校验和(Checksum)字段。•该位置0,表示GRE头不包含校验和字段。】
K 【关键字位。•该位置1,表示GRE头插入了关键字(Key)字段。•该位置0,表示GRE头不包含关键字字段。】
Recursion 【表示GRE报文被封装的层数。完成一次GRE封装后将该字段加1。如果封装层数大于3,则丢弃该报文。该字段的作用是防止报文被无限次的封装。】
说明:
•RFC1701规定该字段默认值为0。
•RFC2784规定当发送和接收端该字段不一致时不会引起异常,且接收端必须忽略该字段。
•设备实现时该字段仅在加封装报文时用作标记隧道嵌套层数,GRE解封装报文时不感知该字段,不会影响报文的处理。
Flags 【预留字段。当前必须置为0。】
Version 【版本字段。必须置为0。】
Protocol Type 【标识乘客协议的协议类型。常见的乘客协议为IPv4协议,协议代码为0800。Ethernet over GRE协议的协议代码为0x6558。】
Checksum 【对GRE头及其负载的校验和字段。】
Key 【关键字字段,隧道接收端用于对收到的报文进行验证。】
GRE的组网案例:
分支与总部的网络都是以太网络,分支与总部之间通过IP骨干网相连,如果用户希望分支与总部之间能够互通,可以部署Ethernet over GRE功能,实现以太报文通过GRE隧道进行透传。
Ethernet over GRE是将以太网协议的报文通过GRE封装后,在另一个网络层协议(如IPv4)的网络中传输,具体工作原理如下:
1.在设备LAN侧的物理以太网接口GE2/0/0上绑定二层VE接口VE0/0/2,在设备WAN侧的Tunnel接口Tunnel0/0/1上绑定二层VE接口VE0/0/1。
2.Router_1的LAN侧物理以太网接口GE2/0/0收到分支网络的以太报文,以太报文中携带了VLAN Tag信息。
3.GE2/0/0收到的以太报文转发到VE0/0/2后,在VE0/0/2上进行入接口VLAN处理,然后在设备内基于MAC和VLAN进行二层转发,找到出接口VE0/0/1。
4.以太报文在VE0/0/1上进行出接口VLAN处理后,将转发到VE0/0/1绑定的Tunnel0/0/1接口,经过GRE封装(协议代码为0x6558)后,进行后续的GRE转发处理。
5.Router_2的Tunnel0/0/1接口上对收到的报文进行GRE解封装,检查到协议代码为0x6558后,将以太报文转发给入接口VE0/0/1。
6.在VE0/0/1上进行入接口VLAN处理后,二层转发给VE0/0/2进行出接口VLAN处理。
7.以太报文中携带新的VLAN Tag信息从出接口GE2/0/0发往总部网络。
GRE的安全选项:
为了提高GRE隧道的安全性,GRE还支持由用户选择设置Tunnel接口的识别关键字(或称密钥),以及对隧道封装的报文进行端到端校验(校验和)。
在RFC 1701中规定:
若GRE报文头中的Key标识位置1,则收发双方将进行通道识别关键字的验证,只有Tunnel两端设置的识别关键字完全一致时才能通过验证,否则将报文丢弃。
若GRE报文头中的Checksum标识位置1,则校验和有效。发送方将根据GRE头及Payload信息计算校验和,并将包含校验和的报文发送给对端。接收方对接收到的报文计算校验和,并与报文中的校验和比较,如果一致则对报文进行进一步处理,否则丢弃。
点到多点GRE隧道:
与点到点GRE隧道接口不同的是,点到多点GRE隧道接口上不需要手工配置隧道目的地址,而是根据接收到的GRE报文动态学习隧道目的地址。
如上图所示:
配置了点到多点GRE隧道接口的设备(Router A)接收到对端设备(Router B)发送的GRE报文后,从该报文中获取传输协议(IPv4)报文头的源地址和乘客协议(IPv4)报文头的源地址,分别作为隧道的目的地址和报文的目的地址(即分支网络的私网地址),建立一条隧道表项。
通过点到多点GRE隧道转发报文时,设备根据报文的目的地址,在隧道表项中查找对应的隧道目的地址,使用此地址作为GRE封装传输协议(IPv4)报文头的目的地址。最初是没有目的地址表项的,必须先学到以后才可以双方通信,之前只能单方通信。
点到多点GRE隧道优缺点
优点:
配置简单。中心节点上只需配置点到多点GRE隧道,无需在中心节点上创建到达每个分支机构的点到点GRE隧道。
维护代价小。增加分支机构时,中心节点会动态学习到新增分支机构的地址,并与其建立隧道,无需手工配置。
分支机构接入方式灵活。中心节点动态学习隧道的目的地址,分支机构是否动态获取公网地址(如采用ADSL等拨号方式接入网络)对中心节点的配置没有影响。
以标准的GRE协议为基础,不需要特殊的协议或者私有协议来配合使用,具有较好的互通性。
对于分支机构使用的网关设备没有特殊要求,只要支持GRE协议即可,避免用户网络设备的重复投资。
支持分支机构和中心节点的GRE隧道备份,提高网络的可靠性。
缺点:
点到多点GRE隧道的传输协议和乘客协议只能是IPv4。
点到多点GRE隧道组网中,中心网络不能主动向分支网络发送报文。只有中心网络接收到分支网络的报文,并在中心节点上建立隧道表项后,中心网络发往分支网络的报文才能转发成功。
点到多点GRE隧道组网中,分支网络之间无法建立隧道,不能通信。
GRE的应用场景:
1.多协议的本地网通过单一协议的骨干网传输:
如上图:Group 1和Group 2是运行Novell IPX协议的本地网,Team 1和Team 2是运行IP协议的本地网。通过在Router A和Router B之间采用GRE协议封装的隧道,Group 1和Group 2、Team 1和Team 2可以互不影响地进行通信
2.扩大了跳数受限协议(如RIP)的工作范围
两台终端之间的跳数超过15(RIP路由协议),它们将无法通信。通过在网络中使用隧道可以隐藏一部分跳数,从而扩大网络的工作范围。
3.将一些不能连续的子网连接起来,用于组建VPN
行Novell IPX协议的两个子网Group 1和Group 2分别在不同的城市,通过使用隧道可以实现跨越广域网的VPN.
4.和IPsec结合使用
GRE可以和IPsec结合使用,即对于路由协议、语音、视频等数据先进行GRE封装,再对封装后的报文进行IPsec的加密处理,以提高数据在隧道中传输的安全性。
以上就是本次的网络技术原理详解分享之GRE(General Routing Encapsulation ,通用路由封装)解析分享,后续会完成GER实验的分享配置以及效果验证等,感谢大佬们的参阅,此贴先到这里后续会带上更加实用的帖子,感谢大家!
励志分享超清壁纸语句~~:
必须永远朝着黎明青春和生命那方面看。——雨果
好的今天就到这里,老样子,感谢各位大神的参阅,孩子为了挣豆子不容易,孩子家里穷没豆子吃饭了!!!
|