什么是GRE隧道?GRE隧道原理原理
2022-09-16 09:54 浏览: 次什么是 GRE?
封装的数据包——将不受支持的数据包放在网络支持的数据包内
GRE 允许使用网络通常不支持的协议,因为数据包被包装在其他确实使用受支持协议的数据包中。要了解其工作原理,请想像一下汽车和渡轮之间的区别。汽车在陆地上行驶,而渡轮在水上行驶。汽车通常不能在水上行驶,但是可以将汽车装载到渡轮上。
在这个类比当中,地形类型好比是支持某些路由协议的网络,而车辆则好比是数据包。GRE 是一种将一种类型的数据包装载到另一种类型的数据包中的方式,以便第一个数据包可以穿越它通常无法穿越的网络,就像一种类型的运输工具(汽车)被装载到到另一种类型的运输工具(渡轮)上,以便穿越原本无法行驶的地形。
例如,假设一家公司需要在位于两个不同办公室的局域网(LAN)之间建立连接。两个 LAN 都使用最新版本的 互联网协议 IPv6。但是,为了从一个办公网络到达另一个办公网络,流量必须通过一个由第三方管理的网络 — 该网络有些过时,仅支持较旧的 IPv4 协议。
借助 GRE,该公司可以将 IPv6 数据包封装在 IPv4 数据包中,然后便可通过此网络传输流量。回到那个类比,IPv6 数据包是汽车,IPv4 数据包是渡轮,而第三方网络则是水。
GRE 隧道是什么意思?
将数据包封装在其他数据包中称为“隧道”。GRE 隧道通常配置在两个路由器之间,每个路由器的作用好比隧道的一端。路由器设置为彼此直接发送和接收 GRE 数据包。两个路由器之间的任何路由器都不会打开封装的数据包;它们仅引用封装数据包外层的标头进行转发。
为了理解为什么将其称为“隧道”,我们可以对类比稍作更改。如果汽车需要从山一侧的 A 点绕到另一侧的 B 点,则最有效的方法就是直接穿过大山。但是,普通汽车无法直接穿过坚硬的岩石。因此,汽车必须一直绕着山脉行驶,才能从 A 点到达 B 点。
但不妨想象一下有条隧道穿过了山体。现在,汽车可以从 A 点直行到 B 点,这要快得多,而且没有隧道就无法做到。
现在,把 A 点视作一台联网设备,把 B 点视作另一台联网设备,再把大山视作两台设备之间的网络,将汽车视作需要从 A 点行到 B点的数据包。想象一下,这个网络不支持 A 点和 B 点设备需要交换的那种数据包类型。就像汽车试图穿越大山一样,数据包无法直接通过,可能需要通过其他网络走上更长的路。
但 GRE 创建了穿过“大山”网络的一个虚拟的“隧道”,以允许数据包通过。就像隧道为汽车提供了一种直接穿过陆地的方式一样,GRE(以及其他隧道协议)也为数据包穿过不支持它们的网络提供了一种方式。
GRE 标头中包含什么?
通过网络发送的所有数据都被分解为较小的部分,称为数据包,所有数据包都包括两部分:有效负载和标头。有效负载是数据包的实际内容,即正被发送的数据。标头包含有关数据包来自何处以及它属于哪个数据包组的信息。每种网络协议都会将标头附加到每个数据包上。
GRE 向每个数据包添加两个标头:GRE 标头(4 个字节长)和 IP 标头(20 个字节长)。GRE 标头表明封装数据包所使用的协议类型。IP 标头封装了原始数据包的标头和有效负载。这意味着 GRE 数据包通常包含两个 IP 标头:一个用于原始数据包,另一个由 GRE 协议添加。仅 GRE 隧道两端的路由器将引用原始的、非 GRE IP 标头。
GRE 的使用如何影响 MTU 和 MSS 要求?
MTU 和 MSS 是用来限制通过网络传输的数据包最大长度的度量单位,就像对过桥车辆限重一样。MTU 测量数据包的总大小,包括标头;MSS仅测量有效负载。超过 MTU 值的数据包将被分成几段或分解成较小的数据包,使之适合在网络上传输。
像任何协议一样,使用 GRE 会在数据包原有大小基础上增加几个字节。在数据包的 MSS 和 MTU 设置中必须考虑这个因素。如果 MTU 设为 1,500 字节,MSS 设为 1,460 字节(考虑到必要的 IP 和 TCP 标头大小),则增加 GRE 24字节标头将导致数据包超过 MTU 限值:
1,460 字节 [有效负载] + 20 字节 [TCP 标头] + 20 字节 [IP 标头] + 24 字节 [GRE 标头+ IP 标头] = 1,524字节
因此,数据包将被分段。分段会减慢数据包传递,并增加算力开销,因为超出 MTU 的数据包必须分解然后重新组合。
通过减少 MSS 长度以包含 GRE 标头,可以避免这种情况。如果将 MSS 设置为 1,436 而不是 1,460,那么,GRE 标头的问题就得到了解决,并且数据包不会超过 MTU 值 1,500:
1,436 字节 [有效负载] + 20 字节 [TCP 标头] + 20 字节 [IP 标头] + 24 字节 [GRE 标头+ IP 标头] = 1,500 字节
尽管避免了分段,但结果却是有效载荷变小,这意味着需要额外的数据包来传递数据。例如,如果目标是传递 150,000 字节的内容(或大约 150 kB),假设 MTU 设置为 1,500,且未使用其他 3 层协议,那么,比较一下使用 GRE 和不使用 GRE 时分别需要多少个数据包:
不使用 GRE,MSS 为 1,460: 103 个数据包
使用 GRE,MSS 为 1,436: 105 个数据包
额外的两个数据包会增加毫秒级的数据传输延迟。但是,使用 GRE 比不使用 GRE 可以使这些数据包选择更快的网络路径,进而可以弥补损失的时间。
在 DDoS 攻击中如何使用 GRE?
在分布式拒绝服务(DDoS)攻击中 ,攻击者试图用垃圾网络流量淹没目标服务器或网络,这有点像用虚假的订单轰炸一家餐馆,直到它无法为合法客户提供服务。
就像任何网络协议一样,GRE 可以用来进行 DDoS 攻击。有史以来最大的 DDoS 攻击之一发生在 2016 年 9 月。它针对安全研究人员的网站,并使用 Mirai 僵尸网络进行攻击。该网站被使用 GRE 协议的数据包淹没。
与某些其他协议不同,GRE 数据包的源无法被伪造或欺骗 。为发起大型 GRE DDoS 攻击,攻击者必须控制僵尸网络中大量真实存在的计算设备。
如何防御 GRE DDoS 攻击?
天下数据CDN可抵御各种网络层 DDoS 攻击 ,包括使用 GRE 的攻击。天下数据CDN通过将天下数据全球网络的 DDoS 缓解功能扩展到网络基础设施来保护本地 云和混合网络。任何攻击网络流量都会被过滤掉,而不会减慢合法流量。
天下数据与全球近120多个国家顶级机房直接合作,提供包括大陆、香港、美国、韩国、日本、台湾、新加坡、荷兰、法国、英国、德国、埃及、南非、巴西、印度、越南等国家和地区的服务器租用、云服务器的租用服务解决方案,详询天下数据客服电话400-6388-808,官网:www.IdCbest.Com。
【免责声明】:部分内容、图片来源于互联网,如有侵权请联系删除,QQ:228866015